1 //===- DIARawSymbol.h - DIA implementation of IPDBRawSymbol ----*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #ifndef LLVM_DEBUGINFO_PDB_DIA_DIARAWSYMBOL_H
10 #define LLVM_DEBUGINFO_PDB_DIA_DIARAWSYMBOL_H
12 #include "DIASupport.h"
13 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
18 class DIARawSymbol
: public IPDBRawSymbol
{
20 DIARawSymbol(const DIASession
&PDBSession
, CComPtr
<IDiaSymbol
> DiaSymbol
);
22 void dump(raw_ostream
&OS
, int Indent
, PdbSymbolIdField ShowIdFields
,
23 PdbSymbolIdField RecurseIdFields
) const override
;
25 CComPtr
<IDiaSymbol
> getDiaSymbol() const { return Symbol
; }
27 std::unique_ptr
<IPDBEnumSymbols
>
28 findChildren(PDB_SymType Type
) const override
;
29 std::unique_ptr
<IPDBEnumSymbols
>
30 findChildren(PDB_SymType Type
, StringRef Name
,
31 PDB_NameSearchFlags Flags
) const override
;
32 std::unique_ptr
<IPDBEnumSymbols
>
33 findChildrenByAddr(PDB_SymType Type
, StringRef Name
,
34 PDB_NameSearchFlags Flags
,
35 uint32_t Section
, uint32_t Offset
) const override
;
36 std::unique_ptr
<IPDBEnumSymbols
>
37 findChildrenByVA(PDB_SymType Type
, StringRef Name
, PDB_NameSearchFlags Flags
,
38 uint64_t VA
) const override
;
39 std::unique_ptr
<IPDBEnumSymbols
>
40 findChildrenByRVA(PDB_SymType Type
, StringRef Name
, PDB_NameSearchFlags Flags
,
41 uint32_t RVA
) const override
;
43 std::unique_ptr
<IPDBEnumSymbols
>
44 findInlineFramesByAddr(uint32_t Section
, uint32_t Offset
) const override
;
45 std::unique_ptr
<IPDBEnumSymbols
>
46 findInlineFramesByRVA(uint32_t RVA
) const override
;
47 std::unique_ptr
<IPDBEnumSymbols
>
48 findInlineFramesByVA(uint64_t VA
) const override
;
50 std::unique_ptr
<IPDBEnumLineNumbers
> findInlineeLines() const override
;
51 std::unique_ptr
<IPDBEnumLineNumbers
>
52 findInlineeLinesByAddr(uint32_t Section
, uint32_t Offset
,
53 uint32_t Length
) const override
;
54 std::unique_ptr
<IPDBEnumLineNumbers
>
55 findInlineeLinesByRVA(uint32_t RVA
, uint32_t Length
) const override
;
56 std::unique_ptr
<IPDBEnumLineNumbers
>
57 findInlineeLinesByVA(uint64_t VA
, uint32_t Length
) const override
;
59 void getDataBytes(llvm::SmallVector
<uint8_t, 32> &bytes
) const override
;
60 void getFrontEndVersion(VersionInfo
&Version
) const override
;
61 void getBackEndVersion(VersionInfo
&Version
) const override
;
62 PDB_MemberAccess
getAccess() const override
;
63 uint32_t getAddressOffset() const override
;
64 uint32_t getAddressSection() const override
;
65 uint32_t getAge() const override
;
66 SymIndexId
getArrayIndexTypeId() const override
;
67 uint32_t getBaseDataOffset() const override
;
68 uint32_t getBaseDataSlot() const override
;
69 SymIndexId
getBaseSymbolId() const override
;
70 PDB_BuiltinType
getBuiltinType() const override
;
71 uint32_t getBitPosition() const override
;
72 PDB_CallingConv
getCallingConvention() const override
;
73 SymIndexId
getClassParentId() const override
;
74 std::string
getCompilerName() const override
;
75 uint32_t getCount() const override
;
76 uint32_t getCountLiveRanges() const override
;
77 PDB_Lang
getLanguage() const override
;
78 SymIndexId
getLexicalParentId() const override
;
79 std::string
getLibraryName() const override
;
80 uint32_t getLiveRangeStartAddressOffset() const override
;
81 uint32_t getLiveRangeStartAddressSection() const override
;
82 uint32_t getLiveRangeStartRelativeVirtualAddress() const override
;
83 codeview::RegisterId
getLocalBasePointerRegisterId() const override
;
84 SymIndexId
getLowerBoundId() const override
;
85 uint32_t getMemorySpaceKind() const override
;
86 std::string
getName() const override
;
87 uint32_t getNumberOfAcceleratorPointerTags() const override
;
88 uint32_t getNumberOfColumns() const override
;
89 uint32_t getNumberOfModifiers() const override
;
90 uint32_t getNumberOfRegisterIndices() const override
;
91 uint32_t getNumberOfRows() const override
;
92 std::string
getObjectFileName() const override
;
93 uint32_t getOemId() const override
;
94 SymIndexId
getOemSymbolId() const override
;
95 uint32_t getOffsetInUdt() const override
;
96 PDB_Cpu
getPlatform() const override
;
97 uint32_t getRank() const override
;
98 codeview::RegisterId
getRegisterId() const override
;
99 uint32_t getRegisterType() const override
;
100 uint32_t getRelativeVirtualAddress() const override
;
101 uint32_t getSamplerSlot() const override
;
102 uint32_t getSignature() const override
;
103 uint32_t getSizeInUdt() const override
;
104 uint32_t getSlot() const override
;
105 std::string
getSourceFileName() const override
;
106 std::unique_ptr
<IPDBLineNumber
> getSrcLineOnTypeDefn() const override
;
107 uint32_t getStride() const override
;
108 SymIndexId
getSubTypeId() const override
;
109 std::string
getSymbolsFileName() const override
;
110 SymIndexId
getSymIndexId() const override
;
111 uint32_t getTargetOffset() const override
;
112 uint32_t getTargetRelativeVirtualAddress() const override
;
113 uint64_t getTargetVirtualAddress() const override
;
114 uint32_t getTargetSection() const override
;
115 uint32_t getTextureSlot() const override
;
116 uint32_t getTimeStamp() const override
;
117 uint32_t getToken() const override
;
118 SymIndexId
getTypeId() const override
;
119 uint32_t getUavSlot() const override
;
120 std::string
getUndecoratedName() const override
;
121 std::string
getUndecoratedNameEx(PDB_UndnameFlags Flags
) const override
;
122 SymIndexId
getUnmodifiedTypeId() const override
;
123 SymIndexId
getUpperBoundId() const override
;
124 Variant
getValue() const override
;
125 uint32_t getVirtualBaseDispIndex() const override
;
126 uint32_t getVirtualBaseOffset() const override
;
127 SymIndexId
getVirtualTableShapeId() const override
;
128 std::unique_ptr
<PDBSymbolTypeBuiltin
>
129 getVirtualBaseTableType() const override
;
130 PDB_DataKind
getDataKind() const override
;
131 PDB_SymType
getSymTag() const override
;
132 codeview::GUID
getGuid() const override
;
133 int32_t getOffset() const override
;
134 int32_t getThisAdjust() const override
;
135 int32_t getVirtualBasePointerOffset() const override
;
136 PDB_LocType
getLocationType() const override
;
137 PDB_Machine
getMachineType() const override
;
138 codeview::ThunkOrdinal
getThunkOrdinal() const override
;
139 uint64_t getLength() const override
;
140 uint64_t getLiveRangeLength() const override
;
141 uint64_t getVirtualAddress() const override
;
142 PDB_UdtType
getUdtKind() const override
;
143 bool hasConstructor() const override
;
144 bool hasCustomCallingConvention() const override
;
145 bool hasFarReturn() const override
;
146 bool isCode() const override
;
147 bool isCompilerGenerated() const override
;
148 bool isConstType() const override
;
149 bool isEditAndContinueEnabled() const override
;
150 bool isFunction() const override
;
151 bool getAddressTaken() const override
;
152 bool getNoStackOrdering() const override
;
153 bool hasAlloca() const override
;
154 bool hasAssignmentOperator() const override
;
155 bool hasCTypes() const override
;
156 bool hasCastOperator() const override
;
157 bool hasDebugInfo() const override
;
158 bool hasEH() const override
;
159 bool hasEHa() const override
;
160 bool hasInlAsm() const override
;
161 bool hasInlineAttribute() const override
;
162 bool hasInterruptReturn() const override
;
163 bool hasFramePointer() const override
;
164 bool hasLongJump() const override
;
165 bool hasManagedCode() const override
;
166 bool hasNestedTypes() const override
;
167 bool hasNoInlineAttribute() const override
;
168 bool hasNoReturnAttribute() const override
;
169 bool hasOptimizedCodeDebugInfo() const override
;
170 bool hasOverloadedOperator() const override
;
171 bool hasSEH() const override
;
172 bool hasSecurityChecks() const override
;
173 bool hasSetJump() const override
;
174 bool hasStrictGSCheck() const override
;
175 bool isAcceleratorGroupSharedLocal() const override
;
176 bool isAcceleratorPointerTagLiveRange() const override
;
177 bool isAcceleratorStubFunction() const override
;
178 bool isAggregated() const override
;
179 bool isIntroVirtualFunction() const override
;
180 bool isCVTCIL() const override
;
181 bool isConstructorVirtualBase() const override
;
182 bool isCxxReturnUdt() const override
;
183 bool isDataAligned() const override
;
184 bool isHLSLData() const override
;
185 bool isHotpatchable() const override
;
186 bool isIndirectVirtualBaseClass() const override
;
187 bool isInterfaceUdt() const override
;
188 bool isIntrinsic() const override
;
189 bool isLTCG() const override
;
190 bool isLocationControlFlowDependent() const override
;
191 bool isMSILNetmodule() const override
;
192 bool isMatrixRowMajor() const override
;
193 bool isManagedCode() const override
;
194 bool isMSILCode() const override
;
195 bool isMultipleInheritance() const override
;
196 bool isNaked() const override
;
197 bool isNested() const override
;
198 bool isOptimizedAway() const override
;
199 bool isPacked() const override
;
200 bool isPointerBasedOnSymbolValue() const override
;
201 bool isPointerToDataMember() const override
;
202 bool isPointerToMemberFunction() const override
;
203 bool isPureVirtual() const override
;
204 bool isRValueReference() const override
;
205 bool isRefUdt() const override
;
206 bool isReference() const override
;
207 bool isRestrictedType() const override
;
208 bool isReturnValue() const override
;
209 bool isSafeBuffers() const override
;
210 bool isScoped() const override
;
211 bool isSdl() const override
;
212 bool isSingleInheritance() const override
;
213 bool isSplitted() const override
;
214 bool isStatic() const override
;
215 bool hasPrivateSymbols() const override
;
216 bool isUnalignedType() const override
;
217 bool isUnreached() const override
;
218 bool isValueUdt() const override
;
219 bool isVirtual() const override
;
220 bool isVirtualBaseClass() const override
;
221 bool isVirtualInheritance() const override
;
222 bool isVolatileType() const override
;
223 bool wasInlined() const override
;
224 std::string
getUnused() const override
;
227 const DIASession
&Session
;
228 CComPtr
<IDiaSymbol
> Symbol
;