diff options
author | Tom de Vries <tdevries@suse.de> | 2022-11-15 15:24:54 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2022-11-15 15:24:54 +0100 |
commit | 4b4f2a7d2551ecb98dbb3fbfff3e3ba177916f78 (patch) | |
tree | 3c280040f85919878ab0380806bb1c7236fe61d5 | |
parent | 2a1742f31c21c852ebc105adc0dfb6b57570f552 (diff) | |
download | binutils-4b4f2a7d2551ecb98dbb3fbfff3e3ba177916f78.zip binutils-4b4f2a7d2551ecb98dbb3fbfff3e3ba177916f78.tar.gz binutils-4b4f2a7d2551ecb98dbb3fbfff3e3ba177916f78.tar.bz2 |
[gdb/testsuite] Fix gdb.base/print-file-var.exp for remote target
When running test-case gdb.base/print-file-var.exp with target board
remote-gdbserver-on-localhost (using REMOTE_TARGET_USERNAME) we run into some
failures.
Fix these by using the name of a shared lib as returned by gdb_load_shlib.
This required splitting up the gdb_load_shlib functionality, which is now
defined as:
...
proc gdb_load_shlib { file } {
set dest [gdb_download_shlib $file]
gdb_locate_shlib $file
return $dest
}
...
such that we can do gdb_download_shlib before gdb is started.
Tested on x86_64-linux.
Co-Authored-by: Ivan Tetyushkin <ivan.tetyushkin@syntacore.com>
-rw-r--r-- | gdb/testsuite/gdb.base/print-file-var.exp | 6 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 40 |
2 files changed, 29 insertions, 17 deletions
diff --git a/gdb/testsuite/gdb.base/print-file-var.exp b/gdb/testsuite/gdb.base/print-file-var.exp index 9abe87d..841eb22 100644 --- a/gdb/testsuite/gdb.base/print-file-var.exp +++ b/gdb/testsuite/gdb.base/print-file-var.exp @@ -59,8 +59,10 @@ proc test {hidden dlopen version_id_main lang} { set main_opts [list debug $lang] set link_opts [list debug shlib=${libobj1}] + set target_libobj2 [gdb_download_shlib $libobj2] + if {$dlopen} { - lappend main_opts "additional_flags=-DSHLIB_NAME=\"$libobj2\"" + lappend main_opts "additional_flags=-DSHLIB_NAME=\"$target_libobj2\"" lappend link_opts "shlib_load" } else { lappend link_opts "shlib=${libobj2}" @@ -79,7 +81,7 @@ proc test {hidden dlopen version_id_main lang} { clean_restart $executable gdb_load_shlib $libobj1 - gdb_load_shlib $libobj2 + gdb_locate_shlib $libobj2 if ![runto_main] { return -1 diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 34c7a1c..0543da3 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -5870,30 +5870,40 @@ proc gdb_remote_download {dest fromfile {tofile {}}} { } } -# gdb_load_shlib LIB... -# -# Copy the listed library to the target. +# Copy shlib FILE to the target. -proc gdb_load_shlib { file } { +proc gdb_download_shlib { file } { + return [gdb_remote_download target [shlib_target_file $file]] +} + +# Set solib-search-path to allow gdb to locate shlib FILE. + +proc gdb_locate_shlib { file } { global gdb_spawn_id if ![info exists gdb_spawn_id] { perror "gdb_load_shlib: GDB is not running" } - set dest [gdb_remote_download target [shlib_target_file $file]] - - if {[is_remote target]} { - # If the target is remote, we need to tell gdb where to find the - # libraries. - # - # We could set this even when not testing remotely, but a user - # generally won't set it unless necessary. In order to make the tests - # more like the real-life scenarios, we don't set it for local testing. - gdb_test "set solib-search-path [file dirname $file]" "" \ - "set solib-search-path for [file tail $file]" + # If the target is remote, we need to tell gdb where to find the + # libraries. + if { ![is_remote target] } { + return } + # We could set this even when not testing remotely, but a user + # generally won't set it unless necessary. In order to make the tests + # more like the real-life scenarios, we don't set it for local testing. + gdb_test "set solib-search-path [file dirname $file]" "" \ + "set solib-search-path for [file tail $file]" +} + +# Copy shlib FILE to the target and set solib-search-path to allow gdb to +# locate it. + +proc gdb_load_shlib { file } { + set dest [gdb_download_shlib $file] + gdb_locate_shlib $file return $dest } |