This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] MIPS/gdbserver: Fix $f9 access
- From: "Maciej W. Rozycki" <macro at codesourcery dot com>
- To: Stan Shebs <stanshebs at earthlink dot net>
- Cc: <gdb-patches at sourceware dot org>
- Date: Fri, 24 Feb 2012 16:17:38 +0000
- Subject: Re: [PATCH] MIPS/gdbserver: Fix $f9 access
- References: <alpine.DEB.1.10.1111172014020.4191@tp.orcam.me.uk> <4EC570F2.90302@earthlink.net>
Hi Stan,
I missed your reply, sorry, it wasn't cc-ed to me directly.
On Thu, 17 Nov 2011, Stan Shebs wrote:
> > The following change fixes a problem where $f8 is accessed whenever $f9
> > is requested. The bug has always been there, since MIPS support was added
> > back in 2002. I guess nobody uses gdbserver with MIPS FPU, oh well...
>
> Probably truer than we would like to think. :-)
I have meanwhile realised what happened here -- this is traditional
ptrace POKEUSR/PEEKUSR code while the MIPS target has used regsets for a
while now.
> > OK to apply?
>
> Yep, looks fine.
Applied now, thanks.
> It would be cool to have a testsuite case that exercises this, but let's be
> honest, that's more work than it would be worth.
An ancient Linux kernel that does not support regsets would be required
for that or something. Or an option for gdbserver to refrain from using
them. And that appears problematic too since $zero has special treatment
now (see mips_cannot_store_register; the slot is reused for that weird
syscall "restart" register) and further changes would be required in
generic code to handle that correctly. Not worth the effort IMO unless
something changes causing these bits to be required again.
> > 2011-11-17 Maciej W. Rozycki<macro@codesourcery.com>
> >
> > gdb/gdbserver/
> > * linux-mips-low.c (mips_regmap): Correct the index of $f9.
> >
> > Maciej
> >
> > gdb-gdbserver-linux-mips-fpr-fix.diff
> > Index: gdb-fsf-trunk-quilt/gdb/gdbserver/linux-mips-low.c
> > ===================================================================
> > --- gdb-fsf-trunk-quilt.orig/gdb/gdbserver/linux-mips-low.c 2011-11-17
> > 20:10:51.000000000 +0000
> > +++ gdb-fsf-trunk-quilt/gdb/gdbserver/linux-mips-low.c 2011-11-17
> > 20:11:44.995624756 +0000
> > @@ -63,7 +63,7 @@ static int mips_regmap[] = {
> >
> > FPR_BASE, FPR_BASE + 1, FPR_BASE + 2, FPR_BASE + 3,
> > FPR_BASE + 4, FPR_BASE + 5, FPR_BASE + 6, FPR_BASE + 7,
> > - FPR_BASE + 8, FPR_BASE + 8, FPR_BASE + 10, FPR_BASE + 11,
> > + FPR_BASE + 8, FPR_BASE + 9, FPR_BASE + 10, FPR_BASE + 11,
> > FPR_BASE + 12, FPR_BASE + 13, FPR_BASE + 14, FPR_BASE + 15,
> > FPR_BASE + 16, FPR_BASE + 17, FPR_BASE + 18, FPR_BASE + 19,
> > FPR_BASE + 20, FPR_BASE + 21, FPR_BASE + 22, FPR_BASE + 23,
Maciej