diff options
author | Jim Ingham <jingham@apple.com> | 2010-09-28 01:25:32 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2010-09-28 01:25:32 +0000 |
commit | 5a369128f66b30f8ce003c641dc40be0e87c09ca (patch) | |
tree | 8ad8a725e41d77a94fc92b8ec66cd91dfa056560 /lldb/source/Target/Thread.cpp | |
parent | 7990df1ae259f218e1bcdfce24ecc932697cf061 (diff) | |
download | bcm5719-llvm-5a369128f66b30f8ce003c641dc40be0e87c09ca.tar.gz bcm5719-llvm-5a369128f66b30f8ce003c641dc40be0e87c09ca.zip |
Replace the vestigial Value::GetOpaqueCLangQualType with the more correct Value::GetValueOpaqueClangQualType.
But mostly, move the ObjC Trampoline handling code from the MacOSX dyld plugin to the AppleObjCRuntime classes.
llvm-svn: 114935
Diffstat (limited to 'lldb/source/Target/Thread.cpp')
-rw-r--r-- | lldb/source/Target/Thread.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index d4fbfdf3bfb..fb4ad9a3bf2 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -16,6 +16,7 @@ #include "lldb/Host/Host.h" #include "lldb/Target/DynamicLoader.h" #include "lldb/Target/ExecutionContext.h" +#include "lldb/Target/ObjCLanguageRuntime.h" #include "lldb/Target/Process.h" #include "lldb/Target/RegisterContext.h" #include "lldb/Target/StopInfo.h" @@ -662,7 +663,16 @@ Thread::QueueThreadPlanForStepOut (bool abort_other_plans, SymbolContext *addr_c ThreadPlan * Thread::QueueThreadPlanForStepThrough (bool abort_other_plans, bool stop_other_threads) { + // Try the dynamic loader first: ThreadPlanSP thread_plan_sp(GetProcess().GetDynamicLoader()->GetStepThroughTrampolinePlan (*this, stop_other_threads)); + // If that didn't come up with anything, try the ObjC runtime plugin: + if (thread_plan_sp.get() == NULL) + { + ObjCLanguageRuntime *objc_runtime = GetProcess().GetObjCLanguageRuntime(); + if (objc_runtime) + thread_plan_sp = objc_runtime->GetStepThroughTrampolinePlan (*this, stop_other_threads); + } + if (thread_plan_sp.get() == NULL) { thread_plan_sp.reset(new ThreadPlanStepThrough (*this, stop_other_threads)); |