LLVM  14.0.0git
IPDBSession.h
Go to the documentation of this file.
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>
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>
61  uint32_t Length) const = 0;
62 
63  virtual std::unique_ptr<IPDBEnumSourceFiles>
65  PDB_NameSearchFlags Flags) const = 0;
66  virtual std::unique_ptr<IPDBSourceFile>
67  findOneSourceFile(const PDBSymbolCompiland *Compiland,
69  PDB_NameSearchFlags Flags) const = 0;
70  virtual std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>>
72  PDB_NameSearchFlags Flags) const = 0;
73  virtual std::unique_ptr<PDBSymbolCompiland>
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
llvm::pdb::IPDBSession
IPDBSession defines an interface used to provide a context for querying debug information from a debu...
Definition: IPDBSession.h:25
llvm
---------------------— PointerInfo ------------------------------------—
Definition: AllocatorList.h:23
llvm::pdb::IPDBSession::findOneSourceFile
virtual std::unique_ptr< IPDBSourceFile > findOneSourceFile(const PDBSymbolCompiland *Compiland, llvm::StringRef Pattern, PDB_NameSearchFlags Flags) const =0
llvm::pdb::IPDBSession::getEnumTables
virtual std::unique_ptr< IPDBEnumTables > getEnumTables() const =0
StringRef.h
llvm::pdb::IPDBSession::getSectionContribs
virtual std::unique_ptr< IPDBEnumSectionContribs > getSectionContribs() const =0
llvm::pdb::IPDBSourceFile
IPDBSourceFile defines an interface used to represent source files whose information are stored in th...
Definition: IPDBSourceFile.h:23
llvm::pdb::IPDBSession::findLineNumbers
virtual std::unique_ptr< IPDBEnumLineNumbers > findLineNumbers(const PDBSymbolCompiland &Compiland, const IPDBSourceFile &File) const =0
llvm::Type
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45
llvm::pdb::IPDBSession::getFrameData
virtual std::unique_ptr< IPDBEnumFrameData > getFrameData() const =0
llvm::pdb::IPDBSession::getAllSourceFiles
virtual std::unique_ptr< IPDBEnumSourceFiles > getAllSourceFiles() const =0
Offset
uint64_t Offset
Definition: ELFObjHandler.cpp:81
llvm::pdb::IPDBSession::setLoadAddress
virtual bool setLoadAddress(uint64_t Address)=0
llvm::pdb::IPDBSession::findOneCompilandForSourceFile
virtual std::unique_ptr< PDBSymbolCompiland > findOneCompilandForSourceFile(llvm::StringRef Pattern, PDB_NameSearchFlags Flags) const =0
llvm::pdb::IPDBSession::findSymbolByAddress
virtual std::unique_ptr< PDBSymbol > findSymbolByAddress(uint64_t Address, PDB_SymType Type)=0
llvm::pdb::PDB_SymType
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....
Definition: PDBTypes.h:243
llvm::pdb::IPDBSession::~IPDBSession
virtual ~IPDBSession()
llvm::pdb::IPDBSession::getLoadAddress
virtual uint64_t getLoadAddress() const =0
llvm::ARMBuildAttrs::Section
@ Section
Legacy Tags.
Definition: ARMBuildAttributes.h:78
llvm::pdb::IPDBSession::findCompilandsForSourceFile
virtual std::unique_ptr< IPDBEnumChildren< PDBSymbolCompiland > > findCompilandsForSourceFile(llvm::StringRef Pattern, PDB_NameSearchFlags Flags) const =0
llvm::pdb::IPDBSession::addressForRVA
virtual bool addressForRVA(uint32_t RVA, uint32_t &Section, uint32_t &Offset) const =0
llvm::pdb::PDB_NameSearchFlags
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
Definition: PDBTypes.h:102
PDBSymbol.h
PDBTypes.h
llvm::pdb::IPDBSession::getSourceFilesForCompiland
virtual std::unique_ptr< IPDBEnumSourceFiles > getSourceFilesForCompiland(const PDBSymbolCompiland &Compiland) const =0
llvm::pdb::IPDBSession::getConcreteSymbolById
std::unique_ptr< T > getConcreteSymbolById(SymIndexId SymbolId) const
Definition: IPDBSession.h:41
llvm::pdb::IPDBSession::findLineNumbersBySectOffset
virtual std::unique_ptr< IPDBEnumLineNumbers > findLineNumbersBySectOffset(uint32_t Section, uint32_t Offset, uint32_t Length) const =0
llvm::pdb::IPDBSession::getInjectedSources
virtual std::unique_ptr< IPDBEnumInjectedSources > getInjectedSources() const =0
uint64_t
llvm::HighlightColor::Address
@ Address
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:58
uint32_t
llvm::pdb::IPDBSession::getSymbolById
virtual std::unique_ptr< PDBSymbol > getSymbolById(SymIndexId SymbolId) const =0
llvm::pdb::IPDBSession::findSymbolByRVA
virtual std::unique_ptr< PDBSymbol > findSymbolByRVA(uint32_t RVA, PDB_SymType Type)=0
llvm::pdb::IPDBSession::getDebugStreams
virtual std::unique_ptr< IPDBEnumDataStreams > getDebugStreams() const =0
llvm::pdb::IPDBSession::getSourceFileById
virtual std::unique_ptr< IPDBSourceFile > getSourceFileById(uint32_t FileId) const =0
llvm::pdb::IPDBSession::addressForVA
virtual bool addressForVA(uint64_t VA, uint32_t &Section, uint32_t &Offset) const =0
Casting.h
llvm::Pattern
Definition: FileCheckImpl.h:614
llvm::pdb::IPDBSession::findLineNumbersByRVA
virtual std::unique_ptr< IPDBEnumLineNumbers > findLineNumbersByRVA(uint32_t RVA, uint32_t Length) const =0
llvm::pdb::IPDBSession::findLineNumbersByAddress
virtual std::unique_ptr< IPDBEnumLineNumbers > findLineNumbersByAddress(uint64_t Address, uint32_t Length) const =0
llvm::pdb::PDBSymbolCompiland
Definition: PDBSymbolCompiland.h:21
llvm::pdb::IPDBSession::getGlobalScope
virtual std::unique_ptr< PDBSymbolExe > getGlobalScope()=0
llvm::pdb::IPDBSession::findSourceFiles
virtual std::unique_ptr< IPDBEnumSourceFiles > findSourceFiles(const PDBSymbolCompiland *Compiland, llvm::StringRef Pattern, PDB_NameSearchFlags Flags) const =0
File
Instrumentation for Order File
Definition: InstrOrderFile.cpp:205
llvm::pdb::IPDBSession::findSymbolBySectOffset
virtual std::unique_ptr< PDBSymbol > findSymbolBySectOffset(uint32_t Sect, uint32_t Offset, PDB_SymType Type)=0