| # REQUIRES: aarch64 |
| |
| # RUN: yaml2obj %s -o %t.o |
| # RUN: ld.lld %t.o -o %t.out |
| # RUN: llvm-objdump -d -triple=aarch64-none-linux %t.out | FileCheck %s |
| |
| # Check that the R_AARCH64_JUMP26 writes the branch opcode as well as the |
| # immediate. We use this property to overwrite instructions with a branch. |
| |
| # CHECK: Disassembly of section .text: |
| # CHECK-NEXT: foo: |
| # CHECK-NEXT: 20000: 01 00 00 14 b #4 |
| # CHECK: bar: |
| # CHECK-NEXT: 20004: ff ff ff 17 b #-4 |
| |
| !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_AARCH64 |
| Sections: |
| - Type: SHT_PROGBITS |
| Name: .text |
| Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| Content: "0000000000000000" |
| - Type: SHT_RELA |
| Name: .rela.text |
| Link: .symtab |
| Info: .text |
| Relocations: |
| - Offset: 0 |
| Symbol: bar |
| Type: R_AARCH64_JUMP26 |
| - Offset: 4 |
| Symbol: foo |
| Type: R_AARCH64_JUMP26 |
| |
| Symbols: |
| Local: |
| - Type: STT_FUNC |
| Section: .text |
| Name: foo |
| Value: 0 |
| - Type: STT_FUNC |
| Section: .text |
| Name: bar |
| Value: 4 |