diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-05-15 16:53:38 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-05-15 16:53:38 +0000 |
commit | 19ca80ba578d7849bc921f80339f757f91eb4eae (patch) | |
tree | 9ff503a38756f3401cecdb19d4cd63ab434a3990 | |
parent | 245c7f487f624e96be56ead109684a7684160eca (diff) | |
download | gdb-19ca80ba578d7849bc921f80339f757f91eb4eae.zip gdb-19ca80ba578d7849bc921f80339f757f91eb4eae.tar.gz gdb-19ca80ba578d7849bc921f80339f757f91eb4eae.tar.bz2 |
* valprint.c: Include "exceptions.h".
(val_print): If something goes wrong while printing, supply an
error message.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/Makefile.in | 3 | ||||
-rw-r--r-- | gdb/valprint.c | 15 |
3 files changed, 21 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index fce57b4..5770bf1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2006-05-15 Daniel Jacobowitz <dan@codesourcery.com> + + * valprint.c: Include "exceptions.h". + (val_print): If something goes wrong while printing, supply an + error message. + 2006-05-15 Peter O'Gorman <gdb-patches@mlists.thewrittenword.com> * source.c (get_current_source_symtab_and_line) diff --git a/gdb/Makefile.in b/gdb/Makefile.in index e8cd87a..ab25148 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -2773,7 +2773,8 @@ valops.o: valops.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(value_h) $(frame_h) \ $(cp_support_h) $(observer_h) valprint.o: valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \ $(value_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) $(language_h) \ - $(annotate_h) $(valprint_h) $(floatformat_h) $(doublest_h) + $(annotate_h) $(valprint_h) $(floatformat_h) $(doublest_h) \ + $(exceptions_h) value.o: value.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \ $(value_h) $(gdbcore_h) $(command_h) $(gdbcmd_h) $(target_h) \ $(language_h) $(scm_lang_h) $(demangle_h) $(doublest_h) \ diff --git a/gdb/valprint.c b/gdb/valprint.c index b3a411a..d730917 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -34,6 +34,7 @@ #include "valprint.h" #include "floatformat.h" #include "doublest.h" +#include "exceptions.h" #include <errno.h> @@ -205,6 +206,9 @@ val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int format, int deref_ref, int recurse, enum val_prettyprint pretty) { + volatile struct gdb_exception except; + int ret = 0; + struct type *real_type = check_typedef (type); if (pretty == Val_pretty_default) { @@ -224,8 +228,15 @@ val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, return (0); } - return (LA_VAL_PRINT (type, valaddr, embedded_offset, address, - stream, format, deref_ref, recurse, pretty)); + TRY_CATCH (except, RETURN_MASK_ERROR) + { + ret = LA_VAL_PRINT (type, valaddr, embedded_offset, address, + stream, format, deref_ref, recurse, pretty); + } + if (except.reason < 0) + fprintf_filtered (stream, _("<error reading variable>")); + + return ret; } /* Check whether the value VAL is printable. Return 1 if it is; |