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 | Update () |
Called after a 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_initialized |
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 209 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 135 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 250 of file UnwindTable.cpp.
References lldb_private::Module::GetObjectFile(), and m_module.
Referenced by lldb_private::FuncUnwinders::GetAssemblyUnwindPlan().
ArchSpec UnwindTable::GetArchitecture | ( | ) |
Definition at line 248 of file UnwindTable.cpp.
References lldb_private::Module::GetArchitecture(), and m_module.
Referenced by lldb_private::FuncUnwinders::GetUnwindAssemblyProfiler().
ArmUnwindInfo * UnwindTable::GetArmUnwindInfo | ( | ) |
Definition at line 241 of file UnwindTable.cpp.
References Initialize(), and m_arm_unwind_up.
Referenced by lldb_private::FuncUnwinders::GetArmUnwindUnwindPlan().
CompactUnwindInfo * UnwindTable::GetCompactUnwindInfo | ( | ) |
Definition at line 236 of file UnwindTable.cpp.
References Initialize(), and m_compact_unwind_up.
Referenced by lldb_private::FuncUnwinders::GetCompactUnwindUnwindPlan().
DWARFCallFrameInfo * UnwindTable::GetDebugFrameInfo | ( | ) |
Definition at line 231 of file UnwindTable.cpp.
References Initialize(), and m_debug_frame_up.
Referenced by lldb_private::FuncUnwinders::GetDebugFrameUnwindPlan().
DWARFCallFrameInfo * UnwindTable::GetEHFrameInfo | ( | ) |
Definition at line 226 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 161 of file UnwindTable.cpp.
References GetAddressRange(), lldb_private::Address::GetFileAddress(), Initialize(), m_mutex, and m_unwinds.
lldb_private::CallFrameInfo * UnwindTable::GetObjectFileUnwindInfo | ( | ) |
Definition at line 221 of file UnwindTable.cpp.
References Initialize(), and m_object_file_unwind_up.
Referenced by lldb_private::FuncUnwinders::GetObjectFileUnwindPlan().
SymbolFile * UnwindTable::GetSymbolFile | ( | ) |
Definition at line 246 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 198 of file UnwindTable.cpp.
References GetAddressRange(), and Initialize().
|
private |
Definition at line 40 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_initialized, m_module, m_mutex, and m_object_file_unwind_up.
Referenced by GetArmUnwindInfo(), GetCompactUnwindInfo(), GetDebugFrameInfo(), GetEHFrameInfo(), GetFuncUnwindersContainingAddress(), GetObjectFileUnwindInfo(), GetUncachedFuncUnwindersContainingAddress(), and Update().
|
privatedelete |
void UnwindTable::Update | ( | ) |
Called after a SymbolFile has been added to a Module to add any new unwind sections that may now be available.
Definition at line 87 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(), Initialize(), m_arm_unwind_up, m_compact_unwind_up, m_debug_frame_up, m_eh_frame_up, m_initialized, m_module, m_mutex, and m_object_file_unwind_up.
|
private |
Definition at line 85 of file UnwindTable.h.
Referenced by GetArmUnwindInfo(), Initialize(), and Update().
|
private |
Definition at line 84 of file UnwindTable.h.
Referenced by GetCompactUnwindInfo(), Initialize(), and Update().
|
private |
Definition at line 83 of file UnwindTable.h.
Referenced by GetAddressRange(), GetDebugFrameInfo(), Initialize(), and Update().
|
private |
Definition at line 82 of file UnwindTable.h.
Referenced by GetAddressRange(), GetEHFrameInfo(), Initialize(), and Update().
|
private |
Definition at line 78 of file UnwindTable.h.
Referenced by Initialize(), and Update().
|
private |
Definition at line 75 of file UnwindTable.h.
Referenced by Dump(), GetAllowAssemblyEmulationUnwindPlans(), GetArchitecture(), GetSymbolFile(), Initialize(), and Update().
|
private |
Definition at line 79 of file UnwindTable.h.
Referenced by Dump(), GetFuncUnwindersContainingAddress(), Initialize(), and Update().
|
private |
Definition at line 81 of file UnwindTable.h.
Referenced by GetAddressRange(), GetObjectFileUnwindInfo(), Initialize(), and Update().
|
private |
Definition at line 76 of file UnwindTable.h.
Referenced by Dump(), and GetFuncUnwindersContainingAddress().