From: Andrew Cagney <ac131313@redhat.com>
To: Daniel Jacobowitz <drow@mvista.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [commit] Split d10v-tdep.c into trad-frame.[hc]
Date: Sun, 08 Jun 2003 22:07:00 -0000 [thread overview]
Message-ID: <3EE3B3A7.3040708@redhat.com> (raw)
In-Reply-To: <20030608174846.GA16459@nevyn.them.org>
[-- Attachment #1: Type: text/plain, Size: 186 bytes --]
> 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
[-- Attachment #2: diffs --]
[-- Type: text/plain, Size: 6445 bytes --]
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);
next prev parent reply other threads:[~2003-06-08 22:07 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-06-08 16:15 Andrew Cagney
2003-06-08 16:58 ` Daniel Jacobowitz
2003-06-08 17:45 ` Andrew Cagney
2003-06-08 17:48 ` Daniel Jacobowitz
2003-06-08 22:07 ` Andrew Cagney [this message]
2003-06-08 22:12 ` Daniel Jacobowitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3EE3B3A7.3040708@redhat.com \
--to=ac131313@redhat.com \
--cc=drow@mvista.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox