aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2006-05-15 16:53:38 +0000
committerDaniel Jacobowitz <drow@false.org>2006-05-15 16:53:38 +0000
commit19ca80ba578d7849bc921f80339f757f91eb4eae (patch)
tree9ff503a38756f3401cecdb19d4cd63ab434a3990
parent245c7f487f624e96be56ead109684a7684160eca (diff)
downloadgdb-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/ChangeLog6
-rw-r--r--gdb/Makefile.in3
-rw-r--r--gdb/valprint.c15
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;