From: Tom de Vries <tdevries@suse.de>
To: gdb-patches@sourceware.org
Subject: [PATCH][gdb/contrib] Use temp dir for gdb-add-index in cc-with-tweaks.sh
Date: Fri, 17 Apr 2020 13:46:37 +0200 [thread overview]
Message-ID: <20200417114635.GA32265@delia> (raw)
Hi,
When running test-case gdb.dwarf2/gdb-index.exp cleanly by issuing this
command:
...
$ rm -Rf build/gdb/testsuite/outputs/gdb.dwarf2/gdb-index
...
before running, it passes both with native and target board
cc-with-gdb-index.
But when we run the test-case first with native and then with
cc-with-gdb-index without intermediate cleanup, we get instead:
...
Running src/gdb/testsuite/gdb.dwarf2/gdb-index.exp ...
gdb compile failed, cc-with-tweaks.sh: Index file \
build/gdb/testsuite/outputs/gdb.dwarf2/gdb-index/gdb-index.gdb-index \
exists, won't clobber.
=== gdb Summary ===
# of untested testcases 1
...
What happens is that the native run produces a file
build/gdb/testsuite/outputs/gdb.dwarf2/gdb-index/gdb-index.gdb-index, which
causes gdb/contrib/cc-with-tweaks.sh to hit this code:
...
index_file="${output_file}.gdb-index"
if [ "$want_index" = true ] && [ -f "$index_file" ]
then
echo "$myname: Index file $index_file exists, won't clobber." >&2
exit 1
fi
...
The gdb-add-index script has a problem that it uses temp files alongside the
executable, filed as PR25843.
The code in cc-with-tweaks.sh attempts to detect the case that creating such a
temp file would overwrite an pre-existing file. It however does this only for
a single file, while gdb-add-index uses more temporary files:
- <exec>.gdb-index
- <exec>.debug_names
- <exec>.debug_str
- <exec>.debug_str.merge
- <exec>.debug_str.err
Fix this by working around PR25843 in a more generic way:
- move the executable into a temp directory
- execute gdb-add-index, allowing it to create any temp file alongside the
executable in the temp directory
- move the executable back to the original location
Tested on x86_64-linux, with target board cc-with-debug-index.
Any comments?
Thanks,
- Tom
[gdb/contrib] Use temp dir for gdb-add-index in cc-with-tweaks.sh
gdb/ChangeLog:
2020-04-17 Tom de Vries <tdevries@suse.de>
* contrib/cc-with-tweaks.sh: Remove <exec>.gdb-index file handling.
Run gdb-add-index inside temp dir.
---
gdb/contrib/cc-with-tweaks.sh | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/gdb/contrib/cc-with-tweaks.sh b/gdb/contrib/cc-with-tweaks.sh
index 7cad3ac7ee..2998a9d218 100755
--- a/gdb/contrib/cc-with-tweaks.sh
+++ b/gdb/contrib/cc-with-tweaks.sh
@@ -144,13 +144,6 @@ then
exit $?
fi
-index_file="${output_file}.gdb-index"
-if [ "$want_index" = true ] && [ -f "$index_file" ]
-then
- echo "$myname: Index file $index_file exists, won't clobber." >&2
- exit 1
-fi
-
output_dir="${output_file%/*}"
[ "$output_dir" = "$output_file" ] && output_dir="."
@@ -176,12 +169,16 @@ if [ "$want_objcopy_compress" = true ]; then
fi
if [ "$want_index" = true ]; then
+ get_tmpdir
+ mv "$output_file" "$tmpdir"
+ tmpfile="$tmpdir/$(basename $output_file)"
# Filter out these messages which would stop dejagnu testcase run:
# echo "$myname: No index was created for $file" 1>&2
# echo "$myname: [Was there no debuginfo? Was there already an index?]" 1>&2
- GDB=$GDB $GDB_ADD_INDEX $index_options "$output_file" 2>&1 \
+ GDB=$GDB $GDB_ADD_INDEX $index_options "$tmpfile" 2>&1 \
| grep -v "^${GDB_ADD_INDEX##*/}: " >&2
rc=${PIPESTATUS[0]}
+ mv "$tmpfile" "$output_file"
[ $rc != 0 ] && exit $rc
fi
@@ -237,5 +234,4 @@ if [ "$want_dwp" = true ]; then
fi
fi
-rm -f "$index_file"
exit $rc
next reply other threads:[~2020-04-17 11:46 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-17 11:46 Tom de Vries [this message]
2020-04-24 9:32 ` [committed][gdb/contrib] " Tom de Vries
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200417114635.GA32265@delia \
--to=tdevries@suse.de \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox