Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom de Vries <tdevries@suse.de>
To: gdb-patches@sourceware.org
Subject: [committed][gdb/contrib] Use temp dir for gdb-add-index in cc-with-tweaks.sh
Date: Fri, 24 Apr 2020 11:32:39 +0200	[thread overview]
Message-ID: <386d2008-819b-7a90-d164-5b9a4dd40d5d@suse.de> (raw)
In-Reply-To: <20200417114635.GA32265@delia>

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
> 


      reply	other threads:[~2020-04-24  9:32 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-17 11:46 [PATCH][gdb/contrib] " Tom de Vries
2020-04-24  9:32 ` Tom de Vries [this message]

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=386d2008-819b-7a90-d164-5b9a4dd40d5d@suse.de \
    --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