patches/gcc/4.4.6/290-freebsd.patch
author Michael Hope <michael.hope@linaro.org>
Wed Oct 19 15:27:32 2011 +1300 (2011-10-19)
changeset 2739 f320e22f2cba
parent 2149 98b7806295cc
permissions -rw-r--r--
arch: add softfp support

Some architectures support a mixed hard/soft floating point, where
the compiler emits hardware floating point instructions, but passes
the operands in core (aka integer) registers.

For example, ARM supports this mode (to come in the next changeset).

Add support for softfp cross compilers to the GCC and GLIBC
configuration. Needed for Ubuntu and other distros that are softfp.

Signed-off-by: Michael Hope <michael.hope@linaro.org>
[yann.morin.1998@anciens.enib.fr: split the original patch]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 diff -durN gcc-4.4.5.orig/gcc/config/freebsd-spec.h gcc-4.4.5/gcc/config/freebsd-spec.h
     2 --- gcc-4.4.5.orig/gcc/config/freebsd-spec.h	2010-10-09 23:09:53.000000000 +0200
     3 +++ gcc-4.4.5/gcc/config/freebsd-spec.h	2010-10-09 23:10:02.000000000 +0200
     4 @@ -86,9 +86,10 @@
     5  #define FBSD_STARTFILE_SPEC \
     6    "%{!shared: \
     7       %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
     8 -		       %{!p:%{profile:gcrt1.o%s} \
     9 -			 %{!profile:crt1.o%s}}}} \
    10 -   crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
    11 +	%{!p:%{profile:gcrt1.o%s} \
    12 +	 %{!profile:crt1.o%s}}}} \
    13 +   crti.o%s \
    14 +   %{static:crtbeginT.o%s;shared:crtbeginS.o%s;:crtbegin.o%s}"
    15  
    16  /* Provide a ENDFILE_SPEC appropriate for FreeBSD.  Here we tack on
    17     the magical crtend.o file (see crtstuff.c) which provides part of 
    18 @@ -126,7 +127,8 @@
    19      %{pg:  -lc_p}							\
    20    }"
    21  #else
    22 -#if FBSD_MAJOR < 5
    23 +#include <sys/param.h>
    24 +#if __FreeBSD_version < 500016
    25  #define FBSD_LIB_SPEC "							\
    26    %{!shared:								\
    27      %{!pg:								\
    28 @@ -136,17 +138,34 @@
    29        %{!pthread:-lc_p}							\
    30        %{pthread:-lc_r_p}}						\
    31    }"
    32 -#else
    33 +#elif __FreeBSD_version < 700022
    34  #define FBSD_LIB_SPEC "							\
    35    %{!shared:								\
    36      %{!pg: %{pthread:-lpthread} -lc}					\
    37      %{pg:  %{pthread:-lpthread_p} -lc_p}				\
    38    }"
    39 +#else
    40 +#define FBSD_LIB_SPEC "							\
    41 +  %{!shared:								\
    42 +    %{!pg: %{pthread:-lpthread} -lc}					\
    43 +    %{pg:  %{pthread:-lpthread_p} -lc_p}}				\
    44 +  %{shared:								\
    45 +    %{pthread:-lpthread} -lc}						\
    46 +  "
    47  #endif
    48  #endif
    49  
    50 -#if FBSD_MAJOR < 6
    51 +#if FBSD_MAJOR < 5
    52  #define FBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.1"
    53  #else
    54  #define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
    55  #endif
    56 +
    57 +#if defined(HAVE_LD_EH_FRAME_HDR)
    58 +#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
    59 +#endif
    60 +
    61 +/* Use --as-needed -lgcc_s for eh support.  */
    62 +#ifdef HAVE_LD_AS_NEEDED
    63 +#define USE_LD_AS_NEEDED 1
    64 +#endif