xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/strip-non-alloc.test (revision a7a447be0fa934505f0c423fb97b91a68c1cc715)
16503aadcSFangrui Song# RUN: yaml2obj --docnum=1 %s -o %t
26503aadcSFangrui Song# RUN: llvm-objcopy --strip-non-alloc %t %t.out
36503aadcSFangrui Song# RUN: llvm-readobj --file-headers --sections %t.out | FileCheck %s
46e4dc6f2SAlexander Shaposhnikov
56503aadcSFangrui Song# CHECK: SectionHeaderCount: 5
66503aadcSFangrui Song# CHECK: Name: non_alloc_in_segment
76503aadcSFangrui Song# CHECK: Name: .bss
86503aadcSFangrui Song# CHECK: Name: .text
96503aadcSFangrui Song# CHECK: Name: .shstrtab
106503aadcSFangrui Song
116503aadcSFangrui Song--- !ELF
126e4dc6f2SAlexander ShaposhnikovFileHeader:
136e4dc6f2SAlexander Shaposhnikov  Class:           ELFCLASS64
146e4dc6f2SAlexander Shaposhnikov  Data:            ELFDATA2LSB
156e4dc6f2SAlexander Shaposhnikov  Type:            ET_REL
166e4dc6f2SAlexander Shaposhnikov  Machine:         EM_X86_64
176e4dc6f2SAlexander ShaposhnikovSections:
18b5de5e25SJames Henderson  - Name:            non_alloc_in_segment
19b5de5e25SJames Henderson    Type:            SHT_PROGBITS
20b5de5e25SJames Henderson    Flags:           [ ]
21b5de5e25SJames Henderson    Size:            4
226e4dc6f2SAlexander Shaposhnikov  - Name:            .bss
236e4dc6f2SAlexander Shaposhnikov    Type:            SHT_NOBITS
246e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC ]
256e4dc6f2SAlexander Shaposhnikov  - Name:            .text
266e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
276e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
28b5de5e25SJames HendersonProgramHeaders:
29b5de5e25SJames Henderson  # Use an arbitrary segment type to show that the segment type is unimportant.
30b5de5e25SJames Henderson  - Type:     0x61234567
31*a7a447beSGeorgii Rymar    FirstSec: non_alloc_in_segment
32*a7a447beSGeorgii Rymar    LastSec:  non_alloc_in_segment
336e4dc6f2SAlexander Shaposhnikov
346503aadcSFangrui Song# RUN: yaml2obj --docnum=2 %s -o %t2
356503aadcSFangrui Song# RUN: llvm-objcopy --strip-non-alloc %t2 %t2.out
366503aadcSFangrui Song# RUN: llvm-readobj --file-headers --sections %t2.out | FileCheck --check-prefix=CHECK2 %s
376e4dc6f2SAlexander Shaposhnikov
386503aadcSFangrui Song# CHECK2: SectionHeaderCount: 3
396503aadcSFangrui Song# CHECK2: Name: .text
406503aadcSFangrui Song# CHECK2: Name: .shstrtab
416503aadcSFangrui Song
426503aadcSFangrui Song--- !ELF
436503aadcSFangrui SongFileHeader:
446503aadcSFangrui Song  Class:     ELFCLASS64
456503aadcSFangrui Song  Data:      ELFDATA2LSB
466503aadcSFangrui Song  Type:      ET_REL
476503aadcSFangrui Song  Machine:   EM_X86_64
486503aadcSFangrui SongSections:
496503aadcSFangrui Song  - Name:    .text
506503aadcSFangrui Song    Type:    SHT_PROGBITS
516503aadcSFangrui Song    Flags:   [ SHF_ALLOC, SHF_EXECINSTR ]
526503aadcSFangrui Song## empty_trailing_non_alloc is considered included by the segment,
536503aadcSFangrui Song## so it will be retained.
546503aadcSFangrui Song  - Name:    empty_trailing_non_alloc
556503aadcSFangrui Song    Type:    SHT_PROGBITS
566503aadcSFangrui Song  - Name:    trailing_non_alloc
576503aadcSFangrui Song    Type:    SHT_PROGBITS
586503aadcSFangrui Song    Content: 00
596503aadcSFangrui SongProgramHeaders:
606503aadcSFangrui Song  - Type:     0x61234567
61*a7a447beSGeorgii Rymar    FirstSec: .text
62*a7a447beSGeorgii Rymar    LastSec:  .text
63