LLVM  3.7.0
DIARawSymbol.h
Go to the documentation of this file.
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"
15 
16 namespace llvm {
17 class DIASession;
18 class DIARawSymbol : public IPDBRawSymbol {
19 public:
20  DIARawSymbol(const DIASession &PDBSession, CComPtr<IDiaSymbol> DiaSymbol);
21 
22  void dump(raw_ostream &OS, int Indent) const override;
23 
24  CComPtr<IDiaSymbol> getDiaSymbol() const { return Symbol; }
25 
26  std::unique_ptr<IPDBEnumSymbols>
27  findChildren(PDB_SymType Type) const override;
28  std::unique_ptr<IPDBEnumSymbols>
30  PDB_NameSearchFlags Flags) const override;
31  std::unique_ptr<IPDBEnumSymbols>
33  uint32_t RVA) const override;
34  std::unique_ptr<IPDBEnumSymbols>
35  findInlineFramesByRVA(uint32_t RVA) const override;
36 
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;
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  Variant getValue() const override;
101  uint32_t getVirtualBaseDispIndex() const override;
102  uint32_t getVirtualBaseOffset() const override;
103  uint32_t getVirtualTableShapeId() const override;
104  PDB_DataKind getDataKind() const override;
105  PDB_SymType getSymTag() const override;
106  PDB_UniqueId getGuid() const override;
107  int32_t getOffset() const override;
108  int32_t getThisAdjust() const override;
109  int32_t getVirtualBasePointerOffset() const override;
110  PDB_LocType getLocationType() const override;
111  PDB_Machine getMachineType() const override;
112  PDB_ThunkOrdinal getThunkOrdinal() const override;
113  uint64_t getLength() const override;
114  uint64_t getLiveRangeLength() const override;
115  uint64_t getVirtualAddress() const override;
116  PDB_UdtType getUdtKind() const override;
117  bool hasConstructor() const override;
118  bool hasCustomCallingConvention() const override;
119  bool hasFarReturn() const override;
120  bool isCode() const override;
121  bool isCompilerGenerated() const override;
122  bool isConstType() const override;
123  bool isEditAndContinueEnabled() const override;
124  bool isFunction() const override;
125  bool getAddressTaken() const override;
126  bool getNoStackOrdering() const override;
127  bool hasAlloca() const override;
128  bool hasAssignmentOperator() const override;
129  bool hasCTypes() const override;
130  bool hasCastOperator() const override;
131  bool hasDebugInfo() const override;
132  bool hasEH() const override;
133  bool hasEHa() const override;
134  bool hasInlAsm() const override;
135  bool hasInlineAttribute() const override;
136  bool hasInterruptReturn() const override;
137  bool hasFramePointer() const override;
138  bool hasLongJump() const override;
139  bool hasManagedCode() const override;
140  bool hasNestedTypes() const override;
141  bool hasNoInlineAttribute() const override;
142  bool hasNoReturnAttribute() const override;
143  bool hasOptimizedCodeDebugInfo() const override;
144  bool hasOverloadedOperator() const override;
145  bool hasSEH() const override;
146  bool hasSecurityChecks() const override;
147  bool hasSetJump() const override;
148  bool hasStrictGSCheck() const override;
149  bool isAcceleratorGroupSharedLocal() const override;
150  bool isAcceleratorPointerTagLiveRange() const override;
151  bool isAcceleratorStubFunction() const override;
152  bool isAggregated() const override;
153  bool isIntroVirtualFunction() const override;
154  bool isCVTCIL() const override;
155  bool isConstructorVirtualBase() const override;
156  bool isCxxReturnUdt() const override;
157  bool isDataAligned() const override;
158  bool isHLSLData() const override;
159  bool isHotpatchable() const override;
160  bool isIndirectVirtualBaseClass() const override;
161  bool isInterfaceUdt() const override;
162  bool isIntrinsic() const override;
163  bool isLTCG() const override;
164  bool isLocationControlFlowDependent() const override;
165  bool isMSILNetmodule() const override;
166  bool isMatrixRowMajor() const override;
167  bool isManagedCode() const override;
168  bool isMSILCode() const override;
169  bool isMultipleInheritance() const override;
170  bool isNaked() const override;
171  bool isNested() const override;
172  bool isOptimizedAway() const override;
173  bool isPacked() const override;
174  bool isPointerBasedOnSymbolValue() const override;
175  bool isPointerToDataMember() const override;
176  bool isPointerToMemberFunction() const override;
177  bool isPureVirtual() const override;
178  bool isRValueReference() const override;
179  bool isRefUdt() const override;
180  bool isReference() const override;
181  bool isRestrictedType() const override;
182  bool isReturnValue() const override;
183  bool isSafeBuffers() const override;
184  bool isScoped() const override;
185  bool isSdl() const override;
186  bool isSingleInheritance() const override;
187  bool isSplitted() const override;
188  bool isStatic() const override;
189  bool hasPrivateSymbols() const override;
190  bool isUnalignedType() const override;
191  bool isUnreached() const override;
192  bool isValueUdt() const override;
193  bool isVirtual() const override;
194  bool isVirtualBaseClass() const override;
195  bool isVirtualInheritance() const override;
196  bool isVolatileType() const override;
197  bool wasInlined() const override;
198  std::string getUnused() const override;
199 
200 private:
201  const DIASession &Session;
202  CComPtr<IDiaSymbol> Symbol;
203 };
204 }
205 
206 #endif
uint32_t getOemId() const override
uint32_t getRank() const override
bool hasNestedTypes() const override
bool isMatrixRowMajor() const override
uint32_t getOemSymbolId() const override
bool hasOverloadedOperator() const override
bool hasCTypes() const override
uint32_t getRelativeVirtualAddress() const override
std::unique_ptr< IPDBEnumSymbols > findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t RVA) const override
bool hasInlAsm() const override
std::string getObjectFileName() const override
bool hasStrictGSCheck() const override
bool isManagedCode() const override
bool isEditAndContinueEnabled() const override
void dump(raw_ostream &OS, int Indent) const override
bool isMSILNetmodule() const override
PDB_UniqueId getGuid() const override
uint64_t getVirtualAddress() const override
bool hasConstructor() const override
uint32_t getVirtualBaseOffset() const override
uint32_t getVirtualBaseDispIndex() const override
bool isSplitted() const override
bool isHLSLData() const override
PDB_ThunkOrdinal getThunkOrdinal() const override
uint32_t getUavSlot() const override
uint32_t getTargetSection() const override
bool hasSEH() const override
uint32_t getSymIndexId() const override
std::string getName() const override
bool isUnalignedType() const override
uint32_t getSizeInUdt() const override
IPDBRawSymbol defines an interface used to represent an arbitrary symbol.
Definition: IPDBRawSymbol.h:27
uint32_t getNumberOfRegisterIndices() const override
bool isReturnValue() const override
void getBackEndVersion(VersionInfo &Version) const override
uint32_t getOffsetInUdt() const override
bool isNested() const override
bool isInterfaceUdt() const override
uint32_t getLowerBoundId() const override
bool isValueUdt() const override
PDB_Machine
Definition: PDBTypes.h:172
std::string getCompilerName() const override
PDB_Lang getLanguage() const override
uint32_t getClassParentId() const override
int32_t getOffset() const override
Defines a 128-bit unique identifier.
Definition: PDBTypes.h:75
bool isSdl() const override
uint32_t getTextureSlot() const override
uint32_t getUpperBoundId() const override
PDB_UdtType getUdtKind() const override
PDB_BuiltinType
These values correspond to the Basictype enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/4szdtzc3.aspx.
Definition: PDBTypes.h:348
uint32_t getSlot() const override
PDB_RegisterId getRegisterId() const override
uint64_t getLength() const override
bool isRValueReference() const override
bool hasCustomCallingConvention() const override
PDB_DataKind
These values correspond to the DataKind enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/b2x2t313.aspx.
Definition: PDBTypes.h:255
bool getNoStackOrdering() const override
uint64_t getLiveRangeLength() const override
bool hasNoReturnAttribute() const override
PDB_DataKind getDataKind() const override
uint32_t getSubTypeId() const override
uint32_t getLiveRangeStartAddressSection() const override
std::string getSourceFileName() const override
bool isIntrinsic() const override
PDB_MemberAccess getAccess() const override
PDB_UdtType
These values correspond to the UdtKind enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/wcstk66t.aspx.
Definition: PDBTypes.h:336
bool isLTCG() const override
uint32_t getAddressSection() const override
bool isMultipleInheritance() const override
CComPtr< IDiaSymbol > getDiaSymbol() const
Definition: DIARawSymbol.h:24
bool isCompilerGenerated() const override
bool isPacked() const override
PDB_Machine getMachineType() const override
bool isPointerToDataMember() const override
uint32_t getUnmodifiedTypeId() const override
bool isConstType() const override
PDB_LocType
These values correspond to the LocationType enumeration, and are documented here: https://msdn...
Definition: PDBTypes.h:307
uint32_t getNumberOfModifiers() const override
int32_t getVirtualBasePointerOffset() const override
bool getAddressTaken() const override
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
Definition: PDBTypes.h:94
bool isVolatileType() const override
bool isCxxReturnUdt() const override
uint32_t getLiveRangeStartRelativeVirtualAddress() const override
The instances of the Type class are immutable: once they are created, they are never changed...
Definition: Type.h:45
uint32_t getBaseDataOffset() const override
bool hasLongJump() const override
bool hasInlineAttribute() const override
uint32_t getSignature() const override
PDB_RegisterId
Definition: PDBTypes.h:369
bool isIndirectVirtualBaseClass() const override
PDB_CallingConv
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
Definition: PDBTypes.h:202
bool isHotpatchable() const override
PDB_SymType getSymTag() const override
uint32_t getNumberOfRows() const override
bool isAcceleratorStubFunction() const override
uint32_t getTypeId() const override
bool hasNoInlineAttribute() const override
bool hasAssignmentOperator() const override
bool isOptimizedAway() const override
bool hasEHa() const override
bool isVirtualBaseClass() const override
bool isReference() const override
bool hasFramePointer() const override
bool hasFarReturn() const override
PDB_BuiltinType getBuiltinType() const override
PDB_Cpu
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn...
Definition: PDBTypes.h:110
bool isCVTCIL() const override
bool isLocationControlFlowDependent() const override
std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type) const override
uint32_t getLiveRangeStartAddressOffset() const override
bool hasAlloca() const override
void getFrontEndVersion(VersionInfo &Version) const override
PDB_Cpu getPlatform() const override
uint32_t getLexicalParentId() const override
bool isPointerToMemberFunction() const override
uint32_t getAddressOffset() const override
bool isVirtual() const override
uint32_t getMemorySpaceKind() const override
uint32_t getNumberOfAcceleratorPointerTags() const override
uint32_t getTimeStamp() const override
uint32_t getTargetOffset() const override
void getDataBytes(llvm::SmallVector< uint8_t, 32 > &bytes) const override
uint32_t getBitPosition() const override
uint32_t getNumberOfColumns() const override
bool isFunction() const override
bool isRefUdt() const override
uint32_t getToken() const override
bool isAggregated() const override
PDB_LocType getLocationType() const override
bool hasPrivateSymbols() const override
uint64_t getTargetVirtualAddress() const override
PDB_CallingConv getCallingConvention() const override
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bkedss5f.aspx.
Definition: PDBTypes.h:270
PDB_ThunkOrdinal
These values correspond to the THUNK_ORDINAL enumeration, and are documented here: https://msdn...
Definition: PDBTypes.h:324
uint32_t getAge() const override
uint32_t getArrayIndexTypeId() const override
bool isSingleInheritance() const override
uint32_t getStride() const override
bool hasInterruptReturn() const override
std::string getSymbolsFileName() const override
bool isScoped() const override
uint32_t getTargetRelativeVirtualAddress() const override
bool hasOptimizedCodeDebugInfo() const override
std::string getLibraryName() const override
uint32_t getRegisterType() const override
bool hasEH() const override
bool hasSecurityChecks() const override
DIARawSymbol(const DIASession &PDBSession, CComPtr< IDiaSymbol > DiaSymbol)
bool hasCastOperator() const override
std::string getUndecoratedName() const override
PDB_Lang
These values correspond to the CV_CFL_LANG enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bw3aekw6.aspx.
Definition: PDBTypes.h:233
bool isStatic() const override
bool isNaked() const override
bool isSafeBuffers() const override
bool isCode() const override
uint32_t getVirtualTableShapeId() const override
bool isUnreached() const override
bool isPureVirtual() const override
uint32_t getCountLiveRanges() const override
uint32_t getCount() const override
bool hasSetJump() const override
std::string getUnused() const override
bool wasInlined() const override
uint32_t getBaseSymbolId() const override
Variant getValue() const override
bool isDataAligned() const override
bool isVirtualInheritance() const override
PDB_MemberAccess
Definition: PDBTypes.h:421
bool isPointerBasedOnSymbolValue() const override
This class implements an extremely fast bulk output stream that can only output to a stream...
Definition: raw_ostream.h:38
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:40
PDB_RegisterId getLocalBasePointerRegisterId() const override
bool isAcceleratorPointerTagLiveRange() const override
uint32_t getBaseDataSlot() const override
bool hasManagedCode() const override
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByRVA(uint32_t RVA) const override
bool isConstructorVirtualBase() const override
bool isAcceleratorGroupSharedLocal() const override
bool isRestrictedType() const override
int32_t getThisAdjust() const override
bool isMSILCode() const override
bool hasDebugInfo() const override
bool isIntroVirtualFunction() const override
uint32_t getSamplerSlot() const override