public inbox for gentoo-embedded@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-embedded] arm-xscale-linux-uclibc and soft-float
@ 2005-04-22 21:21 Tim Dodge
  2005-04-24 18:41 ` Tim Dodge
  0 siblings, 1 reply; 2+ messages in thread
From: Tim Dodge @ 2005-04-22 21:21 UTC (permalink / raw
  To: gentoo-embedded

Hi,

I'm attempting to build an arm-xscale-linux-uclibc toolchain that uses
soft-float, so that I can build a version of gentoo for my zaurus c860.

Without soft-float, everything seems to be okay - I've managed to build
a 2.6 kernel that boots into a minimal root fs.

I have managed to build a soft-float version of the toolchain, but now
nothing will link, I'm getting undefined references to the float
functions like so:

configure:1644: checking for C compiler default output
        configure:1647: arm-xscale-linux-uclibc-gcc -Os -pipe
-march=armv5te -mtune=xscale   conftest.c  >&5

/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__eqdf2'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__floatsidf'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__ltdf2'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__extendsfdf2'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__adddf3'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__fixdfsi'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__divdf3'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__muldf3'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__truncdfsf2'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__nedf2'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__gedf2'
/usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
undefined reference to `__subdf3'
collect2: ld returned 1 exit status

I'm using gcc-3.4.3.20050110-r2.ebuild and uclibc-0.9.27.ebuild.

I was under the impression that the soft-float routines had been added
to gcc since v3.4, and that libfloat is no longer required.

Any idea what I'm doing wrong?

Cheers,
Tim
-- 
gentoo-embedded@gentoo.org mailing list


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [gentoo-embedded] arm-xscale-linux-uclibc and soft-float
  2005-04-22 21:21 [gentoo-embedded] arm-xscale-linux-uclibc and soft-float Tim Dodge
@ 2005-04-24 18:41 ` Tim Dodge
  0 siblings, 0 replies; 2+ messages in thread
From: Tim Dodge @ 2005-04-24 18:41 UTC (permalink / raw
  To: gentoo-embedded

[-- Attachment #1: Type: text/plain, Size: 2848 bytes --]

Tim Dodge wrote:
> Hi,
> 
> I'm attempting to build an arm-xscale-linux-uclibc toolchain that uses
> soft-float, so that I can build a version of gentoo for my zaurus c860.
> 
> Without soft-float, everything seems to be okay - I've managed to build
> a 2.6 kernel that boots into a minimal root fs.
> 
> I have managed to build a soft-float version of the toolchain, but now
> nothing will link, I'm getting undefined references to the float
> functions like so:
> 
> configure:1644: checking for C compiler default output
>         configure:1647: arm-xscale-linux-uclibc-gcc -Os -pipe
> -march=armv5te -mtune=xscale   conftest.c  >&5
> 
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__eqdf2'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__floatsidf'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__ltdf2'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__extendsfdf2'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__adddf3'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__fixdfsi'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__divdf3'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__muldf3'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__truncdfsf2'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__nedf2'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__gedf2'
> /usr/lib/gcc/arm-xscale-linux-uclibc/3.4.3-20050110/../../../../arm-xscale-linux-uclibc/lib/libc.so:
> undefined reference to `__subdf3'
> collect2: ld returned 1 exit status
> 
> I'm using gcc-3.4.3.20050110-r2.ebuild and uclibc-0.9.27.ebuild.
> 
> I was under the impression that the soft-float routines had been added
> to gcc since v3.4, and that libfloat is no longer required.
> 
> Any idea what I'm doing wrong?
> 
> Cheers,
> Tim

I've managed to successfully build the soft-float toolchain using these
two patches from openembedded.

I needed to alter the uclibc ebuild to also unset HAS_FPU, and build gcc
using EXTRA_ECONF="--with-float=soft".

Cheers,
Tim

[-- Attachment #2: gcc-3.4.0-arm-lib1asm.patch --]
[-- Type: text/plain, Size: 1291 bytes --]

# Fixes errors like the following when building glibc (or any other executable
# or shared library) when using gcc 3.4.0 for ARM with softfloat:
#
# .../libc_pic.os(.text+0x15834): In function `__modf': undefined reference to `__subdf3'
# .../libc_pic.os(.text+0x158b8): In function `__modf': undefined reference to `__subdf3'
# .../libc_pic.os(.text+0x1590c): In function `scalbn': undefined reference to `__muldf3'
# .../libc_pic.os(.text+0x15e94): In function `__ldexpf': undefined reference to `__eqsf2'
# .../libc_pic.os(.text+0xcee4c): In function `monstartup': undefined reference to `__fixsfsi'

diff -urNd gcc-3.4.0-orig/gcc/config/arm/t-linux gcc-3.4.0/gcc/config/arm/t-linux
--- 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
 
 # MULTILIB_OPTIONS = mhard-float/msoft-float
 # MULTILIB_DIRNAMES = hard-float soft-float

[-- Attachment #3: gcc-3.4.0-arm-nolibfloat.patch --]
[-- Type: text/plain, Size: 1067 bytes --]

# Dimitry Andric <dimitry@andric.com>, 2004-05-01
#
# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed
#   anymore.  (The required functions are now in libgcc.)
# 
# Fixes errors like
# arm-softfloat-linux-gnu/3.4.0/../../../../arm-softfloat-linux-gnu/bin/ld: cannot find -lfloat
# collect2: ld returned 1 exit status
# make[2]: *** [arm-softfloat-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/iconvdata/ISO8859-1.so] Error 1
# when building glibc-2.3.3 with gcc-3.4.0 for arm-softfloat

diff -urNd gcc-3.4.0-orig/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h
--- gcc-3.4.0-orig/gcc/config/arm/linux-elf.h	2004-01-31 07:18:11.000000000 +0100
+++ gcc-3.4.0/gcc/config/arm/linux-elf.h	2004-05-01 19:19:06.935979200 +0200
@@ -55,7 +73,7 @@
    %{shared:-lc} \
    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
 
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc"
+#define LIBGCC_SPEC "-lgcc"
 
 /* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
    the GNU/Linux magical crtbegin.o file (see crtstuff.c) which


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2005-04-24 18:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-04-22 21:21 [gentoo-embedded] arm-xscale-linux-uclibc and soft-float Tim Dodge
2005-04-24 18:41 ` Tim Dodge

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox