summaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-elfvers
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2010-12-10 06:08:10 +0000
committerMike Frysinger <vapier@gentoo.org>2010-12-10 06:08:10 +0000
commit70978925b81fec0f8a8db61b9de73ead19bdc73a (patch)
treeb5a963f135b0cd4a6be10bec197dd0364356eb71 /ld/testsuite/ld-elfvers
parent9dd76e75eb534a70027ac66abfdfa9d90a649401 (diff)
downloadbinutils-redhat-70978925b81fec0f8a8db61b9de73ead19bdc73a.tar.gz
ld: elfvers tests: support symbol prefixed targets
The symbol versioning tests mix C-visible symbols and linker-visible symbols in order to verify .symver behavior. This works for most people, but fail for targets that have a symbol prefix. So add a helper file with macros that expand gcc's __USER_LABEL_PREFIX__ as necessary and convert all .symver users over to it. Now that the tests are usable on prefixed targets, update the tests to take into account an optional leading underscore. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'ld/testsuite/ld-elfvers')
-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
63 files changed, 165 insertions, 130 deletions
diff --git a/ld/testsuite/ld-elfvers/vers.h b/ld/testsuite/ld-elfvers/vers.h
new file mode 100644
index 0000000000..4455527457
--- /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 c27bc3bce7..86e2bd2ba1 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 d33ab2007d..9d1975288c 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 ed589e83d7..f2bb9db2a4 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 4e22cac092..2457d29755 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 fc4c9962ea..750c35832a 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 ba9f83e191..a642c9dbab 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 6733ece6de..8ee4918792 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 aaca9f5e33..c38d71aea9 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 98106593c9..4cbb334dc0 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 25dcc25999..9965b88a02 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 49bd7b2b35..38071cb456 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 bcc88820da..0b1183ccfd 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 7396deeca5..a77f949012 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 63f15db45f..30ba91b82b 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 559170c1b0..fc13955b8d 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 2879c7f0e3..3a75b48add 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 4cb21882c2..7800a0c349 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 e7de74f487..e2b2038e32 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 5dfa465b90..db2aeec4bc 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 288c82093e..bc5777bb83 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 af06123386..0c8d027827 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 ff07708753..c3f4150cca 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 88c31b303f..47f0606a81 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 8c85a4ae9f..dfd6a3321a 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 250d6f9eef..13c8edd6e3 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 4450665ff9..04385b002d 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 ff07708753..c3f4150cca 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 88c31b303f..47f0606a81 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 b31b82b05a..ab5fbd834e 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 e5b55b169b..42e81e42d9 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 7fef8d8a76..10073d4363 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 267c4243b5..6e69b334ba 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 6e6573acac..51fa8f1537 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 6e6573acac..a9d0313952 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 6e6573acac..a9d0313952 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 7b164c480b..3fe5615baa 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 58b56e8522..c585799eff 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 d4946f5e20..d20bd1d234 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 3fc60b04bc..107e1c1de8 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 8c85a4ae9f..dfd6a3321a 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 750ee8809c..6c35c9be70 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 99f6d881f8..7ad56789ee 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 ed8a230de0..f983d43477 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 7396deeca5..a77f949012 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 ddb21eb38b..5762f01843 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 72dec06aff..fb22f5b87c 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 47d1b06bff..24deae4987 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 88b3474472..a2fc578bba 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 453f2eb4d9..46ac43258d 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 395e69910b..c48d1bb09f 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 a7efb0aef6..96dfea8a97 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 395e69910b..c48d1bb09f 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 cc6ea40b67..3cae67ebc9 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 9e48df9b40..cb1c93f635 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 79e9061a92..a53099bbed 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 801f7b3618..ae68d724e2 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 7bee8c70bf..f3d2a2d989 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 8434925f67..89a45a5430 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 94d9312bd4..ef8d04be0b 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 bef1402d26..5079364091 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 5443e67dd0..411451a28b 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 6d6585fd6c..be0e6ddb20 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