20 using namespace llvm::pdb;
23 Variant VariantFromVARIANT(
const VARIANT &V) {
59 Result.
Value.
Bool = (V.boolVal == VARIANT_TRUE) ?
true :
false;
71 const char *SrcBytes =
reinterpret_cast<const char *
>(V.bstrVal);
76 Result.
Value.
String =
new char[Result8.length() + 1];
88 template <
typename ArgType>
89 ArgType PrivateGetDIAValue(IDiaSymbol *
Symbol,
90 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
92 if (S_OK == (Symbol->*Method)(&Value))
93 return static_cast<ArgType
>(Value);
98 template <
typename ArgType,
typename RetType>
99 RetType PrivateGetDIAValue(IDiaSymbol *Symbol,
100 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
102 if (S_OK == (Symbol->*Method)(&Value))
103 return static_cast<RetType
>(Value);
109 PrivateGetDIAValue(IDiaSymbol *Symbol,
110 HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
112 if (S_OK != (Symbol->*Method)(&Result16))
113 return std::string();
115 const char *SrcBytes =
reinterpret_cast<const char *
>(Result16.m_str);
119 return std::string();
124 PrivateGetDIAValue(IDiaSymbol *Symbol,
125 HRESULT (__stdcall IDiaSymbol::*Method)(GUID *)) {
127 if (S_OK != (Symbol->*Method)(&Result))
131 "PDB_UniqueId is the wrong size!");
133 ::memcpy(&IdResult, &Result,
sizeof(GUID));
137 template <
typename ArgType>
140 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
142 if (S_OK == (Symbol->*Method)(&Value)) {
145 OS << Name <<
": " << Value;
151 HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
152 BSTR Value =
nullptr;
153 if (S_OK != (Symbol->*Method)(&Value))
155 const char *Bytes =
reinterpret_cast<const char *
>(Value);
161 OS << Name <<
": " << Result;
163 ::SysFreeString(Value);
168 HRESULT (__stdcall IDiaSymbol::*Method)(VARIANT *)) {
171 if (S_OK != (Symbol->*Method)(&Value))
175 Variant V = VariantFromVARIANT(Value);
189 CComPtr<IDiaSymbol> DiaSymbol)
190 : Session(PDBSession), Symbol(DiaSymbol) {}
192 #define RAW_METHOD_DUMP(Stream, Method) \
193 DumpDIAValue(Stream, Indent, StringRef(#Method), Symbol, &IDiaSymbol::Method);
364 std::unique_ptr<IPDBEnumSymbols>
366 enum SymTagEnum EnumVal =
static_cast<enum SymTagEnum
>(
Type);
368 CComPtr<IDiaEnumSymbols> DiaEnumerator;
369 if (S_OK != Symbol->findChildrenEx(EnumVal,
nullptr, nsNone, &DiaEnumerator))
372 return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
375 std::unique_ptr<IPDBEnumSymbols>
381 enum SymTagEnum EnumVal =
static_cast<enum SymTagEnum
>(
Type);
383 wchar_t *Name16Str =
reinterpret_cast<wchar_t *
>(Name16.
data());
385 CComPtr<IDiaEnumSymbols> DiaEnumerator;
387 Symbol->findChildrenEx(EnumVal, Name16Str, CompareFlags, &DiaEnumerator))
390 return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
393 std::unique_ptr<IPDBEnumSymbols>
399 enum SymTagEnum EnumVal =
static_cast<enum SymTagEnum
>(
Type);
401 wchar_t *Name16Str =
reinterpret_cast<wchar_t *
>(Name16.
data());
403 CComPtr<IDiaEnumSymbols> DiaEnumerator;
405 Symbol->findChildrenExByRVA(EnumVal, Name16Str, CompareFlags, RVA,
409 return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
412 std::unique_ptr<IPDBEnumSymbols>
414 CComPtr<IDiaEnumSymbols> DiaEnumerator;
415 if (S_OK != Symbol->findInlineFramesByRVA(RVA, &DiaEnumerator))
418 return llvm::make_unique<DIAEnumSymbols>(Session, DiaEnumerator);
425 Symbol->get_dataBytes(0, &DataSize,
nullptr);
430 Symbol->get_dataBytes(DataSize, &DataSize, bytes.
data());
434 return PrivateGetDIAValue<DWORD, PDB_MemberAccess>(Symbol,
435 &IDiaSymbol::get_access);
439 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressOffset);
443 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressSection);
447 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_age);
451 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_arrayIndexTypeId);
455 Version.
Major = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndMajor);
456 Version.
Minor = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndMinor);
457 Version.
Build = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndBuild);
458 Version.
QFE = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_backEndQFE);
462 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseDataOffset);
466 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseDataSlot);
470 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_baseSymbolId);
474 return PrivateGetDIAValue<DWORD, PDB_BuiltinType>(Symbol,
475 &IDiaSymbol::get_baseType);
479 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_bitPosition);
483 return PrivateGetDIAValue<DWORD, PDB_CallingConv>(
484 Symbol, &IDiaSymbol::get_callingConvention);
488 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_classParentId);
492 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_compilerName);
496 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_count);
500 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_countLiveRanges);
504 Version.
Major = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndMajor);
505 Version.
Minor = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndMinor);
506 Version.
Build = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndBuild);
507 Version.
QFE = PrivateGetDIAValue(Symbol, &IDiaSymbol::get_frontEndQFE);
511 return PrivateGetDIAValue<DWORD, PDB_Lang>(Symbol, &IDiaSymbol::get_language);
515 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_lexicalParentId);
519 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_libraryName);
523 return PrivateGetDIAValue(Symbol,
524 &IDiaSymbol::get_liveRangeStartAddressOffset);
528 return PrivateGetDIAValue(Symbol,
529 &IDiaSymbol::get_liveRangeStartAddressSection);
533 return PrivateGetDIAValue(
534 Symbol, &IDiaSymbol::get_liveRangeStartRelativeVirtualAddress);
538 return PrivateGetDIAValue<DWORD, codeview::RegisterId>(
539 Symbol, &IDiaSymbol::get_localBasePointerRegisterId);
543 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_lowerBoundId);
547 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_memorySpaceKind);
551 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_name);
555 return PrivateGetDIAValue(Symbol,
556 &IDiaSymbol::get_numberOfAcceleratorPointerTags);
560 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfColumns);
564 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfModifiers);
568 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfRegisterIndices);
572 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_numberOfRows);
576 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_objectFileName);
580 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_oemId);
584 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_oemSymbolId);
588 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_offsetInUdt);
592 return PrivateGetDIAValue<DWORD, PDB_Cpu>(Symbol, &IDiaSymbol::get_platform);
596 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_rank);
600 return PrivateGetDIAValue<DWORD, codeview::RegisterId>(
601 Symbol, &IDiaSymbol::get_registerId);
605 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_registerType);
609 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_relativeVirtualAddress);
613 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_samplerSlot);
617 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_signature);
621 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_sizeInUdt);
625 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_slot);
629 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_sourceFileName);
633 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_stride);
637 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_subTypeId);
641 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_symbolsFileName);
645 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_symIndexId);
649 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetOffset);
653 return PrivateGetDIAValue(Symbol,
654 &IDiaSymbol::get_targetRelativeVirtualAddress);
658 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetVirtualAddress);
662 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_targetSection);
666 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_textureSlot);
670 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_timeStamp);
674 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_token);
678 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_typeId);
682 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_uavSlot);
686 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_undecoratedName);
690 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unmodifiedTypeId);
694 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_upperBoundId);
700 if (S_OK != Symbol->get_value(&Value))
703 return VariantFromVARIANT(Value);
707 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseDispIndex);
711 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseOffset);
715 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualTableShapeId);
719 return PrivateGetDIAValue<DWORD, PDB_DataKind>(Symbol,
720 &IDiaSymbol::get_dataKind);
724 return PrivateGetDIAValue<DWORD, PDB_SymType>(Symbol,
725 &IDiaSymbol::get_symTag);
729 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_guid);
733 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_offset);
737 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_thisAdjust);
741 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBasePointerOffset);
745 return PrivateGetDIAValue<DWORD, PDB_LocType>(Symbol,
746 &IDiaSymbol::get_locationType);
750 return PrivateGetDIAValue<DWORD, PDB_Machine>(Symbol,
751 &IDiaSymbol::get_machineType);
755 return PrivateGetDIAValue<DWORD, codeview::ThunkOrdinal>(
756 Symbol, &IDiaSymbol::get_thunkOrdinal);
760 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_length);
764 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_liveRangeLength);
768 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualAddress);
772 return PrivateGetDIAValue<DWORD, PDB_UdtType>(Symbol,
773 &IDiaSymbol::get_udtKind);
777 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_constructor);
781 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_customCallingConvention);
785 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_farReturn);
789 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_code);
793 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_compilerGenerated);
797 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_constType);
801 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_editAndContinueEnabled);
805 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_function);
809 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_addressTaken);
813 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noStackOrdering);
817 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasAlloca);
821 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasAssignmentOperator);
825 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCTypes);
829 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasCastOperator);
833 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasDebugInfo);
837 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasEH);
841 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasEHa);
845 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasInlAsm);
849 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_inlSpec);
853 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_interruptReturn);
857 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_framePointerPresent);
861 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasLongJump);
865 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasManagedCode);
869 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasNestedTypes);
873 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noInline);
877 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_noReturn);
881 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_optimizedCodeDebugInfo);
885 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_overloadedOperator);
889 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSEH);
893 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSecurityChecks);
897 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_hasSetJump);
901 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_strictGSCheck);
905 return PrivateGetDIAValue(Symbol,
906 &IDiaSymbol::get_isAcceleratorGroupSharedLocal);
910 return PrivateGetDIAValue(Symbol,
911 &IDiaSymbol::get_isAcceleratorPointerTagLiveRange);
915 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isAcceleratorStubFunction);
919 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isAggregated);
923 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_intro);
927 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCVTCIL);
931 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isConstructorVirtualBase);
935 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isCxxReturnUdt);
939 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isDataAligned);
943 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isHLSLData);
947 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isHotpatchable);
951 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_indirectVirtualBaseClass);
955 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isInterfaceUdt);
959 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_intrinsic);
963 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isLTCG);
967 return PrivateGetDIAValue(Symbol,
968 &IDiaSymbol::get_isLocationControlFlowDependent);
972 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMSILNetmodule);
976 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMatrixRowMajor);
980 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_managed);
984 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_msil);
988 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isMultipleInheritance);
992 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isNaked);
996 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_nested);
1000 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isOptimizedAway);
1004 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_packed);
1008 return PrivateGetDIAValue(Symbol,
1009 &IDiaSymbol::get_isPointerBasedOnSymbolValue);
1013 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isPointerToDataMember);
1017 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isPointerToMemberFunction);
1021 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_pure);
1025 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_RValueReference);
1029 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isRefUdt);
1033 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_reference);
1037 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_restrictedType);
1041 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isReturnValue);
1045 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSafeBuffers);
1049 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_scoped);
1053 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSdl);
1057 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSingleInheritance);
1061 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isSplitted);
1065 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isStatic);
1071 return !PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isStripped);
1075 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unalignedType);
1079 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_notReached);
1083 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isValueUdt);
1087 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtual);
1091 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_virtualBaseClass);
1095 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_isVirtualInheritance);
1099 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_volatileType);
1103 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_wasInlined);
1107 return PrivateGetDIAValue(Symbol, &IDiaSymbol::get_unused);
bool hasAlloca() const override
bool hasInlineAttribute() const override
bool hasNoReturnAttribute() const override
uint32_t getOemSymbolId() const override
uint32_t getToken() const override
uint32_t getLiveRangeStartRelativeVirtualAddress() const override
bool hasInterruptReturn() const override
bool isRValueReference() const override
PDB_UdtType getUdtKind() const override
int32_t getOffset() const override
bool isStatic() const override
codeview::RegisterId getLocalBasePointerRegisterId() const override
uint32_t getNumberOfColumns() const override
uint32_t getTargetOffset() const override
bool hasOptimizedCodeDebugInfo() const override
PDB_UdtType
These values correspond to the UdtKind enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/wcstk66t.aspx.
uint32_t getTextureSlot() const override
uint32_t getSubTypeId() const override
bool isNaked() const override
uint32_t getVirtualBaseDispIndex() const override
raw_ostream & indent(unsigned NumSpaces)
indent - Insert 'NumSpaces' spaces.
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
bool isValueUdt() const override
uint32_t getVirtualTableShapeId() const override
std::string getUnused() const override
bool isConstructorVirtualBase() const override
bool getNoStackOrdering() const override
bool isPureVirtual() const override
bool isSdl() const override
std::string getSymbolsFileName() const override
bool isFunction() const override
bool isReturnValue() const override
PDB_Machine getMachineType() const override
bool isRefUdt() const override
bool hasManagedCode() const override
bool isVirtual() const override
bool hasOverloadedOperator() const override
raw_ostream & operator<<(raw_ostream &OS, const PDB_VariantType &Value)
bool hasCastOperator() const override
uint32_t getUnmodifiedTypeId() const override
uint32_t getStride() const override
uint32_t getUpperBoundId() const override
bool hasEHa() const override
struct fuzzer::@269 Flags
bool isIntroVirtualFunction() const override
uint32_t getNumberOfRegisterIndices() const override
std::string getName() const override
codeview::ThunkOrdinal getThunkOrdinal() const override
bool isScoped() const override
bool isCxxReturnUdt() const override
bool isVolatileType() const override
uint32_t getNumberOfAcceleratorPointerTags() const override
PDB_SymType getSymTag() const override
uint32_t getArrayIndexTypeId() const override
bool isNested() const override
bool isMSILNetmodule() const override
bool isPointerToMemberFunction() const override
uint64_t getLength() const override
bool isOptimizedAway() const override
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
bool isIndirectVirtualBaseClass() const override
uint32_t getTimeStamp() const override
bool isIntrinsic() const override
bool convertUTF8ToUTF16String(StringRef SrcUTF8, SmallVectorImpl< UTF16 > &DstUTF16)
Converts a UTF-8 string into a UTF-16 string with native endianness.
void getFrontEndVersion(VersionInfo &Version) const override
PDB_BuiltinType getBuiltinType() const override
bool hasCustomCallingConvention() const override
uint32_t getLiveRangeStartAddressOffset() const override
bool isLocationControlFlowDependent() const override
bool isAcceleratorPointerTagLiveRange() const override
bool isRestrictedType() const override
bool hasCTypes() const override
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bkedss5f.aspx.
uint32_t getRank() const override
PDB_MemberAccess getAccess() const override
bool getAddressTaken() const override
uint32_t getTargetSection() const override
uint32_t getRegisterType() const override
bool isAcceleratorGroupSharedLocal() const override
bool isEditAndContinueEnabled() const override
The instances of the Type class are immutable: once they are created, they are never changed...
Defines a 128-bit unique identifier.
PDB_DataKind
These values correspond to the DataKind enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/b2x2t313.aspx.
void getDataBytes(llvm::SmallVector< uint8_t, 32 > &bytes) const override
bool isPointerBasedOnSymbolValue() const override
uint32_t getSymIndexId() const override
uint32_t getOffsetInUdt() const override
bool isAcceleratorStubFunction() const override
bool isDataAligned() const override
uint64_t getTargetVirtualAddress() const override
bool hasNestedTypes() const override
bool isVirtualBaseClass() const override
bool hasEH() const override
uint32_t getLexicalParentId() const override
bool wasInlined() const override
bool isAggregated() const override
bool isMSILCode() const override
uint32_t getSizeInUdt() const override
PDB_LocType
These values correspond to the LocationType enumeration, and are documented here: https://msdn...
uint32_t getTargetRelativeVirtualAddress() const override
bool isPacked() const override
PDB_CallingConv getCallingConvention() const override
std::string getCompilerName() const override
uint64_t getLiveRangeLength() const override
bool isConstType() const override
bool isCode() const override
uint32_t getSignature() const override
SourceLanguage
These values correspond to the CV_CFL_LANG enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bw3aekw6.aspx.
bool hasSEH() const override
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByRVA(uint32_t RVA) const override
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
bool isCVTCIL() const override
int32_t getVirtualBasePointerOffset() const override
bool isManagedCode() const override
bool hasPrivateSymbols() const override
bool isSafeBuffers() const override
CPUType
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn...
int32_t getThisAdjust() const override
std::string getLibraryName() const override
codeview::RegisterId getRegisterId() const override
bool isMatrixRowMajor() const override
bool isHLSLData() const override
uint32_t getSlot() const override
uint32_t getLowerBoundId() const override
bool hasLongJump() const override
bool hasAssignmentOperator() const override
uint32_t getVirtualBaseOffset() const override
DIARawSymbol(const DIASession &PDBSession, CComPtr< IDiaSymbol > DiaSymbol)
std::string getSourceFileName() const override
uint32_t getBaseDataOffset() const override
bool convertUTF16ToUTF8String(ArrayRef< char > SrcBytes, std::string &Out)
Converts a stream of raw bytes assumed to be UTF16 into a UTF8 std::string.
bool hasSetJump() const override
bool isVirtualInheritance() const override
bool isUnreached() const override
bool isPointerToDataMember() const override
uint32_t getNumberOfModifiers() const override
PDB_LocType getLocationType() const override
bool hasStrictGSCheck() const override
pointer data()
Return a pointer to the vector's buffer, even if empty().
bool hasSecurityChecks() const override
void getBackEndVersion(VersionInfo &Version) const override
bool hasFramePointer() const override
#define RAW_METHOD_DUMP(Stream, Method)
uint32_t getNumberOfRows() const override
std::string getUndecoratedName() const override
uint32_t getAddressSection() const override
uint32_t getAge() const override
PDB_Cpu getPlatform() const override
uint32_t getOemId() const override
bool isHotpatchable() const override
bool isMultipleInheritance() const override
ThunkOrdinal
These values correspond to the THUNK_ORDINAL enumeration.
PDB_BuiltinType
These values correspond to the Basictype enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/4szdtzc3.aspx.
std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type) const override
bool hasNoInlineAttribute() const override
bool isLTCG() const override
uint32_t getCount() const override
LLVM Value Representation.
bool isSplitted() const override
uint64_t getVirtualAddress() const override
std::unique_ptr< IPDBEnumSymbols > findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t RVA) const override
CallingConvention
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
PDB_UniqueId getGuid() const override
uint32_t getMemorySpaceKind() const override
This class implements an extremely fast bulk output stream that can only output to a stream...
bool isCompilerGenerated() const override
StringRef - Represent a constant reference to a string, i.e.
Variant getValue() const override
bool isSingleInheritance() const override
uint32_t getLiveRangeStartAddressSection() const override
PDB_Lang getLanguage() const override
void dump(raw_ostream &OS, int Indent) const override
std::string getObjectFileName() const override
bool isInterfaceUdt() const override
bool isReference() const override
PDB_DataKind getDataKind() const override
bool hasInlAsm() const override
uint32_t getClassParentId() const override
uint32_t getAddressOffset() const override
uint32_t getUavSlot() const override
uint32_t getBitPosition() const override
uint32_t getBaseDataSlot() const override
bool hasConstructor() const override
bool isUnalignedType() const override
uint32_t getCountLiveRanges() const override
uint32_t getSamplerSlot() const override
union llvm::pdb::Variant::@75 Value
bool hasDebugInfo() const override
bool hasFarReturn() const override
uint32_t getTypeId() const override
uint32_t getRelativeVirtualAddress() const override
uint32_t getBaseSymbolId() const override