1//===- EnumTables.cpp - Enum to string conversion tables --------*- 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
10#include "llvm/DebugInfo/CodeView/EnumTables.h"
11
12using namespace llvm;
13using namespace codeview;
14
15#define CV_ENUM_CLASS_ENT(enum_class, enum)                                    \
16  { #enum, std::underlying_type < enum_class > ::type(enum_class::enum) }
17
18#define CV_ENUM_ENT(ns, enum)                                                  \
19  { #enum, ns::enum }
20
21static const EnumEntry<SymbolKind> SymbolTypeNames[] = {
22#define CV_SYMBOL(enum, val) {#enum, enum},
23#include "llvm/DebugInfo/CodeView/CVSymbolTypes.def"
24#undef CV_SYMBOL
25};
26
27static const EnumEntry<uint16_t> RegisterNames[] = {
28    CV_ENUM_CLASS_ENT(RegisterId, Unknown),
29    CV_ENUM_CLASS_ENT(RegisterId, VFrame),
30    CV_ENUM_CLASS_ENT(RegisterId, AL),
31    CV_ENUM_CLASS_ENT(RegisterId, CL),
32    CV_ENUM_CLASS_ENT(RegisterId, DL),
33    CV_ENUM_CLASS_ENT(RegisterId, BL),
34    CV_ENUM_CLASS_ENT(RegisterId, AH),
35    CV_ENUM_CLASS_ENT(RegisterId, CH),
36    CV_ENUM_CLASS_ENT(RegisterId, DH),
37    CV_ENUM_CLASS_ENT(RegisterId, BH),
38    CV_ENUM_CLASS_ENT(RegisterId, AX),
39    CV_ENUM_CLASS_ENT(RegisterId, CX),
40    CV_ENUM_CLASS_ENT(RegisterId, DX),
41    CV_ENUM_CLASS_ENT(RegisterId, BX),
42    CV_ENUM_CLASS_ENT(RegisterId, SP),
43    CV_ENUM_CLASS_ENT(RegisterId, BP),
44    CV_ENUM_CLASS_ENT(RegisterId, SI),
45    CV_ENUM_CLASS_ENT(RegisterId, DI),
46    CV_ENUM_CLASS_ENT(RegisterId, EAX),
47    CV_ENUM_CLASS_ENT(RegisterId, ECX),
48    CV_ENUM_CLASS_ENT(RegisterId, EDX),
49    CV_ENUM_CLASS_ENT(RegisterId, EBX),
50    CV_ENUM_CLASS_ENT(RegisterId, ESP),
51    CV_ENUM_CLASS_ENT(RegisterId, EBP),
52    CV_ENUM_CLASS_ENT(RegisterId, ESI),
53    CV_ENUM_CLASS_ENT(RegisterId, EDI),
54    CV_ENUM_CLASS_ENT(RegisterId, ES),
55    CV_ENUM_CLASS_ENT(RegisterId, CS),
56    CV_ENUM_CLASS_ENT(RegisterId, SS),
57    CV_ENUM_CLASS_ENT(RegisterId, DS),
58    CV_ENUM_CLASS_ENT(RegisterId, FS),
59    CV_ENUM_CLASS_ENT(RegisterId, GS),
60    CV_ENUM_CLASS_ENT(RegisterId, IP),
61    CV_ENUM_CLASS_ENT(RegisterId, RAX),
62    CV_ENUM_CLASS_ENT(RegisterId, RBX),
63    CV_ENUM_CLASS_ENT(RegisterId, RCX),
64    CV_ENUM_CLASS_ENT(RegisterId, RDX),
65    CV_ENUM_CLASS_ENT(RegisterId, RSI),
66    CV_ENUM_CLASS_ENT(RegisterId, RDI),
67    CV_ENUM_CLASS_ENT(RegisterId, RBP),
68    CV_ENUM_CLASS_ENT(RegisterId, RSP),
69    CV_ENUM_CLASS_ENT(RegisterId, R8),
70    CV_ENUM_CLASS_ENT(RegisterId, R9),
71    CV_ENUM_CLASS_ENT(RegisterId, R10),
72    CV_ENUM_CLASS_ENT(RegisterId, R11),
73    CV_ENUM_CLASS_ENT(RegisterId, R12),
74    CV_ENUM_CLASS_ENT(RegisterId, R13),
75    CV_ENUM_CLASS_ENT(RegisterId, R14),
76    CV_ENUM_CLASS_ENT(RegisterId, R15),
77};
78
79static const EnumEntry<uint8_t> ProcSymFlagNames[] = {
80    CV_ENUM_CLASS_ENT(ProcSymFlags, HasFP),
81    CV_ENUM_CLASS_ENT(ProcSymFlags, HasIRET),
82    CV_ENUM_CLASS_ENT(ProcSymFlags, HasFRET),
83    CV_ENUM_CLASS_ENT(ProcSymFlags, IsNoReturn),
84    CV_ENUM_CLASS_ENT(ProcSymFlags, IsUnreachable),
85    CV_ENUM_CLASS_ENT(ProcSymFlags, HasCustomCallingConv),
86    CV_ENUM_CLASS_ENT(ProcSymFlags, IsNoInline),
87    CV_ENUM_CLASS_ENT(ProcSymFlags, HasOptimizedDebugInfo),
88};
89
90static const EnumEntry<uint16_t> LocalFlags[] = {
91    CV_ENUM_CLASS_ENT(LocalSymFlags, IsParameter),
92    CV_ENUM_CLASS_ENT(LocalSymFlags, IsAddressTaken),
93    CV_ENUM_CLASS_ENT(LocalSymFlags, IsCompilerGenerated),
94    CV_ENUM_CLASS_ENT(LocalSymFlags, IsAggregate),
95    CV_ENUM_CLASS_ENT(LocalSymFlags, IsAggregated),
96    CV_ENUM_CLASS_ENT(LocalSymFlags, IsAliased),
97    CV_ENUM_CLASS_ENT(LocalSymFlags, IsAlias),
98    CV_ENUM_CLASS_ENT(LocalSymFlags, IsReturnValue),
99    CV_ENUM_CLASS_ENT(LocalSymFlags, IsOptimizedOut),
100    CV_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredGlobal),
101    CV_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredStatic),
102};
103
104static const EnumEntry<uint8_t> FrameCookieKinds[] = {
105    CV_ENUM_CLASS_ENT(FrameCookieKind, Copy),
106    CV_ENUM_CLASS_ENT(FrameCookieKind, XorStackPointer),
107    CV_ENUM_CLASS_ENT(FrameCookieKind, XorFramePointer),
108    CV_ENUM_CLASS_ENT(FrameCookieKind, XorR13),
109};
110
111static const EnumEntry<codeview::SourceLanguage> SourceLanguages[] = {
112    CV_ENUM_ENT(SourceLanguage, C),       CV_ENUM_ENT(SourceLanguage, Cpp),
113    CV_ENUM_ENT(SourceLanguage, Fortran), CV_ENUM_ENT(SourceLanguage, Masm),
114    CV_ENUM_ENT(SourceLanguage, Pascal),  CV_ENUM_ENT(SourceLanguage, Basic),
115    CV_ENUM_ENT(SourceLanguage, Cobol),   CV_ENUM_ENT(SourceLanguage, Link),
116    CV_ENUM_ENT(SourceLanguage, Cvtres),  CV_ENUM_ENT(SourceLanguage, Cvtpgd),
117    CV_ENUM_ENT(SourceLanguage, CSharp),  CV_ENUM_ENT(SourceLanguage, VB),
118    CV_ENUM_ENT(SourceLanguage, ILAsm),   CV_ENUM_ENT(SourceLanguage, Java),
119    CV_ENUM_ENT(SourceLanguage, JScript), CV_ENUM_ENT(SourceLanguage, MSIL),
120    CV_ENUM_ENT(SourceLanguage, HLSL),
121};
122
123static const EnumEntry<uint32_t> CompileSym2FlagNames[] = {
124    CV_ENUM_CLASS_ENT(CompileSym2Flags, EC),
125    CV_ENUM_CLASS_ENT(CompileSym2Flags, NoDbgInfo),
126    CV_ENUM_CLASS_ENT(CompileSym2Flags, LTCG),
127    CV_ENUM_CLASS_ENT(CompileSym2Flags, NoDataAlign),
128    CV_ENUM_CLASS_ENT(CompileSym2Flags, ManagedPresent),
129    CV_ENUM_CLASS_ENT(CompileSym2Flags, SecurityChecks),
130    CV_ENUM_CLASS_ENT(CompileSym2Flags, HotPatch),
131    CV_ENUM_CLASS_ENT(CompileSym2Flags, CVTCIL),
132    CV_ENUM_CLASS_ENT(CompileSym2Flags, MSILModule),
133};
134
135static const EnumEntry<uint32_t> CompileSym3FlagNames[] = {
136    CV_ENUM_CLASS_ENT(CompileSym3Flags, EC),
137    CV_ENUM_CLASS_ENT(CompileSym3Flags, NoDbgInfo),
138    CV_ENUM_CLASS_ENT(CompileSym3Flags, LTCG),
139    CV_ENUM_CLASS_ENT(CompileSym3Flags, NoDataAlign),
140    CV_ENUM_CLASS_ENT(CompileSym3Flags, ManagedPresent),
141    CV_ENUM_CLASS_ENT(CompileSym3Flags, SecurityChecks),
142    CV_ENUM_CLASS_ENT(CompileSym3Flags, HotPatch),
143    CV_ENUM_CLASS_ENT(CompileSym3Flags, CVTCIL),
144    CV_ENUM_CLASS_ENT(CompileSym3Flags, MSILModule),
145    CV_ENUM_CLASS_ENT(CompileSym3Flags, Sdl),
146    CV_ENUM_CLASS_ENT(CompileSym3Flags, PGO),
147    CV_ENUM_CLASS_ENT(CompileSym3Flags, Exp),
148};
149
150static const EnumEntry<uint32_t> FileChecksumNames[] = {
151    CV_ENUM_CLASS_ENT(FileChecksumKind, None),
152    CV_ENUM_CLASS_ENT(FileChecksumKind, MD5),
153    CV_ENUM_CLASS_ENT(FileChecksumKind, SHA1),
154    CV_ENUM_CLASS_ENT(FileChecksumKind, SHA256),
155};
156
157static const EnumEntry<unsigned> CPUTypeNames[] = {
158    CV_ENUM_CLASS_ENT(CPUType, Intel8080),
159    CV_ENUM_CLASS_ENT(CPUType, Intel8086),
160    CV_ENUM_CLASS_ENT(CPUType, Intel80286),
161    CV_ENUM_CLASS_ENT(CPUType, Intel80386),
162    CV_ENUM_CLASS_ENT(CPUType, Intel80486),
163    CV_ENUM_CLASS_ENT(CPUType, Pentium),
164    CV_ENUM_CLASS_ENT(CPUType, PentiumPro),
165    CV_ENUM_CLASS_ENT(CPUType, Pentium3),
166    CV_ENUM_CLASS_ENT(CPUType, MIPS),
167    CV_ENUM_CLASS_ENT(CPUType, MIPS16),
168    CV_ENUM_CLASS_ENT(CPUType, MIPS32),
169    CV_ENUM_CLASS_ENT(CPUType, MIPS64),
170    CV_ENUM_CLASS_ENT(CPUType, MIPSI),
171    CV_ENUM_CLASS_ENT(CPUType, MIPSII),
172    CV_ENUM_CLASS_ENT(CPUType, MIPSIII),
173    CV_ENUM_CLASS_ENT(CPUType, MIPSIV),
174    CV_ENUM_CLASS_ENT(CPUType, MIPSV),
175    CV_ENUM_CLASS_ENT(CPUType, M68000),
176    CV_ENUM_CLASS_ENT(CPUType, M68010),
177    CV_ENUM_CLASS_ENT(CPUType, M68020),
178    CV_ENUM_CLASS_ENT(CPUType, M68030),
179    CV_ENUM_CLASS_ENT(CPUType, M68040),
180    CV_ENUM_CLASS_ENT(CPUType, Alpha),
181    CV_ENUM_CLASS_ENT(CPUType, Alpha21164),
182    CV_ENUM_CLASS_ENT(CPUType, Alpha21164A),
183    CV_ENUM_CLASS_ENT(CPUType, Alpha21264),
184    CV_ENUM_CLASS_ENT(CPUType, Alpha21364),
185    CV_ENUM_CLASS_ENT(CPUType, PPC601),
186    CV_ENUM_CLASS_ENT(CPUType, PPC603),
187    CV_ENUM_CLASS_ENT(CPUType, PPC604),
188    CV_ENUM_CLASS_ENT(CPUType, PPC620),
189    CV_ENUM_CLASS_ENT(CPUType, PPCFP),
190    CV_ENUM_CLASS_ENT(CPUType, PPCBE),
191    CV_ENUM_CLASS_ENT(CPUType, SH3),
192    CV_ENUM_CLASS_ENT(CPUType, SH3E),
193    CV_ENUM_CLASS_ENT(CPUType, SH3DSP),
194    CV_ENUM_CLASS_ENT(CPUType, SH4),
195    CV_ENUM_CLASS_ENT(CPUType, SHMedia),
196    CV_ENUM_CLASS_ENT(CPUType, ARM3),
197    CV_ENUM_CLASS_ENT(CPUType, ARM4),
198    CV_ENUM_CLASS_ENT(CPUType, ARM4T),
199    CV_ENUM_CLASS_ENT(CPUType, ARM5),
200    CV_ENUM_CLASS_ENT(CPUType, ARM5T),
201    CV_ENUM_CLASS_ENT(CPUType, ARM6),
202    CV_ENUM_CLASS_ENT(CPUType, ARM_XMAC),
203    CV_ENUM_CLASS_ENT(CPUType, ARM_WMMX),
204    CV_ENUM_CLASS_ENT(CPUType, ARM7),
205    CV_ENUM_CLASS_ENT(CPUType, Omni),
206    CV_ENUM_CLASS_ENT(CPUType, Ia64),
207    CV_ENUM_CLASS_ENT(CPUType, Ia64_2),
208    CV_ENUM_CLASS_ENT(CPUType, CEE),
209    CV_ENUM_CLASS_ENT(CPUType, AM33),
210    CV_ENUM_CLASS_ENT(CPUType, M32R),
211    CV_ENUM_CLASS_ENT(CPUType, TriCore),
212    CV_ENUM_CLASS_ENT(CPUType, X64),
213    CV_ENUM_CLASS_ENT(CPUType, EBC),
214    CV_ENUM_CLASS_ENT(CPUType, Thumb),
215    CV_ENUM_CLASS_ENT(CPUType, ARMNT),
216    CV_ENUM_CLASS_ENT(CPUType, D3D11_Shader),
217};
218
219static const EnumEntry<uint32_t> FrameProcSymFlagNames[] = {
220    CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasAlloca),
221    CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasSetJmp),
222    CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasLongJmp),
223    CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasInlineAssembly),
224    CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasExceptionHandling),
225    CV_ENUM_CLASS_ENT(FrameProcedureOptions, MarkedInline),
226    CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasStructuredExceptionHandling),
227    CV_ENUM_CLASS_ENT(FrameProcedureOptions, Naked),
228    CV_ENUM_CLASS_ENT(FrameProcedureOptions, SecurityChecks),
229    CV_ENUM_CLASS_ENT(FrameProcedureOptions, AsynchronousExceptionHandling),
230    CV_ENUM_CLASS_ENT(FrameProcedureOptions, NoStackOrderingForSecurityChecks),
231    CV_ENUM_CLASS_ENT(FrameProcedureOptions, Inlined),
232    CV_ENUM_CLASS_ENT(FrameProcedureOptions, StrictSecurityChecks),
233    CV_ENUM_CLASS_ENT(FrameProcedureOptions, SafeBuffers),
234    CV_ENUM_CLASS_ENT(FrameProcedureOptions, ProfileGuidedOptimization),
235    CV_ENUM_CLASS_ENT(FrameProcedureOptions, ValidProfileCounts),
236    CV_ENUM_CLASS_ENT(FrameProcedureOptions, OptimizedForSpeed),
237    CV_ENUM_CLASS_ENT(FrameProcedureOptions, GuardCfg),
238    CV_ENUM_CLASS_ENT(FrameProcedureOptions, GuardCfw),
239};
240
241static const EnumEntry<uint32_t> ModuleSubstreamKindNames[] = {
242    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, None),
243    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, Symbols),
244    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, Lines),
245    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, StringTable),
246    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, FileChecksums),
247    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, FrameData),
248    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, InlineeLines),
249    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, CrossScopeImports),
250    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, CrossScopeExports),
251    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, ILLines),
252    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, FuncMDTokenMap),
253    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, TypeMDTokenMap),
254    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, MergedAssemblyInput),
255    CV_ENUM_CLASS_ENT(ModuleSubstreamKind, CoffSymbolRVA),
256};
257
258static const EnumEntry<uint16_t> ExportSymFlagNames[] = {
259    CV_ENUM_CLASS_ENT(ExportFlags, IsConstant),
260    CV_ENUM_CLASS_ENT(ExportFlags, IsData),
261    CV_ENUM_CLASS_ENT(ExportFlags, IsPrivate),
262    CV_ENUM_CLASS_ENT(ExportFlags, HasNoName),
263    CV_ENUM_CLASS_ENT(ExportFlags, HasExplicitOrdinal),
264    CV_ENUM_CLASS_ENT(ExportFlags, IsForwarder),
265};
266
267static const EnumEntry<uint8_t> ThunkOrdinalNames[] = {
268    CV_ENUM_CLASS_ENT(ThunkOrdinal, Standard),
269    CV_ENUM_CLASS_ENT(ThunkOrdinal, ThisAdjustor),
270    CV_ENUM_CLASS_ENT(ThunkOrdinal, Vcall),
271    CV_ENUM_CLASS_ENT(ThunkOrdinal, Pcode),
272    CV_ENUM_CLASS_ENT(ThunkOrdinal, UnknownLoad),
273    CV_ENUM_CLASS_ENT(ThunkOrdinal, TrampIncremental),
274    CV_ENUM_CLASS_ENT(ThunkOrdinal, BranchIsland),
275};
276
277static const EnumEntry<uint16_t> TrampolineNames[] = {
278    CV_ENUM_CLASS_ENT(TrampolineType, TrampIncremental),
279    CV_ENUM_CLASS_ENT(TrampolineType, BranchIsland),
280};
281
282static const EnumEntry<COFF::SectionCharacteristics>
283    ImageSectionCharacteristicNames[] = {
284        CV_ENUM_ENT(COFF, IMAGE_SCN_TYPE_NOLOAD),
285        CV_ENUM_ENT(COFF, IMAGE_SCN_TYPE_NO_PAD),
286        CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_CODE),
287        CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_INITIALIZED_DATA),
288        CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_UNINITIALIZED_DATA),
289        CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_OTHER),
290        CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_INFO),
291        CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_REMOVE),
292        CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_COMDAT),
293        CV_ENUM_ENT(COFF, IMAGE_SCN_GPREL),
294        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_PURGEABLE),
295        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_16BIT),
296        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_LOCKED),
297        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_PRELOAD),
298        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_1BYTES),
299        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_2BYTES),
300        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_4BYTES),
301        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_8BYTES),
302        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_16BYTES),
303        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_32BYTES),
304        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_64BYTES),
305        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_128BYTES),
306        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_256BYTES),
307        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_512BYTES),
308        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_1024BYTES),
309        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_2048BYTES),
310        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_4096BYTES),
311        CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_8192BYTES),
312        CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_NRELOC_OVFL),
313        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_DISCARDABLE),
314        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_NOT_CACHED),
315        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_NOT_PAGED),
316        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_SHARED),
317        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_EXECUTE),
318        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_READ),
319        CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_WRITE)};
320
321namespace llvm {
322namespace codeview {
323ArrayRef<EnumEntry<SymbolKind>> getSymbolTypeNames() {
324  return makeArrayRef(SymbolTypeNames);
325}
326
327ArrayRef<EnumEntry<uint16_t>> getRegisterNames() {
328  return makeArrayRef(RegisterNames);
329}
330
331ArrayRef<EnumEntry<uint8_t>> getProcSymFlagNames() {
332  return makeArrayRef(ProcSymFlagNames);
333}
334ArrayRef<EnumEntry<uint16_t>> getLocalFlagNames() {
335  return makeArrayRef(LocalFlags);
336}
337ArrayRef<EnumEntry<uint8_t>> getFrameCookieKindNames() {
338  return makeArrayRef(FrameCookieKinds);
339}
340ArrayRef<EnumEntry<SourceLanguage>> getSourceLanguageNames() {
341  return makeArrayRef(SourceLanguages);
342}
343ArrayRef<EnumEntry<uint32_t>> getCompileSym2FlagNames() {
344  return makeArrayRef(CompileSym2FlagNames);
345}
346ArrayRef<EnumEntry<uint32_t>> getCompileSym3FlagNames() {
347  return makeArrayRef(CompileSym3FlagNames);
348}
349ArrayRef<EnumEntry<uint32_t>> getFileChecksumNames() {
350  return makeArrayRef(FileChecksumNames);
351}
352ArrayRef<EnumEntry<unsigned>> getCPUTypeNames() {
353  return makeArrayRef(CPUTypeNames);
354}
355ArrayRef<EnumEntry<uint32_t>> getFrameProcSymFlagNames() {
356  return makeArrayRef(FrameProcSymFlagNames);
357}
358ArrayRef<EnumEntry<uint16_t>> getExportSymFlagNames() {
359  return makeArrayRef(ExportSymFlagNames);
360}
361ArrayRef<EnumEntry<uint32_t>> getModuleSubstreamKindNames() {
362  return makeArrayRef(ModuleSubstreamKindNames);
363}
364ArrayRef<EnumEntry<uint8_t>> getThunkOrdinalNames() {
365  return makeArrayRef(ThunkOrdinalNames);
366}
367ArrayRef<EnumEntry<uint16_t>> getTrampolineNames() {
368  return makeArrayRef(TrampolineNames);
369}
370ArrayRef<EnumEntry<COFF::SectionCharacteristics>>
371getImageSectionCharacteristicNames() {
372  return makeArrayRef(ImageSectionCharacteristicNames);
373}
374}
375}
376