diff options
author | Ken Werner <ken.werner@de.ibm.com> | 2010-11-03 14:21:58 +0000 |
---|---|---|
committer | Ken Werner <ken.werner@de.ibm.com> | 2010-11-03 14:21:58 +0000 |
commit | dbc98a8b6eb97ea7315e04103cdfec5add47f3c4 (patch) | |
tree | 767338cf124ded0f5c63ea6521f6a72b84095488 /gdb/c-valprint.c | |
parent | 27dee630aae66dd61eb20135e7b8384088b1a496 (diff) | |
download | gdb-dbc98a8b6eb97ea7315e04103cdfec5add47f3c4.zip gdb-dbc98a8b6eb97ea7315e04103cdfec5add47f3c4.tar.gz gdb-dbc98a8b6eb97ea7315e04103cdfec5add47f3c4.tar.bz2 |
gdb:
* dwarf2read.c (read_array_type): Read the DW_AT_byte_size from the
DIE and set the length of the type.
* gdbtypes.h (get_array_bounds): Move here from valprint.h.
* gdbtypes.c (get_array_bounds): Move here from valprint.c and
return 0 if the corresponding bounds of the type are undefined.
* valprint.h (get_array_bounds): Move declaration to gdbtypes.h.
* valprint.c (get_array_bounds): Move implementation to gdbtypes.c.
(val_print_array_elements): Use get_array_bounds to compute the number
of array elements instead of dividing the length of the array by the
length of the element types.
* valarith.c (vector_binop): Likewise.
* valops.c (value_cast): Likewise.
* c-valprint.c (c_val_print): Likewise.
* c-typeprint.c (c_type_print_varspec_suffix): Likewise.
gdb/testsuite:
* gdb.base/gnu_vector.exp: Adjust expect messages.
Diffstat (limited to 'gdb/c-valprint.c')
-rw-r--r-- | gdb/c-valprint.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c index bc524bd..20ac633 100644 --- a/gdb/c-valprint.c +++ b/gdb/c-valprint.c @@ -171,8 +171,13 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, elttype = check_typedef (unresolved_elttype); if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (unresolved_elttype) > 0) { + LONGEST low_bound, high_bound; + + if (!get_array_bounds (type, &low_bound, &high_bound)) + error (_("Could not determine the array high bound")); + eltlen = TYPE_LENGTH (elttype); - len = TYPE_LENGTH (type) / eltlen; + len = high_bound - low_bound + 1; if (options->prettyprint_arrays) { print_spaces_filtered (2 + 2 * recurse, stream); |