summaryrefslogtreecommitdiff
path: root/source/Symbol/FuncUnwinders.cpp
diff options
context:
space:
mode:
authorJason Molenda <jmolenda@apple.com>2014-11-18 05:57:42 +0000
committerJason Molenda <jmolenda@apple.com>2014-11-18 05:57:42 +0000
commit683a8adf104feda36aea059d4439640cfe254100 (patch)
tree052b9d0f6c662a55b1066b44eadc5c5355b9eda0 /source/Symbol/FuncUnwinders.cpp
parent2dc34ea43b005ffad314e4cf573b712ca508911b (diff)
Fix up the code in the FuncUnwinders class that
retrieves the personality routine addr and the LSDA addr. Don't bother checking with the "non-call site" unwind plan - this kind of information is only going to come from the call site unwind plan. git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@222226 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'source/Symbol/FuncUnwinders.cpp')
-rw-r--r--source/Symbol/FuncUnwinders.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/source/Symbol/FuncUnwinders.cpp b/source/Symbol/FuncUnwinders.cpp
index 2c4797916..2075a21b8 100644
--- a/source/Symbol/FuncUnwinders.cpp
+++ b/source/Symbol/FuncUnwinders.cpp
@@ -211,16 +211,16 @@ FuncUnwinders::GetUnwindAssemblyProfiler ()
}
Address
-FuncUnwinders::GetLSDAAddress () const
+FuncUnwinders::GetLSDAAddress ()
{
Address lsda_addr;
- if (m_unwind_plan_non_call_site_sp->GetLSDAAddress().IsValid())
- {
- lsda_addr = m_unwind_plan_non_call_site_sp->GetLSDAAddress().IsValid();
- }
- else if (m_unwind_plan_call_site_sp->GetLSDAAddress().IsValid())
+ Mutex::Locker locker (m_mutex);
+
+ GetUnwindPlanAtCallSite (-1);
+
+ if (m_unwind_plan_call_site_sp && m_unwind_plan_call_site_sp->GetLSDAAddress().IsValid())
{
- lsda_addr = m_unwind_plan_non_call_site_sp->GetLSDAAddress().IsValid();
+ lsda_addr = m_unwind_plan_call_site_sp->GetLSDAAddress().IsValid();
}
return lsda_addr;
@@ -228,16 +228,16 @@ FuncUnwinders::GetLSDAAddress () const
Address
-FuncUnwinders::GetPersonalityRoutinePtrAddress () const
+FuncUnwinders::GetPersonalityRoutinePtrAddress ()
{
Address personality_addr;
- if (m_unwind_plan_non_call_site_sp->GetPersonalityFunctionPtr().IsValid())
- {
- personality_addr = m_unwind_plan_non_call_site_sp->GetPersonalityFunctionPtr().IsValid();
- }
- else if (m_unwind_plan_call_site_sp->GetPersonalityFunctionPtr().IsValid())
+ Mutex::Locker locker (m_mutex);
+
+ GetUnwindPlanAtCallSite (-1);
+
+ if (m_unwind_plan_call_site_sp && m_unwind_plan_call_site_sp->GetPersonalityFunctionPtr().IsValid())
{
- personality_addr = m_unwind_plan_non_call_site_sp->GetPersonalityFunctionPtr().IsValid();
+ personality_addr = m_unwind_plan_call_site_sp->GetPersonalityFunctionPtr().IsValid();
}
return personality_addr;