patches/gcc/4.2.0/250-softfloat-fix.patch
author "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
Mon Apr 16 15:25:36 2012 +0200 (2012-04-16)
changeset 2941 13e40098fffc
parent 262 30b65aecf7fb
permissions -rw-r--r--
cc/gcc: update Linaro GCC revisions to 2012.04

Update Linaro GCC with the latest available revisions.

The 4.7 revision is also released, but the infrastructure is not yet ready for
it in CT-NG.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
yann@136
     1
This patch (C) 2007 Yann E. MORIN
yann@136
     2
Licensed under GPL v2.
yann@136
     3
yann@262
     4
First hunk of this patch solves compiling uClibc:
yann@136
     5
yann@136
     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@136
     7
  LD libuClibc-0.9.29.so
yann@136
     8
libc/libc_so.a(difftime.os): In function `difftime':
yann@136
     9
difftime.c:(.text+0x8): undefined reference to `__floatsidf'
yann@136
    10
difftime.c:(.text+0x2c): undefined reference to `__subdf3'
yann@136
    11
libc/libc_so.a(_fpmaxtostr.os): In function `_fpmaxtostr':
yann@136
    12
_fpmaxtostr.c:(.text+0xd4): undefined reference to `__nedf2'
yann@136
    13
_fpmaxtostr.c:(.text+0xf8): undefined reference to `__eqdf2'
yann@136
    14
_fpmaxtostr.c:(.text+0x114): undefined reference to `__divdf3'
yann@136
    15
_fpmaxtostr.c:(.text+0x120): undefined reference to `__ltdf2'
yann@136
    16
_fpmaxtostr.c:(.text+0x1c4): undefined reference to `__muldf3'
yann@136
    17
_fpmaxtostr.c:(.text+0x388): undefined reference to `__gedf2'
yann@136
    18
_fpmaxtostr.c:(.text+0x430): undefined reference to `__adddf3'
yann@136
    19
libc/libc_so.a(__psfs_do_numeric.os): In function `__psfs_do_numeric':
yann@136
    20
__psfs_do_numeric.c:(.text+0x520): undefined reference to `__truncdfsf2'
yann@136
    21
libc/libc_so.a(strtof.os): In function `strtof':
yann@136
    22
strtof.c:(.text+0x1c): undefined reference to `__extendsfdf2'
yann@136
    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@136
    24
In function `__fixunsdfsi':
yann@136
    25
libgcc2.c:(.text+0x34): undefined reference to `__fixdfsi'
yann@136
    26
make[2]: *** [lib/libc.so] Error 1
yann@136
    27
make[1]: *** [lib/libc.so.0] Error 2
yann@136
    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@136
    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@136
    30
Error 2
yann@136
    31
yann@136
    32
The second hunk fixes building final gcc because soft-float implies using -lfloat (which we don't have).
yann@136
    33
yann@136
    34
yann@262
    35
diff -dur gcc-4.2.0.orig/gcc/config.gcc gcc-4.2.0/gcc/config.gcc
yann@262
    36
--- gcc-4.2.0.orig/gcc/config.gcc	2007-07-15 11:24:18.000000000 +0200
yann@262
    37
+++ gcc-4.2.0/gcc/config.gcc	2007-07-15 11:26:02.000000000 +0200
yann@262
    38
@@ -721,7 +721,7 @@
yann@136
    39
 	    default_use_cxa_atexit=yes
yann@136
    40
 	    ;;
yann@136
    41
 	*)
yann@136
    42
-	    tmake_file="$tmake_file arm/t-linux"
yann@136
    43
+	    tmake_file="$tmake_file arm/t-linux arm/t-arm-elf"
yann@136
    44
 	    ;;
yann@136
    45
 	esac
yann@136
    46
 	tm_file="$tm_file arm/aout.h arm/arm.h"
yann@262
    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@262
    48
--- gcc-4.2.0.orig/gcc/config/arm/linux-elf.h	2007-07-15 11:24:18.000000000 +0200
yann@262
    49
+++ gcc-4.2.0/gcc/config/arm/linux-elf.h	2007-07-15 11:26:02.000000000 +0200
yann@136
    50
@@ -63,7 +63,7 @@
yann@136
    51
    %{shared:-lc} \
yann@136
    52
    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
yann@136
    53
 
yann@136
    54
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
yann@136
    55
+#define LIBGCC_SPEC "-lgcc"
yann@136
    56
 
yann@262
    57
 #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@262
    58