aboutsummaryrefslogtreecommitdiff
path: root/gdb/contrib
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2020-04-24 11:31:06 +0200
committerTom de Vries <tdevries@suse.de>2020-04-24 11:31:06 +0200
commitf80cb3b46ae19c6a7c39916916374410f5cc37bc (patch)
tree6a95aee1f661b212d9c2614759cc3d683476b397 /gdb/contrib
parent2482f30615136c7ed2082561f8e9dba48ee3ee25 (diff)
downloadgdb-f80cb3b46ae19c6a7c39916916374410f5cc37bc.zip
gdb-f80cb3b46ae19c6a7c39916916374410f5cc37bc.tar.gz
gdb-f80cb3b46ae19c6a7c39916916374410f5cc37bc.tar.bz2
[gdb/contrib] Use temp dir for gdb-add-index in cc-with-tweaks.sh
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. gdb/ChangeLog: 2020-04-24 Tom de Vries <tdevries@suse.de> * contrib/cc-with-tweaks.sh: Remove <exec>.gdb-index file handling. Run gdb-add-index inside temp dir.
Diffstat (limited to 'gdb/contrib')
-rwxr-xr-xgdb/contrib/cc-with-tweaks.sh14
1 files changed, 5 insertions, 9 deletions
diff --git a/gdb/contrib/cc-with-tweaks.sh b/gdb/contrib/cc-with-tweaks.sh
index 7cad3ac..2998a9d 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