aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2019-03-21 12:25:47 +0000
committerAndrew Burgess <andrew.burgess@embecosm.com>2019-03-26 18:23:49 +0000
commit18c77628b1e97e412561029ec20195c1ffa61b2d (patch)
tree6c79f1c4d04742d7a5380a3821de691f35647b6a
parent53c973f200e39c4122e0db06a94e3a0079e6de80 (diff)
downloadgdb-18c77628b1e97e412561029ec20195c1ffa61b2d.zip
gdb-18c77628b1e97e412561029ec20195c1ffa61b2d.tar.gz
gdb-18c77628b1e97e412561029ec20195c1ffa61b2d.tar.bz2
gdb: Avoid trailing whitespace when pretty printing
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.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/cp-valprint.c8
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.base/finish-pretty.exp2
-rw-r--r--gdb/testsuite/gdb.base/pretty-print.c53
-rw-r--r--gdb/testsuite/gdb.base/pretty-print.exp58
6 files changed, 129 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 28754be..a31cf70 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-03-26 Andrew Burgess <andrew.burgess@embecosm.com>
+
+ * cp-valprint.c (cp_print_value_fields): Don't print trailing
+ whitespace when pretty printing is on.
+
2019-03-26 Alan Hayward <alan.hayward@arm.com>
* ppc-linux-nat.c: Add include.
diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c
index 7124da4..443c3b0 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/ChangeLog b/gdb/testsuite/ChangeLog
index 9e0c49a..a2b8f24 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-03-26 Andrew Burgess <andrew.burgess@embecosm.com>
+
+ * gdb.base/finish-pretty.exp: Update expected results.
+ * gdb.base/pretty-print.c: New file.
+ * gdb.base/pretty-print.exp: New file.
+
2019-03-25 Pedro Alves <palves@redhat.com>
* lib/gdb.exp (gdb_test_multiple): Split appends to $code and
diff --git a/gdb/testsuite/gdb.base/finish-pretty.exp b/gdb/testsuite/gdb.base/finish-pretty.exp
index c558d22..b1530cd 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 0000000..9e241f8
--- /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 <http://www.gnu.org/licenses/>. */
+
+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 0000000..91e685e
--- /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 <http://www.gnu.org/licenses/>.
+
+# 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" \
+ " }" \
+ "}" ]