• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/tools/llvm-objdump/

Lines Matching defs:MachO

9 // This file implements the MachO-specific dumper for llvm-objdump.
20 #include "llvm/BinaryFormat/MachO.h"
35 #include "llvm/Object/MachO.h"
65 cl::OptionCategory objdump::MachOCat("llvm-objdump MachO Specific Options");
195 // We've inferred a 32-bit ARM target from the object file. All MachO CPUs
297 case MachO::DICE_KIND_DATA:
317 if (Kind == MachO::DICE_KIND_DATA)
322 case MachO::DICE_KIND_JUMP_TABLE8:
329 case MachO::DICE_KIND_JUMP_TABLE16:
337 case MachO::DICE_KIND_JUMP_TABLE32:
338 case MachO::DICE_KIND_ABS_JUMP_TABLE32:
343 if (Kind == MachO::DICE_KIND_JUMP_TABLE32)
370 if (Command.C.cmd == MachO::LC_FUNCTION_STARTS) {
373 MachO::linkedit_data_command LLC =
377 } else if (Command.C.cmd == MachO::LC_SEGMENT) {
378 MachO::segment_command SLC = MachOObj->getSegmentLoadCommand(Command);
384 } else if (Command.C.cmd == MachO::LC_SEGMENT_64) {
385 MachO::segment_command_64 SLC = MachOObj->getSegment64LoadCommand(Command);
410 if ((Kind == MachO::DICE_KIND_JUMP_TABLE8) &&
419 const MachO::any_relocation_info &RE,
456 if (O->getAnyRelocationType(RE) == MachO::ARM64_RELOC_ADDEND) {
494 MachO::any_relocation_info RE = Obj->getRelocation(Rel);
509 case MachO::X86_64_RELOC_GOT_LOAD:
510 case MachO::X86_64_RELOC_GOT: {
517 case MachO::X86_64_RELOC_SUBTRACTOR: {
520 MachO::any_relocation_info RENext = Obj->getRelocation(RelNext);
526 if (RType != MachO::X86_64_RELOC_UNSIGNED)
537 case MachO::X86_64_RELOC_TLV:
543 case MachO::X86_64_RELOC_SIGNED_1:
547 case MachO::X86_64_RELOC_SIGNED_2:
551 case MachO::X86_64_RELOC_SIGNED_4:
564 case MachO::GENERIC_RELOC_PAIR: // prints no info
566 case MachO::GENERIC_RELOC_SECTDIFF: {
569 MachO::any_relocation_info RENext = Obj->getRelocation(RelNext);
575 if (RType != MachO::GENERIC_RELOC_PAIR)
588 case MachO::GENERIC_RELOC_LOCAL_SECTDIFF: {
591 MachO::any_relocation_info RENext = Obj->getRelocation(RelNext);
596 if (RType != MachO::GENERIC_RELOC_PAIR)
605 case MachO::GENERIC_RELOC_TLV: {
617 case MachO::ARM_RELOC_HALF:
618 case MachO::ARM_RELOC_HALF_SECTDIFF: {
631 MachO::any_relocation_info RENext = Obj->getRelocation(RelNext);
636 if (RType != MachO::ARM_RELOC_PAIR)
647 if (Type == MachO::ARM_RELOC_HALF_SECTDIFF) {
671 MachO::dysymtab_command Dysymtab = O->getDysymtabLoadCommand();
681 if (cputype & MachO::CPU_ARCH_ABI64)
690 if (cputype & MachO::CPU_ARCH_ABI64)
694 MachO::dysymtab_command Dysymtab = O->getDysymtabLoadCommand();
696 if (indirect_symbol == MachO::INDIRECT_SYMBOL_LOCAL) {
701 (MachO::INDIRECT_SYMBOL_LOCAL | MachO::INDIRECT_SYMBOL_ABS)) {
705 if (indirect_symbol == MachO::INDIRECT_SYMBOL_ABS) {
711 MachO::symtab_command Symtab = O->getSymtabLoadCommand();
726 if (Load.C.cmd == MachO::LC_SEGMENT_64) {
727 MachO::segment_command_64 Seg = O->getSegment64LoadCommand(Load);
729 MachO::section_64 Sec = O->getSection64(Load, J);
730 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE;
731 if (section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS ||
732 section_type == MachO::S_LAZY_SYMBOL_POINTERS ||
733 section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS ||
734 section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS ||
735 section_type == MachO::S_SYMBOL_STUBS) {
737 if (section_type == MachO::S_SYMBOL_STUBS)
754 } else if (Load.C.cmd == MachO::LC_SEGMENT) {
755 MachO::segment_command Seg = O->getSegmentLoadCommand(Load);
757 MachO::section Sec = O->getSection(Load, J);
758 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE;
759 if (section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS ||
760 section_type == MachO::S_LAZY_SYMBOL_POINTERS ||
761 section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS ||
762 section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS ||
763 section_type == MachO::S_SYMBOL_STUBS) {
765 if (section_type == MachO::S_SYMBOL_STUBS)
813 case MachO::CPU_TYPE_I386:
816 case MachO::CPU_TYPE_X86_64:
819 case MachO::CPU_TYPE_ARM:
822 case MachO::CPU_TYPE_ARM64:
823 case MachO::CPU_TYPE_ARM64_32:
833 if (cputype == MachO::CPU_TYPE_ARM &&
834 (r_type == MachO::ARM_RELOC_HALF ||
835 r_type == MachO::ARM_RELOC_HALF_SECTDIFF || previous_arm_half == true)) {
856 if (cputype == MachO::CPU_TYPE_X86_64)
872 const MachO::symtab_command Symtab = O->getSymtabLoadCommand();
879 const MachO::any_relocation_info RE = O->getRelocation(Rel);
892 if (r_scattered && cputype != MachO::CPU_TYPE_X86_64) {
895 if ((cputype == MachO::CPU_TYPE_I386 &&
896 r_type == MachO::GENERIC_RELOC_PAIR) ||
897 (cputype == MachO::CPU_TYPE_ARM && r_type == MachO::ARM_RELOC_PAIR))
918 if ((cputype == MachO::CPU_TYPE_ARM &&
919 r_type == MachO::ARM_RELOC_PAIR))
921 } else if (cputype == MachO::CPU_TYPE_ARM &&
922 sectdiff_r_type == MachO::ARM_RELOC_HALF_SECTDIFF)
924 if ((cputype == MachO::CPU_TYPE_I386 &&
925 (r_type == MachO::GENERIC_RELOC_SECTDIFF ||
926 r_type == MachO::GENERIC_RELOC_LOCAL_SECTDIFF)) ||
927 (cputype == MachO::CPU_TYPE_ARM &&
928 (sectdiff_r_type == MachO::ARM_RELOC_SECTDIFF ||
929 sectdiff_r_type == MachO::ARM_RELOC_LOCAL_SECTDIFF ||
930 sectdiff_r_type == MachO::ARM_RELOC_HALF_SECTDIFF))) {
937 if (cputype == MachO::CPU_TYPE_ARM &&
938 (r_type == MachO::ARM_RELOC_HALF ||
939 r_type == MachO::ARM_RELOC_HALF_SECTDIFF))
955 if (cputype == MachO::CPU_TYPE_ARM && r_type == MachO::ARM_RELOC_PAIR)
997 if (cputype == MachO::CPU_TYPE_ARM && r_type == MachO::ARM_RELOC_PAIR)
999 else if ((cputype == MachO::CPU_TYPE_ARM64 ||
1000 cputype == MachO::CPU_TYPE_ARM64_32) &&
1001 r_type == MachO::ARM64_RELOC_ADDEND)
1005 if (r_symbolnum == MachO::R_ABS)
1025 if (cputype == MachO::CPU_TYPE_ARM &&
1026 (r_type == MachO::ARM_RELOC_HALF ||
1027 r_type == MachO::ARM_RELOC_HALF_SECTDIFF))
1044 const MachO::dysymtab_command Dysymtab = O->getDysymtabLoadCommand();
1062 if (Load.C.cmd == MachO::LC_SEGMENT_64) {
1063 const MachO::segment_command_64 Seg = O->getSegment64LoadCommand(Load);
1065 const MachO::section_64 Sec = O->getSection64(Load, J);
1082 } else if (Load.C.cmd == MachO::LC_SEGMENT) {
1083 const MachO::segment_command Seg = O->getSegmentLoadCommand(Load);
1085 const MachO::section Sec = O->getSection(Load, J);
1107 MachO::linkedit_data_command DIC = O->getDataInCodeLoadCommand();
1108 uint32_t nentries = DIC.datasize / sizeof(struct MachO::data_in_code_entry);
1123 case MachO::DICE_KIND_DATA:
1126 case MachO::DICE_KIND_JUMP_TABLE8:
1129 case MachO::DICE_KIND_JUMP_TABLE16:
1132 case MachO::DICE_KIND_JUMP_TABLE32:
1135 case MachO::DICE_KIND_ABS_JUMP_TABLE32:
1149 MachO::linkedit_data_command LohLC = O->getLinkOptHintsLoadCommand();
1208 if ((JustId && Load.C.cmd == MachO::LC_ID_DYLIB) ||
1209 (!JustId && (Load.C.cmd == MachO::LC_ID_DYLIB ||
1210 Load.C.cmd == MachO::LC_LOAD_DYLIB ||
1211 Load.C.cmd == MachO::LC_LOAD_WEAK_DYLIB ||
1212 Load.C.cmd == MachO::LC_REEXPORT_DYLIB ||
1213 Load.C.cmd == MachO::LC_LAZY_LOAD_DYLIB ||
1214 Load.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB))) {
1215 MachO::dylib_command dl = O->getDylibIDLoadCommand(Load);
1230 if (Load.C.cmd == MachO::LC_LOAD_WEAK_DYLIB)
1232 if (Load.C.cmd == MachO::LC_REEXPORT_DYLIB)
1234 if (Load.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB)
1236 if (Load.C.cmd == MachO::LC_LAZY_LOAD_DYLIB)
1242 if (Load.C.cmd == MachO::LC_ID_DYLIB)
1244 else if (Load.C.cmd == MachO::LC_LOAD_DYLIB)
1246 else if (Load.C.cmd == MachO::LC_LOAD_WEAK_DYLIB)
1248 else if (Load.C.cmd == MachO::LC_LAZY_LOAD_DYLIB)
1250 else if (Load.C.cmd == MachO::LC_REEXPORT_DYLIB)
1252 else if (Load.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB)
1446 const MachO::section_64 Sec = O->getSection64(Ref);
1447 section_type = Sec.flags & MachO::SECTION_TYPE;
1449 const MachO::section Sec = O->getSection(Ref);
1450 section_type = Sec.flags & MachO::SECTION_TYPE;
1452 if (section_type == MachO::S_CSTRING_LITERALS ||
1453 section_type == MachO::S_4BYTE_LITERALS ||
1454 section_type == MachO::S_8BYTE_LITERALS ||
1455 section_type == MachO::S_16BYTE_LITERALS)
1466 MachO::any_relocation_info RE;
1536 const MachO::section_64 Sec = O->getSection64(Ref);
1537 section_type = Sec.flags & MachO::SECTION_TYPE;
1539 const MachO::section Sec = O->getSection(Ref);
1540 section_type = Sec.flags & MachO::SECTION_TYPE;
1548 case MachO::S_CSTRING_LITERALS:
1555 case MachO::S_4BYTE_LITERALS:
1566 case MachO::S_8BYTE_LITERALS: {
1581 case MachO::S_16BYTE_LITERALS: {
1616 MachO::any_relocation_info RE;
1670 if (cputype == MachO::CPU_TYPE_I386 || cputype == MachO::CPU_TYPE_X86_64) {
1757 const MachO::section_64 Sec = O->getSection64(Ref);
1761 const MachO::section Sec = O->getSection(Ref);
1764 uint32_t section_type = section_flags & MachO::SECTION_TYPE;
1777 if ((section_flags & MachO::S_ATTR_PURE_INSTRUCTIONS) ||
1778 (section_flags & MachO::S_ATTR_SOME_INSTRUCTIONS)) {
1798 case MachO::S_REGULAR:
1801 case MachO::S_ZEROFILL:
1804 case MachO::S_CSTRING_LITERALS:
1807 case MachO::S_4BYTE_LITERALS:
1810 case MachO::S_8BYTE_LITERALS:
1813 case MachO::S_16BYTE_LITERALS:
1816 case MachO::S_LITERAL_POINTERS:
1820 case MachO::S_MOD_INIT_FUNC_POINTERS:
1821 case MachO::S_MOD_TERM_FUNC_POINTERS:
1832 if (section_type == MachO::S_ZEROFILL)
1872 auto *MachO = dyn_cast<MachOObjectFile>(O);
1874 if (!MachO || ArchAll || ArchFlags.empty())
1877 MachO::mach_header H;
1878 MachO::mach_header_64 H_64;
1881 if (MachO->is64Bit()) {
1882 H_64 = MachO->MachOObjectFile::getHeader64();
1886 H = MachO->MachOObjectFile::getHeader();
1961 if (MachOOF->getHeader().filetype == MachO::MH_KEXT_BUNDLE &&
1962 MachOOF->getHeader().cputype == MachO::CPU_TYPE_ARM64)
2029 case MachO::CPU_TYPE_I386:
2031 case MachO::CPU_SUBTYPE_I386_ALL:
2040 case MachO::CPU_TYPE_X86_64:
2042 case MachO::CPU_SUBTYPE_X86_64_ALL:
2046 case MachO::CPU_SUBTYPE_X86_64_H:
2055 case MachO::CPU_TYPE_ARM:
2057 case MachO::CPU_SUBTYPE_ARM_ALL:
2061 case MachO::CPU_SUBTYPE_ARM_V4T:
2065 case MachO::CPU_SUBTYPE_ARM_V5TEJ:
2069 case MachO::CPU_SUBTYPE_ARM_XSCALE:
2073 case MachO::CPU_SUBTYPE_ARM_V6:
2077 case MachO::CPU_SUBTYPE_ARM_V6M:
2081 case MachO::CPU_SUBTYPE_ARM_V7:
2085 case MachO::CPU_SUBTYPE_ARM_V7EM:
2089 case MachO::CPU_SUBTYPE_ARM_V7K:
2093 case MachO::CPU_SUBTYPE_ARM_V7M:
2097 case MachO::CPU_SUBTYPE_ARM_V7S:
2106 case MachO::CPU_TYPE_ARM64:
2107 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) {
2108 case MachO::CPU_SUBTYPE_ARM64_ALL:
2112 case MachO::CPU_SUBTYPE_ARM64E:
2121 case MachO::CPU_TYPE_ARM64_32:
2122 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) {
2123 case MachO::CPU_SUBTYPE_ARM64_32_V8:
2142 if (UB->getMagic() == MachO::FAT_MAGIC)
2144 else // UB->getMagic() == MachO::FAT_MAGIC_64
2147 outs() << "fat_magic " << format("0x%" PRIx32, MachO::FAT_MAGIC) << "\n";
2152 uint64_t big_size = sizeof(struct MachO::fat_header) +
2153 nfat_arch * sizeof(struct MachO::fat_arch);
2172 (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) ==
2173 (other_cpusubtype & ~MachO::CPU_SUBTYPE_MASK)) {
2180 printCPUType(cputype, cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
2184 outs() << " cpusubtype " << (cpusubtype & ~MachO::CPU_SUBTYPE_MASK)
2188 (cpusubtype & MachO::CPU_SUBTYPE_MASK) == MachO::CPU_SUBTYPE_LIB64)
2193 (cpusubtype & MachO::CPU_SUBTYPE_MASK) >> 24) << "\n";
2616 if (info->O->getHeader().filetype != MachO::MH_OBJECT) {
2629 MachO::any_relocation_info RE;
2643 if (r_type == MachO::GENERIC_RELOC_SECTDIFF ||
2644 r_type == MachO::GENERIC_RELOC_LOCAL_SECTDIFF) {
2647 MachO::any_relocation_info RENext;
2673 if (reloc_found && (r_type == MachO::GENERIC_RELOC_SECTDIFF ||
2674 r_type == MachO::GENERIC_RELOC_LOCAL_SECTDIFF)) {
2699 if (info->O->getHeader().filetype != MachO::MH_OBJECT) {
2703 MachO::any_relocation_info RE;
2741 MachO::any_relocation_info RE;
2768 if (Type == MachO::X86_64_RELOC_SUBTRACTOR) {
2771 MachO::any_relocation_info RENext = info->O->getRelocation(RelNext);
2775 if (TypeNext == MachO::X86_64_RELOC_UNSIGNED && isExternNext) {
2794 if (info->O->getHeader().filetype != MachO::MH_OBJECT) {
2806 MachO::any_relocation_info RE;
2835 if (r_type == MachO::ARM_RELOC_HALF ||
2836 r_type == MachO::ARM_RELOC_SECTDIFF ||
2837 r_type == MachO::ARM_RELOC_LOCAL_SECTDIFF ||
2838 r_type == MachO::ARM_RELOC_HALF_SECTDIFF) {
2841 MachO::any_relocation_info RENext;
2854 case MachO::ARM_RELOC_HALF:
2872 if (isExtern == 0 && (r_type == MachO::ARM_RELOC_BR24 ||
2873 r_type == MachO::ARM_THUMB_RELOC_BR22))
2877 if (r_type == MachO::ARM_RELOC_HALF ||
2878 r_type == MachO::ARM_RELOC_HALF_SECTDIFF) {
2884 if (r_scattered && (r_type != MachO::ARM_RELOC_HALF &&
2885 r_type != MachO::ARM_RELOC_HALF_SECTDIFF)) {
2890 if (r_type == MachO::ARM_RELOC_HALF_SECTDIFF) {
2914 if (r_type == MachO::ARM_RELOC_HALF) {
2931 if (info->O->getHeader().filetype != MachO::MH_OBJECT) {
2952 MachO::any_relocation_info RE = info->O->getRelocation(Rel);
2954 if (r_type == MachO::ARM64_RELOC_ADDEND) {
2957 MachO::any_relocation_info RENext = info->O->getRelocation(RelNext);
2973 case MachO::ARM64_RELOC_PAGE21:
2977 case MachO::ARM64_RELOC_PAGEOFF12:
2981 case MachO::ARM64_RELOC_GOT_LOAD_PAGE21:
2985 case MachO::ARM64_RELOC_GOT_LOAD_PAGEOFF12:
2989 case MachO::ARM64_RELOC_TLVP_LOAD_PAGE21:
2993 case MachO::ARM64_RELOC_TLVP_LOAD_PAGEOFF12:
2998 case MachO::ARM64_RELOC_BRANCH26:
3013 if (Load.C.cmd == MachO::LC_SEGMENT_64) {
3014 MachO::segment_command_64 Seg = info->O->getSegment64LoadCommand(Load);
3016 MachO::section_64 Sec = info->O->getSection64(Load, J);
3017 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE;
3018 if (section_type == MachO::S_CSTRING_LITERALS &&
3034 } else if (Load.C.cmd == MachO::LC_SEGMENT) {
3035 MachO::segment_command Seg = info->O->getSegmentLoadCommand(Load);
3037 MachO::section Sec = info->O->getSection(Load, J);
3038 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE;
3039 if (section_type == MachO::S_CSTRING_LITERALS &&
3066 MachO::dysymtab_command Dysymtab = info->O->getDysymtabLoadCommand();
3067 MachO::symtab_command Symtab = info->O->getSymtabLoadCommand();
3069 if (Load.C.cmd == MachO::LC_SEGMENT_64) {
3070 MachO::segment_command_64 Seg = info->O->getSegment64LoadCommand(Load);
3072 MachO::section_64 Sec = info->O->getSection64(Load, J);
3073 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE;
3074 if ((section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS ||
3075 section_type == MachO::S_LAZY_SYMBOL_POINTERS ||
3076 section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS ||
3077 section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS ||
3078 section_type == MachO::S_SYMBOL_STUBS) &&
3082 if (section_type == MachO::S_SYMBOL_STUBS)
3100 } else if (Load.C.cmd == MachO::LC_SEGMENT) {
3101 MachO::segment_command Seg = info->O->getSegmentLoadCommand(Load);
3103 MachO::section Sec = info->O->getSection(Load, J);
3104 uint32_t section_type = Sec.flags & MachO::SECTION_TYPE;
3105 if ((section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS ||
3106 section_type == MachO::S_LAZY_SYMBOL_POINTERS ||
3107 section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS ||
3108 section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS ||
3109 section_type == MachO::S_SYMBOL_STUBS) &&
3113 if (section_type == MachO::S_SYMBOL_STUBS)
3220 if (Load.C.cmd == MachO::LC_SEGMENT_64) {
3221 MachO::segment_command_64 Seg = info->O->getSegment64LoadCommand(Load);
3223 MachO::section_64 Sec = info->O->getSection64(Load, J);
3333 MachO::any_relocation_info RE;
3392 // public defintions. So the are here not in include/llvm/BinaryFormat/MachO.h
6844 MachO::mach_header H;
6846 if (H.cputype == MachO::CPU_TYPE_ARM)
6883 if (info->O->getHeader().filetype == MachO::MH_OBJECT) {
6888 MachO::any_relocation_info RE;
6912 if (Type == MachO::X86_64_RELOC_SIGNED) {
7297 MachO::mach_header Header = MachOOF->getHeader();
7316 if (Header.filetype == MachO::MH_OBJECT)
7388 const MachO::mach_header_64 H_64 = MachOOF->getHeader64();
7392 const MachO::mach_header H = MachOOF->getHeader();
8239 if (magic == MachO::MH_MAGIC)
8241 else if (magic == MachO::MH_MAGIC_64)
8246 case MachO::CPU_TYPE_I386:
8248 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) {
8249 case MachO::CPU_SUBTYPE_I386_ALL:
8253 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
8257 case MachO::CPU_TYPE_X86_64:
8259 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) {
8260 case MachO::CPU_SUBTYPE_X86_64_ALL:
8263 case MachO::CPU_SUBTYPE_X86_64_H:
8267 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
8271 case MachO::CPU_TYPE_ARM:
8273 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) {
8274 case MachO::CPU_SUBTYPE_ARM_ALL:
8277 case MachO::CPU_SUBTYPE_ARM_V4T:
8280 case MachO::CPU_SUBTYPE_ARM_V5TEJ:
8283 case MachO::CPU_SUBTYPE_ARM_XSCALE:
8286 case MachO::CPU_SUBTYPE_ARM_V6:
8289 case MachO::CPU_SUBTYPE_ARM_V6M:
8292 case MachO::CPU_SUBTYPE_ARM_V7:
8295 case MachO::CPU_SUBTYPE_ARM_V7EM:
8298 case MachO::CPU_SUBTYPE_ARM_V7K:
8301 case MachO::CPU_SUBTYPE_ARM_V7M:
8304 case MachO::CPU_SUBTYPE_ARM_V7S:
8308 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
8312 case MachO::CPU_TYPE_ARM64:
8314 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) {
8315 case MachO::CPU_SUBTYPE_ARM64_ALL:
8318 case MachO::CPU_SUBTYPE_ARM64E:
8322 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
8326 case MachO::CPU_TYPE_ARM64_32:
8328 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) {
8329 case MachO::CPU_SUBTYPE_ARM64_32_V8:
8333 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
8337 case MachO::CPU_TYPE_POWERPC:
8339 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) {
8340 case MachO::CPU_SUBTYPE_POWERPC_ALL:
8344 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
8348 case MachO::CPU_TYPE_POWERPC64:
8350 switch (cpusubtype & ~MachO::CPU_SUBTYPE_MASK) {
8351 case MachO::CPU_SUBTYPE_POWERPC_ALL:
8355 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
8361 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
8364 if ((cpusubtype & MachO::CPU_SUBTYPE_MASK) == MachO::CPU_SUBTYPE_LIB64) {
8368 (cpusubtype & MachO::CPU_SUBTYPE_MASK) >> 24);
8371 case MachO::MH_OBJECT:
8374 case MachO::MH_EXECUTE:
8377 case MachO::MH_FVMLIB:
8380 case MachO::MH_CORE:
8383 case MachO::MH_PRELOAD:
8386 case MachO::MH_DYLIB:
8389 case MachO::MH_DYLIB_STUB:
8392 case MachO::MH_DYLINKER:
8395 case MachO::MH_BUNDLE:
8398 case MachO::MH_DSYM:
8401 case MachO::MH_KEXT_BUNDLE:
8411 if (f & MachO::MH_NOUNDEFS) {
8413 f &= ~MachO::MH_NOUNDEFS;
8415 if (f & MachO::MH_INCRLINK) {
8417 f &= ~MachO::MH_INCRLINK;
8419 if (f & MachO::MH_DYLDLINK) {
8421 f &= ~MachO::MH_DYLDLINK;
8423 if (f & MachO::MH_BINDATLOAD) {
8425 f &= ~MachO::MH_BINDATLOAD;
8427 if (f & MachO::MH_PREBOUND) {
8429 f &= ~MachO::MH_PREBOUND;
8431 if (f & MachO::MH_SPLIT_SEGS) {
8433 f &= ~MachO::MH_SPLIT_SEGS;
8435 if (f & MachO::MH_LAZY_INIT) {
8437 f &= ~MachO::MH_LAZY_INIT;
8439 if (f & MachO::MH_TWOLEVEL) {
8441 f &= ~MachO::MH_TWOLEVEL;
8443 if (f & MachO::MH_FORCE_FLAT) {
8445 f &= ~MachO::MH_FORCE_FLAT;
8447 if (f & MachO::MH_NOMULTIDEFS) {
8449 f &= ~MachO::MH_NOMULTIDEFS;
8451 if (f & MachO::MH_NOFIXPREBINDING) {
8453 f &= ~MachO::MH_NOFIXPREBINDING;
8455 if (f & MachO::MH_PREBINDABLE) {
8457 f &= ~MachO::MH_PREBINDABLE;
8459 if (f & MachO::MH_ALLMODSBOUND) {
8461 f &= ~MachO::MH_ALLMODSBOUND;
8463 if (f & MachO::MH_SUBSECTIONS_VIA_SYMBOLS) {
8465 f &= ~MachO::MH_SUBSECTIONS_VIA_SYMBOLS;
8467 if (f & MachO::MH_CANONICAL) {
8469 f &= ~MachO::MH_CANONICAL;
8471 if (f & MachO::MH_WEAK_DEFINES) {
8473 f &= ~MachO::MH_WEAK_DEFINES;
8475 if (f & MachO::MH_BINDS_TO_WEAK) {
8477 f &= ~MachO::MH_BINDS_TO_WEAK;
8479 if (f & MachO::MH_ALLOW_STACK_EXECUTION) {
8481 f &= ~MachO::MH_ALLOW_STACK_EXECUTION;
8483 if (f & MachO::MH_DEAD_STRIPPABLE_DYLIB) {
8485 f &= ~MachO::MH_DEAD_STRIPPABLE_DYLIB;
8487 if (f & MachO::MH_PIE) {
8489 f &= ~MachO::MH_PIE;
8491 if (f & MachO::MH_NO_REEXPORTED_DYLIBS) {
8493 f &= ~MachO::MH_NO_REEXPORTED_DYLIBS;
8495 if (f & MachO::MH_HAS_TLV_DESCRIPTORS) {
8497 f &= ~MachO::MH_HAS_TLV_DESCRIPTORS;
8499 if (f & MachO::MH_NO_HEAP_EXECUTION) {
8501 f &= ~MachO::MH_NO_HEAP_EXECUTION;
8503 if (f & MachO::MH_APP_EXTENSION_SAFE) {
8505 f &= ~MachO::MH_APP_EXTENSION_SAFE;
8507 if (f & MachO::MH_NLIST_OUTOFSYNC_WITH_DYLDINFO) {
8509 f &= ~MachO::MH_NLIST_OUTOFSYNC_WITH_DYLDINFO;
8516 outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
8518 (cpusubtype & MachO::CPU_SUBTYPE_MASK) >> 24);
8535 if (cmd == MachO::LC_SEGMENT) {
8538 expected_cmdsize *= sizeof(struct MachO::section);
8539 expected_cmdsize += sizeof(struct MachO::segment_command);
8543 expected_cmdsize *= sizeof(struct MachO::section_64);
8544 expected_cmdsize += sizeof(struct MachO::segment_command_64);
8552 if (cmd == MachO::LC_SEGMENT_64) {
8571 ~(MachO::VM_PROT_READ | MachO::VM_PROT_WRITE |
8572 MachO::VM_PROT_EXECUTE)) != 0)
8576 outs() << ((maxprot & MachO::VM_PROT_READ) ? "r" : "-");
8577 outs() << ((maxprot & MachO::VM_PROT_WRITE) ? "w" : "-");
8578 outs() << ((maxprot & MachO::VM_PROT_EXECUTE) ? "x\n" : "-\n");
8581 ~(MachO::VM_PROT_READ | MachO::VM_PROT_WRITE |
8582 MachO::VM_PROT_EXECUTE)) != 0)
8586 outs() << ((initprot & MachO::VM_PROT_READ) ? "r" : "-");
8587 outs() << ((initprot & MachO::VM_PROT_WRITE) ? "w" : "-");
8588 outs() << ((initprot & MachO::VM_PROT_EXECUTE) ? "x\n" : "-\n");
8600 if (flags & MachO::SG_HIGHVM) {
8602 flags &= ~MachO::SG_HIGHVM;
8604 if (flags & MachO::SG_FVMLIB) {
8606 flags &= ~MachO::SG_FVMLIB;
8608 if (flags & MachO::SG_NORELOC) {
8610 flags &= ~MachO::SG_NORELOC;
8612 if (flags & MachO::SG_PROTECTED_VERSION_1) {
8614 flags &= ~MachO::SG_PROTECTED_VERSION_1;
8636 if (filetype != MachO::MH_OBJECT && strncmp(sg_segname, segname, 16) != 0)
8640 if (cmd == MachO::LC_SEGMENT_64) {
8647 if ((flags & MachO::S_ZEROFILL) != 0 && offset + size > object_size)
8664 if (reloff + nreloc * sizeof(struct MachO::relocation_info) > object_size)
8668 uint32_t section_type = flags & MachO::SECTION_TYPE;
8671 if (section_type == MachO::S_REGULAR)
8673 else if (section_type == MachO::S_ZEROFILL)
8675 else if (section_type == MachO::S_CSTRING_LITERALS)
8677 else if (section_type == MachO::S_4BYTE_LITERALS)
8679 else if (section_type == MachO::S_8BYTE_LITERALS)
8681 else if (section_type == MachO::S_16BYTE_LITERALS)
8683 else if (section_type == MachO::S_LITERAL_POINTERS)
8685 else if (section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS)
8687 else if (section_type == MachO::S_LAZY_SYMBOL_POINTERS)
8689 else if (section_type == MachO::S_SYMBOL_STUBS)
8691 else if (section_type == MachO::S_MOD_INIT_FUNC_POINTERS)
8693 else if (section_type == MachO::S_MOD_TERM_FUNC_POINTERS)
8695 else if (section_type == MachO::S_COALESCED)
8697 else if (section_type == MachO::S_INTERPOSING)
8699 else if (section_type == MachO::S_DTRACE_DOF)
8701 else if (section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS)
8703 else if (section_type == MachO::S_THREAD_LOCAL_REGULAR)
8705 else if (section_type == MachO::S_THREAD_LOCAL_ZEROFILL)
8707 else if (section_type == MachO::S_THREAD_LOCAL_VARIABLES)
8709 else if (section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS)
8711 else if (section_type == MachO::S_THREAD_LOCAL_INIT_FUNCTION_POINTERS)
8716 uint32_t section_attributes = flags & MachO::SECTION_ATTRIBUTES;
8717 if (section_attributes & MachO::S_ATTR_PURE_INSTRUCTIONS)
8719 if (section_attributes & MachO::S_ATTR_NO_TOC)
8721 if (section_attributes & MachO::S_ATTR_STRIP_STATIC_SYMS)
8723 if (section_attributes & MachO::S_ATTR_NO_DEAD_STRIP)
8725 if (section_attributes & MachO::S_ATTR_LIVE_SUPPORT)
8727 if (section_attributes & MachO::S_ATTR_SELF_MODIFYING_CODE)
8729 if (section_attributes & MachO::S_ATTR_DEBUG)
8731 if (section_attributes & MachO::S_ATTR_SOME_INSTRUCTIONS)
8733 if (section_attributes & MachO::S_ATTR_EXT_RELOC)
8735 if (section_attributes & MachO::S_ATTR_LOC_RELOC)
8743 if (section_type == MachO::S_SYMBOL_STUBS ||
8744 section_type == MachO::S_LAZY_SYMBOL_POINTERS ||
8745 section_type == MachO::S_LAZY_DYLIB_SYMBOL_POINTERS ||
8746 section_type == MachO::S_NON_LAZY_SYMBOL_POINTERS ||
8747 section_type == MachO::S_THREAD_LOCAL_VARIABLE_POINTERS)
8752 if (section_type == MachO::S_SYMBOL_STUBS)
8758 static void PrintSymtabLoadCommand(MachO::symtab_command st, bool Is64Bit,
8762 if (st.cmdsize != sizeof(struct MachO::symtab_command))
8775 big_size *= sizeof(struct MachO::nlist_64);
8783 big_size *= sizeof(struct MachO::nlist);
8804 static void PrintDysymtabLoadCommand(MachO::dysymtab_command dyst,
8809 if (dyst.cmdsize != sizeof(struct MachO::dysymtab_command))
8857 big_size *= sizeof(struct MachO::dylib_table_of_contents);
8872 modtabend *= sizeof(struct MachO::dylib_module_64);
8876 modtabend *= sizeof(struct MachO::dylib_module);
8890 big_size *= sizeof(struct MachO::dylib_reference);
8916 big_size *= sizeof(struct MachO::relocation_info);
8929 big_size *= sizeof(struct MachO::relocation_info);
8937 static void PrintDyldInfoLoadCommand(MachO::dyld_info_command dc,
8939 if (dc.cmd == MachO::LC_DYLD_INFO)
8944 if (dc.cmdsize != sizeof(struct MachO::dyld_info_command))
9011 static void PrintDyldLoadCommand(MachO::dylinker_command dyld,
9013 if (dyld.cmd == MachO::LC_ID_DYLINKER)
9015 else if (dyld.cmd == MachO::LC_LOAD_DYLINKER)
9017 else if (dyld.cmd == MachO::LC_DYLD_ENVIRONMENT)
9022 if (dyld.cmdsize < sizeof(struct MachO::dylinker_command))
9034 static void PrintUuidLoadCommand(MachO::uuid_command uuid) {
9037 if (uuid.cmdsize != sizeof(struct MachO::uuid_command))
9050 static void PrintRpathLoadCommand(MachO::rpath_command rpath, const char *Ptr) {
9053 if (rpath.cmdsize < sizeof(struct MachO::rpath_command))
9065 static void PrintVersionMinLoadCommand(MachO::version_min_command vd) {
9068 case MachO::LC_VERSION_MIN_MACOSX:
9071 case MachO::LC_VERSION_MIN_IPHONEOS:
9074 case MachO::LC_VERSION_MIN_TVOS:
9077 case MachO::LC_VERSION_MIN_WATCHOS:
9086 if (vd.cmdsize != sizeof(struct MachO::version_min_command))
9110 static void PrintNoteLoadCommand(MachO::note_command Nt) {
9113 if (Nt.cmdsize != sizeof(struct MachO::note_command))
9123 static void PrintBuildToolVersion(MachO::build_tool_version bv) {
9130 MachO::build_version_command bd) {
9134 sizeof(struct MachO::build_version_command) +
9135 bd.ntools * sizeof(struct MachO::build_tool_version))
9150 MachO::build_tool_version bv = obj->getBuildToolVersion(i);
9155 static void PrintSourceVersionCommand(MachO::source_version_command sd) {
9158 if (sd.cmdsize != sizeof(struct MachO::source_version_command))
9177 static void PrintEntryPointCommand(MachO::entry_point_command ep) {
9180 if (ep.cmdsize != sizeof(struct MachO::entry_point_command))
9188 static void PrintEncryptionInfoCommand(MachO::encryption_info_command ec,
9192 if (ec.cmdsize != sizeof(struct MachO::encryption_info_command))
9209 static void PrintEncryptionInfoCommand64(MachO::encryption_info_command_64 ec,
9213 if (ec.cmdsize != sizeof(struct MachO::encryption_info_command_64))
9231 static void PrintLinkerOptionCommand(MachO::linker_option_command lo,
9235 if (lo.cmdsize < sizeof(struct MachO::linker_option_command))
9240 const char *string = Ptr + sizeof(struct MachO::linker_option_command);
9241 uint32_t left = lo.cmdsize - sizeof(struct MachO::linker_option_command);
9262 static void PrintSubFrameworkCommand(MachO::sub_framework_command sub,
9266 if (sub.cmdsize < sizeof(struct MachO::sub_framework_command))
9278 static void PrintSubUmbrellaCommand(MachO::sub_umbrella_command sub,
9282 if (sub.cmdsize < sizeof(struct MachO::sub_umbrella_command))
9294 static void PrintSubLibraryCommand(MachO::sub_library_command sub,
9298 if (sub.cmdsize < sizeof(struct MachO::sub_library_command))
9310 static void PrintSubClientCommand(MachO::sub_client_command sub,
9314 if (sub.cmdsize < sizeof(struct MachO::sub_client_command))
9326 static void PrintRoutinesCommand(MachO::routines_command r) {
9329 if (r.cmdsize != sizeof(struct MachO::routines_command))
9343 static void PrintRoutinesCommand64(MachO::routines_command_64 r) {
9346 if (r.cmdsize != sizeof(struct MachO::routines_command_64))
9360 static void Print_x86_thread_state32_t(MachO::x86_thread_state32_t &cpu32) {
9379 static void Print_x86_thread_state64_t(MachO::x86_thread_state64_t &cpu64) {
9403 static void Print_mmst_reg(MachO::mmst_reg_t &r) {
9415 static void Print_xmm_reg(MachO::xmm_reg_t &r) {
9423 static void Print_x86_float_state_t(MachO::x86_float_state64_t &fpu) {
9433 if (fpu.fpu_fcw.pc == MachO::x86_FP_PREC_24B)
9435 else if (fpu.fpu_fcw.pc == MachO::x86_FP_PREC_53B)
9437 else if (fpu.fpu_fcw.pc == MachO::x86_FP_PREC_64B)
9442 if (fpu.fpu_fcw.rc == MachO::x86_FP_RND_NEAR)
9444 else if (fpu.fpu_fcw.rc == MachO::x86_FP_RND_DOWN)
9446 else if (fpu.fpu_fcw.rc == MachO::x86_FP_RND_UP)
9448 else if (fpu.fpu_fcw.rc == MachO::x86_FP_CHOP)
9536 static void Print_x86_exception_state_t(MachO::x86_exception_state64_t &exc64) {
9542 static void Print_arm_thread_state32_t(MachO::arm_thread_state32_t &cpu32) {
9562 static void Print_arm_thread_state64_t(MachO::arm_thread_state64_t &cpu64) {
9599 static void PrintThreadCommand(MachO::thread_command t, const char *Ptr,
9601 if (t.cmd == MachO::LC_THREAD)
9603 else if (t.cmd == MachO::LC_UNIXTHREAD)
9608 if (t.cmdsize < sizeof(struct MachO::thread_command) + 2 * sizeof(uint32_t))
9613 const char *begin = Ptr + sizeof(struct MachO::thread_command);
9616 if (cputype == MachO::CPU_TYPE_I386) {
9636 if (flavor == MachO::x86_THREAD_STATE32) {
9638 if (count == MachO::x86_THREAD_STATE32_COUNT)
9643 MachO::x86_thread_state32_t cpu32;
9645 if (left >= sizeof(MachO::x86_thread_state32_t)) {
9646 memcpy(&cpu32, begin, sizeof(MachO::x86_thread_state32_t));
9647 begin += sizeof(MachO::x86_thread_state32_t);
9649 memset(&cpu32, '\0', sizeof(MachO::x86_thread_state32_t));
9656 } else if (flavor == MachO::x86_THREAD_STATE) {
9658 if (count == MachO::x86_THREAD_STATE_COUNT)
9663 struct MachO::x86_thread_state_t ts;
9665 if (left >= sizeof(MachO::x86_thread_state_t)) {
9666 memcpy(&ts, begin, sizeof(MachO::x86_thread_state_t));
9667 begin += sizeof(MachO::x86_thread_state_t);
9669 memset(&ts, '\0', sizeof(MachO::x86_thread_state_t));
9675 if (ts.tsh.flavor == MachO::x86_THREAD_STATE32) {
9677 if (ts.tsh.count == MachO::x86_THREAD_STATE32_COUNT)
9694 } else if (cputype == MachO::CPU_TYPE_X86_64) {
9714 if (flavor == MachO::x86_THREAD_STATE64) {
9716 if (count == MachO::x86_THREAD_STATE64_COUNT)
9721 MachO::x86_thread_state64_t cpu64;
9723 if (left >= sizeof(MachO::x86_thread_state64_t)) {
9724 memcpy(&cpu64, begin, sizeof(MachO::x86_thread_state64_t));
9725 begin += sizeof(MachO::x86_thread_state64_t);
9727 memset(&cpu64, '\0', sizeof(MachO::x86_thread_state64_t));
9734 } else if (flavor == MachO::x86_THREAD_STATE) {
9736 if (count == MachO::x86_THREAD_STATE_COUNT)
9741 struct MachO::x86_thread_state_t ts;
9743 if (left >= sizeof(MachO::x86_thread_state_t)) {
9744 memcpy(&ts, begin, sizeof(MachO::x86_thread_state_t));
9745 begin += sizeof(MachO::x86_thread_state_t);
9747 memset(&ts, '\0', sizeof(MachO::x86_thread_state_t));
9753 if (ts.tsh.flavor == MachO::x86_THREAD_STATE64) {
9755 if (ts.tsh.count == MachO::x86_THREAD_STATE64_COUNT)
9765 } else if (flavor == MachO::x86_FLOAT_STATE) {
9767 if (count == MachO::x86_FLOAT_STATE_COUNT)
9771 struct MachO::x86_float_state_t fs;
9773 if (left >= sizeof(MachO::x86_float_state_t)) {
9774 memcpy(&fs, begin, sizeof(MachO::x86_float_state_t));
9775 begin += sizeof(MachO::x86_float_state_t);
9777 memset(&fs, '\0', sizeof(MachO::x86_float_state_t));
9783 if (fs.fsh.flavor == MachO::x86_FLOAT_STATE64) {
9785 if (fs.fsh.count == MachO::x86_FLOAT_STATE64_COUNT)
9795 } else if (flavor == MachO::x86_EXCEPTION_STATE) {
9797 if (count == MachO::x86_EXCEPTION_STATE_COUNT)
9802 struct MachO::x86_exception_state_t es;
9804 if (left >= sizeof(MachO::x86_exception_state_t)) {
9805 memcpy(&es, begin, sizeof(MachO::x86_exception_state_t));
9806 begin += sizeof(MachO::x86_exception_state_t);
9808 memset(&es, '\0', sizeof(MachO::x86_exception_state_t));
9814 if (es.esh.flavor == MachO::x86_EXCEPTION_STATE64) {
9816 if (es.esh.count == MachO::x86_EXCEPTION_STATE64_COUNT)
9826 } else if (flavor == MachO::x86_EXCEPTION_STATE64) {
9828 if (count == MachO::x86_EXCEPTION_STATE64_COUNT)
9833 struct MachO::x86_exception_state64_t es64;
9835 if (left >= sizeof(MachO::x86_exception_state64_t)) {
9836 memcpy(&es64, begin, sizeof(MachO::x86_exception_state64_t));
9837 begin += sizeof(MachO::x86_exception_state64_t);
9839 memset(&es64, '\0', sizeof(MachO::x86_exception_state64_t));
9853 } else if (cputype == MachO::CPU_TYPE_ARM) {
9873 if (flavor == MachO::ARM_THREAD_STATE) {
9875 if (count == MachO::ARM_THREAD_STATE_COUNT)
9880 MachO::arm_thread_state32_t cpu32;
9882 if (left >= sizeof(MachO::arm_thread_state32_t)) {
9883 memcpy(&cpu32, begin, sizeof(MachO::arm_thread_state32_t));
9884 begin += sizeof(MachO::arm_thread_state32_t);
9886 memset(&cpu32, '\0', sizeof(MachO::arm_thread_state32_t));
9900 } else if (cputype == MachO::CPU_TYPE_ARM64 ||
9901 cputype == MachO::CPU_TYPE_ARM64_32) {
9921 if (flavor == MachO::ARM_THREAD_STATE64) {
9923 if (count == MachO::ARM_THREAD_STATE64_COUNT)
9928 MachO::arm_thread_state64_t cpu64;
9930 if (left >= sizeof(MachO::arm_thread_state64_t)) {
9931 memcpy(&cpu64, begin, sizeof(MachO::arm_thread_state64_t));
9932 begin += sizeof(MachO::arm_thread_state64_t);
9934 memset(&cpu64, '\0', sizeof(MachO::arm_thread_state64_t));
9976 static void PrintDylibCommand(MachO::dylib_command dl, const char *Ptr) {
9977 if (dl.cmd == MachO::LC_ID_DYLIB)
9979 else if (dl.cmd == MachO::LC_LOAD_DYLIB)
9981 else if (dl.cmd == MachO::LC_LOAD_WEAK_DYLIB)
9983 else if (dl.cmd == MachO::LC_REEXPORT_DYLIB)
9985 else if (dl.cmd == MachO::LC_LAZY_LOAD_DYLIB)
9987 else if (dl.cmd == MachO::LC_LOAD_UPWARD_DYLIB)
9992 if (dl.cmdsize < sizeof(struct MachO::dylib_command))
10021 static void PrintLinkEditDataCommand(MachO::linkedit_data_command ld,
10023 if (ld.cmd == MachO::LC_CODE_SIGNATURE)
10025 else if (ld.cmd == MachO::LC_SEGMENT_SPLIT_INFO)
10027 else if (ld.cmd == MachO::LC_FUNCTION_STARTS)
10029 else if (ld.cmd == MachO::LC_DATA_IN_CODE)
10031 else if (ld.cmd == MachO::LC_DYLIB_CODE_SIGN_DRS)
10033 else if (ld.cmd == MachO::LC_LINKER_OPTIMIZATION_HINT)
10038 if (ld.cmdsize != sizeof(struct MachO::linkedit_data_command))
10062 if (Command.C.cmd == MachO::LC_SEGMENT) {
10063 MachO::segment_command SLC = Obj->getSegmentLoadCommand(Command);
10070 MachO::section S = Obj->getSection(Command, j);
10075 } else if (Command.C.cmd == MachO::LC_SEGMENT_64) {
10076 MachO::segment_command_64 SLC_64 = Obj->getSegment64LoadCommand(Command);
10083 MachO::section_64 S_64 = Obj->getSection64(Command, j);
10089 } else if (Command.C.cmd == MachO::LC_SYMTAB) {
10090 MachO::symtab_command Symtab = Obj->getSymtabLoadCommand();
10092 } else if (Command.C.cmd == MachO::LC_DYSYMTAB) {
10093 MachO::dysymtab_command Dysymtab = Obj->getDysymtabLoadCommand();
10094 MachO::symtab_command Symtab = Obj->getSymtabLoadCommand();
10097 } else if (Command.C.cmd == MachO::LC_DYLD_INFO ||
10098 Command.C.cmd == MachO::LC_DYLD_INFO_ONLY) {
10099 MachO::dyld_info_command DyldInfo = Obj->getDyldInfoLoadCommand(Command);
10101 } else if (Command.C.cmd == MachO::LC_LOAD_DYLINKER ||
10102 Command.C.cmd == MachO::LC_ID_DYLINKER ||
10103 Command.C.cmd == MachO::LC_DYLD_ENVIRONMENT) {
10104 MachO::dylinker_command Dyld = Obj->getDylinkerCommand(Command);
10106 } else if (Command.C.cmd == MachO::LC_UUID) {
10107 MachO::uuid_command Uuid = Obj->getUuidCommand(Command);
10109 } else if (Command.C.cmd == MachO::LC_RPATH) {
10110 MachO::rpath_command Rpath = Obj->getRpathCommand(Command);
10112 } else if (Command.C.cmd == MachO::LC_VERSION_MIN_MACOSX ||
10113 Command.C.cmd == MachO::LC_VERSION_MIN_IPHONEOS ||
10114 Command.C.cmd == MachO::LC_VERSION_MIN_TVOS ||
10115 Command.C.cmd == MachO::LC_VERSION_MIN_WATCHOS) {
10116 MachO::version_min_command Vd = Obj->getVersionMinLoadCommand(Command);
10118 } else if (Command.C.cmd == MachO::LC_NOTE) {
10119 MachO::note_command Nt = Obj->getNoteLoadCommand(Command);
10121 } else if (Command.C.cmd == MachO::LC_BUILD_VERSION) {
10122 MachO::build_version_command Bv =
10125 } else if (Command.C.cmd == MachO::LC_SOURCE_VERSION) {
10126 MachO::source_version_command Sd = Obj->getSourceVersionCommand(Command);
10128 } else if (Command.C.cmd == MachO::LC_MAIN) {
10129 MachO::entry_point_command Ep = Obj->getEntryPointCommand(Command);
10131 } else if (Command.C.cmd == MachO::LC_ENCRYPTION_INFO) {
10132 MachO::encryption_info_command Ei =
10135 } else if (Command.C.cmd == MachO::LC_ENCRYPTION_INFO_64) {
10136 MachO::encryption_info_command_64 Ei =
10139 } else if (Command.C.cmd == MachO::LC_LINKER_OPTION) {
10140 MachO::linker_option_command Lo =
10143 } else if (Command.C.cmd == MachO::LC_SUB_FRAMEWORK) {
10144 MachO::sub_framework_command Sf = Obj->getSubFrameworkCommand(Command);
10146 } else if (Command.C.cmd == MachO::LC_SUB_UMBRELLA) {
10147 MachO::sub_umbrella_command Sf = Obj->getSubUmbrellaCommand(Command);
10149 } else if (Command.C.cmd == MachO::LC_SUB_LIBRARY) {
10150 MachO::sub_library_command Sl = Obj->getSubLibraryCommand(Command);
10152 } else if (Command.C.cmd == MachO::LC_SUB_CLIENT) {
10153 MachO::sub_client_command Sc = Obj->getSubClientCommand(Command);
10155 } else if (Command.C.cmd == MachO::LC_ROUTINES) {
10156 MachO::routines_command Rc = Obj->getRoutinesCommand(Command);
10158 } else if (Command.C.cmd == MachO::LC_ROUTINES_64) {
10159 MachO::routines_command_64 Rc = Obj->getRoutinesCommand64(Command);
10161 } else if (Command.C.cmd == MachO::LC_THREAD ||
10162 Command.C.cmd == MachO::LC_UNIXTHREAD) {
10163 MachO::thread_command Tc = Obj->getThreadCommand(Command);
10165 } else if (Command.C.cmd == MachO::LC_LOAD_DYLIB ||
10166 Command.C.cmd == MachO::LC_ID_DYLIB ||
10167 Command.C.cmd == MachO::LC_LOAD_WEAK_DYLIB ||
10168 Command.C.cmd == MachO::LC_REEXPORT_DYLIB ||
10169 Command.C.cmd == MachO::LC_LAZY_LOAD_DYLIB ||
10170 Command.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB) {
10171 MachO::dylib_command Dl = Obj->getDylibIDLoadCommand(Command);
10173 } else if (Command.C.cmd == MachO::LC_CODE_SIGNATURE ||
10174 Command.C.cmd == MachO::LC_SEGMENT_SPLIT_INFO ||
10175 Command.C.cmd == MachO::LC_FUNCTION_STARTS ||
10176 Command.C.cmd == MachO::LC_DATA_IN_CODE ||
10177 Command.C.cmd == MachO::LC_DYLIB_CODE_SIGN_DRS ||
10178 Command.C.cmd == MachO::LC_LINKER_OPTIMIZATION_HINT) {
10179 MachO::linkedit_data_command Ld =
10194 MachO::mach_header_64 H_64;
10199 MachO::mach_header H;
10216 MachO::mach_header_64 H_64;
10221 MachO::mach_header H;
10236 if (Command.C.cmd == MachO::LC_SEGMENT) {
10237 MachO::segment_command Seg = Obj->getSegmentLoadCommand(Command);
10242 } else if (Command.C.cmd == MachO::LC_SEGMENT_64) {
10243 MachO::segment_command_64 Seg = Obj->getSegment64LoadCommand(Command);
10253 bool ReExport = (Flags & MachO::EXPORT_SYMBOL_FLAGS_REEXPORT);
10254 bool WeakDef = (Flags & MachO::EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION);
10255 bool ThreadLocal = ((Flags & MachO::EXPORT_SYMBOL_FLAGS_KIND_MASK) ==
10256 MachO::EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL);
10257 bool Abs = ((Flags & MachO::EXPORT_SYMBOL_FLAGS_KIND_MASK) ==
10258 MachO::EXPORT_SYMBOL_FLAGS_KIND_ABSOLUTE);
10259 bool Resolver = (Flags & MachO::EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER);
10332 case MachO::BIND_SPECIAL_DYLIB_SELF:
10334 case MachO::BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE:
10336 case MachO::BIND_SPECIAL_DYLIB_FLAT_LOOKUP:
10367 if (Entry.flags() & MachO::BIND_SYMBOL_FLAGS_WEAK_IMPORT)
10416 if (Entry.flags() & MachO::BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION) {
10462 if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
10463 printMachOLazyBindTable(MachO);
10472 if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
10473 printMachOWeakBindTable(MachO);
10482 if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
10483 printMachOExportsTrie(MachO);
10492 if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
10493 printMachORebaseTable(MachO);
10502 if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
10503 printMachOBindTable(MachO);