This is the mail archive of the crossgcc@cygnus.com mailing list for the crossgcc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi all, Some time in July I wrote to this list about problems with newlib-1.8.1 and powerpc-eabi target... I got an answer from Ranjith <ranjith@cygnus.com> saying: > I compiled your test case and used our simulator to verify the output. > My results are all correct (the same as your newlib-1.8.0 output). Unfortunately Ranjith didn't mention the host used... Sparc Solaris2? Now I decided to upgrade a couple target compilers, especially the 'v850-elf32'-one that hasn't worked quite well, with egcs-1.1a and newlib-1.8.1 and got quite the same kind of problems with them : My little test program : #include <stdio.h> #include <float.h> int main() { double d = FLT_MIN; printf ("%.17e\n", d / 2); printf("g-style big:\t\"%.60g\"\n", 1e20); printf ("%15.5e\n", 4.9406564584124654e-324); return 0; } When using newlib-1.8.0 all tools give the same correct output: 5.87747175411143754e-39 g-style big: "100000000000000000000" 4.94066e-324 But when using newlib-1.8.1, all kind of bullshit is got instead: With 'gcc-ppc-eabi' : 0.00000000000000000e-40 g-style big: "147452918349690830848" 0.00000e+2147483646 With 'gcc-mips-ecoff' : ;.75090776864575142e-39 g-style big: "147523287093870182400" program stopped with signal 7. With 'gcc-v850-elf32' : ;.75108713484905318e-39 g-style big: "147525572073966534656" 0.00000e+2147483646 All the runs were done using the simulators for the targets, included in gdb-4.17 or gdb-4.17.1. The host where the compilers & libs were made was RH4.0 / Linux-2.0.32 / egcs-1.0.2. The cross-compiler versions were egcs-1.0.3a (ppc and mips) and egcs-1.1a (v850-elf32). Earlier I checked all my ppc-eabi target simulators under Linux, Win32 and DJGPP/go32 hosts and all these (x86-hosts!) gave the same result. So my conclusion is that the problem lies with newlib-1.8.1 or the 'x86' as the host for simulators... BTW, for those wondering how I could use newlib-1.8.0 with the 'v850' when this target wasn't supported with it: The newlib-1.8.0 for 'v850-elf32' was got by copying the v850-specific dirs: 'newlib/libc/machine/v850' and 'newlib/libc/sys/sysnecv850' to newlib-1.8.0 sources, adding the configure info from newlib-1.8.1 for v850 into 'newlib/configure.in', configuring for 'v850-elf32' and doing the build ... Just a piece of cake because of the very good backwards compatability... Now the 'v850-elf32' target tools seem to work a lot better... Has anyone got something similar with other hosts and targets? Any fixes available? (Ok, newlib-1.8.0 is good enough for me, just being worried about newlib-1.8.1 and the 'x86' as the host for simulators...) Any help will be appreciated... Regards, Kai PS. What the hell is that __attribute__((__sda__)) in <sys/config.h> : #ifdef __v850 #define __IEEE_LITTLE_ENDIAN #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__)) #endif (perhaps this was aimed to be '__attribute__ ((__section__ (".sdata")))', to which I changed it...) and what are the 'v850-elf32-gcc' options : -msmall-sld -mno-app-regs (the 'sparc' targets know the '-mapp-regs'/'-mno-app-regs', I just disabled them with an inserted '#') which 'newlib/configure.in' tries to use for the 'v850-elf32' target compiler?