[PATCH] test-container: disable ld.so system cache on DSO detection

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Tue Oct 17 14:48:55 GMT 2023



On 05/10/23 09:54, Simon Chopin wrote:
> When building the testroot, the script runs the newly built ld.so on a
> couple of binaries in order to copy over any additional libararies

s/libararies/libraries

> needed. However, if the dependencies are found in the system cache, it
> will be copied over using that path.
> 
> This is problematic if the system ld.so and the one built don't have the
> exact same search configuration. We encountered this in Ubuntu, where we
> build a variant of libc with -fno-omit-frame-pointer for accurate
> performance profiling.
> 
> This variant is built using a non-standard slibdir to be able to be
> co-installed with the default library (e.g. slibdir = /lib/libc6-prof).
> Since we have /lib pointing to /usr/lib, any additional dependency
> should still be reachable via /usr. However, resolving via the cache
> might result in the additional DSOs being copied into $testroot/lib, out
> of the search path in the container.
> 
> The problem has been triggered by 1d5024f4f052c12e404d42d3b5bfe9c3e9fd27c4
> ("support: Build with exceptions and asynchronous unwind tables [BZ #30587]")
> which introduced a dependency on libgcc_s.so.1 under some circumstances.
> 
> Downstream bug: https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/2031495

It makes sense to inhibit cache on testroot creation, although default
system dirs will always be used.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  Makefile | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index c6d4817a9e..b938721166 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -624,7 +624,7 @@ $(objpfx)testroot.pristine/install.stamp :
>  ifeq ($(run-built-tests),yes)
>  	# Copy these DSOs first so we can overwrite them with our own.
>  	for dso in `$(test-wrapper-env) LD_TRACE_LOADED_OBJECTS=1  \
> -		$(rtld-prefix) \
> +		$(rtld-prefix) --inhibit-cache \
>  		$(objpfx)testroot.pristine/bin/sh \
>  	        | sed -n '/\//{s@.*=> /@/@;s/^[^/]*//;s/ .*//p;}'` ;\
>  	  do \
> @@ -633,7 +633,7 @@ ifeq ($(run-built-tests),yes)
>  	    $(test-wrapper) cp $$dso $(objpfx)testroot.pristine$$dso ;\
>  	  done
>  	for dso in `$(test-wrapper-env) LD_TRACE_LOADED_OBJECTS=1  \
> -		$(rtld-prefix) \
> +		$(rtld-prefix) --inhibit-cache \
>  		$(objpfx)support/$(LINKS_DSO_PROGRAM) \
>  	        | sed -n '/\//{s@.*=> /@/@;s/^[^/]*//;s/ .*//p;}'` ;\
>  	  do \
> 
> base-commit: 1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa


More information about the Libc-alpha mailing list