LLVM: include/llvm/Object/COFF.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_OBJECT_COFF_H

14#define LLVM_OBJECT_COFF_H

15

28#include

29#include

30#include

31#include <system_error>

32

33namespace llvm {

34

35template class ArrayRef;

36

38

47

56

57

79

91

107

108

143

144

176

181

192

193template

196

198

201 return Data & 0xFFFF;

202 }

203

205 assert(isOrdinal() && "ILT entry is not a Hint/Name RVA!");

206 return Data & 0xFFFFFFFF;

207 }

208};

209

214

226

240

245

248

253

254template

256 union {

260

263

265

268};

269

272

273

281

284

286public:

290

292 return CS16 ? static_cast<const void *>(CS16) : CS32;

293 }

294

300

302 return A.getRawPtr() < B.getRawPtr();

303 }

304

306 if (CS16)

307 return false;

308 if (CS32)

309 return true;

311 }

312

314 return CS16 ? CS16->Name.ShortName : CS32->Name.ShortName;

315 }

316

318 assert(isSet() && "COFFSymbolRef points to nothing!");

319 return CS16 ? CS16->Name.Offset : CS32->Name.Offset;

320 }

321

323 assert(isSet() && "COFFSymbolRef points to nothing!");

324 return CS16 ? CS16->Value : CS32->Value;

325 }

326

328 assert(isSet() && "COFFSymbolRef points to nothing!");

329 if (CS16) {

330

332 return CS16->SectionNumber;

333 return static_cast<int16_t>(CS16->SectionNumber);

334 }

335 return static_cast<int32_t>(CS32->SectionNumber);

336 }

337

339 assert(isSet() && "COFFSymbolRef points to nothing!");

340 return CS16 ? CS16->Type : CS32->Type;

341 }

342

344 assert(isSet() && "COFFSymbolRef points to nothing!");

345 return CS16 ? CS16->StorageClass : CS32->StorageClass;

346 }

347

349 assert(isSet() && "COFFSymbolRef points to nothing!");

350 return CS16 ? CS16->NumberOfAuxSymbols : CS32->NumberOfAuxSymbols;

351 }

352

354

358

359 template const T *getAux() const {

360 return CS16 ? reinterpret_cast<const T *>(CS16 + 1)

361 : reinterpret_cast<const T *>(CS32 + 1);

362 }

363

367 return nullptr;

369 }

370

374 return nullptr;

376 }

377

381

385

390

395

399

403

409

413

417

421

425

427

428

429 bool isAppdomainGlobal =

434 return false;

435 return isAppdomainGlobal || isOrdinarySection;

436 }

437

441

442private:

443 bool isSet() const { return CS16 || CS32; }

444

447};

448

460

461

462

467

469

470

472 return 1;

473

474

475

477 if (Shift > 0)

478 return 1U << (Shift - 1);

479 return 16;

480 }

481};

482

488

496

498 "auxiliary entry must be 18 bytes");

499

507

509 "auxiliary entry must be 18 bytes");

510

516

518 "auxiliary entry must be 18 bytes");

519

531 if (IsBigObj)

533 return static_cast<int32_t>(Number);

534 }

535};

536

537static_assert(sizeof(coff_aux_section_definition) == 18,

538 "auxiliary entry must be 18 bytes");

539

546

548 "auxiliary entry must be 18 bytes");

549

563

576

577template

585

587

589 if (Shift > 0)

590 return 1U << (Shift - 1);

591 return 0;

592 }

593

604};

605

608

610

617

618

640

641

647

648

663

664

674};

675

676

698

699

705

706

721

722

732};

733

761

763

774

780

785

791

796

803

805 union {

808 uint32_t getNameOffset() const {

810 }

811

812

815 union {

818

819 bool isSubDir() const { return SubdirOffset >> 31; }

822 }

823

825};

826

833

842

848

853

858

863

871

879

881private:

883

894 const char *StringTable;

898 uint32_t NumberOfDelayImportDirectory;

906

907 const void *LoadConfig = nullptr;

910

912

913 template <typename coff_symbol_type>

914 const coff_symbol_type *toSymb(DataRefImpl Symb) const;

917

918

920

921 Error initSymbolTablePtr();

922 Error initImportTablePtr();

923 Error initDelayImportTablePtr();

924 Error initExportTablePtr();

925 Error initBaseRelocPtr();

926 Error initDebugDirectoryPtr();

927 Error initTLSDirectoryPtr();

928 Error initLoadConfigPtr();

930

931public:

934

936 if (SymbolTable16)

937 return reinterpret_cast<uintptr_t>(SymbolTable16);

938 if (SymbolTable32)

939 return reinterpret_cast<uintptr_t>(SymbolTable32);

940 return uintptr_t(0);

941 }

942

944 return StringRef(StringTable, StringTableSize);

945 }

946

948 if (COFFHeader) {

949 if (CHPEMetadata) {

950 switch (COFFHeader->Machine) {

955 }

956 }

957 return COFFHeader->Machine;

958 }

959 if (COFFBigObjHeader)

960 return COFFBigObjHeader->Machine;

962 }

963

965 if (COFFHeader)

966 return COFFHeader->isImportLibrary() ? 0

967 : COFFHeader->SizeOfOptionalHeader;

968

969 if (COFFBigObjHeader)

970 return 0;

972 }

973

975 if (COFFHeader)

976 return COFFHeader->isImportLibrary() ? 0 : COFFHeader->Characteristics;

977

978

979 if (COFFBigObjHeader)

980 return 0;

982 }

983

985 if (COFFHeader)

986 return COFFHeader->TimeDateStamp;

987 if (COFFBigObjHeader)

988 return COFFBigObjHeader->TimeDateStamp;

990 }

991

993 if (COFFHeader)

994 return COFFHeader->isImportLibrary() ? 0 : COFFHeader->NumberOfSections;

995 if (COFFBigObjHeader)

996 return COFFBigObjHeader->NumberOfSections;

998 }

999

1001 if (COFFHeader)

1002 return COFFHeader->isImportLibrary() ? 0

1003 : COFFHeader->PointerToSymbolTable;

1004 if (COFFBigObjHeader)

1005 return COFFBigObjHeader->PointerToSymbolTable;

1007 }

1008

1010 if (COFFHeader)

1011 return COFFHeader->isImportLibrary() ? 0 : COFFHeader->NumberOfSymbols;

1012 if (COFFBigObjHeader)

1013 return COFFBigObjHeader->NumberOfSymbols;

1015 }

1016

1018 if (!SymbolTable16 && !SymbolTable32)

1019 return 0;

1021 }

1022

1024

1026 return ExportDirectory;

1027 }

1028

1033

1038

1041 return DynamicRelocTable;

1042 }

1043

1045

1046protected:

1047 void moveSymbolNext(DataRefImpl &Symb) const override;

1056 void moveSectionNext(DataRefImpl &Sec) const override;

1062 getSectionContents(DataRefImpl Sec) const override;

1064 bool isSectionCompressed(DataRefImpl Sec) const override;

1065 bool isSectionText(DataRefImpl Sec) const override;

1066 bool isSectionData(DataRefImpl Sec) const override;

1067 bool isSectionBSS(DataRefImpl Sec) const override;

1068 bool isSectionVirtual(DataRefImpl Sec) const override;

1072

1073 void moveRelocationNext(DataRefImpl &Rel) const override;

1077 void getRelocationTypeName(DataRefImpl Rel,

1079

1080public:

1085

1086 bool is64Bit() const override { return false; }

1087

1094

1095 uint8_t getBytesInAddress() const override;

1096 StringRef getFileFormatName() const override;

1102 std::unique_ptr getHybridObjectView() const;

1103

1115 return DebugDirectoryBegin;

1116 }

1118 return DebugDirectoryEnd;

1119 }

1120

1123 delay_import_directories() const;

1130

1132 return TLSDirectory32;

1133 }

1135 return TLSDirectory64;

1136 }

1137

1139 if (!PE32Header && !PE32PlusHeader)

1140 return nullptr;

1141 return reinterpret_cast<const dos_header *>(base());

1142 }

1143

1146 return COFFBigObjHeader;

1147 }

1150

1153

1157 if (SymbolTable16)

1159 if (SymbolTable32)

1162 }

1163

1164 template

1168 return E;

1169 Res = reinterpret_cast<const T *>(S->getRawPtr());

1171 }

1172

1175

1177

1179

1181 if (COFFHeader)

1183 if (COFFBigObjHeader)

1186 }

1187

1189

1194

1195 uint64_t getImageBase() const;

1196 Error getVaPtr(uint64_t VA, uintptr_t &Res) const;

1198 const char *ErrorContext = nullptr) const;

1199

1200

1201

1202

1205 const char *ErrorContext = nullptr) const;

1206

1209

1210

1214

1215

1216

1217

1218

1221

1222 bool isRelocatableObject() const override;

1223 bool is64() const { return PE32PlusHeader; }

1224

1226

1228};

1229

1230

1232public:

1236 : ImportTable(Table), Index(I), OwningObject(Owner) {}

1237

1240

1244

1249

1253

1256

1257private:

1261};

1262

1264public:

1268 : Table(T), Index(I), OwningObject(Owner) {}

1269

1272

1276

1281

1282private:

1286};

1287

1288

1290public:

1294 : ExportTable(Table), Index(I), OwningObject(Owner) {}

1295

1298

1304

1307

1308private:

1312};

1313

1315public:

1319 : Entry32(Entry), Entry64(nullptr), Index(I), OwningObject(Owner) {}

1322 : Entry32(nullptr), Entry64(Entry), Index(I), OwningObject(Owner) {}

1323

1326

1331

1332private:

1337};

1338

1340public:

1344 : Header(Header), Index(0) {}

1345

1348

1351

1352private:

1355};

1356

1358public:

1362

1367

1371

1372private:

1373 Error validate() const;

1374

1377

1379};

1380

1382public:

1385 : Header(Header), Index(Index) {}

1386

1389

1393 uint32_t getRVA() const { return Header->PageRVA + (getReloc() & 0xfff); }

1396

1397private:

1401 }

1402

1403 uint16_t getArg() const { return getReloc() >> 14; }

1404 uint8_t getEntrySize() const;

1405 Error validate(const COFFObjectFile *Obj) const;

1406

1407 const coff_base_reloc_block_header *Header;

1409

1411};

1412

1414public:

1418

1421

1431

1434

1435private:

1437

1440

1441 std::vector<const coff_relocation *> Relocs;

1442

1449};

1450

1451

1458

1459

1461

1462

1464

1465

1467

1468

1470

1471

1473};

1474

1476 : public ErrorInfo<SectionStrippedError, BinaryError> {

1477public:

1479};

1480

1481}

1482

1483}

1484

1485#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

AMDGPU Mark last scratch load

static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")

static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")

static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")

Analysis containing CSE Info

static StringRef getSymbolName(SymbolKind SymKind)

static ManagedStatic< DebugCounterOwner > Owner

static bool isDebugSection(const SectionBase &Sec)

static unsigned getSymbolSectionID(const ObjectFile &O, SymbolRef Sym)

static unsigned getSectionID(const ObjectFile &O, SectionRef Sec)

static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, const llvm::StringTable &StandardNames, VectorLibrary VecLib)

Initialize the set of available library functions based on the specified target triple.

static std::unique_ptr< PDBSymbol > getSymbolType(const PDBSymbol &Symbol)

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

An implementation of BinaryStream which holds its entire data set in a single contiguous buffer.

Base class for user error types.

Lightweight error class with error context and mandatory checking.

static ErrorSuccess success()

Create a success value.

Tagged union holding either a T or a Error.

Error takeError()

Take ownership of the stored error.

This class consists of common code factored out of the SmallVector class to reduce code duplication b...

StringRef - Represent a constant reference to a string, i.e.

Manages the enabling and disabling of subtarget specific features.

The instances of the Type class are immutable: once they are created, they are never changed.

A range adaptor for a pair of iterators.

uint32_t getRVA() const

Definition COFF.h:1393

Arm64XRelocRef(const coff_base_reloc_block_header *Header, uint32_t Index=0)

Definition COFF.h:1384

friend class DynamicRelocRef

Definition COFF.h:1410

LLVM_ABI bool operator==(const Arm64XRelocRef &Other) const

COFF::Arm64XFixupType getType() const

Definition COFF.h:1390

LLVM_ABI uint8_t getSize() const

LLVM_ABI uint64_t getValue() const

BaseRelocRef(const coff_base_reloc_block_header *Header, const COFFObjectFile *Owner)

Definition COFF.h:1342

LLVM_ABI Error getType(uint8_t &Type) const

LLVM_ABI bool operator==(const BaseRelocRef &Other) const

LLVM_ABI Error getRVA(uint32_t &Result) const

const dos_header * getDOSHeader() const

Definition COFF.h:1138

static bool classof(const Binary *v)

Definition COFF.h:1227

uint32_t getRawNumberOfSymbols() const

Definition COFF.h:1009

const coff_tls_directory64 * getTLSDirectory64() const

Definition COFF.h:1134

const pe32_header * getPE32Header() const

Definition COFF.h:1148

Expected< COFFSymbolRef > getSymbol(uint32_t index) const

Definition COFF.h:1154

const debug_directory * debug_directory_end() const

Definition COFF.h:1117

const coff_tls_directory32 * getTLSDirectory32() const

Definition COFF.h:1131

Expected< SubtargetFeatures > getFeatures() const override

Definition COFF.h:1099

uint32_t getPointerToSymbolTable() const

Definition COFF.h:1000

iterator_range< const debug_directory * > debug_directories() const

Definition COFF.h:1127

const coff_dynamic_reloc_table * getDynamicRelocTable() const

Definition COFF.h:1040

bool is64() const

Definition COFF.h:1223

uint32_t getNumberOfSymbols() const

Definition COFF.h:1017

const coff_file_header * getCOFFHeader() const

Definition COFF.h:1144

size_t getSymbolTableEntrySize() const

Definition COFF.h:1180

friend class ImportDirectoryEntryRef

Definition COFF.h:884

Error getAuxSymbol(uint32_t index, const T *&Res) const

Definition COFF.h:1165

uintptr_t getSymbolTable() const

Definition COFF.h:935

static Expected< std::unique_ptr< COFFObjectFile > > create(MemoryBufferRef Object)

const coff_bigobj_file_header * getCOFFBigObjHeader() const

Definition COFF.h:1145

const coff_load_configuration64 * getLoadConfig64() const

Definition COFF.h:1034

uint32_t getNumberOfSections() const

Definition COFF.h:992

uint32_t getTimeDateStamp() const

Definition COFF.h:984

uint32_t getStringTableSize() const

Definition COFF.h:1023

const chpe_metadata * getCHPEMetadata() const

Definition COFF.h:1039

const debug_directory * debug_directory_begin() const

Definition COFF.h:1114

const coff_load_configuration32 * getLoadConfig32() const

Definition COFF.h:1029

StringRef getStringTable() const

Definition COFF.h:943

uint16_t getSizeOfOptionalHeader() const

Definition COFF.h:964

uint16_t getCharacteristics() const

Definition COFF.h:974

friend class ExportDirectoryEntryRef

Definition COFF.h:885

const pe32plus_header * getPE32PlusHeader() const

Definition COFF.h:1149

uint16_t getMachine() const

Definition COFF.h:947

const export_directory_table_entry * getExportTable() const

Definition COFF.h:1025

bool is64Bit() const override

Definition COFF.h:1086

const void * getRawPtr() const

Definition COFF.h:291

bool isCommon() const

Definition COFF.h:386

const StringTableOffset & getStringTableOffset() const

Definition COFF.h:317

uint8_t getStorageClass() const

Definition COFF.h:343

uint16_t getType() const

Definition COFF.h:338

const T * getAux() const

Definition COFF.h:359

bool isAnyUndefined() const

Definition COFF.h:414

bool isFileRecord() const

Definition COFF.h:418

const coff_symbol_generic * getGeneric() const

Definition COFF.h:295

const coff_aux_weak_external * getWeakExternal() const

Definition COFF.h:371

bool isAbsolute() const

Definition COFF.h:378

bool isSectionDefinition() const

Definition COFF.h:426

uint8_t getComplexType() const

Definition COFF.h:355

uint8_t getNumberOfAuxSymbols() const

Definition COFF.h:348

bool isExternal() const

Definition COFF.h:382

bool isFunctionLineInfo() const

Definition COFF.h:410

uint8_t getBaseType() const

Definition COFF.h:353

COFFSymbolRef(const coff_symbol32 *CS)

Definition COFF.h:289

COFFSymbolRef(const coff_symbol16 *CS)

Definition COFF.h:288

uint32_t getValue() const

Definition COFF.h:322

const coff_aux_section_definition * getSectionDefinition() const

Definition COFF.h:364

bool isWeakExternal() const

Definition COFF.h:400

bool isEmptySectionDeclaration() const

Definition COFF.h:396

friend bool operator<(COFFSymbolRef A, COFFSymbolRef B)

Definition COFF.h:301

const char * getShortName() const

Definition COFF.h:313

bool isSection() const

Definition COFF.h:422

int32_t getSectionNumber() const

Definition COFF.h:327

bool isCLRToken() const

Definition COFF.h:438

bool isBigObj() const

Definition COFF.h:305

bool isUndefined() const

Definition COFF.h:391

bool isFunctionDefinition() const

Definition COFF.h:404

LLVM_ABI bool operator==(const DelayImportDirectoryEntryRef &Other) const

LLVM_ABI imported_symbol_iterator imported_symbol_begin() const

LLVM_ABI Error getImportAddress(int AddrIndex, uint64_t &Result) const

LLVM_ABI iterator_range< imported_symbol_iterator > imported_symbols() const

DelayImportDirectoryEntryRef()=default

LLVM_ABI imported_symbol_iterator imported_symbol_end() const

LLVM_ABI Error getDelayImportTable(const delay_import_directory_table_entry *&Result) const

DelayImportDirectoryEntryRef(const delay_import_directory_table_entry *T, uint32_t I, const COFFObjectFile *Owner)

Definition COFF.h:1266

LLVM_ABI Error getName(StringRef &Result) const

LLVM_ABI bool operator==(const DynamicRelocRef &Other) const

LLVM_ABI arm64x_reloc_iterator arm64x_reloc_begin() const

LLVM_ABI void getContents(ArrayRef< uint8_t > &Ref) const

DynamicRelocRef()=default

LLVM_ABI uint32_t getType() const

friend class COFFObjectFile

Definition COFF.h:1378

LLVM_ABI arm64x_reloc_iterator arm64x_reloc_end() const

LLVM_ABI iterator_range< arm64x_reloc_iterator > arm64x_relocs() const

DynamicRelocRef(const void *Header, const COFFObjectFile *Owner)

Definition COFF.h:1360

LLVM_ABI bool operator==(const ExportDirectoryEntryRef &Other) const

LLVM_ABI Error getDllName(StringRef &Result) const

ExportDirectoryEntryRef(const export_directory_table_entry *Table, uint32_t I, const COFFObjectFile *Owner)

Definition COFF.h:1292

LLVM_ABI Error getExportRVA(uint32_t &Result) const

LLVM_ABI Error getOrdinalBase(uint32_t &Result) const

LLVM_ABI Error getOrdinal(uint32_t &Result) const

LLVM_ABI Error isForwarder(bool &Result) const

LLVM_ABI Error getForwardTo(StringRef &Result) const

LLVM_ABI Error getSymbolName(StringRef &Result) const

ExportDirectoryEntryRef()=default

LLVM_ABI bool operator==(const ImportDirectoryEntryRef &Other) const

LLVM_ABI imported_symbol_iterator imported_symbol_end() const

LLVM_ABI imported_symbol_iterator imported_symbol_begin() const

LLVM_ABI Error getImportLookupTableRVA(uint32_t &Result) const

LLVM_ABI Error getImportTableEntry(const coff_import_directory_table_entry *&Result) const

LLVM_ABI imported_symbol_iterator lookup_table_end() const

ImportDirectoryEntryRef(const coff_import_directory_table_entry *Table, uint32_t I, const COFFObjectFile *Owner)

Definition COFF.h:1234

ImportDirectoryEntryRef()=default

LLVM_ABI iterator_range< imported_symbol_iterator > lookup_table_symbols() const

LLVM_ABI iterator_range< imported_symbol_iterator > imported_symbols() const

LLVM_ABI imported_symbol_iterator lookup_table_begin() const

LLVM_ABI Error getImportAddressTableRVA(uint32_t &Result) const

LLVM_ABI Error getName(StringRef &Result) const

LLVM_ABI bool operator==(const ImportedSymbolRef &Other) const

LLVM_ABI Error getHintNameRVA(uint32_t &Result) const

ImportedSymbolRef(const import_lookup_table_entry32 *Entry, uint32_t I, const COFFObjectFile *Owner)

Definition COFF.h:1317

LLVM_ABI Error getOrdinal(uint16_t &Result) const

ImportedSymbolRef()=default

LLVM_ABI Error getSymbolName(StringRef &Result) const

ImportedSymbolRef(const import_lookup_table_entry64 *Entry, uint32_t I, const COFFObjectFile *Owner)

Definition COFF.h:1320

LLVM_ABI Error isOrdinal(bool &Result) const

const uint8_t * base() const

ObjectFile(unsigned int Type, MemoryBufferRef Source)

This is a value type class that represents a single relocation in the list of relocations in the obje...

LLVM_ABI Expected< const coff_resource_dir_table & > getBaseTable()

LLVM_ABI Expected< const coff_resource_dir_table & > getEntrySubDir(const coff_resource_dir_entry &Entry)

LLVM_ABI Expected< const coff_resource_data_entry & > getEntryData(const coff_resource_dir_entry &Entry)

ResourceSectionRef(StringRef Ref)

Definition COFF.h:1416

ResourceSectionRef()=default

LLVM_ABI Expected< ArrayRef< UTF16 > > getEntryNameString(const coff_resource_dir_entry &Entry)

LLVM_ABI Expected< StringRef > getContents(const coff_resource_data_entry &Entry)

LLVM_ABI Expected< const coff_resource_dir_entry & > getTableEntry(const coff_resource_dir_table &Table, uint32_t Index)

This is a value type class that represents a single section in the list of sections in the object fil...

SectionStrippedError()

Definition COFF.h:1478

This is a value type class that represents a single symbol in the list of symbols in the object file.

This provides a very simple, boring adaptor for a begin and end iterator into a range type.

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

@ IMAGE_FILE_MACHINE_ARM64

@ IMAGE_FILE_MACHINE_AMD64

@ IMAGE_FILE_MACHINE_ARM64EC

@ IMAGE_FILE_MACHINE_ARM64X

@ IMAGE_SCN_LNK_NRELOC_OVFL

@ IMAGE_SYM_CLASS_SECTION

Line number, reformatted as symbol.

@ IMAGE_SYM_CLASS_FUNCTION

".bf" or ".ef" - beginning or end of function

@ IMAGE_SYM_CLASS_EXTERNAL

External symbol.

@ IMAGE_SYM_CLASS_FILE

File name.

@ IMAGE_SYM_CLASS_CLR_TOKEN

External symbol in dmert public lib.

@ IMAGE_SYM_CLASS_WEAK_EXTERNAL

Duplicate tag.

@ IMAGE_SYM_CLASS_STATIC

Static.

const int32_t MaxNumberOfSections16

bool isReservedSectionNumber(int32_t SectionNumber)

@ IMAGE_SYM_TYPE_NULL

No type information or unknown base type.

@ IMAGE_SYM_DTYPE_FUNCTION

A function that returns a base type.

@ SCT_COMPLEX_TYPE_SHIFT

Type is formed as (base + (derived << SCT_COMPLEX_TYPE_SHIFT))

static constexpr const StringLiteral & getSectionName(DebugSectionKind SectionKind)

Return the name of the section.

Expected< const typename ELFT::Shdr * > getSection(typename ELFT::ShdrRange Sections, uint32_t Index)

content_iterator< SectionRef > section_iterator

coff_tls_directory< support::little64_t > coff_tls_directory64

Definition COFF.h:607

content_iterator< BaseRelocRef > base_reloc_iterator

Definition COFF.h:53

support::ulittle16_t export_ordinal_table_entry

Definition COFF.h:247

content_iterator< ExportDirectoryEntryRef > export_directory_iterator

Definition COFF.h:51

content_iterator< BasicSymbolRef > basic_symbol_iterator

content_iterator< ImportedSymbolRef > imported_symbol_iterator

Definition COFF.h:52

content_iterator< ImportDirectoryEntryRef > import_directory_iterator

Definition COFF.h:48

coff_tls_directory< support::little32_t > coff_tls_directory32

Definition COFF.h:606

support::ulittle32_t export_name_pointer_table_entry

Definition COFF.h:246

import_lookup_table_entry< support::little32_t > import_lookup_table_entry32

Definition COFF.h:210

coff_symbol< support::ulittle16_t > coff_symbol16

Definition COFF.h:270

import_lookup_table_entry< support::little64_t > import_lookup_table_entry64

Definition COFF.h:212

frame_type

Definition COFF.h:609

@ Fpo

Definition COFF.h:609

@ Tss

Definition COFF.h:609

@ Trap

Definition COFF.h:609

@ NonFpo

Definition COFF.h:609

coff_symbol< support::ulittle32_t > coff_symbol32

Definition COFF.h:271

content_iterator< RelocationRef > relocation_iterator

content_iterator< DynamicRelocRef > dynamic_reloc_iterator

Definition COFF.h:54

content_iterator< Arm64XRelocRef > arm64x_reloc_iterator

Definition COFF.h:55

content_iterator< DelayImportDirectoryEntryRef > delay_import_directory_iterator

Definition COFF.h:49

chpe_range_type

Definition COFF.h:762

@ Arm64EC

Definition COFF.h:762

@ Amd64

Definition COFF.h:762

@ Arm64

Definition COFF.h:762

detail::packed_endian_specific_integral< uint64_t, llvm::endianness::little, unaligned > ulittle64_t

detail::packed_endian_specific_integral< uint32_t, llvm::endianness::little, unaligned > ulittle32_t

detail::packed_endian_specific_integral< uint16_t, llvm::endianness::little, unaligned > ulittle16_t

This is an optimization pass for GlobalISel generic memory operations.

iterator_range< T > make_range(T x, T y)

Convenience function for iterating over sub-ranges.

unsigned Log2_32(uint32_t Value)

Return the floor log base 2 of the specified value, -1 if the value is zero.

constexpr bool isPowerOf2_32(uint32_t Value)

Return true if the argument is a power of two > 0.

@ Ref

The access may reference the value stored in memory.

LLVM_ABI Error errorCodeToError(std::error_code EC)

Helper for converting an std::error_code to a Error.

constexpr T maskTrailingOnes(unsigned N)

Create a bitmask with the N right-most bits set to 1, and all other bits set to 0.

This struct is a compact representation of a valid (non-zero power of two) alignment.

support::ulittle32_t NumLocals

Definition COFF.h:1455

bool hasSEH() const

Definition COFF.h:1466

bool useBP() const

Definition COFF.h:1469

int getNumSavedRegs() const

Definition COFF.h:1463

support::ulittle32_t Size

Definition COFF.h:1454

int getPrologSize() const

Definition COFF.h:1460

frame_type getFP() const

Definition COFF.h:1472

support::ulittle16_t NumParams

Definition COFF.h:1456

support::ulittle16_t Attributes

Definition COFF.h:1457

support::ulittle32_t Offset

Definition COFF.h:1453

support::ulittle32_t Offset

Definition COFF.h:251

support::ulittle32_t Zeroes

Definition COFF.h:250

support::ulittle32_t EntryPoint

Definition COFF.h:778

support::ulittle32_t StartRva

Definition COFF.h:776

support::ulittle32_t EndRva

Definition COFF.h:777

support::ulittle32_t Length

Definition COFF.h:766

static constexpr uint32_t TypeMask

Definition COFF.h:769

support::ulittle32_t StartOffset

Definition COFF.h:765

uint32_t getStart() const

Definition COFF.h:771

uint16_t getType() const

Definition COFF.h:772

support::ulittle32_t Source

Definition COFF.h:782

support::ulittle32_t Destination

Definition COFF.h:783

support::ulittle32_t PointerToNextFunction

Definition COFF.h:504

char Unused2[6]

Definition COFF.h:503

char Unused1[4]

Definition COFF.h:501

char Unused3[2]

Definition COFF.h:505

support::ulittle16_t Linenumber

Definition COFF.h:502

uint8_t Reserved

Definition COFF.h:542

uint8_t AuxType

Definition COFF.h:541

char MBZ[12]

Definition COFF.h:544

support::ulittle32_t SymbolTableIndex

Definition COFF.h:543

support::ulittle32_t PointerToLinenumber

Definition COFF.h:492

support::ulittle32_t TotalSize

Definition COFF.h:491

char Unused1[2]

Definition COFF.h:494

support::ulittle32_t TagIndex

Definition COFF.h:490

support::ulittle32_t PointerToNextFunction

Definition COFF.h:493

uint8_t Selection

Definition COFF.h:526

support::ulittle16_t NumberOfLinenumbers

Definition COFF.h:523

support::ulittle32_t CheckSum

Definition COFF.h:524

int32_t getNumber(bool IsBigObj) const

Definition COFF.h:529

support::ulittle16_t NumberHighPart

Definition COFF.h:528

support::ulittle16_t NumberLowPart

Definition COFF.h:525

support::ulittle32_t Length

Definition COFF.h:521

support::ulittle16_t NumberOfRelocations

Definition COFF.h:522

uint8_t Unused

Definition COFF.h:527

support::ulittle32_t Characteristics

Definition COFF.h:513

char Unused1[10]

Definition COFF.h:514

support::ulittle32_t TagIndex

Definition COFF.h:512

support::ulittle16_t Data

Definition COFF.h:798

int getOffset() const

Definition COFF.h:801

int getType() const

Definition COFF.h:800

support::ulittle32_t Version

Definition COFF.h:850

support::ulittle32_t Size

Definition COFF.h:851

support::ulittle32_t HeaderSize

Definition COFF.h:865

support::ulittle32_t Symbol

Definition COFF.h:867

support::ulittle32_t FixupInfoSize

Definition COFF.h:866

support::ulittle32_t SymbolGroup

Definition COFF.h:868

support::ulittle32_t Flags

Definition COFF.h:869

support::ulittle32_t BaseRelocSize

Definition COFF.h:856

support::ulittle32_t Symbol

Definition COFF.h:855

support::ulittle32_t HeaderSize

Definition COFF.h:873

support::ulittle32_t SymbolGroup

Definition COFF.h:876

support::ulittle32_t FixupInfoSize

Definition COFF.h:874

support::ulittle32_t Flags

Definition COFF.h:877

support::ulittle64_t Symbol

Definition COFF.h:875

support::ulittle32_t BaseRelocSize

Definition COFF.h:861

support::ulittle64_t Symbol

Definition COFF.h:860

support::ulittle32_t TimeDateStamp

Definition COFF.h:566

support::ulittle32_t ImportAddressTableRVA

Definition COFF.h:569

support::ulittle32_t ForwarderChain

Definition COFF.h:567

bool isNull() const

Definition COFF.h:571

support::ulittle32_t NameRVA

Definition COFF.h:568

support::ulittle32_t ImportLookupTableRVA

Definition COFF.h:565

support::ulittle16_t Flags

Definition COFF.h:612

support::ulittle32_t Reserved

Definition COFF.h:615

support::ulittle16_t Catalog

Definition COFF.h:613

support::ulittle32_t CatalogOffset

Definition COFF.h:614

32-bit load config (IMAGE_LOAD_CONFIG_DIRECTORY32)

Definition COFF.h:619

support::ulittle16_t MinorVersion

Definition COFF.h:623

support::ulittle32_t SEHandlerCount

Definition COFF.h:639

support::ulittle32_t GuardAddressTakenIatEntryCount

Definition COFF.h:651

support::ulittle32_t GuardRFFailureRoutineFunctionPointer

Definition COFF.h:657

support::ulittle32_t DynamicValueRelocTable

Definition COFF.h:654

support::ulittle32_t GuardCFCheckFunction

Definition COFF.h:642

support::ulittle32_t GuardRFVerifyStackPointerFunctionPointer

Definition COFF.h:661

support::ulittle32_t GuardEHContinuationTable

Definition COFF.h:668

support::ulittle32_t Size

Definition COFF.h:620

support::ulittle32_t SEHandlerTable

Definition COFF.h:638

support::ulittle32_t LockPrefixTable

Definition COFF.h:629

support::ulittle16_t CSDVersion

Definition COFF.h:634

support::ulittle16_t Reserved2

Definition COFF.h:660

support::ulittle32_t CHPEMetadataPointer

Definition COFF.h:655

support::ulittle32_t VirtualMemoryThreshold

Definition COFF.h:631

support::ulittle32_t GuardCFFunctionCount

Definition COFF.h:645

support::ulittle32_t DeCommitFreeBlockThreshold

Definition COFF.h:627

support::ulittle32_t ProcessAffinityMask

Definition COFF.h:632

support::ulittle32_t MaximumAllocationSize

Definition COFF.h:630

support::ulittle32_t EnclaveConfigurationPointer

Definition COFF.h:666

support::ulittle16_t DependentLoadFlags

Definition COFF.h:635

support::ulittle32_t TimeDateStamp

Definition COFF.h:621

support::ulittle32_t GuardXFGCheckFunctionPointer

Definition COFF.h:670

support::ulittle32_t GuardCFCheckDispatch

Definition COFF.h:643

support::ulittle32_t GuardLongJumpTargetCount

Definition COFF.h:653

support::ulittle32_t GuardLongJumpTargetTable

Definition COFF.h:652

support::ulittle32_t Reserved3

Definition COFF.h:665

support::ulittle32_t GuardAddressTakenIatEntryTable

Definition COFF.h:650

support::ulittle32_t CriticalSectionDefaultTimeout

Definition COFF.h:626

support::ulittle32_t GuardEHContinuationCount

Definition COFF.h:669

support::ulittle16_t DynamicValueRelocTableSection

Definition COFF.h:659

support::ulittle32_t GuardXFGTableDispatchFunctionPointer

Definition COFF.h:672

support::ulittle32_t GuardCFFunctionTable

Definition COFF.h:644

support::ulittle32_t GuardFlags

Definition COFF.h:646

support::ulittle32_t SecurityCookie

Definition COFF.h:637

support::ulittle32_t HotPatchTableOffset

Definition COFF.h:662

coff_load_config_code_integrity CodeIntegrity

Definition COFF.h:649

support::ulittle16_t MajorVersion

Definition COFF.h:622

support::ulittle32_t ProcessHeapFlags

Definition COFF.h:633

support::ulittle32_t GuardXFGDispatchFunctionPointer

Definition COFF.h:671

support::ulittle32_t GuardRFFailureRoutine

Definition COFF.h:656

support::ulittle32_t DynamicValueRelocTableOffset

Definition COFF.h:658

support::ulittle32_t DeCommitTotalFreeThreshold

Definition COFF.h:628

support::ulittle32_t GlobalFlagsSet

Definition COFF.h:625

support::ulittle32_t EditList

Definition COFF.h:636

support::ulittle32_t GlobalFlagsClear

Definition COFF.h:624

support::ulittle32_t CastGuardOsDeterminedFailureMode

Definition COFF.h:673

support::ulittle32_t VolatileMetadataPointer

Definition COFF.h:667

64-bit load config (IMAGE_LOAD_CONFIG_DIRECTORY64)

Definition COFF.h:677

support::ulittle64_t VirtualMemoryThreshold

Definition COFF.h:689

support::ulittle32_t TimeDateStamp

Definition COFF.h:679

support::ulittle64_t GuardCFFunctionCount

Definition COFF.h:703

support::ulittle32_t GuardFlags

Definition COFF.h:704

support::ulittle64_t VolatileMetadataPointer

Definition COFF.h:725

support::ulittle16_t MinorVersion

Definition COFF.h:681

support::ulittle16_t MajorVersion

Definition COFF.h:680

support::ulittle64_t GuardRFFailureRoutineFunctionPointer

Definition COFF.h:715

support::ulittle32_t DynamicValueRelocTableOffset

Definition COFF.h:716

support::ulittle16_t DependentLoadFlags

Definition COFF.h:693

support::ulittle16_t Reserved2

Definition COFF.h:718

support::ulittle32_t GlobalFlagsSet

Definition COFF.h:683

support::ulittle64_t GuardAddressTakenIatEntryTable

Definition COFF.h:708

support::ulittle64_t EditList

Definition COFF.h:694

support::ulittle64_t DeCommitFreeBlockThreshold

Definition COFF.h:685

support::ulittle64_t GuardXFGCheckFunctionPointer

Definition COFF.h:728

coff_load_config_code_integrity CodeIntegrity

Definition COFF.h:707

support::ulittle64_t DynamicValueRelocTable

Definition COFF.h:712

support::ulittle64_t ProcessAffinityMask

Definition COFF.h:690

support::ulittle64_t DeCommitTotalFreeThreshold

Definition COFF.h:686

support::ulittle64_t GuardAddressTakenIatEntryCount

Definition COFF.h:709

support::ulittle64_t GuardEHContinuationCount

Definition COFF.h:727

support::ulittle64_t GuardRFFailureRoutine

Definition COFF.h:714

support::ulittle32_t CriticalSectionDefaultTimeout

Definition COFF.h:684

support::ulittle64_t GuardCFFunctionTable

Definition COFF.h:702

support::ulittle64_t GuardLongJumpTargetTable

Definition COFF.h:710

support::ulittle64_t SEHandlerTable

Definition COFF.h:696

support::ulittle64_t MaximumAllocationSize

Definition COFF.h:688

support::ulittle64_t SEHandlerCount

Definition COFF.h:697

support::ulittle64_t GuardCFCheckFunction

Definition COFF.h:700

support::ulittle32_t Reserved3

Definition COFF.h:723

support::ulittle32_t HotPatchTableOffset

Definition COFF.h:720

support::ulittle64_t GuardCFCheckDispatch

Definition COFF.h:701

support::ulittle64_t GuardXFGTableDispatchFunctionPointer

Definition COFF.h:730

support::ulittle64_t SecurityCookie

Definition COFF.h:695

support::ulittle64_t GuardEHContinuationTable

Definition COFF.h:726

support::ulittle64_t LockPrefixTable

Definition COFF.h:687

support::ulittle16_t CSDVersion

Definition COFF.h:692

support::ulittle64_t CastGuardOsDeterminedFailureMode

Definition COFF.h:731

support::ulittle32_t GlobalFlagsClear

Definition COFF.h:682

support::ulittle32_t ProcessHeapFlags

Definition COFF.h:691

support::ulittle16_t DynamicValueRelocTableSection

Definition COFF.h:717

support::ulittle64_t CHPEMetadataPointer

Definition COFF.h:713

support::ulittle64_t GuardXFGDispatchFunctionPointer

Definition COFF.h:729

support::ulittle64_t GuardRFVerifyStackPointerFunctionPointer

Definition COFF.h:719

support::ulittle64_t GuardLongJumpTargetCount

Definition COFF.h:711

support::ulittle64_t EnclaveConfigurationPointer

Definition COFF.h:724

support::ulittle32_t Size

Definition COFF.h:678

support::ulittle16_t Type

Definition COFF.h:486

support::ulittle32_t SymbolTableIndex

Definition COFF.h:485

support::ulittle32_t VirtualAddress

Definition COFF.h:484

support::ulittle32_t Reserved

Definition COFF.h:831

support::ulittle32_t DataSize

Definition COFF.h:829

support::ulittle32_t Codepage

Definition COFF.h:830

support::ulittle32_t DataRVA

Definition COFF.h:828

support::ulittle32_t NameOffset

Definition COFF.h:806

support::ulittle32_t DataEntryOffset

Definition COFF.h:816

support::ulittle32_t ID

Definition COFF.h:807

support::ulittle32_t SubdirOffset

Definition COFF.h:817

support::ulittle16_t NumberOfNameEntries

Definition COFF.h:839

support::ulittle32_t Characteristics

Definition COFF.h:835

support::ulittle16_t NumberOfIDEntries

Definition COFF.h:840

support::ulittle32_t TimeDateStamp

Definition COFF.h:836

support::ulittle16_t MinorVersion

Definition COFF.h:838

support::ulittle16_t MajorVersion

Definition COFF.h:837

support::ulittle32_t BeginAddress

Definition COFF.h:787

support::ulittle32_t UnwindInformation

Definition COFF.h:789

support::ulittle32_t EndAddress

Definition COFF.h:788

support::ulittle32_t PointerToRawData

Definition COFF.h:454

char Name[COFF::NameSize]

Definition COFF.h:450

support::ulittle32_t VirtualSize

Definition COFF.h:451

bool hasExtendedRelocations() const

Definition COFF.h:463

uint32_t getAlignment() const

Definition COFF.h:468

support::ulittle32_t Characteristics

Definition COFF.h:459

support::ulittle16_t NumberOfLinenumbers

Definition COFF.h:458

support::ulittle32_t SizeOfRawData

Definition COFF.h:453

support::ulittle32_t VirtualAddress

Definition COFF.h:452

support::ulittle32_t PointerToRelocations

Definition COFF.h:455

support::ulittle16_t NumberOfRelocations

Definition COFF.h:457

support::ulittle32_t PointerToLinenumbers

Definition COFF.h:456

union llvm::object::coff_symbol_generic::@340141142036315122365305244060341126112054133072 Name

support::ulittle32_t Value

Definition COFF.h:279

StringTableOffset Offset

Definition COFF.h:277

char ShortName[COFF::NameSize]

Definition COFF.h:276

StringTableOffset Offset

Definition COFF.h:258

union llvm::object::coff_symbol::@265345154330271214162033131142206023012313265335 Name

support::ulittle16_t SectionNumber

Definition COFF.h:262

support::ulittle32_t Value

Definition COFF.h:261

char ShortName[COFF::NameSize]

Definition COFF.h:257

support::ulittle16_t Type

Definition COFF.h:264

uint8_t NumberOfAuxSymbols

Definition COFF.h:267

uint8_t StorageClass

Definition COFF.h:266

support::ulittle32_t SizeOfZeroFill

Definition COFF.h:583

uint32_t getAlignment() const

Definition COFF.h:586

support::little32_t AddressOfIndex

Definition COFF.h:581

support::little32_t AddressOfCallBacks

Definition COFF.h:582

support::little32_t StartAddressOfRawData

Definition COFF.h:579

support::ulittle32_t Characteristics

Definition COFF.h:584

void setAlignment(uint32_t Align)

Definition COFF.h:594

support::little32_t EndAddressOfRawData

Definition COFF.h:580

support::ulittle32_t RelativeVirtualAddress

Definition COFF.h:178

support::ulittle32_t Size

Definition COFF.h:179

support::ulittle16_t MajorVersion

Definition COFF.h:185

support::ulittle32_t SizeOfData

Definition COFF.h:188

support::ulittle32_t PointerToRawData

Definition COFF.h:190

support::ulittle32_t AddressOfRawData

Definition COFF.h:189

support::ulittle32_t TimeDateStamp

Definition COFF.h:184

support::ulittle32_t Type

Definition COFF.h:187

support::ulittle32_t Characteristics

Definition COFF.h:183

support::ulittle16_t MinorVersion

Definition COFF.h:186

support::ulittle32_t DelayImportNameTable

Definition COFF.h:221

support::ulittle32_t DelayImportAddressTable

Definition COFF.h:220

support::ulittle32_t Name

Definition COFF.h:218

support::ulittle32_t UnloadDelayImportTable

Definition COFF.h:223

support::ulittle32_t BoundDelayImportTable

Definition COFF.h:222

support::ulittle32_t TimeStamp

Definition COFF.h:224

support::ulittle32_t Attributes

Definition COFF.h:217

support::ulittle32_t ModuleHandle

Definition COFF.h:219

support::ulittle32_t OrdinalBase

Definition COFF.h:233

support::ulittle32_t ExportAddressTableRVA

Definition COFF.h:236

support::ulittle32_t NameRVA

Definition COFF.h:232

support::ulittle32_t NumberOfNamePointers

Definition COFF.h:235

support::ulittle32_t NamePointerRVA

Definition COFF.h:237

support::ulittle32_t ExportFlags

Definition COFF.h:228

support::ulittle32_t AddressTableEntries

Definition COFF.h:234

support::ulittle16_t MinorVersion

Definition COFF.h:231

support::ulittle16_t MajorVersion

Definition COFF.h:230

support::ulittle32_t TimeDateStamp

Definition COFF.h:229

support::ulittle32_t OrdinalTableRVA

Definition COFF.h:238

bool isOrdinal() const

Definition COFF.h:197

uint32_t getHintNameRVA() const

Definition COFF.h:204

support::little32_t Data

Definition COFF.h:195

uint16_t getOrdinal() const

Definition COFF.h:199

support::ulittle32_t ExportRVA

Definition COFF.h:242

support::ulittle32_t ForwarderRVA

Definition COFF.h:243