From 67b3d2e2c260a2846b5b5e0e5c4e73e502fd5e83 Mon Sep 17 00:00:00 2001 From: palves 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,5 +1,17 @@ 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. * infrun.c (currently_stepping): Take a struct 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); - - 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 = -- 2.11.0