patches/gcc/4.4.4/280-freebsd.patch
author Arnaud Lacombe <lacombar@gmail.com>
Tue Aug 03 06:17:51 2010 +0200 (2010-08-03)
changeset 2064 f5ebe8c429dc
child 2148 ada9128c98b8
permissions -rw-r--r--
libc/uClibc: add uClibc 0.9.30.3

This version has been released a couple of month ago, but it never reached
crosstool-ng tree. This may be linked to the fact that the current 0.9.30.2,
once patched, has nothing much different from 0.9.30.3, released.

I'm not including any patch with this upgrade, on purpose.

Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
     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;