patches/gcc/4.4.0/280-freebsd.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed May 27 21:16:01 2009 +0000 (2009-05-27)
branchgcc-4.4
changeset 1393 b432bd628b10
permissions -rw-r--r--
/devel/gcc-4.4:
- add gcc-4.4.0 patches, vampirised from the Gentoo patchset
- gcc-4.4.0 auto-selects and uses appropriate companion linraries

-------- diffstat follows --------
/devel/gcc-4.4/scripts/build/cc/gcc.sh | 20 18 2 0 +
/devel/gcc-4.4/patches/gcc/4.4.0/280-freebsd.patch | 188 188 0 0 ++++++++++
/devel/gcc-4.4/patches/gcc/4.4.0/140-default-format-security.patch | 98 98 0 0 +++++
/devel/gcc-4.4/patches/gcc/4.4.0/290-freebsd.patch | 128 128 0 0 +++++++
/devel/gcc-4.4/patches/gcc/4.4.0/310-uclibc-conf.patch | 70 70 0 0 ++++
/devel/gcc-4.4/patches/gcc/4.4.0/240-libstdc++-pic.patch | 106 106 0 0 ++++++
/devel/gcc-4.4/patches/gcc/4.4.0/260-sh-libgcc-stacks.patch | 50 50 0 0 +++
/devel/gcc-4.4/patches/gcc/4.4.0/100-alpha-mieee-default.patch | 48 48 0 0 +++
/devel/gcc-4.4/patches/gcc/4.4.0/180-libgomp-no-werror.patch | 24 24 0 0 +
/devel/gcc-4.4/patches/gcc/4.4.0/170-sparc64-bsd.patch | 58 58 0 0 +++
/devel/gcc-4.4/patches/gcc/4.4.0/200-libiberty.h-asprintf.patch | 30 30 0 0 ++
/devel/gcc-4.4/patches/gcc/4.4.0/220-libiberty-pic.patch | 22 22 0 0 +
/devel/gcc-4.4/patches/gcc/4.4.0/110-trampolinewarn.patch | 54 54 0 0 +++
/devel/gcc-4.4/patches/gcc/4.4.0/160-netbsd-symbolic.patch | 22 22 0 0 +
/devel/gcc-4.4/patches/gcc/4.4.0/190-flatten-switch-stmt-00.patch | 48 48 0 0 +++
/devel/gcc-4.4/patches/gcc/4.4.0/150-default-fortify-source.patch | 52 52 0 0 +++
/devel/gcc-4.4/patches/gcc/4.4.0/340-libmudflap-susv3-legacy.patch | 96 96 0 0 +++++
/devel/gcc-4.4/patches/gcc/4.4.0/120-java-nomulti.patch | 92 92 0 0 +++++
/devel/gcc-4.4/patches/gcc/4.4.0/270-sh-pr24836.patch | 48 48 0 0 +++
/devel/gcc-4.4/patches/gcc/4.4.0/330-c99-snprintf.patch | 24 24 0 0 +
/devel/gcc-4.4/patches/gcc/4.4.0/230-superh-default-multilib.patch | 24 24 0 0 +
/devel/gcc-4.4/patches/gcc/4.4.0/250-ia64-noteGNUstack.patch | 158 158 0 0 +++++++++
/devel/gcc-4.4/patches/gcc/4.4.0/300-pr40105.patch | 360 360 0 0 ++++++++++++++++++++
/devel/gcc-4.4/patches/gcc/4.4.0/210-arm-unbreak-armv4t.patch | 24 24 0 0 +
/devel/gcc-4.4/patches/gcc/4.4.0/130-cross-compile.patch | 78 78 0 0 ++++
/devel/gcc-4.4/patches/gcc/4.4.0/320-missing-execinfo_h.patch | 24 24 0 0 +
/devel/gcc-4.4/config/cc/gcc.in | 1 1 0 0 +
27 files changed, 1945 insertions(+), 2 deletions(-)
     1 diff -durN gcc-4.4.0.orig/gcc/config/freebsd-spec.h gcc-4.4.0/gcc/config/freebsd-spec.h
     2 --- gcc-4.4.0.orig/gcc/config/freebsd-spec.h	2009-04-10 01:23:07.000000000 +0200
     3 +++ gcc-4.4.0/gcc/config/freebsd-spec.h	2009-05-27 21:38:45.000000000 +0200
     4 @@ -61,6 +61,8 @@
     5  	builtin_assert ("system=unix");					\
     6  	builtin_assert ("system=bsd");					\
     7  	builtin_assert ("system=FreeBSD");				\
     8 +	if(!(flag_iso && (c_dialect_cxx () ? cxx_dialect == cxx98 : !flag_isoc99)))	\
     9 +		builtin_define("_LONGLONG");				\
    10  	FBSD_TARGET_CPU_CPP_BUILTINS();					\
    11      }									\
    12    while (0)
    13 diff -durN gcc-4.4.0.orig/gcc/config/t-freebsd-eh gcc-4.4.0/gcc/config/t-freebsd-eh
    14 --- gcc-4.4.0.orig/gcc/config/t-freebsd-eh	1970-01-01 01:00:00.000000000 +0100
    15 +++ gcc-4.4.0/gcc/config/t-freebsd-eh	2009-05-27 21:38:45.000000000 +0200
    16 @@ -0,0 +1,4 @@
    17 +# Use unwind-dw2-fde-glibc
    18 +LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \
    19 +  $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c
    20 +LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c
    21 diff -durN gcc-4.4.0.orig/gcc/config.gcc gcc-4.4.0/gcc/config.gcc
    22 --- gcc-4.4.0.orig/gcc/config.gcc	2009-05-27 21:38:34.000000000 +0200
    23 +++ gcc-4.4.0/gcc/config.gcc	2009-05-27 21:38:45.000000000 +0200
    24 @@ -456,7 +456,7 @@
    25    # pleases around the provided core setting.
    26    gas=yes
    27    gnu_ld=yes
    28 -  extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
    29 +  extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
    30    fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
    31    tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
    32    tmake_file="t-slibgcc-elf-ver t-freebsd"
    33 @@ -1042,6 +1042,10 @@
    34  	;;
    35  i[34567]86-*-freebsd*)
    36  	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
    37 +	fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
    38 +	if test ${fbsd_major} -ge 7; then
    39 +		tmake_file="${tmake_file} t-freebsd-eh"
    40 +	fi
    41  	;;
    42  x86_64-*-freebsd*)
    43  	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"
    44 diff -durN gcc-4.4.0.orig/gcc/crtstuff.c gcc-4.4.0/gcc/crtstuff.c
    45 --- gcc-4.4.0.orig/gcc/crtstuff.c	2009-04-10 01:23:07.000000000 +0200
    46 +++ gcc-4.4.0/gcc/crtstuff.c	2009-05-27 21:38:45.000000000 +0200
    47 @@ -85,13 +85,15 @@
    48      && !defined(OBJECT_FORMAT_FLAT) \
    49      && defined(HAVE_LD_EH_FRAME_HDR) \
    50      && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
    51 -    && defined(__GLIBC__) && __GLIBC__ >= 2
    52 +    && ((defined(__GLIBC__) && __GLIBC__ >= 2) \
    53 +    || (defined(__FreeBSD_version) && __FreeBSD_version >= 700022))
    54  #include <link.h>
    55  /* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h.
    56     But it doesn't use PT_GNU_EH_FRAME ELF segment currently.  */
    57  # if !defined(__UCLIBC__) \
    58 -     && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
    59 -     || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
    60 +     || (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
    61 +     || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) \
    62 +     || (__FreeBSD_version >= 700022)
    63  #  define USE_PT_GNU_EH_FRAME
    64  # endif
    65  #endif
    66 diff -durN gcc-4.4.0.orig/gcc/unwind-dw2-fde-glibc.c gcc-4.4.0/gcc/unwind-dw2-fde-glibc.c
    67 --- gcc-4.4.0.orig/gcc/unwind-dw2-fde-glibc.c	2009-04-10 01:23:07.000000000 +0200
    68 +++ gcc-4.4.0/gcc/unwind-dw2-fde-glibc.c	2009-05-27 21:38:45.000000000 +0200
    69 @@ -46,8 +46,9 @@
    70  #include "gthr.h"
    71  
    72  #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
    73 -    && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
    74 -	|| (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
    75 +    && ((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
    76 +	|| (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) \
    77 +    || (__FreeBSD_version >= 700022 ))
    78  
    79  #ifndef __RELOC_POINTER
    80  # define __RELOC_POINTER(ptr, base) ((ptr) + (base))
    81 @@ -63,6 +64,13 @@
    82  #define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
    83  #endif
    84  
    85 +/* Support FreeBSD */
    86 +#ifndef ElfW
    87 +# ifdef __ElfN
    88 +#  define ElfW __ElfN
    89 +# endif
    90 +#endif
    91 +
    92  struct unw_eh_callback_data
    93  {
    94    _Unwind_Ptr pc;