diff options
2 files changed, 11 insertions, 1 deletions
diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp index 5cc611eeae9..f54875857d1 100644 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp @@ -1106,12 +1106,16 @@ AppleObjCTrampolineHandler::GetStepThroughDispatchPlan (Thread &thread, bool sto flag_value.GetScalar() = 0; // FIXME - Set to 0 when debugging is done. dispatch_values.PushValue (flag_value); + + // The step through code might have to fill in the cache, so it is not safe to run only one thread. + // So we override the stop_others value passed in to us here: + const bool trampoline_stop_others = false; ret_plan_sp.reset (new AppleThreadPlanStepThroughObjCTrampoline (thread, this, dispatch_values, isa_addr, sel_addr, - stop_others)); + trampoline_stop_others)); if (log) { StreamString s; diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.h b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.h index 241462aee6d..32c47de0068 100644 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.h +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.h @@ -54,6 +54,12 @@ public: virtual bool ShouldStop (Event *event_ptr); + + virtual bool + StopOthers() + { + return m_stop_others; + } // The base class MischiefManaged does some cleanup - so you have to call it // in your MischiefManaged derived class. |