patches/gcc/4.4.4/280-freebsd.patch
author Remy Bohmer <linux@bohmer.net>
Thu May 27 23:18:19 2010 +0200 (2010-05-27)
changeset 2060 51e4597b07fc
child 2148 ada9128c98b8
permissions -rw-r--r--
scripts: add option to strip all toolchain executables

To reduce filesizes of the toolchain and even improve build times
of projects to be build with this toolchain it is usefull to strip
the delivered toolchain executables. Since it is not likely that we
will debug the toolchain executables itself we do not need the
debug information inside the executables itself.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
     1 diff -durN gcc-4.4.0.orig/gcc/config/freebsd-spec.h gcc-4.4.0/gcc/config/freebsd-spec.h
     2 
     3 diff -durN gcc-4.4.4.orig/gcc/config/freebsd-spec.h gcc-4.4.4/gcc/config/freebsd-spec.h
     4 --- gcc-4.4.4.orig/gcc/config/freebsd-spec.h	2009-04-10 01:23:07.000000000 +0200
     5 +++ gcc-4.4.4/gcc/config/freebsd-spec.h	2010-05-16 19:36:15.000000000 +0200
     6 @@ -61,6 +61,8 @@
     7  	builtin_assert ("system=unix");					\
     8  	builtin_assert ("system=bsd");					\
     9  	builtin_assert ("system=FreeBSD");				\
    10 +	if(!(flag_iso && (c_dialect_cxx () ? cxx_dialect == cxx98 : !flag_isoc99)))	\
    11 +		builtin_define("_LONGLONG");				\
    12  	FBSD_TARGET_CPU_CPP_BUILTINS();					\
    13      }									\
    14    while (0)
    15 diff -durN gcc-4.4.4.orig/gcc/config/t-freebsd-eh gcc-4.4.4/gcc/config/t-freebsd-eh
    16 --- gcc-4.4.4.orig/gcc/config/t-freebsd-eh	1970-01-01 01:00:00.000000000 +0100
    17 +++ gcc-4.4.4/gcc/config/t-freebsd-eh	2010-05-16 19:36:15.000000000 +0200
    18 @@ -0,0 +1,4 @@
    19 +# Use unwind-dw2-fde-glibc
    20 +LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \
    21 +  $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c
    22 +LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c
    23 diff -durN gcc-4.4.4.orig/gcc/config.gcc gcc-4.4.4/gcc/config.gcc
    24 --- gcc-4.4.4.orig/gcc/config.gcc	2010-05-16 19:13:30.000000000 +0200
    25 +++ gcc-4.4.4/gcc/config.gcc	2010-05-16 19:36:15.000000000 +0200
    26 @@ -456,7 +456,7 @@
    27    # pleases around the provided core setting.
    28    gas=yes
    29    gnu_ld=yes
    30 -  extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
    31 +  extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
    32    fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
    33    tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
    34    tmake_file="t-slibgcc-elf-ver t-freebsd"
    35 @@ -1042,6 +1042,10 @@
    36  	;;
    37  i[34567]86-*-freebsd*)
    38  	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
    39 +	fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
    40 +	if test ${fbsd_major} -ge 7; then
    41 +		tmake_file="${tmake_file} t-freebsd-eh"
    42 +	fi
    43  	;;
    44  x86_64-*-freebsd*)
    45  	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
    46 diff -durN gcc-4.4.4.orig/gcc/crtstuff.c gcc-4.4.4/gcc/crtstuff.c
    47 --- gcc-4.4.4.orig/gcc/crtstuff.c	2009-04-10 01:23:07.000000000 +0200
    48 +++ gcc-4.4.4/gcc/crtstuff.c	2010-05-16 19:36:15.000000000 +0200
    49 @@ -85,13 +85,15 @@
    50      && !defined(OBJECT_FORMAT_FLAT) \
    51      && defined(HAVE_LD_EH_FRAME_HDR) \
    52      && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
    53 -    && defined(__GLIBC__) && __GLIBC__ >= 2
    54 +    && ((defined(__GLIBC__) && __GLIBC__ >= 2) \
    55 +    || (defined(__FreeBSD_version) && __FreeBSD_version >= 700022))
    56  #include <link.h>
    57  /* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h.
    58     But it doesn't use PT_GNU_EH_FRAME ELF segment currently.  */
    59  # if !defined(__UCLIBC__) \
    60 -     && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
    61 -     || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
    62 +     || (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
    63 +     || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) \
    64 +     || (__FreeBSD_version >= 700022)
    65  #  define USE_PT_GNU_EH_FRAME
    66  # endif
    67  #endif
    68 diff -durN gcc-4.4.4.orig/gcc/unwind-dw2-fde-glibc.c gcc-4.4.4/gcc/unwind-dw2-fde-glibc.c
    69 --- gcc-4.4.4.orig/gcc/unwind-dw2-fde-glibc.c	2009-04-10 01:23:07.000000000 +0200
    70 +++ gcc-4.4.4/gcc/unwind-dw2-fde-glibc.c	2010-05-16 19:36:15.000000000 +0200
    71 @@ -46,8 +46,9 @@
    72  #include "gthr.h"
    73  
    74  #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
    75 -    && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
    76 -	|| (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
    77 +    && ((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
    78 +	|| (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) \
    79 +    || (__FreeBSD_version >= 700022 ))
    80  
    81  #ifndef __RELOC_POINTER
    82  # define __RELOC_POINTER(ptr, base) ((ptr) + (base))
    83 @@ -63,6 +64,13 @@
    84  #define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
    85  #endif
    86  
    87 +/* Support FreeBSD */
    88 +#ifndef ElfW
    89 +# ifdef __ElfN
    90 +#  define ElfW __ElfN
    91 +# endif
    92 +#endif
    93 +
    94  struct unw_eh_callback_data
    95  {
    96    _Unwind_Ptr pc;