This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] gdb: Don't call gdb_load_shlib unless GDB is running


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c708f4d256f1f1a92310fcb323a108d95d5fd5da

commit c708f4d256f1f1a92310fcb323a108d95d5fd5da
Author: Andrew Burgess <andrew.burgess@embecosm.com>
Date:   Wed Jul 11 16:58:47 2018 +0100

    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.

Diff:
---
 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 f3d212c..671164c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2018-07-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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  <tdevries@suse.de>
 
 	* 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 ecd36d2..47a8250 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 aef580b..3e2f755 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]} {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]