## Here we want to check that llvm-objcopy removes an undefined symbol ## if all references to it have been stripped. # RUN: yaml2obj --docnum=1 %s -o %t.o # RUN: llvm-objcopy -j .other.section %t.o %t2.o # RUN: llvm-readobj --symbols %t2.o | FileCheck %s # RUN: llvm-objcopy -j .text -j .rela.text1 %t.o %t2.o # RUN: llvm-readobj --symbols %t2.o | FileCheck %s --check-prefix=BAR # CHECK-NOT: Name: bar # BAR: Name: bar --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS - Name: .rela.text1 Type: SHT_RELA Relocations: - Offset: 0x0000000000000001 Symbol: bar Type: R_X86_64_32 - Name: .rela.text2 Type: SHT_RELA Relocations: - Offset: 0x0000000000000001 Symbol: bar Type: R_X86_64_32 - Name: .other.section Type: SHT_PROGBITS Symbols: - Name: bar Binding: STB_GLOBAL ... ## Check we remove unreferenced undefined symbols, even if ## they weren't previously referenced. This follows GNU. # RUN: yaml2obj --docnum=2 %s -o %t.o # RUN: llvm-objcopy -j .keep_me %t.o %t2.o # RUN: llvm-readobj --symbols %t2.o | FileCheck %s --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .keep_me Type: SHT_PROGBITS Symbols: - Name: bar Binding: STB_GLOBAL ...