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!

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

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.
This commit is contained in:
Stefan Liebler 2018-10-04 13:07:29 +02:00
parent dae3ed958c
commit e7624d708d
5 changed files with 23 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2018-10-04 Stefan Liebler <stli@linux.ibm.com>
* 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.
2018-10-02 Rafal Luzynski <digitalfreak@lingonborough.com> 2018-10-02 Rafal Luzynski <digitalfreak@lingonborough.com>
[BZ #20209] [BZ #20209]

View File

@ -160,6 +160,7 @@ endif
CFLAGS-support_paths.c = \ CFLAGS-support_paths.c = \
-DSRCDIR_PATH=\"`cd .. ; pwd`\" \ -DSRCDIR_PATH=\"`cd .. ; pwd`\" \
-DOBJDIR_PATH=\"`cd $(objpfx)/..; pwd`\" \ -DOBJDIR_PATH=\"`cd $(objpfx)/..; pwd`\" \
-DOBJDIR_ELF_LDSO_PATH=\"`cd $(objpfx)/..; pwd`/elf/$(rtld-installed-name)\" \
-DINSTDIR_PATH=\"$(prefix)\" \ -DINSTDIR_PATH=\"$(prefix)\" \
-DLIBDIR_PATH=\"$(libdir)\" -DLIBDIR_PATH=\"$(libdir)\"

View File

@ -91,6 +91,10 @@ char *xstrndup (const char *, size_t);
extern const char support_srcdir_root[]; extern const char support_srcdir_root[];
extern const char support_objdir_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. */ /* Corresponds to the --prefix= passed to configure. */
extern const char support_install_prefix[]; extern const char support_install_prefix[];
/* Corresponds to the install's lib/ or lib64/ directory. */ /* Corresponds to the install's lib/ or lib64/ directory. */

View File

@ -36,6 +36,14 @@ const char support_objdir_root[] = OBJDIR_PATH;
# error please -DOBJDIR_PATH=something in the Makefile # error please -DOBJDIR_PATH=something in the Makefile
#endif #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 #ifdef INSTDIR_PATH
/* Corresponds to the --prefix= passed to configure. */ /* Corresponds to the --prefix= passed to configure. */
const char support_install_prefix[] = INSTDIR_PATH; const char support_install_prefix[] = INSTDIR_PATH;

View File

@ -674,8 +674,7 @@ main (int argc, char **argv)
} }
} }
if (strncmp (argv[1], concat (support_objdir_root, "/elf/ld-linux-", NULL), if (strcmp (argv[1], support_objdir_elf_ldso) == 0)
strlen (support_objdir_root) + 14) == 0)
{ {
++argv; ++argv;
--argc; --argc;