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

842 uint32_t sdk;

843};

844

848 char data_owner[16];

851};

852

856};

857

861

864 uint32_t sdk;

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

1083 uint32_t size;

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

2217 CS_VALID = 0x00000001,

2221

2223 0x00000010,

2225

2226

2227 CS_HARD = 0x00000100,

2228 CS_KILL = 0x00000200,

2230 CS_RESTRICT = 0x00000800,

2231

2235 0x00004000,

2237 0x00008000,

2238

2239

2240 CS_RUNTIME = 0x00010000,

2242

2246

2250 0x00400000,

2252 0x00800000,

2253

2254 CS_KILLED = 0x01000000,

2256 0x02000000,

2259 0x08000000,

2260

2261 CS_DEBUGGED = 0x10000000,

2262

2263 CS_SIGNED = 0x20000000,

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

2367 uint8_t platform;

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