# RUN: yaml2obj %s > %t # RUN: llvm-objcopy %t %t2 # RUN: llvm-readobj -relocations %t2 | FileCheck %s !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_EXEC Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Address: 0x1000 AddressAlign: 0x0000000000000010 Content: "0000000000000000" - Name: .rel.text Type: SHT_REL Link: .symtab Info: .text Relocations: - Offset: 0x1000 Symbol: foo Type: R_X86_64_PC32 - Name: .data Type: SHT_PROGBITS Flags: [ SHF_ALLOC ] Address: 0x2000 AddressAlign: 0x0000000000000010 Content: "0000000000000000" - Name: .rel.data Type: SHT_REL Link: .symtab Info: .data Relocations: - Offset: 0x2000 Symbol: bar Type: R_X86_64_PC32 - Name: .rela.data Type: SHT_RELA Link: .symtab Info: .data Relocations: - Offset: 0x2000 Symbol: barA Type: R_X86_64_PC32 Addend: 0x17 - Name: .rela.text Type: SHT_RELA Link: .symtab Info: .text Relocations: - Offset: 0x1000 Symbol: fooA Type: R_X86_64_PC32 Addend: 0x13 Symbols: Global: - Name: _start Type: STT_FUNC Section: .text Value: 0x1000 Size: 4 - Name: foo Type: STT_FUNC Size: 4 - Name: fooA Type: STT_FUNC Size: 4 - Name: bar Type: STT_OBJECT Size: 4 - Name: barA Type: STT_OBJECT Size: 4 # CHECK: Relocations [ # CHECK-NEXT: Section (2) .rel.text { # CHECK-NEXT: 0x1000 R_X86_64_PC32 foo 0x0 # CHECK-NEXT: } # CHECK-NEXT: Section (4) .rel.data { # CHECK-NEXT: 0x2000 R_X86_64_PC32 bar 0x0 # CHECK-NEXT: } # CHECK-NEXT: Section (5) .rela.data { # CHECK-NEXT: 0x2000 R_X86_64_PC32 barA 0x17 # CHECK-NEXT: } # CHECK-NEXT: Section (6) .rela.text { # CHECK-NEXT: 0x1000 R_X86_64_PC32 fooA 0x13 # CHECK-NEXT: } # CHECK-NEXT:]