diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/infrun.c | 33 | ||||
-rw-r--r-- | gdb/remote.c | 4 |
3 files changed, 10 insertions, 33 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 34e8eb0..00188e6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2011-09-14 Pedro Alves <pedro@codesourcery.com> + + * infrun.c (prepare_for_detach, wait_for_inferior) + (fetch_inferior_event): Don't flush the register cache. + * remote.c (struct stop_reply) <regcache>: Add comment. + 2011-09-13 Jan Kratochvil <jan.kratochvil@redhat.com> Remove excessive DWARF expressions memory duplication. diff --git a/gdb/infrun.c b/gdb/infrun.c index 2b4f6db..c72b05d 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -2580,14 +2580,6 @@ prepare_for_detach (void) 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 (); - if (deprecated_target_wait_hook) ecs->ptid = deprecated_target_wait_hook (pid_ptid, &ecs->ws, 0); else @@ -2657,14 +2649,7 @@ wait_for_inferior (void) { struct cleanup *old_chain; - /* 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. */ - overlay_cache_invalid = 1; - registers_changed (); if (deprecated_target_wait_hook) ecs->ptid = deprecated_target_wait_hook (waiton_ptid, &ecs->ws, 0); @@ -2734,26 +2719,8 @@ fetch_inferior_event (void *client_data) running any breakpoint commands. */ make_cleanup_restore_current_thread (); - /* 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. */ - overlay_cache_invalid = 1; - /* But don't do it if the current thread is already stopped (hence - this is either a delayed event that will result in - TARGET_WAITKIND_IGNORE, or it's an event for another thread (and - we always clear the register and frame caches when the user - switches threads anyway). If we didn't do this, a spurious - delayed event in all-stop mode would make the user lose the - selected frame. */ - if (non_stop - || (!ptid_equal (inferior_ptid, null_ptid) - && is_executing (inferior_ptid))) - registers_changed (); - make_cleanup_restore_integer (&execution_direction); execution_direction = target_execution_direction (); diff --git a/gdb/remote.c b/gdb/remote.c index 1535fb6..1c9e965 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -4898,6 +4898,10 @@ struct stop_reply struct target_waitstatus ws; + /* Expedited registers. This makes remote debugging a bit more + efficient for those targets that provide critical registers as + part of their normal status mechanism (as another roundtrip to + fetch them is avoided). */ VEC(cached_reg_t) *regcache; int stopped_by_watchpoint_p; |