mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-27 19:53:32 +08:00
Fix new testcase elf/tst-latepthread on s390x.
The first dlopen ("tst-latepthreadmod.so", RTLD_LOCAL | RTLD_LAZY) call in elf/tst-latepthread.c fails on s390x with "error: dlopen failed: .../build-s390x/elf/tst-latepthreadmod.so: undefined symbol: this_function_is_not_defined". In elf/tst-latepthreadmod.c, this_function_is_not_defined is a sibling call which leads to a R_390_GLOB_DAT relocation in .rela.dyn instead of a R_390_JMP_SLOT in .rela.plt. As RTLD_LAZY skips the JMP_SLOT relocations, but not GLOB_DAT ones, the dlopen call fails. If elf/tst-latepthreadmod.c is build with -fno-optimize-sibling-calls, a JMP_SLOT relocation is generated for this_function_is_not_defined and the test passes. ChangeLog: * elf/Makefile (CFLAGS-tst-latepthreadmod.c): Add -fno-optimize-sibling-calls.
This commit is contained in:
parent
55a38f8236
commit
f91d3fd64d
@ -1,3 +1,8 @@
|
||||
2016-12-02 Stefan Liebler <stli@linux.vnet.ibm.com>
|
||||
|
||||
* elf/Makefile (CFLAGS-tst-latepthreadmod.c):
|
||||
Add -fno-optimize-sibling-calls.
|
||||
|
||||
2016-12-02 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_BFP_EXT)] (llogb):
|
||||
|
@ -1271,6 +1271,9 @@ LDFLAGS-tst-audit12mod2.so = -Wl,--version-script=tst-audit12mod2.map
|
||||
# Force lazy binding for the same reason.
|
||||
LDFLAGS-tst-latepthreadmod.so = \
|
||||
-Wl,-z,lazy -Wl,--unresolved-symbols=ignore-all
|
||||
# Do not optimize sibling calls as the test relies on a JMP_SLOT relocation for
|
||||
# function this_function_is_not_defined.
|
||||
CFLAGS-tst-latepthreadmod.c = -fno-optimize-sibling-calls
|
||||
$(objpfx)tst-latepthreadmod.so: $(shared-thread-library)
|
||||
$(objpfx)tst-latepthread: $(libdl)
|
||||
$(objpfx)tst-latepthread.out: $(objpfx)tst-latepthreadmod.so
|
||||
|
Loading…
Reference in New Issue
Block a user