+2018-07-09 Maciej W. Rozycki <macro@mips.com>
+
+ * testsuite/lib/ld-lib.exp (run_dump_test): Call `unsupported'
+ if the target being tested has been excluded by means of one or
+ more of `target', `alltargets' and `notarget' tags. Add support
+ for `skip', `anyskip' and `noskip' tags.
+
2018-07-09 Maciej W. Rozycki <macro@mips.com>
* testsuite/lib/ld-lib.exp (run_dump_test): Move the setting of
# 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.
+# at least one. Otherwise the test will be marked unsupported.
#
# alltargets: TARGET
# 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.
+# all of them. Otherwise the test will be marked unsupported.
#
# notarget: TARGET
# 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.
+# match any of them. Otherwise the test will be marked unsupported.
+#
+# skip: TARGET
+# anyskip: TARGET
+# noskip: TARGET
+# These are exactly the same as "notarget", "alltargets" and
+# "target" respectively, except that they do nothing at all if the
+# check fails. They should only be used in groups, to construct a
+# single test which is run on all targets but with variant options
+# or expected output on some targets. (For example, see
+# gas/arm/inst.d and gas/arm/wince_inst.d.)
#
# error: REGEX
# An error with message matching REGEX must be emitted for the test
set opts(target) {}
set opts(alltargets) {}
set opts(notarget) {}
+ set opts(skip) {}
+ set opts(anyskip) {}
+ set opts(noskip) {}
set opts(objdump) {}
set opts(nm) {}
set opts(objcopy) {}
target {}
alltargets {}
notarget {}
+ skip {}
+ anyskip {}
+ noskip {}
warning {}
error {}
source {
}
# Decide early whether we should run the test for this target.
+ if { [llength $opts(noskip)] > 0 } {
+ set targmatch 0
+ foreach targ $opts(noskip) {
+ if [match_target $targ] {
+ set targmatch 1
+ break
+ }
+ }
+ if { $targmatch == 0 } {
+ return
+ }
+ }
+ foreach targ $opts(anyskip) {
+ if ![match_target $targ] {
+ return
+ }
+ }
+ foreach targ $opts(skip) {
+ if [match_target $targ] {
+ return
+ }
+ }
if { [llength $opts(target)] > 0 } {
set targmatch 0
foreach targ $opts(target) {
}
}
if { $targmatch == 0 } {
+ unsupported $testname
return
}
}
foreach targ $opts(alltargets) {
if ![match_target $targ] {
+ unsupported $testname
return
}
}
foreach targ $opts(notarget) {
if [match_target $targ] {
+ unsupported $testname
return
}
}