summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
Diffstat (limited to 'lldb')
-rw-r--r--lldb/include/lldb/API/SBValue.h3
-rw-r--r--lldb/include/lldb/Core/ValueObject.h3
-rw-r--r--lldb/include/lldb/Core/ValueObjectSyntheticFilter.h3
-rw-r--r--lldb/source/API/SBValue.cpp4
-rw-r--r--lldb/source/Core/ValueObject.cpp6
-rw-r--r--lldb/source/Core/ValueObjectSyntheticFilter.cpp5
6 files changed, 21 insertions, 3 deletions
diff --git a/lldb/include/lldb/API/SBValue.h b/lldb/include/lldb/API/SBValue.h
index 3abb37a10c1..1619e13e304 100644
--- a/lldb/include/lldb/API/SBValue.h
+++ b/lldb/include/lldb/API/SBValue.h
@@ -26,7 +26,7 @@ public:
lldb::SBValue &
operator =(const lldb::SBValue &rhs);
-
+
~SBValue ();
bool
@@ -382,6 +382,7 @@ protected:
private:
lldb::ValueObjectSP m_opaque_sp;
+ friend void* _wrap_SBValue_GetNonSyntheticValue(void*,void*);
};
} // namespace lldb
diff --git a/lldb/include/lldb/Core/ValueObject.h b/lldb/include/lldb/Core/ValueObject.h
index 80233d30273..80e9f6bf02f 100644
--- a/lldb/include/lldb/Core/ValueObject.h
+++ b/lldb/include/lldb/Core/ValueObject.h
@@ -832,6 +832,9 @@ public:
virtual lldb::ValueObjectSP
GetStaticValue ();
+ virtual lldb::ValueObjectSP
+ GetNonSyntheticValue ();
+
lldb::ValueObjectSP
GetSyntheticValue (bool use_synthetic = true);
diff --git a/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h b/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h
index c04b2ca7e1b..2af2898c468 100644
--- a/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h
+++ b/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h
@@ -98,6 +98,9 @@ public:
return NULL;
}
+ virtual lldb::ValueObjectSP
+ GetNonSyntheticValue ();
+
protected:
virtual bool
UpdateValue ();
diff --git a/lldb/source/API/SBValue.cpp b/lldb/source/API/SBValue.cpp
index 6908c8f13d4..a94b18bfa1f 100644
--- a/lldb/source/API/SBValue.cpp
+++ b/lldb/source/API/SBValue.cpp
@@ -1014,8 +1014,8 @@ SBValue::GetNonSyntheticValue ()
// deliberately breaking the rules here to optimize the case where we DO NOT want
// the synthetic value to be returned to the user - if we did not do this, we would have to tell
// the target to suppress the synthetic value, and then return the flag to its original value
- if (value_sp->GetParent())
- sb_value.m_opaque_sp = value_sp->GetParent()->GetSP();
+ if (value_sp->GetNonSyntheticValue())
+ sb_value.m_opaque_sp = value_sp->GetNonSyntheticValue();
}
}
}
diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp
index 008ff4f21c5..b0b1a67095a 100644
--- a/lldb/source/Core/ValueObject.cpp
+++ b/lldb/source/Core/ValueObject.cpp
@@ -2103,6 +2103,12 @@ ValueObject::GetStaticValue()
return GetSP();
}
+lldb::ValueObjectSP
+ValueObject::GetNonSyntheticValue ()
+{
+ return GetSP();
+}
+
ValueObjectSP
ValueObject::GetSyntheticValue (bool use_synthetic)
{
diff --git a/lldb/source/Core/ValueObjectSyntheticFilter.cpp b/lldb/source/Core/ValueObjectSyntheticFilter.cpp
index 56eb9f6c56e..d5833e9d926 100644
--- a/lldb/source/Core/ValueObjectSyntheticFilter.cpp
+++ b/lldb/source/Core/ValueObjectSyntheticFilter.cpp
@@ -174,3 +174,8 @@ ValueObjectSynthetic::IsInScope ()
return m_parent->IsInScope();
}
+lldb::ValueObjectSP
+ValueObjectSynthetic::GetNonSyntheticValue ()
+{
+ return m_parent->GetSP();
+}
OpenPOWER on IntegriCloud