| Index: gdb/p-valprint.c
|
| diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
|
| index b8434ed256fcb5685e4d74eb887714eaa2e0eee0..7854bc0c856d72fdb905689bd386bb28e58cf230 100644
|
| --- a/gdb/p-valprint.c
|
| +++ b/gdb/p-valprint.c
|
| @@ -1,7 +1,6 @@
|
| /* Support for printing Pascal values for GDB, the GNU debugger.
|
|
|
| - Copyright (C) 2000-2001, 2003, 2005-2012 Free Software Foundation,
|
| - Inc.
|
| + Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
|
|
| This file is part of GDB.
|
|
|
| @@ -84,7 +83,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
|
| len = high_bound - low_bound + 1;
|
| elttype = check_typedef (TYPE_TARGET_TYPE (type));
|
| eltlen = TYPE_LENGTH (elttype);
|
| - if (options->prettyprint_arrays)
|
| + if (options->prettyformat_arrays)
|
| {
|
| print_spaces_filtered (2 + 2 * recurse, stream);
|
| }
|
| @@ -222,18 +221,18 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
|
| /* Print vtbl's nicely. */
|
| CORE_ADDR vt_address = unpack_pointer (type,
|
| valaddr + embedded_offset);
|
| - struct minimal_symbol *msymbol =
|
| + struct bound_minimal_symbol msymbol =
|
| lookup_minimal_symbol_by_pc (vt_address);
|
|
|
| /* If 'symbol_print' is set, we did the work above. */
|
| if (!options->symbol_print
|
| - && (msymbol != NULL)
|
| - && (vt_address == SYMBOL_VALUE_ADDRESS (msymbol)))
|
| + && (msymbol.minsym != NULL)
|
| + && (vt_address == SYMBOL_VALUE_ADDRESS (msymbol.minsym)))
|
| {
|
| if (want_space)
|
| fputs_filtered (" ", stream);
|
| fputs_filtered ("<", stream);
|
| - fputs_filtered (SYMBOL_PRINT_NAME (msymbol), stream);
|
| + fputs_filtered (SYMBOL_PRINT_NAME (msymbol.minsym), stream);
|
| fputs_filtered (">", stream);
|
| want_space = 1;
|
| }
|
| @@ -243,13 +242,14 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
|
| struct symbol *wsym = (struct symbol *) NULL;
|
| struct type *wtype;
|
| struct block *block = (struct block *) NULL;
|
| - int is_this_fld;
|
| + struct field_of_this_result is_this_fld;
|
|
|
| if (want_space)
|
| fputs_filtered (" ", stream);
|
|
|
| - if (msymbol != NULL)
|
| - wsym = lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol), block,
|
| + if (msymbol.minsym != NULL)
|
| + wsym = lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol.minsym),
|
| + block,
|
| VAR_DOMAIN, &is_this_fld);
|
|
|
| if (wsym)
|
| @@ -263,7 +263,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
|
| vt_val = value_at (wtype, vt_address);
|
| common_val_print (vt_val, stream, recurse + 1, options,
|
| current_language);
|
| - if (options->pretty)
|
| + if (options->prettyformat)
|
| {
|
| fprintf_filtered (stream, "\n");
|
| print_spaces_filtered (2 + 2 * recurse, stream);
|
| @@ -334,7 +334,6 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
|
| }
|
| break;
|
|
|
| - case TYPE_CODE_BITSTRING:
|
| case TYPE_CODE_SET:
|
| elttype = TYPE_INDEX_TYPE (type);
|
| CHECK_TYPEDEF (elttype);
|
| @@ -349,13 +348,9 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
|
| 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);
|
| if (low_bound == 0 && high_bound == -1 && TYPE_LENGTH (type) > 0)
|
| @@ -383,9 +378,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
|
| 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);
|
| @@ -409,10 +402,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
|
| }
|
| }
|
| done:
|
| - if (is_bitstring)
|
| - fputs_filtered ("'", stream);
|
| - else
|
| - fputs_filtered ("]", stream);
|
| + fputs_filtered ("]", stream);
|
| }
|
| break;
|
|
|
| @@ -585,7 +575,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
|
| fprintf_filtered (stream, ", ");
|
| else if (n_baseclasses > 0)
|
| {
|
| - if (options->pretty)
|
| + if (options->prettyformat)
|
| {
|
| fprintf_filtered (stream, "\n");
|
| print_spaces_filtered (2 + 2 * recurse, stream);
|
| @@ -596,7 +586,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
|
| }
|
| fields_seen = 1;
|
|
|
| - if (options->pretty)
|
| + if (options->prettyformat)
|
| {
|
| fprintf_filtered (stream, "\n");
|
| print_spaces_filtered (2 + 2 * recurse, stream);
|
| @@ -605,36 +595,17 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
|
| {
|
| wrap_here (n_spaces (2 + 2 * recurse));
|
| }
|
| - if (options->inspect_it)
|
| - {
|
| - if (TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_PTR)
|
| - fputs_filtered ("\"( ptr \"", stream);
|
| - else
|
| - fputs_filtered ("\"( nodef \"", stream);
|
| - if (field_is_static (&TYPE_FIELD (type, i)))
|
| - fputs_filtered ("static ", stream);
|
| - fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
|
| - language_cplus,
|
| - DMGL_PARAMS | DMGL_ANSI);
|
| - fputs_filtered ("\" \"", stream);
|
| - fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
|
| - language_cplus,
|
| - DMGL_PARAMS | DMGL_ANSI);
|
| - fputs_filtered ("\") \"", stream);
|
| - }
|
| - else
|
| - {
|
| - annotate_field_begin (TYPE_FIELD_TYPE (type, i));
|
| -
|
| - if (field_is_static (&TYPE_FIELD (type, i)))
|
| - fputs_filtered ("static ", stream);
|
| - fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
|
| - language_cplus,
|
| - DMGL_PARAMS | DMGL_ANSI);
|
| - annotate_field_name_end ();
|
| - fputs_filtered (" = ", stream);
|
| - annotate_field_value ();
|
| - }
|
| +
|
| + annotate_field_begin (TYPE_FIELD_TYPE (type, i));
|
| +
|
| + if (field_is_static (&TYPE_FIELD (type, i)))
|
| + fputs_filtered ("static ", stream);
|
| + fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
|
| + language_cplus,
|
| + DMGL_PARAMS | DMGL_ANSI);
|
| + annotate_field_name_end ();
|
| + fputs_filtered (" = ", stream);
|
| + annotate_field_value ();
|
|
|
| if (!field_is_static (&TYPE_FIELD (type, i))
|
| && TYPE_FIELD_PACKED (type, i))
|
| @@ -658,7 +629,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
|
| else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i),
|
| TYPE_FIELD_BITSIZE (type, i)))
|
| {
|
| - val_print_optimized_out (stream);
|
| + val_print_optimized_out (val, stream);
|
| }
|
| else
|
| {
|
| @@ -686,7 +657,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
|
| v = value_field_bitfield (type, i, valaddr, offset, val);
|
|
|
| if (v == NULL)
|
| - val_print_optimized_out (stream);
|
| + val_print_optimized_out (NULL, stream);
|
| else
|
| pascal_object_print_static_field (v, stream, recurse + 1,
|
| options);
|
| @@ -717,7 +688,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
|
| dont_print_statmem_obstack = tmp_obstack;
|
| }
|
|
|
| - if (options->pretty)
|
| + if (options->prettyformat)
|
| {
|
| fprintf_filtered (stream, "\n");
|
| print_spaces_filtered (2 * recurse, stream);
|
| @@ -797,8 +768,11 @@ pascal_object_print_value (struct type *type, const gdb_byte *valaddr,
|
|
|
| if (boffset < 0 || boffset >= TYPE_LENGTH (type))
|
| {
|
| - /* FIXME (alloc): not safe is baseclass is really really big. */
|
| - gdb_byte *buf = alloca (TYPE_LENGTH (baseclass));
|
| + gdb_byte *buf;
|
| + struct cleanup *back_to;
|
| +
|
| + buf = xmalloc (TYPE_LENGTH (baseclass));
|
| + back_to = make_cleanup (xfree, buf);
|
|
|
| base_valaddr = buf;
|
| if (target_read_memory (address + boffset, buf,
|
| @@ -807,12 +781,13 @@ pascal_object_print_value (struct type *type, const gdb_byte *valaddr,
|
| address = address + boffset;
|
| thisoffset = 0;
|
| boffset = 0;
|
| + do_cleanups (back_to);
|
| }
|
| else
|
| base_valaddr = valaddr;
|
| }
|
|
|
| - if (options->pretty)
|
| + if (options->prettyformat)
|
| {
|
| fprintf_filtered (stream, "\n");
|
| print_spaces_filtered (2 * recurse, stream);
|
| @@ -869,6 +844,12 @@ pascal_object_print_static_field (struct value *val,
|
| struct type *type = value_type (val);
|
| struct value_print_options opts;
|
|
|
| + if (value_entirely_optimized_out (val))
|
| + {
|
| + val_print_optimized_out (val, stream);
|
| + return;
|
| + }
|
| +
|
| if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
|
| {
|
| CORE_ADDR *first_dont_print, addr;
|
|
|