This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [patch/rfc] Add get_frame_saved_regs() and get_frame_saved_regs_p()
- From: Andrew Cagney <ac131313 at redhat dot com>
- To: Andrew Cagney <ac131313 at redhat dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Fri, 13 Dec 2002 18:20:31 -0500
- Subject: Re: [patch/rfc] Add get_frame_saved_regs() and get_frame_saved_regs_p()
- References: <3DF7A7C9.9040306@redhat.com>
Hello,
This adds accessor methods for the `struct frame_info' field ->saved_regs. Since get_frame_saved_regs() and frame_saved_regs_zalloc() are almost equivalent, I also eliminated the latter.
I'll look to commit in a few days,
Andrew
Given the updated interface to `extra_info'. I've revised (and
seriously shrunk) this change down to the attached.
committed,
Andrew
2002-12-13 Andrew Cagney <ac131313@redhat.com>
* frame.h (get_frame_saved_regs): Declare.
(frame_saved_regs_zalloc): Change return type to CORE_ADDR
pointer.
* frame.c (get_frame_saved_regs): New function.
(frame_saved_regs_zalloc): Return the allocated saved_regs.
Index: frame.c
===================================================================
RCS file: /cvs/src/src/gdb/frame.c,v
retrieving revision 1.46
diff -u -r1.46 frame.c
--- frame.c 13 Dec 2002 21:57:40 -0000 1.46
+++ frame.c 13 Dec 2002 23:09:11 -0000
@@ -461,14 +461,20 @@
return obstack_alloc (&frame_cache_obstack, size);
}
-void
+CORE_ADDR *
frame_saved_regs_zalloc (struct frame_info *fi)
{
fi->saved_regs = (CORE_ADDR *)
frame_obstack_alloc (SIZEOF_FRAME_SAVED_REGS);
memset (fi->saved_regs, 0, SIZEOF_FRAME_SAVED_REGS);
+ return fi->saved_regs;
}
+CORE_ADDR *
+get_frame_saved_regs (struct frame_info *fi)
+{
+ return fi->saved_regs;
+}
/* Return the innermost (currently executing) stack frame. */
Index: frame.h
===================================================================
RCS file: /cvs/src/src/gdb/frame.h,v
retrieving revision 1.51
diff -u -r1.51 frame.h
--- frame.h 13 Dec 2002 21:57:40 -0000 1.51
+++ frame.h 13 Dec 2002 23:09:11 -0000
@@ -473,7 +473,6 @@
(sizeof (CORE_ADDR) * (NUM_REGS+NUM_PSEUDO_REGS))
extern void *frame_obstack_alloc (unsigned long size);
-extern void frame_saved_regs_zalloc (struct frame_info *);
/* Define a default FRAME_CHAIN_VALID, in the form that is suitable for most
targets. If FRAME_CHAIN_VALID returns zero it means that the given frame
@@ -653,6 +652,13 @@
extern struct frame_extra_info *frame_extra_info_zalloc (struct frame_info *fi,
long size);
extern struct frame_extra_info *get_frame_extra_info (struct frame_info *fi);
+
+/* Create/access the frame's `saved_regs'. The saved regs are used by
+ older code to store the address of each register (except for
+ SP_REGNUM where the value of the register in the previous frame is
+ stored). */
+extern CORE_ADDR *frame_saved_regs_zalloc (struct frame_info *);
+extern CORE_ADDR *get_frame_saved_regs (struct frame_info *);
/* FIXME: cagney/2002-12-06: Has the PC in the current frame changed?
"infrun.c", Thanks to DECR_PC_AFTER_BREAK, can change the PC after