1de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar//===- CodeView.h -----------------------------------------------*- C++ -*-===// 2de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// 3de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// The LLVM Compiler Infrastructure 4de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// 5de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// This file is distributed under the University of Illinois Open Source 6de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// License. See LICENSE.TXT for details. 7de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// 8de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar//===----------------------------------------------------------------------===// 9de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 10de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#ifndef LLVM_DEBUGINFO_CODEVIEW_CODEVIEW_H 11de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#define LLVM_DEBUGINFO_CODEVIEW_CODEVIEW_H 12de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 13de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <cinttypes> 14de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <type_traits> 15de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 16de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarnamespace llvm { 17de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarnamespace codeview { 18de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 19de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Distinguishes individual records in .debug$T section or PDB type stream. The 20de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// documentation and headers talk about this as the "leaf" type. 21de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class TypeRecordKind : uint16_t { 22de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#define TYPE_RECORD(lf_ename, value, name) name = value, 23de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "TypeRecords.def" 24de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar // FIXME: Add serialization support 25de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FieldList = 0x1203, 26de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 27de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 28de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Duplicate copy of the above enum, but using the official CV names. Useful 29de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// for reference purposes and when dealing with unknown record types. 30de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum TypeLeafKind : uint16_t { 31de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#define CV_TYPE(name, val) name = val, 32de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "TypeRecords.def" 33de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 34de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 35de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Distinguishes individual records in the Symbols subsection of a .debug$S 36de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// section. Equivalent to SYM_ENUM_e in cvinfo.h. 37de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class SymbolRecordKind : uint16_t { 38de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#define SYMBOL_RECORD(lf_ename, value, name) name = value, 39de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "CVSymbolTypes.def" 40de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 41de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 42de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Duplicate copy of the above enum, but using the official CV names. Useful 43de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// for reference purposes and when dealing with unknown record types. 44de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum SymbolKind : uint16_t { 45de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#define CV_SYMBOL(name, val) name = val, 46de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "CVSymbolTypes.def" 47de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 48de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 49de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#define CV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(Class) \ 50de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar inline Class operator|(Class a, Class b) { \ 51de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar return static_cast<Class>( \ 52de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static_cast<std::underlying_type<Class>::type>(a) | \ 53de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static_cast<std::underlying_type<Class>::type>(b)); \ 54de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } \ 55de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar inline Class operator&(Class a, Class b) { \ 56de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar return static_cast<Class>( \ 57de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static_cast<std::underlying_type<Class>::type>(a) & \ 58de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static_cast<std::underlying_type<Class>::type>(b)); \ 59de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } \ 60de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar inline Class operator~(Class a) { \ 61de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar return static_cast<Class>( \ 62de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ~static_cast<std::underlying_type<Class>::type>(a)); \ 63de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } \ 64de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar inline Class &operator|=(Class &a, Class b) { \ 65de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar a = a | b; \ 66de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar return a; \ 67de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } \ 68de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar inline Class &operator&=(Class &a, Class b) { \ 69de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar a = a & b; \ 70de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar return a; \ 71de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } 72de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 73de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// These values correspond to the CV_CPU_TYPE_e enumeration, and are documented 74de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// here: https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx 75de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class CPUType : uint16_t { 76de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Intel8080 = 0x0, 77de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Intel8086 = 0x1, 78de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Intel80286 = 0x2, 79de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Intel80386 = 0x3, 80de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Intel80486 = 0x4, 81de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Pentium = 0x5, 82de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PentiumPro = 0x6, 83de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Pentium3 = 0x7, 84de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MIPS = 0x10, 85de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MIPS16 = 0x11, 86de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MIPS32 = 0x12, 87de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MIPS64 = 0x13, 88de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MIPSI = 0x14, 89de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MIPSII = 0x15, 90de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MIPSIII = 0x16, 91de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MIPSIV = 0x17, 92de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MIPSV = 0x18, 93de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar M68000 = 0x20, 94de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar M68010 = 0x21, 95de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar M68020 = 0x22, 96de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar M68030 = 0x23, 97de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar M68040 = 0x24, 98de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Alpha = 0x30, 99de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Alpha21164 = 0x31, 100de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Alpha21164A = 0x32, 101de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Alpha21264 = 0x33, 102de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Alpha21364 = 0x34, 103de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PPC601 = 0x40, 104de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PPC603 = 0x41, 105de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PPC604 = 0x42, 106de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PPC620 = 0x43, 107de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PPCFP = 0x44, 108de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PPCBE = 0x45, 109de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SH3 = 0x50, 110de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SH3E = 0x51, 111de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SH3DSP = 0x52, 112de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SH4 = 0x53, 113de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SHMedia = 0x54, 114de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ARM3 = 0x60, 115de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ARM4 = 0x61, 116de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ARM4T = 0x62, 117de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ARM5 = 0x63, 118de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ARM5T = 0x64, 119de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ARM6 = 0x65, 120de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ARM_XMAC = 0x66, 121de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ARM_WMMX = 0x67, 122de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ARM7 = 0x68, 123de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Omni = 0x70, 124de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Ia64 = 0x80, 125de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Ia64_2 = 0x81, 126de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CEE = 0x90, 127de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar AM33 = 0xa0, 128de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar M32R = 0xb0, 129de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar TriCore = 0xc0, 130de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar X64 = 0xd0, 131de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar EBC = 0xe0, 132de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Thumb = 0xf0, 133de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ARMNT = 0xf4, 134de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar D3D11_Shader = 0x100, 135de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 136de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 137de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// These values correspond to the CV_CFL_LANG enumeration, and are documented 138de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// here: https://msdn.microsoft.com/en-us/library/bw3aekw6.aspx 139de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum SourceLanguage : uint8_t { 140de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar C = 0x00, 141de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Cpp = 0x01, 142de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Fortran = 0x02, 143de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Masm = 0x03, 144de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Pascal = 0x04, 145de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Basic = 0x05, 146de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Cobol = 0x06, 147de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Link = 0x07, 148de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Cvtres = 0x08, 149de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Cvtpgd = 0x09, 150de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CSharp = 0x0a, 151de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar VB = 0x0b, 152de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ILAsm = 0x0c, 153de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Java = 0x0d, 154de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar JScript = 0x0e, 155de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MSIL = 0x0f, 156de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HLSL = 0x10 157de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 158de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 159de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// These values correspond to the CV_call_e enumeration, and are documented 160de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// at the following locations: 161de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx 162de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// https://msdn.microsoft.com/en-us/library/windows/desktop/ms680207(v=vs.85).aspx 163de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// 164de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class CallingConvention : uint8_t { 165de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NearC = 0x00, // near right to left push, caller pops stack 166de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FarC = 0x01, // far right to left push, caller pops stack 167de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NearPascal = 0x02, // near left to right push, callee pops stack 168de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FarPascal = 0x03, // far left to right push, callee pops stack 169de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NearFast = 0x04, // near left to right push with regs, callee pops stack 170de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FarFast = 0x05, // far left to right push with regs, callee pops stack 171de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NearStdCall = 0x07, // near standard call 172de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FarStdCall = 0x08, // far standard call 173de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NearSysCall = 0x09, // near sys call 174de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FarSysCall = 0x0a, // far sys call 175de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ThisCall = 0x0b, // this call (this passed in register) 176de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MipsCall = 0x0c, // Mips call 177de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Generic = 0x0d, // Generic call sequence 178de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar AlphaCall = 0x0e, // Alpha call 179de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PpcCall = 0x0f, // PPC call 180de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SHCall = 0x10, // Hitachi SuperH call 181de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ArmCall = 0x11, // ARM call 182de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar AM33Call = 0x12, // AM33 call 183de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar TriCall = 0x13, // TriCore Call 184de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SH5Call = 0x14, // Hitachi SuperH-5 call 185de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar M32RCall = 0x15, // M32R Call 186de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ClrCall = 0x16, // clr call 187de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Inline = 188de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 0x17, // Marker for routines always inlined and thus lacking a convention 189de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NearVector = 0x18 // near left to right push with regs, callee pops stack 190de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 191de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 192de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class ClassOptions : uint16_t { 193de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0x0000, 194de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Packed = 0x0001, 195de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasConstructorOrDestructor = 0x0002, 196de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasOverloadedOperator = 0x0004, 197de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Nested = 0x0008, 198de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ContainsNestedClass = 0x0010, 199de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasOverloadedAssignmentOperator = 0x0020, 200de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasConversionOperator = 0x0040, 201de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ForwardReference = 0x0080, 202de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Scoped = 0x0100, 203de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasUniqueName = 0x0200, 204de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Sealed = 0x0400, 205de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Intrinsic = 0x2000 206de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 207de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(ClassOptions) 208de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 209de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class FrameProcedureOptions : uint32_t { 210de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0x00000000, 211de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasAlloca = 0x00000001, 212de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasSetJmp = 0x00000002, 213de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasLongJmp = 0x00000004, 214de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasInlineAssembly = 0x00000008, 215de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasExceptionHandling = 0x00000010, 216de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MarkedInline = 0x00000020, 217de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasStructuredExceptionHandling = 0x00000040, 218de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Naked = 0x00000080, 219de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SecurityChecks = 0x00000100, 220de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar AsynchronousExceptionHandling = 0x00000200, 221de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NoStackOrderingForSecurityChecks = 0x00000400, 222de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Inlined = 0x00000800, 223de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar StrictSecurityChecks = 0x00001000, 224de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SafeBuffers = 0x00002000, 225de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ProfileGuidedOptimization = 0x00040000, 226de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ValidProfileCounts = 0x00080000, 227de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar OptimizedForSpeed = 0x00100000, 228de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar GuardCfg = 0x00200000, 229de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar GuardCfw = 0x00400000 230de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 231de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(FrameProcedureOptions) 232de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 233de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class FunctionOptions : uint8_t { 234de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0x00, 235de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CxxReturnUdt = 0x01, 236de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Constructor = 0x02, 237de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ConstructorWithVirtualBases = 0x04 238de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 239de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(FunctionOptions) 240de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 241de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class HfaKind : uint8_t { 242de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0x00, 243de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Float = 0x01, 244de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Double = 0x02, 245de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Other = 0x03 246de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 247de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 248de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Source-level access specifier. (CV_access_e) 249de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class MemberAccess : uint8_t { 250de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0, 251de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Private = 1, 252de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Protected = 2, 253de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Public = 3 254de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 255de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 256de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Part of member attribute flags. (CV_methodprop_e) 257de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class MethodKind : uint8_t { 258de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Vanilla = 0x00, 259de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Virtual = 0x01, 260de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Static = 0x02, 261de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Friend = 0x03, 262de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IntroducingVirtual = 0x04, 263de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PureVirtual = 0x05, 264de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PureIntroducingVirtual = 0x06 265de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 266de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 267de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Equivalent to CV_fldattr_t bitfield. 268de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class MethodOptions : uint16_t { 269de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0x0000, 270de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar AccessMask = 0x0003, 271de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MethodKindMask = 0x001c, 272de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Pseudo = 0x0020, 273de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NoInherit = 0x0040, 274de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NoConstruct = 0x0080, 275de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CompilerGenerated = 0x0100, 276de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Sealed = 0x0200 277de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 278de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(MethodOptions) 279de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 280de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Equivalent to CV_modifier_t. 281de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class ModifierOptions : uint16_t { 282de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0x0000, 283de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Const = 0x0001, 284de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Volatile = 0x0002, 285de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Unaligned = 0x0004 286de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 287de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(ModifierOptions) 288de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 289de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class ModuleSubstreamKind : uint32_t { 290de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0, 291de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Symbols = 0xf1, 292de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Lines = 0xf2, 293de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar StringTable = 0xf3, 294de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FileChecksums = 0xf4, 295de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FrameData = 0xf5, 296de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar InlineeLines = 0xf6, 297de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CrossScopeImports = 0xf7, 298de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CrossScopeExports = 0xf8, 299de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 300de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar // These appear to relate to .Net assembly info. 301de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ILLines = 0xf9, 302de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FuncMDTokenMap = 0xfa, 303de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar TypeMDTokenMap = 0xfb, 304de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MergedAssemblyInput = 0xfc, 305de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 306de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CoffSymbolRVA = 0xfd, 307de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 308de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 309de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Equivalent to CV_ptrtype_e. 310de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class PointerKind : uint8_t { 311de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Near16 = 0x00, // 16 bit pointer 312de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Far16 = 0x01, // 16:16 far pointer 313de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Huge16 = 0x02, // 16:16 huge pointer 314de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BasedOnSegment = 0x03, // based on segment 315de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BasedOnValue = 0x04, // based on value of base 316de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BasedOnSegmentValue = 0x05, // based on segment value of base 317de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BasedOnAddress = 0x06, // based on address of base 318de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BasedOnSegmentAddress = 0x07, // based on segment address of base 319de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BasedOnType = 0x08, // based on type 320de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BasedOnSelf = 0x09, // based on self 321de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Near32 = 0x0a, // 32 bit pointer 322de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Far32 = 0x0b, // 16:32 pointer 323de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Near64 = 0x0c // 64 bit pointer 324de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 325de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 326de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Equivalent to CV_ptrmode_e. 327de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class PointerMode : uint8_t { 328de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Pointer = 0x00, // "normal" pointer 329de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar LValueReference = 0x01, // "old" reference 330de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PointerToDataMember = 0x02, // pointer to data member 331de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PointerToMemberFunction = 0x03, // pointer to member function 332de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar RValueReference = 0x04 // r-value reference 333de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 334de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 335de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Equivalent to misc lfPointerAttr bitfields. 336de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class PointerOptions : uint32_t { 337de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0x00000000, 338de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Flat32 = 0x00000100, 339de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Volatile = 0x00000200, 340de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Const = 0x00000400, 341de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Unaligned = 0x00000800, 342de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Restrict = 0x00001000, 343de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar WinRTSmartPointer = 0x00080000 344de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 345de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(PointerOptions) 346de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 347de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Equivalent to CV_pmtype_e. 348de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class PointerToMemberRepresentation : uint16_t { 349de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Unknown = 0x00, // not specified (pre VC8) 350de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SingleInheritanceData = 0x01, // member data, single inheritance 351de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MultipleInheritanceData = 0x02, // member data, multiple inheritance 352de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar VirtualInheritanceData = 0x03, // member data, virtual inheritance 353de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar GeneralData = 0x04, // member data, most general 354de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SingleInheritanceFunction = 0x05, // member function, single inheritance 355de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MultipleInheritanceFunction = 0x06, // member function, multiple inheritance 356de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar VirtualInheritanceFunction = 0x07, // member function, virtual inheritance 357de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar GeneralFunction = 0x08 // member function, most general 358de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 359de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 360de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class VFTableSlotKind : uint8_t { 361de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Near16 = 0x00, 362de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Far16 = 0x01, 363de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar This = 0x02, 364de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Outer = 0x03, 365de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Meta = 0x04, 366de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Near = 0x05, 367de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Far = 0x06 368de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 369de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 370de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class WindowsRTClassKind : uint8_t { 371de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0x00, 372de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar RefClass = 0x01, 373de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ValueClass = 0x02, 374de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Interface = 0x03 375de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 376de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 377de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Corresponds to CV_LVARFLAGS bitfield. 378de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class LocalSymFlags : uint16_t { 379de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0, 380de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsParameter = 1 << 0, 381de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsAddressTaken = 1 << 1, 382de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsCompilerGenerated = 1 << 2, 383de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsAggregate = 1 << 3, 384de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsAggregated = 1 << 4, 385de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsAliased = 1 << 5, 386de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsAlias = 1 << 6, 387de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsReturnValue = 1 << 7, 388de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsOptimizedOut = 1 << 8, 389de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsEnregisteredGlobal = 1 << 9, 390de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsEnregisteredStatic = 1 << 10, 391de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 392de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(LocalSymFlags) 393de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 394de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Corresponds to the CV_PROCFLAGS bitfield. 395de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class ProcSymFlags : uint8_t { 396de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar None = 0, 397de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasFP = 1 << 0, 398de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasIRET = 1 << 1, 399de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasFRET = 1 << 2, 400de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsNoReturn = 1 << 3, 401de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsUnreachable = 1 << 4, 402de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasCustomCallingConv = 1 << 5, 403de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsNoInline = 1 << 6, 404de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasOptimizedDebugInfo = 1 << 7, 405de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 406de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(ProcSymFlags) 407de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 408de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Corresponds to COMPILESYM2::Flags bitfield. 409de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class CompileSym2Flags : uint32_t { 410de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar EC = 1 << 8, 411de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NoDbgInfo = 1 << 9, 412de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar LTCG = 1 << 10, 413de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NoDataAlign = 1 << 11, 414de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ManagedPresent = 1 << 12, 415de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SecurityChecks = 1 << 13, 416de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HotPatch = 1 << 14, 417de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CVTCIL = 1 << 15, 418de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MSILModule = 1 << 16, 419de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 420de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(CompileSym2Flags) 421de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 422de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// Corresponds to COMPILESYM3::Flags bitfield. 423de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class CompileSym3Flags : uint32_t { 424de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar EC = 1 << 8, 425de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NoDbgInfo = 1 << 9, 426de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar LTCG = 1 << 10, 427de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar NoDataAlign = 1 << 11, 428de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ManagedPresent = 1 << 12, 429de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SecurityChecks = 1 << 13, 430de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HotPatch = 1 << 14, 431de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CVTCIL = 1 << 15, 432de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar MSILModule = 1 << 16, 433de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Sdl = 1 << 17, 434de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar PGO = 1 << 18, 435de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Exp = 1 << 19, 436de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 437de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(CompileSym3Flags) 438de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 439de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class ExportFlags : uint16_t { 440de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsConstant = 1 << 0, 441de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsData = 1 << 1, 442de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsPrivate = 1 << 2, 443de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasNoName = 1 << 3, 444de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HasExplicitOrdinal = 1 << 4, 445de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IsForwarder = 1 << 5 446de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 447de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarCV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(ExportFlags) 448de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 449de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// Corresponds to BinaryAnnotationOpcode enum. 450de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class BinaryAnnotationsOpCode : uint32_t { 451de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Invalid, 452de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CodeOffset, 453de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeCodeOffsetBase, 454de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeCodeOffset, 455de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeCodeLength, 456de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeFile, 457de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeLineOffset, 458de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeLineEndDelta, 459de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeRangeKind, 460de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeColumnStart, 461de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeColumnEndDelta, 462de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeCodeOffsetAndLineOffset, 463de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeCodeLengthAndCodeOffset, 464de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ChangeColumnEnd, 465de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 466de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 467de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// Corresponds to CV_cookietype_e enum. 468de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class FrameCookieKind : uint8_t { 469de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Copy, 470de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar XorStackPointer, 471de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar XorFramePointer, 472de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar XorR13, 473de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 474de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 475de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// Corresponds to CV_HREG_e enum. 476de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class RegisterId : uint16_t { 477de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Unknown = 0, 478de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar VFrame = 30006, 479de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar AL = 1, 480de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CL = 2, 481de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar DL = 3, 482de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BL = 4, 483de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar AH = 5, 484de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CH = 6, 485de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar DH = 7, 486de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BH = 8, 487de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar AX = 9, 488de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CX = 10, 489de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar DX = 11, 490de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BX = 12, 491de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SP = 13, 492de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BP = 14, 493de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SI = 15, 494de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar DI = 16, 495de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar EAX = 17, 496de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ECX = 18, 497de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar EDX = 19, 498de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar EBX = 20, 499de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ESP = 21, 500de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar EBP = 22, 501de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ESI = 23, 502de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar EDI = 24, 503de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ES = 25, 504de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar CS = 26, 505de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SS = 27, 506de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar DS = 28, 507de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar FS = 29, 508de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar GS = 30, 509de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar IP = 31, 510de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar RAX = 328, 511de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar RBX = 329, 512de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar RCX = 330, 513de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar RDX = 331, 514de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar RSI = 332, 515de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar RDI = 333, 516de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar RBP = 334, 517de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar RSP = 335, 518de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar R8 = 336, 519de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar R9 = 337, 520de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar R10 = 338, 521de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar R11 = 339, 522de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar R12 = 340, 523de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar R13 = 341, 524de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar R14 = 342, 525de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar R15 = 343, 526de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 527de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 528de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/// These values correspond to the THUNK_ORDINAL enumeration. 529de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class ThunkOrdinal { 530de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Standard, 531de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar ThisAdjustor, 532de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Vcall, 533de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar Pcode, 534de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar UnknownLoad, 535de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar TrampIncremental, 536de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar BranchIsland 537de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 538de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 539de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class TrampolineType { TrampIncremental, BranchIsland }; 540de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 541de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// These values correspond to the CV_SourceChksum_t enumeration. 542de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum class FileChecksumKind : uint8_t { None, MD5, SHA1, SHA256 }; 543de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 544de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarenum LineFlags : uint32_t { 545de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar HaveColumns = 1, // CV_LINES_HAVE_COLUMNS 546de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}; 547de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 548de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 549de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 550de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#endif 551