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