diff options
Diffstat (limited to 'test/ELF/arm-static-defines.s')
-rw-r--r-- | test/ELF/arm-static-defines.s | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/test/ELF/arm-static-defines.s b/test/ELF/arm-static-defines.s new file mode 100644 index 0000000000000..0012841fb32cb --- /dev/null +++ b/test/ELF/arm-static-defines.s @@ -0,0 +1,44 @@ +// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t +// RUN: ld.lld %t --static -o %t2 2>&1 +// RUN: llvm-readobj --symbols %t2 | FileCheck %s +// REQUIRES: arm + +// Check that on ARM we don't get a multiply defined symbol for __tls_get_addr +// and undefined symbols for references to __exidx_start and __exidx_end + .syntax unified +.section .text + .global __tls_get_addr +__tls_get_addr: + bx lr + + .global _start + .global __exidx_start + .global __exidx_end +_start: + .fnstart + bx lr + .word __exidx_start + .word __exidx_end + .cantunwind + .fnend + +// CHECK: Name: __exidx_end +// CHECK-NEXT: Value: 0x100E4 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Binding: Local +// CHECK-NEXT: Type: None +// CHECK-NEXT: Other [ +// CHECK-NEXT: STV_HIDDEN +// CHECK-NEXT: ] +// CHECK-NEXT: Section: .ARM.exidx +// CHECK: Name: __exidx_start +// CHECK-NEXT: Value: 0x100D4 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Binding: Local +// CHECK-NEXT: Type: None +// CHECK-NEXT: Other [ +// CHECK-NEXT: STV_HIDDEN +// CHECK-NEXT: ] +// CHECK-NEXT: Section: .ARM.exidx +// CHECK: Symbol { +// CHECK-NEXT: Name: __tls_get_addr |