LLDB mainline
Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
lldb_private::plugin::dwarf::DebugNamesDWARFIndex Class Reference

#include <DebugNamesDWARFIndex.h>

Inheritance diagram for lldb_private::plugin::dwarf::DebugNamesDWARFIndex:
Inheritance graph
[legend]

Public Member Functions

void Preload () override
 
void GetGlobalVariables (ConstString basename, llvm::function_ref< bool(DWARFDIE die)> callback) override
 Finds global variables with the given base name.
 
void GetGlobalVariables (const RegularExpression &regex, llvm::function_ref< bool(DWARFDIE die)> callback) override
 
void GetGlobalVariables (DWARFUnit &cu, llvm::function_ref< bool(DWARFDIE die)> callback) override
 cu must be the skeleton unit if possible, not GetNonSkeletonUnit().
 
void GetObjCMethods (ConstString class_name, llvm::function_ref< bool(DWARFDIE die)> callback) override
 
void GetCompleteObjCClass (ConstString class_name, bool must_be_implementation, llvm::function_ref< bool(DWARFDIE die)> callback) override
 
void GetFullyQualifiedType (const DWARFDeclContext &context, llvm::function_ref< bool(DWARFDIE die)> callback) override
 Uses DWARF5's IDX_parent fields, when available, to speed up this query.
 
void GetTypes (ConstString name, llvm::function_ref< bool(DWARFDIE die)> callback) override
 
void GetTypes (const DWARFDeclContext &context, llvm::function_ref< bool(DWARFDIE die)> callback) override
 
void GetNamespaces (ConstString name, llvm::function_ref< bool(DWARFDIE die)> callback) override
 
void GetFunctions (const Module::LookupInfo &lookup_info, SymbolFileDWARF &dwarf, const CompilerDeclContext &parent_decl_ctx, llvm::function_ref< bool(DWARFDIE die)> callback) override
 
void GetFunctions (const RegularExpression &regex, llvm::function_ref< bool(DWARFDIE die)> callback) override
 
void Dump (Stream &s) override
 
- Public Member Functions inherited from lldb_private::plugin::dwarf::DWARFIndex
 DWARFIndex (Module &module)
 
virtual ~DWARFIndex ()
 
virtual void Preload ()=0
 
virtual void GetGlobalVariables (ConstString basename, llvm::function_ref< bool(DWARFDIE die)> callback)=0
 Finds global variables with the given base name.
 
virtual void GetGlobalVariables (const RegularExpression &regex, llvm::function_ref< bool(DWARFDIE die)> callback)=0
 
virtual void GetGlobalVariables (DWARFUnit &cu, llvm::function_ref< bool(DWARFDIE die)> callback)=0
 cu must be the skeleton unit if possible, not GetNonSkeletonUnit().
 
virtual void GetObjCMethods (ConstString class_name, llvm::function_ref< bool(DWARFDIE die)> callback)=0
 
virtual void GetCompleteObjCClass (ConstString class_name, bool must_be_implementation, llvm::function_ref< bool(DWARFDIE die)> callback)=0
 
virtual void GetTypes (ConstString name, llvm::function_ref< bool(DWARFDIE die)> callback)=0
 
virtual void GetTypes (const DWARFDeclContext &context, llvm::function_ref< bool(DWARFDIE die)> callback)=0
 
virtual void GetFullyQualifiedType (const DWARFDeclContext &context, llvm::function_ref< bool(DWARFDIE die)> callback)
 Finds all DIEs whose fully qualified name matches context.
 
virtual void GetNamespaces (ConstString name, llvm::function_ref< bool(DWARFDIE die)> callback)=0
 
virtual void GetFunctions (const Module::LookupInfo &lookup_info, SymbolFileDWARF &dwarf, const CompilerDeclContext &parent_decl_ctx, llvm::function_ref< bool(DWARFDIE die)> callback)=0
 
virtual void GetFunctions (const RegularExpression &regex, llvm::function_ref< bool(DWARFDIE die)> callback)=0
 
virtual void Dump (Stream &s)=0
 
StatsDuration::Duration GetIndexTime ()
 

Static Public Member Functions

static llvm::Expected< std::unique_ptr< DebugNamesDWARFIndex > > Create (Module &module, DWARFDataExtractor debug_names, DWARFDataExtractor debug_str, SymbolFileDWARF &dwarf)
 

Private Types

using DebugNames = llvm::DWARFDebugNames
 

Private Member Functions

 DebugNamesDWARFIndex (Module &module, std::unique_ptr< llvm::DWARFDebugNames > debug_names_up, DWARFDataExtractor debug_names_data, DWARFDataExtractor debug_str_data, SymbolFileDWARF &dwarf)
 
std::optional< DIERefToDIERef (const DebugNames::Entry &entry) const
 
bool ProcessEntry (const DebugNames::Entry &entry, llvm::function_ref< bool(DWARFDIE die)> callback)
 
bool SameParentChain (llvm::ArrayRef< llvm::StringRef > parent_names, llvm::ArrayRef< DebugNames::Entry > parent_entries) const
 Returns true if parent_entries have identical names to parent_names.
 

Static Private Member Functions

static void MaybeLogLookupError (llvm::Error error, const DebugNames::NameIndex &ni, llvm::StringRef name)
 
static llvm::DenseSet< dw_offset_tGetUnits (const DebugNames &debug_names)
 

Private Attributes

DWARFDebugInfom_debug_info
 
DWARFDataExtractor m_debug_names_data
 
DWARFDataExtractor m_debug_str_data
 
std::unique_ptr< DebugNamesm_debug_names_up
 
ManualDWARFIndex m_fallback
 

Additional Inherited Members

- Protected Member Functions inherited from lldb_private::plugin::dwarf::DWARFIndex
bool ProcessFunctionDIE (const Module::LookupInfo &lookup_info, DIERef ref, SymbolFileDWARF &dwarf, const CompilerDeclContext &parent_decl_ctx, llvm::function_ref< bool(DWARFDIE die)> callback)
 Helper function implementing common logic for processing function dies.
 
DIERefCallbackImpl DIERefCallback (llvm::function_ref< bool(DWARFDIE die)> callback, llvm::StringRef name={}) const
 
void ReportInvalidDIERef (DIERef ref, llvm::StringRef name) const
 
bool GetFullyQualifiedTypeImpl (const DWARFDeclContext &context, DWARFDIE die, llvm::function_ref< bool(DWARFDIE die)> callback)
 Implementation of GetFullyQualifiedType to check a single entry, shareable with derived classes.
 
- Protected Attributes inherited from lldb_private::plugin::dwarf::DWARFIndex
Modulem_module
 
StatsDuration m_index_time
 

Detailed Description

Definition at line 22 of file DebugNamesDWARFIndex.h.

Member Typedef Documentation

◆ DebugNames

Definition at line 83 of file DebugNamesDWARFIndex.h.

Constructor & Destructor Documentation

◆ DebugNamesDWARFIndex()

lldb_private::plugin::dwarf::DebugNamesDWARFIndex::DebugNamesDWARFIndex ( Module module,
std::unique_ptr< llvm::DWARFDebugNames >  debug_names_up,
DWARFDataExtractor  debug_names_data,
DWARFDataExtractor  debug_str_data,
SymbolFileDWARF dwarf 
)
inlineprivate

Definition at line 66 of file DebugNamesDWARFIndex.h.

Member Function Documentation

◆ Create()

llvm::Expected< std::unique_ptr< DebugNamesDWARFIndex > > DebugNamesDWARFIndex::Create ( Module module,
DWARFDataExtractor  debug_names,
DWARFDataExtractor  debug_str,
SymbolFileDWARF dwarf 
)
static

◆ Dump()

void DebugNamesDWARFIndex::Dump ( Stream s)
overridevirtual

◆ GetCompleteObjCClass()

void DebugNamesDWARFIndex::GetCompleteObjCClass ( ConstString  class_name,
bool  must_be_implementation,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
overridevirtual

◆ GetFullyQualifiedType()

void DebugNamesDWARFIndex::GetFullyQualifiedType ( const DWARFDeclContext context,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
overridevirtual

◆ GetFunctions() [1/2]

void DebugNamesDWARFIndex::GetFunctions ( const Module::LookupInfo lookup_info,
SymbolFileDWARF dwarf,
const CompilerDeclContext parent_decl_ctx,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
overridevirtual

◆ GetFunctions() [2/2]

void DebugNamesDWARFIndex::GetFunctions ( const RegularExpression regex,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
overridevirtual

◆ GetGlobalVariables() [1/3]

void DebugNamesDWARFIndex::GetGlobalVariables ( const RegularExpression regex,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
overridevirtual

◆ GetGlobalVariables() [2/3]

void DebugNamesDWARFIndex::GetGlobalVariables ( ConstString  basename,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
overridevirtual

Finds global variables with the given base name.

Any additional filtering (e.g., to only retrieve variables from a given context) should be done by the consumer.

Implements lldb_private::plugin::dwarf::DWARFIndex.

Definition at line 100 of file DebugNamesDWARFIndex.cpp.

References lldb_private::plugin::dwarf::ManualDWARFIndex::GetGlobalVariables(), lldb_private::ConstString::GetStringRef(), m_debug_names_up, m_fallback, and ProcessEntry().

◆ GetGlobalVariables() [3/3]

void DebugNamesDWARFIndex::GetGlobalVariables ( DWARFUnit cu,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
overridevirtual

◆ GetNamespaces()

void DebugNamesDWARFIndex::GetNamespaces ( ConstString  name,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
overridevirtual

◆ GetObjCMethods()

void lldb_private::plugin::dwarf::DebugNamesDWARFIndex::GetObjCMethods ( ConstString  class_name,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
inlineoverridevirtual

Implements lldb_private::plugin::dwarf::DWARFIndex.

Definition at line 40 of file DebugNamesDWARFIndex.h.

◆ GetTypes() [1/2]

void DebugNamesDWARFIndex::GetTypes ( const DWARFDeclContext context,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
overridevirtual

◆ GetTypes() [2/2]

void DebugNamesDWARFIndex::GetTypes ( ConstString  name,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
overridevirtual

◆ GetUnits()

llvm::DenseSet< dw_offset_t > DebugNamesDWARFIndex::GetUnits ( const DebugNames debug_names)
staticprivate

Definition at line 38 of file DebugNamesDWARFIndex.cpp.

◆ MaybeLogLookupError()

void DebugNamesDWARFIndex::MaybeLogLookupError ( llvm::Error  error,
const DebugNames::NameIndex &  ni,
llvm::StringRef  name 
)
staticprivate

◆ Preload()

void lldb_private::plugin::dwarf::DebugNamesDWARFIndex::Preload ( )
inlineoverridevirtual

◆ ProcessEntry()

bool DebugNamesDWARFIndex::ProcessEntry ( const DebugNames::Entry &  entry,
llvm::function_ref< bool(DWARFDIE die)>  callback 
)
private

◆ SameParentChain()

bool DebugNamesDWARFIndex::SameParentChain ( llvm::ArrayRef< llvm::StringRef >  parent_names,
llvm::ArrayRef< DebugNames::Entry >  parent_entries 
) const
private

Returns true if parent_entries have identical names to parent_names.

Definition at line 296 of file DebugNamesDWARFIndex.cpp.

References m_debug_info, lldb_private::plugin::dwarf::DWARFDebugInfo::PeekDIEName(), and ToDIERef().

Referenced by GetFullyQualifiedType().

◆ ToDIERef()

std::optional< DIERef > DebugNamesDWARFIndex::ToDIERef ( const DebugNames::Entry &  entry) const
private

Member Data Documentation

◆ m_debug_info

DWARFDebugInfo& lldb_private::plugin::dwarf::DebugNamesDWARFIndex::m_debug_info
private

Definition at line 76 of file DebugNamesDWARFIndex.h.

Referenced by GetCompleteObjCClass(), SameParentChain(), and ToDIERef().

◆ m_debug_names_data

DWARFDataExtractor lldb_private::plugin::dwarf::DebugNamesDWARFIndex::m_debug_names_data
private

Definition at line 80 of file DebugNamesDWARFIndex.h.

◆ m_debug_names_up

std::unique_ptr<DebugNames> lldb_private::plugin::dwarf::DebugNamesDWARFIndex::m_debug_names_up
private

◆ m_debug_str_data

DWARFDataExtractor lldb_private::plugin::dwarf::DebugNamesDWARFIndex::m_debug_str_data
private

Definition at line 81 of file DebugNamesDWARFIndex.h.

◆ m_fallback

ManualDWARFIndex lldb_private::plugin::dwarf::DebugNamesDWARFIndex::m_fallback
private

The documentation for this class was generated from the following files: