This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: assertion failure in regcache.c
Andrew Cagney writes:
> > Looks like you're right. If I update to 2003-05-04 it's fine, but after
> > that it blows up. Seems to only be a problem for sh4 though. Any
> > suggestions as to what might be breaking this? Here's the output of maint
> > print registers.
>
> > r0b1 51 51 204 4 int
> > r1b1 52 52 208 4 int
> > r2b1 53 53 212 4 int
> > r3b1 54 54 216 4 int
> > r4b1 55 55 220 4 int
> > r5b1 56 56 224 4 int
> > r6b1 57 57 228 4 int
> > r7b1 58 58 232 4 int
> > dr0 59 0 236*1 8 double
> > dr2 60 1 244*1 8 double
> > dr4 61 2 252*1 8 double
> > dr6 62 3 260*1 8 double
> > dr8 63 4 268*1 8 double
> > dr10 64 5 276*1 8 double
> > dr12 65 6 284*1 8 double
> > dr14 66 7 292*1 8 double
> > fv0 67 8 300*1 16 *2
> > fv4 68 9 316*1 16 *2
> > fv8 69 10 332*1 16 *2
> > fv12 70 11 348*1 16 *2
> > *1: Inconsistent register offsets.
> > *2: Register type's name NULL.
>
> I'd start with the obvious thing - a simple tipo in the SH4 register
> byte function. The code was written long before these sanity checks
> were added and ``the old way'' makes it very hard to notice that the
> values are skewed.
>
> Andrew
>
yes, look at sh_sh4_register_byte. Maybe FV0_REGNUM or FV_LAST_REGNUM
are not set correctly or fv_reg_base_num does something wrong. These
registers with (*1) are pseudo registers, so it's easy that the
calculations could have been screwed up.
elena