185 lines · yaml
1# Test that obj2yaml + yaml2obj can round-trip mach-o executables with2# raw __LINKEDIT segments.3#4# RUN: yaml2obj %s | obj2yaml --raw-segment=data --raw-segment=linkedit | FileCheck %s5#6# This file was produced using:7# echo "int ext;" > a.c8# xcrun --sdk iphoneos clang -target arm64-apple-ios15.1 -o a.o a.c -c9# xcrun --sdk iphoneos clang -target arm64-apple-ios15.1 -dynamiclib a.o -o liba.dylib -install_name @executable_path/liba.dylib10# echo "extern int ext;" > b.c11# echo "int padding;" >> b.c12# echo "int *p = &ext + 4;" >> b.c13# xcrun --sdk iphoneos clang -target arm64-apple-ios15.1 -o b.o b.c -c14# xcrun --sdk iphoneos clang -target arm64-apple-ios15.1 -dynamiclib b.o -o libfixups.dylib -install_name @executable_path/libfixups.dylib -L. -la15#16# CHECK: - sectname: __data17# CHECK: segname: __DATA18# CHECK: content: '0000001000000080'19# CHECK: __LINKEDIT: 0000000020000000480000004C000000010000000100000000000000000000000300000000000000100000000000000018000000004006000040000000000000000000000100000001020000005F6578740000000000000000015F700006040080800100000000000000000000000000020000000F02000000400000000000000500000001000001000000000000000020005F70005F6578740000000000000020 21--- !mach-o22FileHeader:23 magic: 0xFEEDFACF24 cputype: 0x100000C25 cpusubtype: 0x026 filetype: 0x627 ncmds: 1628 sizeofcmds: 81629 flags: 0x10008530 reserved: 0x031LoadCommands:32 - cmd: LC_SEGMENT_6433 cmdsize: 15234 segname: __TEXT35 vmaddr: 036 vmsize: 1638437 fileoff: 038 filesize: 1638439 maxprot: 540 initprot: 541 nsects: 142 flags: 043 Sections:44 - sectname: __text45 segname: __TEXT46 addr: 0x400047 size: 048 offset: 0x400049 align: 050 reloff: 0x051 nreloc: 052 flags: 0x8000040053 reserved1: 0x054 reserved2: 0x055 reserved3: 0x056 content: ''57 - cmd: LC_SEGMENT_6458 cmdsize: 15259 segname: __DATA60 vmaddr: 1638461 vmsize: 1638462 fileoff: 1638463 filesize: 1638464 maxprot: 365 initprot: 366 nsects: 167 flags: 068 Sections:69 - sectname: __data70 segname: __DATA71 addr: 0x400072 size: 873 offset: 0x400074 align: 375 reloff: 0x076 nreloc: 077 flags: 0x078 reserved1: 0x079 reserved2: 0x080 reserved3: 0x081 content: '0000001000000080'82 - cmd: LC_SEGMENT_6483 cmdsize: 7284 segname: __LINKEDIT85 vmaddr: 3276886 vmsize: 1638487 fileoff: 3276888 filesize: 16089 maxprot: 190 initprot: 191 nsects: 092 flags: 093 - cmd: LC_ID_DYLIB94 cmdsize: 6495 dylib:96 name: 2497 timestamp: 198 current_version: 099 compatibility_version: 0100 Content: '@executable_path/libfixups.dylib'101 ZeroPadBytes: 8102 - cmd: LC_DYLD_CHAINED_FIXUPS103 cmdsize: 16104 dataoff: 32768105 datasize: 88106 - cmd: LC_DYLD_EXPORTS_TRIE107 cmdsize: 16108 dataoff: 32856109 datasize: 16110 - cmd: LC_SYMTAB111 cmdsize: 24112 symoff: 32880113 nsyms: 2114 stroff: 32912115 strsize: 16116 - cmd: LC_DYSYMTAB117 cmdsize: 80118 ilocalsym: 0119 nlocalsym: 0120 iextdefsym: 0121 nextdefsym: 1122 iundefsym: 1123 nundefsym: 1124 tocoff: 0125 ntoc: 0126 modtaboff: 0127 nmodtab: 0128 extrefsymoff: 0129 nextrefsyms: 0130 indirectsymoff: 0131 nindirectsyms: 0132 extreloff: 0133 nextrel: 0134 locreloff: 0135 nlocrel: 0136 - cmd: LC_UUID137 cmdsize: 24138 uuid: 56F7BCE0-C1A7-38E3-A90D-742D8E3D5FA9139 - cmd: LC_BUILD_VERSION140 cmdsize: 32141 platform: 2142 minos: 983296143 sdk: 983552144 ntools: 1145 Tools:146 - tool: 3147 version: 46596096148 - cmd: LC_SOURCE_VERSION149 cmdsize: 16150 version: 0151 - cmd: LC_ENCRYPTION_INFO_64152 cmdsize: 24153 cryptoff: 16384154 cryptsize: 0155 cryptid: 0156 pad: 0157 - cmd: LC_LOAD_DYLIB158 cmdsize: 56159 dylib:160 name: 24161 timestamp: 2162 current_version: 0163 compatibility_version: 0164 Content: '@executable_path/liba.dylib'165 ZeroPadBytes: 5166 - cmd: LC_LOAD_DYLIB167 cmdsize: 56168 dylib:169 name: 24170 timestamp: 2171 current_version: 85917696172 compatibility_version: 65536173 Content: '/usr/lib/libSystem.B.dylib'174 ZeroPadBytes: 6175 - cmd: LC_FUNCTION_STARTS176 cmdsize: 16177 dataoff: 32872178 datasize: 8179 - cmd: LC_DATA_IN_CODE180 cmdsize: 16181 dataoff: 32880182 datasize: 0183__LINKEDIT: 0000000020000000480000004C000000010000000100000000000000000000000300000000000000100000000000000018000000004006000040000000000000000000000100000001020000005F6578740000000000000000015F700006040080800100000000000000000000000000020000000F02000000400000000000000500000001000001000000000000000020005F70005F65787400000000000000184...185