Remove make_cleanup_defer_target_commit_resume

This removes make_cleanup_defer_target_commit_resume in favor of using
scoped_restore.

gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>

	* target.h (make_scoped_defer_target_commit_resume): Update.
	* target.c (make_scoped_defer_target_commit_resume): Rename from
	make_cleanup_defer_target_commit_resume.  Return a
	scoped_restore.
	* infrun.c (proceed): Use make_scoped_defer_target_commit_resume.
This commit is contained in:
Tom Tromey
2017-05-03 17:13:04 -06:00
parent 9754d8c4c4
commit a9bc57b978
4 changed files with 44 additions and 40 deletions

View File

@@ -1,3 +1,11 @@
2017-09-29 Tom Tromey <tom@tromey.com>
* target.h (make_scoped_defer_target_commit_resume): Update.
* target.c (make_scoped_defer_target_commit_resume): Rename from
make_cleanup_defer_target_commit_resume. Return a
scoped_restore.
* infrun.c (proceed): Use make_scoped_defer_target_commit_resume.
2017-09-29 Tom Tromey <tom@tromey.com> 2017-09-29 Tom Tromey <tom@tromey.com>
* main.c (captured_main_1): Remove unused declaration. * main.c (captured_main_1): Remove unused declaration.

View File

@@ -2990,7 +2990,6 @@ proceed (CORE_ADDR addr, enum gdb_signal siggnal)
struct execution_control_state ecss; struct execution_control_state ecss;
struct execution_control_state *ecs = &ecss; struct execution_control_state *ecs = &ecss;
struct cleanup *old_chain; struct cleanup *old_chain;
struct cleanup *defer_resume_cleanup;
int started; int started;
/* If we're stopped at a fork/vfork, follow the branch set by the /* If we're stopped at a fork/vfork, follow the branch set by the
@@ -3132,26 +3131,27 @@ proceed (CORE_ADDR addr, enum gdb_signal siggnal)
until the target stops again. */ until the target stops again. */
tp->prev_pc = regcache_read_pc (regcache); tp->prev_pc = regcache_read_pc (regcache);
defer_resume_cleanup = make_cleanup_defer_target_commit_resume (); {
scoped_restore save_defer_tc = make_scoped_defer_target_commit_resume ();
started = start_step_over (); started = start_step_over ();
if (step_over_info_valid_p ()) if (step_over_info_valid_p ())
{ {
/* Either this thread started a new in-line step over, or some /* Either this thread started a new in-line step over, or some
other thread was already doing one. In either case, don't other thread was already doing one. In either case, don't
resume anything else until the step-over is finished. */ resume anything else until the step-over is finished. */
} }
else if (started && !target_is_non_stop_p ()) else if (started && !target_is_non_stop_p ())
{ {
/* A new displaced stepping sequence was started. In all-stop, /* A new displaced stepping sequence was started. In all-stop,
we can't talk to the target anymore until it next stops. */ we can't talk to the target anymore until it next stops. */
} }
else if (!non_stop && target_is_non_stop_p ()) else if (!non_stop && target_is_non_stop_p ())
{ {
/* In all-stop, but the target is always in non-stop mode. /* In all-stop, but the target is always in non-stop mode.
Start all other threads that are implicitly resumed too. */ Start all other threads that are implicitly resumed too. */
ALL_NON_EXITED_THREADS (tp) ALL_NON_EXITED_THREADS (tp)
{ {
/* Ignore threads of processes we're not resuming. */ /* Ignore threads of processes we're not resuming. */
if (!ptid_match (tp->ptid, resume_ptid)) if (!ptid_match (tp->ptid, resume_ptid))
@@ -3187,18 +3187,18 @@ proceed (CORE_ADDR addr, enum gdb_signal siggnal)
if (!ecs->wait_some_more) if (!ecs->wait_some_more)
error (_("Command aborted.")); error (_("Command aborted."));
} }
} }
else if (!tp->resumed && !thread_is_in_step_over_chain (tp)) else if (!tp->resumed && !thread_is_in_step_over_chain (tp))
{ {
/* The thread wasn't started, and isn't queued, run it now. */ /* The thread wasn't started, and isn't queued, run it now. */
reset_ecs (ecs, tp); reset_ecs (ecs, tp);
switch_to_thread (tp->ptid); switch_to_thread (tp->ptid);
keep_going_pass_signal (ecs); keep_going_pass_signal (ecs);
if (!ecs->wait_some_more) if (!ecs->wait_some_more)
error (_("Command aborted.")); error (_("Command aborted."));
} }
}
do_cleanups (defer_resume_cleanup);
target_commit_resume (); target_commit_resume ();
discard_cleanups (old_chain); discard_cleanups (old_chain);

View File

@@ -2285,14 +2285,10 @@ target_commit_resume (void)
/* See target.h. */ /* See target.h. */
struct cleanup * scoped_restore_tmpl<int>
make_cleanup_defer_target_commit_resume (void) make_scoped_defer_target_commit_resume ()
{ {
struct cleanup *old_chain; return make_scoped_restore (&defer_target_commit_resume, 1);
old_chain = make_cleanup_restore_integer (&defer_target_commit_resume);
defer_target_commit_resume = 1;
return old_chain;
} }
void void

View File

@@ -1376,10 +1376,10 @@ extern void target_resume (ptid_t ptid, int step, enum gdb_signal signal);
coalesce multiple resumption requests in a single vCont packet. */ coalesce multiple resumption requests in a single vCont packet. */
extern void target_commit_resume (); extern void target_commit_resume ();
/* Setup to defer target_commit_resume calls, and return a cleanup /* Setup to defer target_commit_resume calls, and reactivate
that reactivates target_commit_resume, if it was previously target_commit_resume on destruction, if it was previously
active. */ active. */
struct cleanup *make_cleanup_defer_target_commit_resume (); extern scoped_restore_tmpl<int> make_scoped_defer_target_commit_resume ();
/* For target_read_memory see target/target.h. */ /* For target_read_memory see target/target.h. */