| // REQUIRES: arm |
| // RUN: llvm-mc --arm-add-build-attributes -filetype=obj -triple=thumbv5-none-linux-gnueabi %s -o %t |
| // RUN: ld.lld %t -o %t2 |
| // RUN: llvm-objdump --no-show-raw-insn --triple=thumbv6a-none-linux-gnueabi -d %t2 | FileCheck %s |
| |
| /// Check that the ARM ABI rules for undefined weak symbols are applied. |
| /// Relative relocations are resolved to the place. Although we can't encode |
| /// this for R_ARM_THM_PC8 as negative addends are not permitted. Use smallest |
| /// available value. These are corner cases. |
| .syntax unified |
| |
| .weak target |
| .type target, %function |
| |
| .text |
| .global _start |
| _start: |
| /// R_ARM_THM_PC8 |
| /// adr r0, target |
| .inst.n 0xa0ff |
| .reloc 0, R_ARM_THM_PC8, target |
| /// ldr r0, target |
| .inst.n 0x48ff |
| .reloc 2, R_ARM_THM_PC8, target |
| // CHECK: 000200b4 <_start>: |
| // CHECK-NEXT: 200b4: adr r0, #0 |
| // CHECK-NEXT: ldr r0, [pc, #0] |