summaryrefslogtreecommitdiff
path: root/source/Symbol/UnwindTable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Symbol/UnwindTable.cpp')
-rw-r--r--source/Symbol/UnwindTable.cpp16
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)
{