| ## 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 |
| ... |