## Show that if --remove-section is given, llvm-objcopy removes sections ## specified by the option. # RUN: yaml2obj %s -o %t ## Remove only __TEXT,__text section. # RUN: llvm-objcopy --remove-section __TEXT,__text %t %t2 # RUN: llvm-readobj --sections --section-data %t2 \ # RUN: | FileCheck %s --check-prefixes=COMMON,REMOVE-TEXT-ONLY ## Remove multiple sections. # RUN: llvm-objcopy --remove-section __TEXT,__text --remove-section __DATA,__data %t %t3 # RUN: llvm-readobj --sections --section-data %t3 \ # RUN: | FileCheck %s --check-prefixes=COMMON,REMOVE-TEXT-AND-DATA # COMMON: Sections [ # REMOVE-TEXT-ONLY-NEXT: Section { # REMOVE-TEXT-ONLY-NEXT: Index: 0 # REMOVE-TEXT-ONLY-NEXT: Name: __data (5F 5F 64 61 74 61 00 00 00 00 00 00 00 00 00 00) # REMOVE-TEXT-ONLY-NEXT: Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00) # REMOVE-TEXT-ONLY-NEXT: Address: 0x4 # REMOVE-TEXT-ONLY-NEXT: Size: 0x4 # REMOVE-TEXT-ONLY-NEXT: Offset: 264 # REMOVE-TEXT-ONLY-NEXT: Alignment: 0 # REMOVE-TEXT-ONLY-NEXT: RelocationOffset: 0x0 # REMOVE-TEXT-ONLY-NEXT: RelocationCount: 0 # REMOVE-TEXT-ONLY-NEXT: Type: Regular (0x0) # REMOVE-TEXT-ONLY-NEXT: Attributes [ (0x0) # REMOVE-TEXT-ONLY-NEXT: ] # REMOVE-TEXT-ONLY-NEXT: Reserved1: 0x0 # REMOVE-TEXT-ONLY-NEXT: Reserved2: 0x0 # REMOVE-TEXT-ONLY-NEXT: Reserved3: 0x0 # REMOVE-TEXT-ONLY-NEXT: SectionData ( # REMOVE-TEXT-ONLY-NEXT: 0000: DDAADDAA |....| # REMOVE-TEXT-ONLY-NEXT: ) # REMOVE-TEXT-ONLY-NEXT: } # COMMON-NEXT: Section { # REMOVE-TEXT-ONLY-NEXT: Index: 1 # REMOVE-TEXT-AND-DATA-NEXT: Index: 0 # COMMON-NEXT: Name: __const (5F 5F 63 6F 6E 73 74 00 00 00 00 00 00 00 00 00) # COMMON-NEXT: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) # COMMON-NEXT: Address: 0x8 # COMMON-NEXT: Size: 0x4 # REMOVE-TEXT-ONLY-NEXT: Offset: 268 # REMOVE-TEXT-AND-DATA-NEXT: Offset: 184 # COMMON-NEXT: Alignment: 0 # COMMON-NEXT: RelocationOffset: 0x0 # COMMON-NEXT: RelocationCount: 0 # COMMON-NEXT: Type: Regular (0x0) # COMMON-NEXT: Attributes [ (0x0) # COMMON-NEXT: ] # COMMON-NEXT: Reserved1: 0x0 # COMMON-NEXT: Reserved2: 0x0 # COMMON-NEXT: Reserved3: 0x0 # COMMON-NEXT: SectionData ( # COMMON-NEXT: 0000: EEFFEEFF |....| # COMMON-NEXT: ) # COMMON-NEXT: } # COMMON-NEXT: ] ## Keep all sections if the specified section name is not present in the ## input. The output file should be the same as the input. # RUN: llvm-objcopy --remove-section __TEXT,__foo %t %t4 # RUN: cmp %t %t4 --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x00000003 filetype: 0x00000001 ncmds: 1 sizeofcmds: 312 flags: 0x00002000 reserved: 0x00000000 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 312 segname: '' vmaddr: 0 vmsize: 12 fileoff: 344 filesize: 12 maxprot: 7 initprot: 7 nsects: 3 flags: 0 Sections: - sectname: __text segname: __TEXT addr: 0x0000000000000000 content: 'AABBCCDD' size: 4 offset: 344 align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x80000400 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - sectname: __data segname: __DATA addr: 0x0000000000000004 content: 'DDAADDAA' size: 4 offset: 348 align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - sectname: __const segname: __TEXT addr: 0x0000000000000008 content: 'EEFFEEFF' size: 4 offset: 352 align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000