1 //===- DIAExtras.cpp - Helper classes and functions for DIA C++ ---------*-===//
\r
3 // The LLVM Compiler Infrastructure
\r
5 // This file is distributed under the University of Illinois Open Source
\r
6 // License. See LICENSE.TXT for details.
\r
8 //===----------------------------------------------------------------------===//
\r
9 #include "llvm/Support/Format.h"
\r
10 #include "llvm/Support/raw_ostream.h"
\r
12 #include "llvm-pdbdump.h"
\r
13 #include "DIAExtras.h"
\r
15 using namespace llvm;
\r
16 using namespace llvm::sys::windows;
\r
18 #define PRINT_ENUM_VALUE_CASE(Value) \
\r
23 raw_ostream &llvm::operator<<(raw_ostream &Stream, DiaSymTagEnum SymTag) {
\r
25 PRINT_ENUM_VALUE_CASE(SymTagNull)
\r
26 PRINT_ENUM_VALUE_CASE(SymTagExe)
\r
27 PRINT_ENUM_VALUE_CASE(SymTagCompiland)
\r
28 PRINT_ENUM_VALUE_CASE(SymTagCompilandDetails)
\r
29 PRINT_ENUM_VALUE_CASE(SymTagCompilandEnv)
\r
30 PRINT_ENUM_VALUE_CASE(SymTagFunction)
\r
31 PRINT_ENUM_VALUE_CASE(SymTagBlock)
\r
32 PRINT_ENUM_VALUE_CASE(SymTagData)
\r
33 PRINT_ENUM_VALUE_CASE(SymTagAnnotation)
\r
34 PRINT_ENUM_VALUE_CASE(SymTagLabel)
\r
35 PRINT_ENUM_VALUE_CASE(SymTagPublicSymbol)
\r
36 PRINT_ENUM_VALUE_CASE(SymTagUDT)
\r
37 PRINT_ENUM_VALUE_CASE(SymTagEnum)
\r
38 PRINT_ENUM_VALUE_CASE(SymTagFunctionType)
\r
39 PRINT_ENUM_VALUE_CASE(SymTagPointerType)
\r
40 PRINT_ENUM_VALUE_CASE(SymTagArrayType)
\r
41 PRINT_ENUM_VALUE_CASE(SymTagBaseType)
\r
42 PRINT_ENUM_VALUE_CASE(SymTagTypedef)
\r
43 PRINT_ENUM_VALUE_CASE(SymTagBaseClass)
\r
44 PRINT_ENUM_VALUE_CASE(SymTagFriend)
\r
45 PRINT_ENUM_VALUE_CASE(SymTagFunctionArgType)
\r
46 PRINT_ENUM_VALUE_CASE(SymTagFuncDebugStart)
\r
47 PRINT_ENUM_VALUE_CASE(SymTagFuncDebugEnd)
\r
48 PRINT_ENUM_VALUE_CASE(SymTagUsingNamespace)
\r
49 PRINT_ENUM_VALUE_CASE(SymTagVTableShape)
\r
50 PRINT_ENUM_VALUE_CASE(SymTagVTable)
\r
51 PRINT_ENUM_VALUE_CASE(SymTagCustom)
\r
52 PRINT_ENUM_VALUE_CASE(SymTagThunk)
\r
53 PRINT_ENUM_VALUE_CASE(SymTagCustomType)
\r
54 PRINT_ENUM_VALUE_CASE(SymTagManagedType)
\r
55 PRINT_ENUM_VALUE_CASE(SymTagDimension)
\r
56 PRINT_ENUM_VALUE_CASE(SymTagCallSite)
\r
57 PRINT_ENUM_VALUE_CASE(SymTagInlineSite)
\r
58 PRINT_ENUM_VALUE_CASE(SymTagBaseInterface)
\r
59 PRINT_ENUM_VALUE_CASE(SymTagVectorType)
\r
60 PRINT_ENUM_VALUE_CASE(SymTagMatrixType)
\r
61 PRINT_ENUM_VALUE_CASE(SymTagHLSLType)
\r
62 #if (_MSC_FULL_VER >= 180031101)
\r
63 PRINT_ENUM_VALUE_CASE(SymTagCaller)
\r
64 PRINT_ENUM_VALUE_CASE(SymTagCallee)
\r
66 PRINT_ENUM_VALUE_CASE(SymTagMax)
\r
68 outs() << " {" << (DWORD)SymTag << "}";
\r
72 raw_ostream &llvm::operator<<(raw_ostream &Stream, CV_CPU_TYPE_e CpuType) {
\r
74 PRINT_ENUM_VALUE_CASE(CV_CFL_8080)
\r
75 PRINT_ENUM_VALUE_CASE(CV_CFL_8086)
\r
76 PRINT_ENUM_VALUE_CASE(CV_CFL_80286)
\r
77 PRINT_ENUM_VALUE_CASE(CV_CFL_80386)
\r
78 PRINT_ENUM_VALUE_CASE(CV_CFL_80486)
\r
79 PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUM)
\r
80 PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUMPRO)
\r
81 PRINT_ENUM_VALUE_CASE(CV_CFL_PENTIUMIII)
\r
82 PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS)
\r
83 PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS16)
\r
84 PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS32)
\r
85 PRINT_ENUM_VALUE_CASE(CV_CFL_MIPS64)
\r
86 PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSI)
\r
87 PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSII)
\r
88 PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSIII)
\r
89 PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSIV)
\r
90 PRINT_ENUM_VALUE_CASE(CV_CFL_MIPSV)
\r
91 PRINT_ENUM_VALUE_CASE(CV_CFL_M68000)
\r
92 PRINT_ENUM_VALUE_CASE(CV_CFL_M68010)
\r
93 PRINT_ENUM_VALUE_CASE(CV_CFL_M68020)
\r
94 PRINT_ENUM_VALUE_CASE(CV_CFL_M68030)
\r
95 PRINT_ENUM_VALUE_CASE(CV_CFL_M68040)
\r
96 PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA)
\r
97 PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21164)
\r
98 PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21164A)
\r
99 PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21264)
\r
100 PRINT_ENUM_VALUE_CASE(CV_CFL_ALPHA_21364)
\r
101 PRINT_ENUM_VALUE_CASE(CV_CFL_PPC601)
\r
102 PRINT_ENUM_VALUE_CASE(CV_CFL_PPC603)
\r
103 PRINT_ENUM_VALUE_CASE(CV_CFL_PPC604)
\r
104 PRINT_ENUM_VALUE_CASE(CV_CFL_PPC620)
\r
105 PRINT_ENUM_VALUE_CASE(CV_CFL_PPCFP)
\r
106 PRINT_ENUM_VALUE_CASE(CV_CFL_PPCBE)
\r
107 PRINT_ENUM_VALUE_CASE(CV_CFL_SH3)
\r
108 PRINT_ENUM_VALUE_CASE(CV_CFL_SH3E)
\r
109 PRINT_ENUM_VALUE_CASE(CV_CFL_SH3DSP)
\r
110 PRINT_ENUM_VALUE_CASE(CV_CFL_SH4)
\r
111 PRINT_ENUM_VALUE_CASE(CV_CFL_SHMEDIA)
\r
112 PRINT_ENUM_VALUE_CASE(CV_CFL_ARM3)
\r
113 PRINT_ENUM_VALUE_CASE(CV_CFL_ARM4)
\r
114 PRINT_ENUM_VALUE_CASE(CV_CFL_ARM4T)
\r
115 PRINT_ENUM_VALUE_CASE(CV_CFL_ARM5)
\r
116 PRINT_ENUM_VALUE_CASE(CV_CFL_ARM5T)
\r
117 PRINT_ENUM_VALUE_CASE(CV_CFL_ARM6)
\r
118 PRINT_ENUM_VALUE_CASE(CV_CFL_ARM_XMAC)
\r
119 PRINT_ENUM_VALUE_CASE(CV_CFL_ARM_WMMX)
\r
120 PRINT_ENUM_VALUE_CASE(CV_CFL_ARM7)
\r
121 PRINT_ENUM_VALUE_CASE(CV_CFL_OMNI)
\r
122 PRINT_ENUM_VALUE_CASE(CV_CFL_IA64)
\r
123 PRINT_ENUM_VALUE_CASE(CV_CFL_IA64_2)
\r
124 PRINT_ENUM_VALUE_CASE(CV_CFL_CEE)
\r
125 PRINT_ENUM_VALUE_CASE(CV_CFL_AM33)
\r
126 PRINT_ENUM_VALUE_CASE(CV_CFL_M32R)
\r
127 PRINT_ENUM_VALUE_CASE(CV_CFL_TRICORE)
\r
128 PRINT_ENUM_VALUE_CASE(CV_CFL_X64)
\r
129 PRINT_ENUM_VALUE_CASE(CV_CFL_EBC)
\r
130 PRINT_ENUM_VALUE_CASE(CV_CFL_THUMB)
\r
131 PRINT_ENUM_VALUE_CASE(CV_CFL_ARMNT)
\r
132 #if (_MSC_FULL_VER >= 180031101)
\r
133 PRINT_ENUM_VALUE_CASE(CV_CFL_ARM64)
\r
135 PRINT_ENUM_VALUE_CASE(CV_CFL_D3D11_SHADER)
\r
137 outs() << " {" << llvm::format_hex((DWORD)CpuType, 2, true) << "}";
\r
141 raw_ostream &llvm::operator<<(raw_ostream &Stream,
\r
142 MachineTypeEnum MachineType) {
\r
143 switch (MachineType) {
\r
144 PRINT_ENUM_VALUE_CASE(MachineTypeUnknown)
\r
145 PRINT_ENUM_VALUE_CASE(MachineTypeX86)
\r
146 PRINT_ENUM_VALUE_CASE(MachineTypeR3000)
\r
147 PRINT_ENUM_VALUE_CASE(MachineTypeR4000)
\r
148 PRINT_ENUM_VALUE_CASE(MachineTypeR10000)
\r
149 PRINT_ENUM_VALUE_CASE(MachineTypeWCEMIPSv2)
\r
150 PRINT_ENUM_VALUE_CASE(MachineTypeAlpha)
\r
151 PRINT_ENUM_VALUE_CASE(MachineTypeSH3)
\r
152 PRINT_ENUM_VALUE_CASE(MachineTypeSH3DSP)
\r
153 PRINT_ENUM_VALUE_CASE(MachineTypeSH3E)
\r
154 PRINT_ENUM_VALUE_CASE(MachineTypeSH4)
\r
155 PRINT_ENUM_VALUE_CASE(MachineTypeSH5)
\r
156 PRINT_ENUM_VALUE_CASE(MachineTypeArm)
\r
157 PRINT_ENUM_VALUE_CASE(MachineTypeThumb)
\r
158 PRINT_ENUM_VALUE_CASE(MachineTypeArmNT)
\r
159 PRINT_ENUM_VALUE_CASE(MachineTypeAM33)
\r
160 PRINT_ENUM_VALUE_CASE(MachineTypePowerPC)
\r
161 PRINT_ENUM_VALUE_CASE(MachineTypePowerPCFP)
\r
162 PRINT_ENUM_VALUE_CASE(MachineTypeIa64)
\r
163 PRINT_ENUM_VALUE_CASE(MachineTypeMips16)
\r
164 PRINT_ENUM_VALUE_CASE(MachineTypeAlpha64)
\r
165 PRINT_ENUM_VALUE_CASE(MachineTypeMipsFpu)
\r
166 PRINT_ENUM_VALUE_CASE(MachineTypeMipsFpu16)
\r
167 PRINT_ENUM_VALUE_CASE(MachineTypeTriCore)
\r
168 PRINT_ENUM_VALUE_CASE(MachineTypeCEF)
\r
169 PRINT_ENUM_VALUE_CASE(MachineTypeEBC)
\r
170 PRINT_ENUM_VALUE_CASE(MachineTypeAmd64)
\r
171 PRINT_ENUM_VALUE_CASE(MachineTypeM32R)
\r
172 PRINT_ENUM_VALUE_CASE(MachineTypeCEE)
\r
174 outs() << " {" << llvm::format_hex((DWORD)MachineType, 2, true) << "}";
\r