| ## Show that llvm-objcopy correctly updates the elf header and program header |
| ## table when they are within a segment. |
| |
| # RUN: yaml2obj %s -o %t.in |
| ## Validate that the properties are different before the removal. |
| # RUN: llvm-readobj --file-headers --program-headers %t.in | FileCheck %s --check-prefix=BEFORE |
| # RUN: llvm-objcopy %t.in %t.out -R .remove_me |
| # RUN: llvm-readobj --file-headers --program-headers %t.out | FileCheck %s --check-prefix=AFTER |
| |
| # BEFORE: SectionHeaderCount: 6 |
| # BEFORE: Type: PT_LOAD |
| # BEFORE-NEXT: Offset: 0x0 |
| # BEFORE: Type: PT_LOAD |
| # BEFORE-NEXT: Offset: 0xC0 |
| |
| # AFTER: SectionHeaderCount: 3 |
| # AFTER: Type: PT_LOAD |
| # AFTER-NEXT: Offset: 0x0 |
| # AFTER: Type: PT_LOAD |
| # AFTER-NEXT: Offset: 0xB0 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_EXEC |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .remove_me |
| Type: SHT_PROGBITS |
| Size: 0x10 |
| - Name: .keep_me |
| Type: SHT_PROGBITS |
| Size: 0x10 |
| ProgramHeaders: |
| - Type: PT_LOAD |
| Offset: 0 |
| FileSize: 176 # sizeof(Elf64_Ehdr) + 2 * sizeof(Elf64_Phdr) |
| - Type: PT_LOAD |
| FirstSec: .keep_me |
| LastSec: .keep_me |
| Symbols: [] |