X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fp-valprint.c;h=a87f1f4714afe5b29a62c176bd87d7e62bfa6926;hb=9f1b45b0da430a7a7abf9e54acbe6f2ef9d3a763;hp=b2287f2177d1a767f183304d61ccc4c39ed597b4;hpb=6b1755ce16be3fbe1630507651c73df2710da80f;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c index b2287f2177..a87f1f4714 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-2014 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); @@ -575,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); @@ -586,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); @@ -595,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)) @@ -648,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 { @@ -676,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); @@ -707,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); @@ -806,7 +787,7 @@ pascal_object_print_value (struct type *type, const gdb_byte *valaddr, base_valaddr = valaddr; } - if (options->pretty) + if (options->prettyformat) { fprintf_filtered (stream, "\n"); print_spaces_filtered (2 * recurse, stream); @@ -863,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;