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