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
16namespace llvm {
17namespace pdb {
18class DIASession;
19class DIARawSymbol : public IPDBRawSymbol {
20public:
21  DIARawSymbol(const DIASession &PDBSession, CComPtr<IDiaSymbol> DiaSymbol);
22
23  void dump(raw_ostream &OS, int Indent) const override;
24
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  std::unique_ptr<PDBSymbolTypeBuiltin>
106  getVirtualBaseTableType() const override;
107  PDB_DataKind getDataKind() const override;
108  PDB_SymType getSymTag() const override;
109  codeview::GUID getGuid() const override;
110  int32_t getOffset() const override;
111  int32_t getThisAdjust() const override;
112  int32_t getVirtualBasePointerOffset() const override;
113  PDB_LocType getLocationType() const override;
114  PDB_Machine getMachineType() const override;
115  codeview::ThunkOrdinal getThunkOrdinal() const override;
116  uint64_t getLength() const override;
117  uint64_t getLiveRangeLength() const override;
118  uint64_t getVirtualAddress() const override;
119  PDB_UdtType getUdtKind() const override;
120  bool hasConstructor() const override;
121  bool hasCustomCallingConvention() const override;
122  bool hasFarReturn() const override;
123  bool isCode() const override;
124  bool isCompilerGenerated() const override;
125  bool isConstType() const override;
126  bool isEditAndContinueEnabled() const override;
127  bool isFunction() const override;
128  bool getAddressTaken() const override;
129  bool getNoStackOrdering() const override;
130  bool hasAlloca() const override;
131  bool hasAssignmentOperator() const override;
132  bool hasCTypes() const override;
133  bool hasCastOperator() const override;
134  bool hasDebugInfo() const override;
135  bool hasEH() const override;
136  bool hasEHa() const override;
137  bool hasInlAsm() const override;
138  bool hasInlineAttribute() const override;
139  bool hasInterruptReturn() const override;
140  bool hasFramePointer() const override;
141  bool hasLongJump() const override;
142  bool hasManagedCode() const override;
143  bool hasNestedTypes() const override;
144  bool hasNoInlineAttribute() const override;
145  bool hasNoReturnAttribute() const override;
146  bool hasOptimizedCodeDebugInfo() const override;
147  bool hasOverloadedOperator() const override;
148  bool hasSEH() const override;
149  bool hasSecurityChecks() const override;
150  bool hasSetJump() const override;
151  bool hasStrictGSCheck() const override;
152  bool isAcceleratorGroupSharedLocal() const override;
153  bool isAcceleratorPointerTagLiveRange() const override;
154  bool isAcceleratorStubFunction() const override;
155  bool isAggregated() const override;
156  bool isIntroVirtualFunction() const override;
157  bool isCVTCIL() const override;
158  bool isConstructorVirtualBase() const override;
159  bool isCxxReturnUdt() const override;
160  bool isDataAligned() const override;
161  bool isHLSLData() const override;
162  bool isHotpatchable() const override;
163  bool isIndirectVirtualBaseClass() const override;
164  bool isInterfaceUdt() const override;
165  bool isIntrinsic() const override;
166  bool isLTCG() const override;
167  bool isLocationControlFlowDependent() const override;
168  bool isMSILNetmodule() const override;
169  bool isMatrixRowMajor() const override;
170  bool isManagedCode() const override;
171  bool isMSILCode() const override;
172  bool isMultipleInheritance() const override;
173  bool isNaked() const override;
174  bool isNested() const override;
175  bool isOptimizedAway() const override;
176  bool isPacked() const override;
177  bool isPointerBasedOnSymbolValue() const override;
178  bool isPointerToDataMember() const override;
179  bool isPointerToMemberFunction() const override;
180  bool isPureVirtual() const override;
181  bool isRValueReference() const override;
182  bool isRefUdt() const override;
183  bool isReference() const override;
184  bool isRestrictedType() const override;
185  bool isReturnValue() const override;
186  bool isSafeBuffers() const override;
187  bool isScoped() const override;
188  bool isSdl() const override;
189  bool isSingleInheritance() const override;
190  bool isSplitted() const override;
191  bool isStatic() const override;
192  bool hasPrivateSymbols() const override;
193  bool isUnalignedType() const override;
194  bool isUnreached() const override;
195  bool isValueUdt() const override;
196  bool isVirtual() const override;
197  bool isVirtualBaseClass() const override;
198  bool isVirtualInheritance() const override;
199  bool isVolatileType() const override;
200  bool wasInlined() const override;
201  std::string getUnused() const override;
202
203private:
204  const DIASession &Session;
205  CComPtr<IDiaSymbol> Symbol;
206};
207}
208}
209
210#endif
211