about summary refs log tree commit diff
path: root/elf/tst-pldd.c
diff options
context:
space:
mode:
Diffstat (limited to 'elf/tst-pldd.c')
-rw-r--r--elf/tst-pldd.c20
1 files 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;