test-container: Avoid copying unintended system libraries
Commit Message
Some DSOs are distributed in hardware capability directories, e.g.
/usr/lib64/power7/libc.so.6
Whenever the processor is able to use one of these hardware-enabled
DSOs, testroot.pristine ends up with copies of glibc-provided libraries
from the system because it can't overwrite or remove them.
This patch avoids the unintended copies by executing ld.so with the same
arguments passed to each glibc test.
2019-07-22 Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
* Makefile (testroot.pristine/install.stamp): Execute ld.so with
the same arguments used in all tests.
---
Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Comments
* Tulio Magno Quites Machado Filho:
> Some DSOs are distributed in hardware capability directories, e.g.
> /usr/lib64/power7/libc.so.6
> Whenever the processor is able to use one of these hardware-enabled
> DSOs, testroot.pristine ends up with copies of glibc-provided libraries
> from the system because it can't overwrite or remove them.
>
> This patch avoids the unintended copies by executing ld.so with the same
> arguments passed to each glibc test.
The patch looks okay to me because $(rtld-prefix) is not affected by
$(build-hardcoded-path-in-tests). But in that case, the probing
command is definitely not run like a test would run.
Florian Weimer <fw@deneb.enyo.de> writes:
> * Tulio Magno Quites Machado Filho:
>
>> Some DSOs are distributed in hardware capability directories, e.g.
>> /usr/lib64/power7/libc.so.6
>> Whenever the processor is able to use one of these hardware-enabled
>> DSOs, testroot.pristine ends up with copies of glibc-provided libraries
>> from the system because it can't overwrite or remove them.
>>
>> This patch avoids the unintended copies by executing ld.so with the same
>> arguments passed to each glibc test.
>
> The patch looks okay to me because $(rtld-prefix) is not affected by
> $(build-hardcoded-path-in-tests). But in that case, the probing
> command is definitely not run like a test would run.
Interesting... Current master has a couple of failures when I configured
with --enable-hardcoded-path-in-tests.
This patch doesn't break nor improve the situation there.
So, I'm pushing it.
Thanks!!
* Tulio Magno Quites Machado Filho:
> Florian Weimer <fw@deneb.enyo.de> writes:
>
>> * Tulio Magno Quites Machado Filho:
>>
>>> Some DSOs are distributed in hardware capability directories, e.g.
>>> /usr/lib64/power7/libc.so.6
>>> Whenever the processor is able to use one of these hardware-enabled
>>> DSOs, testroot.pristine ends up with copies of glibc-provided libraries
>>> from the system because it can't overwrite or remove them.
>>>
>>> This patch avoids the unintended copies by executing ld.so with the same
>>> arguments passed to each glibc test.
>>
>> The patch looks okay to me because $(rtld-prefix) is not affected by
>> $(build-hardcoded-path-in-tests). But in that case, the probing
>> command is definitely not run like a test would run.
>
> Interesting... Current master has a couple of failures when I configured
> with --enable-hardcoded-path-in-tests.
> This patch doesn't break nor improve the situation there.
>
> So, I'm pushing it.
Sorry, I meant this as a suggestion to improve the commit message. 8->
But I guess it doesn't matter know.
@@ -383,7 +383,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 \
- $(objpfx)elf/$(rtld-installed-name) \
+ $(rtld-prefix) \
$(objpfx)testroot.pristine/bin/sh \
| grep / | sed 's/^[^/]*//' | sed 's/ .*//'` ;\
do \
@@ -392,7 +392,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 \
- $(objpfx)elf/$(rtld-installed-name) \
+ $(rtld-prefix) \
$(objpfx)support/$(LINKS_DSO_PROGRAM) \
| grep / | sed 's/^[^/]*//' | sed 's/ .*//'` ;\
do \