On 2018-10-06 21:09, Sandra Loosemore wrote:
> Continuing through my pile of testsuite problems found while working
> on cleaning up nios2 test results....
>
> I found that the results for the gdb.trace tests were really messy on
> targets that don't support the trace features. The trouble affected
> various other embedded targets I tried, not just nios2. Specific
> problems included:
>
> * The header file trace-common.h that is used by most of the test
> programs in this directory causes multiple compilation errors (not
> just the obvious preprocessor #error) on architectures it doesn't know
> about, and the checks in the .exp files for successful compilation of
> the test case didn't distinguish between failures for missing arch
> support (should have "unsupported" status) and failures due to unknown
> causes (should be "untested"). My understanding is that adding arch
> support to trace-common.h won't do anything useful without
> implementing the underlying fast tracepoint support too.
>
> * Several test cases depend on linking with/loading a shared library
> for in-process trace without checking for shared library support on
> the target.
>
> * The signal.exp test case didn't test for signal support.
>
> * The tspeed.c test case was failing to compile due to a missing
> #include, and its .exp file did not test for runtime target support in
> gdb.
>
> Anyway.... here's an attempt to fix all this. I added an early test
> for arch support to the .exp files so that most tests report
> "unsupported" immediately when they cannot possibly work, and fixed up
> the other problems as needed.
>
> OK to check in?
>
> -Sandra
Hi Sandra,
Thanks for this, fixes to make the testsuite run more cleanly is always
appreciated.
I just did a quick smoke check, and noticed some errors when running on
x86:
Running
/home/emaisin/src/binutils-gdb/gdb/testsuite/gdb.trace/signal.exp ...
ERROR: no fileid for elxacz23q12
(elxacz23q12 is my hostname)
This looks like a check done a bit too early. Can you make sure that
these tests:
$ make check TESTS="gdb.trace/*.exp"
$ make check TESTS="gdb.trace/*.exp"
RUNTESTFLAGS="--target_board=native-gdbserver"
$ make check TESTS="gdb.trace/*.exp"
RUNTESTFLAGS="--target_board=native-extended-gdbserver"
Don't have significant differences before/after your patch (on
x86/Linux)? If you don't see any difference, maybe the problem is on my
side, then I'll look into it.
Simon
commit 3ee7bc05bf62a66507a7f674cfff72db6a33f71c
Author: Sandra Loosemore <sandra@codesourcery.com>
Date: Sat Oct 6 18:05:09 2018 -0700
Clean up gdb.trace test results on targets that don't support this feature.
2018-10-06 Sandra Loosemore <sandra@codesourcery.com>
gdb/testsuite/
* gdb.trace/actions-changed.exp: Check for arch support.
* gdb.trace/actions.exp: Likewise.
* gdb.trace/ax.exp: Likewise.
* gdb.trace/backtrace.exp: Likewise.
* gdb.trace/change-loc.exp: Likewise.
* gdb.trace/deltrace.exp: Likewise.
* gdb.trace/ftrace-lock.exp: Check for shlib and arch support.
* gdb.trace/ftrace.exp: Likewise.
* gdb.trace/infotrace.exp: Check for arch support.
* gdb.trace/mi-trace-frame-collected.exp: Likewise.
* gdb.trace/mi-tracepoint-changed.exp: Likewise.
* gdb.trace/mi-tsv-changed.exp: Likewise.
* gdb.trace/packetlen.exp: Likewise.
* gdb.trace/passc-dyn.exp: Likewise.
* gdb.trace/passcount.exp: Likewise.
* gdb.trace/pending.exp: Likewise.
* gdb.trace/range-stepping.exp: Check for shlib support.
* gdb.trace/report.exp: Check for arch support.
* gdb.trace/save-trace.exp: Likewise.
* gdb.trace/signal.exp: Check for signal and arch support.
* gdb.trace/tfind.exp: Check for arch support.
* gdb.trace/trace-break.exp: Check for arch and shlib support.
* gdb.trace/trace-common.h: Add comment.
* gdb.trace/trace-condition.exp: Check for shlib and arch support.
* gdb.trace/trace-enable-disable.exp: Likewise.
* gdb.trace/trace-mt.exp: Likewise. Remove redundant untested call.
* gdb.trace/tracecmd.exp: Check for arch support.
* gdb.trace/tspeed.c: Add missing header for sleep.
* gdb.trace/tspeed.exp: Check for shlib, target, and arch support.
* gdb.trace/tstatus.exp: Check for arch support.
* gdb.trace/tsv.exp: Likewise.
* gdb.trace/while-dyn.exp: Likewise.
* gdb.trace/while-stepping.exp: Likewise.
* lib/trace-support.exp (gdb_trace_common_supports_arch): New.
@@ -1,3 +1,40 @@
+2018-10-06 Sandra Loosemore <sandra@codesourcery.com>
+
+ * gdb.trace/actions-changed.exp: Check for arch support.
+ * gdb.trace/actions.exp: Likewise.
+ * gdb.trace/ax.exp: Likewise.
+ * gdb.trace/backtrace.exp: Likewise.
+ * gdb.trace/change-loc.exp: Likewise.
+ * gdb.trace/deltrace.exp: Likewise.
+ * gdb.trace/ftrace-lock.exp: Check for shlib and arch support.
+ * gdb.trace/ftrace.exp: Likewise.
+ * gdb.trace/infotrace.exp: Check for arch support.
+ * gdb.trace/mi-trace-frame-collected.exp: Likewise.
+ * gdb.trace/mi-tracepoint-changed.exp: Likewise.
+ * gdb.trace/mi-tsv-changed.exp: Likewise.
+ * gdb.trace/packetlen.exp: Likewise.
+ * gdb.trace/passc-dyn.exp: Likewise.
+ * gdb.trace/passcount.exp: Likewise.
+ * gdb.trace/pending.exp: Likewise.
+ * gdb.trace/range-stepping.exp: Check for shlib support.
+ * gdb.trace/report.exp: Check for arch support.
+ * gdb.trace/save-trace.exp: Likewise.
+ * gdb.trace/signal.exp: Check for signal and arch support.
+ * gdb.trace/tfind.exp: Check for arch support.
+ * gdb.trace/trace-break.exp: Check for arch and shlib support.
+ * gdb.trace/trace-common.h: Add comment.
+ * gdb.trace/trace-condition.exp: Check for shlib and arch support.
+ * gdb.trace/trace-enable-disable.exp: Likewise.
+ * gdb.trace/trace-mt.exp: Likewise. Remove redundant untested call.
+ * gdb.trace/tracecmd.exp: Check for arch support.
+ * gdb.trace/tspeed.c: Add missing header for sleep.
+ * gdb.trace/tspeed.exp: Check for shlib, target, and arch support.
+ * gdb.trace/tstatus.exp: Check for arch support.
+ * gdb.trace/tsv.exp: Likewise.
+ * gdb.trace/while-dyn.exp: Likewise.
+ * gdb.trace/while-stepping.exp: Likewise.
+ * lib/trace-support.exp (gdb_trace_common_supports_arch): New.
+
2018-10-06 Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.base/info-proc.exp: Update string expected from "help info
@@ -17,6 +17,11 @@ load_lib trace-support.exp
standard_testfile
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
return -1
}
@@ -22,6 +22,10 @@ gdb_exit
gdb_start
standard_testfile
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -24,6 +24,12 @@ load_lib "trace-support.exp"
gdb_exit
gdb_start
standard_testfile actions.c
+
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -21,6 +21,11 @@ standard_testfile actions.c
set executable $testfile
set expfile $testfile.exp
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if [prepare_for_testing "failed to prepare" $executable $srcfile \
[list debug nowarnings]] {
return -1
@@ -18,6 +18,11 @@ if {[skip_shlib_tests]} {
return 0
}
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
standard_testfile
set libfile1 "change-loc-1"
set libfile2 "change-loc-2"
@@ -22,6 +22,12 @@ gdb_exit
gdb_start
standard_testfile actions.c
+
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -14,6 +14,10 @@
load_lib "trace-support.exp"
+if {[skip_shlib_tests]} {
+ return 0
+}
+
standard_testfile
set executable $testfile
set expfile $testfile.exp
@@ -29,6 +33,10 @@ set options [list debug [gdb_target_symbol_prefix_flags] \
additional_flags=-DNUM_THREADS=$NUM_THREADS]
# Check that the target supports trace.
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
untested "failed to compile"
return -1
@@ -14,6 +14,10 @@
load_lib "trace-support.exp"
+if {[skip_shlib_tests]} {
+ return 0
+}
+
standard_testfile
set executable $testfile
set expfile $testfile.exp
@@ -21,6 +25,11 @@ set expfile $testfile.exp
# Some targets have leading underscores on assembly symbols.
set additional_flags [gdb_target_symbol_prefix_flags]
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if [prepare_for_testing "failed to prepare" $executable $srcfile \
[list debug $additional_flags]] {
return -1
@@ -22,6 +22,12 @@ gdb_exit
gdb_start
standard_testfile actions.c
+
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -17,6 +17,11 @@ load_lib trace-support.exp
standard_testfile actions.c
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug}] } {
return -1
}
@@ -18,6 +18,10 @@ load_lib trace-support.exp
if {[skip_shlib_tests]} {
return 0
}
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
standard_testfile pending.c
set libfile1 "pendshr1"
@@ -17,6 +17,12 @@ load_lib trace-support.exp
load_lib mi-support.exp
standard_testfile actions.c
+
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -22,6 +22,10 @@ gdb_exit
gdb_start
standard_testfile actions.c
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -21,6 +21,10 @@ load_lib "trace-support.exp"
gdb_exit
gdb_start
standard_testfile actions.c
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -21,6 +21,10 @@ load_lib "trace-support.exp"
gdb_exit
gdb_start
standard_testfile actions.c
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -18,6 +18,11 @@ if {[skip_shlib_tests]} {
return 0
}
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
standard_testfile
set libfile1 "pendshr1"
set libfile2 "pendshr2"
@@ -66,6 +66,10 @@ proc range_stepping_with_tracepoint { type } {
range_stepping_with_tracepoint "trace"
+if {[skip_shlib_tests]} {
+ return 0
+}
+
set libipa [get_in_proc_agent]
set remote_libipa [gdb_load_shlib $libipa]
@@ -22,6 +22,10 @@ gdb_exit
gdb_start
standard_testfile actions.c
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -22,6 +22,10 @@ gdb_exit
gdb_start
standard_testfile actions.c
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -28,19 +28,24 @@
load_lib "trace-support.exp"
+if [target_info exists gdb,nosignals] {
+ verbose "Skipping signal.exp because of nosignals."
+ return -1
+}
+
standard_testfile
-if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
+if ![gdb_target_supports_trace] {
+ unsupported "target does not support trace"
return -1
}
-if ![runto_main] {
- fail "can't run to main to check for trace support"
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
return -1
}
-if ![gdb_target_supports_trace] {
- unsupported "target does not support trace"
+if ![runto_main] {
+ fail "can't run to main to check for trace support"
return -1
}
@@ -23,6 +23,11 @@ gdb_start
standard_testfile actions.c
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if { [gdb_compile "$srcdir/$subdir/$srcfile" "$binfile" \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -21,6 +21,11 @@ set expfile $testfile.exp
# Some targets have leading underscores on assembly symbols.
set additional_flags [gdb_target_symbol_prefix_flags]
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if [prepare_for_testing "failed to prepare" $executable $srcfile \
[list debug $additional_flags]] {
return -1
@@ -347,6 +352,10 @@ foreach at_first_loc { "1" "0" } {
break_trace_same_addr_6 "trace" "enable" "trace" "disable"
break_trace_same_addr_6 "trace" "disable" "trace" "enable"
+if {[skip_shlib_tests]} {
+ return 0
+}
+
set libipa [get_in_proc_agent]
set remote_libipa [gdb_load_shlib $libipa]
@@ -25,6 +25,9 @@
a fast tracepoint jump. The parameter is the label where we'll set
tracepoints and breakpoints. */
+/* Please keep gdb_trace_common_supports_arch in lib/trace-support.exp
+ in sync when adding new targets to this file. */
+
#if (defined __x86_64__ || defined __i386__)
static void
@@ -14,6 +14,10 @@
load_lib "trace-support.exp"
+if {[skip_shlib_tests]} {
+ return 0
+}
+
standard_testfile
set executable $testfile
set expfile $testfile.exp
@@ -21,6 +25,11 @@ set expfile $testfile.exp
# Some targets have leading underscores on assembly symbols.
set additional_flags [gdb_target_symbol_prefix_flags]
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if [prepare_for_testing "failed to prepare" $executable $srcfile \
[list debug $additional_flags]] {
return -1
@@ -14,6 +14,10 @@
load_lib "trace-support.exp"
+if {[skip_shlib_tests]} {
+ return 0
+}
+
standard_testfile
set executable $testfile
set expfile $testfile.exp
@@ -22,6 +26,10 @@ set expfile $testfile.exp
set options [list debug [gdb_target_symbol_prefix_flags]]
# Check that the target supports trace.
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
untested "failed to compile"
return -1
@@ -21,9 +21,14 @@ set expfile $testfile.exp
# Some targets have leading underscores on assembly symbols.
set additional_flags [gdb_target_symbol_prefix_flags]
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if { [gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile \
executable [list debug $additional_flags] ] != "" } {
- untested "failed to compile"
+ # gdb_compile_pthreads provides an appropriate unsupported message.
return -1
}
@@ -106,6 +111,10 @@ foreach break_always_inserted { "on" "off" } {
step_over_tracepoint "trace"
+if {[skip_shlib_tests]} {
+ return 0
+}
+
set libipa [get_in_proc_agent]
set remote_libipa [gdb_load_shlib $libipa]
@@ -21,6 +21,10 @@ load_lib "trace-support.exp"
gdb_exit
gdb_start
standard_testfile actions.c
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -28,6 +28,7 @@
#include <time.h>
#include <sys/time.h>
#include <sys/resource.h>
+#include <unistd.h>
int trace_speed_test (void);
@@ -15,9 +15,32 @@
load_lib "trace-support.exp"
+if {[skip_shlib_tests]} {
+ return 0
+}
+
+if ![gdb_target_supports_trace] {
+ unsupported "target does not support trace"
+ return -1
+}
+
standard_testfile
set executable $testfile
+# Check that the target supports trace.
+if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
+ untested "failed to compile"
+ return -1
+}
+
+clean_restart ${testfile}
+
+if ![runto_main] {
+ fail "can't run to main to check for trace support"
+ return -1
+}
+
+# Compile the test case with the in-process agent library.
set ipalib [get_in_proc_agent]
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
@@ -18,6 +18,11 @@ standard_testfile actions.c
set executable $testfile
set expfile tstatus.exp
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
+
if [prepare_for_testing "failed to prepare" $executable $srcfile \
[list debug]] {
return -1
@@ -19,6 +19,10 @@ load_lib "trace-support.exp"
gdb_exit
gdb_start
standard_testfile actions.c
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -23,6 +23,10 @@ gdb_start
standard_testfile actions.c
set executable $testfile
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -22,6 +22,10 @@ gdb_exit
gdb_start
standard_testfile actions.c
+if ![gdb_trace_common_supports_arch] {
+ unsupported "no trace-common.h support for arch"
+ return -1
+}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
@@ -51,6 +51,25 @@ if [is_amd64_regs_target] {
}
#
+# Procedure: gdb_trace_common_supports_arch
+# Returns true if gdb.trace/trace-common.h knows about this target.
+# Allows skipping tests that depend on being able to include this file.
+# Please keep this in sync with the supported targets in the header.
+#
+
+proc gdb_trace_common_supports_arch { } {
+ if { [istarget "x86_64*-*-*"]
+ || [istarget "i386*-*-*"]
+ || [istarget "aarch64*-*-*"]
+ || [istarget "powerpc*-*-*"]
+ || [istarget "s390*-*-*"] } {
+ return 1
+ } else {
+ return 0
+ }
+}
+
+#
# Procedure: gdb_target_supports_trace
# Returns true if GDB is connected to a target that supports tracing.
# Allows tests to abort early if not running on a trace-aware target.