diff options
Diffstat (limited to 'lld/test/elf2/init-fini.s')
| -rw-r--r-- | lld/test/elf2/init-fini.s | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lld/test/elf2/init-fini.s b/lld/test/elf2/init-fini.s new file mode 100644 index 00000000000..cd1649efe3f --- /dev/null +++ b/lld/test/elf2/init-fini.s @@ -0,0 +1,43 @@ +// REQUIRES: x86 +// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t + +// Should use "_init" and "_fini" by default when fills dynamic table +// RUN: lld -flavor gnu2 -shared %t -o %t2 +// RUN: llvm-readobj -dynamic-table %t2 | FileCheck --check-prefix=BYDEF %s +// BYDEF: INIT 0x11010 +// BYDEF: FINI 0x11020 + +// -init and -fini override symbols to use +// RUN: lld -flavor gnu2 -shared %t -o %t2 -init _foo -fini _bar +// RUN: llvm-readobj -dynamic-table %t2 | FileCheck --check-prefix=OVR %s +// OVR: INIT 0x11030 +// OVR: FINI 0x11040 + +// Check aliases as well +// RUN: lld -flavor gnu2 -shared %t -o %t2 -init=_foo -fini=_bar +// RUN: llvm-readobj -dynamic-table %t2 | FileCheck --check-prefix=OVR %s + +// Should add a dynamic table entry even if a given symbol stay undefined +// RUN: lld -flavor gnu2 -shared %t -o %t2 -init=_undef -fini=_undef +// RUN: llvm-readobj -dynamic-table %t2 | FileCheck --check-prefix=UNDEF %s +// UNDEF: INIT 0x0 +// UNDEF: FINI 0x0 + +// Should not add new entries to the symbol table +// and should not require given symbols to be resolved +// RUN: lld -flavor gnu2 -shared %t -o %t2 -init=_unknown -fini=_unknown +// RUN: llvm-readobj -symbols -dynamic-table %t2 | FileCheck --check-prefix=NOENTRY %s +// NOENTRY: Symbols [ +// NOENTRY-NOT: Name: _unknown +// NOENTRY: ] +// NOENTRY: DynamicSection [ +// NOENTRY-NOT: INIT +// NOENTRY-NOT: FINI +// NOENTRY: ] + +.global _start,_init,_fini,_foo,_bar,_undef; +_start: +_init = 0x11010 +_fini = 0x11020 +_foo = 0x11030 +_bar = 0x11040 |

