1a580b014SDimitry Andric //===- EnumTables.cpp - Enum to string conversion tables ------------------===//
23ca95b02SDimitry Andric //
33ca95b02SDimitry Andric //                     The LLVM Compiler Infrastructure
43ca95b02SDimitry Andric //
53ca95b02SDimitry Andric // This file is distributed under the University of Illinois Open Source
63ca95b02SDimitry Andric // License. See LICENSE.TXT for details.
73ca95b02SDimitry Andric //
83ca95b02SDimitry Andric //===----------------------------------------------------------------------===//
93ca95b02SDimitry Andric 
103ca95b02SDimitry Andric #include "llvm/DebugInfo/CodeView/EnumTables.h"
11a580b014SDimitry Andric #include "llvm/Support/ScopedPrinter.h"
12a580b014SDimitry Andric #include <type_traits>
133ca95b02SDimitry Andric 
143ca95b02SDimitry Andric using namespace llvm;
153ca95b02SDimitry Andric using namespace codeview;
163ca95b02SDimitry Andric 
173ca95b02SDimitry Andric #define CV_ENUM_CLASS_ENT(enum_class, enum)                                    \
183ca95b02SDimitry Andric   { #enum, std::underlying_type < enum_class > ::type(enum_class::enum) }
193ca95b02SDimitry Andric 
203ca95b02SDimitry Andric #define CV_ENUM_ENT(ns, enum)                                                  \
213ca95b02SDimitry Andric   { #enum, ns::enum }
223ca95b02SDimitry Andric 
233ca95b02SDimitry Andric static const EnumEntry<SymbolKind> SymbolTypeNames[] = {
243ca95b02SDimitry Andric #define CV_SYMBOL(enum, val) {#enum, enum},
25f9448bf3SDimitry Andric #include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
263ca95b02SDimitry Andric #undef CV_SYMBOL
273ca95b02SDimitry Andric };
283ca95b02SDimitry Andric 
29d88c1a5aSDimitry Andric static const EnumEntry<TypeLeafKind> TypeLeafNames[] = {
30d88c1a5aSDimitry Andric #define CV_TYPE(name, val) {#name, name},
31f9448bf3SDimitry Andric #include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
32d88c1a5aSDimitry Andric #undef CV_TYPE
33d88c1a5aSDimitry Andric };
34d88c1a5aSDimitry Andric 
353ca95b02SDimitry Andric static const EnumEntry<uint16_t> RegisterNames[] = {
362cab237bSDimitry Andric #define CV_REGISTER(name, val) CV_ENUM_CLASS_ENT(RegisterId, name),
372cab237bSDimitry Andric #include "llvm/DebugInfo/CodeView/CodeViewRegisters.def"
382cab237bSDimitry Andric #undef CV_REGISTER
393ca95b02SDimitry Andric };
403ca95b02SDimitry Andric 
41edd7eaddSDimitry Andric static const EnumEntry<uint32_t> PublicSymFlagNames[] = {
42edd7eaddSDimitry Andric     CV_ENUM_CLASS_ENT(PublicSymFlags, Code),
43edd7eaddSDimitry Andric     CV_ENUM_CLASS_ENT(PublicSymFlags, Function),
44edd7eaddSDimitry Andric     CV_ENUM_CLASS_ENT(PublicSymFlags, Managed),
45edd7eaddSDimitry Andric     CV_ENUM_CLASS_ENT(PublicSymFlags, MSIL),
46edd7eaddSDimitry Andric };
47edd7eaddSDimitry Andric 
483ca95b02SDimitry Andric static const EnumEntry<uint8_t> ProcSymFlagNames[] = {
493ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ProcSymFlags, HasFP),
503ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ProcSymFlags, HasIRET),
513ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ProcSymFlags, HasFRET),
523ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ProcSymFlags, IsNoReturn),
533ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ProcSymFlags, IsUnreachable),
543ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ProcSymFlags, HasCustomCallingConv),
553ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ProcSymFlags, IsNoInline),
563ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ProcSymFlags, HasOptimizedDebugInfo),
573ca95b02SDimitry Andric };
583ca95b02SDimitry Andric 
593ca95b02SDimitry Andric static const EnumEntry<uint16_t> LocalFlags[] = {
603ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsParameter),
613ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsAddressTaken),
623ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsCompilerGenerated),
633ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsAggregate),
643ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsAggregated),
653ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsAliased),
663ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsAlias),
673ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsReturnValue),
683ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsOptimizedOut),
693ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredGlobal),
703ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredStatic),
713ca95b02SDimitry Andric };
723ca95b02SDimitry Andric 
733ca95b02SDimitry Andric static const EnumEntry<uint8_t> FrameCookieKinds[] = {
743ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameCookieKind, Copy),
753ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameCookieKind, XorStackPointer),
763ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameCookieKind, XorFramePointer),
773ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameCookieKind, XorR13),
783ca95b02SDimitry Andric };
793ca95b02SDimitry Andric 
803ca95b02SDimitry Andric static const EnumEntry<codeview::SourceLanguage> SourceLanguages[] = {
813ca95b02SDimitry Andric     CV_ENUM_ENT(SourceLanguage, C),       CV_ENUM_ENT(SourceLanguage, Cpp),
823ca95b02SDimitry Andric     CV_ENUM_ENT(SourceLanguage, Fortran), CV_ENUM_ENT(SourceLanguage, Masm),
833ca95b02SDimitry Andric     CV_ENUM_ENT(SourceLanguage, Pascal),  CV_ENUM_ENT(SourceLanguage, Basic),
843ca95b02SDimitry Andric     CV_ENUM_ENT(SourceLanguage, Cobol),   CV_ENUM_ENT(SourceLanguage, Link),
853ca95b02SDimitry Andric     CV_ENUM_ENT(SourceLanguage, Cvtres),  CV_ENUM_ENT(SourceLanguage, Cvtpgd),
863ca95b02SDimitry Andric     CV_ENUM_ENT(SourceLanguage, CSharp),  CV_ENUM_ENT(SourceLanguage, VB),
873ca95b02SDimitry Andric     CV_ENUM_ENT(SourceLanguage, ILAsm),   CV_ENUM_ENT(SourceLanguage, Java),
883ca95b02SDimitry Andric     CV_ENUM_ENT(SourceLanguage, JScript), CV_ENUM_ENT(SourceLanguage, MSIL),
892cab237bSDimitry Andric     CV_ENUM_ENT(SourceLanguage, HLSL),    CV_ENUM_ENT(SourceLanguage, D),
903ca95b02SDimitry Andric };
913ca95b02SDimitry Andric 
923ca95b02SDimitry Andric static const EnumEntry<uint32_t> CompileSym2FlagNames[] = {
933ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym2Flags, EC),
943ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym2Flags, NoDbgInfo),
953ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym2Flags, LTCG),
963ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym2Flags, NoDataAlign),
973ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym2Flags, ManagedPresent),
983ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym2Flags, SecurityChecks),
993ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym2Flags, HotPatch),
1003ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym2Flags, CVTCIL),
1013ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym2Flags, MSILModule),
1023ca95b02SDimitry Andric };
1033ca95b02SDimitry Andric 
1043ca95b02SDimitry Andric static const EnumEntry<uint32_t> CompileSym3FlagNames[] = {
1053ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, EC),
1063ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, NoDbgInfo),
1073ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, LTCG),
1083ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, NoDataAlign),
1093ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, ManagedPresent),
1103ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, SecurityChecks),
1113ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, HotPatch),
1123ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, CVTCIL),
1133ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, MSILModule),
1143ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, Sdl),
1153ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, PGO),
1163ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CompileSym3Flags, Exp),
1173ca95b02SDimitry Andric };
1183ca95b02SDimitry Andric 
1193ca95b02SDimitry Andric static const EnumEntry<uint32_t> FileChecksumNames[] = {
1203ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FileChecksumKind, None),
1213ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FileChecksumKind, MD5),
1223ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FileChecksumKind, SHA1),
1233ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FileChecksumKind, SHA256),
1243ca95b02SDimitry Andric };
1253ca95b02SDimitry Andric 
1263ca95b02SDimitry Andric static const EnumEntry<unsigned> CPUTypeNames[] = {
1273ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Intel8080),
1283ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Intel8086),
1293ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Intel80286),
1303ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Intel80386),
1313ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Intel80486),
1323ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Pentium),
1333ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, PentiumPro),
1343ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Pentium3),
1353ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, MIPS),
1363ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, MIPS16),
1373ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, MIPS32),
1383ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, MIPS64),
1393ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, MIPSI),
1403ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, MIPSII),
1413ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, MIPSIII),
1423ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, MIPSIV),
1433ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, MIPSV),
1443ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, M68000),
1453ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, M68010),
1463ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, M68020),
1473ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, M68030),
1483ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, M68040),
1493ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Alpha),
1503ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Alpha21164),
1513ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Alpha21164A),
1523ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Alpha21264),
1533ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Alpha21364),
1543ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, PPC601),
1553ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, PPC603),
1563ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, PPC604),
1573ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, PPC620),
1583ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, PPCFP),
1593ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, PPCBE),
1603ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, SH3),
1613ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, SH3E),
1623ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, SH3DSP),
1633ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, SH4),
1643ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, SHMedia),
1653ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, ARM3),
1663ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, ARM4),
1673ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, ARM4T),
1683ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, ARM5),
1693ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, ARM5T),
1703ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, ARM6),
1713ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, ARM_XMAC),
1723ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, ARM_WMMX),
1733ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, ARM7),
1743ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Omni),
1753ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Ia64),
1763ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Ia64_2),
1773ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, CEE),
1783ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, AM33),
1793ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, M32R),
1803ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, TriCore),
1813ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, X64),
1823ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, EBC),
1833ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, Thumb),
1843ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, ARMNT),
1853ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(CPUType, D3D11_Shader),
1863ca95b02SDimitry Andric };
1873ca95b02SDimitry Andric 
1883ca95b02SDimitry Andric static const EnumEntry<uint32_t> FrameProcSymFlagNames[] = {
1893ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasAlloca),
1903ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasSetJmp),
1913ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasLongJmp),
1923ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasInlineAssembly),
1933ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasExceptionHandling),
1943ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, MarkedInline),
1953ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasStructuredExceptionHandling),
1963ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, Naked),
1973ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, SecurityChecks),
1983ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, AsynchronousExceptionHandling),
1993ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, NoStackOrderingForSecurityChecks),
2003ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, Inlined),
2013ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, StrictSecurityChecks),
2023ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, SafeBuffers),
203*b5893f02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, EncodedLocalBasePointerMask),
204*b5893f02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, EncodedParamBasePointerMask),
2053ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, ProfileGuidedOptimization),
2063ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, ValidProfileCounts),
2073ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, OptimizedForSpeed),
2083ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, GuardCfg),
2093ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(FrameProcedureOptions, GuardCfw),
2103ca95b02SDimitry Andric };
2113ca95b02SDimitry Andric 
2123ca95b02SDimitry Andric static const EnumEntry<uint32_t> ModuleSubstreamKindNames[] = {
21389cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, None),
21489cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, Symbols),
21589cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, Lines),
21689cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, StringTable),
21789cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, FileChecksums),
21889cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, FrameData),
21989cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, InlineeLines),
22089cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, CrossScopeImports),
22189cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, CrossScopeExports),
22289cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, ILLines),
22389cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, FuncMDTokenMap),
22489cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, TypeMDTokenMap),
22589cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, MergedAssemblyInput),
22689cb50c9SDimitry Andric     CV_ENUM_CLASS_ENT(DebugSubsectionKind, CoffSymbolRVA),
2273ca95b02SDimitry Andric };
2283ca95b02SDimitry Andric 
2293ca95b02SDimitry Andric static const EnumEntry<uint16_t> ExportSymFlagNames[] = {
2303ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ExportFlags, IsConstant),
2313ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ExportFlags, IsData),
2323ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ExportFlags, IsPrivate),
2333ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ExportFlags, HasNoName),
2343ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ExportFlags, HasExplicitOrdinal),
2353ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ExportFlags, IsForwarder),
2363ca95b02SDimitry Andric };
2373ca95b02SDimitry Andric 
2383ca95b02SDimitry Andric static const EnumEntry<uint8_t> ThunkOrdinalNames[] = {
2393ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ThunkOrdinal, Standard),
2403ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ThunkOrdinal, ThisAdjustor),
2413ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ThunkOrdinal, Vcall),
2423ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ThunkOrdinal, Pcode),
2433ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ThunkOrdinal, UnknownLoad),
2443ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ThunkOrdinal, TrampIncremental),
2453ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(ThunkOrdinal, BranchIsland),
2463ca95b02SDimitry Andric };
2473ca95b02SDimitry Andric 
2483ca95b02SDimitry Andric static const EnumEntry<uint16_t> TrampolineNames[] = {
2493ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(TrampolineType, TrampIncremental),
2503ca95b02SDimitry Andric     CV_ENUM_CLASS_ENT(TrampolineType, BranchIsland),
2513ca95b02SDimitry Andric };
2523ca95b02SDimitry Andric 
2533ca95b02SDimitry Andric static const EnumEntry<COFF::SectionCharacteristics>
2543ca95b02SDimitry Andric     ImageSectionCharacteristicNames[] = {
2553ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_TYPE_NOLOAD),
2563ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_TYPE_NO_PAD),
2573ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_CODE),
2583ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_INITIALIZED_DATA),
2593ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_UNINITIALIZED_DATA),
2603ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_OTHER),
2613ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_INFO),
2623ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_REMOVE),
2633ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_COMDAT),
2643ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_GPREL),
2653ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_PURGEABLE),
2663ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_16BIT),
2673ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_LOCKED),
2683ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_PRELOAD),
2693ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_1BYTES),
2703ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_2BYTES),
2713ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_4BYTES),
2723ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_8BYTES),
2733ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_16BYTES),
2743ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_32BYTES),
2753ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_64BYTES),
2763ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_128BYTES),
2773ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_256BYTES),
2783ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_512BYTES),
2793ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_1024BYTES),
2803ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_2048BYTES),
2813ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_4096BYTES),
2823ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_8192BYTES),
2833ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_NRELOC_OVFL),
2843ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_DISCARDABLE),
2853ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_NOT_CACHED),
2863ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_NOT_PAGED),
2873ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_SHARED),
2883ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_EXECUTE),
2893ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_READ),
2903ca95b02SDimitry Andric         CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_WRITE)};
2913ca95b02SDimitry Andric 
2923ca95b02SDimitry Andric namespace llvm {
2933ca95b02SDimitry Andric namespace codeview {
294a580b014SDimitry Andric 
getSymbolTypeNames()2953ca95b02SDimitry Andric ArrayRef<EnumEntry<SymbolKind>> getSymbolTypeNames() {
2963ca95b02SDimitry Andric   return makeArrayRef(SymbolTypeNames);
2973ca95b02SDimitry Andric }
2983ca95b02SDimitry Andric 
getTypeLeafNames()299d88c1a5aSDimitry Andric ArrayRef<EnumEntry<TypeLeafKind>> getTypeLeafNames() {
300d88c1a5aSDimitry Andric   return makeArrayRef(TypeLeafNames);
301d88c1a5aSDimitry Andric }
302d88c1a5aSDimitry Andric 
getRegisterNames()3033ca95b02SDimitry Andric ArrayRef<EnumEntry<uint16_t>> getRegisterNames() {
3043ca95b02SDimitry Andric   return makeArrayRef(RegisterNames);
3053ca95b02SDimitry Andric }
3063ca95b02SDimitry Andric 
getPublicSymFlagNames()307edd7eaddSDimitry Andric ArrayRef<EnumEntry<uint32_t>> getPublicSymFlagNames() {
308edd7eaddSDimitry Andric   return makeArrayRef(PublicSymFlagNames);
309edd7eaddSDimitry Andric }
310a580b014SDimitry Andric 
getProcSymFlagNames()3113ca95b02SDimitry Andric ArrayRef<EnumEntry<uint8_t>> getProcSymFlagNames() {
3123ca95b02SDimitry Andric   return makeArrayRef(ProcSymFlagNames);
3133ca95b02SDimitry Andric }
314a580b014SDimitry Andric 
getLocalFlagNames()3153ca95b02SDimitry Andric ArrayRef<EnumEntry<uint16_t>> getLocalFlagNames() {
3163ca95b02SDimitry Andric   return makeArrayRef(LocalFlags);
3173ca95b02SDimitry Andric }
318a580b014SDimitry Andric 
getFrameCookieKindNames()3193ca95b02SDimitry Andric ArrayRef<EnumEntry<uint8_t>> getFrameCookieKindNames() {
3203ca95b02SDimitry Andric   return makeArrayRef(FrameCookieKinds);
3213ca95b02SDimitry Andric }
322a580b014SDimitry Andric 
getSourceLanguageNames()3233ca95b02SDimitry Andric ArrayRef<EnumEntry<SourceLanguage>> getSourceLanguageNames() {
3243ca95b02SDimitry Andric   return makeArrayRef(SourceLanguages);
3253ca95b02SDimitry Andric }
326a580b014SDimitry Andric 
getCompileSym2FlagNames()3273ca95b02SDimitry Andric ArrayRef<EnumEntry<uint32_t>> getCompileSym2FlagNames() {
3283ca95b02SDimitry Andric   return makeArrayRef(CompileSym2FlagNames);
3293ca95b02SDimitry Andric }
330a580b014SDimitry Andric 
getCompileSym3FlagNames()3313ca95b02SDimitry Andric ArrayRef<EnumEntry<uint32_t>> getCompileSym3FlagNames() {
3323ca95b02SDimitry Andric   return makeArrayRef(CompileSym3FlagNames);
3333ca95b02SDimitry Andric }
334a580b014SDimitry Andric 
getFileChecksumNames()3353ca95b02SDimitry Andric ArrayRef<EnumEntry<uint32_t>> getFileChecksumNames() {
3363ca95b02SDimitry Andric   return makeArrayRef(FileChecksumNames);
3373ca95b02SDimitry Andric }
338a580b014SDimitry Andric 
getCPUTypeNames()3393ca95b02SDimitry Andric ArrayRef<EnumEntry<unsigned>> getCPUTypeNames() {
3403ca95b02SDimitry Andric   return makeArrayRef(CPUTypeNames);
3413ca95b02SDimitry Andric }
342a580b014SDimitry Andric 
getFrameProcSymFlagNames()3433ca95b02SDimitry Andric ArrayRef<EnumEntry<uint32_t>> getFrameProcSymFlagNames() {
3443ca95b02SDimitry Andric   return makeArrayRef(FrameProcSymFlagNames);
3453ca95b02SDimitry Andric }
346a580b014SDimitry Andric 
getExportSymFlagNames()3473ca95b02SDimitry Andric ArrayRef<EnumEntry<uint16_t>> getExportSymFlagNames() {
3483ca95b02SDimitry Andric   return makeArrayRef(ExportSymFlagNames);
3493ca95b02SDimitry Andric }
350a580b014SDimitry Andric 
getModuleSubstreamKindNames()3513ca95b02SDimitry Andric ArrayRef<EnumEntry<uint32_t>> getModuleSubstreamKindNames() {
3523ca95b02SDimitry Andric   return makeArrayRef(ModuleSubstreamKindNames);
3533ca95b02SDimitry Andric }
354a580b014SDimitry Andric 
getThunkOrdinalNames()3553ca95b02SDimitry Andric ArrayRef<EnumEntry<uint8_t>> getThunkOrdinalNames() {
3563ca95b02SDimitry Andric   return makeArrayRef(ThunkOrdinalNames);
3573ca95b02SDimitry Andric }
358a580b014SDimitry Andric 
getTrampolineNames()3593ca95b02SDimitry Andric ArrayRef<EnumEntry<uint16_t>> getTrampolineNames() {
3603ca95b02SDimitry Andric   return makeArrayRef(TrampolineNames);
3613ca95b02SDimitry Andric }
362a580b014SDimitry Andric 
3633ca95b02SDimitry Andric ArrayRef<EnumEntry<COFF::SectionCharacteristics>>
getImageSectionCharacteristicNames()3643ca95b02SDimitry Andric getImageSectionCharacteristicNames() {
3653ca95b02SDimitry Andric   return makeArrayRef(ImageSectionCharacteristicNames);
3663ca95b02SDimitry Andric }
367a580b014SDimitry Andric 
368a580b014SDimitry Andric } // end namespace codeview
369a580b014SDimitry Andric } // end namespace llvm
370