| # RUN: yaml2obj %s -o %t |
| ## No-op copy. |
| # RUN: llvm-objcopy %t %t2 |
| # RUN: llvm-readobj --sections %t2 | FileCheck %s |
| ## No-op strip. |
| # RUN: cp %t %t3 |
| # RUN: llvm-strip --no-strip-all %t3 |
| # RUN: llvm-readobj --sections %t3 | FileCheck %s |
| ## Add symbol. |
| # RUN: llvm-objcopy --add-symbol=another=.text:0,function %t %t4 |
| # RUN: llvm-readobj --sections %t4 | FileCheck %s |
| |
| ## A section with sh_link referencing SHT_SYMTAB indicates that its content may |
| ## use the old symbol indices. If the symbol indices change, reset sh_link to 0 |
| ## to inform tools like linkers that the sh_link has been invalidated. |
| |
| ## Strip first symbol. |
| # RUN: llvm-objcopy --strip-symbol bar %t %t5 |
| # RUN: llvm-readobj --sections %t5 | FileCheck %s --check-prefix=LINK-0 |
| ## Strip last symbol. |
| # RUN: llvm-objcopy --strip-symbol baz %t %t6 |
| # RUN: llvm-readobj --sections %t6 | FileCheck %s --check-prefix=LINK-0 |
| ## Re-order symbols. |
| # RUN: llvm-objcopy --localize-symbol baz %t %t7 |
| # RUN: llvm-readobj --sections %t7 | FileCheck %s --check-prefix=LINK-0 |
| ## Remove .text section. |
| # RUN: llvm-objcopy --remove-section=.text %t %t8 |
| # RUN: llvm-readobj --sections %t8 | FileCheck %s --check-prefix=LINK-0 |
| |
| !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 |
| Size: 32 |
| - Name: .foo |
| Link: .symtab |
| Type: SHT_PROGBITS |
| Flags: [ ] |
| Symbols: |
| - Name: bar |
| Type: STT_FUNC |
| Size: 8 |
| Section: .text |
| Value: 0x1000 |
| Binding: STB_GLOBAL |
| - Name: baz |
| Type: STT_FUNC |
| Size: 8 |
| Section: .text |
| Value: 0x1010 |
| Binding: STB_GLOBAL |
| |
| # CHECK: Name: .foo |
| # CHECK-NEXT: Type: |
| # CHECK-NEXT: Flags [ (0x0) |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Address: |
| # CHECK-NEXT: Offset: |
| # CHECK-NEXT: Size: |
| # CHECK-NEXT: Link: [[#SYMTABIDX:]] |
| |
| # CHECK: Index: [[#SYMTABIDX]] |
| # CHECK-NEXT: Name: .symtab |
| # CHECK-NEXT: Type: SHT_SYMTAB |
| |
| # LINK-0: Name: .foo |
| # LINK-0-NEXT: Type: |
| # LINK-0-NEXT: Flags [ (0x0) |
| # LINK-0-NEXT: ] |
| # LINK-0-NEXT: Address: |
| # LINK-0-NEXT: Offset: |
| # LINK-0-NEXT: Size: |
| # LINK-0-NEXT: Link: 0 |