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.
+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.
 
 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]] != "" } {
     global executable
 
     clean_restart $executable
+    gdb_load_shlib $ipalib
 
     runto_main
 
 }
 
 clean_restart $executable
+gdb_load_shlib $ipalib
+
 runto_main
 
 if { ![gdb_target_supports_trace] } then {
 
 # 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]} {