| ## 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 |