(Ada) Remove printing of array's first index when unneeded
authorXavier Roirand <roirand@adacore.com>
Fri, 5 Jan 2018 04:47:05 +0000 (23:47 -0500)
committerJoel Brobecker <brobecker@adacore.com>
Fri, 5 Jan 2018 04:47:15 +0000 (23:47 -0500)
commite3861a03138e24e7f2f0e8c4982bdad2a6e1dbaf
tree0cc0e69675dc197abab33f2e39041a9e9f62f118
parentcd385f94a7888b619c84e9ab007bac5093c5e894
(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 <repeats 256 times>)

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 <repeats 256 times>)

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
gdb/ada-valprint.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.ada/array_char_idx.exp
gdb/testsuite/gdb.ada/array_char_idx/pck.ads