From: Carlos O'Donell Date: Wed, 10 Jan 2024 15:46:03 +0000 (-0500) Subject: elf: Fix tst-nodeps2 test failure. X-Git-Tag: glibc-2.39~74 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94aa256a47253d2202240c8696cbe824a969d3cc;p=thirdparty%2Fglibc.git elf: Fix tst-nodeps2 test failure. After 78ca44da0160a0b442f0ca1f253e3360f044b2ec ("elf: Relocate libc.so early during startup and dlmopen (bug 31083)") we start seeing tst-nodeps2 failures when building the testsuite with --enable-hard-coded-path-in-tests. When building the testsuite with --enable-hard-coded-path-in-tests the tst-nodeps2-mod.so is not built with the required DT_RUNPATH values and the test escapes the test framework and loads the system libraries and aborts. The fix is to use the existing $(link-test-modules-rpath-link) variable to set DT_RUNPATH correctly. No regressions on x86_64. Reviewed-by: Florian Weimer --- diff --git a/elf/Makefile b/elf/Makefile index 600812e5734..5d78b659ce8 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -3022,6 +3022,8 @@ $(objpfx)tst-env-setuid: $(objpfx)tst-sonamemove-runmod2.so $(objpfx)tst-env-setuid-static.out: $(objpfx)tst-sonamemove-runmod1.so # The object tst-nodeps1-mod.so has no explicit dependencies on libc.so. +# We do not use $(link-test-modules-rpath-link) since the object has no +# DT_NEEDED. $(objpfx)tst-nodeps1-mod.so: $(objpfx)tst-nodeps1-mod.os $(LINK.o) -nostartfiles -nostdlib -shared -o $@ $^ tst-nodeps1.so-no-z-defs = yes @@ -3032,7 +3034,8 @@ $(objpfx)tst-nodeps1: $(objpfx)tst-nodeps1-mod.so # with the IFUNC resolver reference. $(objpfx)tst-nodeps2-mod.so: $(common-objpfx)libc.so \ $(objpfx)tst-nodeps1-mod.so $(objpfx)tst-nodeps2-mod.os - $(LINK.o) -Wl,--no-as-needed -nostartfiles -nostdlib -shared -o $@ $^ + $(LINK.o) -Wl,--no-as-needed -nostartfiles -nostdlib -shared -o $@ $^ \ + $(link-test-modules-rpath-link) $(objpfx)tst-nodeps2.out: \ $(objpfx)tst-nodeps1-mod.so $(objpfx)tst-nodeps2-mod.so