diff options
| -rw-r--r-- | lldb/include/lldb/Target/Process.h | 8 | ||||
| -rw-r--r-- | lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp | 2 | ||||
| -rw-r--r-- | lldb/source/Target/Process.cpp | 19 |
3 files changed, 14 insertions, 15 deletions
diff --git a/lldb/include/lldb/Target/Process.h b/lldb/include/lldb/Target/Process.h index 57c41051641..8de608c9e0f 100644 --- a/lldb/include/lldb/Target/Process.h +++ b/lldb/include/lldb/Target/Process.h @@ -3033,14 +3033,14 @@ public: virtual LanguageRuntime * - GetLanguageRuntime (lldb::LanguageType language); + GetLanguageRuntime (lldb::LanguageType language, bool retry_if_null = true); virtual CPPLanguageRuntime * - GetCPPLanguageRuntime (); + GetCPPLanguageRuntime (bool retry_if_null = true); virtual ObjCLanguageRuntime * - GetObjCLanguageRuntime (); - + GetObjCLanguageRuntime (bool retry_if_null = true); + bool IsRunning () const; diff --git a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp index 3406a898850..dd7a101fc9f 100644 --- a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp +++ b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp @@ -849,7 +849,7 @@ DynamicLoaderMacOSXDYLD::AddModulesUsingImageInfos (DYLDImageInfo::collection &i // to save time. // Also, I'm assuming there can be only one libobjc dylib loaded... - ObjCLanguageRuntime *objc_runtime = m_process->GetObjCLanguageRuntime(); + ObjCLanguageRuntime *objc_runtime = m_process->GetObjCLanguageRuntime(true); if (objc_runtime != NULL && !objc_runtime->HasReadObjCLibrary()) { size_t num_modules = loaded_module_list.GetSize(); diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index f6c598b5e40..973fc54d760 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -1462,35 +1462,34 @@ Process::GetABI() } LanguageRuntime * -Process::GetLanguageRuntime(lldb::LanguageType language) +Process::GetLanguageRuntime(lldb::LanguageType language, bool retry_if_null) { LanguageRuntimeCollection::iterator pos; pos = m_language_runtimes.find (language); - if (pos == m_language_runtimes.end()) + if (pos == m_language_runtimes.end() || (retry_if_null && !(*pos).second)) { - lldb::LanguageRuntimeSP runtime(LanguageRuntime::FindPlugin(this, language)); + lldb::LanguageRuntimeSP runtime_sp(LanguageRuntime::FindPlugin(this, language)); - m_language_runtimes[language] - = runtime; - return runtime.get(); + m_language_runtimes[language] = runtime_sp; + return runtime_sp.get(); } else return (*pos).second.get(); } CPPLanguageRuntime * -Process::GetCPPLanguageRuntime () +Process::GetCPPLanguageRuntime (bool retry_if_null) { - LanguageRuntime *runtime = GetLanguageRuntime(eLanguageTypeC_plus_plus); + LanguageRuntime *runtime = GetLanguageRuntime(eLanguageTypeC_plus_plus, retry_if_null); if (runtime != NULL && runtime->GetLanguageType() == eLanguageTypeC_plus_plus) return static_cast<CPPLanguageRuntime *> (runtime); return NULL; } ObjCLanguageRuntime * -Process::GetObjCLanguageRuntime () +Process::GetObjCLanguageRuntime (bool retry_if_null) { - LanguageRuntime *runtime = GetLanguageRuntime(eLanguageTypeObjC); + LanguageRuntime *runtime = GetLanguageRuntime(eLanguageTypeObjC, retry_if_null); if (runtime != NULL && runtime->GetLanguageType() == eLanguageTypeObjC) return static_cast<ObjCLanguageRuntime *> (runtime); return NULL; |

