summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/Process.cpp
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2012-05-21 16:51:35 +0000
committerEnrico Granata <egranata@apple.com>2012-05-21 16:51:35 +0000
commitfd4c84ee9ffcea93879d65f7bbcab814c8245788 (patch)
tree273dd05e4f003aec33fe137fb83d2baf143350e5 /lldb/source/Target/Process.cpp
parentea365131a2ff539ab8b052f299b85375b22e522f (diff)
downloadbcm5719-llvm-fd4c84ee9ffcea93879d65f7bbcab814c8245788.tar.gz
bcm5719-llvm-fd4c84ee9ffcea93879d65f7bbcab814c8245788.zip
<rdar://problem/11355592> Fixing a bug where we would incorrectly try and determine a dynamic type for a variable of a pointer type that is not a valid generic type for dynamic pointers.
llvm-svn: 157190
Diffstat (limited to 'lldb/source/Target/Process.cpp')
-rw-r--r--lldb/source/Target/Process.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 5827b3d2604..658204cfbd6 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -1573,6 +1573,27 @@ Process::GetObjCLanguageRuntime (bool retry_if_null)
return NULL;
}
+bool
+Process::IsPossibleDynamicValue (ValueObject& in_value)
+{
+ if (in_value.IsDynamic())
+ return false;
+ LanguageType known_type = in_value.GetObjectRuntimeLanguage();
+
+ if (known_type != eLanguageTypeUnknown && known_type != eLanguageTypeC)
+ {
+ LanguageRuntime *runtime = GetLanguageRuntime (known_type);
+ return runtime ? runtime->CouldHaveDynamicValue(in_value) : false;
+ }
+
+ LanguageRuntime *cpp_runtime = GetLanguageRuntime (eLanguageTypeC_plus_plus);
+ if (cpp_runtime && cpp_runtime->CouldHaveDynamicValue(in_value))
+ return true;
+
+ LanguageRuntime *objc_runtime = GetLanguageRuntime (eLanguageTypeObjC);
+ return objc_runtime ? objc_runtime->CouldHaveDynamicValue(in_value) : false;
+}
+
BreakpointSiteList &
Process::GetBreakpointSiteList()
{
OpenPOWER on IntegriCloud