LLVM API Documentation

Classes | Namespaces | Enumerations | Functions | Variables
Support/COFF.h File Reference
#include "llvm/Support/DataTypes.h"
#include <cassert>
#include <cstring>
Include dependency graph for Support/COFF.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  llvm::COFF::header
struct  llvm::COFF::BigObjHeader
struct  llvm::COFF::symbol
struct  llvm::COFF::section
struct  llvm::COFF::relocation
struct  llvm::COFF::AuxiliaryFunctionDefinition
struct  llvm::COFF::AuxiliarybfAndefSymbol
struct  llvm::COFF::AuxiliaryWeakExternal
struct  llvm::COFF::AuxiliarySectionDefinition
struct  llvm::COFF::AuxiliaryCLRToken
union  llvm::COFF::Auxiliary
struct  llvm::COFF::ImportDirectoryTableEntry
 The Import Directory Table. More...
struct  llvm::COFF::ImportLookupTableEntry32
 The PE32 Import Lookup Table. More...
struct  llvm::COFF::DOSHeader
 The DOS compatible header at the front of all PEs. More...
struct  llvm::COFF::PE32Header
struct  llvm::COFF::DataDirectory
struct  llvm::COFF::ImportHeader

Namespaces

namespace  llvm
 

List of target independent CodeGen pass IDs.


namespace  llvm::COFF

Enumerations

enum  {
  llvm::COFF::Header16Size = 20, llvm::COFF::Header32Size = 56, llvm::COFF::NameSize = 8, llvm::COFF::Symbol16Size = 18,
  llvm::COFF::Symbol32Size = 20, llvm::COFF::SectionSize = 40, llvm::COFF::RelocationSize = 10
}
enum  llvm::COFF::MachineTypes {
  llvm::COFF::MT_Invalid = 0xffff, llvm::COFF::IMAGE_FILE_MACHINE_UNKNOWN = 0x0, llvm::COFF::IMAGE_FILE_MACHINE_AM33 = 0x13, llvm::COFF::IMAGE_FILE_MACHINE_AMD64 = 0x8664,
  llvm::COFF::IMAGE_FILE_MACHINE_ARM = 0x1C0, llvm::COFF::IMAGE_FILE_MACHINE_ARMNT = 0x1C4, llvm::COFF::IMAGE_FILE_MACHINE_EBC = 0xEBC, llvm::COFF::IMAGE_FILE_MACHINE_I386 = 0x14C,
  llvm::COFF::IMAGE_FILE_MACHINE_IA64 = 0x200, llvm::COFF::IMAGE_FILE_MACHINE_M32R = 0x9041, llvm::COFF::IMAGE_FILE_MACHINE_MIPS16 = 0x266, llvm::COFF::IMAGE_FILE_MACHINE_MIPSFPU = 0x366,
  llvm::COFF::IMAGE_FILE_MACHINE_MIPSFPU16 = 0x466, llvm::COFF::IMAGE_FILE_MACHINE_POWERPC = 0x1F0, llvm::COFF::IMAGE_FILE_MACHINE_POWERPCFP = 0x1F1, llvm::COFF::IMAGE_FILE_MACHINE_R4000 = 0x166,
  llvm::COFF::IMAGE_FILE_MACHINE_SH3 = 0x1A2, llvm::COFF::IMAGE_FILE_MACHINE_SH3DSP = 0x1A3, llvm::COFF::IMAGE_FILE_MACHINE_SH4 = 0x1A6, llvm::COFF::IMAGE_FILE_MACHINE_SH5 = 0x1A8,
  llvm::COFF::IMAGE_FILE_MACHINE_THUMB = 0x1C2, llvm::COFF::IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x169
}
enum  llvm::COFF::Characteristics {
  llvm::COFF::C_Invalid = 0, llvm::COFF::IMAGE_FILE_RELOCS_STRIPPED = 0x0001, llvm::COFF::IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, llvm::COFF::IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004,
  llvm::COFF::IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008, llvm::COFF::IMAGE_FILE_AGGRESSIVE_WS_TRIM = 0x0010, llvm::COFF::IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, llvm::COFF::IMAGE_FILE_BYTES_REVERSED_LO = 0x0080,
  llvm::COFF::IMAGE_FILE_32BIT_MACHINE = 0x0100, llvm::COFF::IMAGE_FILE_DEBUG_STRIPPED = 0x0200, llvm::COFF::IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400, llvm::COFF::IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800,
  llvm::COFF::IMAGE_FILE_SYSTEM = 0x1000, llvm::COFF::IMAGE_FILE_DLL = 0x2000, llvm::COFF::IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000, llvm::COFF::IMAGE_FILE_BYTES_REVERSED_HI = 0x8000
}
enum  llvm::COFF::SymbolFlags {
  llvm::COFF::SF_TypeMask = 0x0000FFFF, llvm::COFF::SF_TypeShift = 0, llvm::COFF::SF_ClassMask = 0x00FF0000, llvm::COFF::SF_ClassShift = 16,
  llvm::COFF::SF_WeakExternal = 0x01000000
}
enum  llvm::COFF::SymbolSectionNumber { llvm::COFF::IMAGE_SYM_DEBUG = -2, llvm::COFF::IMAGE_SYM_ABSOLUTE = -1, llvm::COFF::IMAGE_SYM_UNDEFINED = 0 }
enum  llvm::COFF::SymbolStorageClass {
  llvm::COFF::SSC_Invalid = 0xff, llvm::COFF::IMAGE_SYM_CLASS_END_OF_FUNCTION = -1, llvm::COFF::IMAGE_SYM_CLASS_NULL = 0, llvm::COFF::IMAGE_SYM_CLASS_AUTOMATIC = 1,
  llvm::COFF::IMAGE_SYM_CLASS_EXTERNAL = 2, llvm::COFF::IMAGE_SYM_CLASS_STATIC = 3, llvm::COFF::IMAGE_SYM_CLASS_REGISTER = 4, llvm::COFF::IMAGE_SYM_CLASS_EXTERNAL_DEF = 5,
  llvm::COFF::IMAGE_SYM_CLASS_LABEL = 6, llvm::COFF::IMAGE_SYM_CLASS_UNDEFINED_LABEL = 7, llvm::COFF::IMAGE_SYM_CLASS_MEMBER_OF_STRUCT = 8, llvm::COFF::IMAGE_SYM_CLASS_ARGUMENT = 9,
  llvm::COFF::IMAGE_SYM_CLASS_STRUCT_TAG = 10, llvm::COFF::IMAGE_SYM_CLASS_MEMBER_OF_UNION = 11, llvm::COFF::IMAGE_SYM_CLASS_UNION_TAG = 12, llvm::COFF::IMAGE_SYM_CLASS_TYPE_DEFINITION = 13,
  llvm::COFF::IMAGE_SYM_CLASS_UNDEFINED_STATIC = 14, llvm::COFF::IMAGE_SYM_CLASS_ENUM_TAG = 15, llvm::COFF::IMAGE_SYM_CLASS_MEMBER_OF_ENUM = 16, llvm::COFF::IMAGE_SYM_CLASS_REGISTER_PARAM = 17,
  llvm::COFF::IMAGE_SYM_CLASS_BIT_FIELD = 18, llvm::COFF::IMAGE_SYM_CLASS_BLOCK = 100, llvm::COFF::IMAGE_SYM_CLASS_FUNCTION = 101, llvm::COFF::IMAGE_SYM_CLASS_END_OF_STRUCT = 102,
  llvm::COFF::IMAGE_SYM_CLASS_FILE = 103, llvm::COFF::IMAGE_SYM_CLASS_SECTION = 104, llvm::COFF::IMAGE_SYM_CLASS_WEAK_EXTERNAL = 105, llvm::COFF::IMAGE_SYM_CLASS_CLR_TOKEN = 107
}
 Storage class tells where and what the symbol represents. More...
enum  llvm::COFF::SymbolBaseType {
  llvm::COFF::IMAGE_SYM_TYPE_NULL = 0, llvm::COFF::IMAGE_SYM_TYPE_VOID = 1, llvm::COFF::IMAGE_SYM_TYPE_CHAR = 2, llvm::COFF::IMAGE_SYM_TYPE_SHORT = 3,
  llvm::COFF::IMAGE_SYM_TYPE_INT = 4, llvm::COFF::IMAGE_SYM_TYPE_LONG = 5, llvm::COFF::IMAGE_SYM_TYPE_FLOAT = 6, llvm::COFF::IMAGE_SYM_TYPE_DOUBLE = 7,
  llvm::COFF::IMAGE_SYM_TYPE_STRUCT = 8, llvm::COFF::IMAGE_SYM_TYPE_UNION = 9, llvm::COFF::IMAGE_SYM_TYPE_ENUM = 10, llvm::COFF::IMAGE_SYM_TYPE_MOE = 11,
  llvm::COFF::IMAGE_SYM_TYPE_BYTE = 12, llvm::COFF::IMAGE_SYM_TYPE_WORD = 13, llvm::COFF::IMAGE_SYM_TYPE_UINT = 14, llvm::COFF::IMAGE_SYM_TYPE_DWORD = 15
}
enum  llvm::COFF::SymbolComplexType {
  llvm::COFF::IMAGE_SYM_DTYPE_NULL = 0, llvm::COFF::IMAGE_SYM_DTYPE_POINTER = 1, llvm::COFF::IMAGE_SYM_DTYPE_FUNCTION = 2, llvm::COFF::IMAGE_SYM_DTYPE_ARRAY = 3,
  llvm::COFF::SCT_COMPLEX_TYPE_SHIFT = 4
}
enum  llvm::COFF::AuxSymbolType { llvm::COFF::IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1 }
enum  llvm::COFF::SectionCharacteristics {
  llvm::COFF::SC_Invalid = 0xffffffff, llvm::COFF::IMAGE_SCN_TYPE_NO_PAD = 0x00000008, llvm::COFF::IMAGE_SCN_CNT_CODE = 0x00000020, llvm::COFF::IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040,
  llvm::COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, llvm::COFF::IMAGE_SCN_LNK_OTHER = 0x00000100, llvm::COFF::IMAGE_SCN_LNK_INFO = 0x00000200, llvm::COFF::IMAGE_SCN_LNK_REMOVE = 0x00000800,
  llvm::COFF::IMAGE_SCN_LNK_COMDAT = 0x00001000, llvm::COFF::IMAGE_SCN_GPREL = 0x00008000, llvm::COFF::IMAGE_SCN_MEM_PURGEABLE = 0x00020000, llvm::COFF::IMAGE_SCN_MEM_16BIT = 0x00020000,
  llvm::COFF::IMAGE_SCN_MEM_LOCKED = 0x00040000, llvm::COFF::IMAGE_SCN_MEM_PRELOAD = 0x00080000, llvm::COFF::IMAGE_SCN_ALIGN_1BYTES = 0x00100000, llvm::COFF::IMAGE_SCN_ALIGN_2BYTES = 0x00200000,
  llvm::COFF::IMAGE_SCN_ALIGN_4BYTES = 0x00300000, llvm::COFF::IMAGE_SCN_ALIGN_8BYTES = 0x00400000, llvm::COFF::IMAGE_SCN_ALIGN_16BYTES = 0x00500000, llvm::COFF::IMAGE_SCN_ALIGN_32BYTES = 0x00600000,
  llvm::COFF::IMAGE_SCN_ALIGN_64BYTES = 0x00700000, llvm::COFF::IMAGE_SCN_ALIGN_128BYTES = 0x00800000, llvm::COFF::IMAGE_SCN_ALIGN_256BYTES = 0x00900000, llvm::COFF::IMAGE_SCN_ALIGN_512BYTES = 0x00A00000,
  llvm::COFF::IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000, llvm::COFF::IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000, llvm::COFF::IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000, llvm::COFF::IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000,
  llvm::COFF::IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000, llvm::COFF::IMAGE_SCN_MEM_DISCARDABLE = 0x02000000, llvm::COFF::IMAGE_SCN_MEM_NOT_CACHED = 0x04000000, llvm::COFF::IMAGE_SCN_MEM_NOT_PAGED = 0x08000000,
  llvm::COFF::IMAGE_SCN_MEM_SHARED = 0x10000000, llvm::COFF::IMAGE_SCN_MEM_EXECUTE = 0x20000000, llvm::COFF::IMAGE_SCN_MEM_READ = 0x40000000, llvm::COFF::IMAGE_SCN_MEM_WRITE = 0x80000000
}
enum  llvm::COFF::RelocationTypeI386 {
  llvm::COFF::IMAGE_REL_I386_ABSOLUTE = 0x0000, llvm::COFF::IMAGE_REL_I386_DIR16 = 0x0001, llvm::COFF::IMAGE_REL_I386_REL16 = 0x0002, llvm::COFF::IMAGE_REL_I386_DIR32 = 0x0006,
  llvm::COFF::IMAGE_REL_I386_DIR32NB = 0x0007, llvm::COFF::IMAGE_REL_I386_SEG12 = 0x0009, llvm::COFF::IMAGE_REL_I386_SECTION = 0x000A, llvm::COFF::IMAGE_REL_I386_SECREL = 0x000B,
  llvm::COFF::IMAGE_REL_I386_TOKEN = 0x000C, llvm::COFF::IMAGE_REL_I386_SECREL7 = 0x000D, llvm::COFF::IMAGE_REL_I386_REL32 = 0x0014
}
enum  llvm::COFF::RelocationTypeAMD64 {
  llvm::COFF::IMAGE_REL_AMD64_ABSOLUTE = 0x0000, llvm::COFF::IMAGE_REL_AMD64_ADDR64 = 0x0001, llvm::COFF::IMAGE_REL_AMD64_ADDR32 = 0x0002, llvm::COFF::IMAGE_REL_AMD64_ADDR32NB = 0x0003,
  llvm::COFF::IMAGE_REL_AMD64_REL32 = 0x0004, llvm::COFF::IMAGE_REL_AMD64_REL32_1 = 0x0005, llvm::COFF::IMAGE_REL_AMD64_REL32_2 = 0x0006, llvm::COFF::IMAGE_REL_AMD64_REL32_3 = 0x0007,
  llvm::COFF::IMAGE_REL_AMD64_REL32_4 = 0x0008, llvm::COFF::IMAGE_REL_AMD64_REL32_5 = 0x0009, llvm::COFF::IMAGE_REL_AMD64_SECTION = 0x000A, llvm::COFF::IMAGE_REL_AMD64_SECREL = 0x000B,
  llvm::COFF::IMAGE_REL_AMD64_SECREL7 = 0x000C, llvm::COFF::IMAGE_REL_AMD64_TOKEN = 0x000D, llvm::COFF::IMAGE_REL_AMD64_SREL32 = 0x000E, llvm::COFF::IMAGE_REL_AMD64_PAIR = 0x000F,
  llvm::COFF::IMAGE_REL_AMD64_SSPAN32 = 0x0010
}
enum  llvm::COFF::RelocationTypesARM {
  llvm::COFF::IMAGE_REL_ARM_ABSOLUTE = 0x0000, llvm::COFF::IMAGE_REL_ARM_ADDR32 = 0x0001, llvm::COFF::IMAGE_REL_ARM_ADDR32NB = 0x0002, llvm::COFF::IMAGE_REL_ARM_BRANCH24 = 0x0003,
  llvm::COFF::IMAGE_REL_ARM_BRANCH11 = 0x0004, llvm::COFF::IMAGE_REL_ARM_TOKEN = 0x0005, llvm::COFF::IMAGE_REL_ARM_BLX24 = 0x0008, llvm::COFF::IMAGE_REL_ARM_BLX11 = 0x0009,
  llvm::COFF::IMAGE_REL_ARM_SECTION = 0x000E, llvm::COFF::IMAGE_REL_ARM_SECREL = 0x000F, llvm::COFF::IMAGE_REL_ARM_MOV32A = 0x0010, llvm::COFF::IMAGE_REL_ARM_MOV32T = 0x0011,
  llvm::COFF::IMAGE_REL_ARM_BRANCH20T = 0x0012, llvm::COFF::IMAGE_REL_ARM_BRANCH24T = 0x0014, llvm::COFF::IMAGE_REL_ARM_BLX23T = 0x0015
}
enum  llvm::COFF::COMDATType {
  llvm::COFF::IMAGE_COMDAT_SELECT_NODUPLICATES = 1, llvm::COFF::IMAGE_COMDAT_SELECT_ANY, llvm::COFF::IMAGE_COMDAT_SELECT_SAME_SIZE, llvm::COFF::IMAGE_COMDAT_SELECT_EXACT_MATCH,
  llvm::COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE, llvm::COFF::IMAGE_COMDAT_SELECT_LARGEST, llvm::COFF::IMAGE_COMDAT_SELECT_NEWEST
}
enum  llvm::COFF::WeakExternalCharacteristics { llvm::COFF::IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1, llvm::COFF::IMAGE_WEAK_EXTERN_SEARCH_LIBRARY = 2, llvm::COFF::IMAGE_WEAK_EXTERN_SEARCH_ALIAS = 3 }
 These are not documented in the spec, but are located in WinNT.h. More...
enum  llvm::COFF::DataDirectoryIndex {
  llvm::COFF::EXPORT_TABLE = 0, llvm::COFF::IMPORT_TABLE, llvm::COFF::RESOURCE_TABLE, llvm::COFF::EXCEPTION_TABLE,
  llvm::COFF::CERTIFICATE_TABLE, llvm::COFF::BASE_RELOCATION_TABLE, llvm::COFF::DEBUG, llvm::COFF::ARCHITECTURE,
  llvm::COFF::GLOBAL_PTR, llvm::COFF::TLS_TABLE, llvm::COFF::LOAD_CONFIG_TABLE, llvm::COFF::BOUND_IMPORT,
  llvm::COFF::IAT, llvm::COFF::DELAY_IMPORT_DESCRIPTOR, llvm::COFF::CLR_RUNTIME_HEADER
}
enum  llvm::COFF::WindowsSubsystem {
  llvm::COFF::IMAGE_SUBSYSTEM_UNKNOWN = 0, llvm::COFF::IMAGE_SUBSYSTEM_NATIVE = 1, llvm::COFF::IMAGE_SUBSYSTEM_WINDOWS_GUI = 2, llvm::COFF::IMAGE_SUBSYSTEM_WINDOWS_CUI = 3,
  llvm::COFF::IMAGE_SUBSYSTEM_OS2_CUI = 5, llvm::COFF::IMAGE_SUBSYSTEM_POSIX_CUI = 7, llvm::COFF::IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8, llvm::COFF::IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9,
  llvm::COFF::IMAGE_SUBSYSTEM_EFI_APPLICATION = 10, llvm::COFF::IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11, llvm::COFF::IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12, llvm::COFF::IMAGE_SUBSYSTEM_EFI_ROM = 13,
  llvm::COFF::IMAGE_SUBSYSTEM_XBOX = 14, llvm::COFF::IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16
}
enum  llvm::COFF::DLLCharacteristics {
  llvm::COFF::IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020, llvm::COFF::IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040, llvm::COFF::IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, llvm::COFF::IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100,
  llvm::COFF::IMAGE_DLL_CHARACTERISTICS_NO_ISOLATION = 0x0200, llvm::COFF::IMAGE_DLL_CHARACTERISTICS_NO_SEH = 0x0400, llvm::COFF::IMAGE_DLL_CHARACTERISTICS_NO_BIND = 0x0800, llvm::COFF::IMAGE_DLL_CHARACTERISTICS_APPCONTAINER = 0x1000,
  llvm::COFF::IMAGE_DLL_CHARACTERISTICS_WDM_DRIVER = 0x2000, llvm::COFF::IMAGE_DLL_CHARACTERISTICS_GUARD_CF = 0x4000, llvm::COFF::IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000
}
enum  llvm::COFF::DebugType {
  llvm::COFF::IMAGE_DEBUG_TYPE_UNKNOWN = 0, llvm::COFF::IMAGE_DEBUG_TYPE_COFF = 1, llvm::COFF::IMAGE_DEBUG_TYPE_CODEVIEW = 2, llvm::COFF::IMAGE_DEBUG_TYPE_FPO = 3,
  llvm::COFF::IMAGE_DEBUG_TYPE_MISC = 4, llvm::COFF::IMAGE_DEBUG_TYPE_EXCEPTION = 5, llvm::COFF::IMAGE_DEBUG_TYPE_FIXUP = 6, llvm::COFF::IMAGE_DEBUG_TYPE_OMAP_TO_SRC = 7,
  llvm::COFF::IMAGE_DEBUG_TYPE_OMAP_FROM_SRC = 8, llvm::COFF::IMAGE_DEBUG_TYPE_BORLAND = 9, llvm::COFF::IMAGE_DEBUG_TYPE_CLSID = 11
}
enum  llvm::COFF::BaseRelocationType {
  llvm::COFF::IMAGE_REL_BASED_ABSOLUTE = 0, llvm::COFF::IMAGE_REL_BASED_HIGH = 1, llvm::COFF::IMAGE_REL_BASED_LOW = 2, llvm::COFF::IMAGE_REL_BASED_HIGHLOW = 3,
  llvm::COFF::IMAGE_REL_BASED_HIGHADJ = 4, llvm::COFF::IMAGE_REL_BASED_MIPS_JMPADDR = 5, llvm::COFF::IMAGE_REL_BASED_ARM_MOV32A = 5, llvm::COFF::IMAGE_REL_BASED_ARM_MOV32T = 7,
  llvm::COFF::IMAGE_REL_BASED_MIPS_JMPADDR16 = 9, llvm::COFF::IMAGE_REL_BASED_DIR64 = 10
}
enum  llvm::COFF::ImportType { llvm::COFF::IMPORT_CODE = 0, llvm::COFF::IMPORT_DATA = 1, llvm::COFF::IMPORT_CONST = 2 }
enum  llvm::COFF::ImportNameType { llvm::COFF::IMPORT_ORDINAL = 0, llvm::COFF::IMPORT_NAME = 1, llvm::COFF::IMPORT_NAME_NOPREFIX = 2, llvm::COFF::IMPORT_NAME_UNDECORATE = 3 }
enum  llvm::COFF::CodeViewLineTableIdentifiers { llvm::COFF::DEBUG_SECTION_MAGIC = 0x4, llvm::COFF::DEBUG_LINE_TABLE_SUBSECTION = 0xF2, llvm::COFF::DEBUG_STRING_TABLE_SUBSECTION = 0xF3, llvm::COFF::DEBUG_INDEX_SUBSECTION = 0xF4 }

Functions

bool llvm::COFF::isReservedSectionNumber (int32_t SectionNumber)

Variables

const int32_t llvm::COFF::MaxNumberOfSections16 = 65279
static const char llvm::COFF::PEMagic [] = { 'P', 'E', '\0', '\0' }
static const char llvm::COFF::BigObjMagic []