aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/lib
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@mips.com>2018-04-27 15:25:20 +0100
committerMaciej W. Rozycki <macro@mips.com>2018-04-27 15:25:20 +0100
commit6d9dabbbc6e5205a969cf9643cb8040842f5e313 (patch)
tree09f41cfee44519a7eaa3bfeaa251f864384bcd38 /ld/testsuite/lib
parentaa178437393fd97f706c3f8bdf60ab2cc53a8cb4 (diff)
downloadgdb-6d9dabbbc6e5205a969cf9643cb8040842f5e313.zip
gdb-6d9dabbbc6e5205a969cf9643cb8040842f5e313.tar.gz
gdb-6d9dabbbc6e5205a969cf9643cb8040842f5e313.tar.bz2
testsuite: Support filtering targets by TCL procedure in `run_dump_test'
Implement a more complex way of selecting targets to include or exclude with `run_dump_test' cases, by extending the syntax for the `target', `not-target', `skip' and `not-skip' options (with the binutils and GAS test suites) and the `target', `alltargets' and `notarget' options (with the LD test suite) to also accept a name of a TCL procedure instead of a target triplet glob matching expression. The result, 1 or 0, of the procedure determines whether the test is to be run or not. This mimics and expands `dg-require-effective-target' from the GCC test suite. Names of TCL procedures are supplied in square brackets `[]' as with TCL procedure calls, observing that target triplet glob matching expressions do not normally start and end with matching square brackets both at a time. Arguments for procedures are allowed if required. Having a way to specify a complex condition for a `run_dump_test' case to run has the advantage of keeping it local within the test case itself where tool options related to the check might be also present, removing the need to wrap `run_dump_test' calls into an `if' block whose only reason is to do a feature check, and ultimately lets one have the test reported as UNSUPPORTED automagically if required (not currently supported by the `run_dump_test' options used for LD). binutils/ * testsuite/lib/binutils-common.exp (match_target): New procedure. * testsuite/lib/utils-lib.exp (run_dump_test): Use it in place of `istarget' for matching with `target', `not-target', `skip' and `not-skip' options. gas/ * testsuite/lib/gas-defs.exp (run_dump_test): Use `match_target' in place of `istarget' for matching with `target', `not-target', `skip' and `not-skip' options. ld/ * testsuite/lib/ld-lib.exp (run_dump_test): Use `match_target' in place of `istarget' for matching with `target', `alltargets' and `notarget' options.
Diffstat (limited to 'ld/testsuite/lib')
-rw-r--r--ld/testsuite/lib/ld-lib.exp31
1 files changed, 19 insertions, 12 deletions
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index 9a0f350..4168933 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -535,19 +535,26 @@ proc ld_link_defsyms {} {
# once.
#
# target: TARGET
-# Only run the test for TARGET. This may occur more than once; the
-# target being tested must match at least one. You may provide target
-# name "cfi" for any target supporting the CFI statements. You may
-# provide target name "shared" for any target supporting shared
-# libraries.
+# Only run the test for TARGET.
+# You may provide target name "cfi" for any target supporting the
+# CFI statements. You may provide target name "shared" for any
+# target supporting shared libraries. Otherwise TARGET is called
+# as a TCL procedure if surrounded by square brackets, or passed
+# to "istarget" if not.
+# This may occur more than once; the target being tested must match
+# at least one.
#
# alltargets: TARGET
-# Only run the test for TARGET. This may occur more than once; the
-# target being tested must match all of them.
+# Only run the test for TARGET.
+# The syntax for TARGET is as with 'target'.
+# This may occur more than once; the target being tested must match
+# all of them.
#
# notarget: TARGET
-# Do not run the test for TARGET. This may occur more than once;
-# the target being tested must not match any of them.
+# Do not run the test for TARGET.
+# The syntax for TARGET is as with 'target'.
+# This may occur more than once; the target being tested must not
+# match any of them.
#
# error: REGEX
# An error with message matching REGEX must be emitted for the test
@@ -743,7 +750,7 @@ proc run_dump_test { name {extra_options {}} } {
if { [llength $opts(target)] > 0 } {
set targmatch 0
foreach targ $opts(target) {
- if [istarget $targ] {
+ if [match_target $targ] {
set targmatch 1
break
}
@@ -753,12 +760,12 @@ proc run_dump_test { name {extra_options {}} } {
}
}
foreach targ $opts(alltargets) {
- if ![istarget $targ] {
+ if ![match_target $targ] {
return
}
}
foreach targ $opts(notarget) {
- if [istarget $targ] {
+ if [match_target $targ] {
return
}
}