Browse Source

SDL_dlopennote.h: define SDL_DISABLE_DLOPEN_NOTES for old gcc < 3.1

gcc < 3.1 doesn't support 'used' attribute at the least.

Also change the SDL_ELF_NOTE_DLOPEN variadic macro for disabled case to
be compatible with old gcc versions: tested with gcc-2.95.

Old MSVC cases, e.g. VS 2003 and older, are still not resolved.

Reference issue: https://github.com/libsdl-org/SDL/issues/14214.
Ozkan Sezer 12 hours ago
parent
commit
04aa74b5f9
1 changed files with 10 additions and 1 deletions
  1. 10 1
      include/SDL3/SDL_dlopennote.h

+ 10 - 1
include/SDL3/SDL_dlopennote.h

@@ -104,6 +104,11 @@
 #ifndef SDL_DISABLE_DLOPEN_NOTES
 #define SDL_DISABLE_DLOPEN_NOTES
 #endif
+#elif defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 1))
+/* gcc < 3.1 too old */
+#ifndef SDL_DISABLE_DLOPEN_NOTES
+#define SDL_DISABLE_DLOPEN_NOTES
+#endif
 #endif /* SDL_PLATFORM_UNIX || SDL_PLATFORM_ANDROID */
 
 #if defined(__ELF__) && !defined(SDL_DISABLE_DLOPEN_NOTES)
@@ -204,7 +209,11 @@
         "\",\"soname\":" SDL_SONAME_ARRAY(__VA_ARGS__) "}]",     \
         SDL_ELF_NOTE_UNIQUE_NAME)
 
-#elif (defined (__GNUC__) && __GNUC__ < 3) || (defined(_MSC_VER) && (_MSC_VER < 1400))
+#elif defined(__GNUC__) && __GNUC__ < 3
+
+#define SDL_ELF_NOTE_DLOPEN(args...)
+
+#elif defined(_MSC_VER) && _MSC_VER < 1400
 
 /* Variadic macros are not supported */
 #define SDL_ELF_NOTE_DLOPEN