diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/cp-valprint.c | 8 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/finish-pretty.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/pretty-print.c | 53 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/pretty-print.exp | 58 |
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" \ + " }" \ + "}" ] |