]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
arm: setjmp/longjmp: fix PIC vs SHARED thinkos
authorDavid Lamparter <equinox-gentoo@diac24.net>
Sun, 12 Sep 2010 13:38:44 +0000 (09:38 -0400)
committerMike Frysinger <vapier@gentoo.org>
Fri, 18 Sep 2015 17:09:57 +0000 (13:09 -0400)
The logic in setjmp/__longjmp incorrectly uses "PIC" to figure out
whether the code is going into a shared library when it should be
using "SHARED".  If you build glibc with a gcc version that has PIE
enabled by default, then the code will try to use symbols that are
only in the shared library.

URL: https://bugs.gentoo.org/336914

ChangeLog
sysdeps/arm/__longjmp.S
sysdeps/arm/setjmp.S

index 72605d4631813a1966a7f6ee81f9e2d41037197a..764af43e1e1c7d1027fb0da5ae19aa929600482e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-18  David Lamparter  <equinox-gentoo@diac24.net>
+
+       * sysdeps/arm/setjmp.S: Change PIC to SHARED.
+       * sysdeps/arm/__longjmp.S: Likewise
+
 2015-09-18  Wilco Dijkstra  <wdijkstr@arm.com>
 
        * sysdeps/ieee754/dbl-64/s_signbit.c (__signbit):
index fc60a5d42410015f8073a2c69d1eea6adfbdf0b9..1033e134cd28ae8aa8d50041fd5dc76638504b3b 100644 (file)
@@ -81,7 +81,7 @@ ENTRY (__longjmp)
                    C_SYMBOL_NAME(_rtld_local_ro) \
                    + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
 # else
-#  ifdef PIC
+#  ifdef SHARED
        LDR_GLOBAL (a4, a3, C_SYMBOL_NAME(_rtld_global_ro), \
                    RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
 #  else
index e44beb45a8030e2740d0560d74750063ade21834..be0a4ecba8606d512774971066e16dba3fcddbee 100644 (file)
@@ -62,7 +62,7 @@ ENTRY (__sigsetjmp)
                    C_SYMBOL_NAME(_rtld_local_ro) \
                    + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
 # else
-#  ifdef PIC
+#  ifdef SHARED
        LDR_GLOBAL (a3, a4, C_SYMBOL_NAME(_rtld_global_ro), \
                    RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
 #  else