aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.server
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@ericsson.com>2016-04-08 18:45:29 -0400
committerSimon Marchi <simon.marchi@ericsson.com>2016-04-08 18:45:29 -0400
commitf48e22e3f2fdbe540a807b3ef2e9b5d3b08616e3 (patch)
treefd80a6c2f956cec406d085d46292b31381f7eaa7 /gdb/testsuite/gdb.server
parent096be756aa7f10f1c757e4dcc216bf0076a194ea (diff)
downloadgdb-f48e22e3f2fdbe540a807b3ef2e9b5d3b08616e3.zip
gdb-f48e22e3f2fdbe540a807b3ef2e9b5d3b08616e3.tar.gz
gdb-f48e22e3f2fdbe540a807b3ef2e9b5d3b08616e3.tar.bz2
Make gdb.server/solib-list.exp work for remote targets
There are a few small changes needed to make it work with a real remote target. - Remove the [is_remote target] check. - Remove soname setting when building the lib, it's done by default now anyway. - In the compilation of the executable, pass the shared lib using the shlib option, so that RPATH is set. - Download the program to the target using gdb_remote_download, and record the remote path. Remove loading of the program using gdb_load_shlibs, which was not really appropriate anyway. - Run the remote path through readlink (see comment in the code). - Start gdbserver with the remote path. Also, don't set executable and objfile variables, as they are unused. Tested with native, native-gdbserver, native-extended-gdbserver, and a remote gdbserver. gdb/testsuite/ChangeLog: * gdb.server/solib-list.exp: Remove is_remote check. Pass shlib= to gdb_compile. Don't link shared library with -soname. Call gdb_remote_download instead of gdb_load_shlibs. Run binary filename through "readlink -f" on the target.
Diffstat (limited to 'gdb/testsuite/gdb.server')
-rw-r--r--gdb/testsuite/gdb.server/solib-list.exp25
1 files changed, 12 insertions, 13 deletions
diff --git a/gdb/testsuite/gdb.server/solib-list.exp b/gdb/testsuite/gdb.server/solib-list.exp
index 9d5cdcc..f60dcb8 100644
--- a/gdb/testsuite/gdb.server/solib-list.exp
+++ b/gdb/testsuite/gdb.server/solib-list.exp
@@ -27,22 +27,13 @@ if {[skip_gdbserver_tests] || [skip_shlib_tests]} {
return
}
-# This test case (currently) does not support remote targets, since it
-# assumes the ELF interpreter can be found on the host system
-if [is_remote target] then {
- return
-}
-
standard_testfile solib-list-main.c
set srclibfile ${testfile}-lib.c
set binlibfile [standard_output_file ${testfile}.so]
-set executable ${testfile}
-set objfile ${binfile}.o
if { [get_compiler_info]
- || [gdb_compile_shlib "${srcdir}/${subdir}/${srclibfile}" "${binlibfile}" [list debug ldflags=-Wl,-soname,${binlibfile}]] != ""
- || [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != ""
- || [gdb_compile "${objfile} ${binlibfile}" "${binfile}" executable {}] != "" } {
+ || [gdb_compile_shlib "${srcdir}/${subdir}/${srclibfile}" "${binlibfile}" {debug}] != ""
+ || [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "shlib=${binlibfile}"] != "" } {
untested "could not compile sources"
return -1
}
@@ -57,9 +48,17 @@ foreach nonstop { 0 1 } { with_test_prefix "non-stop $nonstop" {
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
- gdb_load_shlibs ${binfile}
gdb_load_shlibs ${binlibfile}
+ set remote_binfile [gdb_remote_download target $binfile]
+
+ # When testing remote, the file path we receive may be only the file name,
+ # "solib-list". ld-linux doesn't seem to be able to find the file when
+ # passing just the file name, it wants either the absolute path or a
+ # relative path with at least one directory component. Calling readlink on
+ # the target to get the full path will make it happy.
+ set remote_binfile [lindex [remote_exec target "readlink -f $remote_binfile"] 1]
+
# Make sure we're disconnected, in case we're testing with an
# extended-remote board, therefore already connected.
gdb_test "disconnect" ".*"
@@ -76,7 +75,7 @@ foreach nonstop { 0 1 } { with_test_prefix "non-stop $nonstop" {
# argument here, instead of using gdb_load, because we don't want
# to download the interpreter to the target (it's already there)
# or to the test output directory.
- set res [gdbserver_spawn "${interp_system} ${binfile}"]
+ set res [gdbserver_spawn "${interp_system} ${remote_binfile}"]
set gdbserver_protocol [lindex $res 0]
set gdbserver_gdbport [lindex $res 1]