Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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);

  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