File indexing completed on 2026-05-10 08:43:45
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLVM_DEBUGINFO_PDB_IPDBRAWSYMBOL_H
0010 #define LLVM_DEBUGINFO_PDB_IPDBRAWSYMBOL_H
0011
0012 #include "PDBTypes.h"
0013 #include "llvm/ADT/BitmaskEnum.h"
0014 #include "llvm/ADT/SmallVector.h"
0015 #include "llvm/DebugInfo/CodeView/CodeView.h"
0016 #include <memory>
0017
0018 namespace llvm {
0019 class raw_ostream;
0020 class StringRef;
0021
0022 namespace pdb {
0023
0024 enum class PdbSymbolIdField : uint32_t {
0025 None = 0,
0026 SymIndexId = 1 << 0,
0027 LexicalParent = 1 << 1,
0028 ClassParent = 1 << 2,
0029 Type = 1 << 3,
0030 UnmodifiedType = 1 << 4,
0031 All = 0xFFFFFFFF,
0032 LLVM_MARK_AS_BITMASK_ENUM( All)
0033 };
0034
0035 void dumpSymbolIdField(raw_ostream &OS, StringRef Name, SymIndexId Value,
0036 int Indent, const IPDBSession &Session,
0037 PdbSymbolIdField FieldId, PdbSymbolIdField ShowFlags,
0038 PdbSymbolIdField RecurseFlags);
0039
0040
0041
0042
0043
0044
0045 class IPDBRawSymbol {
0046 public:
0047 virtual ~IPDBRawSymbol();
0048
0049 virtual void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
0050 PdbSymbolIdField RecurseIdFields) const = 0;
0051
0052 virtual std::unique_ptr<IPDBEnumSymbols>
0053 findChildren(PDB_SymType Type) const = 0;
0054
0055 virtual std::unique_ptr<IPDBEnumSymbols>
0056 findChildren(PDB_SymType Type, StringRef Name,
0057 PDB_NameSearchFlags Flags) const = 0;
0058 virtual std::unique_ptr<IPDBEnumSymbols>
0059 findChildrenByAddr(PDB_SymType Type, StringRef Name,
0060 PDB_NameSearchFlags Flags,
0061 uint32_t Section, uint32_t Offset) const = 0;
0062 virtual std::unique_ptr<IPDBEnumSymbols>
0063 findChildrenByVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags,
0064 uint64_t VA) const = 0;
0065 virtual std::unique_ptr<IPDBEnumSymbols>
0066 findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags,
0067 uint32_t RVA) const = 0;
0068
0069 virtual std::unique_ptr<IPDBEnumSymbols>
0070 findInlineFramesByAddr(uint32_t Section, uint32_t Offset) const = 0;
0071 virtual std::unique_ptr<IPDBEnumSymbols>
0072 findInlineFramesByRVA(uint32_t RVA) const = 0;
0073 virtual std::unique_ptr<IPDBEnumSymbols>
0074 findInlineFramesByVA(uint64_t VA) const = 0;
0075
0076 virtual std::unique_ptr<IPDBEnumLineNumbers> findInlineeLines() const = 0;
0077 virtual std::unique_ptr<IPDBEnumLineNumbers>
0078 findInlineeLinesByAddr(uint32_t Section, uint32_t Offset,
0079 uint32_t Length) const = 0;
0080 virtual std::unique_ptr<IPDBEnumLineNumbers>
0081 findInlineeLinesByRVA(uint32_t RVA, uint32_t Length) const = 0;
0082 virtual std::unique_ptr<IPDBEnumLineNumbers>
0083 findInlineeLinesByVA(uint64_t VA, uint32_t Length) const = 0;
0084
0085 virtual void getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) const = 0;
0086 virtual void getBackEndVersion(VersionInfo &Version) const = 0;
0087 virtual PDB_MemberAccess getAccess() const = 0;
0088 virtual uint32_t getAddressOffset() const = 0;
0089 virtual uint32_t getAddressSection() const = 0;
0090 virtual uint32_t getAge() const = 0;
0091 virtual SymIndexId getArrayIndexTypeId() const = 0;
0092 virtual uint32_t getBaseDataOffset() const = 0;
0093 virtual uint32_t getBaseDataSlot() const = 0;
0094 virtual SymIndexId getBaseSymbolId() const = 0;
0095 virtual PDB_BuiltinType getBuiltinType() const = 0;
0096 virtual uint32_t getBitPosition() const = 0;
0097 virtual PDB_CallingConv getCallingConvention() const = 0;
0098 virtual SymIndexId getClassParentId() const = 0;
0099 virtual std::string getCompilerName() const = 0;
0100 virtual uint32_t getCount() const = 0;
0101 virtual uint32_t getCountLiveRanges() const = 0;
0102 virtual void getFrontEndVersion(VersionInfo &Version) const = 0;
0103 virtual PDB_Lang getLanguage() const = 0;
0104 virtual SymIndexId getLexicalParentId() const = 0;
0105 virtual std::string getLibraryName() const = 0;
0106 virtual uint32_t getLiveRangeStartAddressOffset() const = 0;
0107 virtual uint32_t getLiveRangeStartAddressSection() const = 0;
0108 virtual uint32_t getLiveRangeStartRelativeVirtualAddress() const = 0;
0109 virtual codeview::RegisterId getLocalBasePointerRegisterId() const = 0;
0110 virtual SymIndexId getLowerBoundId() const = 0;
0111 virtual uint32_t getMemorySpaceKind() const = 0;
0112 virtual std::string getName() const = 0;
0113 virtual uint32_t getNumberOfAcceleratorPointerTags() const = 0;
0114 virtual uint32_t getNumberOfColumns() const = 0;
0115 virtual uint32_t getNumberOfModifiers() const = 0;
0116 virtual uint32_t getNumberOfRegisterIndices() const = 0;
0117 virtual uint32_t getNumberOfRows() const = 0;
0118 virtual std::string getObjectFileName() const = 0;
0119 virtual uint32_t getOemId() const = 0;
0120 virtual SymIndexId getOemSymbolId() const = 0;
0121 virtual uint32_t getOffsetInUdt() const = 0;
0122 virtual PDB_Cpu getPlatform() const = 0;
0123 virtual uint32_t getRank() const = 0;
0124 virtual codeview::RegisterId getRegisterId() const = 0;
0125 virtual uint32_t getRegisterType() const = 0;
0126 virtual uint32_t getRelativeVirtualAddress() const = 0;
0127 virtual uint32_t getSamplerSlot() const = 0;
0128 virtual uint32_t getSignature() const = 0;
0129 virtual uint32_t getSizeInUdt() const = 0;
0130 virtual uint32_t getSlot() const = 0;
0131 virtual std::string getSourceFileName() const = 0;
0132 virtual std::unique_ptr<IPDBLineNumber>
0133 getSrcLineOnTypeDefn() const = 0;
0134 virtual uint32_t getStride() const = 0;
0135 virtual SymIndexId getSubTypeId() const = 0;
0136 virtual std::string getSymbolsFileName() const = 0;
0137 virtual SymIndexId getSymIndexId() const = 0;
0138 virtual uint32_t getTargetOffset() const = 0;
0139 virtual uint32_t getTargetRelativeVirtualAddress() const = 0;
0140 virtual uint64_t getTargetVirtualAddress() const = 0;
0141 virtual uint32_t getTargetSection() const = 0;
0142 virtual uint32_t getTextureSlot() const = 0;
0143 virtual uint32_t getTimeStamp() const = 0;
0144 virtual uint32_t getToken() const = 0;
0145 virtual SymIndexId getTypeId() const = 0;
0146 virtual uint32_t getUavSlot() const = 0;
0147 virtual std::string getUndecoratedName() const = 0;
0148 virtual std::string getUndecoratedNameEx(PDB_UndnameFlags Flags) const = 0;
0149 virtual SymIndexId getUnmodifiedTypeId() const = 0;
0150 virtual SymIndexId getUpperBoundId() const = 0;
0151 virtual Variant getValue() const = 0;
0152 virtual uint32_t getVirtualBaseDispIndex() const = 0;
0153 virtual uint32_t getVirtualBaseOffset() const = 0;
0154 virtual std::unique_ptr<PDBSymbolTypeBuiltin>
0155 getVirtualBaseTableType() const = 0;
0156 virtual SymIndexId getVirtualTableShapeId() const = 0;
0157 virtual PDB_DataKind getDataKind() const = 0;
0158 virtual PDB_SymType getSymTag() const = 0;
0159 virtual codeview::GUID getGuid() const = 0;
0160 virtual int32_t getOffset() const = 0;
0161 virtual int32_t getThisAdjust() const = 0;
0162 virtual int32_t getVirtualBasePointerOffset() const = 0;
0163 virtual PDB_LocType getLocationType() const = 0;
0164 virtual PDB_Machine getMachineType() const = 0;
0165 virtual codeview::ThunkOrdinal getThunkOrdinal() const = 0;
0166 virtual uint64_t getLength() const = 0;
0167 virtual uint64_t getLiveRangeLength() const = 0;
0168 virtual uint64_t getVirtualAddress() const = 0;
0169 virtual PDB_UdtType getUdtKind() const = 0;
0170 virtual bool hasConstructor() const = 0;
0171 virtual bool hasCustomCallingConvention() const = 0;
0172 virtual bool hasFarReturn() const = 0;
0173 virtual bool isCode() const = 0;
0174 virtual bool isCompilerGenerated() const = 0;
0175 virtual bool isConstType() const = 0;
0176 virtual bool isEditAndContinueEnabled() const = 0;
0177 virtual bool isFunction() const = 0;
0178 virtual bool getAddressTaken() const = 0;
0179 virtual bool getNoStackOrdering() const = 0;
0180 virtual bool hasAlloca() const = 0;
0181 virtual bool hasAssignmentOperator() const = 0;
0182 virtual bool hasCTypes() const = 0;
0183 virtual bool hasCastOperator() const = 0;
0184 virtual bool hasDebugInfo() const = 0;
0185 virtual bool hasEH() const = 0;
0186 virtual bool hasEHa() const = 0;
0187 virtual bool hasFramePointer() const = 0;
0188 virtual bool hasInlAsm() const = 0;
0189 virtual bool hasInlineAttribute() const = 0;
0190 virtual bool hasInterruptReturn() const = 0;
0191 virtual bool hasLongJump() const = 0;
0192 virtual bool hasManagedCode() const = 0;
0193 virtual bool hasNestedTypes() const = 0;
0194 virtual bool hasNoInlineAttribute() const = 0;
0195 virtual bool hasNoReturnAttribute() const = 0;
0196 virtual bool hasOptimizedCodeDebugInfo() const = 0;
0197 virtual bool hasOverloadedOperator() const = 0;
0198 virtual bool hasSEH() const = 0;
0199 virtual bool hasSecurityChecks() const = 0;
0200 virtual bool hasSetJump() const = 0;
0201 virtual bool hasStrictGSCheck() const = 0;
0202 virtual bool isAcceleratorGroupSharedLocal() const = 0;
0203 virtual bool isAcceleratorPointerTagLiveRange() const = 0;
0204 virtual bool isAcceleratorStubFunction() const = 0;
0205 virtual bool isAggregated() const = 0;
0206 virtual bool isIntroVirtualFunction() const = 0;
0207 virtual bool isCVTCIL() const = 0;
0208 virtual bool isConstructorVirtualBase() const = 0;
0209 virtual bool isCxxReturnUdt() const = 0;
0210 virtual bool isDataAligned() const = 0;
0211 virtual bool isHLSLData() const = 0;
0212 virtual bool isHotpatchable() const = 0;
0213 virtual bool isIndirectVirtualBaseClass() const = 0;
0214 virtual bool isInterfaceUdt() const = 0;
0215 virtual bool isIntrinsic() const = 0;
0216 virtual bool isLTCG() const = 0;
0217 virtual bool isLocationControlFlowDependent() const = 0;
0218 virtual bool isMSILNetmodule() const = 0;
0219 virtual bool isMatrixRowMajor() const = 0;
0220 virtual bool isManagedCode() const = 0;
0221 virtual bool isMSILCode() const = 0;
0222 virtual bool isMultipleInheritance() const = 0;
0223 virtual bool isNaked() const = 0;
0224 virtual bool isNested() const = 0;
0225 virtual bool isOptimizedAway() const = 0;
0226 virtual bool isPacked() const = 0;
0227 virtual bool isPointerBasedOnSymbolValue() const = 0;
0228 virtual bool isPointerToDataMember() const = 0;
0229 virtual bool isPointerToMemberFunction() const = 0;
0230 virtual bool isPureVirtual() const = 0;
0231 virtual bool isRValueReference() const = 0;
0232 virtual bool isRefUdt() const = 0;
0233 virtual bool isReference() const = 0;
0234 virtual bool isRestrictedType() const = 0;
0235 virtual bool isReturnValue() const = 0;
0236 virtual bool isSafeBuffers() const = 0;
0237 virtual bool isScoped() const = 0;
0238 virtual bool isSdl() const = 0;
0239 virtual bool isSingleInheritance() const = 0;
0240 virtual bool isSplitted() const = 0;
0241 virtual bool isStatic() const = 0;
0242 virtual bool hasPrivateSymbols() const = 0;
0243 virtual bool isUnalignedType() const = 0;
0244 virtual bool isUnreached() const = 0;
0245 virtual bool isValueUdt() const = 0;
0246 virtual bool isVirtual() const = 0;
0247 virtual bool isVirtualBaseClass() const = 0;
0248 virtual bool isVirtualInheritance() const = 0;
0249 virtual bool isVolatileType() const = 0;
0250 virtual bool wasInlined() const = 0;
0251 virtual std::string getUnused() const = 0;
0252 };
0253
0254 LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE();
0255
0256 }
0257 }
0258
0259 #endif