[Lldb-commits] [lldb] 193bf2e - [formatters] Capping size limitation avoidance for the libcxx and libcpp bitset data formatters.

Walter Erquinigo via lldb-commits lldb-commits at lists.llvm.org
Tue Nov 23 14:04:26 PST 2021


Author: Danil Stefaniuc
Date: 2021-11-23T14:03:59-08:00
New Revision: 193bf2e820520dd4a2d5ed0e7d50ee45e8127071

URL: https://github.com/llvm/llvm-project/commit/193bf2e820520dd4a2d5ed0e7d50ee45e8127071
DIFF: https://github.com/llvm/llvm-project/commit/193bf2e820520dd4a2d5ed0e7d50ee45e8127071.diff

LOG: [formatters] Capping size limitation avoidance for the libcxx and libcpp bitset data formatters.

This diff is avoiding the size limitation introduced by the capping size for the libcxx and libcpp bitset data formatters.

Reviewed By: wallace

Differential Revision: https://reviews.llvm.org/D114461

Added: 
    

Modified: 
    lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp
    lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/TestDataFormatterGenericBitset.py
    lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/main.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp b/lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp
index fc8255983436..c8063915b178 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp
@@ -81,12 +81,11 @@ bool GenericBitsetFrontEnd::Update() {
   TargetSP target_sp = m_backend.GetTargetSP();
   if (!target_sp)
     return false;
-  size_t capping_size = target_sp->GetMaximumNumberOfChildrenToDisplay();
 
   size_t size = 0;
 
   if (auto arg = m_backend.GetCompilerType().GetIntegralTemplateArgument(0))
-    size = arg->value.getLimitedValue(capping_size);
+    size = arg->value.getLimitedValue();
 
   m_elements.assign(size, ValueObjectSP());
   m_first = m_backend.GetChildMemberWithName(GetDataContainerMemberName(), true)

diff  --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/TestDataFormatterGenericBitset.py b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/TestDataFormatterGenericBitset.py
index 3d7ff340caab..94efbc5c7cf6 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/TestDataFormatterGenericBitset.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/TestDataFormatterGenericBitset.py
@@ -21,7 +21,7 @@ class GenericBitsetDataFormatterTestCase(TestBase):
 
     def setUp(self):
         TestBase.setUp(self)
-        primes = [1]*300
+        primes = [1]*1000
         primes[0] = primes[1] = 0
         for i in range(2, len(primes)):
             for j in range(2*i, len(primes), i):
@@ -58,7 +58,8 @@ def do_test_value(self, stdlib_type):
 
         self.check("empty", 0, VALUE)
         self.check("small", 13, VALUE)
-        self.check("large", 70, VALUE)
+        self.check("medium", 70, VALUE)
+        self.check("large", 1000, VALUE)
 
     @add_test_categories(["libstdcxx"])
     def test_value_libstdcpp(self):
@@ -84,6 +85,11 @@ def do_test_ptr_and_ref(self, stdlib_type):
         self.check("ref", 70, REFERENCE)
         self.check("ptr", 70, POINTER)
 
+        lldbutil.continue_to_breakpoint(process, bkpt)
+
+        self.check("ref", 1000, REFERENCE)
+        self.check("ptr", 1000, POINTER)
+
     @add_test_categories(["libstdcxx"])
     def test_ptr_and_ref_libstdcpp(self):
         self.do_test_ptr_and_ref(USE_LIBSTDCPP)

diff  --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/main.cpp b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/main.cpp
index c7be1c5c7133..52aea76a25dc 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/main.cpp
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/main.cpp
@@ -20,9 +20,12 @@ int main() {
   std::bitset<0> empty;
   std::bitset<13> small;
   fill(small);
-  std::bitset<70> large;
+  std::bitset<70> medium;
+  fill(medium);
+  std::bitset<1000> large;
   fill(large);
   by_ref_and_ptr(small, &small); // break here
+  by_ref_and_ptr(medium, &medium);
   by_ref_and_ptr(large, &large);
   return 0;
 }


        


More information about the lldb-commits mailing list