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.
This commit is contained in:
parent
096be756aa
commit
f48e22e3f2
|
@ -1,3 +1,10 @@
|
|||
2016-04-08 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* 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 <palves@redhat.com>
|
||||
|
||||
* gdb.server/solib-list.exp: Don't use gdb_load. Instead pass the
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
Loading…
Reference in New Issue