Add scan-weak function to testsuite, which would work like scan-hidden,
and allow for format-specific regexes
---
 gcc/testsuite/gcc.dg/weak/weak-1.c  | 16 +++++-----
 gcc/testsuite/gcc.dg/weak/weak-10.c |  2 +-
 gcc/testsuite/gcc.dg/weak/weak-11.c |  2 +-
 gcc/testsuite/gcc.dg/weak/weak-12.c |  2 +-
 gcc/testsuite/gcc.dg/weak/weak-15.c |  8 ++---
 gcc/testsuite/gcc.dg/weak/weak-16.c |  4 +--
 gcc/testsuite/gcc.dg/weak/weak-2.c  | 10 +++---
 gcc/testsuite/gcc.dg/weak/weak-3.c  | 14 ++++-----
 gcc/testsuite/gcc.dg/weak/weak-5.c  | 24 +++++++--------
 gcc/testsuite/gcc.dg/weak/weak-9.c  |  8 ++---
 gcc/testsuite/lib/scanasm.exp       | 47 +++++++++++++++++++++++++++++
 11 files changed, 92 insertions(+), 45 deletions(-)

diff --git a/gcc/testsuite/gcc.dg/weak/weak-1.c 
b/gcc/testsuite/gcc.dg/weak/weak-1.c
index 9566ee0c6f2..3734cc60750 100644
--- a/gcc/testsuite/gcc.dg/weak/weak-1.c
+++ b/gcc/testsuite/gcc.dg/weak/weak-1.c
@@ -6,14 +6,14 @@
 /* { dg-skip-if "" { nvptx-*-* } } */
 /* { dg-skip-if PR119369 { amdgcn-*-* } } */
 
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?a" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?b" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?c" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?d" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?e" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?g" } } */
-/* { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t\]_?i" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?j" } } */
+/* { dg-final { scan-weak "a" } } */
+/* { dg-final { scan-weak "b" } } */
+/* { dg-final { scan-weak "c" } } */
+/* { dg-final { scan-weak "d" } } */
+/* { dg-final { scan-weak "e" } } */
+/* { dg-final { scan-weak "g" } } */
+/* { dg-final { scan-not-weak "i" } } */
+/* { dg-final { scan-weak "j" } } */
 
 #pragma weak a
 int a;
diff --git a/gcc/testsuite/gcc.dg/weak/weak-10.c 
b/gcc/testsuite/gcc.dg/weak/weak-10.c
index f39fbc4bbce..7370e5b7239 100644
--- a/gcc/testsuite/gcc.dg/weak/weak-10.c
+++ b/gcc/testsuite/gcc.dg/weak/weak-10.c
@@ -7,7 +7,7 @@
 /* { dg-require-alias "" } */
 /* { dg-options "-fno-common" } */
 
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?bar1" } } */
+/* { dg-final { scan-weak "bar1" } } */
 
 #pragma weak bar1 = foo1
 void foo1 (void) {}
diff --git a/gcc/testsuite/gcc.dg/weak/weak-11.c 
b/gcc/testsuite/gcc.dg/weak/weak-11.c
index c20135a3aae..7f02772757c 100644
--- a/gcc/testsuite/gcc.dg/weak/weak-11.c
+++ b/gcc/testsuite/gcc.dg/weak/weak-11.c
@@ -4,7 +4,7 @@
 /* { dg-require-alias "" } */
 /* { dg-options "-funit-at-a-time" } */
 
-/* { dg-final { scan-assembler "xyzzy" } } */
+/* { dg-final { scan-weak "xyzzy" } } */
 
 static const int local = 1; 
 #pragma weak xyzzy = local
diff --git a/gcc/testsuite/gcc.dg/weak/weak-12.c 
b/gcc/testsuite/gcc.dg/weak/weak-12.c
index fd18e59a21e..2339d4e76b6 100644
--- a/gcc/testsuite/gcc.dg/weak/weak-12.c
+++ b/gcc/testsuite/gcc.dg/weak/weak-12.c
@@ -6,7 +6,7 @@
 /* { dg-skip-if "" { nvptx-*-* } } */
 /* { dg-skip-if PR119369 { amdgcn-*-* } } */
 
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?foo" } } */
+/* { dg-final { scan-weak "foo" } } */
 
 #pragma weak foo
 
diff --git a/gcc/testsuite/gcc.dg/weak/weak-15.c 
b/gcc/testsuite/gcc.dg/weak/weak-15.c
index 425a70046cc..90944c53fec 100644
--- a/gcc/testsuite/gcc.dg/weak/weak-15.c
+++ b/gcc/testsuite/gcc.dg/weak/weak-15.c
@@ -6,10 +6,10 @@
 /* { dg-skip-if "" { nvptx-*-* } } */
 /* { dg-skip-if PR119369 { amdgcn-*-* } } */
 
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?a" } } */
-/* { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t\]_?b" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?c" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?d" } } */
+/* { dg-final { scan-weak "a" } } */
+/* { dg-final { scan-not-weak "b" } } */
+/* { dg-final { scan-weak "c" } } */
+/* { dg-final { scan-weak "d" } } */
 
 #pragma weak a
 extern char a[];
diff --git a/gcc/testsuite/gcc.dg/weak/weak-16.c 
b/gcc/testsuite/gcc.dg/weak/weak-16.c
index 44741c54c3d..345907367d6 100644
--- a/gcc/testsuite/gcc.dg/weak/weak-16.c
+++ b/gcc/testsuite/gcc.dg/weak/weak-16.c
@@ -2,8 +2,8 @@
 /* { dg-do compile } */
 /* { dg-require-weak "" } */
 /* { dg-options "-fno-common -Os" } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?kallsyms_token_index" } 
} */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?kallsyms_token_table" } 
} */
+/* { dg-final { scan-weak "kallsyms_token_index" } } */
+/* { dg-final { scan-weak "kallsyms_token_table" } } */
 /* { dg-skip-if "" { x86_64-*-mingw* } } */
 /* NVPTX's weak is applied to the definition,  not declaration.  */
 /* { dg-skip-if "" { nvptx-*-* } } */
diff --git a/gcc/testsuite/gcc.dg/weak/weak-2.c 
b/gcc/testsuite/gcc.dg/weak/weak-2.c
index f0f55f5360f..395e27876f6 100644
--- a/gcc/testsuite/gcc.dg/weak/weak-2.c
+++ b/gcc/testsuite/gcc.dg/weak/weak-2.c
@@ -6,11 +6,11 @@
 /* { dg-skip-if "" { nvptx-*-* } } */
 /* { dg-skip-if PR119369 { amdgcn-*-* } } */
 
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1a" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1b" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1c" } } */
-/* { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t\]_?ffoo1d" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1e" } } */
+/* { dg-final { scan-weak "ffoo1a" } } */
+/* { dg-final { scan-weak "ffoo1b" } } */
+/* { dg-final { scan-weak "ffoo1c" } } */
+/* { dg-final { scan-not-weak "ffoo1d" } } */
+/* { dg-final { scan-weak "ffoo1e" } } */
 
 /* test function addresses with #pragma weak */
 
diff --git a/gcc/testsuite/gcc.dg/weak/weak-3.c 
b/gcc/testsuite/gcc.dg/weak/weak-3.c
index 2046f1e4d0b..120d6bad75c 100644
--- a/gcc/testsuite/gcc.dg/weak/weak-3.c
+++ b/gcc/testsuite/gcc.dg/weak/weak-3.c
@@ -5,13 +5,13 @@
 /* { dg-skip-if "" { x86_64-*-mingw* } } */
 /* { dg-skip-if PR119369 { amdgcn-*-* } } */
 
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1a" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1b" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1c" } } */
-/* { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t\]_?ffoo1d" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1e" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1f" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1g" } } */
+/* { dg-final { scan-weak "ffoo1a" } } */
+/* { dg-final { scan-weak "ffoo1b" } } */
+/* { dg-final { scan-weak "ffoo1c" } } */
+/* { dg-final { scan-not-weak "ffoo1d" } } */
+/* { dg-final { scan-weak "ffoo1e" } } */
+/* { dg-final { scan-weak "ffoo1f" } } */
+/* { dg-final { scan-weak "ffoo1g" } } */
 
 /* test function addresses with __attribute__((weak)) */
 
diff --git a/gcc/testsuite/gcc.dg/weak/weak-5.c 
b/gcc/testsuite/gcc.dg/weak/weak-5.c
index 3b239715e44..70ae7e3e710 100644
--- a/gcc/testsuite/gcc.dg/weak/weak-5.c
+++ b/gcc/testsuite/gcc.dg/weak/weak-5.c
@@ -5,18 +5,18 @@
 /* { dg-skip-if "" { x86_64-*-mingw* } } */
 /* { dg-skip-if PR119369 { amdgcn-*-* } } */
 
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1a" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1b" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1c" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1d" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1e" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1f" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1g" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1h" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1i" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1j" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1k" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1l" } } */
+/* { dg-final { scan-weak "vfoo1a" } } */
+/* { dg-final { scan-weak "vfoo1b" } } */
+/* { dg-final { scan-weak "vfoo1c" } } */
+/* { dg-final { scan-weak "vfoo1d" } } */
+/* { dg-final { scan-weak "vfoo1e" } } */
+/* { dg-final { scan-weak "vfoo1f" } } */
+/* { dg-final { scan-weak "vfoo1g" } } */
+/* { dg-final { scan-weak "vfoo1h" } } */
+/* { dg-final { scan-weak "vfoo1i" } } */
+/* { dg-final { scan-weak "vfoo1j" } } */
+/* { dg-final { scan-weak "vfoo1k" } } */
+/* { dg-final { scan-weak "vfoo1l" } } */
 
 /* test variable addresses with __attribute__ ((weak)) */
 
diff --git a/gcc/testsuite/gcc.dg/weak/weak-9.c 
b/gcc/testsuite/gcc.dg/weak/weak-9.c
index abbd0201c46..ddb0f210b8a 100644
--- a/gcc/testsuite/gcc.dg/weak/weak-9.c
+++ b/gcc/testsuite/gcc.dg/weak/weak-9.c
@@ -3,10 +3,10 @@
 /* { dg-require-alias "" } */
 /* { dg-options "-fno-common" } */
 
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?f1" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?f2" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?f3" } } */
-/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?f4" } } */
+/* { dg-final { scan-weak "f1" } } */
+/* { dg-final { scan-weak "f2" } } */
+/* { dg-final { scan-weak "f3" } } */
+/* { dg-final { scan-weak "f4" } } */
 
 void notf1() { }
 void notf2() { }
diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp
index 97935cb23c3..91a276c1c4c 100644
--- a/gcc/testsuite/lib/scanasm.exp
+++ b/gcc/testsuite/lib/scanasm.exp
@@ -153,6 +153,53 @@ proc hidden-scan-for { symbol } {
 
 }
 
+proc weak-scan-for { symbol } {
+
+    set objformat [gcc_target_object_format]
+
+    switch $objformat {
+        default  { return "weak\[^ \t\]*\[ \t\]_?$symbol" }
+    }
+}
+
+# Check that a symbol is defined as a weak symbol in the .s file
+# produced by the compiler.
+
+proc scan-weak { args } {
+    set testcase [testname-for-summary]
+    # The name might include a list of options; extract the file name.
+    set filename [lindex $testcase 0]
+    set output_file "[file rootname [file tail $filename]].s"
+
+    if { [llength $args] > 0 } {
+       set symbol [lindex $args 0]
+
+       set weak_scan [weak-scan-for $symbol]
+
+       set args [lreplace $args 0 0 "$weak_scan"]
+    }
+
+    dg-scan "scan-weak" 1 $testcase $output_file $args
+}
+
+# Check that a symbol is not defined as a weak symbol in the .s file
+# produced by the compiler.
+
+proc scan-not-weak { args } {
+    set testcase [testname-for-summary]
+    # The name might include a list of options; extract the file name.
+    set filename [lindex $testcase 0]
+    set output_file "[file rootname [file tail $filename]].s"
+
+    if { [llength $args] > 0 } {
+       set symbol [lindex $args 0]
+       set weak_scan [weak-scan-for $symbol]
+
+       set args [lreplace $args 0 0 "$weak_scan"]
+    }
+
+    dg-scan "scan-not-weak" 0 $testcase $output_file $args
+}
 
 # Check that a symbol is defined as a hidden symbol in the .s file
 # produced by the compiler.
-- 
2.51.2

Reply via email to