Home | History | Annotate | Download | only in DIA
      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 
     16 namespace llvm {
     17 namespace pdb {
     18 class DIASession;
     19 class DIARawSymbol : public IPDBRawSymbol {
     20 public:
     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 
    203 private:
    204   const DIASession &Session;
    205   CComPtr<IDiaSymbol> Symbol;
    206 };
    207 }
    208 }
    209 
    210 #endif
    211