X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fm2-valprint.c;h=f59293331f586de21a28b20003a7c9abd410304e;hb=0e1862bb401f47716446aef143b2bf7a4563f541;hp=ea3f296c3081e82bcb664c90adb7a10fab04aee7;hpb=b012acddd87cb89dc4b357adf458511232c58bfe;p=binutils-gdb.git diff --git a/gdb/m2-valprint.c b/gdb/m2-valprint.c index ea3f296c308..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,23 +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; - LONGEST val; 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))) @@ -410,10 +404,9 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, options, NULL, 0); break; - case TYPE_CODE_BITSTRING: case TYPE_CODE_SET: elttype = TYPE_INDEX_TYPE (type); - CHECK_TYPEDEF (elttype); + elttype = check_typedef (elttype); if (TYPE_STUB (elttype)) { fprintf_filtered (stream, _("")); @@ -425,13 +418,9 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, struct type *range = elttype; LONGEST low_bound, high_bound; int i; - int is_bitstring = TYPE_CODE (type) == TYPE_CODE_BITSTRING; int need_comma = 0; - if (is_bitstring) - fputs_filtered ("B'", stream); - else - fputs_filtered ("{", stream); + fputs_filtered ("{", stream); i = get_discrete_bounds (range, &low_bound, &high_bound); maybe_bad_bstring: @@ -451,9 +440,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, i = element; goto maybe_bad_bstring; } - if (is_bitstring) - fprintf_filtered (stream, "%d", element); - else if (element) + if (element) { if (need_comma) fputs_filtered (", ", stream); @@ -477,10 +464,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, } } done: - if (is_bitstring) - fputs_filtered ("'", stream); - else - fputs_filtered ("}", stream); + fputs_filtered ("}", stream); } break; @@ -491,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. */