This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [rfc] For mips, sign-extended ecoff offsets


(I've been away for a week, sorry)

Ian Lance Taylor wrote:
> 
>    >  But the real fix is to use a
>    > 64-bit MIPS target.
> 
>    Kind of :-)  GDB can now be built to support (embedded only mind) the
>    debugging of a fairly arbitrary MIPS ABI on 64 bit MIPS targets.  For
>    instance, a single GDB executable can debug both ``gcc -mips2'' and
>    ``gcc ...'' executables running on a 64 bit vr5000.  It might even
>    eventually support that behavour under IRIX :-)
> 
>    Implementing this cleanly relies 32 bit MIPS addresses always being
>    correctly sign extended.  At present they are not and things are
>    suffering for it :-)
> 
> I don't understand that.  When gdb is debugging a 32 bit target, such
> as gcc -mips2, it should handle all target addresses as 32 bit values.
> Anything else would be a host/target confusion.  Sign extension or
> lack thereof should be irrelevant.

GDB has two things to contend with:

	o	the program - gcc -mips2 (32 bit) (ABI)

	o	the physical target - 32 or 64 bit (ISA)

When debugging a 32 bit program on what is a 64 bit physical target, GDB
could communicate using either 32 or 64 bit values/addresses.  GDB
started out by trying to follow the ABI and talk 32bit to 64 bit
physical targets.

It turns out this was a bad idea.  Instead, GDB should always talk
64bits to 64 bit physical targets.  This simplifies both the embedded
stub and GDBs internals.  In the case of GDB, the simplification comes
from replacing scrambled code trying to directly convert
symbolic-address <-> target-address with two clearly separate
translations - symbol<->canonical and cannonical<->target address.

> The only issue here is that, for historical reasons, some 64 bit
> targets use a 32 bit object file format.  If each 64 bit target used a
> 64 bit object file format, all would be well.

Yes, for the MIPS that is how things started.

Since then, however, things have evolved and now people are trying to do
things like build single GDB binaries that can debug (on IRIX) any of
n32, o32 and o64.

	enjoy,
		Andrew

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]