+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
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
# 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 \
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
**************
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
**********************
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
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
# 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"
}
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" }]
+}