aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2010-03-18 18:02:00 +0000
committerTom Tromey <tromey@redhat.com>2010-03-18 18:02:00 +0000
commit40c549d6006296af1f9914078b1a73a38ea3b9df (patch)
tree76d24468cfa1b1844c7ed37215842750d4e11cc4 /gdb
parentb115cf96d30141e7694bb322f30644d4667495c6 (diff)
downloadgdb-40c549d6006296af1f9914078b1a73a38ea3b9df.zip
gdb-40c549d6006296af1f9914078b1a73a38ea3b9df.tar.gz
gdb-40c549d6006296af1f9914078b1a73a38ea3b9df.tar.bz2
* infcmd.c (finish_command_continuation): Wrap print_return_value
in TRY_CATCH.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/infcmd.c14
2 files changed, 18 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 576eb18..746af29 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2010-03-18 Tom Tromey <tromey@redhat.com>
+
+ * infcmd.c (finish_command_continuation): Wrap print_return_value
+ in TRY_CATCH.
+
2010-03-18 Ulrich Weigand <uweigand@de.ibm.com>
* mi/mi-main.c (mi_cmd_list_thread_groups): Use get_current_arch
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index e2235db..174acde 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -1439,7 +1439,19 @@ finish_command_continuation (void *arg)
_("finish_command: function has no target type"));
if (TYPE_CODE (value_type) != TYPE_CODE_VOID)
- print_return_value (SYMBOL_TYPE (a->function), value_type);
+ {
+ volatile struct gdb_exception ex;
+
+ TRY_CATCH (ex, RETURN_MASK_ALL)
+ {
+ /* print_return_value can throw an exception in some
+ circumstances. We need to catch this so that we still
+ delete the breakpoint. */
+ print_return_value (SYMBOL_TYPE (a->function), value_type);
+ }
+ if (ex.reason < 0)
+ exception_print (gdb_stdout, ex);
+ }
}
/* We suppress normal call of normal_stop observer and do it here so