https://github.com/ZequanWu updated 
https://github.com/llvm/llvm-project/pull/125294

>From bbecf2f990c1fdf8ed993c3bba4c68212ebb299c Mon Sep 17 00:00:00 2001
From: Zequan Wu <zequa...@google.com>
Date: Fri, 31 Jan 2025 13:05:14 -0800
Subject: [PATCH 1/4] [lldb] Show value for libcxx and libstdcxx summary and
 remove pointer value in libcxx container summary

---
 .../Language/CPlusPlus/CPlusPlusLanguage.cpp  |  4 +-
 .../Plugins/Language/CPlusPlus/LibCxx.cpp     |  6 ---
 .../deque/TestDataFormatterLibcxxDeque.py     | 49 ++++++++++++-------
 .../span/TestDataFormatterLibcxxSpan.py       |  5 +-
 .../variant/TestDataFormatterLibcxxVariant.py |  2 +-
 .../vector/TestDataFormatterLibcxxVector.py   | 49 ++++++++++++-------
 .../TestDataFormatterLibStdcxxVariant.py      |  2 +-
 7 files changed, 69 insertions(+), 48 deletions(-)

diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index 2bf574e97768ec..4b045d12ad4947 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -641,7 +641,7 @@ static void LoadLibCxxFormatters(lldb::TypeCategoryImplSP 
cpp_category_sp) {
       .SetSkipPointers(false)
       .SetSkipReferences(false)
       .SetDontShowChildren(true)
-      .SetDontShowValue(true)
+      .SetDontShowValue(false)
       .SetShowMembersOneLiner(false)
       .SetHideItemNames(false);
 
@@ -1204,7 +1204,7 @@ static void 
LoadLibStdcppFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
       .SetSkipPointers(false)
       .SetSkipReferences(false)
       .SetDontShowChildren(true)
-      .SetDontShowValue(true)
+      .SetDontShowValue(false)
       .SetShowMembersOneLiner(false)
       .SetHideItemNames(false);
 
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
index 6d0ccdbbe4a71d..2aa8fdba706348 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp
@@ -430,12 +430,6 @@ size_t 
lldb_private::formatters::LibcxxUniquePtrSyntheticFrontEnd::
 
 bool lldb_private::formatters::LibcxxContainerSummaryProvider(
     ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
-  if (valobj.IsPointerType()) {
-    uint64_t value = valobj.GetValueAsUnsigned(0);
-    if (!value)
-      return false;
-    stream.Printf("0x%016" PRIx64 " ", value);
-  }
   return FormatEntity::FormatStringRef("size=${svar%#}", stream, nullptr,
                                        nullptr, nullptr, &valobj, false, 
false);
 }
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
index 3596b546be306a..8f8af60d4e9728 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
@@ -9,22 +9,37 @@
 
 
 class LibcxxDequeDataFormatterTestCase(TestBase):
-    def check_numbers(self, var_name):
-        self.expect(
-            "frame variable " + var_name,
-            substrs=[
-                var_name + " = size=7",
-                "[0] = 1",
-                "[1] = 12",
-                "[2] = 123",
-                "[3] = 1234",
-                "[4] = 12345",
-                "[5] = 123456",
-                "[6] = 1234567",
-                "}",
-            ],
-        )
-
+    def check_numbers(self, var_name, show_ptr = False):
+        if show_ptr:
+            self.expect(
+                "frame variable " + var_name,
+                patterns=[var_name + " = 0x.* size=7"],
+                substrs=[
+                    "[0] = 1",
+                    "[1] = 12",
+                    "[2] = 123",
+                    "[3] = 1234",
+                    "[4] = 12345",
+                    "[5] = 123456",
+                    "[6] = 1234567",
+                    "}",
+                ],
+            )
+        else:
+            self.expect(
+                "frame variable " + var_name,
+                substrs=[
+                    var_name + " = size=7",
+                    "[0] = 1",
+                    "[1] = 12",
+                    "[2] = 123",
+                    "[3] = 1234",
+                    "[4] = 12345",
+                    "[5] = 123456",
+                    "[6] = 1234567",
+                    "}",
+                ],
+            )
         self.expect_expr(
             var_name,
             result_summary="size=7",
@@ -75,7 +90,7 @@ def test_ref_and_ptr(self):
         )
 
         # The reference should display the same was as the value did
-        self.check_numbers("ref")
+        self.check_numbers("ref", True)
 
         # The pointer should just show the right number of elements:
         self.expect("frame variable ptr", substrs=["ptr =", " size=7"])
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/span/TestDataFormatterLibcxxSpan.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/span/TestDataFormatterLibcxxSpan.py
index d5de73ac14ca14..4df4fa1acc8e77 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/span/TestDataFormatterLibcxxSpan.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/span/TestDataFormatterLibcxxSpan.py
@@ -172,7 +172,4 @@ def test_ref_and_ptr(self):
 
         # The pointer should just show the right number of elements:
 
-        ptrAddr = self.findVariable("ptr").GetValue()
-        self.expect_expr(
-            "ptr", result_type="std::span<int, 5> *", 
result_summary=f"{ptrAddr} size=5"
-        )
+        self.expect("frame variable ptr", patterns=["ptr = 0x.*", " size=5"])
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py
index 4154ad3c297fab..47e07a5ce3f5b1 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py
@@ -47,7 +47,7 @@ def test_with_run_command(self):
 
         self.expect(
             "frame variable v1_ref",
-            substrs=["v1_ref =  Active Type = int : {", "Value = 12", "}"],
+            patterns=["v1_ref = 0x.* Active Type = int : {", "Value = 12", 
"}"],
         )
 
         self.expect(
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
index a475c15d3da347..cabb7fbaed39a9 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
@@ -10,22 +10,37 @@
 
 
 class LibcxxVectorDataFormatterTestCase(TestBase):
-    def check_numbers(self, var_name):
-        self.expect(
-            "frame variable " + var_name,
-            substrs=[
-                var_name + " = size=7",
-                "[0] = 1",
-                "[1] = 12",
-                "[2] = 123",
-                "[3] = 1234",
-                "[4] = 12345",
-                "[5] = 123456",
-                "[6] = 1234567",
-                "}",
-            ],
-        )
-
+    def check_numbers(self, var_name, show_ptr = False):
+        if show_ptr:           
+            self.expect(
+                "frame variable " + var_name,
+                patterns=[var_name + " = 0x.* size=7"],
+                substrs=[
+                    "[0] = 1",
+                    "[1] = 12",
+                    "[2] = 123",
+                    "[3] = 1234",
+                    "[4] = 12345",
+                    "[5] = 123456",
+                    "[6] = 1234567",
+                    "}",
+                ],
+            )
+        else:
+            self.expect(
+                "frame variable " + var_name,
+                substrs=[
+                    var_name + " = size=7",
+                    "[0] = 1",
+                    "[1] = 12",
+                    "[2] = 123",
+                    "[3] = 1234",
+                    "[4] = 12345",
+                    "[5] = 123456",
+                    "[6] = 1234567",
+                    "}",
+                ],
+            )
         self.expect_expr(
             var_name,
             result_summary="size=7",
@@ -174,7 +189,7 @@ def test_ref_and_ptr(self):
         )
 
         # The reference should display the same was as the value did
-        self.check_numbers("ref")
+        self.check_numbers("ref", True)
 
         # The pointer should just show the right number of elements:
 
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/variant/TestDataFormatterLibStdcxxVariant.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/variant/TestDataFormatterLibStdcxxVariant.py
index ea4a53fcb4097a..394e221809f7c4 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/variant/TestDataFormatterLibStdcxxVariant.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/variant/TestDataFormatterLibStdcxxVariant.py
@@ -30,7 +30,7 @@ def test_with_run_command(self):
         for name in ["v1_ref", "v1_typedef_ref"]:
             self.expect(
                 "frame variable " + name,
-                substrs=[name + " =  Active Type = int : {", "Value = 12", 
"}"],
+                patterns=[name + " = 0x.*  Active Type = int : {", "Value = 
12", "}"],
             )
 
         self.expect(

>From 0743f7bae1e6ba1d1eb99e52f48b9c7ab9311e78 Mon Sep 17 00:00:00 2001
From: Zequan Wu <zequa...@google.com>
Date: Fri, 31 Jan 2025 14:09:28 -0800
Subject: [PATCH 2/4] format

---
 .../libcxx/deque/TestDataFormatterLibcxxDeque.py                | 2 +-
 .../libcxx/vector/TestDataFormatterLibcxxVector.py              | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
index 8f8af60d4e9728..ecfbb5893febe4 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
@@ -9,7 +9,7 @@
 
 
 class LibcxxDequeDataFormatterTestCase(TestBase):
-    def check_numbers(self, var_name, show_ptr = False):
+    def check_numbers(self, var_name, show_ptr=False):
         if show_ptr:
             self.expect(
                 "frame variable " + var_name,
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
index cabb7fbaed39a9..3bacbf6da49cc6 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
@@ -10,7 +10,7 @@
 
 
 class LibcxxVectorDataFormatterTestCase(TestBase):
-    def check_numbers(self, var_name, show_ptr = False):
+    def check_numbers(self, var_name, show_ptr=False):
         if show_ptr:           
             self.expect(
                 "frame variable " + var_name,

>From 6ad17184f4f10f21333bb3877322489d634b70ce Mon Sep 17 00:00:00 2001
From: Zequan Wu <zequa...@google.com>
Date: Fri, 31 Jan 2025 14:21:26 -0800
Subject: [PATCH 3/4] format

---
 .../libcxx/vector/TestDataFormatterLibcxxVector.py              | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
index 3bacbf6da49cc6..c99c4474a36e38 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
@@ -11,7 +11,7 @@
 
 class LibcxxVectorDataFormatterTestCase(TestBase):
     def check_numbers(self, var_name, show_ptr=False):
-        if show_ptr:           
+        if show_ptr:
             self.expect(
                 "frame variable " + var_name,
                 patterns=[var_name + " = 0x.* size=7"],

>From ed0a48f046c8f8cc953aa6e9cb220a0fa0c633fd Mon Sep 17 00:00:00 2001
From: Zequan Wu <zequa...@google.com>
Date: Mon, 3 Feb 2025 10:47:36 -0800
Subject: [PATCH 4/4] address comments

---
 .../deque/TestDataFormatterLibcxxDeque.py     | 46 +++++++-----------
 .../vector/TestDataFormatterLibcxxVector.py   | 47 ++++++++-----------
 2 files changed, 37 insertions(+), 56 deletions(-)

diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
index ecfbb5893febe4..ece1e4f5f049bb 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/deque/TestDataFormatterLibcxxDeque.py
@@ -10,36 +10,26 @@
 
 class LibcxxDequeDataFormatterTestCase(TestBase):
     def check_numbers(self, var_name, show_ptr=False):
+        patterns = []
+        substrs = [
+            "[0] = 1",
+            "[1] = 12",
+            "[2] = 123",
+            "[3] = 1234",
+            "[4] = 12345",
+            "[5] = 123456",
+            "[6] = 1234567",
+            "}",
+        ]
         if show_ptr:
-            self.expect(
-                "frame variable " + var_name,
-                patterns=[var_name + " = 0x.* size=7"],
-                substrs=[
-                    "[0] = 1",
-                    "[1] = 12",
-                    "[2] = 123",
-                    "[3] = 1234",
-                    "[4] = 12345",
-                    "[5] = 123456",
-                    "[6] = 1234567",
-                    "}",
-                ],
-            )
+            patterns = [var_name + " = 0x.* size=7"]
         else:
-            self.expect(
-                "frame variable " + var_name,
-                substrs=[
-                    var_name + " = size=7",
-                    "[0] = 1",
-                    "[1] = 12",
-                    "[2] = 123",
-                    "[3] = 1234",
-                    "[4] = 12345",
-                    "[5] = 123456",
-                    "[6] = 1234567",
-                    "}",
-                ],
-            )
+            substrs.insert(0, var_name + " = size=7")
+        self.expect(
+            "frame variable " + var_name,
+            patterns=patterns,
+            substrs=substrs,
+        )
         self.expect_expr(
             var_name,
             result_summary="size=7",
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
index c99c4474a36e38..ca0f0e36931161 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
@@ -11,36 +11,27 @@
 
 class LibcxxVectorDataFormatterTestCase(TestBase):
     def check_numbers(self, var_name, show_ptr=False):
+        patterns = []
+        substrs = [
+            "[0] = 1",
+            "[1] = 12",
+            "[2] = 123",
+            "[3] = 1234",
+            "[4] = 12345",
+            "[5] = 123456",
+            "[6] = 1234567",
+            "}",
+        ]
         if show_ptr:
-            self.expect(
-                "frame variable " + var_name,
-                patterns=[var_name + " = 0x.* size=7"],
-                substrs=[
-                    "[0] = 1",
-                    "[1] = 12",
-                    "[2] = 123",
-                    "[3] = 1234",
-                    "[4] = 12345",
-                    "[5] = 123456",
-                    "[6] = 1234567",
-                    "}",
-                ],
-            )
+            patterns = [var_name + " = 0x.* size=7"]
         else:
-            self.expect(
-                "frame variable " + var_name,
-                substrs=[
-                    var_name + " = size=7",
-                    "[0] = 1",
-                    "[1] = 12",
-                    "[2] = 123",
-                    "[3] = 1234",
-                    "[4] = 12345",
-                    "[5] = 123456",
-                    "[6] = 1234567",
-                    "}",
-                ],
-            )
+            substrs.insert(0, var_name + " = size=7")
+
+        self.expect(
+            "frame variable " + var_name,
+            patterns=patterns,
+            substrs=substrs,
+        )
         self.expect_expr(
             var_name,
             result_summary="size=7",

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to