LLVM: include/llvm/BinaryFormat/MachO.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef LLVM_BINARYFORMAT_MACHO_H
14#define LLVM_BINARYFORMAT_MACHO_H
15
20
21namespace llvm {
22
23class Triple;
24
25namespace MachO {
26
28
29
39
41
42
55};
56
57enum {
58
59
89};
90
92
95
96#define HANDLE_LOAD_COMMAND(LCName, LCValue, LCStruct) LCName = LCValue,
97
99#include "llvm/BinaryFormat/MachO.def"
100};
101
102#undef HANDLE_LOAD_COMMAND
103
105
111
112
113
119
120
121
123
124
125
126
128
130
132
134
136
138
140
142
143
145
146
148
149
151
153
154
156
157
159
161
163
164
166
168
170
171
173
174
176
177
179
180
182
185
187
188
189
190
191
193
194
196
197
199
201
203
204
206
208
209
210
211
212
214
216
218
219
220
224
226
233
239
241
253
259
266
267enum {
270
274
290
291enum {
297
303
304enum {
305
306
312
314
315
322
324
325
329
330enum {
331
332
333
341
350
351
357
359
360
394
396
397
399
400
401
404
406
407
408
416
417
418
419
436
437
438
439
450
451
452
453
454
455
457
459
461
463
465
467
469
471
473
475
477
479
480
481
482
494
495
496
498
499
501#define PLATFORM(platform, id, name, build_name, target, tapi_target, \
502 marketing) \
503 PLATFORM_##platform = id,
504#include "MachO.def"
505};
506
507
509
510
511
520};
521
531};
532
536};
537
550};
551
564};
565
578};
579
593};
594
598}
599
604};
605
606
611};
612
618};
619
624};
625
630};
631
636};
637
642};
643
648};
649
650
657};
658
663};
664
668};
669
681};
682
694};
695
703};
704
726};
727
731};
732
747};
748
763};
764
767};
768
769
775};
776
777
780};
781
782
787};
788
793};
794
799};
800
806};
807
812};
813
818};
819
826};
827
835};
836
839
843};
844
848 char data_owner[16];
851};
852
856};
857
861
866};
867
872};
873
887};
888
893};
894
897};
898
906};
907
908
914};
915
916
920};
921
922
928};
929
934};
935
940};
941
946};
947
953};
954
955
959};
960
967};
968
976};
977
978
983};
984
986#if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && (BYTE_ORDER == BIG_ENDIAN)
989#else
992#endif
994};
995
996
999};
1000
1001
1007};
1008
1015};
1016
1023};
1024
1025
1030};
1031
1032
1033enum {
1036};
1037
1038
1039enum {
1043};
1044
1045
1046enum {
1059};
1060
1061
1062
1063
1072};
1073
1074
1075
1076
1080};
1081
1090
1091};
1092
1093
1098};
1099
1100
1106};
1107
1108
1115};
1116
1117
1118
1119
1120
1127};
1128
1129
1136};
1137
1138
1139
1143}
1144
1151}
1152
1160}
1161
1170}
1171
1181}
1182
1186}
1187
1195}
1196
1208}
1209
1221}
1222
1233}
1234
1245}
1246
1260}
1261
1269}
1270
1275}
1276
1281}
1282
1287}
1288
1293}
1294
1306}
1307
1319}
1320
1324}
1325
1330}
1331
1335}
1336
1341}
1342
1347}
1348
1354}
1355
1362}
1363
1371}
1372
1394}
1395
1399}
1400
1404}
1405
1410}
1411
1416}
1417
1423}
1424
1429}
1430
1438}
1439
1445}
1446
1452}
1453
1461}
1462
1466}
1467
1472}
1473
1475
1476
1481}
1482
1483
1489}
1490
1491
1498}
1499
1500
1506}
1507
1508
1514}
1515
1516
1520}
1521
1526}
1527
1528
1533}
1534
1535
1536
1538 return (((n_desc) >> 8u) & 0xffu);
1539}
1540
1542 n_desc = (((n_desc)&0x00ff) | (((ordinal)&0xff) << 8));
1543}
1544
1546 return (n_desc >> 8u) & 0x0fu;
1547}
1548
1550 n_desc = ((n_desc & 0xf0ffu) | ((align & 0x0fu) << 8u));
1551}
1552
1553
1555
1559};
1560
1561
1567
1576
1578
1581
1582
1585
1586
1609
1616 return Family | (Model << 4);
1617}
1619 return ((int)ST) & 0x0f;
1620}
1623
1632
1639
1644
1645
1646
1648
1650
1652};
1653
1656}
1657
1660 bool PtrAuthKernelABIVersion) {
1661 assert((PtrAuthABIVersion <= 0xF) &&
1662 "ptrauth abi version must fit in 4 bits");
1664 (PtrAuthKernelABIVersion
1666 : 0) |
1667 (PtrAuthABIVersion << 24);
1668}
1669
1672}
1673
1676}
1677
1679
1681
1696
1700
1704 bool PtrAuthKernelABIVersion);
1705
1723};
1724
1747};
1748
1754
1761
1765};
1766
1771};
1772
1776};
1777
1780};
1781
1823};
1824
1830};
1831
1849}
1850
1873}
1874
1878
1879
1890}
1891
1897}
1898
1902};
1903
1906 union {
1910};
1911
1914 union {
1917};
1918
1921 union {
1924};
1925
1929}
1930
1945
1950}
1951
1956}
1957
1962}
1963
1966
1973
1980
1987};
1988
1990 for (int i = 0; i < 13; i++)
1996}
1997
2006};
2007
2009 for (int i = 0; i < 29; i++)
2016}
2017
2021};
2022
2025 union {
2028};
2029
2033}
2034
2044
2049}
2050
2053
2056
2098};
2099
2141}
2142
2146};
2147
2150 union {
2153};
2154
2158}
2159
2169
2174}
2175
2178
2179
2180#define LOAD_COMMAND_STRUCT(LCStruct) LCStruct LCStruct##_data;
2181
2184#include "llvm/BinaryFormat/MachO.def"
2185};
2187
2196}
2197
2200
2201
2202}
2203
2211
2212}
2213
2214
2215
2221
2223 0x00000010,
2225
2226
2230 CS_RESTRICT = 0x00000800,
2231
2235 0x00004000,
2237 0x00008000,
2238
2239
2240 CS_RUNTIME = 0x00010000,
2242
2246
2250 0x00400000,
2252 0x00800000,
2253
2256 0x02000000,
2259 0x08000000,
2260
2261 CS_DEBUGGED = 0x10000000,
2262
2265 0x40000000,
2266
2268 0x80000000,
2269
2272};
2273
2274
2275
2277
2285
2286};
2287
2288
2289
2293 0xfade0c01,
2299 0xfade0cc1,
2301
2308
2315
2317 0x1000,
2322
2326
2329
2334
2338
2341
2342
2343
2344
2345
2349
2353};
2354
2370
2371
2373
2374
2376
2377
2380
2381
2385};
2386
2388
2392};
2393
2398
2399};
2400
2406 3,
2409};
2410
2420};
2421
2422}
2423}
2424
2425#endif
#define LLVM_PACKED_START
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Tagged union holding either a T or a Error.
Triple - Helper class for working with autoconf configuration names.
@ C
The default llvm calling convention, compatible with C.
const uint32_t x86_FLOAT_STATE_COUNT
@ DYLD_CHAINED_IMPORT_ADDEND
@ DYLD_CHAINED_IMPORT_ADDEND64
const uint32_t ARM_THREAD_STATE64_COUNT
@ EXPORT_SYMBOL_FLAGS_KIND_ABSOLUTE
@ EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL
@ EXPORT_SYMBOL_FLAGS_KIND_REGULAR
@ BIND_TYPE_TEXT_ABSOLUTE32
@ CS_EXECSEG_ALLOW_UNSIGNED
@ CS_EXECSEG_CAN_LOAD_CDHASH
@ CS_EXECSEG_CAN_EXEC_CDHASH
@ S_ATTR_SOME_INSTRUCTIONS
S_ATTR_SOME_INSTRUCTIONS - Section contains some machine instructions.
@ S_ATTR_EXT_RELOC
S_ATTR_EXT_RELOC - Section has external relocation entries.
@ S_ATTR_DEBUG
S_ATTR_DEBUG - A debug section.
@ S_ATTR_NO_DEAD_STRIP
S_ATTR_NO_DEAD_STRIP - No dead stripping.
@ S_ATTR_LOC_RELOC
S_ATTR_LOC_RELOC - Section has local relocation entries.
@ S_ATTR_NO_TOC
S_ATTR_NO_TOC - Section contains coalesced symbols that are not to be in a ranlib table of contents.
@ S_ATTR_LIVE_SUPPORT
S_ATTR_LIVE_SUPPORT - Blocks are live if they reference live blocks.
@ S_ATTR_PURE_INSTRUCTIONS
S_ATTR_PURE_INSTRUCTIONS - Section contains only true machine instructions.
@ S_ATTR_SELF_MODIFYING_CODE
S_ATTR_SELF_MODIFYING_CODE - Used with i386 code stubs written on by dyld.
@ S_ATTR_STRIP_STATIC_SYMS
S_ATTR_STRIP_STATIC_SYMS - Ok to strip static symbols in this section in files with the MY_DYLDLINK f...
const uint32_t x86_EXCEPTION_STATE_COUNT
@ REBASE_TYPE_TEXT_ABSOLUTE32
@ REBASE_TYPE_TEXT_PCREL32
int CPU_SUBTYPE_INTEL_MODEL(CPUSubTypeX86 ST)
bool isVirtualSection(uint8_t type)
const uint32_t x86_FLOAT_STATE64_COUNT
Expected< uint32_t > getCPUSubType(const Triple &T)
SectionType
These are the section type and attributes fields.
@ S_THREAD_LOCAL_VARIABLE_POINTERS
S_THREAD_LOCAL_VARIABLE_POINTERS - Section with pointers to thread local structures.
@ S_INTERPOSING
S_INTERPOSING - Section with only pairs of function pointers for interposing.
@ S_GB_ZEROFILL
S_GB_ZEROFILL - Zero fill on demand section (that can be larger than 4 gigabytes).
@ S_16BYTE_LITERALS
S_16BYTE_LITERALS - Section with only 16 byte literals.
@ S_THREAD_LOCAL_INIT_FUNCTION_POINTERS
S_THREAD_LOCAL_INIT_FUNCTION_POINTERS - Section with thread local variable initialization pointers to...
@ S_COALESCED
S_COALESCED - Section contains symbols that are to be coalesced.
@ S_THREAD_LOCAL_ZEROFILL
S_THREAD_LOCAL_ZEROFILL - Thread local zerofill section.
@ S_LAZY_SYMBOL_POINTERS
S_LAZY_SYMBOL_POINTERS - Section with lazy symbol pointers.
@ S_INIT_FUNC_OFFSETS
S_INIT_FUNC_OFFSETS - Section with 32-bit offsets to initializer functions.
@ S_MOD_TERM_FUNC_POINTERS
S_MOD_TERM_FUNC_POINTERS - Section with only function pointers for termination.
@ S_MOD_INIT_FUNC_POINTERS
S_MOD_INIT_FUNC_POINTERS - Section with only function pointers for initialization.
@ S_CSTRING_LITERALS
S_CSTRING_LITERALS - Section with literal C strings.
@ S_THREAD_LOCAL_REGULAR
S_THREAD_LOCAL_REGULAR - Thread local data section.
@ S_DTRACE_DOF
S_DTRACE_DOF - Section contains DTrace Object Format.
@ S_ZEROFILL
S_ZEROFILL - Zero fill on demand section.
@ S_NON_LAZY_SYMBOL_POINTERS
S_NON_LAZY_SYMBOL_POINTERS - Section with non-lazy symbol pointers.
@ S_4BYTE_LITERALS
S_4BYTE_LITERALS - Section with 4 byte literals.
@ LAST_KNOWN_SECTION_TYPE
@ S_LITERAL_POINTERS
S_LITERAL_POINTERS - Section with pointers to literals.
@ S_8BYTE_LITERALS
S_8BYTE_LITERALS - Section with 8 byte literals.
@ S_LAZY_DYLIB_SYMBOL_POINTERS
S_LAZY_DYLIB_SYMBOL_POINTERS - Section with lazy symbol pointers to lazy loaded dylibs.
@ S_THREAD_LOCAL_VARIABLES
S_THREAD_LOCAL_VARIABLES - Section with thread local variable structure data.
@ S_SYMBOL_STUBS
S_SYMBOL_STUBS - Section with symbol stubs, byte size of stub in the Reserved2 field.
@ S_REGULAR
S_REGULAR - Regular section.
@ BIND_SPECIAL_DYLIB_SELF
@ BIND_SPECIAL_DYLIB_WEAK_LOOKUP
@ BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE
@ BIND_SPECIAL_DYLIB_FLAT_LOOKUP
@ DYLD_CHAINED_PTR_START_LAST
@ DYLD_CHAINED_PTR_START_NONE
@ DYLD_CHAINED_PTR_START_MULTI
@ CSMAGIC_EMBEDDED_ENTITLEMENTS
@ CS_SIGNER_TYPE_LEGACYVPN
@ CSMAGIC_DETACHED_SIGNATURE
@ CS_SIGNER_TYPE_MAC_APP_STORE
@ CSTYPE_INDEX_ENTITLEMENTS
@ CSMAGIC_EMBEDDED_SIGNATURE
@ CS_SUPPL_SIGNER_TYPE_TRUSTCACHE
@ CSSLOT_ALTERNATE_CODEDIRECTORIES
@ CSSLOT_IDENTIFICATIONSLOT
@ CS_SHA256_TRUNCATED_LEN
@ CSMAGIC_EMBEDDED_SIGNATURE_OLD
@ CSTYPE_INDEX_REQUIREMENTS
@ CSSLOT_ALTERNATE_CODEDIRECTORY_MAX
@ CS_SUPPL_SIGNER_TYPE_LOCAL
@ CS_HASHTYPE_SHA256_TRUNCATED
@ CSSLOT_ALTERNATE_CODEDIRECTORY_LIMIT
@ CS_SUPPL_SIGNER_TYPE_UNKNOWN
void SET_LIBRARY_ORDINAL(uint16_t &n_desc, uint8_t ordinal)
int CPU_SUBTYPE_INTEL(int Family, int Model)
@ kSecCodeSignatureHashSHA1
@ kSecCodeSignatureHashSHA256
@ kSecCodeSignatureHashSHA384
@ kSecCodeSignatureHashSHA256Truncated
@ kSecCodeSignatureNoHash
@ kSecCodeSignatureHashSHA512
uint8_t GET_COMM_ALIGN(uint16_t n_desc)
void swapStruct(fat_header &mh)
const uint32_t x86_THREAD_STATE32_COUNT
@ EXPORT_SYMBOL_FLAGS_REEXPORT
@ EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION
@ EXPORT_SYMBOL_FLAGS_KIND_MASK
@ EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER
@ DYLD_CHAINED_SYMBOL_ZLIB
@ DYLD_CHAINED_SYMBOL_UNCOMPRESSED
bool CPU_SUBTYPE_ARM64E_IS_KERNEL_PTRAUTH_ABI(uint32_t ST)
@ CPU_SUBTYPE_POWERPC_970
@ CPU_SUBTYPE_POWERPC_604e
@ CPU_SUBTYPE_POWERPC_603e
@ CPU_SUBTYPE_POWERPC_7400
@ CPU_SUBTYPE_POWERPC_604
@ CPU_SUBTYPE_MC980000_ALL
@ CPU_SUBTYPE_POWERPC_750
@ CPU_SUBTYPE_POWERPC_601
@ CPU_SUBTYPE_POWERPC_620
@ CPU_SUBTYPE_POWERPC_603ev
@ CPU_SUBTYPE_POWERPC_ALL
@ CPU_SUBTYPE_POWERPC_603
@ CPU_SUBTYPE_POWERPC_7450
@ CPU_SUBTYPE_POWERPC_602
@ BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB
@ BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB
@ BIND_OPCODE_SET_ADDEND_SLEB
@ BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB
@ BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
@ BIND_OPCODE_ADD_ADDR_ULEB
@ BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED
@ BIND_OPCODE_SET_DYLIB_SPECIAL_IMM
@ BIND_OPCODE_SET_TYPE_IMM
@ BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
@ BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
const uint32_t PPC_THREAD_STATE_COUNT
unsigned CPU_SUBTYPE_ARM64E_PTRAUTH_VERSION(uint32_t ST)
const uint32_t ARM_THREAD_STATE_COUNT
@ REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
@ REBASE_OPCODE_DO_REBASE_IMM_TIMES
@ REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB
@ REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB
@ REBASE_OPCODE_DO_REBASE_ULEB_TIMES
@ REBASE_OPCODE_ADD_ADDR_ULEB
@ REBASE_OPCODE_SET_TYPE_IMM
@ REBASE_OPCODE_ADD_ADDR_IMM_SCALED
bool CPU_SUBTYPE_ARM64E_IS_VERSIONED_PTRAUTH_ABI(uint32_t ST)
int CPU_SUBTYPE_INTEL_FAMILY(CPUSubTypeX86 ST)
LinkerOptimizationHintKind
@ LOH_ARM64_ADRP_LDR_GOT_LDR
@ LOH_ARM64_ADRP_LDR_GOT_STR
void SET_COMM_ALIGN(uint16_t &n_desc, uint8_t align)
@ CPU_SUBTYPE_ARM64E_VERSIONED_PTRAUTH_ABI_MASK
@ CPU_SUBTYPE_ARM64E_KERNEL_PTRAUTH_ABI_MASK
@ CPU_SUBTYPE_ARM64E_PTRAUTH_MASK
const uint32_t x86_THREAD_STATE_COUNT
@ CPU_SUBTYPE_ARM64_32_V8
@ CS_DATAVAULT_CONTROLLER
@ CS_EXEC_SET_ENFORCEMENT
@ CS_ENTITLEMENTS_VALIDATED
@ DICE_KIND_ABS_JUMP_TABLE32
@ CPU_SUBTYPE_INTEL_FAMILY_MAX
@ CPU_SUBTYPE_INTEL_MODEL_ALL
@ GENERIC_RELOC_LOCAL_SECTDIFF
@ PPC_RELOC_HA16_SECTDIFF
@ ARM_RELOC_LOCAL_SECTDIFF
@ ARM64_RELOC_POINTER_TO_GOT
@ ARM64_RELOC_AUTHENTICATED_POINTER
@ GENERIC_RELOC_PB_LA_PTR
@ PPC_RELOC_LOCAL_SECTDIFF
@ ARM_RELOC_HALF_SECTDIFF
@ PPC_RELOC_LO14_SECTDIFF
@ PPC_RELOC_LO16_SECTDIFF
@ ARM64_RELOC_GOT_LOAD_PAGE21
@ X86_64_RELOC_SUBTRACTOR
@ ARM64_RELOC_TLVP_LOAD_PAGEOFF12
@ PPC_RELOC_HI16_SECTDIFF
@ ARM64_RELOC_GOT_LOAD_PAGEOFF12
@ ARM64_RELOC_TLVP_LOAD_PAGE21
uint32_t CPU_SUBTYPE_ARM64E_WITH_PTRAUTH_VERSION(unsigned PtrAuthABIVersion, bool PtrAuthKernelABIVersion)
uint16_t GET_LIBRARY_ORDINAL(uint16_t n_desc)
@ DYLD_CHAINED_PTR_ARM64E_USERLAND
@ DYLD_CHAINED_PTR_ARM64E_USERLAND24
@ DYLD_CHAINED_PTR_64_KERNEL_CACHE
@ DYLD_CHAINED_PTR_32_CACHE
@ DYLD_CHAINED_PTR_X86_64_KERNEL_CACHE
@ DYLD_CHAINED_PTR_64_OFFSET
@ DYLD_CHAINED_PTR_ARM64E_FIRMWARE
@ DYLD_CHAINED_PTR_ARM64E_KERNEL
@ DYLD_CHAINED_PTR_32_FIRMWARE
@ DYLD_CHAINED_PTR_ARM64E
Expected< uint32_t > getCPUType(const Triple &T)
const uint32_t x86_EXCEPTION_STATE64_COUNT
@ CPU_SUBTYPE_CELERON_MOBILE
@ CPU_SUBTYPE_PENTIUM_3_XEON
@ CPU_SUBTYPE_PENTIUM_3_M
@ CPU_SUBTYPE_PENTIUM_4_M
@ REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY
@ REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY
@ REFERENCE_FLAG_UNDEFINED_LAZY
@ REFERENCE_FLAG_UNDEFINED_NON_LAZY
@ REFERENCE_FLAG_PRIVATE_DEFINED
const uint32_t x86_THREAD_STATE64_COUNT
@ MH_ALLOW_STACK_EXECUTION
@ MH_DEAD_STRIPPABLE_DYLIB
@ MH_NO_REEXPORTED_DYLIBS
@ MH_SUBSECTIONS_VIA_SYMBOLS
@ MH_NLIST_OUTOFSYNC_WITH_DYLDINFO
@ BIND_SYMBOL_FLAGS_WEAK_IMPORT
@ BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION
void swapByteOrder(T &Value)
This is an optimization pass for GlobalISel generic memory operations.
arm_thread_state32_t ts32
union llvm::MachO::arm_thread_state_t::@165 uts
dyld_chained_starts_in_image is embedded in LC_DYLD_CHAINED_FIXUPS payload.
uint32_t seg_info_offset[1]
uint16_t page_count
Length of the page_start array.
uint16_t page_size
Page size in bytes (0x1000 or 0x4000)
uint16_t pointer_format
DYLD_CHAINED_PTR*.
uint32_t max_valid_pointer
Values beyond this are not pointers on 32-bit.
uint64_t segment_offset
VM offset from the __TEXT segment.
uint32_t size
Size of this, including chain_starts entries.
uint16_t page_start[1]
Page offset of first fixup on each page, or DYLD_CHAINED_PTR_START_NONE if no fixups.
uint64_t objc_module_info_addr
uint32_t objc_module_info_size
uint32_t objc_module_info_size
uint32_t objc_module_info_addr
uint32_t compatibility_version
ppc_thread_state32_t ts32
union llvm::MachO::ppc_thread_state_t::@166 uts
union llvm::MachO::x86_exception_state_t::@164 ues
x86_exception_state64_t es64
union llvm::MachO::x86_float_state_t::@163 ufs
x86_thread_state64_t ts64
x86_thread_state32_t ts32
union llvm::MachO::x86_thread_state_t::@162 uts