LLVM 17.0.0git
NativeRawSymbol.h
Go to the documentation of this file.
1//==- NativeRawSymbol.h - Native implementation of IPDBRawSymbol -*- C++ -*-==//
2//
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
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVERAWSYMBOL_H
10#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVERAWSYMBOL_H
11
13#include <cstdint>
14#include <memory>
15
16namespace llvm {
17namespace pdb {
18
19class NativeSession;
20
22 friend class SymbolCache;
23 virtual void initialize() {}
24
25public:
28
29 void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
30 PdbSymbolIdField RecurseIdFields) const override;
31
32 std::unique_ptr<IPDBEnumSymbols>
33 findChildren(PDB_SymType Type) const override;
34 std::unique_ptr<IPDBEnumSymbols>
36 PDB_NameSearchFlags Flags) const override;
37 std::unique_ptr<IPDBEnumSymbols>
40 uint32_t Section, uint32_t Offset) const override;
41 std::unique_ptr<IPDBEnumSymbols>
43 uint64_t VA) const override;
44 std::unique_ptr<IPDBEnumSymbols>
46 uint32_t RVA) const override;
47
48 std::unique_ptr<IPDBEnumSymbols>
49 findInlineFramesByAddr(uint32_t Section, uint32_t Offset) const override;
50 std::unique_ptr<IPDBEnumSymbols>
51 findInlineFramesByRVA(uint32_t RVA) const override;
52 std::unique_ptr<IPDBEnumSymbols>
53 findInlineFramesByVA(uint64_t VA) const override;
54
55 std::unique_ptr<IPDBEnumLineNumbers> findInlineeLines() const override;
56 std::unique_ptr<IPDBEnumLineNumbers>
58 uint32_t Length) const override;
59 std::unique_ptr<IPDBEnumLineNumbers>
60 findInlineeLinesByRVA(uint32_t RVA, uint32_t Length) const override;
61 std::unique_ptr<IPDBEnumLineNumbers>
62 findInlineeLinesByVA(uint64_t VA, uint32_t Length) const override;
63
64 void getDataBytes(SmallVector<uint8_t, 32> &Bytes) const override;
65 void getFrontEndVersion(VersionInfo &Version) const override;
66 void getBackEndVersion(VersionInfo &Version) const override;
67 PDB_MemberAccess getAccess() const override;
68 uint32_t getAddressOffset() const override;
69 uint32_t getAddressSection() const override;
70 uint32_t getAge() const override;
71 SymIndexId getArrayIndexTypeId() const override;
72 uint32_t getBaseDataOffset() const override;
73 uint32_t getBaseDataSlot() const override;
74 SymIndexId getBaseSymbolId() const override;
75 PDB_BuiltinType getBuiltinType() const override;
76 uint32_t getBitPosition() const override;
78 SymIndexId getClassParentId() const override;
79 std::string getCompilerName() const override;
80 uint32_t getCount() const override;
81 uint32_t getCountLiveRanges() const override;
82 PDB_Lang getLanguage() const override;
83 SymIndexId getLexicalParentId() const override;
84 std::string getLibraryName() const override;
89 SymIndexId getLowerBoundId() const override;
90 uint32_t getMemorySpaceKind() const override;
91 std::string getName() const override;
93 uint32_t getNumberOfColumns() const override;
94 uint32_t getNumberOfModifiers() const override;
95 uint32_t getNumberOfRegisterIndices() const override;
96 uint32_t getNumberOfRows() const override;
97 std::string getObjectFileName() const override;
98 uint32_t getOemId() const override;
99 SymIndexId getOemSymbolId() const override;
100 uint32_t getOffsetInUdt() const override;
101 PDB_Cpu getPlatform() const override;
102 uint32_t getRank() const override;
103 codeview::RegisterId getRegisterId() const override;
104 uint32_t getRegisterType() const override;
105 uint32_t getRelativeVirtualAddress() const override;
106 uint32_t getSamplerSlot() const override;
107 uint32_t getSignature() const override;
108 uint32_t getSizeInUdt() const override;
109 uint32_t getSlot() const override;
110 std::string getSourceFileName() const override;
111 std::unique_ptr<IPDBLineNumber> getSrcLineOnTypeDefn() const override;
112 uint32_t getStride() const override;
113 SymIndexId getSubTypeId() const override;
114 std::string getSymbolsFileName() const override;
115 SymIndexId getSymIndexId() const override;
116 uint32_t getTargetOffset() const override;
118 uint64_t getTargetVirtualAddress() const override;
119 uint32_t getTargetSection() const override;
120 uint32_t getTextureSlot() const override;
121 uint32_t getTimeStamp() const override;
122 uint32_t getToken() const override;
123 SymIndexId getTypeId() const override;
124 uint32_t getUavSlot() const override;
125 std::string getUndecoratedName() const override;
126 std::string getUndecoratedNameEx(PDB_UndnameFlags Flags) const override;
127 SymIndexId getUnmodifiedTypeId() const override;
128 SymIndexId getUpperBoundId() const override;
129 Variant getValue() const override;
130 uint32_t getVirtualBaseDispIndex() const override;
131 uint32_t getVirtualBaseOffset() const override;
132 SymIndexId getVirtualTableShapeId() const override;
133 std::unique_ptr<PDBSymbolTypeBuiltin>
134 getVirtualBaseTableType() const override;
135 PDB_DataKind getDataKind() const override;
136 PDB_SymType getSymTag() const override;
137 codeview::GUID getGuid() const override;
138 int32_t getOffset() const override;
139 int32_t getThisAdjust() const override;
140 int32_t getVirtualBasePointerOffset() const override;
141 PDB_LocType getLocationType() const override;
142 PDB_Machine getMachineType() const override;
144 uint64_t getLength() const override;
145 uint64_t getLiveRangeLength() const override;
146 uint64_t getVirtualAddress() const override;
147 PDB_UdtType getUdtKind() const override;
148 bool hasConstructor() const override;
149 bool hasCustomCallingConvention() const override;
150 bool hasFarReturn() const override;
151 bool isCode() const override;
152 bool isCompilerGenerated() const override;
153 bool isConstType() const override;
154 bool isEditAndContinueEnabled() const override;
155 bool isFunction() const override;
156 bool getAddressTaken() const override;
157 bool getNoStackOrdering() const override;
158 bool hasAlloca() const override;
159 bool hasAssignmentOperator() const override;
160 bool hasCTypes() const override;
161 bool hasCastOperator() const override;
162 bool hasDebugInfo() const override;
163 bool hasEH() const override;
164 bool hasEHa() const override;
165 bool hasInlAsm() const override;
166 bool hasInlineAttribute() const override;
167 bool hasInterruptReturn() const override;
168 bool hasFramePointer() const override;
169 bool hasLongJump() const override;
170 bool hasManagedCode() const override;
171 bool hasNestedTypes() const override;
172 bool hasNoInlineAttribute() const override;
173 bool hasNoReturnAttribute() const override;
174 bool hasOptimizedCodeDebugInfo() const override;
175 bool hasOverloadedOperator() const override;
176 bool hasSEH() const override;
177 bool hasSecurityChecks() const override;
178 bool hasSetJump() const override;
179 bool hasStrictGSCheck() const override;
180 bool isAcceleratorGroupSharedLocal() const override;
181 bool isAcceleratorPointerTagLiveRange() const override;
182 bool isAcceleratorStubFunction() const override;
183 bool isAggregated() const override;
184 bool isIntroVirtualFunction() const override;
185 bool isCVTCIL() const override;
186 bool isConstructorVirtualBase() const override;
187 bool isCxxReturnUdt() const override;
188 bool isDataAligned() const override;
189 bool isHLSLData() const override;
190 bool isHotpatchable() const override;
191 bool isIndirectVirtualBaseClass() const override;
192 bool isInterfaceUdt() const override;
193 bool isIntrinsic() const override;
194 bool isLTCG() const override;
195 bool isLocationControlFlowDependent() const override;
196 bool isMSILNetmodule() const override;
197 bool isMatrixRowMajor() const override;
198 bool isManagedCode() const override;
199 bool isMSILCode() const override;
200 bool isMultipleInheritance() const override;
201 bool isNaked() const override;
202 bool isNested() const override;
203 bool isOptimizedAway() const override;
204 bool isPacked() const override;
205 bool isPointerBasedOnSymbolValue() const override;
206 bool isPointerToDataMember() const override;
207 bool isPointerToMemberFunction() const override;
208 bool isPureVirtual() const override;
209 bool isRValueReference() const override;
210 bool isRefUdt() const override;
211 bool isReference() const override;
212 bool isRestrictedType() const override;
213 bool isReturnValue() const override;
214 bool isSafeBuffers() const override;
215 bool isScoped() const override;
216 bool isSdl() const override;
217 bool isSingleInheritance() const override;
218 bool isSplitted() const override;
219 bool isStatic() const override;
220 bool hasPrivateSymbols() const override;
221 bool isUnalignedType() const override;
222 bool isUnreached() const override;
223 bool isValueUdt() const override;
224 bool isVirtual() const override;
225 bool isVirtualBaseClass() const override;
226 bool isVirtualInheritance() const override;
227 bool isVolatileType() const override;
228 bool wasInlined() const override;
229 std::string getUnused() const override;
230
231protected:
235};
236
237} // end namespace pdb
238} // end namespace llvm
239
240#endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVERAWSYMBOL_H
std::string Name
static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, ArrayRef< StringLiteral > StandardNames)
Initialize the set of available library functions based on the specified target triple.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Definition: SmallVector.h:1200
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45
IPDBRawSymbol defines an interface used to represent an arbitrary symbol.
Definition: IPDBRawSymbol.h:45
uint32_t getSignature() const override
bool isScoped() const override
int32_t getThisAdjust() const override
bool isRValueReference() const override
SymIndexId getVirtualTableShapeId() const override
SymIndexId getSymIndexId() const override
std::string getUnused() const override
bool isConstructorVirtualBase() const override
uint32_t getUavSlot() const override
bool hasAssignmentOperator() const override
uint64_t getLength() const override
bool hasInlineAttribute() const override
bool isRestrictedType() const override
PDB_Lang getLanguage() const override
uint32_t getSamplerSlot() const override
uint32_t getAddressSection() const override
bool isCode() const override
bool isEditAndContinueEnabled() const override
PDB_MemberAccess getAccess() const override
bool isLocationControlFlowDependent() const override
std::string getObjectFileName() const override
bool hasDebugInfo() const override
bool isSplitted() const override
bool isNested() const override
bool isAcceleratorPointerTagLiveRange() const override
bool hasEHa() const override
bool isDataAligned() const override
std::unique_ptr< IPDBEnumLineNumbers > findInlineeLines() const override
bool isPointerToMemberFunction() const override
SymIndexId getUpperBoundId() const override
bool hasStrictGSCheck() const override
uint32_t getCount() const override
std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type) const override
uint32_t getTimeStamp() const override
bool hasPrivateSymbols() const override
bool isNaked() const override
void getBackEndVersion(VersionInfo &Version) const override
uint32_t getTargetOffset() const override
bool isValueUdt() const override
uint32_t getVirtualBaseOffset() const override
bool isPointerBasedOnSymbolValue() const override
std::string getSourceFileName() const override
void getFrontEndVersion(VersionInfo &Version) const override
int32_t getVirtualBasePointerOffset() const override
int32_t getOffset() const override
bool isManagedCode() const override
bool hasCastOperator() const override
uint32_t getRelativeVirtualAddress() const override
uint32_t getTargetSection() const override
uint32_t getAge() const override
bool isRefUdt() const override
SymIndexId getBaseSymbolId() const override
uint32_t getSlot() const override
uint64_t getVirtualAddress() const override
std::unique_ptr< PDBSymbolTypeBuiltin > getVirtualBaseTableType() const override
uint32_t getRank() const override
std::unique_ptr< IPDBEnumLineNumbers > findInlineeLinesByVA(uint64_t VA, uint32_t Length) const override
bool isIntrinsic() const override
bool isCVTCIL() const override
SymIndexId getLowerBoundId() const override
uint64_t getLiveRangeLength() const override
PDB_LocType getLocationType() const override
bool isSdl() const override
bool isVirtualBaseClass() const override
bool isCompilerGenerated() const override
bool hasLongJump() const override
std::string getUndecoratedName() const override
PDB_Cpu getPlatform() const override
SymIndexId getTypeId() const override
bool hasOverloadedOperator() const override
std::unique_ptr< IPDBEnumSymbols > findChildrenByAddr(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t Section, uint32_t Offset) const override
SymIndexId getClassParentId() const override
uint32_t getBaseDataOffset() const override
std::string getUndecoratedNameEx(PDB_UndnameFlags Flags) const override
bool isAcceleratorStubFunction() const override
bool hasSEH() const override
bool isAcceleratorGroupSharedLocal() const override
uint32_t getLiveRangeStartAddressOffset() const override
bool isLTCG() const override
bool hasOptimizedCodeDebugInfo() const override
codeview::ThunkOrdinal getThunkOrdinal() const override
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByRVA(uint32_t RVA) const override
bool isIndirectVirtualBaseClass() const override
uint32_t getSizeInUdt() const override
bool getAddressTaken() const override
bool hasInlAsm() const override
bool getNoStackOrdering() const override
bool isMatrixRowMajor() const override
bool hasSetJump() const override
bool isPointerToDataMember() const override
std::string getCompilerName() const override
uint32_t getVirtualBaseDispIndex() const override
bool isCxxReturnUdt() const override
bool hasFramePointer() const override
bool isUnalignedType() const override
bool isSingleInheritance() const override
bool hasInterruptReturn() const override
SymIndexId getUnmodifiedTypeId() const override
Variant getValue() const override
bool isAggregated() const override
uint32_t getNumberOfRegisterIndices() const override
uint32_t getAddressOffset() const override
uint32_t getNumberOfModifiers() const override
uint32_t getBaseDataSlot() const override
bool isVolatileType() const override
bool isMSILCode() const override
SymIndexId getOemSymbolId() const override
bool isHotpatchable() const override
bool isPureVirtual() const override
SymIndexId getSubTypeId() const override
bool isPacked() const override
uint64_t getTargetVirtualAddress() const override
uint32_t getLiveRangeStartAddressSection() const override
bool hasEH() const override
bool wasInlined() const override
bool hasCTypes() const override
bool isIntroVirtualFunction() const override
bool hasNoReturnAttribute() const override
codeview::GUID getGuid() const override
PDB_CallingConv getCallingConvention() const override
uint32_t getTargetRelativeVirtualAddress() const override
PDB_DataKind getDataKind() const override
uint32_t getToken() const override
uint32_t getOemId() const override
uint32_t getRegisterType() const override
uint32_t getMemorySpaceKind() const override
bool hasFarReturn() const override
bool hasConstructor() const override
std::string getName() const override
std::unique_ptr< IPDBEnumSymbols > findChildrenByVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint64_t VA) const override
uint32_t getNumberOfAcceleratorPointerTags() const override
std::unique_ptr< IPDBEnumLineNumbers > findInlineeLinesByAddr(uint32_t Section, uint32_t Offset, uint32_t Length) const override
bool isReturnValue() const override
uint32_t getLiveRangeStartRelativeVirtualAddress() const override
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByVA(uint64_t VA) const override
std::unique_ptr< IPDBEnumSymbols > findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t RVA) const override
bool isConstType() const override
PDB_SymType getSymTag() const override
bool hasAlloca() const override
uint32_t getCountLiveRanges() const override
bool hasNoInlineAttribute() const override
uint32_t getTextureSlot() const override
std::string getLibraryName() const override
std::unique_ptr< IPDBLineNumber > getSrcLineOnTypeDefn() const override
bool isHLSLData() const override
uint32_t getOffsetInUdt() const override
bool isVirtual() const override
PDB_Machine getMachineType() const override
bool isStatic() const override
bool hasNestedTypes() const override
std::unique_ptr< IPDBEnumLineNumbers > findInlineeLinesByRVA(uint32_t RVA, uint32_t Length) const override
uint32_t getStride() const override
bool isMultipleInheritance() const override
bool isSafeBuffers() const override
uint32_t getBitPosition() const override
uint32_t getNumberOfColumns() const override
PDB_UdtType getUdtKind() const override
bool isOptimizedAway() const override
bool isFunction() const override
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
codeview::RegisterId getRegisterId() const override
PDB_BuiltinType getBuiltinType() const override
bool isInterfaceUdt() const override
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByAddr(uint32_t Section, uint32_t Offset) const override
bool hasSecurityChecks() const override
bool isReference() const override
codeview::RegisterId getLocalBasePointerRegisterId() const override
bool isUnreached() const override
bool hasManagedCode() const override
bool isMSILNetmodule() const override
std::string getSymbolsFileName() const override
bool hasCustomCallingConvention() const override
SymIndexId getArrayIndexTypeId() const override
SymIndexId getLexicalParentId() const override
void getDataBytes(SmallVector< uint8_t, 32 > &Bytes) const override
uint32_t getNumberOfRows() const override
bool isVirtualInheritance() const override
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition: raw_ostream.h:52
CPUType
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....
Definition: CodeView.h:75
CallingConvention
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
Definition: CodeView.h:175
ThunkOrdinal
These values correspond to the THUNK_ORDINAL enumeration.
Definition: CodeView.h:553
SourceLanguage
These values correspond to the CV_CFL_LANG enumeration, and are documented here: https://msdn....
Definition: CodeView.h:143
uint32_t SymIndexId
Definition: PDBTypes.h:26
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
Definition: PDBTypes.h:102
PDB_BuiltinType
These values correspond to the Basictype enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:335
PDB_MemberAccess
Definition: PDBTypes.h:385
PDB_UdtType
These values correspond to the UdtKind enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:310
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:243
PDB_LocType
These values correspond to the LocationType enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:292
PDB_DataKind
These values correspond to the DataKind enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:228
PDB_UndnameFlags
These values correspond to the flags that can be combined to control the return of an undecorated nam...
Definition: PDBTypes.h:362
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
@ Length
Definition: DWP.cpp:406
This represents the 'GUID' type from windows.h.
Definition: GUID.h:21