## 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: []