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