Lines Matching refs:MachO

250   case MachO::DICE_KIND_DATA:  in DumpDataInCode()
270 if (Kind == MachO::DICE_KIND_DATA) in DumpDataInCode()
275 case MachO::DICE_KIND_JUMP_TABLE8: in DumpDataInCode()
282 case MachO::DICE_KIND_JUMP_TABLE16: in DumpDataInCode()
290 case MachO::DICE_KIND_JUMP_TABLE32: in DumpDataInCode()
291 case MachO::DICE_KIND_ABS_JUMP_TABLE32: in DumpDataInCode()
296 if (Kind == MachO::DICE_KIND_JUMP_TABLE32) in DumpDataInCode()
327 if (Command.C.cmd == MachO::LC_FUNCTION_STARTS) { in getSectionsAndSymbols()
330 MachO::linkedit_data_command LLC = in getSectionsAndSymbols()
334 } else if (Command.C.cmd == MachO::LC_SEGMENT) { in getSectionsAndSymbols()
335 MachO::segment_command SLC = MachOObj->getSegmentLoadCommand(Command); in getSectionsAndSymbols()
348 MachO::dysymtab_command Dysymtab = O->getDysymtabLoadCommand(); in PrintIndirectSymbolTable()
358 if (cputype & MachO::CPU_ARCH_ABI64) in PrintIndirectSymbolTable()
367 if (cputype & MachO::CPU_ARCH_ABI64) in PrintIndirectSymbolTable()
371 MachO::dysymtab_command Dysymtab = O->getDysymtabLoadCommand(); in PrintIndirectSymbolTable()
373 if (indirect_symbol == MachO::INDIRECT_SYMBOL_LOCAL) { in PrintIndirectSymbolTable()
378 (MachO::INDIRECT_SYMBOL_LOCAL | MachO::INDIRECT_SYMBOL_ABS)) { in PrintIndirectSymbolTable()
382 if (indirect_symbol == MachO::INDIRECT_SYMBOL_ABS) { in PrintIndirectSymbolTable()
388 MachO::symtab_command Symtab = O->getSymtabLoadCommand(); in PrintIndirectSymbolTable()
406 if (Load.C.cmd == MachO::LC_SEGMENT_64) { in PrintIndirectSymbols()
407 MachO::segment_command_64 Seg = O->getSegment64LoadCommand(Load); in PrintIndirectSymbols()
409 MachO::section_64 Sec = O->getSection64(Load, J); in PrintIndirectSymbols()
410 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE; in PrintIndirectSymbols()
411 if (section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS || in PrintIndirectSymbols()
412 section_type == MachO::S_LAZY_SYMBOL_POINTERS || in PrintIndirectSymbols()
413 section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS || in PrintIndirectSymbols()
414 section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS || in PrintIndirectSymbols()
415 section_type == MachO::S_SYMBOL_STUBS) { in PrintIndirectSymbols()
417 if (section_type == MachO::S_SYMBOL_STUBS) in PrintIndirectSymbols()
434 } else if (Load.C.cmd == MachO::LC_SEGMENT) { in PrintIndirectSymbols()
435 MachO::segment_command Seg = O->getSegmentLoadCommand(Load); in PrintIndirectSymbols()
437 MachO::section Sec = O->getSection(Load, J); in PrintIndirectSymbols()
438 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE; in PrintIndirectSymbols()
439 if (section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS || in PrintIndirectSymbols()
440 section_type == MachO::S_LAZY_SYMBOL_POINTERS || in PrintIndirectSymbols()
441 section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS || in PrintIndirectSymbols()
442 section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS || in PrintIndirectSymbols()
443 section_type == MachO::S_SYMBOL_STUBS) { in PrintIndirectSymbols()
445 if (section_type == MachO::S_SYMBOL_STUBS) in PrintIndirectSymbols()
493 case MachO::CPU_TYPE_I386: in PrintRType()
496 case MachO::CPU_TYPE_X86_64: in PrintRType()
499 case MachO::CPU_TYPE_ARM: in PrintRType()
502 case MachO::CPU_TYPE_ARM64: in PrintRType()
512 if (cputype == MachO::CPU_TYPE_ARM && in PrintRLength()
513 (r_type == llvm::MachO::ARM_RELOC_HALF || in PrintRLength()
514 r_type == llvm::MachO::ARM_RELOC_HALF_SECTDIFF || in PrintRLength()
536 if (cputype == MachO::CPU_TYPE_X86_64) in PrintRLength()
552 const MachO::symtab_command Symtab = O->getSymtabLoadCommand(); in PrintRelocationEntries()
559 const MachO::any_relocation_info RE = O->getRelocation(Rel); in PrintRelocationEntries()
572 if (r_scattered && cputype != MachO::CPU_TYPE_X86_64) { in PrintRelocationEntries()
575 if ((cputype == MachO::CPU_TYPE_I386 && in PrintRelocationEntries()
576 r_type == llvm::MachO::GENERIC_RELOC_PAIR) || in PrintRelocationEntries()
577 (cputype == MachO::CPU_TYPE_ARM && in PrintRelocationEntries()
578 r_type == llvm::MachO::ARM_RELOC_PAIR)) in PrintRelocationEntries()
599 if ((cputype == MachO::CPU_TYPE_ARM && in PrintRelocationEntries()
600 r_type == llvm::MachO::ARM_RELOC_PAIR)) in PrintRelocationEntries()
603 else if (cputype == MachO::CPU_TYPE_ARM && in PrintRelocationEntries()
604 sectdiff_r_type == llvm::MachO::ARM_RELOC_HALF_SECTDIFF) in PrintRelocationEntries()
606 if ((cputype == MachO::CPU_TYPE_I386 && in PrintRelocationEntries()
607 (r_type == llvm::MachO::GENERIC_RELOC_SECTDIFF || in PrintRelocationEntries()
608 r_type == llvm::MachO::GENERIC_RELOC_LOCAL_SECTDIFF)) || in PrintRelocationEntries()
609 (cputype == MachO::CPU_TYPE_ARM && in PrintRelocationEntries()
610 (sectdiff_r_type == llvm::MachO::ARM_RELOC_SECTDIFF || in PrintRelocationEntries()
611 sectdiff_r_type == llvm::MachO::ARM_RELOC_LOCAL_SECTDIFF || in PrintRelocationEntries()
612 sectdiff_r_type == llvm::MachO::ARM_RELOC_HALF_SECTDIFF))) { in PrintRelocationEntries()
620 if (cputype == MachO::CPU_TYPE_ARM && in PrintRelocationEntries()
621 (r_type == llvm::MachO::ARM_RELOC_HALF || in PrintRelocationEntries()
622 r_type == llvm::MachO::ARM_RELOC_HALF_SECTDIFF)) in PrintRelocationEntries()
638 if (cputype == MachO::CPU_TYPE_ARM && in PrintRelocationEntries()
639 r_type == llvm::MachO::ARM_RELOC_PAIR) in PrintRelocationEntries()
681 if (cputype == MachO::CPU_TYPE_ARM && in PrintRelocationEntries()
682 r_type == llvm::MachO::ARM_RELOC_PAIR) in PrintRelocationEntries()
684 else if (cputype == MachO::CPU_TYPE_ARM64 && in PrintRelocationEntries()
685 r_type == llvm::MachO::ARM64_RELOC_ADDEND) in PrintRelocationEntries()
689 if (r_symbolnum == llvm::MachO::R_ABS) in PrintRelocationEntries()
710 if (cputype == MachO::CPU_TYPE_ARM && in PrintRelocationEntries()
711 (r_type == llvm::MachO::ARM_RELOC_HALF || in PrintRelocationEntries()
712 r_type == llvm::MachO::ARM_RELOC_HALF_SECTDIFF)) in PrintRelocationEntries()
729 const MachO::dysymtab_command Dysymtab = O->getDysymtabLoadCommand(); in PrintRelocations()
747 if (Load.C.cmd == MachO::LC_SEGMENT_64) { in PrintRelocations()
748 const MachO::segment_command_64 Seg = O->getSegment64LoadCommand(Load); in PrintRelocations()
750 const MachO::section_64 Sec = O->getSection64(Load, J); in PrintRelocations()
768 } else if (Load.C.cmd == MachO::LC_SEGMENT) { in PrintRelocations()
769 const MachO::segment_command Seg = O->getSegmentLoadCommand(Load); in PrintRelocations()
771 const MachO::section Sec = O->getSection(Load, J); in PrintRelocations()
794 MachO::linkedit_data_command DIC = O->getDataInCodeLoadCommand(); in PrintDataInCodeTable()
795 uint32_t nentries = DIC.datasize / sizeof(struct MachO::data_in_code_entry); in PrintDataInCodeTable()
810 case MachO::DICE_KIND_DATA: in PrintDataInCodeTable()
813 case MachO::DICE_KIND_JUMP_TABLE8: in PrintDataInCodeTable()
816 case MachO::DICE_KIND_JUMP_TABLE16: in PrintDataInCodeTable()
819 case MachO::DICE_KIND_JUMP_TABLE32: in PrintDataInCodeTable()
822 case MachO::DICE_KIND_ABS_JUMP_TABLE32: in PrintDataInCodeTable()
836 MachO::linkedit_data_command LohLC = O->getLinkOptHintsLoadCommand(); in PrintLinkOptHints()
895 if ((JustId && Load.C.cmd == MachO::LC_ID_DYLIB) || in PrintDylibs()
896 (!JustId && (Load.C.cmd == MachO::LC_ID_DYLIB || in PrintDylibs()
897 Load.C.cmd == MachO::LC_LOAD_DYLIB || in PrintDylibs()
898 Load.C.cmd == MachO::LC_LOAD_WEAK_DYLIB || in PrintDylibs()
899 Load.C.cmd == MachO::LC_REEXPORT_DYLIB || in PrintDylibs()
900 Load.C.cmd == MachO::LC_LAZY_LOAD_DYLIB || in PrintDylibs()
901 Load.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB))) { in PrintDylibs()
902 MachO::dylib_command dl = O->getDylibIDLoadCommand(Load); in PrintDylibs()
920 if (Load.C.cmd == MachO::LC_ID_DYLIB) in PrintDylibs()
922 else if (Load.C.cmd == MachO::LC_LOAD_DYLIB) in PrintDylibs()
924 else if (Load.C.cmd == MachO::LC_LOAD_WEAK_DYLIB) in PrintDylibs()
926 else if (Load.C.cmd == MachO::LC_LAZY_LOAD_DYLIB) in PrintDylibs()
928 else if (Load.C.cmd == MachO::LC_REEXPORT_DYLIB) in PrintDylibs()
930 else if (Load.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB) in PrintDylibs()
1129 const MachO::section_64 Sec = O->getSection64(Ref); in DumpLiteralPointerSection()
1130 section_type = Sec.flags & MachO::SECTION_TYPE; in DumpLiteralPointerSection()
1132 const MachO::section Sec = O->getSection(Ref); in DumpLiteralPointerSection()
1133 section_type = Sec.flags & MachO::SECTION_TYPE; in DumpLiteralPointerSection()
1135 if (section_type == MachO::S_CSTRING_LITERALS || in DumpLiteralPointerSection()
1136 section_type == MachO::S_4BYTE_LITERALS || in DumpLiteralPointerSection()
1137 section_type == MachO::S_8BYTE_LITERALS || in DumpLiteralPointerSection()
1138 section_type == MachO::S_16BYTE_LITERALS) in DumpLiteralPointerSection()
1149 MachO::any_relocation_info RE; in DumpLiteralPointerSection()
1216 const MachO::section_64 Sec = O->getSection64(Ref); in DumpLiteralPointerSection()
1217 section_type = Sec.flags & MachO::SECTION_TYPE; in DumpLiteralPointerSection()
1219 const MachO::section Sec = O->getSection(Ref); in DumpLiteralPointerSection()
1220 section_type = Sec.flags & MachO::SECTION_TYPE; in DumpLiteralPointerSection()
1228 case MachO::S_CSTRING_LITERALS: in DumpLiteralPointerSection()
1235 case MachO::S_4BYTE_LITERALS: in DumpLiteralPointerSection()
1246 case MachO::S_8BYTE_LITERALS: { in DumpLiteralPointerSection()
1261 case MachO::S_16BYTE_LITERALS: { in DumpLiteralPointerSection()
1296 MachO::any_relocation_info RE; in DumpInitTermPointerSection()
1353 if (cputype == MachO::CPU_TYPE_I386 || cputype == MachO::CPU_TYPE_X86_64) { in DumpRawSectionContents()
1432 const MachO::section_64 Sec = O->getSection64(Ref); in DumpSectionContents()
1436 const MachO::section Sec = O->getSection(Ref); in DumpSectionContents()
1439 uint32_t section_type = section_flags & MachO::SECTION_TYPE; in DumpSectionContents()
1451 if ((section_flags & MachO::S_ATTR_PURE_INSTRUCTIONS) || in DumpSectionContents()
1452 (section_flags & MachO::S_ATTR_SOME_INSTRUCTIONS)) { in DumpSectionContents()
1472 case MachO::S_REGULAR: in DumpSectionContents()
1475 case MachO::S_ZEROFILL: in DumpSectionContents()
1478 case MachO::S_CSTRING_LITERALS: in DumpSectionContents()
1481 case MachO::S_4BYTE_LITERALS: in DumpSectionContents()
1484 case MachO::S_8BYTE_LITERALS: in DumpSectionContents()
1487 case MachO::S_16BYTE_LITERALS: in DumpSectionContents()
1490 case MachO::S_LITERAL_POINTERS: in DumpSectionContents()
1494 case MachO::S_MOD_INIT_FUNC_POINTERS: in DumpSectionContents()
1495 case MachO::S_MOD_TERM_FUNC_POINTERS: in DumpSectionContents()
1506 if (section_type == MachO::S_ZEROFILL) in DumpSectionContents()
1541 auto *MachO = dyn_cast<MachOObjectFile>(O); in checkMachOAndArchFlags() local
1543 if (!MachO || ArchAll || ArchFlags.empty()) in checkMachOAndArchFlags()
1546 MachO::mach_header H; in checkMachOAndArchFlags()
1547 MachO::mach_header_64 H_64; in checkMachOAndArchFlags()
1550 if (MachO->is64Bit()) { in checkMachOAndArchFlags()
1551 H_64 = MachO->MachOObjectFile::getHeader64(); in checkMachOAndArchFlags()
1555 H = MachO->MachOObjectFile::getHeader(); in checkMachOAndArchFlags()
1626 if (MachOOF->getHeader().filetype == MachO::MH_KEXT_BUNDLE && in ProcessMachO()
1627 MachOOF->getHeader().cputype == MachO::CPU_TYPE_ARM64) in ProcessMachO()
1694 case MachO::CPU_TYPE_I386: in printCPUType()
1696 case MachO::CPU_SUBTYPE_I386_ALL: in printCPUType()
1705 case MachO::CPU_TYPE_X86_64: in printCPUType()
1707 case MachO::CPU_SUBTYPE_X86_64_ALL: in printCPUType()
1711 case MachO::CPU_SUBTYPE_X86_64_H: in printCPUType()
1720 case MachO::CPU_TYPE_ARM: in printCPUType()
1722 case MachO::CPU_SUBTYPE_ARM_ALL: in printCPUType()
1726 case MachO::CPU_SUBTYPE_ARM_V4T: in printCPUType()
1730 case MachO::CPU_SUBTYPE_ARM_V5TEJ: in printCPUType()
1734 case MachO::CPU_SUBTYPE_ARM_XSCALE: in printCPUType()
1738 case MachO::CPU_SUBTYPE_ARM_V6: in printCPUType()
1742 case MachO::CPU_SUBTYPE_ARM_V6M: in printCPUType()
1746 case MachO::CPU_SUBTYPE_ARM_V7: in printCPUType()
1750 case MachO::CPU_SUBTYPE_ARM_V7EM: in printCPUType()
1754 case MachO::CPU_SUBTYPE_ARM_V7K: in printCPUType()
1758 case MachO::CPU_SUBTYPE_ARM_V7M: in printCPUType()
1762 case MachO::CPU_SUBTYPE_ARM_V7S: in printCPUType()
1771 case MachO::CPU_TYPE_ARM64: in printCPUType()
1772 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) { in printCPUType()
1773 case MachO::CPU_SUBTYPE_ARM64_ALL: in printCPUType()
1792 if (UB->getMagic() == MachO::FAT_MAGIC) in printMachOUniversalHeaders()
1797 outs() << "fat_magic " << format("0x%" PRIx32, MachO::FAT_MAGIC) << "\n"; in printMachOUniversalHeaders()
1802 uint64_t big_size = sizeof(struct MachO::fat_header) + in printMachOUniversalHeaders()
1803 nfat_arch * sizeof(struct MachO::fat_arch); in printMachOUniversalHeaders()
1822 (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) == in printMachOUniversalHeaders()
1823 (other_cpusubtype & ~MachO::CPU_SUBTYPE_MASK)) { in printMachOUniversalHeaders()
1830 printCPUType(cputype, cpusubtype & ~MachO::CPU_SUBTYPE_MASK); in printMachOUniversalHeaders()
1834 outs() << " cpusubtype " << (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) in printMachOUniversalHeaders()
1838 (cpusubtype & MachO::CPU_SUBTYPE_MASK) == MachO::CPU_SUBTYPE_LIB64) in printMachOUniversalHeaders()
1843 (cpusubtype & MachO::CPU_SUBTYPE_MASK) >> 24) << "\n"; in printMachOUniversalHeaders()
2261 if (info->O->getHeader().filetype != MachO::MH_OBJECT) { in SymbolizerGetOpInfo()
2274 MachO::any_relocation_info RE; in SymbolizerGetOpInfo()
2288 if (r_type == MachO::GENERIC_RELOC_SECTDIFF || in SymbolizerGetOpInfo()
2289 r_type == MachO::GENERIC_RELOC_LOCAL_SECTDIFF) { in SymbolizerGetOpInfo()
2292 MachO::any_relocation_info RENext; in SymbolizerGetOpInfo()
2321 if (reloc_found && (r_type == MachO::GENERIC_RELOC_SECTDIFF || in SymbolizerGetOpInfo()
2322 r_type == MachO::GENERIC_RELOC_LOCAL_SECTDIFF)) { in SymbolizerGetOpInfo()
2347 if (info->O->getHeader().filetype != MachO::MH_OBJECT) { in SymbolizerGetOpInfo()
2351 MachO::any_relocation_info RE; in SymbolizerGetOpInfo()
2391 MachO::any_relocation_info RE; in SymbolizerGetOpInfo()
2420 if (Type == MachO::X86_64_RELOC_SUBTRACTOR) { in SymbolizerGetOpInfo()
2423 MachO::any_relocation_info RENext = info->O->getRelocation(RelNext); in SymbolizerGetOpInfo()
2427 if (TypeNext == MachO::X86_64_RELOC_UNSIGNED && isExternNext) { in SymbolizerGetOpInfo()
2449 if (info->O->getHeader().filetype != MachO::MH_OBJECT) { in SymbolizerGetOpInfo()
2461 MachO::any_relocation_info RE; in SymbolizerGetOpInfo()
2490 if (r_type == MachO::ARM_RELOC_HALF || in SymbolizerGetOpInfo()
2491 r_type == MachO::ARM_RELOC_SECTDIFF || in SymbolizerGetOpInfo()
2492 r_type == MachO::ARM_RELOC_LOCAL_SECTDIFF || in SymbolizerGetOpInfo()
2493 r_type == MachO::ARM_RELOC_HALF_SECTDIFF) { in SymbolizerGetOpInfo()
2496 MachO::any_relocation_info RENext; in SymbolizerGetOpInfo()
2511 case MachO::ARM_RELOC_HALF: in SymbolizerGetOpInfo()
2529 if (isExtern == 0 && (r_type == MachO::ARM_RELOC_BR24 || in SymbolizerGetOpInfo()
2530 r_type == MachO::ARM_THUMB_RELOC_BR22)) in SymbolizerGetOpInfo()
2534 if (r_type == MachO::ARM_RELOC_HALF || in SymbolizerGetOpInfo()
2535 r_type == MachO::ARM_RELOC_HALF_SECTDIFF) { in SymbolizerGetOpInfo()
2541 if (r_scattered && (r_type != MachO::ARM_RELOC_HALF && in SymbolizerGetOpInfo()
2542 r_type != MachO::ARM_RELOC_HALF_SECTDIFF)) { in SymbolizerGetOpInfo()
2547 if (r_type == MachO::ARM_RELOC_HALF_SECTDIFF) { in SymbolizerGetOpInfo()
2571 if (r_type == MachO::ARM_RELOC_HALF) { in SymbolizerGetOpInfo()
2588 if (info->O->getHeader().filetype != MachO::MH_OBJECT) { in SymbolizerGetOpInfo()
2609 MachO::any_relocation_info RE = info->O->getRelocation(Rel); in SymbolizerGetOpInfo()
2611 if (r_type == MachO::ARM64_RELOC_ADDEND) { in SymbolizerGetOpInfo()
2614 MachO::any_relocation_info RENext = info->O->getRelocation(RelNext); in SymbolizerGetOpInfo()
2631 case MachO::ARM64_RELOC_PAGE21: in SymbolizerGetOpInfo()
2635 case MachO::ARM64_RELOC_PAGEOFF12: in SymbolizerGetOpInfo()
2639 case MachO::ARM64_RELOC_GOT_LOAD_PAGE21: in SymbolizerGetOpInfo()
2643 case MachO::ARM64_RELOC_GOT_LOAD_PAGEOFF12: in SymbolizerGetOpInfo()
2647 case MachO::ARM64_RELOC_TLVP_LOAD_PAGE21: in SymbolizerGetOpInfo()
2651 case MachO::ARM64_RELOC_TLVP_LOAD_PAGEOFF12: in SymbolizerGetOpInfo()
2656 case MachO::ARM64_RELOC_BRANCH26: in SymbolizerGetOpInfo()
2671 if (Load.C.cmd == MachO::LC_SEGMENT_64) { in GuessCstringPointer()
2672 MachO::segment_command_64 Seg = info->O->getSegment64LoadCommand(Load); in GuessCstringPointer()
2674 MachO::section_64 Sec = info->O->getSection64(Load, J); in GuessCstringPointer()
2675 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE; in GuessCstringPointer()
2676 if (section_type == MachO::S_CSTRING_LITERALS && in GuessCstringPointer()
2692 } else if (Load.C.cmd == MachO::LC_SEGMENT) { in GuessCstringPointer()
2693 MachO::segment_command Seg = info->O->getSegmentLoadCommand(Load); in GuessCstringPointer()
2695 MachO::section Sec = info->O->getSection(Load, J); in GuessCstringPointer()
2696 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE; in GuessCstringPointer()
2697 if (section_type == MachO::S_CSTRING_LITERALS && in GuessCstringPointer()
2724 MachO::dysymtab_command Dysymtab = info->O->getDysymtabLoadCommand(); in GuessIndirectSymbol()
2725 MachO::symtab_command Symtab = info->O->getSymtabLoadCommand(); in GuessIndirectSymbol()
2727 if (Load.C.cmd == MachO::LC_SEGMENT_64) { in GuessIndirectSymbol()
2728 MachO::segment_command_64 Seg = info->O->getSegment64LoadCommand(Load); in GuessIndirectSymbol()
2730 MachO::section_64 Sec = info->O->getSection64(Load, J); in GuessIndirectSymbol()
2731 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE; in GuessIndirectSymbol()
2732 if ((section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS || in GuessIndirectSymbol()
2733 section_type == MachO::S_LAZY_SYMBOL_POINTERS || in GuessIndirectSymbol()
2734 section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS || in GuessIndirectSymbol()
2735 section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS || in GuessIndirectSymbol()
2736 section_type == MachO::S_SYMBOL_STUBS) && in GuessIndirectSymbol()
2740 if (section_type == MachO::S_SYMBOL_STUBS) in GuessIndirectSymbol()
2762 } else if (Load.C.cmd == MachO::LC_SEGMENT) { in GuessIndirectSymbol()
2763 MachO::segment_command Seg = info->O->getSegmentLoadCommand(Load); in GuessIndirectSymbol()
2765 MachO::section Sec = info->O->getSection(Load, J); in GuessIndirectSymbol()
2766 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE; in GuessIndirectSymbol()
2767 if ((section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS || in GuessIndirectSymbol()
2768 section_type == MachO::S_LAZY_SYMBOL_POINTERS || in GuessIndirectSymbol()
2769 section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS || in GuessIndirectSymbol()
2770 section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS || in GuessIndirectSymbol()
2771 section_type == MachO::S_SYMBOL_STUBS) && in GuessIndirectSymbol()
2775 if (section_type == MachO::S_SYMBOL_STUBS) in GuessIndirectSymbol()
2886 if (Load.C.cmd == MachO::LC_SEGMENT_64) { in GuessPointerPointer()
2887 MachO::segment_command_64 Seg = info->O->getSegment64LoadCommand(Load); in GuessPointerPointer()
2889 MachO::section_64 Sec = info->O->getSection64(Load, J); in GuessPointerPointer()
2993 MachO::any_relocation_info RE; in get_symbol_64()
6483 MachO::mach_header H; in printObjcMetaData()
6485 if (H.cputype == MachO::CPU_TYPE_ARM) in printObjcMetaData()
6522 if (info->O->getHeader().filetype == MachO::MH_OBJECT) { in GuessLiteralPointer()
6527 MachO::any_relocation_info RE; in GuessLiteralPointer()
6551 if (Type == MachO::X86_64_RELOC_SIGNED) { in GuessLiteralPointer()
6935 MachO::mach_header Header = MachOOF->getHeader(); in DisassembleMachO()
6954 if (Header.filetype == MachO::MH_OBJECT) in DisassembleMachO()
7216 if ((Kind == MachO::DICE_KIND_JUMP_TABLE8) && in DisassembleMachO()
7841 if (magic == MachO::MH_MAGIC) in PrintMachHeader()
7843 else if (magic == MachO::MH_MAGIC_64) in PrintMachHeader()
7848 case MachO::CPU_TYPE_I386: in PrintMachHeader()
7850 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) { in PrintMachHeader()
7851 case MachO::CPU_SUBTYPE_I386_ALL: in PrintMachHeader()
7855 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK); in PrintMachHeader()
7859 case MachO::CPU_TYPE_X86_64: in PrintMachHeader()
7861 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) { in PrintMachHeader()
7862 case MachO::CPU_SUBTYPE_X86_64_ALL: in PrintMachHeader()
7865 case MachO::CPU_SUBTYPE_X86_64_H: in PrintMachHeader()
7869 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK); in PrintMachHeader()
7873 case MachO::CPU_TYPE_ARM: in PrintMachHeader()
7875 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) { in PrintMachHeader()
7876 case MachO::CPU_SUBTYPE_ARM_ALL: in PrintMachHeader()
7879 case MachO::CPU_SUBTYPE_ARM_V4T: in PrintMachHeader()
7882 case MachO::CPU_SUBTYPE_ARM_V5TEJ: in PrintMachHeader()
7885 case MachO::CPU_SUBTYPE_ARM_XSCALE: in PrintMachHeader()
7888 case MachO::CPU_SUBTYPE_ARM_V6: in PrintMachHeader()
7891 case MachO::CPU_SUBTYPE_ARM_V6M: in PrintMachHeader()
7894 case MachO::CPU_SUBTYPE_ARM_V7: in PrintMachHeader()
7897 case MachO::CPU_SUBTYPE_ARM_V7EM: in PrintMachHeader()
7900 case MachO::CPU_SUBTYPE_ARM_V7K: in PrintMachHeader()
7903 case MachO::CPU_SUBTYPE_ARM_V7M: in PrintMachHeader()
7906 case MachO::CPU_SUBTYPE_ARM_V7S: in PrintMachHeader()
7910 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK); in PrintMachHeader()
7914 case MachO::CPU_TYPE_ARM64: in PrintMachHeader()
7916 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) { in PrintMachHeader()
7917 case MachO::CPU_SUBTYPE_ARM64_ALL: in PrintMachHeader()
7921 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK); in PrintMachHeader()
7925 case MachO::CPU_TYPE_POWERPC: in PrintMachHeader()
7927 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) { in PrintMachHeader()
7928 case MachO::CPU_SUBTYPE_POWERPC_ALL: in PrintMachHeader()
7932 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK); in PrintMachHeader()
7936 case MachO::CPU_TYPE_POWERPC64: in PrintMachHeader()
7938 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) { in PrintMachHeader()
7939 case MachO::CPU_SUBTYPE_POWERPC_ALL: in PrintMachHeader()
7943 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK); in PrintMachHeader()
7949 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK); in PrintMachHeader()
7952 if ((cpusubtype & MachO::CPU_SUBTYPE_MASK) == MachO::CPU_SUBTYPE_LIB64) { in PrintMachHeader()
7956 (cpusubtype & MachO::CPU_SUBTYPE_MASK) >> 24); in PrintMachHeader()
7959 case MachO::MH_OBJECT: in PrintMachHeader()
7962 case MachO::MH_EXECUTE: in PrintMachHeader()
7965 case MachO::MH_FVMLIB: in PrintMachHeader()
7968 case MachO::MH_CORE: in PrintMachHeader()
7971 case MachO::MH_PRELOAD: in PrintMachHeader()
7974 case MachO::MH_DYLIB: in PrintMachHeader()
7977 case MachO::MH_DYLIB_STUB: in PrintMachHeader()
7980 case MachO::MH_DYLINKER: in PrintMachHeader()
7983 case MachO::MH_BUNDLE: in PrintMachHeader()
7986 case MachO::MH_DSYM: in PrintMachHeader()
7989 case MachO::MH_KEXT_BUNDLE: in PrintMachHeader()
7999 if (f & MachO::MH_NOUNDEFS) { in PrintMachHeader()
8001 f &= ~MachO::MH_NOUNDEFS; in PrintMachHeader()
8003 if (f & MachO::MH_INCRLINK) { in PrintMachHeader()
8005 f &= ~MachO::MH_INCRLINK; in PrintMachHeader()
8007 if (f & MachO::MH_DYLDLINK) { in PrintMachHeader()
8009 f &= ~MachO::MH_DYLDLINK; in PrintMachHeader()
8011 if (f & MachO::MH_BINDATLOAD) { in PrintMachHeader()
8013 f &= ~MachO::MH_BINDATLOAD; in PrintMachHeader()
8015 if (f & MachO::MH_PREBOUND) { in PrintMachHeader()
8017 f &= ~MachO::MH_PREBOUND; in PrintMachHeader()
8019 if (f & MachO::MH_SPLIT_SEGS) { in PrintMachHeader()
8021 f &= ~MachO::MH_SPLIT_SEGS; in PrintMachHeader()
8023 if (f & MachO::MH_LAZY_INIT) { in PrintMachHeader()
8025 f &= ~MachO::MH_LAZY_INIT; in PrintMachHeader()
8027 if (f & MachO::MH_TWOLEVEL) { in PrintMachHeader()
8029 f &= ~MachO::MH_TWOLEVEL; in PrintMachHeader()
8031 if (f & MachO::MH_FORCE_FLAT) { in PrintMachHeader()
8033 f &= ~MachO::MH_FORCE_FLAT; in PrintMachHeader()
8035 if (f & MachO::MH_NOMULTIDEFS) { in PrintMachHeader()
8037 f &= ~MachO::MH_NOMULTIDEFS; in PrintMachHeader()
8039 if (f & MachO::MH_NOFIXPREBINDING) { in PrintMachHeader()
8041 f &= ~MachO::MH_NOFIXPREBINDING; in PrintMachHeader()
8043 if (f & MachO::MH_PREBINDABLE) { in PrintMachHeader()
8045 f &= ~MachO::MH_PREBINDABLE; in PrintMachHeader()
8047 if (f & MachO::MH_ALLMODSBOUND) { in PrintMachHeader()
8049 f &= ~MachO::MH_ALLMODSBOUND; in PrintMachHeader()
8051 if (f & MachO::MH_SUBSECTIONS_VIA_SYMBOLS) { in PrintMachHeader()
8053 f &= ~MachO::MH_SUBSECTIONS_VIA_SYMBOLS; in PrintMachHeader()
8055 if (f & MachO::MH_CANONICAL) { in PrintMachHeader()
8057 f &= ~MachO::MH_CANONICAL; in PrintMachHeader()
8059 if (f & MachO::MH_WEAK_DEFINES) { in PrintMachHeader()
8061 f &= ~MachO::MH_WEAK_DEFINES; in PrintMachHeader()
8063 if (f & MachO::MH_BINDS_TO_WEAK) { in PrintMachHeader()
8065 f &= ~MachO::MH_BINDS_TO_WEAK; in PrintMachHeader()
8067 if (f & MachO::MH_ALLOW_STACK_EXECUTION) { in PrintMachHeader()
8069 f &= ~MachO::MH_ALLOW_STACK_EXECUTION; in PrintMachHeader()
8071 if (f & MachO::MH_DEAD_STRIPPABLE_DYLIB) { in PrintMachHeader()
8073 f &= ~MachO::MH_DEAD_STRIPPABLE_DYLIB; in PrintMachHeader()
8075 if (f & MachO::MH_PIE) { in PrintMachHeader()
8077 f &= ~MachO::MH_PIE; in PrintMachHeader()
8079 if (f & MachO::MH_NO_REEXPORTED_DYLIBS) { in PrintMachHeader()
8081 f &= ~MachO::MH_NO_REEXPORTED_DYLIBS; in PrintMachHeader()
8083 if (f & MachO::MH_HAS_TLV_DESCRIPTORS) { in PrintMachHeader()
8085 f &= ~MachO::MH_HAS_TLV_DESCRIPTORS; in PrintMachHeader()
8087 if (f & MachO::MH_NO_HEAP_EXECUTION) { in PrintMachHeader()
8089 f &= ~MachO::MH_NO_HEAP_EXECUTION; in PrintMachHeader()
8091 if (f & MachO::MH_APP_EXTENSION_SAFE) { in PrintMachHeader()
8093 f &= ~MachO::MH_APP_EXTENSION_SAFE; in PrintMachHeader()
8095 if (f & MachO::MH_NLIST_OUTOFSYNC_WITH_DYLDINFO) { in PrintMachHeader()
8097 f &= ~MachO::MH_NLIST_OUTOFSYNC_WITH_DYLDINFO; in PrintMachHeader()
8104 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK); in PrintMachHeader()
8106 (cpusubtype & MachO::CPU_SUBTYPE_MASK) >> 24); in PrintMachHeader()
8123 if (cmd == MachO::LC_SEGMENT) { in PrintSegmentCommand()
8126 expected_cmdsize *= sizeof(struct MachO::section); in PrintSegmentCommand()
8127 expected_cmdsize += sizeof(struct MachO::segment_command); in PrintSegmentCommand()
8131 expected_cmdsize *= sizeof(struct MachO::section_64); in PrintSegmentCommand()
8132 expected_cmdsize += sizeof(struct MachO::segment_command_64); in PrintSegmentCommand()
8140 if (cmd == MachO::LC_SEGMENT_64) { in PrintSegmentCommand()
8159 ~(MachO::VM_PROT_READ | MachO::VM_PROT_WRITE | in PrintSegmentCommand()
8160 MachO::VM_PROT_EXECUTE)) != 0) in PrintSegmentCommand()
8164 outs() << ((maxprot & MachO::VM_PROT_READ) ? "r" : "-"); in PrintSegmentCommand()
8165 outs() << ((maxprot & MachO::VM_PROT_WRITE) ? "w" : "-"); in PrintSegmentCommand()
8166 outs() << ((maxprot & MachO::VM_PROT_EXECUTE) ? "x\n" : "-\n"); in PrintSegmentCommand()
8169 ~(MachO::VM_PROT_READ | MachO::VM_PROT_WRITE | in PrintSegmentCommand()
8170 MachO::VM_PROT_EXECUTE)) != 0) in PrintSegmentCommand()
8174 outs() << ((initprot & MachO::VM_PROT_READ) ? "r" : "-"); in PrintSegmentCommand()
8175 outs() << ((initprot & MachO::VM_PROT_WRITE) ? "w" : "-"); in PrintSegmentCommand()
8176 outs() << ((initprot & MachO::VM_PROT_EXECUTE) ? "x\n" : "-\n"); in PrintSegmentCommand()
8188 if (flags & MachO::SG_HIGHVM) { in PrintSegmentCommand()
8190 flags &= ~MachO::SG_HIGHVM; in PrintSegmentCommand()
8192 if (flags & MachO::SG_FVMLIB) { in PrintSegmentCommand()
8194 flags &= ~MachO::SG_FVMLIB; in PrintSegmentCommand()
8196 if (flags & MachO::SG_NORELOC) { in PrintSegmentCommand()
8198 flags &= ~MachO::SG_NORELOC; in PrintSegmentCommand()
8200 if (flags & MachO::SG_PROTECTED_VERSION_1) { in PrintSegmentCommand()
8202 flags &= ~MachO::SG_PROTECTED_VERSION_1; in PrintSegmentCommand()
8224 if (filetype != MachO::MH_OBJECT && strncmp(sg_segname, segname, 16) != 0) in PrintSection()
8228 if (cmd == MachO::LC_SEGMENT_64) { in PrintSection()
8235 if ((flags & MachO::S_ZEROFILL) != 0 && offset + size > object_size) in PrintSection()
8252 if (reloff + nreloc * sizeof(struct MachO::relocation_info) > object_size) in PrintSection()
8256 uint32_t section_type = flags & MachO::SECTION_TYPE; in PrintSection()
8259 if (section_type == MachO::S_REGULAR) in PrintSection()
8261 else if (section_type == MachO::S_ZEROFILL) in PrintSection()
8263 else if (section_type == MachO::S_CSTRING_LITERALS) in PrintSection()
8265 else if (section_type == MachO::S_4BYTE_LITERALS) in PrintSection()
8267 else if (section_type == MachO::S_8BYTE_LITERALS) in PrintSection()
8269 else if (section_type == MachO::S_16BYTE_LITERALS) in PrintSection()
8271 else if (section_type == MachO::S_LITERAL_POINTERS) in PrintSection()
8273 else if (section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS) in PrintSection()
8275 else if (section_type == MachO::S_LAZY_SYMBOL_POINTERS) in PrintSection()
8277 else if (section_type == MachO::S_SYMBOL_STUBS) in PrintSection()
8279 else if (section_type == MachO::S_MOD_INIT_FUNC_POINTERS) in PrintSection()
8281 else if (section_type == MachO::S_MOD_TERM_FUNC_POINTERS) in PrintSection()
8283 else if (section_type == MachO::S_COALESCED) in PrintSection()
8285 else if (section_type == MachO::S_INTERPOSING) in PrintSection()
8287 else if (section_type == MachO::S_DTRACE_DOF) in PrintSection()
8289 else if (section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS) in PrintSection()
8291 else if (section_type == MachO::S_THREAD_LOCAL_REGULAR) in PrintSection()
8293 else if (section_type == MachO::S_THREAD_LOCAL_ZEROFILL) in PrintSection()
8295 else if (section_type == MachO::S_THREAD_LOCAL_VARIABLES) in PrintSection()
8297 else if (section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS) in PrintSection()
8299 else if (section_type == MachO::S_THREAD_LOCAL_INIT_FUNCTION_POINTERS) in PrintSection()
8304 uint32_t section_attributes = flags & MachO::SECTION_ATTRIBUTES; in PrintSection()
8305 if (section_attributes & MachO::S_ATTR_PURE_INSTRUCTIONS) in PrintSection()
8307 if (section_attributes & MachO::S_ATTR_NO_TOC) in PrintSection()
8309 if (section_attributes & MachO::S_ATTR_STRIP_STATIC_SYMS) in PrintSection()
8311 if (section_attributes & MachO::S_ATTR_NO_DEAD_STRIP) in PrintSection()
8313 if (section_attributes & MachO::S_ATTR_LIVE_SUPPORT) in PrintSection()
8315 if (section_attributes & MachO::S_ATTR_SELF_MODIFYING_CODE) in PrintSection()
8317 if (section_attributes & MachO::S_ATTR_DEBUG) in PrintSection()
8319 if (section_attributes & MachO::S_ATTR_SOME_INSTRUCTIONS) in PrintSection()
8321 if (section_attributes & MachO::S_ATTR_EXT_RELOC) in PrintSection()
8323 if (section_attributes & MachO::S_ATTR_LOC_RELOC) in PrintSection()
8331 if (section_type == MachO::S_SYMBOL_STUBS || in PrintSection()
8332 section_type == MachO::S_LAZY_SYMBOL_POINTERS || in PrintSection()
8333 section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS || in PrintSection()
8334 section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS || in PrintSection()
8335 section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS) in PrintSection()
8340 if (section_type == MachO::S_SYMBOL_STUBS) in PrintSection()
8346 static void PrintSymtabLoadCommand(MachO::symtab_command st, bool Is64Bit, in PrintSymtabLoadCommand()
8350 if (st.cmdsize != sizeof(struct MachO::symtab_command)) in PrintSymtabLoadCommand()
8363 big_size *= sizeof(struct MachO::nlist_64); in PrintSymtabLoadCommand()
8371 big_size *= sizeof(struct MachO::nlist); in PrintSymtabLoadCommand()
8392 static void PrintDysymtabLoadCommand(MachO::dysymtab_command dyst, in PrintDysymtabLoadCommand()
8397 if (dyst.cmdsize != sizeof(struct MachO::dysymtab_command)) in PrintDysymtabLoadCommand()
8445 big_size *= sizeof(struct MachO::dylib_table_of_contents); in PrintDysymtabLoadCommand()
8460 modtabend *= sizeof(struct MachO::dylib_module_64); in PrintDysymtabLoadCommand()
8464 modtabend *= sizeof(struct MachO::dylib_module); in PrintDysymtabLoadCommand()
8478 big_size *= sizeof(struct MachO::dylib_reference); in PrintDysymtabLoadCommand()
8504 big_size *= sizeof(struct MachO::relocation_info); in PrintDysymtabLoadCommand()
8517 big_size *= sizeof(struct MachO::relocation_info); in PrintDysymtabLoadCommand()
8525 static void PrintDyldInfoLoadCommand(MachO::dyld_info_command dc, in PrintDyldInfoLoadCommand()
8527 if (dc.cmd == MachO::LC_DYLD_INFO) in PrintDyldInfoLoadCommand()
8532 if (dc.cmdsize != sizeof(struct MachO::dyld_info_command)) in PrintDyldInfoLoadCommand()
8599 static void PrintDyldLoadCommand(MachO::dylinker_command dyld, in PrintDyldLoadCommand()
8601 if (dyld.cmd == MachO::LC_ID_DYLINKER) in PrintDyldLoadCommand()
8603 else if (dyld.cmd == MachO::LC_LOAD_DYLINKER) in PrintDyldLoadCommand()
8605 else if (dyld.cmd == MachO::LC_DYLD_ENVIRONMENT) in PrintDyldLoadCommand()
8610 if (dyld.cmdsize < sizeof(struct MachO::dylinker_command)) in PrintDyldLoadCommand()
8622 static void PrintUuidLoadCommand(MachO::uuid_command uuid) { in PrintUuidLoadCommand()
8625 if (uuid.cmdsize != sizeof(struct MachO::uuid_command)) in PrintUuidLoadCommand()
8638 static void PrintRpathLoadCommand(MachO::rpath_command rpath, const char *Ptr) { in PrintRpathLoadCommand()
8641 if (rpath.cmdsize < sizeof(struct MachO::rpath_command)) in PrintRpathLoadCommand()
8653 static void PrintVersionMinLoadCommand(MachO::version_min_command vd) { in PrintVersionMinLoadCommand()
8656 case MachO::LC_VERSION_MIN_MACOSX: in PrintVersionMinLoadCommand()
8659 case MachO::LC_VERSION_MIN_IPHONEOS: in PrintVersionMinLoadCommand()
8662 case MachO::LC_VERSION_MIN_TVOS: in PrintVersionMinLoadCommand()
8665 case MachO::LC_VERSION_MIN_WATCHOS: in PrintVersionMinLoadCommand()
8674 if (vd.cmdsize != sizeof(struct MachO::version_min_command)) in PrintVersionMinLoadCommand()
8698 static void PrintNoteLoadCommand(MachO::note_command Nt) { in PrintNoteLoadCommand()
8701 if (Nt.cmdsize != sizeof(struct MachO::note_command)) in PrintNoteLoadCommand()
8711 static void PrintBuildToolVersion(MachO::build_tool_version bv) { in PrintBuildToolVersion()
8718 MachO::build_version_command bd) { in PrintBuildVersionLoadCommand()
8722 sizeof(struct MachO::build_version_command) + in PrintBuildVersionLoadCommand()
8723 bd.ntools * sizeof(struct MachO::build_tool_version)) in PrintBuildVersionLoadCommand()
8738 MachO::build_tool_version bv = obj->getBuildToolVersion(i); in PrintBuildVersionLoadCommand()
8743 static void PrintSourceVersionCommand(MachO::source_version_command sd) { in PrintSourceVersionCommand()
8746 if (sd.cmdsize != sizeof(struct MachO::source_version_command)) in PrintSourceVersionCommand()
8765 static void PrintEntryPointCommand(MachO::entry_point_command ep) { in PrintEntryPointCommand()
8768 if (ep.cmdsize != sizeof(struct MachO::entry_point_command)) in PrintEntryPointCommand()
8776 static void PrintEncryptionInfoCommand(MachO::encryption_info_command ec, in PrintEncryptionInfoCommand()
8780 if (ec.cmdsize != sizeof(struct MachO::encryption_info_command)) in PrintEncryptionInfoCommand()
8797 static void PrintEncryptionInfoCommand64(MachO::encryption_info_command_64 ec, in PrintEncryptionInfoCommand64()
8801 if (ec.cmdsize != sizeof(struct MachO::encryption_info_command_64)) in PrintEncryptionInfoCommand64()
8819 static void PrintLinkerOptionCommand(MachO::linker_option_command lo, in PrintLinkerOptionCommand()
8823 if (lo.cmdsize < sizeof(struct MachO::linker_option_command)) in PrintLinkerOptionCommand()
8828 const char *string = Ptr + sizeof(struct MachO::linker_option_command); in PrintLinkerOptionCommand()
8829 uint32_t left = lo.cmdsize - sizeof(struct MachO::linker_option_command); in PrintLinkerOptionCommand()
8850 static void PrintSubFrameworkCommand(MachO::sub_framework_command sub, in PrintSubFrameworkCommand()
8854 if (sub.cmdsize < sizeof(struct MachO::sub_framework_command)) in PrintSubFrameworkCommand()
8866 static void PrintSubUmbrellaCommand(MachO::sub_umbrella_command sub, in PrintSubUmbrellaCommand()
8870 if (sub.cmdsize < sizeof(struct MachO::sub_umbrella_command)) in PrintSubUmbrellaCommand()
8882 static void PrintSubLibraryCommand(MachO::sub_library_command sub, in PrintSubLibraryCommand()
8886 if (sub.cmdsize < sizeof(struct MachO::sub_library_command)) in PrintSubLibraryCommand()
8898 static void PrintSubClientCommand(MachO::sub_client_command sub, in PrintSubClientCommand()
8902 if (sub.cmdsize < sizeof(struct MachO::sub_client_command)) in PrintSubClientCommand()
8914 static void PrintRoutinesCommand(MachO::routines_command r) { in PrintRoutinesCommand()
8917 if (r.cmdsize != sizeof(struct MachO::routines_command)) in PrintRoutinesCommand()
8931 static void PrintRoutinesCommand64(MachO::routines_command_64 r) { in PrintRoutinesCommand64()
8934 if (r.cmdsize != sizeof(struct MachO::routines_command_64)) in PrintRoutinesCommand64()
8948 static void Print_x86_thread_state32_t(MachO::x86_thread_state32_t &cpu32) { in Print_x86_thread_state32_t()
8967 static void Print_x86_thread_state64_t(MachO::x86_thread_state64_t &cpu64) { in Print_x86_thread_state64_t()
8991 static void Print_mmst_reg(MachO::mmst_reg_t &r) { in Print_mmst_reg()
9003 static void Print_xmm_reg(MachO::xmm_reg_t &r) { in Print_xmm_reg()
9011 static void Print_x86_float_state_t(MachO::x86_float_state64_t &fpu) { in Print_x86_float_state_t()
9021 if (fpu.fpu_fcw.pc == MachO::x86_FP_PREC_24B) in Print_x86_float_state_t()
9023 else if (fpu.fpu_fcw.pc == MachO::x86_FP_PREC_53B) in Print_x86_float_state_t()
9025 else if (fpu.fpu_fcw.pc == MachO::x86_FP_PREC_64B) in Print_x86_float_state_t()
9030 if (fpu.fpu_fcw.rc == MachO::x86_FP_RND_NEAR) in Print_x86_float_state_t()
9032 else if (fpu.fpu_fcw.rc == MachO::x86_FP_RND_DOWN) in Print_x86_float_state_t()
9034 else if (fpu.fpu_fcw.rc == MachO::x86_FP_RND_UP) in Print_x86_float_state_t()
9036 else if (fpu.fpu_fcw.rc == MachO::x86_FP_CHOP) in Print_x86_float_state_t()
9124 static void Print_x86_exception_state_t(MachO::x86_exception_state64_t &exc64) { in Print_x86_exception_state_t()
9130 static void Print_arm_thread_state32_t(MachO::arm_thread_state32_t &cpu32) { in Print_arm_thread_state32_t()
9150 static void Print_arm_thread_state64_t(MachO::arm_thread_state64_t &cpu64) { in Print_arm_thread_state64_t()
9187 static void PrintThreadCommand(MachO::thread_command t, const char *Ptr, in PrintThreadCommand()
9189 if (t.cmd == MachO::LC_THREAD) in PrintThreadCommand()
9191 else if (t.cmd == MachO::LC_UNIXTHREAD) in PrintThreadCommand()
9196 if (t.cmdsize < sizeof(struct MachO::thread_command) + 2 * sizeof(uint32_t)) in PrintThreadCommand()
9201 const char *begin = Ptr + sizeof(struct MachO::thread_command); in PrintThreadCommand()
9204 if (cputype == MachO::CPU_TYPE_I386) { in PrintThreadCommand()
9224 if (flavor == MachO::x86_THREAD_STATE32) { in PrintThreadCommand()
9226 if (count == MachO::x86_THREAD_STATE32_COUNT) in PrintThreadCommand()
9231 MachO::x86_thread_state32_t cpu32; in PrintThreadCommand()
9233 if (left >= sizeof(MachO::x86_thread_state32_t)) { in PrintThreadCommand()
9234 memcpy(&cpu32, begin, sizeof(MachO::x86_thread_state32_t)); in PrintThreadCommand()
9235 begin += sizeof(MachO::x86_thread_state32_t); in PrintThreadCommand()
9237 memset(&cpu32, '\0', sizeof(MachO::x86_thread_state32_t)); in PrintThreadCommand()
9244 } else if (flavor == MachO::x86_THREAD_STATE) { in PrintThreadCommand()
9246 if (count == MachO::x86_THREAD_STATE_COUNT) in PrintThreadCommand()
9251 struct MachO::x86_thread_state_t ts; in PrintThreadCommand()
9253 if (left >= sizeof(MachO::x86_thread_state_t)) { in PrintThreadCommand()
9254 memcpy(&ts, begin, sizeof(MachO::x86_thread_state_t)); in PrintThreadCommand()
9255 begin += sizeof(MachO::x86_thread_state_t); in PrintThreadCommand()
9257 memset(&ts, '\0', sizeof(MachO::x86_thread_state_t)); in PrintThreadCommand()
9263 if (ts.tsh.flavor == MachO::x86_THREAD_STATE32) { in PrintThreadCommand()
9265 if (ts.tsh.count == MachO::x86_THREAD_STATE32_COUNT) in PrintThreadCommand()
9282 } else if (cputype == MachO::CPU_TYPE_X86_64) { in PrintThreadCommand()
9302 if (flavor == MachO::x86_THREAD_STATE64) { in PrintThreadCommand()
9304 if (count == MachO::x86_THREAD_STATE64_COUNT) in PrintThreadCommand()
9309 MachO::x86_thread_state64_t cpu64; in PrintThreadCommand()
9311 if (left >= sizeof(MachO::x86_thread_state64_t)) { in PrintThreadCommand()
9312 memcpy(&cpu64, begin, sizeof(MachO::x86_thread_state64_t)); in PrintThreadCommand()
9313 begin += sizeof(MachO::x86_thread_state64_t); in PrintThreadCommand()
9315 memset(&cpu64, '\0', sizeof(MachO::x86_thread_state64_t)); in PrintThreadCommand()
9322 } else if (flavor == MachO::x86_THREAD_STATE) { in PrintThreadCommand()
9324 if (count == MachO::x86_THREAD_STATE_COUNT) in PrintThreadCommand()
9329 struct MachO::x86_thread_state_t ts; in PrintThreadCommand()
9331 if (left >= sizeof(MachO::x86_thread_state_t)) { in PrintThreadCommand()
9332 memcpy(&ts, begin, sizeof(MachO::x86_thread_state_t)); in PrintThreadCommand()
9333 begin += sizeof(MachO::x86_thread_state_t); in PrintThreadCommand()
9335 memset(&ts, '\0', sizeof(MachO::x86_thread_state_t)); in PrintThreadCommand()
9341 if (ts.tsh.flavor == MachO::x86_THREAD_STATE64) { in PrintThreadCommand()
9343 if (ts.tsh.count == MachO::x86_THREAD_STATE64_COUNT) in PrintThreadCommand()
9353 } else if (flavor == MachO::x86_FLOAT_STATE) { in PrintThreadCommand()
9355 if (count == MachO::x86_FLOAT_STATE_COUNT) in PrintThreadCommand()
9359 struct MachO::x86_float_state_t fs; in PrintThreadCommand()
9361 if (left >= sizeof(MachO::x86_float_state_t)) { in PrintThreadCommand()
9362 memcpy(&fs, begin, sizeof(MachO::x86_float_state_t)); in PrintThreadCommand()
9363 begin += sizeof(MachO::x86_float_state_t); in PrintThreadCommand()
9365 memset(&fs, '\0', sizeof(MachO::x86_float_state_t)); in PrintThreadCommand()
9371 if (fs.fsh.flavor == MachO::x86_FLOAT_STATE64) { in PrintThreadCommand()
9373 if (fs.fsh.count == MachO::x86_FLOAT_STATE64_COUNT) in PrintThreadCommand()
9383 } else if (flavor == MachO::x86_EXCEPTION_STATE) { in PrintThreadCommand()
9385 if (count == MachO::x86_EXCEPTION_STATE_COUNT) in PrintThreadCommand()
9390 struct MachO::x86_exception_state_t es; in PrintThreadCommand()
9392 if (left >= sizeof(MachO::x86_exception_state_t)) { in PrintThreadCommand()
9393 memcpy(&es, begin, sizeof(MachO::x86_exception_state_t)); in PrintThreadCommand()
9394 begin += sizeof(MachO::x86_exception_state_t); in PrintThreadCommand()
9396 memset(&es, '\0', sizeof(MachO::x86_exception_state_t)); in PrintThreadCommand()
9402 if (es.esh.flavor == MachO::x86_EXCEPTION_STATE64) { in PrintThreadCommand()
9404 if (es.esh.count == MachO::x86_EXCEPTION_STATE64_COUNT) in PrintThreadCommand()
9414 } else if (flavor == MachO::x86_EXCEPTION_STATE64) { in PrintThreadCommand()
9416 if (count == MachO::x86_EXCEPTION_STATE64_COUNT) in PrintThreadCommand()
9421 struct MachO::x86_exception_state64_t es64; in PrintThreadCommand()
9423 if (left >= sizeof(MachO::x86_exception_state64_t)) { in PrintThreadCommand()
9424 memcpy(&es64, begin, sizeof(MachO::x86_exception_state64_t)); in PrintThreadCommand()
9425 begin += sizeof(MachO::x86_exception_state64_t); in PrintThreadCommand()
9427 memset(&es64, '\0', sizeof(MachO::x86_exception_state64_t)); in PrintThreadCommand()
9441 } else if (cputype == MachO::CPU_TYPE_ARM) { in PrintThreadCommand()
9461 if (flavor == MachO::ARM_THREAD_STATE) { in PrintThreadCommand()
9463 if (count == MachO::ARM_THREAD_STATE_COUNT) in PrintThreadCommand()
9468 MachO::arm_thread_state32_t cpu32; in PrintThreadCommand()
9470 if (left >= sizeof(MachO::arm_thread_state32_t)) { in PrintThreadCommand()
9471 memcpy(&cpu32, begin, sizeof(MachO::arm_thread_state32_t)); in PrintThreadCommand()
9472 begin += sizeof(MachO::arm_thread_state32_t); in PrintThreadCommand()
9474 memset(&cpu32, '\0', sizeof(MachO::arm_thread_state32_t)); in PrintThreadCommand()
9488 } else if (cputype == MachO::CPU_TYPE_ARM64) { in PrintThreadCommand()
9508 if (flavor == MachO::ARM_THREAD_STATE64) { in PrintThreadCommand()
9510 if (count == MachO::ARM_THREAD_STATE64_COUNT) in PrintThreadCommand()
9515 MachO::arm_thread_state64_t cpu64; in PrintThreadCommand()
9517 if (left >= sizeof(MachO::arm_thread_state64_t)) { in PrintThreadCommand()
9518 memcpy(&cpu64, begin, sizeof(MachO::arm_thread_state64_t)); in PrintThreadCommand()
9519 begin += sizeof(MachO::arm_thread_state64_t); in PrintThreadCommand()
9521 memset(&cpu64, '\0', sizeof(MachO::arm_thread_state64_t)); in PrintThreadCommand()
9563 static void PrintDylibCommand(MachO::dylib_command dl, const char *Ptr) { in PrintDylibCommand()
9564 if (dl.cmd == MachO::LC_ID_DYLIB) in PrintDylibCommand()
9566 else if (dl.cmd == MachO::LC_LOAD_DYLIB) in PrintDylibCommand()
9568 else if (dl.cmd == MachO::LC_LOAD_WEAK_DYLIB) in PrintDylibCommand()
9570 else if (dl.cmd == MachO::LC_REEXPORT_DYLIB) in PrintDylibCommand()
9572 else if (dl.cmd == MachO::LC_LAZY_LOAD_DYLIB) in PrintDylibCommand()
9574 else if (dl.cmd == MachO::LC_LOAD_UPWARD_DYLIB) in PrintDylibCommand()
9579 if (dl.cmdsize < sizeof(struct MachO::dylib_command)) in PrintDylibCommand()
9608 static void PrintLinkEditDataCommand(MachO::linkedit_data_command ld, in PrintLinkEditDataCommand()
9610 if (ld.cmd == MachO::LC_CODE_SIGNATURE) in PrintLinkEditDataCommand()
9612 else if (ld.cmd == MachO::LC_SEGMENT_SPLIT_INFO) in PrintLinkEditDataCommand()
9614 else if (ld.cmd == MachO::LC_FUNCTION_STARTS) in PrintLinkEditDataCommand()
9616 else if (ld.cmd == MachO::LC_DATA_IN_CODE) in PrintLinkEditDataCommand()
9618 else if (ld.cmd == MachO::LC_DYLIB_CODE_SIGN_DRS) in PrintLinkEditDataCommand()
9620 else if (ld.cmd == MachO::LC_LINKER_OPTIMIZATION_HINT) in PrintLinkEditDataCommand()
9625 if (ld.cmdsize != sizeof(struct MachO::linkedit_data_command)) in PrintLinkEditDataCommand()
9649 if (Command.C.cmd == MachO::LC_SEGMENT) { in PrintLoadCommands()
9650 MachO::segment_command SLC = Obj->getSegmentLoadCommand(Command); in PrintLoadCommands()
9657 MachO::section S = Obj->getSection(Command, j); in PrintLoadCommands()
9662 } else if (Command.C.cmd == MachO::LC_SEGMENT_64) { in PrintLoadCommands()
9663 MachO::segment_command_64 SLC_64 = Obj->getSegment64LoadCommand(Command); in PrintLoadCommands()
9670 MachO::section_64 S_64 = Obj->getSection64(Command, j); in PrintLoadCommands()
9676 } else if (Command.C.cmd == MachO::LC_SYMTAB) { in PrintLoadCommands()
9677 MachO::symtab_command Symtab = Obj->getSymtabLoadCommand(); in PrintLoadCommands()
9679 } else if (Command.C.cmd == MachO::LC_DYSYMTAB) { in PrintLoadCommands()
9680 MachO::dysymtab_command Dysymtab = Obj->getDysymtabLoadCommand(); in PrintLoadCommands()
9681 MachO::symtab_command Symtab = Obj->getSymtabLoadCommand(); in PrintLoadCommands()
9684 } else if (Command.C.cmd == MachO::LC_DYLD_INFO || in PrintLoadCommands()
9685 Command.C.cmd == MachO::LC_DYLD_INFO_ONLY) { in PrintLoadCommands()
9686 MachO::dyld_info_command DyldInfo = Obj->getDyldInfoLoadCommand(Command); in PrintLoadCommands()
9688 } else if (Command.C.cmd == MachO::LC_LOAD_DYLINKER || in PrintLoadCommands()
9689 Command.C.cmd == MachO::LC_ID_DYLINKER || in PrintLoadCommands()
9690 Command.C.cmd == MachO::LC_DYLD_ENVIRONMENT) { in PrintLoadCommands()
9691 MachO::dylinker_command Dyld = Obj->getDylinkerCommand(Command); in PrintLoadCommands()
9693 } else if (Command.C.cmd == MachO::LC_UUID) { in PrintLoadCommands()
9694 MachO::uuid_command Uuid = Obj->getUuidCommand(Command); in PrintLoadCommands()
9696 } else if (Command.C.cmd == MachO::LC_RPATH) { in PrintLoadCommands()
9697 MachO::rpath_command Rpath = Obj->getRpathCommand(Command); in PrintLoadCommands()
9699 } else if (Command.C.cmd == MachO::LC_VERSION_MIN_MACOSX || in PrintLoadCommands()
9700 Command.C.cmd == MachO::LC_VERSION_MIN_IPHONEOS || in PrintLoadCommands()
9701 Command.C.cmd == MachO::LC_VERSION_MIN_TVOS || in PrintLoadCommands()
9702 Command.C.cmd == MachO::LC_VERSION_MIN_WATCHOS) { in PrintLoadCommands()
9703 MachO::version_min_command Vd = Obj->getVersionMinLoadCommand(Command); in PrintLoadCommands()
9705 } else if (Command.C.cmd == MachO::LC_NOTE) { in PrintLoadCommands()
9706 MachO::note_command Nt = Obj->getNoteLoadCommand(Command); in PrintLoadCommands()
9708 } else if (Command.C.cmd == MachO::LC_BUILD_VERSION) { in PrintLoadCommands()
9709 MachO::build_version_command Bv = in PrintLoadCommands()
9712 } else if (Command.C.cmd == MachO::LC_SOURCE_VERSION) { in PrintLoadCommands()
9713 MachO::source_version_command Sd = Obj->getSourceVersionCommand(Command); in PrintLoadCommands()
9715 } else if (Command.C.cmd == MachO::LC_MAIN) { in PrintLoadCommands()
9716 MachO::entry_point_command Ep = Obj->getEntryPointCommand(Command); in PrintLoadCommands()
9718 } else if (Command.C.cmd == MachO::LC_ENCRYPTION_INFO) { in PrintLoadCommands()
9719 MachO::encryption_info_command Ei = in PrintLoadCommands()
9722 } else if (Command.C.cmd == MachO::LC_ENCRYPTION_INFO_64) { in PrintLoadCommands()
9723 MachO::encryption_info_command_64 Ei = in PrintLoadCommands()
9726 } else if (Command.C.cmd == MachO::LC_LINKER_OPTION) { in PrintLoadCommands()
9727 MachO::linker_option_command Lo = in PrintLoadCommands()
9730 } else if (Command.C.cmd == MachO::LC_SUB_FRAMEWORK) { in PrintLoadCommands()
9731 MachO::sub_framework_command Sf = Obj->getSubFrameworkCommand(Command); in PrintLoadCommands()
9733 } else if (Command.C.cmd == MachO::LC_SUB_UMBRELLA) { in PrintLoadCommands()
9734 MachO::sub_umbrella_command Sf = Obj->getSubUmbrellaCommand(Command); in PrintLoadCommands()
9736 } else if (Command.C.cmd == MachO::LC_SUB_LIBRARY) { in PrintLoadCommands()
9737 MachO::sub_library_command Sl = Obj->getSubLibraryCommand(Command); in PrintLoadCommands()
9739 } else if (Command.C.cmd == MachO::LC_SUB_CLIENT) { in PrintLoadCommands()
9740 MachO::sub_client_command Sc = Obj->getSubClientCommand(Command); in PrintLoadCommands()
9742 } else if (Command.C.cmd == MachO::LC_ROUTINES) { in PrintLoadCommands()
9743 MachO::routines_command Rc = Obj->getRoutinesCommand(Command); in PrintLoadCommands()
9745 } else if (Command.C.cmd == MachO::LC_ROUTINES_64) { in PrintLoadCommands()
9746 MachO::routines_command_64 Rc = Obj->getRoutinesCommand64(Command); in PrintLoadCommands()
9748 } else if (Command.C.cmd == MachO::LC_THREAD || in PrintLoadCommands()
9749 Command.C.cmd == MachO::LC_UNIXTHREAD) { in PrintLoadCommands()
9750 MachO::thread_command Tc = Obj->getThreadCommand(Command); in PrintLoadCommands()
9752 } else if (Command.C.cmd == MachO::LC_LOAD_DYLIB || in PrintLoadCommands()
9753 Command.C.cmd == MachO::LC_ID_DYLIB || in PrintLoadCommands()
9754 Command.C.cmd == MachO::LC_LOAD_WEAK_DYLIB || in PrintLoadCommands()
9755 Command.C.cmd == MachO::LC_REEXPORT_DYLIB || in PrintLoadCommands()
9756 Command.C.cmd == MachO::LC_LAZY_LOAD_DYLIB || in PrintLoadCommands()
9757 Command.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB) { in PrintLoadCommands()
9758 MachO::dylib_command Dl = Obj->getDylibIDLoadCommand(Command); in PrintLoadCommands()
9760 } else if (Command.C.cmd == MachO::LC_CODE_SIGNATURE || in PrintLoadCommands()
9761 Command.C.cmd == MachO::LC_SEGMENT_SPLIT_INFO || in PrintLoadCommands()
9762 Command.C.cmd == MachO::LC_FUNCTION_STARTS || in PrintLoadCommands()
9763 Command.C.cmd == MachO::LC_DATA_IN_CODE || in PrintLoadCommands()
9764 Command.C.cmd == MachO::LC_DYLIB_CODE_SIGN_DRS || in PrintLoadCommands()
9765 Command.C.cmd == MachO::LC_LINKER_OPTIMIZATION_HINT) { in PrintLoadCommands()
9766 MachO::linkedit_data_command Ld = in PrintLoadCommands()
9781 MachO::mach_header_64 H_64; in PrintMachHeader()
9786 MachO::mach_header H; in PrintMachHeader()
9803 MachO::mach_header_64 H_64; in printMachOLoadCommands()
9808 MachO::mach_header H; in printMachOLoadCommands()
9823 if (Command.C.cmd == MachO::LC_SEGMENT) { in printMachOExportsTrie()
9824 MachO::segment_command Seg = Obj->getSegmentLoadCommand(Command); in printMachOExportsTrie()
9829 } else if (Command.C.cmd == MachO::LC_SEGMENT_64) { in printMachOExportsTrie()
9830 MachO::segment_command_64 Seg = Obj->getSegment64LoadCommand(Command); in printMachOExportsTrie()
9840 bool ReExport = (Flags & MachO::EXPORT_SYMBOL_FLAGS_REEXPORT); in printMachOExportsTrie()
9841 bool WeakDef = (Flags & MachO::EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION); in printMachOExportsTrie()
9842 bool ThreadLocal = ((Flags & MachO::EXPORT_SYMBOL_FLAGS_KIND_MASK) == in printMachOExportsTrie()
9843 MachO::EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL); in printMachOExportsTrie()
9844 bool Abs = ((Flags & MachO::EXPORT_SYMBOL_FLAGS_KIND_MASK) == in printMachOExportsTrie()
9845 MachO::EXPORT_SYMBOL_FLAGS_KIND_ABSOLUTE); in printMachOExportsTrie()
9846 bool Resolver = (Flags & MachO::EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER); in printMachOExportsTrie()
9919 case MachO::BIND_SPECIAL_DYLIB_SELF: in ordinalName()
9921 case MachO::BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE: in ordinalName()
9923 case MachO::BIND_SPECIAL_DYLIB_FLAT_LOOKUP: in ordinalName()
9954 if (Entry.flags() & MachO::BIND_SYMBOL_FLAGS_WEAK_IMPORT) in printMachOBindTable()
10003 if (Entry.flags() & MachO::BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION) { in printMachOWeakBindTable()