From c708f4d256f1f1a92310fcb323a108d95d5fd5da Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Wed, 11 Jul 2018 16:58:47 +0100 Subject: [PATCH] gdb: Don't call gdb_load_shlib unless GDB is running The gdb_load_shlib function will, on remote targets, try to run some GDB commands. This obviously isn't going to work unless GDB is running. The gdb.trace/tspeed.exp test calls gdb_load_shlib before starting GDB. Don't do that. The failure that's triggered is actually DeJaGNU complaining that the variable $use_gdb_stub doesn't exist, this is only created when GDB is started. Something like this should trigger a failure: make check-gdb \ RUNTESTFLAGS="--target_board=remote-gdbserver-on-localhost \ gdb.trace/tspeed.exp" This commit also adds a check to gdb_load_shlib that GDB is running. The check is always performed, so this should catch cases where a GDB developer adds a use of gdb_load_shlib but doesn't test their code with a remote target. gdb/testsuite/ChangeLog: * gdb.trace/tspeed.exp: Only call gdb_load_shlib after gdb has started. * lib/gdb.exp (gdb_load_shlib): Call perror if GDB is not running. --- gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.trace/tspeed.exp | 4 +++- gdb/testsuite/lib/gdb.exp | 6 ++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index f3d212c3dda..671164cf450 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-07-28 Andrew Burgess + + * gdb.trace/tspeed.exp: Only call gdb_load_shlib after gdb has + started. + * lib/gdb.exp (gdb_load_shlib): Call perror if GDB is not running. + 2018-07-28 Tom de Vries * gdb.base/vla-optimized-out-o3-strict.exp: New file. diff --git a/gdb/testsuite/gdb.trace/tspeed.exp b/gdb/testsuite/gdb.trace/tspeed.exp index ecd36d2d9bd..47a82502a00 100644 --- a/gdb/testsuite/gdb.trace/tspeed.exp +++ b/gdb/testsuite/gdb.trace/tspeed.exp @@ -19,7 +19,6 @@ standard_testfile set executable $testfile set ipalib [get_in_proc_agent] -gdb_load_shlib $ipalib if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \ executable [concat {debug nowarnings c} shlib=$ipalib]] != "" } { @@ -41,6 +40,7 @@ proc prepare_for_trace_test {} { global executable clean_restart $executable + gdb_load_shlib $ipalib runto_main @@ -126,6 +126,8 @@ proc gdb_trace_collection_test {} { } clean_restart $executable +gdb_load_shlib $ipalib + runto_main if { ![gdb_target_supports_trace] } then { diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index aef580b04d3..3e2f755e5b7 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -4483,6 +4483,12 @@ proc gdb_remote_download {dest fromfile {tofile {}}} { # Copy the listed library to the target. proc gdb_load_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]} { -- 2.30.2