From patchwork Tue Apr 30 19:18:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 32471 Received: (qmail 48198 invoked by alias); 30 Apr 2019 19:18:41 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 48190 invoked by uid 89); 30 Apr 2019 19:18:40 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-20.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-vs1-f65.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id; bh=mEd7oEKfacJzS33hhjxnQhin76J/pOQNVh5x4VEtbTE=; b=Gy4D9BOBmalweEkyALWubC6lmAgjdgKOIBgRuedGbw2Lbo66VpUXe3OamkxaGTwEBM 5CUH/rupg2wne1Wu39BzNVaw6NRDjEgZZWyEKV0I1k1+ehdUTXaBWzgooGz/Nn7rrRBa O7vehrPYorylTV0TYBqjc7pyxT2V0zDVftD6t1rqetsgLlUAdLkeT8aSKiugC1rNoKtN lBXbH61sZw5fcQ1wFBMjJfGn8fxHFHo2wv3ROEJEVpBGr392x3PUkgM9mZ5uOQSKSc3Y R1iQePnZ5Ppvz0WmbczyhQm1aqF+r2EFILV0QYvtjGyNXapvJBJUPIdwQ74sNUTkksWM 5evA== Return-Path: From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH] elf: Fix elf/tst-pldd with --enable-hardcoded-path-in-tests (BZ#24506) Date: Tue, 30 Apr 2019 16:18:34 -0300 Message-Id: <20190430191834.19003-1-adhemerval.zanella@linaro.org> 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. * 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 --- 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 #include #include -#include #include #include @@ -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;