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]
- From: Daniel Jacobowitz <drow at mvista dot com>
- To: Andrew Cagney <ac131313 at redhat dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Sun, 8 Jun 2003 12:58:00 -0400
- Subject: Re: [commit] Split d10v-tdep.c into trad-frame.[hc]
- References: <3EE36123.3020508@redhat.com>
On Sun, Jun 08, 2003 at 12:15:31PM -0400, Andrew Cagney wrote:
> Hello,
>
> This moves a chunk of d10v's frame unwind code into trad-frame.[hc]. It
> creates a simple framework that traditional unwinders can use - a
> successor to get_frame_saved_regs().
>
> Handling the problem of the previous frame's PC being in this frame's LR
> is remarkably simple - just copy the saved location of LR into PC!
I like it. Just one complaint:
> +struct trad_frame
> +{
> + /* 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. */
> +};
Gyuh? I looked at this for a couple of minutes and couldn't make heads
or tails of it until I went to look at trad-frame.c: this structure
isn't a frame at all, it's a single saved register. Could you rename
it, and update the comments?
I'm also not sure I understand all the combinations:
regnum < 0, addr is the register value
regnum >= 0 and addr 0, regnum holds the new register number (in the
next frame?)
regnum >= 0 and addr non-zero, addr is the save address - but what's
regnum mean? Nothing?
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer