* [PATCH][gdb/contrib] Use temp dir for gdb-add-index in cc-with-tweaks.sh
@ 2020-04-17 11:46 Tom de Vries
2020-04-24 9:32 ` [committed][gdb/contrib] " Tom de Vries
0 siblings, 1 reply; 2+ messages in thread
From: Tom de Vries @ 2020-04-17 11:46 UTC (permalink / raw)
To: gdb-patches
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
^ permalink raw reply [flat|nested] 2+ messages in thread
* [committed][gdb/contrib] Use temp dir for gdb-add-index in cc-with-tweaks.sh
2020-04-17 11:46 [PATCH][gdb/contrib] Use temp dir for gdb-add-index in cc-with-tweaks.sh Tom de Vries
@ 2020-04-24 9:32 ` Tom de Vries
0 siblings, 0 replies; 2+ messages in thread
From: Tom de Vries @ 2020-04-24 9:32 UTC (permalink / raw)
To: gdb-patches
On 17-04-2020 13:46, Tom de Vries wrote:
> 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?
>
Committed.
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
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-04-24 9:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-17 11:46 [PATCH][gdb/contrib] Use temp dir for gdb-add-index in cc-with-tweaks.sh Tom de Vries
2020-04-24 9:32 ` [committed][gdb/contrib] " Tom de Vries
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).