This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [commit] Split d10v-tdep.c into trad-frame.[hc]
On Sun, Jun 08, 2003 at 01:45:06PM -0400, Andrew Cagney wrote:
>>+struct trad_frame
trad_frame_saved_regs?
I've changed it to the attached.
committed,
Andrew
2003-06-08 Andrew Cagney <cagney@redhat.com>
* trad-frame.h (struct trad_frame_saved_reg): Rename "struct
trad_frame". Update comments.
* d10v-tdep.c (struct d10v_unwind_cache): Update.
* trad-frame.c (trad_frame_alloc_saved_regs): Update.
(trad_frame_register_value, trad_frame_prev_register): Update.
Index: d10v-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/d10v-tdep.c,v
retrieving revision 1.121
diff -u -r1.121 d10v-tdep.c
--- d10v-tdep.c 8 Jun 2003 18:27:13 -0000 1.121
+++ d10v-tdep.c 8 Jun 2003 22:01:48 -0000
@@ -577,7 +577,7 @@
LONGEST r11_offset;
int uses_frame;
/* Table indicating the location of each and every register. */
- struct trad_frame *saved_regs;
+ struct trad_frame_saved_reg *saved_regs;
};
static int
Index: trad-frame.c
===================================================================
RCS file: /cvs/src/src/gdb/trad-frame.c,v
retrieving revision 1.1
diff -u -r1.1 trad-frame.c
--- trad-frame.c 8 Jun 2003 16:09:46 -0000 1.1
+++ trad-frame.c 8 Jun 2003 22:01:48 -0000
@@ -29,41 +29,41 @@
non-optimized frames, the technique is reliable (just need to check
for all potential instruction sequences). */
-struct trad_frame *
+struct trad_frame_saved_reg *
trad_frame_alloc_saved_regs (struct frame_info *next_frame)
{
- int i;
+ int regnum;
struct gdbarch *gdbarch = get_frame_arch (next_frame);
int numregs = NUM_REGS + NUM_PSEUDO_REGS;
- struct trad_frame *this_saved_regs
- = FRAME_OBSTACK_CALLOC (numregs, struct trad_frame);
- for (i = 0; i < numregs; i++)
- this_saved_regs[i].regnum = i;
+ struct trad_frame_saved_reg *this_saved_regs
+ = FRAME_OBSTACK_CALLOC (numregs, struct trad_frame_saved_reg);
+ for (regnum = 0; regnum < numregs; regnum++)
+ this_saved_regs[regnum].realnum = regnum;
return this_saved_regs;
}
void
-trad_frame_register_value (struct trad_frame this_saved_regs[],
+trad_frame_register_value (struct trad_frame_saved_reg this_saved_regs[],
int regnum, LONGEST val)
{
- /* Make the REGNUM invalid, indicating that the ADDR contains the
+ /* Make the REALNUM invalid, indicating that the ADDR contains the
register's value. */
- this_saved_regs[regnum].regnum = -1;
+ this_saved_regs[regnum].realnum = -1;
this_saved_regs[regnum].addr = val;
}
void
trad_frame_prev_register (struct frame_info *next_frame,
- struct trad_frame this_saved_regs[],
+ struct trad_frame_saved_reg this_saved_regs[],
int regnum, int *optimizedp,
enum lval_type *lvalp, CORE_ADDR *addrp,
int *realnump, void *bufferp)
{
struct gdbarch *gdbarch = get_frame_arch (next_frame);
- if (this_saved_regs[regnum].regnum >= 0
+ if (this_saved_regs[regnum].realnum >= 0
&& this_saved_regs[regnum].addr != 0)
{
- /* The register was saved on the stack, fetch it. */
+ /* The register was saved in memory. */
*optimizedp = 0;
*lvalp = lval_memory;
*addrp = this_saved_regs[regnum].addr;
@@ -75,11 +75,11 @@
register_size (gdbarch, regnum));
}
}
- else if (this_saved_regs[regnum].regnum >= 0
+ else if (this_saved_regs[regnum].realnum >= 0
&& this_saved_regs[regnum].addr == 0)
{
/* As the next frame to return the value of the register. */
- frame_register_unwind (next_frame, this_saved_regs[regnum].regnum,
+ frame_register_unwind (next_frame, this_saved_regs[regnum].realnum,
optimizedp, lvalp, addrp, realnump, bufferp);
}
else
Index: trad-frame.h
===================================================================
RCS file: /cvs/src/src/gdb/trad-frame.h,v
retrieving revision 1.1
diff -u -r1.1 trad-frame.h
--- trad-frame.h 8 Jun 2003 16:09:46 -0000 1.1
+++ trad-frame.h 8 Jun 2003 22:01:48 -0000
@@ -22,33 +22,45 @@
#ifndef TRAD_FRAME_H
#define TRAD_FRAME_H
-struct trad_frame
+/* A traditional saved regs table, indexed by REGNUM, encoding where
+ the value of REGNUM for the previous frame can be found in this
+ frame.
+
+ The table is initialized with an identity encoding (ADDR == 0,
+ REALNUM == REGNUM) indicating that the value of REGNUM in the
+ previous frame can be found in register REGNUM (== REALNUM) in this
+ frame.
+
+ The initial encoding can then be changed:
+
+ Modify ADDR (REALNUM >= 0, ADDR != 0) to indicate that the value of
+ register REGNUM in the previous frame can be found in memory at
+ ADDR in this frame.
+
+ Modify REALNUM (REALNUM >= 0, ADDR == 0) to indicate that the value
+ of register REGNUM in the previous frame is found in register
+ REALNUM in this frame.
+
+ Call trad_frame_register_value (REALNUM < 0) to indicate that the
+ value of register REGNUM in the previous frame is found in ADDR. */
+
+struct trad_frame_saved_reg
{
- /* If non-zero (and regnum >= 0), the stack address at which the
- register is saved. By default, it is assumed that the register
- was not saved (addr == 0). Remember, a LONGEST can always fit a
- CORE_ADDR. */
- LONGEST addr;
- /* else, if regnum >=0 (and addr == 0), the REGNUM that contains
- this registers value. By default, it is assumed that the
- registers are not moved (the register's value is still in that
- register and regnum == the index). */
- int regnum;
- /* else, if regnum < 0, ADDR is the registers value. */
+ LONGEST addr; /* A CORE_ADDR fits in a longest. */
+ int realnum;
};
-/* Convenience function, encode the register's value in the
- trad-frame. */
-void trad_frame_register_value (struct trad_frame this_saved_regs[],
+/* Convenience function, encode REGNUM's location in the trad-frame. */
+void trad_frame_register_value (struct trad_frame_saved_reg this_saved_regs[],
int regnum, LONGEST val);
/* Return a freshly allocated (and initialized) trad_frame array. */
-struct trad_frame *trad_frame_alloc_saved_regs (struct frame_info *next_frame);
+struct trad_frame_saved_reg *trad_frame_alloc_saved_regs (struct frame_info *next_frame);
/* Given the trad_frame info, return the location of the specified
register. */
void trad_frame_prev_register (struct frame_info *next_frame,
- struct trad_frame this_saved_regs[],
+ struct trad_frame_saved_reg this_saved_regs[],
int regnum, int *optimizedp,
enum lval_type *lvalp, CORE_ADDR *addrp,
int *realnump, void *bufferp);