diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/c-typeprint.c | 7 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/ptype-offsets.cc | 7 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/ptype-offsets.exp | 17 |
5 files changed, 37 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 67de5ca..5d869db 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2021-04-22 Tom Tromey <tom@tromey.com> + + * c-typeprint.c (c_type_print_base_struct_union): Use + print_spaces_filtered_with_print_options. + 2021-04-22 Simon Marchi <simon.marchi@polymtl.ca> PR gdb/27757 diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c index f81f1c2..72616a5 100644 --- a/gdb/c-typeprint.c +++ b/gdb/c-typeprint.c @@ -1121,13 +1121,12 @@ c_type_print_base_struct_union (struct type *type, struct ui_file *stream, if (type->num_fields () == 0 && TYPE_NFN_FIELDS (type) == 0 && TYPE_TYPEDEF_FIELD_COUNT (type) == 0) { + print_spaces_filtered_with_print_options (level + 4, stream, flags); if (type->is_stub ()) - fprintf_filtered (stream, _("%*s%p[<incomplete type>%p]\n"), - level + 4, "", + fprintf_filtered (stream, _("%p[<incomplete type>%p]\n"), metadata_style.style ().ptr (), nullptr); else - fprintf_filtered (stream, _("%*s%p[<no data fields>%p]\n"), - level + 4, "", + fprintf_filtered (stream, _("%p[<no data fields>%p]\n"), metadata_style.style ().ptr (), nullptr); } diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 266645b..1a181f3 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2021-04-22 Tom Tromey <tom@tromey.com> + + * gdb.base/ptype-offsets.cc (struct empty_member): New. + (main): Use empty_member. + * gdb.base/ptype-offsets.exp: Add new test. + 2021-04-22 Simon Marchi <simon.marchi@polymtl.ca> * gdb.python/flexible-array-member.exp: Add check for Python diff --git a/gdb/testsuite/gdb.base/ptype-offsets.cc b/gdb/testsuite/gdb.base/ptype-offsets.cc index 4582af4..dc21e34 100644 --- a/gdb/testsuite/gdb.base/ptype-offsets.cc +++ b/gdb/testsuite/gdb.base/ptype-offsets.cc @@ -185,6 +185,12 @@ struct static_member int abc; }; +struct empty_member +{ + struct { } empty; + int an_int; +}; + int main (int argc, char *argv[]) { @@ -196,6 +202,7 @@ main (int argc, char *argv[]) struct asd f; uint8_t i; static_member stmember; + empty_member emember; return 0; } diff --git a/gdb/testsuite/gdb.base/ptype-offsets.exp b/gdb/testsuite/gdb.base/ptype-offsets.exp index f466db9..0a0bbc8 100644 --- a/gdb/testsuite/gdb.base/ptype-offsets.exp +++ b/gdb/testsuite/gdb.base/ptype-offsets.exp @@ -336,7 +336,22 @@ gdb_test "ptype/o static_member" \ [string_to_regexp [multi_line \ "/* offset | size */ type = struct static_member \{" \ " static static_member Empty;" \ -"\/* 0 | 4 */ int abc;" \ +"/* 0 | 4 */ int abc;" \ "" \ " /* total size (bytes): 4 */" \ " \}"]] + +# Test that the "no data fields" text is indented properly. +gdb_test "ptype/o empty_member" \ + [string_to_regexp [multi_line \ +"/* offset | size */ type = struct empty_member \{" \ +"/* 0 | 1 */ struct {" \ +" <no data fields>" \ +"" \ +" /* total size (bytes): 1 */" \ +" } empty;" \ +"/* XXX 3-byte hole */" \ +"/* 4 | 4 */ int an_int;" \ +"" \ +" /* total size (bytes): 8 */" \ +" \}"]] |