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