aboutsummaryrefslogtreecommitdiff
path: root/4.3.2
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2008-12-07 20:16:29 +0000
committerMike Frysinger <vapier@gentoo.org>2008-12-07 20:16:29 +0000
commit4dfb28a255b1cc979e72b8ca2c8a9386ed1bd3f9 (patch)
tree1f60ca7cacc350156a43b41874125ada0a22a466 /4.3.2
parentadd sparc biarch support #214765 (diff)
downloadgcc-patches-4dfb28a255b1cc979e72b8ca2c8a9386ed1bd3f9.tar.gz
gcc-patches-4dfb28a255b1cc979e72b8ca2c8a9386ed1bd3f9.tar.bz2
gcc-patches-4dfb28a255b1cc979e72b8ca2c8a9386ed1bd3f9.zip
merge freebsd fixups #192403
Diffstat (limited to '4.3.2')
-rw-r--r--4.3.2/gentoo/90_all_gcc-freebsd.patch92
-rw-r--r--4.3.2/gentoo/91_all_gcc-freebsd.patch66
-rw-r--r--4.3.2/gentoo/README.history2
3 files changed, 160 insertions, 0 deletions
diff --git a/4.3.2/gentoo/90_all_gcc-freebsd.patch b/4.3.2/gentoo/90_all_gcc-freebsd.patch
new file mode 100644
index 0000000..309b2e0
--- /dev/null
+++ b/4.3.2/gentoo/90_all_gcc-freebsd.patch
@@ -0,0 +1,92 @@
+http://bugs.gentoo.org/192403
+http://gcc.gnu.org/PR33417
+
+--- gcc-4.3.1/gcc/config/freebsd-spec.h
++++ gcc-4.3.1/gcc/config/freebsd-spec.h
+@@ -56,6 +56,8 @@
+ builtin_assert ("system=unix"); \
+ builtin_assert ("system=bsd"); \
+ builtin_assert ("system=FreeBSD"); \
++ if(!(flag_iso && (c_dialect_cxx () ? cxx_dialect == cxx98 : !flag_isoc99))) \
++ builtin_define("_LONGLONG"); \
+ FBSD_TARGET_CPU_CPP_BUILTINS(); \
+ } \
+ while (0)
+--- gcc-4.3.1/gcc/config/t-freebsd-eh
++++ gcc-4.3.1/gcc/config/t-freebsd-eh
+@@ -0,0 +1,4 @@
++# Use unwind-dw2-fde-glibc
++LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \
++ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c
++LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c
+--- gcc-4.3.1/gcc/config.gcc
++++ gcc-4.3.1/gcc/config.gcc
+@@ -462,7 +462,7 @@
+ # pleases around the provided core setting.
+ gas=yes
+ gnu_ld=yes
+- extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
+ fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
+ tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
+ tmake_file="t-slibgcc-elf-ver t-freebsd"
+@@ -1116,6 +1116,10 @@
+ ;;
+ i[34567]86-*-freebsd*)
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
++ fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
++ if test ${fbsd_major} -ge 7; then
++ tmake_file="${tmake_file} t-freebsd-eh"
++ fi
+ ;;
+ x86_64-*-freebsd*)
+ 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"
+--- gcc-4.3.1/gcc/crtstuff.c
++++ gcc-4.3.1/gcc/crtstuff.c
+@@ -90,13 +90,15 @@
+ && !defined(OBJECT_FORMAT_FLAT) \
+ && defined(HAVE_LD_EH_FRAME_HDR) \
+ && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
+- && defined(__GLIBC__) && __GLIBC__ >= 2
++ && ((defined(__GLIBC__) && __GLIBC__ >= 2) \
++ || (defined(__FreeBSD_version) && __FreeBSD_version >= 700022))
+ #include <link.h>
+ /* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h.
+ But it doesn't use PT_GNU_EH_FRAME ELF segment currently. */
+ # if !defined(__UCLIBC__) \
+- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
+- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
++ || (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
++ || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) \
++ || (__FreeBSD_version >= 700022)
+ # define USE_PT_GNU_EH_FRAME
+ # endif
+ #endif
+--- gcc-4.3.1/gcc/unwind-dw2-fde-glibc.c
++++ gcc-4.3.1/gcc/unwind-dw2-fde-glibc.c
+@@ -49,8 +49,9 @@
+ #include "gthr.h"
+
+ #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
+- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
+- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
++ && ((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
++ || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) \
++ || (__FreeBSD_version >= 700022 ))
+
+ #ifndef __RELOC_POINTER
+ # define __RELOC_POINTER(ptr, base) ((ptr) + (base))
+@@ -66,6 +67,13 @@
+ #define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
+ #endif
+
++/* Support FreeBSD */
++#ifndef ElfW
++# ifdef __ElfN
++# define ElfW __ElfN
++# endif
++#endif
++
+ struct unw_eh_callback_data
+ {
+ _Unwind_Ptr pc;
diff --git a/4.3.2/gentoo/91_all_gcc-freebsd.patch b/4.3.2/gentoo/91_all_gcc-freebsd.patch
new file mode 100644
index 0000000..4531bd5
--- /dev/null
+++ b/4.3.2/gentoo/91_all_gcc-freebsd.patch
@@ -0,0 +1,66 @@
+http://bugs.gentoo.org/192403
+http://gcc.gnu.org/PR33417
+
+--- gcc-4.3.1/gcc/config/freebsd-spec.h
++++ gcc-4.3.1/gcc/config/freebsd-spec.h
+@@ -79,9 +81,10 @@
+ #define FBSD_STARTFILE_SPEC \
+ "%{!shared: \
+ %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
+- %{!p:%{profile:gcrt1.o%s} \
+- %{!profile:crt1.o%s}}}} \
+- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
++ %{!p:%{profile:gcrt1.o%s} \
++ %{!profile:crt1.o%s}}}} \
++ crti.o%s \
++ %{static:crtbeginT.o%s;shared:crtbeginS.o%s;:crtbegin.o%s}"
+
+ /* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on
+ the magical crtend.o file (see crtstuff.c) which provides part of
+@@ -119,7 +122,8 @@
+ %{pg: -lc_p} \
+ }"
+ #else
+-#if FBSD_MAJOR < 5
++#include <sys/param.h>
++#if __FreeBSD_version < 500016
+ #define FBSD_LIB_SPEC " \
+ %{!shared: \
+ %{!pg: \
+@@ -129,17 +133,34 @@
+ %{!pthread:-lc_p} \
+ %{pthread:-lc_r_p}} \
+ }"
+-#else
++#elif __FreeBSD_version < 700022
+ #define FBSD_LIB_SPEC " \
+ %{!shared: \
+ %{!pg: %{pthread:-lpthread} -lc} \
+ %{pg: %{pthread:-lpthread_p} -lc_p} \
+ }"
++#else
++#define FBSD_LIB_SPEC " \
++ %{!shared: \
++ %{!pg: %{pthread:-lpthread} -lc} \
++ %{pg: %{pthread:-lpthread_p} -lc_p}} \
++ %{shared: \
++ %{pthread:-lpthread} -lc} \
++ "
+ #endif
+ #endif
+
+-#if FBSD_MAJOR < 6
++#if FBSD_MAJOR < 5
+ #define FBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.1"
+ #else
+ #define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
+ #endif
++
++#if defined(HAVE_LD_EH_FRAME_HDR)
++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#endif
++
++/* Use --as-needed -lgcc_s for eh support. */
++#ifdef HAVE_LD_AS_NEEDED
++#define USE_LD_AS_NEEDED 1
++#endif
diff --git a/4.3.2/gentoo/README.history b/4.3.2/gentoo/README.history
index 5c24b92..a83a3bc 100644
--- a/4.3.2/gentoo/README.history
+++ b/4.3.2/gentoo/README.history
@@ -3,6 +3,8 @@
+ 45_all_arm-pic-ssp-segv-pr35965.patch
+ 67_all_gcc43-PR37408.patch
+ 80_all_sparc-biarch.patch
+ + 90_all_gcc-freebsd.patch
+ + 91_all_gcc-freebsd.patch
1.2 22.11.2008
+ 77_all_mips-r10k-support-for-atomic-memory-fixes.patch