This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] mips: Fix "info registers" output
On Sun, Mar 10, 2002 at 03:45:15PM -0500, Andrew Cagney wrote:
> >That wouldn't affect builtin_type_double, though, which we define in
> >terms of the 64 bits. Are you saying that should be updated based on
> >the type of 'double' in the objfile? I don't really think so, since
> >'the type associated with the word "double"' isn't necessarily tied to
> >"what this architecture would normally call a double" and
> >builtin_type_double is the latter. MIPS would normally call a 64-bit
> >FP quantity a double, whatever GCC is up to.
>
> Now I'm confused :-). The type builtin_type_double is determined by the
> ABI, its value/behavour is influenced by TARGET_DOUBLE_BIT,
> TARGET_BYTE_ORDER and TARGET_DOUBLE_FORMAT. They are all attributes of
> the ABI and their values can be determined from the object file.
OK... but in all MIPS ABIs that I'm aware of, ever, double is 64-bit.
Still, I see that I've misunderstood the meaning of the builtin types.
> Separate to this is the real register format and that is determined by
> the ISA.
>
> Consider the PPC which has strictly 64 bit FP registers but supports the
> 32 bit ``float'' type. If you print the register it is 64 bit, if you
> print a 32 bit float stored in the register than the 64 bit value is
> first converted to 32 bit.
>
> Other examples are Arm, m68k and i386. As soon as those targets stopped
> trying to use type_double et.al. bugs mysteriously disappeared and the
> code became simpler :-) The mips hasn't yet done this.
>
> >
> >Right; the way registers are acquired is both ISA and ABI dependent. I
> >don't know that the way they are interpreted afterwards is ABI
> >dependent...
>
> Their interpretation is ISA dependant so they should be using things
> like type_ieee_double et.al.
Right now, for MIPS, builtin_type_double always means "whichever of
builtin_type_ieee_double_{big,little} is appropriate" and likewise
for builtin_type_float. (I note in passing that the type_ieee
variables are not referenced. Anywhere. Only the floatformats are.)
All I could see changed in mips-tdep.c would be to explicitly state
that, and I don't really see the point, given the MIPS FP models we
support. That's why I didn't see the need for the FIXME in question.
Perhaps I'm not understanding you...?
--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer