From patchwork Sun Sep 29 22:01:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 34720 Received: (qmail 10757 invoked by alias); 29 Sep 2019 22:01:55 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 10748 invoked by uid 89); 29 Sep 2019 22:01:54 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.1 spammy=mkdir X-HELO: mx1.suse.de Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 29 Sep 2019 22:01:53 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 201A8AFBB; Sun, 29 Sep 2019 22:01:51 +0000 (UTC) Subject: Re: [PATCH][gdb/contrib] cc-with-tweaks.sh: Create .dwz file in .tmp subdir To: Kevin Buettner , gdb-patches@sourceware.org References: <20190822144220.GA6937@delia> <20190928130942.1062250e@f29-4.lan> Cc: Simon Marchi From: Tom de Vries Openpgp: preference=signencrypt Message-ID: <582bd5b5-ab06-dc42-12ca-37e4ea2dd74a@suse.de> Date: Mon, 30 Sep 2019 00:01:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <20190928130942.1062250e@f29-4.lan> X-IsSubscribed: yes On 28-09-19 22:09, Kevin Buettner wrote: > On Thu, 22 Aug 2019 16:42:22 +0200 > Tom de Vries wrote: > >> When running a test-case gdb.base/foo.exp with cc-with-dwz-m, a file >> build/gdb/testsuite/outputs/gdb.base/foo/foo.dwz will be created, alongside >> executable build/gdb/testsuite/outputs/gdb.base/foo/foo. >> >> This can cause problems in f.i. test-cases that test file name completion. >> >> Make these problems less likely by moving foo.dwz to a .tmp subdir: >> build/gdb/testsuite/outputs/gdb.base/foo/.tmp/foo.dwz. >> >> Tested on x86_64-linux. >> >> OK for trunk? >> >> Thanks, >> - Tom >> >> [gdb/contrib] cc-with-tweaks.sh: Create .dwz file in .tmp subdir >> >> gdb/ChangeLog: >> >> 2019-08-22 Tom de Vries >> >> * contrib/cc-with-tweaks.sh (get_tmpdir): New function. >> Use $tmpdir/$(basename "$output_file").dwz instead of >> "${output_file}.dwz". > > LGTM. Thanks for the review, committed. I retested before committing and found a regression because I didn't update gdb.dwarf2/gdb-index.exp accordingly. That's fixed in the committed version, attached below. Thanks, - Tom [gdb/contrib] cc-with-tweaks.sh: Create .dwz file in .tmp subdir When running a test-case gdb.base/foo.exp with cc-with-dwz-m, a file build/gdb/testsuite/outputs/gdb.base/foo/foo.dwz will be created, alongside executable build/gdb/testsuite/outputs/gdb.base/foo/foo. This can cause problems in f.i. test-cases that test file name completion. Make these problems less likely by moving foo.dwz to a .tmp subdir: build/gdb/testsuite/outputs/gdb.base/foo/.tmp/foo.dwz. Tested on x86_64-linux. gdb/ChangeLog: 2019-08-22 Tom de Vries * contrib/cc-with-tweaks.sh (get_tmpdir): New function. Use $tmpdir/$(basename "$output_file").dwz instead of "${output_file}.dwz". gdb/testsuite/ChangeLog: 2019-09-29 Tom de Vries * gdb.dwarf2/gdb-index.exp: Handle new location of .dwz file. --- gdb/contrib/cc-with-tweaks.sh | 16 ++++++++++++---- gdb/testsuite/gdb.dwarf2/gdb-index.exp | 6 ++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/gdb/contrib/cc-with-tweaks.sh b/gdb/contrib/cc-with-tweaks.sh index 7df16bc6c1c..98c4f89afc9 100755 --- a/gdb/contrib/cc-with-tweaks.sh +++ b/gdb/contrib/cc-with-tweaks.sh @@ -163,6 +163,12 @@ then exit 1 fi +get_tmpdir () +{ + tmpdir=$(dirname "$output_file")/.tmp + mkdir -p "$tmpdir" +} + if [ "$want_objcopy_compress" = true ]; then $OBJCOPY --compress-debug-sections "$output_file" rc=$? @@ -202,17 +208,19 @@ if [ "$want_dwz" = true ]; then ;; esac elif [ "$want_multi" = true ]; then + get_tmpdir + dwz_file=$tmpdir/$(basename "$output_file").dwz # Remove the dwz output file if it exists, so we don't mistake it for a # new file in case dwz fails. - rm -f "${output_file}.dwz" + rm -f "$dwz_file" cp $output_file ${output_file}.alt - $DWZ -m ${output_file}.dwz "$output_file" ${output_file}.alt > /dev/null + $DWZ -m "$dwz_file" "$output_file" ${output_file}.alt > /dev/null rm -f ${output_file}.alt # Validate dwz's work by checking if the expected output file exists. - if [ ! -f "${output_file}.dwz" ]; then - echo "$myname: dwz file ${output_file}.dwz missing." + if [ ! -f "$dwz_file" ]; then + echo "$myname: dwz file $dwz_file missing." exit 1 fi fi diff --git a/gdb/testsuite/gdb.dwarf2/gdb-index.exp b/gdb/testsuite/gdb.dwarf2/gdb-index.exp index b14e07fa55d..1fe993accf8 100644 --- a/gdb/testsuite/gdb.dwarf2/gdb-index.exp +++ b/gdb/testsuite/gdb.dwarf2/gdb-index.exp @@ -34,8 +34,10 @@ if { [prepare_for_testing "failed to prepare" "${testfile}" \ proc add_gdb_index { program } { set index_file ${program}.gdb-index - set dwz ${program}.dwz - set dwz_index_file ${dwz}.gdb-index + set dir [file dirname ${program}] + set filename [file tail ${program}] + set dwz $dir/.tmp/${filename}.dwz + set dwz_index_file $program.dwz.gdb-index verbose -log "index_file: ${index_file}" remote_file host delete ${index_file} remote_file host delete ${dwz_index_file}