From: Simon Marchi <simon.marchi@ericsson.com>
To: <gdb-patches@sourceware.org>
Cc: Simon Marchi <simon.marchi@ericsson.com>
Subject: [PATCH] Make gdb.server/solib-list.exp work for remote targets
Date: Fri, 08 Apr 2016 22:18:00 -0000 [thread overview]
Message-ID: <1460153899-5185-1-git-send-email-simon.marchi@ericsson.com> (raw)
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: Allow running with remote targets.
---
gdb/testsuite/gdb.server/solib-list.exp | 26 ++++++++++++--------------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/gdb/testsuite/gdb.server/solib-list.exp b/gdb/testsuite/gdb.server/solib-list.exp
index 9d5cdcc..a1fa914 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" ".*"
@@ -75,8 +74,7 @@ foreach nonstop { 0 1 } { with_test_prefix "non-stop $nonstop" {
# Note we pass ${interp_system}, the program gdbserver spawns, as
# 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]
--
2.8.1
next reply other threads:[~2016-04-08 22:18 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-08 22:18 Simon Marchi [this message]
2016-04-08 22:33 ` Pedro Alves
2016-04-08 22:43 ` Simon Marchi
2016-04-08 22:44 ` Pedro Alves
2016-04-08 22:48 ` Simon Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1460153899-5185-1-git-send-email-simon.marchi@ericsson.com \
--to=simon.marchi@ericsson.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox