]> granicus.if.org Git - gc/commitdiff
Turn off sigsetjmp workaround for Android/x86 starting from NDK r8e
authorIvan Maidanski <ivmai@mail.ru>
Fri, 11 Sep 2015 08:57:54 +0000 (11:57 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 11 Sep 2015 08:59:08 +0000 (11:59 +0300)
* include/private/gcconfig.h (GC_NO_SIGSETJMP): Do not define for
Android/x86 if NDK r8e+; update comment.

include/private/gcconfig.h

index c35f395bf7ff341abe3378afa1c1571556dfaa73..34222820e228f65091132a4f8a80e8aae09b3cea 100644 (file)
 #            endif
              extern int _end[];
 #            define DATAEND (ptr_t)(_end)
-#            if defined(PLATFORM_ANDROID) && !defined(GC_NO_SIGSETJMP)
-               /* As of Android NDK r8b, _sigsetjmp is still missing    */
-               /* for x86 (setjmp is used instead to find data_start).  */
+#            if defined(PLATFORM_ANDROID) && !defined(GC_NO_SIGSETJMP) \
+                && !(__ANDROID_API__ >= 18 || __GNUC__ > 4 \
+                     || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) \
+                     || __clang_major__ > 3 \
+                     || (__clang_major__ == 3 && __clang_minor__ >= 2))
+               /* Older Android NDK releases lack sigsetjmp in x86 libc */
+               /* (setjmp is used instead to find data_start).  The bug */
+               /* is fixed in Android NDK r8e (so, ok to use sigsetjmp  */
+               /* if gcc4.8+, clang3.2+ or Android API level 18+).      */
 #              define GC_NO_SIGSETJMP
 #            endif
 #       else