Message ID | 20240110211521.532816-1-carlos@redhat.com |
---|---|
State | New |
Headers | show |
Series | [v2] elf: Fix tst-nodeps2 test failure. | expand |
On 1/10/24 16:15, Carlos O'Donell wrote: > 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 <fweimer@redhat.com> I have committed this version with an updated commit message. > --- > elf/Makefile | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/elf/Makefile b/elf/Makefile > index 600812e573..5d78b659ce 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 >
diff --git a/elf/Makefile b/elf/Makefile index 600812e573..5d78b659ce 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
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 <fweimer@redhat.com> --- elf/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)