LCOV - code coverage report
Current view: top level - include/llvm/DebugInfo/PDB - IPDBRawSymbol.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 1 1 100.0 %
Date: 2018-10-20 13:21:21 Functions: 1 2 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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             : 
      10             : #ifndef LLVM_DEBUGINFO_PDB_IPDBRAWSYMBOL_H
      11             : #define LLVM_DEBUGINFO_PDB_IPDBRAWSYMBOL_H
      12             : 
      13             : #include "PDBTypes.h"
      14             : #include "llvm/ADT/BitmaskEnum.h"
      15             : #include "llvm/ADT/SmallVector.h"
      16             : #include "llvm/ADT/StringRef.h"
      17             : #include "llvm/DebugInfo/CodeView/CodeView.h"
      18             : #include <memory>
      19             : 
      20             : namespace llvm {
      21             : class raw_ostream;
      22             : 
      23             : namespace pdb {
      24             : 
      25             : class IPDBSession;
      26             : class PDBSymbolTypeVTable;
      27             : class PDBSymbolTypeVTableShape;
      28             : 
      29             : enum class PdbSymbolIdField : uint32_t {
      30             :   None = 0,
      31             :   SymIndexId = 1 << 0,
      32             :   LexicalParent = 1 << 1,
      33             :   ClassParent = 1 << 2,
      34             :   Type = 1 << 3,
      35             :   UnmodifiedType = 1 << 4,
      36             :   All = 0xFFFFFFFF,
      37             :   LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue = */ All)
      38             : };
      39             : 
      40             : void dumpSymbolIdField(raw_ostream &OS, StringRef Name, SymIndexId Value,
      41             :                        int Indent, const IPDBSession &Session,
      42             :                        PdbSymbolIdField FieldId, PdbSymbolIdField ShowFlags,
      43             :                        PdbSymbolIdField RecurseFlags);
      44             : 
      45             : /// IPDBRawSymbol defines an interface used to represent an arbitrary symbol.
      46             : /// It exposes a monolithic interface consisting of accessors for the union of
      47             : /// all properties that are valid for any symbol type.  This interface is then
      48             : /// wrapped by a concrete class which exposes only those set of methods valid
      49             : /// for this particular symbol type.  See PDBSymbol.h for more details.
      50         725 : class IPDBRawSymbol {
      51             : public:
      52             :   virtual ~IPDBRawSymbol();
      53             : 
      54             :   virtual void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
      55             :                     PdbSymbolIdField RecurseIdFields) const = 0;
      56             : 
      57             :   virtual std::unique_ptr<IPDBEnumSymbols>
      58             :   findChildren(PDB_SymType Type) const = 0;
      59             : 
      60             :   virtual std::unique_ptr<IPDBEnumSymbols>
      61             :   findChildren(PDB_SymType Type, StringRef Name,
      62             :                PDB_NameSearchFlags Flags) const = 0;
      63             :   virtual std::unique_ptr<IPDBEnumSymbols>
      64             :   findChildrenByAddr(PDB_SymType Type, StringRef Name,
      65             :                      PDB_NameSearchFlags Flags,
      66             :                      uint32_t Section, uint32_t Offset) const = 0;
      67             :   virtual std::unique_ptr<IPDBEnumSymbols>
      68             :   findChildrenByVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags,
      69             :                    uint64_t VA) const = 0;
      70             :   virtual std::unique_ptr<IPDBEnumSymbols>
      71             :   findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags,
      72             :                     uint32_t RVA) const = 0;
      73             : 
      74             :   virtual std::unique_ptr<IPDBEnumSymbols>
      75             :   findInlineFramesByAddr(uint32_t Section, uint32_t Offset) const = 0;
      76             :   virtual std::unique_ptr<IPDBEnumSymbols>
      77             :   findInlineFramesByRVA(uint32_t RVA) const = 0;
      78             :   virtual std::unique_ptr<IPDBEnumSymbols>
      79             :   findInlineFramesByVA(uint64_t VA) const = 0;
      80             : 
      81             :   virtual std::unique_ptr<IPDBEnumLineNumbers> findInlineeLines() const = 0;
      82             :   virtual std::unique_ptr<IPDBEnumLineNumbers>
      83             :   findInlineeLinesByAddr(uint32_t Section, uint32_t Offset,
      84             :                          uint32_t Length) const = 0;
      85             :   virtual std::unique_ptr<IPDBEnumLineNumbers>
      86             :   findInlineeLinesByRVA(uint32_t RVA, uint32_t Length) const = 0;
      87             :   virtual std::unique_ptr<IPDBEnumLineNumbers>
      88             :   findInlineeLinesByVA(uint64_t VA, uint32_t Length) const = 0;
      89             : 
      90             :   virtual void getDataBytes(llvm::SmallVector<uint8_t, 32> &bytes) const = 0;
      91             :   virtual void getBackEndVersion(VersionInfo &Version) const = 0;
      92             :   virtual PDB_MemberAccess getAccess() const = 0;
      93             :   virtual uint32_t getAddressOffset() const = 0;
      94             :   virtual uint32_t getAddressSection() const = 0;
      95             :   virtual uint32_t getAge() const = 0;
      96             :   virtual SymIndexId getArrayIndexTypeId() const = 0;
      97             :   virtual uint32_t getBaseDataOffset() const = 0;
      98             :   virtual uint32_t getBaseDataSlot() const = 0;
      99             :   virtual SymIndexId getBaseSymbolId() const = 0;
     100             :   virtual PDB_BuiltinType getBuiltinType() const = 0;
     101             :   virtual uint32_t getBitPosition() const = 0;
     102             :   virtual PDB_CallingConv getCallingConvention() const = 0;
     103             :   virtual SymIndexId getClassParentId() const = 0;
     104             :   virtual std::string getCompilerName() const = 0;
     105             :   virtual uint32_t getCount() const = 0;
     106             :   virtual uint32_t getCountLiveRanges() const = 0;
     107             :   virtual void getFrontEndVersion(VersionInfo &Version) const = 0;
     108             :   virtual PDB_Lang getLanguage() const = 0;
     109             :   virtual SymIndexId getLexicalParentId() const = 0;
     110             :   virtual std::string getLibraryName() const = 0;
     111             :   virtual uint32_t getLiveRangeStartAddressOffset() const = 0;
     112             :   virtual uint32_t getLiveRangeStartAddressSection() const = 0;
     113             :   virtual uint32_t getLiveRangeStartRelativeVirtualAddress() const = 0;
     114             :   virtual codeview::RegisterId getLocalBasePointerRegisterId() const = 0;
     115             :   virtual SymIndexId getLowerBoundId() const = 0;
     116             :   virtual uint32_t getMemorySpaceKind() const = 0;
     117             :   virtual std::string getName() const = 0;
     118             :   virtual uint32_t getNumberOfAcceleratorPointerTags() const = 0;
     119             :   virtual uint32_t getNumberOfColumns() const = 0;
     120             :   virtual uint32_t getNumberOfModifiers() const = 0;
     121             :   virtual uint32_t getNumberOfRegisterIndices() const = 0;
     122             :   virtual uint32_t getNumberOfRows() const = 0;
     123             :   virtual std::string getObjectFileName() const = 0;
     124             :   virtual uint32_t getOemId() const = 0;
     125             :   virtual SymIndexId getOemSymbolId() const = 0;
     126             :   virtual uint32_t getOffsetInUdt() const = 0;
     127             :   virtual PDB_Cpu getPlatform() const = 0;
     128             :   virtual uint32_t getRank() const = 0;
     129             :   virtual codeview::RegisterId getRegisterId() const = 0;
     130             :   virtual uint32_t getRegisterType() const = 0;
     131             :   virtual uint32_t getRelativeVirtualAddress() const = 0;
     132             :   virtual uint32_t getSamplerSlot() const = 0;
     133             :   virtual uint32_t getSignature() const = 0;
     134             :   virtual uint32_t getSizeInUdt() const = 0;
     135             :   virtual uint32_t getSlot() const = 0;
     136             :   virtual std::string getSourceFileName() const = 0;
     137             :   virtual std::unique_ptr<IPDBLineNumber>
     138             :   getSrcLineOnTypeDefn() const = 0;
     139             :   virtual uint32_t getStride() const = 0;
     140             :   virtual SymIndexId getSubTypeId() const = 0;
     141             :   virtual std::string getSymbolsFileName() const = 0;
     142             :   virtual SymIndexId getSymIndexId() const = 0;
     143             :   virtual uint32_t getTargetOffset() const = 0;
     144             :   virtual uint32_t getTargetRelativeVirtualAddress() const = 0;
     145             :   virtual uint64_t getTargetVirtualAddress() const = 0;
     146             :   virtual uint32_t getTargetSection() const = 0;
     147             :   virtual uint32_t getTextureSlot() const = 0;
     148             :   virtual uint32_t getTimeStamp() const = 0;
     149             :   virtual uint32_t getToken() const = 0;
     150             :   virtual SymIndexId getTypeId() const = 0;
     151             :   virtual uint32_t getUavSlot() const = 0;
     152             :   virtual std::string getUndecoratedName() const = 0;
     153             :   virtual std::string getUndecoratedNameEx(PDB_UndnameFlags Flags) const = 0;
     154             :   virtual SymIndexId getUnmodifiedTypeId() const = 0;
     155             :   virtual SymIndexId getUpperBoundId() const = 0;
     156             :   virtual Variant getValue() const = 0;
     157             :   virtual uint32_t getVirtualBaseDispIndex() const = 0;
     158             :   virtual uint32_t getVirtualBaseOffset() const = 0;
     159             :   virtual std::unique_ptr<PDBSymbolTypeBuiltin>
     160             :   getVirtualBaseTableType() const = 0;
     161             :   virtual SymIndexId getVirtualTableShapeId() const = 0;
     162             :   virtual PDB_DataKind getDataKind() const = 0;
     163             :   virtual PDB_SymType getSymTag() const = 0;
     164             :   virtual codeview::GUID getGuid() const = 0;
     165             :   virtual int32_t getOffset() const = 0;
     166             :   virtual int32_t getThisAdjust() const = 0;
     167             :   virtual int32_t getVirtualBasePointerOffset() const = 0;
     168             :   virtual PDB_LocType getLocationType() const = 0;
     169             :   virtual PDB_Machine getMachineType() const = 0;
     170             :   virtual codeview::ThunkOrdinal getThunkOrdinal() const = 0;
     171             :   virtual uint64_t getLength() const = 0;
     172             :   virtual uint64_t getLiveRangeLength() const = 0;
     173             :   virtual uint64_t getVirtualAddress() const = 0;
     174             :   virtual PDB_UdtType getUdtKind() const = 0;
     175             :   virtual bool hasConstructor() const = 0;
     176             :   virtual bool hasCustomCallingConvention() const = 0;
     177             :   virtual bool hasFarReturn() const = 0;
     178             :   virtual bool isCode() const = 0;
     179             :   virtual bool isCompilerGenerated() const = 0;
     180             :   virtual bool isConstType() const = 0;
     181             :   virtual bool isEditAndContinueEnabled() const = 0;
     182             :   virtual bool isFunction() const = 0;
     183             :   virtual bool getAddressTaken() const = 0;
     184             :   virtual bool getNoStackOrdering() const = 0;
     185             :   virtual bool hasAlloca() const = 0;
     186             :   virtual bool hasAssignmentOperator() const = 0;
     187             :   virtual bool hasCTypes() const = 0;
     188             :   virtual bool hasCastOperator() const = 0;
     189             :   virtual bool hasDebugInfo() const = 0;
     190             :   virtual bool hasEH() const = 0;
     191             :   virtual bool hasEHa() const = 0;
     192             :   virtual bool hasFramePointer() const = 0;
     193             :   virtual bool hasInlAsm() const = 0;
     194             :   virtual bool hasInlineAttribute() const = 0;
     195             :   virtual bool hasInterruptReturn() const = 0;
     196             :   virtual bool hasLongJump() const = 0;
     197             :   virtual bool hasManagedCode() const = 0;
     198             :   virtual bool hasNestedTypes() const = 0;
     199             :   virtual bool hasNoInlineAttribute() const = 0;
     200             :   virtual bool hasNoReturnAttribute() const = 0;
     201             :   virtual bool hasOptimizedCodeDebugInfo() const = 0;
     202             :   virtual bool hasOverloadedOperator() const = 0;
     203             :   virtual bool hasSEH() const = 0;
     204             :   virtual bool hasSecurityChecks() const = 0;
     205             :   virtual bool hasSetJump() const = 0;
     206             :   virtual bool hasStrictGSCheck() const = 0;
     207             :   virtual bool isAcceleratorGroupSharedLocal() const = 0;
     208             :   virtual bool isAcceleratorPointerTagLiveRange() const = 0;
     209             :   virtual bool isAcceleratorStubFunction() const = 0;
     210             :   virtual bool isAggregated() const = 0;
     211             :   virtual bool isIntroVirtualFunction() const = 0;
     212             :   virtual bool isCVTCIL() const = 0;
     213             :   virtual bool isConstructorVirtualBase() const = 0;
     214             :   virtual bool isCxxReturnUdt() const = 0;
     215             :   virtual bool isDataAligned() const = 0;
     216             :   virtual bool isHLSLData() const = 0;
     217             :   virtual bool isHotpatchable() const = 0;
     218             :   virtual bool isIndirectVirtualBaseClass() const = 0;
     219             :   virtual bool isInterfaceUdt() const = 0;
     220             :   virtual bool isIntrinsic() const = 0;
     221             :   virtual bool isLTCG() const = 0;
     222             :   virtual bool isLocationControlFlowDependent() const = 0;
     223             :   virtual bool isMSILNetmodule() const = 0;
     224             :   virtual bool isMatrixRowMajor() const = 0;
     225             :   virtual bool isManagedCode() const = 0;
     226             :   virtual bool isMSILCode() const = 0;
     227             :   virtual bool isMultipleInheritance() const = 0;
     228             :   virtual bool isNaked() const = 0;
     229             :   virtual bool isNested() const = 0;
     230             :   virtual bool isOptimizedAway() const = 0;
     231             :   virtual bool isPacked() const = 0;
     232             :   virtual bool isPointerBasedOnSymbolValue() const = 0;
     233             :   virtual bool isPointerToDataMember() const = 0;
     234             :   virtual bool isPointerToMemberFunction() const = 0;
     235             :   virtual bool isPureVirtual() const = 0;
     236             :   virtual bool isRValueReference() const = 0;
     237             :   virtual bool isRefUdt() const = 0;
     238             :   virtual bool isReference() const = 0;
     239             :   virtual bool isRestrictedType() const = 0;
     240             :   virtual bool isReturnValue() const = 0;
     241             :   virtual bool isSafeBuffers() const = 0;
     242             :   virtual bool isScoped() const = 0;
     243             :   virtual bool isSdl() const = 0;
     244             :   virtual bool isSingleInheritance() const = 0;
     245             :   virtual bool isSplitted() const = 0;
     246             :   virtual bool isStatic() const = 0;
     247             :   virtual bool hasPrivateSymbols() const = 0;
     248             :   virtual bool isUnalignedType() const = 0;
     249             :   virtual bool isUnreached() const = 0;
     250             :   virtual bool isValueUdt() const = 0;
     251             :   virtual bool isVirtual() const = 0;
     252             :   virtual bool isVirtualBaseClass() const = 0;
     253             :   virtual bool isVirtualInheritance() const = 0;
     254             :   virtual bool isVolatileType() const = 0;
     255             :   virtual bool wasInlined() const = 0;
     256             :   virtual std::string getUnused() const = 0;
     257             : };
     258             : 
     259             : LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE();
     260             : 
     261             : } // namespace pdb
     262             : } // namespace llvm
     263             : 
     264             : #endif

Generated by: LCOV version 1.13