public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] [gdb/testsuite] Fix gdb.dwarf2/gdb-index.exp on remote host
@ 2023-03-27 11:58 Tom de Vries
  0 siblings, 0 replies; only message in thread
From: Tom de Vries @ 2023-03-27 11:58 UTC (permalink / raw)
  To: gdb-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a653ec1f361bf70370b63a91355864d3757229aa

commit a653ec1f361bf70370b63a91355864d3757229aa
Author: Tom de Vries <tdevries@suse.de>
Date:   Mon Mar 27 13:58:10 2023 +0200

    [gdb/testsuite] Fix gdb.dwarf2/gdb-index.exp on remote host
    
    Fix test-case gdb.dwarf2/gdb-index.exp on remote host using
    gdb_remote_download and host_standard_output_file.
    
    Also declare the test-case unsupported with readnow.
    
    Tested on x86_64-linux.

Diff:
---
 gdb/testsuite/gdb.dwarf2/gdb-index.exp | 36 ++++++++++++++++++++++++----------
 gdb/testsuite/lib/gdb.exp              |  7 ++++++-
 2 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/gdb/testsuite/gdb.dwarf2/gdb-index.exp b/gdb/testsuite/gdb.dwarf2/gdb-index.exp
index 8a12e35f353..c28f45c5e5c 100644
--- a/gdb/testsuite/gdb.dwarf2/gdb-index.exp
+++ b/gdb/testsuite/gdb.dwarf2/gdb-index.exp
@@ -18,6 +18,9 @@ load_lib dwarf.exp
 # This test can only be run on targets which support DWARF-2.
 require dwarf2_support
 
+# Can't save an index with readnow.
+require !readnow
+
 standard_testfile main.c
 
 if { [prepare_for_testing "failed to prepare" "${testfile}" \
@@ -32,16 +35,17 @@ if { [prepare_for_testing "failed to prepare" "${testfile}" \
 # Use local prefix to prevent overriding add_gdb_index from lib/gdb.exp.
 
 proc local_add_gdb_index { program } {
-    set index_file ${program}.gdb-index
-    set dir [file dirname ${program}]
     set filename [file tail ${program}]
-    set dwz $dir/.tmp/${filename}.dwz
-    set dwz_index_file $program.dwz.gdb-index
+    set host_program [gdb_remote_download host $program]
+    set index_file [host_standard_output_file $filename.gdb-index]
+    set tmpdir [host_standard_output_file .tmp]
+    set dwz $tmpdir/$filename.dwz
+    set dwz_index_file [host_standard_output_file $filename.dwz.gdb-index]
     verbose -log "index_file: ${index_file}"
     remote_file host delete ${index_file}
     remote_file host delete ${dwz_index_file}
     gdb_test_no_output "save gdb-index [file dirname ${index_file}]" \
-	"save gdb-index for file [file tail ${program}]"
+	"save gdb-index for file $filename"
 
     # No point in continuing if generating the index failed.
     # N.B.: There are times when gdb won't create an index, and it's not a
@@ -55,8 +59,16 @@ proc local_add_gdb_index { program } {
 	return ""
     }
 
-    set program_with_index ${program}.with-index
-    if {[run_on_host "objcopy" [gdb_find_objcopy] "--remove-section .gdb_index --add-section .gdb_index=$index_file --set-section-flags .gdb_index=readonly ${program} ${program_with_index}"]} {
+    set host_program_with_index $host_program.with-index
+    set program_with_index $program.with-index
+    if {[run_on_host "objcopy" [gdb_find_objcopy] \
+	     [join \
+		  [list \
+		       "--remove-section .gdb_index" \
+		       "--add-section .gdb_index=$index_file" \
+		       "--set-section-flags .gdb_index=readonly" \
+		       "$host_program" \
+		       "$host_program_with_index"]]]} {
 	return ""
     }
 
@@ -73,7 +85,9 @@ proc local_add_gdb_index { program } {
 	}
     }
 
-    return ${program_with_index}
+    return [list \
+		[remote_upload host $host_program_with_index $program_with_index] \
+		$host_program_with_index]
 }
 
 # Build a copy of the program with an index (.gdb_index/.debug_names).
@@ -84,12 +98,14 @@ set test "check if index present"
 gdb_test_multiple "mt print objfiles ${testfile}" $test {
     -re "gdb_index.*${gdb_prompt} $" {
 	set binfile_with_index $binfile
+	set host_binfile_with_index [gdb_remote_download host $binfile]
     }
     -re "debug_names.*${gdb_prompt} $" {
 	set binfile_with_index $binfile
+	set host_binfile_with_index [gdb_remote_download host $binfile]
     }
     -re "(Psymtabs|Cooked).*${gdb_prompt} $" {
-	set binfile_with_index [local_add_gdb_index $binfile]
+	lassign [local_add_gdb_index $binfile] binfile_with_index host_binfile_with_index
 	if { ${binfile_with_index} == "" } {
 	    return -1
 	}
@@ -114,7 +130,7 @@ gdb_test "mt print objfiles ${testfile}" \
 # Is touch portable enough?
 # First make sure enough time has passed, file mtime resolution is seconds.
 gdb_test_no_output "shell sleep 1"
-if {[run_on_host "touch binary" touch ${binfile_with_index}]} {
+if {[run_on_host "touch binary" touch $host_binfile_with_index]} {
     return -1
 }
 
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 2cf128fdd68..39ed5ad761b 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -6412,7 +6412,12 @@ proc standard_output_file {basename} {
 
 proc host_standard_output_file { basename } {
     if { [is_remote host] } {
-	return $basename
+	set remotedir [board_info host remotedir]
+	if { $remotedir == "" } {
+	    return $basename
+	} else {
+	    return [join [list $remotedir $basename] "/"]
+	}
     } else {
 	return [standard_output_file $basename]
     }

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-03-27 11:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-27 11:58 [binutils-gdb] [gdb/testsuite] Fix gdb.dwarf2/gdb-index.exp on remote host 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).