From patchwork Mon Apr 29 18:31:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 32463 Received: (qmail 11073 invoked by alias); 29 Apr 2019 18:31:12 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 10975 invoked by uid 89); 29 Apr 2019 18:31:12 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-22.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=surprise, abc, HX-Envelope-From:sk:tromey@, H*F:U*tromey X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 29 Apr 2019 18:31:08 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 5FAA211716F; Mon, 29 Apr 2019 14:31:07 -0400 (EDT) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id D1rGY5e2ab+Z; Mon, 29 Apr 2019 14:31:07 -0400 (EDT) Received: from murgatroyd.Home (97-122-168-123.hlrn.qwest.net [97.122.168.123]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by rock.gnat.com (Postfix) with ESMTPSA id EB4AD1170BD; Mon, 29 Apr 2019 14:31:06 -0400 (EDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 1/2] Fix ptype/o comment formatting Date: Mon, 29 Apr 2019 12:31:04 -0600 Message-Id: <20190429183105.15973-2-tromey@adacore.com> In-Reply-To: <20190429183105.15973-1-tromey@adacore.com> References: <20190429183105.15973-1-tromey@adacore.com> MIME-Version: 1.0 I noticed that ptype/o will print: /* 3: 3 | 1 */ signed char a4 : 2; /* XXX 3-bit hole */ That is, "*/" at the end of the "hole" message does not line up with the other comment ends. I thought it would be a bit nicer if this did line up, so I fixed it. Then, to my surprise, I found that I could not make ptype-offsets.exp fail. I still am not sure why it doesn't fail, but changing the tests to use string_to_regexp and changing the quoting helped. This in turn showed that some of the existing test cases were wrong, so I've also updated them here. gdb/ChangeLog 2019-04-29 Tom Tromey * typeprint.c (print_offset_data::maybe_print_hole): Add extra padding at end of comment. gdb/testsuite/ChangeLog 2019-04-29 Tom Tromey * gdb.base/ptype-offsets.exp: Use string_to_regexp. Fix test cases. * gdb.base/ptype-offsets.cc (struct abc) : Now "short". --- gdb/ChangeLog | 5 + gdb/testsuite/ChangeLog | 7 + gdb/testsuite/gdb.base/ptype-offsets.cc | 2 +- gdb/testsuite/gdb.base/ptype-offsets.exp | 501 ++++++++++++----------- gdb/typeprint.c | 4 +- 5 files changed, 266 insertions(+), 253 deletions(-) diff --git a/gdb/testsuite/gdb.base/ptype-offsets.cc b/gdb/testsuite/gdb.base/ptype-offsets.cc index 39236a60c75..1731545f97b 100644 --- a/gdb/testsuite/gdb.base/ptype-offsets.cc +++ b/gdb/testsuite/gdb.base/ptype-offsets.cc @@ -66,7 +66,7 @@ struct abc {} /* Typedef defined in-struct. */ - typedef int my_int_type; + typedef short my_int_type; my_int_type field9; }; diff --git a/gdb/testsuite/gdb.base/ptype-offsets.exp b/gdb/testsuite/gdb.base/ptype-offsets.exp index 5e3c59c4184..12b3a746005 100644 --- a/gdb/testsuite/gdb.base/ptype-offsets.exp +++ b/gdb/testsuite/gdb.base/ptype-offsets.exp @@ -34,217 +34,217 @@ if { [prepare_for_testing "failed to prepare" $testfile $srcfile \ # Test general offset printing, ctor/dtor printing, union, formatting. gdb_test "ptype /o struct abc" \ - [multi_line \ -{/\* offset | size \*/ type = struct abc \{} \ -{ public:} \ -{/\* 8 | 8 \*/ void \*field1;} \ -{/\* 16:31 | 4 \*/ unsigned int field2 : 1;} \ -{/\* XXX 7-bit hole \*/} \ -{/\* XXX 3-byte hole \*/} \ -{/\* 20 | 4 \*/ int field3;} \ -{/\* 24 | 1 \*/ signed char field4;} \ -{/\* XXX 7-byte hole \*/} \ -{/\* 32 | 8 \*/ uint64_t field5;} \ -{/\* 40 | 8 \*/ union \{} \ -{/\* 8 \*/ void \*field6;} \ -{/\* 4 \*/ int field7;} \ -{} \ -{ /\* total size \(bytes\): 8 \*/} \ -{ \} field8;} \ -{/\* 48 | 4 \*/ my_int_type field9;} \ -{/\* XXX 4-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 56 \*/} \ -{ \}}] + [string_to_regexp [multi_line \ +"/* offset | size */ type = struct abc \{" \ +" public:" \ +"/* 8 | 8 */ void *field1;" \ +"/* 16:31 | 4 */ unsigned int field2 : 1;" \ +"/* XXX 7-bit hole */" \ +"/* XXX 3-byte hole */" \ +"/* 20 | 4 */ int field3;" \ +"/* 24 | 1 */ signed char field4;" \ +"/* XXX 7-byte hole */" \ +"/* 32 | 8 */ uint64_t field5;" \ +"/* 40 | 8 */ union \{" \ +"/* 8 */ void *field6;" \ +"/* 4 */ int field7;" \ +"" \ +" /* total size (bytes): 8 */" \ +" \} field8;" \ +"/* 48 | 2 */ my_int_type field9;" \ +"/* XXX 6-byte padding */" \ +"" \ +" /* total size (bytes): 56 */" \ +" \}"]] # Test "ptype /oTM". gdb_test "ptype /oTM struct abc" \ - [multi_line \ -{/\* offset | size \*/ type = struct abc \{} \ -{ public:} \ -{/\* 8 | 8 \*/ void \*field1;} \ -{/\* 16:31 | 4 \*/ unsigned int field2 : 1;} \ -{/\* XXX 7-bit hole \*/} \ -{/\* XXX 3-byte hole \*/} \ -{/\* 20 | 4 \*/ int field3;} \ -{/\* 24 | 1 \*/ signed char field4;} \ -{/\* XXX 7-byte hole \*/} \ -{/\* 32 | 8 \*/ uint64_t field5;} \ -{/\* 40 | 8 \*/ union \{} \ -{/\* 8 \*/ void \*field6;} \ -{/\* 4 \*/ int field7;} \ -{} \ -{ /\* total size \(bytes\): 8 \*/} \ -{ \} field8;} \ -{/\* 48 | 4 \*/ my_int_type field9;} \ -{} \ -{ abc\(void\);} \ -{ ~abc\(\);} \ -{} \ -{ typedef int my_int_type;} \ -{/\* XXX 4-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 56 \*/} \ -{ \}}] + [string_to_regexp [multi_line \ +"/* offset | size */ type = struct abc \{" \ +" public:" \ +"/* 8 | 8 */ void *field1;" \ +"/* 16:31 | 4 */ unsigned int field2 : 1;" \ +"/* XXX 7-bit hole */" \ +"/* XXX 3-byte hole */" \ +"/* 20 | 4 */ int field3;" \ +"/* 24 | 1 */ signed char field4;" \ +"/* XXX 7-byte hole */" \ +"/* 32 | 8 */ uint64_t field5;" \ +"/* 40 | 8 */ union \{" \ +"/* 8 */ void *field6;" \ +"/* 4 */ int field7;" \ +"" \ +" /* total size (bytes): 8 */" \ +" \} field8;" \ +"/* 48 | 2 */ my_int_type field9;" \ +"" \ +" abc(void);" \ +" ~abc();" \ +"" \ +" typedef short my_int_type;" \ +"/* XXX 6-byte padding */" \ +"" \ +" /* total size (bytes): 56 */" \ +" \}"]] # Test "ptype /TMo". This should be the same as "ptype /o". gdb_test "ptype /TMo struct abc" \ - [multi_line \ -{/\* offset | size \*/ type = struct abc \{} \ -{ public:} \ -{/\* 8 | 8 \*/ void \*field1;} \ -{/\* 16:31 | 4 \*/ unsigned int field2 : 1;} \ -{/\* XXX 7-bit hole \*/} \ -{/\* XXX 3-byte hole \*/} \ -{/\* 20 | 4 \*/ int field3;} \ -{/\* 24 | 1 \*/ signed char field4;} \ -{/\* XXX 7-byte hole \*/} \ -{/\* 32 | 8 \*/ uint64_t field5;} \ -{/\* 40 | 8 \*/ union \{} \ -{/\* 8 \*/ void \*field6;} \ -{/\* 4 \*/ int field7;} \ -{} \ -{ /\* total size \(bytes\): 8 \*/} \ -{ \} field8;} \ -{/\* 48 | 4 \*/ my_int_type field9;} \ -{/\* XXX 4-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 56 \*/} \ -{ \}}] + [string_to_regexp [multi_line \ +"/* offset | size */ type = struct abc \{" \ +" public:" \ +"/* 8 | 8 */ void *field1;" \ +"/* 16:31 | 4 */ unsigned int field2 : 1;" \ +"/* XXX 7-bit hole */" \ +"/* XXX 3-byte hole */" \ +"/* 20 | 4 */ int field3;" \ +"/* 24 | 1 */ signed char field4;" \ +"/* XXX 7-byte hole */" \ +"/* 32 | 8 */ uint64_t field5;" \ +"/* 40 | 8 */ union \{" \ +"/* 8 */ void *field6;" \ +"/* 4 */ int field7;" \ +"" \ +" /* total size (bytes): 8 */" \ +" \} field8;" \ +"/* 48 | 2 */ my_int_type field9;" \ +"/* XXX 6-byte padding */" \ +"" \ +" /* total size (bytes): 56 */" \ +" \}"]] # Test nested structs. gdb_test "ptype /o struct pqr" \ - [multi_line \ -{/\* offset | size \*/ type = struct pqr \{} \ -{/\* 0 | 4 \*/ int ff1;} \ -{/\* XXX 4-byte hole \*/} \ -{/\* 8 | 40 \*/ struct xyz \{} \ -{/\* 8 | 4 \*/ int f1;} \ -{/\* 12 | 1 \*/ signed char f2;} \ -{/\* XXX 3-byte hole \*/} \ -{/\* 16 | 8 \*/ void \*f3;} \ -{/\* 24 | 24 \*/ struct tuv \{} \ -{/\* 24 | 4 \*/ int a1;} \ -{/\* XXX 4-byte hole \*/} \ -{/\* 32 | 8 \*/ signed char \*a2;} \ -{/\* 40 | 4 \*/ int a3;} \ -{} \ -{ /\* total size \(bytes\): 24 \*/} \ -{ \} f4;} \ -{} \ -{ /\* total size \(bytes\): 40 \*/} \ -{ \} ff2;} \ -{/\* XXX 28-byte hole \*/} \ -{/\* 72 | 1 \*/ signed char ff3;} \ -{/\* XXX 7-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 56 \*/} \ -{ \}}] + [string_to_regexp [multi_line \ +"/* offset | size */ type = struct pqr \{" \ +"/* 0 | 4 */ int ff1;" \ +"/* XXX 4-byte hole */" \ +"/* 8 | 40 */ struct xyz \{" \ +"/* 8 | 4 */ int f1;" \ +"/* 12 | 1 */ signed char f2;" \ +"/* XXX 3-byte hole */" \ +"/* 16 | 8 */ void *f3;" \ +"/* 24 | 24 */ struct tuv \{" \ +"/* 24 | 4 */ int a1;" \ +"/* XXX 4-byte hole */" \ +"/* 32 | 8 */ signed char *a2;" \ +"/* 40 | 4 */ int a3;" \ +"/* XXX 4-byte padding */" \ +"" \ +" /* total size (bytes): 24 */" \ +" \} f4;" \ +"" \ +" /* total size (bytes): 40 */" \ +" \} ff2;" \ +"/* 48 | 1 */ signed char ff3;" \ +"/* XXX 7-byte padding */" \ +"" \ +" /* total size (bytes): 56 */" \ +" \}"]] # Test that the offset is properly reset when we are printing a union # and go inside two inner structs. # This also tests a struct inside a struct inside a union. gdb_test "ptype /o union qwe" \ - [multi_line \ -{/\* offset | size \*/ type = union qwe \{} \ -{/\* 24 \*/ struct tuv \{} \ -{/\* 0 | 4 \*/ int a1;} \ -{/\* XXX 4-byte hole \*/} \ -{/\* 8 | 8 \*/ signed char \*a2;} \ -{/\* 16 | 4 \*/ int a3;} \ -{/\* XXX 4-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 24 \*/} \ -{ \} fff1;} \ -{/\* 40 \*/ struct xyz \{} \ -{/\* 0 | 4 \*/ int f1;} \ -{/\* 4 | 1 \*/ signed char f2;} \ -{/\* XXX 3-byte hole \*/} \ -{/\* 8 | 8 \*/ void \*f3;} \ -{/\* 16 | 24 \*/ struct tuv \{} \ -{/\* 16 | 4 \*/ int a1;} \ -{/\* XXX 4-byte hole \*/} \ -{/\* 24 | 8 \*/ signed char \*a2;} \ -{/\* 32 | 4 \*/ int a3;} \ -{/\* XXX 4-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 24 \*/} \ -{ \} f4;} \ -{} \ -{ /\* total size \(bytes\): 40 \*/} \ -{ \} fff2;} \ -{} \ -{ /\* total size \(bytes\): 40 \*/} \ -{ \}}] + [string_to_regexp [multi_line \ +"/* offset | size */ type = union qwe \{" \ +"/* 24 */ struct tuv \{" \ +"/* 0 | 4 */ int a1;" \ +"/* XXX 4-byte hole */" \ +"/* 8 | 8 */ signed char *a2;" \ +"/* 16 | 4 */ int a3;" \ +"/* XXX 4-byte padding */" \ +"" \ +" /* total size (bytes): 24 */" \ +" \} fff1;" \ +"/* 40 */ struct xyz \{" \ +"/* 0 | 4 */ int f1;" \ +"/* 4 | 1 */ signed char f2;" \ +"/* XXX 3-byte hole */" \ +"/* 8 | 8 */ void *f3;" \ +"/* 16 | 24 */ struct tuv \{" \ +"/* 16 | 4 */ int a1;" \ +"/* XXX 4-byte hole */" \ +"/* 24 | 8 */ signed char *a2;" \ +"/* 32 | 4 */ int a3;" \ +"/* XXX 4-byte padding */" \ +"" \ +" /* total size (bytes): 24 */" \ +" \} f4;" \ +"" \ +" /* total size (bytes): 40 */" \ +" \} fff2;" \ +"" \ +" /* total size (bytes): 40 */" \ +" \}"]] # Test printing a struct that contains a union, and that also # contains a struct. gdb_test "ptype /o struct poi" \ - [multi_line \ -{/\* offset | size \*/ type = struct poi \{} \ -{/\* 0 | 4 \*/ int f1;} \ -{/\* XXX 4-byte hole \*/} \ -{/\* 8 | 40 \*/ union qwe \{} \ -{/\* 24 \*/ struct tuv \{} \ -{/\* 8 | 4 \*/ int a1;} \ -{/\* XXX 4-byte hole \*/} \ -{/\* 16 | 8 \*/ signed char \*a2;} \ -{/\* 24 | 4 \*/ int a3;} \ -{/\* XXX 4-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 24 \*/} \ -{ \} fff1;} \ -{/\* 40 \*/ struct xyz \{} \ -{/\* 8 | 4 \*/ int f1;} \ -{/\* 12 | 1 \*/ signed char f2;} \ -{/\* XXX 3-byte hole \*/} \ -{/\* 16 | 8 \*/ void \*f3;} \ -{/\* 24 | 24 \*/ struct tuv \{} \ -{/\* 24 | 4 \*/ int a1;} \ -{/\* XXX 4-byte hole \*/} \ -{/\* 32 | 8 \*/ signed char \*a2;} \ -{/\* 40 | 4 \*/ int a3;} \ -{/\* XXX 4-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 24 \*/} \ -{ \} f4;} \ -{/\* XXX 32-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 40 \*/} \ -{ \} fff2;} \ -{} \ -{ /\* total size \(bytes\): 40 \*/} \ -{ \} f2;} \ -{/\* 72 | 2 \*/ uint16_t f3;} \ -{/\* XXX 6-byte hole \*/} \ -{/\* 80 | 56 \*/ struct pqr \{} \ -{/\* 80 | 4 \*/ int ff1;} \ -{/\* XXX 4-byte hole \*/} \ -{/\* 88 | 40 \*/ struct xyz \{} \ -{/\* 88 | 4 \*/ int f1;} \ -{/\* 92 | 1 \*/ signed char f2;} \ -{/\* XXX 3-byte hole \*/} \ -{/\* 96 | 8 \*/ void \*f3;} \ -{/\* 104 | 24 \*/ struct tuv \{} \ -{/\* 104 | 4 \*/ int a1;} \ -{/\* XXX 4-byte hole \*/} \ -{/\* 112 | 8 \*/ signed char \*a2;} \ -{/\* 120 | 4 \*/ int a3;} \ -{/\* XXX 4-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 24 \*/} \ -{ \} f4;} \ -{} \ -{ /\* total size \(bytes\): 40 \*/} \ -{ \} ff2;} \ -{/\* 152 | 1 \*/ signed char ff3;} \ -{/\* XXX 7-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 56 \*/} \ -{ \} f4;} \ -{} \ -{ /\* total size \(bytes\): 112 \*/} \ -{ \}}] + [string_to_regexp [multi_line \ +"/* offset | size */ type = struct poi \{" \ +"/* 0 | 4 */ int f1;" \ +"/* XXX 4-byte hole */" \ +"/* 8 | 40 */ union qwe \{" \ +"/* 24 */ struct tuv \{" \ +"/* 8 | 4 */ int a1;" \ +"/* XXX 4-byte hole */" \ +"/* 16 | 8 */ signed char *a2;" \ +"/* 24 | 4 */ int a3;" \ +"/* XXX 4-byte padding */" \ +"" \ +" /* total size (bytes): 24 */" \ +" \} fff1;" \ +"/* 40 */ struct xyz \{" \ +"/* 8 | 4 */ int f1;" \ +"/* 12 | 1 */ signed char f2;" \ +"/* XXX 3-byte hole */" \ +"/* 16 | 8 */ void *f3;" \ +"/* 24 | 24 */ struct tuv \{" \ +"/* 24 | 4 */ int a1;" \ +"/* XXX 4-byte hole */" \ +"/* 32 | 8 */ signed char *a2;" \ +"/* 40 | 4 */ int a3;" \ +"/* XXX 4-byte padding */" \ +"" \ +" /* total size (bytes): 24 */" \ +" \} f4;" \ +"" \ +" /* total size (bytes): 40 */" \ +" \} fff2;" \ +"/* XXX 32-byte padding */" \ +"" \ +" /* total size (bytes): 40 */" \ +" \} f2;" \ +"/* 48 | 2 */ uint16_t f3;" \ +"/* XXX 6-byte hole */" \ +"/* 56 | 56 */ struct pqr \{" \ +"/* 56 | 4 */ int ff1;" \ +"/* XXX 4-byte hole */" \ +"/* 64 | 40 */ struct xyz \{" \ +"/* 64 | 4 */ int f1;" \ +"/* 68 | 1 */ signed char f2;" \ +"/* XXX 3-byte hole */" \ +"/* 72 | 8 */ void *f3;" \ +"/* 80 | 24 */ struct tuv \{" \ +"/* 80 | 4 */ int a1;" \ +"/* XXX 4-byte hole */" \ +"/* 88 | 8 */ signed char *a2;" \ +"/* 96 | 4 */ int a3;" \ +"/* XXX 4-byte padding */" \ +"" \ +" /* total size (bytes): 24 */" \ +" \} f4;" \ +"" \ +" /* total size (bytes): 40 */" \ +" \} ff2;" \ +"/* 104 | 1 */ signed char ff3;" \ +"/* XXX 7-byte padding */" \ +"" \ +" /* total size (bytes): 56 */" \ +" \} f4;" \ +"" \ +" /* total size (bytes): 112 */" \ +" \}"]] # Test printing a struct with several bitfields, laid out in various # ways. @@ -262,58 +262,59 @@ gdb_test "ptype /o struct poi" \ # 0x7fffffffd548: 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff # 0x7fffffffd550: 0xff 0x00 0x00 0x00 0x00 0x00 0x00 0x00 gdb_test "ptype /o struct tyu" \ - [multi_line \ -{/\* offset | size \*/ type = struct tyu \{} \ -{/\* 0:31 | 4 \*/ int a1 : 1;} \ -{/\* 0:28 | 4 \*/ int a2 : 3;} \ -{/\* 0: 5 | 4 \*/ int a3 : 23;} \ -{/\* 3: 3 | 1 \*/ signed char a4 : 2;} \ -{/\* XXX 3-bit hole \*/} \ -{/\* XXX 4-byte hole \*/} \ -{/\* 8 | 8 \*/ int64_t a5;} \ -{/\* 16:27 | 4 \*/ int a6 : 5;} \ -{/\* 16:56 | 8 \*/ int64_t a7 : 3;} \ -{/\* XXX 7-byte padding \*/} \ -{} \ -{ /\* total size \(bytes\): 24 \*/} \ -{ \}}] + [string_to_regexp [multi_line \ +"/* offset | size */ type = struct tyu \{" \ +"/* 0:31 | 4 */ int a1 : 1;" \ +"/* 0:28 | 4 */ int a2 : 3;" \ +"/* 0: 5 | 4 */ int a3 : 23;" \ +"/* 3: 3 | 1 */ signed char a4 : 2;" \ +"/* XXX 3-bit hole */" \ +"/* XXX 4-byte hole */" \ +"/* 8 | 8 */ int64_t a5;" \ +"/* 16:27 | 4 */ int a6 : 5;" \ +"/* 16:56 | 8 */ int64_t a7 : 3;" \ +"/* XXX 7-byte padding */" \ +"" \ +" /* total size (bytes): 24 */" \ +" \}"]] gdb_test "ptype /o struct asd" \ - [multi_line \ -{/\* offset | size \*/ type = struct asd \{} \ -{/\* 0 | 32 \*/ struct asd::jkl \{} \ -{/\* 0 | 8 \*/ signed char \*f1;} \ -{/\* 8 | 8 \*/ union \{} \ -{/\* 8 \*/ void \*ff1;} \ -{} \ -{ /\* total size \(bytes\): 8 \*/} \ -{ \} f2;} \ -{/\* 16 | 8 \*/ union \{} \ -{/\* 8 \*/ signed char \*ff2;} \ -{} \ -{ /\* total size \(bytes\): 8 \*/} \ -{ \} f3;} \ -{/\* 24:27 | 4 \*/ int f4 : 5;} \ -{/\* 24:26 | 4 \*/ unsigned int f5 : 1;} \ -{/\* XXX 2-bit hole \*/} \ -{/\* XXX 1-byte hole \*/} \ -{/\* 26 | 2 \*/ short f6;} \ -{} \ -{ /\* total size \(bytes\): 32 \*/} \ -{ \} f7;} \ -{/\* 32 | 8 \*/ unsigned long f8;} \ -{/\* 40 | 8 \*/ signed char \*f9;} \ -{/\* 48:28 | 4 \*/ int f10 : 4;} \ -{/\* 48:27 | 4 \*/ unsigned int f11 : 1;} \ -{/\* 48:26 | 4 \*/ unsigned int f12 : 1;} \ -{/\* 48:25 | 4 \*/ unsigned int f13 : 1;} \ -{/\* 48:24 | 4 \*/ unsigned int f14 : 1;} \ -{/\* XXX 7-byte hole \*/} \ -{/\* 56 | 8 \*/ void \*f15;} \ -{/\* 64 | 8 \*/ void \*f16;} \ -{} \ -{ /\* total size \(bytes\): 72 \*/} \ -{ \}}] + [string_to_regexp [multi_line \ +"/* offset | size */ type = struct asd \{" \ +"/* 0 | 32 */ struct asd::jkl \{" \ +"/* 0 | 8 */ signed char *f1;" \ +"/* 8 | 8 */ union \{" \ +"/* 8 */ void *ff1;" \ +"" \ +" /* total size (bytes): 8 */" \ +" \} f2;" \ +"/* 16 | 8 */ union \{" \ +"/* 8 */ signed char *ff2;" \ +"" \ +" /* total size (bytes): 8 */" \ +" \} f3;" \ +"/* 24:27 | 4 */ int f4 : 5;" \ +"/* 24:26 | 4 */ unsigned int f5 : 1;" \ +"/* XXX 2-bit hole */" \ +"/* XXX 1-byte hole */" \ +"/* 26 | 2 */ short f6;" \ +"/* XXX 4-byte padding */" \ +"" \ +" /* total size (bytes): 32 */" \ +" \} f7;" \ +"/* 32 | 8 */ unsigned long f8;" \ +"/* 40 | 8 */ signed char *f9;" \ +"/* 48:28 | 4 */ int f10 : 4;" \ +"/* 48:27 | 4 */ unsigned int f11 : 1;" \ +"/* 48:26 | 4 */ unsigned int f12 : 1;" \ +"/* 48:25 | 4 */ unsigned int f13 : 1;" \ +"/* 48:24 | 4 */ unsigned int f14 : 1;" \ +"/* XXX 7-byte hole */" \ +"/* 56 | 8 */ void *f15;" \ +"/* 64 | 8 */ void *f16;" \ +"" \ +" /* total size (bytes): 72 */" \ +" \}"]] # Test that we don't print any header when issuing a "ptype /o" on a # non-struct, non-union, non-class type. @@ -332,10 +333,10 @@ gdb_test_multiple "$test" "$test" { # Test that printing a struct with a static member of itself doesn't # get us into an infinite loop. gdb_test "ptype/o static_member" \ - [multi_line \ -{/\* offset | size \*/ type = struct static_member \{} \ -{ static static_member Empty;} \ -{\/* 0 | 4 \*/ int abc;} \ -{} \ -{ /\* total size \(bytes\): 4 \*/} \ -{ \}}] + [string_to_regexp [multi_line \ +"/* offset | size */ type = struct static_member \{" \ +" static static_member Empty;" \ +"\/* 0 | 4 */ int abc;" \ +"" \ +" /* total size (bytes): 4 */" \ +" \}"]] diff --git a/gdb/typeprint.c b/gdb/typeprint.c index 02c04514303..d1cdfe11cc0 100644 --- a/gdb/typeprint.c +++ b/gdb/typeprint.c @@ -94,11 +94,11 @@ print_offset_data::maybe_print_hole (struct ui_file *stream, unsigned int hole_bit = hole % TARGET_CHAR_BIT; if (hole_bit > 0) - fprintf_filtered (stream, "/* XXX %2u-bit %s */\n", hole_bit, + fprintf_filtered (stream, "/* XXX %2u-bit %s */\n", hole_bit, for_what); if (hole_byte > 0) - fprintf_filtered (stream, "/* XXX %2u-byte %s */\n", hole_byte, + fprintf_filtered (stream, "/* XXX %2u-byte %s */\n", hole_byte, for_what); } }