* [PATCH] Ignore static members in NoOpStructPrinter
@ 2023-11-14 14:04 Tom Tromey
0 siblings, 0 replies; only message in thread
From: Tom Tromey @ 2023-11-14 14:04 UTC (permalink / raw)
To: gdb-patches; +Cc: Tom Tromey
Hannes' patch to show local variables in the TUI pointed out that
NoOpStructPrinter should ignore static members. This patch implements
this.
---
gdb/python/lib/gdb/printing.py | 2 +-
gdb/testsuite/gdb.dap/ptrref.cc | 12 ++++++++++++
gdb/testsuite/gdb.dap/ptrref.exp | 9 ++++++++-
3 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/gdb/python/lib/gdb/printing.py b/gdb/python/lib/gdb/printing.py
index dec1351c2d7..14bd84b5859 100644
--- a/gdb/python/lib/gdb/printing.py
+++ b/gdb/python/lib/gdb/printing.py
@@ -350,7 +350,7 @@ class NoOpStructPrinter(gdb.ValuePrinter):
def children(self):
for field in self.__ty.fields():
- if field.name is not None:
+ if hasattr(field, "bitpos") and field.name is not None:
yield (field.name, self.__value[field])
diff --git a/gdb/testsuite/gdb.dap/ptrref.cc b/gdb/testsuite/gdb.dap/ptrref.cc
index bfb1afe3d17..c9b83cd0612 100644
--- a/gdb/testsuite/gdb.dap/ptrref.cc
+++ b/gdb/testsuite/gdb.dap/ptrref.cc
@@ -15,9 +15,21 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
+struct some_struct
+{
+ int x;
+ int y;
+
+ static int z;
+};
+
+int some_struct::z = 37;
+
void
func ()
{
+ some_struct aggregate { 91, 87 };
+
int value = 23;
int *ptr = &value;
diff --git a/gdb/testsuite/gdb.dap/ptrref.exp b/gdb/testsuite/gdb.dap/ptrref.exp
index e0cc74529ab..456774aefbe 100644
--- a/gdb/testsuite/gdb.dap/ptrref.exp
+++ b/gdb/testsuite/gdb.dap/ptrref.exp
@@ -55,7 +55,7 @@ gdb_assert {[llength $scopes] == 2} "two scopes"
lassign $scopes scope reg_scope
gdb_assert {[dict get $scope name] == "Locals"} "scope is locals"
-gdb_assert {[dict get $scope namedVariables] == 3} "three vars in scope"
+gdb_assert {[dict get $scope namedVariables] == 4} "three vars in scope"
set num [dict get $scope variablesReference]
set refs [lindex [dap_check_request_and_response "fetch variables" \
@@ -97,6 +97,13 @@ foreach var [dict get $refs body variables] {
"$name has exactly one child"
fetch_pointer $name $var
}
+ "aggregate" {
+ gdb_assert {[dict get $var variablesReference] != 0} \
+ "$name has children"
+ # This should omit the static field.
+ gdb_assert {[dict get $var namedVariables] == 2} \
+ "$name has exactly 2 children"
+ }
}
}
--
2.41.0
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-11-14 14:05 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-14 14:04 [PATCH] Ignore static members in NoOpStructPrinter Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).