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