diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/infcmd.c | 14 |
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 |