1 | //===- EnumTables.cpp - Enum to string conversion tables ------------------===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #include "llvm/DebugInfo/CodeView/EnumTables.h" |
10 | #include "llvm/Support/ScopedPrinter.h" |
11 | #include <type_traits> |
12 | |
13 | using namespace llvm; |
14 | using namespace codeview; |
15 | |
16 | #define CV_ENUM_CLASS_ENT(enum_class, enum) \ |
17 | { #enum, std::underlying_type_t<enum_class>(enum_class::enum) } |
18 | |
19 | #define CV_ENUM_ENT(ns, enum) \ |
20 | { #enum, ns::enum } |
21 | |
22 | static const EnumEntry<SymbolKind> SymbolTypeNames[] = { |
23 | #define CV_SYMBOL(enum, val) {#enum, enum}, |
24 | #include "llvm/DebugInfo/CodeView/CodeViewSymbols.def" |
25 | #undef CV_SYMBOL |
26 | }; |
27 | |
28 | static const EnumEntry<TypeLeafKind> TypeLeafNames[] = { |
29 | #define CV_TYPE(name, val) {#name, name}, |
30 | #include "llvm/DebugInfo/CodeView/CodeViewTypes.def" |
31 | #undef CV_TYPE |
32 | }; |
33 | |
34 | static const EnumEntry<uint16_t> RegisterNames_X86[] = { |
35 | #define CV_REGISTERS_X86 |
36 | #define CV_REGISTER(name, val) CV_ENUM_CLASS_ENT(RegisterId, name), |
37 | #include "llvm/DebugInfo/CodeView/CodeViewRegisters.def" |
38 | #undef CV_REGISTER |
39 | #undef CV_REGISTERS_X86 |
40 | }; |
41 | |
42 | static const EnumEntry<uint16_t> RegisterNames_ARM[] = { |
43 | #define CV_REGISTERS_ARM |
44 | #define CV_REGISTER(name, val) CV_ENUM_CLASS_ENT(RegisterId, name), |
45 | #include "llvm/DebugInfo/CodeView/CodeViewRegisters.def" |
46 | #undef CV_REGISTER |
47 | #undef CV_REGISTERS_ARM |
48 | }; |
49 | |
50 | static const EnumEntry<uint16_t> RegisterNames_ARM64[] = { |
51 | #define CV_REGISTERS_ARM64 |
52 | #define CV_REGISTER(name, val) CV_ENUM_CLASS_ENT(RegisterId, name), |
53 | #include "llvm/DebugInfo/CodeView/CodeViewRegisters.def" |
54 | #undef CV_REGISTER |
55 | #undef CV_REGISTERS_ARM64 |
56 | }; |
57 | |
58 | static const EnumEntry<uint32_t> PublicSymFlagNames[] = { |
59 | CV_ENUM_CLASS_ENT(PublicSymFlags, Code), |
60 | CV_ENUM_CLASS_ENT(PublicSymFlags, Function), |
61 | CV_ENUM_CLASS_ENT(PublicSymFlags, Managed), |
62 | CV_ENUM_CLASS_ENT(PublicSymFlags, MSIL), |
63 | }; |
64 | |
65 | static const EnumEntry<uint8_t> ProcSymFlagNames[] = { |
66 | CV_ENUM_CLASS_ENT(ProcSymFlags, HasFP), |
67 | CV_ENUM_CLASS_ENT(ProcSymFlags, HasIRET), |
68 | CV_ENUM_CLASS_ENT(ProcSymFlags, HasFRET), |
69 | CV_ENUM_CLASS_ENT(ProcSymFlags, IsNoReturn), |
70 | CV_ENUM_CLASS_ENT(ProcSymFlags, IsUnreachable), |
71 | CV_ENUM_CLASS_ENT(ProcSymFlags, HasCustomCallingConv), |
72 | CV_ENUM_CLASS_ENT(ProcSymFlags, IsNoInline), |
73 | CV_ENUM_CLASS_ENT(ProcSymFlags, HasOptimizedDebugInfo), |
74 | }; |
75 | |
76 | static const EnumEntry<uint16_t> LocalFlags[] = { |
77 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsParameter), |
78 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsAddressTaken), |
79 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsCompilerGenerated), |
80 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsAggregate), |
81 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsAggregated), |
82 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsAliased), |
83 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsAlias), |
84 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsReturnValue), |
85 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsOptimizedOut), |
86 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredGlobal), |
87 | CV_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredStatic), |
88 | }; |
89 | |
90 | static const EnumEntry<uint8_t> FrameCookieKinds[] = { |
91 | CV_ENUM_CLASS_ENT(FrameCookieKind, Copy), |
92 | CV_ENUM_CLASS_ENT(FrameCookieKind, XorStackPointer), |
93 | CV_ENUM_CLASS_ENT(FrameCookieKind, XorFramePointer), |
94 | CV_ENUM_CLASS_ENT(FrameCookieKind, XorR13), |
95 | }; |
96 | |
97 | static const EnumEntry<codeview::SourceLanguage> SourceLanguages[] = { |
98 | CV_ENUM_ENT(SourceLanguage, C), CV_ENUM_ENT(SourceLanguage, Cpp), |
99 | CV_ENUM_ENT(SourceLanguage, Fortran), CV_ENUM_ENT(SourceLanguage, Masm), |
100 | CV_ENUM_ENT(SourceLanguage, Pascal), CV_ENUM_ENT(SourceLanguage, Basic), |
101 | CV_ENUM_ENT(SourceLanguage, Cobol), CV_ENUM_ENT(SourceLanguage, Link), |
102 | CV_ENUM_ENT(SourceLanguage, Cvtres), CV_ENUM_ENT(SourceLanguage, Cvtpgd), |
103 | CV_ENUM_ENT(SourceLanguage, CSharp), CV_ENUM_ENT(SourceLanguage, VB), |
104 | CV_ENUM_ENT(SourceLanguage, ILAsm), CV_ENUM_ENT(SourceLanguage, Java), |
105 | CV_ENUM_ENT(SourceLanguage, JScript), CV_ENUM_ENT(SourceLanguage, MSIL), |
106 | CV_ENUM_ENT(SourceLanguage, HLSL), CV_ENUM_ENT(SourceLanguage, D), |
107 | CV_ENUM_ENT(SourceLanguage, Swift), CV_ENUM_ENT(SourceLanguage, Rust), |
108 | CV_ENUM_ENT(SourceLanguage, ObjC), CV_ENUM_ENT(SourceLanguage, ObjCpp), |
109 | CV_ENUM_ENT(SourceLanguage, AliasObj), CV_ENUM_ENT(SourceLanguage, Go), |
110 | {"Swift" , SourceLanguage::OldSwift}, |
111 | }; |
112 | |
113 | static const EnumEntry<uint32_t> CompileSym2FlagNames[] = { |
114 | CV_ENUM_CLASS_ENT(CompileSym2Flags, EC), |
115 | CV_ENUM_CLASS_ENT(CompileSym2Flags, NoDbgInfo), |
116 | CV_ENUM_CLASS_ENT(CompileSym2Flags, LTCG), |
117 | CV_ENUM_CLASS_ENT(CompileSym2Flags, NoDataAlign), |
118 | CV_ENUM_CLASS_ENT(CompileSym2Flags, ManagedPresent), |
119 | CV_ENUM_CLASS_ENT(CompileSym2Flags, SecurityChecks), |
120 | CV_ENUM_CLASS_ENT(CompileSym2Flags, HotPatch), |
121 | CV_ENUM_CLASS_ENT(CompileSym2Flags, CVTCIL), |
122 | CV_ENUM_CLASS_ENT(CompileSym2Flags, MSILModule), |
123 | }; |
124 | |
125 | static const EnumEntry<uint32_t> CompileSym3FlagNames[] = { |
126 | CV_ENUM_CLASS_ENT(CompileSym3Flags, EC), |
127 | CV_ENUM_CLASS_ENT(CompileSym3Flags, NoDbgInfo), |
128 | CV_ENUM_CLASS_ENT(CompileSym3Flags, LTCG), |
129 | CV_ENUM_CLASS_ENT(CompileSym3Flags, NoDataAlign), |
130 | CV_ENUM_CLASS_ENT(CompileSym3Flags, ManagedPresent), |
131 | CV_ENUM_CLASS_ENT(CompileSym3Flags, SecurityChecks), |
132 | CV_ENUM_CLASS_ENT(CompileSym3Flags, HotPatch), |
133 | CV_ENUM_CLASS_ENT(CompileSym3Flags, CVTCIL), |
134 | CV_ENUM_CLASS_ENT(CompileSym3Flags, MSILModule), |
135 | CV_ENUM_CLASS_ENT(CompileSym3Flags, Sdl), |
136 | CV_ENUM_CLASS_ENT(CompileSym3Flags, PGO), |
137 | CV_ENUM_CLASS_ENT(CompileSym3Flags, Exp), |
138 | }; |
139 | |
140 | static const EnumEntry<uint32_t> FileChecksumNames[] = { |
141 | CV_ENUM_CLASS_ENT(FileChecksumKind, None), |
142 | CV_ENUM_CLASS_ENT(FileChecksumKind, MD5), |
143 | CV_ENUM_CLASS_ENT(FileChecksumKind, SHA1), |
144 | CV_ENUM_CLASS_ENT(FileChecksumKind, SHA256), |
145 | }; |
146 | |
147 | static const EnumEntry<unsigned> CPUTypeNames[] = { |
148 | CV_ENUM_CLASS_ENT(CPUType, Intel8080), |
149 | CV_ENUM_CLASS_ENT(CPUType, Intel8086), |
150 | CV_ENUM_CLASS_ENT(CPUType, Intel80286), |
151 | CV_ENUM_CLASS_ENT(CPUType, Intel80386), |
152 | CV_ENUM_CLASS_ENT(CPUType, Intel80486), |
153 | CV_ENUM_CLASS_ENT(CPUType, Pentium), |
154 | CV_ENUM_CLASS_ENT(CPUType, PentiumPro), |
155 | CV_ENUM_CLASS_ENT(CPUType, Pentium3), |
156 | CV_ENUM_CLASS_ENT(CPUType, MIPS), |
157 | CV_ENUM_CLASS_ENT(CPUType, MIPS16), |
158 | CV_ENUM_CLASS_ENT(CPUType, MIPS32), |
159 | CV_ENUM_CLASS_ENT(CPUType, MIPS64), |
160 | CV_ENUM_CLASS_ENT(CPUType, MIPSI), |
161 | CV_ENUM_CLASS_ENT(CPUType, MIPSII), |
162 | CV_ENUM_CLASS_ENT(CPUType, MIPSIII), |
163 | CV_ENUM_CLASS_ENT(CPUType, MIPSIV), |
164 | CV_ENUM_CLASS_ENT(CPUType, MIPSV), |
165 | CV_ENUM_CLASS_ENT(CPUType, M68000), |
166 | CV_ENUM_CLASS_ENT(CPUType, M68010), |
167 | CV_ENUM_CLASS_ENT(CPUType, M68020), |
168 | CV_ENUM_CLASS_ENT(CPUType, M68030), |
169 | CV_ENUM_CLASS_ENT(CPUType, M68040), |
170 | CV_ENUM_CLASS_ENT(CPUType, Alpha), |
171 | CV_ENUM_CLASS_ENT(CPUType, Alpha21164), |
172 | CV_ENUM_CLASS_ENT(CPUType, Alpha21164A), |
173 | CV_ENUM_CLASS_ENT(CPUType, Alpha21264), |
174 | CV_ENUM_CLASS_ENT(CPUType, Alpha21364), |
175 | CV_ENUM_CLASS_ENT(CPUType, PPC601), |
176 | CV_ENUM_CLASS_ENT(CPUType, PPC603), |
177 | CV_ENUM_CLASS_ENT(CPUType, PPC604), |
178 | CV_ENUM_CLASS_ENT(CPUType, PPC620), |
179 | CV_ENUM_CLASS_ENT(CPUType, PPCFP), |
180 | CV_ENUM_CLASS_ENT(CPUType, PPCBE), |
181 | CV_ENUM_CLASS_ENT(CPUType, SH3), |
182 | CV_ENUM_CLASS_ENT(CPUType, SH3E), |
183 | CV_ENUM_CLASS_ENT(CPUType, SH3DSP), |
184 | CV_ENUM_CLASS_ENT(CPUType, SH4), |
185 | CV_ENUM_CLASS_ENT(CPUType, SHMedia), |
186 | CV_ENUM_CLASS_ENT(CPUType, ARM3), |
187 | CV_ENUM_CLASS_ENT(CPUType, ARM4), |
188 | CV_ENUM_CLASS_ENT(CPUType, ARM4T), |
189 | CV_ENUM_CLASS_ENT(CPUType, ARM5), |
190 | CV_ENUM_CLASS_ENT(CPUType, ARM5T), |
191 | CV_ENUM_CLASS_ENT(CPUType, ARM6), |
192 | CV_ENUM_CLASS_ENT(CPUType, ARM_XMAC), |
193 | CV_ENUM_CLASS_ENT(CPUType, ARM_WMMX), |
194 | CV_ENUM_CLASS_ENT(CPUType, ARM7), |
195 | CV_ENUM_CLASS_ENT(CPUType, Omni), |
196 | CV_ENUM_CLASS_ENT(CPUType, Ia64), |
197 | CV_ENUM_CLASS_ENT(CPUType, Ia64_2), |
198 | CV_ENUM_CLASS_ENT(CPUType, CEE), |
199 | CV_ENUM_CLASS_ENT(CPUType, AM33), |
200 | CV_ENUM_CLASS_ENT(CPUType, M32R), |
201 | CV_ENUM_CLASS_ENT(CPUType, TriCore), |
202 | CV_ENUM_CLASS_ENT(CPUType, X64), |
203 | CV_ENUM_CLASS_ENT(CPUType, EBC), |
204 | CV_ENUM_CLASS_ENT(CPUType, Thumb), |
205 | CV_ENUM_CLASS_ENT(CPUType, ARMNT), |
206 | CV_ENUM_CLASS_ENT(CPUType, ARM64), |
207 | CV_ENUM_CLASS_ENT(CPUType, HybridX86ARM64), |
208 | CV_ENUM_CLASS_ENT(CPUType, ARM64EC), |
209 | CV_ENUM_CLASS_ENT(CPUType, ARM64X), |
210 | CV_ENUM_CLASS_ENT(CPUType, Unknown), |
211 | CV_ENUM_CLASS_ENT(CPUType, D3D11_Shader), |
212 | }; |
213 | |
214 | static const EnumEntry<uint32_t> FrameProcSymFlagNames[] = { |
215 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasAlloca), |
216 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasSetJmp), |
217 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasLongJmp), |
218 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasInlineAssembly), |
219 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasExceptionHandling), |
220 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, MarkedInline), |
221 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasStructuredExceptionHandling), |
222 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, Naked), |
223 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, SecurityChecks), |
224 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, AsynchronousExceptionHandling), |
225 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, NoStackOrderingForSecurityChecks), |
226 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, Inlined), |
227 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, StrictSecurityChecks), |
228 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, SafeBuffers), |
229 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, EncodedLocalBasePointerMask), |
230 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, EncodedParamBasePointerMask), |
231 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, ProfileGuidedOptimization), |
232 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, ValidProfileCounts), |
233 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, OptimizedForSpeed), |
234 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, GuardCfg), |
235 | CV_ENUM_CLASS_ENT(FrameProcedureOptions, GuardCfw), |
236 | }; |
237 | |
238 | static const EnumEntry<uint32_t> ModuleSubstreamKindNames[] = { |
239 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, None), |
240 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, Symbols), |
241 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, Lines), |
242 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, StringTable), |
243 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, FileChecksums), |
244 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, FrameData), |
245 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, InlineeLines), |
246 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, CrossScopeImports), |
247 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, CrossScopeExports), |
248 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, ILLines), |
249 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, FuncMDTokenMap), |
250 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, TypeMDTokenMap), |
251 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, MergedAssemblyInput), |
252 | CV_ENUM_CLASS_ENT(DebugSubsectionKind, CoffSymbolRVA), |
253 | }; |
254 | |
255 | static const EnumEntry<uint16_t> ExportSymFlagNames[] = { |
256 | CV_ENUM_CLASS_ENT(ExportFlags, IsConstant), |
257 | CV_ENUM_CLASS_ENT(ExportFlags, IsData), |
258 | CV_ENUM_CLASS_ENT(ExportFlags, IsPrivate), |
259 | CV_ENUM_CLASS_ENT(ExportFlags, HasNoName), |
260 | CV_ENUM_CLASS_ENT(ExportFlags, HasExplicitOrdinal), |
261 | CV_ENUM_CLASS_ENT(ExportFlags, IsForwarder), |
262 | }; |
263 | |
264 | static const EnumEntry<uint8_t> ThunkOrdinalNames[] = { |
265 | CV_ENUM_CLASS_ENT(ThunkOrdinal, Standard), |
266 | CV_ENUM_CLASS_ENT(ThunkOrdinal, ThisAdjustor), |
267 | CV_ENUM_CLASS_ENT(ThunkOrdinal, Vcall), |
268 | CV_ENUM_CLASS_ENT(ThunkOrdinal, Pcode), |
269 | CV_ENUM_CLASS_ENT(ThunkOrdinal, UnknownLoad), |
270 | CV_ENUM_CLASS_ENT(ThunkOrdinal, TrampIncremental), |
271 | CV_ENUM_CLASS_ENT(ThunkOrdinal, BranchIsland), |
272 | }; |
273 | |
274 | static const EnumEntry<uint16_t> TrampolineNames[] = { |
275 | CV_ENUM_CLASS_ENT(TrampolineType, TrampIncremental), |
276 | CV_ENUM_CLASS_ENT(TrampolineType, BranchIsland), |
277 | }; |
278 | |
279 | static const EnumEntry<COFF::SectionCharacteristics> |
280 | ImageSectionCharacteristicNames[] = { |
281 | CV_ENUM_ENT(COFF, IMAGE_SCN_TYPE_NOLOAD), |
282 | CV_ENUM_ENT(COFF, IMAGE_SCN_TYPE_NO_PAD), |
283 | CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_CODE), |
284 | CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_INITIALIZED_DATA), |
285 | CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_UNINITIALIZED_DATA), |
286 | CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_OTHER), |
287 | CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_INFO), |
288 | CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_REMOVE), |
289 | CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_COMDAT), |
290 | CV_ENUM_ENT(COFF, IMAGE_SCN_GPREL), |
291 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_PURGEABLE), |
292 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_16BIT), |
293 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_LOCKED), |
294 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_PRELOAD), |
295 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_1BYTES), |
296 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_2BYTES), |
297 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_4BYTES), |
298 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_8BYTES), |
299 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_16BYTES), |
300 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_32BYTES), |
301 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_64BYTES), |
302 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_128BYTES), |
303 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_256BYTES), |
304 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_512BYTES), |
305 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_1024BYTES), |
306 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_2048BYTES), |
307 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_4096BYTES), |
308 | CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_8192BYTES), |
309 | CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_NRELOC_OVFL), |
310 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_DISCARDABLE), |
311 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_NOT_CACHED), |
312 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_NOT_PAGED), |
313 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_SHARED), |
314 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_EXECUTE), |
315 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_READ), |
316 | CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_WRITE)}; |
317 | |
318 | static const EnumEntry<uint16_t> ClassOptionNames[] = { |
319 | CV_ENUM_CLASS_ENT(ClassOptions, Packed), |
320 | CV_ENUM_CLASS_ENT(ClassOptions, HasConstructorOrDestructor), |
321 | CV_ENUM_CLASS_ENT(ClassOptions, HasOverloadedOperator), |
322 | CV_ENUM_CLASS_ENT(ClassOptions, Nested), |
323 | CV_ENUM_CLASS_ENT(ClassOptions, ContainsNestedClass), |
324 | CV_ENUM_CLASS_ENT(ClassOptions, HasOverloadedAssignmentOperator), |
325 | CV_ENUM_CLASS_ENT(ClassOptions, HasConversionOperator), |
326 | CV_ENUM_CLASS_ENT(ClassOptions, ForwardReference), |
327 | CV_ENUM_CLASS_ENT(ClassOptions, Scoped), |
328 | CV_ENUM_CLASS_ENT(ClassOptions, HasUniqueName), |
329 | CV_ENUM_CLASS_ENT(ClassOptions, Sealed), |
330 | CV_ENUM_CLASS_ENT(ClassOptions, Intrinsic), |
331 | }; |
332 | |
333 | static const EnumEntry<uint8_t> MemberAccessNames[] = { |
334 | CV_ENUM_CLASS_ENT(MemberAccess, None), |
335 | CV_ENUM_CLASS_ENT(MemberAccess, Private), |
336 | CV_ENUM_CLASS_ENT(MemberAccess, Protected), |
337 | CV_ENUM_CLASS_ENT(MemberAccess, Public), |
338 | }; |
339 | |
340 | static const EnumEntry<uint16_t> MethodOptionNames[] = { |
341 | CV_ENUM_CLASS_ENT(MethodOptions, Pseudo), |
342 | CV_ENUM_CLASS_ENT(MethodOptions, NoInherit), |
343 | CV_ENUM_CLASS_ENT(MethodOptions, NoConstruct), |
344 | CV_ENUM_CLASS_ENT(MethodOptions, CompilerGenerated), |
345 | CV_ENUM_CLASS_ENT(MethodOptions, Sealed), |
346 | }; |
347 | |
348 | static const EnumEntry<uint16_t> MemberKindNames[] = { |
349 | CV_ENUM_CLASS_ENT(MethodKind, Vanilla), |
350 | CV_ENUM_CLASS_ENT(MethodKind, Virtual), |
351 | CV_ENUM_CLASS_ENT(MethodKind, Static), |
352 | CV_ENUM_CLASS_ENT(MethodKind, Friend), |
353 | CV_ENUM_CLASS_ENT(MethodKind, IntroducingVirtual), |
354 | CV_ENUM_CLASS_ENT(MethodKind, PureVirtual), |
355 | CV_ENUM_CLASS_ENT(MethodKind, PureIntroducingVirtual), |
356 | }; |
357 | |
358 | static const EnumEntry<uint8_t> PtrKindNames[] = { |
359 | CV_ENUM_CLASS_ENT(PointerKind, Near16), |
360 | CV_ENUM_CLASS_ENT(PointerKind, Far16), |
361 | CV_ENUM_CLASS_ENT(PointerKind, Huge16), |
362 | CV_ENUM_CLASS_ENT(PointerKind, BasedOnSegment), |
363 | CV_ENUM_CLASS_ENT(PointerKind, BasedOnValue), |
364 | CV_ENUM_CLASS_ENT(PointerKind, BasedOnSegmentValue), |
365 | CV_ENUM_CLASS_ENT(PointerKind, BasedOnAddress), |
366 | CV_ENUM_CLASS_ENT(PointerKind, BasedOnSegmentAddress), |
367 | CV_ENUM_CLASS_ENT(PointerKind, BasedOnType), |
368 | CV_ENUM_CLASS_ENT(PointerKind, BasedOnSelf), |
369 | CV_ENUM_CLASS_ENT(PointerKind, Near32), |
370 | CV_ENUM_CLASS_ENT(PointerKind, Far32), |
371 | CV_ENUM_CLASS_ENT(PointerKind, Near64), |
372 | }; |
373 | |
374 | static const EnumEntry<uint8_t> PtrModeNames[] = { |
375 | CV_ENUM_CLASS_ENT(PointerMode, Pointer), |
376 | CV_ENUM_CLASS_ENT(PointerMode, LValueReference), |
377 | CV_ENUM_CLASS_ENT(PointerMode, PointerToDataMember), |
378 | CV_ENUM_CLASS_ENT(PointerMode, PointerToMemberFunction), |
379 | CV_ENUM_CLASS_ENT(PointerMode, RValueReference), |
380 | }; |
381 | |
382 | static const EnumEntry<uint16_t> PtrMemberRepNames[] = { |
383 | CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, Unknown), |
384 | CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, SingleInheritanceData), |
385 | CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, MultipleInheritanceData), |
386 | CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, VirtualInheritanceData), |
387 | CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, GeneralData), |
388 | CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, SingleInheritanceFunction), |
389 | CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, |
390 | MultipleInheritanceFunction), |
391 | CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, |
392 | VirtualInheritanceFunction), |
393 | CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, GeneralFunction), |
394 | }; |
395 | |
396 | static const EnumEntry<uint16_t> TypeModifierNames[] = { |
397 | CV_ENUM_CLASS_ENT(ModifierOptions, Const), |
398 | CV_ENUM_CLASS_ENT(ModifierOptions, Volatile), |
399 | CV_ENUM_CLASS_ENT(ModifierOptions, Unaligned), |
400 | }; |
401 | |
402 | static const EnumEntry<uint8_t> CallingConventions[] = { |
403 | CV_ENUM_CLASS_ENT(CallingConvention, NearC), |
404 | CV_ENUM_CLASS_ENT(CallingConvention, FarC), |
405 | CV_ENUM_CLASS_ENT(CallingConvention, NearPascal), |
406 | CV_ENUM_CLASS_ENT(CallingConvention, FarPascal), |
407 | CV_ENUM_CLASS_ENT(CallingConvention, NearFast), |
408 | CV_ENUM_CLASS_ENT(CallingConvention, FarFast), |
409 | CV_ENUM_CLASS_ENT(CallingConvention, NearStdCall), |
410 | CV_ENUM_CLASS_ENT(CallingConvention, FarStdCall), |
411 | CV_ENUM_CLASS_ENT(CallingConvention, NearSysCall), |
412 | CV_ENUM_CLASS_ENT(CallingConvention, FarSysCall), |
413 | CV_ENUM_CLASS_ENT(CallingConvention, ThisCall), |
414 | CV_ENUM_CLASS_ENT(CallingConvention, MipsCall), |
415 | CV_ENUM_CLASS_ENT(CallingConvention, Generic), |
416 | CV_ENUM_CLASS_ENT(CallingConvention, AlphaCall), |
417 | CV_ENUM_CLASS_ENT(CallingConvention, PpcCall), |
418 | CV_ENUM_CLASS_ENT(CallingConvention, SHCall), |
419 | CV_ENUM_CLASS_ENT(CallingConvention, ArmCall), |
420 | CV_ENUM_CLASS_ENT(CallingConvention, AM33Call), |
421 | CV_ENUM_CLASS_ENT(CallingConvention, TriCall), |
422 | CV_ENUM_CLASS_ENT(CallingConvention, SH5Call), |
423 | CV_ENUM_CLASS_ENT(CallingConvention, M32RCall), |
424 | CV_ENUM_CLASS_ENT(CallingConvention, ClrCall), |
425 | CV_ENUM_CLASS_ENT(CallingConvention, Inline), |
426 | CV_ENUM_CLASS_ENT(CallingConvention, NearVector), |
427 | CV_ENUM_CLASS_ENT(CallingConvention, Swift), |
428 | }; |
429 | |
430 | static const EnumEntry<uint8_t> FunctionOptionEnum[] = { |
431 | CV_ENUM_CLASS_ENT(FunctionOptions, CxxReturnUdt), |
432 | CV_ENUM_CLASS_ENT(FunctionOptions, Constructor), |
433 | CV_ENUM_CLASS_ENT(FunctionOptions, ConstructorWithVirtualBases), |
434 | }; |
435 | |
436 | static const EnumEntry<uint16_t> LabelTypeEnum[] = { |
437 | CV_ENUM_CLASS_ENT(LabelType, Near), |
438 | CV_ENUM_CLASS_ENT(LabelType, Far), |
439 | }; |
440 | |
441 | static const EnumEntry<uint16_t> JumpTableEntrySizeNames[] = { |
442 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, Int8), |
443 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, UInt8), |
444 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, Int16), |
445 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, UInt16), |
446 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, Int32), |
447 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, UInt32), |
448 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, Pointer), |
449 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, UInt8ShiftLeft), |
450 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, UInt16ShiftLeft), |
451 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, Int8ShiftLeft), |
452 | CV_ENUM_CLASS_ENT(JumpTableEntrySize, Int16ShiftLeft), |
453 | }; |
454 | |
455 | namespace llvm { |
456 | namespace codeview { |
457 | |
458 | ArrayRef<EnumEntry<SymbolKind>> getSymbolTypeNames() { |
459 | return ArrayRef(SymbolTypeNames); |
460 | } |
461 | |
462 | ArrayRef<EnumEntry<TypeLeafKind>> getTypeLeafNames() { |
463 | return ArrayRef(TypeLeafNames); |
464 | } |
465 | |
466 | ArrayRef<EnumEntry<uint16_t>> getRegisterNames(CPUType Cpu) { |
467 | if (Cpu == CPUType::ARMNT) { |
468 | return ArrayRef(RegisterNames_ARM); |
469 | } else if (Cpu == CPUType::ARM64) { |
470 | return ArrayRef(RegisterNames_ARM64); |
471 | } |
472 | return ArrayRef(RegisterNames_X86); |
473 | } |
474 | |
475 | ArrayRef<EnumEntry<uint32_t>> getPublicSymFlagNames() { |
476 | return ArrayRef(PublicSymFlagNames); |
477 | } |
478 | |
479 | ArrayRef<EnumEntry<uint8_t>> getProcSymFlagNames() { |
480 | return ArrayRef(ProcSymFlagNames); |
481 | } |
482 | |
483 | ArrayRef<EnumEntry<uint16_t>> getLocalFlagNames() { |
484 | return ArrayRef(LocalFlags); |
485 | } |
486 | |
487 | ArrayRef<EnumEntry<uint8_t>> getFrameCookieKindNames() { |
488 | return ArrayRef(FrameCookieKinds); |
489 | } |
490 | |
491 | ArrayRef<EnumEntry<SourceLanguage>> getSourceLanguageNames() { |
492 | return ArrayRef(SourceLanguages); |
493 | } |
494 | |
495 | ArrayRef<EnumEntry<uint32_t>> getCompileSym2FlagNames() { |
496 | return ArrayRef(CompileSym2FlagNames); |
497 | } |
498 | |
499 | ArrayRef<EnumEntry<uint32_t>> getCompileSym3FlagNames() { |
500 | return ArrayRef(CompileSym3FlagNames); |
501 | } |
502 | |
503 | ArrayRef<EnumEntry<uint32_t>> getFileChecksumNames() { |
504 | return ArrayRef(FileChecksumNames); |
505 | } |
506 | |
507 | ArrayRef<EnumEntry<unsigned>> getCPUTypeNames() { |
508 | return ArrayRef(CPUTypeNames); |
509 | } |
510 | |
511 | ArrayRef<EnumEntry<uint32_t>> getFrameProcSymFlagNames() { |
512 | return ArrayRef(FrameProcSymFlagNames); |
513 | } |
514 | |
515 | ArrayRef<EnumEntry<uint16_t>> getExportSymFlagNames() { |
516 | return ArrayRef(ExportSymFlagNames); |
517 | } |
518 | |
519 | ArrayRef<EnumEntry<uint32_t>> getModuleSubstreamKindNames() { |
520 | return ArrayRef(ModuleSubstreamKindNames); |
521 | } |
522 | |
523 | ArrayRef<EnumEntry<uint8_t>> getThunkOrdinalNames() { |
524 | return ArrayRef(ThunkOrdinalNames); |
525 | } |
526 | |
527 | ArrayRef<EnumEntry<uint16_t>> getTrampolineNames() { |
528 | return ArrayRef(TrampolineNames); |
529 | } |
530 | |
531 | ArrayRef<EnumEntry<COFF::SectionCharacteristics>> |
532 | getImageSectionCharacteristicNames() { |
533 | return ArrayRef(ImageSectionCharacteristicNames); |
534 | } |
535 | |
536 | ArrayRef<EnumEntry<uint16_t>> getClassOptionNames() { |
537 | return ArrayRef(ClassOptionNames); |
538 | } |
539 | |
540 | ArrayRef<EnumEntry<uint8_t>> getMemberAccessNames() { |
541 | return ArrayRef(MemberAccessNames); |
542 | } |
543 | |
544 | ArrayRef<EnumEntry<uint16_t>> getMethodOptionNames() { |
545 | return ArrayRef(MethodOptionNames); |
546 | } |
547 | |
548 | ArrayRef<EnumEntry<uint16_t>> getMemberKindNames() { |
549 | return ArrayRef(MemberKindNames); |
550 | } |
551 | |
552 | ArrayRef<EnumEntry<uint8_t>> getPtrKindNames() { |
553 | return ArrayRef(PtrKindNames); |
554 | } |
555 | |
556 | ArrayRef<EnumEntry<uint8_t>> getPtrModeNames() { |
557 | return ArrayRef(PtrModeNames); |
558 | } |
559 | |
560 | ArrayRef<EnumEntry<uint16_t>> getPtrMemberRepNames() { |
561 | return ArrayRef(PtrMemberRepNames); |
562 | } |
563 | |
564 | ArrayRef<EnumEntry<uint16_t>> getTypeModifierNames() { |
565 | return ArrayRef(TypeModifierNames); |
566 | } |
567 | |
568 | ArrayRef<EnumEntry<uint8_t>> getCallingConventions() { |
569 | return ArrayRef(CallingConventions); |
570 | } |
571 | |
572 | ArrayRef<EnumEntry<uint8_t>> getFunctionOptionEnum() { |
573 | return ArrayRef(FunctionOptionEnum); |
574 | } |
575 | |
576 | ArrayRef<EnumEntry<uint16_t>> getLabelTypeEnum() { |
577 | return ArrayRef(LabelTypeEnum); |
578 | } |
579 | |
580 | ArrayRef<EnumEntry<uint16_t>> getJumpTableEntrySizeNames() { |
581 | return ArrayRef(JumpTableEntrySizeNames); |
582 | } |
583 | |
584 | } // end namespace codeview |
585 | } // end namespace llvm |
586 | |