Re: GCC 4.4 cross compiler and issue with __floatdidf

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

 



On Tue, 10 Mar 2009 23:55:02 +0200, Kai Ruottu <kai.ruottu@xxxxxxxxxxx>
wrote:
> Kai Ruottu wrote:
> 
>> Vincent R. wrote:
>>> Hi,
>>>
>>> When compiling the following code with a gcc 4.4 cross-compiler 
>>> targetting
>>> arm wince platform I get a problem with undefined reference __floatdidf
>>> :
>> 
>> This should mean a conversion routine from long int to double float
>> and this routine is normally in libgcc...  So a search with 'nm'
>> would tell if it is there or not.
> 
> A quick look in 'gcc/config/arm' told that the 'lib1funcs.asm' should
> #include the 'ieee754-*.S' which has this routine. But there are two
> conditions for the inclusion :
> 
> #ifndef __symbian__
> #ifndef __ARM_ARCH_6M__
> #include "ieee754-df.S"
> #include "ieee754-sf.S"
> #include "bpabi.S"
> #else /* __ARM_ARCH_6M__ */
> #include "bpabi-v6m.S"
> #endif /* __ARM_ARCH_6M__ */
> #endif /* !__symbian__ */
> 
> Whether the WinCE target defines something like these will be left you
> as a homework...

When using nm with gcc-4.4:

$ arm-mingw32ce-nm libgcc.a | grep float
_floatdidf.o:
_floatdisf.o:
         U __floatunsidf
         U __floatunsidf
_floatdixf.o:
_floatditf.o:
_floatundisf.o:
00000000 T __floatundisf
         U __floatunsidf
_floatundidf.o:
00000000 T __floatundidf
         U __floatunsidf
_floatundixf.o:
_floatunditf.o:
0000000c T __floatsisf
0000000c T __floatunsisf
0000000c T __floatsidf
0000000c T __floatunsidf

with an old working version (4.1.2):

0000038c T __floatdidf
00000310 T __floatsidf
00000378 T __floatundidf
000002ec T __floatunsidf
00000200 T __floatdisf
000001d0 T __floatsisf
000001f0 T __floatundisf
000001c8 T __floatunsisf
_floatdidf.o:
_floatdisf.o:
         U __floatsidf
         U __floatsidf
_floatdixf.o:
_floatditf.o:
00000000 T __floatsisf
00000000 T __floatunsisf
00000000 T __floatsidf
00000000 T __floatunsidf


and since __symbian__ nor __ARM_ARCH_6M__ are defined I suppose ieee754-*.S
are included.

>From what I see with old version __floatxxx were defined bur not with new
compiler.

Still investigating...









[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