# RUN: yaml2obj %s > %t # RUN: not llvm-objcopy -R .symtab %t %t2 2>&1 >/dev/null | FileCheck %s --check-prefix=ERR # RUN: cp %t %t3 ## Use --strip-debug to suppress the default --strip-all behavior of llvm-strip. ## TODO: Implement a better way to suppress --strip-all behavior. # RUN: not llvm-strip --strip-debug -R .symtab %t3 2>&1 >/dev/null | FileCheck %s --check-prefix=ERR !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL 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 Symbols: - Name: foo Type: STT_FUNC Size: 4 Binding: STB_GLOBAL # ERR: Symbol table .symtab cannot be removed because it is referenced by the relocation section .rel.text. # RUN: llvm-objcopy --allow-broken-links -R .symtab %t %t4 # RUN: llvm-readobj --sections %t4 | FileCheck %s --check-prefix=SECTIONS --implicit-check-not=.symtab # RUN: cp %t %t5 # RUN: llvm-strip --strip-debug --allow-broken-links -R .symtab %t5 # RUN: llvm-readobj --sections %t5 | FileCheck %s --check-prefix=SECTIONS --implicit-check-not=.symtab # SECTIONS: Name: .rel.text # SECTIONS: Link # SECTIONS-SAME: : 0