Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===- IPDBSession.h - base interface for a PDB symbol context --*- C++ -*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8.  
  9. #ifndef LLVM_DEBUGINFO_PDB_IPDBSESSION_H
  10. #define LLVM_DEBUGINFO_PDB_IPDBSESSION_H
  11.  
  12. #include "PDBSymbol.h"
  13. #include "PDBTypes.h"
  14. #include "llvm/ADT/StringRef.h"
  15. #include "llvm/Support/Casting.h"
  16. #include <memory>
  17.  
  18. namespace llvm {
  19. namespace pdb {
  20. class PDBSymbolCompiland;
  21. class PDBSymbolExe;
  22.  
  23. /// IPDBSession defines an interface used to provide a context for querying
  24. /// debug information from a debug data source (for example, a PDB).
  25. class IPDBSession {
  26. public:
  27.   virtual ~IPDBSession();
  28.  
  29.   virtual uint64_t getLoadAddress() const = 0;
  30.   virtual bool setLoadAddress(uint64_t Address) = 0;
  31.   virtual std::unique_ptr<PDBSymbolExe> getGlobalScope() = 0;
  32.   virtual std::unique_ptr<PDBSymbol>
  33.   getSymbolById(SymIndexId SymbolId) const = 0;
  34.  
  35.   virtual bool addressForVA(uint64_t VA, uint32_t &Section,
  36.                             uint32_t &Offset) const = 0;
  37.   virtual bool addressForRVA(uint32_t RVA, uint32_t &Section,
  38.                              uint32_t &Offset) const = 0;
  39.  
  40.   template <typename T>
  41.   std::unique_ptr<T> getConcreteSymbolById(SymIndexId SymbolId) const {
  42.     return unique_dyn_cast_or_null<T>(getSymbolById(SymbolId));
  43.   }
  44.  
  45.   virtual std::unique_ptr<PDBSymbol> findSymbolByAddress(uint64_t Address,
  46.                                                          PDB_SymType Type) = 0;
  47.   virtual std::unique_ptr<PDBSymbol> findSymbolByRVA(uint32_t RVA,
  48.                                                      PDB_SymType Type) = 0;
  49.   virtual std::unique_ptr<PDBSymbol>
  50.   findSymbolBySectOffset(uint32_t Sect, uint32_t Offset, PDB_SymType Type) = 0;
  51.  
  52.   virtual std::unique_ptr<IPDBEnumLineNumbers>
  53.   findLineNumbers(const PDBSymbolCompiland &Compiland,
  54.                   const IPDBSourceFile &File) const = 0;
  55.   virtual std::unique_ptr<IPDBEnumLineNumbers>
  56.   findLineNumbersByAddress(uint64_t Address, uint32_t Length) const = 0;
  57.   virtual std::unique_ptr<IPDBEnumLineNumbers>
  58.   findLineNumbersByRVA(uint32_t RVA, uint32_t Length) const = 0;
  59.   virtual std::unique_ptr<IPDBEnumLineNumbers>
  60.   findLineNumbersBySectOffset(uint32_t Section, uint32_t Offset,
  61.                               uint32_t Length) const = 0;
  62.  
  63.   virtual std::unique_ptr<IPDBEnumSourceFiles>
  64.   findSourceFiles(const PDBSymbolCompiland *Compiland, llvm::StringRef Pattern,
  65.                   PDB_NameSearchFlags Flags) const = 0;
  66.   virtual std::unique_ptr<IPDBSourceFile>
  67.   findOneSourceFile(const PDBSymbolCompiland *Compiland,
  68.                     llvm::StringRef Pattern,
  69.                     PDB_NameSearchFlags Flags) const = 0;
  70.   virtual std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>>
  71.   findCompilandsForSourceFile(llvm::StringRef Pattern,
  72.                               PDB_NameSearchFlags Flags) const = 0;
  73.   virtual std::unique_ptr<PDBSymbolCompiland>
  74.   findOneCompilandForSourceFile(llvm::StringRef Pattern,
  75.                                 PDB_NameSearchFlags Flags) const = 0;
  76.  
  77.   virtual std::unique_ptr<IPDBEnumSourceFiles> getAllSourceFiles() const = 0;
  78.   virtual std::unique_ptr<IPDBEnumSourceFiles>
  79.   getSourceFilesForCompiland(const PDBSymbolCompiland &Compiland) const = 0;
  80.   virtual std::unique_ptr<IPDBSourceFile>
  81.   getSourceFileById(uint32_t FileId) const = 0;
  82.  
  83.   virtual std::unique_ptr<IPDBEnumDataStreams> getDebugStreams() const = 0;
  84.  
  85.   virtual std::unique_ptr<IPDBEnumTables> getEnumTables() const = 0;
  86.  
  87.   virtual std::unique_ptr<IPDBEnumInjectedSources>
  88.   getInjectedSources() const = 0;
  89.  
  90.   virtual std::unique_ptr<IPDBEnumSectionContribs>
  91.   getSectionContribs() const = 0;
  92.  
  93.   virtual std::unique_ptr<IPDBEnumFrameData>
  94.   getFrameData() const = 0;
  95. };
  96. } // namespace pdb
  97. } // namespace llvm
  98.  
  99. #endif
  100.