This is the mail archive of the
mailing list for the GCC project.
Re: ppc eabi float arguments
- From: Bernhard Schommer <bernhardschommer at gmail dot com>
- To: David Edelsohn <dje dot gcc at gmail dot com>, Peter Bergner <bergner at vnet dot ibm dot com>, Michael Meissner <meissner at linux dot vnet dot ibm dot com>
- Cc: GCC Development <gcc at gcc dot gnu dot org>
- Date: Tue, 22 Sep 2015 20:12:40 +0200
- Subject: Re: ppc eabi float arguments
- Authentication-results: sourceware.org; auth=none
- References: <CAG8G+nuVbXWb=meQ5dEWXqkSwPM-Jk-8S=xQYd-==x6QJRBneQ at mail dot gmail dot com> <CAGWvnyk2SfJD5k6iAwYeeogyT_4aYC1SV+2tYrKGYMZKVnrYgA at mail dot gmail dot com>
Am 22.09.2015 um 19:43 schrieb David Edelsohn:
On Tue, Sep 22, 2015 at 1:39 PM, Bernhard Schommer
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?
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.
I'm referencing to the PPC SVR 4 Abi document,