Path: blob/main/contrib/llvm-project/llvm/lib/DebugInfo/CodeView/EnumTables.cpp
35271 views
//===- EnumTables.cpp - Enum to string conversion tables ------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "llvm/DebugInfo/CodeView/EnumTables.h"9#include "llvm/Support/ScopedPrinter.h"10#include <type_traits>1112using namespace llvm;13using namespace codeview;1415#define CV_ENUM_CLASS_ENT(enum_class, enum) \16{ #enum, std::underlying_type_t<enum_class>(enum_class::enum) }1718#define CV_ENUM_ENT(ns, enum) \19{ #enum, ns::enum }2021static const EnumEntry<SymbolKind> SymbolTypeNames[] = {22#define CV_SYMBOL(enum, val) {#enum, enum},23#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"24#undef CV_SYMBOL25};2627static const EnumEntry<TypeLeafKind> TypeLeafNames[] = {28#define CV_TYPE(name, val) {#name, name},29#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"30#undef CV_TYPE31};3233static const EnumEntry<uint16_t> RegisterNames_X86[] = {34#define CV_REGISTERS_X8635#define CV_REGISTER(name, val) CV_ENUM_CLASS_ENT(RegisterId, name),36#include "llvm/DebugInfo/CodeView/CodeViewRegisters.def"37#undef CV_REGISTER38#undef CV_REGISTERS_X8639};4041static const EnumEntry<uint16_t> RegisterNames_ARM[] = {42#define CV_REGISTERS_ARM43#define CV_REGISTER(name, val) CV_ENUM_CLASS_ENT(RegisterId, name),44#include "llvm/DebugInfo/CodeView/CodeViewRegisters.def"45#undef CV_REGISTER46#undef CV_REGISTERS_ARM47};4849static const EnumEntry<uint16_t> RegisterNames_ARM64[] = {50#define CV_REGISTERS_ARM6451#define CV_REGISTER(name, val) CV_ENUM_CLASS_ENT(RegisterId, name),52#include "llvm/DebugInfo/CodeView/CodeViewRegisters.def"53#undef CV_REGISTER54#undef CV_REGISTERS_ARM6455};5657static const EnumEntry<uint32_t> PublicSymFlagNames[] = {58CV_ENUM_CLASS_ENT(PublicSymFlags, Code),59CV_ENUM_CLASS_ENT(PublicSymFlags, Function),60CV_ENUM_CLASS_ENT(PublicSymFlags, Managed),61CV_ENUM_CLASS_ENT(PublicSymFlags, MSIL),62};6364static const EnumEntry<uint8_t> ProcSymFlagNames[] = {65CV_ENUM_CLASS_ENT(ProcSymFlags, HasFP),66CV_ENUM_CLASS_ENT(ProcSymFlags, HasIRET),67CV_ENUM_CLASS_ENT(ProcSymFlags, HasFRET),68CV_ENUM_CLASS_ENT(ProcSymFlags, IsNoReturn),69CV_ENUM_CLASS_ENT(ProcSymFlags, IsUnreachable),70CV_ENUM_CLASS_ENT(ProcSymFlags, HasCustomCallingConv),71CV_ENUM_CLASS_ENT(ProcSymFlags, IsNoInline),72CV_ENUM_CLASS_ENT(ProcSymFlags, HasOptimizedDebugInfo),73};7475static const EnumEntry<uint16_t> LocalFlags[] = {76CV_ENUM_CLASS_ENT(LocalSymFlags, IsParameter),77CV_ENUM_CLASS_ENT(LocalSymFlags, IsAddressTaken),78CV_ENUM_CLASS_ENT(LocalSymFlags, IsCompilerGenerated),79CV_ENUM_CLASS_ENT(LocalSymFlags, IsAggregate),80CV_ENUM_CLASS_ENT(LocalSymFlags, IsAggregated),81CV_ENUM_CLASS_ENT(LocalSymFlags, IsAliased),82CV_ENUM_CLASS_ENT(LocalSymFlags, IsAlias),83CV_ENUM_CLASS_ENT(LocalSymFlags, IsReturnValue),84CV_ENUM_CLASS_ENT(LocalSymFlags, IsOptimizedOut),85CV_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredGlobal),86CV_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredStatic),87};8889static const EnumEntry<uint8_t> FrameCookieKinds[] = {90CV_ENUM_CLASS_ENT(FrameCookieKind, Copy),91CV_ENUM_CLASS_ENT(FrameCookieKind, XorStackPointer),92CV_ENUM_CLASS_ENT(FrameCookieKind, XorFramePointer),93CV_ENUM_CLASS_ENT(FrameCookieKind, XorR13),94};9596static const EnumEntry<codeview::SourceLanguage> SourceLanguages[] = {97CV_ENUM_ENT(SourceLanguage, C), CV_ENUM_ENT(SourceLanguage, Cpp),98CV_ENUM_ENT(SourceLanguage, Fortran), CV_ENUM_ENT(SourceLanguage, Masm),99CV_ENUM_ENT(SourceLanguage, Pascal), CV_ENUM_ENT(SourceLanguage, Basic),100CV_ENUM_ENT(SourceLanguage, Cobol), CV_ENUM_ENT(SourceLanguage, Link),101CV_ENUM_ENT(SourceLanguage, Cvtres), CV_ENUM_ENT(SourceLanguage, Cvtpgd),102CV_ENUM_ENT(SourceLanguage, CSharp), CV_ENUM_ENT(SourceLanguage, VB),103CV_ENUM_ENT(SourceLanguage, ILAsm), CV_ENUM_ENT(SourceLanguage, Java),104CV_ENUM_ENT(SourceLanguage, JScript), CV_ENUM_ENT(SourceLanguage, MSIL),105CV_ENUM_ENT(SourceLanguage, HLSL), CV_ENUM_ENT(SourceLanguage, D),106CV_ENUM_ENT(SourceLanguage, Swift), CV_ENUM_ENT(SourceLanguage, Rust),107CV_ENUM_ENT(SourceLanguage, ObjC), CV_ENUM_ENT(SourceLanguage, ObjCpp),108CV_ENUM_ENT(SourceLanguage, AliasObj), CV_ENUM_ENT(SourceLanguage, Go),109{"Swift", SourceLanguage::OldSwift},110};111112static const EnumEntry<uint32_t> CompileSym2FlagNames[] = {113CV_ENUM_CLASS_ENT(CompileSym2Flags, EC),114CV_ENUM_CLASS_ENT(CompileSym2Flags, NoDbgInfo),115CV_ENUM_CLASS_ENT(CompileSym2Flags, LTCG),116CV_ENUM_CLASS_ENT(CompileSym2Flags, NoDataAlign),117CV_ENUM_CLASS_ENT(CompileSym2Flags, ManagedPresent),118CV_ENUM_CLASS_ENT(CompileSym2Flags, SecurityChecks),119CV_ENUM_CLASS_ENT(CompileSym2Flags, HotPatch),120CV_ENUM_CLASS_ENT(CompileSym2Flags, CVTCIL),121CV_ENUM_CLASS_ENT(CompileSym2Flags, MSILModule),122};123124static const EnumEntry<uint32_t> CompileSym3FlagNames[] = {125CV_ENUM_CLASS_ENT(CompileSym3Flags, EC),126CV_ENUM_CLASS_ENT(CompileSym3Flags, NoDbgInfo),127CV_ENUM_CLASS_ENT(CompileSym3Flags, LTCG),128CV_ENUM_CLASS_ENT(CompileSym3Flags, NoDataAlign),129CV_ENUM_CLASS_ENT(CompileSym3Flags, ManagedPresent),130CV_ENUM_CLASS_ENT(CompileSym3Flags, SecurityChecks),131CV_ENUM_CLASS_ENT(CompileSym3Flags, HotPatch),132CV_ENUM_CLASS_ENT(CompileSym3Flags, CVTCIL),133CV_ENUM_CLASS_ENT(CompileSym3Flags, MSILModule),134CV_ENUM_CLASS_ENT(CompileSym3Flags, Sdl),135CV_ENUM_CLASS_ENT(CompileSym3Flags, PGO),136CV_ENUM_CLASS_ENT(CompileSym3Flags, Exp),137};138139static const EnumEntry<uint32_t> FileChecksumNames[] = {140CV_ENUM_CLASS_ENT(FileChecksumKind, None),141CV_ENUM_CLASS_ENT(FileChecksumKind, MD5),142CV_ENUM_CLASS_ENT(FileChecksumKind, SHA1),143CV_ENUM_CLASS_ENT(FileChecksumKind, SHA256),144};145146static const EnumEntry<unsigned> CPUTypeNames[] = {147CV_ENUM_CLASS_ENT(CPUType, Intel8080),148CV_ENUM_CLASS_ENT(CPUType, Intel8086),149CV_ENUM_CLASS_ENT(CPUType, Intel80286),150CV_ENUM_CLASS_ENT(CPUType, Intel80386),151CV_ENUM_CLASS_ENT(CPUType, Intel80486),152CV_ENUM_CLASS_ENT(CPUType, Pentium),153CV_ENUM_CLASS_ENT(CPUType, PentiumPro),154CV_ENUM_CLASS_ENT(CPUType, Pentium3),155CV_ENUM_CLASS_ENT(CPUType, MIPS),156CV_ENUM_CLASS_ENT(CPUType, MIPS16),157CV_ENUM_CLASS_ENT(CPUType, MIPS32),158CV_ENUM_CLASS_ENT(CPUType, MIPS64),159CV_ENUM_CLASS_ENT(CPUType, MIPSI),160CV_ENUM_CLASS_ENT(CPUType, MIPSII),161CV_ENUM_CLASS_ENT(CPUType, MIPSIII),162CV_ENUM_CLASS_ENT(CPUType, MIPSIV),163CV_ENUM_CLASS_ENT(CPUType, MIPSV),164CV_ENUM_CLASS_ENT(CPUType, M68000),165CV_ENUM_CLASS_ENT(CPUType, M68010),166CV_ENUM_CLASS_ENT(CPUType, M68020),167CV_ENUM_CLASS_ENT(CPUType, M68030),168CV_ENUM_CLASS_ENT(CPUType, M68040),169CV_ENUM_CLASS_ENT(CPUType, Alpha),170CV_ENUM_CLASS_ENT(CPUType, Alpha21164),171CV_ENUM_CLASS_ENT(CPUType, Alpha21164A),172CV_ENUM_CLASS_ENT(CPUType, Alpha21264),173CV_ENUM_CLASS_ENT(CPUType, Alpha21364),174CV_ENUM_CLASS_ENT(CPUType, PPC601),175CV_ENUM_CLASS_ENT(CPUType, PPC603),176CV_ENUM_CLASS_ENT(CPUType, PPC604),177CV_ENUM_CLASS_ENT(CPUType, PPC620),178CV_ENUM_CLASS_ENT(CPUType, PPCFP),179CV_ENUM_CLASS_ENT(CPUType, PPCBE),180CV_ENUM_CLASS_ENT(CPUType, SH3),181CV_ENUM_CLASS_ENT(CPUType, SH3E),182CV_ENUM_CLASS_ENT(CPUType, SH3DSP),183CV_ENUM_CLASS_ENT(CPUType, SH4),184CV_ENUM_CLASS_ENT(CPUType, SHMedia),185CV_ENUM_CLASS_ENT(CPUType, ARM3),186CV_ENUM_CLASS_ENT(CPUType, ARM4),187CV_ENUM_CLASS_ENT(CPUType, ARM4T),188CV_ENUM_CLASS_ENT(CPUType, ARM5),189CV_ENUM_CLASS_ENT(CPUType, ARM5T),190CV_ENUM_CLASS_ENT(CPUType, ARM6),191CV_ENUM_CLASS_ENT(CPUType, ARM_XMAC),192CV_ENUM_CLASS_ENT(CPUType, ARM_WMMX),193CV_ENUM_CLASS_ENT(CPUType, ARM7),194CV_ENUM_CLASS_ENT(CPUType, Omni),195CV_ENUM_CLASS_ENT(CPUType, Ia64),196CV_ENUM_CLASS_ENT(CPUType, Ia64_2),197CV_ENUM_CLASS_ENT(CPUType, CEE),198CV_ENUM_CLASS_ENT(CPUType, AM33),199CV_ENUM_CLASS_ENT(CPUType, M32R),200CV_ENUM_CLASS_ENT(CPUType, TriCore),201CV_ENUM_CLASS_ENT(CPUType, X64),202CV_ENUM_CLASS_ENT(CPUType, EBC),203CV_ENUM_CLASS_ENT(CPUType, Thumb),204CV_ENUM_CLASS_ENT(CPUType, ARMNT),205CV_ENUM_CLASS_ENT(CPUType, ARM64),206CV_ENUM_CLASS_ENT(CPUType, HybridX86ARM64),207CV_ENUM_CLASS_ENT(CPUType, ARM64EC),208CV_ENUM_CLASS_ENT(CPUType, ARM64X),209CV_ENUM_CLASS_ENT(CPUType, Unknown),210CV_ENUM_CLASS_ENT(CPUType, D3D11_Shader),211};212213static const EnumEntry<uint32_t> FrameProcSymFlagNames[] = {214CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasAlloca),215CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasSetJmp),216CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasLongJmp),217CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasInlineAssembly),218CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasExceptionHandling),219CV_ENUM_CLASS_ENT(FrameProcedureOptions, MarkedInline),220CV_ENUM_CLASS_ENT(FrameProcedureOptions, HasStructuredExceptionHandling),221CV_ENUM_CLASS_ENT(FrameProcedureOptions, Naked),222CV_ENUM_CLASS_ENT(FrameProcedureOptions, SecurityChecks),223CV_ENUM_CLASS_ENT(FrameProcedureOptions, AsynchronousExceptionHandling),224CV_ENUM_CLASS_ENT(FrameProcedureOptions, NoStackOrderingForSecurityChecks),225CV_ENUM_CLASS_ENT(FrameProcedureOptions, Inlined),226CV_ENUM_CLASS_ENT(FrameProcedureOptions, StrictSecurityChecks),227CV_ENUM_CLASS_ENT(FrameProcedureOptions, SafeBuffers),228CV_ENUM_CLASS_ENT(FrameProcedureOptions, EncodedLocalBasePointerMask),229CV_ENUM_CLASS_ENT(FrameProcedureOptions, EncodedParamBasePointerMask),230CV_ENUM_CLASS_ENT(FrameProcedureOptions, ProfileGuidedOptimization),231CV_ENUM_CLASS_ENT(FrameProcedureOptions, ValidProfileCounts),232CV_ENUM_CLASS_ENT(FrameProcedureOptions, OptimizedForSpeed),233CV_ENUM_CLASS_ENT(FrameProcedureOptions, GuardCfg),234CV_ENUM_CLASS_ENT(FrameProcedureOptions, GuardCfw),235};236237static const EnumEntry<uint32_t> ModuleSubstreamKindNames[] = {238CV_ENUM_CLASS_ENT(DebugSubsectionKind, None),239CV_ENUM_CLASS_ENT(DebugSubsectionKind, Symbols),240CV_ENUM_CLASS_ENT(DebugSubsectionKind, Lines),241CV_ENUM_CLASS_ENT(DebugSubsectionKind, StringTable),242CV_ENUM_CLASS_ENT(DebugSubsectionKind, FileChecksums),243CV_ENUM_CLASS_ENT(DebugSubsectionKind, FrameData),244CV_ENUM_CLASS_ENT(DebugSubsectionKind, InlineeLines),245CV_ENUM_CLASS_ENT(DebugSubsectionKind, CrossScopeImports),246CV_ENUM_CLASS_ENT(DebugSubsectionKind, CrossScopeExports),247CV_ENUM_CLASS_ENT(DebugSubsectionKind, ILLines),248CV_ENUM_CLASS_ENT(DebugSubsectionKind, FuncMDTokenMap),249CV_ENUM_CLASS_ENT(DebugSubsectionKind, TypeMDTokenMap),250CV_ENUM_CLASS_ENT(DebugSubsectionKind, MergedAssemblyInput),251CV_ENUM_CLASS_ENT(DebugSubsectionKind, CoffSymbolRVA),252};253254static const EnumEntry<uint16_t> ExportSymFlagNames[] = {255CV_ENUM_CLASS_ENT(ExportFlags, IsConstant),256CV_ENUM_CLASS_ENT(ExportFlags, IsData),257CV_ENUM_CLASS_ENT(ExportFlags, IsPrivate),258CV_ENUM_CLASS_ENT(ExportFlags, HasNoName),259CV_ENUM_CLASS_ENT(ExportFlags, HasExplicitOrdinal),260CV_ENUM_CLASS_ENT(ExportFlags, IsForwarder),261};262263static const EnumEntry<uint8_t> ThunkOrdinalNames[] = {264CV_ENUM_CLASS_ENT(ThunkOrdinal, Standard),265CV_ENUM_CLASS_ENT(ThunkOrdinal, ThisAdjustor),266CV_ENUM_CLASS_ENT(ThunkOrdinal, Vcall),267CV_ENUM_CLASS_ENT(ThunkOrdinal, Pcode),268CV_ENUM_CLASS_ENT(ThunkOrdinal, UnknownLoad),269CV_ENUM_CLASS_ENT(ThunkOrdinal, TrampIncremental),270CV_ENUM_CLASS_ENT(ThunkOrdinal, BranchIsland),271};272273static const EnumEntry<uint16_t> TrampolineNames[] = {274CV_ENUM_CLASS_ENT(TrampolineType, TrampIncremental),275CV_ENUM_CLASS_ENT(TrampolineType, BranchIsland),276};277278static const EnumEntry<COFF::SectionCharacteristics>279ImageSectionCharacteristicNames[] = {280CV_ENUM_ENT(COFF, IMAGE_SCN_TYPE_NOLOAD),281CV_ENUM_ENT(COFF, IMAGE_SCN_TYPE_NO_PAD),282CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_CODE),283CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_INITIALIZED_DATA),284CV_ENUM_ENT(COFF, IMAGE_SCN_CNT_UNINITIALIZED_DATA),285CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_OTHER),286CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_INFO),287CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_REMOVE),288CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_COMDAT),289CV_ENUM_ENT(COFF, IMAGE_SCN_GPREL),290CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_PURGEABLE),291CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_16BIT),292CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_LOCKED),293CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_PRELOAD),294CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_1BYTES),295CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_2BYTES),296CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_4BYTES),297CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_8BYTES),298CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_16BYTES),299CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_32BYTES),300CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_64BYTES),301CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_128BYTES),302CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_256BYTES),303CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_512BYTES),304CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_1024BYTES),305CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_2048BYTES),306CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_4096BYTES),307CV_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_8192BYTES),308CV_ENUM_ENT(COFF, IMAGE_SCN_LNK_NRELOC_OVFL),309CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_DISCARDABLE),310CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_NOT_CACHED),311CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_NOT_PAGED),312CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_SHARED),313CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_EXECUTE),314CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_READ),315CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_WRITE)};316317static const EnumEntry<uint16_t> ClassOptionNames[] = {318CV_ENUM_CLASS_ENT(ClassOptions, Packed),319CV_ENUM_CLASS_ENT(ClassOptions, HasConstructorOrDestructor),320CV_ENUM_CLASS_ENT(ClassOptions, HasOverloadedOperator),321CV_ENUM_CLASS_ENT(ClassOptions, Nested),322CV_ENUM_CLASS_ENT(ClassOptions, ContainsNestedClass),323CV_ENUM_CLASS_ENT(ClassOptions, HasOverloadedAssignmentOperator),324CV_ENUM_CLASS_ENT(ClassOptions, HasConversionOperator),325CV_ENUM_CLASS_ENT(ClassOptions, ForwardReference),326CV_ENUM_CLASS_ENT(ClassOptions, Scoped),327CV_ENUM_CLASS_ENT(ClassOptions, HasUniqueName),328CV_ENUM_CLASS_ENT(ClassOptions, Sealed),329CV_ENUM_CLASS_ENT(ClassOptions, Intrinsic),330};331332static const EnumEntry<uint8_t> MemberAccessNames[] = {333CV_ENUM_CLASS_ENT(MemberAccess, None),334CV_ENUM_CLASS_ENT(MemberAccess, Private),335CV_ENUM_CLASS_ENT(MemberAccess, Protected),336CV_ENUM_CLASS_ENT(MemberAccess, Public),337};338339static const EnumEntry<uint16_t> MethodOptionNames[] = {340CV_ENUM_CLASS_ENT(MethodOptions, Pseudo),341CV_ENUM_CLASS_ENT(MethodOptions, NoInherit),342CV_ENUM_CLASS_ENT(MethodOptions, NoConstruct),343CV_ENUM_CLASS_ENT(MethodOptions, CompilerGenerated),344CV_ENUM_CLASS_ENT(MethodOptions, Sealed),345};346347static const EnumEntry<uint16_t> MemberKindNames[] = {348CV_ENUM_CLASS_ENT(MethodKind, Vanilla),349CV_ENUM_CLASS_ENT(MethodKind, Virtual),350CV_ENUM_CLASS_ENT(MethodKind, Static),351CV_ENUM_CLASS_ENT(MethodKind, Friend),352CV_ENUM_CLASS_ENT(MethodKind, IntroducingVirtual),353CV_ENUM_CLASS_ENT(MethodKind, PureVirtual),354CV_ENUM_CLASS_ENT(MethodKind, PureIntroducingVirtual),355};356357static const EnumEntry<uint8_t> PtrKindNames[] = {358CV_ENUM_CLASS_ENT(PointerKind, Near16),359CV_ENUM_CLASS_ENT(PointerKind, Far16),360CV_ENUM_CLASS_ENT(PointerKind, Huge16),361CV_ENUM_CLASS_ENT(PointerKind, BasedOnSegment),362CV_ENUM_CLASS_ENT(PointerKind, BasedOnValue),363CV_ENUM_CLASS_ENT(PointerKind, BasedOnSegmentValue),364CV_ENUM_CLASS_ENT(PointerKind, BasedOnAddress),365CV_ENUM_CLASS_ENT(PointerKind, BasedOnSegmentAddress),366CV_ENUM_CLASS_ENT(PointerKind, BasedOnType),367CV_ENUM_CLASS_ENT(PointerKind, BasedOnSelf),368CV_ENUM_CLASS_ENT(PointerKind, Near32),369CV_ENUM_CLASS_ENT(PointerKind, Far32),370CV_ENUM_CLASS_ENT(PointerKind, Near64),371};372373static const EnumEntry<uint8_t> PtrModeNames[] = {374CV_ENUM_CLASS_ENT(PointerMode, Pointer),375CV_ENUM_CLASS_ENT(PointerMode, LValueReference),376CV_ENUM_CLASS_ENT(PointerMode, PointerToDataMember),377CV_ENUM_CLASS_ENT(PointerMode, PointerToMemberFunction),378CV_ENUM_CLASS_ENT(PointerMode, RValueReference),379};380381static const EnumEntry<uint16_t> PtrMemberRepNames[] = {382CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, Unknown),383CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, SingleInheritanceData),384CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, MultipleInheritanceData),385CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, VirtualInheritanceData),386CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, GeneralData),387CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, SingleInheritanceFunction),388CV_ENUM_CLASS_ENT(PointerToMemberRepresentation,389MultipleInheritanceFunction),390CV_ENUM_CLASS_ENT(PointerToMemberRepresentation,391VirtualInheritanceFunction),392CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, GeneralFunction),393};394395static const EnumEntry<uint16_t> TypeModifierNames[] = {396CV_ENUM_CLASS_ENT(ModifierOptions, Const),397CV_ENUM_CLASS_ENT(ModifierOptions, Volatile),398CV_ENUM_CLASS_ENT(ModifierOptions, Unaligned),399};400401static const EnumEntry<uint8_t> CallingConventions[] = {402CV_ENUM_CLASS_ENT(CallingConvention, NearC),403CV_ENUM_CLASS_ENT(CallingConvention, FarC),404CV_ENUM_CLASS_ENT(CallingConvention, NearPascal),405CV_ENUM_CLASS_ENT(CallingConvention, FarPascal),406CV_ENUM_CLASS_ENT(CallingConvention, NearFast),407CV_ENUM_CLASS_ENT(CallingConvention, FarFast),408CV_ENUM_CLASS_ENT(CallingConvention, NearStdCall),409CV_ENUM_CLASS_ENT(CallingConvention, FarStdCall),410CV_ENUM_CLASS_ENT(CallingConvention, NearSysCall),411CV_ENUM_CLASS_ENT(CallingConvention, FarSysCall),412CV_ENUM_CLASS_ENT(CallingConvention, ThisCall),413CV_ENUM_CLASS_ENT(CallingConvention, MipsCall),414CV_ENUM_CLASS_ENT(CallingConvention, Generic),415CV_ENUM_CLASS_ENT(CallingConvention, AlphaCall),416CV_ENUM_CLASS_ENT(CallingConvention, PpcCall),417CV_ENUM_CLASS_ENT(CallingConvention, SHCall),418CV_ENUM_CLASS_ENT(CallingConvention, ArmCall),419CV_ENUM_CLASS_ENT(CallingConvention, AM33Call),420CV_ENUM_CLASS_ENT(CallingConvention, TriCall),421CV_ENUM_CLASS_ENT(CallingConvention, SH5Call),422CV_ENUM_CLASS_ENT(CallingConvention, M32RCall),423CV_ENUM_CLASS_ENT(CallingConvention, ClrCall),424CV_ENUM_CLASS_ENT(CallingConvention, Inline),425CV_ENUM_CLASS_ENT(CallingConvention, NearVector),426CV_ENUM_CLASS_ENT(CallingConvention, Swift),427};428429static const EnumEntry<uint8_t> FunctionOptionEnum[] = {430CV_ENUM_CLASS_ENT(FunctionOptions, CxxReturnUdt),431CV_ENUM_CLASS_ENT(FunctionOptions, Constructor),432CV_ENUM_CLASS_ENT(FunctionOptions, ConstructorWithVirtualBases),433};434435static const EnumEntry<uint16_t> LabelTypeEnum[] = {436CV_ENUM_CLASS_ENT(LabelType, Near),437CV_ENUM_CLASS_ENT(LabelType, Far),438};439440static const EnumEntry<uint16_t> JumpTableEntrySizeNames[] = {441CV_ENUM_CLASS_ENT(JumpTableEntrySize, Int8),442CV_ENUM_CLASS_ENT(JumpTableEntrySize, UInt8),443CV_ENUM_CLASS_ENT(JumpTableEntrySize, Int16),444CV_ENUM_CLASS_ENT(JumpTableEntrySize, UInt16),445CV_ENUM_CLASS_ENT(JumpTableEntrySize, Int32),446CV_ENUM_CLASS_ENT(JumpTableEntrySize, UInt32),447CV_ENUM_CLASS_ENT(JumpTableEntrySize, Pointer),448CV_ENUM_CLASS_ENT(JumpTableEntrySize, UInt8ShiftLeft),449CV_ENUM_CLASS_ENT(JumpTableEntrySize, UInt16ShiftLeft),450CV_ENUM_CLASS_ENT(JumpTableEntrySize, Int8ShiftLeft),451CV_ENUM_CLASS_ENT(JumpTableEntrySize, Int16ShiftLeft),452};453454namespace llvm {455namespace codeview {456457ArrayRef<EnumEntry<SymbolKind>> getSymbolTypeNames() {458return ArrayRef(SymbolTypeNames);459}460461ArrayRef<EnumEntry<TypeLeafKind>> getTypeLeafNames() {462return ArrayRef(TypeLeafNames);463}464465ArrayRef<EnumEntry<uint16_t>> getRegisterNames(CPUType Cpu) {466if (Cpu == CPUType::ARMNT) {467return ArrayRef(RegisterNames_ARM);468} else if (Cpu == CPUType::ARM64) {469return ArrayRef(RegisterNames_ARM64);470}471return ArrayRef(RegisterNames_X86);472}473474ArrayRef<EnumEntry<uint32_t>> getPublicSymFlagNames() {475return ArrayRef(PublicSymFlagNames);476}477478ArrayRef<EnumEntry<uint8_t>> getProcSymFlagNames() {479return ArrayRef(ProcSymFlagNames);480}481482ArrayRef<EnumEntry<uint16_t>> getLocalFlagNames() {483return ArrayRef(LocalFlags);484}485486ArrayRef<EnumEntry<uint8_t>> getFrameCookieKindNames() {487return ArrayRef(FrameCookieKinds);488}489490ArrayRef<EnumEntry<SourceLanguage>> getSourceLanguageNames() {491return ArrayRef(SourceLanguages);492}493494ArrayRef<EnumEntry<uint32_t>> getCompileSym2FlagNames() {495return ArrayRef(CompileSym2FlagNames);496}497498ArrayRef<EnumEntry<uint32_t>> getCompileSym3FlagNames() {499return ArrayRef(CompileSym3FlagNames);500}501502ArrayRef<EnumEntry<uint32_t>> getFileChecksumNames() {503return ArrayRef(FileChecksumNames);504}505506ArrayRef<EnumEntry<unsigned>> getCPUTypeNames() {507return ArrayRef(CPUTypeNames);508}509510ArrayRef<EnumEntry<uint32_t>> getFrameProcSymFlagNames() {511return ArrayRef(FrameProcSymFlagNames);512}513514ArrayRef<EnumEntry<uint16_t>> getExportSymFlagNames() {515return ArrayRef(ExportSymFlagNames);516}517518ArrayRef<EnumEntry<uint32_t>> getModuleSubstreamKindNames() {519return ArrayRef(ModuleSubstreamKindNames);520}521522ArrayRef<EnumEntry<uint8_t>> getThunkOrdinalNames() {523return ArrayRef(ThunkOrdinalNames);524}525526ArrayRef<EnumEntry<uint16_t>> getTrampolineNames() {527return ArrayRef(TrampolineNames);528}529530ArrayRef<EnumEntry<COFF::SectionCharacteristics>>531getImageSectionCharacteristicNames() {532return ArrayRef(ImageSectionCharacteristicNames);533}534535ArrayRef<EnumEntry<uint16_t>> getClassOptionNames() {536return ArrayRef(ClassOptionNames);537}538539ArrayRef<EnumEntry<uint8_t>> getMemberAccessNames() {540return ArrayRef(MemberAccessNames);541}542543ArrayRef<EnumEntry<uint16_t>> getMethodOptionNames() {544return ArrayRef(MethodOptionNames);545}546547ArrayRef<EnumEntry<uint16_t>> getMemberKindNames() {548return ArrayRef(MemberKindNames);549}550551ArrayRef<EnumEntry<uint8_t>> getPtrKindNames() {552return ArrayRef(PtrKindNames);553}554555ArrayRef<EnumEntry<uint8_t>> getPtrModeNames() {556return ArrayRef(PtrModeNames);557}558559ArrayRef<EnumEntry<uint16_t>> getPtrMemberRepNames() {560return ArrayRef(PtrMemberRepNames);561}562563ArrayRef<EnumEntry<uint16_t>> getTypeModifierNames() {564return ArrayRef(TypeModifierNames);565}566567ArrayRef<EnumEntry<uint8_t>> getCallingConventions() {568return ArrayRef(CallingConventions);569}570571ArrayRef<EnumEntry<uint8_t>> getFunctionOptionEnum() {572return ArrayRef(FunctionOptionEnum);573}574575ArrayRef<EnumEntry<uint16_t>> getLabelTypeEnum() {576return ArrayRef(LabelTypeEnum);577}578579ArrayRef<EnumEntry<uint16_t>> getJumpTableEntrySizeNames() {580return ArrayRef(JumpTableEntrySizeNames);581}582583} // end namespace codeview584} // end namespace llvm585586587