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