14 #ifndef LLVM_SUPPORT_MACHO_H
15 #define LLVM_SUPPORT_MACHO_H
18 #include "llvm/Support/DataTypes.h"
27 MH_MAGIC = 0xFEEDFACEu,
28 MH_CIGAM = 0xCEFAEDFEu,
29 MH_MAGIC_64 = 0xFEEDFACFu,
30 MH_CIGAM_64 = 0xCFFAEDFEu,
31 FAT_MAGIC = 0xCAFEBABEu,
32 FAT_CIGAM = 0xBEBAFECAu
81 LC_REQ_DYLD = 0x80000000u
86 LC_SEGMENT = 0x00000001u,
87 LC_SYMTAB = 0x00000002u,
88 LC_SYMSEG = 0x00000003u,
89 LC_THREAD = 0x00000004u,
90 LC_UNIXTHREAD = 0x00000005u,
91 LC_LOADFVMLIB = 0x00000006u,
92 LC_IDFVMLIB = 0x00000007u,
93 LC_IDENT = 0x00000008u,
94 LC_FVMFILE = 0x00000009u,
95 LC_PREPAGE = 0x0000000Au,
96 LC_DYSYMTAB = 0x0000000Bu,
97 LC_LOAD_DYLIB = 0x0000000Cu,
98 LC_ID_DYLIB = 0x0000000Du,
99 LC_LOAD_DYLINKER = 0x0000000Eu,
100 LC_ID_DYLINKER = 0x0000000Fu,
101 LC_PREBOUND_DYLIB = 0x00000010u,
102 LC_ROUTINES = 0x00000011u,
103 LC_SUB_FRAMEWORK = 0x00000012u,
104 LC_SUB_UMBRELLA = 0x00000013u,
105 LC_SUB_CLIENT = 0x00000014u,
106 LC_SUB_LIBRARY = 0x00000015u,
107 LC_TWOLEVEL_HINTS = 0x00000016u,
108 LC_PREBIND_CKSUM = 0x00000017u,
109 LC_LOAD_WEAK_DYLIB = 0x80000018u,
110 LC_SEGMENT_64 = 0x00000019u,
111 LC_ROUTINES_64 = 0x0000001Au,
112 LC_UUID = 0x0000001Bu,
113 LC_RPATH = 0x8000001Cu,
114 LC_CODE_SIGNATURE = 0x0000001Du,
115 LC_SEGMENT_SPLIT_INFO = 0x0000001Eu,
116 LC_REEXPORT_DYLIB = 0x8000001Fu,
117 LC_LAZY_LOAD_DYLIB = 0x00000020u,
118 LC_ENCRYPTION_INFO = 0x00000021u,
119 LC_DYLD_INFO = 0x00000022u,
120 LC_DYLD_INFO_ONLY = 0x80000022u,
121 LC_LOAD_UPWARD_DYLIB = 0x80000023u,
122 LC_VERSION_MIN_MACOSX = 0x00000024u,
123 LC_VERSION_MIN_IPHONEOS = 0x00000025u,
124 LC_FUNCTION_STARTS = 0x00000026u,
125 LC_DYLD_ENVIRONMENT = 0x00000027u,
126 LC_MAIN = 0x80000028u,
127 LC_DATA_IN_CODE = 0x00000029u,
128 LC_SOURCE_VERSION = 0x0000002Au,
129 LC_DYLIB_CODE_SIGN_DRS = 0x0000002Bu,
131 LC_LINKER_OPTIONS = 0x0000002Du
139 SG_PROTECTED_VERSION_1 = 0x8u,
144 SECTION_TYPE = 0x000000ffu,
145 SECTION_ATTRIBUTES = 0xffffff00u,
146 SECTION_ATTRIBUTES_USR = 0xff000000u,
147 SECTION_ATTRIBUTES_SYS = 0x00ffff00u
180 S_ATTR_PURE_INSTRUCTIONS = 0x80000000u,
181 S_ATTR_NO_TOC = 0x40000000u,
182 S_ATTR_STRIP_STATIC_SYMS = 0x20000000u,
183 S_ATTR_NO_DEAD_STRIP = 0x10000000u,
184 S_ATTR_LIVE_SUPPORT = 0x08000000u,
185 S_ATTR_SELF_MODIFYING_CODE = 0x04000000u,
186 S_ATTR_DEBUG = 0x02000000u,
190 S_ATTR_SOME_INSTRUCTIONS = 0x00000400u,
191 S_ATTR_EXT_RELOC = 0x00000200u,
192 S_ATTR_LOC_RELOC = 0x00000100u,
196 INDIRECT_SYMBOL_LOCAL = 0x80000000u,
197 INDIRECT_SYMBOL_ABS = 0x40000000u
358 R_SCATTERED = 0x80000000
839 #if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && (BYTE_ORDER == BIG_ENDIAN)
880 return (((n_desc) >> 8u) & 0xffu);
884 n_desc = (((n_desc) & 0x00ff) | (((ordinal) & 0xff) << 8));
888 return (n_desc >> 8u) & 0x0fu;
892 n_desc = ((n_desc & 0xf0ffu) | ((align & 0x0fu) << 8u));
898 CPU_ARCH_MASK = 0xff000000,
899 CPU_ARCH_ABI64 = 0x01000000
918 CPU_SUB_TYPE_MASK = 0xff000000,
919 CPU_SUB_TYPE_LIB64 = 0x80000000,
922 CPU_SUBTYPE_MULTIPLE = ~0u
955 return Family | (Model << 4);
958 return ((
int)ST) & 0x0f;
961 return ((
int)ST) >> 4;
enum LLVM_ENUM_INT_TYPE(uint32_t)
uint32_t objc_module_info_addr
static void SET_LIBRARY_ORDINAL(uint16_t &n_desc, uint8_t ordinal)
static uint8_t GET_COMM_ALIGN(uint16_t n_desc)
uint64_t objc_module_info_addr
static uint16_t GET_LIBRARY_ORDINAL(uint16_t n_desc)
static int CPU_SUBTYPE_INTEL(int Family, int Model)
static void SET_COMM_ALIGN(uint16_t &n_desc, uint8_t align)
uint32_t objc_module_info_size
static int CPU_SUBTYPE_INTEL_MODEL(CPUSubTypeX86 ST)
static int CPU_SUBTYPE_INTEL_FAMILY(CPUSubTypeX86 ST)
uint32_t objc_module_info_size
uint32_t compatibility_version