1// RUN: llvm-objdump -p %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s 2// RUN: llvm-otool -lv %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s 3// RUN: llvm-objdump -p %p/Inputs/hello.exe.macho-x86_64 \ 4// RUN: | FileCheck %s -check-prefix=EXE 5// RUN: llvm-objdump -p %p/Inputs/dylibLoadKinds.macho-x86_64 \ 6// RUN: | FileCheck %s -check-prefix=LOAD 7// RUN: llvm-objdump -p %p/Inputs/linkerOption.macho-x86_64 \ 8// RUN: | FileCheck %s -check-prefix=LD_OPT 9// RUN: llvm-objdump -p %p/Inputs/dylibSubFramework.macho-x86_64 \ 10// RUN: | FileCheck %s -check-prefix=SUB_FRAME 11// RUN: llvm-objdump -p %p/Inputs/dylibSubUmbrella.macho-x86_64 \ 12// RUN: | FileCheck %s -check-prefix=SUB_UMB 13// RUN: llvm-objdump -p %p/Inputs/dylibSubLibrary.macho-x86_64 \ 14// RUN: | FileCheck %s -check-prefix=SUB_LIB 15// RUN: llvm-objdump -p %p/Inputs/dylibSubClient.macho-x86_64 \ 16// RUN: | FileCheck %s -check-prefix=SUB_CLI 17// RUN: llvm-objdump -p %p/Inputs/dylibRoutines.macho-x86_64 \ 18// RUN: | FileCheck %s -check-prefix=ROUTINE 19// RUN: llvm-objdump -p %p/Inputs/exeThread.macho-x86_64 \ 20// RUN: | FileCheck %s -check-prefix=THREAD 21// RUN: llvm-objdump --macho -p --arch i386 %p/Inputs/macho-universal.x86_64.i386 \ 22// RUN: | FileCheck %s -check-prefix=FATi386 23// RUN: llvm-objdump -p --arch i386 %p/Inputs/macho-universal.x86_64.i386 \ 24// RUN: | FileCheck %s -check-prefix=FATi386 25// RUN: llvm-objdump -p --non-verbose %p/Inputs/hello.obj.macho-x86_64 \ 26// RUN: | FileCheck %s -check-prefix=NON_VERBOSE 27// RUN: llvm-objdump -p %p/Inputs/codesig.macho-x86_64 \ 28// RUN: | FileCheck %s -check-prefix=CODESIG 29// RUN: llvm-objdump -p %p/Inputs/note.macho-x86 \ 30// RUN: | FileCheck %s -check-prefix=NOTE 31 32CHECK: Mach header 33CHECK: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags 34CHECK: MH_MAGIC_64 X86_64 ALL 0x00 OBJECT 3 496 SUBSECTIONS_VIA_SYMBOLS 35CHECK: Load command 0 36CHECK: cmd LC_SEGMENT_64 37CHECK: cmdsize 392 38CHECK: segname 39CHECK: vmaddr 0x0000000000000000 40CHECK: vmsize 0x00000000000000a8 41CHECK: fileoff 528 42CHECK: filesize 168 43CHECK: maxprot rwx 44CHECK: initprot rwx 45CHECK: nsects 4 46CHECK: flags (none) 47CHECK: Section 48CHECK: sectname __text 49CHECK: segname __TEXT 50CHECK: addr 0x0000000000000000 51CHECK: size 0x000000000000003b 52CHECK: offset 528 53CHECK: align 2^4 (16) 54CHECK: reloff 696 55CHECK: nreloc 2 56CHECK: type S_REGULAR 57CHECK: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS 58CHECK: reserved1 0 59CHECK: reserved2 0 60CHECK: Section 61CHECK: sectname __cstring 62CHECK: segname __TEXT 63CHECK: addr 0x000000000000003b 64CHECK: size 0x000000000000000d 65CHECK: offset 587 66CHECK: align 2^0 (1) 67CHECK: reloff 0 68CHECK: nreloc 0 69CHECK: type S_CSTRING_LITERALS 70CHECK: attributes (none) 71CHECK: reserved1 0 72CHECK: reserved2 0 73CHECK: Section 74CHECK: sectname __compact_unwind 75CHECK: segname __LD 76CHECK: addr 0x0000000000000048 77CHECK: size 0x0000000000000020 78CHECK: offset 600 79CHECK: align 2^3 (8) 80CHECK: reloff 712 81CHECK: nreloc 1 82CHECK: type S_REGULAR 83CHECK: attributes DEBUG 84CHECK: reserved1 0 85CHECK: reserved2 0 86CHECK: Section 87CHECK: sectname __eh_frame 88CHECK: segname __TEXT 89CHECK: addr 0x0000000000000068 90CHECK: size 0x0000000000000040 91CHECK: offset 632 92CHECK: align 2^3 (8) 93CHECK: reloff 0 94CHECK: nreloc 0 95CHECK: type S_COALESCED 96CHECK: attributes NO_TOC STRIP_STATIC_SYMS LIVE_SUPPORT 97CHECK: reserved1 0 98CHECK: reserved2 0 99CHECK: Load command 1 100CHECK: cmd LC_SYMTAB 101CHECK: cmdsize 24 102CHECK: symoff 720 103CHECK: nsyms 5 104CHECK: stroff 800 105CHECK: strsize 44 106CHECK: Load command 2 107CHECK: cmd LC_DYSYMTAB 108CHECK: cmdsize 80 109CHECK: ilocalsym 0 110CHECK: nlocalsym 2 111CHECK: iextdefsym 2 112CHECK: nextdefsym 2 113CHECK: iundefsym 4 114CHECK: nundefsym 1 115CHECK: tocoff 0 116CHECK: ntoc 0 117CHECK: modtaboff 0 118CHECK: nmodtab 0 119CHECK: extrefsymoff 0 120CHECK: nextrefsyms 0 121CHECK: indirectsymoff 0 122CHECK: nindirectsyms 0 123CHECK: extreloff 0 124CHECK: nextrel 0 125CHECK: locreloff 0 126CHECK: nlocrel 0 127 128EXE: Mach header 129EXE: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags 130EXE: MH_MAGIC_64 X86_64 ALL LIB64 EXECUTE 16 1296 NOUNDEFS DYLDLINK TWOLEVEL PIE 131EXE: Load command 0 132EXE: cmd LC_SEGMENT_64 133EXE: cmdsize 72 134EXE: segname __PAGEZERO 135EXE: vmaddr 0x0000000000000000 136EXE: vmsize 0x0000000100000000 137EXE: fileoff 0 138EXE: filesize 0 139EXE: maxprot --- 140EXE: initprot --- 141EXE: nsects 0 142EXE: flags (none) 143EXE: Load command 1 144EXE: cmd LC_SEGMENT_64 145EXE: cmdsize 552 146EXE: segname __TEXT 147EXE: vmaddr 0x0000000100000000 148EXE: vmsize 0x0000000000001000 149EXE: fileoff 0 150EXE: filesize 4096 151EXE: maxprot rwx 152EXE: initprot r-x 153EXE: nsects 6 154EXE: flags (none) 155EXE: Section 156EXE: sectname __text 157EXE: segname __TEXT 158EXE: addr 0x0000000100000f30 159EXE: size 0x000000000000003b 160EXE: offset 3888 161EXE: align 2^4 (16) 162EXE: reloff 0 163EXE: nreloc 0 164EXE: type S_REGULAR 165EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS 166EXE: reserved1 0 167EXE: reserved2 0 168EXE: Section 169EXE: sectname __stubs 170EXE: segname __TEXT 171EXE: addr 0x0000000100000f6c 172EXE: size 0x0000000000000006 173EXE: offset 3948 174EXE: align 2^1 (2) 175EXE: reloff 0 176EXE: nreloc 0 177EXE: type S_SYMBOL_STUBS 178EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS 179EXE: reserved1 0 (index into indirect symbol table) 180EXE: reserved2 6 (size of stubs) 181EXE: Section 182EXE: sectname __stub_helper 183EXE: segname __TEXT 184EXE: addr 0x0000000100000f74 185EXE: size 0x000000000000001a 186EXE: offset 3956 187EXE: align 2^2 (4) 188EXE: reloff 0 189EXE: nreloc 0 190EXE: type S_REGULAR 191EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS 192EXE: reserved1 0 193EXE: reserved2 0 194EXE: Section 195EXE: sectname __cstring 196EXE: segname __TEXT 197EXE: addr 0x0000000100000f8e 198EXE: size 0x000000000000000d 199EXE: offset 3982 200EXE: align 2^0 (1) 201EXE: reloff 0 202EXE: nreloc 0 203EXE: type S_CSTRING_LITERALS 204EXE: attributes (none) 205EXE: reserved1 0 206EXE: reserved2 0 207EXE: Section 208EXE: sectname __unwind_info 209EXE: segname __TEXT 210EXE: addr 0x0000000100000f9b 211EXE: size 0x0000000000000048 212EXE: offset 3995 213EXE: align 2^0 (1) 214EXE: reloff 0 215EXE: nreloc 0 216EXE: type S_REGULAR 217EXE: attributes (none) 218EXE: reserved1 0 219EXE: reserved2 0 220EXE: Section 221EXE: sectname __eh_frame 222EXE: segname __TEXT 223EXE: addr 0x0000000100000fe8 224EXE: size 0x0000000000000018 225EXE: offset 4072 226EXE: align 2^3 (8) 227EXE: reloff 0 228EXE: nreloc 0 229EXE: type S_REGULAR 230EXE: attributes (none) 231EXE: reserved1 0 232EXE: reserved2 0 233EXE: Load command 2 234EXE: cmd LC_SEGMENT_64 235EXE: cmdsize 232 236EXE: segname __DATA 237EXE: vmaddr 0x0000000100001000 238EXE: vmsize 0x0000000000001000 239EXE: fileoff 4096 240EXE: filesize 4096 241EXE: maxprot rwx 242EXE: initprot rw- 243EXE: nsects 2 244EXE: flags (none) 245EXE: Section 246EXE: sectname __nl_symbol_ptr 247EXE: segname __DATA 248EXE: addr 0x0000000100001000 249EXE: size 0x0000000000000010 250EXE: offset 4096 251EXE: align 2^3 (8) 252EXE: reloff 0 253EXE: nreloc 0 254EXE: type S_NON_LAZY_SYMBOL_POINTERS 255EXE: attributes (none) 256EXE: reserved1 1 (index into indirect symbol table) 257EXE: reserved2 0 258EXE: Section 259EXE: sectname __la_symbol_ptr 260EXE: segname __DATA 261EXE: addr 0x0000000100001010 262EXE: size 0x0000000000000008 263EXE: offset 4112 264EXE: align 2^3 (8) 265EXE: reloff 0 266EXE: nreloc 0 267EXE: type S_LAZY_SYMBOL_POINTERS 268EXE: attributes (none) 269EXE: reserved1 3 (index into indirect symbol table) 270EXE: reserved2 0 271EXE: Load command 3 272EXE: cmd LC_SEGMENT_64 273EXE: cmdsize 72 274EXE: segname __LINKEDIT 275EXE: vmaddr 0x0000000100002000 276EXE: vmsize 0x0000000000001000 277EXE: fileoff 8192 278EXE: filesize 304 279EXE: maxprot rwx 280EXE: initprot r-- 281EXE: nsects 0 282EXE: flags (none) 283EXE: Load command 4 284EXE: cmd LC_DYLD_INFO_ONLY 285EXE: cmdsize 48 286EXE: rebase_off 8192 287EXE: rebase_size 8 288EXE: bind_off 8200 289EXE: bind_size 24 290EXE: weak_bind_off 0 291EXE: weak_bind_size 0 292EXE: lazy_bind_off 8224 293EXE: lazy_bind_size 16 294EXE: export_off 8240 295EXE: export_size 48 296EXE: Load command 5 297EXE: cmd LC_SYMTAB 298EXE: cmdsize 24 299EXE: symoff 8360 300EXE: nsyms 4 301EXE: stroff 8440 302EXE: strsize 56 303EXE: Load command 6 304EXE: cmd LC_DYSYMTAB 305EXE: cmdsize 80 306EXE: ilocalsym 0 307EXE: nlocalsym 0 308EXE: iextdefsym 0 309EXE: nextdefsym 2 310EXE: iundefsym 2 311EXE: nundefsym 2 312EXE: tocoff 0 313EXE: ntoc 0 314EXE: modtaboff 0 315EXE: nmodtab 0 316EXE: extrefsymoff 0 317EXE: nextrefsyms 0 318EXE: indirectsymoff 8424 319EXE: nindirectsyms 4 320EXE: extreloff 0 321EXE: nextrel 0 322EXE: locreloff 0 323EXE: nlocrel 0 324EXE: Load command 7 325EXE: cmd LC_LOAD_DYLINKER 326EXE: cmdsize 32 327EXE: name /usr/lib/dyld (offset 12) 328EXE: Load command 8 329EXE: cmd LC_UUID 330EXE: cmdsize 24 331EXE: uuid 65C2DD41-79B0-3B34-871B-8CB3446AB762 332EXE: Load command 9 333EXE: cmd LC_VERSION_MIN_MACOSX 334EXE: cmdsize 16 335EXE: version 10.9 336EXE: sdk 10.9 337EXE: Load command 10 338EXE: cmd LC_SOURCE_VERSION 339EXE: cmdsize 16 340EXE: version 0.0 341EXE: Load command 11 342EXE: cmd LC_MAIN 343EXE: cmdsize 24 344EXE: entryoff 3888 345EXE: stacksize 0 346EXE: Load command 12 347EXE: cmd LC_LOAD_DYLIB 348EXE: cmdsize 56 349EXE: name /usr/lib/libSystem.B.dylib (offset 24) 350EXE: current version 1197.1.1 351EXE: compatibility version 1.0.0 352EXE: Load command 13 353EXE: cmd LC_FUNCTION_STARTS 354EXE: cmdsize 16 355EXE: dataoff 8288 356EXE: datasize 8 357EXE: Load command 14 358EXE: cmd LC_DATA_IN_CODE 359EXE: cmdsize 16 360EXE: dataoff 8296 361EXE: datasize 0 362EXE: Load command 15 363EXE: cmd LC_DYLIB_CODE_SIGN_DRS 364EXE: cmdsize 16 365EXE: dataoff 8296 366EXE: datasize 64 367 368 369LOAD: Load command 10 370LOAD: cmd LC_LOAD_DYLIB 371LOAD: cmdsize 48 372LOAD: name /usr/lib/foo1.dylib (offset 24) 373LOAD: current version 0.0.0 374LOAD: compatibility version 0.0.0 375LOAD: Load command 11 376LOAD: cmd LC_LOAD_WEAK_DYLIB 377LOAD: cmdsize 48 378LOAD: name /usr/lib/foo2.dylib (offset 24) 379LOAD: current version 0.0.0 380LOAD: compatibility version 0.0.0 381LOAD: Load command 12 382LOAD: cmd LC_REEXPORT_DYLIB 383LOAD: cmdsize 48 384LOAD: name /usr/lib/foo3.dylib (offset 24) 385LOAD: current version 0.0.0 386LOAD: compatibility version 0.0.0 387LOAD: Load command 13 388LOAD: cmd LC_LAZY_LOAD_DYLIB 389LOAD: cmdsize 48 390LOAD: name /usr/lib/foo4.dylib (offset 24) 391LOAD: current version 0.0.0 392LOAD: compatibility version 0.0.0 393 394LD_OPT: Load command 4 395LD_OPT: cmd LC_LINKER_OPTION 396LD_OPT: cmdsize 24 397LD_OPT: count 1 398LD_OPT: string #1 -lc++ 399LD_OPT: Load command 5 400LD_OPT: cmd LC_LINKER_OPTION 401LD_OPT: cmdsize 40 402LD_OPT: count 2 403LD_OPT: string #1 -framework 404LD_OPT: string #2 Foundation 405 406SUB_FRAME: Load command 10 407SUB_FRAME: cmd LC_SUB_FRAMEWORK 408SUB_FRAME: cmdsize 16 409SUB_FRAME: umbrella Bar (offset 12) 410 411SUB_UMB: Load command 5 412SUB_UMB: cmd LC_SUB_UMBRELLA 413SUB_UMB: cmdsize 16 414SUB_UMB: sub_umbrella Foo (offset 12) 415 416SUB_LIB: Load command 5 417SUB_LIB: cmd LC_SUB_LIBRARY 418SUB_LIB: cmdsize 20 419SUB_LIB: sub_library libfoo (offset 12) 420 421SUB_CLI: Load command 10 422SUB_CLI: cmd LC_SUB_CLIENT 423SUB_CLI: cmdsize 16 424SUB_CLI: client bar (offset 12) 425 426ROUTINE: Load command 6 427ROUTINE: cmd LC_ROUTINES_64 428ROUTINE: cmdsize 72 429ROUTINE: init_address 0x0000000000000f80 430ROUTINE: init_module 0 431ROUTINE: reserved1 0 432ROUTINE: reserved2 0 433ROUTINE: reserved3 0 434ROUTINE: reserved4 0 435ROUTINE: reserved5 0 436ROUTINE: reserved6 0 437 438THREAD: Load command 10 439THREAD: cmd LC_UNIXTHREAD 440THREAD: cmdsize 184 441THREAD: flavor x86_THREAD_STATE64 442THREAD: count x86_THREAD_STATE64_COUNT 443THREAD: rax 0x0000000000000000 rbx 0x0000000000000000 rcx 0x0000000000000000 444THREAD: rdx 0x0000000000000000 rdi 0x0000000000000000 rsi 0x0000000000000000 445THREAD: rbp 0x0000000000000000 rsp 0x0000000000000000 r8 0x0000000000000000 446THREAD: r9 0x0000000000000000 r10 0x0000000000000000 r11 0x0000000000000000 447THREAD: r12 0x0000000000000000 r13 0x0000000000000000 r14 0x0000000000000000 448THREAD: r15 0x0000000000000000 rip 0x0000000100000d00 449THREAD: rflags 0x0000000000000000 cs 0x0000000000000000 fs 0x0000000000000000 450THREAD: gs 0x0000000000000000 451 452FATi386: Mach header 453FATi386: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags 454FATi386: MH_MAGIC I386 ALL 0x00 EXECUTE 16 716 NOUNDEFS DYLDLINK TWOLEVEL PIE MH_NO_HEAP_EXECUTION 455 456NON_VERBOSE: Mach header 457NON_VERBOSE: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags 458NON_VERBOSE: 0xfeedfacf 16777223 3 0x00 1 3 496 0x00002000 459NON_VERBOSE: Load command 0 460NON_VERBOSE: cmd LC_SEGMENT_64 461NON_VERBOSE: cmdsize 392 462NON_VERBOSE: segname 463NON_VERBOSE: vmaddr 0x0000000000000000 464NON_VERBOSE: vmsize 0x00000000000000a8 465NON_VERBOSE: fileoff 528 466NON_VERBOSE: filesize 168 467NON_VERBOSE: maxprot 0x00000007 468NON_VERBOSE: initprot 0x00000007 469NON_VERBOSE: nsects 4 470NON_VERBOSE: flags 0x0 471NON_VERBOSE: Section 472NON_VERBOSE: sectname __text 473NON_VERBOSE: segname __TEXT 474NON_VERBOSE: addr 0x0000000000000000 475NON_VERBOSE: size 0x000000000000003b 476NON_VERBOSE: offset 528 477NON_VERBOSE: align 2^4 (16) 478NON_VERBOSE: reloff 696 479NON_VERBOSE: nreloc 2 480NON_VERBOSE: flags 0x80000400 481NON_VERBOSE: reserved1 0 482NON_VERBOSE: reserved2 0 483NON_VERBOSE: Section 484NON_VERBOSE: sectname __cstring 485NON_VERBOSE: segname __TEXT 486NON_VERBOSE: addr 0x000000000000003b 487NON_VERBOSE: size 0x000000000000000d 488NON_VERBOSE: offset 587 489NON_VERBOSE: align 2^0 (1) 490NON_VERBOSE: reloff 0 491NON_VERBOSE: nreloc 0 492NON_VERBOSE: flags 0x00000002 493NON_VERBOSE: reserved1 0 494NON_VERBOSE: reserved2 0 495NON_VERBOSE: Section 496NON_VERBOSE: sectname __compact_unwind 497NON_VERBOSE: segname __LD 498NON_VERBOSE: addr 0x0000000000000048 499NON_VERBOSE: size 0x0000000000000020 500NON_VERBOSE: offset 600 501NON_VERBOSE: align 2^3 (8) 502NON_VERBOSE: reloff 712 503NON_VERBOSE: nreloc 1 504NON_VERBOSE: flags 0x02000000 505NON_VERBOSE: reserved1 0 506NON_VERBOSE: reserved2 0 507NON_VERBOSE: Section 508NON_VERBOSE: sectname __eh_frame 509NON_VERBOSE: segname __TEXT 510NON_VERBOSE: addr 0x0000000000000068 511NON_VERBOSE: size 0x0000000000000040 512NON_VERBOSE: offset 632 513NON_VERBOSE: align 2^3 (8) 514NON_VERBOSE: reloff 0 515NON_VERBOSE: nreloc 0 516NON_VERBOSE: flags 0x6800000b 517NON_VERBOSE: reserved1 0 518NON_VERBOSE: reserved2 0 519NON_VERBOSE: Load command 1 520NON_VERBOSE: cmd LC_SYMTAB 521NON_VERBOSE: cmdsize 24 522NON_VERBOSE: symoff 720 523NON_VERBOSE: nsyms 5 524NON_VERBOSE: stroff 800 525NON_VERBOSE: strsize 44 526NON_VERBOSE: Load command 2 527NON_VERBOSE: cmd LC_DYSYMTAB 528NON_VERBOSE: cmdsize 80 529NON_VERBOSE: ilocalsym 0 530NON_VERBOSE: nlocalsym 2 531NON_VERBOSE: iextdefsym 2 532NON_VERBOSE: nextdefsym 2 533NON_VERBOSE: iundefsym 4 534NON_VERBOSE: nundefsym 1 535NON_VERBOSE: tocoff 0 536NON_VERBOSE: ntoc 0 537NON_VERBOSE: modtaboff 0 538NON_VERBOSE: nmodtab 0 539NON_VERBOSE: extrefsymoff 0 540NON_VERBOSE: nextrefsyms 0 541NON_VERBOSE: indirectsymoff 0 542NON_VERBOSE: nindirectsyms 0 543NON_VERBOSE: extreloff 0 544NON_VERBOSE: nextrel 0 545NON_VERBOSE: locreloff 0 546NON_VERBOSE: nlocrel 0 547 548CODESIG: cmd LC_CODE_SIGNATURE 549CODESIG: cmdsize 16 550CODESIG: dataoff 8496 551CODESIG: datasize 64 552 553NOTE: cmd LC_NOTE 554NOTE: cmdsize 40 555NOTE: data_owner DATA OWNER 556NOTE: offset 68 557NOTE: size 8 558