test-container: Avoid copying unintended system libraries

Message ID 20190722195226.30727-1-tuliom@linux.ibm.com
State Committed
Delegated to: Florian Weimer
Headers

Commit Message

Tulio Magno Quites Machado Filho July 22, 2019, 7:52 p.m. UTC
  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

Florian Weimer July 22, 2019, 8:18 p.m. UTC | #1
* 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.
  
Tulio Magno Quites Machado Filho July 23, 2019, 4:25 p.m. UTC | #2
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!!
  
Florian Weimer July 23, 2019, 6:51 p.m. UTC | #3
* 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.
  

Patch

diff --git a/Makefile b/Makefile
index dc5de7aa6b..a4ed747cef 100644
--- a/Makefile
+++ b/Makefile
@@ -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 \