patches/gcc/4.4.4/280-freebsd.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 31 23:24:40 2010 +0200 (2010-08-31)
changeset 2107 f5ab0a80e466
child 2148 ada9128c98b8
permissions -rw-r--r--
binutils/binutils: remove faulty patch

The added code should be conditinal to the target system
being !MIPS, but is based on the host system being !MIPS.

This is plain wrong, and had not been noticed until now
as I never used those binutils versions on MIPS.

See:
http://sourceware.org/ml/crossgcc/2010-08/msg00192.html

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