- case INF_EXEC_COMPLETE:
- /* Is there anything left to do for the command issued to
- complete? */
- do_all_continuations ();
- /* Reset things after target has stopped for the async commands. */
- complete_execution ();
+ /* Do all continuations associated with the whole inferior (not
+ a particular thread). */
+ if (inferior_ptid != null_ptid)
+ do_all_inferior_continuations (0);
+
+ /* When running a command list (from a user command, say), these
+ are only run when the command list is all done. */
+ if (current_ui->async)
+ {
+ check_frame_language_change ();
+
+ /* Don't propagate breakpoint commands errors. Either we're
+ stopping or some command resumes the inferior. The user will
+ be informed. */
+ try
+ {
+ bpstat_do_actions ();
+ }
+ catch (const gdb_exception &e)
+ {
+ /* If the user was running a foreground execution
+ command, then propagate the error so that the prompt
+ can be reenabled. Otherwise, the user already has
+ the prompt and is typing some unrelated command, so
+ just inform the user and swallow the exception. */
+ if (current_ui->prompt_state == PROMPT_BLOCKED)
+ throw;
+ else
+ exception_print (gdb_stderr, e);
+ }
+ }