From 59f0d5d9531817d3bb09aeef8fd33515b51a7cba Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 9 Jul 2008 22:36:51 +0000 Subject: [PATCH] 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. --- gdb/ChangeLog | 12 ++++++++++++ gdb/infrun.c | 43 ++++++++++++++++--------------------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 19cb5b9040..42a147a04d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,15 @@ +2008-07-09 Pedro Alves + + 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 Refactor infrun a bit. diff --git a/gdb/infrun.c b/gdb/infrun.c index 09f1f6b1b1..fdf17a3522 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); + overlay_cache_invalid = 1; - init_infwait_state (); + /* 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'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 - 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 =