diff options
author | Jing Yu <jingyu@google.com> | 2011-12-20 10:27:58 -0800 |
---|---|---|
committer | Jing Yu <jingyu@google.com> | 2011-12-20 10:27:58 -0800 |
commit | cf3cdbf8b3cda61a619299e7966a83df66244036 (patch) | |
tree | 201e2bcfc955f16802d3257112d29736cb3a3ce8 /binutils-2.21/ld/testsuite/ld-elfvers/vers1.c | |
parent | e4df3e0a5bb640ccfa2f30ee67fe9b3146b152d6 (diff) | |
download | toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.zip toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.tar.gz toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.tar.bz2 |
Add binutils-2.21.
Use --enable-gold=default for dual linker support.
Change-Id: Id1a744c7db58a0b5e7a3be174cdfa875f2f86e49
Diffstat (limited to 'binutils-2.21/ld/testsuite/ld-elfvers/vers1.c')
-rw-r--r-- | binutils-2.21/ld/testsuite/ld-elfvers/vers1.c | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/binutils-2.21/ld/testsuite/ld-elfvers/vers1.c b/binutils-2.21/ld/testsuite/ld-elfvers/vers1.c new file mode 100644 index 0000000..c27bc3b --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-elfvers/vers1.c @@ -0,0 +1,101 @@ +/* + * Basic test of versioning. The idea with this is that we define + * a bunch of definitions of the same symbol, and we can theoretically + * then link applications against varying sets of these. + */ +const char * show_bar1 = "asdf"; +const char * show_bar2 = "asdf"; + +extern int new2_foo(); +extern int bar33(); + +int +bar() +{ + return 3; +} + +/* + * The 'hide' prefix is something so that we can automatically search the + * symbol table and verify that none of these symbols were actually exported. + */ +int +hide_original_foo() +{ + return 1+bar(); + +} + +int +hide_old_foo() +{ + return 10+bar(); + +} + +int +hide_old_foo1() +{ + return 100+bar(); + +} + +int +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"); + + + +#ifdef DO_TEST10 +/* In test 10, we try and define a non-existant version node. The linker + * should catch this and complain. */ +int +hide_new_bogus_foo() +{ + return 1000+bar(); + +} +__asm__(".symver hide_new_bogus_foo,show_foo@VERS_2.2"); +#endif + + + + +#ifdef DO_TEST11 +/* + * This test is designed to catch a couple of syntactic errors. The assembler + * should complain about both of the directives below. + */ +void +xyzzz() +{ + new2_foo(); + bar33(); +} + +__asm__(".symver new2_foo,fooVERS_2.0"); +__asm__(".symver bar33,bar@@VERS_2.0"); +#endif + +#ifdef DO_TEST12 +/* + * This test is designed to catch a couple of syntactic errors. The assembler + * should complain about both of the directives below. + */ +void +xyzzz() +{ + new2_foo(); + bar33(); +} + +__asm__(".symver bar33,bar@@VERS_2.0"); +#endif |