This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[rfc] [7/8] Get rid of current_gdbarch in i386*.c


Hi,

this patch gets rid of some of the current_gdbarch's in i386*.c

Is this ok to commit?

ChangeLog:



	* i386-linux-nat.c (fetch_register): Use get_regcache_arch to get at
	the current architecture by regcache.
	(store_register, supply_gregset, fill_gregset, i386_linux_resume)
	(i386_linux_fetch_inferior_registers)
	(i386_linux_store_inferior_registers): Likewise.
	* i386gnu-nat.c (gnu_fetch_registers, gnu_store_registers): Likewise.
	* i386-nto-tdep.c (i386nto_supply_gregset): Likewise.
	* i386v4-nat.c (supply_fpregset, fill_fpregset): Likewise.
	* i386-tdep.c (i386_unwind_pc): Replace current_gdbarch by gdbarch.
	(i386_extract_return_value, i386_store_return_value): Likewise.
	* i386-tdep.c (i386_frame_prev_register): Use get_frame_arch to get at
	the current architecture by frame_info.
	(i386_sigtramp_frame_cache, i386_get_longjmp_target)
	(i386_register_to_value, i386_value_to_register): Likewise.


-- Markus Deuling GNU Toolchain for Linux on Cell BE deuling@de.ibm.com



diff -urpN src/gdb/i386gnu-nat.c dev/gdb/i386gnu-nat.c
--- src/gdb/i386gnu-nat.c	2007-08-23 20:08:34.000000000 +0200
+++ dev/gdb/i386gnu-nat.c	2007-10-09 10:57:40.000000000 +0200
@@ -149,7 +149,8 @@ gnu_fetch_registers (struct regcache *re
       else
 	{
 	  proc_debug (thread, "fetching register %s",
-		      gdbarch_register_name (current_gdbarch, regno));
+		      gdbarch_register_name (get_regcache_arch (regcache),
+					     regno));
 
 	  regcache_raw_supply (regcache, regno,
 			       REG_ADDR (state, regno));
@@ -203,6 +204,7 @@ void
 gnu_store_registers (struct regcache *regcache, int regno)
 {
   struct proc *thread;
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
 
   /* Make sure we know about new threads.  */
   inf_update_procs (current_inferior);
@@ -243,11 +245,11 @@ gnu_store_registers (struct regcache *re
 	    if ((thread->fetched_regs & (1 << check_regno))
 		&& memcpy (REG_ADDR (&old_state, check_regno),
 			   REG_ADDR (state, check_regno),
-			   register_size (current_gdbarch, check_regno)))
+			   register_size (gdbarch, check_regno)))
 	      /* Register CHECK_REGNO has changed!  Ack!  */
 	      {
 		warning (_("Register %s changed after the thread was aborted"),
-			 gdbarch_register_name (current_gdbarch, check_regno));
+			 gdbarch_register_name (gdbarch, check_regno));
 		if (regno >= 0 && regno != check_regno)
 		  /* Update GDB's copy of the register.  */
 		  regcache_raw_supply (regcache, check_regno,
@@ -270,7 +272,7 @@ gnu_store_registers (struct regcache *re
       else
 	{
 	  proc_debug (thread, "storing register %s",
-		      gdbarch_register_name (current_gdbarch, regno));
+		      gdbarch_register_name (gdbarch, regno));
 
 	  gdb_assert (regcache_valid_p (regcache, regno));
 	  regcache_raw_collect (regcache, regno, REG_ADDR (state, regno));
diff -urpN src/gdb/i386-linux-nat.c dev/gdb/i386-linux-nat.c
--- src/gdb/i386-linux-nat.c	2007-10-01 02:22:50.000000000 +0200
+++ dev/gdb/i386-linux-nat.c	2007-10-09 10:55:11.000000000 +0200
@@ -161,7 +161,7 @@ fetch_register (struct regcache *regcach
   val = ptrace (PTRACE_PEEKUSER, tid, 4 * regmap[regno], 0);
   if (errno != 0)
     error (_("Couldn't read register %s (#%d): %s."), 
-	   gdbarch_register_name (current_gdbarch, regno),
+	   gdbarch_register_name (get_regcache_arch (regcache), regno),
 	   regno, safe_strerror (errno));
 
   regcache_raw_supply (regcache, regno, &val);
@@ -189,7 +189,7 @@ store_register (const struct regcache *r
   ptrace (PTRACE_POKEUSER, tid, 4 * regmap[regno], val);
   if (errno != 0)
     error (_("Couldn't write register %s (#%d): %s."),
-	   gdbarch_register_name (current_gdbarch, regno),
+	   gdbarch_register_name (get_regcache_arch (regcache), regno),
 	   regno, safe_strerror (errno));
 }
 
@@ -209,7 +209,8 @@ supply_gregset (struct regcache *regcach
   for (i = 0; i < I386_NUM_GREGS; i++)
     regcache_raw_supply (regcache, i, regp + regmap[i]);
 
-  if (I386_LINUX_ORIG_EAX_REGNUM < gdbarch_num_regs (current_gdbarch))
+  if (I386_LINUX_ORIG_EAX_REGNUM
+	< gdbarch_num_regs (get_regcache_arch (regcache)))
     regcache_raw_supply (regcache, I386_LINUX_ORIG_EAX_REGNUM,
 			 regp + ORIG_EAX);
 }
@@ -230,7 +231,8 @@ fill_gregset (const struct regcache *reg
       regcache_raw_collect (regcache, i, regp + regmap[i]);
 
   if ((regno == -1 || regno == I386_LINUX_ORIG_EAX_REGNUM)
-      && I386_LINUX_ORIG_EAX_REGNUM < gdbarch_num_regs (current_gdbarch))
+      && I386_LINUX_ORIG_EAX_REGNUM
+	   < gdbarch_num_regs (get_regcache_arch (regcache)))
     regcache_raw_collect (regcache, I386_LINUX_ORIG_EAX_REGNUM,
 			  regp + ORIG_EAX);
 }
@@ -458,7 +460,7 @@ i386_linux_fetch_inferior_registers (str
     {
       int i;
 
-      for (i = 0; i < gdbarch_num_regs (current_gdbarch); i++)
+      for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++)
 	if (regno == -1 || regno == i)
 	  fetch_register (regcache, i);
 
@@ -530,7 +532,7 @@ i386_linux_store_inferior_registers (str
     {
       int i;
 
-      for (i = 0; i < gdbarch_num_regs (current_gdbarch); i++)
+      for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++)
 	if (regno == -1 || regno == i)
 	  store_register (regcache, i);
 
@@ -756,8 +758,8 @@ i386_linux_resume (ptid_t ptid, int step
 
       request = PTRACE_SINGLESTEP;
 
-      regcache_cooked_read_unsigned (regcache,
-				     gdbarch_pc_regnum (current_gdbarch), &pc);
+      regcache_cooked_read_unsigned
+	(regcache, gdbarch_pc_regnum (get_regcache_arch (regcache)), &pc);
 
       /* Returning from a signal trampoline is done by calling a
          special system call (sigreturn or rt_sigreturn, see
diff -urpN src/gdb/i386-nto-tdep.c dev/gdb/i386-nto-tdep.c
--- src/gdb/i386-nto-tdep.c	2007-08-23 20:08:34.000000000 +0200
+++ dev/gdb/i386-nto-tdep.c	2007-10-09 11:04:05.000000000 +0200
@@ -81,10 +81,11 @@ nto_reg_offset (int regnum)
 static void
 i386nto_supply_gregset (struct regcache *regcache, char *gpregs)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
   if(tdep->gregset == NULL)
-    tdep->gregset = regset_alloc (current_gdbarch, i386_supply_gregset,
+    tdep->gregset = regset_alloc (gdbarch, i386_supply_gregset,
 				  i386_collect_gregset);
 
   gdb_assert (tdep->gregset_reg_offset == i386nto_gregset_reg_offset);
diff -urpN src/gdb/i386-tdep.c dev/gdb/i386-tdep.c
--- src/gdb/i386-tdep.c	2007-08-23 20:08:34.000000000 +0200
+++ dev/gdb/i386-tdep.c	2007-10-09 11:02:59.000000000 +0200
@@ -912,7 +912,7 @@ i386_unwind_pc (struct gdbarch *gdbarch,
 {
   gdb_byte buf[8];
 
-  frame_unwind_register (next_frame, gdbarch_pc_regnum (current_gdbarch), buf);
+  frame_unwind_register (next_frame, gdbarch_pc_regnum (gdbarch), buf);
   return extract_typed_address (buf, builtin_type_void_func_ptr);
 }
 
@@ -1098,7 +1098,7 @@ i386_frame_prev_register (struct frame_i
 	{
 	  /* Read the value in from memory.  */
 	  read_memory (*addrp, valuep,
-		       register_size (current_gdbarch, regnum));
+		       register_size (get_frame_arch (next_frame), regnum));
 	}
       return;
     }
@@ -1131,7 +1131,7 @@ static struct i386_frame_cache *
 i386_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache)
 {
   struct i386_frame_cache *cache;
-  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+  struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (next_frame));
   CORE_ADDR addr;
   gdb_byte buf[4];
 
@@ -1278,7 +1278,7 @@ i386_get_longjmp_target (struct frame_in
 
   /* Don't use I386_ESP_REGNUM here, since this function is also used
      for AMD64.  */
-  get_frame_register (frame, gdbarch_sp_regnum (current_gdbarch), buf);
+  get_frame_register (frame, gdbarch_sp_regnum (get_frame_arch (frame)), buf);
   sp = extract_typed_address (buf, builtin_type_void_data_ptr);
   if (target_read_memory (sp + len, buf, len))
     return 0;
@@ -1384,8 +1384,8 @@ i386_extract_return_value (struct gdbarc
     }
   else
     {
-      int low_size = register_size (current_gdbarch, LOW_RETURN_REGNUM);
-      int high_size = register_size (current_gdbarch, HIGH_RETURN_REGNUM);
+      int low_size = register_size (gdbarch, LOW_RETURN_REGNUM);
+      int high_size = register_size (gdbarch, HIGH_RETURN_REGNUM);
 
       if (len <= low_size)
 	{
@@ -1456,8 +1456,8 @@ i386_store_return_value (struct gdbarch 
     }
   else
     {
-      int low_size = register_size (current_gdbarch, LOW_RETURN_REGNUM);
-      int high_size = register_size (current_gdbarch, HIGH_RETURN_REGNUM);
+      int low_size = register_size (gdbarch, LOW_RETURN_REGNUM);
+      int high_size = register_size (gdbarch, HIGH_RETURN_REGNUM);
 
       if (len <= low_size)
 	regcache_raw_write_part (regcache, LOW_RETURN_REGNUM, 0, len, valbuf);
@@ -1908,7 +1908,7 @@ i386_register_to_value (struct frame_inf
   while (len > 0)
     {
       gdb_assert (regnum != -1);
-      gdb_assert (register_size (current_gdbarch, regnum) == 4);
+      gdb_assert (register_size (get_frame_arch (frame), regnum) == 4);
 
       get_frame_register (frame, regnum, to);
       regnum = i386_next_regnum (regnum);
@@ -1939,7 +1939,7 @@ i386_value_to_register (struct frame_inf
   while (len > 0)
     {
       gdb_assert (regnum != -1);
-      gdb_assert (register_size (current_gdbarch, regnum) == 4);
+      gdb_assert (register_size (get_frame_arch (frame), regnum) == 4);
 
       put_frame_register (frame, regnum, from);
       regnum = i386_next_regnum (regnum);
diff -urpN src/gdb/i386v4-nat.c dev/gdb/i386v4-nat.c
--- src/gdb/i386v4-nat.c	2007-08-23 20:08:34.000000000 +0200
+++ dev/gdb/i386v4-nat.c	2007-10-09 11:05:08.000000000 +0200
@@ -137,7 +137,7 @@ fill_gregset (const struct regcache *reg
 void
 supply_fpregset (struct regcache *regcache, const fpregset_t *fpregsetp)
 {
-  if (gdbarch_fp0_regnum (current_gdbarch) == 0)
+  if (gdbarch_fp0_regnum (get_regcache_arch (regcache)) == 0)
     return;
 
   i387_supply_fsave (regcache, -1, fpregsetp);
@@ -151,7 +151,7 @@ void
 fill_fpregset (const struct regcache *regcache,
 	       fpregset_t *fpregsetp, int regno)
 {
-  if (gdbarch_fp0_regnum (current_gdbarch) == 0)
+  if (gdbarch_fp0_regnum (get_regcache_arch (regcache)) == 0)
     return;
 
   i387_collect_fsave (regcache, regno, fpregsetp);



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]