>>>>> Edmar Wienskoski writes:

Edmar> Second, is the long double ABI problem. In the past gcc always generated 
function calls to _q_* functions. (Per ABI Chapter 5)
Edmar> For this code:
Edmar> long double foo (long double x, long double y){ return x + y; }
Edmar> gcc-4.0, target powerpc-eabise and
Edmar> gcc-4.0, target powerpc-*-linux-gnuspe with -mlong-double-128 option
Edmar> both generates a call to _q_add.
Edmar> The same code with gcc-4.2, both targets generates a call to __gcc_qadd.

Edmar> If there is an intention to change the E500 ABI, then somebody has to 
step forward and actually change the document (With all the administrative 
burden that cames with it..).

        The PowerPC Linux ABI uses IBM long double format.  The PowerPC
SVR4 Supplement defines IEEE long double, but no library actually
implemented the _q_* functions or at least it was not generally available.

        If Freescale wants users who configure with powerpc-*-linux-gnuspe
to be compatible with the rest of PowerPC GNU+Linux, it needs to accept
IBM long double.  This is defined in the PowerPC Linux ABI, regardless of
SVR4.  IEEE long double also is not very efficient on PowerPC and few
people (if any) could use it because of the lack of library support.  An
unimplemented ABI is not very useful, except in theory.

David


Reply via email to