diff options
author | Pedro Alves <palves@redhat.com> | 2011-05-30 18:04:32 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2011-05-30 18:04:32 +0000 |
commit | fa4cd53f7d2a4d6981bc4e09d5233f0df2c7f1cd (patch) | |
tree | fbf033c82d112b48b3a47155cf5223e737eb3a88 /gdb/inf-loop.c | |
parent | c2949be03bf333bd3de59dc3260762d3201f6b79 (diff) | |
download | gdb-fa4cd53f7d2a4d6981bc4e09d5233f0df2c7f1cd.zip gdb-fa4cd53f7d2a4d6981bc4e09d5233f0df2c7f1cd.tar.gz gdb-fa4cd53f7d2a4d6981bc4e09d5233f0df2c7f1cd.tar.bz2 |
2011-05-30 Pedro Alves <pedro@codesourcery.com>
gdb/
* continuations.h (continuation_ftype): Add `err' parameter.
Document parameters.
(do_all_continuations, do_all_continuations_thread)
(do_all_intermediate_continuations)
(do_all_intermediate_continuations_thread)
(do_all_inferior_continuations): Add `err' parameter.
* continuations.c (do_my_continuations_1, do_my_continuations)
(do_all_inferior_continuations, do_all_continuations_ptid)
(do_all_continuations_thread_callback)
(do_all_continuations_thread, do_all_continuations)
(do_all_intermediate_continuations_thread_callback)
(do_all_intermediate_continuations_thread)
(do_all_intermediate_continuations): Add `err' parameter, and pass
it down all the way to the continuations proper.
* inf-loop.c (inferior_event_handler): If fetching an inferior
event throws an error, don't pop the target, and still call the
continuations, but with `err' set. Adjust all other continuation
calls.
* breakpoint.c (until_break_command_continuation): Add `err'
parameter.
* infcmd.c (step_1_continuation): Add `err' parameter. Don't
issue another step if `err' is set.
(struct until_next_continuation_args): New.
(until_next_continuation): Add `err' parameter. Adjust.
(until_next_command): Adjust.
(struct finish_command_continuation_args): Add `thread' field.
(finish_command_continuation): Add `err' parameter. Handle it.
(finish_forward): Adjust.
(attach_command_continuation): Add `err' parameter. Handle it.
* infrun.c (infrun_thread_stop_requested_callback): Adjust to
cancel the continuations.
* interps.c (interp_set): Adjust to cancel the continuations.
* thread.c (clear_thread_inferior_resources): Adjust to cancel the
continuations rather than discarding.
(free_thread): Don't clear thread inferior resources here.
(delete_thread_1): Do it here instead. And do it before removing
the thread from the threads list. Tag the thread as exited before
clearing thread inferior resources.
Diffstat (limited to 'gdb/inf-loop.c')
-rw-r--r-- | gdb/inf-loop.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/gdb/inf-loop.c b/gdb/inf-loop.c index 1645c38..0ab372c 100644 --- a/gdb/inf-loop.c +++ b/gdb/inf-loop.c @@ -63,13 +63,12 @@ inferior_event_handler (enum inferior_event_type event_type, /* Use catch errors for now, until the inner layers of fetch_inferior_event (i.e. readchar) can return meaningful error status. If an error occurs while getting an event from - the target, just get rid of the target. */ + the target, just cancel the current command. */ if (!catch_errors (fetch_inferior_event_wrapper, client_data, "", RETURN_MASK_ALL)) { - pop_all_targets_above (file_stratum, 0); - discard_all_intermediate_continuations (); - discard_all_continuations (); + do_all_intermediate_continuations (1); + do_all_continuations (1); async_enable_stdin (); display_gdb_prompt (0); } @@ -95,7 +94,7 @@ inferior_event_handler (enum inferior_event_type event_type, /* Do all continuations associated with the whole inferior (not a particular thread). */ if (!ptid_equal (inferior_ptid, null_ptid)) - do_all_inferior_continuations (); + do_all_inferior_continuations (0); /* If we were doing a multi-step (eg: step n, next n), but it got interrupted by a breakpoint, still do the pending @@ -107,9 +106,9 @@ inferior_event_handler (enum inferior_event_type event_type, if (non_stop && target_has_execution && !ptid_equal (inferior_ptid, null_ptid)) - do_all_intermediate_continuations_thread (inferior_thread ()); + do_all_intermediate_continuations_thread (inferior_thread (), 0); else - do_all_intermediate_continuations (); + do_all_intermediate_continuations (0); /* Always finish the previous command before running any breakpoint commands. Any stop cancels the previous command. @@ -118,9 +117,9 @@ inferior_event_handler (enum inferior_event_type event_type, if (non_stop && target_has_execution && !ptid_equal (inferior_ptid, null_ptid)) - do_all_continuations_thread (inferior_thread ()); + do_all_continuations_thread (inferior_thread (), 0); else - do_all_continuations (); + do_all_continuations (0); if (info_verbose && current_language != expected_language @@ -147,9 +146,9 @@ inferior_event_handler (enum inferior_event_type event_type, complete? */ if (non_stop) - do_all_intermediate_continuations_thread (inferior_thread ()); + do_all_intermediate_continuations_thread (inferior_thread (), 0); else - do_all_intermediate_continuations (); + do_all_intermediate_continuations (0); break; case INF_QUIT_REQ: |