This is the mail archive of the gdb-patches@sources.redhat.com 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]

[patch rfc] Eliminate deprecated_generic_get_saved_regs()


Hello,

This patch does two things:
- renames the recursive generic_unwind_get_saved_regs to deprecated_get_saved_regs
- replaces any occurance of deprecated_generic_get_saved_regs with the recursive equivalent deprecated_get_saved_regs
The main objective here is to clean out one bit of the old get_saved_regs code. Plenty more to go though.


Baring comment, I'll commit this in a few days,
Andrew
2003-06-01  Andrew Cagney  <cagney@redhat.com>

	* frame.h (deprecated_get_saved_register): Declare.
	(generic_unwind_get_saved_register): Delete declaration.
	(deprecated_generic_get_saved_register): Delete declaration.
	* frame.c (deprecated_get_saved_register): Rename
	generic_unwind_get_saved_register.
	(deprecated_generic_get_saved_register): Delete function.
	* sh-tdep.c (sh_gdbarch_init): Set deprecated_get_saved_register
	to deprecated_get_saved_register.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
	* cris-tdep.c (cris_gdbarch_init): Ditto.
	* xstormy16-tdep.c (xstormy16_get_saved_register): Use
	deprecated_get_saved_register.
	(xstormy16_frame_saved_register): Ditto.
	* mips-tdep.c (mips_get_saved_register): Ditto.
	* ia64-tdep.c (ia64_get_saved_register): Ditto.

Index: cris-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/cris-tdep.c,v
retrieving revision 1.72
diff -u -r1.72 cris-tdep.c
--- cris-tdep.c	17 May 2003 05:59:57 -0000	1.72
+++ cris-tdep.c	2 Jun 2003 02:38:40 -0000
@@ -4265,7 +4265,7 @@
   set_gdbarch_deprecated_call_dummy_words (gdbarch, 0);
   set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, 0);
   
-  set_gdbarch_deprecated_get_saved_register (gdbarch, deprecated_generic_get_saved_register);
+  set_gdbarch_deprecated_get_saved_register (gdbarch, deprecated_get_saved_register);
   
   /* No register requires conversion from raw format to virtual format.  */
   set_gdbarch_register_convertible (gdbarch, generic_register_convertible_not);
Index: frame.c
===================================================================
RCS file: /cvs/src/src/gdb/frame.c,v
retrieving revision 1.116
diff -u -r1.116 frame.c
--- frame.c	22 May 2003 18:37:05 -0000	1.116
+++ frame.c	2 Jun 2003 02:39:00 -0000
@@ -673,13 +673,29 @@
   frame_unwind_signed_register (frame->next, regnum, val);
 }
 
+/* Find register number REGNUM relative to FRAME and put its (raw,
+   target format) contents in *RAW_BUFFER.
+
+   Set *OPTIMIZED if the variable was optimized out (and thus can't be
+   fetched).  Note that this is never set to anything other than zero
+   in this implementation.
+
+   Set *LVAL to lval_memory, lval_register, or not_lval, depending on
+   whether the value was fetched from memory, from a register, or in a
+   strange and non-modifiable way (e.g. a frame pointer which was
+   calculated rather than fetched).  We will use not_lval for values
+   fetched from generic dummy frames.
+
+   Set *ADDRP to the address, either in memory or as a REGISTER_BYTE
+   offset into the registers array.  If the value is stored in a dummy
+   frame, set *ADDRP to zero.
+
+   The argument RAW_BUFFER must point to aligned memory.  */
+
 void
-generic_unwind_get_saved_register (char *raw_buffer,
-				   int *optimizedp,
-				   CORE_ADDR *addrp,
-				   struct frame_info *frame,
-				   int regnum,
-				   enum lval_type *lvalp)
+deprecated_get_saved_register (char *raw_buffer, int *optimizedp,
+			       CORE_ADDR *addrp, struct frame_info *frame,
+			       int regnum, enum lval_type *lvalp)
 {
   int optimizedx;
   CORE_ADDR addrx;
@@ -1051,111 +1067,6 @@
   legacy_saved_regs_prev_register
 };
 const struct frame_unwind *legacy_saved_regs_unwind = &legacy_saved_regs_unwinder;
-
-
-/* Function: deprecated_generic_get_saved_register
-   Find register number REGNUM relative to FRAME and put its (raw,
-   target format) contents in *RAW_BUFFER.
-
-   Set *OPTIMIZED if the variable was optimized out (and thus can't be
-   fetched).  Note that this is never set to anything other than zero
-   in this implementation.
-
-   Set *LVAL to lval_memory, lval_register, or not_lval, depending on
-   whether the value was fetched from memory, from a register, or in a
-   strange and non-modifiable way (e.g. a frame pointer which was
-   calculated rather than fetched).  We will use not_lval for values
-   fetched from generic dummy frames.
-
-   Set *ADDRP to the address, either in memory or as a REGISTER_BYTE
-   offset into the registers array.  If the value is stored in a dummy
-   frame, set *ADDRP to zero.
-
-   The argument RAW_BUFFER must point to aligned memory.  */
-
-void
-deprecated_generic_get_saved_register (char *raw_buffer, int *optimized,
-				       CORE_ADDR *addrp,
-				       struct frame_info *frame, int regnum,
-				       enum lval_type *lval)
-{
-  if (!target_has_registers)
-    error ("No registers.");
-
-  gdb_assert (DEPRECATED_FRAME_INIT_SAVED_REGS_P ());
-
-  /* Normal systems don't optimize out things with register numbers.  */
-  if (optimized != NULL)
-    *optimized = 0;
-
-  if (addrp)			/* default assumption: not found in memory */
-    *addrp = 0;
-
-  /* Note: since the current frame's registers could only have been
-     saved by frames INTERIOR TO the current frame, we skip examining
-     the current frame itself: otherwise, we would be getting the
-     previous frame's registers which were saved by the current frame.  */
-
-  if (frame != NULL)
-    {
-      for (frame = get_next_frame (frame);
-	   frame_relative_level (frame) >= 0;
-	   frame = get_next_frame (frame))
-	{
-	  if (get_frame_type (frame) == DUMMY_FRAME)
-	    {
-	      if (lval)		/* found it in a CALL_DUMMY frame */
-		*lval = not_lval;
-	      if (raw_buffer)
-		/* FIXME: cagney/2002-06-26: This should be via the
-		   gdbarch_register_read() method so that it, on the
-		   fly, constructs either a raw or pseudo register
-		   from the raw register cache.  */
-		regcache_raw_read
-		  (deprecated_find_dummy_frame_regcache (get_frame_pc (frame),
-							 get_frame_base (frame)),
-		   regnum, raw_buffer);
-	      return;
-	    }
-
-	  DEPRECATED_FRAME_INIT_SAVED_REGS (frame);
-	  if (get_frame_saved_regs (frame) != NULL
-	      && get_frame_saved_regs (frame)[regnum] != 0)
-	    {
-	      if (lval)		/* found it saved on the stack */
-		*lval = lval_memory;
-	      if (regnum == SP_REGNUM)
-		{
-		  if (raw_buffer)	/* SP register treated specially */
-		    /* NOTE: cagney/2003-05-09: In-line store_address
-                       with it's body - store_unsigned_integer.  */
-		    store_unsigned_integer (raw_buffer,
-					    REGISTER_RAW_SIZE (regnum),
-					    get_frame_saved_regs (frame)[regnum]);
-		}
-	      else
-		{
-		  if (addrp)	/* any other register */
-		    *addrp = get_frame_saved_regs (frame)[regnum];
-		  if (raw_buffer)
-		    read_memory (get_frame_saved_regs (frame)[regnum], raw_buffer,
-				 REGISTER_RAW_SIZE (regnum));
-		}
-	      return;
-	    }
-	}
-    }
-
-  /* If we get thru the loop to this point, it means the register was
-     not saved in any frame.  Return the actual live-register value.  */
-
-  if (lval)			/* found it in a live register */
-    *lval = lval_register;
-  if (addrp)
-    *addrp = REGISTER_BYTE (regnum);
-  if (raw_buffer)
-    deprecated_read_register_gen (regnum, raw_buffer);
-}
 
 /* Determine the frame's type based on its PC.  */
 
Index: frame.h
===================================================================
RCS file: /cvs/src/src/gdb/frame.h,v
retrieving revision 1.95
diff -u -r1.95 frame.h
--- frame.h	12 May 2003 00:26:18 -0000	1.95
+++ frame.h	2 Jun 2003 02:39:06 -0000
@@ -463,22 +463,12 @@
 
 extern char *deprecated_generic_find_dummy_frame (CORE_ADDR pc, CORE_ADDR fp);
 
-void generic_unwind_get_saved_register (char *raw_buffer,
-				        int *optimizedp,
-				        CORE_ADDR *addrp,
-				        struct frame_info *frame,
-				        int regnum,
-				        enum lval_type *lvalp);
+/* Architectures that need to override the register unwind mechanism
+   should modify frame->unwind().  */
 
-/* The function generic_get_saved_register() has been made obsolete.
-   DEPRECATED_GET_SAVED_REGISTER now defaults to the recursive
-   equivalent - generic_unwind_get_saved_register() - so there is no
-   need to even set DEPRECATED_GET_SAVED_REGISTER.  Architectures that
-   need to override the register unwind mechanism should modify
-   frame->unwind().  */
-extern void deprecated_generic_get_saved_register (char *, int *, CORE_ADDR *,
-						   struct frame_info *, int,
-						   enum lval_type *);
+void deprecated_get_saved_register (char *raw_buffer, int *optimizedp,
+				    CORE_ADDR *addrp, struct frame_info *frame,
+				    int regnum, enum lval_type *lvalp);
 
 extern void generic_save_call_dummy_addr (CORE_ADDR lo, CORE_ADDR hi);
 
Index: ia64-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/ia64-tdep.c,v
retrieving revision 1.79
diff -u -r1.79 ia64-tdep.c
--- ia64-tdep.c	17 May 2003 05:59:58 -0000	1.79
+++ ia64-tdep.c	2 Jun 2003 02:39:24 -0000
@@ -1444,8 +1444,8 @@
 	         + ((regnum - IA64_FR32_REGNUM) + rrb_fr) % 96;
 	}
 
-      deprecated_generic_get_saved_register (raw_buffer, optimized, addrp,
-					     frame, regnum, lval);
+      deprecated_get_saved_register (raw_buffer, optimized, addrp,
+				     frame, regnum, lval);
     }
 }
 
Index: m68hc11-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/m68hc11-tdep.c,v
retrieving revision 1.67
diff -u -r1.67 m68hc11-tdep.c
--- m68hc11-tdep.c	17 May 2003 05:59:58 -0000	1.67
+++ m68hc11-tdep.c	2 Jun 2003 02:39:35 -0000
@@ -1382,7 +1382,7 @@
   set_gdbarch_call_dummy_address (gdbarch, m68hc11_call_dummy_address);
   set_gdbarch_deprecated_call_dummy_words (gdbarch, m68hc11_call_dummy_words);
   set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, sizeof (m68hc11_call_dummy_words));
-  set_gdbarch_deprecated_get_saved_register (gdbarch, deprecated_generic_get_saved_register);
+  set_gdbarch_deprecated_get_saved_register (gdbarch, deprecated_get_saved_register);
   set_gdbarch_deprecated_extract_return_value (gdbarch, m68hc11_extract_return_value);
   set_gdbarch_deprecated_push_arguments (gdbarch, m68hc11_push_arguments);
   set_gdbarch_deprecated_push_return_address (gdbarch, m68hc11_push_return_address);
@@ -1401,7 +1401,7 @@
   set_gdbarch_deprecated_saved_pc_after_call (gdbarch, m68hc11_saved_pc_after_call);
   set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
 
-  set_gdbarch_deprecated_get_saved_register (gdbarch, deprecated_generic_get_saved_register);
+  set_gdbarch_deprecated_get_saved_register (gdbarch, deprecated_get_saved_register);
 
   set_gdbarch_deprecated_store_struct_return (gdbarch, m68hc11_store_struct_return);
   set_gdbarch_deprecated_store_return_value (gdbarch, m68hc11_store_return_value);
Index: mips-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mips-tdep.c,v
retrieving revision 1.207
diff -u -r1.207 mips-tdep.c
--- mips-tdep.c	1 Jun 2003 19:02:19 -0000	1.207
+++ mips-tdep.c	2 Jun 2003 02:40:33 -0000
@@ -5453,8 +5453,8 @@
     lvalp = &lvalx;
   if (optimizedp == NULL)
     optimizedp = &optimizedx;
-  generic_unwind_get_saved_register (raw_buffer, optimizedp, addrp, frame,
-                                     regnum, lvalp);
+  deprecated_get_saved_register (raw_buffer, optimizedp, addrp, frame,
+				 regnum, lvalp);
   /* FIXME: cagney/2002-09-13: This is just so bad.  The MIPS should
      have a pseudo register range that correspons to the ABI's, rather
      than the ISA's, view of registers.  These registers would then
Index: sh-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sh-tdep.c,v
retrieving revision 1.124
diff -u -r1.124 sh-tdep.c
--- sh-tdep.c	17 May 2003 05:59:59 -0000	1.124
+++ sh-tdep.c	2 Jun 2003 02:41:02 -0000
@@ -4372,7 +4372,7 @@
   set_gdbarch_deprecated_do_registers_info (gdbarch, sh_do_registers_info);
   set_gdbarch_breakpoint_from_pc (gdbarch, sh_breakpoint_from_pc);
   set_gdbarch_deprecated_frame_chain (gdbarch, sh_frame_chain);
-  set_gdbarch_deprecated_get_saved_register (gdbarch, deprecated_generic_get_saved_register);
+  set_gdbarch_deprecated_get_saved_register (gdbarch, deprecated_get_saved_register);
   set_gdbarch_deprecated_init_extra_frame_info (gdbarch, sh_init_extra_frame_info);
   set_gdbarch_deprecated_extract_return_value (gdbarch, sh_extract_return_value);
   set_gdbarch_deprecated_push_arguments (gdbarch, sh_push_arguments);
Index: xstormy16-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/xstormy16-tdep.c,v
retrieving revision 1.52
diff -u -r1.52 xstormy16-tdep.c
--- xstormy16-tdep.c	17 May 2003 05:59:59 -0000	1.52
+++ xstormy16-tdep.c	2 Jun 2003 02:41:10 -0000
@@ -186,7 +186,7 @@
 			      struct frame_info *fi,
 			      int regnum, enum lval_type *lval)
 {
-  deprecated_generic_get_saved_register (raw_buffer, optimized, addrp, fi, regnum, lval);
+  deprecated_get_saved_register (raw_buffer, optimized, addrp, fi, regnum, lval);
 }
 
 /* Function: xstormy16_type_is_scalar
@@ -440,7 +440,7 @@
   int size = xstormy16_register_raw_size (regnum);
   char *buf = (char *) alloca (size);
 
-  deprecated_generic_get_saved_register (buf, NULL, NULL, fi, regnum, NULL);
+  deprecated_get_saved_register (buf, NULL, NULL, fi, regnum, NULL);
   return (CORE_ADDR) extract_unsigned_integer (buf, size);
 }
 

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