From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27783 invoked by alias); 8 Jun 2003 22:07:41 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 27701 invoked from network); 8 Jun 2003 22:07:38 -0000 Received: from unknown (HELO localhost.redhat.com) (24.157.166.107) by sources.redhat.com with SMTP; 8 Jun 2003 22:07:38 -0000 Received: from redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id C23EC2B63; Sun, 8 Jun 2003 18:07:35 -0400 (EDT) Message-ID: <3EE3B3A7.3040708@redhat.com> Date: Sun, 08 Jun 2003 22:07:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.2) Gecko/20030223 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Daniel Jacobowitz Cc: gdb-patches@sources.redhat.com Subject: Re: [commit] Split d10v-tdep.c into trad-frame.[hc] References: <3EE36123.3020508@redhat.com> <20030608165800.GA15675@nevyn.them.org> <3EE37622.9080508@redhat.com> <20030608174846.GA16459@nevyn.them.org> Content-Type: multipart/mixed; boundary="------------030209080900070809020908" X-SW-Source: 2003-06/txt/msg00283.txt.bz2 This is a multi-part message in MIME format. --------------030209080900070809020908 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 186 > 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 --------------030209080900070809020908 Content-Type: text/plain; name="diffs" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diffs" Content-length: 6445 2003-06-08 Andrew Cagney * 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); --------------030209080900070809020908--