public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Burgess <andrew.burgess@embecosm.com>
To: Jim Wilson <jimw@sifive.com>
Cc: Joel Brobecker <brobecker@adacore.com>,
	Tom Tromey <tom@tromey.com>,
	gdb-patches@sourceware.org, Palmer Dabbelt <palmer@sifive.com>,
	John Baldwin <jhb@freebsd.org>
Subject: Re: [PATCH] gdb/riscv: Add target description support
Date: Tue, 26 Feb 2019 20:30:00 -0000	[thread overview]
Message-ID: <20190226203008.GI10887@embecosm.com> (raw)
In-Reply-To: <CAFyWVaZ5vY-wS+U1Q+pSi2Bb9FUyu97fP4HPTRGU4zOC=wLgAQ@mail.gmail.com>

* Jim Wilson <jimw@sifive.com> [2019-02-26 11:27:24 -0800]:

> On Tue, Feb 26, 2019 at 10:40 AM Jim Wilson <jimw@sifive.com> wrote:
> > >   (3) Renumbered fflags, frm, and fcsr as 66, 67, and 68.  This is
> > >   where the issues will appear for QEMU, Jim's QEMU patch had adopted
> > >   the "new" default numbering which placed these registers after the
> > >   floating point registers (so they had become 65, 66, and 67).
> 
> qemu just assigns numbers to xml regs if they don't have them,
> incrementing by one for each reg.  If we change the qemu xml files at
> the same time as we change the qemu gdbstub hooks, then qemu will
> always be internally consistent.  These xml register numbers aren't
> user visible anywhere inside qemu, they are only used for
> communication with gdb.
> 
> > > If we want backward compatibility then we should merge this GDB patch,
> > > and fix QEMU asap to avoid having two incompatible versions in the
> > > wild.
> 
> I have no control over qemu.  I can only suggest a patch, and ping it,
> and maybe in a few months it will get merged in.

Sure, I understand that, but I was wrong with the severity of the
problem.  So, there's no rush on changing QEMU.

> 
> > > What I don't understand about all this is why QEMU appears to be
> > > discarding one of the big benefits of xml register descriptions; the
> > > ability to disconnect their register numbering from GDB's register
> > > numbering.
> 
> I don't understand the comment.  We still must have numbers for the
> registers, otherwise we can't communicate with gdb about them.  But
> these xml register numbers don't affect the user or hardware register
> numbers, the qemu gdbstub converts between hardware register numbers
> and xml register numbers.

So, I miss-understood the problem slightly, I'll explain what I was
trying to say, then explain why it doesn't really matter...

Consider this cut-down version the 32bit-fpu.xml for RISC-V:

  <feature name="org.gnu.gdb.riscv.fpu">
    <reg name="ft0" bitsize="32" type="ieee_single"/>
  </feature>

Internally QEMU will have its hardware register number that represents
register $ft0, this could be anything, lets pick 105 at random.

GDB will also have a number that represents register $ft0, this too
could be anything, lets pick 33 at random, this isn't the xml register
number you mention above, this is just GDBs internal number.

If QEMU sends this to GDB:

  <feature name="org.gnu.gdb.riscv.fpu">
    <reg name="ft0" bitsize="32" type="ieee_single" regnum="105"/>
  </feature>

Then internally GDB will call $ft0 #33, but, when it talks to QEMU it
will use #105.

If GDB changes its numbering it will continue to use #105 when talking
to QEMU.

However, what QEMU _actually_ sends is this:

  <feature name="org.gnu.gdb.riscv.fpu">
    <reg name="ft0" bitsize="32" type="ieee_single"/>
  </feature>

An exact copy of GDBs XML file.  Without being told how the remote
would like to number its registers GDB just numbers the registers in
the order that they are sent from the remote, and this establishes
fairly arbitrary numbering scheme that QEMU is forced to adopt, if GDB
ever changes the feature files and QEMU picks these changes up, then
it would have to adopt its GDB <-> QEMU mapping code too.

I'd originally worried that without a specified 'regnum' in the
transmitted xml GDB would use its _internal_ numbering when talking to
QEMU, not the sequence number as its transmitted.  By using the
sequence number we make this a QEMU problem, not a GDB problem, and
that's fine; by which I mean, when QEMU changes its xml, it has to
change its own mapping, but a change in GDB doesn't impact QEMU.

Phew! Sorry for the long email, but I do understand xml target
descriptions more now :)

> 
> > > Jim: I think your comments above indicate you want my fix merged, but
> > > if you could just confirm then I'll get it merged.
> 
> Yes, I think this is OK.  We can worry about qemu later.

OK, will merge shortly...

Thanks,
Andrew

  reply	other threads:[~2019-02-26 20:30 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-08 16:08 [RFC] " Andrew Burgess
2018-11-08 18:33 ` John Baldwin
2018-11-08 19:32   ` Palmer Dabbelt
2018-11-08 19:41     ` John Baldwin
2018-11-14 14:29   ` Andrew Burgess
2018-11-14 17:42     ` John Baldwin
2018-11-08 21:57 ` Jim Wilson
2018-11-13 15:05   ` Andrew Burgess
2018-11-13 20:08 ` Pedro Alves
2018-11-14 14:58 ` [PATCH] " Andrew Burgess
2018-11-19  3:51   ` Jim Wilson
2018-11-21 11:23     ` Andrew Burgess
2018-11-21 12:37       ` Eli Zaretskii
2018-11-21 13:19         ` Andrew Burgess
2019-02-22 17:42   ` Tom Tromey
2019-02-22 19:24     ` Jim Wilson
2019-02-23 20:51       ` Andrew Burgess
2019-02-24  6:21         ` Jim Wilson
2019-02-26  5:02           ` Joel Brobecker
2019-02-26 17:26             ` Jim Wilson
2019-02-26 18:22               ` Andrew Burgess
2019-02-26 18:40                 ` Jim Wilson
2019-02-26 19:27                   ` Jim Wilson
2019-02-26 20:30                     ` Andrew Burgess [this message]
2019-02-23 20:40     ` Andrew Burgess
2019-02-26 11:55       ` Joel Brobecker
2019-03-04 16:18       ` Tom Tromey

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=20190226203008.GI10887@embecosm.com \
    --to=andrew.burgess@embecosm.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jhb@freebsd.org \
    --cc=jimw@sifive.com \
    --cc=palmer@sifive.com \
    --cc=tom@tromey.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).