diff options
| author | Enrico Granata <egranata@apple.com> | 2014-11-18 22:54:45 +0000 |
|---|---|---|
| committer | Enrico Granata <egranata@apple.com> | 2014-11-18 22:54:45 +0000 |
| commit | 34042212b2b9b302899029a9e8b78cb55d7fde05 (patch) | |
| tree | 7cdf2f0815cd5545c3bce5be64de3a580880dcc9 /lldb/source/DataFormatters | |
| parent | 489af08f67c5a7c29cdb1a5a61ab8244138fe756 (diff) | |
| download | bcm5719-llvm-34042212b2b9b302899029a9e8b78cb55d7fde05.tar.gz bcm5719-llvm-34042212b2b9b302899029a9e8b78cb55d7fde05.zip | |
Add the ability for the NSString and libc++ std::string formatters to retrieve uncapped data
llvm-svn: 222277
Diffstat (limited to 'lldb/source/DataFormatters')
| -rw-r--r-- | lldb/source/DataFormatters/CXXFormatterFunctions.cpp | 15 | ||||
| -rw-r--r-- | lldb/source/DataFormatters/StringPrinter.cpp | 4 |
2 files changed, 14 insertions, 5 deletions
diff --git a/lldb/source/DataFormatters/CXXFormatterFunctions.cpp b/lldb/source/DataFormatters/CXXFormatterFunctions.cpp index 2a8ca2d48e6..6d847fcb7bd 100644 --- a/lldb/source/DataFormatters/CXXFormatterFunctions.cpp +++ b/lldb/source/DataFormatters/CXXFormatterFunctions.cpp @@ -11,6 +11,7 @@ #include "lldb/DataFormatters/CXXFormatterFunctions.h" #include "lldb/DataFormatters/StringPrinter.h" +#include "lldb/DataFormatters/TypeSummary.h" #include "llvm/Support/ConvertUTF.h" @@ -463,7 +464,7 @@ lldb_private::formatters::LibcxxWStringSummaryProvider (ValueObject& valobj, Str } bool -lldb_private::formatters::LibcxxStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions&) +lldb_private::formatters::LibcxxStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& summary_options) { uint64_t size = 0; ValueObjectSP location_sp((ValueObject*)nullptr); @@ -481,7 +482,8 @@ lldb_private::formatters::LibcxxStringSummaryProvider (ValueObject& valobj, Stre return false; DataExtractor extractor; - size = std::min<decltype(size)>(size, valobj.GetTargetSP()->GetMaximumSizeOfStringSummary()); + if (summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryCapped) + size = std::min<decltype(size)>(size, valobj.GetTargetSP()->GetMaximumSizeOfStringSummary()); location_sp->GetPointeeData(extractor, 0, size); ReadBufferAndDumpToStreamOptions options(valobj); @@ -745,7 +747,7 @@ GetNSPathStore2Type (Target &target) } bool -lldb_private::formatters::NSStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options) +lldb_private::formatters::NSStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& summary_options) { ProcessSP process_sp = valobj.GetProcessSP(); if (!process_sp) @@ -846,6 +848,7 @@ lldb_private::formatters::NSStringSummaryProvider (ValueObject& valobj, Stream& options.SetQuote('"'); options.SetSourceSize(explicit_length); options.SetNeedsZeroTermination(false); + options.SetIgnoreMaxLength(summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryUncapped); return ReadStringAndDumpToStream<StringElementType::UTF16>(options); } else @@ -857,7 +860,7 @@ lldb_private::formatters::NSStringSummaryProvider (ValueObject& valobj, Stream& options.SetPrefixToken('@'); options.SetSourceSize(explicit_length); options.SetNeedsZeroTermination(false); - + options.SetIgnoreMaxLength(summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryUncapped); return ReadStringAndDumpToStream<StringElementType::ASCII>(options); } } @@ -893,6 +896,7 @@ lldb_private::formatters::NSStringSummaryProvider (ValueObject& valobj, Stream& options.SetQuote('"'); options.SetSourceSize(explicit_length); options.SetNeedsZeroTermination(has_explicit_length == false); + options.SetIgnoreMaxLength(summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryUncapped); return ReadStringAndDumpToStream<StringElementType::UTF16> (options); } else if (is_special) @@ -909,6 +913,7 @@ lldb_private::formatters::NSStringSummaryProvider (ValueObject& valobj, Stream& options.SetQuote('"'); options.SetSourceSize(explicit_length); options.SetNeedsZeroTermination(has_explicit_length == false); + options.SetIgnoreMaxLength(summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryUncapped); return ReadStringAndDumpToStream<StringElementType::UTF16> (options); } else if (is_inline) @@ -922,6 +927,7 @@ lldb_private::formatters::NSStringSummaryProvider (ValueObject& valobj, Stream& options.SetStream(&stream); options.SetPrefixToken('@'); options.SetSourceSize(explicit_length); + options.SetIgnoreMaxLength(summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryUncapped); return ReadStringAndDumpToStream<StringElementType::ASCII>(options); } else @@ -938,6 +944,7 @@ lldb_private::formatters::NSStringSummaryProvider (ValueObject& valobj, Stream& options.SetPrefixToken('@'); options.SetStream(&stream); options.SetSourceSize(explicit_length); + options.SetIgnoreMaxLength(summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryUncapped); return ReadStringAndDumpToStream<StringElementType::ASCII>(options); } } diff --git a/lldb/source/DataFormatters/StringPrinter.cpp b/lldb/source/DataFormatters/StringPrinter.cpp index 52d03fc7379..ec1bf558455 100644 --- a/lldb/source/DataFormatters/StringPrinter.cpp +++ b/lldb/source/DataFormatters/StringPrinter.cpp @@ -454,8 +454,10 @@ ReadStringAndDumpToStream<StringElementType::ASCII> (ReadStringAndDumpToStreamOp if (options.GetSourceSize() == 0) size = process_sp->GetTarget().GetMaximumSizeOfStringSummary(); - else + else if (!options.GetIgnoreMaxLength()) size = std::min(options.GetSourceSize(),process_sp->GetTarget().GetMaximumSizeOfStringSummary()); + else + size = options.GetSourceSize(); lldb::DataBufferSP buffer_sp(new DataBufferHeap(size,0)); |

