From: Stefan Liebler Date: Fri, 2 Dec 2016 08:09:55 +0000 (+0100) Subject: Fix new testcase elf/tst-latepthread on s390x. X-Git-Tag: glibc-2.25~240 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f91d3fd64d9b98054f5663a8fb533d15ca9f5943;p=thirdparty%2Fglibc.git 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. --- diff --git a/ChangeLog b/ChangeLog index 62e49bb03aa..f42d0c574d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2016-12-02 Stefan Liebler + + * elf/Makefile (CFLAGS-tst-latepthreadmod.c): + Add -fno-optimize-sibling-calls. + 2016-12-02 Joseph Myers * math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_BFP_EXT)] (llogb): diff --git a/elf/Makefile b/elf/Makefile index 33b003b170e..18b3e2a95d8 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -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