PowerPC long double

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I've compiled Binutils 2.22 and GCC 4.7.0 to work with our PowerPC target running VxWorks. The goal has to been make use of the long double data type, which I believe can be implemented as two doubles on PowerPC. I'm able to make a successful tool chain but long double is still the same as double.

"powerpc-wrs-vxworks-g++ -v"
Target: powerpc-wrs-vxworks
Configured with: ../gcc-4.7.0/configure --prefix=/usr/local/share/powerpc-vxworks --with-headers=/home/darkknight/Code/crossCompile/WindRiver/vxworks-6.3/target/h --with-cpu=default32 --with-system-zlib --target=powerpc-wrs-vxworks --with-gnu-ld --with-gnu-as --enable-languages=c,c++ --with-long-double-128
Thread model: vxworks
gcc version 4.7.0 (GCC)

But when I test the toolchain with "powerpc-wrs-vxworks-g++ -dM -E -xc /dev/null | grep LDBL", I get:
#define __LDBL_MAX__ 1.7976931348623157e+308L
#define __LDBL_MAX_EXP__ 1024
#define __LDBL_HAS_INFINITY__ 1
#define __LDBL_MIN__ 2.2250738585072014e-308L
#define __LDBL_HAS_QUIET_NAN__ 1
#define __LDBL_HAS_DENORM__ 1
#define __LDBL_EPSILON__ 2.2204460492503131e-16L
#define __LDBL_MANT_DIG__ 53
#define __LDBL_MIN_EXP__ (-1021)
#define __LDBL_MAX_10_EXP__ 308
#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
#define __LDBL_MIN_10_EXP__ (-307)
#define __LDBL_DIG__ 15

Now I also can enable the "-mlong-double-128" flag which appears to give me quad precision, but that produces binaries with undefined symbols on my target (_q_mul, _q_add, etc..) and will not run.

"powerpc-wrs-vxworks-g++ -dM -E -xc -mlong-double-128 /dev/null | grep LDBL"
#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L
#define __LDBL_MAX_EXP__ 16384
#define __LDBL_HAS_INFINITY__ 1
#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
#define __LDBL_HAS_QUIET_NAN__ 1
#define __LDBL_HAS_DENORM__ 1
#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L
#define __LDBL_MANT_DIG__ 113
#define __LDBL_MIN_EXP__ (-16381)
#define __LDBL_MAX_10_EXP__ 4932
#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L
#define __LDBL_MIN_10_EXP__ (-4931)
#define __LDBL_DIG__ 33

I've also tried the "-mabi=ieeelongdouble" and "-mabi=ibmlongdouble" which have no effect.

Is there a way for me to enable extended precision which gives me long double as two doubles on powerpc-vxworks (which can hopefully execute)? Or if I have to use the "-mlong-double-128" flag, how can I handle the undefined symbols for the math operations?

Thanks,
Ira


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux