summaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPedro Alves <pedro@codesourcery.com>2008-07-09 22:36:51 +0000
committerPedro Alves <pedro@codesourcery.com>2008-07-09 22:36:51 +0000
commit37ea67e612e9f286ca331ce1ef796b6bcd3b2916 (patch)
treeef441dcca3f6b357d47eb2f7dec3e4b611e0410f /gdb
parent4b659a2272ef08ec11098e3087e65248f9860491 (diff)
downloadgdb-37ea67e612e9f286ca331ce1ef796b6bcd3b2916.tar.gz
Don't rely on ecs->wait_for_more.
* infrun.c (proceed): Clear the stepping state, set previous_inferior_ptid and clear infwait state. (wait_for_inferior): Don't clear the stepping state, set previous_inferior_ptid, or clear the infwait state here. (fetch_inferior_event): Don't clear the stepping state, set previous_inferior_ptid, or clear the infwait state here. Don't condition on wait_for_more.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog12
-rw-r--r--gdb/infrun.c43
2 files changed, 28 insertions, 27 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 19cb5b90404..42a147a04d4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,17 @@
2008-07-09 Pedro Alves <pedro@codesourcery.com>
+ Don't rely on ecs->wait_for_more.
+
+ * infrun.c (proceed): Clear the stepping state, set
+ previous_inferior_ptid and clear infwait state.
+ (wait_for_inferior): Don't clear the stepping state, set
+ previous_inferior_ptid, or clear the infwait state here.
+ (fetch_inferior_event): Don't clear the stepping state, set
+ previous_inferior_ptid, or clear the infwait state here. Don't
+ condition on wait_for_more.
+
+2008-07-09 Pedro Alves <pedro@codesourcery.com>
+
Refactor infrun a bit.
* infrun.c (currently_stepping): Take a struct
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 09f1f6b1b10..fdf17a35222 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -1288,6 +1288,15 @@ proceed (CORE_ADDR addr, enum target_signal siggnal, int step)
updated correctly when the inferior is stopped. */
prev_pc = regcache_read_pc (get_current_regcache ());
+ /* Fill in with reasonable starting values. */
+ init_thread_stepping_state (tss);
+
+ /* We'll update this if & when we switch to a new thread. */
+ previous_inferior_ptid = inferior_ptid;
+
+ /* Reset to normal state. */
+ init_infwait_state ();
+
/* Resume inferior. */
resume (oneproc || step || bpstat_should_step (), stop_signal);
@@ -1460,15 +1469,6 @@ wait_for_inferior (int treat_exec_as_sigtrap)
ecs = &ecss;
memset (ecs, 0, sizeof (*ecs));
- /* Fill in with reasonable starting values. */
- init_thread_stepping_state (tss);
-
- /* Reset to normal state. */
- init_infwait_state ();
-
- /* We'll update this if & when we switch to a new thread. */
- previous_inferior_ptid = inferior_ptid;
-
overlay_cache_invalid = 1;
/* We have to invalidate the registers BEFORE calling target_wait
@@ -1519,26 +1519,15 @@ fetch_inferior_event (void *client_data)
memset (ecs, 0, sizeof (*ecs));
- if (!ecs->wait_some_more)
- {
- /* Fill in with reasonable starting values. */
- init_thread_stepping_state (tcs);
-
- init_infwait_state ();
-
- /* We'll update this if & when we switch to a new thread. */
- previous_inferior_ptid = inferior_ptid;
-
- overlay_cache_invalid = 1;
+ overlay_cache_invalid = 1;
- /* We have to invalidate the registers BEFORE calling target_wait
- because they can be loaded from the target while in target_wait.
- This makes remote debugging a bit more efficient for those
- targets that provide critical registers as part of their normal
- status mechanism. */
+ /* We have to invalidate the registers BEFORE calling target_wait
+ because they can be loaded from the target while in target_wait.
+ This makes remote debugging a bit more efficient for those
+ targets that provide critical registers as part of their normal
+ status mechanism. */
- registers_changed ();
- }
+ registers_changed ();
if (deprecated_target_wait_hook)
ecs->ptid =