ChangeLog rotation
[deliverable/binutils-gdb.git] / binutils / testsuite / lib / binutils-common.exp
index e01b3fb48462cbe6b5bd06ae8860a1e1a8c8e5e6..f2efa236518604d2c737684ae46947df682414c0 100644 (file)
@@ -95,14 +95,17 @@ proc is_aout_format {} {
 # True if the object format is known to be PE COFF.
 #
 proc is_pecoff_format {} {
-    if { ![istarget *-*-mingw*]
-        && ![istarget *-*-cygwin*]
-        && ![istarget *-*-cegcc*]
-        && ![istarget *-*-pe*] } {
-       return 0
+    if { [istarget *-*-beospe*]
+        || [istarget *-*-cegcc*]
+        || [istarget *-*-cygwin*]
+        || [istarget *-*-interix*]
+        || [istarget *-*-mingw*]
+        || [istarget *-*-netbsdpe*]
+        || [istarget *-*-pe*]
+        || [istarget *-*-winnt*] } {
+       return 1
     }
-
-    return 1
+    return 0
 }
 
 proc is_som_format {} {
@@ -183,9 +186,9 @@ proc match_target { target } {
 # and Visium targets set OSABI to ELFOSABI_STANDALONE and cannot
 # support STB_GNU_UNIQUE.  Likewise non-EABI ARM targets set OSABI to
 # ELFOSABI_ARM, and TI C6X targets to ELFOSABI_C6000_*.  Finally
-# rather than `bfd_elf_final_link' AM33/2.0, D30V, DLX, and
-# picoJava targets use `_bfd_generic_final_link', which does not
-# support STB_GNU_UNIQUE symbol binding causing assertion failures.
+# rather than `bfd_elf_final_link' a number of targets use
+# `_bfd_generic_final_link', which does not support STB_GNU_UNIQUE
+# symbol binding causing assertion failures.
 #
 proc supports_gnu_unique {} {
     if { [istarget *-*-gnu*]
@@ -212,6 +215,7 @@ proc supports_gnu_unique {} {
         || [istarget "d30v-*-*"]
         || [istarget "dlx-*-*"]
         || [istarget "pj*-*-*"]
+        || [istarget "s12z-*-*"]
         || [istarget "xgate-*-*"] } {
        return 0
     }
@@ -282,6 +286,10 @@ proc check_shared_lib_support { } {
 #    REGEXP
 #        Skip all lines in FILE_1 until the first that matches REGEXP.
 #
+#    #?REGEXP
+#        Optionally match REGEXP against line from FILE_1.  If the REGEXP
+#        does not match then the next line from FILE_2 is tried.
+#
 # Other # lines are comments.  Regexp lines starting with the `!' character
 # specify inverse matching (use `\!' for literal matching against a leading
 # `!').  Skip empty lines in both files.
@@ -368,6 +376,21 @@ proc regexp_diff { file_1 file_2 args } {
                    }
                }
                break
+           } elseif { [string match "#\\?*" $line_b] } {
+               if { ! $end_1 } {
+                   set line_b [string replace $line_b 0 1]
+                   set negated [expr { [string index $line_b 0] == "!" }]
+                   set line_bx [string range $line_b $negated end]
+                   set n [expr { $negated ? "! " : "" }]
+                   # Substitute on the reference.
+                   foreach {name value} $ref_subst {
+                       regsub -- $name $line_bx $value line_bx
+                   }
+                   verbose "optional match for $n\"^$line_bx$\"" 3
+                   if { [expr [regexp "^$line_bx$" "$line_a"] != $negated] } {
+                       break
+                   }
+               }
            }
            if { [gets $file_b line_b] == $eof } {
                set end_2 1
@@ -829,19 +852,19 @@ proc run_dump_test { name {extra_options {}} } {
        }
     }
 
-    # Ensure there is something in $opts(as) for the lmap below.
+    # Ensure there is something in $opts(as) for the foreach loop below.
     if { [llength $opts(as)] == 0 } {
         set opts(as) [list " "]
     }
-    set as_final_flags [lmap x $opts(as) {
+    foreach x $opts(as) {
         if { [string length $x] && [string length $as_additional_flags] } {
             append x " "
         }
         append x $as_additional_flags
         regsub {\[big_or_little_endian\]} $x \
             [big_or_little_endian] x
-        expr {$x}
-    }]
+        lappend as_final_flags $x
+    }
 
     regsub {\[big_or_little_endian\]} $opts(ld) \
         [big_or_little_endian] opts(ld)
@@ -974,7 +997,10 @@ proc run_dump_test { name {extra_options {}} } {
 
     # Time to setup xfailures.
     foreach targ $opts(xfail) {
-       setup_xfail $targ
+       if [match_target $targ] {
+           setup_xfail "*-*-*"
+           break
+       }
     }
 
     foreach as_flags $as_final_flags {
This page took 0.030925 seconds and 4 git commands to generate.