## Check that we can copy an object that has a relocation ## with a symbol index of 0 even when there is no symbol table. # RUN: yaml2obj --docnum=1 %s -o %t1 # RUN: llvm-objcopy %t1 %t2 # RUN: llvm-readobj --relocations %t2 | FileCheck %s # CHECK: Relocations [ # CHECK-NEXT: Section {{.*}} .rel.text { # CHECK-NEXT: 0x1000 R_X86_64_RELATIVE - # CHECK-NEXT: } # CHECK-NEXT:] --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Name: .rel.text Type: SHT_REL Info: .text Relocations: - Offset: 0x1000 Type: R_X86_64_RELATIVE ## Check that we report an error when a relocation refers to a ## non-zero symbol index but there is no symbol table. # RUN: yaml2obj --docnum=2 %s -o %t3 # RUN: not llvm-objcopy %t3 /dev/null 2>&1 | FileCheck %s --check-prefix=ERR # ERR: error: '.rel.text': relocation references symbol with index 1, but there is no symbol table --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Name: .rel.text Type: SHT_REL Info: .text Relocations: - Offset: 0x1000 Symbol: 1 Type: R_X86_64_NONE