Go to the documentation of this file.
9 #ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_PDBINDEX_H
10 #define LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_PDBINDEX_H
13 #include "llvm/ADT/IntervalMap.h"
14 #include "llvm/ADT/Optional.h"
15 #include "llvm/DebugInfo/PDB/Native/PDBFile.h"
16 #include "llvm/DebugInfo/PDB/PDBTypes.h"
50 llvm::pdb::PDBFile *
m_file =
nullptr;
57 llvm::pdb::DbiStream *
m_dbi =
nullptr;
64 llvm::pdb::TpiStream *
m_tpi =
nullptr;
65 llvm::pdb::TpiStream *
m_ipi =
nullptr;
70 llvm::pdb::InfoStream *
m_info =
nullptr;
99 llvm::IntervalMap<lldb::addr_t, uint32_t>::Allocator
m_allocator;
112 static llvm::Expected<std::unique_ptr<PdbIndex>>
create(llvm::pdb::PDBFile *);
119 const llvm::pdb::PDBFile &
pdb()
const {
return *
m_file; }
122 const llvm::pdb::DbiStream &
dbi()
const {
return *
m_dbi; }
125 const llvm::pdb::TpiStream &
tpi()
const {
return *
m_tpi; }
128 const llvm::pdb::TpiStream &
ipi()
const {
return *
m_ipi; }
131 const llvm::pdb::InfoStream &
info()
const {
return *
m_info; }
const llvm::pdb::GlobalsStream & globals() const
llvm::pdb::PublicsStream & publics()
Indexes information about all compile units.
CompileUnitIndex & compilands()
lldb::addr_t GetLoadAddress() const
const llvm::pdb::TpiStream & tpi() const
PdbIndex - Lazy access to the important parts of a PDB file.
llvm::IntervalMap< lldb::addr_t, uint16_t > m_va_to_modi
Maps virtual address to module index.
llvm::pdb::PublicsStream * m_publics
Publics stream.
llvm::IntervalMap< lldb::addr_t, uint32_t >::Allocator m_allocator
An allocator for the interval maps.
const llvm::pdb::InfoStream & info() const
llvm::codeview::CVSymbol ReadSymbolRecord(PdbCompilandSymId cu_sym) const
void BuildAddrToSymbolMap(CompilandIndexItem &cci)
const llvm::pdb::PDBFile & pdb() const
llvm::pdb::DbiStream * m_dbi
The DBI stream.
llvm::Optional< uint16_t > GetModuleIndexForVa(lldb::addr_t va) const
const llvm::pdb::TpiStream & ipi() const
llvm::pdb::GlobalsStream * m_globals
Globals stream.
llvm::pdb::TpiStream & tpi()
const CompileUnitIndex & compilands() const
llvm::pdb::DbiStream & dbi()
const llvm::pdb::PublicsStream & publics() const
llvm::pdb::InfoStream * m_info
This is called the "PDB Stream" in the Microsoft reference implementation.
static llvm::Expected< std::unique_ptr< PdbIndex > > create(llvm::pdb::PDBFile *)
lldb::addr_t m_load_address
The address at which the program has been loaded into memory.
void SetLoadAddress(lldb::addr_t addr)
CompileUnitIndex m_cus
Index of all compile units, mapping identifier to |CompilandIndexItem| instance.
llvm::pdb::InfoStream & info()
llvm::pdb::TpiStream * m_tpi
TPI (types) and IPI (indices) streams.
std::vector< SymbolAndUid > FindSymbolsByVa(lldb::addr_t va)
Represents a single compile unit.
const llvm::pdb::DbiStream & dbi() const
lldb::addr_t MakeVirtualAddress(uint16_t segment, uint32_t offset) const
llvm::pdb::TpiStream & ipi()
llvm::pdb::SymbolStream & symrecords()
A class that represents a running process on the host machine.
llvm::pdb::PDBFile * m_file
The underlying PDB file.
llvm::Optional< uint16_t > GetModuleIndexForAddr(uint16_t segment, uint32_t offset) const
const llvm::pdb::SymbolStream & symrecords() const
llvm::pdb::PDBFile & pdb()
llvm::pdb::TpiStream * m_ipi
llvm::pdb::SymbolStream * m_symrecords
Symbol records stream.
llvm::pdb::GlobalsStream & globals()
void ParseSectionContribs()