diff options
author | Daniel Jacobowitz <drow@false.org> | 2005-02-28 17:00:49 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2005-02-28 17:00:49 +0000 |
commit | 806048c68af789ffb76e44fca706a7915cfdb9aa (patch) | |
tree | 83e67e751bcf78f68476c295d662f947d514b9f9 /gdb/valprint.c | |
parent | f67e617a26e6d1efafb752d5047b4ddc33056ab1 (diff) | |
download | gdb-806048c68af789ffb76e44fca706a7915cfdb9aa.zip gdb-806048c68af789ffb76e44fca706a7915cfdb9aa.tar.gz gdb-806048c68af789ffb76e44fca706a7915cfdb9aa.tar.bz2 |
* dwarf2loc.c (loclist_read_variable): Set optimized_out
instead of reporting an error.
* valprint.c (value_check_printable): New function.
(common_val_print): New function. Use value_check_printable.
(value_print): Use value_check_printable.
* value.h (common_val_print): Add prototype.
* c-valprint.c (c_val_print): Use common_val_print.
* cp-valprint.c (cp_print_value_fields): Likewise.
(cp_print_hpacc_virtual_table_entries): Likewise.
* f-valprint.c (f_val_print): Likewise.
* jv-valprint.c (java_value_print, java_print_value_fields):
Likewise.
* scm-valprint.c (scm_value_print): Likewise.
* stack.c (print_frame_args): Likewise.
* varobj.c (c_value_of_variable): Likewise.
* p-valprint.c (pascal_val_print, pascal_value_print): Likewise.
(pascal_object_print_value_fields): Likewise. Update call to
pascal_object_print_static_field.
(pascal_object_print_static_field): Remove TYPE argument. Use
common_val_print.
Diffstat (limited to 'gdb/valprint.c')
-rw-r--r-- | gdb/valprint.c | 59 |
1 files changed, 50 insertions, 9 deletions
diff --git a/gdb/valprint.c b/gdb/valprint.c index 044ed21..bda75ef 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -217,25 +217,66 @@ val_print (struct type *type, const bfd_byte *valaddr, int embedded_offset, stream, format, deref_ref, recurse, pretty)); } -/* Print the value VAL in C-ish syntax on stream STREAM. - FORMAT is a format-letter, or 0 for print in natural format of data type. - If the object printed is a string pointer, returns - the number of string bytes printed. */ +/* Check whether the value VAL is printable. Return 1 if it is; + return 0 and print an appropriate error message to STREAM if it + is not. */ -int -value_print (struct value *val, struct ui_file *stream, int format, - enum val_prettyprint pretty) +static int +value_check_printable (struct value *val, struct ui_file *stream) { if (val == 0) { - printf_filtered (_("<address of value unknown>")); + fprintf_filtered (stream, _("<address of value unknown>")); return 0; } + if (value_optimized_out (val)) { - printf_filtered (_("<value optimized out>")); + fprintf_filtered (stream, _("<value optimized out>")); return 0; } + + return 1; +} + +/* Print the value VAL onto stream STREAM according to FORMAT (a + letter, or 0 for natural format using TYPE). + + If DEREF_REF is nonzero, then dereference references, otherwise just print + them like pointers. + + The PRETTY parameter controls prettyprinting. + + If the data are a string pointer, returns the number of string characters + printed. + + This is a preferable interface to val_print, above, because it uses + GDB's value mechanism. */ + +int +common_val_print (struct value *val, struct ui_file *stream, int format, + int deref_ref, int recurse, enum val_prettyprint pretty) +{ + if (!value_check_printable (val, stream)) + return 0; + + return val_print (value_type (val), value_contents_all (val), + value_embedded_offset (val), VALUE_ADDRESS (val), + stream, format, deref_ref, recurse, pretty); +} + +/* Print the value VAL in C-ish syntax on stream STREAM. + FORMAT is a format-letter, or 0 for print in natural format of data type. + If the object printed is a string pointer, returns + the number of string bytes printed. */ + +int +value_print (struct value *val, struct ui_file *stream, int format, + enum val_prettyprint pretty) +{ + if (!value_check_printable (val, stream)) + return 0; + return LA_VALUE_PRINT (val, stream, format, pretty); } |