diff options
author | Enrico Granata <egranata@apple.com> | 2014-12-10 02:00:45 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2014-12-10 02:00:45 +0000 |
commit | ff0f23dd417a79ae029206ff16a6d0c785b546cc (patch) | |
tree | 0590c2166f7f23877c04cb74cde80490fb2db5d5 /lldb/source/Core/ValueObject.cpp | |
parent | b9321bd77445fb09ca174203de282a1ff593ba5e (diff) | |
download | bcm5719-llvm-ff0f23dd417a79ae029206ff16a6d0c785b546cc.tar.gz bcm5719-llvm-ff0f23dd417a79ae029206ff16a6d0c785b546cc.zip |
Remove the last vestige of the world before data formatters :-)
Function pointers had a summary generated for them bypassing formatters, directly as part of the ValueObject subsystem
This patch transitions that code into a hardcoded summary
llvm-svn: 223906
Diffstat (limited to 'lldb/source/Core/ValueObject.cpp')
-rw-r--r-- | lldb/source/Core/ValueObject.cpp | 63 |
1 files changed, 4 insertions, 59 deletions
diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp index 33e968d1c1b..2e92d00fc21 100644 --- a/lldb/source/Core/ValueObject.cpp +++ b/lldb/source/Core/ValueObject.cpp @@ -902,66 +902,11 @@ ValueObject::GetSummaryAsCString (TypeSummaryImpl* summary_ptr, GetName().GetCString(), summary_ptr->GetDescription().c_str());*/ - if (UpdateValueIfNeeded (false)) + if (UpdateValueIfNeeded (false) && summary_ptr) { - if (summary_ptr) - { - if (HasSyntheticValue()) - m_synthetic_value->UpdateValueIfNeeded(); // the summary might depend on the synthetic children being up-to-date (e.g. ${svar%#}) - summary_ptr->FormatObject(this, destination, options); - } - else - { - ClangASTType clang_type = GetClangType(); - - // Do some default printout for function pointers - if (clang_type) - { - if (clang_type.IsFunctionPointerType ()) - { - StreamString sstr; - AddressType func_ptr_address_type = eAddressTypeInvalid; - addr_t func_ptr_address = GetPointerValue (&func_ptr_address_type); - if (func_ptr_address != 0 && func_ptr_address != LLDB_INVALID_ADDRESS) - { - switch (func_ptr_address_type) - { - case eAddressTypeInvalid: - case eAddressTypeFile: - break; - - case eAddressTypeLoad: - { - ExecutionContext exe_ctx (GetExecutionContextRef()); - - Address so_addr; - Target *target = exe_ctx.GetTargetPtr(); - if (target && target->GetSectionLoadList().IsEmpty() == false) - { - if (target->GetSectionLoadList().ResolveLoadAddress(func_ptr_address, so_addr)) - { - so_addr.Dump (&sstr, - exe_ctx.GetBestExecutionContextScope(), - Address::DumpStyleResolvedDescription, - Address::DumpStyleSectionNameOffset); - } - } - } - break; - - case eAddressTypeHost: - break; - } - } - if (sstr.GetSize() > 0) - { - destination.assign (1, '('); - destination.append (sstr.GetData(), sstr.GetSize()); - destination.append (1, ')'); - } - } - } - } + if (HasSyntheticValue()) + m_synthetic_value->UpdateValueIfNeeded(); // the summary might depend on the synthetic children being up-to-date (e.g. ${svar%#}) + summary_ptr->FormatObject(this, destination, options); } m_is_getting_summary = false; return !destination.empty(); |