diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 2ecc1e0558..5b4cb586f5 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2016-04-08 Simon Marchi + + * 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. + 2016-04-08 Pedro Alves * gdb.server/solib-list.exp: Don't use gdb_load. Instead pass the diff --git a/gdb/testsuite/gdb.server/solib-list.exp b/gdb/testsuite/gdb.server/solib-list.exp index 9d5cdcc9d8..f60dcb8dee 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]