2002-04-22 Chris Demetriou <cgd@broadcom.com>
authorChris Demetriou <cgd@google.com>
Mon, 22 Apr 2002 21:14:43 +0000 (21:14 +0000)
committerChris Demetriou <cgd@google.com>
Mon, 22 Apr 2002 21:14:43 +0000 (21:14 +0000)
        * 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.

gas/testsuite/ChangeLog
gas/testsuite/gas/mips/empic.d
gas/testsuite/gas/mips/empic.l [new file with mode: 0644]
gas/testsuite/lib/gas-defs.exp

index 8cffe68..6299e5b 100644 (file)
@@ -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
index b74da31..e6886d0 100644 (file)
@@ -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 (file)
index 0000000..e53d4f2
--- /dev/null
@@ -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
index e695abf..777c0e1 100644 (file)
@@ -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 }