# Check handling of R_AARCH64_PREL64 relocation. # RUN: yaml2obj -format=elf %s > %t-obj # RUN: lld -flavor old-gnu -target arm64 -o %t-exe %t-obj # RUN: llvm-objdump -s -t %t-exe | FileCheck %s # CHECK: Contents of section .data: # CHECK-NEXT: 401060 09000000 00000080 f9ffffff ffffff7f ................ # ^^ data2 - data1 + 0x8000000000000001 = 0x8000000000000009 # ^^ data1 - data2 + 0x8000000000000001 = 0x7ffffffffffffff9 # CHECK: SYMBOL TABLE: # CHECK: 00401060 g .data 00000008 data1 # CHECK: 00401068 g .data 00000008 data2 !ELF FileHeader: !FileHeader Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_AARCH64 Sections: - Name: .text Type: SHT_PROGBITS Content: "00000000" AddressAlign: 16 Flags: [SHF_ALLOC, SHF_EXECINSTR] - Name: .data Type: SHT_PROGBITS Content: "00000000000000000000000000000000" AddressAlign: 16 Flags: [SHF_ALLOC, SHF_WRITE] - Name: .rela.data Type: SHT_RELA Info: .data AddressAlign: 8 Relocations: - Offset: 0x0 Symbol: data2 Type: R_AARCH64_PREL64 Addend: -9223372036854775807 - Offset: 0x8 Symbol: data1 Type: R_AARCH64_PREL64 Addend: -9223372036854775807 Symbols: Global: - Name: _start Section: .text Value: 0x0 Size: 4 - Name: data1 Section: .data Size: 8 - Name: data2 Section: .data Value: 0x8 Size: 8