run_dump_test warning/error regexp

This allows you to specify a run_dump_test warning that may or may not
be present using
warning: (warning_text_goes_here)?
ie. the regexp matches an empty string.
diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
index 72664d8..41d94d2 100644
--- a/binutils/testsuite/lib/binutils-common.exp
+++ b/binutils/testsuite/lib/binutils-common.exp
@@ -1567,12 +1567,16 @@
 		verbose -log "$exitstat with: <$comp_output>, no expected output"
 	    }
 
-	    if { (($want_out(source) == "") == ($comp_output == "")) \
-		     && (($cmdret == 0) == ($want_out(terminal) == 0)) \
-		     && ((($want_out(source) == "regex") \
-			      && [regexp -- $want_out(regex) $comp_output]) \
-			     || (($want_out(source) == "file") \
-				     && (![regexp_diff "tmpdir/ld.messages" "$srcdir/$subdir/$want_out(file)"]))) } {
+	    set ok 0
+	    if { ($cmdret == 0) == ($want_out(terminal) == 0) } {
+		switch $want_out(source) {
+		    regex { set ok [regexp -- $want_out(regex) $comp_output] }
+		    file  { set ok [expr ![regexp_diff tmpdir/ld.messages \
+					   $srcdir/$subdir/$want_out(file)]] }
+		    ""    { set ok [string equal $comp_output ""] }
+		}
+	    }
+	    if { $ok } {
 		# We have the expected output.
 		if { $want_out(terminal) || $dumpprogram == "" } {
 		    pass $testname