does soft-float work?

Stuart Adams sja at
Fri Nov 12 11:18:19 EST 1999

We saw similar problems and found that there was a compiler
bug which emitted bad code when using varargs to pass doubles.

This only occurred when using -mcpu=8xx not with -msoft-float.

For example the following code did not work with egcs-1.1 when using

  #include <stdarg.h>

  double d = 500.0;

  vtst(char *fmt, ...) {
   double z;
   va_list ap;
   z = va_arg(ap,double);
   printf("vatst=%d\n",(int)z);  // should print 500

 main() {

I have not tried gcc 2.95.X so the bug may have been fixed.

The problem with printf is that libc was probably compiled with
-mcpu=8xx with a version of gcc with this bug. (libc/printf uses varags
to pass doubles internally) We recompiled libc with -msoft-float
and now things work fine.

-- Stuart


Stuart Adams
Bright Star Engineering Inc.
19 Enfield Drive
Andover MA 01810 USA
Tel: +1-978-470-8738
Fax: +1-978-470-8878
Email: sja at

** Sent via the linuxppc-embedded mail list. See

More information about the Linuxppc-embedded mailing list