aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2022-12-13 15:00:07 -0700
committerTom Tromey <tom@tromey.com>2023-01-13 13:18:54 -0700
commit793862d2f427bdc7b80da5bb917acccb06c4ba61 (patch)
tree615d1059ec9703698e76b4ca3127e21539130946 /gdb/testsuite
parent15bdcf4ca1514b89c242eccd3a74599bdd00e3e0 (diff)
downloadfsf-binutils-gdb-793862d2f427bdc7b80da5bb917acccb06c4ba61.zip
fsf-binutils-gdb-793862d2f427bdc7b80da5bb917acccb06c4ba61.tar.gz
fsf-binutils-gdb-793862d2f427bdc7b80da5bb917acccb06c4ba61.tar.bz2
Change 'require' to accept a list of predicates
This changes 'require' to accept a list of simple predicates. For now, each predicate is just the name of a proc, optionally prefixed with "!" to indicate that the result should be inverted. It's possible to make this fancier, but so far I haven't done so. One idea I had is to allow a predicate to have associated text to display on failure. Another is to convert the predicates that need a running gdb (e.g., skip_python_tests) to start their own gdb, and then 'require' could enforce the rule that gdb not be running when it is called.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r--gdb/testsuite/gdb.base/valgrind-bt.exp2
-rw-r--r--gdb/testsuite/gdb.base/valgrind-disp-step.exp2
-rw-r--r--gdb/testsuite/gdb.base/valgrind-infcall-2.exp2
-rw-r--r--gdb/testsuite/gdb.base/valgrind-infcall.exp2
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-lines.exp2
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp2
-rw-r--r--gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp2
-rw-r--r--gdb/testsuite/gdb.mi/mi-async.exp2
-rw-r--r--gdb/testsuite/gdb.reverse/insn-reverse.exp2
-rw-r--r--gdb/testsuite/gdb.tui/tui-missing-src.exp2
-rw-r--r--gdb/testsuite/lib/gdb.exp51
11 files changed, 30 insertions, 41 deletions
diff --git a/gdb/testsuite/gdb.base/valgrind-bt.exp b/gdb/testsuite/gdb.base/valgrind-bt.exp
index d139d37..049b42f 100644
--- a/gdb/testsuite/gdb.base/valgrind-bt.exp
+++ b/gdb/testsuite/gdb.base/valgrind-bt.exp
@@ -14,7 +14,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Valgrind gdbserver requires gdb with xml support.
-require gdb_skip_xml_test 0
+require !gdb_skip_xml_test
load_lib valgrind.exp
diff --git a/gdb/testsuite/gdb.base/valgrind-disp-step.exp b/gdb/testsuite/gdb.base/valgrind-disp-step.exp
index 99ba29b..05d0d8d 100644
--- a/gdb/testsuite/gdb.base/valgrind-disp-step.exp
+++ b/gdb/testsuite/gdb.base/valgrind-disp-step.exp
@@ -19,7 +19,7 @@
# automatically instead of getting stuck or crashing.
# Valgrind gdbserver requires gdb with xml support.
-require gdb_skip_xml_test 0
+require !gdb_skip_xml_test
load_lib valgrind.exp
diff --git a/gdb/testsuite/gdb.base/valgrind-infcall-2.exp b/gdb/testsuite/gdb.base/valgrind-infcall-2.exp
index c85abd8..13d2900 100644
--- a/gdb/testsuite/gdb.base/valgrind-infcall-2.exp
+++ b/gdb/testsuite/gdb.base/valgrind-infcall-2.exp
@@ -30,7 +30,7 @@
# Aborted (core dumped)
# Valgrind gdbserver requires gdb with xml support.
-require gdb_skip_xml_test 0
+require !gdb_skip_xml_test
load_lib valgrind.exp
diff --git a/gdb/testsuite/gdb.base/valgrind-infcall.exp b/gdb/testsuite/gdb.base/valgrind-infcall.exp
index 3f7f81d..48b3bb2 100644
--- a/gdb/testsuite/gdb.base/valgrind-infcall.exp
+++ b/gdb/testsuite/gdb.base/valgrind-infcall.exp
@@ -14,7 +14,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Valgrind gdbserver requires gdb with xml support.
-require gdb_skip_xml_test 0
+require !gdb_skip_xml_test
load_lib valgrind.exp
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-lines.exp b/gdb/testsuite/gdb.dwarf2/dw2-lines.exp
index 198d752..658d1f6 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-lines.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-lines.exp
@@ -18,7 +18,7 @@
load_lib dwarf.exp
# This test can only be run on targets which support DWARF-2 and use gas.
-require dwarf2_support 1
+require dwarf2_support
standard_testfile .c
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp b/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp
index 6ae2035..d870275 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes-lookup.exp
@@ -40,7 +40,7 @@
load_lib dwarf.exp
# This test can only be run on targets which support DWARF-2 and use gas.
-require dwarf2_support 1
+require dwarf2_support
standard_testfile main.c .S
diff --git a/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp b/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp
index fbce42b..0915ee4 100644
--- a/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp
+++ b/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp
@@ -26,7 +26,7 @@
# directives.
# Check if starti command is supported.
-require use_gdb_stub 0
+require !use_gdb_stub
load_lib dwarf.exp
diff --git a/gdb/testsuite/gdb.mi/mi-async.exp b/gdb/testsuite/gdb.mi/mi-async.exp
index 0b83499..880db6d 100644
--- a/gdb/testsuite/gdb.mi/mi-async.exp
+++ b/gdb/testsuite/gdb.mi/mi-async.exp
@@ -26,7 +26,7 @@ if {!([isnative] && [istarget *-linux*])} {
}
# Check if start command is supported.
-require use_gdb_stub 0
+require !use_gdb_stub
# The plan is for async mode to become the default but toggle for now.
set saved_gdbflags $GDBFLAGS
diff --git a/gdb/testsuite/gdb.reverse/insn-reverse.exp b/gdb/testsuite/gdb.reverse/insn-reverse.exp
index 9cefea9..a732206 100644
--- a/gdb/testsuite/gdb.reverse/insn-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/insn-reverse.exp
@@ -18,7 +18,7 @@ if ![supports_reverse] {
}
# Check if start command is supported.
-require use_gdb_stub 0
+require !use_gdb_stub
standard_testfile
diff --git a/gdb/testsuite/gdb.tui/tui-missing-src.exp b/gdb/testsuite/gdb.tui/tui-missing-src.exp
index b373aad..7dd8324 100644
--- a/gdb/testsuite/gdb.tui/tui-missing-src.exp
+++ b/gdb/testsuite/gdb.tui/tui-missing-src.exp
@@ -26,7 +26,7 @@
# 7. Going back to main() shall result in no contents again.
# Check if start command is supported.
-require use_gdb_stub 0
+require !use_gdb_stub
tuiterm_env
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 39dfa67..88dfdaf 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -9061,41 +9061,30 @@ gdb_caching_proc have_avx {
return $status
}
-# Called as either:
-# - require EXPR VAL
-# - require EXPR OP VAL
-# In the first case, OP is ==.
-#
-# Require EXPR OP VAL, where EXPR is evaluated in caller context. If not,
-# return in the caller's context.
-
-proc require { fn arg1 {arg2 ""} } {
- if { $arg2 == "" } {
- set op ==
- set val $arg1
- } else {
- set op $arg1
- set val $arg2
- }
- set res [uplevel 1 $fn]
- if { [expr $res $op $val] } {
- return
- }
+# Called as
+# - require ARG...
+#
+# ARG can either be a name, or of the form !NAME.
+#
+# Each name is a proc to evaluate in the caller's context. It returns
+# a boolean, and a "!" means to invert the result. If this is
+# nonzero, all is well. If it is zero, an "untested" is emitted and
+# this proc causes the caller to return.
- switch "$fn $op $val" {
- "gdb_skip_xml_test == 0" { set msg "missing xml support" }
- "ensure_gdb_index $binfile != -1" -
- "ensure_gdb_index $binfile -dwarf-5 != -1" {
- set msg "Couldn't ensure index in binfile"
+proc require { args } {
+ foreach arg $args {
+ if {[string index $arg 0] == "!"} {
+ set ok 0
+ set fn [string range $arg 1 end]
+ } else {
+ set ok 1
+ set fn $arg
}
- "use_gdb_stub == 0" {
- set msg "Remote stub used"
+ if {$ok != !![uplevel 1 $fn]} {
+ untested "require failed: $arg"
+ return -code return 0
}
- default { set msg "$fn != $val" }
}
-
- untested $msg
- return -code return 0
}
# Wait up to ::TIMEOUT seconds for file PATH to exist on the target system.