diff options
author | Mike Frysinger <vapier@gentoo.org> | 2008-12-07 20:16:29 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2008-12-07 20:16:29 +0000 |
commit | 4dfb28a255b1cc979e72b8ca2c8a9386ed1bd3f9 (patch) | |
tree | 1f60ca7cacc350156a43b41874125ada0a22a466 /4.3.2 | |
parent | add sparc biarch support #214765 (diff) | |
download | gcc-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.patch | 92 | ||||
-rw-r--r-- | 4.3.2/gentoo/91_all_gcc-freebsd.patch | 66 | ||||
-rw-r--r-- | 4.3.2/gentoo/README.history | 2 |
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 |