diff --git a/gdb/testsuite/gdb.base/print-file-var.exp b/gdb/testsuite/gdb.base/print-file-var.exp index 9abe87d7758..841eb22d957 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 34c7a1cb50f..0543da31da6 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 }