mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 21:10:07 +00:00
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
This commit is contained in:
parent
020167a4ce
commit
3ee578690f
@ -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>
|
2015-09-18 Wilco Dijkstra <wdijkstr@arm.com>
|
||||||
|
|
||||||
* sysdeps/ieee754/dbl-64/s_signbit.c (__signbit):
|
* sysdeps/ieee754/dbl-64/s_signbit.c (__signbit):
|
||||||
|
@ -81,7 +81,7 @@ ENTRY (__longjmp)
|
|||||||
C_SYMBOL_NAME(_rtld_local_ro) \
|
C_SYMBOL_NAME(_rtld_local_ro) \
|
||||||
+ RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
|
+ RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
|
||||||
# else
|
# else
|
||||||
# ifdef PIC
|
# ifdef SHARED
|
||||||
LDR_GLOBAL (a4, a3, C_SYMBOL_NAME(_rtld_global_ro), \
|
LDR_GLOBAL (a4, a3, C_SYMBOL_NAME(_rtld_global_ro), \
|
||||||
RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
|
RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
|
||||||
# else
|
# else
|
||||||
|
@ -62,7 +62,7 @@ ENTRY (__sigsetjmp)
|
|||||||
C_SYMBOL_NAME(_rtld_local_ro) \
|
C_SYMBOL_NAME(_rtld_local_ro) \
|
||||||
+ RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
|
+ RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
|
||||||
# else
|
# else
|
||||||
# ifdef PIC
|
# ifdef SHARED
|
||||||
LDR_GLOBAL (a3, a4, C_SYMBOL_NAME(_rtld_global_ro), \
|
LDR_GLOBAL (a3, a4, C_SYMBOL_NAME(_rtld_global_ro), \
|
||||||
RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
|
RTLD_GLOBAL_RO_DL_HWCAP_OFFSET)
|
||||||
# else
|
# else
|
||||||
|
Loading…
Reference in New Issue
Block a user