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-ifunc/lib.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-ifunc/lib.c')
-rw-r--r-- | binutils-2.21/ld/testsuite/ld-ifunc/lib.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/binutils-2.21/ld/testsuite/ld-ifunc/lib.c b/binutils-2.21/ld/testsuite/ld-ifunc/lib.c new file mode 100644 index 0000000..393dabf --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-ifunc/lib.c @@ -0,0 +1,39 @@ +int +library_func1 (void) +{ + return 2; +} + +int global = 1; + +#ifdef WITH_IFUNC + +static int minus_one (void) { return -1; } +static int zero (void) { return 0; } + +void * library_func2_ifunc (void) __asm__ ("library_func2"); +void * library_func2_ifunc (void) { return global ? minus_one : zero ; } +__asm__(".type library_func2, %gnu_indirect_function"); + +extern int library_func2 (int); +extern __typeof (library_func2) library_func2 __asm__ ("__GI_library_func2"); + +__asm__(".global __GI_library_func2"); +__asm__(".hidden __GI_library_func2"); +__asm__(".set __GI_library_func2, library_func2"); + +int +library_func (int x) +{ + return library_func2 (x); +} + +#else /* WITHOUT_IFUNC */ + +int +library_func2 (void) +{ + return 3; +} + +#endif |