LLVM  3.7.0
DIARawSymbol.cpp
Go to the documentation of this file.
1 //===- DIARawSymbol.cpp - DIA implementation of IPDBRawSymbol ---*- 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/ADT/STLExtras.h"
17 
18 using namespace llvm;
19 
20 namespace {
21 Variant VariantFromVARIANT(const VARIANT &V) {
22  Variant Result;
23  switch (V.vt) {
24  case VT_I1:
25  Result.Int8 = V.cVal;
26  Result.Type = PDB_VariantType::Int8;
27  break;
28  case VT_I2:
29  Result.Int16 = V.iVal;
31  break;
32  case VT_I4:
33  Result.Int32 = V.intVal;
35  break;
36  case VT_I8:
37  Result.Int64 = V.llVal;
39  break;
40  case VT_UI1:
41  Result.UInt8 = V.bVal;
43  break;
44  case VT_UI2:
45  Result.UInt16 = V.uiVal;
47  break;
48  case VT_UI4:
49  Result.UInt32 = V.uintVal;
51  break;
52  case VT_UI8:
53  Result.UInt64 = V.ullVal;
55  break;
56  case VT_BOOL:
57  Result.Bool = (V.boolVal == VARIANT_TRUE) ? true : false;
58  Result.Type = PDB_VariantType::Bool;
59  break;
60  case VT_R4:
61  Result.Single = V.fltVal;
63  break;
64  case VT_R8:
65  Result.Double = V.dblVal;
67  break;
68  default:
70  break;
71  }
72  return Result;
73 }
74 
75 template <typename ArgType>
76 ArgType PrivateGetDIAValue(IDiaSymbol *Symbol,
77  HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
78  ArgType Value;
79  if (S_OK == (Symbol->*Method)(&Value))
80  return static_cast<ArgType>(Value);
81 
82  return ArgType();
83 }
84 
85 template <typename ArgType, typename RetType>
86 RetType PrivateGetDIAValue(IDiaSymbol *Symbol,
87  HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
88  ArgType Value;
89  if (S_OK == (Symbol->*Method)(&Value))
90  return static_cast<RetType>(Value);
91 
92  return RetType();
93 }
94 
95 std::string
96 PrivateGetDIAValue(IDiaSymbol *Symbol,
97  HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
98  CComBSTR Result16;
99  if (S_OK != (Symbol->*Method)(&Result16))
100  return std::string();
101 
102  const char *SrcBytes = reinterpret_cast<const char *>(Result16.m_str);
103  llvm::ArrayRef<char> SrcByteArray(SrcBytes, Result16.ByteLength());
104  std::string Result8;
105  if (!llvm::convertUTF16ToUTF8String(SrcByteArray, Result8))
106  return std::string();
107  return Result8;
108 }
109 
111 PrivateGetDIAValue(IDiaSymbol *Symbol,
112  HRESULT (__stdcall IDiaSymbol::*Method)(GUID *)) {
113  GUID Result;
114  if (S_OK != (Symbol->*Method)(&Result))
115  return PDB_UniqueId();
116 
117  static_assert(sizeof(PDB_UniqueId) == sizeof(GUID),
118  "PDB_UniqueId is the wrong size!");
119  PDB_UniqueId IdResult;
120  ::memcpy(&IdResult, &Result, sizeof(GUID));
121  return IdResult;
122 }
123 
124 template <typename ArgType>
125 void DumpDIAValue(llvm::raw_ostream &OS, int Indent, StringRef Name,
126  IDiaSymbol *Symbol,
127  HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
128  ArgType Value;
129  if (S_OK == (Symbol->*Method)(&Value)) {
130  OS << "\n";
131  OS.indent(Indent);
132  OS << Name << ": " << Value;
133  }
134 }
135 
136 void DumpDIAValue(llvm::raw_ostream &OS, int Indent, StringRef Name,
137  IDiaSymbol *Symbol,
138  HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
139  BSTR Value = nullptr;
140  if (S_OK != (Symbol->*Method)(&Value))
141  return;
142  const char *Bytes = reinterpret_cast<const char *>(Value);
143  ArrayRef<char> ByteArray(Bytes, ::SysStringByteLen(Value));
144  std::string Result;
145  if (llvm::convertUTF16ToUTF8String(ByteArray, Result)) {
146  OS << "\n";
147  OS.indent(Indent);
148  OS << Name << ": " << Result;
149  }
150  ::SysFreeString(Value);
151 }
152 
153 void DumpDIAValue(llvm::raw_ostream &OS, int Indent, StringRef Name,
154  IDiaSymbol *Symbol,
155  HRESULT (__stdcall IDiaSymbol::*Method)(VARIANT *)) {
156  VARIANT Value;
157  Value.vt = VT_EMPTY;
158  if (S_OK != (Symbol->*Method)(&Value))
159  return;
160  OS << "\n";
161  OS.indent(Indent);
162  Variant V = VariantFromVARIANT(Value);
163  OS << V;
164 }
165 }
166 
167 namespace llvm {
168 raw_ostream &operator<<(raw_ostream &OS, const GUID &Guid) {
169  const PDB_UniqueId *Id = reinterpret_cast<const PDB_UniqueId *>(&Guid);
170  OS << *Id;
171  return OS;
172 }
173 }
174 
176  CComPtr<IDiaSymbol> DiaSymbol)
177  : Session(PDBSession), Symbol(DiaSymbol) {}
178 
179 #define RAW_METHOD_DUMP(Stream, Method) \
180  DumpDIAValue(Stream, Indent, StringRef(#Method), Symbol, &IDiaSymbol::Method);
181 
182 void DIARawSymbol::dump(raw_ostream &OS, int Indent) const {
183  RAW_METHOD_DUMP(OS, get_access)
184  RAW_METHOD_DUMP(OS, get_addressOffset)
185  RAW_METHOD_DUMP(OS, get_addressSection)
186  RAW_METHOD_DUMP(OS, get_age)
187  RAW_METHOD_DUMP(OS, get_arrayIndexTypeId)
188  RAW_METHOD_DUMP(OS, get_backEndMajor)
189  RAW_METHOD_DUMP(OS, get_backEndMinor)
190  RAW_METHOD_DUMP(OS, get_backEndBuild)
191  RAW_METHOD_DUMP(OS, get_backEndQFE)
192  RAW_METHOD_DUMP(OS, get_baseDataOffset)
193  RAW_METHOD_DUMP(OS, get_baseDataSlot)
194  RAW_METHOD_DUMP(OS, get_baseSymbolId)
195  RAW_METHOD_DUMP(OS, get_baseType)
196  RAW_METHOD_DUMP(OS, get_bitPosition)
197  RAW_METHOD_DUMP(OS, get_callingConvention)
198  RAW_METHOD_DUMP(OS, get_classParentId)
199  RAW_METHOD_DUMP(OS, get_compilerName)
200  RAW_METHOD_DUMP(OS, get_count)
201  RAW_METHOD_DUMP(OS, get_countLiveRanges)
202  RAW_METHOD_DUMP(OS, get_frontEndMajor)
203  RAW_METHOD_DUMP(OS, get_frontEndMinor)
204  RAW_METHOD_DUMP(OS, get_frontEndBuild)
205  RAW_METHOD_DUMP(OS, get_frontEndQFE)
206  RAW_METHOD_DUMP(OS, get_lexicalParentId)
207  RAW_METHOD_DUMP(OS, get_libraryName)
208  RAW_METHOD_DUMP(OS, get_liveRangeStartAddressOffset)
209  RAW_METHOD_DUMP(OS, get_liveRangeStartAddressSection)
210  RAW_METHOD_DUMP(OS, get_liveRangeStartRelativeVirtualAddress)
211  RAW_METHOD_DUMP(OS, get_localBasePointerRegisterId)
212  RAW_METHOD_DUMP(OS, get_lowerBoundId)
213  RAW_METHOD_DUMP(OS, get_memorySpaceKind)
214  RAW_METHOD_DUMP(OS, get_name)
215  RAW_METHOD_DUMP(OS, get_numberOfAcceleratorPointerTags)
216  RAW_METHOD_DUMP(OS, get_numberOfColumns)
217  RAW_METHOD_DUMP(OS, get_numberOfModifiers)
218  RAW_METHOD_DUMP(OS, get_numberOfRegisterIndices)
219  RAW_METHOD_DUMP(OS, get_numberOfRows)
220  RAW_METHOD_DUMP(OS, get_objectFileName)
221  RAW_METHOD_DUMP(OS, get_oemId)
222  RAW_METHOD_DUMP(OS, get_oemSymbolId)
223  RAW_METHOD_DUMP(OS, get_offsetInUdt)
224  RAW_METHOD_DUMP(OS, get_platform)
225  RAW_METHOD_DUMP(OS, get_rank)
226  RAW_METHOD_DUMP(OS, get_registerId)
227  RAW_METHOD_DUMP(OS, get_registerType)
228  RAW_METHOD_DUMP(OS, get_relativeVirtualAddress)
229  RAW_METHOD_DUMP(OS, get_samplerSlot)
230  RAW_METHOD_DUMP(OS, get_signature)
231  RAW_METHOD_DUMP(OS, get_sizeInUdt)
232  RAW_METHOD_DUMP(OS, get_slot)
233  RAW_METHOD_DUMP(OS, get_sourceFileName)
234  RAW_METHOD_DUMP(OS, get_stride)
235  RAW_METHOD_DUMP(OS, get_subTypeId)
236  RAW_METHOD_DUMP(OS, get_symbolsFileName)
237  RAW_METHOD_DUMP(OS, get_symIndexId)
238  RAW_METHOD_DUMP(OS, get_targetOffset)
239  RAW_METHOD_DUMP(OS, get_targetRelativeVirtualAddress)
240  RAW_METHOD_DUMP(OS, get_targetVirtualAddress)
241  RAW_METHOD_DUMP(OS, get_targetSection)
242  RAW_METHOD_DUMP(OS, get_textureSlot)
243  RAW_METHOD_DUMP(OS, get_timeStamp)
244  RAW_METHOD_DUMP(OS, get_token)
245  RAW_METHOD_DUMP(OS, get_typeId)
246  RAW_METHOD_DUMP(OS, get_uavSlot)
247  RAW_METHOD_DUMP(OS, get_undecoratedName)
248  RAW_METHOD_DUMP(OS, get_unmodifiedTypeId)
249  RAW_METHOD_DUMP(OS, get_upperBoundId)
250  RAW_METHOD_DUMP(OS, get_virtualBaseDispIndex)
251  RAW_METHOD_DUMP(OS, get_virtualBaseOffset)
252  RAW_METHOD_DUMP(OS, get_virtualTableShapeId)
253  RAW_METHOD_DUMP(OS, get_dataKind)
254  RAW_METHOD_DUMP(OS, get_symTag)
255  RAW_METHOD_DUMP(OS, get_guid)
256  RAW_METHOD_DUMP(OS, get_offset)
257  RAW_METHOD_DUMP(OS, get_thisAdjust)
258  RAW_METHOD_DUMP(OS, get_virtualBasePointerOffset)
259  RAW_METHOD_DUMP(OS, get_locationType)
260  RAW_METHOD_DUMP(OS, get_machineType)
261  RAW_METHOD_DUMP(OS, get_thunkOrdinal)
262  RAW_METHOD_DUMP(OS, get_length)
263  RAW_METHOD_DUMP(OS, get_liveRangeLength)
264  RAW_METHOD_DUMP(OS, get_virtualAddress)
265  RAW_METHOD_DUMP(OS, get_udtKind)
266  RAW_METHOD_DUMP(OS, get_constructor)
267  RAW_METHOD_DUMP(OS, get_customCallingConvention)
268  RAW_METHOD_DUMP(OS, get_farReturn)
269  RAW_METHOD_DUMP(OS, get_code)
270  RAW_METHOD_DUMP(OS, get_compilerGenerated)
271  RAW_METHOD_DUMP(OS, get_constType)
272  RAW_METHOD_DUMP(OS, get_editAndContinueEnabled)
273  RAW_METHOD_DUMP(OS, get_function)
274  RAW_METHOD_DUMP(OS, get_stride)
275  RAW_METHOD_DUMP(OS, get_noStackOrdering)
276  RAW_METHOD_DUMP(OS, get_hasAlloca)
277  RAW_METHOD_DUMP(OS, get_hasAssignmentOperator)
278  RAW_METHOD_DUMP(OS, get_isCTypes)
279  RAW_METHOD_DUMP(OS, get_hasCastOperator)
280  RAW_METHOD_DUMP(OS, get_hasDebugInfo)
281  RAW_METHOD_DUMP(OS, get_hasEH)
282  RAW_METHOD_DUMP(OS, get_hasEHa)
283  RAW_METHOD_DUMP(OS, get_hasInlAsm)
284  RAW_METHOD_DUMP(OS, get_framePointerPresent)
285  RAW_METHOD_DUMP(OS, get_inlSpec)
286  RAW_METHOD_DUMP(OS, get_interruptReturn)
287  RAW_METHOD_DUMP(OS, get_hasLongJump)
288  RAW_METHOD_DUMP(OS, get_hasManagedCode)
289  RAW_METHOD_DUMP(OS, get_hasNestedTypes)
290  RAW_METHOD_DUMP(OS, get_noInline)
291  RAW_METHOD_DUMP(OS, get_noReturn)
292  RAW_METHOD_DUMP(OS, get_optimizedCodeDebugInfo)
293  RAW_METHOD_DUMP(OS, get_overloadedOperator)
294  RAW_METHOD_DUMP(OS, get_hasSEH)
295  RAW_METHOD_DUMP(OS, get_hasSecurityChecks)
296  RAW_METHOD_DUMP(OS, get_hasSetJump)
297  RAW_METHOD_DUMP(OS, get_strictGSCheck)
298  RAW_METHOD_DUMP(OS, get_isAcceleratorGroupSharedLocal)
299  RAW_METHOD_DUMP(OS, get_isAcceleratorPointerTagLiveRange)
300  RAW_METHOD_DUMP(OS, get_isAcceleratorStubFunction)
301  RAW_METHOD_DUMP(OS, get_isAggregated)
302  RAW_METHOD_DUMP(OS, get_intro)
303  RAW_METHOD_DUMP(OS, get_isCVTCIL)
304  RAW_METHOD_DUMP(OS, get_isConstructorVirtualBase)
305  RAW_METHOD_DUMP(OS, get_isCxxReturnUdt)
306  RAW_METHOD_DUMP(OS, get_isDataAligned)
307  RAW_METHOD_DUMP(OS, get_isHLSLData)
308  RAW_METHOD_DUMP(OS, get_isHotpatchable)
309  RAW_METHOD_DUMP(OS, get_indirectVirtualBaseClass)
310  RAW_METHOD_DUMP(OS, get_isInterfaceUdt)
311  RAW_METHOD_DUMP(OS, get_intrinsic)
312  RAW_METHOD_DUMP(OS, get_isLTCG)
313  RAW_METHOD_DUMP(OS, get_isLocationControlFlowDependent)
314  RAW_METHOD_DUMP(OS, get_isMSILNetmodule)
315  RAW_METHOD_DUMP(OS, get_isMatrixRowMajor)
316  RAW_METHOD_DUMP(OS, get_managed)
317  RAW_METHOD_DUMP(OS, get_msil)
318  RAW_METHOD_DUMP(OS, get_isMultipleInheritance)
319  RAW_METHOD_DUMP(OS, get_isNaked)
320  RAW_METHOD_DUMP(OS, get_nested)
321  RAW_METHOD_DUMP(OS, get_isOptimizedAway)
322  RAW_METHOD_DUMP(OS, get_packed)
323  RAW_METHOD_DUMP(OS, get_isPointerBasedOnSymbolValue)
324  RAW_METHOD_DUMP(OS, get_isPointerToDataMember)
325  RAW_METHOD_DUMP(OS, get_isPointerToMemberFunction)
326  RAW_METHOD_DUMP(OS, get_pure)
327  RAW_METHOD_DUMP(OS, get_RValueReference)
328  RAW_METHOD_DUMP(OS, get_isRefUdt)
329  RAW_METHOD_DUMP(OS, get_reference)
330  RAW_METHOD_DUMP(OS, get_restrictedType)
331  RAW_METHOD_DUMP(OS, get_isReturnValue)
332  RAW_METHOD_DUMP(OS, get_isSafeBuffers)
333  RAW_METHOD_DUMP(OS, get_scoped)
334  RAW_METHOD_DUMP(OS, get_isSdl)
335  RAW_METHOD_DUMP(OS, get_isSingleInheritance)
336  RAW_METHOD_DUMP(OS, get_isSplitted)
337  RAW_METHOD_DUMP(OS, get_isStatic)
338  RAW_METHOD_DUMP(OS, get_isStripped)
339  RAW_METHOD_DUMP(OS, get_unalignedType)
340  RAW_METHOD_DUMP(OS, get_notReached)
341  RAW_METHOD_DUMP(OS, get_isValueUdt)
342  RAW_METHOD_DUMP(OS, get_virtual)
343  RAW_METHOD_DUMP(OS, get_virtualBaseClass)
344  RAW_METHOD_DUMP(OS, get_isVirtualInheritance)
345  RAW_METHOD_DUMP(OS, get_volatileType)
346  RAW_METHOD_DUMP(OS, get_wasInlined)
347  RAW_METHOD_DUMP(OS, get_unused)
348  RAW_METHOD_DUMP(OS, get_value)
349 }
350 
351 std::unique_ptr<IPDBEnumSymbols>
353  enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
354 
355  CComPtr<IDiaEnumSymbols> DiaEnumerator;
356  if (S_OK != Symbol->findChildrenEx(EnumVal, nullptr, nsNone, &DiaEnumerator))
357  return nullptr;
358 
359  return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
360 }
361 
362 std::unique_ptr<IPDBEnumSymbols>
364  PDB_NameSearchFlags Flags) const {
366  llvm::convertUTF8ToUTF16String(Name, Name16);
367 
368  enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
369  DWORD CompareFlags = static_cast<DWORD>(Flags);
370  wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());
371 
372  CComPtr<IDiaEnumSymbols> DiaEnumerator;
373  if (S_OK !=
374  Symbol->findChildrenEx(EnumVal, Name16Str, CompareFlags, &DiaEnumerator))
375  return nullptr;
376 
377  return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
378 }
379 
380 std::unique_ptr<IPDBEnumSymbols>
382  PDB_NameSearchFlags Flags, uint32_t RVA) const {
384  llvm::convertUTF8ToUTF16String(Name, Name16);
385 
386  enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
387  DWORD CompareFlags = static_cast<DWORD>(Flags);
388  wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());
389 
390  CComPtr<IDiaEnumSymbols> DiaEnumerator;
391  if (S_OK !=
392  Symbol->findChildrenExByRVA(EnumVal, Name16Str, CompareFlags, RVA,
393  &DiaEnumerator))
394  return nullptr;
395 
396  return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
397 }
398 
399 std::unique_ptr<IPDBEnumSymbols>
401  CComPtr<IDiaEnumSymbols> DiaEnumerator;
402  if (S_OK != Symbol->findInlineFramesByRVA(RVA, &DiaEnumerator))
403  return nullptr;
404 
405  return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
406 }
407 
409  bytes.clear();
410 
411  DWORD DataSize = 0;
412  Symbol->get_dataBytes(0, &DataSize, nullptr);
413  if (DataSize == 0)
414  return;
415 
416  bytes.resize(DataSize);
417  Symbol->get_dataBytes(DataSize, &DataSize, bytes.data());
418 }
419 
421  return PrivateGetDIAValue<DWORD, PDB_MemberAccess>(Symbol,
422  &IDiaSymbol::get_access);
423 }
424 
426  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressOffset);
427 }
428 
430  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressSection);
431 }
432 
433 uint32_t DIARawSymbol::getAge() const {
434  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_age);
435 }
436 
438  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_arrayIndexTypeId);
439 }
440 
442  Version.Major = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndMajor);
443  Version.Minor = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndMinor);
444  Version.Build = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndBuild);
445  Version.QFE = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndQFE);
446 }
447 
449  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseDataOffset);
450 }
451 
453  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseDataSlot);
454 }
455 
457  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseSymbolId);
458 }
459 
461  return PrivateGetDIAValue<DWORD, PDB_BuiltinType>(Symbol,
462  &IDiaSymbol::get_baseType);
463 }
464 
466  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_bitPosition);
467 }
468 
470  return PrivateGetDIAValue<DWORD, PDB_CallingConv>(
471  Symbol, &IDiaSymbol::get_callingConvention);
472 }
473 
475  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_classParentId);
476 }
477 
478 std::string DIARawSymbol::getCompilerName() const {
479  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_compilerName);
480 }
481 
482 uint32_t DIARawSymbol::getCount() const {
483  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_count);
484 }
485 
487  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_countLiveRanges);
488 }
489 
491  Version.Major = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndMajor);
492  Version.Minor = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndMinor);
493  Version.Build = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndBuild);
494  Version.QFE = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndQFE);
495 }
496 
498  return PrivateGetDIAValue<DWORD, PDB_Lang>(Symbol, &IDiaSymbol::get_language);
499 }
500 
502  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_lexicalParentId);
503 }
504 
505 std::string DIARawSymbol::getLibraryName() const {
506  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_libraryName);
507 }
508 
510  return PrivateGetDIAValue(Symbol,
511  &IDiaSymbol::get_liveRangeStartAddressOffset);
512 }
513 
515  return PrivateGetDIAValue(Symbol,
516  &IDiaSymbol::get_liveRangeStartAddressSection);
517 }
518 
520  return PrivateGetDIAValue(
521  Symbol, &IDiaSymbol::get_liveRangeStartRelativeVirtualAddress);
522 }
523 
525  return PrivateGetDIAValue<DWORD, PDB_RegisterId>(
526  Symbol, &IDiaSymbol::get_localBasePointerRegisterId);
527 }
528 
530  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_lowerBoundId);
531 }
532 
534  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_memorySpaceKind);
535 }
536 
537 std::string DIARawSymbol::getName() const {
538  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_name);
539 }
540 
542  return PrivateGetDIAValue(Symbol,
543  &IDiaSymbol::get_numberOfAcceleratorPointerTags);
544 }
545 
547  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfColumns);
548 }
549 
551  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfModifiers);
552 }
553 
555  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfRegisterIndices);
556 }
557 
559  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfRows);
560 }
561 
562 std::string DIARawSymbol::getObjectFileName() const {
563  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_objectFileName);
564 }
565 
566 uint32_t DIARawSymbol::getOemId() const {
567  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_oemId);
568 }
569 
571  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_oemSymbolId);
572 }
573 
575  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_offsetInUdt);
576 }
577 
579  return PrivateGetDIAValue<DWORD, PDB_Cpu>(Symbol, &IDiaSymbol::get_platform);
580 }
581 
582 uint32_t DIARawSymbol::getRank() const {
583  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_rank);
584 }
585 
587  return PrivateGetDIAValue<DWORD, PDB_RegisterId>(Symbol,
588  &IDiaSymbol::get_registerId);
589 }
590 
592  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_registerType);
593 }
594 
596  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_relativeVirtualAddress);
597 }
598 
600  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_samplerSlot);
601 }
602 
603 uint32_t DIARawSymbol::getSignature() const {
604  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_signature);
605 }
606 
607 uint32_t DIARawSymbol::getSizeInUdt() const {
608  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_sizeInUdt);
609 }
610 
611 uint32_t DIARawSymbol::getSlot() const {
612  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_slot);
613 }
614 
615 std::string DIARawSymbol::getSourceFileName() const {
616  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_sourceFileName);
617 }
618 
619 uint32_t DIARawSymbol::getStride() const {
620  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_stride);
621 }
622 
623 uint32_t DIARawSymbol::getSubTypeId() const {
624  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_subTypeId);
625 }
626 
627 std::string DIARawSymbol::getSymbolsFileName() const {
628  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_symbolsFileName);
629 }
630 
631 uint32_t DIARawSymbol::getSymIndexId() const {
632  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_symIndexId);
633 }
634 
636  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetOffset);
637 }
638 
640  return PrivateGetDIAValue(Symbol,
641  &IDiaSymbol::get_targetRelativeVirtualAddress);
642 }
643 
645  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetVirtualAddress);
646 }
647 
649  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetSection);
650 }
651 
653  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_textureSlot);
654 }
655 
656 uint32_t DIARawSymbol::getTimeStamp() const {
657  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_timeStamp);
658 }
659 
660 uint32_t DIARawSymbol::getToken() const {
661  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_token);
662 }
663 
664 uint32_t DIARawSymbol::getTypeId() const {
665  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_typeId);
666 }
667 
668 uint32_t DIARawSymbol::getUavSlot() const {
669  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_uavSlot);
670 }
671 
672 std::string DIARawSymbol::getUndecoratedName() const {
673  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_undecoratedName);
674 }
675 
677  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unmodifiedTypeId);
678 }
679 
681  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_upperBoundId);
682 }
683 
685  VARIANT Value;
686  Value.vt = VT_EMPTY;
687  if (S_OK != Symbol->get_value(&Value))
688  return Variant();
689 
690  return VariantFromVARIANT(Value);
691 }
692 
694  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseDispIndex);
695 }
696 
698  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseOffset);
699 }
700 
702  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualTableShapeId);
703 }
704 
706  return PrivateGetDIAValue<DWORD, PDB_DataKind>(Symbol,
707  &IDiaSymbol::get_dataKind);
708 }
709 
711  return PrivateGetDIAValue<DWORD, PDB_SymType>(Symbol,
712  &IDiaSymbol::get_symTag);
713 }
714 
716  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_guid);
717 }
718 
719 int32_t DIARawSymbol::getOffset() const {
720  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_offset);
721 }
722 
724  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_thisAdjust);
725 }
726 
728  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBasePointerOffset);
729 }
730 
732  return PrivateGetDIAValue<DWORD, PDB_LocType>(Symbol,
733  &IDiaSymbol::get_locationType);
734 }
735 
737  return PrivateGetDIAValue<DWORD, PDB_Machine>(Symbol,
738  &IDiaSymbol::get_machineType);
739 }
740 
742  return PrivateGetDIAValue<DWORD, PDB_ThunkOrdinal>(
743  Symbol, &IDiaSymbol::get_thunkOrdinal);
744 }
745 
746 uint64_t DIARawSymbol::getLength() const {
747  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_length);
748 }
749 
751  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_liveRangeLength);
752 }
753 
755  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualAddress);
756 }
757 
759  return PrivateGetDIAValue<DWORD, PDB_UdtType>(Symbol,
760  &IDiaSymbol::get_udtKind);
761 }
762 
764  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_constructor);
765 }
766 
768  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_customCallingConvention);
769 }
770 
772  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_farReturn);
773 }
774 
775 bool DIARawSymbol::isCode() const {
776  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_code);
777 }
778 
780  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_compilerGenerated);
781 }
782 
784  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_constType);
785 }
786 
788  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_editAndContinueEnabled);
789 }
790 
792  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_function);
793 }
794 
796  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressTaken);
797 }
798 
800  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noStackOrdering);
801 }
802 
804  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasAlloca);
805 }
806 
808  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasAssignmentOperator);
809 }
810 
812  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCTypes);
813 }
814 
816  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasCastOperator);
817 }
818 
820  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasDebugInfo);
821 }
822 
823 bool DIARawSymbol::hasEH() const {
824  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasEH);
825 }
826 
827 bool DIARawSymbol::hasEHa() const {
828  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasEHa);
829 }
830 
832  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasInlAsm);
833 }
834 
836  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_inlSpec);
837 }
838 
840  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_interruptReturn);
841 }
842 
844  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_framePointerPresent);
845 }
846 
848  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasLongJump);
849 }
850 
852  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasManagedCode);
853 }
854 
856  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasNestedTypes);
857 }
858 
860  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noInline);
861 }
862 
864  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noReturn);
865 }
866 
868  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_optimizedCodeDebugInfo);
869 }
870 
872  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_overloadedOperator);
873 }
874 
875 bool DIARawSymbol::hasSEH() const {
876  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSEH);
877 }
878 
880  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSecurityChecks);
881 }
882 
884  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSetJump);
885 }
886 
888  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_strictGSCheck);
889 }
890 
892  return PrivateGetDIAValue(Symbol,
893  &IDiaSymbol::get_isAcceleratorGroupSharedLocal);
894 }
895 
897  return PrivateGetDIAValue(Symbol,
898  &IDiaSymbol::get_isAcceleratorPointerTagLiveRange);
899 }
900 
902  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isAcceleratorStubFunction);
903 }
904 
906  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isAggregated);
907 }
908 
910  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_intro);
911 }
912 
914  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCVTCIL);
915 }
916 
918  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isConstructorVirtualBase);
919 }
920 
922  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCxxReturnUdt);
923 }
924 
926  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isDataAligned);
927 }
928 
930  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isHLSLData);
931 }
932 
934  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isHotpatchable);
935 }
936 
938  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_indirectVirtualBaseClass);
939 }
940 
942  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isInterfaceUdt);
943 }
944 
946  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_intrinsic);
947 }
948 
949 bool DIARawSymbol::isLTCG() const {
950  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isLTCG);
951 }
952 
954  return PrivateGetDIAValue(Symbol,
955  &IDiaSymbol::get_isLocationControlFlowDependent);
956 }
957 
959  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMSILNetmodule);
960 }
961 
963  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMatrixRowMajor);
964 }
965 
967  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_managed);
968 }
969 
971  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_msil);
972 }
973 
975  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMultipleInheritance);
976 }
977 
978 bool DIARawSymbol::isNaked() const {
979  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isNaked);
980 }
981 
983  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_nested);
984 }
985 
987  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isOptimizedAway);
988 }
989 
991  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_packed);
992 }
993 
995  return PrivateGetDIAValue(Symbol,
996  &IDiaSymbol::get_isPointerBasedOnSymbolValue);
997 }
998 
1000  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isPointerToDataMember);
1001 }
1002 
1004  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isPointerToMemberFunction);
1005 }
1006 
1008  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_pure);
1009 }
1010 
1012  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_RValueReference);
1013 }
1014 
1016  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isRefUdt);
1017 }
1018 
1020  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_reference);
1021 }
1022 
1024  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_restrictedType);
1025 }
1026 
1028  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isReturnValue);
1029 }
1030 
1032  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSafeBuffers);
1033 }
1034 
1036  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_scoped);
1037 }
1038 
1039 bool DIARawSymbol::isSdl() const {
1040  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSdl);
1041 }
1042 
1044  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSingleInheritance);
1045 }
1046 
1048  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSplitted);
1049 }
1050 
1052  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isStatic);
1053 }
1054 
1056  // hasPrivateSymbols is the opposite of isStripped, but we expose
1057  // hasPrivateSymbols as a more intuitive interface.
1058  return !PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isStripped);
1059 }
1060 
1062  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unalignedType);
1063 }
1064 
1066  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_notReached);
1067 }
1068 
1070  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isValueUdt);
1071 }
1072 
1074  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtual);
1075 }
1076 
1078  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseClass);
1079 }
1080 
1082  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isVirtualInheritance);
1083 }
1084 
1086  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_volatileType);
1087 }
1088 
1090  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_wasInlined);
1091 }
1092 
1093 std::string DIARawSymbol::getUnused() const {
1094  return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unused);
1095 }
uint32_t getOemId() const override
uint32_t getRank() const override
bool hasNestedTypes() const override
bool isMatrixRowMajor() const override
uint32_t getOemSymbolId() const override
bool hasOverloadedOperator() const override
bool hasCTypes() const override
uint32_t getRelativeVirtualAddress() const override
std::unique_ptr< IPDBEnumSymbols > findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t RVA) const override
bool hasInlAsm() const override
std::string getObjectFileName() const override
bool hasStrictGSCheck() const override
bool isManagedCode() const override
bool isEditAndContinueEnabled() const override
void dump(raw_ostream &OS, int Indent) const override
bool isMSILNetmodule() const override
PDB_UniqueId getGuid() const override
uint64_t getVirtualAddress() const override
bool hasConstructor() const override
uint32_t getVirtualBaseOffset() const override
uint32_t getVirtualBaseDispIndex() const override
bool isSplitted() const override
bool isHLSLData() const override
raw_ostream & indent(unsigned NumSpaces)
indent - Insert 'NumSpaces' spaces.
PDB_ThunkOrdinal getThunkOrdinal() const override
uint32_t getUavSlot() const override
uint32_t getTargetSection() const override
bool hasSEH() const override
uint32_t Build
Definition: PDBTypes.h:438
uint32_t getSymIndexId() const override
std::string getName() const override
bool isUnalignedType() const override
uint32_t getSizeInUdt() const override
uint32_t getNumberOfRegisterIndices() const override
bool isReturnValue() const override
int32_t Int32
Definition: PDBTypes.h:468
void getBackEndVersion(VersionInfo &Version) const override
uint32_t getOffsetInUdt() const override
bool isNested() const override
bool isInterfaceUdt() const override
uint32_t getLowerBoundId() const override
bool isValueUdt() const override
PDB_Machine
Definition: PDBTypes.h:172
std::string getCompilerName() const override
PDB_Lang getLanguage() const override
uint32_t getClassParentId() const override
int32_t getOffset() const override
Defines a 128-bit unique identifier.
Definition: PDBTypes.h:75
bool isSdl() const override
uint32_t getTextureSlot() const override
uint32_t getUpperBoundId() const override
PDB_UdtType getUdtKind() const override
PDB_BuiltinType
These values correspond to the Basictype enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/4szdtzc3.aspx.
Definition: PDBTypes.h:348
uint32_t getSlot() const override
PDB_RegisterId getRegisterId() const override
uint64_t getLength() const override
bool isRValueReference() const override
bool hasCustomCallingConvention() const override
PDB_DataKind
These values correspond to the DataKind enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/b2x2t313.aspx.
Definition: PDBTypes.h:255
bool getNoStackOrdering() const override
uint64_t getLiveRangeLength() const override
bool hasNoReturnAttribute() const override
PDB_DataKind getDataKind() const override
uint32_t getSubTypeId() const override
uint32_t getLiveRangeStartAddressSection() const override
std::string getSourceFileName() const override
uint8_t UInt8
Definition: PDBTypes.h:472
bool isIntrinsic() const override
PDB_MemberAccess getAccess() const override
PDB_UdtType
These values correspond to the UdtKind enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/wcstk66t.aspx.
Definition: PDBTypes.h:336
bool isLTCG() const override
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Definition: ArrayRef.h:31
uint32_t getAddressSection() const override
bool isMultipleInheritance() const override
bool convertUTF8ToUTF16String(StringRef SrcUTF8, SmallVectorImpl< UTF16 > &DstUTF16)
bool isCompilerGenerated() const override
bool isPacked() const override
PDB_Machine getMachineType() const override
bool isPointerToDataMember() const override
uint32_t getUnmodifiedTypeId() const override
uint16_t UInt16
Definition: PDBTypes.h:473
bool isConstType() const override
PDB_LocType
These values correspond to the LocationType enumeration, and are documented here: https://msdn...
Definition: PDBTypes.h:307
uint32_t getNumberOfModifiers() const override
int32_t getVirtualBasePointerOffset() const override
bool getAddressTaken() const override
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
Definition: PDBTypes.h:94
bool isVolatileType() const override
bool isCxxReturnUdt() const override
uint32_t getLiveRangeStartRelativeVirtualAddress() const override
uint32_t Major
Definition: PDBTypes.h:436
The instances of the Type class are immutable: once they are created, they are never changed...
Definition: Type.h:45
uint32_t getBaseDataOffset() const override
bool hasLongJump() const override
bool hasInlineAttribute() const override
uint32_t getSignature() const override
PDB_RegisterId
Definition: PDBTypes.h:369
bool isIndirectVirtualBaseClass() const override
double Double
Definition: PDBTypes.h:471
PDB_CallingConv
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
Definition: PDBTypes.h:202
bool isHotpatchable() const override
PDB_SymType getSymTag() const override
uint32_t getNumberOfRows() const override
PDB_VariantType Type
Definition: PDBTypes.h:463
bool isAcceleratorStubFunction() const override
int8_t Int8
Definition: PDBTypes.h:466
uint32_t getTypeId() const override
uint64_t UInt64
Definition: PDBTypes.h:475
bool hasNoInlineAttribute() const override
bool hasAssignmentOperator() const override
bool isOptimizedAway() const override
bool hasEHa() const override
bool isVirtualBaseClass() const override
bool isReference() const override
bool hasFramePointer() const override
bool hasFarReturn() const override
PDB_BuiltinType getBuiltinType() const override
PDB_Cpu
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn...
Definition: PDBTypes.h:110
bool isCVTCIL() const override
bool isLocationControlFlowDependent() const override
std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type) const override
int64_t Int64
Definition: PDBTypes.h:469
uint32_t getLiveRangeStartAddressOffset() const override
bool hasAlloca() const override
void getFrontEndVersion(VersionInfo &Version) const override
PDB_Cpu getPlatform() const override
uint32_t getLexicalParentId() const override
bool isPointerToMemberFunction() const override
uint32_t getAddressOffset() const override
bool isVirtual() const override
uint32_t getMemorySpaceKind() const override
uint32_t getNumberOfAcceleratorPointerTags() const override
uint32_t getTimeStamp() const override
uint32_t getTargetOffset() const override
void getDataBytes(llvm::SmallVector< uint8_t, 32 > &bytes) const override
uint32_t getBitPosition() const override
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
Definition: SmallVector.h:861
uint32_t getNumberOfColumns() const override
bool isFunction() const override
bool isRefUdt() const override
uint32_t getToken() const override
bool isAggregated() const override
float Single
Definition: PDBTypes.h:470
PDB_LocType getLocationType() const override
bool hasPrivateSymbols() const override
uint64_t getTargetVirtualAddress() const override
PDB_CallingConv getCallingConvention() const override
uint32_t UInt32
Definition: PDBTypes.h:474
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bkedss5f.aspx.
Definition: PDBTypes.h:270
PDB_ThunkOrdinal
These values correspond to the THUNK_ORDINAL enumeration, and are documented here: https://msdn...
Definition: PDBTypes.h:324
bool convertUTF16ToUTF8String(ArrayRef< char > SrcBytes, std::string &Out)
uint32_t getAge() const override
uint32_t getArrayIndexTypeId() const override
bool isSingleInheritance() const override
uint32_t getStride() const override
bool hasInterruptReturn() const override
pointer data()
Return a pointer to the vector's buffer, even if empty().
Definition: SmallVector.h:134
std::string getSymbolsFileName() const override
bool isScoped() const override
uint32_t getTargetRelativeVirtualAddress() const override
bool hasOptimizedCodeDebugInfo() const override
std::string getLibraryName() const override
uint32_t getRegisterType() const override
#define RAW_METHOD_DUMP(Stream, Method)
bool hasEH() const override
bool hasSecurityChecks() const override
DIARawSymbol(const DIASession &PDBSession, CComPtr< IDiaSymbol > DiaSymbol)
bool hasCastOperator() const override
std::string getUndecoratedName() const override
PDB_Lang
These values correspond to the CV_CFL_LANG enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bw3aekw6.aspx.
Definition: PDBTypes.h:233
bool isStatic() const override
bool isNaked() const override
bool isSafeBuffers() const override
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
Definition: APInt.h:1738
bool isCode() const override
uint32_t getVirtualTableShapeId() const override
bool isUnreached() const override
bool isPureVirtual() const override
uint32_t getCountLiveRanges() const override
uint32_t getCount() const override
bool hasSetJump() const override
std::string getUnused() const override
uint32_t Minor
Definition: PDBTypes.h:437
bool wasInlined() const override
uint32_t getBaseSymbolId() const override
Variant getValue() const override
bool isDataAligned() const override
bool isVirtualInheritance() const override
uint32_t QFE
Definition: PDBTypes.h:439
LLVM Value Representation.
Definition: Value.h:69
int16_t Int16
Definition: PDBTypes.h:467
PDB_MemberAccess
Definition: PDBTypes.h:421
bool isPointerBasedOnSymbolValue() const override
This class implements an extremely fast bulk output stream that can only output to a stream...
Definition: raw_ostream.h:38
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:40
PDB_RegisterId getLocalBasePointerRegisterId() const override
bool isAcceleratorPointerTagLiveRange() const override
uint32_t getBaseDataSlot() const override
bool hasManagedCode() const override
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByRVA(uint32_t RVA) const override
bool isConstructorVirtualBase() const override
bool isAcceleratorGroupSharedLocal() const override
bool isRestrictedType() const override
int32_t getThisAdjust() const override
bool isMSILCode() const override
bool hasDebugInfo() const override
bool isIntroVirtualFunction() const override
uint32_t getSamplerSlot() const override
void resize(size_type N)
Definition: SmallVector.h:376