Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: Mark Kettenis <mark.kettenis@xs4all.nl>
Cc: gdb-patches@sourceware.org
Subject: Re: [rfc] Adjust address size on MIPS
Date: Fri, 03 Aug 2007 18:59:00 -0000	[thread overview]
Message-ID: <20070803185917.GA28107@caradoc.them.org> (raw)
In-Reply-To: <200708031837.l73IbSSG018774@brahms.sibelius.xs4all.nl>

On Fri, Aug 03, 2007 at 08:37:28PM +0200, Mark Kettenis wrote:
> > Date: Fri, 3 Aug 2007 13:58:22 -0400
> > From: Daniel Jacobowitz <drow@false.org>
> > 
> > I recently tried to use a 64-bit stub to debug an O32 MIPS program.
> > It fell down because GDB would send a "m83000000" packet, instead of
> > the proper "mffffffff83000000" packet (sign extended 64-bit
> > addresses).  I think that if a stub sends us some 64-bit registers in
> > the "g" packet, the polite thing to do would be to send it 64-bit
> > addresses by default.
> > 
> > Does this sound wrong to anyone? 
> 
> This feels like a bad hack to me.  If it is sending 64-bit addresses
> should PROPERTY_GP64 be set in the first place?

Isn't that exactly when it should be set?

Some context - I'm not sure how much of this you're already familiar
with, probably quite a bit.

The remote stub is controlling some program (about which it may know
very little) and has some register/address size (which may be
independent of the program).  This comes about because you can run an
o32 program unmodified in a 64-bit environment.

What's happening to me right now is that the remote stub is 64-bit,
but the program is 32-bit.  GDB sees that registers are 64-bit and
sets the gdbarch appropriately.  But since the program is o32, GDB
knows that pointers are 32-bit, and then uses that as the address
size.  So we set a breakpoint at "0x83000000" based on the address in
the symbol file.

If we were a well-behaved MIPS o32 program using a store instruction,
this would be sign extended behind the scenes and everything would be
happy.  But in the world of the 64-bit stub, you might have 4G RAM at
0 and a different 4G RAM at 0xffffffff00000000.  The stub doesn't know
which one of those we mean, so it takes us at our word and tries
0x83000000.  Which, if you have less than 3GB of RAM, is probably not
mapped as a 64-bit address.

-- 
Daniel Jacobowitz
CodeSourcery


  reply	other threads:[~2007-08-03 18:59 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-03 17:58 Daniel Jacobowitz
2007-08-03 18:38 ` Mark Kettenis
2007-08-03 18:59   ` Daniel Jacobowitz [this message]
2007-08-03 19:28     ` Mark Kettenis
2007-08-03 19:36       ` Daniel Jacobowitz

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=20070803185917.GA28107@caradoc.them.org \
    --to=drow@false.org \
    --cc=gdb-patches@sourceware.org \
    --cc=mark.kettenis@xs4all.nl \
    /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