//===- PDBTypes.h - Defines enums for various fields contained in PDB ----====// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_DEBUGINFO_PDB_PDBTYPES_H #define LLVM_DEBUGINFO_PDB_PDBTYPES_H #include "llvm/ADT/APFloat.h" #include "llvm/DebugInfo/CodeView/CodeView.h" #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h" #include "llvm/DebugInfo/PDB/IPDBFrameData.h" #include "llvm/DebugInfo/PDB/Native/RawTypes.h" #include <cctype> #include <cstddef> #include <cstdint> #include <cstring> #include <functional> namespace llvm { namespace pdb { SymIndexId; class IPDBDataStream; class IPDBInjectedSource; class IPDBLineNumber; class IPDBSectionContrib; class IPDBSession; class IPDBSourceFile; class IPDBTable; class PDBSymDumper; class PDBSymbol; class PDBSymbolExe; class PDBSymbolCompiland; class PDBSymbolCompilandDetails; class PDBSymbolCompilandEnv; class PDBSymbolFunc; class PDBSymbolBlock; class PDBSymbolData; class PDBSymbolAnnotation; class PDBSymbolLabel; class PDBSymbolPublicSymbol; class PDBSymbolTypeUDT; class PDBSymbolTypeEnum; class PDBSymbolTypeFunctionSig; class PDBSymbolTypePointer; class PDBSymbolTypeArray; class PDBSymbolTypeBuiltin; class PDBSymbolTypeTypedef; class PDBSymbolTypeBaseClass; class PDBSymbolTypeFriend; class PDBSymbolTypeFunctionArg; class PDBSymbolFuncDebugStart; class PDBSymbolFuncDebugEnd; class PDBSymbolUsingNamespace; class PDBSymbolTypeVTableShape; class PDBSymbolTypeVTable; class PDBSymbolCustom; class PDBSymbolThunk; class PDBSymbolTypeCustom; class PDBSymbolTypeManaged; class PDBSymbolTypeDimension; class PDBSymbolUnknown; IPDBEnumSymbols; IPDBEnumSourceFiles; IPDBEnumDataStreams; IPDBEnumLineNumbers; IPDBEnumTables; IPDBEnumInjectedSources; IPDBEnumSectionContribs; IPDBEnumFrameData; /// Specifies which PDB reader implementation is to be used. Only a value /// of PDB_ReaderType::DIA is currently supported, but Native is in the works. enum class PDB_ReaderType { … }; /// An enumeration indicating the type of data contained in this table. enum class PDB_TableType { … }; /// Defines flags used for enumerating child symbols. This corresponds to the /// NameSearchOptions enumeration which is documented here: /// https://msdn.microsoft.com/en-us/library/yat28ads.aspx enum PDB_NameSearchFlags { … }; /// Specifies the hash algorithm that a source file from a PDB was hashed with. /// This corresponds to the CV_SourceChksum_t enumeration and are documented /// here: https://msdn.microsoft.com/en-us/library/e96az21x.aspx enum class PDB_Checksum { … }; /// These values correspond to the CV_CPU_TYPE_e enumeration, and are documented /// here: https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx PDB_Cpu; enum class PDB_Machine { … }; // A struct with an inner unnamed enum with explicit underlying type resuls // in an enum class that can implicitly convert to the underlying type, which // is convenient for this enum. struct PDB_SourceCompression { … }; /// These values correspond to the CV_call_e enumeration, and are documented /// at the following locations: /// https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx /// https://msdn.microsoft.com/en-us/library/windows/desktop/ms680207(v=vs.85).aspx PDB_CallingConv; /// These values correspond to the CV_CFL_LANG enumeration, and are documented /// here: https://msdn.microsoft.com/en-us/library/bw3aekw6.aspx PDB_Lang; /// These values correspond to the DataKind enumeration, and are documented /// here: https://msdn.microsoft.com/en-us/library/b2x2t313.aspx enum class PDB_DataKind { … }; /// These values correspond to the SymTagEnum enumeration, and are documented /// here: https://msdn.microsoft.com/en-us/library/bkedss5f.aspx enum class PDB_SymType { … }; /// These values correspond to the LocationType enumeration, and are documented /// here: https://msdn.microsoft.com/en-us/library/f57kaez3.aspx enum class PDB_LocType { … }; /// These values correspond to the UdtKind enumeration, and are documented /// here: https://msdn.microsoft.com/en-us/library/wcstk66t.aspx enum class PDB_UdtType { … }; /// These values correspond to the StackFrameTypeEnum enumeration, and are /// documented here: https://msdn.microsoft.com/en-us/library/bc5207xw.aspx. enum class PDB_StackFrameType : uint16_t { … }; /// These values correspond to the MemoryTypeEnum enumeration, and are /// documented here: https://msdn.microsoft.com/en-us/library/ms165609.aspx. enum class PDB_MemoryType : uint16_t { … }; /// These values correspond to the Basictype enumeration, and are documented /// here: https://msdn.microsoft.com/en-us/library/4szdtzc3.aspx enum class PDB_BuiltinType { … }; /// These values correspond to the flags that can be combined to control the /// return of an undecorated name for a C++ decorated name, and are documented /// here: https://msdn.microsoft.com/en-us/library/kszfk0fs.aspx enum PDB_UndnameFlags : uint32_t { … }; enum class PDB_MemberAccess { … }; struct VersionInfo { … }; enum PDB_VariantType { … }; struct Variant { … }; } // end namespace pdb } // end namespace llvm namespace std { template <> struct hash<llvm::pdb::PDB_SymType> { … }; } // end namespace std #endif // LLVM_DEBUGINFO_PDB_PDBTYPES_H