aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/testsuite/ChangeLog29
-rw-r--r--ld/testsuite/ld-elf/pr9676.rd2
-rw-r--r--ld/testsuite/ld-elf/pr9679.rd2
-rw-r--r--ld/testsuite/ld-elfvers/vers.h9
-rw-r--r--ld/testsuite/ld-elfvers/vers1.c18
-rw-r--r--ld/testsuite/ld-elfvers/vers1.dsym12
-rw-r--r--ld/testsuite/ld-elfvers/vers1.sym8
-rw-r--r--ld/testsuite/ld-elfvers/vers15.c7
-rw-r--r--ld/testsuite/ld-elfvers/vers15.dsym6
-rw-r--r--ld/testsuite/ld-elfvers/vers15.sym6
-rw-r--r--ld/testsuite/ld-elfvers/vers16.dsym4
-rw-r--r--ld/testsuite/ld-elfvers/vers16a.dsym4
-rw-r--r--ld/testsuite/ld-elfvers/vers17.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers18.c10
-rw-r--r--ld/testsuite/ld-elfvers/vers18.dsym8
-rw-r--r--ld/testsuite/ld-elfvers/vers18.sym8
-rw-r--r--ld/testsuite/ld-elfvers/vers19.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers2.dsym4
-rw-r--r--ld/testsuite/ld-elfvers/vers20.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers21.c10
-rw-r--r--ld/testsuite/ld-elfvers/vers21.dsym6
-rw-r--r--ld/testsuite/ld-elfvers/vers21.sym6
-rw-r--r--ld/testsuite/ld-elfvers/vers22.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers22a.c4
-rw-r--r--ld/testsuite/ld-elfvers/vers22a.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers22a.sym2
-rw-r--r--ld/testsuite/ld-elfvers/vers22b.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers23.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers23a.c4
-rw-r--r--ld/testsuite/ld-elfvers/vers23a.dsym4
-rw-r--r--ld/testsuite/ld-elfvers/vers23a.sym2
-rw-r--r--ld/testsuite/ld-elfvers/vers23b.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers23d.dsym4
-rw-r--r--ld/testsuite/ld-elfvers/vers24.rd6
-rw-r--r--ld/testsuite/ld-elfvers/vers24a.c4
-rw-r--r--ld/testsuite/ld-elfvers/vers24c.c4
-rw-r--r--ld/testsuite/ld-elfvers/vers25a.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers26a.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers27a.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers27b.c3
-rw-r--r--ld/testsuite/ld-elfvers/vers27d.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers27d.sym2
-rw-r--r--ld/testsuite/ld-elfvers/vers27d1.c4
-rw-r--r--ld/testsuite/ld-elfvers/vers27d4.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers28b.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers28c.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers29.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers3.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers30.dsym8
-rw-r--r--ld/testsuite/ld-elfvers/vers31.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers32a.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers32b.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers4.c3
-rw-r--r--ld/testsuite/ld-elfvers/vers4.sym2
-rw-r--r--ld/testsuite/ld-elfvers/vers4a.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers4a.sym2
-rw-r--r--ld/testsuite/ld-elfvers/vers5.c10
-rw-r--r--ld/testsuite/ld-elfvers/vers6.c9
-rw-r--r--ld/testsuite/ld-elfvers/vers6.dsym8
-rw-r--r--ld/testsuite/ld-elfvers/vers6.sym8
-rw-r--r--ld/testsuite/ld-elfvers/vers7a.c6
-rw-r--r--ld/testsuite/ld-elfvers/vers7a.dsym2
-rw-r--r--ld/testsuite/ld-elfvers/vers7a.sym4
-rw-r--r--ld/testsuite/ld-elfvers/vers9.c10
-rw-r--r--ld/testsuite/ld-elfvers/vers9.dsym4
-rw-r--r--ld/testsuite/ld-elfvers/vers9.sym8
66 files changed, 196 insertions, 132 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 6920a37..ade0df6 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,32 @@
+2010-12-10 Mike Frysinger <vapier@gentoo.org>
+
+ * ld-elfvers/vers.h: New file.
+ * ld-elfvers/vers1.c: Include vers.h. Change asm(.symver) to SYMVER().
+ * ld-elfvers/vers4.c, ld-elfvers/vers5.c, ld-elfvers/vers6.c,
+ ld-elfvers/vers7a.c, ld-elfvers/vers9.c, ld-elfvers/vers15.c,
+ ld-elfvers/vers18.c, ld-elfvers/vers21.c, ld-elfvers/vers22a.c,
+ ld-elfvers/vers23a.c, ld-elfvers/vers24a.c, ld-elfvers/vers24c.c,
+ ld-elfvers/vers27d1.c: Likewise.
+
+ * ld-elf/pr9676.rd: Include _? in symbol match
+ * ld-elf/pr9676.rd, ld-elf/pr9679.rd, ld-elfvers/vers1.dsym,
+ ld-elfvers/vers1.sym, ld-elfvers/vers15.dsym, ld-elfvers/vers15.sym,
+ ld-elfvers/vers16.dsym, ld-elfvers/vers16a.dsym, ld-elfvers/vers17.dsym,
+ ld-elfvers/vers18.dsym, ld-elfvers/vers18.sym, ld-elfvers/vers19.dsym,
+ ld-elfvers/vers2.dsym, ld-elfvers/vers20.dsym, ld-elfvers/vers21.dsym,
+ ld-elfvers/vers21.sym, ld-elfvers/vers22.dsym, ld-elfvers/vers22a.dsym,
+ ld-elfvers/vers22a.sym, ld-elfvers/vers22b.dsym, ld-elfvers/vers23.dsym,
+ ld-elfvers/vers23a.dsym, ld-elfvers/vers23a.sym, ld-elfvers/vers23b.dsym,
+ ld-elfvers/vers23d.dsym, ld-elfvers/vers24.rd, ld-elfvers/vers25a.dsym,
+ ld-elfvers/vers26a.dsym, ld-elfvers/vers27a.dsym, ld-elfvers/vers27d.dsym,
+ ld-elfvers/vers27d.sym, ld-elfvers/vers27d4.dsym, ld-elfvers/vers28b.dsym,
+ ld-elfvers/vers28c.dsym, ld-elfvers/vers29.dsym, ld-elfvers/vers3.dsym,
+ ld-elfvers/vers30.dsym, ld-elfvers/vers31.dsym, ld-elfvers/vers32a.dsym,
+ ld-elfvers/vers32b.dsym, ld-elfvers/vers4.sym, ld-elfvers/vers4a.dsym,
+ ld-elfvers/vers4a.sym, ld-elfvers/vers6.dsym, ld-elfvers/vers6.sym,
+ ld-elfvers/vers7a.dsym, ld-elfvers/vers7a.sym, ld-elfvers/vers9.dsym,
+ ld-elfvers/vers9.sym: Likewise.
+
2010-12-05 H.J. Lu <hongjiu.lu@intel.com>
* ld-plugin/plugin-vis-1.d: Updated.
diff --git a/ld/testsuite/ld-elf/pr9676.rd b/ld/testsuite/ld-elf/pr9676.rd
index 44a11ce..2d832db 100644
--- a/ld/testsuite/ld-elf/pr9676.rd
+++ b/ld/testsuite/ld-elf/pr9676.rd
@@ -1,5 +1,5 @@
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
#...
- +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +FUNC +LOCAL +DEFAULT +[0-9]+ +foo
+ +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +FUNC +LOCAL +DEFAULT +[0-9]+ +_?foo
#...
diff --git a/ld/testsuite/ld-elf/pr9679.rd b/ld/testsuite/ld-elf/pr9679.rd
index 44a11ce..2d832db 100644
--- a/ld/testsuite/ld-elf/pr9679.rd
+++ b/ld/testsuite/ld-elf/pr9679.rd
@@ -1,5 +1,5 @@
Symbol table '\.dynsym' contains [0-9]+ entries:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
#...
- +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +FUNC +LOCAL +DEFAULT +[0-9]+ +foo
+ +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +FUNC +LOCAL +DEFAULT +[0-9]+ +_?foo
#...
diff --git a/ld/testsuite/ld-elfvers/vers.h b/ld/testsuite/ld-elfvers/vers.h
new file mode 100644
index 0000000..4455527
--- /dev/null
+++ b/ld/testsuite/ld-elfvers/vers.h
@@ -0,0 +1,9 @@
+/* Add the symbol prefix to the symbol as needed.
+ Usage: SYMPFX(foo); */
+#define __SYMPFX(pfx, sym) #pfx sym
+#define _SYMPFX(pfx, sym) __SYMPFX(pfx, sym)
+#define SYMPFX(sym) _SYMPFX(__USER_LABEL_PREFIX__, #sym)
+
+/* Generate a .symver reference with symbol prefixes.
+ Usage: SYMVER(foo, foobar@ver); */
+#define SYMVER(name, name2) __asm__(".symver " SYMPFX(name) "," SYMPFX(name2))
diff --git a/ld/testsuite/ld-elfvers/vers1.c b/ld/testsuite/ld-elfvers/vers1.c
index c27bc3b..86e2bd2 100644
--- a/ld/testsuite/ld-elfvers/vers1.c
+++ b/ld/testsuite/ld-elfvers/vers1.c
@@ -3,6 +3,8 @@
* a bunch of definitions of the same symbol, and we can theoretically
* then link applications against varying sets of these.
*/
+#include "vers.h"
+
const char * show_bar1 = "asdf";
const char * show_bar2 = "asdf";
@@ -47,10 +49,10 @@ hide_new_foo()
}
-__asm__(".symver hide_original_foo,show_foo@");
-__asm__(".symver hide_old_foo,show_foo@VERS_1.1");
-__asm__(".symver hide_old_foo1,show_foo@VERS_1.2");
-__asm__(".symver hide_new_foo,show_foo@@VERS_2.0");
+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);
@@ -63,7 +65,7 @@ hide_new_bogus_foo()
return 1000+bar();
}
-__asm__(".symver hide_new_bogus_foo,show_foo@VERS_2.2");
+SYMVER(hide_new_bogus_foo, show_foo@VERS_2.2);
#endif
@@ -81,8 +83,8 @@ xyzzz()
bar33();
}
-__asm__(".symver new2_foo,fooVERS_2.0");
-__asm__(".symver bar33,bar@@VERS_2.0");
+SYMVER(new2_foo, fooVERS_2.0);
+SYMVER(bar33, bar@@VERS_2.0);
#endif
#ifdef DO_TEST12
@@ -97,5 +99,5 @@ xyzzz()
bar33();
}
-__asm__(".symver bar33,bar@@VERS_2.0");
+SYMVER(bar33, bar@@VERS_2.0);
#endif
diff --git a/ld/testsuite/ld-elfvers/vers1.dsym b/ld/testsuite/ld-elfvers/vers1.dsym
index d33ab20..9d19752 100644
--- a/ld/testsuite/ld-elfvers/vers1.dsym
+++ b/ld/testsuite/ld-elfvers/vers1.dsym
@@ -1,9 +1,9 @@
0+ g +DO \*ABS\* 0+ +VERS_1\.1 +VERS_1\.1
0+ g +DO \*ABS\* 0+ +VERS_1\.2 +VERS_1\.2
0+ g +DO \*ABS\* 0+ +VERS_2\.0 +VERS_2\.0
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(Base\) +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.1\) +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.2\) +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ g +DO (\.s?data|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +show_bar1
-[0-9a-f]+ g +DO (\.s?data|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +show_bar2
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(Base\) +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.1\) +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.2\) +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ g +DO (\.s?data|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +_?show_bar1
+[0-9a-f]+ g +DO (\.s?data|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +_?show_bar2
diff --git a/ld/testsuite/ld-elfvers/vers1.sym b/ld/testsuite/ld-elfvers/vers1.sym
index ed589e8..f2bb9db 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_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|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@
+[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|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@@VERS_2\.0
diff --git a/ld/testsuite/ld-elfvers/vers15.c b/ld/testsuite/ld-elfvers/vers15.c
index 4e22cac..2457d29 100644
--- a/ld/testsuite/ld-elfvers/vers15.c
+++ b/ld/testsuite/ld-elfvers/vers15.c
@@ -3,6 +3,7 @@
* that we always get the right one.
*/
#include <stdio.h>
+#include "vers.h"
int
foo_1()
@@ -31,6 +32,6 @@ main()
return 0;
}
-__asm__(".symver foo_1,show_foo@");
-__asm__(".symver foo_2,show_foo@VERS_1.1");
-__asm__(".symver foo_3,show_foo@@VERS_1.2");
+SYMVER(foo_1, show_foo@);
+SYMVER(foo_2, show_foo@VERS_1.1);
+SYMVER(foo_3, show_foo@@VERS_1.2);
diff --git a/ld/testsuite/ld-elfvers/vers15.dsym b/ld/testsuite/ld-elfvers/vers15.dsym
index fc4c996..750c358 100644
--- a/ld/testsuite/ld-elfvers/vers15.dsym
+++ b/ld/testsuite/ld-elfvers/vers15.dsym
@@ -1,5 +1,5 @@
0+ g +DO \*ABS\* 0+ +VERS_1\.1 +VERS_1\.1
0+ g +DO \*ABS\* 0+ +VERS_1\.2 +VERS_1\.2
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(Base\) +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.1\) +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1\.2 +(0x[0-9a-f]+ )?show_foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(Base\) +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.1\) +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1\.2 +(0x[0-9a-f]+ )?_?show_foo
diff --git a/ld/testsuite/ld-elfvers/vers15.sym b/ld/testsuite/ld-elfvers/vers15.sym
index ba9f83e..a642c9d 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\.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|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\.1
+[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@@VERS_1\.2
diff --git a/ld/testsuite/ld-elfvers/vers16.dsym b/ld/testsuite/ld-elfvers/vers16.dsym
index 6733ece..8ee4918 100644
--- a/ld/testsuite/ld-elfvers/vers16.dsym
+++ b/ld/testsuite/ld-elfvers/vers16.dsym
@@ -1,2 +1,2 @@
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+( +Base +)? (0x[0-9a-f]+ )?show_bar
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +(0x[0-9a-f]+ )?show_foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+( +Base +)? (0x[0-9a-f]+ )?_?show_bar
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +(0x[0-9a-f]+ )?_?show_foo
diff --git a/ld/testsuite/ld-elfvers/vers16a.dsym b/ld/testsuite/ld-elfvers/vers16a.dsym
index aaca9f5..c38d71a 100644
--- a/ld/testsuite/ld-elfvers/vers16a.dsym
+++ b/ld/testsuite/ld-elfvers/vers16a.dsym
@@ -1,3 +1,3 @@
[0-9a-f]+ g +DO (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1\.1 +VERS_1\.1
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1\.1 +(0x[0-9a-f]+ )?show_bar
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +Base +(0x[0-9a-f]+ )?show_foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1\.1 +(0x[0-9a-f]+ )?_?show_bar
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +Base +(0x[0-9a-f]+ )?_?show_foo
diff --git a/ld/testsuite/ld-elfvers/vers17.dsym b/ld/testsuite/ld-elfvers/vers17.dsym
index 9810659..4cbb334 100644
--- a/ld/testsuite/ld-elfvers/vers17.dsym
+++ b/ld/testsuite/ld-elfvers/vers17.dsym
@@ -1,2 +1,2 @@
0+ g +DO \*ABS\* 0+ +VERS_2\.0 +VERS_2\.0
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?show_foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?_?show_foo
diff --git a/ld/testsuite/ld-elfvers/vers18.c b/ld/testsuite/ld-elfvers/vers18.c
index 25dcc25..9965b88 100644
--- a/ld/testsuite/ld-elfvers/vers18.c
+++ b/ld/testsuite/ld-elfvers/vers18.c
@@ -1,3 +1,5 @@
+#include "vers.h"
+
int
bar ()
{
@@ -36,7 +38,7 @@ hide_new_foo ()
return 1000 + bar ();
}
-__asm__(".symver hide_original_foo,show_foo@");
-__asm__(".symver hide_old_foo,show_foo@VERS_1.1");
-__asm__(".symver hide_old_foo1,show_foo@VERS_1.2");
-__asm__(".symver hide_new_foo,show_foo@@VERS_2.0");
+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);
diff --git a/ld/testsuite/ld-elfvers/vers18.dsym b/ld/testsuite/ld-elfvers/vers18.dsym
index 49bd7b2..38071cb 100644
--- a/ld/testsuite/ld-elfvers/vers18.dsym
+++ b/ld/testsuite/ld-elfvers/vers18.dsym
@@ -1,7 +1,7 @@
0+ g +DO \*ABS\* 0+ +VERS_1\.1 +VERS_1\.1
0+ g +DO \*ABS\* 0+ +VERS_1\.2 +VERS_1\.2
0+ g +DO \*ABS\* 0+ +VERS_2\.0 +VERS_2\.0
-[0-9a-f]+ +w +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(Base\) +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ +w +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.1\) +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ +w +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.2\) +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ +w +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?show_foo
+[0-9a-f]+ +w +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(Base\) +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ +w +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.1\) +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ +w +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.2\) +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ +w +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?_?show_foo
diff --git a/ld/testsuite/ld-elfvers/vers18.sym b/ld/testsuite/ld-elfvers/vers18.sym
index bcc8882..0b1183c 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_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|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@
+[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|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?show_foo@@VERS_2\.0
diff --git a/ld/testsuite/ld-elfvers/vers19.dsym b/ld/testsuite/ld-elfvers/vers19.dsym
index 7396dee..a77f949 100644
--- a/ld/testsuite/ld-elfvers/vers19.dsym
+++ b/ld/testsuite/ld-elfvers/vers19.dsym
@@ -1 +1 @@
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?show_foo
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?_?show_foo
diff --git a/ld/testsuite/ld-elfvers/vers2.dsym b/ld/testsuite/ld-elfvers/vers2.dsym
index 63f15db..30ba91b 100644
--- a/ld/testsuite/ld-elfvers/vers2.dsym
+++ b/ld/testsuite/ld-elfvers/vers2.dsym
@@ -1,3 +1,3 @@
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?show_foo
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?_?show_foo
0+ g +DO \*ABS\* 0+ +VERS_XXX_1\.1 VERS_XXX_1\.1
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_XXX_1\.1 (0x[0-9a-f]+ )?show_xyzzy
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_XXX_1\.1 (0x[0-9a-f]+ )?_?show_xyzzy
diff --git a/ld/testsuite/ld-elfvers/vers20.dsym b/ld/testsuite/ld-elfvers/vers20.dsym
index 559170c..fc13955 100644
--- a/ld/testsuite/ld-elfvers/vers20.dsym
+++ b/ld/testsuite/ld-elfvers/vers20.dsym
@@ -1,2 +1,2 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS_1\.1[ ]+VERS_1\.1
-[0-9a-f]+[ ]+g[ ]+DO[ ]+\.s?bss[ ]+[0-9a-f]+[ ]+VERS_1\.1[ ]+show_foo
+[0-9a-f]+[ ]+g[ ]+DO[ ]+\.s?bss[ ]+[0-9a-f]+[ ]+VERS_1\.1[ ]+_?show_foo
diff --git a/ld/testsuite/ld-elfvers/vers21.c b/ld/testsuite/ld-elfvers/vers21.c
index 2879c7f..3a75b48 100644
--- a/ld/testsuite/ld-elfvers/vers21.c
+++ b/ld/testsuite/ld-elfvers/vers21.c
@@ -1,7 +1,9 @@
-__asm__(".symver _old_foo,foo@VERS.0");
-__asm__(".symver _old_bar,bar@VERS.0");
-__asm__(".symver _old_foobar,foobar@VERS.0");
-__asm__(".weak _old_bar");
+#include "vers.h"
+
+SYMVER(_old_foo, foo@VERS.0);
+SYMVER(_old_bar, bar@VERS.0);
+SYMVER(_old_foobar, foobar@VERS.0);
+__asm__(".weak " SYMPFX(_old_bar));
int
bar ()
diff --git a/ld/testsuite/ld-elfvers/vers21.dsym b/ld/testsuite/ld-elfvers/vers21.dsym
index 4cb2188..7800a0c 100644
--- a/ld/testsuite/ld-elfvers/vers21.dsym
+++ b/ld/testsuite/ld-elfvers/vers21.dsym
@@ -1,4 +1,4 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
-[0-9a-f]+[ ]+w[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+(0x[0-9a-f]+|)[ ]*bar
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+(0x[0-9a-f]+|)[ ]*foo
-[0-9a-f]+[ ]+g[ ]+DO[ ]+\.s?data[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+foobar
+[0-9a-f]+[ ]+w[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+(0x[0-9a-f]+|)[ ]*_?bar
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+(0x[0-9a-f]+|)[ ]*_?foo
+[0-9a-f]+[ ]+g[ ]+DO[ ]+\.s?data[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+_?foobar
diff --git a/ld/testsuite/ld-elfvers/vers21.sym b/ld/testsuite/ld-elfvers/vers21.sym
index e7de74f..e2b2038 100644
--- a/ld/testsuite/ld-elfvers/vers21.sym
+++ b/ld/testsuite/ld-elfvers/vers21.sym
@@ -1,3 +1,3 @@
-[0-9a-f]+[ ]+g[ ]+O[ ]+\.s?data[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?foobar@VERS\.0
-[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|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
diff --git a/ld/testsuite/ld-elfvers/vers22.dsym b/ld/testsuite/ld-elfvers/vers22.dsym
index 5dfa465..db2aeec 100644
--- a/ld/testsuite/ld-elfvers/vers22.dsym
+++ b/ld/testsuite/ld-elfvers/vers22.dsym
@@ -1 +1 @@
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS\.0 +(0x[0-9a-f]+ )?bar
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS\.0 +(0x[0-9a-f]+ )?_?bar
diff --git a/ld/testsuite/ld-elfvers/vers22a.c b/ld/testsuite/ld-elfvers/vers22a.c
index 288c820..bc5777b 100644
--- a/ld/testsuite/ld-elfvers/vers22a.c
+++ b/ld/testsuite/ld-elfvers/vers22a.c
@@ -1,4 +1,6 @@
-__asm__(".symver _old_bar,bar@VERS.0");
+#include "vers.h"
+
+SYMVER(_old_bar, bar@VERS.0);
void
_old_bar ()
diff --git a/ld/testsuite/ld-elfvers/vers22a.dsym b/ld/testsuite/ld-elfvers/vers22a.dsym
index af06123..0c8d027 100644
--- a/ld/testsuite/ld-elfvers/vers22a.dsym
+++ b/ld/testsuite/ld-elfvers/vers22a.dsym
@@ -1,2 +1,2 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+(0x[0-9a-f]+ )?bar
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+(0x[0-9a-f]+ )?_?bar
diff --git a/ld/testsuite/ld-elfvers/vers22a.sym b/ld/testsuite/ld-elfvers/vers22a.sym
index ff07708..c3f4150 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|opd)[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?_?bar@VERS.0
diff --git a/ld/testsuite/ld-elfvers/vers22b.dsym b/ld/testsuite/ld-elfvers/vers22b.dsym
index 88c31b3..47f0606 100644
--- a/ld/testsuite/ld-elfvers/vers22b.dsym
+++ b/ld/testsuite/ld-elfvers/vers22b.dsym
@@ -1,2 +1,2 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?bar
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?_?bar
diff --git a/ld/testsuite/ld-elfvers/vers23.dsym b/ld/testsuite/ld-elfvers/vers23.dsym
index 8c85a4a..dfd6a33 100644
--- a/ld/testsuite/ld-elfvers/vers23.dsym
+++ b/ld/testsuite/ld-elfvers/vers23.dsym
@@ -1 +1 @@
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS\.0 +(0x[0-9a-f]+ )?foo
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS\.0 +(0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers23a.c b/ld/testsuite/ld-elfvers/vers23a.c
index 250d6f9..13c8edd 100644
--- a/ld/testsuite/ld-elfvers/vers23a.c
+++ b/ld/testsuite/ld-elfvers/vers23a.c
@@ -1,4 +1,6 @@
-__asm__(".symver _old_bar,bar@VERS.0");
+#include "vers.h"
+
+SYMVER(_old_bar, bar@VERS.0);
void
_old_bar (void)
diff --git a/ld/testsuite/ld-elfvers/vers23a.dsym b/ld/testsuite/ld-elfvers/vers23a.dsym
index 4450665..04385b0 100644
--- a/ld/testsuite/ld-elfvers/vers23a.dsym
+++ b/ld/testsuite/ld-elfvers/vers23a.dsym
@@ -1,3 +1,3 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+(0x[0-9a-f]+ )?bar
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?foo
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+(0x[0-9a-f]+ )?_?bar
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers23a.sym b/ld/testsuite/ld-elfvers/vers23a.sym
index ff07708..c3f4150 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|opd)[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?_?bar@VERS.0
diff --git a/ld/testsuite/ld-elfvers/vers23b.dsym b/ld/testsuite/ld-elfvers/vers23b.dsym
index 88c31b3..47f0606 100644
--- a/ld/testsuite/ld-elfvers/vers23b.dsym
+++ b/ld/testsuite/ld-elfvers/vers23b.dsym
@@ -1,2 +1,2 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?bar
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?_?bar
diff --git a/ld/testsuite/ld-elfvers/vers23d.dsym b/ld/testsuite/ld-elfvers/vers23d.dsym
index b31b82b..ab5fbd8 100644
--- a/ld/testsuite/ld-elfvers/vers23d.dsym
+++ b/ld/testsuite/ld-elfvers/vers23d.dsym
@@ -1,2 +1,2 @@
-[0-9a-f]* DF \*UND\* [0-9a-f]* VERS.0 (0x[0-9a-f][0-9a-f] )?bar
-[0-9a-f]* DF \*UND\* [0-9a-f]* VERS.0 (0x[0-9a-f][0-9a-f] )?foo
+[0-9a-f]* DF \*UND\* [0-9a-f]* VERS.0 (0x[0-9a-f][0-9a-f] )?_?bar
+[0-9a-f]* DF \*UND\* [0-9a-f]* VERS.0 (0x[0-9a-f][0-9a-f] )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers24.rd b/ld/testsuite/ld-elfvers/vers24.rd
index e5b55b1..42e81e4 100644
--- a/ld/testsuite/ld-elfvers/vers24.rd
+++ b/ld/testsuite/ld-elfvers/vers24.rd
@@ -1,15 +1,15 @@
Relocation section .*
# Ensure there is a dynamic relocation against x
#...
-[0-9a-f]+ +[0-9a-f]+ R_.* +x(| \+ 0)
+[0-9a-f]+ +[0-9a-f]+ R_.* +_?x(| \+ 0)
#...
Symbol table '.dynsym' contains [0-9]+ entries:
# And ensure the dynamic symbol table contains at least x@VERS.0
# and foo@@VERS.0 symbols
#...
- +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ x|[0-9]+ +FUNC +GLOBAL +DEFAULT +[0-9]+ foo@)@VERS\.0
+ +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT +[0-9]+ _?foo@)@VERS\.0
#...
- +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ x|[0-9]+ +FUNC +GLOBAL +DEFAULT +[0-9]+ foo@)@VERS\.0
+ +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT +[0-9]+ _?foo@)@VERS\.0
#...
Symbol table '.symtab' contains [0-9]+ entries:
#pass
diff --git a/ld/testsuite/ld-elfvers/vers24a.c b/ld/testsuite/ld-elfvers/vers24a.c
index 7fef8d8..10073d4 100644
--- a/ld/testsuite/ld-elfvers/vers24a.c
+++ b/ld/testsuite/ld-elfvers/vers24a.c
@@ -1,5 +1,7 @@
/* Test whether .symver x, x@foo
causes relocations against x within the same shared library
to become dynamic relocations against x@foo. */
+#include "vers.h"
+
int x = 12;
-__asm__ (".symver x, x@VERS.0");
+SYMVER(x, x@VERS.0);
diff --git a/ld/testsuite/ld-elfvers/vers24c.c b/ld/testsuite/ld-elfvers/vers24c.c
index 267c424..6e69b33 100644
--- a/ld/testsuite/ld-elfvers/vers24c.c
+++ b/ld/testsuite/ld-elfvers/vers24c.c
@@ -1,8 +1,10 @@
/* Test whether .symver x, x@foo
causes relocations against x within the same shared library
to become dynamic relocations against x@foo. */
+#include "vers.h"
+
int x = 12;
-__asm__ (".symver x, x@VERS.0");
+SYMVER(x, x@VERS.0);
void foo (void)
{
x = 24;
diff --git a/ld/testsuite/ld-elfvers/vers25a.dsym b/ld/testsuite/ld-elfvers/vers25a.dsym
index 6e6573a..51fa8f1 100644
--- a/ld/testsuite/ld-elfvers/vers25a.dsym
+++ b/ld/testsuite/ld-elfvers/vers25a.dsym
@@ -1,2 +1,2 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?foo
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?_foo
diff --git a/ld/testsuite/ld-elfvers/vers26a.dsym b/ld/testsuite/ld-elfvers/vers26a.dsym
index 6e6573a..a9d0313 100644
--- a/ld/testsuite/ld-elfvers/vers26a.dsym
+++ b/ld/testsuite/ld-elfvers/vers26a.dsym
@@ -1,2 +1,2 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?foo
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers27a.dsym b/ld/testsuite/ld-elfvers/vers27a.dsym
index 6e6573a..a9d0313 100644
--- a/ld/testsuite/ld-elfvers/vers27a.dsym
+++ b/ld/testsuite/ld-elfvers/vers27a.dsym
@@ -1,2 +1,2 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?foo
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers27b.c b/ld/testsuite/ld-elfvers/vers27b.c
index 7b164c4..3fe5615 100644
--- a/ld/testsuite/ld-elfvers/vers27b.c
+++ b/ld/testsuite/ld-elfvers/vers27b.c
@@ -1,2 +1,3 @@
+#include "vers.h"
void foo () {}
-asm (".hidden foo");
+asm (".hidden " SYMPFX(foo));
diff --git a/ld/testsuite/ld-elfvers/vers27d.dsym b/ld/testsuite/ld-elfvers/vers27d.dsym
index 58b56e8..c585799 100644
--- a/ld/testsuite/ld-elfvers/vers27d.dsym
+++ b/ld/testsuite/ld-elfvers/vers27d.dsym
@@ -1,2 +1,2 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+(0x[0-9a-f]+ )?foo
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+(0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers27d.sym b/ld/testsuite/ld-elfvers/vers27d.sym
index d4946f5..d20bd1d 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|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 3fc60b0..107e1c1 100644
--- a/ld/testsuite/ld-elfvers/vers27d1.c
+++ b/ld/testsuite/ld-elfvers/vers27d1.c
@@ -1,6 +1,8 @@
+#include "vers.h"
+
void
foo ()
{
}
-asm (".symver foo,foo@VERS.0");
+SYMVER(foo, foo@VERS.0);
diff --git a/ld/testsuite/ld-elfvers/vers27d4.dsym b/ld/testsuite/ld-elfvers/vers27d4.dsym
index 8c85a4a..dfd6a33 100644
--- a/ld/testsuite/ld-elfvers/vers27d4.dsym
+++ b/ld/testsuite/ld-elfvers/vers27d4.dsym
@@ -1 +1 @@
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS\.0 +(0x[0-9a-f]+ )?foo
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS\.0 +(0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers28b.dsym b/ld/testsuite/ld-elfvers/vers28b.dsym
index 750ee88..6c35c9b 100644
--- a/ld/testsuite/ld-elfvers/vers28b.dsym
+++ b/ld/testsuite/ld-elfvers/vers28b.dsym
@@ -1,2 +1,2 @@
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
-[0-9a-f]+[ ]+w[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?foo
+[0-9a-f]+[ ]+w[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers28c.dsym b/ld/testsuite/ld-elfvers/vers28c.dsym
index 99f6d88..7ad5678 100644
--- a/ld/testsuite/ld-elfvers/vers28c.dsym
+++ b/ld/testsuite/ld-elfvers/vers28c.dsym
@@ -1 +1 @@
-[0-9a-f]+[ ]+DF[ ]+\*UND\*[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?foo
+[0-9a-f]+[ ]+DF[ ]+\*UND\*[ ]+[0-9a-f]+[ ]+VERS\.0[ ]+(0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers29.dsym b/ld/testsuite/ld-elfvers/vers29.dsym
index ed8a230..f983d43 100644
--- a/ld/testsuite/ld-elfvers/vers29.dsym
+++ b/ld/testsuite/ld-elfvers/vers29.dsym
@@ -1 +1 @@
-[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+vers29\.so[ ]+(0x[0-9a-f]+ )?show
+[0-9a-f]+[ ]+g[ ]+DF[ ]+\.(text|opd)[ ]+[0-9a-f]+[ ]+vers29\.so[ ]+(0x[0-9a-f]+ )?_?show
diff --git a/ld/testsuite/ld-elfvers/vers3.dsym b/ld/testsuite/ld-elfvers/vers3.dsym
index 7396dee..a77f949 100644
--- a/ld/testsuite/ld-elfvers/vers3.dsym
+++ b/ld/testsuite/ld-elfvers/vers3.dsym
@@ -1 +1 @@
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?show_foo
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_2\.0 +(0x[0-9a-f]+ )?_?show_foo
diff --git a/ld/testsuite/ld-elfvers/vers30.dsym b/ld/testsuite/ld-elfvers/vers30.dsym
index ddb21eb..5762f01 100644
--- a/ld/testsuite/ld-elfvers/vers30.dsym
+++ b/ld/testsuite/ld-elfvers/vers30.dsym
@@ -1,5 +1,5 @@
0+ g DO \*ABS\* 0+ VERS_30\.0 VERS_30\.0
-[0-9a-f]+ g DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ VERS_30\.0 global
-[0-9a-f]+ g DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ VERS_30\.0 foo
-[0-9a-f]+ g DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ VERS_30\.0 info
-[0-9a-f]+ g DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ VERS_30\.0 extern
+[0-9a-f]+ g DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ VERS_30\.0 _?global
+[0-9a-f]+ g DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ VERS_30\.0 _?foo
+[0-9a-f]+ g DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ VERS_30\.0 _?info
+[0-9a-f]+ g DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ VERS_30\.0 _?extern
diff --git a/ld/testsuite/ld-elfvers/vers31.dsym b/ld/testsuite/ld-elfvers/vers31.dsym
index 72dec06..fb22f5b 100644
--- a/ld/testsuite/ld-elfvers/vers31.dsym
+++ b/ld/testsuite/ld-elfvers/vers31.dsym
@@ -1,2 +1,2 @@
0+ g +DO \*ABS\* 0+ +VERS_31\.0 +VERS_31\.0
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_31\.0 +_Z1fIA3_icEvPT_T0
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_31\.0 +_?_Z1fIA3_icEvPT_T0
diff --git a/ld/testsuite/ld-elfvers/vers32a.dsym b/ld/testsuite/ld-elfvers/vers32a.dsym
index 47d1b06..24deae4 100644
--- a/ld/testsuite/ld-elfvers/vers32a.dsym
+++ b/ld/testsuite/ld-elfvers/vers32a.dsym
@@ -1,2 +1,2 @@
0+ g +DO \*ABS\* 0+ +VERS_1 +VERS_1
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1 +(0x[0-9a-f]+ )?foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1 +(0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers32b.dsym b/ld/testsuite/ld-elfvers/vers32b.dsym
index 88b3474..a2fc578 100644
--- a/ld/testsuite/ld-elfvers/vers32b.dsym
+++ b/ld/testsuite/ld-elfvers/vers32b.dsym
@@ -1,2 +1,2 @@
-[0-9a-f]+ g +D +\*ABS\* [0-9a-f]+ +VERS_1 +(0x[0-9a-f]+ )?foo
+[0-9a-f]+ g +D +\*ABS\* [0-9a-f]+ +VERS_1 +(0x[0-9a-f]+ )?_?foo
0+ g +DO \*ABS\* 0+ +VERS_1 +VERS_1
diff --git a/ld/testsuite/ld-elfvers/vers4.c b/ld/testsuite/ld-elfvers/vers4.c
index 453f2eb..46ac432 100644
--- a/ld/testsuite/ld-elfvers/vers4.c
+++ b/ld/testsuite/ld-elfvers/vers4.c
@@ -5,6 +5,7 @@
* -export-dynamic.
*/
#include <stdio.h>
+#include "vers.h"
extern int foo ();
@@ -21,7 +22,7 @@ new_foo()
}
-__asm__(".symver new_foo,foo@@VERS_2.0");
+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 395e699..c48d1bb 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|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@@VERS_2\.0
diff --git a/ld/testsuite/ld-elfvers/vers4a.dsym b/ld/testsuite/ld-elfvers/vers4a.dsym
index a7efb0a..96dfea8 100644
--- a/ld/testsuite/ld-elfvers/vers4a.dsym
+++ b/ld/testsuite/ld-elfvers/vers4a.dsym
@@ -1,2 +1,2 @@
0+ g DO \*ABS\* 0+ VERS_2\.0 VERS_2\.0
-[0-9a-f]+ g DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ VERS_2\.0 (0x[0-9a-f]+ )?foo
+[0-9a-f]+ g DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ VERS_2\.0 (0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers4a.sym b/ld/testsuite/ld-elfvers/vers4a.sym
index 395e699..c48d1bb 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|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 cc6ea40..3cae67e 100644
--- a/ld/testsuite/ld-elfvers/vers5.c
+++ b/ld/testsuite/ld-elfvers/vers5.c
@@ -2,6 +2,8 @@
* Testcase to verify that foo@BAR and foo@@BAR are correctly detected
* as a multiply defined symbol.
*/
+#include "vers.h"
+
const char * bar1 = "asdf";
const char * bar2 = "asdf";
@@ -39,10 +41,10 @@ new_foo()
}
-__asm__(".symver original_foo,foo@");
-__asm__(".symver old_foo,foo@VERS_1.1");
-__asm__(".symver old_foo1,foo@VERS_1.2");
-__asm__(".symver new_foo,foo@@VERS_1.2");
+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);
int
main ()
diff --git a/ld/testsuite/ld-elfvers/vers6.c b/ld/testsuite/ld-elfvers/vers6.c
index 9e48df9..cb1c93f 100644
--- a/ld/testsuite/ld-elfvers/vers6.c
+++ b/ld/testsuite/ld-elfvers/vers6.c
@@ -3,6 +3,7 @@
* that we always get the right one.
*/
#include <stdio.h>
+#include "vers.h"
extern int foo_1();
extern int foo_2();
@@ -19,7 +20,7 @@ main()
return 0;
}
-__asm__(".symver foo_1,show_foo@");
-__asm__(".symver foo_2,show_foo@VERS_1.1");
-__asm__(".symver foo_3,show_foo@VERS_1.2");
-__asm__(".symver foo_4,show_foo@VERS_2.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);
diff --git a/ld/testsuite/ld-elfvers/vers6.dsym b/ld/testsuite/ld-elfvers/vers6.dsym
index 79e9061..a53099b 100644
--- a/ld/testsuite/ld-elfvers/vers6.dsym
+++ b/ld/testsuite/ld-elfvers/vers6.dsym
@@ -1,4 +1,4 @@
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_2.0 +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_1.2 +(0x[0-9a-f]+ )?show_foo
-[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_1.1 +(0x[0-9a-f]+ )?show_foo
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_2.0 +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_1.2 +(0x[0-9a-f]+ )?_?show_foo
+[0-9a-f]+ +DF \*UND\* [0-9a-f]+ +VERS_1.1 +(0x[0-9a-f]+ )?_?show_foo
diff --git a/ld/testsuite/ld-elfvers/vers6.sym b/ld/testsuite/ld-elfvers/vers6.sym
index 801f7b3..ae68d72 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 7bee8c7..f3d2a2d 100644
--- a/ld/testsuite/ld-elfvers/vers7a.c
+++ b/ld/testsuite/ld-elfvers/vers7a.c
@@ -2,6 +2,8 @@
* Test supplied by Ulrich. Verify that we can correctly force 'a'
* to local scope.
*/
+#include "vers.h"
+
int
__a_internal (int e)
{
@@ -14,5 +16,5 @@ __b_internal (int e)
return e + 42;
}
-asm (".symver __a_internal,hide_a@@VERS_1");
-asm (".symver __b_internal,show_b@@VERS_1");
+SYMVER(__a_internal, hide_a@@VERS_1);
+SYMVER(__b_internal, show_b@@VERS_1);
diff --git a/ld/testsuite/ld-elfvers/vers7a.dsym b/ld/testsuite/ld-elfvers/vers7a.dsym
index 8434925..89a45a5 100644
--- a/ld/testsuite/ld-elfvers/vers7a.dsym
+++ b/ld/testsuite/ld-elfvers/vers7a.dsym
@@ -1,2 +1,2 @@
0+ g +DO \*ABS\* 0+ +VERS_1 +VERS_1
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1 +(0x[0-9a-f]+ )?show_b
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1 +(0x[0-9a-f]+ )?_?show_b
diff --git a/ld/testsuite/ld-elfvers/vers7a.sym b/ld/testsuite/ld-elfvers/vers7a.sym
index 94d9312..ef8d04b 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|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
diff --git a/ld/testsuite/ld-elfvers/vers9.c b/ld/testsuite/ld-elfvers/vers9.c
index bef1402..5079364 100644
--- a/ld/testsuite/ld-elfvers/vers9.c
+++ b/ld/testsuite/ld-elfvers/vers9.c
@@ -2,6 +2,8 @@
* Testcase to verify that reference to foo@BAR and a definition of foo@@BAR
* are not treated as a multiple def.
*/
+#include "vers.h"
+
const char * bar1 = "asdf";
const char * bar2 = "asdf";
@@ -41,7 +43,7 @@ main()
return 0;
}
-__asm__(".symver original_foo,foo@");
-__asm__(".symver old_foo,foo@VERS_1.1");
-__asm__(".symver old_foo1,foo@VERS_1.2");
-__asm__(".symver new_foo,foo@@VERS_1.2");
+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);
diff --git a/ld/testsuite/ld-elfvers/vers9.dsym b/ld/testsuite/ld-elfvers/vers9.dsym
index 5443e67..411451a 100644
--- a/ld/testsuite/ld-elfvers/vers9.dsym
+++ b/ld/testsuite/ld-elfvers/vers9.dsym
@@ -1,4 +1,4 @@
0+ g +DO \*ABS\* 0+ +VERS_1\.1 +VERS_1\.1
0+ g +DO \*ABS\* 0+ +VERS_1\.2 +VERS_1\.2
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.1\) +(0x[0-9a-f]+ )?foo
-[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1\.2 +(0x[0-9a-f]+ )?foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ \(VERS_1\.1\) +(0x[0-9a-f]+ )?_?foo
+[0-9a-f]+ g +DF (\.text|\.opd|\*ABS\*) [0-9a-f]+ +VERS_1\.2 +(0x[0-9a-f]+ )?_?foo
diff --git a/ld/testsuite/ld-elfvers/vers9.sym b/ld/testsuite/ld-elfvers/vers9.sym
index 6d6585f..be0e6dd 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\.1
-[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?foo@@VERS_1\.2
+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\.1
+[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@@VERS_1\.2