[PATCH/gdbserver] Remove current_inferior's save/restore when call get_thread_regcache.

Yao Qi yao@codesourcery.com
Fri May 4 10:52:00 GMT 2012


Hi,
The current_inferior is saved and restored inside get_thread_regcache,
so it is not necessary to save and restore current_inferior out side
of it.

Regression tested on x86_64-linux.  OK to apply?

gdb/gdbserver:

2012-05-04  Yao Qi  <yao@codesourcery.com>

	* linux-low.c (get_pc, linux_wait_for_lwp): Don't save and restore
	current_inferior when call get_thread_cache.
	* proc-service.c (ps_lgetregs): Likewise.
---
 gdb/gdbserver/linux-low.c    |   12 ++----------
 gdb/gdbserver/proc-service.c |    7 +------
 2 files changed, 3 insertions(+), 16 deletions(-)

diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index 751867b..64d314c 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -503,23 +503,18 @@ handle_extended_wait (struct lwp_info *event_child, int wstat)
 static CORE_ADDR
 get_pc (struct lwp_info *lwp)
 {
-  struct thread_info *saved_inferior;
   struct regcache *regcache;
   CORE_ADDR pc;
 
   if (the_low_target.get_pc == NULL)
     return 0;
 
-  saved_inferior = current_inferior;
-  current_inferior = get_lwp_thread (lwp);
-
-  regcache = get_thread_regcache (current_inferior, 1);
+  regcache = get_thread_regcache (get_lwp_thread (lwp), 1);
   pc = (*the_low_target.get_pc) (regcache);
 
   if (debug_threads)
     fprintf (stderr, "pc is 0x%lx\n", (long) pc);
 
-  current_inferior = saved_inferior;
   return pc;
 }
 
@@ -1425,15 +1420,12 @@ retry:
       && WIFSTOPPED (*wstatp)
       && the_low_target.get_pc != NULL)
     {
-      struct thread_info *saved_inferior = current_inferior;
       struct regcache *regcache;
       CORE_ADDR pc;
 
-      current_inferior = get_lwp_thread (child);
-      regcache = get_thread_regcache (current_inferior, 1);
+      regcache = get_thread_regcache (get_lwp_thread (child), 1);
       pc = (*the_low_target.get_pc) (regcache);
       fprintf (stderr, "linux_wait_for_lwp: pc is 0x%lx\n", (long) pc);
-      current_inferior = saved_inferior;
     }
 
   return child;
diff --git a/gdb/gdbserver/proc-service.c b/gdb/gdbserver/proc-service.c
index 5584dab..d4c17a2 100644
--- a/gdb/gdbserver/proc-service.c
+++ b/gdb/gdbserver/proc-service.c
@@ -99,20 +99,15 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prgregset_t gregset)
 {
 #ifdef HAVE_REGSETS
   struct lwp_info *lwp;
-  struct thread_info *reg_inferior, *save_inferior;
   struct regcache *regcache;
 
   lwp = find_lwp_pid (pid_to_ptid (lwpid));
   if (lwp == NULL)
     return PS_ERR;
 
-  reg_inferior = get_lwp_thread (lwp);
-  save_inferior = current_inferior;
-  current_inferior = reg_inferior;
-  regcache = get_thread_regcache (current_inferior, 1);
+  regcache = get_thread_regcache (get_lwp_thread (lwp), 1);
   gregset_info ()->fill_function (regcache, gregset);
 
-  current_inferior = save_inferior;
   return PS_OK;
 #else
   return PS_ERR;
-- 
1.7.0.4



More information about the Gdb-patches mailing list