From patchwork Tue Jan 23 07:09:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sam James X-Patchwork-Id: 190757 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2553:b0:103:945f:af90 with SMTP id p19csp165208dyi; Mon, 22 Jan 2024 23:10:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IHuXIGkAcJvZEwf2GW9MCAfP1nDG305vY6L50ZXLvAuyMSDMvG1D8aVdbU1uQVkHg2Rw6DN X-Received: by 2002:a05:622a:1786:b0:42a:4118:3d6 with SMTP id s6-20020a05622a178600b0042a411803d6mr613084qtk.40.1705993824863; Mon, 22 Jan 2024 23:10:24 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705993824; cv=pass; d=google.com; s=arc-20160816; b=OxINwajhNa1ux7Gp5Acv4iscMis0hiyjD9h37rdXvtLWp5AaTzSbMWHKEK2PMt5snd uMsQMS8c2ZQakpb4jIFptI9DeWmVqffEY1lFbxQl8RwCScbgdv9nlfD/irHGUAhQvXQp NR3/4tTCvHI5k+Rb6Nf6EthnUzD1jJDYIy7FGkYt0cNID45JbOdwwXJ9QX69odtzs6UO kYTmjc+I4nYptWJIwVhr/+VD4EKIg2eFtpHbtxdUKDVhie7SOBTz0DaS/Qz0J6HkzkRb LaicEmAm4tu1JC1r38rFjCnO1LUgy9nIHAO1jo8MtNCBVpCgZIZt78tw+cT3qSKdCwnE rlRQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:arc-filter :dmarc-filter:delivered-to; bh=OMSYUw+agRB3t7Ej7bcIuFzXsdyhzZb2Awa+6B0fJ/8=; fh=rGgRskdXqkw/EDUeDqnE3q/qQuWE7ZzID6eKNBELT+8=; b=xdxFVoy2xTAIrSOZlnchxmzo1xT60gZsUPxcOfn6R0bTTyBHFKVqCu97Rckx7Hu92H 9qGuYi2CxoILJyc36n2O1Fb6pwyboT9nsxgvtgvAn5MN2MsM5ujsJ4s4TMDIx30FZtUh 3VTea338gLqEwHaVdPTGACMSAug7cndR4sOJ9fGjcWsTsjVNrhzE9ViJGAdp6x1Iw48T h4tbW8Yz+oy+jFE6wROLYjsLx4hFtpRMrVIuEnaRP6TnZmPH+dwQ4WgoRcpY3wdUcE3D l+Fq3dYdTcE3M4jBdbmAb4DbaeKMIlIsBh5BBaRq/2/zaEUtlqQRllFrFG7jIXlRGsAC x25w== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gentoo.org Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id h10-20020ac85e0a000000b00429a5f6c90asi7599930qtx.154.2024.01.22.23.10.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jan 2024 23:10:24 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gentoo.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8EF3F3858436 for ; Tue, 23 Jan 2024 07:10:24 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) by sourceware.org (Postfix) with ESMTP id D894A385841E for ; Tue, 23 Jan 2024 07:10:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D894A385841E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gentoo.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gentoo.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D894A385841E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=140.211.166.183 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705993811; cv=none; b=pqJORkJ0Dy0yAw041xKJeEbvDIbvBPZovUjTqkz2S1mnw/QPTP47uKXE3LTGXs0JAmC84vmnKxeINvVSm8UBszbzRj8hPH2Q2aETetWxp3O6nTj0eqEZKtL/cfvePh3d1u8fQDjoxCzQkG3pnG74iXDVpxNEFVozjpU1z+lkBN8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705993811; c=relaxed/simple; bh=NF8OuzHAMhk7zpwWDMFWDZ3jsMHBHhaF1ngk7HEokF4=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=GwLxJrhSPdFer5ItRuGFjXENA/iztk7r4+giCnGBpcK/SSa1DGXQdlorSFBuq3kbi/UA2aWgRhjXkrh8BaiBGaQlulzEU3SUm5M3BRvZc7AuRacygVfuZGyDqyMXVB5JNuwi7tKUPgHJmpioTzU+CgXHzG7nm8pSEJcwedoV+tM= ARC-Authentication-Results: i=1; server2.sourceware.org From: Sam James To: binutils@sourceware.org Cc: Vladimir Mezentsev Subject: [2.41 PATCH COMMITTED] Fix 31252 gprofng causes testsuite parallel jobs fail Date: Tue, 23 Jan 2024 07:09:29 +0000 Message-ID: <20240123070957.3398644-1-sam@gentoo.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788864180951885758 X-GMAIL-MSGID: 1788864180951885758 From: Vladimir Mezentsev Before running our tests, we made a fake installation into ./tmpdir. This installation changes libopcodes.la in the build area. Gas testing may fail if gas and gprofng tests are run in parallel. I create a script to run gprofng. Inside this script, LD_LIBRARY_PATH, GPROFNG_SYSCONFDIR are set. putenv_libcollector_ld_misc() first uses $GPROFNG_PRELOAD_LIBDIRS to create directories for SP_COLLECTOR_LIBRARY_PATH ($SP_COLLECTOR_LIBRARY_PATH is used to set up LD_PRELOAD). gprofng/ChangeLog 2024-01-19 Vladimir Mezentsev PR gprofng/31252 PR gprofng/30808 * src/envsets.cc (putenv_libcollector_ld_misc): Use $GPROFNG_PRELOAD_LIBDIRS first to build SP_COLLECTOR_LIBRARY_PATH. * testsuite/config/default.exp: Create a script to run gprofng. * testsuite/lib/display-lib.exp: Fix typo. (cherry picked from commit 26f557af696726a8556bff12f54e4d05cd7a5034) --- I've gone ahead and backported this as it's needed for parallel tests to work correctly on 2.41. Tested and tests now pass when they didn't before. Thanks! gprofng/src/envsets.cc | 36 +++++++++++++++++++++----- gprofng/testsuite/config/default.exp | 37 +++++++++++++++++++-------- gprofng/testsuite/lib/display-lib.exp | 4 +-- 3 files changed, 57 insertions(+), 20 deletions(-) diff --git a/gprofng/src/envsets.cc b/gprofng/src/envsets.cc index 52d155160fc..40ee39dc328 100644 --- a/gprofng/src/envsets.cc +++ b/gprofng/src/envsets.cc @@ -146,20 +146,42 @@ collect::putenv_libcollector_ld_misc () // so that -agentlib:gp-collector works // and so that collect -F works with 32/64-bit mix of processes - // Set GPROFNG_PRELOAD_LIBDIRS + StringBuilder sb; + sb.append ("SP_COLLECTOR_LIBRARY_PATH="); + int len = sb.length (); + int cnt = 0; + char *fname; char *ev = getenv (GPROFNG_PRELOAD_LIBDIRS); char *libpath_list = NULL; - if (ev == NULL && settings->preload_libdirs == NULL) + if (ev) + { /* GPROFNG_PRELOAD_LIBDIRS is used only in the gprofng testing. + * Use these directories first. */ + ev = strdup (ev); + for (char *s = ev; s;) + { + char *s1 = strchr (s, ':'); + if (s1) + *(s1++) = 0; + fname = dbe_sprintf ("%s/%s", s, LIBGP_COLLECTOR); + if (access (fname, R_OK | F_OK) == 0) + { + if (++cnt != 1) + sb.append (':'); + sb.append (s); + } + free (fname); + s = s1; + } + free (ev); + ev = NULL; + } + if (settings->preload_libdirs == NULL) { settings->read_rc (false); ev = settings->preload_libdirs; } ev = dbe_strdup (ev); - StringBuilder sb; - sb.appendf ("%s=", "SP_COLLECTOR_LIBRARY_PATH"); - int len = sb.length (); - int cnt = 0; - char *fname = dbe_sprintf ("%s/%s/%s", LIBDIR, PACKAGE, LIBGP_COLLECTOR); + fname = dbe_sprintf ("%s/%s/%s", LIBDIR, PACKAGE, LIBGP_COLLECTOR); if (access (fname, R_OK | F_OK) == 0) { ++cnt; diff --git a/gprofng/testsuite/config/default.exp b/gprofng/testsuite/config/default.exp index c4a6588bb64..3828514c0b0 100644 --- a/gprofng/testsuite/config/default.exp +++ b/gprofng/testsuite/config/default.exp @@ -19,6 +19,7 @@ # MA 02110-1301, USA. # + # The "make check" target in the Makefile passes in # "CC=$(CC_FOR_TARGET)". But, if the user invokes runtest directly, # these flags may not be set. @@ -36,18 +37,32 @@ remote_exec host "sh -c \"rm -rf tmpdir; mkdir -p tmpdir\"" if { "$CHECK_TARGET" == "check-install" } { set ::env(GPROFNG) "$PREFIX/bin/gprofng" } else { - # Make a temporary install dir to run gprofng from, and point at it - remote_exec host "sh -c \"$MAKE -C .. install-gprofng MAKEFLAGS=program_transform_name= DESTDIR=$BUILDDIR/tmpdir/root\"" - set ::env(GPROFNG) [exec find $BUILDDIR/tmpdir -type f -name gprofng -perm -u+x | head -1] - - set x [exec find $BUILDDIR/tmpdir -type d -name gprofng | head -1] - set ::env(LD_LIBRARY_PATH) "$x:$x/.." - - set x [exec find $BUILDDIR/tmpdir -type f -name gprofng.rc | head -1] - set ::env(GPROFNG_SYSCONFDIR) [exec dirname $x] + set ld_library_path "${BUILDDIR}/src/.libs:${BUILDDIR}/libcollector/.libs" + set orig_ld_library_path "" + catch { set orig_ld_library_path $::env(LD_LIBRARY_PATH) } + if [file exists "${BUILDDIR}/../bfd/.libs/libbfd.a"] { + append ld_library_path ":${BUILDDIR}/../bfd/.libs" + } + if [file exists "${BUILDDIR}/../opcodes/.libs/libopcodes.a"] { + append ld_library_path ":${BUILDDIR}/../opcodes/.libs" + } + if [file exists "${BUILDDIR}/../libsframe/.libs/libsframe.a"] { + append ld_library_path ":${BUILDDIR}/../libsframe/.libs" + } + if [file exists "${BUILDDIR}/../libiberty/libiberty.a"] { + append ld_library_path ":${BUILDDIR}/../libiberty" + } - puts "### LD_LIBRARY_PATH: $env(LD_LIBRARY_PATH)" - puts "### GPROFNG_SYSCONFDIR: $env(GPROFNG_SYSCONFDIR)" + set f [open "gprofng_wraper" w+] + puts $f "#!/usr/bin/bash" + puts $f "LD_LIBRARY_PATH=$ld_library_path:$orig_ld_library_path" + puts $f "GPROFNG_SYSCONFDIR=$env(srcroot)/src" + puts $f "GPROFNG_PRELOAD_LIBDIRS=$BUILDDIR/libcollector/.libs" + puts $f "export LD_LIBRARY_PATH GPROFNG_SYSCONFDIR GPROFNG_PRELOAD_LIBDIRS" + puts $f "${BUILDDIR}/src/gprofng \"\$@\"" + close $f + file attributes gprofng_wraper -permissions +rx + set ::env(GPROFNG) "$BUILDDIR/gprofng_wraper" } puts "### GPROFNG: $env(GPROFNG)" diff --git a/gprofng/testsuite/lib/display-lib.exp b/gprofng/testsuite/lib/display-lib.exp index 50db4d5055a..6941d84761c 100644 --- a/gprofng/testsuite/lib/display-lib.exp +++ b/gprofng/testsuite/lib/display-lib.exp @@ -26,8 +26,8 @@ proc run_native_host_cmd { command } { verbose -log "$command" set run_output "" try { - send_log "% timeout $TEST_TIMEOUT sh -c '$command' 2>&1\n" - set run_output [exec "timeout" $TEST_TIMEOUT "sh" "-c" "$command" "2>&1"] + send_log "% timeout $TEST_TIMEOUT sh -c '$command' 2>@1\n" + set run_output [exec "timeout" $TEST_TIMEOUT "sh" "-c" "$command" "2>@1"] set status 0 } trap CHILDSTATUS {results options} { set status [lindex [dict get $options -errorcode] 2]