On Tue, Sep 22, 2015 at 01:43:55PM -0400, David Edelsohn wrote:
> On Tue, Sep 22, 2015 at 1:39 PM, Bernhard Schommer
> <bernhardschom...@gmail.com> wrote:
> > Hi,
> >
> > if been working with the windriver Diab c compiler for 32bit ppc for  and
> > encountered an incompatibly with the eabi version of the gcc 4.83. When
> > calling functions with more than 8 float arguments the gcc stores the 9th
> > float argument (and so on) as a float where as the diab compiler stores the
> > argument as a double using 8 byte.
> >
> > I checked the EABI document and it seems to support the way the diab
> > compiler passes the arguments:
> >
> > "Arguments not otherwise handled above [i.e. not passed in registers]
> > are passed in the parameter words of the caller=E2=80=99s stack frame. [...=
> > ]
> > float, long long (where implemented), and double arguments are
> > considered to have 8-byte size and alignment, *with float arguments
> > converted to double representation*. "
> >
> > Does anyone know the reason why the gcc passes the argument as single float?
> 
> Hi, Bernhard
> 
> First, are you certain that you have the final version of the 32 bit
> PPC eABI? There were a few versions in circulation.
> 
> Mike may remember the history of this.

Well I worked on it around 1980 or so. I don't remember the details (nor do I
have the original manuals I was working from).  From this distance, it sure
looks like a bug, but I'm not sure whether it should be fixed or grand-fathered
in (and updating the stdargs.h support, if this is the offical calling
sequence).

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797

Reply via email to