IPDBRawSymbol.h 9.0 KB

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