On Wed, Sep 23, 2015 at 07:09:43PM -0400, Michael Meissner wrote: > 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.
You worked on PPC 10 years before the first Power systems were announced? Amazing foresight :-) > 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). Gabriel