## This file contains test cases for generating Fat Mach-O binaries. ## a) Test that yaml2obj emits Fat Mach-O binary and obj2yaml converts it ## back to YAML file. # RUN: yaml2obj --docnum=1 %s | obj2yaml | FileCheck %s --- !fat-mach-o FatHeader: magic: 0xCAFEBABE nfat_arch: 2 FatArchs: - cputype: 0x00000007 cpusubtype: 0x00000003 offset: 0x0000000000001000 size: 15244 align: 12 - cputype: 0x01000007 cpusubtype: 0x80000003 offset: 0x0000000000005000 size: 15380 align: 12 Slices: - FileHeader: magic: 0xFEEDFACE cputype: 0x00000007 cpusubtype: 0x00000003 filetype: 0x00000002 ncmds: 0 sizeofcmds: 0 flags: 0x01218085 - FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x80000003 filetype: 0x00000002 ncmds: 0 sizeofcmds: 0 flags: 0x00218085 reserved: 0x00000000 ... #CHECK: --- !fat-mach-o #CHECK: FatHeader: #CHECK: magic: 0xCAFEBABE #CHECK: nfat_arch: 2 #CHECK: FatArchs: #CHECK: - cputype: 0x7 #CHECK: cpusubtype: 0x3 #CHECK: offset: 0x1000 #CHECK: size: 15244 #CHECK: align: 12 #CHECK: - cputype: 0x1000007 #CHECK: cpusubtype: 0x80000003 #CHECK: offset: 0x5000 #CHECK: size: 15380 #CHECK: align: 12 #CHECK: Slices: #CHECK: - !mach-o #CHECK: FileHeader: #CHECK: magic: 0xFEEDFACE #CHECK: cputype: 0x7 #CHECK: cpusubtype: 0x3 #CHECK: filetype: 0x2 #CHECK: ncmds: 0 #CHECK: sizeofcmds: 0 #CHECK: flags: 0x1218085 #CHECK: - !mach-o #CHECK: FileHeader: #CHECK: magic: 0xFEEDFACF #CHECK: cputype: 0x1000007 #CHECK: cpusubtype: 0x80000003 #CHECK: filetype: 0x2 #CHECK: ncmds: 0 #CHECK: sizeofcmds: 0 #CHECK: flags: 0x218085 #CHECK: reserved: 0x0 #CHECK: ... ## b) Test that yaml2obj emits an error message if the number of 'FatArchs' is less than ## the number of 'Slices'. # RUN: not yaml2obj --docnum=2 %s -o %t2.fat-macho 2>&1 | FileCheck %s --check-prefix=ERROR # ERROR: yaml2obj: error: cannot write 'Slices' if not described in 'FatArches' --- !fat-mach-o FatHeader: magic: 0xCAFEBABE nfat_arch: 2 FatArchs: ## 2 FatArchs are expected. - cputype: 0x00000007 cpusubtype: 0x00000003 offset: 0x0000000000001000 size: 0 align: 0 Slices: - FileHeader: magic: 0xFEEDFACE cputype: 0x00000007 cpusubtype: 0x00000003 filetype: 0x00000002 ncmds: 0 sizeofcmds: 0 flags: 0x00000000 - FileHeader: magic: 0xFEEDFACE cputype: 0x00000007 cpusubtype: 0x00000003 filetype: 0x00000002 ncmds: 0 sizeofcmds: 0 flags: 0x00000000