|
LLDB mainline
|
#include <UnwindTable.h>
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 77 of file UnwindTable.h.
|
private |
Definition at line 79 of file UnwindTable.h.
|
private |
Definition at line 78 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 188 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 229 of file UnwindTable.cpp.
References m_module.
| ArchSpec UnwindTable::GetArchitecture | ( | ) |
Definition at line 227 of file UnwindTable.cpp.
References m_module.
| ArmUnwindInfo * UnwindTable::GetArmUnwindInfo | ( | ) |
Definition at line 220 of file UnwindTable.cpp.
References Initialize(), and m_arm_unwind_up.
| CompactUnwindInfo * UnwindTable::GetCompactUnwindInfo | ( | ) |
Definition at line 215 of file UnwindTable.cpp.
References Initialize(), and m_compact_unwind_up.
| DWARFCallFrameInfo * UnwindTable::GetDebugFrameInfo | ( | ) |
Definition at line 210 of file UnwindTable.cpp.
References Initialize(), and m_debug_frame_up.
| DWARFCallFrameInfo * UnwindTable::GetEHFrameInfo | ( | ) |
Definition at line 205 of file UnwindTable.cpp.
References Initialize(), and m_eh_frame_up.
Return the start of the function containing addr according to the object file's own unwind info (the .pdata RUNTIME_FUNCTION on PE/COFF x64), or an invalid address if there is none.
Definition at line 178 of file UnwindTable.cpp.
References lldb_private::AddressRange::GetBaseAddress(), Initialize(), and m_object_file_unwind_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 200 of file UnwindTable.cpp.
References Initialize(), and m_object_file_unwind_up.
| SymbolFile * UnwindTable::GetSymbolFile | ( | ) |
Definition at line 225 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(), GetFunctionStartFromObjectFileUnwindInfo(), 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 94 of file UnwindTable.h.
Referenced by GetArmUnwindInfo(), Initialize(), and UnwindTable().
|
private |
Definition at line 93 of file UnwindTable.h.
Referenced by GetCompactUnwindInfo(), Initialize(), and UnwindTable().
|
private |
Definition at line 92 of file UnwindTable.h.
Referenced by GetAddressRanges(), GetDebugFrameInfo(), and Initialize().
|
private |
Definition at line 91 of file UnwindTable.h.
Referenced by GetAddressRanges(), GetEHFrameInfo(), Initialize(), and UnwindTable().
|
private |
Definition at line 81 of file UnwindTable.h.
Referenced by Dump(), GetAllowAssemblyEmulationUnwindPlans(), GetArchitecture(), GetSymbolFile(), Initialize(), and UnwindTable().
|
private |
Definition at line 88 of file UnwindTable.h.
Referenced by Dump(), GetFuncUnwindersContainingAddress(), Initialize(), ModuleWasUpdated(), and UnwindTable().
|
private |
Definition at line 90 of file UnwindTable.h.
Referenced by GetAddressRanges(), GetFunctionStartFromObjectFileUnwindInfo(), 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 87 of file UnwindTable.h.
Referenced by Initialize(), ModuleWasUpdated(), and UnwindTable().
|
private |
Definition at line 82 of file UnwindTable.h.
Referenced by Dump(), GetFuncUnwindersContainingAddress(), ModuleWasUpdated(), and UnwindTable().