1 //===- DIARawSymbol.h - DIA implementation of IPDBRawSymbol ----*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_DEBUGINFO_PDB_DIA_DIARAWSYMBOL_H
11 #define LLVM_DEBUGINFO_PDB_DIA_DIARAWSYMBOL_H
13 #include "DIASupport.h"
14 #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, PDB_DumpLevel Level) const override;
24 CComPtr<IDiaSymbol> getDiaSymbol() const { return Symbol; }
26 std::unique_ptr<IPDBEnumSymbols>
27 DIARawSymbol::findChildren(PDB_SymType Type) const override;
28 std::unique_ptr<IPDBEnumSymbols>
29 findChildren(PDB_SymType Type, StringRef Name,
30 PDB_NameSearchFlags Flags) const override;
31 std::unique_ptr<IPDBEnumSymbols>
32 findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags,
33 uint32_t RVA) const override;
34 std::unique_ptr<IPDBEnumSymbols>
35 findInlineFramesByRVA(uint32_t RVA) const override;
37 void getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) const override;
38 void getFrontEndVersion(VersionInfo &Version) const override;
39 void getBackEndVersion(VersionInfo &Version) const override;
40 PDB_MemberAccess getAccess() const override;
41 uint32_t getAddressOffset() const override;
42 uint32_t getAddressSection() const override;
43 uint32_t getAge() const override;
44 uint32_t getArrayIndexTypeId() const override;
45 uint32_t getBaseDataOffset() const override;
46 uint32_t getBaseDataSlot() const override;
47 uint32_t getBaseSymbolId() const override;
48 PDB_BuiltinType getBuiltinType() const override;
49 uint32_t getBitPosition() const override;
50 PDB_CallingConv getCallingConvention() const override;
51 uint32_t getClassParentId() const override;
52 std::string getCompilerName() const override;
53 uint32_t getCount() const override;
54 uint32_t getCountLiveRanges() const override;
55 PDB_Lang getLanguage() const override;
56 uint32_t getLexicalParentId() const override;
57 std::string getLibraryName() const override;
58 uint32_t getLiveRangeStartAddressOffset() const override;
59 uint32_t getLiveRangeStartAddressSection() const override;
60 uint32_t getLiveRangeStartRelativeVirtualAddress() const override;
61 PDB_RegisterId getLocalBasePointerRegisterId() const override;
62 uint32_t getLowerBoundId() const override;
63 uint32_t getMemorySpaceKind() const override;
64 std::string getName() const override;
65 uint32_t getNumberOfAcceleratorPointerTags() const override;
66 uint32_t getNumberOfColumns() const override;
67 uint32_t getNumberOfModifiers() const override;
68 uint32_t getNumberOfRegisterIndices() const override;
69 uint32_t getNumberOfRows() const override;
70 std::string getObjectFileName() const override;
71 uint32_t getOemId() const override;
72 uint32_t getOemSymbolId() const override;
73 uint32_t getOffsetInUdt() const override;
74 PDB_Cpu getPlatform() const override;
75 uint32_t getRank() const override;
76 PDB_RegisterId getRegisterId() const override;
77 uint32_t getRegisterType() const override;
78 uint32_t getRelativeVirtualAddress() const override;
79 uint32_t getSamplerSlot() const override;
80 uint32_t getSignature() const override;
81 uint32_t getSizeInUdt() const override;
82 uint32_t getSlot() const override;
83 std::string getSourceFileName() const override;
84 uint32_t getStride() const override;
85 uint32_t getSubTypeId() const override;
86 std::string getSymbolsFileName() const override;
87 uint32_t getSymIndexId() const override;
88 uint32_t getTargetOffset() const override;
89 uint32_t getTargetRelativeVirtualAddress() const override;
90 uint64_t getTargetVirtualAddress() const override;
91 uint32_t getTargetSection() const override;
92 uint32_t getTextureSlot() const override;
93 uint32_t getTimeStamp() const override;
94 uint32_t getToken() const override;
95 uint32_t getTypeId() const override;
96 uint32_t getUavSlot() const override;
97 std::string getUndecoratedName() const override;
98 uint32_t getUnmodifiedTypeId() const override;
99 uint32_t getUpperBoundId() const override;
100 uint32_t getVirtualBaseDispIndex() const override;
101 uint32_t getVirtualBaseOffset() const override;
102 uint32_t getVirtualTableShapeId() const override;
103 PDB_DataKind getDataKind() const override;
104 PDB_SymType getSymTag() const override;
105 PDB_UniqueId getGuid() const override;
106 int32_t getOffset() const override;
107 int32_t getThisAdjust() const override;
108 int32_t getVirtualBasePointerOffset() const override;
109 PDB_LocType getLocationType() const override;
110 PDB_Machine getMachineType() const override;
111 PDB_ThunkOrdinal getThunkOrdinal() const override;
112 uint64_t getLength() const override;
113 uint64_t getLiveRangeLength() const override;
114 uint64_t getVirtualAddress() const override;
115 PDB_UdtType getUdtKind() const override;
116 bool hasConstructor() const override;
117 bool hasCustomCallingConvention() const override;
118 bool hasFarReturn() const override;
119 bool isCode() const override;
120 bool isCompilerGenerated() const override;
121 bool isConstType() const override;
122 bool isEditAndContinueEnabled() const override;
123 bool isFunction() const override;
124 bool getAddressTaken() const override;
125 bool getNoStackOrdering() const override;
126 bool hasAlloca() const override;
127 bool hasAssignmentOperator() const override;
128 bool hasCTypes() const override;
129 bool hasCastOperator() const override;
130 bool hasDebugInfo() const override;
131 bool hasEH() const override;
132 bool hasEHa() const override;
133 bool hasInlAsm() const override;
134 bool hasInlineAttribute() const override;
135 bool hasInterruptReturn() const override;
136 bool hasFramePointer() const override;
137 bool hasLongJump() const override;
138 bool hasManagedCode() const override;
139 bool hasNestedTypes() const override;
140 bool hasNoInlineAttribute() const override;
141 bool hasNoReturnAttribute() const override;
142 bool hasOptimizedCodeDebugInfo() const override;
143 bool hasOverloadedOperator() const override;
144 bool hasSEH() const override;
145 bool hasSecurityChecks() const override;
146 bool hasSetJump() const override;
147 bool hasStrictGSCheck() const override;
148 bool isAcceleratorGroupSharedLocal() const override;
149 bool isAcceleratorPointerTagLiveRange() const override;
150 bool isAcceleratorStubFunction() const override;
151 bool isAggregated() const override;
152 bool isIntroVirtualFunction() const override;
153 bool isCVTCIL() const override;
154 bool isConstructorVirtualBase() const override;
155 bool isCxxReturnUdt() const override;
156 bool isDataAligned() const override;
157 bool isHLSLData() const override;
158 bool isHotpatchable() const override;
159 bool isIndirectVirtualBaseClass() const override;
160 bool isInterfaceUdt() const override;
161 bool isIntrinsic() const override;
162 bool isLTCG() const override;
163 bool isLocationControlFlowDependent() const override;
164 bool isMSILNetmodule() const override;
165 bool isMatrixRowMajor() const override;
166 bool isManagedCode() const override;
167 bool isMSILCode() const override;
168 bool isMultipleInheritance() const override;
169 bool isNaked() const override;
170 bool isNested() const override;
171 bool isOptimizedAway() const override;
172 bool isPacked() const override;
173 bool isPointerBasedOnSymbolValue() const override;
174 bool isPointerToDataMember() const override;
175 bool isPointerToMemberFunction() const override;
176 bool isPureVirtual() const override;
177 bool isRValueReference() const override;
178 bool isRefUdt() const override;
179 bool isReference() const override;
180 bool isRestrictedType() const override;
181 bool isReturnValue() const override;
182 bool isSafeBuffers() const override;
183 bool isScoped() const override;
184 bool isSdl() const override;
185 bool isSingleInheritance() const override;
186 bool isSplitted() const override;
187 bool isStatic() const override;
188 bool hasPrivateSymbols() const override;
189 bool isUnalignedType() const override;
190 bool isUnreached() const override;
191 bool isValueUdt() const override;
192 bool isVirtual() const override;
193 bool isVirtualBaseClass() const override;
194 bool isVirtualInheritance() const override;
195 bool isVolatileType() const override;
198 const DIASession &Session;
199 CComPtr<IDiaSymbol> Symbol;