testsuite: prune DOS drive letter in test outputs
authorClément Chigot <chigot@adacore.com>
Tue, 21 Feb 2023 14:07:58 +0000 (15:07 +0100)
committerClément Chigot <chigot@adacore.com>
Fri, 24 Feb 2023 13:35:10 +0000 (14:35 +0100)
On DOS systems, absolute paths start with the drive letter. This can
trigger failures in the regexp from dump tests, especially for those
checking for warnings or errors. They are usually skipping everything
before the first ":" as it has to be the file path.
  | [^:]*: warning: ...

In order to avoid modifying many regexps to allow such drive letters,
prune them from all the outputs if they are found at the beginning of
a line.

binutils/ChangeLog:

* testsuite/lib/binutils-common.exp (prune_dump_output): New
(run_dump_test): Use it.

ld/ChangeLog:

* testsuite/ld-elf/noinit-sections-2.l: Remove DOS drive letter
handler.

binutils/testsuite/lib/binutils-common.exp
ld/testsuite/ld-elf/noinit-sections-2.l

index ab752417295aa4f74c4a06b27c910b8643161e6d..530316e54cdd28c31a7a1280a448cbe0269b8134 100644 (file)
@@ -687,6 +687,22 @@ if ![string length [info proc prune_warnings]] {
     }
 }
 
+# prune_dump_output OUTPUT
+#
+# Clean up the output from system specific or unwanted characters.
+# This allows to simplify the regexp inside dump tests.
+proc prune_dump_output { output } {
+    if [ishost "*-*-mingw*"] {
+       # Prune DOS drive letter from an absolute path if it appears
+       # at the beginning of a line.
+       regsub -all {(^|\n)[[:alpha:]]:(/|\\)} $output "\\1\\2" output
+    }
+
+    # Prune last end of line.
+    regsub "\n$" $output "" output
+    return $output
+}
+
 # run_dump_test FILE (optional:) EXTRA_OPTIONS
 #
 # Assemble a .s file, then run some utility on it and check the output.
@@ -1450,7 +1466,7 @@ proc run_dump_test { name {extra_options {}} } {
            }
        }
 
-       regsub "\n$" $comp_output "" comp_output
+       set comp_output [prune_dump_output $comp_output]
        if { $cmdret != 0 || $comp_output != "" || $want_out(source) != "" } {
            set exitstat "succeeded"
            if { $cmdret != 0 } { set exitstat "failed" }
index 8ed2716c549e93558d35681b9aaf55d46d54ee4e..0784c9e3e122c6c44c9b63c91b269dbf85ee0656 100644 (file)
@@ -1,5 +1,5 @@
 #...
-(|.:)[^:]*: warning: orphan section `.noinit.var_noinit' from \S+ being placed in section `.noinit.var_noinit'
+[^:]*: warning: orphan section `.noinit.var_noinit' from \S+ being placed in section `.noinit.var_noinit'
 #...
-(|.:)[^:]*: warning: orphan section `.gnu.linkonce.n.var_noinit2' from \S+ being placed in section `.gnu.linkonce.n.var_noinit2'
+[^:]*: warning: orphan section `.gnu.linkonce.n.var_noinit2' from \S+ being placed in section `.gnu.linkonce.n.var_noinit2'
 #pass