diff options
Diffstat (limited to 'source/DataFormatters/CXXFunctionPointer.cpp')
-rw-r--r-- | source/DataFormatters/CXXFunctionPointer.cpp | 75 |
1 files changed, 33 insertions, 42 deletions
diff --git a/source/DataFormatters/CXXFunctionPointer.cpp b/source/DataFormatters/CXXFunctionPointer.cpp index c9e0ccb29698..41e9d4b382b3 100644 --- a/source/DataFormatters/CXXFunctionPointer.cpp +++ b/source/DataFormatters/CXXFunctionPointer.cpp @@ -1,4 +1,4 @@ -//===-- CXXFormatterFunctions.cpp---------------------------------*- C++ -*-===// +//===-- CXXFunctionPointer.cpp-----------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -20,47 +20,38 @@ using namespace lldb; using namespace lldb_private; using namespace lldb_private::formatters; -bool -lldb_private::formatters::CXXFunctionPointerSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options) -{ - std::string destination; - StreamString sstr; - AddressType func_ptr_address_type = eAddressTypeInvalid; - addr_t func_ptr_address = valobj.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: - case eAddressTypeHost: - break; - - case eAddressTypeLoad: - { - ExecutionContext exe_ctx (valobj.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; +bool lldb_private::formatters::CXXFunctionPointerSummaryProvider( + ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) { + std::string destination; + StreamString sstr; + AddressType func_ptr_address_type = eAddressTypeInvalid; + addr_t func_ptr_address = valobj.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: + case eAddressTypeHost: + break; + + case eAddressTypeLoad: { + ExecutionContext exe_ctx(valobj.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; } - if (sstr.GetSize() > 0) - { - stream.Printf("(%s)", sstr.GetData()); - return true; - } - else - return false; + } + if (sstr.GetSize() > 0) { + stream.Printf("(%s)", sstr.GetData()); + return true; + } else + return false; } |