This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Fix testroot.pristine creation copying dynamic linker
- From: Joseph Myers <joseph at codesourcery dot com>
- To: Andreas Schwab <schwab at suse dot de>
- Cc: <libc-alpha at sourceware dot org>, <dj at redhat dot com>
- Date: Thu, 17 Oct 2019 20:50:01 +0000
- Subject: Re: Fix testroot.pristine creation copying dynamic linker
- Ironport-sdr: V5gwcmp340ovo2A2KYDRy60iByPvGgcud2r9cXt2X69ZRB9Oio/gt7kaAQO3KH5NvDp+BQL0pG NPqguJ8AvNAIck39+4AO6BQNXgYFb8UGzET7/C3Tel7S+F+4+644nLpin07G8EJClu/5MW1hbF XLJ0yDcW6YdNKxe4u97Ylrld4abLizygqOTCRX/33WphhHGQhoyOeGtThWmCyyU+wK10uAZuMB C64lFFIPNkKyjds/g4qPvbMNc6MocuRgwweBy6OzRx/n85l0ZMqlY7Q1OcKIknlBeQJdaJDZgO zoU=
- Ironport-sdr: 2ahSM9Eeq7mONKLY3ahhRslkcy0JbyE6GqeKHu13ObYBoCXZJp8oGI1flyEpUqQv3L0RGTZ/Cy srTUUvb6omCwJC1fPr1FZ9BB0PYSRbOVQCDdLbUukUx0jpD0NvqbDUMqFfOBlc3WeukU4/bFRN HT1++ZPxZqHvwPWY+5WyTWVOdD4dk/QBF4nzy7ups4POoocG2zmuHjnWZEExOoEyknrTod5Upe JoAJqpxBgvkzCcyyWxHfb/l/dGEyFFSfXEYyZ92CNSi0+kmXzrLO/f8bNKddBKYA3ERiGh8EsG Gic=
- References: <alpine.DEB.2.21.1910162150320.3868@digraph.polyomino.org.uk> <mvmeezbdage.fsf@suse.de>
On Thu, 17 Oct 2019, Andreas Schwab wrote:
> On Okt 16 2019, Joseph Myers <joseph@codesourcery.com> wrote:
>
> > diff --git a/Makefile b/Makefile
> > index a736c3afcc..b16b82d3e1 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -555,7 +555,7 @@ ifeq ($(run-built-tests),yes)
> > for dso in `$(test-wrapper-env) LD_TRACE_LOADED_OBJECTS=1 \
> > $(rtld-prefix) \
> > $(objpfx)testroot.pristine/bin/sh \
> > - | grep / | sed 's/^[^/]*//' | sed 's/ .*//'` ;\
> > + | grep / | sed 's@.*=> /@/@' | sed 's/^[^/]*//' | sed 's/ .*//'` ;\
>
> You can combine those four pipelines into a single sed call.
Here is a version that does that.
Fix testroot.pristine creation copying dynamic linker.
This patch addresses an issue reported in
<https://sourceware.org/ml/libc-alpha/2019-07/msg00661.html> where the
creation of testroot.pristine, on encountering
LD_TRACE_LOADED_OBJECTS=1 of the form
libc.so.6 => /scratch/jmyers/glibc/mbs/obj/glibc-8-0-mips64-linux-gnu-x86_64-linux-gnu/default/libc.so.6 (0x772dd000)
/lib32/ld.so.1 => /scratch/jmyers/glibc/mbs/obj/glibc-8-0-mips64-linux-gnu-x86_64-linux-gnu/default/elf/ld.so.1 (0x7747b000)
tries to copy /lib32/ld.so.1 (which does not exist) into the testroot
instead of copying the path on the RHS of "=>", which does exist,
because the Makefile logic assumes that the path on such a line with
'/' should be copied, when if there are such paths on both the LHS and
the RHS of "=>", only the one on the RHS necessarily exists and so
only that should be copied. The patch follows the approach suggested
by DJ in <https://sourceware.org/ml/libc-alpha/2019-07/msg00662.html>,
with the suggestion from Andreas in
<https://sourceware.org/ml/libc-alpha/2019-10/msg00514.html> of a
single sed command in place of pipeline of grep and three sed
commands.
Tested for x86_64, with and without --enable-hardcoded-path-in-tests;
a previous version with multiple sed commands, implementing the same
logic, also tested for MIPS, with and without
--enable-hardcoded-path-in-tests, to confirm it fixes the original
problem.
Co-authored-by: DJ Delorie <dj@redhat.com>
diff --git a/Makefile b/Makefile
index a736c3afcc..ca52f790bb 100644
--- a/Makefile
+++ b/Makefile
@@ -555,7 +555,7 @@ ifeq ($(run-built-tests),yes)
for dso in `$(test-wrapper-env) LD_TRACE_LOADED_OBJECTS=1 \
$(rtld-prefix) \
$(objpfx)testroot.pristine/bin/sh \
- | grep / | sed 's/^[^/]*//' | sed 's/ .*//'` ;\
+ | sed -n '/\//{s@.*=> /@/@;s/^[^/]*//;s/ .*//p}'` ;\
do \
test -d `dirname $(objpfx)testroot.pristine$$dso` || \
mkdir -p `dirname $(objpfx)testroot.pristine$$dso` ;\
@@ -564,7 +564,7 @@ ifeq ($(run-built-tests),yes)
for dso in `$(test-wrapper-env) LD_TRACE_LOADED_OBJECTS=1 \
$(rtld-prefix) \
$(objpfx)support/$(LINKS_DSO_PROGRAM) \
- | grep / | sed 's/^[^/]*//' | sed 's/ .*//'` ;\
+ | sed -n '/\//{s@.*=> /@/@;s/^[^/]*//;s/ .*//p}'` ;\
do \
test -d `dirname $(objpfx)testroot.pristine$$dso` || \
mkdir -p `dirname $(objpfx)testroot.pristine$$dso` ;\
--
Joseph S. Myers
joseph@codesourcery.com