diff options
author | Jason Molenda <jmolenda@apple.com> | 2014-11-18 05:57:42 +0000 |
---|---|---|
committer | Jason Molenda <jmolenda@apple.com> | 2014-11-18 05:57:42 +0000 |
commit | 683a8adf104feda36aea059d4439640cfe254100 (patch) | |
tree | 052b9d0f6c662a55b1066b44eadc5c5355b9eda0 /source/Symbol/FuncUnwinders.cpp | |
parent | 2dc34ea43b005ffad314e4cf573b712ca508911b (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.cpp | 28 |
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; |