diff options
Diffstat (limited to 'source/Symbol/UnwindTable.cpp')
-rw-r--r-- | source/Symbol/UnwindTable.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/source/Symbol/UnwindTable.cpp b/source/Symbol/UnwindTable.cpp index df9f5b9325653..90b33a69a789b 100644 --- a/source/Symbol/UnwindTable.cpp +++ b/source/Symbol/UnwindTable.cpp @@ -17,6 +17,7 @@ #include "lldb/Symbol/FuncUnwinders.h" #include "lldb/Symbol/SymbolContext.h" #include "lldb/Symbol/DWARFCallFrameInfo.h" +#include "lldb/Symbol/CompactUnwindInfo.h" // There is one UnwindTable object per ObjectFile. // It contains a list of Unwind objects -- one per function, populated lazily -- for the ObjectFile. @@ -30,7 +31,8 @@ UnwindTable::UnwindTable (ObjectFile& objfile) : m_unwinds (), m_initialized (false), m_mutex (), - m_eh_frame (nullptr) + m_eh_frame (nullptr), + m_compact_unwind (nullptr) { } @@ -56,6 +58,11 @@ UnwindTable::Initialize () { m_eh_frame = new DWARFCallFrameInfo(m_object_file, sect, eRegisterKindGCC, true); } + sect = sl->FindSectionByType (eSectionTypeCompactUnwind, true); + if (sect.get()) + { + m_compact_unwind = new CompactUnwindInfo(m_object_file, sect); + } } m_initialized = true; @@ -154,6 +161,13 @@ UnwindTable::GetEHFrameInfo () return m_eh_frame; } +CompactUnwindInfo * +UnwindTable::GetCompactUnwindInfo () +{ + Initialize(); + return m_compact_unwind; +} + bool UnwindTable::GetArchitecture (lldb_private::ArchSpec &arch) { |