Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions lldb/include/lldb/DataFormatters/FormattersHelpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ std::optional<size_t> ExtractIndexFromString(const char *item_name);
void DumpCxxSmartPtrPointerSummary(Stream &stream, ValueObject &ptr,
const TypeSummaryOptions &options);

bool ContainerSizeSummaryProvider(ValueObject &valobj, Stream &stream,
const TypeSummaryOptions &options);

Address GetArrayAddressOrPointerValue(ValueObject &valobj);

time_t GetOSXEpoch();
Expand Down
6 changes: 6 additions & 0 deletions lldb/source/DataFormatters/FormattersHelpers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,3 +145,9 @@ void lldb_private::formatters::DumpCxxSmartPtrPointerSummary(
ValueObject::PrintableRepresentationSpecialCases::eDisable, false))
stream.Printf("ptr = 0x%" PRIx64, ptr.GetValueAsUnsigned(0));
}

bool lldb_private::formatters::ContainerSizeSummaryProvider(
ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
return FormatEntity::FormatStringRef("size=${svar%#}", stream, nullptr,
nullptr, nullptr, &valobj, false, false);
}
116 changes: 63 additions & 53 deletions lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1016,15 +1016,15 @@ static void LoadLibCxxFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
stl_summary_flags.SetDontShowChildren(false);
stl_summary_flags.SetSkipPointers(false);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::bitset summary provider",
"^std::__[[:alnum:]]+::bitset<.+>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::vector summary provider",
"^std::__[[:alnum:]]+::vector<.+>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::valarray summary provider",
"^std::__[[:alnum:]]+::valarray<.+>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
Expand All @@ -1033,52 +1033,52 @@ static void LoadLibCxxFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
"^std::__[[:alnum:]]+::slice_array<.+>$", stl_summary_flags,
true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ summary provider for the valarray proxy arrays",
"^std::__[[:alnum:]]+::(gslice|mask|indirect)_array<.+>$",
stl_summary_flags, true);
AddCXXSummary(
cpp_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider,
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::list summary provider",
"^std::__[[:alnum:]]+::forward_list<.+>$", stl_summary_flags, true);
AddCXXSummary(
cpp_category_sp, lldb_private::formatters::LibcxxContainerSummaryProvider,
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::list summary provider",
// A POSIX variant of: "^std::__(?!cxx11:)[[:alnum:]]+::list<.+>$"
// so that it does not clash with: "^std::(__cxx11::)?list<.+>$"
"^std::__([A-Zabd-z0-9]|cx?[A-Za-wyz0-9]|cxx1?[A-Za-z02-9]|"
"cxx11[[:alnum:]])[[:alnum:]]*::list<.+>$",
stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::map summary provider",
"^std::__[[:alnum:]]+::map<.+>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::deque summary provider",
"^std::__[[:alnum:]]+::deque<.+>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::queue summary provider",
"^std::__[[:alnum:]]+::queue<.+>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::set summary provider",
"^std::__[[:alnum:]]+::set<.+>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::multiset summary provider",
"^std::__[[:alnum:]]+::multiset<.+>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::multimap summary provider",
"^std::__[[:alnum:]]+::multimap<.+>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::unordered containers summary provider",
"^std::__[[:alnum:]]+::unordered_(multi)?(map|set)<.+> >$",
stl_summary_flags, true);
AddCXXSummary(cpp_category_sp, LibcxxContainerSummaryProvider,
AddCXXSummary(cpp_category_sp, ContainerSizeSummaryProvider,
"libc++ std::tuple summary provider",
"^std::__[[:alnum:]]+::tuple<.*>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
Expand All @@ -1094,7 +1094,7 @@ static void LoadLibCxxFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
"libc++ std::variant summary provider",
"^std::__[[:alnum:]]+::variant<.+>$", stl_summary_flags, true);
AddCXXSummary(cpp_category_sp,
lldb_private::formatters::LibcxxContainerSummaryProvider,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libc++ std::span summary provider",
"^std::__[[:alnum:]]+::span<.+>$", stl_summary_flags, true);

Expand Down Expand Up @@ -1456,44 +1456,54 @@ static void LoadLibStdcppFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {

stl_summary_flags.SetDontShowChildren(false);
stl_summary_flags.SetSkipPointers(false);
cpp_category_sp->AddTypeSummary("^std::(__debug::)?bitset<.+>(( )?&)?$",
eFormatterMatchRegex,
TypeSummaryImplSP(new StringSummaryFormat(
stl_summary_flags, "size=${svar%#}")));
cpp_category_sp->AddTypeSummary("^std::(__debug::)?vector<.+>(( )?&)?$",
eFormatterMatchRegex,
TypeSummaryImplSP(new StringSummaryFormat(
stl_summary_flags, "size=${svar%#}")));
cpp_category_sp->AddTypeSummary("^std::(__debug::)?map<.+> >(( )?&)?$",
eFormatterMatchRegex,
TypeSummaryImplSP(new StringSummaryFormat(
stl_summary_flags, "size=${svar%#}")));
cpp_category_sp->AddTypeSummary("^std::(__debug::)?set<.+> >(( )?&)?$",
eFormatterMatchRegex,
TypeSummaryImplSP(new StringSummaryFormat(
stl_summary_flags, "size=${svar%#}")));
cpp_category_sp->AddTypeSummary("^std::(__debug::)?deque<.+>(( )?&)?$",
eFormatterMatchRegex,
TypeSummaryImplSP(new StringSummaryFormat(
stl_summary_flags, "size=${svar%#}")));
cpp_category_sp->AddTypeSummary("^std::(__debug::)?multimap<.+> >(( )?&)?$",
eFormatterMatchRegex,
TypeSummaryImplSP(new StringSummaryFormat(
stl_summary_flags, "size=${svar%#}")));
cpp_category_sp->AddTypeSummary("^std::(__debug::)?multiset<.+> >(( )?&)?$",
eFormatterMatchRegex,
TypeSummaryImplSP(new StringSummaryFormat(
stl_summary_flags, "size=${svar%#}")));
cpp_category_sp->AddTypeSummary(
"^std::(__debug::)?unordered_(multi)?(map|set)<.+> >$",
eFormatterMatchRegex,
TypeSummaryImplSP(
new StringSummaryFormat(stl_summary_flags, "size=${svar%#}")));
cpp_category_sp->AddTypeSummary(
"^std::((__debug::)?|(__cxx11::)?)list<.+>(( )?&)?$",
eFormatterMatchRegex,
TypeSummaryImplSP(
new StringSummaryFormat(stl_summary_flags, "size=${svar%#}")));

AddCXXSummary(
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
"libstdc++ std::bitset summary provider",
"^std::(__debug::)?bitset<.+>(( )?&)?$", stl_summary_flags, true);

AddCXXSummary(
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
"libstdc++ std::vector summary provider",
"^std::(__debug::)?vector<.+>(( )?&)?$", stl_summary_flags, true);

AddCXXSummary(
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
"libstdc++ std::map summary provider",
"^std::(__debug::)?map<.+> >(( )?&)?$", stl_summary_flags, true);

AddCXXSummary(
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
"libstdc++ std::set summary provider",
"^std::(__debug::)?set<.+> >(( )?&)?$", stl_summary_flags, true);

AddCXXSummary(
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
"libstdc++ std::deque summary provider",
"^std::(__debug::)?deque<.+>(( )?&)?$", stl_summary_flags, true);

AddCXXSummary(
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
"libstdc++ std::multimap summary provider",
"^std::(__debug::)?multimap<.+> >(( )?&)?$", stl_summary_flags, true);

AddCXXSummary(
cpp_category_sp, lldb_private::formatters::ContainerSizeSummaryProvider,
"libstdc++ std::multiset summary provider",
"^std::(__debug::)?multiset<.+> >(( )?&)?$", stl_summary_flags, true);

AddCXXSummary(cpp_category_sp,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libstdc++ std unordered container summary provider",
"^std::(__debug::)?unordered_(multi)?(map|set)<.+> >$",
stl_summary_flags, true);

AddCXXSummary(cpp_category_sp,
lldb_private::formatters::ContainerSizeSummaryProvider,
"libstdc++ std::list summary provider",
"^std::((__debug::)?|(__cxx11::)?)list<.+>(( )?&)?$",
stl_summary_flags, true);

cpp_category_sp->AddTypeSummary(
"^std::((__debug::)?|(__cxx11::)?)forward_list<.+>(( )?&)?$",
eFormatterMatchRegex,
Expand Down
6 changes: 0 additions & 6 deletions lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -410,12 +410,6 @@ lldb_private::formatters::LibcxxUniquePtrSyntheticFrontEnd::
name.AsCString());
}

bool lldb_private::formatters::LibcxxContainerSummaryProvider(
ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
return FormatEntity::FormatStringRef("size=${svar%#}", stream, nullptr,
nullptr, nullptr, &valobj, false, false);
}

/// The field layout in a libc++ string (cap, side, data or data, size, cap).
namespace {
enum class StringLayout { CSD, DSC };
Expand Down
3 changes: 0 additions & 3 deletions lldb/source/Plugins/Language/CPlusPlus/LibCxx.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,6 @@ SyntheticChildrenFrontEnd *
LibcxxVectorBoolSyntheticFrontEndCreator(CXXSyntheticChildren *,
lldb::ValueObjectSP);

bool LibcxxContainerSummaryProvider(ValueObject &valobj, Stream &stream,
const TypeSummaryOptions &options);

/// Formatter for libc++ std::span<>.
bool LibcxxSpanSummaryProvider(ValueObject &valobj, Stream &stream,
const TypeSummaryOptions &options);
Expand Down
Loading