21 Variant VariantFromVARIANT(
const VARIANT &V) {
29 Result.
Int16 = V.iVal;
33 Result.
Int32 = V.intVal;
37 Result.
Int64 = V.llVal;
41 Result.
UInt8 = V.bVal;
57 Result.
Bool = (V.boolVal == VARIANT_TRUE) ?
true :
false;
75 template <
typename ArgType>
76 ArgType PrivateGetDIAValue(IDiaSymbol *
Symbol,
77 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
79 if (S_OK == (Symbol->*Method)(&Value))
80 return static_cast<ArgType
>(Value);
85 template <
typename ArgType,
typename RetType>
86 RetType PrivateGetDIAValue(IDiaSymbol *Symbol,
87 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
89 if (S_OK == (Symbol->*Method)(&Value))
90 return static_cast<RetType
>(Value);
96 PrivateGetDIAValue(IDiaSymbol *Symbol,
97 HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
99 if (S_OK != (Symbol->*Method)(&Result16))
100 return std::string();
102 const char *SrcBytes =
reinterpret_cast<const char *
>(Result16.m_str);
106 return std::string();
111 PrivateGetDIAValue(IDiaSymbol *Symbol,
112 HRESULT (__stdcall IDiaSymbol::*Method)(GUID *)) {
114 if (S_OK != (Symbol->*Method)(&Result))
118 "PDB_UniqueId is the wrong size!");
120 ::memcpy(&IdResult, &Result,
sizeof(GUID));
124 template <
typename ArgType>
127 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
129 if (S_OK == (Symbol->*Method)(&Value)) {
132 OS << Name <<
": " << Value;
138 HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
139 BSTR Value =
nullptr;
140 if (S_OK != (Symbol->*Method)(&Value))
142 const char *Bytes =
reinterpret_cast<const char *
>(Value);
148 OS << Name <<
": " << Result;
150 ::SysFreeString(Value);
155 HRESULT (__stdcall IDiaSymbol::*Method)(VARIANT *)) {
158 if (S_OK != (Symbol->*Method)(&Value))
162 Variant V = VariantFromVARIANT(Value);
176 CComPtr<IDiaSymbol> DiaSymbol)
177 : Session(PDBSession), Symbol(DiaSymbol) {}
179 #define RAW_METHOD_DUMP(Stream, Method) \
180 DumpDIAValue(Stream, Indent, StringRef(#Method), Symbol, &IDiaSymbol::Method);
351 std::unique_ptr<IPDBEnumSymbols>
353 enum SymTagEnum EnumVal =
static_cast<enum SymTagEnum
>(
Type);
355 CComPtr<IDiaEnumSymbols> DiaEnumerator;
356 if (S_OK != Symbol->findChildrenEx(EnumVal,
nullptr, nsNone, &DiaEnumerator))
359 return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
362 std::unique_ptr<IPDBEnumSymbols>
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());
372 CComPtr<IDiaEnumSymbols> DiaEnumerator;
374 Symbol->findChildrenEx(EnumVal, Name16Str, CompareFlags, &DiaEnumerator))
377 return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
380 std::unique_ptr<IPDBEnumSymbols>
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());
390 CComPtr<IDiaEnumSymbols> DiaEnumerator;
392 Symbol->findChildrenExByRVA(EnumVal, Name16Str, CompareFlags, RVA,
396 return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
399 std::unique_ptr<IPDBEnumSymbols>
401 CComPtr<IDiaEnumSymbols> DiaEnumerator;
402 if (S_OK != Symbol->findInlineFramesByRVA(RVA, &DiaEnumerator))
405 return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
412 Symbol->get_dataBytes(0, &DataSize,
nullptr);
417 Symbol->get_dataBytes(DataSize, &DataSize, bytes.
data());
421 return PrivateGetDIAValue<DWORD, PDB_MemberAccess>(Symbol,
422 &IDiaSymbol::get_access);
426 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressOffset);
430 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressSection);
434 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_age);
438 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_arrayIndexTypeId);
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);
449 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseDataOffset);
453 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseDataSlot);
457 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseSymbolId);
461 return PrivateGetDIAValue<DWORD, PDB_BuiltinType>(Symbol,
462 &IDiaSymbol::get_baseType);
466 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_bitPosition);
470 return PrivateGetDIAValue<DWORD, PDB_CallingConv>(
471 Symbol, &IDiaSymbol::get_callingConvention);
475 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_classParentId);
479 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_compilerName);
483 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_count);
487 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_countLiveRanges);
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);
498 return PrivateGetDIAValue<DWORD, PDB_Lang>(Symbol, &IDiaSymbol::get_language);
502 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_lexicalParentId);
506 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_libraryName);
510 return PrivateGetDIAValue(Symbol,
511 &IDiaSymbol::get_liveRangeStartAddressOffset);
515 return PrivateGetDIAValue(Symbol,
516 &IDiaSymbol::get_liveRangeStartAddressSection);
520 return PrivateGetDIAValue(
521 Symbol, &IDiaSymbol::get_liveRangeStartRelativeVirtualAddress);
525 return PrivateGetDIAValue<DWORD, PDB_RegisterId>(
526 Symbol, &IDiaSymbol::get_localBasePointerRegisterId);
530 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_lowerBoundId);
534 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_memorySpaceKind);
538 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_name);
542 return PrivateGetDIAValue(Symbol,
543 &IDiaSymbol::get_numberOfAcceleratorPointerTags);
547 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfColumns);
551 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfModifiers);
555 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfRegisterIndices);
559 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfRows);
563 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_objectFileName);
567 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_oemId);
571 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_oemSymbolId);
575 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_offsetInUdt);
579 return PrivateGetDIAValue<DWORD, PDB_Cpu>(Symbol, &IDiaSymbol::get_platform);
583 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_rank);
587 return PrivateGetDIAValue<DWORD, PDB_RegisterId>(Symbol,
588 &IDiaSymbol::get_registerId);
592 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_registerType);
596 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_relativeVirtualAddress);
600 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_samplerSlot);
604 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_signature);
608 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_sizeInUdt);
612 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_slot);
616 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_sourceFileName);
620 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_stride);
624 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_subTypeId);
628 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_symbolsFileName);
632 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_symIndexId);
636 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetOffset);
640 return PrivateGetDIAValue(Symbol,
641 &IDiaSymbol::get_targetRelativeVirtualAddress);
645 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetVirtualAddress);
649 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetSection);
653 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_textureSlot);
657 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_timeStamp);
661 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_token);
665 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_typeId);
669 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_uavSlot);
673 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_undecoratedName);
677 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unmodifiedTypeId);
681 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_upperBoundId);
687 if (S_OK != Symbol->get_value(&Value))
690 return VariantFromVARIANT(Value);
694 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseDispIndex);
698 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseOffset);
702 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualTableShapeId);
706 return PrivateGetDIAValue<DWORD, PDB_DataKind>(Symbol,
707 &IDiaSymbol::get_dataKind);
711 return PrivateGetDIAValue<DWORD, PDB_SymType>(Symbol,
712 &IDiaSymbol::get_symTag);
716 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_guid);
720 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_offset);
724 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_thisAdjust);
728 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBasePointerOffset);
732 return PrivateGetDIAValue<DWORD, PDB_LocType>(Symbol,
733 &IDiaSymbol::get_locationType);
737 return PrivateGetDIAValue<DWORD, PDB_Machine>(Symbol,
738 &IDiaSymbol::get_machineType);
742 return PrivateGetDIAValue<DWORD, PDB_ThunkOrdinal>(
743 Symbol, &IDiaSymbol::get_thunkOrdinal);
747 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_length);
751 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_liveRangeLength);
755 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualAddress);
759 return PrivateGetDIAValue<DWORD, PDB_UdtType>(Symbol,
760 &IDiaSymbol::get_udtKind);
764 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_constructor);
768 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_customCallingConvention);
772 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_farReturn);
776 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_code);
780 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_compilerGenerated);
784 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_constType);
788 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_editAndContinueEnabled);
792 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_function);
796 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressTaken);
800 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noStackOrdering);
804 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasAlloca);
808 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasAssignmentOperator);
812 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCTypes);
816 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasCastOperator);
820 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasDebugInfo);
824 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasEH);
828 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasEHa);
832 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasInlAsm);
836 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_inlSpec);
840 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_interruptReturn);
844 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_framePointerPresent);
848 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasLongJump);
852 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasManagedCode);
856 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasNestedTypes);
860 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noInline);
864 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noReturn);
868 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_optimizedCodeDebugInfo);
872 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_overloadedOperator);
876 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSEH);
880 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSecurityChecks);
884 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSetJump);
888 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_strictGSCheck);
892 return PrivateGetDIAValue(Symbol,
893 &IDiaSymbol::get_isAcceleratorGroupSharedLocal);
897 return PrivateGetDIAValue(Symbol,
898 &IDiaSymbol::get_isAcceleratorPointerTagLiveRange);
902 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isAcceleratorStubFunction);
906 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isAggregated);
910 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_intro);
914 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCVTCIL);
918 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isConstructorVirtualBase);
922 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCxxReturnUdt);
926 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isDataAligned);
930 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isHLSLData);
934 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isHotpatchable);
938 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_indirectVirtualBaseClass);
942 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isInterfaceUdt);
946 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_intrinsic);
950 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isLTCG);
954 return PrivateGetDIAValue(Symbol,
955 &IDiaSymbol::get_isLocationControlFlowDependent);
959 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMSILNetmodule);
963 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMatrixRowMajor);
967 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_managed);
971 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_msil);
975 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMultipleInheritance);
979 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isNaked);
983 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_nested);
987 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isOptimizedAway);
991 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_packed);
995 return PrivateGetDIAValue(Symbol,
996 &IDiaSymbol::get_isPointerBasedOnSymbolValue);
1000 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isPointerToDataMember);
1004 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isPointerToMemberFunction);
1008 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_pure);
1012 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_RValueReference);
1016 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isRefUdt);
1020 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_reference);
1024 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_restrictedType);
1028 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isReturnValue);
1032 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSafeBuffers);
1036 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_scoped);
1040 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSdl);
1044 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSingleInheritance);
1048 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSplitted);
1052 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isStatic);
1058 return !PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isStripped);
1062 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unalignedType);
1066 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_notReached);
1070 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isValueUdt);
1074 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtual);
1078 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseClass);
1082 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isVirtualInheritance);
1086 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_volatileType);
1090 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_wasInlined);
1094 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unused);
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 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
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
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.
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.
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.
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
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.
bool isLTCG() const override
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
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
bool isConstType() const override
PDB_LocType
These values correspond to the LocationType enumeration, and are documented here: https://msdn...
uint32_t getNumberOfModifiers() const override
int32_t getVirtualBasePointerOffset() const override
bool getAddressTaken() const override
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
bool isVolatileType() const override
bool isCxxReturnUdt() const override
uint32_t getLiveRangeStartRelativeVirtualAddress() const override
The instances of the Type class are immutable: once they are created, they are never changed...
uint32_t getBaseDataOffset() const override
bool hasLongJump() const override
bool hasInlineAttribute() const override
uint32_t getSignature() const override
bool isIndirectVirtualBaseClass() const override
PDB_CallingConv
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
bool isHotpatchable() const override
PDB_SymType getSymTag() const override
uint32_t getNumberOfRows() const override
bool isAcceleratorStubFunction() const override
uint32_t getTypeId() const override
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...
bool isCVTCIL() const override
bool isLocationControlFlowDependent() const override
std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type) const override
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...
uint32_t getNumberOfColumns() const override
bool isFunction() const override
bool isRefUdt() const override
uint32_t getToken() const override
bool isAggregated() const override
PDB_LocType getLocationType() const override
bool hasPrivateSymbols() const override
uint64_t getTargetVirtualAddress() const override
PDB_CallingConv getCallingConvention() const override
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bkedss5f.aspx.
PDB_ThunkOrdinal
These values correspond to the THUNK_ORDINAL enumeration, and are documented here: https://msdn...
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().
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.
bool isStatic() const override
bool isNaked() const override
bool isSafeBuffers() const override
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
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
bool wasInlined() const override
uint32_t getBaseSymbolId() const override
Variant getValue() const override
bool isDataAligned() const override
bool isVirtualInheritance() const override
LLVM Value Representation.
bool isPointerBasedOnSymbolValue() const override
This class implements an extremely fast bulk output stream that can only output to a stream...
StringRef - Represent a constant reference to a string, i.e.
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