diff options
-rw-r--r-- | gdb/ChangeLog | 15 | ||||
-rw-r--r-- | gdb/ada-valprint.c | 8 | ||||
-rw-r--r-- | gdb/c-valprint.c | 4 | ||||
-rw-r--r-- | gdb/m2-valprint.c | 4 | ||||
-rw-r--r-- | gdb/p-valprint.c | 4 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/pretty-array.c | 24 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/pretty-array.exp | 65 | ||||
-rw-r--r-- | gdb/valprint.c | 15 |
9 files changed, 125 insertions, 20 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ef60565..9e1ce39 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,18 @@ +2020-04-29 Hannes Domani <ssbssa@yahoo.de> + + PR gdb/17320 + * ada-valprint.c (val_print_packed_array_elements): Move array + end bracket to new line. + (ada_val_print_string): Remove extra spaces before first array + element. + * c-valprint.c (c_value_print_array): Likewise. + * m2-valprint.c (m2_print_array_contents): Likewise. + (m2_value_print_inner): Likewise. + * p-valprint.c (pascal_value_print_inner): Likewise. + * valprint.c (generic_val_print_array): Likewise. + (value_print_array_elements): Move first array element and array + end bracket to new line. + 2020-04-29 Tom de Vries <tdevries@suse.de> PR symtab/25889 diff --git a/gdb/ada-valprint.c b/gdb/ada-valprint.c index 474b079..31f3a50 100644 --- a/gdb/ada-valprint.c +++ b/gdb/ada-valprint.c @@ -195,6 +195,11 @@ val_print_packed_array_elements (struct type *type, const gdb_byte *valaddr, fprintf_filtered (stream, ", "); } } + else if (options->prettyformat_arrays) + { + fprintf_filtered (stream, "\n"); + print_spaces_filtered (2 + 2 * recurse, stream); + } wrap_here (n_spaces (2 + 2 * recurse)); maybe_print_array_index (index_type, i + low, stream, options); @@ -707,9 +712,6 @@ ada_val_print_string (struct type *type, const gdb_byte *valaddr, eltlen = TYPE_LENGTH (elttype); len = TYPE_LENGTH (type) / eltlen; - if (options->prettyformat_arrays) - print_spaces_filtered (2 + 2 * recurse, stream); - /* If requested, look for the first null char and only print elements up to it. */ if (options->stop_print_at_null) diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c index bde9c6c..52ea5ed 100644 --- a/gdb/c-valprint.c +++ b/gdb/c-valprint.c @@ -252,10 +252,6 @@ c_value_print_array (struct value *val, eltlen = TYPE_LENGTH (elttype); len = high_bound - low_bound + 1; - if (options->prettyformat_arrays) - { - print_spaces_filtered (2 + 2 * recurse, stream); - } /* Print arrays of textual chars with a string syntax, as long as the entire array is valid. */ diff --git a/gdb/m2-valprint.c b/gdb/m2-valprint.c index 844a63f..e210b5e 100644 --- a/gdb/m2-valprint.c +++ b/gdb/m2-valprint.c @@ -265,8 +265,6 @@ m2_print_array_contents (struct value *val, if (TYPE_LENGTH (type) > 0) { - if (options->prettyformat_arrays) - print_spaces_filtered (2 + 2 * recurse, stream); /* For an array of chars, print with string syntax. */ if (TYPE_LENGTH (type) == 1 && ((TYPE_CODE (type) == TYPE_CODE_INT) @@ -318,8 +316,6 @@ m2_value_print_inner (struct value *val, struct ui_file *stream, int recurse, { elttype = check_typedef (TYPE_TARGET_TYPE (type)); len = TYPE_LENGTH (type) / TYPE_LENGTH (elttype); - if (options->prettyformat_arrays) - print_spaces_filtered (2 + 2 * recurse, stream); /* For an array of chars, print with string syntax. */ if (TYPE_LENGTH (elttype) == 1 && ((TYPE_CODE (elttype) == TYPE_CODE_INT) diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c index cbd7fb7..fbf5c5c 100644 --- a/gdb/p-valprint.c +++ b/gdb/p-valprint.c @@ -93,10 +93,6 @@ pascal_value_print_inner (struct value *val, struct ui_file *stream, len = high_bound - low_bound + 1; elttype = check_typedef (TYPE_TARGET_TYPE (type)); eltlen = TYPE_LENGTH (elttype); - if (options->prettyformat_arrays) - { - print_spaces_filtered (2 + 2 * recurse, stream); - } /* If 's' format is used, try to print out as string. If no format is given, print as string if element type is of TYPE_CODE_CHAR and element size is 1,2 or 4. */ diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 761fe30..86b7191 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2020-04-29 Hannes Domani <ssbssa@yahoo.de> + + PR gdb/17320 + * gdb.base/pretty-array.c: New test. + * gdb.base/pretty-array.exp: New file. + 2020-04-29 Tom de Vries <tdevries@suse.de> PR symtab/25889 diff --git a/gdb/testsuite/gdb.base/pretty-array.c b/gdb/testsuite/gdb.base/pretty-array.c new file mode 100644 index 0000000..2adebcc --- /dev/null +++ b/gdb/testsuite/gdb.base/pretty-array.c @@ -0,0 +1,24 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2020 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/>. */ + +int nums[2][3] = {{11, 12, 13}, {21, 22, 23}}; + +int +main () +{ + return 0; +} diff --git a/gdb/testsuite/gdb.base/pretty-array.exp b/gdb/testsuite/gdb.base/pretty-array.exp new file mode 100644 index 0000000..e17ce18 --- /dev/null +++ b/gdb/testsuite/gdb.base/pretty-array.exp @@ -0,0 +1,65 @@ +# Copyright 2020 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 arrays. + +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 "print nums" \ + "= \\{\\{11, 12, 13\\}, \\{21, 22, 23\\}\\}" + +gdb_test_no_output "set print array on" + +gdb_test "print nums" \ + [multi_line \ + " = {" \ + " {" \ + " 11," \ + " 12," \ + " 13" \ + " }," \ + " {" \ + " 21," \ + " 22," \ + " 23" \ + " }" \ + "}" ] + +gdb_test_no_output "set print array-indexes on" + +gdb_test "print nums" \ + [multi_line \ + " = {" \ + " \\\[0\\\] = {" \ + " \\\[0\\\] = 11," \ + " \\\[1\\\] = 12," \ + " \\\[2\\\] = 13" \ + " }," \ + " \\\[1\\\] = {" \ + " \\\[0\\\] = 21," \ + " \\\[1\\\] = 22," \ + " \\\[2\\\] = 23" \ + " }" \ + "}" ] diff --git a/gdb/valprint.c b/gdb/valprint.c index 0be7c60..2f91024 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -441,11 +441,6 @@ generic_val_print_array (struct value *val, if (!get_array_bounds (type, &low_bound, &high_bound)) error (_("Could not determine the array high bound")); - if (options->prettyformat_arrays) - { - print_spaces_filtered (2 + 2 * recurse, stream); - } - fputs_filtered (decorations->array_start, stream); value_print_array_elements (val, stream, recurse, options, 0); fputs_filtered (decorations->array_end, stream); @@ -1945,6 +1940,11 @@ value_print_array_elements (struct value *val, struct ui_file *stream, else fprintf_filtered (stream, ", "); } + else if (options->prettyformat_arrays) + { + fprintf_filtered (stream, "\n"); + print_spaces_filtered (2 + 2 * recurse, stream); + } wrap_here (n_spaces (2 + 2 * recurse)); maybe_print_array_index (index_type, i + low_bound, stream, options); @@ -1988,6 +1988,11 @@ value_print_array_elements (struct value *val, struct ui_file *stream, annotate_array_section_end (); if (i < len) fprintf_filtered (stream, "..."); + if (options->prettyformat_arrays) + { + fprintf_filtered (stream, "\n"); + print_spaces_filtered (2 * recurse, stream); + } } /* Read LEN bytes of target memory at address MEMADDR, placing the |