X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fm2-valprint.c;h=f59293331f586de21a28b20003a7c9abd410304e;hb=0e1862bb401f47716446aef143b2bf7a4563f541;hp=3d3127ee62103524f0319973b5a2ea6d538447a3;hpb=6b1755ce16be3fbe1630507651c73df2710da80f;p=binutils-gdb.git diff --git a/gdb/m2-valprint.c b/gdb/m2-valprint.c index 3d3127ee621..f59293331f5 100644 --- a/gdb/m2-valprint.c +++ b/gdb/m2-valprint.c @@ -1,7 +1,6 @@ /* Support for printing Modula 2 values for GDB, the GNU debugger. - Copyright (C) 1986, 1988-1989, 1991-1992, 1996, 1998, 2000, 2005-2012 - Free Software Foundation, Inc. + Copyright (C) 1986-2015 Free Software Foundation, Inc. This file is part of GDB. @@ -82,7 +81,7 @@ m2_print_long_set (struct type *type, const gdb_byte *valaddr, struct type *target; int bitval; - CHECK_TYPEDEF (type); + type = check_typedef (type); fprintf_filtered (stream, "{"); len = TYPE_NFIELDS (type); @@ -168,7 +167,7 @@ m2_print_unbounded_array (struct type *type, const gdb_byte *valaddr, LONGEST len; struct value *val; - CHECK_TYPEDEF (type); + type = check_typedef (type); content_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 0)); addr = unpack_pointer (TYPE_FIELD_TYPE (type, 0), @@ -269,16 +268,14 @@ m2_print_array_contents (struct type *type, const gdb_byte *valaddr, const struct value_print_options *options, int len) { - int eltlen; - CHECK_TYPEDEF (type); + type = check_typedef (type); if (TYPE_LENGTH (type) > 0) { - eltlen = TYPE_LENGTH (type); - if (options->prettyprint_arrays) + if (options->prettyformat_arrays) print_spaces_filtered (2 + 2 * recurse, stream); /* For an array of chars, print with string syntax. */ - if (eltlen == 1 && + if (TYPE_LENGTH (type) == 1 && ((TYPE_CODE (type) == TYPE_CODE_INT) || ((current_language->la_language == language_m2) && (TYPE_CODE (type) == TYPE_CODE_CHAR))) @@ -320,22 +317,20 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, unsigned int i = 0; /* Number of characters printed. */ unsigned len; struct type *elttype; - unsigned eltlen; CORE_ADDR addr; - CHECK_TYPEDEF (type); + type = check_typedef (type); switch (TYPE_CODE (type)) { case TYPE_CODE_ARRAY: if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0) { elttype = check_typedef (TYPE_TARGET_TYPE (type)); - eltlen = TYPE_LENGTH (elttype); - len = TYPE_LENGTH (type) / eltlen; - if (options->prettyprint_arrays) + len = TYPE_LENGTH (type) / TYPE_LENGTH (elttype); + if (options->prettyformat_arrays) print_spaces_filtered (2 + 2 * recurse, stream); /* For an array of chars, print with string syntax. */ - if (eltlen == 1 && + if (TYPE_LENGTH (elttype) == 1 && ((TYPE_CODE (elttype) == TYPE_CODE_INT) || ((current_language->la_language == language_m2) && (TYPE_CODE (elttype) == TYPE_CODE_CHAR))) @@ -411,7 +406,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, case TYPE_CODE_SET: elttype = TYPE_INDEX_TYPE (type); - CHECK_TYPEDEF (elttype); + elttype = check_typedef (elttype); if (TYPE_STUB (elttype)) { fprintf_filtered (stream, _("")); @@ -480,7 +475,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, address, stream, recurse, original_value, options); break; } - /* FIXME: create_range_type does not set the unsigned bit in a + /* FIXME: create_static_range_type does not set the unsigned bit in a range type (I think it probably should copy it from the target type), so we won't print values which are too large to fit in a signed integer correctly. */