ld: elfvers tests: support symbol prefixed targets
authorMike Frysinger <vapier@gentoo.org>
Fri, 10 Dec 2010 06:08:11 +0000 (06:08 +0000)
committerMike Frysinger <vapier@gentoo.org>
Fri, 10 Dec 2010 06:08:11 +0000 (06:08 +0000)
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>
66 files changed:
ld/testsuite/ChangeLog
ld/testsuite/ld-elf/pr9676.rd
ld/testsuite/ld-elf/pr9679.rd
ld/testsuite/ld-elfvers/vers.h [new file with mode: 0644]
ld/testsuite/ld-elfvers/vers1.c
ld/testsuite/ld-elfvers/vers1.dsym
ld/testsuite/ld-elfvers/vers1.sym
ld/testsuite/ld-elfvers/vers15.c
ld/testsuite/ld-elfvers/vers15.dsym
ld/testsuite/ld-elfvers/vers15.sym
ld/testsuite/ld-elfvers/vers16.dsym
ld/testsuite/ld-elfvers/vers16a.dsym
ld/testsuite/ld-elfvers/vers17.dsym
ld/testsuite/ld-elfvers/vers18.c
ld/testsuite/ld-elfvers/vers18.dsym
ld/testsuite/ld-elfvers/vers18.sym
ld/testsuite/ld-elfvers/vers19.dsym
ld/testsuite/ld-elfvers/vers2.dsym
ld/testsuite/ld-elfvers/vers20.dsym
ld/testsuite/ld-elfvers/vers21.c
ld/testsuite/ld-elfvers/vers21.dsym
ld/testsuite/ld-elfvers/vers21.sym
ld/testsuite/ld-elfvers/vers22.dsym
ld/testsuite/ld-elfvers/vers22a.c
ld/testsuite/ld-elfvers/vers22a.dsym
ld/testsuite/ld-elfvers/vers22a.sym
ld/testsuite/ld-elfvers/vers22b.dsym
ld/testsuite/ld-elfvers/vers23.dsym
ld/testsuite/ld-elfvers/vers23a.c
ld/testsuite/ld-elfvers/vers23a.dsym
ld/testsuite/ld-elfvers/vers23a.sym
ld/testsuite/ld-elfvers/vers23b.dsym
ld/testsuite/ld-elfvers/vers23d.dsym
ld/testsuite/ld-elfvers/vers24.rd
ld/testsuite/ld-elfvers/vers24a.c
ld/testsuite/ld-elfvers/vers24c.c
ld/testsuite/ld-elfvers/vers25a.dsym
ld/testsuite/ld-elfvers/vers26a.dsym
ld/testsuite/ld-elfvers/vers27a.dsym
ld/testsuite/ld-elfvers/vers27b.c
ld/testsuite/ld-elfvers/vers27d.dsym
ld/testsuite/ld-elfvers/vers27d.sym
ld/testsuite/ld-elfvers/vers27d1.c
ld/testsuite/ld-elfvers/vers27d4.dsym
ld/testsuite/ld-elfvers/vers28b.dsym
ld/testsuite/ld-elfvers/vers28c.dsym
ld/testsuite/ld-elfvers/vers29.dsym
ld/testsuite/ld-elfvers/vers3.dsym
ld/testsuite/ld-elfvers/vers30.dsym
ld/testsuite/ld-elfvers/vers31.dsym
ld/testsuite/ld-elfvers/vers32a.dsym
ld/testsuite/ld-elfvers/vers32b.dsym
ld/testsuite/ld-elfvers/vers4.c
ld/testsuite/ld-elfvers/vers4.sym
ld/testsuite/ld-elfvers/vers4a.dsym
ld/testsuite/ld-elfvers/vers4a.sym
ld/testsuite/ld-elfvers/vers5.c
ld/testsuite/ld-elfvers/vers6.c
ld/testsuite/ld-elfvers/vers6.dsym
ld/testsuite/ld-elfvers/vers6.sym
ld/testsuite/ld-elfvers/vers7a.c
ld/testsuite/ld-elfvers/vers7a.dsym
ld/testsuite/ld-elfvers/vers7a.sym
ld/testsuite/ld-elfvers/vers9.c
ld/testsuite/ld-elfvers/vers9.dsym
ld/testsuite/ld-elfvers/vers9.sym

index 6920a37..ade0df6 100644 (file)
@@ -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.
index 44a11ce..2d832db 100644 (file)
@@ -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
 #...
index 44a11ce..2d832db 100644 (file)
@@ -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 (file)
index 0000000..4455527
--- /dev/null
@@ -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))
index c27bc3b..86e2bd2 100644 (file)
@@ -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
index d33ab20..9d19752 100644 (file)
@@ -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
index ed589e8..f2bb9db 100644 (file)
@@ -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
index 4e22cac..2457d29 100644 (file)
@@ -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);
index fc4c996..750c358 100644 (file)
@@ -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
index ba9f83e..a642c9d 100644 (file)
@@ -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
index 6733ece..8ee4918 100644 (file)
@@ -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
index aaca9f5..c38d71a 100644 (file)
@@ -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
index 9810659..4cbb334 100644 (file)
@@ -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
index 25dcc25..9965b88 100644 (file)
@@ -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);
index 49bd7b2..38071cb 100644 (file)
@@ -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
index bcc8882..0b1183c 100644 (file)
@@ -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
index 7396dee..a77f949 100644 (file)
@@ -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
index 63f15db..30ba91b 100644 (file)
@@ -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
index 559170c..fc13955 100644 (file)
@@ -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
index 2879c7f..3a75b48 100644 (file)
@@ -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 () 
index 4cb2188..7800a0c 100644 (file)
@@ -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
index e7de74f..e2b2038 100644 (file)
@@ -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
index 5dfa465..db2aeec 100644 (file)
@@ -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
index 288c820..bc5777b 100644 (file)
@@ -1,4 +1,6 @@
-__asm__(".symver _old_bar,bar@VERS.0");
+#include "vers.h"
+
+SYMVER(_old_bar, bar@VERS.0);
 
 void
 _old_bar () 
index af06123..0c8d027 100644 (file)
@@ -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
index ff07708..c3f4150 100644 (file)
@@ -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
index 88c31b3..47f0606 100644 (file)
@@ -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
index 8c85a4a..dfd6a33 100644 (file)
@@ -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
index 250d6f9..13c8edd 100644 (file)
@@ -1,4 +1,6 @@
-__asm__(".symver _old_bar,bar@VERS.0");
+#include "vers.h"
+
+SYMVER(_old_bar, bar@VERS.0);
 
 void
 _old_bar (void) 
index 4450665..04385b0 100644 (file)
@@ -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
index ff07708..c3f4150 100644 (file)
@@ -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
index 88c31b3..47f0606 100644 (file)
@@ -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
index b31b82b..ab5fbd8 100644 (file)
@@ -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
index e5b55b1..42e81e4 100644 (file)
@@ -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
index 7fef8d8..10073d4 100644 (file)
@@ -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);
index 267c424..6e69b33 100644 (file)
@@ -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;
index 6e6573a..51fa8f1 100644 (file)
@@ -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
index 6e6573a..a9d0313 100644 (file)
@@ -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
index 6e6573a..a9d0313 100644 (file)
@@ -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
index 7b164c4..3fe5615 100644 (file)
@@ -1,2 +1,3 @@
+#include "vers.h"
 void foo () {}
-asm (".hidden foo");
+asm (".hidden " SYMPFX(foo));
index 58b56e8..c585799 100644 (file)
@@ -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
index d4946f5..d20bd1d 100644 (file)
@@ -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
index 3fc60b0..107e1c1 100644 (file)
@@ -1,6 +1,8 @@
+#include "vers.h"
+
 void
 foo ()
 {
 }
 
-asm (".symver foo,foo@VERS.0");
+SYMVER(foo, foo@VERS.0);
index 8c85a4a..dfd6a33 100644 (file)
@@ -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
index 750ee88..6c35c9b 100644 (file)
@@ -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
index 99f6d88..7ad5678 100644 (file)
@@ -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
index ed8a230..f983d43 100644 (file)
@@ -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
index 7396dee..a77f949 100644 (file)
@@ -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
index ddb21eb..5762f01 100644 (file)
@@ -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
index 72dec06..fb22f5b 100644 (file)
@@ -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
index 47d1b06..24deae4 100644 (file)
@@ -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
index 88b3474..a2fc578 100644 (file)
@@ -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
index 453f2eb..46ac432 100644 (file)
@@ -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()
index 395e699..c48d1bb 100644 (file)
@@ -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
index a7efb0a..96dfea8 100644 (file)
@@ -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
index 395e699..c48d1bb 100644 (file)
@@ -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
index cc6ea40..3cae67e 100644 (file)
@@ -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 ()
index 9e48df9..cb1c93f 100644 (file)
@@ -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);
index 79e9061..a53099b 100644 (file)
@@ -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
index 801f7b3..ae68d72 100644 (file)
@@ -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
index 7bee8c7..f3d2a2d 100644 (file)
@@ -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);
index 8434925..89a45a5 100644 (file)
@@ -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
index 94d9312..ef8d04b 100644 (file)
@@ -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
index bef1402..5079364 100644 (file)
@@ -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);
index 5443e67..411451a 100644 (file)
@@ -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
index 6d6585f..be0e6dd 100644 (file)
@@ -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