From fcfb8b02aa46c3a70ccb1d74e243bcfadbcf2711 Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Mon, 5 May 2008 09:02:59 +0000 Subject: [PATCH] * inf-loop.c (inferior_event_handler): Call bpstat_do_action, and catch all exceptions from it. * top.c (command_line_handler_continuation): Don't call bpstat_do_action here. --- gdb/ChangeLog | 7 +++++++ gdb/inf-loop.c | 7 +++++++ gdb/top.c | 2 -- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 447b9269416..42155fc714b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2008-05-05 Vladimir Prus + + * inf-loop.c (inferior_event_handler): Call bpstat_do_action, + and catch all exceptions from it. + * top.c (command_line_handler_continuation): Don't + call bpstat_do_action here. + 2008-05-04 Daniel Jacobowitz * dwarf2read.c (struct dwarf2_cu): Add type_hash. diff --git a/gdb/inf-loop.c b/gdb/inf-loop.c index 4c61daeb003..4889c6f1176 100644 --- a/gdb/inf-loop.c +++ b/gdb/inf-loop.c @@ -43,6 +43,7 @@ void inferior_event_handler (enum inferior_event_type event_type, gdb_client_data client_data) { + struct gdb_exception e; int was_sync = 0; switch (event_type) { @@ -91,6 +92,12 @@ inferior_event_handler (enum inferior_event_type event_type, was_sync = sync_execution; async_enable_stdin (); + /* If there's an error doing breakpoint commands, we don't + want to throw -- continuation might still do something. */ + TRY_CATCH (e, RETURN_MASK_ALL) + { + bpstat_do_actions (&stop_bpstat); + } /* If we were doing a multi-step (eg: step n, next n), but it got interrupted by a breakpoint, still do the pending continuations. The continuation itself is responsible for diff --git a/gdb/top.c b/gdb/top.c index 2454d242be2..feefcf018dc 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -379,8 +379,6 @@ command_line_handler_continuation (struct continuation_arg *arg, int error) if (error) return; - bpstat_do_actions (&stop_bpstat); - if (display_time) { long cmd_time = get_run_time () - time_at_cmd_start; -- 2.30.2