aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/ChangeLog66
-rw-r--r--ld/testsuite/ld-elf/indirect1b.c3
-rw-r--r--ld/testsuite/ld-elf/indirect2.c3
-rw-r--r--ld/testsuite/ld-elf/indirect3b.c3
-rw-r--r--ld/testsuite/ld-elf/indirect4b.c6
-rw-r--r--ld/testsuite/ld-elf/pr18718.c3
-rw-r--r--ld/testsuite/ld-elf/pr18720b.c5
-rw-r--r--ld/testsuite/ld-elf/pr19553c.c3
-rw-r--r--ld/testsuite/ld-elf/shared.exp4
-rw-r--r--ld/testsuite/ld-elfvers/vers.exp24
-rw-r--r--ld/testsuite/ld-elfvers/vers.h7
-rw-r--r--ld/testsuite/ld-elfvers/vers1.c16
-rw-r--r--ld/testsuite/ld-elfvers/vers1.sym8
-rw-r--r--ld/testsuite/ld-elfvers/vers15.c6
-rw-r--r--ld/testsuite/ld-elfvers/vers15.sym6
-rw-r--r--ld/testsuite/ld-elfvers/vers18.c8
-rw-r--r--ld/testsuite/ld-elfvers/vers18.sym8
-rw-r--r--ld/testsuite/ld-elfvers/vers21.c7
-rw-r--r--ld/testsuite/ld-elfvers/vers21.sym6
-rw-r--r--ld/testsuite/ld-elfvers/vers22a.c2
-rw-r--r--ld/testsuite/ld-elfvers/vers22a.sym2
-rw-r--r--ld/testsuite/ld-elfvers/vers23a.c2
-rw-r--r--ld/testsuite/ld-elfvers/vers23a.sym2
-rw-r--r--ld/testsuite/ld-elfvers/vers27d.sym2
-rw-r--r--ld/testsuite/ld-elfvers/vers27d1.c2
-rw-r--r--ld/testsuite/ld-elfvers/vers4.c2
-rw-r--r--ld/testsuite/ld-elfvers/vers4.sym2
-rw-r--r--ld/testsuite/ld-elfvers/vers4a.sym2
-rw-r--r--ld/testsuite/ld-elfvers/vers5.c8
-rw-r--r--ld/testsuite/ld-elfvers/vers6.c8
-rw-r--r--ld/testsuite/ld-elfvers/vers6.sym8
-rw-r--r--ld/testsuite/ld-elfvers/vers7a.c4
-rw-r--r--ld/testsuite/ld-elfvers/vers7a.sym4
-rw-r--r--ld/testsuite/ld-elfvers/vers9.c8
-rw-r--r--ld/testsuite/ld-elfvers/vers9.sym8
-rw-r--r--ld/testsuite/ld-elfweak/elfweak.exp18
-rw-r--r--ld/testsuite/ld-elfweak/strong.sym2
-rw-r--r--ld/testsuite/ld-elfweak/strongcomm.sym4
-rw-r--r--ld/testsuite/ld-elfweak/strongdata.sym4
-rw-r--r--ld/testsuite/ld-ifunc/pr16467b.c3
-rw-r--r--ld/testsuite/ld-plugin/lto.exp12
-rw-r--r--ld/testsuite/ld-plugin/plugin-13.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-14.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-15.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-16.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-20.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-21.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-22.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-23.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-6.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-7.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-8.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin.exp7
-rw-r--r--ld/testsuite/ld-plugin/pr12760b.c15
-rw-r--r--ld/testsuite/ld-plugin/pr16746a.c8
-rw-r--r--ld/testsuite/ld-plugin/pr16746b.c6
56 files changed, 241 insertions, 118 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 86a4fce..b1c6b8c 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,71 @@
2016-12-03 Alan Modra <amodra@gmail.com>
+ * testsuite/ld-elf/indirect1b.c: Give dot-symbol a version too.
+ * testsuite/ld-elf/indirect2.c: Likewise.
+ * testsuite/ld-elf/indirect3b.c: Likewise.
+ * testsuite/ld-elf/indirect4b.c: Likewise.
+ * testsuite/ld-elf/pr18718.c: Likewise.
+ * testsuite/ld-elf/pr18720b.c: Likewise.
+ * testsuite/ld-elf/pr19553c.c: Likewise.
+ * testsuite/ld-elfvers/vers.h (FUNC_SYMVER): Define.
+ * testsuite/ld-elfvers/vers1.c: Use FUNC_SYMVER for functions.
+ * testsuite/ld-elfvers/vers4.c: Likewise.
+ * testsuite/ld-elfvers/vers5.c: Likewise.
+ * testsuite/ld-elfvers/vers6.c: Likewise.
+ * testsuite/ld-elfvers/vers7a.c: Likewise.
+ * testsuite/ld-elfvers/vers9.c: Likewise.
+ * testsuite/ld-elfvers/vers15.c: Likewise.
+ * testsuite/ld-elfvers/vers18.c: Likewise.
+ * testsuite/ld-elfvers/vers22a.c: Likewise.
+ * testsuite/ld-elfvers/vers23a.c: Likewise.
+ * testsuite/ld-elfvers/vers27d1.c: Likewise.
+ * testsuite/ld-elfvers/vers21.c: Likewise.
+ (_old_bar): Use attribute weak rather than asm weak.
+ * testsuite/ld-ifunc/pr16467b.c: Give dot-symbol a version.
+ * testsuite/ld-plugin/pr12760b.c: Define warning on .bar rather than
+ bar for ppc64 -mcall-aixdesc.
+ * testsuite/ld-plugin/pr16746a.c: Similarly for foobar.
+ * testsuite/ld-plugin/pr16746b.c: Likewise.
+ * testsuite/ld-elf/shared.exp: Allow dot-symbol in warnings and errors.
+ * testsuite/ld-plugin/lto.exp: Likewise.
+ * testsuite/ld-plugin/plugin-6.d: Likewise.
+ * testsuite/ld-plugin/plugin-7.d: Likewise.
+ * testsuite/ld-plugin/plugin-8.d: Likewise.
+ * testsuite/ld-plugin/plugin-13.d: Likewise.
+ * testsuite/ld-plugin/plugin-14.d: Likewise.
+ * testsuite/ld-plugin/plugin-15.d: Likewise.
+ * testsuite/ld-plugin/plugin-16.d: Likewise.
+ * testsuite/ld-plugin/plugin-20.d: Likewise.
+ * testsuite/ld-plugin/plugin-21.d: Likewise.
+ * testsuite/ld-plugin/plugin-22.d: Likewise.
+ * testsuite/ld-plugin/plugin-23.d: Likewise.
+ * testsuite/ld-plugin/plugin.exp: Define .main and .puts for ppc64
+ -mcall-aixdesc.
+ * testsuite/ld-elfvers/vers.exp (test_ar): Trim dot-symbols.
+ (objdump_dynsymstuff): Likewise.
+ (objdump_symstuff): Likewise. Pack flags to keep column count
+ consistent.
+ * testsuite/ld-elfweak/elfweak.exp (objdump_dynsymstuff,
+ objdump_symstuff): As for vers.exp.
+ * testsuite/ld-elfvers/vers6.sym: Allow dot-symbols.
+ * testsuite/ld-elfvers/vers1.sym: Allow missing F flag for
+ -mcall-aixdesc .opd syms and adjust for flag packing.
+ * testsuite/ld-elfvers/vers4.sym: Likewise.
+ * testsuite/ld-elfvers/vers4a.sym: Likewise.
+ * testsuite/ld-elfvers/vers7a.sym: Likewise.
+ * testsuite/ld-elfvers/vers9.sym: Likewise.
+ * testsuite/ld-elfvers/vers15.sym: Likewise.
+ * testsuite/ld-elfvers/vers18.sym: Likewise.
+ * testsuite/ld-elfvers/vers21.sym: Likewise.
+ * testsuite/ld-elfvers/vers22a.sym: Likewise.
+ * testsuite/ld-elfvers/vers23a.sym: Likewise.
+ * testsuite/ld-elfvers/vers27d.sym: Likewise.
+ * testsuite/ld-elfweak/strong.sym: Likewise.
+ * testsuite/ld-elfweak/strongcomm.sym: Likewise.
+ * testsuite/ld-elfweak/strongdata.sym: Likewise.
+
+2016-12-03 Alan Modra <amodra@gmail.com>
+
* testsuite/ld-elfvers/vers.exp (objdump_dynsymstuff): Don't abort
on non-empty results with empty expected.
diff --git a/ld/testsuite/ld-elf/indirect1b.c b/ld/testsuite/ld-elf/indirect1b.c
index 51740f9..60f34527 100644
--- a/ld/testsuite/ld-elf/indirect1b.c
+++ b/ld/testsuite/ld-elf/indirect1b.c
@@ -4,3 +4,6 @@ foo (void)
}
asm (".symver foo,foo@FOO");
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+asm (".symver .foo,.foo@FOO");
+#endif
diff --git a/ld/testsuite/ld-elf/indirect2.c b/ld/testsuite/ld-elf/indirect2.c
index 6df29be..e36532d 100644
--- a/ld/testsuite/ld-elf/indirect2.c
+++ b/ld/testsuite/ld-elf/indirect2.c
@@ -1,6 +1,9 @@
extern void foo (void);
asm (".symver foo,foo@@@FOO");
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+asm (".symver .foo,.foo@@@FOO");
+#endif
void
bar (void)
diff --git a/ld/testsuite/ld-elf/indirect3b.c b/ld/testsuite/ld-elf/indirect3b.c
index dbb37c3..74cc461 100644
--- a/ld/testsuite/ld-elf/indirect3b.c
+++ b/ld/testsuite/ld-elf/indirect3b.c
@@ -7,3 +7,6 @@ foo (void)
}
asm (".symver foo,foo@FOO");
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+asm (".symver .foo,.foo@FOO");
+#endif
diff --git a/ld/testsuite/ld-elf/indirect4b.c b/ld/testsuite/ld-elf/indirect4b.c
index b8db9d0..06739b5 100644
--- a/ld/testsuite/ld-elf/indirect4b.c
+++ b/ld/testsuite/ld-elf/indirect4b.c
@@ -7,6 +7,9 @@ foo2 (void)
}
asm (".symver foo2,foo@@FOO2");
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+asm (".symver .foo2,.foo@@FOO2");
+#endif
void
foo1 (void)
@@ -15,3 +18,6 @@ foo1 (void)
}
asm (".symver foo1,foo@FOO1");
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+asm (".symver .foo1,.foo@FOO1");
+#endif
diff --git a/ld/testsuite/ld-elf/pr18718.c b/ld/testsuite/ld-elf/pr18718.c
index 5ec1b9e..9cf15e8 100644
--- a/ld/testsuite/ld-elf/pr18718.c
+++ b/ld/testsuite/ld-elf/pr18718.c
@@ -10,6 +10,9 @@ new_foo (void)
}
__asm__(".symver new_foo, foo@@VERS_2.0");
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+__asm__(".symver .new_foo, .foo@@VERS_2.0");
+#endif
#if defined(__GNUC__) && (__GNUC__ * 1000 + __GNUC_MINOR__) >= 4005
__attribute__ ((noinline, noclone))
diff --git a/ld/testsuite/ld-elf/pr18720b.c b/ld/testsuite/ld-elf/pr18720b.c
index 90d376b..6a2975d 100644
--- a/ld/testsuite/ld-elf/pr18720b.c
+++ b/ld/testsuite/ld-elf/pr18720b.c
@@ -9,3 +9,8 @@ foo (void)
asm (".symver foo,foo@FOO");
asm (".set foo_alias,foo");
asm (".global foo_alias");
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+asm (".symver .foo,.foo@FOO");
+asm (".set .foo_alias,.foo");
+asm (".global .foo_alias");
+#endif
diff --git a/ld/testsuite/ld-elf/pr19553c.c b/ld/testsuite/ld-elf/pr19553c.c
index d80dfc9..7587b4a 100644
--- a/ld/testsuite/ld-elf/pr19553c.c
+++ b/ld/testsuite/ld-elf/pr19553c.c
@@ -7,3 +7,6 @@ foo (void)
}
asm (".symver foo,foo@FOO");
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+asm (".symver .foo,.foo@FOO");
+#endif
diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp
index f3b6f18..f1d741f 100644
--- a/ld/testsuite/ld-elf/shared.exp
+++ b/ld/testsuite/ld-elf/shared.exp
@@ -454,14 +454,14 @@ if { [ regexp "tmpdir/libneeded1b.so: .*: DSO missing" $exec_output ] } {
}
set testname "--no-add-needed -shared"
set exec_output [run_host_cmd "$CC" "-shared tmpdir/libneeded1pic.o -Wl,--no-add-needed,-z,defs -Ltmpdir -lneeded1a"]
-if { [ regexp "undefined reference to `bar'" $exec_output ] } {
+if { [ regexp "undefined reference to `\.?bar'" $exec_output ] } {
pass $testname
} {
fail $testname
}
set testname "--no-copy-dt-needed-entries -shared"
set exec_output [run_host_cmd "$CC" "-shared tmpdir/libneeded1pic.o -Wl,--no-copy-dt-needed-entries,-z,defs -Ltmpdir -lneeded1a"]
-if { [ regexp "undefined reference to `bar'" $exec_output ] } {
+if { [ regexp "undefined reference to `\.?bar'" $exec_output ] } {
pass $testname
} {
fail $testname
diff --git a/ld/testsuite/ld-elfvers/vers.exp b/ld/testsuite/ld-elfvers/vers.exp
index a2a678b..4c42342 100644
--- a/ld/testsuite/ld-elfvers/vers.exp
+++ b/ld/testsuite/ld-elfvers/vers.exp
@@ -122,9 +122,9 @@ proc test_ar { test lib object expect } {
return
}
- verbose -log "$nm --print-armap $tmpdir/$lib | grep \" in \" | egrep \"VERS\\|bar\\|foo\" | sort > $tmpdir/nm.out"
-
- catch "exec $nm --print-armap $tmpdir/$lib | grep \\\ in\\\ | egrep VERS\\\|bar\\\|foo | sort > $tmpdir/nm.out" exec_output
+ set cmd "$nm --print-armap $tmpdir/$lib | grep \\\ in\\\ | egrep VERS\\\|bar\\\|foo | grep -v ^\\\\. | sort > $tmpdir/nm.out"
+ verbose -log $cmd
+ catch "exec $cmd" exec_output
if [string match "" $exec_output] then {
catch "exec sort $srcdir/$subdir/$expect | $diff $tmpdir/nm.out -" exec_output
set exec_output [prune_warnings $exec_output]
@@ -245,9 +245,9 @@ proc objdump_symstuff { objdump object expectfile } {
if ![info exists SOBJDUMP_FLAGS] { set SOBJDUMP_FLAGS "" }
- verbose -log "$objdump $SOBJDUMP_FLAGS $object | grep \@ | sort -k 6 > $tmpdir/objdump.out"
-
- catch "exec $objdump $SOBJDUMP_FLAGS $object | grep \@ | sort -k 6 > $tmpdir/objdump.out" exec_output
+ set cmd "$objdump $SOBJDUMP_FLAGS $object | sed -n {s/^\\(\[0-9a-f\]* *\\)\\(\[gw\]\\)\\( *\\)\\(\[FO\]\\)/\\1\\2\\4\\3/;/\@/p} | sort -k 5 > $tmpdir/objdump.out"
+ verbose -log $cmd
+ catch "exec $cmd" exec_output
set exec_output [prune_warnings $exec_output]
if [string match "" $exec_output] then {
@@ -286,7 +286,8 @@ proc objdump_symstuff { objdump object expectfile } {
close $file_a
while { [gets $file_b line] != $eof } {
- if [regexp "^#.*$" $line] then {
+ if [regexp {\.text.* \.[^ ]*$} $line] then {
+ # Discard defined powerpc64 dot-symbols
continue
} else {
lappend list_b $line
@@ -340,9 +341,9 @@ proc objdump_dynsymstuff { objdump object expectfile } {
if ![info exists DOBJDUMP_FLAGS] { set DOBJDUMP_FLAGS "" }
- verbose -log "$objdump $DOBJDUMP_FLAGS $object | sed -n /VERS/p\\\;/show/p | sort | uniq > $tmpdir/objdump.out"
-
- catch "exec $objdump $DOBJDUMP_FLAGS $object | sed -n /VERS/p\\\;/show/p | sort | uniq > $tmpdir/objdump.out" exec_output
+ set cmd "$objdump $DOBJDUMP_FLAGS $object | sed -n /VERS/p\\\;/show/p | sort | uniq > $tmpdir/objdump.out"
+ verbose -log $cmd
+ catch "exec $cmd" exec_output
set exec_output [prune_warnings $exec_output]
if [string match "" $exec_output] then {
@@ -381,7 +382,8 @@ proc objdump_dynsymstuff { objdump object expectfile } {
close $file_a
while { [gets $file_b line] != $eof } {
- if [regexp "^#.*$" $line] then {
+ if [regexp {\.text.* \.[^ ]*$} $line] then {
+ # Discard defined powerpc64 dot-symbols
continue
} else {
lappend list_b $line
diff --git a/ld/testsuite/ld-elfvers/vers.h b/ld/testsuite/ld-elfvers/vers.h
index 4455527..00385f0 100644
--- a/ld/testsuite/ld-elfvers/vers.h
+++ b/ld/testsuite/ld-elfvers/vers.h
@@ -7,3 +7,10 @@
/* Generate a .symver reference with symbol prefixes.
Usage: SYMVER(foo, foobar@ver); */
#define SYMVER(name, name2) __asm__(".symver " SYMPFX(name) "," SYMPFX(name2))
+
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+#define FUNC_SYMVER(name, name2) SYMVER(name, name2); \
+ __asm__(".symver ." SYMPFX(name) ",." SYMPFX(name2))
+#else
+#define FUNC_SYMVER(name, name2) SYMVER(name, name2)
+#endif
diff --git a/ld/testsuite/ld-elfvers/vers1.c b/ld/testsuite/ld-elfvers/vers1.c
index 86e2bd2..9813fd3 100644
--- a/ld/testsuite/ld-elfvers/vers1.c
+++ b/ld/testsuite/ld-elfvers/vers1.c
@@ -49,10 +49,10 @@ hide_new_foo()
}
-SYMVER(hide_original_foo, show_foo@);
-SYMVER(hide_old_foo, show_foo@VERS_1.1);
-SYMVER(hide_old_foo1, show_foo@VERS_1.2);
-SYMVER(hide_new_foo, show_foo@@VERS_2.0);
+FUNC_SYMVER(hide_original_foo, show_foo@);
+FUNC_SYMVER(hide_old_foo, show_foo@VERS_1.1);
+FUNC_SYMVER(hide_old_foo1, show_foo@VERS_1.2);
+FUNC_SYMVER(hide_new_foo, show_foo@@VERS_2.0);
@@ -65,7 +65,7 @@ hide_new_bogus_foo()
return 1000+bar();
}
-SYMVER(hide_new_bogus_foo, show_foo@VERS_2.2);
+FUNC_SYMVER(hide_new_bogus_foo, show_foo@VERS_2.2);
#endif
@@ -83,8 +83,8 @@ xyzzz()
bar33();
}
-SYMVER(new2_foo, fooVERS_2.0);
-SYMVER(bar33, bar@@VERS_2.0);
+FUNC_SYMVER(new2_foo, fooVERS_2.0);
+FUNC_SYMVER(bar33, bar@@VERS_2.0);
#endif
#ifdef DO_TEST12
@@ -99,5 +99,5 @@ xyzzz()
bar33();
}
-SYMVER(bar33, bar@@VERS_2.0);
+FUNC_SYMVER(bar33, bar@@VERS_2.0);
#endif
diff --git a/ld/testsuite/ld-elfvers/vers1.sym b/ld/testsuite/ld-elfvers/vers1.sym
index 0196109..206863f 100644
--- a/ld/testsuite/ld-elfvers/vers1.sym
+++ b/ld/testsuite/ld-elfvers/vers1.sym
@@ -1,4 +1,4 @@
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@@VERS_2\.0
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@VERS_1\.1
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@VERS_1\.2
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@@VERS_2\.0
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@VERS_1\.1
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@VERS_1\.2
diff --git a/ld/testsuite/ld-elfvers/vers15.c b/ld/testsuite/ld-elfvers/vers15.c
index 2457d29..a7c044a 100644
--- a/ld/testsuite/ld-elfvers/vers15.c
+++ b/ld/testsuite/ld-elfvers/vers15.c
@@ -32,6 +32,6 @@ main()
return 0;
}
-SYMVER(foo_1, show_foo@);
-SYMVER(foo_2, show_foo@VERS_1.1);
-SYMVER(foo_3, show_foo@@VERS_1.2);
+FUNC_SYMVER(foo_1, show_foo@);
+FUNC_SYMVER(foo_2, show_foo@VERS_1.1);
+FUNC_SYMVER(foo_3, show_foo@@VERS_1.2);
diff --git a/ld/testsuite/ld-elfvers/vers15.sym b/ld/testsuite/ld-elfvers/vers15.sym
index fe56a24..ccf4f4d 100644
--- a/ld/testsuite/ld-elfvers/vers15.sym
+++ b/ld/testsuite/ld-elfvers/vers15.sym
@@ -1,3 +1,3 @@
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@@VERS_1\.2
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@VERS_1\.1
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@@VERS_1\.2
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@VERS_1\.1
diff --git a/ld/testsuite/ld-elfvers/vers18.c b/ld/testsuite/ld-elfvers/vers18.c
index 9965b88..fe1017b 100644
--- a/ld/testsuite/ld-elfvers/vers18.c
+++ b/ld/testsuite/ld-elfvers/vers18.c
@@ -38,7 +38,7 @@ hide_new_foo ()
return 1000 + bar ();
}
-SYMVER(hide_original_foo, show_foo@);
-SYMVER(hide_old_foo, show_foo@VERS_1.1);
-SYMVER(hide_old_foo1, show_foo@VERS_1.2);
-SYMVER(hide_new_foo, show_foo@@VERS_2.0);
+FUNC_SYMVER(hide_original_foo, show_foo@);
+FUNC_SYMVER(hide_old_foo, show_foo@VERS_1.1);
+FUNC_SYMVER(hide_old_foo1, show_foo@VERS_1.2);
+FUNC_SYMVER(hide_new_foo, show_foo@@VERS_2.0);
diff --git a/ld/testsuite/ld-elfvers/vers18.sym b/ld/testsuite/ld-elfvers/vers18.sym
index 62890d7..04fa49c 100644
--- a/ld/testsuite/ld-elfvers/vers18.sym
+++ b/ld/testsuite/ld-elfvers/vers18.sym
@@ -1,4 +1,4 @@
-[0-9a-f]+ +w +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@
-[0-9a-f]+ +w +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@@VERS_2\.0
-[0-9a-f]+ +w +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@VERS_1\.1
-[0-9a-f]+ +w +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@VERS_1\.2
+[0-9a-f]+ +w(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@
+[0-9a-f]+ +w(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@@VERS_2\.0
+[0-9a-f]+ +w(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@VERS_1\.1
+[0-9a-f]+ +w(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@VERS_1\.2
diff --git a/ld/testsuite/ld-elfvers/vers21.c b/ld/testsuite/ld-elfvers/vers21.c
index 3a75b48..4a994a1 100644
--- a/ld/testsuite/ld-elfvers/vers21.c
+++ b/ld/testsuite/ld-elfvers/vers21.c
@@ -1,9 +1,8 @@
#include "vers.h"
-SYMVER(_old_foo, foo@VERS.0);
-SYMVER(_old_bar, bar@VERS.0);
+FUNC_SYMVER(_old_foo, foo@VERS.0);
+FUNC_SYMVER(_old_bar, bar@VERS.0);
SYMVER(_old_foobar, foobar@VERS.0);
-__asm__(".weak " SYMPFX(_old_bar));
int
bar ()
@@ -11,7 +10,7 @@ bar ()
return 1;
}
-int
+int __attribute__ ((weak))
_old_bar ()
{
return bar ();
diff --git a/ld/testsuite/ld-elfvers/vers21.sym b/ld/testsuite/ld-elfvers/vers21.sym
index 271ca79..f5ade0b 100644
--- a/ld/testsuite/ld-elfvers/vers21.sym
+++ b/ld/testsuite/ld-elfvers/vers21.sym
@@ -1,3 +1,3 @@
-[0-9a-f]+[ ]+w[ ]+F[ ]+\.(text|opd)[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?_?bar@VERS\.0
-[0-9a-f]+[ ]+g[ ]+F[ ]+\.(text|opd)[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?_?foo@VERS\.0
-[0-9a-f]+[ ]+g[ ]+O[ ]+\.s?data[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?_?foobar@VERS\.0
+[0-9a-f]+ +w(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?bar@VERS\.0
+[0-9a-f]+ +g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@VERS\.0
+[0-9a-f]+ +gO +\.s?data [0-9a-f]+ (0x[0-9a-f]+ )?_?foobar@VERS\.0
diff --git a/ld/testsuite/ld-elfvers/vers22a.c b/ld/testsuite/ld-elfvers/vers22a.c
index bc5777b..9a5fcac 100644
--- a/ld/testsuite/ld-elfvers/vers22a.c
+++ b/ld/testsuite/ld-elfvers/vers22a.c
@@ -1,6 +1,6 @@
#include "vers.h"
-SYMVER(_old_bar, bar@VERS.0);
+FUNC_SYMVER(_old_bar, bar@VERS.0);
void
_old_bar ()
diff --git a/ld/testsuite/ld-elfvers/vers22a.sym b/ld/testsuite/ld-elfvers/vers22a.sym
index c3f4150..cddf0c6 100644
--- a/ld/testsuite/ld-elfvers/vers22a.sym
+++ b/ld/testsuite/ld-elfvers/vers22a.sym
@@ -1 +1 @@
-[0-9a-f]+[ ]+g[ ]+F[ ]+\.(text|opd)[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?_?bar@VERS.0
+[0-9a-f]+ +g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?bar@VERS.0
diff --git a/ld/testsuite/ld-elfvers/vers23a.c b/ld/testsuite/ld-elfvers/vers23a.c
index 13c8edd..9edbba3 100644
--- a/ld/testsuite/ld-elfvers/vers23a.c
+++ b/ld/testsuite/ld-elfvers/vers23a.c
@@ -1,6 +1,6 @@
#include "vers.h"
-SYMVER(_old_bar, bar@VERS.0);
+FUNC_SYMVER(_old_bar, bar@VERS.0);
void
_old_bar (void)
diff --git a/ld/testsuite/ld-elfvers/vers23a.sym b/ld/testsuite/ld-elfvers/vers23a.sym
index c3f4150..cddf0c6 100644
--- a/ld/testsuite/ld-elfvers/vers23a.sym
+++ b/ld/testsuite/ld-elfvers/vers23a.sym
@@ -1 +1 @@
-[0-9a-f]+[ ]+g[ ]+F[ ]+\.(text|opd)[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?_?bar@VERS.0
+[0-9a-f]+ +g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?bar@VERS.0
diff --git a/ld/testsuite/ld-elfvers/vers27d.sym b/ld/testsuite/ld-elfvers/vers27d.sym
index d20bd1d..9133ed0 100644
--- a/ld/testsuite/ld-elfvers/vers27d.sym
+++ b/ld/testsuite/ld-elfvers/vers27d.sym
@@ -1 +1 @@
-[0-9a-f]+[ ]+g[ ]+F[ ]+\.(text|opd)[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?_?foo@VERS\.0
+[0-9a-f]+ +g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@VERS\.0
diff --git a/ld/testsuite/ld-elfvers/vers27d1.c b/ld/testsuite/ld-elfvers/vers27d1.c
index 107e1c1..00fab8d 100644
--- a/ld/testsuite/ld-elfvers/vers27d1.c
+++ b/ld/testsuite/ld-elfvers/vers27d1.c
@@ -5,4 +5,4 @@ foo ()
{
}
-SYMVER(foo, foo@VERS.0);
+FUNC_SYMVER(foo, foo@VERS.0);
diff --git a/ld/testsuite/ld-elfvers/vers4.c b/ld/testsuite/ld-elfvers/vers4.c
index 46ac432..eed0595 100644
--- a/ld/testsuite/ld-elfvers/vers4.c
+++ b/ld/testsuite/ld-elfvers/vers4.c
@@ -22,7 +22,7 @@ new_foo()
}
-SYMVER(new_foo, foo@@VERS_2.0);
+FUNC_SYMVER(new_foo, foo@@VERS_2.0);
int
main()
diff --git a/ld/testsuite/ld-elfvers/vers4.sym b/ld/testsuite/ld-elfvers/vers4.sym
index c48d1bb..6511fc3 100644
--- a/ld/testsuite/ld-elfvers/vers4.sym
+++ b/ld/testsuite/ld-elfvers/vers4.sym
@@ -1 +1 @@
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@@VERS_2\.0
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@@VERS_2\.0
diff --git a/ld/testsuite/ld-elfvers/vers4a.sym b/ld/testsuite/ld-elfvers/vers4a.sym
index c48d1bb..6511fc3 100644
--- a/ld/testsuite/ld-elfvers/vers4a.sym
+++ b/ld/testsuite/ld-elfvers/vers4a.sym
@@ -1 +1 @@
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@@VERS_2\.0
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@@VERS_2\.0
diff --git a/ld/testsuite/ld-elfvers/vers5.c b/ld/testsuite/ld-elfvers/vers5.c
index 3cae67e..8b1b536 100644
--- a/ld/testsuite/ld-elfvers/vers5.c
+++ b/ld/testsuite/ld-elfvers/vers5.c
@@ -41,10 +41,10 @@ new_foo()
}
-SYMVER(original_foo, foo@);
-SYMVER(old_foo, foo@VERS_1.1);
-SYMVER(old_foo1, foo@VERS_1.2);
-SYMVER(new_foo, foo@@VERS_1.2);
+FUNC_SYMVER(original_foo, foo@);
+FUNC_SYMVER(old_foo, foo@VERS_1.1);
+FUNC_SYMVER(old_foo1, foo@VERS_1.2);
+FUNC_SYMVER(new_foo, foo@@VERS_1.2);
int
main ()
diff --git a/ld/testsuite/ld-elfvers/vers6.c b/ld/testsuite/ld-elfvers/vers6.c
index cb1c93f..5b72626 100644
--- a/ld/testsuite/ld-elfvers/vers6.c
+++ b/ld/testsuite/ld-elfvers/vers6.c
@@ -20,7 +20,7 @@ main()
return 0;
}
-SYMVER(foo_1, show_foo@);
-SYMVER(foo_2, show_foo@VERS_1.1);
-SYMVER(foo_3, show_foo@VERS_1.2);
-SYMVER(foo_4, show_foo@VERS_2.0);
+FUNC_SYMVER(foo_1, show_foo@);
+FUNC_SYMVER(foo_2, show_foo@VERS_1.1);
+FUNC_SYMVER(foo_3, show_foo@VERS_1.2);
+FUNC_SYMVER(foo_4, show_foo@VERS_2.0);
diff --git a/ld/testsuite/ld-elfvers/vers6.sym b/ld/testsuite/ld-elfvers/vers6.sym
index ae68d72..10a3966 100644
--- a/ld/testsuite/ld-elfvers/vers6.sym
+++ b/ld/testsuite/ld-elfvers/vers6.sym
@@ -1,4 +1,4 @@
-0+ *F? *\*UND\* 0+ _?show_foo@
-0+ *F? *\*UND\* 0+ _?show_foo@VERS_1\.1
-0+ *F? *\*UND\* 0+ _?show_foo@VERS_1\.2
-0+ *F? *\*UND\* 0+ _?show_foo@VERS_2\.0
+0+ *F? *\*UND\* 0+ \.?_?show_foo@
+0+ *F? *\*UND\* 0+ \.?_?show_foo@VERS_1\.1
+0+ *F? *\*UND\* 0+ \.?_?show_foo@VERS_1\.2
+0+ *F? *\*UND\* 0+ \.?_?show_foo@VERS_2\.0
diff --git a/ld/testsuite/ld-elfvers/vers7a.c b/ld/testsuite/ld-elfvers/vers7a.c
index f3d2a2d..8fcad79 100644
--- a/ld/testsuite/ld-elfvers/vers7a.c
+++ b/ld/testsuite/ld-elfvers/vers7a.c
@@ -16,5 +16,5 @@ __b_internal (int e)
return e + 42;
}
-SYMVER(__a_internal, hide_a@@VERS_1);
-SYMVER(__b_internal, show_b@@VERS_1);
+FUNC_SYMVER(__a_internal, hide_a@@VERS_1);
+FUNC_SYMVER(__b_internal, show_b@@VERS_1);
diff --git a/ld/testsuite/ld-elfvers/vers7a.sym b/ld/testsuite/ld-elfvers/vers7a.sym
index ef8d04b..8b37561 100644
--- a/ld/testsuite/ld-elfvers/vers7a.sym
+++ b/ld/testsuite/ld-elfvers/vers7a.sym
@@ -1,2 +1,2 @@
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?hide_a@@VERS_1
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_b@@VERS_1
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?hide_a@@VERS_1
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_b@@VERS_1
diff --git a/ld/testsuite/ld-elfvers/vers9.c b/ld/testsuite/ld-elfvers/vers9.c
index 5079364..f70b0af 100644
--- a/ld/testsuite/ld-elfvers/vers9.c
+++ b/ld/testsuite/ld-elfvers/vers9.c
@@ -43,7 +43,7 @@ main()
return 0;
}
-SYMVER(original_foo, foo@);
-SYMVER(old_foo, foo@VERS_1.1);
-SYMVER(old_foo1, foo@VERS_1.2);
-SYMVER(new_foo, foo@@VERS_1.2);
+FUNC_SYMVER(original_foo, foo@);
+FUNC_SYMVER(old_foo, foo@VERS_1.1);
+FUNC_SYMVER(old_foo1, foo@VERS_1.2);
+FUNC_SYMVER(new_foo, foo@@VERS_1.2);
diff --git a/ld/testsuite/ld-elfvers/vers9.sym b/ld/testsuite/ld-elfvers/vers9.sym
index 2d46c47..28afa0d 100644
--- a/ld/testsuite/ld-elfvers/vers9.sym
+++ b/ld/testsuite/ld-elfvers/vers9.sym
@@ -1,4 +1,4 @@
-0+ *F? *\*UND\* 0+ _?foo@VERS_1\.2
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@@VERS_1\.2
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@VERS_1\.1
+0+ *F? *\*UND\* 0+ \.?_?foo@VERS_1\.2
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@@VERS_1\.2
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@VERS_1\.1
diff --git a/ld/testsuite/ld-elfweak/elfweak.exp b/ld/testsuite/ld-elfweak/elfweak.exp
index 31801eb..d3037e1 100644
--- a/ld/testsuite/ld-elfweak/elfweak.exp
+++ b/ld/testsuite/ld-elfweak/elfweak.exp
@@ -82,9 +82,9 @@ proc objdump_symstuff { objdump object expectfile } {
if ![info exists SOBJDUMP_FLAGS] { set SOBJDUMP_FLAGS "" }
- verbose -log "$objdump $SOBJDUMP_FLAGS $object | grep foo$ > $tmpdir/objdump.out"
-
- catch "exec $objdump $SOBJDUMP_FLAGS $object | grep foo$ > $tmpdir/objdump.out" exec_output
+ set cmd "$objdump $SOBJDUMP_FLAGS $object | sed -n {s/^\\(\[0-9a-f\]* *\\)\\(\[gw\]\\)\\( *\\)\\(\[FO\]\\)/\\1\\2\\4\\3/;/foo$/p} > $tmpdir/objdump.out"
+ verbose -log $cmd
+ catch "exec $cmd" exec_output
set exec_output [prune_warnings $exec_output]
if [string match "" $exec_output] then {
@@ -123,7 +123,8 @@ proc objdump_symstuff { objdump object expectfile } {
close $file_a
while { [gets $file_b line] != $eof } {
- if [regexp "^#.*$" $line] then {
+ if [regexp {\.text.* \.[^ ]*$} $line] then {
+ # Discard defined powerpc64 dot-symbols
continue
} else {
lappend list_b $line
@@ -177,9 +178,9 @@ proc objdump_dynsymstuff { objdump object expectfile } {
if ![info exists DOBJDUMP_FLAGS] { set DOBJDUMP_FLAGS "" }
- verbose -log "$objdump $DOBJDUMP_FLAGS $object | grep foo$ > $tmpdir/objdump.out"
-
- catch "exec $objdump $DOBJDUMP_FLAGS $object | grep foo$ > $tmpdir/objdump.out" exec_output
+ set cmd "$objdump $DOBJDUMP_FLAGS $object | grep foo$ > $tmpdir/objdump.out"
+ verbose -log $cmd
+ catch "exec $cmd" exec_output
set exec_output [prune_warnings $exec_output]
if [string match "" $exec_output] then {
@@ -218,7 +219,8 @@ proc objdump_dynsymstuff { objdump object expectfile } {
close $file_a
while { [gets $file_b line] != $eof } {
- if [regexp "^#.*$" $line] then {
+ if [regexp {\.text.* \.[^ ]*$} $line] then {
+ # Discard defined powerpc64 dot-symbols
continue
} else {
lappend list_b $line
diff --git a/ld/testsuite/ld-elfweak/strong.sym b/ld/testsuite/ld-elfweak/strong.sym
index 531d358..27d0daa 100644
--- a/ld/testsuite/ld-elfweak/strong.sym
+++ b/ld/testsuite/ld-elfweak/strong.sym
@@ -1 +1 @@
-[0-9a-f]+[ ]+g[ ]+F[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+(0x[0-9a-f]+ )?foo
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ +(0x[0-9a-f]+ )?foo
diff --git a/ld/testsuite/ld-elfweak/strongcomm.sym b/ld/testsuite/ld-elfweak/strongcomm.sym
index 2a8c6cd..c5fe85c 100644
--- a/ld/testsuite/ld-elfweak/strongcomm.sym
+++ b/ld/testsuite/ld-elfweak/strongcomm.sym
@@ -1,2 +1,2 @@
-[0-9a-f]+[ ]+g[ ]+O[ ]+\.s?bss[ ]+[0-9a-f]+[ ]+deallocate_foo
-[0-9a-f]+[ ]+g[ ]+F[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+(0x[0-9a-f]+ )?foo
+[0-9a-f]+ gO +\.s?bss [0-9a-f]+ +deallocate_foo
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ +(0x[0-9a-f]+ )?foo
diff --git a/ld/testsuite/ld-elfweak/strongdata.sym b/ld/testsuite/ld-elfweak/strongdata.sym
index 88aa1c9..d09722a 100644
--- a/ld/testsuite/ld-elfweak/strongdata.sym
+++ b/ld/testsuite/ld-elfweak/strongdata.sym
@@ -1,2 +1,2 @@
-[0-9a-f]+[ ]+g[ ]+O[ ]+\.s?(data|bss)[ ]+[0-9a-f]+[ ]+deallocate_foo
-[0-9a-f]+[ ]+g[ ]+F[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+(0x[0-9a-f]+ )?foo
+[0-9a-f]+ gO +\.s?(data|bss) [0-9a-f]+ +deallocate_foo
+[0-9a-f]+ g(F +\.text|F? +\.opd) [0-9a-f]+ +(0x[0-9a-f]+ )?foo
diff --git a/ld/testsuite/ld-ifunc/pr16467b.c b/ld/testsuite/ld-ifunc/pr16467b.c
index 264f6cf..20a73e2 100644
--- a/ld/testsuite/ld-ifunc/pr16467b.c
+++ b/ld/testsuite/ld-ifunc/pr16467b.c
@@ -1,5 +1,8 @@
void new_sd_get_seats(void);
__asm__(".symver new_sd_get_seats,sd_get_seats@LIBSYSTEMD_209");
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+__asm__(".symver .new_sd_get_seats,.sd_get_seats@LIBSYSTEMD_209");
+#endif
void (*resolve_sd_get_seats(void)) (void) __asm__ ("sd_get_seats");
void (*resolve_sd_get_seats(void)) (void) {
return new_sd_get_seats;
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
index 29f2117..4c853fd 100644
--- a/ld/testsuite/ld-plugin/lto.exp
+++ b/ld/testsuite/ld-plugin/lto.exp
@@ -149,7 +149,7 @@ set lto_link_tests [list \
{pr12760b.c} {} "libpr12760.a"] \
[list "PR ld/12760" \
"-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12760a.o -Wl,--start-group tmpdir/libpr12760.a -Wl,--end-group" "" \
- {dummy.c} {} "pr12760.exe" "c" "pr12760a.c:6: warning: Bad bar"] \
+ {dummy.c} {} "pr12760.exe" "c" "pr12760a.c:6: warning: Bad \\.?bar"] \
[list "Build libpr13183.a" \
"-T" "-flto -O2 $lto_fat" \
{pr13183a.c} {} "libpr13183.a"] \
@@ -392,21 +392,21 @@ if { [is_elf_format] && [check_lto_shared_available] } {
run_cc_link_tests $lto_link_elf_tests
set testname "PR ld/15146 (2)"
set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin -Wl,-rpath-link,. -Wl,--no-copy-dt-needed-entries -Wl,--no-as-needed tmpdir/pr15146d.o tmpdir/pr15146c.so"]
- if { [ regexp "undefined reference to symbol 'xxx'" $exec_output ] } {
+ if { [ regexp "undefined reference to symbol '\\.?xxx'" $exec_output ] } {
pass $testname
} {
fail $testname
}
set testname "PR ld/16746 (3)"
set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin tmpdir/pr16746b.o tmpdir/pr16746d.o"]
- if { [ regexp "warning: foobar" $exec_output ] && ![ regexp "symbol from plugin" $exec_output ] } {
+ if { [ regexp "warning: \\.?foobar" $exec_output ] && ![ regexp "symbol from plugin" $exec_output ] } {
pass $testname
} {
fail $testname
}
set testname "PR ld/16746 (4)"
set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin tmpdir/pr16746d.o tmpdir/pr16746b.o"]
- if { [ regexp "warning: foobar" $exec_output ] && ![ regexp "symbol from plugin" $exec_output ] } {
+ if { [ regexp "warning: \\.?foobar" $exec_output ] && ![ regexp "symbol from plugin" $exec_output ] } {
pass $testname
} {
fail $testname
@@ -455,7 +455,7 @@ if { [at_least_gcc_version 4 7] } {
}
set testname "PR ld/12942 (3)"
set exec_output [run_host_cmd "$CXX" "-O2 -flto -fuse-linker-plugin tmpdir/pr12942b.o tmpdir/pr12942a.o"]
- if { [ regexp "undefined reference to `link_error\\(\\)'" $exec_output ] } {
+ if { [ regexp "undefined reference to `\\.?link_error\\(\\)'" $exec_output ] } {
pass $testname
} {
fail $testname
@@ -492,7 +492,7 @@ proc pr20103 {cflags libs} {
set testname "PR ld/20103 ($cflags $libs)"
set exec_output [run_host_cmd "$CC" "$cflags $libs"]
- if { [ regexp "undefined reference to `dead'" $exec_output ] } {
+ if { [ regexp "undefined reference to `\\.?dead'" $exec_output ] } {
pass "$testname (1)"
} {
fail "$testname (1)"
diff --git a/ld/testsuite/ld-plugin/plugin-13.d b/ld/testsuite/ld-plugin/plugin-13.d
index ebfdc11..55dea65 100644
--- a/ld/testsuite/ld-plugin/plugin-13.d
+++ b/ld/testsuite/ld-plugin/plugin-13.d
@@ -23,5 +23,5 @@ hook called: claim_file tmpdir/main.o \[@0/.* not claimed
hook called: claim_file .*/ld/testsuite/ld-plugin/func.c \[@0/.* CLAIMED
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
#...
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
#...
diff --git a/ld/testsuite/ld-plugin/plugin-14.d b/ld/testsuite/ld-plugin/plugin-14.d
index 96e1703..c9dc5f2 100644
--- a/ld/testsuite/ld-plugin/plugin-14.d
+++ b/ld/testsuite/ld-plugin/plugin-14.d
@@ -28,6 +28,6 @@ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
#...
hook called: all symbols read.
tmpdir/main.o: In function `main':
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
hook called: cleanup.
#...
diff --git a/ld/testsuite/ld-plugin/plugin-15.d b/ld/testsuite/ld-plugin/plugin-15.d
index ec7e52c..0481c5f 100644
--- a/ld/testsuite/ld-plugin/plugin-15.d
+++ b/ld/testsuite/ld-plugin/plugin-15.d
@@ -29,6 +29,6 @@ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
#...
hook called: all symbols read.
tmpdir/main.o: In function `main':
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
hook called: cleanup.
#...
diff --git a/ld/testsuite/ld-plugin/plugin-16.d b/ld/testsuite/ld-plugin/plugin-16.d
index 479785e..ae54f0c 100644
--- a/ld/testsuite/ld-plugin/plugin-16.d
+++ b/ld/testsuite/ld-plugin/plugin-16.d
@@ -33,6 +33,6 @@ hook called: all symbols read.
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
tmpdir/main.o: In function `main':
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
hook called: cleanup.
#...
diff --git a/ld/testsuite/ld-plugin/plugin-20.d b/ld/testsuite/ld-plugin/plugin-20.d
index dbee504..373a3ff 100644
--- a/ld/testsuite/ld-plugin/plugin-20.d
+++ b/ld/testsuite/ld-plugin/plugin-20.d
@@ -3,5 +3,5 @@ Input: func.c \(tmpdir/libfunc.a\)
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
tmpdir/main.o: In function `main':
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
hook called: cleanup.
diff --git a/ld/testsuite/ld-plugin/plugin-21.d b/ld/testsuite/ld-plugin/plugin-21.d
index ebfa6c5..7b922c1 100644
--- a/ld/testsuite/ld-plugin/plugin-21.d
+++ b/ld/testsuite/ld-plugin/plugin-21.d
@@ -3,5 +3,5 @@ Input: .*/ld/testsuite/ld-plugin/func.c \(.*/ld/testsuite/ld-plugin/func.c\)
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
tmpdir/main.o: In function `main':
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
hook called: cleanup.
diff --git a/ld/testsuite/ld-plugin/plugin-22.d b/ld/testsuite/ld-plugin/plugin-22.d
index 07a47ac..1512676 100644
--- a/ld/testsuite/ld-plugin/plugin-22.d
+++ b/ld/testsuite/ld-plugin/plugin-22.d
@@ -3,5 +3,5 @@ hook called: all symbols read.
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
tmpdir/main.o: In function `main':
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
hook called: cleanup.
diff --git a/ld/testsuite/ld-plugin/plugin-23.d b/ld/testsuite/ld-plugin/plugin-23.d
index 45e4052..e05f7bd 100644
--- a/ld/testsuite/ld-plugin/plugin-23.d
+++ b/ld/testsuite/ld-plugin/plugin-23.d
@@ -3,5 +3,5 @@ hook called: all symbols read.
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
tmpdir/main.o: In function `main':
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
hook called: cleanup.
diff --git a/ld/testsuite/ld-plugin/plugin-6.d b/ld/testsuite/ld-plugin/plugin-6.d
index 07e54c6..b4a1e9c 100644
--- a/ld/testsuite/ld-plugin/plugin-6.d
+++ b/ld/testsuite/ld-plugin/plugin-6.d
@@ -28,6 +28,6 @@ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
#...
hook called: all symbols read.
tmpdir/main.o: In function `main':
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
hook called: cleanup.
#...
diff --git a/ld/testsuite/ld-plugin/plugin-7.d b/ld/testsuite/ld-plugin/plugin-7.d
index d1c159c..54259db 100644
--- a/ld/testsuite/ld-plugin/plugin-7.d
+++ b/ld/testsuite/ld-plugin/plugin-7.d
@@ -29,6 +29,6 @@ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
#...
hook called: all symbols read.
tmpdir/main.o: In function `main':
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
hook called: cleanup.
#...
diff --git a/ld/testsuite/ld-plugin/plugin-8.d b/ld/testsuite/ld-plugin/plugin-8.d
index 2c7a15b..c1dd25a 100644
--- a/ld/testsuite/ld-plugin/plugin-8.d
+++ b/ld/testsuite/ld-plugin/plugin-8.d
@@ -33,6 +33,6 @@ hook called: all symbols read.
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
tmpdir/main.o: In function `main':
-.*main.c.*: undefined reference to `func'
+.*main.c.*: undefined reference to `\.?func'
hook called: cleanup.
#...
diff --git a/ld/testsuite/ld-plugin/plugin.exp b/ld/testsuite/ld-plugin/plugin.exp
index a6946c4..9990e82 100644
--- a/ld/testsuite/ld-plugin/plugin.exp
+++ b/ld/testsuite/ld-plugin/plugin.exp
@@ -106,12 +106,16 @@ if { $can_compile && \
set failed_compile 1
}
+set dotsym 0
if { $can_compile && !$failed_compile } {
# Find out if symbols have prefix on this platform before setting tests.
catch "exec $NM tmpdir/func.o" plugin_nm_output
if { [regexp "_func" "$plugin_nm_output"] } {
set _ "_"
}
+ if { [regexp "\\.func" "$plugin_nm_output"] } {
+ set dotsym 1
+ }
}
set testobjfiles "tmpdir/main.o tmpdir/func.o tmpdir/text.o"
@@ -121,6 +125,9 @@ set testsrcfiles_notext "tmpdir/main.o $srcdir/$subdir/func.c"
# Rather than having libs we just define dummy values for anything
# we may need to link a target exe; we aren't going to run it anyway.
set libs "[ld_simple_link_defsyms] --defsym ${_}printf=${_}main --defsym ${_}puts=${_}main"
+if { $dotsym } {
+ append libs " --defsym .printf=.main --defsym .puts=.main"
+}
set plugin_tests [list \
[list "load plugin" "-plugin $plugin_path \
diff --git a/ld/testsuite/ld-plugin/pr12760b.c b/ld/testsuite/ld-plugin/pr12760b.c
index 29a9fd8..56bc3cf 100644
--- a/ld/testsuite/ld-plugin/pr12760b.c
+++ b/ld/testsuite/ld-plugin/pr12760b.c
@@ -1,7 +1,8 @@
-#define linker_warning(x, msg) \
- static const char __warn_##x[] \
- __attribute__((used, section(".gnu.warning." #x))) \
- = msg
-
-void bar (void) {}
-linker_warning(bar, "Bad bar");
+void bar (void) {}
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+static const char __warn_bar[]
+__attribute__ ((used, section (".gnu.warning..bar"))) = "Bad bar";
+#else
+static const char __warn_bar[]
+__attribute__ ((used, section (".gnu.warning.bar"))) = "Bad bar";
+#endif
diff --git a/ld/testsuite/ld-plugin/pr16746a.c b/ld/testsuite/ld-plugin/pr16746a.c
index 1705ef1..425cffa 100644
--- a/ld/testsuite/ld-plugin/pr16746a.c
+++ b/ld/testsuite/ld-plugin/pr16746a.c
@@ -1,3 +1,7 @@
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
static const char __evoke_link_warning_foobar[]
- __attribute__ ((used, section (".gnu.warning.foobar\n\t#")))
- = "foobar";
+__attribute__ ((used, section (".gnu.warning..foobar\n\t#"))) = "foobar";
+#else
+static const char __evoke_link_warning_foobar[]
+__attribute__ ((used, section (".gnu.warning.foobar\n\t#"))) = "foobar";
+#endif
diff --git a/ld/testsuite/ld-plugin/pr16746b.c b/ld/testsuite/ld-plugin/pr16746b.c
index c3b7a78..5db5d1d 100644
--- a/ld/testsuite/ld-plugin/pr16746b.c
+++ b/ld/testsuite/ld-plugin/pr16746b.c
@@ -1,5 +1,11 @@
+#if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
+static const char __evoke_link_warning_foobar[]
+ __attribute__ ((used, section (".gnu.warning..foobar\n\t#")))
+ = "foobar";
+#else
static const char __evoke_link_warning_foobar[]
__attribute__ ((used, section (".gnu.warning.foobar\n\t#")))
= "foobar";
+#endif
void foobar (void) {}