mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
elf: Fix elf/tst-pldd with --enable-hardcoded-path-in-tests (BZ#24506)
The elf/tst-pldd (added by1a4c27355e
to fix BZ#18035) test does not expect the hardcoded paths that are output by pldd when the test is built with --enable-hardcoded-path-in-tests. Instead of showing the ABI installed library names for loader and libc (such as ld-linux-x86-64.so.2 and libc.so.6 for x86_64), pldd shows the default built ld.so and libc.so. It makes the tests fail with an invalid expected loader/libc name. This patch fixes the elf-pldd test by adding the canonical ld.so and libc.so names in the expected list of possible outputs when parsing the result output from pldd. The test now handles both default build and --enable-hardcoded-path-in-tests option. Checked on x86_64-linux-gnu (built with and without --enable-hardcoded-path-in-tests) and i686-linux-gnu. * elf/tst-pldd.c (in_str_list): New function. (do_test): Add default names for ld and libc as one option. Reviewed-by: Carlos O'Donell <carlos@redhat.com> (cherry picked from commitb2af6fb2ed
)
This commit is contained in:
parent
6fc6b074ea
commit
3c15600e79
@ -20,7 +20,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <libgen.h>
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <array_length.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
|
/* The test runs in a container because pldd does not support tracing
|
||||||
a binary started by the loader iself (as with testrun.sh). */
|
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
|
static int
|
||||||
do_test (void)
|
do_test (void)
|
||||||
{
|
{
|
||||||
@ -89,14 +97,20 @@ do_test (void)
|
|||||||
if (buffer[strlen(buffer)-1] == '\n')
|
if (buffer[strlen(buffer)-1] == '\n')
|
||||||
buffer[strlen(buffer)-1] = '\0';
|
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);
|
TEST_COMPARE (interpreter_found, false);
|
||||||
interpreter_found = true;
|
interpreter_found = true;
|
||||||
continue;
|
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);
|
TEST_COMPARE (libc_found, false);
|
||||||
libc_found = true;
|
libc_found = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user