File indexing completed on 2026-05-10 08:43:44
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLVM_DEBUGINFO_PDB_DIA_DIASESSION_H
0010 #define LLVM_DEBUGINFO_PDB_DIA_DIASESSION_H
0011
0012 #include "DIASupport.h"
0013 #include "llvm/DebugInfo/PDB/IPDBSession.h"
0014 #include "llvm/Support/Error.h"
0015
0016 #include <system_error>
0017
0018 namespace llvm {
0019 class StringRef;
0020
0021 namespace pdb {
0022 class DIASession : public IPDBSession {
0023 public:
0024 explicit DIASession(CComPtr<IDiaSession> DiaSession);
0025
0026 static Error createFromPdb(StringRef Path,
0027 std::unique_ptr<IPDBSession> &Session);
0028 static Error createFromExe(StringRef Path,
0029 std::unique_ptr<IPDBSession> &Session);
0030
0031 uint64_t getLoadAddress() const override;
0032 bool setLoadAddress(uint64_t Address) override;
0033 std::unique_ptr<PDBSymbolExe> getGlobalScope() override;
0034 std::unique_ptr<PDBSymbol> getSymbolById(SymIndexId SymbolId) const override;
0035
0036 bool addressForVA(uint64_t VA, uint32_t &Section,
0037 uint32_t &Offset) const override;
0038 bool addressForRVA(uint32_t RVA, uint32_t &Section,
0039 uint32_t &Offset) const override;
0040
0041 std::unique_ptr<PDBSymbol> findSymbolByAddress(uint64_t Address,
0042 PDB_SymType Type) override;
0043 std::unique_ptr<PDBSymbol> findSymbolByRVA(uint32_t RVA,
0044 PDB_SymType Type) override;
0045 std::unique_ptr<PDBSymbol> findSymbolBySectOffset(uint32_t Section,
0046 uint32_t Offset,
0047 PDB_SymType Type) override;
0048
0049 std::unique_ptr<IPDBEnumLineNumbers>
0050 findLineNumbers(const PDBSymbolCompiland &Compiland,
0051 const IPDBSourceFile &File) const override;
0052 std::unique_ptr<IPDBEnumLineNumbers>
0053 findLineNumbersByAddress(uint64_t Address, uint32_t Length) const override;
0054 std::unique_ptr<IPDBEnumLineNumbers>
0055 findLineNumbersByRVA(uint32_t RVA, uint32_t Length) const override;
0056 std::unique_ptr<IPDBEnumLineNumbers>
0057 findLineNumbersBySectOffset(uint32_t Section, uint32_t Offset,
0058 uint32_t Length) const override;
0059
0060 std::unique_ptr<IPDBEnumSourceFiles>
0061 findSourceFiles(const PDBSymbolCompiland *Compiland, llvm::StringRef Pattern,
0062 PDB_NameSearchFlags Flags) const override;
0063 std::unique_ptr<IPDBSourceFile>
0064 findOneSourceFile(const PDBSymbolCompiland *Compiland,
0065 llvm::StringRef Pattern,
0066 PDB_NameSearchFlags Flags) const override;
0067 std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>>
0068 findCompilandsForSourceFile(llvm::StringRef Pattern,
0069 PDB_NameSearchFlags Flags) const override;
0070 std::unique_ptr<PDBSymbolCompiland>
0071 findOneCompilandForSourceFile(llvm::StringRef Pattern,
0072 PDB_NameSearchFlags Flags) const override;
0073 std::unique_ptr<IPDBEnumSourceFiles> getAllSourceFiles() const override;
0074 std::unique_ptr<IPDBEnumSourceFiles> getSourceFilesForCompiland(
0075 const PDBSymbolCompiland &Compiland) const override;
0076 std::unique_ptr<IPDBSourceFile>
0077 getSourceFileById(uint32_t FileId) const override;
0078
0079 std::unique_ptr<IPDBEnumDataStreams> getDebugStreams() const override;
0080
0081 std::unique_ptr<IPDBEnumTables> getEnumTables() const override;
0082
0083 std::unique_ptr<IPDBEnumInjectedSources> getInjectedSources() const override;
0084
0085 std::unique_ptr<IPDBEnumSectionContribs> getSectionContribs() const override;
0086
0087 std::unique_ptr<IPDBEnumFrameData> getFrameData() const override;
0088 private:
0089 CComPtr<IDiaSession> Session;
0090 };
0091 }
0092 }
0093 #endif