559 lines · yaml
1## Test that reconstructs a MachO binary from YAML and generates a callsite-enabled gsym from it - and then verifies the gsym.2## See llvm/test/tools/llvm-gsymutil/ARM_AArch64/macho-gsym-callsite-info.test for the script to generate this yaml file3 4# RUN: split-file %s %t5# RUN: yaml2obj %t/call_sites.exe.yaml -o %t/call_sites.exe6 7# RUN: llvm-gsymutil --num-threads=1 --convert=%t/call_sites.exe --callsites-yaml-file=%t/callsites.yaml -o %t/call_sites_exe.gsym8 9# Dump the GSYM file and check the output for callsite information10# RUN: llvm-gsymutil %t/call_sites_exe.gsym | FileCheck --check-prefix=CHECK-GSYM %s11 12 13# CHECK-GSYM: FunctionInfo @ 0x[[#%x,]]: [0x[[#%x,]] - 0x[[#%x,]]) "func_mainBin_dec_call_everything"14# CHECK-GSYM-NEXT: CallSites (by relative return offset):15# CHECK-GSYM-NEXT: 0x[[#%x,]] Flags[InternalCall] MatchRegex[func_mainBin_dec_01]16# CHECK-GSYM-NEXT: 0x[[#%x,]] Flags[InternalCall] MatchRegex[func_mainBin_dec_02]17# CHECK-GSYM-NEXT: 0x[[#%x,]] Flags[InternalCall] MatchRegex[func_mainBin_dec_03]18# CHECK-GSYM-NEXT: 0x[[#%x,]] Flags[InternalCall] MatchRegex[func_mainBin_inc_01]19# CHECK-GSYM-NEXT: 0x[[#%x,]] Flags[InternalCall] MatchRegex[func_mainBin_inc_02]20# CHECK-GSYM-NEXT: 0x[[#%x,]] Flags[InternalCall] MatchRegex[func_mainBin_inc_03]21# CHECK-GSYM-NEXT: 0x[[#%x,]] Flags[None] MatchRegex[.*func.*]22# CHECK-GSYM-NEXT: 0x[[#%x,]] Flags[ExternalCall] MatchRegex[.*extern_func.*]23 24 25#--- callsites.yaml26functions:27 - name: func_mainBin_dec_call_everything28 callsites:29 - return_offset: 0x0C30 match_regex: ["func_mainBin_dec_01"]31 flags:32 - "InternalCall"33 - return_offset: 0x1034 match_regex: ["func_mainBin_dec_02"]35 flags:36 - "InternalCall"37 - return_offset: 0x1438 match_regex: ["func_mainBin_dec_03"]39 flags:40 - "InternalCall"41 - return_offset: 2442 match_regex: ["func_mainBin_inc_01"]43 flags:44 - "InternalCall"45 - return_offset: 2846 match_regex: ["func_mainBin_inc_02"]47 flags:48 - "InternalCall"49 - return_offset: 3250 match_regex: ["func_mainBin_inc_03"]51 flags:52 - "InternalCall"53 - return_offset: 4454 match_regex: [".*func.*"]55 - return_offset: 5656 match_regex: [".*extern_func.*"]57 flags:58 - "ExternalCall"59 60 61#--- call_sites.exe.yaml62--- !mach-o63FileHeader:64 magic: 0xFEEDFACF65 cputype: 0x100000C66 cpusubtype: 0x067 filetype: 0x268 ncmds: 1469 sizeofcmds: 76070 flags: 0x20008571 reserved: 0x072LoadCommands:73 - cmd: LC_SEGMENT_6474 cmdsize: 7275 segname: __PAGEZERO76 vmaddr: 077 vmsize: 429496729678 fileoff: 079 filesize: 080 maxprot: 081 initprot: 082 nsects: 083 flags: 084 - cmd: LC_SEGMENT_6485 cmdsize: 15286 segname: __TEXT87 vmaddr: 429496729688 vmsize: 1638489 fileoff: 090 filesize: 1638491 maxprot: 592 initprot: 593 nsects: 194 flags: 095 Sections:96 - sectname: __text97 segname: __TEXT98 addr: 0x10000033899 size: 216100 offset: 0x338101 align: 2102 reloff: 0x0103 nreloc: 0104 flags: 0x80000400105 reserved1: 0x0106 reserved2: 0x0107 reserved3: 0x0108 content: 28000090090140B929050051090100B9C0035FD628000090090140B929050051090100B9C0035FD628000090090140B929050051090100B9C0035FD628000090090140B929050011090100B9C0035FD628000090090140B929050011090100B9C0035FD628000090090140B929050011090100B9C0035FD6FD7BBFA9FD030091E0FFFF97E4FFFF97E8FFFF97ECFFFF97F0FFFF97F4FFFF971F2003D5A8E1015800013FD61F2003D588E1015800013FD6280000901F0100B9FD7BC1A8C0035FD6FD7BBFA9FD030091ECFFFF9700008052FD7BC1A8C0035FD6109 - cmd: LC_SEGMENT_64110 cmdsize: 152111 segname: __DATA112 vmaddr: 4294983680113 vmsize: 16384114 fileoff: 16384115 filesize: 0116 maxprot: 3117 initprot: 3118 nsects: 1119 flags: 0120 Sections:121 - sectname: __common122 segname: __DATA123 addr: 0x100004000124 size: 24125 offset: 0x0126 align: 3127 reloff: 0x0128 nreloc: 0129 flags: 0x1130 reserved1: 0x0131 reserved2: 0x0132 reserved3: 0x0133 - cmd: LC_SEGMENT_64134 cmdsize: 72135 segname: __LINKEDIT136 vmaddr: 4295000064137 vmsize: 1648138 fileoff: 16384139 filesize: 1648140 maxprot: 1141 initprot: 1142 nsects: 0143 flags: 0144 - cmd: LC_DYLD_INFO_ONLY145 cmdsize: 48146 rebase_off: 0147 rebase_size: 0148 bind_off: 0149 bind_size: 0150 weak_bind_off: 0151 weak_bind_size: 0152 lazy_bind_off: 0153 lazy_bind_size: 0154 export_off: 16384155 export_size: 232156 - cmd: LC_SYMTAB157 cmdsize: 24158 symoff: 16632159 nsyms: 34160 stroff: 17176161 strsize: 568162 - cmd: LC_DYSYMTAB163 cmdsize: 80164 ilocalsym: 0165 nlocalsym: 22166 iextdefsym: 22167 nextdefsym: 12168 iundefsym: 34169 nundefsym: 0170 tocoff: 0171 ntoc: 0172 modtaboff: 0173 nmodtab: 0174 extrefsymoff: 0175 nextrefsyms: 0176 indirectsymoff: 0177 nindirectsyms: 0178 extreloff: 0179 nextrel: 0180 locreloff: 0181 nlocrel: 0182 - cmd: LC_LOAD_DYLINKER183 cmdsize: 32184 name: 12185 Content: '/usr/lib/dyld'186 ZeroPadBytes: 7187 - cmd: LC_UUID188 cmdsize: 24189 uuid: 4C4C44E9-5555-3144-A1D3-328233D00078190 - cmd: LC_BUILD_VERSION191 cmdsize: 32192 platform: 1193 minos: 720896194 sdk: 720896195 ntools: 1196 Tools:197 - tool: 4198 version: 1310720199 - cmd: LC_MAIN200 cmdsize: 24201 entryoff: 1016202 stacksize: 0203 - cmd: LC_FUNCTION_STARTS204 cmdsize: 16205 dataoff: 16616206 datasize: 16207 - cmd: LC_DATA_IN_CODE208 cmdsize: 16209 dataoff: 16632210 datasize: 0211 - cmd: LC_CODE_SIGNATURE212 cmdsize: 16213 dataoff: 17744214 datasize: 288215LinkEditData:216 ExportTrie:217 TerminalSize: 0218 NodeOffset: 0219 Name: ''220 Flags: 0x0221 Address: 0x0222 Other: 0x0223 ImportName: ''224 Children:225 - TerminalSize: 0226 NodeOffset: 5227 Name: _228 Flags: 0x0229 Address: 0x0230 Other: 0x0231 ImportName: ''232 Children:233 - TerminalSize: 2234 NodeOffset: 52235 Name: _mh_execute_header236 Flags: 0x0237 Address: 0x0238 Other: 0x0239 ImportName: ''240 - TerminalSize: 3241 NodeOffset: 56242 Name: main243 Flags: 0x0244 Address: 0x3F8245 Other: 0x0246 ImportName: ''247 - TerminalSize: 0248 NodeOffset: 61249 Name: g_250 Flags: 0x0251 Address: 0x0252 Other: 0x0253 ImportName: ''254 Children:255 - TerminalSize: 4256 NodeOffset: 104257 Name: volatile_var258 Flags: 0x0259 Address: 0x4000260 Other: 0x0261 ImportName: ''262 - TerminalSize: 4263 NodeOffset: 110264 Name: func_ptr265 Flags: 0x0266 Address: 0x4008267 Other: 0x0268 ImportName: ''269 - TerminalSize: 4270 NodeOffset: 116271 Name: extern_func_ptr272 Flags: 0x0273 Address: 0x4010274 Other: 0x0275 ImportName: ''276 - TerminalSize: 0277 NodeOffset: 122278 Name: func_mainBin_279 Flags: 0x0280 Address: 0x0281 Other: 0x0282 ImportName: ''283 Children:284 - TerminalSize: 0285 NodeOffset: 139286 Name: dec_287 Flags: 0x0288 Address: 0x0289 Other: 0x0290 ImportName: ''291 Children:292 - TerminalSize: 3293 NodeOffset: 163294 Name: call_everything295 Flags: 0x0296 Address: 0x3B0297 Other: 0x0298 ImportName: ''299 - TerminalSize: 0300 NodeOffset: 168301 Name: '0'302 Flags: 0x0303 Address: 0x0304 Other: 0x0305 ImportName: ''306 Children:307 - TerminalSize: 3308 NodeOffset: 182309 Name: '1'310 Flags: 0x0311 Address: 0x338312 Other: 0x0313 ImportName: ''314 - TerminalSize: 3315 NodeOffset: 187316 Name: '3'317 Flags: 0x0318 Address: 0x360319 Other: 0x0320 ImportName: ''321 - TerminalSize: 3322 NodeOffset: 192323 Name: '2'324 Flags: 0x0325 Address: 0x34C326 Other: 0x0327 ImportName: ''328 - TerminalSize: 0329 NodeOffset: 197330 Name: inc_0331 Flags: 0x0332 Address: 0x0333 Other: 0x0334 ImportName: ''335 Children:336 - TerminalSize: 3337 NodeOffset: 211338 Name: '2'339 Flags: 0x0340 Address: 0x388341 Other: 0x0342 ImportName: ''343 - TerminalSize: 3344 NodeOffset: 216345 Name: '1'346 Flags: 0x0347 Address: 0x374348 Other: 0x0349 ImportName: ''350 - TerminalSize: 3351 NodeOffset: 221352 Name: '3'353 Flags: 0x0354 Address: 0x39C355 Other: 0x0356 ImportName: ''357 NameList:358 - n_strx: 235359 n_type: 0x64360 n_sect: 0361 n_desc: 0362 n_value: 0363 - n_strx: 295364 n_type: 0x66365 n_sect: 0366 n_desc: 1367 n_value: 0368 - n_strx: 353369 n_type: 0x24370 n_sect: 1371 n_desc: 0372 n_value: 4294968312373 - n_strx: 1374 n_type: 0x24375 n_sect: 0376 n_desc: 0377 n_value: 24378 - n_strx: 359379 n_type: 0x24380 n_sect: 1381 n_desc: 0382 n_value: 4294968120383 - n_strx: 1384 n_type: 0x24385 n_sect: 0386 n_desc: 0387 n_value: 20388 - n_strx: 380389 n_type: 0x24390 n_sect: 1391 n_desc: 0392 n_value: 4294968140393 - n_strx: 1394 n_type: 0x24395 n_sect: 0396 n_desc: 0397 n_value: 20398 - n_strx: 401399 n_type: 0x24400 n_sect: 1401 n_desc: 0402 n_value: 4294968160403 - n_strx: 1404 n_type: 0x24405 n_sect: 0406 n_desc: 0407 n_value: 20408 - n_strx: 422409 n_type: 0x24410 n_sect: 1411 n_desc: 0412 n_value: 4294968180413 - n_strx: 1414 n_type: 0x24415 n_sect: 0416 n_desc: 0417 n_value: 20418 - n_strx: 443419 n_type: 0x24420 n_sect: 1421 n_desc: 0422 n_value: 4294968200423 - n_strx: 1424 n_type: 0x24425 n_sect: 0426 n_desc: 0427 n_value: 20428 - n_strx: 464429 n_type: 0x24430 n_sect: 1431 n_desc: 0432 n_value: 4294968220433 - n_strx: 1434 n_type: 0x24435 n_sect: 0436 n_desc: 0437 n_value: 20438 - n_strx: 485439 n_type: 0x24440 n_sect: 1441 n_desc: 0442 n_value: 4294968240443 - n_strx: 1444 n_type: 0x24445 n_sect: 0446 n_desc: 0447 n_value: 72448 - n_strx: 519449 n_type: 0x20450 n_sect: 2451 n_desc: 0452 n_value: 4294983680453 - n_strx: 535454 n_type: 0x20455 n_sect: 2456 n_desc: 0457 n_value: 4294983688458 - n_strx: 547459 n_type: 0x20460 n_sect: 2461 n_desc: 0462 n_value: 4294983696463 - n_strx: 1464 n_type: 0x64465 n_sect: 1466 n_desc: 0467 n_value: 0468 - n_strx: 2469 n_type: 0xF470 n_sect: 1471 n_desc: 0472 n_value: 4294968312473 - n_strx: 8474 n_type: 0xF475 n_sect: 1476 n_desc: 0477 n_value: 4294968120478 - n_strx: 29479 n_type: 0xF480 n_sect: 1481 n_desc: 0482 n_value: 4294968140483 - n_strx: 50484 n_type: 0xF485 n_sect: 1486 n_desc: 0487 n_value: 4294968160488 - n_strx: 71489 n_type: 0xF490 n_sect: 1491 n_desc: 0492 n_value: 4294968180493 - n_strx: 92494 n_type: 0xF495 n_sect: 1496 n_desc: 0497 n_value: 4294968200498 - n_strx: 113499 n_type: 0xF500 n_sect: 1501 n_desc: 0502 n_value: 4294968220503 - n_strx: 134504 n_type: 0xF505 n_sect: 1506 n_desc: 0507 n_value: 4294968240508 - n_strx: 168509 n_type: 0xF510 n_sect: 2511 n_desc: 0512 n_value: 4294983680513 - n_strx: 184514 n_type: 0xF515 n_sect: 2516 n_desc: 0517 n_value: 4294983688518 - n_strx: 196519 n_type: 0xF520 n_sect: 2521 n_desc: 0522 n_value: 4294983696523 - n_strx: 215524 n_type: 0xF525 n_sect: 1526 n_desc: 16527 n_value: 4294967296528 StringTable:529 - ' '530 - _main531 - _func_mainBin_dec_01532 - _func_mainBin_dec_02533 - _func_mainBin_dec_03534 - _func_mainBin_inc_01535 - _func_mainBin_inc_02536 - _func_mainBin_inc_03537 - _func_mainBin_dec_call_everything538 - _g_volatile_var539 - _g_func_ptr540 - _g_extern_func_ptr541 - __mh_execute_header542 - '/tmp/_______________________________________/call_sites.cpp'543 - '/tmp/_______________________________________/call_sites.o'544 - _main545 - _func_mainBin_dec_01546 - _func_mainBin_dec_02547 - _func_mainBin_dec_03548 - _func_mainBin_inc_01549 - _func_mainBin_inc_02550 - _func_mainBin_inc_03551 - _func_mainBin_dec_call_everything552 - _g_volatile_var553 - _g_func_ptr554 - _g_extern_func_ptr555 - ''556 - ''557 FunctionStarts: [ 0x338, 0x34C, 0x360, 0x374, 0x388, 0x39C, 0x3B0, 0x3F8 ]558...559