This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[patch rfc] Eliminate deprecated_generic_get_saved_regs()
- From: Andrew Cagney <ac131313 at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Sun, 01 Jun 2003 23:11:20 -0400
- Subject: [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);
}