LLDB mainline
|
#include <UnwindTable.h>
Public Member Functions | |
UnwindTable (Module &module) | |
Create an Unwind table using the data in the given module. | |
~UnwindTable () | |
lldb_private::CallFrameInfo * | GetObjectFileUnwindInfo () |
lldb_private::DWARFCallFrameInfo * | GetEHFrameInfo () |
lldb_private::DWARFCallFrameInfo * | GetDebugFrameInfo () |
lldb_private::CompactUnwindInfo * | GetCompactUnwindInfo () |
ArmUnwindInfo * | GetArmUnwindInfo () |
SymbolFile * | GetSymbolFile () |
lldb::FuncUnwindersSP | GetFuncUnwindersContainingAddress (const Address &addr, SymbolContext &sc) |
bool | GetAllowAssemblyEmulationUnwindPlans () |
lldb::FuncUnwindersSP | GetUncachedFuncUnwindersContainingAddress (const Address &addr, const SymbolContext &sc) |
ArchSpec | GetArchitecture () |
void | ModuleWasUpdated () |
Called after an ObjectFile/SymbolFile has been added to a Module to add any new unwind sections that may now be available. | |
Private Types | |
typedef std::map< lldb::addr_t, lldb::FuncUnwindersSP > | collection |
typedef collection::iterator | iterator |
typedef collection::const_iterator | const_iterator |
Private Member Functions | |
void | Dump (Stream &s) |
void | Initialize () |
std::optional< AddressRange > | GetAddressRange (const Address &addr, const SymbolContext &sc) |
UnwindTable (const UnwindTable &)=delete | |
const UnwindTable & | operator= (const UnwindTable &)=delete |
Private Attributes | |
Module & | m_module |
collection | m_unwinds |
bool | m_scanned_all_unwind_sources |
std::mutex | m_mutex |
std::unique_ptr< CallFrameInfo > | m_object_file_unwind_up |
std::unique_ptr< DWARFCallFrameInfo > | m_eh_frame_up |
std::unique_ptr< DWARFCallFrameInfo > | m_debug_frame_up |
std::unique_ptr< CompactUnwindInfo > | m_compact_unwind_up |
std::unique_ptr< ArmUnwindInfo > | m_arm_unwind_up |
Definition at line 24 of file UnwindTable.h.
|
private |
Definition at line 71 of file UnwindTable.h.
|
private |
Definition at line 73 of file UnwindTable.h.
|
private |
Definition at line 72 of file UnwindTable.h.
|
explicit |
Create an Unwind table using the data in the given module.
Definition at line 32 of file UnwindTable.cpp.
|
default |
|
privatedelete |
|
private |
Definition at line 168 of file UnwindTable.cpp.
References lldb_private::Stream::EOL(), lldb_private::Stream::Format(), lldb_private::Module::GetFileSpec(), m_module, m_mutex, m_unwinds, and lldb_private::Stream::Printf().
|
private |
Definition at line 94 of file UnwindTable.cpp.
References lldb_private::SymbolContext::GetAddressRange(), lldb_private::AddressRange::GetBaseAddress(), lldb_private::Address::IsValid(), m_debug_frame_up, m_eh_frame_up, and m_object_file_unwind_up.
Referenced by GetFuncUnwindersContainingAddress(), and GetUncachedFuncUnwindersContainingAddress().
bool UnwindTable::GetAllowAssemblyEmulationUnwindPlans | ( | ) |
Definition at line 209 of file UnwindTable.cpp.
References lldb_private::Module::GetObjectFile(), and m_module.
Referenced by lldb_private::FuncUnwinders::GetAssemblyUnwindPlan().
ArchSpec UnwindTable::GetArchitecture | ( | ) |
Definition at line 207 of file UnwindTable.cpp.
References lldb_private::Module::GetArchitecture(), and m_module.
Referenced by lldb_private::FuncUnwinders::GetUnwindAssemblyProfiler().
ArmUnwindInfo * UnwindTable::GetArmUnwindInfo | ( | ) |
Definition at line 200 of file UnwindTable.cpp.
References Initialize(), and m_arm_unwind_up.
Referenced by lldb_private::FuncUnwinders::GetArmUnwindUnwindPlan().
CompactUnwindInfo * UnwindTable::GetCompactUnwindInfo | ( | ) |
Definition at line 195 of file UnwindTable.cpp.
References Initialize(), and m_compact_unwind_up.
Referenced by lldb_private::FuncUnwinders::GetCompactUnwindUnwindPlan().
DWARFCallFrameInfo * UnwindTable::GetDebugFrameInfo | ( | ) |
Definition at line 190 of file UnwindTable.cpp.
References Initialize(), and m_debug_frame_up.
Referenced by lldb_private::FuncUnwinders::GetDebugFrameUnwindPlan().
DWARFCallFrameInfo * UnwindTable::GetEHFrameInfo | ( | ) |
Definition at line 185 of file UnwindTable.cpp.
References Initialize(), and m_eh_frame_up.
Referenced by lldb_private::FuncUnwinders::GetEHFrameUnwindPlan().
FuncUnwindersSP UnwindTable::GetFuncUnwindersContainingAddress | ( | const Address & | addr, |
SymbolContext & | sc | ||
) |
Definition at line 120 of file UnwindTable.cpp.
References GetAddressRange(), lldb_private::Address::GetFileAddress(), Initialize(), m_mutex, and m_unwinds.
lldb_private::CallFrameInfo * UnwindTable::GetObjectFileUnwindInfo | ( | ) |
Definition at line 180 of file UnwindTable.cpp.
References Initialize(), and m_object_file_unwind_up.
Referenced by lldb_private::FuncUnwinders::GetObjectFileUnwindPlan().
SymbolFile * UnwindTable::GetSymbolFile | ( | ) |
Definition at line 205 of file UnwindTable.cpp.
References lldb_private::Module::GetSymbolFile(), and m_module.
Referenced by lldb_private::FuncUnwinders::GetSymbolFileUnwindPlan().
FuncUnwindersSP UnwindTable::GetUncachedFuncUnwindersContainingAddress | ( | const Address & | addr, |
const SymbolContext & | sc | ||
) |
Definition at line 157 of file UnwindTable.cpp.
References GetAddressRange(), and Initialize().
|
private |
Definition at line 39 of file UnwindTable.cpp.
References lldb_private::ObjectFile::CreateCallFrameInfo(), lldb_private::DWARFCallFrameInfo::DWARF, lldb_private::DWARFCallFrameInfo::EH, lldb::eSectionTypeARMexidx, lldb::eSectionTypeARMextab, lldb::eSectionTypeCompactUnwind, lldb::eSectionTypeDWARFDebugFrame, lldb::eSectionTypeEHFrame, lldb_private::SectionList::FindSectionByType(), lldb_private::Module::GetObjectFile(), lldb_private::Module::GetSectionList(), m_arm_unwind_up, m_compact_unwind_up, m_debug_frame_up, m_eh_frame_up, m_module, m_mutex, m_object_file_unwind_up, and m_scanned_all_unwind_sources.
Referenced by GetArmUnwindInfo(), GetCompactUnwindInfo(), GetDebugFrameInfo(), GetEHFrameInfo(), GetFuncUnwindersContainingAddress(), GetObjectFileUnwindInfo(), and GetUncachedFuncUnwindersContainingAddress().
void UnwindTable::ModuleWasUpdated | ( | ) |
Called after an ObjectFile/SymbolFile has been added to a Module to add any new unwind sections that may now be available.
Definition at line 86 of file UnwindTable.cpp.
References m_mutex, and m_scanned_all_unwind_sources.
Referenced by lldb_private::Module::GetMemoryObjectFile(), lldb_private::Module::GetObjectFile(), and lldb_private::Module::GetSymbolFile().
|
privatedelete |
|
private |
Definition at line 89 of file UnwindTable.h.
Referenced by GetArmUnwindInfo(), and Initialize().
|
private |
Definition at line 88 of file UnwindTable.h.
Referenced by GetCompactUnwindInfo(), and Initialize().
|
private |
Definition at line 87 of file UnwindTable.h.
Referenced by GetAddressRange(), GetDebugFrameInfo(), and Initialize().
|
private |
Definition at line 86 of file UnwindTable.h.
Referenced by GetAddressRange(), GetEHFrameInfo(), and Initialize().
|
private |
Definition at line 75 of file UnwindTable.h.
Referenced by Dump(), GetAllowAssemblyEmulationUnwindPlans(), GetArchitecture(), GetSymbolFile(), and Initialize().
|
private |
Definition at line 83 of file UnwindTable.h.
Referenced by Dump(), GetFuncUnwindersContainingAddress(), Initialize(), and ModuleWasUpdated().
|
private |
Definition at line 85 of file UnwindTable.h.
Referenced by GetAddressRange(), GetObjectFileUnwindInfo(), and Initialize().
|
private |
Definition at line 78 of file UnwindTable.h.
Referenced by Initialize(), and ModuleWasUpdated().
|
private |
Definition at line 76 of file UnwindTable.h.
Referenced by Dump(), and GetFuncUnwindersContainingAddress().