This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Fix elf/tst-rtld-preload cross-testing
- From: Carlos O'Donell <codonell at redhat dot com>
- To: Joseph Myers <joseph at codesourcery dot com>, libc-alpha at sourceware dot org
- Cc: siddhesh at sourceware dot org
- Date: Thu, 23 Jan 2020 17:26:03 -0500
- Subject: Re: Fix elf/tst-rtld-preload cross-testing
- References: <alpine.DEB.2.21.2001232131090.7536@digraph.polyomino.org.uk>
On 1/23/20 4:33 PM, Joseph Myers wrote:
> As noted in
> <https://sourceware.org/ml/libc-alpha/2019-06/msg00824.html>,
> elf/tst-rtld-preload fails when cross-testing because it attempts to
> run the test wrapper with itself. Unfortunately, that thread never
> resulted in a complete and correct patch for that test.
>
> This patch addresses the issues with that test more thoroughly. The
> test is changed not to use the wrapper twice, including updating the
> message it prints about the command it runs to be more complete and
> accurate after the change; the Makefile is changed not to pass the
> redundant '$(test-wrapper)' argument.
>
> Tested for Arm that this fixes the failure seen for that test in
> cross-testing.
OK for master with Siddhesh's approval.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
> diff --git a/elf/Makefile b/elf/Makefile
> index 0c6bd926a1..632a4d8b0f 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -931,7 +931,7 @@ $(objpfx)tst-rtld-preload.out: tst-rtld-preload.sh $(objpfx)ld.so \
> $(objpfx)preloadtest \
> $(preloadtest-preloads:%=$(objpfx)%.so)
> $(SHELL) $< $(objpfx)ld.so $(objpfx)preloadtest \
> - '$(test-wrapper)' '$(test-wrapper-env)' '$(run_program_env)' \
> + '$(test-wrapper-env)' '$(run_program_env)' \
OK. This is correct because $(test-wrapper-env) is $(test-wrapper) with env.
> '$(rpath-link)' '$(tst-rtld-preload-OBJS)' > $@; \
> $(evaluate-test)
>
> diff --git a/elf/tst-rtld-preload.sh b/elf/tst-rtld-preload.sh
> index 02fe4a5a06..190d35c2ea 100755
> --- a/elf/tst-rtld-preload.sh
> +++ b/elf/tst-rtld-preload.sh
> @@ -21,17 +21,16 @@ set -e
>
> rtld=$1
> test_program=$2
> -test_wrapper=$3
> -test_wrapper_env=$4
> -run_program_env=$5
> -library_path=$6
> -preload=$7
> +test_wrapper_env=$3
> +run_program_env=$4
> +library_path=$5
> +preload=$6
OK.
>
> -echo "# [${test_wrapper}] [$rtld] [--library-path] [$library_path]" \
> - "[--preload] [$preload] [$test_program]"
> +echo "# [${test_wrapper_env}] [${run_program_env}] [$rtld] [--library-path]" \
> + "[$library_path] [--preload] [$preload] [$test_program]"
OK.
> ${test_wrapper_env} \
OK. This is the point at which the test is run on the target.
> ${run_program_env} \
> -${test_wrapper} $rtld --library-path "$library_path" \
> +$rtld --library-path "$library_path" \
OK.
> --preload "$preload" $test_program 2>&1 && rc=0 || rc=$?
> echo "# exit status $rc"
>
>
--
Cheers,
Carlos.