LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Support/COFF.h
Go to the documentation of this file.
1 //===-- llvm/Support/COFF.h -------------------------------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains an definitions used in Windows COFF Files.
11 //
12 // Structures and enums defined within this file where created using
13 // information from Microsoft's publicly available PE/COFF format document:
14 //
15 // Microsoft Portable Executable and Common Object File Format Specification
16 // Revision 8.1 - February 15, 2008
17 //
18 // As of 5/2/2010, hosted by Microsoft at:
19 // http://www.microsoft.com/whdc/system/platform/firmware/pecoff.mspx
20 //
21 //===----------------------------------------------------------------------===//
22 
23 #ifndef LLVM_SUPPORT_COFF_H
24 #define LLVM_SUPPORT_COFF_H
25 
26 #include "llvm/Support/DataTypes.h"
27 #include <cassert>
28 #include <cstring>
29 
30 namespace llvm {
31 namespace COFF {
32 
33  // The PE signature bytes that follows the DOS stub header.
34  static const char PEMagic[] = { 'P', 'E', '\0', '\0' };
35 
36  // Sizes in bytes of various things in the COFF format.
37  enum {
38  HeaderSize = 20,
39  NameSize = 8,
40  SymbolSize = 18,
43  };
44 
45  struct header {
46  uint16_t Machine;
47  uint16_t NumberOfSections;
48  uint32_t TimeDateStamp;
50  uint32_t NumberOfSymbols;
52  uint16_t Characteristics;
53  };
54 
55  enum MachineTypes {
56  MT_Invalid = 0xffff,
57 
79  };
80 
82  C_Invalid = 0,
83 
84  /// The file does not contain base relocations and must be loaded at its
85  /// preferred base. If this cannot be done, the loader will error.
87  /// The file is valid and can be run.
89  /// COFF line numbers have been stripped. This is deprecated and should be
90  /// 0.
92  /// COFF symbol table entries for local symbols have been removed. This is
93  /// deprecated and should be 0.
95  /// Aggressively trim working set. This is deprecated and must be 0.
97  /// Image can handle > 2GiB addresses.
99  /// Little endian: the LSB precedes the MSB in memory. This is deprecated
100  /// and should be 0.
102  /// Machine is based on a 32bit word architecture.
104  /// Debugging info has been removed.
106  /// If the image is on removable media, fully load it and copy it to swap.
108  /// If the image is on network media, fully load it and copy it to swap.
110  /// The image file is a system file, not a user program.
112  /// The image file is a DLL.
113  IMAGE_FILE_DLL = 0x2000,
114  /// This file should only be run on a uniprocessor machine.
116  /// Big endian: the MSB precedes the LSB in memory. This is deprecated
117  /// and should be 0.
119  };
120 
121  struct symbol {
122  char Name[NameSize];
123  uint32_t Value;
124  uint16_t SectionNumber;
125  uint16_t Type;
126  uint8_t StorageClass;
128  };
129 
130  enum SymbolFlags {
131  SF_TypeMask = 0x0000FFFF,
133 
134  SF_ClassMask = 0x00FF0000,
136 
137  SF_WeakExternal = 0x01000000
138  };
139 
144  };
145 
146  /// Storage class tells where and what the symbol represents
148  SSC_Invalid = 0xff,
149 
150  IMAGE_SYM_CLASS_END_OF_FUNCTION = -1, ///< Physical end of function
151  IMAGE_SYM_CLASS_NULL = 0, ///< No symbol
152  IMAGE_SYM_CLASS_AUTOMATIC = 1, ///< Stack variable
153  IMAGE_SYM_CLASS_EXTERNAL = 2, ///< External symbol
154  IMAGE_SYM_CLASS_STATIC = 3, ///< Static
155  IMAGE_SYM_CLASS_REGISTER = 4, ///< Register variable
156  IMAGE_SYM_CLASS_EXTERNAL_DEF = 5, ///< External definition
157  IMAGE_SYM_CLASS_LABEL = 6, ///< Label
158  IMAGE_SYM_CLASS_UNDEFINED_LABEL = 7, ///< Undefined label
159  IMAGE_SYM_CLASS_MEMBER_OF_STRUCT = 8, ///< Member of structure
160  IMAGE_SYM_CLASS_ARGUMENT = 9, ///< Function argument
161  IMAGE_SYM_CLASS_STRUCT_TAG = 10, ///< Structure tag
162  IMAGE_SYM_CLASS_MEMBER_OF_UNION = 11, ///< Member of union
163  IMAGE_SYM_CLASS_UNION_TAG = 12, ///< Union tag
164  IMAGE_SYM_CLASS_TYPE_DEFINITION = 13, ///< Type definition
165  IMAGE_SYM_CLASS_UNDEFINED_STATIC = 14, ///< Undefined static
166  IMAGE_SYM_CLASS_ENUM_TAG = 15, ///< Enumeration tag
167  IMAGE_SYM_CLASS_MEMBER_OF_ENUM = 16, ///< Member of enumeration
168  IMAGE_SYM_CLASS_REGISTER_PARAM = 17, ///< Register parameter
169  IMAGE_SYM_CLASS_BIT_FIELD = 18, ///< Bit field
170  /// ".bb" or ".eb" - beginning or end of block
172  /// ".bf" or ".ef" - beginning or end of function
174  IMAGE_SYM_CLASS_END_OF_STRUCT = 102, ///< End of structure
175  IMAGE_SYM_CLASS_FILE = 103, ///< File name
176  /// Line number, reformatted as symbol
178  IMAGE_SYM_CLASS_WEAK_EXTERNAL = 105, ///< Duplicate tag
179  /// External symbol in dmert public lib
181  };
182 
184  IMAGE_SYM_TYPE_NULL = 0, ///< No type information or unknown base type.
185  IMAGE_SYM_TYPE_VOID = 1, ///< Used with void pointers and functions.
186  IMAGE_SYM_TYPE_CHAR = 2, ///< A character (signed byte).
187  IMAGE_SYM_TYPE_SHORT = 3, ///< A 2-byte signed integer.
188  IMAGE_SYM_TYPE_INT = 4, ///< A natural integer type on the target.
189  IMAGE_SYM_TYPE_LONG = 5, ///< A 4-byte signed integer.
190  IMAGE_SYM_TYPE_FLOAT = 6, ///< A 4-byte floating-point number.
191  IMAGE_SYM_TYPE_DOUBLE = 7, ///< An 8-byte floating-point number.
192  IMAGE_SYM_TYPE_STRUCT = 8, ///< A structure.
193  IMAGE_SYM_TYPE_UNION = 9, ///< An union.
194  IMAGE_SYM_TYPE_ENUM = 10, ///< An enumerated type.
195  IMAGE_SYM_TYPE_MOE = 11, ///< A member of enumeration (a specific value).
196  IMAGE_SYM_TYPE_BYTE = 12, ///< A byte; unsigned 1-byte integer.
197  IMAGE_SYM_TYPE_WORD = 13, ///< A word; unsigned 2-byte integer.
198  IMAGE_SYM_TYPE_UINT = 14, ///< An unsigned integer of natural size.
199  IMAGE_SYM_TYPE_DWORD = 15 ///< An unsigned 4-byte integer.
200  };
201 
203  IMAGE_SYM_DTYPE_NULL = 0, ///< No complex type; simple scalar variable.
204  IMAGE_SYM_DTYPE_POINTER = 1, ///< A pointer to base type.
205  IMAGE_SYM_DTYPE_FUNCTION = 2, ///< A function that returns a base type.
206  IMAGE_SYM_DTYPE_ARRAY = 3, ///< An array of base type.
207 
208  /// Type is formed as (base + (derived << SCT_COMPLEX_TYPE_SHIFT))
210  };
211 
212  struct section {
213  char Name[NameSize];
214  uint32_t VirtualSize;
215  uint32_t VirtualAddress;
216  uint32_t SizeOfRawData;
222  uint32_t Characteristics;
223  };
224 
225  enum SectionCharacteristics LLVM_ENUM_INT_TYPE(uint32_t) {
226  SC_Invalid = 0xffffffff,
227 
228  IMAGE_SCN_TYPE_NO_PAD = 0x00000008,
229  IMAGE_SCN_CNT_CODE = 0x00000020,
230  IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040,
231  IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080,
232  IMAGE_SCN_LNK_OTHER = 0x00000100,
233  IMAGE_SCN_LNK_INFO = 0x00000200,
234  IMAGE_SCN_LNK_REMOVE = 0x00000800,
235  IMAGE_SCN_LNK_COMDAT = 0x00001000,
236  IMAGE_SCN_GPREL = 0x00008000,
237  IMAGE_SCN_MEM_PURGEABLE = 0x00020000,
238  IMAGE_SCN_MEM_16BIT = 0x00020000,
239  IMAGE_SCN_MEM_LOCKED = 0x00040000,
240  IMAGE_SCN_MEM_PRELOAD = 0x00080000,
241  IMAGE_SCN_ALIGN_1BYTES = 0x00100000,
242  IMAGE_SCN_ALIGN_2BYTES = 0x00200000,
243  IMAGE_SCN_ALIGN_4BYTES = 0x00300000,
244  IMAGE_SCN_ALIGN_8BYTES = 0x00400000,
245  IMAGE_SCN_ALIGN_16BYTES = 0x00500000,
246  IMAGE_SCN_ALIGN_32BYTES = 0x00600000,
247  IMAGE_SCN_ALIGN_64BYTES = 0x00700000,
248  IMAGE_SCN_ALIGN_128BYTES = 0x00800000,
249  IMAGE_SCN_ALIGN_256BYTES = 0x00900000,
250  IMAGE_SCN_ALIGN_512BYTES = 0x00A00000,
251  IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000,
252  IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000,
253  IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000,
254  IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000,
255  IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000,
256  IMAGE_SCN_MEM_DISCARDABLE = 0x02000000,
257  IMAGE_SCN_MEM_NOT_CACHED = 0x04000000,
258  IMAGE_SCN_MEM_NOT_PAGED = 0x08000000,
259  IMAGE_SCN_MEM_SHARED = 0x10000000,
260  IMAGE_SCN_MEM_EXECUTE = 0x20000000,
261  IMAGE_SCN_MEM_READ = 0x40000000,
262  IMAGE_SCN_MEM_WRITE = 0x80000000
263  };
264 
265  struct relocation {
266  uint32_t VirtualAddress;
268  uint16_t Type;
269  };
270 
283 
301  };
302 
319  };
320 
321  enum COMDATType {
329  };
330 
331  // Auxiliary Symbol Formats
333  uint32_t TagIndex;
334  uint32_t TotalSize;
337  uint8_t unused[2];
338  };
339 
341  uint8_t unused1[4];
342  uint16_t Linenumber;
343  uint8_t unused2[6];
345  uint8_t unused3[2];
346  };
347 
349  uint32_t TagIndex;
350  uint32_t Characteristics;
351  uint8_t unused[10];
352  };
353 
354  /// These are not documented in the spec, but are located in WinNT.h.
359  };
360 
361  struct AuxiliaryFile {
362  uint8_t FileName[18];
363  };
364 
366  uint32_t Length;
369  uint32_t CheckSum;
370  uint16_t Number;
371  uint8_t Selection;
372  uint8_t unused[3];
373  };
374 
375  union Auxiliary {
381  };
382 
383  /// @brief The Import Directory Table.
384  ///
385  /// There is a single array of these and one entry per imported DLL.
388  uint32_t TimeDateStamp;
389  uint32_t ForwarderChain;
390  uint32_t NameRVA;
392  };
393 
394  /// @brief The PE32 Import Lookup Table.
395  ///
396  /// There is an array of these for each imported DLL. It represents either
397  /// the ordinal to import from the target DLL, or a name to lookup and import
398  /// from the target DLL.
399  ///
400  /// This also happens to be the same format used by the Import Address Table
401  /// when it is initially written out to the image.
403  uint32_t data;
404 
405  /// @brief Is this entry specified by ordinal, or name?
406  bool isOrdinal() const { return data & 0x80000000; }
407 
408  /// @brief Get the ordinal value of this entry. isOrdinal must be true.
409  uint16_t getOrdinal() const {
410  assert(isOrdinal() && "ILT entry is not an ordinal!");
411  return data & 0xFFFF;
412  }
413 
414  /// @brief Set the ordinal value and set isOrdinal to true.
415  void setOrdinal(uint16_t o) {
416  data = o;
417  data |= 0x80000000;
418  }
419 
420  /// @brief Get the Hint/Name entry RVA. isOrdinal must be false.
421  uint32_t getHintNameRVA() const {
422  assert(!isOrdinal() && "ILT entry is not a Hint/Name RVA!");
423  return data;
424  }
425 
426  /// @brief Set the Hint/Name entry RVA and set isOrdinal to false.
427  void setHintNameRVA(uint32_t rva) { data = rva; }
428  };
429 
430  /// @brief The DOS compatible header at the front of all PEs.
431  struct DOSHeader {
432  uint16_t Magic;
434  uint16_t FileSizeInPages;
440  uint16_t InitialSP;
441  uint16_t Checksum;
442  uint16_t InitialIP;
445  uint16_t OverlayNumber;
446  uint16_t Reserved[4];
447  uint16_t OEMid;
448  uint16_t OEMinfo;
449  uint16_t Reserved2[10];
451  };
452 
453  struct PEHeader {
454  uint16_t Magic;
457  uint32_t SizeOfCode;
460  uint32_t AddressOfEntryPoint; // RVA
461  uint32_t BaseOfCode; // RVA
462  uint32_t BaseOfData; // RVA
463  uint64_t ImageBase;
465  uint32_t FileAlignment;
473  uint32_t SizeOfImage;
474  uint32_t SizeOfHeaders;
475  uint32_t CheckSum;
476  uint16_t Subsystem;
482  uint32_t LoaderFlags;
484  };
485 
486  struct DataDirectory {
488  uint32_t Size;
489  };
490 
507  };
508 
510  IMAGE_SUBSYSTEM_UNKNOWN = 0, ///< An unknown subsystem.
511  IMAGE_SUBSYSTEM_NATIVE = 1, ///< Device drivers and native Windows processes
512  IMAGE_SUBSYSTEM_WINDOWS_GUI = 2, ///< The Windows GUI subsystem.
513  IMAGE_SUBSYSTEM_WINDOWS_CUI = 3, ///< The Windows character subsystem.
514  IMAGE_SUBSYSTEM_OS2_CUI = 5, ///< The OS/2 character subsytem.
515  IMAGE_SUBSYSTEM_POSIX_CUI = 7, ///< The POSIX character subsystem.
516  IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8, ///< Native Windows 9x driver.
517  IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9, ///< Windows CE.
518  IMAGE_SUBSYSTEM_EFI_APPLICATION = 10, ///< An EFI application.
519  IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11, ///< An EFI driver with boot
520  /// services.
521  IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12, ///< An EFI driver with run-time
522  /// services.
523  IMAGE_SUBSYSTEM_EFI_ROM = 13, ///< An EFI ROM image.
524  IMAGE_SUBSYSTEM_XBOX = 14, ///< XBOX.
525  IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 ///< A BCD application.
526  };
527 
529  /// DLL can be relocated at load time.
531  /// Code integrity checks are enforced.
533  IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, ///< Image is NX compatible.
534  /// Isolation aware, but do not isolate the image.
536  /// Does not use structured exception handling (SEH). No SEH handler may be
537  /// called in this image.
539  /// Do not bind the image.
541  IMAGE_DLL_CHARACTERISTICS_WDM_DRIVER = 0x2000, ///< A WDM driver.
542  /// Terminal Server aware.
544  };
545 
546  enum DebugType {
558  };
559 
571  };
572 
573  enum ImportType {
577  };
578 
580  /// Import is by ordinal. This indicates that the value in the Ordinal/Hint
581  /// field of the import header is the import's ordinal. If this constant is
582  /// not specified, then the Ordinal/Hint field should always be interpreted
583  /// as the import's hint.
585  /// The import name is identical to the public symbol name
587  /// The import name is the public symbol name, but skipping the leading ?,
588  /// @, or optionally _.
590  /// The import name is the public symbol name, but skipping the leading ?,
591  /// @, or optionally _, and truncating at the first @.
593  };
594 
595  struct ImportHeader {
596  uint16_t Sig1; ///< Must be IMAGE_FILE_MACHINE_UNKNOWN (0).
597  uint16_t Sig2; ///< Must be 0xFFFF.
598  uint16_t Version;
599  uint16_t Machine;
600  uint32_t TimeDateStamp;
601  uint32_t SizeOfData;
602  uint16_t OrdinalHint;
603  uint16_t TypeInfo;
604 
605  ImportType getType() const {
606  return static_cast<ImportType>(TypeInfo & 0x3);
607  }
608 
610  return static_cast<ImportNameType>((TypeInfo & 0x1C) >> 3);
611  }
612  };
613 
614 } // End namespace COFF.
615 } // End namespace llvm.
616 
617 #endif
uint16_t MinorSubsystemVersion
Definition: Support/COFF.h:471
A byte; unsigned 1-byte integer.
Definition: Support/COFF.h:196
uint16_t MaximumExtraParagraphs
Definition: Support/COFF.h:438
The Windows character subsystem.
Definition: Support/COFF.h:513
Image can handle > 2GiB addresses.
Definition: Support/COFF.h:98
A pointer to base type.
Definition: Support/COFF.h:204
void setOrdinal(uint16_t o)
Set the ordinal value and set isOrdinal to true.
Definition: Support/COFF.h:415
ImportType getType() const
Definition: Support/COFF.h:605
Device drivers and native Windows processes.
Definition: Support/COFF.h:511
A 4-byte signed integer.
Definition: Support/COFF.h:189
char Name[NameSize]
Definition: Support/COFF.h:213
uint16_t getOrdinal() const
Get the ordinal value of this entry. isOrdinal must be true.
Definition: Support/COFF.h:409
Aggressively trim working set. This is deprecated and must be 0.
Definition: Support/COFF.h:96
uint64_t SizeOfHeapReserve
Definition: Support/COFF.h:480
Isolation aware, but do not isolate the image.
Definition: Support/COFF.h:535
uint16_t MajorOperatingSystemVersion
Definition: Support/COFF.h:466
AuxiliarySectionDefinition SectionDefinition
Definition: Support/COFF.h:380
uint32_t SizeOfUninitializedData
Definition: Support/COFF.h:459
uint16_t Reserved2[10]
Definition: Support/COFF.h:449
The Windows GUI subsystem.
Definition: Support/COFF.h:512
uint16_t DLLCharacteristics
Definition: Support/COFF.h:477
uint16_t Characteristics
Definition: Support/COFF.h:52
".bf" or ".ef" - beginning or end of function
Definition: Support/COFF.h:173
No complex type; simple scalar variable.
Definition: Support/COFF.h:203
The import name is identical to the public symbol name.
Definition: Support/COFF.h:586
A 2-byte signed integer.
Definition: Support/COFF.h:187
uint16_t HeaderSizeInParagraphs
Definition: Support/COFF.h:436
uint16_t MajorSubsystemVersion
Definition: Support/COFF.h:470
uint32_t PointerToSymbolTable
Definition: Support/COFF.h:49
bool isOrdinal() const
Is this entry specified by ordinal, or name?
Definition: Support/COFF.h:406
External symbol in dmert public lib.
Definition: Support/COFF.h:180
An unsigned integer of natural size.
Definition: Support/COFF.h:198
uint32_t AddressOfEntryPoint
Definition: Support/COFF.h:460
A 4-byte floating-point number.
Definition: Support/COFF.h:190
uint16_t AddressOfRelocationTable
Definition: Support/COFF.h:444
An array of base type.
Definition: Support/COFF.h:206
AuxiliaryWeakExternal WeakExternal
Definition: Support/COFF.h:378
uint16_t UsedBytesInTheLastPage
Definition: Support/COFF.h:433
The OS/2 character subsytem.
Definition: Support/COFF.h:514
uint16_t NumberOfRelocationItems
Definition: Support/COFF.h:435
The PE32 Import Lookup Table.
Definition: Support/COFF.h:402
uint8_t NumberOfAuxSymbols
Definition: Support/COFF.h:127
Used with void pointers and functions.
Definition: Support/COFF.h:185
The DOS compatible header at the front of all PEs.
Definition: Support/COFF.h:431
uint16_t MinimumExtraParagraphs
Definition: Support/COFF.h:437
Machine is based on a 32bit word architecture.
Definition: Support/COFF.h:103
No type information or unknown base type.
Definition: Support/COFF.h:184
uint16_t SizeOfOptionalHeader
Definition: Support/COFF.h:51
ImportNameType getNameType() const
Definition: Support/COFF.h:609
Line number, reformatted as symbol.
Definition: Support/COFF.h:177
uint32_t NumberOfRvaAndSize
Definition: Support/COFF.h:483
An 8-byte floating-point number.
Definition: Support/COFF.h:191
The image file is a DLL.
Definition: Support/COFF.h:113
enum SectionCharacteristics LLVM_ENUM_INT_TYPE(uint32_t)
Definition: Support/COFF.h:225
Type is formed as (base + (derived << SCT_COMPLEX_TYPE_SHIFT))
Definition: Support/COFF.h:209
void setHintNameRVA(uint32_t rva)
Set the Hint/Name entry RVA and set isOrdinal to false.
Definition: Support/COFF.h:427
A function that returns a base type.
Definition: Support/COFF.h:205
uint16_t SectionNumber
Definition: Support/COFF.h:124
If the image is on removable media, fully load it and copy it to swap.
Definition: Support/COFF.h:107
uint16_t NumberOfLineNumbers
Definition: Support/COFF.h:221
uint16_t Sig2
Must be 0xFFFF.
Definition: Support/COFF.h:597
uint32_t SizeOfInitializedData
Definition: Support/COFF.h:458
A word; unsigned 2-byte integer.
Definition: Support/COFF.h:197
uint32_t TimeDateStamp
Definition: Support/COFF.h:48
An unsigned 4-byte integer.
Definition: Support/COFF.h:199
This file should only be run on a uniprocessor machine.
Definition: Support/COFF.h:115
uint32_t PointerToRelocations
Definition: Support/COFF.h:218
DLL can be relocated at load time.
Definition: Support/COFF.h:530
If the image is on network media, fully load it and copy it to swap.
Definition: Support/COFF.h:109
Debugging info has been removed.
Definition: Support/COFF.h:105
uint32_t PointerToRawData
Definition: Support/COFF.h:217
uint16_t Sig1
Must be IMAGE_FILE_MACHINE_UNKNOWN (0).
Definition: Support/COFF.h:596
uint16_t MinorImageVersion
Definition: Support/COFF.h:469
SymbolStorageClass
Storage class tells where and what the symbol represents.
Definition: Support/COFF.h:147
".bb" or ".eb" - beginning or end of block
Definition: Support/COFF.h:171
uint32_t NumberOfSymbols
Definition: Support/COFF.h:50
uint16_t MinorOperatingSystemVersion
Definition: Support/COFF.h:467
A character (signed byte).
Definition: Support/COFF.h:186
uint32_t AddressOfNewExeHeader
Definition: Support/COFF.h:450
The POSIX character subsystem.
Definition: Support/COFF.h:515
The Import Directory Table.
Definition: Support/COFF.h:386
AuxiliaryFile File
Definition: Support/COFF.h:379
Code integrity checks are enforced.
Definition: Support/COFF.h:532
uint16_t MajorImageVersion
Definition: Support/COFF.h:468
uint64_t SizeOfStackCommit
Definition: Support/COFF.h:479
static const char PEMagic[]
Definition: Support/COFF.h:34
The image file is a system file, not a user program.
Definition: Support/COFF.h:111
uint16_t NumberOfSections
Definition: Support/COFF.h:47
char Name[NameSize]
Definition: Support/COFF.h:122
uint16_t NumberOfRelocations
Definition: Support/COFF.h:220
uint32_t Win32VersionValue
Definition: Support/COFF.h:472
AuxiliaryFunctionDefinition FunctionDefinition
Definition: Support/COFF.h:376
A member of enumeration (a specific value).
Definition: Support/COFF.h:195
uint32_t PointerToLineNumbers
Definition: Support/COFF.h:219
uint32_t getHintNameRVA() const
Get the Hint/Name entry RVA. isOrdinal must be false.
Definition: Support/COFF.h:421
WeakExternalCharacteristics
These are not documented in the spec, but are located in WinNT.h.
Definition: Support/COFF.h:355
AuxiliarybfAndefSymbol bfAndefSymbol
Definition: Support/COFF.h:377
uint32_t Characteristics
Definition: Support/COFF.h:222
uint64_t SizeOfStackReserve
Definition: Support/COFF.h:478
The file is valid and can be run.
Definition: Support/COFF.h:88
A natural integer type on the target.
Definition: Support/COFF.h:188