aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2009-10-28 16:33:01 +0000
committerPedro Alves <palves@redhat.com>2009-10-28 16:33:01 +0000
commitc4dbc9afcc11c0d46e52bc6dafaabc76d8a3a143 (patch)
tree65a0829085437b0c8446d586447b0d3e02e78c61 /gdb
parent9a7071a8ce92ca34996d97b77e72ac8cc3946cd6 (diff)
downloadgdb-c4dbc9afcc11c0d46e52bc6dafaabc76d8a3a143.zip
gdb-c4dbc9afcc11c0d46e52bc6dafaabc76d8a3a143.tar.gz
gdb-c4dbc9afcc11c0d46e52bc6dafaabc76d8a3a143.tar.bz2
* infrun.c (keep_going): Wrap with resume_cleanups.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/infrun.c7
2 files changed, 11 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a73039b..c080900 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2009-10-28 Pedro Alves <pedro@codesourcery.com>
+
+ * infrun.c (keep_going): Wrap with resume_cleanups.
+
2009-10-27 Paul Pluzhnikov <ppluzhnikov@google.com>
* MAINTAINERS: Add self to "modify-after-approval" maintainers.
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 586746a..842ff6b 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -4812,6 +4812,10 @@ stop_stepping (struct execution_control_state *ecs)
static void
keep_going (struct execution_control_state *ecs)
{
+ /* Make sure normal_stop is called if we get a QUIT handled before
+ reaching resume. */
+ struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0);
+
/* Save the pc before execution, to compare with pc after stop. */
ecs->event_thread->prev_pc
= regcache_read_pc (get_thread_regcache (ecs->ptid));
@@ -4825,6 +4829,8 @@ keep_going (struct execution_control_state *ecs)
/* We took a signal (which we are supposed to pass through to
the inferior, else we'd not get here) and we haven't yet
gotten our trap. Simply continue. */
+
+ discard_cleanups (old_cleanups);
resume (currently_stepping (ecs->event_thread),
ecs->event_thread->stop_signal);
}
@@ -4887,6 +4893,7 @@ keep_going (struct execution_control_state *ecs)
&& !signal_program[ecs->event_thread->stop_signal])
ecs->event_thread->stop_signal = TARGET_SIGNAL_0;
+ discard_cleanups (old_cleanups);
resume (currently_stepping (ecs->event_thread),
ecs->event_thread->stop_signal);
}