296 lines · plain
1## This test verifies that llvm-objcopy copies an executable properly. It2## uses llvm-readobj instead of cmp because some parts of the object3## (e.g., the string table) are not identical; the output file is correct but4## some offsets differ from the input file.5# RUN: yaml2obj %s -o %t6# RUN: llvm-objcopy %t %t27# RUN: llvm-readobj --file-headers --sections %t2 | FileCheck %s8 9--- !mach-o10FileHeader:11 magic: 0xFEEDFACF12 cputype: 0x0100000713 cpusubtype: 0x8000000314 filetype: 0x0000000215 ncmds: 1516 sizeofcmds: 97617 flags: 0x0020008518 reserved: 0x0000000019LoadCommands:20 - cmd: LC_SEGMENT_6421 cmdsize: 7222 segname: __PAGEZERO23 vmaddr: 024 vmsize: 429496729625 fileoff: 026 filesize: 027 maxprot: 028 initprot: 029 nsects: 030 flags: 031 - cmd: LC_SEGMENT_6432 cmdsize: 23233 segname: __TEXT34 vmaddr: 429496729635 vmsize: 409636 fileoff: 037 filesize: 409638 maxprot: 739 initprot: 540 nsects: 241 flags: 042 Sections:43 - sectname: __text44 segname: __TEXT45 addr: 0x0000000100000F7046 size: 5847 offset: 0x00000F7048 align: 449 reloff: 0x0000000050 nreloc: 051 flags: 0x8000040052 reserved1: 0x0000000053 reserved2: 0x0000000054 reserved3: 0x0000000055 - sectname: __unwind_info56 segname: __TEXT57 addr: 0x0000000100000FAC58 size: 7259 offset: 0x00000FAC60 align: 261 reloff: 0x0000000062 nreloc: 063 flags: 0x0000000064 reserved1: 0x0000000065 reserved2: 0x0000000066 reserved3: 0x0000000067 - cmd: LC_SEGMENT_6468 cmdsize: 23269 segname: __DATA70 vmaddr: 429497139271 vmsize: 409672 fileoff: 409673 filesize: 409674 maxprot: 775 initprot: 376 nsects: 277 flags: 078 Sections:79 - sectname: __data80 segname: __DATA81 addr: 0x000000010000100082 size: 483 offset: 0x0000100084 align: 285 reloff: 0x0000000086 nreloc: 087 flags: 0x0000000088 reserved1: 0x0000000089 reserved2: 0x0000000090 reserved3: 0x0000000091 - sectname: __common92 segname: __DATA93 addr: 0x000000010000100494 size: 495 offset: 0x0000000096 align: 297 reloff: 0x0000000098 nreloc: 099 flags: 0x00000001100 reserved1: 0x00000000101 reserved2: 0x00000000102 reserved3: 0x00000000103 - cmd: LC_SEGMENT_64104 cmdsize: 72105 segname: __LINKEDIT106 vmaddr: 4294975488107 vmsize: 4096108 fileoff: 8192109 filesize: 232110 maxprot: 7111 initprot: 1112 nsects: 0113 flags: 0114 - cmd: LC_DYLD_INFO_ONLY115 cmdsize: 48116 rebase_off: 0117 rebase_size: 0118 bind_off: 0119 bind_size: 0120 weak_bind_off: 0121 weak_bind_size: 0122 lazy_bind_off: 0123 lazy_bind_size: 0124 export_off: 8192125 export_size: 72126 - cmd: LC_SYMTAB127 cmdsize: 24128 symoff: 8272129 nsyms: 6130 stroff: 8368131 strsize: 56132 - cmd: LC_DYSYMTAB133 cmdsize: 80134 ilocalsym: 0135 nlocalsym: 0136 iextdefsym: 0137 nextdefsym: 5138 iundefsym: 5139 nundefsym: 1140 tocoff: 0141 ntoc: 0142 modtaboff: 0143 nmodtab: 0144 extrefsymoff: 0145 nextrefsyms: 0146 indirectsymoff: 0147 nindirectsyms: 0148 extreloff: 0149 nextrel: 0150 locreloff: 0151 nlocrel: 0152 - cmd: LC_LOAD_DYLINKER153 cmdsize: 32154 name: 12155 Content: '/usr/lib/dyld'156 ZeroPadBytes: 7157 - cmd: LC_UUID158 cmdsize: 24159 uuid: B6EE4FB7-4E1E-3C7A-80D3-CFBD89DBC0FE160 - cmd: LC_BUILD_VERSION161 cmdsize: 32162 platform: 1163 minos: 658944164 sdk: 658944165 ntools: 1166 Tools:167 - tool: 3168 version: 29491968169 - cmd: LC_SOURCE_VERSION170 cmdsize: 16171 version: 0172 - cmd: LC_LINKER_OPTIMIZATION_HINT173 cmdsize: 16174 dataoff: 0175 datasize: 0176 - cmd: LC_MAIN177 cmdsize: 24178 entryoff: 3984179 stacksize: 0180 - cmd: LC_LOAD_DYLIB181 cmdsize: 56182 dylib:183 name: 24184 timestamp: 2185 current_version: 82115073186 compatibility_version: 65536187 Content: '/usr/lib/libSystem.B.dylib'188 ZeroPadBytes: 6189 - cmd: LC_FUNCTION_STARTS190 cmdsize: 16191 dataoff: 8264192 datasize: 8193 - cmd: LC_DATA_IN_CODE194 cmdsize: 16195 dataoff: 8272196 datasize: 0197LinkEditData:198 ExportTrie:199 TerminalSize: 0200 NodeOffset: 0201 Name: ''202 Flags: 0x0000000000000000203 Address: 0x0000000000000000204 Other: 0x0000000000000000205 ImportName: ''206 Children:207 - TerminalSize: 0208 NodeOffset: 5209 Name: _210 Flags: 0x0000000000000000211 Address: 0x0000000000000000212 Other: 0x0000000000000000213 ImportName: ''214 Children:215 - TerminalSize: 2216 NodeOffset: 44217 Name: _mh_execute_header218 Flags: 0x0000000000000000219 Address: 0x0000000000000000220 Other: 0x0000000000000000221 ImportName: ''222 - TerminalSize: 3223 NodeOffset: 48224 Name: foo225 Flags: 0x0000000000000000226 Address: 0x0000000000000F70227 Other: 0x0000000000000000228 ImportName: ''229 - TerminalSize: 3230 NodeOffset: 53231 Name: main232 Flags: 0x0000000000000000233 Address: 0x0000000000000F90234 Other: 0x0000000000000000235 ImportName: ''236 - TerminalSize: 3237 NodeOffset: 58238 Name: b239 Flags: 0x0000000000000000240 Address: 0x0000000000001000241 Other: 0x0000000000000000242 ImportName: ''243 - TerminalSize: 3244 NodeOffset: 63245 Name: a246 Flags: 0x0000000000000000247 Address: 0x0000000000001004248 Other: 0x0000000000000000249 ImportName: ''250 NameList:251 - n_strx: 2252 n_type: 0x0F253 n_sect: 1254 n_desc: 16255 n_value: 4294967296256 - n_strx: 22257 n_type: 0x0F258 n_sect: 4259 n_desc: 0260 n_value: 4294971396261 - n_strx: 25262 n_type: 0x0F263 n_sect: 3264 n_desc: 0265 n_value: 4294971392266 - n_strx: 28267 n_type: 0x0F268 n_sect: 1269 n_desc: 0270 n_value: 4294971248271 - n_strx: 33272 n_type: 0x0F273 n_sect: 1274 n_desc: 0275 n_value: 4294971280276 - n_strx: 39277 n_type: 0x01278 n_sect: 0279 n_desc: 256280 n_value: 0281 StringTable:282 - ' '283 - __mh_execute_header284 - _a285 - _b286 - _foo287 - _main288 - dyld_stub_binder289...290 291# CHECK: FileType: Executable (0x2)292# CHECK: Name: __text293# CHECK: Name: __unwind_info294# CHECK: Name: __data295# CHECK: Name: __common296