summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Target/Process.h8
-rw-r--r--lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp2
-rw-r--r--lldb/source/Target/Process.cpp19
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;
OpenPOWER on IntegriCloud