forked from Imagelibrary/binutils-gdb
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>
This commit is contained in:
@@ -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>
|
2010-12-05 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* ld-plugin/plugin-vis-1.d: Updated.
|
* ld-plugin/plugin-vis-1.d: Updated.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Symbol table '\.dynsym' contains [0-9]+ entries:
|
Symbol table '\.dynsym' contains [0-9]+ entries:
|
||||||
+Num: +Value +Size Type +Bind +Vis +Ndx Name
|
+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
|
||||||
#...
|
#...
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Symbol table '\.dynsym' contains [0-9]+ entries:
|
Symbol table '\.dynsym' contains [0-9]+ entries:
|
||||||
+Num: +Value +Size Type +Bind +Vis +Ndx Name
|
+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
|
||||||
#...
|
#...
|
||||||
|
|||||||
9
ld/testsuite/ld-elfvers/vers.h
Normal file
9
ld/testsuite/ld-elfvers/vers.h
Normal file
@@ -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))
|
||||||
@@ -3,6 +3,8 @@
|
|||||||
* a bunch of definitions of the same symbol, and we can theoretically
|
* a bunch of definitions of the same symbol, and we can theoretically
|
||||||
* then link applications against varying sets of these.
|
* then link applications against varying sets of these.
|
||||||
*/
|
*/
|
||||||
|
#include "vers.h"
|
||||||
|
|
||||||
const char * show_bar1 = "asdf";
|
const char * show_bar1 = "asdf";
|
||||||
const char * show_bar2 = "asdf";
|
const char * show_bar2 = "asdf";
|
||||||
|
|
||||||
@@ -47,10 +49,10 @@ hide_new_foo()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__(".symver hide_original_foo,show_foo@");
|
SYMVER(hide_original_foo, show_foo@);
|
||||||
__asm__(".symver hide_old_foo,show_foo@VERS_1.1");
|
SYMVER(hide_old_foo, show_foo@VERS_1.1);
|
||||||
__asm__(".symver hide_old_foo1,show_foo@VERS_1.2");
|
SYMVER(hide_old_foo1, show_foo@VERS_1.2);
|
||||||
__asm__(".symver hide_new_foo,show_foo@@VERS_2.0");
|
SYMVER(hide_new_foo, show_foo@@VERS_2.0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -63,7 +65,7 @@ hide_new_bogus_foo()
|
|||||||
return 1000+bar();
|
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
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -81,8 +83,8 @@ xyzzz()
|
|||||||
bar33();
|
bar33();
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__(".symver new2_foo,fooVERS_2.0");
|
SYMVER(new2_foo, fooVERS_2.0);
|
||||||
__asm__(".symver bar33,bar@@VERS_2.0");
|
SYMVER(bar33, bar@@VERS_2.0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DO_TEST12
|
#ifdef DO_TEST12
|
||||||
@@ -97,5 +99,5 @@ xyzzz()
|
|||||||
bar33();
|
bar33();
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__(".symver bar33,bar@@VERS_2.0");
|
SYMVER(bar33, bar@@VERS_2.0);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
0+ g +DO \*ABS\* 0+ +VERS_1\.1 +VERS_1\.1
|
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_1\.2 +VERS_1\.2
|
||||||
0+ g +DO \*ABS\* 0+ +VERS_2\.0 +VERS_2\.0
|
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]+ \(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\.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_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 +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_bar1
|
||||||
[0-9a-f]+ g +DO (\.s?data|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +show_bar2
|
[0-9a-f]+ g +DO (\.s?data|\*ABS\*) [0-9a-f]+ +VERS_2\.0 +_?show_bar2
|
||||||
|
|||||||
@@ -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@
|
||||||
[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\.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_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@@VERS_2\.0
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
* that we always get the right one.
|
* that we always get the right one.
|
||||||
*/
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "vers.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
foo_1()
|
foo_1()
|
||||||
@@ -31,6 +32,6 @@ main()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__(".symver foo_1,show_foo@");
|
SYMVER(foo_1, show_foo@);
|
||||||
__asm__(".symver foo_2,show_foo@VERS_1.1");
|
SYMVER(foo_2, show_foo@VERS_1.1);
|
||||||
__asm__(".symver foo_3,show_foo@@VERS_1.2");
|
SYMVER(foo_3, show_foo@@VERS_1.2);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
0+ g +DO \*ABS\* 0+ +VERS_1\.1 +VERS_1\.1
|
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_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]+ \(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\.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_1\.2 +(0x[0-9a-f]+ )?_?show_foo
|
||||||
|
|||||||
@@ -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@
|
||||||
[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\.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_1\.2
|
||||||
|
|||||||
@@ -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]+ 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]+ +DF \*UND\* [0-9a-f]+ +(0x[0-9a-f]+ )?_?show_foo
|
||||||
|
|||||||
@@ -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 +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]+ +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]+ +Base +(0x[0-9a-f]+ )?_?show_foo
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+ g +DO \*ABS\* 0+ +VERS_2\.0 +VERS_2\.0
|
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
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
#include "vers.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
bar ()
|
bar ()
|
||||||
{
|
{
|
||||||
@@ -36,7 +38,7 @@ hide_new_foo ()
|
|||||||
return 1000 + bar ();
|
return 1000 + bar ();
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__(".symver hide_original_foo,show_foo@");
|
SYMVER(hide_original_foo, show_foo@);
|
||||||
__asm__(".symver hide_old_foo,show_foo@VERS_1.1");
|
SYMVER(hide_old_foo, show_foo@VERS_1.1);
|
||||||
__asm__(".symver hide_old_foo1,show_foo@VERS_1.2");
|
SYMVER(hide_old_foo1, show_foo@VERS_1.2);
|
||||||
__asm__(".symver hide_new_foo,show_foo@@VERS_2.0");
|
SYMVER(hide_new_foo, show_foo@@VERS_2.0);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
0+ g +DO \*ABS\* 0+ +VERS_1\.1 +VERS_1\.1
|
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_1\.2 +VERS_1\.2
|
||||||
0+ g +DO \*ABS\* 0+ +VERS_2\.0 +VERS_2\.0
|
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]+ \(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\.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_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]+ +VERS_2\.0 +(0x[0-9a-f]+ )?_?show_foo
|
||||||
|
|||||||
@@ -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@
|
||||||
[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\.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_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@@VERS_2\.0
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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+ 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
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS_1\.1[ ]+VERS_1\.1
|
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
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
__asm__(".symver _old_foo,foo@VERS.0");
|
#include "vers.h"
|
||||||
__asm__(".symver _old_bar,bar@VERS.0");
|
|
||||||
__asm__(".symver _old_foobar,foobar@VERS.0");
|
SYMVER(_old_foo, foo@VERS.0);
|
||||||
__asm__(".weak _old_bar");
|
SYMVER(_old_bar, bar@VERS.0);
|
||||||
|
SYMVER(_old_foobar, foobar@VERS.0);
|
||||||
|
__asm__(".weak " SYMPFX(_old_bar));
|
||||||
|
|
||||||
int
|
int
|
||||||
bar ()
|
bar ()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
|
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]+[ ]+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[ ]+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]+[ ]+g[ ]+DO[ ]+\.s?data[ ]+[0-9a-f]+[ ]+\(VERS\.0\)[ ]+_?foobar
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
[0-9a-f]+[ ]+g[ ]+O[ ]+\.s?data[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?foobar@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]+[ ]+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[ ]+F[ ]+\.(text|opd)[ ]+[0-9a-f]+ (0x[0-9a-f]+ )?_?foo@VERS\.0
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
__asm__(".symver _old_bar,bar@VERS.0");
|
#include "vers.h"
|
||||||
|
|
||||||
|
SYMVER(_old_bar, bar@VERS.0);
|
||||||
|
|
||||||
void
|
void
|
||||||
_old_bar ()
|
_old_bar ()
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
|
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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
|
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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
__asm__(".symver _old_bar,bar@VERS.0");
|
#include "vers.h"
|
||||||
|
|
||||||
|
SYMVER(_old_bar, bar@VERS.0);
|
||||||
|
|
||||||
void
|
void
|
||||||
_old_bar (void)
|
_old_bar (void)
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
|
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
|
||||||
[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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
|
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
|
||||||
|
|||||||
@@ -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] )?_?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] )?_?foo
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
Relocation section .*
|
Relocation section .*
|
||||||
# Ensure there is a dynamic relocation against x
|
# 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:
|
Symbol table '.dynsym' contains [0-9]+ entries:
|
||||||
# And ensure the dynamic symbol table contains at least x@VERS.0
|
# And ensure the dynamic symbol table contains at least x@VERS.0
|
||||||
# and foo@@VERS.0 symbols
|
# 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:
|
Symbol table '.symtab' contains [0-9]+ entries:
|
||||||
#pass
|
#pass
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
/* Test whether .symver x, x@foo
|
/* Test whether .symver x, x@foo
|
||||||
causes relocations against x within the same shared library
|
causes relocations against x within the same shared library
|
||||||
to become dynamic relocations against x@foo. */
|
to become dynamic relocations against x@foo. */
|
||||||
|
#include "vers.h"
|
||||||
|
|
||||||
int x = 12;
|
int x = 12;
|
||||||
__asm__ (".symver x, x@VERS.0");
|
SYMVER(x, x@VERS.0);
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
/* Test whether .symver x, x@foo
|
/* Test whether .symver x, x@foo
|
||||||
causes relocations against x within the same shared library
|
causes relocations against x within the same shared library
|
||||||
to become dynamic relocations against x@foo. */
|
to become dynamic relocations against x@foo. */
|
||||||
|
#include "vers.h"
|
||||||
|
|
||||||
int x = 12;
|
int x = 12;
|
||||||
__asm__ (".symver x, x@VERS.0");
|
SYMVER(x, x@VERS.0);
|
||||||
void foo (void)
|
void foo (void)
|
||||||
{
|
{
|
||||||
x = 24;
|
x = 24;
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
|
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
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
|
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
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
|
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
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
|
#include "vers.h"
|
||||||
void foo () {}
|
void foo () {}
|
||||||
asm (".hidden foo");
|
asm (".hidden " SYMPFX(foo));
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
|
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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
#include "vers.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
foo ()
|
foo ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
asm (".symver foo,foo@VERS.0");
|
SYMVER(foo, foo@VERS.0);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+0+[ ]+VERS\.0[ ]+VERS\.0
|
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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
0+ g DO \*ABS\* 0+ VERS_30\.0 VERS_30\.0
|
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 _?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 _?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 _?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 _?extern
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+ g +DO \*ABS\* 0+ +VERS_31\.0 +VERS_31\.0
|
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
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+ g +DO \*ABS\* 0+ +VERS_1 +VERS_1
|
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
|
||||||
|
|||||||
@@ -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
|
0+ g +DO \*ABS\* 0+ +VERS_1 +VERS_1
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
* -export-dynamic.
|
* -export-dynamic.
|
||||||
*/
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "vers.h"
|
||||||
|
|
||||||
extern int foo ();
|
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
|
int
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+ g DO \*ABS\* 0+ VERS_2\.0 VERS_2\.0
|
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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
* Testcase to verify that foo@BAR and foo@@BAR are correctly detected
|
* Testcase to verify that foo@BAR and foo@@BAR are correctly detected
|
||||||
* as a multiply defined symbol.
|
* as a multiply defined symbol.
|
||||||
*/
|
*/
|
||||||
|
#include "vers.h"
|
||||||
|
|
||||||
const char * bar1 = "asdf";
|
const char * bar1 = "asdf";
|
||||||
const char * bar2 = "asdf";
|
const char * bar2 = "asdf";
|
||||||
|
|
||||||
@@ -39,10 +41,10 @@ new_foo()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__(".symver original_foo,foo@");
|
SYMVER(original_foo, foo@);
|
||||||
__asm__(".symver old_foo,foo@VERS_1.1");
|
SYMVER(old_foo, foo@VERS_1.1);
|
||||||
__asm__(".symver old_foo1,foo@VERS_1.2");
|
SYMVER(old_foo1, foo@VERS_1.2);
|
||||||
__asm__(".symver new_foo,foo@@VERS_1.2");
|
SYMVER(new_foo, foo@@VERS_1.2);
|
||||||
|
|
||||||
int
|
int
|
||||||
main ()
|
main ()
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
* that we always get the right one.
|
* that we always get the right one.
|
||||||
*/
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "vers.h"
|
||||||
|
|
||||||
extern int foo_1();
|
extern int foo_1();
|
||||||
extern int foo_2();
|
extern int foo_2();
|
||||||
@@ -19,7 +20,7 @@ main()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__(".symver foo_1,show_foo@");
|
SYMVER(foo_1, show_foo@);
|
||||||
__asm__(".symver foo_2,show_foo@VERS_1.1");
|
SYMVER(foo_2, show_foo@VERS_1.1);
|
||||||
__asm__(".symver foo_3,show_foo@VERS_1.2");
|
SYMVER(foo_3, show_foo@VERS_1.2);
|
||||||
__asm__(".symver foo_4,show_foo@VERS_2.0");
|
SYMVER(foo_4, show_foo@VERS_2.0);
|
||||||
|
|||||||
@@ -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]+ +(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_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.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]+ +VERS_1.1 +(0x[0-9a-f]+ )?_?show_foo
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
0+ *F? *\*UND\* 0+ show_foo@
|
0+ *F? *\*UND\* 0+ _?show_foo@
|
||||||
0+ *F? *\*UND\* 0+ show_foo@VERS_1\.1
|
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_1\.2
|
||||||
0+ *F? *\*UND\* 0+ show_foo@VERS_2\.0
|
0+ *F? *\*UND\* 0+ _?show_foo@VERS_2\.0
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
* Test supplied by Ulrich. Verify that we can correctly force 'a'
|
* Test supplied by Ulrich. Verify that we can correctly force 'a'
|
||||||
* to local scope.
|
* to local scope.
|
||||||
*/
|
*/
|
||||||
|
#include "vers.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
__a_internal (int e)
|
__a_internal (int e)
|
||||||
{
|
{
|
||||||
@@ -14,5 +16,5 @@ __b_internal (int e)
|
|||||||
return e + 42;
|
return e + 42;
|
||||||
}
|
}
|
||||||
|
|
||||||
asm (".symver __a_internal,hide_a@@VERS_1");
|
SYMVER(__a_internal, hide_a@@VERS_1);
|
||||||
asm (".symver __b_internal,show_b@@VERS_1");
|
SYMVER(__b_internal, show_b@@VERS_1);
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0+ g +DO \*ABS\* 0+ +VERS_1 +VERS_1
|
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
|
||||||
|
|||||||
@@ -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]+ )?_?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]+ )?_?show_b@@VERS_1
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
* Testcase to verify that reference to foo@BAR and a definition of foo@@BAR
|
* Testcase to verify that reference to foo@BAR and a definition of foo@@BAR
|
||||||
* are not treated as a multiple def.
|
* are not treated as a multiple def.
|
||||||
*/
|
*/
|
||||||
|
#include "vers.h"
|
||||||
|
|
||||||
const char * bar1 = "asdf";
|
const char * bar1 = "asdf";
|
||||||
const char * bar2 = "asdf";
|
const char * bar2 = "asdf";
|
||||||
|
|
||||||
@@ -41,7 +43,7 @@ main()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__(".symver original_foo,foo@");
|
SYMVER(original_foo, foo@);
|
||||||
__asm__(".symver old_foo,foo@VERS_1.1");
|
SYMVER(old_foo, foo@VERS_1.1);
|
||||||
__asm__(".symver old_foo1,foo@VERS_1.2");
|
SYMVER(old_foo1, foo@VERS_1.2);
|
||||||
__asm__(".symver new_foo,foo@@VERS_1.2");
|
SYMVER(new_foo, foo@@VERS_1.2);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
0+ g +DO \*ABS\* 0+ +VERS_1\.1 +VERS_1\.1
|
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_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\.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\.2 +(0x[0-9a-f]+ )?_?foo
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
0+ *F? *\*UND\* 0+ 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@
|
||||||
[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\.1
|
||||||
[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?foo@@VERS_1\.2
|
[0-9a-f]+ g +F \.(text|opd) [0-9a-f]+ (0x[0-9a-f]+ )?_?foo@@VERS_1\.2
|
||||||
|
|||||||
Reference in New Issue
Block a user