summaryrefslogtreecommitdiff
path: root/gdb/ada-lang.h
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2010-12-29 08:01:28 +0000
committerJoel Brobecker <brobecker@gnat.com>2010-12-29 08:01:28 +0000
commit4b88473c312f66c7fba0c1a5d862cd5f95b732c2 (patch)
tree690e774602715fe9c28c2700021b809f3d88c3d9 /gdb/ada-lang.h
parent9d758ee0ddc2d3cc10691b1979e8c2a25554b51d (diff)
downloadgdb-4b88473c312f66c7fba0c1a5d862cd5f95b732c2.tar.gz
[Ada] do not print arrays as array pointers
This patch enhances the debugger to distinguish between fat pointers that represent either: array types, or array access types. In the latter case, the object/type is encoded as a typedef type pointing to the fat pointer. The first part of the change is to adjust ada_check_typedef to avoid stripping the typedef layer when it points to a fat pointer. The rest of the patch is adjustments required in various places to deal with the fact that the type is uses might now be a typedef. gdb/ChangeLog: * ada-lang.h (ada_coerce_to_simple_array): Add declaration. * ada-lang.c (ada_typedef_target_type): New function. (desc_base_type): Add handling of fat pointer typedefs. (ada_coerce_to_simple_array): Make non-static. (decode_packed_array_bitsize): Add handling of fat pointer typedefs. Add assertion. (ada_template_to_fixed_record_type_1, ada_to_fixed_type) (ada_check_typedef): Add handling of fat pointer typedefs. (ada_evaluate_subexp) [OP_FUNCALL]: Likewise. * ada-typeprint.c (ada_print_type): Add handling of fat pointer typedefs. * ada-valprint.c (ada_val_print_1): Convert fat pointers that are not array accesses to simple arrays rather than simple array pointers. (ada_value_print): In the case of array descriptors, do not print the value type description unless it is an array access. gdb/testsuite/ChangeLog: * gdb.ada/lang_switch.exp: Correct expected parameter value. gdb/doc/ChangeLog: * gdb.texinfo (Ada Glitches): Remove paragraph describing the occasional case where the debugger prints an array address instead of the array itself.
Diffstat (limited to 'gdb/ada-lang.h')
-rw-r--r--gdb/ada-lang.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
index 0cd20df7d10..1aac7b2d73d 100644
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -197,6 +197,8 @@ struct type *ada_type_of_array (struct value *, int);
extern struct value *ada_coerce_to_simple_array_ptr (struct value *);
+struct value *ada_coerce_to_simple_array (struct value *);
+
extern int ada_is_simple_array_type (struct type *);
extern int ada_is_array_descriptor_type (struct type *);