summaryrefslogtreecommitdiffstats
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
commitae3e40dd6143223786b53f4ceca5210e7ac2874e (patch)
treeb3d0192507accf7f957ea461f75d291c00d102ee
parentb2115cf81a981c6e6d30fcd6e51d2b04f68e675f (diff)
downloadbcm5719-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.h4
-rw-r--r--lldb/source/Symbol/FuncUnwinders.cpp28
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;
OpenPOWER on IntegriCloud