summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gas/testsuite/ChangeLog10
-rw-r--r--gas/testsuite/gas/mips/empic.d1
-rw-r--r--gas/testsuite/gas/mips/empic.l3
-rw-r--r--gas/testsuite/lib/gas-defs.exp35
4 files changed, 45 insertions, 4 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 8cffe68b17..6299e5b8b9 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2002-04-22 Chris Demetriou <cgd@broadcom.com>
+
+ * lib/gas-defs.exp (run_dump_test): Support new attribute "stderr"
+ which is a file used to regexp_diff the assembler's pruned stderr
+ output.
+ (write_file): New helper function to write a string into a file.
+
+ * gas/mips/empic.l: New file which matches empic tests' warnings.
+ * gas/mips/empic.d: Use empic.l.
+
2002-04-19 Nick Clifton <nickc@cambridge.redhat.com>
* gas/all/gas.exp (cofftag): Do not run test for xscale-coff
diff --git a/gas/testsuite/gas/mips/empic.d b/gas/testsuite/gas/mips/empic.d
index b74da31068..e6886d0d94 100644
--- a/gas/testsuite/gas/mips/empic.d
+++ b/gas/testsuite/gas/mips/empic.d
@@ -1,6 +1,7 @@
#objdump: -rst -mmips:4000
#name: MIPS empic
#as: -membedded-pic -mips3
+#stderr: empic.l
# Check GNU-specific embedded relocs, for ELF.
diff --git a/gas/testsuite/gas/mips/empic.l b/gas/testsuite/gas/mips/empic.l
new file mode 100644
index 0000000000..e53d4f230e
--- /dev/null
+++ b/gas/testsuite/gas/mips/empic.l
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*:42: Warning: Macro instruction expanded into multiple instructions in a branch delay slot
+.*:56: Warning: Macro instruction expanded into multiple instructions in a branch delay slot
diff --git a/gas/testsuite/lib/gas-defs.exp b/gas/testsuite/lib/gas-defs.exp
index e695abf7cb..777c0e17f3 100644
--- a/gas/testsuite/lib/gas-defs.exp
+++ b/gas/testsuite/lib/gas-defs.exp
@@ -266,6 +266,7 @@ proc run_dump_test { name } {
set opts(name) {}
set opts(PROG) {}
set opts(source) {}
+ set opts(stderr) {}
foreach i $opt_array {
set opt_name [lindex $i 0]
@@ -339,10 +340,30 @@ proc run_dump_test { name } {
set comp_output [prune_warnings $comp_output]
if ![string match "" $comp_output] then {
- send_log "$comp_output\n"
- verbose "$comp_output" 3
- fail $testname
- return
+ if { $opts(stderr) == "" } then {
+ send_log "$comp_output\n"
+ verbose "$comp_output" 3
+ fail $testname
+ return
+ } else {
+ catch {write_file dump.stderr "$comp_output"} write_output
+ if ![string match "" $write_output] then {
+ send_log "error writing dump.stderr: $write_output\n"
+ verbose "error writing dump.stderr: $write_output" 3
+ send_log "$comp_output\n"
+ verbose "$comp_output" 3
+ fail $testname
+ return
+ }
+ set stderrfile $srcdir/$subdir/$opts(stderr)
+ send_log "wrote pruned stderr to dump.stderr\n"
+ verbose "wrote pruned stderr to dump.stderr" 3
+ if { [regexp_diff "dump.stderr" "$stderrfile"] } then {
+ fail $testname
+ verbose "pruned stderr is [file_contents "dump.stderr"]" 2
+ return
+ }
+ }
}
if { [which $binary] == 0 } {
@@ -564,6 +585,12 @@ proc file_contents { filename } {
return $contents
}
+proc write_file { filename contents } {
+ set file [open $filename w]
+ puts $file "$contents"
+ close $file
+}
+
proc verbose_eval { expr { level 1 } } {
global verbose
if $verbose>$level then { eval verbose "$expr" $level }
OpenPOWER on IntegriCloud