| // REQUIRES: arm |
| // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t |
| // RUN: ld.lld --no-merge-exidx-entries %t --static -o %t2 |
| // RUN: llvm-readobj --symbols %t2 | FileCheck %s |
| |
| // 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_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: 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: Symbol { |
| // CHECK-NEXT: Name: __tls_get_addr |