Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

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

  1. //===- DIASession.h - DIA implementation of IPDBSession ---------*- 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_DIA_DIASESSION_H
  10. #define LLVM_DEBUGINFO_PDB_DIA_DIASESSION_H
  11.  
  12. #include "DIASupport.h"
  13. #include "llvm/DebugInfo/PDB/IPDBSession.h"
  14. #include "llvm/Support/Error.h"
  15.  
  16. #include <system_error>
  17.  
  18. namespace llvm {
  19. class StringRef;
  20.  
  21. namespace pdb {
  22. class DIASession : public IPDBSession {
  23. public:
  24.   explicit DIASession(CComPtr<IDiaSession> DiaSession);
  25.  
  26.   static Error createFromPdb(StringRef Path,
  27.                              std::unique_ptr<IPDBSession> &Session);
  28.   static Error createFromExe(StringRef Path,
  29.                              std::unique_ptr<IPDBSession> &Session);
  30.  
  31.   uint64_t getLoadAddress() const override;
  32.   bool setLoadAddress(uint64_t Address) override;
  33.   std::unique_ptr<PDBSymbolExe> getGlobalScope() override;
  34.   std::unique_ptr<PDBSymbol> getSymbolById(SymIndexId SymbolId) const override;
  35.  
  36.   bool addressForVA(uint64_t VA, uint32_t &Section,
  37.                     uint32_t &Offset) const override;
  38.   bool addressForRVA(uint32_t RVA, uint32_t &Section,
  39.                      uint32_t &Offset) const override;
  40.  
  41.   std::unique_ptr<PDBSymbol> findSymbolByAddress(uint64_t Address,
  42.                                                  PDB_SymType Type) override;
  43.   std::unique_ptr<PDBSymbol> findSymbolByRVA(uint32_t RVA,
  44.                                              PDB_SymType Type) override;
  45.   std::unique_ptr<PDBSymbol> findSymbolBySectOffset(uint32_t Section,
  46.                                                     uint32_t Offset,
  47.                                                     PDB_SymType Type) override;
  48.  
  49.   std::unique_ptr<IPDBEnumLineNumbers>
  50.   findLineNumbers(const PDBSymbolCompiland &Compiland,
  51.                   const IPDBSourceFile &File) const override;
  52.   std::unique_ptr<IPDBEnumLineNumbers>
  53.   findLineNumbersByAddress(uint64_t Address, uint32_t Length) const override;
  54.   std::unique_ptr<IPDBEnumLineNumbers>
  55.   findLineNumbersByRVA(uint32_t RVA, uint32_t Length) const override;
  56.   std::unique_ptr<IPDBEnumLineNumbers>
  57.   findLineNumbersBySectOffset(uint32_t Section, uint32_t Offset,
  58.                               uint32_t Length) const override;
  59.  
  60.   std::unique_ptr<IPDBEnumSourceFiles>
  61.   findSourceFiles(const PDBSymbolCompiland *Compiland, llvm::StringRef Pattern,
  62.                   PDB_NameSearchFlags Flags) const override;
  63.   std::unique_ptr<IPDBSourceFile>
  64.   findOneSourceFile(const PDBSymbolCompiland *Compiland,
  65.                     llvm::StringRef Pattern,
  66.                     PDB_NameSearchFlags Flags) const override;
  67.   std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>>
  68.   findCompilandsForSourceFile(llvm::StringRef Pattern,
  69.                               PDB_NameSearchFlags Flags) const override;
  70.   std::unique_ptr<PDBSymbolCompiland>
  71.   findOneCompilandForSourceFile(llvm::StringRef Pattern,
  72.                                 PDB_NameSearchFlags Flags) const override;
  73.   std::unique_ptr<IPDBEnumSourceFiles> getAllSourceFiles() const override;
  74.   std::unique_ptr<IPDBEnumSourceFiles> getSourceFilesForCompiland(
  75.       const PDBSymbolCompiland &Compiland) const override;
  76.   std::unique_ptr<IPDBSourceFile>
  77.   getSourceFileById(uint32_t FileId) const override;
  78.  
  79.   std::unique_ptr<IPDBEnumDataStreams> getDebugStreams() const override;
  80.  
  81.   std::unique_ptr<IPDBEnumTables> getEnumTables() const override;
  82.  
  83.   std::unique_ptr<IPDBEnumInjectedSources> getInjectedSources() const override;
  84.  
  85.   std::unique_ptr<IPDBEnumSectionContribs> getSectionContribs() const override;
  86.  
  87.   std::unique_ptr<IPDBEnumFrameData> getFrameData() const override;
  88. private:
  89.   CComPtr<IDiaSession> Session;
  90. };
  91. } // namespace pdb
  92. } // namespace llvm
  93. #endif
  94.