From b9e33f301ea91a4d15666e882acd35e65ec68d41 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 10 Dec 2010 06:08:11 +0000 Subject: [PATCH] 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 --- ld/testsuite/ChangeLog | 29 +++++++++++++++++++++++++++++ ld/testsuite/ld-elf/pr9676.rd | 2 +- ld/testsuite/ld-elf/pr9679.rd | 2 +- ld/testsuite/ld-elfvers/vers.h | 9 +++++++++ ld/testsuite/ld-elfvers/vers1.c | 18 ++++++++++-------- ld/testsuite/ld-elfvers/vers1.dsym | 12 ++++++------ ld/testsuite/ld-elfvers/vers1.sym | 8 ++++---- ld/testsuite/ld-elfvers/vers15.c | 7 ++++--- ld/testsuite/ld-elfvers/vers15.dsym | 6 +++--- ld/testsuite/ld-elfvers/vers15.sym | 6 +++--- ld/testsuite/ld-elfvers/vers16.dsym | 4 ++-- ld/testsuite/ld-elfvers/vers16a.dsym | 4 ++-- ld/testsuite/ld-elfvers/vers17.dsym | 2 +- ld/testsuite/ld-elfvers/vers18.c | 10 ++++++---- ld/testsuite/ld-elfvers/vers18.dsym | 8 ++++---- ld/testsuite/ld-elfvers/vers18.sym | 8 ++++---- ld/testsuite/ld-elfvers/vers19.dsym | 2 +- ld/testsuite/ld-elfvers/vers2.dsym | 4 ++-- ld/testsuite/ld-elfvers/vers20.dsym | 2 +- ld/testsuite/ld-elfvers/vers21.c | 10 ++++++---- ld/testsuite/ld-elfvers/vers21.dsym | 6 +++--- ld/testsuite/ld-elfvers/vers21.sym | 6 +++--- ld/testsuite/ld-elfvers/vers22.dsym | 2 +- ld/testsuite/ld-elfvers/vers22a.c | 4 +++- ld/testsuite/ld-elfvers/vers22a.dsym | 2 +- ld/testsuite/ld-elfvers/vers22a.sym | 2 +- ld/testsuite/ld-elfvers/vers22b.dsym | 2 +- ld/testsuite/ld-elfvers/vers23.dsym | 2 +- ld/testsuite/ld-elfvers/vers23a.c | 4 +++- ld/testsuite/ld-elfvers/vers23a.dsym | 4 ++-- ld/testsuite/ld-elfvers/vers23a.sym | 2 +- ld/testsuite/ld-elfvers/vers23b.dsym | 2 +- ld/testsuite/ld-elfvers/vers23d.dsym | 4 ++-- ld/testsuite/ld-elfvers/vers24.rd | 6 +++--- ld/testsuite/ld-elfvers/vers24a.c | 4 +++- ld/testsuite/ld-elfvers/vers24c.c | 4 +++- ld/testsuite/ld-elfvers/vers25a.dsym | 2 +- ld/testsuite/ld-elfvers/vers26a.dsym | 2 +- ld/testsuite/ld-elfvers/vers27a.dsym | 2 +- ld/testsuite/ld-elfvers/vers27b.c | 3 ++- ld/testsuite/ld-elfvers/vers27d.dsym | 2 +- ld/testsuite/ld-elfvers/vers27d.sym | 2 +- ld/testsuite/ld-elfvers/vers27d1.c | 4 +++- ld/testsuite/ld-elfvers/vers27d4.dsym | 2 +- ld/testsuite/ld-elfvers/vers28b.dsym | 2 +- ld/testsuite/ld-elfvers/vers28c.dsym | 2 +- ld/testsuite/ld-elfvers/vers29.dsym | 2 +- ld/testsuite/ld-elfvers/vers3.dsym | 2 +- ld/testsuite/ld-elfvers/vers30.dsym | 8 ++++---- ld/testsuite/ld-elfvers/vers31.dsym | 2 +- ld/testsuite/ld-elfvers/vers32a.dsym | 2 +- ld/testsuite/ld-elfvers/vers32b.dsym | 2 +- ld/testsuite/ld-elfvers/vers4.c | 3 ++- ld/testsuite/ld-elfvers/vers4.sym | 2 +- ld/testsuite/ld-elfvers/vers4a.dsym | 2 +- ld/testsuite/ld-elfvers/vers4a.sym | 2 +- ld/testsuite/ld-elfvers/vers5.c | 10 ++++++---- ld/testsuite/ld-elfvers/vers6.c | 9 +++++---- ld/testsuite/ld-elfvers/vers6.dsym | 8 ++++---- ld/testsuite/ld-elfvers/vers6.sym | 8 ++++---- ld/testsuite/ld-elfvers/vers7a.c | 6 ++++-- ld/testsuite/ld-elfvers/vers7a.dsym | 2 +- ld/testsuite/ld-elfvers/vers7a.sym | 4 ++-- ld/testsuite/ld-elfvers/vers9.c | 10 ++++++---- ld/testsuite/ld-elfvers/vers9.dsym | 4 ++-- ld/testsuite/ld-elfvers/vers9.sym | 8 ++++---- 66 files changed, 196 insertions(+), 132 deletions(-) create mode 100644 ld/testsuite/ld-elfvers/vers.h 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 + + * 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 * 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 +#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 +#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 +#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 -- 2.7.4