X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fm2-valprint.c;h=4dc0fe18e6a785864467e3aaae7ac5746cb163f5;hb=deeafabb678e59d8585be6d765c7fbd0e7060b6c;hp=766ca10a860daeba2bf441102ef033db9fc593af;hpb=ecd75fc8eed3bde86036141228074a20e55dcfc9;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/m2-valprint.c b/gdb/m2-valprint.c index 766ca10a86..4dc0fe18e6 100644 --- a/gdb/m2-valprint.c +++ b/gdb/m2-valprint.c @@ -1,6 +1,6 @@ /* Support for printing Modula 2 values for GDB, the GNU debugger. - Copyright (C) 1986-2014 Free Software Foundation, Inc. + Copyright (C) 1986-2019 Free Software Foundation, Inc. This file is part of GDB. @@ -28,6 +28,7 @@ #include "c-lang.h" #include "m2-lang.h" #include "target.h" +#include "cli/cli-style.h" static int print_unpacked_pointer (struct type *type, CORE_ADDR address, CORE_ADDR addr, @@ -37,7 +38,7 @@ static void m2_print_array_contents (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, - const struct value *val, + struct value *val, const struct value_print_options *options, int len); @@ -81,7 +82,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); @@ -92,7 +93,8 @@ m2_print_long_set (struct type *type, const gdb_byte *valaddr, } else { - fprintf_filtered (stream, " %s }", _("")); + fprintf_styled (stream, metadata_style.style (), + " %s }", _("")); return; } @@ -162,13 +164,11 @@ m2_print_unbounded_array (struct type *type, const gdb_byte *valaddr, struct ui_file *stream, int recurse, const struct value_print_options *options) { - struct type *content_type; CORE_ADDR addr; LONGEST len; struct value *val; - CHECK_TYPEDEF (type); - content_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 0)); + type = check_typedef (type); addr = unpack_pointer (TYPE_FIELD_TYPE (type, 0), (TYPE_FIELD_BITPOS (type, 0) / 8) + @@ -264,11 +264,11 @@ static void m2_print_array_contents (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, - const struct value *val, + struct value *val, const struct value_print_options *options, int len) { - CHECK_TYPEDEF (type); + type = check_typedef (type); if (TYPE_LENGTH (type) > 0) { @@ -284,7 +284,7 @@ m2_print_array_contents (struct type *type, const gdb_byte *valaddr, else { fprintf_filtered (stream, "{"); - val_print_array_elements (type, valaddr, embedded_offset, + val_print_array_elements (type, embedded_offset, address, stream, recurse, val, options, 0); fprintf_filtered (stream, "}"); @@ -301,25 +301,26 @@ static const struct generic_val_print_decorations m2_decorations = " * I", "TRUE", "FALSE", - "void" + "void", + "{", + "}" }; /* See val_print for a description of the various parameters of this function; they are identical. */ void -m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, +m2_val_print (struct type *type, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, - const struct value *original_value, + struct value *original_value, const struct value_print_options *options) { - struct gdbarch *gdbarch = get_type_arch (type); - unsigned int i = 0; /* Number of characters printed. */ unsigned len; struct type *elttype; CORE_ADDR addr; + const gdb_byte *valaddr = value_contents_for_printing (original_value); - CHECK_TYPEDEF (type); + type = check_typedef (type); switch (TYPE_CODE (type)) { case TYPE_CODE_ARRAY: @@ -353,12 +354,11 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, LA_PRINT_STRING (stream, TYPE_TARGET_TYPE (type), valaddr + embedded_offset, len, NULL, 0, options); - i = len; } else { fprintf_filtered (stream, "{"); - val_print_array_elements (type, valaddr, embedded_offset, + val_print_array_elements (type, embedded_offset, address, stream, recurse, original_value, options, 0); @@ -375,7 +375,7 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, print_variable_at_address (type, valaddr + embedded_offset, stream, recurse, options); else if (options->format && options->format != 's') - val_print_scalar_formatted (type, valaddr, embedded_offset, + val_print_scalar_formatted (type, embedded_offset, original_value, options, 0, stream); else { @@ -399,18 +399,18 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, m2_print_unbounded_array (type, valaddr, embedded_offset, address, stream, recurse, options); else - cp_print_value_fields (type, type, valaddr, embedded_offset, + cp_print_value_fields (type, type, embedded_offset, address, stream, recurse, original_value, options, NULL, 0); break; case TYPE_CODE_SET: elttype = TYPE_INDEX_TYPE (type); - CHECK_TYPEDEF (elttype); + elttype = check_typedef (elttype); if (TYPE_STUB (elttype)) { - fprintf_filtered (stream, _("")); - gdb_flush (stream); + fprintf_styled (stream, metadata_style.style (), + _("")); break; } else @@ -426,7 +426,8 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, maybe_bad_bstring: if (i < 0) { - fputs_filtered (_(""), stream); + fputs_styled (_(""), metadata_style.style (), + stream); goto done; } @@ -471,11 +472,11 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, case TYPE_CODE_RANGE: if (TYPE_LENGTH (type) == TYPE_LENGTH (TYPE_TARGET_TYPE (type))) { - m2_val_print (TYPE_TARGET_TYPE (type), valaddr, embedded_offset, + m2_val_print (TYPE_TARGET_TYPE (type), 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. */ @@ -496,10 +497,9 @@ m2_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, case TYPE_CODE_BOOL: case TYPE_CODE_CHAR: default: - generic_val_print (type, valaddr, embedded_offset, address, + generic_val_print (type, embedded_offset, address, stream, recurse, original_value, options, &m2_decorations); break; } - gdb_flush (stream); }