This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: gcc 4.0.x arm softfloat difficulties


Lennert Buytenhek wrote:
> Hi!
> 
> I've been trying to get a gcc 4.0.x-based arm softfloat toolchain
> working (using crosstool), with little success so far.

  Disclaimer: I have no knowledge of the situation with arm and fp, and I
never use glibc.  So please regard this as an annoying question from an
under-informed idiot:

> gcc 4.0.1) and that causes glibc to be built hardfloat since gcc 3.3
> doesn't have arm softfloat support out-of-the-box.  

  Ok, so 3.3 doesn't have softfloat support.

> So, I forward-ported patches/gcc-3.4.2/gcc-3.4.0-arm-lib1asm.patch and
> patches/gcc-3.4.2/gcc-3.4.0-arm-nolibfloat.patch, 

  Let's just take a quick look at that second patch:

--- gcc-3.4.0-orig/gcc/config/arm/t-linux	2003-09-20 23:09:07.000000000
+0200
+++ gcc-3.4.0/gcc/config/arm/t-linux	2004-05-01 20:31:59.102846400 +0200
@@ -4,7 +4,10 @@
 LIBGCC2_DEBUG_CFLAGS = -g0
 
 LIB1ASMSRC = arm/lib1funcs.asm
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
+	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
+	_fixsfsi _fixunssfsi _floatdidf _floatdisf 
 
 # MULTILIB_OPTIONS = mhard-float/msoft-float
 # MULTILIB_DIRNAMES = hard-float soft-float 

  Ok, so you added a patch that causes the libgcc soft-float functions (such
as, say, just for example, oh, I dunno, maybe take '_floatdidf' as an
example?) to be added to the libgcc build, and then you continued, and then
you found ...

> libgcc/./_floatdidf_s.o: In function `__floatdidf':
> libgcc2.c:(.text+0x0): multiple definition of `__floatdidf'
>
libgcc/./_addsubdf3_s.o:/data/buytenh/crosstool/crosstool-0.38/build/arm-softf
loat-linux-gnu/gcc-4.0.1-glibc-2.3.5/gcc-4.0.1/gcc/config/arm/ieee754-df.S:474
:
> first defined here

... that doing so causes a clash with something else also called _floatdidf,
but which lives in the very meaningfully-soundingly-named "ieee754-df.S".

> I can't really imagine that gcc 4.0.x arm softfloat doesn't work at all
> or that nobody is using it, so maybe someone here has an idea what to do
> before I proceed to plod on?

  So just out of curiosity (here's where I either say something very very
stupid or solve the problem for you), if old versions of gcc didn't have soft
float, and you've taken a new version of gcc, and tried to add soft float, and
got an error from having _two_ versions of the softfloat functions ...


 ... doesn't that mean that someone else has _already_ added soft float to
gcc, sometime between 3.3 and 4.0.1, and your patch was unneccessary?

    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....



------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]