From patchwork Sat Mar 23 23:04:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Burgess X-Patchwork-Id: 31956 Received: (qmail 83339 invoked by alias); 23 Mar 2019 23:04:58 -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 83257 invoked by uid 89); 23 Mar 2019 23:04:57 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-19.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=gdb_test, 1, 58, debugger, distributed X-HELO: mail-wr1-f67.google.com Received: from mail-wr1-f67.google.com (HELO mail-wr1-f67.google.com) (209.85.221.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 23 Mar 2019 23:04:55 +0000 Received: by mail-wr1-f67.google.com with SMTP id s15so6093309wra.12 for ; Sat, 23 Mar 2019 16:04:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=ZOTDNB6hJtCQt9jm1S7CcxPdvt5txabxa7T2XQh+h6c=; b=B+6BV0/ZICcAjOhdtkwSSaE02TuhN79wQjP5ALdIqWXp2T8aGYkXdT+UqvPlkwDUR5 2RxvJNVTQl7dMa6/O8Lm0f82UOhEgWEUtR4UNA3Ya955woRZIuqY+O2U8/0uXR3J+H4+ Bsr9wRPt3HU8MmfTo1Rqg0SF8y24MPgtqiMVLrBzm8apJmNa8ZVvcgddTfjlw85wq+V3 7lxElwfHQkRZZd8mLFgfaOb3fB3jf0zpUs0aZpBB+7qO38uNFIYnP8JRGwM3jhdQtKM9 FhesACL7n0V3etpUmB7K5H0eebgzVBYcDVTRg5i8kbAXWEdn24gu5N2/hK/Vd1wajdhj 2IHw== Return-Path: Received: from localhost (host86-174-153-232.range86-174.btcentralplus.com. [86.174.153.232]) by smtp.gmail.com with ESMTPSA id u19sm13947140wmc.7.2019.03.23.16.04.51 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 23 Mar 2019 16:04:51 -0700 (PDT) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Andrew Burgess Subject: [PATCH 1/3] gdb: Avoid trailing whitespace when pretty printing Date: Sat, 23 Mar 2019 23:04:42 +0000 Message-Id: <73a8c52d1f08eb11538b81dbcdc370b22f57a273.1553382150.git.andrew.burgess@embecosm.com> In-Reply-To: References: In-Reply-To: References: X-IsSubscribed: yes While writing a new test for 'set print pretty on' I spotted that GDB will sometimes add a trailing whitespace character when pretty printing. This commit removes the trailing whitespace and updates the expected results in one tests where this was an issue. I've added an extra test for 'set print pretty on' as it doesn't seem to have much testing. gdb/ChangeLog: * cp-valprint.c (cp_print_value_fields): Don't print trailing whitespace when pretty printing is on. gdb/testsuite/ChangeLog: * gdb.base/finish-pretty.exp: Update expected results. * gdb.base/pretty-print.c: New file. * gdb.base/pretty-print.exp: New file. --- gdb/ChangeLog | 5 +++ gdb/cp-valprint.c | 8 +++-- gdb/testsuite/ChangeLog | 6 ++++ gdb/testsuite/gdb.base/finish-pretty.exp | 2 +- gdb/testsuite/gdb.base/pretty-print.c | 53 +++++++++++++++++++++++++++++ gdb/testsuite/gdb.base/pretty-print.exp | 58 ++++++++++++++++++++++++++++++++ 6 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 gdb/testsuite/gdb.base/pretty-print.c create mode 100644 gdb/testsuite/gdb.base/pretty-print.exp diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c index 7124da42ec9..443c3b06dac 100644 --- a/gdb/cp-valprint.c +++ b/gdb/cp-valprint.c @@ -235,7 +235,11 @@ cp_print_value_fields (struct type *type, struct type *real_type, continue; if (fields_seen) - fprintf_filtered (stream, ", "); + { + fputs_filtered (",", stream); + if (!options->prettyformat) + fputs_filtered (" ", stream); + } else if (n_baseclasses > 0) { if (options->prettyformat) @@ -244,7 +248,7 @@ cp_print_value_fields (struct type *type, struct type *real_type, print_spaces_filtered (2 + 2 * recurse, stream); fputs_filtered ("members of ", stream); fputs_filtered (TYPE_NAME (type), stream); - fputs_filtered (": ", stream); + fputs_filtered (":", stream); } } fields_seen = 1; diff --git a/gdb/testsuite/gdb.base/finish-pretty.exp b/gdb/testsuite/gdb.base/finish-pretty.exp index c558d22b576..b1530cda591 100644 --- a/gdb/testsuite/gdb.base/finish-pretty.exp +++ b/gdb/testsuite/gdb.base/finish-pretty.exp @@ -30,7 +30,7 @@ proc finish_pretty { } { gdb_test_no_output "set print pretty" \ "pretty printing switched on" gdb_test "finish" \ - {.*Value returned is \$1 = \{\r\n a = 1, \r\n b = 2\r\n\}} \ + {.*Value returned is \$1 = \{\r\n a = 1,\r\n b = 2\r\n\}} \ "finish foo prettyprinted function result" } diff --git a/gdb/testsuite/gdb.base/pretty-print.c b/gdb/testsuite/gdb.base/pretty-print.c new file mode 100644 index 00000000000..9e241f8c678 --- /dev/null +++ b/gdb/testsuite/gdb.base/pretty-print.c @@ -0,0 +1,53 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2019 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +struct s1_t +{ + int one; + int two; + + struct + { + union { + int three : 3; + int four : 4; + }; + + union { + int five : 3; + int six : 4; + }; + } data; +} s1 = { .one = 1, .two = 2, .data = { .three = 3, .five = 5 } }; + +struct s2_t +{ + int one; + int two; + + struct + { + int three; + int four; + }; +} s2 = { .one = 1, .two = 2, .three = 3, .four = 4 }; + +int +main () +{ + return 0; +} diff --git a/gdb/testsuite/gdb.base/pretty-print.exp b/gdb/testsuite/gdb.base/pretty-print.exp new file mode 100644 index 00000000000..91e685e17ca --- /dev/null +++ b/gdb/testsuite/gdb.base/pretty-print.exp @@ -0,0 +1,58 @@ +# Copyright 2019 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Test pretty printing of structures and unions. + +standard_testfile + +if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} { + untested $testfile.exp + return -1 +} + +if ![runto_main] { + untested $testfile.exp + return -1 +} + +gdb_test_no_output "set print pretty on" + +gdb_test "print s1" \ + [multi_line \ + " = {" \ + " one = 1," \ + " two = 2," \ + " data = {" \ + " {" \ + " three = 3," \ + " four = 3" \ + " }," \ + " {" \ + " five = -3," \ + " six = 5" \ + " }" \ + " }" \ + "}" ] + +gdb_test "print s2" \ + [multi_line \ + " = {" \ + " one = 1," \ + " two = 2," \ + " {" \ + " three = 3," \ + " four = 4" \ + " }" \ + "}" ]