diff options
author | David Lamparter <equinox-gentoo@diac24.net> | 2010-09-12 09:38:44 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2015-09-18 13:09:57 -0400 |
commit | 3ee578690f35942f41926cc2d98e25b3d0d08c71 (patch) | |
tree | 749681ccd7fa4aa3949f186c2cd356fe29a97eb5 | |
parent | 020167a4ce53f7dd8d5b1912a42163bd1077e6c5 (diff) | |
download | glibc-3ee578690f35942f41926cc2d98e25b3d0d08c71.tar.gz glibc-3ee578690f35942f41926cc2d98e25b3d0d08c71.tar.xz glibc-3ee578690f35942f41926cc2d98e25b3d0d08c71.zip |
arm: setjmp/longjmp: fix PIC vs SHARED thinkos
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
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/arm/__longjmp.S | 2 | ||||
-rw-r--r-- | sysdeps/arm/setjmp.S | 2 |
3 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index 72605d4631..764af43e1e 100644 --- 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): diff --git a/sysdeps/arm/__longjmp.S b/sysdeps/arm/__longjmp.S index fc60a5d424..1033e134cd 100644 --- a/sysdeps/arm/__longjmp.S +++ b/sysdeps/arm/__longjmp.S @@ -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 diff --git a/sysdeps/arm/setjmp.S b/sysdeps/arm/setjmp.S index e44beb45a8..be0a4ecba8 100644 --- a/sysdeps/arm/setjmp.S +++ b/sysdeps/arm/setjmp.S @@ -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 |