## Show that yaml2obj supports custom section data for Mach-O YAML inputs. ## Case 1: The size of content is greater than the section size. # RUN: not yaml2obj --docnum=1 %s -o %t1 2>&1 | FileCheck %s --check-prefix=CASE1 # CASE1: error: Section size must be greater than or equal to the content size --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x00000003 filetype: 0x00000001 ncmds: 1 sizeofcmds: 232 flags: 0x00002000 reserved: 0x00000000 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 232 segname: '' vmaddr: 0 vmsize: 4 fileoff: 392 filesize: 4 maxprot: 7 initprot: 7 nsects: 1 flags: 0 Sections: - sectname: __data segname: __DATA addr: 0x0000000000000000 size: 0 offset: 0x00000188 align: 2 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 content: CDAB3412 ## Case 2: The content size equals the section size. # RUN: yaml2obj --docnum=2 %s -o %t2 # RUN: llvm-readobj --sections --section-data %t2 | FileCheck %s --check-prefix=CASE2 # CASE2: Index: 0 # CASE2-NEXT: Name: __data (5F 5F 64 61 74 61 00 00 00 00 00 00 00 00 00 00) # CASE2-NEXT: Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00) # CASE2-NEXT: Address: 0x0 # CASE2-NEXT: Size: 0x4 # CASE2-NEXT: Offset: 392 # CASE2-NEXT: Alignment: 2 # CASE2-NEXT: RelocationOffset: 0x0 # CASE2-NEXT: RelocationCount: 0 # CASE2-NEXT: Type: Regular (0x0) # CASE2-NEXT: Attributes [ (0x0) # CASE2-NEXT: ] # CASE2-NEXT: Reserved1: 0x0 # CASE2-NEXT: Reserved2: 0x0 # CASE2-NEXT: Reserved3: 0x0 # CASE2-NEXT: SectionData ( # CASE2-NEXT: 0000: CDAB3412 |..4.| # CASE2-NEXT: ) --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x00000003 filetype: 0x00000001 ncmds: 1 sizeofcmds: 232 flags: 0x00002000 reserved: 0x00000000 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 232 segname: '' vmaddr: 0 vmsize: 4 fileoff: 392 filesize: 4 maxprot: 7 initprot: 7 nsects: 1 flags: 0 Sections: - sectname: __data segname: __DATA addr: 0x0000000000000000 size: 4 offset: 0x00000188 align: 2 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 content: CDAB3412 ## Case 3: The content size is less than the section size. In this case, the area ## after the custom content is filled with zeroes. # RUN: yaml2obj --docnum=3 %s -o %t3 # RUN: llvm-readobj --sections --section-data %t3 | FileCheck %s --check-prefix=CASE3 # CASE3: Index: 0 # CASE3-NEXT: Name: __data (5F 5F 64 61 74 61 00 00 00 00 00 00 00 00 00 00) # CASE3-NEXT: Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00) # CASE3-NEXT: Address: 0x0 # CASE3-NEXT: Size: 0x4 # CASE3-NEXT: Offset: 392 # CASE3-NEXT: Alignment: 2 # CASE3-NEXT: RelocationOffset: 0x0 # CASE3-NEXT: RelocationCount: 0 # CASE3-NEXT: Type: Regular (0x0) # CASE3-NEXT: Attributes [ (0x0) # CASE3-NEXT: ] # CASE3-NEXT: Reserved1: 0x0 # CASE3-NEXT: Reserved2: 0x0 # CASE3-NEXT: Reserved3: 0x0 # CASE3-NEXT: SectionData ( # CASE3-NEXT: 0000: AA000000 |....| # CASE3-NEXT: ) --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x00000003 filetype: 0x00000001 ncmds: 1 sizeofcmds: 232 flags: 0x00002000 reserved: 0x00000000 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 232 segname: '' vmaddr: 0 vmsize: 4 fileoff: 392 filesize: 4 maxprot: 7 initprot: 7 nsects: 1 flags: 0 Sections: - sectname: __data segname: __DATA addr: 0x0000000000000000 size: 4 offset: 0x00000188 align: 2 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 content: AA