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