2019-08-20 16:49:07 +08:00
|
|
|
## 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.
|
2020-01-22 09:02:25 +08:00
|
|
|
# RUN: yaml2obj --docnum=2 %s -o %t2
|
2019-08-20 16:49:07 +08:00
|
|
|
# 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.
|
2020-01-22 09:02:25 +08:00
|
|
|
# RUN: yaml2obj --docnum=3 %s -o %t3
|
2019-08-20 16:49:07 +08:00
|
|
|
# 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
|