patches/gcc/4.2.3/801-softfloat-fix.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Feb 17 22:08:06 2008 +0000 (2008-02-17)
changeset 431 8bde4c6ea47a
parent 313 patches/gcc/4.2.1/801-softfloat-fix.patch@2f223aafc7cb
permissions -rw-r--r--
Robert P. J. DAY says:

apparently, the patchset for gcc 4.2.1 applies properly to the
source for gcc 4.2.2 and gcc 4.2.3. so, if you want, you can simply
add support for those last two just by augmenting menuconfig and
adding a couple symlinks for those two directories. seems like a
cheap way to add a couple new versions.
yann@313
     1
This patch (C) 2007 Yann E. MORIN
yann@313
     2
Licensed under GPL v2.
yann@313
     3
yann@313
     4
First hunk of this patch solves compiling uClibc:
yann@313
     5
yann@313
     6
make[1]: Entering directory `/home/ymorin/x-tools/build/armeb-unknown-linux-uclibc/gcc-4.1.1-uClibc-0.9.28.1/build-libc'
yann@313
     7
  LD libuClibc-0.9.29.so
yann@313
     8
libc/libc_so.a(difftime.os): In function `difftime':
yann@313
     9
difftime.c:(.text+0x8): undefined reference to `__floatsidf'
yann@313
    10
difftime.c:(.text+0x2c): undefined reference to `__subdf3'
yann@313
    11
libc/libc_so.a(_fpmaxtostr.os): In function `_fpmaxtostr':
yann@313
    12
_fpmaxtostr.c:(.text+0xd4): undefined reference to `__nedf2'
yann@313
    13
_fpmaxtostr.c:(.text+0xf8): undefined reference to `__eqdf2'
yann@313
    14
_fpmaxtostr.c:(.text+0x114): undefined reference to `__divdf3'
yann@313
    15
_fpmaxtostr.c:(.text+0x120): undefined reference to `__ltdf2'
yann@313
    16
_fpmaxtostr.c:(.text+0x1c4): undefined reference to `__muldf3'
yann@313
    17
_fpmaxtostr.c:(.text+0x388): undefined reference to `__gedf2'
yann@313
    18
_fpmaxtostr.c:(.text+0x430): undefined reference to `__adddf3'
yann@313
    19
libc/libc_so.a(__psfs_do_numeric.os): In function `__psfs_do_numeric':
yann@313
    20
__psfs_do_numeric.c:(.text+0x520): undefined reference to `__truncdfsf2'
yann@313
    21
libc/libc_so.a(strtof.os): In function `strtof':
yann@313
    22
strtof.c:(.text+0x1c): undefined reference to `__extendsfdf2'
yann@313
    23
/home/ymorin/x-tools/build/armeb-unknown-linux-uclibc/gcc-4.1.1-uClibc-0.9.28.1/cc_core_prefix/lib/gcc/arm-linux-uclibc/4.1.1/libgcc.a(_fixunsdfsi.o):
yann@313
    24
In function `__fixunsdfsi':
yann@313
    25
libgcc2.c:(.text+0x34): undefined reference to `__fixdfsi'
yann@313
    26
make[2]: *** [lib/libc.so] Error 1
yann@313
    27
make[1]: *** [lib/libc.so.0] Error 2
yann@313
    28
make[1]: Leaving directory `/home/ymorin/x-tools/build/armeb-unknown-linux-uclibc/gcc-4.1.1-uClibc-0.9.28.1/build-libc'
yann@313
    29
make: *** [/home/ymorin/x-tools/build/armeb-unknown-linux-uclibc/gcc-4.1.1-uClibc-0.9.28.1/build-libc/lib/libc.a]
yann@313
    30
Error 2
yann@313
    31
yann@313
    32
The second hunk fixes building final gcc because soft-float implies using -lfloat (which we don't have).
yann@313
    33
yann@313
    34
yann@313
    35
diff -dur gcc-4.2.0.orig/gcc/config.gcc gcc-4.2.0/gcc/config.gcc
yann@313
    36
--- gcc-4.2.0.orig/gcc/config.gcc	2007-07-15 11:24:18.000000000 +0200
yann@313
    37
+++ gcc-4.2.0/gcc/config.gcc	2007-07-15 11:26:02.000000000 +0200
yann@313
    38
@@ -721,7 +721,7 @@
yann@313
    39
 	    default_use_cxa_atexit=yes
yann@313
    40
 	    ;;
yann@313
    41
 	*)
yann@313
    42
-	    tmake_file="$tmake_file arm/t-linux"
yann@313
    43
+	    tmake_file="$tmake_file arm/t-linux arm/t-arm-elf"
yann@313
    44
 	    ;;
yann@313
    45
 	esac
yann@313
    46
 	tm_file="$tm_file arm/aout.h arm/arm.h"
yann@313
    47
diff -dur gcc-4.2.0.orig/gcc/config/arm/linux-elf.h gcc-4.2.0/gcc/config/arm/linux-elf.h
yann@313
    48
--- gcc-4.2.0.orig/gcc/config/arm/linux-elf.h	2007-07-15 11:24:18.000000000 +0200
yann@313
    49
+++ gcc-4.2.0/gcc/config/arm/linux-elf.h	2007-07-15 11:26:02.000000000 +0200
yann@313
    50
@@ -63,7 +63,7 @@
yann@313
    51
    %{shared:-lc} \
yann@313
    52
    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
yann@313
    53
 
yann@313
    54
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
yann@313
    55
+#define LIBGCC_SPEC "-lgcc"
yann@313
    56
 
yann@313
    57
 #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@313
    58