diff options
| -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; |

