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(() && "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