LLVM: lib/DebugInfo/PDB/DIA/DIARawSymbol.cpp Source File (original) (raw)
1
2
3
4
5
6
7
8
25
26using namespace llvm;
28
29namespace {
30Variant VariantFromVARIANT(const VARIANT &V) {
32 switch (V.vt) {
33 case VT_I1:
34 Result.Value.Int8 = V.cVal;
36 break;
37 case VT_I2:
38 Result.Value.Int16 = V.iVal;
40 break;
41 case VT_I4:
42 Result.Value.Int32 = V.intVal;
44 break;
45 case VT_I8:
46 Result.Value.Int64 = V.llVal;
48 break;
49 case VT_UI1:
50 Result.Value.UInt8 = V.bVal;
52 break;
53 case VT_UI2:
54 Result.Value.UInt16 = V.uiVal;
56 break;
57 case VT_UI4:
58 Result.Value.UInt32 = V.uintVal;
60 break;
61 case VT_UI8:
62 Result.Value.UInt64 = V.ullVal;
64 break;
65 case VT_BOOL:
66 Result.Value.Bool = (V.boolVal == VARIANT_TRUE) ? true : false;
68 break;
69 case VT_R4:
70 Result.Value.Single = V.fltVal;
72 break;
73 case VT_R8:
74 Result.Value.Double = V.dblVal;
76 break;
77 case VT_BSTR: {
78 const char *SrcBytes = reinterpret_cast<const char *>(V.bstrVal);
80 std::string Result8;
82 Result.Value.String = nullptr;
83 Result.Value.String = new char[Result8.length() + 1];
84 ::strcpy(Result.Value.String, Result8.c_str());
86 break;
87 }
88 default:
90 break;
91 }
93}
94
95template
97 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
99 if (S_OK == (Symbol->*Method)(&Value))
100 return static_cast<ArgType>(Value);
101
102 return ArgType();
103}
104
105template <typename ArgType, typename RetType>
107 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
109 if (S_OK == (Symbol->*Method)(&Value))
110 return static_cast<RetType>(Value);
111
112 return RetType();
113}
114
115std::string
117 HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
119}
120
123 HRESULT (__stdcall IDiaSymbol::*Method)(GUID *)) {
125 if (S_OK != (Symbol->*Method)(&Result))
127
129 "GUID is the wrong size!");
131 ::memcpy(&IdResult, &Result, sizeof(GUID));
132 return IdResult;
133}
134
135template <typename PrintType, typename ArgType>
137 IDiaSymbol *Symbol,
138 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
140 if (S_OK == (Symbol->*Method)(&Value))
142}
143
145 IDiaSymbol *Symbol,
146 HRESULT (__stdcall IDiaSymbol::*Method)(DWORD *),
150 if (S_OK == (Symbol->*Method)(&Value))
152 RecurseFlags);
153}
154
155template
157 IDiaSymbol *Symbol,
158 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {
160 if (S_OK == (Symbol->*Method)(&Value))
162}
163
165 IDiaSymbol *Symbol,
166 HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {
168 if (S_OK != (Symbol->*Method)(&Value))
169 return;
170 const char *Bytes = reinterpret_cast<const char *>(Value);
175 ::SysFreeString(Value);
176}
177
179 IDiaSymbol *Symbol,
180 HRESULT (__stdcall IDiaSymbol::*Method)(VARIANT *)) {
182 Value.vt = VT_EMPTY;
183 if (S_OK != (Symbol->*Method)(&Value))
184 return;
186
188}
189}
190
191namespace llvm {
193 StringRef GuidBytes(reinterpret_cast<const char *>(&G), sizeof(G));
195 A.format(OS, "");
196 return OS;
197}
198}
199
201 CComPtr DiaSymbol)
202 : Session(PDBSession), Symbol(DiaSymbol) {}
203
204#define RAW_ID_METHOD_DUMP(Stream, Method, Session, FieldId, ShowFlags, \
205 RecurseFlags) \
206 DumpDIAIdValue(Stream, Indent, StringRef{#Method}, Symbol, \
207 &IDiaSymbol::get_##Method, Session, FieldId, ShowFlags, \
208 RecurseFlags);
209
210#define RAW_METHOD_DUMP(Stream, Method) \
211 DumpDIAValue(Stream, Indent, StringRef{#Method}, Symbol, \
212 &IDiaSymbol::get_##Method);
213
214#define RAW_METHOD_DUMP_AS(Stream, Method, Type) \
215 DumpDIAValueAs(Stream, Indent, StringRef{#Method}, Symbol, \
216 &IDiaSymbol::get_##Method);
217
222 ShowIdFields, RecurseIdFields);
224
241 ShowIdFields, RecurseIdFields);
251 RecurseIdFields);
255 RAW_METHOD_DUMP(OS, liveRangeStartRelativeVirtualAddress);
290 RecurseIdFields);
295 RecurseIdFields);
395}
396
397std::unique_ptr
399 enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
400
401 CComPtr DiaEnumerator;
402 if (S_OK !=
403 Symbol->findChildrenEx(EnumVal, nullptr, nsNone, &DiaEnumerator)) {
404 if (S_OK != Symbol->findChildren(EnumVal, nullptr, nsNone, &DiaEnumerator))
405 return nullptr;
406 }
407
408 return std::make_unique(Session, DiaEnumerator);
409}
410
411std::unique_ptr
416
417 enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
418 DWORD CompareFlags = static_cast<DWORD>(Flags);
419 wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());
420
421 CComPtr DiaEnumerator;
422 if (S_OK !=
423 Symbol->findChildrenEx(EnumVal, Name16Str, CompareFlags, &DiaEnumerator))
424 return nullptr;
425
426 return std::make_unique(Session, DiaEnumerator);
427}
428
429std::unique_ptr
435
436 enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
437
438 DWORD CompareFlags = static_cast<DWORD>(Flags);
439 wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());
440
441 CComPtr DiaEnumerator;
442 if (S_OK != Symbol->findChildrenExByAddr(EnumVal, Name16Str, CompareFlags,
443 Section, Offset, &DiaEnumerator))
444 return nullptr;
445
446 return std::make_unique(Session, DiaEnumerator);
447}
448
449std::unique_ptr
454
455 enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
456
457 DWORD CompareFlags = static_cast<DWORD>(Flags);
458 wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());
459
460 CComPtr DiaEnumerator;
461 if (S_OK != Symbol->findChildrenExByVA(EnumVal, Name16Str, CompareFlags, VA,
462 &DiaEnumerator))
463 return nullptr;
464
465 return std::make_unique(Session, DiaEnumerator);
466}
467
468std::unique_ptr
473
474 enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);
475 DWORD CompareFlags = static_cast<DWORD>(Flags);
476 wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());
477
478 CComPtr DiaEnumerator;
479 if (S_OK != Symbol->findChildrenExByRVA(EnumVal, Name16Str, CompareFlags, RVA,
480 &DiaEnumerator))
481 return nullptr;
482
483 return std::make_unique(Session, DiaEnumerator);
484}
485
486std::unique_ptr
488 CComPtr DiaEnumerator;
489 if (S_OK != Symbol->findInlineFramesByAddr(Section, Offset, &DiaEnumerator))
490 return nullptr;
491
492 return std::make_unique(Session, DiaEnumerator);
493}
494
495std::unique_ptr
497 CComPtr DiaEnumerator;
498 if (S_OK != Symbol->findInlineFramesByRVA(RVA, &DiaEnumerator))
499 return nullptr;
500
501 return std::make_unique(Session, DiaEnumerator);
502}
503
504std::unique_ptr
506 CComPtr DiaEnumerator;
507 if (S_OK != Symbol->findInlineFramesByVA(VA, &DiaEnumerator))
508 return nullptr;
509
510 return std::make_unique(Session, DiaEnumerator);
511}
512
514 CComPtr DiaEnumerator;
515 if (S_OK != Symbol->findInlineeLines(&DiaEnumerator))
516 return nullptr;
517
518 return std::make_unique(DiaEnumerator);
519}
520
521std::unique_ptr
524 CComPtr DiaEnumerator;
525 if (S_OK !=
526 Symbol->findInlineeLinesByAddr(Section, Offset, Length, &DiaEnumerator))
527 return nullptr;
528
529 return std::make_unique(DiaEnumerator);
530}
531
532std::unique_ptr
534 CComPtr DiaEnumerator;
535 if (S_OK != Symbol->findInlineeLinesByRVA(RVA, Length, &DiaEnumerator))
536 return nullptr;
537
538 return std::make_unique(DiaEnumerator);
539}
540
541std::unique_ptr
543 CComPtr DiaEnumerator;
544 if (S_OK != Symbol->findInlineeLinesByVA(VA, Length, &DiaEnumerator))
545 return nullptr;
546
547 return std::make_unique(DiaEnumerator);
548}
549
552
554 Symbol->get_dataBytes(0, &DataSize, nullptr);
556 return;
557
560}
561
563 CComBSTR Result16;
564 if (S_OK != Symbol->get_undecoratedNameEx((DWORD)Flags, &Result16))
565 return std::string();
566
567 const char *SrcBytes = reinterpret_cast<const char *>(Result16.m_str);
569 std::string Result8;
571 return std::string();
572 return Result8;
573}
574
577 &IDiaSymbol::get_access);
578}
579
583
587
591
595
602
606
610
614
617 &IDiaSymbol::get_baseType);
618}
619
623
626 Symbol, &IDiaSymbol::get_callingConvention);
627}
628
632
636
640
644
651
655
659
663
666 &IDiaSymbol::get_liveRangeStartAddressOffset);
667}
668
671 &IDiaSymbol::get_liveRangeStartAddressSection);
672}
673
676 Symbol, &IDiaSymbol::get_liveRangeStartRelativeVirtualAddress);
677}
678
681 Symbol, &IDiaSymbol::get_localBasePointerRegisterId);
682}
683
687
691
695
698 &IDiaSymbol::get_numberOfAcceleratorPointerTags);
699}
700
704
708
712
716
720
724
728
732
736
740
743 Symbol, &IDiaSymbol::get_registerId);
744}
745
749
753
757
761
765
769
773
775 CComPtr LineNumber;
776 if (FAILED(Symbol->getSrcLineOnTypeDefn(&LineNumber)) || !LineNumber)
777 return nullptr;
778
779 return std::make_unique(LineNumber);
780}
781
785
789
793
797
801
804 &IDiaSymbol::get_targetRelativeVirtualAddress);
805}
806
810
814
818
822
826
830
834
838
842
846
849 Value.vt = VT_EMPTY;
850 if (S_OK != Symbol->get_value(&Value))
852
853 return VariantFromVARIANT(Value);
854}
855
859
863
867
868std::unique_ptr
870 CComPtr TableType;
871 if (FAILED(Symbol->get_virtualBaseTableType(&TableType)) || !TableType)
872 return nullptr;
873
874 auto RawVT = std::make_unique(Session, TableType);
875 auto Pointer =
878}
879
882 &IDiaSymbol::get_dataKind);
883}
884
887 &IDiaSymbol::get_symTag);
888}
889
893
897
901
905
908 &IDiaSymbol::get_locationType);
909}
910
913 &IDiaSymbol::get_machineType);
914}
915
918 Symbol, &IDiaSymbol::get_thunkOrdinal);
919}
920
924
928
932
935 &IDiaSymbol::get_udtKind);
936}
937
941
945
949
953
957
961
965
969
973
977
981
985
989
993
997
1001
1005
1009
1013
1017
1021
1025
1029
1033
1037
1041
1045
1049
1053
1057
1061
1065
1068 &IDiaSymbol::get_isAcceleratorGroupSharedLocal);
1069}
1070
1073 &IDiaSymbol::get_isAcceleratorPointerTagLiveRange);
1074}
1075
1079
1083
1087
1091
1095
1099
1103
1107
1111
1115
1119
1123
1127
1130 &IDiaSymbol::get_isLocationControlFlowDependent);
1131}
1132
1136
1140
1144
1148
1152
1156
1160
1164
1168
1171 &IDiaSymbol::get_isPointerBasedOnSymbolValue);
1172}
1173
1177
1181
1185
1189
1193
1197
1201
1205
1209
1213
1217
1221
1225
1229
1235
1239
1243
1247
1251
1255
1259
1263
1267
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
ArgType PrivateGetDIAValue(IDiaFrameData *FrameData, HRESULT(__stdcall IDiaFrameData::*Method)(ArgType *))
#define RAW_METHOD_DUMP_AS(Stream, Method, Type)
Definition DIARawSymbol.cpp:214
#define RAW_METHOD_DUMP(Stream, Method)
Definition DIARawSymbol.cpp:210
#define RAW_ID_METHOD_DUMP(Stream, Method, Session, FieldId, ShowFlags, RecurseFlags)
Definition DIARawSymbol.cpp:204
std::string invokeBstrMethod(Obj &Object, HRESULT(__stdcall Obj::*Func)(BSTR *))
dot regions Print regions of function to dot true view regions View regions of function(with no function bodies)"
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
pointer data()
Return a pointer to the vector's buffer, even if empty().
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
LLVM Value Representation.
uint32_t getNumberOfModifiers() const override
Definition DIARawSymbol.cpp:705
bool isDataAligned() const override
Definition DIARawSymbol.cpp:1100
bool isCxxReturnUdt() const override
Definition DIARawSymbol.cpp:1096
bool hasOptimizedCodeDebugInfo() const override
Definition DIARawSymbol.cpp:1042
bool isScoped() const override
Definition DIARawSymbol.cpp:1210
std::unique_ptr< IPDBEnumSymbols > findChildrenByVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint64_t VA) const override
Definition DIARawSymbol.cpp:450
SymIndexId getUpperBoundId() const override
Definition DIARawSymbol.cpp:843
bool hasInterruptReturn() const override
Definition DIARawSymbol.cpp:1014
bool isStatic() const override
Definition DIARawSymbol.cpp:1226
uint32_t getTextureSlot() const override
Definition DIARawSymbol.cpp:815
uint32_t getVirtualBaseDispIndex() const override
Definition DIARawSymbol.cpp:856
uint32_t getAddressOffset() const override
Definition DIARawSymbol.cpp:580
std::unique_ptr< IPDBEnumLineNumbers > findInlineeLines() const override
Definition DIARawSymbol.cpp:513
void getFrontEndVersion(VersionInfo &Version) const override
Definition DIARawSymbol.cpp:645
SymIndexId getTypeId() const override
Definition DIARawSymbol.cpp:827
bool hasEHa() const override
Definition DIARawSymbol.cpp:1002
std::string getUndecoratedNameEx(PDB_UndnameFlags Flags) const override
Definition DIARawSymbol.cpp:562
bool isCVTCIL() const override
Definition DIARawSymbol.cpp:1088
std::unique_ptr< IPDBEnumLineNumbers > findInlineeLinesByRVA(uint32_t RVA, uint32_t Length) const override
Definition DIARawSymbol.cpp:533
bool isOptimizedAway() const override
Definition DIARawSymbol.cpp:1161
bool isVolatileType() const override
Definition DIARawSymbol.cpp:1260
bool isInterfaceUdt() const override
Definition DIARawSymbol.cpp:1116
bool isEditAndContinueEnabled() const override
Definition DIARawSymbol.cpp:962
Variant getValue() const override
Definition DIARawSymbol.cpp:847
uint32_t getSignature() const override
Definition DIARawSymbol.cpp:758
bool isUnalignedType() const override
Definition DIARawSymbol.cpp:1236
std::string getName() const override
Definition DIARawSymbol.cpp:692
bool hasLongJump() const override
Definition DIARawSymbol.cpp:1022
bool hasCustomCallingConvention() const override
Definition DIARawSymbol.cpp:942
PDB_DataKind getDataKind() const override
Definition DIARawSymbol.cpp:880
PDB_Cpu getPlatform() const override
Definition DIARawSymbol.cpp:733
uint32_t getCountLiveRanges() const override
Definition DIARawSymbol.cpp:641
bool isHotpatchable() const override
Definition DIARawSymbol.cpp:1108
bool isReturnValue() const override
Definition DIARawSymbol.cpp:1202
uint32_t getBaseDataOffset() const override
Definition DIARawSymbol.cpp:603
PDB_MemberAccess getAccess() const override
Definition DIARawSymbol.cpp:575
std::unique_ptr< IPDBEnumSymbols > findChildrenByAddr(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t Section, uint32_t Offset) const override
Definition DIARawSymbol.cpp:430
int32_t getThisAdjust() const override
Definition DIARawSymbol.cpp:898
bool isIntroVirtualFunction() const override
Definition DIARawSymbol.cpp:1084
bool isAcceleratorGroupSharedLocal() const override
Definition DIARawSymbol.cpp:1066
bool hasNoReturnAttribute() const override
Definition DIARawSymbol.cpp:1038
SymIndexId getLowerBoundId() const override
Definition DIARawSymbol.cpp:684
bool hasNestedTypes() const override
Definition DIARawSymbol.cpp:1030
bool hasCTypes() const override
Definition DIARawSymbol.cpp:986
std::string getSymbolsFileName() const override
Definition DIARawSymbol.cpp:790
uint32_t getNumberOfRows() const override
Definition DIARawSymbol.cpp:713
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByAddr(uint32_t Section, uint32_t Offset) const override
Definition DIARawSymbol.cpp:487
PDB_Lang getLanguage() const override
Definition DIARawSymbol.cpp:652
bool wasInlined() const override
Definition DIARawSymbol.cpp:1264
uint32_t getLiveRangeStartAddressSection() const override
Definition DIARawSymbol.cpp:669
bool isPacked() const override
Definition DIARawSymbol.cpp:1165
bool getNoStackOrdering() const override
Definition DIARawSymbol.cpp:974
uint32_t getAge() const override
Definition DIARawSymbol.cpp:588
void getBackEndVersion(VersionInfo &Version) const override
Definition DIARawSymbol.cpp:596
uint32_t getSizeInUdt() const override
Definition DIARawSymbol.cpp:762
bool isLocationControlFlowDependent() const override
Definition DIARawSymbol.cpp:1128
PDB_CallingConv getCallingConvention() const override
Definition DIARawSymbol.cpp:624
std::string getUndecoratedName() const override
Definition DIARawSymbol.cpp:835
uint32_t getTargetRelativeVirtualAddress() const override
Definition DIARawSymbol.cpp:802
SymIndexId getArrayIndexTypeId() const override
Definition DIARawSymbol.cpp:592
DIARawSymbol(const DIASession &PDBSession, CComPtr< IDiaSymbol > DiaSymbol)
Definition DIARawSymbol.cpp:200
bool isReference() const override
Definition DIARawSymbol.cpp:1194
bool isMultipleInheritance() const override
Definition DIARawSymbol.cpp:1149
bool isAggregated() const override
Definition DIARawSymbol.cpp:1080
bool isConstructorVirtualBase() const override
Definition DIARawSymbol.cpp:1092
bool isSplitted() const override
Definition DIARawSymbol.cpp:1222
uint32_t getRegisterType() const override
Definition DIARawSymbol.cpp:746
uint32_t getOffsetInUdt() const override
Definition DIARawSymbol.cpp:729
uint32_t getRelativeVirtualAddress() const override
Definition DIARawSymbol.cpp:750
std::unique_ptr< IPDBEnumLineNumbers > findInlineeLinesByAddr(uint32_t Section, uint32_t Offset, uint32_t Length) const override
Definition DIARawSymbol.cpp:522
PDB_UdtType getUdtKind() const override
Definition DIARawSymbol.cpp:933
bool isCompilerGenerated() const override
Definition DIARawSymbol.cpp:954
bool isIntrinsic() const override
Definition DIARawSymbol.cpp:1120
bool isManagedCode() const override
Definition DIARawSymbol.cpp:1141
bool isMSILNetmodule() const override
Definition DIARawSymbol.cpp:1133
bool hasEH() const override
Definition DIARawSymbol.cpp:998
bool hasConstructor() const override
Definition DIARawSymbol.cpp:938
bool isVirtualInheritance() const override
Definition DIARawSymbol.cpp:1256
uint32_t getNumberOfColumns() const override
Definition DIARawSymbol.cpp:701
uint64_t getTargetVirtualAddress() const override
Definition DIARawSymbol.cpp:807
PDB_SymType getSymTag() const override
Definition DIARawSymbol.cpp:885
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByVA(uint64_t VA) const override
Definition DIARawSymbol.cpp:505
bool isNested() const override
Definition DIARawSymbol.cpp:1157
bool isVirtual() const override
Definition DIARawSymbol.cpp:1248
SymIndexId getVirtualTableShapeId() const override
Definition DIARawSymbol.cpp:864
bool isCode() const override
Definition DIARawSymbol.cpp:950
std::string getUnused() const override
Definition DIARawSymbol.cpp:1268
bool isFunction() const override
Definition DIARawSymbol.cpp:966
int32_t getOffset() const override
Definition DIARawSymbol.cpp:894
bool hasAlloca() const override
Definition DIARawSymbol.cpp:978
std::string getCompilerName() const override
Definition DIARawSymbol.cpp:633
bool isAcceleratorStubFunction() const override
Definition DIARawSymbol.cpp:1076
SymIndexId getBaseSymbolId() const override
Definition DIARawSymbol.cpp:611
bool hasNoInlineAttribute() const override
Definition DIARawSymbol.cpp:1034
bool isSdl() const override
Definition DIARawSymbol.cpp:1214
SymIndexId getUnmodifiedTypeId() const override
Definition DIARawSymbol.cpp:839
bool hasStrictGSCheck() const override
Definition DIARawSymbol.cpp:1062
codeview::GUID getGuid() const override
Definition DIARawSymbol.cpp:890
uint32_t getNumberOfRegisterIndices() const override
Definition DIARawSymbol.cpp:709
bool hasSEH() const override
Definition DIARawSymbol.cpp:1050
uint32_t getVirtualBaseOffset() const override
Definition DIARawSymbol.cpp:860
std::string getSourceFileName() const override
Definition DIARawSymbol.cpp:770
bool isUnreached() const override
Definition DIARawSymbol.cpp:1240
SymIndexId getSubTypeId() const override
Definition DIARawSymbol.cpp:786
bool hasOverloadedOperator() const override
Definition DIARawSymbol.cpp:1046
std::unique_ptr< IPDBLineNumber > getSrcLineOnTypeDefn() const override
Definition DIARawSymbol.cpp:774
uint32_t getBitPosition() const override
Definition DIARawSymbol.cpp:620
bool isPointerBasedOnSymbolValue() const override
Definition DIARawSymbol.cpp:1169
uint32_t getSlot() const override
Definition DIARawSymbol.cpp:766
uint32_t getMemorySpaceKind() const override
Definition DIARawSymbol.cpp:688
uint32_t getUavSlot() const override
Definition DIARawSymbol.cpp:831
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByRVA(uint32_t RVA) const override
Definition DIARawSymbol.cpp:496
bool hasInlAsm() const override
Definition DIARawSymbol.cpp:1006
uint32_t getOemId() const override
Definition DIARawSymbol.cpp:721
bool isRefUdt() const override
Definition DIARawSymbol.cpp:1190
uint32_t getTimeStamp() const override
Definition DIARawSymbol.cpp:819
bool isSafeBuffers() const override
Definition DIARawSymbol.cpp:1206
bool isPointerToDataMember() const override
Definition DIARawSymbol.cpp:1174
SymIndexId getOemSymbolId() const override
Definition DIARawSymbol.cpp:725
bool isPureVirtual() const override
Definition DIARawSymbol.cpp:1182
bool isValueUdt() const override
Definition DIARawSymbol.cpp:1244
uint32_t getSamplerSlot() const override
Definition DIARawSymbol.cpp:754
bool isLTCG() const override
Definition DIARawSymbol.cpp:1124
bool isNaked() const override
Definition DIARawSymbol.cpp:1153
codeview::RegisterId getRegisterId() const override
Definition DIARawSymbol.cpp:741
bool isSingleInheritance() const override
Definition DIARawSymbol.cpp:1218
bool isHLSLData() const override
Definition DIARawSymbol.cpp:1104
bool hasSetJump() const override
Definition DIARawSymbol.cpp:1058
uint32_t getLiveRangeStartAddressOffset() const override
Definition DIARawSymbol.cpp:664
uint32_t getStride() const override
Definition DIARawSymbol.cpp:782
uint32_t getRank() const override
Definition DIARawSymbol.cpp:737
bool isIndirectVirtualBaseClass() const override
Definition DIARawSymbol.cpp:1112
bool hasFarReturn() const override
Definition DIARawSymbol.cpp:946
uint32_t getNumberOfAcceleratorPointerTags() const override
Definition DIARawSymbol.cpp:696
uint32_t getAddressSection() const override
Definition DIARawSymbol.cpp:584
bool isConstType() const override
Definition DIARawSymbol.cpp:958
uint64_t getLength() const override
Definition DIARawSymbol.cpp:921
std::unique_ptr< IPDBEnumSymbols > findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t RVA) const override
Definition DIARawSymbol.cpp:469
bool isPointerToMemberFunction() const override
Definition DIARawSymbol.cpp:1178
PDB_BuiltinType getBuiltinType() const override
Definition DIARawSymbol.cpp:615
std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type) const override
Definition DIARawSymbol.cpp:398
SymIndexId getClassParentId() const override
Definition DIARawSymbol.cpp:629
bool isAcceleratorPointerTagLiveRange() const override
Definition DIARawSymbol.cpp:1071
bool isVirtualBaseClass() const override
Definition DIARawSymbol.cpp:1252
bool isRestrictedType() const override
Definition DIARawSymbol.cpp:1198
bool hasDebugInfo() const override
Definition DIARawSymbol.cpp:994
codeview::RegisterId getLocalBasePointerRegisterId() const override
Definition DIARawSymbol.cpp:679
SymIndexId getSymIndexId() const override
Definition DIARawSymbol.cpp:794
std::string getObjectFileName() const override
Definition DIARawSymbol.cpp:717
uint64_t getLiveRangeLength() const override
Definition DIARawSymbol.cpp:925
bool hasFramePointer() const override
Definition DIARawSymbol.cpp:1018
bool hasManagedCode() const override
Definition DIARawSymbol.cpp:1026
PDB_LocType getLocationType() const override
Definition DIARawSymbol.cpp:906
bool hasCastOperator() const override
Definition DIARawSymbol.cpp:990
bool isMatrixRowMajor() const override
Definition DIARawSymbol.cpp:1137
uint32_t getToken() const override
Definition DIARawSymbol.cpp:823
bool hasPrivateSymbols() const override
Definition DIARawSymbol.cpp:1230
uint32_t getBaseDataSlot() const override
Definition DIARawSymbol.cpp:607
SymIndexId getLexicalParentId() const override
Definition DIARawSymbol.cpp:656
int32_t getVirtualBasePointerOffset() const override
Definition DIARawSymbol.cpp:902
bool getAddressTaken() const override
Definition DIARawSymbol.cpp:970
uint32_t getLiveRangeStartRelativeVirtualAddress() const override
Definition DIARawSymbol.cpp:674
void getDataBytes(llvm::SmallVector< uint8_t, 32 > &bytes) const override
Definition DIARawSymbol.cpp:550
bool isMSILCode() const override
Definition DIARawSymbol.cpp:1145
std::string getLibraryName() const override
Definition DIARawSymbol.cpp:660
bool hasInlineAttribute() const override
Definition DIARawSymbol.cpp:1010
bool hasAssignmentOperator() const override
Definition DIARawSymbol.cpp:982
uint64_t getVirtualAddress() const override
Definition DIARawSymbol.cpp:929
uint32_t getCount() const override
Definition DIARawSymbol.cpp:637
codeview::ThunkOrdinal getThunkOrdinal() const override
Definition DIARawSymbol.cpp:916
uint32_t getTargetSection() const override
Definition DIARawSymbol.cpp:811
PDB_Machine getMachineType() const override
Definition DIARawSymbol.cpp:911
std::unique_ptr< PDBSymbolTypeBuiltin > getVirtualBaseTableType() const override
Definition DIARawSymbol.cpp:869
bool hasSecurityChecks() const override
Definition DIARawSymbol.cpp:1054
uint32_t getTargetOffset() const override
Definition DIARawSymbol.cpp:798
bool isRValueReference() const override
Definition DIARawSymbol.cpp:1186
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
Definition DIARawSymbol.cpp:218
std::unique_ptr< IPDBEnumLineNumbers > findInlineeLinesByVA(uint64_t VA, uint32_t Length) const override
Definition DIARawSymbol.cpp:542
IPDBSession defines an interface used to provide a context for querying debug information from a debu...
static std::unique_ptr< ConcreteT > createAs(const IPDBSession &PDBSession, std::unique_ptr< IPDBRawSymbol > RawSymbol)
This class implements an extremely fast bulk output stream that can only output to a stream.
ThunkOrdinal
These values correspond to the THUNK_ORDINAL enumeration.
SmallVector< unsigned char, 0 > ByteArray
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
void dumpSymbolField(raw_ostream &OS, StringRef Name, T Value, int Indent)
PDB_BuiltinType
These values correspond to the Basictype enumeration, and are documented here: https://msdn....
PDB_UdtType
These values correspond to the UdtKind enumeration, and are documented here: https://msdn....
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....
PDB_LocType
These values correspond to the LocationType enumeration, and are documented here: https://msdn....
PDB_DataKind
These values correspond to the DataKind enumeration, and are documented here: https://msdn....
PDB_UndnameFlags
These values correspond to the flags that can be combined to control the return of an undecorated nam...
codeview::CPUType PDB_Cpu
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....
codeview::SourceLanguage PDB_Lang
These values correspond to the CV_CFL_LANG enumeration, and are documented here: https://msdn....
LLVM_ABI void dumpSymbolIdField(raw_ostream &OS, StringRef Name, SymIndexId Value, int Indent, const IPDBSession &Session, PdbSymbolIdField FieldId, PdbSymbolIdField ShowFlags, PdbSymbolIdField RecurseFlags)
codeview::CallingConvention PDB_CallingConv
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
This is an optimization pass for GlobalISel generic memory operations.
CastInfo< X, std::unique_ptr< Y > >::CastResultType unique_dyn_cast(std::unique_ptr< Y > &Val)
unique_dyn_cast - Given a unique_ptr, try to return a unique_ptr, taking ownership of the in...
FunctionAddr VTableAddr uintptr_t uintptr_t DataSize
FunctionAddr VTableAddr uintptr_t uintptr_t Version
LLVM_ABI bool convertUTF16ToUTF8String(ArrayRef< char > SrcBytes, std::string &Out)
Converts a stream of raw bytes assumed to be UTF16 into a UTF8 std::string.
auto count(R &&Range, const E &Element)
Wrapper function around std::count to count the number of times an element Element occurs in the give...
raw_ostream & operator<<(raw_ostream &OS, const APFixedPoint &FX)
LLVM_ABI bool convertUTF8ToUTF16String(StringRef SrcUTF8, SmallVectorImpl< UTF16 > &DstUTF16)
Converts a UTF-8 string into a UTF-16 string with native endianness.
This represents the 'GUID' type from windows.h.
Utility type to build an inheritance chain that makes it easy to rank overload candidates.