This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] elf: Fix elf/tst-pldd with --enable-hardcoded-path-in-tests (BZ#24506)


On 4/30/19 3:18 PM, Adhemerval Zanella wrote:
Although test-container does support --enable-hardcoded-path-in-tests,
the resulting library names obtained with pldd will have the 'vanilla'
names of 'ld.so' and 'libc.so' instead of the installed ABI names
(ld-linux-x86-64.so.2 for instance on x86_64).  The patch adds the
default names as one possible option.

Checked on x86_64-linux-gnu (built with and without
--enable-hardcoded-path-in-tests) and i686-linux-gnu.

What does this patch do?

Please explain in detail the problem and why this is a solution :-)

	* elf/tst-pldd.c (in_str_list): New function.
	(do_test): Add default names for ld and libc as one option.
---
  elf/tst-pldd.c | 20 +++++++++++++++++---
  1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/elf/tst-pldd.c b/elf/tst-pldd.c
index ed19cedd05..2a9f58936f 100644
--- a/elf/tst-pldd.c
+++ b/elf/tst-pldd.c
@@ -20,7 +20,6 @@
  #include <string.h>
  #include <unistd.h>
  #include <stdint.h>
-#include <libgen.h>
  #include <stdbool.h>
#include <array_length.h>
@@ -39,6 +38,15 @@ target_process (void *arg)
  /* The test runs in a container because pldd does not support tracing
     a binary started by the loader iself (as with testrun.sh).  */
+static bool
+in_str_list (const char *libname, const char *const strlist[])
+{
+  for (const char *const *str = strlist; *str != NULL; str++)
+    if (strcmp (libname, *str) == 0)
+      return true;
+  return false;
+}
+
  static int
  do_test (void)
  {
@@ -89,14 +97,20 @@ do_test (void)
  	if (buffer[strlen(buffer)-1] == '\n')
  	  buffer[strlen(buffer)-1] = '\0';
- if (strcmp (basename (buffer), LD_SO) == 0)
+	const char *libname = basename (buffer);
+
+	/* It checks for default names in case of build configure with
+	   --enable-hardcoded-path-in-tests (BZ #24506).  */
+	if (in_str_list (libname,
+			 (const char *const []) { "ld.so", LD_SO, NULL }))
  	  {
  	    TEST_COMPARE (interpreter_found, false);
  	    interpreter_found = true;
  	    continue;
  	  }
- if (strcmp (basename (buffer), LIBC_SO) == 0)
+	if (in_str_list (libname,
+			 (const char *const []) { "libc.so", LIBC_SO, NULL }))
  	  {
  	    TEST_COMPARE (libc_found, false);
  	    libc_found = true;



--
Cheers,
Carlos.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]