# RUN: yaml2obj --docnum=1 %s -o %t1 # RUN: llvm-objcopy %t1 %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 Info: .text Relocations: - Offset: 0x1000 Type: R_X86_64_RELATIVE # CHECK: Relocations [ # CHECK-NEXT: Section (2) .rel.text { # CHECK-NEXT: 0x1000 R_X86_64_RELATIVE - 0x0 # CHECK-NEXT: } # CHECK-NEXT:] ## Check we produce a valid output when stripping unneeded symbols from an object that ## has a symbol table and a relocation with a symbol index of 0. # RUN: yaml2obj --docnum=2 %s -o %t3 # RUN: llvm-objcopy --strip-unneeded %t3 %t4 # RUN: llvm-readobj --relocations --sections --symbols %t4 | FileCheck %s --check-prefix=STRIP # STRIP: Relocations [ # STRIP-NEXT: Section {{.*}} .rel.text { # STRIP-NEXT: 0x1000 R_X86_64_NONE - 0x0 # STRIP-NEXT: } # STRIP-NEXT: ] # STRIP-NEXT: Symbols [ # STRIP-NEXT: Symbol { # STRIP-NEXT: Name: (0) # STRIP-NEXT: Value: 0x0 # STRIP-NEXT: Size: 0 # STRIP-NEXT: Binding: Local (0x0) # STRIP-NEXT: Type: None (0x0) # STRIP-NEXT: Other: 0 # STRIP-NEXT: Section: Undefined (0x0) # STRIP-NEXT: } # STRIP-NEXT: ] --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS - Name: .rel.text Type: SHT_REL Info: .text Relocations: - Offset: 0x1000 Type: R_X86_64_NONE Symbols: []