From 44ee81740e186301bc8442096db49bd77117b7a5 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 22 Aug 2013 13:44:16 +0000 Subject: [PATCH] introduce gdb_remote_download and finish parallel fixes in gdb.dwarf2 This finishes making gdb.dwarf2 parallel-safe. To do this, this patch introduces a new gdb_remote_download proc, that works somewhat differently in the one specific case where it matters: for a copy to "host", if no destination was given, and the host is not actually remote, then standard_output_file is used. In parallel mode this guarantees that the resulting file will end up in a parallel-safe location. Tested on x86-64 Fedora 18. * gdb.dwarf2/dw2-basic.exp: Use gdb_remote_download. * gdb.dwarf2/dw2-compressed.exp: Use gdb_remote_download. * gdb.dwarf2/dw2-intercu.exp: Use gdb_remote_download. * gdb.dwarf2/dw2-intermix.exp: Use gdb_remote_download. * gdb.dwarf2/dw2-producer.exp: Use gdb_remote_download. * gdb.dwarf2/mac-fileno.exp: Use gdb_remote_download. * lib/gdb.exp (gdb_remote_download): New proc. --- gdb/testsuite/ChangeLog | 10 ++++++++++ gdb/testsuite/gdb.dwarf2/dw2-basic.exp | 3 ++- gdb/testsuite/gdb.dwarf2/dw2-compressed.exp | 3 ++- gdb/testsuite/gdb.dwarf2/dw2-intercu.exp | 3 ++- gdb/testsuite/gdb.dwarf2/dw2-intermix.exp | 3 ++- gdb/testsuite/gdb.dwarf2/dw2-producer.exp | 3 ++- gdb/testsuite/gdb.dwarf2/mac-fileno.exp | 3 ++- gdb/testsuite/lib/gdb.exp | 12 ++++++++++++ 8 files changed, 34 insertions(+), 6 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index f32933885d0..c826d4e3d20 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2013-08-22 Tom Tromey + + * gdb.dwarf2/dw2-basic.exp: Use gdb_remote_download. + * gdb.dwarf2/dw2-compressed.exp: Use gdb_remote_download. + * gdb.dwarf2/dw2-intercu.exp: Use gdb_remote_download. + * gdb.dwarf2/dw2-intermix.exp: Use gdb_remote_download. + * gdb.dwarf2/dw2-producer.exp: Use gdb_remote_download. + * gdb.dwarf2/mac-fileno.exp: Use gdb_remote_download. + * lib/gdb.exp (gdb_remote_download): New proc. + 2013-08-22 Tom Tromey * gdb.dwarf2/clztest.exp: Use standard_testfile. diff --git a/gdb/testsuite/gdb.dwarf2/dw2-basic.exp b/gdb/testsuite/gdb.dwarf2/dw2-basic.exp index a6f1d029ded..0a935cba6e7 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-basic.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-basic.exp @@ -29,7 +29,8 @@ if {[prepare_for_testing_full $testfile.exp \ return -1 } -set remote_dwarf_srcfile [remote_download host ${srcdir}/${subdir}/${dwarf_srcfile}] +set remote_dwarf_srcfile [gdb_remote_download host \ + ${srcdir}/${subdir}/${dwarf_srcfile}] gdb_test_no_output "set listsize 1" gdb_test "list func_cu1" "4\[ \t\]+File 1 Line 4" diff --git a/gdb/testsuite/gdb.dwarf2/dw2-compressed.exp b/gdb/testsuite/gdb.dwarf2/dw2-compressed.exp index ff3b8786ae1..7f7a17a3ac8 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-compressed.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-compressed.exp @@ -31,7 +31,8 @@ if {[prepare_for_testing_full $testfile.exp \ return -1 } -set remote_dwarf_srcfile [remote_download host ${srcdir}/${subdir}/${dwarf_srcfile}] +set remote_dwarf_srcfile [gdb_remote_download host \ + ${srcdir}/${subdir}/${dwarf_srcfile}] gdb_test_no_output "set listsize 1" gdb_test "list func_cu1" "4\[ \t\]+File 1 Line 4" diff --git a/gdb/testsuite/gdb.dwarf2/dw2-intercu.exp b/gdb/testsuite/gdb.dwarf2/dw2-intercu.exp index 1d7e852cfea..6f603c0e997 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-intercu.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-intercu.exp @@ -29,7 +29,8 @@ if {[prepare_for_testing_full $testfile.exp \ return -1 } -set remote_dwarf_srcfile [remote_download host ${srcdir}/${subdir}/${dwarf_srcfile}] +set remote_dwarf_srcfile [gdb_remote_download host \ + ${srcdir}/${subdir}/${dwarf_srcfile}] # This needs to be done first so that the CU for int2 gets expanded first. # This exercises the case where the type for this die is hashed, but we diff --git a/gdb/testsuite/gdb.dwarf2/dw2-intermix.exp b/gdb/testsuite/gdb.dwarf2/dw2-intermix.exp index f2ebef1114c..5f14fae8cd0 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-intermix.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-intermix.exp @@ -29,7 +29,8 @@ if {[prepare_for_testing_full $testfile.exp \ return -1 } -set remote_dwarf_srcfile [remote_download host ${srcdir}/${subdir}/${dwarf_srcfile}] +set remote_dwarf_srcfile [gdb_remote_download host \ + ${srcdir}/${subdir}/${dwarf_srcfile}] gdb_test_no_output "set listsize 1" gdb_test "list func_cu1" "4\[ \t\]+File 1 Line 4" diff --git a/gdb/testsuite/gdb.dwarf2/dw2-producer.exp b/gdb/testsuite/gdb.dwarf2/dw2-producer.exp index 86154ba6bac..383e25bf629 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-producer.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-producer.exp @@ -27,7 +27,8 @@ if {[prepare_for_testing_full $testfile.exp \ return -1 } -set remote_dwarf_srcfile [remote_download host ${srcdir}/${subdir}/${dwarf_srcfile}] +set remote_dwarf_srcfile [gdb_remote_download host \ + ${srcdir}/${subdir}/${dwarf_srcfile}] gdb_test_no_output "set listsize 1" gdb_test "list func_cu1" "4\[ \t\]+File 1 Line 4" diff --git a/gdb/testsuite/gdb.dwarf2/mac-fileno.exp b/gdb/testsuite/gdb.dwarf2/mac-fileno.exp index 71999eb1e97..48415fdd86c 100644 --- a/gdb/testsuite/gdb.dwarf2/mac-fileno.exp +++ b/gdb/testsuite/gdb.dwarf2/mac-fileno.exp @@ -30,7 +30,8 @@ if {[prepare_for_testing_full $testfile.exp \ return -1 } -set remote_dwarf_srcfile [remote_download host ${srcdir}/${subdir}/${dwarf_srcfile}] +set remote_dwarf_srcfile [gdb_remote_download host \ + ${srcdir}/${subdir}/${dwarf_srcfile}] gdb_test_no_output "set listsize 1" gdb_test "list func_cu1" "4\[ \t\]+File 1 Line 4" diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index a2f6a8f2ee6..52d369ca0d1 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -3263,6 +3263,18 @@ proc gdb_touch_execfile { binfile } { } } +# Like remote_download but provides a gdb-specific behavior. If DEST +# is "host", and the host is not remote, and TOFILE is not specified, +# then the [file tail] of FROMFILE is passed through +# standard_output_file to compute the destination. + +proc gdb_remote_download {dest fromfile {tofile {}}} { + if {$dest == "host" && ![is_remote host] && $tofile == ""} { + set tofile [standard_output_file [file tail $fromfile]] + } + return [remote_download $dest $fromfile $tofile] +} + # gdb_download # # Copy a file to the remote target and return its target filename. -- 2.30.2