|
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, const 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 () |
| AddressRanges | GetAddressRanges (const Address &addr, const SymbolContext &sc) |
| UnwindTable (const UnwindTable &)=delete | |
| const UnwindTable & | operator= (const UnwindTable &)=delete |
Private Attributes | |
| Module & | m_module |
| collection | m_unwinds |
| std::atomic< bool > | m_scanned_all_unwind_sources |
| This is true when we have looked at the ObjectFile and SymbolFile for all sources of unwind information; false if we haven't done that yet, or one of the files has been updated in the Module. | |
| 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 25 of file UnwindTable.h.
|
private |
Definition at line 72 of file UnwindTable.h.
|
private |
Definition at line 74 of file UnwindTable.h.
|
private |
Definition at line 73 of file UnwindTable.h.
|
explicit |
Create an Unwind table using the data in the given module.
Definition at line 32 of file UnwindTable.cpp.
References m_arm_unwind_up, m_compact_unwind_up, m_eh_frame_up, m_module, m_mutex, m_object_file_unwind_up, m_scanned_all_unwind_sources, and m_unwinds.
Referenced by operator=(), and UnwindTable().
|
default |
|
privatedelete |
References UnwindTable().
|
private |
Definition at line 177 of file UnwindTable.cpp.
References lldb_private::Stream::EOL(), lldb_private::Stream::Format(), 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 218 of file UnwindTable.cpp.
References m_module.
| ArchSpec UnwindTable::GetArchitecture | ( | ) |
Definition at line 216 of file UnwindTable.cpp.
References m_module.
| ArmUnwindInfo * UnwindTable::GetArmUnwindInfo | ( | ) |
Definition at line 209 of file UnwindTable.cpp.
References Initialize(), and m_arm_unwind_up.
| CompactUnwindInfo * UnwindTable::GetCompactUnwindInfo | ( | ) |
Definition at line 204 of file UnwindTable.cpp.
References Initialize(), and m_compact_unwind_up.
| DWARFCallFrameInfo * UnwindTable::GetDebugFrameInfo | ( | ) |
Definition at line 199 of file UnwindTable.cpp.
References Initialize(), and m_debug_frame_up.
| DWARFCallFrameInfo * UnwindTable::GetEHFrameInfo | ( | ) |
Definition at line 194 of file UnwindTable.cpp.
References Initialize(), and m_eh_frame_up.
| FuncUnwindersSP UnwindTable::GetFuncUnwindersContainingAddress | ( | const Address & | addr, |
| const SymbolContext & | sc ) |
Definition at line 133 of file UnwindTable.cpp.
References GetAddressRanges(), lldb_private::Address::GetFileAddress(), GetFunctionOrSymbolAddress(), Initialize(), m_mutex, and m_unwinds.
Referenced by CommandObjectTargetModulesShowUnwind::DoExecute().
| lldb_private::CallFrameInfo * UnwindTable::GetObjectFileUnwindInfo | ( | ) |
Definition at line 189 of file UnwindTable.cpp.
References Initialize(), and m_object_file_unwind_up.
| SymbolFile * UnwindTable::GetSymbolFile | ( | ) |
Definition at line 214 of file UnwindTable.cpp.
References m_module.
| FuncUnwindersSP UnwindTable::GetUncachedFuncUnwindersContainingAddress | ( | const Address & | addr, |
| const SymbolContext & | sc ) |
Definition at line 165 of file UnwindTable.cpp.
References GetAddressRanges(), GetFunctionOrSymbolAddress(), and Initialize().
Referenced by CommandObjectTargetModulesShowUnwind::DoExecute().
|
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(), 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, m_scanned_all_unwind_sources, and m_unwinds.
|
privatedelete |
References UnwindTable().
|
private |
Definition at line 89 of file UnwindTable.h.
Referenced by GetArmUnwindInfo(), Initialize(), and UnwindTable().
|
private |
Definition at line 88 of file UnwindTable.h.
Referenced by GetCompactUnwindInfo(), Initialize(), and UnwindTable().
|
private |
Definition at line 87 of file UnwindTable.h.
Referenced by GetAddressRanges(), GetDebugFrameInfo(), and Initialize().
|
private |
Definition at line 86 of file UnwindTable.h.
Referenced by GetAddressRanges(), GetEHFrameInfo(), Initialize(), and UnwindTable().
|
private |
Definition at line 76 of file UnwindTable.h.
Referenced by Dump(), GetAllowAssemblyEmulationUnwindPlans(), GetArchitecture(), GetSymbolFile(), Initialize(), and UnwindTable().
|
private |
Definition at line 83 of file UnwindTable.h.
Referenced by Dump(), GetFuncUnwindersContainingAddress(), Initialize(), ModuleWasUpdated(), and UnwindTable().
|
private |
Definition at line 85 of file UnwindTable.h.
Referenced by GetAddressRanges(), GetObjectFileUnwindInfo(), Initialize(), and UnwindTable().
|
private |
This is true when we have looked at the ObjectFile and SymbolFile for all sources of unwind information; false if we haven't done that yet, or one of the files has been updated in the Module.
Definition at line 82 of file UnwindTable.h.
Referenced by Initialize(), ModuleWasUpdated(), and UnwindTable().
|
private |
Definition at line 77 of file UnwindTable.h.
Referenced by Dump(), GetFuncUnwindersContainingAddress(), ModuleWasUpdated(), and UnwindTable().