aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2023-03-27 13:58:10 +0200
committerTom de Vries <tdevries@suse.de>2023-03-27 13:58:10 +0200
commita653ec1f361bf70370b63a91355864d3757229aa (patch)
tree7c4f1193dceb3bf510dd1b613a4b44e89ece3550
parent8eef5130eeef49f489d9cd61c6c9695fc006ab39 (diff)
downloadbinutils-a653ec1f361bf70370b63a91355864d3757229aa.zip
binutils-a653ec1f361bf70370b63a91355864d3757229aa.tar.gz
binutils-a653ec1f361bf70370b63a91355864d3757229aa.tar.bz2
[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.
-rw-r--r--gdb/testsuite/gdb.dwarf2/gdb-index.exp36
-rw-r--r--gdb/testsuite/lib/gdb.exp7
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 8a12e35..c28f45c 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 2cf128f..39ed5ad 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]
}