LLVM  16.0.0git
PDBTypes.h
Go to the documentation of this file.
1 //===- PDBTypes.h - Defines enums for various fields contained in PDB ----====//
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 #ifndef LLVM_DEBUGINFO_PDB_PDBTYPES_H
10 #define LLVM_DEBUGINFO_PDB_PDBTYPES_H
11 
12 #include "llvm/ADT/APFloat.h"
17 #include <cctype>
18 #include <cstddef>
19 #include <cstdint>
20 #include <cstring>
21 #include <functional>
22 
23 namespace llvm {
24 namespace pdb {
25 
27 
28 class IPDBDataStream;
29 class IPDBInjectedSource;
30 class IPDBLineNumber;
31 class IPDBSectionContrib;
32 class IPDBSession;
33 class IPDBSourceFile;
34 class IPDBTable;
35 class PDBSymDumper;
36 class PDBSymbol;
37 class PDBSymbolExe;
38 class PDBSymbolCompiland;
41 class PDBSymbolFunc;
42 class PDBSymbolBlock;
43 class PDBSymbolData;
45 class PDBSymbolLabel;
47 class PDBSymbolTypeUDT;
48 class PDBSymbolTypeEnum;
51 class PDBSymbolTypeArray;
62 class PDBSymbolCustom;
63 class PDBSymbolThunk;
67 class PDBSymbolUnknown;
68 
77 
78 /// Specifies which PDB reader implementation is to be used. Only a value
79 /// of PDB_ReaderType::DIA is currently supported, but Native is in the works.
80 enum class PDB_ReaderType {
81  DIA = 0,
82  Native = 1,
83 };
84 
85 /// An enumeration indicating the type of data contained in this table.
86 enum class PDB_TableType {
87  TableInvalid = 0,
88  Symbols,
92  Segments,
94  FrameData,
96  Dbg
97 };
98 
99 /// Defines flags used for enumerating child symbols. This corresponds to the
100 /// NameSearchOptions enumeration which is documented here:
101 /// https://msdn.microsoft.com/en-us/library/yat28ads.aspx
103  NS_Default = 0x0,
107  NS_Regex = 0x8,
109 
110  // For backward compatibility.
114 };
115 
116 /// Specifies the hash algorithm that a source file from a PDB was hashed with.
117 /// This corresponds to the CV_SourceChksum_t enumeration and are documented
118 /// here: https://msdn.microsoft.com/en-us/library/e96az21x.aspx
119 enum class PDB_Checksum { None = 0, MD5 = 1, SHA1 = 2, SHA256 = 3 };
120 
121 /// These values correspond to the CV_CPU_TYPE_e enumeration, and are documented
122 /// here: https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx
124 
125 enum class PDB_Machine {
126  Invalid = 0xffff,
127  Unknown = 0x0,
128  Am33 = 0x13,
129  Amd64 = 0x8664,
130  Arm = 0x1C0,
131  Arm64 = 0xaa64,
132  ArmNT = 0x1C4,
133  Ebc = 0xEBC,
134  x86 = 0x14C,
135  Ia64 = 0x200,
136  M32R = 0x9041,
137  Mips16 = 0x266,
138  MipsFpu = 0x366,
139  MipsFpu16 = 0x466,
140  PowerPC = 0x1F0,
141  PowerPCFP = 0x1F1,
142  R4000 = 0x166,
143  SH3 = 0x1A2,
144  SH3DSP = 0x1A3,
145  SH4 = 0x1A6,
146  SH5 = 0x1A8,
147  Thumb = 0x1C2,
148  WceMipsV2 = 0x169
149 };
150 
151 // A struct with an inner unnamed enum with explicit underlying type resuls
152 // in an enum class that can implicitly convert to the underlying type, which
153 // is convenient for this enum.
155  enum : uint32_t {
156  // No compression. Produced e.g. by `link.exe /natvis:foo.natvis`.
158  // Not known what produces this.
160  // Not known what produces this.
162  // Not known what produces this.
163  LZ,
164  // Produced e.g. by `csc /debug`. The encoded data is its own mini-stream
165  // with the following layout (in little endian):
166  // GUID LanguageTypeGuid;
167  // GUID LanguageVendorGuid;
168  // GUID DocumentTypeGuid;
169  // GUID HashFunctionGuid;
170  // uint32_t HashDataSize;
171  // uint32_t CompressedDataSize;
172  // Followed by HashDataSize bytes containing a hash checksum,
173  // followed by CompressedDataSize bytes containing source contents.
174  //
175  // CompressedDataSize can be 0, in this case only the hash data is present.
176  // (CompressedDataSize is != 0 e.g. if `/embed` is passed to csc.exe.)
177  // The compressed data format is:
178  // uint32_t UncompressedDataSize;
179  // If UncompressedDataSize is 0, the data is stored uncompressed and
180  // CompressedDataSize stores the uncompressed size.
181  // If UncompressedDataSize is != 0, then the data is in raw deflate
182  // encoding as described in rfc1951.
183  //
184  // A GUID is 16 bytes, stored in the usual
185  // uint32_t
186  // uint16_t
187  // uint16_t
188  // uint8_t[24]
189  // layout.
190  //
191  // Well-known GUIDs for LanguageTypeGuid are:
192  // 63a08714-fc37-11d2-904c-00c04fa302a1 C
193  // 3a12d0b7-c26c-11d0-b442-00a0244a1dd2 C++
194  // 3f5162f8-07c6-11d3-9053-00c04fa302a1 C#
195  // af046cd1-d0e1-11d2-977c-00a0c9b4d50c Cobol
196  // ab4f38c9-b6e6-43ba-be3b-58080b2ccce3 F#
197  // 3a12d0b4-c26c-11d0-b442-00a0244a1dd2 Java
198  // 3a12d0b6-c26c-11d0-b442-00a0244a1dd2 JScript
199  // af046cd2-d0e1-11d2-977c-00a0c9b4d50c Pascal
200  // 3a12d0b8-c26c-11d0-b442-00a0244a1dd2 Visual Basic
201  //
202  // Well-known GUIDs for LanguageVendorGuid are:
203  // 994b45c4-e6e9-11d2-903f-00c04fa302a1 Microsoft
204  //
205  // Well-known GUIDs for DocumentTypeGuid are:
206  // 5a869d0b-6611-11d3-bd2a-0000f80849bd Text
207  //
208  // Well-known GUIDs for HashFunctionGuid are:
209  // 406ea660-64cf-4c82-b6f0-42d48172a799 MD5 (HashDataSize is 16)
210  // ff1816ec-aa5e-4d10-87f7-6f4963833460 SHA1 (HashDataSize is 20)
211  // 8829d00f-11b8-4213-878b-770e8597ac16 SHA256 (HashDataSize is 32)
212  DotNet = 101,
213  };
214 };
215 
216 /// These values correspond to the CV_call_e enumeration, and are documented
217 /// at the following locations:
218 /// https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx
219 /// https://msdn.microsoft.com/en-us/library/windows/desktop/ms680207(v=vs.85).aspx
221 
222 /// These values correspond to the CV_CFL_LANG enumeration, and are documented
223 /// here: https://msdn.microsoft.com/en-us/library/bw3aekw6.aspx
225 
226 /// These values correspond to the DataKind enumeration, and are documented
227 /// here: https://msdn.microsoft.com/en-us/library/b2x2t313.aspx
228 enum class PDB_DataKind {
229  Unknown,
230  Local,
231  StaticLocal,
232  Param,
233  ObjectPtr,
234  FileStatic,
235  Global,
236  Member,
237  StaticMember,
238  Constant
239 };
240 
241 /// These values correspond to the SymTagEnum enumeration, and are documented
242 /// here: https://msdn.microsoft.com/en-us/library/bkedss5f.aspx
243 enum class PDB_SymType {
244  None,
245  Exe,
246  Compiland,
248  CompilandEnv,
249  Function,
250  Block,
251  Data,
252  Annotation,
253  Label,
254  PublicSymbol,
255  UDT,
256  Enum,
257  FunctionSig,
258  PointerType,
259  ArrayType,
260  BuiltinType,
261  Typedef,
262  BaseClass,
263  Friend,
264  FunctionArg,
266  FuncDebugEnd,
268  VTableShape,
269  VTable,
270  Custom,
271  Thunk,
272  CustomType,
273  ManagedType,
274  Dimension,
275  CallSite,
276  InlineSite,
278  VectorType,
279  MatrixType,
280  HLSLType,
281  Caller,
282  Callee,
283  Export,
285  CoffGroup,
286  Inlinee,
287  Max
288 };
289 
290 /// These values correspond to the LocationType enumeration, and are documented
291 /// here: https://msdn.microsoft.com/en-us/library/f57kaez3.aspx
292 enum class PDB_LocType {
293  Null,
294  Static,
295  TLS,
296  RegRel,
297  ThisRel,
298  Enregistered,
299  BitField,
300  Slot,
301  IlRel,
302  MetaData,
303  Constant,
305  Max
306 };
307 
308 /// These values correspond to the UdtKind enumeration, and are documented
309 /// here: https://msdn.microsoft.com/en-us/library/wcstk66t.aspx
311 
312 /// These values correspond to the StackFrameTypeEnum enumeration, and are
313 /// documented here: https://msdn.microsoft.com/en-us/library/bc5207xw.aspx.
315  FPO,
316  KernelTrap,
317  KernelTSS,
318  EBP,
319  FrameData,
320  Unknown = 0xffff
321 };
322 
323 /// These values correspond to the MemoryTypeEnum enumeration, and are
324 /// documented here: https://msdn.microsoft.com/en-us/library/ms165609.aspx.
325 enum class PDB_MemoryType : uint16_t {
326  Code,
327  Data,
328  Stack,
329  HeapCode,
330  Any = 0xffff
331 };
332 
333 /// These values correspond to the Basictype enumeration, and are documented
334 /// here: https://msdn.microsoft.com/en-us/library/4szdtzc3.aspx
335 enum class PDB_BuiltinType {
336  None = 0,
337  Void = 1,
338  Char = 2,
339  WCharT = 3,
340  Int = 6,
341  UInt = 7,
342  Float = 8,
343  BCD = 9,
344  Bool = 10,
345  Long = 13,
346  ULong = 14,
347  Currency = 25,
348  Date = 26,
349  Variant = 27,
350  Complex = 28,
351  Bitfield = 29,
352  BSTR = 30,
353  HResult = 31,
354  Char16 = 32,
355  Char32 = 33,
356  Char8 = 34,
357 };
358 
359 /// These values correspond to the flags that can be combined to control the
360 /// return of an undecorated name for a C++ decorated name, and are documented
361 /// here: https://msdn.microsoft.com/en-us/library/kszfk0fs.aspx
380  Undname_NoECSU = 0x8000,
382  Undname_NoPTR64 = 0x20000
383 };
384 
385 enum class PDB_MemberAccess { Private = 1, Protected = 2, Public = 3 };
386 
387 struct VersionInfo {
392 };
393 
409 };
410 
411 struct Variant {
412  Variant() = default;
413 
414  explicit Variant(bool V) : Type(PDB_VariantType::Bool) { Value.Bool = V; }
415  explicit Variant(int8_t V) : Type(PDB_VariantType::Int8) { Value.Int8 = V; }
416  explicit Variant(int16_t V) : Type(PDB_VariantType::Int16) {
417  Value.Int16 = V;
418  }
419  explicit Variant(int32_t V) : Type(PDB_VariantType::Int32) {
420  Value.Int32 = V;
421  }
422  explicit Variant(int64_t V) : Type(PDB_VariantType::Int64) {
423  Value.Int64 = V;
424  }
425  explicit Variant(float V) : Type(PDB_VariantType::Single) {
426  Value.Single = V;
427  }
428  explicit Variant(double V) : Type(PDB_VariantType::Double) {
429  Value.Double = V;
430  }
431  explicit Variant(uint8_t V) : Type(PDB_VariantType::UInt8) {
432  Value.UInt8 = V;
433  }
435  Value.UInt16 = V;
436  }
438  Value.UInt32 = V;
439  }
441  Value.UInt64 = V;
442  }
443 
444  Variant(const Variant &Other) {
445  *this = Other;
446  }
447 
450  delete[] Value.String;
451  }
452 
454  union {
455  bool Bool;
456  int8_t Int8;
457  int16_t Int16;
458  int32_t Int32;
459  int64_t Int64;
460  float Single;
461  double Double;
462  uint8_t UInt8;
466  char *String;
467  } Value;
468 
469  bool isIntegralType() const {
470  switch (Type) {
471  case Bool:
472  case Int8:
473  case Int16:
474  case Int32:
475  case Int64:
476  case UInt8:
477  case UInt16:
478  case UInt32:
479  case UInt64:
480  return true;
481  default:
482  return false;
483  }
484  }
485 
486 #define VARIANT_WIDTH(Enum, NumBits) \
487  case PDB_VariantType::Enum: \
488  return NumBits;
489 
490  unsigned getBitWidth() const {
491  switch (Type) {
492  VARIANT_WIDTH(Bool, 1u)
493  VARIANT_WIDTH(Int8, 8u)
494  VARIANT_WIDTH(Int16, 16u)
495  VARIANT_WIDTH(Int32, 32u)
496  VARIANT_WIDTH(Int64, 64u)
497  VARIANT_WIDTH(Single, 32u)
498  VARIANT_WIDTH(Double, 64u)
499  VARIANT_WIDTH(UInt8, 8u)
500  VARIANT_WIDTH(UInt16, 16u)
501  VARIANT_WIDTH(UInt32, 32u)
502  VARIANT_WIDTH(UInt64, 64u)
503  default:
504  assert(false && "Variant::toAPSInt called on non-numeric type");
505  return 0u;
506  }
507  }
508 
509 #undef VARIANT_WIDTH
510 
511 #define VARIANT_APSINT(Enum, NumBits, IsUnsigned) \
512  case PDB_VariantType::Enum: \
513  return APSInt(APInt(NumBits, Value.Enum), IsUnsigned);
514 
515  APSInt toAPSInt() const {
516  switch (Type) {
517  VARIANT_APSINT(Bool, 1u, true)
518  VARIANT_APSINT(Int8, 8u, false)
519  VARIANT_APSINT(Int16, 16u, false)
520  VARIANT_APSINT(Int32, 32u, false)
521  VARIANT_APSINT(Int64, 64u, false)
522  VARIANT_APSINT(UInt8, 8u, true)
523  VARIANT_APSINT(UInt16, 16u, true)
524  VARIANT_APSINT(UInt32, 32u, true)
525  VARIANT_APSINT(UInt64, 64u, true)
526  default:
527  assert(false && "Variant::toAPSInt called on non-integral type");
528  return APSInt();
529  }
530  }
531 
532 #undef VARIANT_APSINT
533 
534  APFloat toAPFloat() const {
535  // Float constants may be tagged as integers.
536  switch (Type) {
540  return APFloat(Value.Single);
544  return APFloat(Value.Double);
545  default:
546  assert(false && "Variant::toAPFloat called on non-floating-point type");
548  }
549  }
550 
551 #define VARIANT_EQUAL_CASE(Enum) \
552  case PDB_VariantType::Enum: \
553  return Value.Enum == Other.Value.Enum;
554 
555  bool operator==(const Variant &Other) const {
556  if (Type != Other.Type)
557  return false;
558  switch (Type) {
571  default:
572  return true;
573  }
574  }
575 
576 #undef VARIANT_EQUAL_CASE
577 
578  bool operator!=(const Variant &Other) const { return !(*this == Other); }
579  Variant &operator=(const Variant &Other) {
580  if (this == &Other)
581  return *this;
583  delete[] Value.String;
584  Type = Other.Type;
585  Value = Other.Value;
586  if (Other.Type == PDB_VariantType::String &&
587  Other.Value.String != nullptr) {
588  Value.String = new char[strlen(Other.Value.String) + 1];
589  ::strcpy(Value.String, Other.Value.String);
590  }
591  return *this;
592  }
593 };
594 
595 } // end namespace pdb
596 } // end namespace llvm
597 
598 namespace std {
599 
600 template <> struct hash<llvm::pdb::PDB_SymType> {
602  using result_type = std::size_t;
603 
605  return std::hash<int>()(static_cast<int>(Arg));
606  }
607 };
608 
609 } // end namespace std
610 
611 #endif // LLVM_DEBUGINFO_PDB_PDBTYPES_H
llvm::pdb::PDB_SymType::UsingNamespace
@ UsingNamespace
llvm::pdb::PDBSymbolCompilandEnv
Definition: PDBSymbolCompilandEnv.h:18
llvm::pdb::Variant::String
char * String
Definition: PDBTypes.h:466
llvm::pdb::IPDBSession
IPDBSession defines an interface used to provide a context for querying debug information from a debu...
Definition: IPDBSession.h:25
llvm::lltok::APFloat
@ APFloat
Definition: LLToken.h:438
llvm::pdb::PDB_SymType::CustomType
@ CustomType
llvm::pdb::VersionInfo::Major
uint32_t Major
Definition: PDBTypes.h:388
llvm::pdb::PDB_TableType::SourceFiles
@ SourceFiles
llvm::pdb::PDB_UdtType::Interface
@ Interface
llvm::pdb::PDB_MemberAccess::Private
@ Private
llvm::pdb::PDB_TableType::InputAssemblyFiles
@ InputAssemblyFiles
llvm::pdb::PDB_BuiltinType::ULong
@ ULong
llvm::pdb::Variant::Variant
Variant(int32_t V)
Definition: PDBTypes.h:419
llvm::pdb::PDB_UdtType::Struct
@ Struct
llvm::pdb::IPDBDataStream
IPDBDataStream defines an interface used to represent a stream consisting of a name and a series of r...
Definition: IPDBDataStream.h:23
llvm::pdb::Variant::toAPSInt
APSInt toAPSInt() const
Definition: PDBTypes.h:515
llvm::pdb::Variant::UInt8
uint8_t UInt8
Definition: PDBTypes.h:462
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
llvm::pdb::PDB_DataKind::FileStatic
@ FileStatic
llvm::pdb::PDBSymbolPublicSymbol
Definition: PDBSymbolPublicSymbol.h:19
llvm::pdb::Variant::Variant
Variant()=default
llvm::pdb::Undname_NoFuncReturns
@ Undname_NoFuncReturns
Definition: PDBTypes.h:366
llvm::pdb::PDB_BuiltinType::Char
@ Char
llvm::pdb::PDB_SymType::FunctionSig
@ FunctionSig
llvm::pdb::PDB_SymType::BaseClass
@ BaseClass
llvm::pdb::VersionInfo::Build
uint32_t Build
Definition: PDBTypes.h:390
llvm::pdb::PDB_StackFrameType::FPO
@ FPO
llvm::APFloatBase::IEEEsingle
static const fltSemantics & IEEEsingle() LLVM_READNONE
Definition: APFloat.cpp:170
std::hash< llvm::pdb::PDB_SymType >::result_type
std::size_t result_type
Definition: PDBTypes.h:602
llvm::pdb::PDB_DataKind::Member
@ Member
llvm::pdb::NS_CaseInFileNameExt
@ NS_CaseInFileNameExt
Definition: PDBTypes.h:111
Int64
@ Int64
Definition: TargetLibraryInfo.cpp:52
RawTypes.h
llvm::pdb::PDB_SymType::MatrixType
@ MatrixType
llvm::pdb::Int64
@ Int64
Definition: PDBTypes.h:400
llvm::pdb::Variant::Variant
Variant(int16_t V)
Definition: PDBTypes.h:416
llvm::pdb::PDBSymbolTypeEnum
Definition: PDBSymbolTypeEnum.h:24
llvm::pdb::PDB_Machine::PowerPC
@ PowerPC
llvm::pdb::PDB_SymType::CoffGroup
@ CoffGroup
llvm::pdb::PDB_SymType::HeapAllocationSite
@ HeapAllocationSite
llvm::pdb::PDB_BuiltinType::Char8
@ Char8
llvm::SHA256
Definition: SHA256.h:33
llvm::pdb::UInt16
@ UInt16
Definition: PDBTypes.h:404
llvm::pdb::Variant::getBitWidth
unsigned getBitWidth() const
Definition: PDBTypes.h:490
llvm::pdb::IPDBSourceFile
IPDBSourceFile defines an interface used to represent source files whose information are stored in th...
Definition: IPDBSourceFile.h:23
llvm::pdb::PDB_MemberAccess::Public
@ Public
llvm::pdb::PDB_DataKind::StaticMember
@ StaticMember
llvm::pdb::Variant::UInt64
uint64_t UInt64
Definition: PDBTypes.h:465
llvm::pdb::PDBSymbolTypeVTable
Definition: PDBSymbolTypeVTable.h:19
llvm::pdb::PDB_BuiltinType::Char32
@ Char32
llvm::pdb::Undname_NoMemberType
@ Undname_NoMemberType
Definition: PDBTypes.h:374
llvm::pdb::PDB_UdtType
PDB_UdtType
These values correspond to the UdtKind enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:310
llvm::pdb::PDB_BuiltinType::HResult
@ HResult
llvm::lltok::APSInt
@ APSInt
Definition: LLToken.h:439
llvm::pdb::PDB_LocType
PDB_LocType
These values correspond to the LocationType enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:292
llvm::pdb::PDB_Machine::M32R
@ M32R
llvm::pdb::PDB_SymType::PointerType
@ PointerType
llvm::pdb::PDB_TableType::Dbg
@ Dbg
llvm::pdb::Undname_NoThisType
@ Undname_NoThisType
Definition: PDBTypes.h:371
llvm::pdb::PDB_SymType::BaseInterface
@ BaseInterface
llvm::pdb::Variant::Variant
Variant(uint64_t V)
Definition: PDBTypes.h:440
llvm::Type
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45
llvm::pdb::Bool
@ Bool
llvm::pdb::Variant::Variant
Variant(double V)
Definition: PDBTypes.h:428
llvm::pdb::PDB_LocType::Max
@ Max
llvm::pdb::VersionInfo
Definition: PDBTypes.h:387
llvm::pdb::Undname_NoECSU
@ Undname_NoECSU
Definition: PDBTypes.h:380
llvm::pdb::VersionInfo::Minor
uint32_t Minor
Definition: PDBTypes.h:389
llvm::pdb::PDB_Machine::PowerPCFP
@ PowerPCFP
llvm::pdb::PDB_SourceCompression::LZ
@ LZ
Definition: PDBTypes.h:163
llvm::pdb::PDB_MemoryType
PDB_MemoryType
These values correspond to the MemoryTypeEnum enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:325
llvm::pdb::Undname_NoAccessSpec
@ Undname_NoAccessSpec
Definition: PDBTypes.h:372
llvm::pdb::PDBSymbolData
Definition: PDBSymbolData.h:22
llvm::pdb::Variant::Double
double Double
Definition: PDBTypes.h:461
llvm::pdb::PDB_SymType::Custom
@ Custom
llvm::pdb::Variant::Variant
Variant(const Variant &Other)
Definition: PDBTypes.h:444
llvm::pdb::PDB_StackFrameType
PDB_StackFrameType
These values correspond to the StackFrameTypeEnum enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:314
llvm::Bitfield
Holds functions to get, set or test bitfields.
Definition: Bitfields.h:212
llvm::pdb::Double
@ Double
Definition: PDBTypes.h:402
llvm::pdb::Variant::Variant
Variant(uint32_t V)
Definition: PDBTypes.h:437
llvm::pdb::PDB_SymType
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:243
llvm::pdb::PDB_Machine::SH5
@ SH5
llvm::pdb::PDB_SymType::FuncDebugStart
@ FuncDebugStart
llvm::pdb::PDB_LocType::BitField
@ BitField
llvm::pdb::PDB_Machine::Am33
@ Am33
llvm::pdb::PDB_MemberAccess::Protected
@ Protected
llvm::pdb::Undname_Reserved1
@ Undname_Reserved1
Definition: PDBTypes.h:369
llvm::pdb::PDB_SymType::Callee
@ Callee
llvm::pdb::PDB_SymType::InlineSite
@ InlineSite
llvm::pdb::IPDBTable
Definition: IPDBTable.h:16
llvm::pdb::PDB_SourceCompression::None
@ None
Definition: PDBTypes.h:157
Arg
amdgpu Simplify well known AMD library false FunctionCallee Value * Arg
Definition: AMDGPULibCalls.cpp:187
llvm::pdb::PDB_Machine::Ebc
@ Ebc
llvm::APFloat::getZero
static APFloat getZero(const fltSemantics &Sem, bool Negative=false)
Factory for Positive and Negative Zero.
Definition: APFloat.h:885
llvm::pdb::PDB_BuiltinType::Currency
@ Currency
llvm::pdb::Undname_HaveParams
@ Undname_HaveParams
Definition: PDBTypes.h:379
llvm::pdb::PDBSymbolTypeTypedef
Definition: PDBSymbolTypeTypedef.h:19
llvm::pdb::PDBSymbolTypeFriend
Definition: PDBSymbolTypeFriend.h:19
llvm::pdb::PDBSymbolTypeDimension
Definition: PDBSymbolTypeDimension.h:19
llvm::pdb::PDBSymbolTypeFunctionArg
Definition: PDBSymbolTypeFunctionArg.h:19
llvm::pdb::PDB_MemoryType::Code
@ Code
llvm::pdb::PDB_LocType::Null
@ Null
llvm::pdb::PDB_SourceCompression::DotNet
@ DotNet
Definition: PDBTypes.h:212
llvm::pdb::PDB_LocType::RegRel
@ RegRel
llvm::pdb::Variant::Int64
int64_t Int64
Definition: PDBTypes.h:459
llvm::pdb::Variant::Variant
Variant(bool V)
Definition: PDBTypes.h:414
std::hash< llvm::pdb::PDB_SymType >::operator()
result_type operator()(const argument_type &Arg) const
Definition: PDBTypes.h:604
llvm::pdb::PDB_DataKind::StaticLocal
@ StaticLocal
llvm::pdb::PDBSymbolExe
Definition: PDBSymbolExe.h:21
llvm::SHA1
A class that wrap the SHA1 algorithm.
Definition: SHA1.h:26
llvm::pdb::Undname_TypeOnly
@ Undname_TypeOnly
Definition: PDBTypes.h:378
llvm::pdb::SymIndexId
uint32_t SymIndexId
Definition: PDBTypes.h:26
llvm::pdb::NS_Default
@ NS_Default
Definition: PDBTypes.h:103
llvm::pdb::PDB_SourceCompression::Huffman
@ Huffman
Definition: PDBTypes.h:161
llvm::pdb::PDB_DataKind
PDB_DataKind
These values correspond to the DataKind enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:228
llvm::pdb::PDB_SymType::FunctionArg
@ FunctionArg
VARIANT_EQUAL_CASE
#define VARIANT_EQUAL_CASE(Enum)
Definition: PDBTypes.h:551
llvm::pdb::PDB_TableType::InjectedSources
@ InjectedSources
llvm::pdb::Undname_NoAllocLang
@ Undname_NoAllocLang
Definition: PDBTypes.h:368
llvm::pdb::Variant::toAPFloat
APFloat toAPFloat() const
Definition: PDBTypes.h:534
llvm::pdb::Variant::isIntegralType
bool isIntegralType() const
Definition: PDBTypes.h:469
llvm::pdb::PDB_SourceCompression
Definition: PDBTypes.h:154
llvm::pdb::PDBSymbolTypeBaseClass
Definition: PDBSymbolTypeBaseClass.h:23
llvm::pdb::PDB_SymType::UDT
@ UDT
llvm::pdb::Variant::operator=
Variant & operator=(const Variant &Other)
Definition: PDBTypes.h:579
llvm::pdb::Undname_NoIdentCharCheck
@ Undname_NoIdentCharCheck
Definition: PDBTypes.h:381
llvm::pdb::UInt32
@ UInt32
Definition: PDBTypes.h:405
llvm::pdb::PDB_Machine::SH3DSP
@ SH3DSP
llvm::pdb::Variant::Value
union llvm::pdb::Variant::@265 Value
llvm::pdb::PDB_BuiltinType::Int
@ Int
llvm::pdb::PDB_SymType::Caller
@ Caller
llvm::pdb::PDB_SymType::CompilandDetails
@ CompilandDetails
llvm::pdb::PDBSymbol
PDBSymbol defines the base of the inheritance hierarchy for concrete symbol types (e....
Definition: PDBSymbol.h:71
llvm::pdb::Int8
@ Int8
Definition: PDBTypes.h:397
llvm::pdb::PDB_Machine::MipsFpu16
@ MipsFpu16
llvm::APSInt
An arbitrary precision integer that knows its signedness.
Definition: APSInt.h:23
llvm::pdb::PDB_Machine::Arm
@ Arm
APFloat.h
llvm::pdb::PDB_BuiltinType::BCD
@ BCD
llvm::pdb::PDB_LocType::TLS
@ TLS
llvm::pdb::PDB_NameSearchFlags
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
Definition: PDBTypes.h:102
llvm::pdb::PDBSymbolTypeCustom
Definition: PDBSymbolTypeCustom.h:19
llvm::pdb::PDB_Machine::Mips16
@ Mips16
llvm::pdb::PDB_ReaderType
PDB_ReaderType
Specifies which PDB reader implementation is to be used.
Definition: PDBTypes.h:80
llvm::pdb::PDB_SymType::ArrayType
@ ArrayType
llvm::pdb::PDB_Machine::SH3
@ SH3
CodeView.h
llvm::pdb::Variant::Int16
int16_t Int16
Definition: PDBTypes.h:457
llvm::pdb::PDBSymbolTypeArray
Definition: PDBSymbolTypeArray.h:19
llvm::pdb::PDB_TableType::LineNumbers
@ LineNumbers
llvm::pdb::NS_CaseInRex
@ NS_CaseInRex
Definition: PDBTypes.h:113
llvm::pdb::PDBSymbolTypeFunctionSig
Definition: PDBSymbolTypeFunctionSig.h:20
llvm::pdb::PDB_BuiltinType::UInt
@ UInt
llvm::pdb::PDB_SymType::VTableShape
@ VTableShape
llvm::pdb::Variant::Int8
int8_t Int8
Definition: PDBTypes.h:456
llvm::pdb::PDB_MemoryType::HeapCode
@ HeapCode
llvm::pdb::PDB_Checksum::None
@ None
llvm::pdb::PDB_Machine::Ia64
@ Ia64
llvm::pdb::PDB_StackFrameType::KernelTSS
@ KernelTSS
llvm::pdb::PDB_BuiltinType::Char16
@ Char16
llvm::pdb::PDB_Machine::R4000
@ R4000
llvm::pdb::VersionInfo::QFE
uint32_t QFE
Definition: PDBTypes.h:391
llvm::APFloat
Definition: APFloat.h:701
llvm::pdb::PDB_BuiltinType::Date
@ Date
llvm::Constant
This is an important base class in LLVM.
Definition: Constant.h:41
llvm::pdb::PDBSymbolTypePointer
Definition: PDBSymbolTypePointer.h:19
llvm::pdb::PDB_Machine::ArmNT
@ ArmNT
llvm::pdb::PDBSymbolTypeVTableShape
Definition: PDBSymbolTypeVTableShape.h:19
llvm::pdb::PDB_TableType
PDB_TableType
An enumeration indicating the type of data contained in this table.
Definition: PDBTypes.h:86
uint64_t
llvm::pdb::Unknown
@ Unknown
Definition: PDBTypes.h:396
llvm::pdb::Variant::Bool
bool Bool
Definition: PDBTypes.h:455
llvm::pdb::PDB_Machine::SH4
@ SH4
llvm::pdb::PDB_Machine::Arm64
@ Arm64
llvm::pdb::PDB_BuiltinType::WCharT
@ WCharT
llvm::pdb::Undname_NoAllocModel
@ Undname_NoAllocModel
Definition: PDBTypes.h:367
llvm::pdb::NS_FileNameExtMatch
@ NS_FileNameExtMatch
Definition: PDBTypes.h:106
llvm::pdb::PDB_StackFrameType::FrameData
@ FrameData
llvm::pdb::PDB_DataKind::Param
@ Param
llvm::MD5
Definition: MD5.h:41
llvm::pdb::Int32
@ Int32
Definition: PDBTypes.h:399
llvm::pdb::Variant::Variant
Variant(int64_t V)
Definition: PDBTypes.h:422
llvm::pdb::Empty
@ Empty
Definition: PDBTypes.h:395
llvm::pdb::Undname_NoPTR64
@ Undname_NoPTR64
Definition: PDBTypes.h:382
llvm::pdb::PDB_LocType::Enregistered
@ Enregistered
llvm::pdb::IPDBLineNumber
Definition: IPDBLineNumber.h:16
llvm::pdb::PDB_UndnameFlags
PDB_UndnameFlags
These values correspond to the flags that can be combined to control the return of an undecorated nam...
Definition: PDBTypes.h:362
llvm::pdb::PDB_SymType::VTable
@ VTable
IPDBFrameData.h
llvm::pdb::PDB_BuiltinType::None
@ None
llvm::pdb::PDBSymbolBlock
Definition: PDBSymbolBlock.h:18
IPDBEnumChildren.h
llvm::pdb::PDB_MemoryType::Stack
@ Stack
llvm::pdb::PDB_ReaderType::Native
@ Native
assert
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
llvm::pdb::PDB_VariantType
PDB_VariantType
Definition: PDBTypes.h:394
llvm::pdb::PDBSymbolAnnotation
Definition: PDBSymbolAnnotation.h:18
llvm::pdb::Variant::UInt32
uint32_t UInt32
Definition: PDBTypes.h:464
llvm::pdb::PDB_SymType::Thunk
@ Thunk
llvm::pdb::PDB_SymType::Dimension
@ Dimension
llvm::pdb::PDBSymDumper
Definition: PDBSymDumper.h:19
llvm::pdb::PDB_TableType::Segments
@ Segments
llvm::pdb::PDB_LocType::Static
@ Static
llvm::pdb::PDB_SymType::Function
@ Function
llvm::pdb::PDBSymbolLabel
Definition: PDBSymbolLabel.h:19
llvm::pdb::PDB_SymType::Data
@ Data
llvm::pdb::PDB_UdtType::Class
@ Class
llvm::pdb::PDB_Machine::WceMipsV2
@ WceMipsV2
llvm::pdb::PDB_UdtType::Union
@ Union
llvm::pdb::PDB_SourceCompression::RunLengthEncoded
@ RunLengthEncoded
Definition: PDBTypes.h:159
llvm::pdb::PDBSymbolFuncDebugStart
Definition: PDBSymbolFuncDebugStart.h:19
llvm::pdb::PDBSymbolThunk
Definition: PDBSymbolThunk.h:19
llvm::pdb::PDB_Machine::Thumb
@ Thumb
llvm::pdb::PDB_SymType::None
@ None
llvm::pdb::Undname_NameOnly
@ Undname_NameOnly
Definition: PDBTypes.h:377
llvm::pdb::PDB_BuiltinType::Void
@ Void
llvm::pdb::NS_Regex
@ NS_Regex
Definition: PDBTypes.h:107
VARIANT_WIDTH
#define VARIANT_WIDTH(Enum, NumBits)
Definition: PDBTypes.h:486
llvm::pdb::Variant::Variant
Variant(uint16_t V)
Definition: PDBTypes.h:434
llvm::pdb::PDB_MemoryType::Data
@ Data
llvm::codeview::SourceLanguage
SourceLanguage
These values correspond to the CV_CFL_LANG enumeration, and are documented here: https://msdn....
Definition: CodeView.h:143
llvm::pdb::PDB_TableType::Symbols
@ Symbols
llvm::pdb::PDB_Machine::Amd64
@ Amd64
llvm::pdb::PDB_Machine
PDB_Machine
Definition: PDBTypes.h:125
llvm::pdb::PDB_LocType::MetaData
@ MetaData
llvm::pdb::PDB_SymType::FuncDebugEnd
@ FuncDebugEnd
llvm::pdb::Variant::UInt16
uint16_t UInt16
Definition: PDBTypes.h:463
llvm::pdb::PDB_TableType::SectionContribs
@ SectionContribs
llvm::pdb::Variant::Variant
Variant(uint8_t V)
Definition: PDBTypes.h:431
llvm::pdb::Variant::Variant
Variant(int8_t V)
Definition: PDBTypes.h:415
llvm::pdb::Unknown
@ Unknown
uint32_t
llvm::pdb::PDB_BuiltinType
PDB_BuiltinType
These values correspond to the Basictype enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:335
VARIANT_APSINT
#define VARIANT_APSINT(Enum, NumBits, IsUnsigned)
Definition: PDBTypes.h:511
llvm::pdb::IPDBSectionContrib
IPDBSectionContrib defines an interface used to represent section contributions whose information are...
Definition: IPDBSectionContrib.h:19
llvm::pdb::Undname_NoLeadingUnderscores
@ Undname_NoLeadingUnderscores
Definition: PDBTypes.h:364
llvm::pdb::IPDBInjectedSource
IPDBInjectedSource defines an interface used to represent source files which were injected directly i...
Definition: IPDBInjectedSource.h:21
llvm::pdb::NS_CaseSensitive
@ NS_CaseSensitive
Definition: PDBTypes.h:104
llvm::pdb::PDB_SymType::Enum
@ Enum
llvm::pdb::PDB_LocType::Constant
@ Constant
llvm::pdb::Bool
@ Bool
Definition: PDBTypes.h:407
llvm::pdb::PDBSymbolUnknown
Definition: PDBSymbolUnknown.h:18
llvm::pdb::PDB_BuiltinType::Complex
@ Complex
llvm::pdb::Single
@ Single
Definition: PDBTypes.h:401
llvm::pdb::PDB_StackFrameType::EBP
@ EBP
llvm::pdb::PDB_SymType::HLSLType
@ HLSLType
llvm::pdb::PDB_DataKind::Local
@ Local
llvm::pdb::PDB_SymType::Annotation
@ Annotation
llvm::pdb::Variant
Definition: PDBTypes.h:411
llvm::Any
Definition: Any.h:28
llvm::pdb::PDB_SymType::Label
@ Label
std
Definition: BitVector.h:851
llvm::pdb::PDB_SymType::CompilandEnv
@ CompilandEnv
llvm::pdb::PDB_SymType::Inlinee
@ Inlinee
llvm::pdb::PDB_BuiltinType::Float
@ Float
uint16_t
llvm::pdb::PDB_ReaderType::DIA
@ DIA
llvm::pdb::PDB_Checksum
PDB_Checksum
Specifies the hash algorithm that a source file from a PDB was hashed with.
Definition: PDBTypes.h:119
llvm::pdb::PDB_LocType::Slot
@ Slot
llvm::pdb::Variant::~Variant
~Variant()
Definition: PDBTypes.h:448
llvm::codeview::CPUType
CPUType
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....
Definition: CodeView.h:75
llvm::pdb::PDBSymbolFuncDebugEnd
Definition: PDBSymbolFuncDebugEnd.h:19
llvm::pdb::PDB_SymType::Compiland
@ Compiland
llvm::pdb::PDB_SymType::ManagedType
@ ManagedType
llvm::pdb::PDBSymbolTypeManaged
Definition: PDBSymbolTypeManaged.h:19
llvm::pdb::PDB_SymType::CallSite
@ CallSite
llvm::pdb::PDBSymbolCompilandDetails
Definition: PDBSymbolCompilandDetails.h:19
llvm::pdb::Int16
@ Int16
Definition: PDBTypes.h:398
llvm::pdb::PDB_LocType::ThisRel
@ ThisRel
llvm::pdb::PDB_Machine::MipsFpu
@ MipsFpu
llvm::pdb::Variant::operator!=
bool operator!=(const Variant &Other) const
Definition: PDBTypes.h:578
llvm::pdb::PDB_BuiltinType::Long
@ Long
llvm::pdb::PDB_MemberAccess
PDB_MemberAccess
Definition: PDBTypes.h:385
llvm::pdb::NS_UndecoratedName
@ NS_UndecoratedName
Definition: PDBTypes.h:108
llvm::pdb::PDB_SymType::BuiltinType
@ BuiltinType
llvm::pdb::PDB_SymType::Typedef
@ Typedef
llvm::pdb::PDB_LocType::RegRelAliasIndir
@ RegRelAliasIndir
llvm::pdb::PDB_SymType::Exe
@ Exe
llvm::pdb::PDBSymbolTypeBuiltin
Definition: PDBSymbolTypeBuiltin.h:19
llvm::pdb::Undname_Complete
@ Undname_Complete
Definition: PDBTypes.h:363
llvm::pdb::Undname_NoMsKeywords
@ Undname_NoMsKeywords
Definition: PDBTypes.h:365
llvm::pdb::NS_CaseInsensitive
@ NS_CaseInsensitive
Definition: PDBTypes.h:105
llvm::pdb::PDBSymbolFunc
Definition: PDBSymbolFunc.h:26
llvm::codeview::CallingConvention
CallingConvention
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
Definition: CodeView.h:175
llvm::pdb::PDB_DataKind::Global
@ Global
llvm::pdb::Undname_Reserved2
@ Undname_Reserved2
Definition: PDBTypes.h:370
llvm::pdb::PDB_DataKind::ObjectPtr
@ ObjectPtr
llvm::pdb::PDBSymbolUsingNamespace
Definition: PDBSymbolUsingNamespace.h:19
llvm::pdb::PDB_SymType::PublicSymbol
@ PublicSymbol
llvm::pdb::Undname_NoThrowSig
@ Undname_NoThrowSig
Definition: PDBTypes.h:373
llvm::pdb::Variant::Int32
int32_t Int32
Definition: PDBTypes.h:458
llvm::pdb::Variant::Variant
Variant(float V)
Definition: PDBTypes.h:425
llvm::pdb::PDB_Machine::Invalid
@ Invalid
llvm::pdb::Undname_32BitDecode
@ Undname_32BitDecode
Definition: PDBTypes.h:376
llvm::pdb::PDB_SymType::Friend
@ Friend
llvm::pdb::IPDBEnumChildren< PDBSymbol >
llvm::pdb::PDB_SymType::VectorType
@ VectorType
llvm::pdb::String
@ String
Definition: PDBTypes.h:408
llvm::pdb::NS_CaseRegex
@ NS_CaseRegex
Definition: PDBTypes.h:112
llvm::pdb::PDBSymbolCompiland
Definition: PDBSymbolCompiland.h:21
llvm::pdb::Undname_NoReturnUDTModel
@ Undname_NoReturnUDTModel
Definition: PDBTypes.h:375
llvm::pdb::UInt64
@ UInt64
Definition: PDBTypes.h:406
llvm::pdb::UInt8
@ UInt8
Definition: PDBTypes.h:403
llvm::pdb::PDBSymbolTypeUDT
Definition: PDBSymbolTypeUDT.h:23
Int32
@ Int32
Definition: TargetLibraryInfo.cpp:47
llvm::pdb::PDB_SymType::Block
@ Block
llvm::pdb::Variant::Single
float Single
Definition: PDBTypes.h:460
llvm::pdb::PDB_TableType::TableInvalid
@ TableInvalid
llvm::pdb::Variant::operator==
bool operator==(const Variant &Other) const
Definition: PDBTypes.h:555
llvm::pdb::PDB_BuiltinType::BSTR
@ BSTR
llvm::pdb::PDB_LocType::IlRel
@ IlRel
llvm::Value
LLVM Value Representation.
Definition: Value.h:74
llvm::pdb::PDB_SymType::Export
@ Export
llvm::pdb::PDB_Machine::x86
@ x86
llvm::pdb::PDB_SymType::Max
@ Max
Other
Optional< std::vector< StOtherPiece > > Other
Definition: ELFYAML.cpp:1247
llvm::pdb::PDBSymbolCustom
PDBSymbolCustom represents symbols that are compiler-specific and do not fit anywhere else in the lex...
Definition: PDBSymbolCustom.h:22
llvm::pdb::PDB_TableType::FrameData
@ FrameData
llvm::pdb::PDB_StackFrameType::KernelTrap
@ KernelTrap