diff options
author | Joel Brobecker <brobecker@gnat.com> | 2011-07-01 18:27:25 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2011-07-01 18:27:25 +0000 |
commit | d2d43431e83ac661e10934eb1c3fb7542c087527 (patch) | |
tree | 88b68c3833b99d01e59620eb08715ea76ba0f684 /gdb/ada-typeprint.c | |
parent | 54ae186fb505f4873858ae56b2298c9471f9eaee (diff) | |
download | fsf-binutils-gdb-d2d43431e83ac661e10934eb1c3fb7542c087527.zip fsf-binutils-gdb-d2d43431e83ac661e10934eb1c3fb7542c087527.tar.gz fsf-binutils-gdb-d2d43431e83ac661e10934eb1c3fb7542c087527.tar.bz2 |
Fix printing address of packed array
When trying to print the address of a non-packed array, GDB
correctly prints the type name and address:
(gdb) print &var
$2 = (access pa.var) 0xbffff1d8
However, it is behaving differently when dealing with a packed
array:
(gdb) p &var
(access array (4 .. 8) of boolean <packed: 1-bit elements>) (4 =>
false, false, false, true, false)
The type description isn't all that bad, but GDB shouldn't be
printing the array value!
This patch fixes the `print` and `ptype` command on packed and
non-packed array. It also fixes a gdb.ada test to match with
the new ouput.
gdb/ChangeLog (Jean-Charles Delay):
* ada-typeprint.c (ada_print_type): Fix both PAD type and
pointer to constrained packed array type output.
* ada-valprint.c (ada_val_print_1): Fix pointer to constrained
packed array output.
gdb/testsuite/ChangeLog (Jean-Charles Delay):
* gdb.ada/packed_array.exp: Fix expected outout.
Diffstat (limited to 'gdb/ada-typeprint.c')
-rw-r--r-- | gdb/ada-typeprint.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/gdb/ada-typeprint.c b/gdb/ada-typeprint.c index ff1b524..6bae634 100644 --- a/gdb/ada-typeprint.c +++ b/gdb/ada-typeprint.c @@ -761,7 +761,7 @@ ada_print_type (struct type *type0, const char *varstring, fprintf_filtered (stream, "%.*s: ", ada_name_prefix_len (varstring), varstring); - if (type_name != NULL && show <= 0) + if (type_name != NULL && show <= 0 && !ada_is_aligner_type (type)) { fprintf_filtered (stream, "%.*s", ada_name_prefix_len (type_name), type_name); @@ -770,18 +770,9 @@ ada_print_type (struct type *type0, const char *varstring, if (ada_is_aligner_type (type)) ada_print_type (ada_aligned_type (type), "", stream, show, level); - else if (ada_is_constrained_packed_array_type (type)) - { - if (TYPE_CODE (type) == TYPE_CODE_PTR) - { - fprintf_filtered (stream, "access "); - print_array_type (TYPE_TARGET_TYPE (type), stream, show, level); - } - else - { - print_array_type (type, stream, show, level); - } - } + else if (ada_is_constrained_packed_array_type (type) + && TYPE_CODE (type) != TYPE_CODE_PTR) + print_array_type (type, stream, show, level); else switch (TYPE_CODE (type)) { |