summaryrefslogtreecommitdiffstats
path: root/lldb/source/Symbol/FuncUnwinders.cpp
diff options
context:
space:
mode:
authorPavel Labath <pavel@labath.sk>2019-05-24 09:54:39 +0000
committerPavel Labath <pavel@labath.sk>2019-05-24 09:54:39 +0000
commit1a0312ca0b20d16edb859065bbace75f6701c92e (patch)
treefe9cd486333ced50714cac80b23b24ffbb90267f /lldb/source/Symbol/FuncUnwinders.cpp
parent7d4a67852da7ecce3ae43b61baa9f0cd068b05c6 (diff)
downloadbcm5719-llvm-1a0312ca0b20d16edb859065bbace75f6701c92e.tar.gz
bcm5719-llvm-1a0312ca0b20d16edb859065bbace75f6701c92e.zip
[FuncUnwinders] Use "symbol file" unwind plans for unwinding
Summary: Previous patch (r360409) introduced the "symbol file unwind plan" concept, but that plan wasn't used for unwinding yet. With this patch, we start to consider the new plan as a possible strategy for both synchronous and asynchronous unwinding. I also add a test that asserts that unwinding via breakpad STACK CFI info works end-to-end. Reviewers: jasonmolenda, clayborg Subscribers: lldb-commits, amccarth, markmentovai Differential Revision: https://reviews.llvm.org/D61853 llvm-svn: 361618
Diffstat (limited to 'lldb/source/Symbol/FuncUnwinders.cpp')
-rw-r--r--lldb/source/Symbol/FuncUnwinders.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/lldb/source/Symbol/FuncUnwinders.cpp b/lldb/source/Symbol/FuncUnwinders.cpp
index bbdb5e1bbf7..33b2e295989 100644
--- a/lldb/source/Symbol/FuncUnwinders.cpp
+++ b/lldb/source/Symbol/FuncUnwinders.cpp
@@ -54,9 +54,12 @@ FuncUnwinders::FuncUnwinders(UnwindTable &unwind_table, AddressRange range)
FuncUnwinders::~FuncUnwinders() {}
-UnwindPlanSP FuncUnwinders::GetUnwindPlanAtCallSite(Target &target) {
+UnwindPlanSP FuncUnwinders::GetUnwindPlanAtCallSite(Target &target,
+ Thread &thread) {
std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ if (UnwindPlanSP plan_sp = GetSymbolFileUnwindPlan(thread))
+ return plan_sp;
if (UnwindPlanSP plan_sp = GetEHFrameUnwindPlan(target))
return plan_sp;
if (UnwindPlanSP plan_sp = GetDebugFrameUnwindPlan(target))
@@ -357,6 +360,8 @@ UnwindPlanSP FuncUnwinders::GetUnwindPlanAtNonCallSite(Target &target,
return eh_frame_sp;
}
+ if (UnwindPlanSP plan_sp = GetSymbolFileUnwindPlan(thread))
+ return plan_sp;
if (UnwindPlanSP plan_sp = GetEHFrameAugmentedUnwindPlan(target, thread))
return plan_sp;
if (UnwindPlanSP plan_sp = GetDebugFrameAugmentedUnwindPlan(target, thread))
OpenPOWER on IntegriCloud