diff options
Diffstat (limited to 'lldb')
| -rw-r--r-- | lldb/include/lldb/API/SBValue.h | 3 | ||||
| -rw-r--r-- | lldb/include/lldb/Core/ValueObject.h | 3 | ||||
| -rw-r--r-- | lldb/include/lldb/Core/ValueObjectSyntheticFilter.h | 3 | ||||
| -rw-r--r-- | lldb/source/API/SBValue.cpp | 4 | ||||
| -rw-r--r-- | lldb/source/Core/ValueObject.cpp | 6 | ||||
| -rw-r--r-- | lldb/source/Core/ValueObjectSyntheticFilter.cpp | 5 |
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(); +} |

