Adjust name-prefix of ld.so in test-container.c.

Message ID d4b62809-bc13-6fb6-05d4-91129f2516f8@linux.ibm.com
State Committed
Headers

Commit Message

Stefan Liebler Sept. 5, 2018, 9:14 a.m. UTC
  On 09/04/2018 06:37 PM, DJ Delorie wrote:
> 
> Stefan Liebler <stli@linux.ibm.com> writes:
>> +  if (strncmp (argv[1], support_objdir_elf_ldso,
>> +	       strlen (support_objdir_elf_ldso)) == 0)
> 
> If we're comparing the whole name now, this could be a strcmp() instead?
> 
Yes, of course. You are right.
I've updated the patch.

Thanks
Stefan
  

Comments

Stefan Liebler Sept. 10, 2018, 12:01 p.m. UTC | #1
On 09/05/2018 11:14 AM, Stefan Liebler wrote:
> On 09/04/2018 06:37 PM, DJ Delorie wrote:
>>
>> Stefan Liebler <stli@linux.ibm.com> writes:
>>> +  if (strncmp (argv[1], support_objdir_elf_ldso,
>>> +           strlen (support_objdir_elf_ldso)) == 0)
>>
>> If we're comparing the whole name now, this could be a strcmp() instead?
>>
> Yes, of course. You are right.
> I've updated the patch.
> 
> Thanks
> Stefan

PING

Is this okay to commit?

Bye
Stefan
  
Carlos O'Donell Sept. 17, 2018, 2:57 p.m. UTC | #2
On 09/05/2018 05:14 AM, Stefan Liebler wrote:
> On 09/04/2018 06:37 PM, DJ Delorie wrote:
>>
>> Stefan Liebler <stli@linux.ibm.com> writes:
>>> +  if (strncmp (argv[1], support_objdir_elf_ldso,
>>> +           strlen (support_objdir_elf_ldso)) == 0)
>>
>> If we're comparing the whole name now, this could be a strcmp() instead?
>>
> Yes, of course. You are right.
> I've updated the patch.
> 
> Thanks
> Stefan
> 
> 20180905_test_container.patch
> 
> 
> commit 79f7c31ef02a13eb6ede1393770d29cb36914754
> Author: Stefan Liebler <stli@linux.ibm.com>
> Date:   Wed Sep 5 09:23:13 2018 +0200
> 
>     Adjust name of ld.so in test-container.c.
>     
>     The test-container.c file assumes that ld.so is always named
>     something like /elf/ld-linux-*.
>     But e.g. on s390x it is named ld64.so.1 or ld.so.1 on s390.
>     There are other architectures like power or mips with similar names.
>     
>     This patch introduces the new global variable support_objdir_elf_ldso
>     which contains the absolute path to the runtime linker used by the
>     testsuite, e.g. OBJDIR_PATH/elf/ld-linux-x86-64.so.2.
>     The check in test-container.c is now comparing against this path.
>     Without this patch, test-container.c is searching invalid files / directories
>     and fails to find glibc/nss/tst-nss-test3.root/tst-nss-test3.script.
>     Then the test tst-nss-test3 fails!
>     
>     ChangeLog:
>     
>             * support/support.h (support_objdir_elf_ldso): New variable.
>             * support/support_paths.c (support_objdir_elf_ldso): Likewise.
>             * support/Makefile (CFLAGS-support_paths.c): Add definition
>             for OBJDIR_ELF_LDSO_PATH.
>             * support/test-container.c (main): Search for the ld.so
>             which is also used by the testsuite.

OK for master.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>


> diff --git a/support/Makefile b/support/Makefile
> index 545bfa2727..8b4a7bf8c5 100644
> --- a/support/Makefile
> +++ b/support/Makefile
> @@ -160,6 +160,7 @@ endif
>  CFLAGS-support_paths.c = \
>  		-DSRCDIR_PATH=\"`cd .. ; pwd`\" \
>  		-DOBJDIR_PATH=\"`cd $(objpfx)/..; pwd`\" \
> +		-DOBJDIR_ELF_LDSO_PATH=\"`cd $(objpfx)/..; pwd`/elf/$(rtld-installed-name)\" \

OK.

>  		-DINSTDIR_PATH=\"$(prefix)\" \
>  		-DLIBDIR_PATH=\"$(libdir)\"
>  
> diff --git a/support/support.h b/support/support.h
> index d0e15bca1d..9418cd11ef 100644
> --- a/support/support.h
> +++ b/support/support.h
> @@ -91,6 +91,10 @@ char *xstrndup (const char *, size_t);
>  extern const char support_srcdir_root[];
>  extern const char support_objdir_root[];
>  
> +/* Corresponds to the path to the runtime linker used by the testsuite,
> +   e.g. OBJDIR_PATH/elf/ld-linux-x86-64.so.2  */
> +extern const char support_objdir_elf_ldso[];

OK.

> +
>  /* Corresponds to the --prefix= passed to configure.  */
>  extern const char support_install_prefix[];
>  /* Corresponds to the install's lib/ or lib64/ directory.  */
> diff --git a/support/support_paths.c b/support/support_paths.c
> index a1c22315bd..6d0beb102c 100644
> --- a/support/support_paths.c
> +++ b/support/support_paths.c
> @@ -36,6 +36,14 @@ const char support_objdir_root[] = OBJDIR_PATH;
>  # error please -DOBJDIR_PATH=something in the Makefile
>  #endif
>  
> +#ifdef OBJDIR_ELF_LDSO_PATH
> +/* Corresponds to the path to the runtime linker used by the testsuite,
> +   e.g. OBJDIR_PATH/elf/ld-linux-x86-64.so.2  */
> +const char support_objdir_elf_ldso[] = OBJDIR_ELF_LDSO_PATH;
> +#else
> +# error please -DOBJDIR_ELF_LDSO_PATH=something in the Makefile
> +#endif

OK.

> +
>  #ifdef INSTDIR_PATH
>  /* Corresponds to the --prefix= passed to configure.  */
>  const char support_install_prefix[] = INSTDIR_PATH;
> diff --git a/support/test-container.c b/support/test-container.c
> index c56b53ed81..fbdfb4a06a 100644
> --- a/support/test-container.c
> +++ b/support/test-container.c
> @@ -674,8 +674,7 @@ main (int argc, char **argv)
>  	}
>      }
>  
> -  if (strncmp (argv[1], concat (support_objdir_root, "/elf/ld-linux-", NULL),
> -	       strlen (support_objdir_root) + 14) == 0)
> +  if (strcmp (argv[1], support_objdir_elf_ldso) == 0)

OK.

>      {
>        ++argv;
>        --argc;
  
Stefan Liebler Oct. 4, 2018, 11:13 a.m. UTC | #3
On 09/17/2018 04:57 PM, Carlos O'Donell wrote:
> On 09/05/2018 05:14 AM, Stefan Liebler wrote:
>> On 09/04/2018 06:37 PM, DJ Delorie wrote:
>>>
>>> Stefan Liebler <stli@linux.ibm.com> writes:
>>>> +  if (strncmp (argv[1], support_objdir_elf_ldso,
>>>> +           strlen (support_objdir_elf_ldso)) == 0)
>>>
>>> If we're comparing the whole name now, this could be a strcmp() instead?
>>>
>> Yes, of course. You are right.
>> I've updated the patch.
>>
>> Thanks
>> Stefan
>>
>> 20180905_test_container.patch
>>
>>
>> commit 79f7c31ef02a13eb6ede1393770d29cb36914754
>> Author: Stefan Liebler <stli@linux.ibm.com>
>> Date:   Wed Sep 5 09:23:13 2018 +0200
>>
>>      Adjust name of ld.so in test-container.c.
>>      
>>      The test-container.c file assumes that ld.so is always named
>>      something like /elf/ld-linux-*.
>>      But e.g. on s390x it is named ld64.so.1 or ld.so.1 on s390.
>>      There are other architectures like power or mips with similar names.
>>      
>>      This patch introduces the new global variable support_objdir_elf_ldso
>>      which contains the absolute path to the runtime linker used by the
>>      testsuite, e.g. OBJDIR_PATH/elf/ld-linux-x86-64.so.2.
>>      The check in test-container.c is now comparing against this path.
>>      Without this patch, test-container.c is searching invalid files / directories
>>      and fails to find glibc/nss/tst-nss-test3.root/tst-nss-test3.script.
>>      Then the test tst-nss-test3 fails!
>>      
>>      ChangeLog:
>>      
>>              * support/support.h (support_objdir_elf_ldso): New variable.
>>              * support/support_paths.c (support_objdir_elf_ldso): Likewise.
>>              * support/Makefile (CFLAGS-support_paths.c): Add definition
>>              for OBJDIR_ELF_LDSO_PATH.
>>              * support/test-container.c (main): Search for the ld.so
>>              which is also used by the testsuite.
> 
> OK for master.
> 
> Reviewed-by: Carlos O'Donell <carlos@redhat.com>

Committed

Thanks
Stefan
  

Patch

commit 79f7c31ef02a13eb6ede1393770d29cb36914754
Author: Stefan Liebler <stli@linux.ibm.com>
Date:   Wed Sep 5 09:23:13 2018 +0200

    Adjust name of ld.so in test-container.c.
    
    The test-container.c file assumes that ld.so is always named
    something like /elf/ld-linux-*.
    But e.g. on s390x it is named ld64.so.1 or ld.so.1 on s390.
    There are other architectures like power or mips with similar names.
    
    This patch introduces the new global variable support_objdir_elf_ldso
    which contains the absolute path to the runtime linker used by the
    testsuite, e.g. OBJDIR_PATH/elf/ld-linux-x86-64.so.2.
    The check in test-container.c is now comparing against this path.
    Without this patch, test-container.c is searching invalid files / directories
    and fails to find glibc/nss/tst-nss-test3.root/tst-nss-test3.script.
    Then the test tst-nss-test3 fails!
    
    ChangeLog:
    
            * support/support.h (support_objdir_elf_ldso): New variable.
            * support/support_paths.c (support_objdir_elf_ldso): Likewise.
            * support/Makefile (CFLAGS-support_paths.c): Add definition
            for OBJDIR_ELF_LDSO_PATH.
            * support/test-container.c (main): Search for the ld.so
            which is also used by the testsuite.

diff --git a/support/Makefile b/support/Makefile
index 545bfa2727..8b4a7bf8c5 100644
--- a/support/Makefile
+++ b/support/Makefile
@@ -160,6 +160,7 @@  endif
 CFLAGS-support_paths.c = \
 		-DSRCDIR_PATH=\"`cd .. ; pwd`\" \
 		-DOBJDIR_PATH=\"`cd $(objpfx)/..; pwd`\" \
+		-DOBJDIR_ELF_LDSO_PATH=\"`cd $(objpfx)/..; pwd`/elf/$(rtld-installed-name)\" \
 		-DINSTDIR_PATH=\"$(prefix)\" \
 		-DLIBDIR_PATH=\"$(libdir)\"
 
diff --git a/support/support.h b/support/support.h
index d0e15bca1d..9418cd11ef 100644
--- a/support/support.h
+++ b/support/support.h
@@ -91,6 +91,10 @@  char *xstrndup (const char *, size_t);
 extern const char support_srcdir_root[];
 extern const char support_objdir_root[];
 
+/* Corresponds to the path to the runtime linker used by the testsuite,
+   e.g. OBJDIR_PATH/elf/ld-linux-x86-64.so.2  */
+extern const char support_objdir_elf_ldso[];
+
 /* Corresponds to the --prefix= passed to configure.  */
 extern const char support_install_prefix[];
 /* Corresponds to the install's lib/ or lib64/ directory.  */
diff --git a/support/support_paths.c b/support/support_paths.c
index a1c22315bd..6d0beb102c 100644
--- a/support/support_paths.c
+++ b/support/support_paths.c
@@ -36,6 +36,14 @@  const char support_objdir_root[] = OBJDIR_PATH;
 # error please -DOBJDIR_PATH=something in the Makefile
 #endif
 
+#ifdef OBJDIR_ELF_LDSO_PATH
+/* Corresponds to the path to the runtime linker used by the testsuite,
+   e.g. OBJDIR_PATH/elf/ld-linux-x86-64.so.2  */
+const char support_objdir_elf_ldso[] = OBJDIR_ELF_LDSO_PATH;
+#else
+# error please -DOBJDIR_ELF_LDSO_PATH=something in the Makefile
+#endif
+
 #ifdef INSTDIR_PATH
 /* Corresponds to the --prefix= passed to configure.  */
 const char support_install_prefix[] = INSTDIR_PATH;
diff --git a/support/test-container.c b/support/test-container.c
index c56b53ed81..fbdfb4a06a 100644
--- a/support/test-container.c
+++ b/support/test-container.c
@@ -674,8 +674,7 @@  main (int argc, char **argv)
 	}
     }
 
-  if (strncmp (argv[1], concat (support_objdir_root, "/elf/ld-linux-", NULL),
-	       strlen (support_objdir_root) + 14) == 0)
+  if (strcmp (argv[1], support_objdir_elf_ldso) == 0)
     {
       ++argv;
       --argc;