| # REQUIRES: arm |
| # RUN: yaml2obj %s -o %t.o |
| # RUN: ld.lld %t.o -o %t |
| # RUN: llvm-objdump -triple=thumbv7a-linux-gnueabi -d %t | FileCheck %s |
| |
| # CHECK: Disassembly of section .text: |
| # CHECK-EMPTY: |
| # CHECK-NEXT:_start: |
| # CHECK-NEXT: 11000: ff e7 b #-2 |
| |
| # Test the R_ARM_THM_JUMP11 relocation (102) to an undefined weak reference |
| # It should resolve to the next instruction, which is an offset of -2 which |
| # when added to the Thumb PC-bias of 4 is +2. We can't use llvm-mc to construct |
| # the object as it relaxes b.n to b.w (R_ARM_JUMP24). |
| |
| !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_ARM |
| Sections: |
| - Type: SHT_PROGBITS |
| Name: .text |
| Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| Content: "fee7" |
| - Type: SHT_REL |
| Name: .rel.text |
| Link: .symtab |
| Info: .text |
| Relocations: |
| - Offset: 0 |
| Symbol: undefined_weak |
| Type: R_ARM_THM_JUMP11 |
| |
| Symbols: |
| - Type: STT_NOTYPE |
| Name: "$t" |
| Section: .text |
| Value: 0 |
| - Type: STT_FUNC |
| Name: _start |
| Value: 1 |
| Section: .text |
| Binding: STB_GLOBAL |
| - Type: STT_NOTYPE |
| Name: undefined_weak |
| Value: 0 |
| Binding: STB_WEAK |