diff options
Diffstat (limited to 'llvm/test/tools/llvm-objcopy/ELF/remove-section-in-segment.test')
| -rw-r--r-- | llvm/test/tools/llvm-objcopy/ELF/remove-section-in-segment.test | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/ELF/remove-section-in-segment.test b/llvm/test/tools/llvm-objcopy/ELF/remove-section-in-segment.test new file mode 100644 index 00000000000..036c9541f30 --- /dev/null +++ b/llvm/test/tools/llvm-objcopy/ELF/remove-section-in-segment.test @@ -0,0 +1,47 @@ +# Show that --remove-section removes sections in segments. + +# RUN: yaml2obj %s -o %t + +# Validate the offsets for the later parts of the test. +# RUN: llvm-objcopy %t %t.copy +# Skip to the start of the sections, which should be immediately after the +# program header table (i.e. sizeof(Elf64_Ehdr) + sizeof(Elf64_Phdr) == 120). +# RUN: od -t x1 -N 16 -j 120 %t.copy | FileCheck %s --check-prefix=COPY + +# COPY: 11 22 33 44 55 66 77 88 + +# RUN: llvm-objcopy --remove-section non_alloc %t %t.nonalloc +# RUN: llvm-readelf --sections %t.nonalloc | FileCheck %s --check-prefix=NONALLOC-SHDRS +# RUN: od -t x1 -N 16 -j 120 %t.nonalloc | FileCheck %s --check-prefix=NONALLOC-BYTES + +# NONALLOC-SHDRS-NOT: non_alloc +# NONALLOC-BYTES: 11 22 33 44 00 00 00 00 + +# RUN: llvm-objcopy --remove-section shf_alloc %t %t.alloc +# RUN: llvm-readelf --sections %t.alloc | FileCheck %s --check-prefix=ALLOC-SHDRS +# RUN: od -t x1 -N 16 -j 120 %t.alloc | FileCheck %s --check-prefix=ALLOC-BYTES + +# ALLOC-SHDRS-NOT: shf_alloc +# ALLOC-BYTES: 00 00 00 00 55 66 77 88 + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 +Sections: + - Name: shf_alloc + Type: SHT_PROGBITS + Flags: [SHF_ALLOC] + Content: '11223344' + - Name: non_alloc + Type: SHT_PROGBITS + Flags: [] + Content: '55667788' +ProgramHeaders: + # Use an arbitrary segment type to show that the segment type is unimportant. + - Type: 0x61234567 + Sections: + - Section: shf_alloc + - Section: non_alloc |

