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 | ae3e40dd6143223786b53f4ceca5210e7ac2874e (patch) | |
| tree | b3d0192507accf7f957ea461f75d291c00d102ee | |
| parent | b2115cf81a981c6e6d30fcd6e51d2b04f68e675f (diff) | |
| download | bcm5719-llvm-ae3e40dd6143223786b53f4ceca5210e7ac2874e.tar.gz bcm5719-llvm-ae3e40dd6143223786b53f4ceca5210e7ac2874e.zip | |
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.
llvm-svn: 222226
| -rw-r--r-- | lldb/include/lldb/Symbol/FuncUnwinders.h | 4 | ||||
| -rw-r--r-- | lldb/source/Symbol/FuncUnwinders.cpp | 28 |
2 files changed, 16 insertions, 16 deletions
diff --git a/lldb/include/lldb/Symbol/FuncUnwinders.h b/lldb/include/lldb/Symbol/FuncUnwinders.h index a3df7fba5bf..c5a0808c97f 100644 --- a/lldb/include/lldb/Symbol/FuncUnwinders.h +++ b/lldb/include/lldb/Symbol/FuncUnwinders.h @@ -73,14 +73,14 @@ public: // If any of the UnwindPlans have the address of the LSDA region for this function, // this will return it. Address - GetLSDAAddress () const; + GetLSDAAddress (); // A function may have a Personality Routine associated with it -- used in the // processing of throwing an exception. If any of the UnwindPlans have the // address of the personality routine, this will return it. Read the target-pointer // at this address to get the personality function address. Address - GetPersonalityRoutinePtrAddress () const; + GetPersonalityRoutinePtrAddress (); private: diff --git a/lldb/source/Symbol/FuncUnwinders.cpp b/lldb/source/Symbol/FuncUnwinders.cpp index 2c4797916b1..2075a21b8e1 100644 --- a/lldb/source/Symbol/FuncUnwinders.cpp +++ b/lldb/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; |

