File sdl2-symvers.patch of Package SDL2

From: Jan Engelhardt <jengelh@inai.de>
Date: 2018-01-10 23:56:12.245827883 +0100
Should-this-be-upstream: yes
Is-it-upstream: not submitted yet

The SDL project adds new functions over time, but they completely
fail to do the required ABI upkeep - which involves either bumping
the SO number or adding symvers. As a result of their lack of ABI
upkeep, the ELF system has no way to prohibit a too-modern program
being ran against a too-old SDL library, and that leads to bad user
experience, because symbols are resolved lazily and can crash the
program in the middle.

Also note: Leap 15.x has this patch too (in shorter version), so we
need to keep all the individual symvers elements even for games/SDL2.

---
 Makefile.in |    2 
 sdl2.sym    |  319 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 320 insertions(+), 1 deletion(-)

Index: SDL2-2.26.0/Makefile.in
===================================================================
--- SDL2-2.26.0.orig/Makefile.in
+++ SDL2-2.26.0/Makefile.in
@@ -136,7 +136,7 @@ LT_AGE      = @LT_AGE@
 LT_CURRENT  = @LT_CURRENT@
 LT_RELEASE  = @LT_RELEASE@
 LT_REVISION = @LT_REVISION@
-LT_LDFLAGS  = -no-undefined -rpath $(libdir) -release $(LT_RELEASE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
+LT_LDFLAGS  = -no-undefined -rpath $(libdir) -release $(LT_RELEASE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -Wl,--version-script=sdl2.sym
 
 all: $(srcdir)/configure Makefile $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) $(objects)/$(SDLTEST_TARGET)
 
Index: SDL2-2.26.0/sdl2.sym
===================================================================
--- /dev/null
+++ SDL2-2.26.0/sdl2.sym
@@ -0,0 +1,327 @@
+SUSE_2.0.5 {
+global:
+	SDL_DequeueAudio;
+	SDL_GetHintBoolean;
+	SDL_RenderSetIntegerScale;
+	SDL_CreateRGBSurfaceWithFormat;
+	SDL_CreateRGBSurfaceWithFormatFrom;
+	SDL_GetDisplayUsableBounds;
+	SDL_GetWindowBordersSize;
+	SDL_SetWindowResizable;
+	SDL_SetWindowOpacity;
+	SDL_SetWindowModalFor;
+};
+SUSE_2.0.6 {
+global:
+	SDL_Vulkan_LoadLibrary;
+	SDL_Vulkan_GetVkGetInstanceProcAddr;
+	SDL_Vulkan_GetInstanceExtensions;
+	SDL_Vulkan_CreateSurface;
+	SDL_Vulkan_GetDrawableSize;
+	SDL_Vulkan_UnloadLibrary;
+	SDL_ComposeCustomBlendMode;
+	SDL_HasNEON;
+	SDL_JoystickGetDeviceVendor;
+	SDL_JoystickGetDeviceProduct;
+	SDL_JoystickGetDeviceProductVersion;
+	SDL_JoystickGetDeviceType;
+	SDL_JoystickGetDeviceInstanceID;
+	SDL_JoystickGetVendor;
+	SDL_JoystickGetProduct;
+	SDL_JoystickGetProductVersion;
+	SDL_JoystickGetType;
+	SDL_JoystickGetAxisInitialState;
+	SDL_GameControllerGetVendor;
+	SDL_GameControllerGetProduct;
+	SDL_GameControllerGetProductVersion;
+	SDL_GameControllerNumMappings;
+	SDL_GameControllerMappingForIndex;
+	SDL_LoadFile;
+	SDL_LoadFile_RW;
+	SDL_DuplicateSurface;
+} SUSE_2.0.5;
+SUSE_2.0.7 {
+global:
+	SDL_NewAudioStream;
+	SDL_AudioStreamPut;
+	SDL_AudioStreamGet;
+	SDL_AudioStreamAvailable;
+	SDL_AudioStreamFlush;
+	SDL_AudioStreamClear;
+	SDL_FreeAudioStream;
+	SDL_GetMemoryFunctions;
+	SDL_SetMemoryFunctions;
+	SDL_GetNumAllocations;
+	SDL_LockJoystick;
+	SDL_UnlockJoystick;
+	SDL_SetEventFilter;
+	SDL_GetEventFilter;
+	SDL_AddEventWatch;
+	SDL_DelEventWatch;
+} SUSE_2.0.6;
+SUSE_2.0.8 {
+global:
+	SDL_fmod;
+	SDL_log10;
+	SDL_SetYUVConversionMode;
+	SDL_GetYUVConversionMode;
+} SUSE_2.0.7;
+SUSE_2.0.9 {
+global:
+	SDL_CreateThreadWithStackSize;
+	SDL_GameControllerGetPlayerIndex;
+	SDL_GameControllerMappingForDeviceIndex;
+	SDL_GameControllerRumble;
+	SDL_GetDisplayOrientation;
+	SDL_HasAVX512F;
+	SDL_HasColorKey;
+	SDL_IsTablet;
+	SDL_JoystickGetDevicePlayerIndex;
+	SDL_JoystickGetPlayerIndex;
+	SDL_JoystickRumble;
+	SDL_LinuxSetThreadPriority;
+	SDL_NumSensors;
+	SDL_SensorClose;
+	SDL_SensorFromInstanceID;
+	SDL_SensorGetData;
+	SDL_SensorGetDeviceInstanceID;
+	SDL_SensorGetDeviceName;
+	SDL_SensorGetDeviceNonPortableType;
+	SDL_SensorGetDeviceType;
+	SDL_SensorGetInstanceID;
+	SDL_SensorGetName;
+	SDL_SensorGetNonPortableType;
+	SDL_SensorGetType;
+	SDL_SensorOpen;
+	SDL_SensorUpdate;
+	SDL_exp;
+	SDL_expf;
+	SDL_wcsdup;
+} SUSE_2.0.8;
+SUSE_2.0.10 {
+global:
+	SDL_GetTouchDeviceType;
+	SDL_RWclose;
+	SDL_RWread;
+	SDL_RWseek;
+	SDL_RWsize;
+	SDL_RWtell;
+	SDL_RWwrite;
+	SDL_RenderCopyExF;
+	SDL_RenderCopyF;
+	SDL_RenderDrawLineF;
+	SDL_RenderDrawLinesF;
+	SDL_RenderDrawPointF;
+	SDL_RenderDrawPointsF;
+	SDL_RenderDrawRectF;
+	SDL_RenderDrawRectsF;
+	SDL_RenderFillRectF;
+	SDL_RenderFillRectsF;
+	SDL_RenderFlush;
+	SDL_SIMDAlloc;
+	SDL_SIMDFree;
+	SDL_SIMDGetAlignment;
+} SUSE_2.0.9;
+SUSE_2.0.12 {
+	SDL_HasARMSIMD;
+	SDL_GameControllerTypeForIndex;
+	SDL_GameControllerFromPlayerIndex;
+	SDL_GameControllerGetType;
+	SDL_GameControllerSetPlayerIndex;
+	SDL_JoystickFromPlayerIndex;
+	SDL_JoystickSetPlayerIndex;
+	SDL_Metal_CreateView;
+	SDL_Metal_DestroyView;
+	SDL_SetTextureScaleMode;
+	SDL_GetTextureScaleMode;
+	SDL_LockTextureToSurface;
+	SDL_wcsdup;
+	SDL_wcsstr;
+	SDL_wcsncmp;
+	SDL_strtokr;
+	SDL_GetAndroidSDKVersion;
+	SDL_OnApplicationWillTerminate;
+	SDL_OnApplicationDidReceiveMemoryWarning;
+	SDL_OnApplicationWillResignActive;
+	SDL_OnApplicationDidEnterBackground;
+	SDL_OnApplicationWillEnterForeground;
+	SDL_OnApplicationDidBecomeActive;
+	SDL_OnApplicationDidChangeStatusBarOrientation;
+	SDLTest_CommonUsage;
+} SUSE_2.0.10;
+SUSE_2.0.14 {
+	SDL_SIMDRealloc;
+	SDL_GetErrorMsg;
+	SDL_GameControllerGetSerial;
+	SDL_GameControllerHasAxis;
+	SDL_GameControllerHasButton;
+	SDL_GameControllerGetNumTouchpads;
+	SDL_GameControllerGetNumTouchpadFingers;
+	SDL_GameControllerGetTouchpadFinger;
+	SDL_GameControllerHasSensor;
+	SDL_GameControllerSetSensorEnabled;
+	SDL_GameControllerIsSensorEnabled;
+	SDL_GameControllerGetSensorData;
+	SDL_GameControllerRumbleTriggers;
+	SDL_GameControllerHasLED;
+	SDL_GameControllerSetLED;
+	SDL_JoystickAttachVirtual;
+	SDL_JoystickDetachVirtual;
+	SDL_JoystickDetachVirtual;
+	SDL_JoystickSetVirtualAxis;
+	SDL_JoystickSetVirtualButton;
+	SDL_JoystickSetVirtualHat;
+	SDL_JoystickGetSerial;
+	SDL_JoystickRumbleTriggers;
+	SDL_JoystickHasLED;
+	SDL_JoystickSetLED;
+	SDL_GetPreferredLocales;
+	SDL_Metal_GetLayer;
+	SDL_Metal_GetDrawableSize;
+	SDL_OpenURL;
+	SDL_LockSensors;
+	SDL_UnlockSensors;
+	SDL_crc32;
+	SDL_wcscasecmp;
+	SDL_wcsncasecmp;
+	SDL_trunc;
+	SDL_truncf;
+	SDL_HasSurfaceRLE;
+	SDL_AndroidRequestPermission;
+} SUSE_2.0.12;
+SUSE_2.0.16 {
+	SDL_GetAudioDeviceSpec;
+	SDL_GameControllerGetSensorDataRate;
+	SDL_GameControllerSendEffect;
+	SDL_JoystickSendEffect;
+	SDL_UpdateNVTexture;
+	SDL_isalpha;
+	SDL_isalnum;
+	SDL_isblank;
+	SDL_iscntrl;
+	SDL_isxdigit;
+	SDL_ispunct;
+	SDL_isprint;
+	SDL_isgraph;
+	SDL_round;
+	SDL_roundf;
+	SDL_lround;
+	SDL_lroundf;
+	SDL_SoftStretchLinear;
+	SDL_RenderGetD3D11Device;
+	SDL_AndroidShowToast;
+	SDL_TLSCleanup;
+	SDL_SetWindowAlwaysOnTop;
+	SDL_SetWindowKeyboardGrab;
+	SDL_SetWindowMouseGrab;
+	SDL_GetWindowKeyboardGrab;
+	SDL_GetWindowMouseGrab;
+	SDL_FlashWindow;
+} SUSE_2.0.14;
+SUSE_2.0.18 {
+	SDL_GameControllerHasRumble;
+	SDL_GameControllerHasRumbleTriggers;
+	SDL_GameControllerGetAppleSFSymbolsNameForButton;
+	SDL_GameControllerGetAppleSFSymbolsNameForAxis;
+	SDL_hid_init;
+	SDL_hid_exit;
+	SDL_hid_device_change_count;
+	SDL_hid_enumerate;
+	SDL_hid_free_enumeration;
+	SDL_hid_open;
+	SDL_hid_open_path;
+	SDL_hid_write;
+	SDL_hid_read_timeout;
+	SDL_hid_read;
+	SDL_hid_set_nonblocking;
+	SDL_hid_send_feature_report;
+	SDL_hid_get_feature_report;
+	SDL_hid_close;
+	SDL_hid_get_manufacturer_string;
+	SDL_hid_get_product_string;
+	SDL_hid_get_serial_number_string;
+	SDL_hid_get_indexed_string;
+	SDL_hid_ble_scan;
+	SDL_JoystickHasRumble;
+	SDL_JoystickHasRumbleTriggers;
+	SDL_RegisterApp;
+	SDL_SetTextureUserData;
+	SDL_GetTextureUserData;
+	SDL_RenderWindowToLogical;
+	SDL_RenderLogicalToWindow;
+	SDL_RenderGeometry;
+	SDL_RenderGeometryRaw;
+	SDL_RenderSetVSync;
+	SDL_RWFromFP;
+	SDL_asprintf;
+	SDL_vasprintf;
+	SDL_atan2;
+	SDL_atan2f;
+	SDL_PremultiplyAlpha;
+	SDL_LinuxSetThreadPriorityAndPolicy;
+	SDL_GetTicks64;
+	SDL_GetWindowICCProfile;
+	SDL_SetWindowMouseRect;
+	SDL_GetWindowMouseRect;
+} SUSE_2.0.16;
+SUSE_2.0.22 {
+	SDL_ClearComposition;
+	SDL_IsTextInputShown;
+	SDL_HasIntersectionF;
+	SDL_IntersectFRect;
+	SDL_UnionFRect;
+	SDL_EncloseFPoints;
+	SDL_IntersectFRectAndLine;
+	SDL_RenderGetWindow;
+	SDL_AndroidSendMessage;
+	SDL_GetTouchName;
+} SUSE_2.0.18;
+SUSE_2.24.0 {
+	SDL_GetDefaultAudioInfo;
+	SDL_HasLSX;
+	SDL_HasLASX;
+	SDL_GameControllerPathForIndex;
+	SDL_GameControllerPath;
+	SDL_GameControllerGetFirmwareVersion;
+	SDL_GUIDToString;
+	SDL_GUIDFromString;
+	SDL_ResetHint;
+	SDL_JoystickPathForIndex;
+	SDL_JoystickAttachVirtualEx;
+	SDL_JoystickPath;
+	SDL_JoystickGetFirmwareVersion;
+	SDL_ResetKeyboard;
+	SDL_SetTextInputRect;
+	SDL_GDKRunApp;
+	SDL_GetOriginalMemoryFunctions;
+	SDL_qsort;
+	SDL_bsearch;
+	SDL_crc16;
+	SDL_utf8strnlen;
+	SDL_RenderGetD3D12Device;
+	SDL_iPhoneSetAnimationCallback;
+	SDL_GDKGetTaskQueue;
+	SDL_GetPointDisplayIndex;
+	SDL_GetRectDisplayIndex;
+} SUSE_2.0.22;
+SUSE_2.26.0 {
+	SDL_SetPrimarySelectionText;
+	SDL_GetPrimarySelectionText;
+	SDL_HasPrimarySelectionText;
+	SDL_GameControllerGetSensorDataWithTimestamp;
+	SDL_ResetHints;
+	SDL_GetJoystickGUIDInfo;
+	SDL_SensorGetData;
+	SDL_SensorGetDataWithTimestamp;
+	SDL_SensorClose;
+	SDL_strcasestr;
+	SDL_GetWindowSizeInPixels;
+} SUSE_2.24.0;
+SUSE_2.28.0 {
+	SDL_GDKSuspendComplete;
+	SDL_HasWindowSurface;
+	SDL_DestroyWindowSurface;
+} SUSE_2.26.0;
+SUSE_2.30.0 {
+	SDL_GameControllerGetSteamHandle;
+} SUSE_2.28.0;
openSUSE Build Service is sponsored by