[v2] elf: Fix tst-nodeps2 test failure.

Message ID 20240110211521.532816-1-carlos@redhat.com
State Committed
Commit 94aa256a47253d2202240c8696cbe824a969d3cc
Headers
Series [v2] elf: Fix tst-nodeps2 test failure. |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch warning Patch already apply to master at the time it was sent
redhat-pt-bot/TryBot-32bit fail Patch series failed to apply

Commit Message

Carlos O'Donell Jan. 10, 2024, 9:15 p.m. UTC
  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(-)
  

Comments

Carlos O'Donell Jan. 10, 2024, 9:22 p.m. UTC | #1
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
>
  

Patch

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