285 lines · plain
1# RUN: yaml2obj %s -o %t2 3# RUN: llvm-objdump --private-headers %t | FileCheck %s --check-prefix=CHECK-ORIGINAL4 5## Check offset, size and index of text segment command6# CHECK-ORIGINAL: Load command 17# CHECK-ORIGINAL-NEXT cmdsize8# CHECK-ORIGINAL-NEXT segname __TEXT9# CHECK-ORIGINAL-NEXT vmaddr10# CHECK-ORIGINAL-NEXT vmsize11# CHECK-ORIGINAL-NEXT fileoff 012# CHECK-ORIGINAL-NEXT filesize 1638413 14## Check offset and index of code signature command15# CHECK-ORIGINAL: Load command 1416# CHECK-ORIGINAL-NEXT: cmd LC_CODE_SIGNATURE17# CHECK-ORIGINAL-NEXT: cmdsize 1618# CHECK-ORIGINAL-NEXT: dataoff 1654419# CHECK-ORIGINAL-NEXT: datasize 28020 21# RUN: llvm-install-name-tool -prepend_rpath abcd %t22 23# RUN: llvm-objdump --private-headers %t | FileCheck %s --check-prefix=CHECK-PREPEND24## Verify that the binary contains the new RPATH command, as the first command25# CHECK-PREPEND: Load command 026# CHECK-PREPEND-NEXT: cmd LC_RPATH27# CHECK-PREPEND-NEXT: cmdsize28# CHECK-PREPEND-NEXT: path abcd29 30## Verify the text segment command index increased by 131# CHECK-PREPEND: Load command 232# CHECK-PREPEND-NEXT cmdsize33# CHECK-PREPEND-NEXT segname __TEXT34# CHECK-PREPEND-NEXT vmaddr35# CHECK-PREPEND-NEXT vmsize36# CHECK-PREPEND-NEXT fileoff 037# CHECK-PREPEND-NEXT filesize 1638438 39## Verify the code signature command index increased by 140# CHECK-PREPEND: Load command 1541# CHECK-PREPEND-NEXT: cmd LC_CODE_SIGNATURE42# CHECK-PREPEND-NEXT: cmdsize 1643# CHECK-PREPEND-NEXT: dataoff 1654444# CHECK-PREPEND-NEXT: datasize 32045 46## Verify the new signature is valid47# RUN: %python %p/Inputs/code-signature-check.py %t 16544 320 0 16544 | FileCheck %s --check-prefix=CHECK-TEXT-SEGMENT48## Verify the text segment offset and text segment size values included in the signature header are accurate49# CHECK-TEXT-SEGMENT: execSegBase=0, execSegLimit=1638450 51# RUN: llvm-install-name-tool -delete_rpath abcd %t52 53# RUN: llvm-objdump --private-headers %t | FileCheck %s --check-prefix=CHECK-REMOVE54 55## Verify text segment command index returned to orignal56# CHECK-REMOVE: Load command 157# CHECK-REMOVE-NEXT cmdsize58# CHECK-REMOVE-NEXT segname __TEXT59# CHECK-REMOVE-NEXT vmaddr60# CHECK-REMOVE-NEXT vmsize61# CHECK-REMOVE-NEXT fileoff 062# CHECK-REMOVE-NEXT filesize 1638463 64## Verify text segment command index returned to original65# CHECK-REMOVE: Load command 1466# CHECK-REMOVE-NEXT: cmd LC_CODE_SIGNATURE67# CHECK-REMOVE-NEXT: cmdsize 1668# CHECK-REMOVE-NEXT: dataoff 1654469# CHECK-REMOVE-NEXT: datasize 32070 71## Verify the new signature is valid and text segment values are accurate72# RUN: %python %p/Inputs/code-signature-check.py %t 16544 320 0 16544 | FileCheck %s --check-prefix=CHECK-TEXT-SEGMENT73 74--- !mach-o75FileHeader:76 magic: 0xFEEDFACF77 cputype: 0x100000778 cpusubtype: 0x379 filetype: 0x280 ncmds: 1581 sizeofcmds: 76082 flags: 0x20008583 reserved: 0x084LoadCommands:85 - cmd: LC_SEGMENT_6486 cmdsize: 7287 segname: __PAGEZERO88 vmaddr: 089 vmsize: 429496729690 fileoff: 091 filesize: 092 maxprot: 093 initprot: 094 nsects: 095 flags: 096 - cmd: LC_SEGMENT_6497 cmdsize: 23298 segname: __TEXT99 vmaddr: 4294967296100 vmsize: 16384101 fileoff: 0102 filesize: 16384103 maxprot: 5104 initprot: 5105 nsects: 2106 flags: 0107 Sections:108 - sectname: __text109 segname: __TEXT110 addr: 0x100003FA0111 size: 15112 offset: 0x3FA0113 align: 4114 reloff: 0x0115 nreloc: 0116 flags: 0x80000400117 reserved1: 0x0118 reserved2: 0x0119 reserved3: 0x0120 content: 554889E531C0C745FC000000005DC3121 - sectname: __unwind_info122 segname: __TEXT123 addr: 0x100003FB0124 size: 72125 offset: 0x3FB0126 align: 2127 reloff: 0x0128 nreloc: 0129 flags: 0x0130 reserved1: 0x0131 reserved2: 0x0132 reserved3: 0x0133 content: 010000001C000000000000001C000000000000001C00000002000000A03F00003400000034000000B03F00000000000034000000030000000C000100100001000000000000000001134 - cmd: LC_SEGMENT_64135 cmdsize: 72136 segname: __LINKEDIT137 vmaddr: 4294983680138 vmsize: 16384139 fileoff: 16384140 filesize: 440141 maxprot: 1142 initprot: 1143 nsects: 0144 flags: 0145 - cmd: LC_DYLD_INFO_ONLY146 cmdsize: 48147 rebase_off: 0148 rebase_size: 0149 bind_off: 0150 bind_size: 0151 weak_bind_off: 0152 weak_bind_size: 0153 lazy_bind_off: 0154 lazy_bind_size: 0155 export_off: 16384156 export_size: 48157 - cmd: LC_SYMTAB158 cmdsize: 24159 symoff: 16440160 nsyms: 3161 stroff: 16488162 strsize: 48163 - cmd: LC_DYSYMTAB164 cmdsize: 80165 ilocalsym: 0166 nlocalsym: 0167 iextdefsym: 0168 nextdefsym: 2169 iundefsym: 2170 nundefsym: 1171 tocoff: 0172 ntoc: 0173 modtaboff: 0174 nmodtab: 0175 extrefsymoff: 0176 nextrefsyms: 0177 indirectsymoff: 0178 nindirectsyms: 0179 extreloff: 0180 nextrel: 0181 locreloff: 0182 nlocrel: 0183 - cmd: LC_LOAD_DYLINKER184 cmdsize: 32185 name: 12186 Content: '/usr/lib/dyld'187 ZeroPadBytes: 7188 - cmd: LC_UUID189 cmdsize: 24190 uuid: 42759668-1CBA-3094-8E2D-F01E1A66E815191 - cmd: LC_BUILD_VERSION192 cmdsize: 32193 platform: 1194 minos: 720896195 sdk: 721664196 ntools: 1197 Tools:198 - tool: 3199 version: 42600704200 - cmd: LC_SOURCE_VERSION201 cmdsize: 16202 version: 0203 - cmd: LC_MAIN204 cmdsize: 24205 entryoff: 16288206 stacksize: 0207 - cmd: LC_LOAD_DYLIB208 cmdsize: 56209 dylib:210 name: 24211 timestamp: 2212 current_version: 84698117213 compatibility_version: 65536214 Content: '/usr/lib/libSystem.B.dylib'215 ZeroPadBytes: 6216 - cmd: LC_FUNCTION_STARTS217 cmdsize: 16218 dataoff: 16432219 datasize: 8220 - cmd: LC_DATA_IN_CODE221 cmdsize: 16222 dataoff: 16440223 datasize: 0224 - cmd: LC_CODE_SIGNATURE225 cmdsize: 16226 dataoff: 16544227 datasize: 280228LinkEditData:229 ExportTrie:230 TerminalSize: 0231 NodeOffset: 0232 Name: ''233 Flags: 0x0234 Address: 0x0235 Other: 0x0236 ImportName: ''237 Children:238 - TerminalSize: 0239 NodeOffset: 5240 Name: _241 Flags: 0x0242 Address: 0x0243 Other: 0x0244 ImportName: ''245 Children:246 - TerminalSize: 2247 NodeOffset: 33248 Name: _mh_execute_header249 Flags: 0x0250 Address: 0x0251 Other: 0x0252 ImportName: ''253 - TerminalSize: 3254 NodeOffset: 37255 Name: main256 Flags: 0x0257 Address: 0x3FA0258 Other: 0x0259 ImportName: ''260 NameList:261 - n_strx: 2262 n_type: 0xF263 n_sect: 1264 n_desc: 16265 n_value: 4294967296266 - n_strx: 22267 n_type: 0xF268 n_sect: 1269 n_desc: 0270 n_value: 4294983584271 - n_strx: 28272 n_type: 0x1273 n_sect: 0274 n_desc: 256275 n_value: 0276 StringTable:277 - ' '278 - __mh_execute_header279 - _main280 - dyld_stub_binder281 - ''282 - ''283 - ''284...285