From e3861a03138e24e7f2f0e8c4982bdad2a6e1dbaf Mon Sep 17 00:00:00 2001 From: Xavier Roirand Date: Thu, 4 Jan 2018 23:47:05 -0500 Subject: [PATCH] (Ada) Remove printing of array's first index when unneeded Consider the following code: type Table is array (Character) of Natural; My_Table : Table := (others => 4874); Printing this table in gdb leads to: (gdb) p my_table $1 = ('["00"]' => 4874 ) In this case, the index of the first element in this array is also the first element of the index type (character type). Similar to what we do we enumeration types, we do not need to print the index of the first element when printing the array. This patch fixes this issue and changes the output as follow: (gdb) p my_table $1 = (4874 ) gdb/ChangeLog: * ada-valprint.c (print_optional_low_bound): Handle character-indexed array printing like boolean-indexed array printing. gdb/testuite/ChangeLog: * testsuite/gdb.ada/array_char_idx/pck.ads (Table): New type. (My_Table): New global variable. * testsuite/gdb.ada/array_char_idx.exp: Add test. Tested on x86_64-linux. --- gdb/ChangeLog | 6 ++++++ gdb/ada-valprint.c | 2 ++ gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.ada/array_char_idx.exp | 3 +++ gdb/testsuite/gdb.ada/array_char_idx/pck.ads | 3 +++ 5 files changed, 20 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b63238288ec..ab98fb40ffe 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2018-01-03 Xavier Roirand + + * ada-valprint.c (print_optional_low_bound): Handle + character-indexed array printing like boolean-indexed array + printing. + 2018-01-05 Joel Brobecker * NEWS: Create a new section for the next release branch. diff --git a/gdb/ada-valprint.c b/gdb/ada-valprint.c index c5efdf1c1c5..f5a2c3c63b4 100644 --- a/gdb/ada-valprint.c +++ b/gdb/ada-valprint.c @@ -88,9 +88,11 @@ print_optional_low_bound (struct ui_file *stream, struct type *type, index_type = TYPE_TARGET_TYPE (index_type); } + /* Don't print the lower bound if it's the default one. */ switch (TYPE_CODE (index_type)) { case TYPE_CODE_BOOL: + case TYPE_CODE_CHAR: if (low_bound == 0) return 0; break; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index ea9d65cd759..f45ae0c61f3 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-01-05 Xavier Roirand + + * testsuite/gdb.ada/array_char_idx/pck.ads (Table): New type. + (My_Table): New global variable. + * testsuite/gdb.ada/array_char_idx.exp: Add test. + 2018-01-04 Joel Brobecker PR gdb/22670 diff --git a/gdb/testsuite/gdb.ada/array_char_idx.exp b/gdb/testsuite/gdb.ada/array_char_idx.exp index 2608a8e296d..89805fbea06 100644 --- a/gdb/testsuite/gdb.ada/array_char_idx.exp +++ b/gdb/testsuite/gdb.ada/array_char_idx.exp @@ -30,3 +30,6 @@ gdb_test "ptype char_table" \ gdb_test "ptype global_char_table" \ "= array \\(character\\) of natural" + +gdb_test "print my_table" "= \\(0 \\)" \ + "Display my_table" diff --git a/gdb/testsuite/gdb.ada/array_char_idx/pck.ads b/gdb/testsuite/gdb.ada/array_char_idx/pck.ads index a26393a1f39..699fef9b6e6 100644 --- a/gdb/testsuite/gdb.ada/array_char_idx/pck.ads +++ b/gdb/testsuite/gdb.ada/array_char_idx/pck.ads @@ -19,5 +19,8 @@ package Pck is of Natural; Global_Char_Table : Char_Table := (others => 0); + type Table is array (Character) of Natural; + My_Table : Table := (others => 4874); + procedure Do_Nothing (A : System.Address); end Pck; -- 2.30.2