diff options
author | Pedro Alves <palves@redhat.com> | 2008-07-09 22:36:51 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2008-07-09 22:36:51 +0000 |
commit | 59f0d5d9531817d3bb09aeef8fd33515b51a7cba (patch) | |
tree | e31df612e649faece54b417c6d799be545b9f9e7 /gdb | |
parent | 0d1e5fa71a5d8e2f5df7494830a5a3053eeaec71 (diff) | |
download | gdb-59f0d5d9531817d3bb09aeef8fd33515b51a7cba.zip gdb-59f0d5d9531817d3bb09aeef8fd33515b51a7cba.tar.gz gdb-59f0d5d9531817d3bb09aeef8fd33515b51a7cba.tar.bz2 |
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/ChangeLog | 12 | ||||
-rw-r--r-- | gdb/infrun.c | 43 |
2 files changed, 28 insertions, 27 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 19cb5b9..42a147a 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 09f1f6b..fdf17a3 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 = |