aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/ChangeLog9
-rw-r--r--gdb/testsuite/Makefile.in6
-rw-r--r--gdb/testsuite/README19
-rw-r--r--gdb/testsuite/gdb.trace/tspeed.exp5
-rw-r--r--gdb/testsuite/lib/gdb.exp7
-rw-r--r--gdb/testsuite/lib/gdbserver-support.exp38
6 files changed, 82 insertions, 2 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 580c15e..ce3ebbc 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2019-04-25 Alan Hayward <alan.hayward@arm.com>
+
+ * Makefile.in: Pass through GDBSERVER_DEBUG.
+ * README (Testsuite Parameters): Add GDBSERVER_DEBUG.
+ (gdbserver,debug): Add board setting.
+ * gdb.trace/tspeed.exp: Skip when debugging.
+ * lib/gdb.exp (gdbserver_debug_enabled): New procedure.
+ * lib/gdbserver-support.exp: Likewise
+
2019-04-24 Tom Tromey <tromey@adacore.com>
* lib/gdb.exp (gdb_compile): Don't add -fno-stack-protector for
diff --git a/gdb/testsuite/Makefile.in b/gdb/testsuite/Makefile.in
index 6ee4fc3..8d46fe1 100644
--- a/gdb/testsuite/Makefile.in
+++ b/gdb/testsuite/Makefile.in
@@ -52,6 +52,8 @@ RUNTESTFLAGS =
FORCE_PARALLEL =
+GDBSERVER_DEBUG =
+
# Default number of iterations that we will use to run the testsuite
# if the user does not specify the RACY_ITER environment variable
# (e.g., when the user calls the make rule directly from the command
@@ -162,13 +164,15 @@ check-read1:
# status.
TIMESTAMP = $(if $(TS),| $(srcdir)/print-ts.py $(if $(TS_FORMAT),$(TS_FORMAT),),)
+gdbserver_debug = $(if $(GDBSERVER_DEBUG),GDBSERVER_DEBUG=$(GDBSERVER_DEBUG) ; export GDBSERVER_DEBUG ;,)
+
# All the hair to invoke dejagnu. A given invocation can just append
# $(RUNTESTFLAGS)
DO_RUNTEST = \
rootme=`pwd`; export rootme; \
srcdir=${srcdir} ; export srcdir ; \
EXPECT=${EXPECT} ; export EXPECT ; \
- EXEEXT=${EXEEXT} ; export EXEEXT ; \
+ EXEEXT=${EXEEXT} ; export EXEEXT ; $(gdbserver_debug) \
$(RPATH_ENVVAR)=$$rootme/../../expect:$$rootme/../../libstdc++:$$rootme/../../tk/unix:$$rootme/../../tcl/unix:$$rootme/../../bfd:$$rootme/../../opcodes:$$$(RPATH_ENVVAR); \
export $(RPATH_ENVVAR); \
if [ -f $${rootme}/../../expect/expect ] ; then \
diff --git a/gdb/testsuite/README b/gdb/testsuite/README
index db90ea4..99d5745 100644
--- a/gdb/testsuite/README
+++ b/gdb/testsuite/README
@@ -293,6 +293,17 @@ can do:
make check TS=1 TS_FORMAT='[%b %H:%S]'
+GDBSERVER_DEBUG
+
+When set gdbserver debug is sent to the file gdbserver.debug in the test
+output directory. Valid values are:
+ debug - turn on gdbserver debug.
+ remote - turn on gdbserver remote debug.
+ all - turn on all the above debug options.
+For example, to turn on all gdbserver debugging, you can do:
+
+ make check GDBSERVER_DEBUG=all
+
Race detection
**************
@@ -497,6 +508,14 @@ gdb,nopie_flag
The flag required to force the compiler to produce non-position-independent
executables.
+gdbserver,debug
+
+ When set gdbserver debug is sent to the file gdbserver.debug in the test
+ output directory. Valid values are:
+ "debug" - turn on gdbserver debug.
+ "remote" - turn on gdbserver remote debug.
+ "all" - turn on all the above debug options.
+
Testsuite Organization
**********************
diff --git a/gdb/testsuite/gdb.trace/tspeed.exp b/gdb/testsuite/gdb.trace/tspeed.exp
index 6fd812e..9afec64 100644
--- a/gdb/testsuite/gdb.trace/tspeed.exp
+++ b/gdb/testsuite/gdb.trace/tspeed.exp
@@ -19,6 +19,11 @@ if {[skip_shlib_tests]} {
return 0
}
+# Do not run if gdbsever debug is enabled - the output file is many Gb.
+if [gdbserver_debug_enabled] {
+ return 0
+}
+
standard_testfile
set executable $testfile
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index eaf7fc4..f0f4334 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -6362,5 +6362,12 @@ proc gdb_supported_languages {} {
opencl rust minimal ada]
}
+# Check if debugging is enabled for gdbserver.
+
+proc gdbserver_debug_enabled { } {
+ # Always disabled for GDB only setups.
+ return 0
+}
+
# Always load compatibility stuff.
load_lib future.exp
diff --git a/gdb/testsuite/lib/gdbserver-support.exp b/gdb/testsuite/lib/gdbserver-support.exp
index 2cb64f7..164a1d1 100644
--- a/gdb/testsuite/lib/gdbserver-support.exp
+++ b/gdb/testsuite/lib/gdbserver-support.exp
@@ -283,12 +283,26 @@ proc gdbserver_start { options arguments } {
# If gdbserver_reconnect will be called $gdbserver_reconnect_p must be
# set to true already during gdbserver_start.
global gdbserver_reconnect_p
+ global srcdir
+ global subdir
if {![info exists gdbserver_reconnect_p] || !$gdbserver_reconnect_p} {
# GDB client could accidentally connect to a stale server.
- # append gdbserver_command " --debug --once"
append gdbserver_command " --once"
}
+ # Enable debug if set.
+ if [gdbserver_debug_enabled] {
+ global gdbserverdebug
+ set debugfile [standard_output_file gdbserver.debug]
+ if { $gdbserverdebug == "debug" } {
+ append gdbserver_command " --debug --debug-file=$debugfile"
+ } elseif { $gdbserverdebug == "remote" } {
+ append gdbserver_command " --remote-debug --debug-file=$debugfile"
+ } elseif { $gdbserverdebug == "all" } {
+ append gdbserver_command " --debug --remote-debug --debug-file=$debugfile"
+ }
+ }
+
if { $options != "" } {
append gdbserver_command " $options"
}
@@ -561,3 +575,25 @@ proc mi_gdbserver_start_multi { } {
return [mi_gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport]
}
+
+# Check if debugging is enabled for gdbserver.
+
+proc gdbserver_debug_enabled { } {
+ global gdbserverdebug
+
+ # If not already read, get the debug setting from environment or board setting.
+ if ![info exists gdbserverdebug] {
+ global env
+ if [info exists env(GDBSERVER_DEBUG)] {
+ set gdbserverdebug $env(GDBSERVER_DEBUG)
+ } elseif [target_info exists gdbserver,debug] {
+ set gdbserverdebug [target_info gdbserver,debug]
+ } else {
+ return 0
+ }
+ }
+
+ # Only return success on valid values.
+ return [expr { $gdbserverdebug == "debug" || $gdbserverdebug == "remote"
+ || $gdbserverdebug == "all" }]
+}