From: Michael Tremer Date: Sun, 31 Oct 2010 11:40:17 +0000 (+0100) Subject: Revert "gcc: Update patchset and fix errors." X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc8c7db0171ae0a6b4f649b7066f987ec429a98f;p=ipfire-3.x.git Revert "gcc: Update patchset and fix errors." This reverts commit e3a40b9851a8dcea07af83289ecfdc46d89cba2a. --- diff --git a/pkgs/core/gcc/gcc.nm b/pkgs/core/gcc/gcc.nm index b1cc18acd..cedc0a796 100644 --- a/pkgs/core/gcc/gcc.nm +++ b/pkgs/core/gcc/gcc.nm @@ -26,7 +26,7 @@ include $(PKGROOT)/Include PKG_NAME = gcc PKG_VER = 4.5.1 -PKG_REL = 2 +PKG_REL = 1 PKG_MAINTAINER = Michael Tremer PKG_GROUP = Development/Compilers diff --git a/pkgs/core/gcc/patches/gcc-4.5.1-esp-20101030.patch b/pkgs/core/gcc/patches/gcc-4.5.0-piepatches-20100421.patch similarity index 67% rename from pkgs/core/gcc/patches/gcc-4.5.1-esp-20101030.patch rename to pkgs/core/gcc/patches/gcc-4.5.0-piepatches-20100421.patch index d9c0daae7..e525d5bc2 100644 --- a/pkgs/core/gcc/patches/gcc-4.5.1-esp-20101030.patch +++ b/pkgs/core/gcc/patches/gcc-4.5.0-piepatches-20100421.patch @@ -1,6 +1,6 @@ -diff -Nur gcc-4.5.1-vanilla/configure gcc-4.5.1/configure ---- gcc-4.5.1-vanilla/configure 2010-06-24 23:06:37.000000000 +0200 -+++ gcc-4.5.1/configure 2010-10-30 15:13:15.694229807 +0200 +diff -Nur gcc-4.5.0-vanilla/configure gcc-4.5.0/configure +--- gcc-4.5.0-vanilla/configure 2010-04-02 19:35:47.000000000 +0200 ++++ gcc-4.5.0/configure 2010-04-21 15:21:09.762948361 +0200 @@ -707,6 +707,7 @@ CFLAGS CC @@ -14,14 +14,14 @@ diff -Nur gcc-4.5.1-vanilla/configure gcc-4.5.1/configure --enable-gold use gold instead of ld --enable-libada build libada directory + --enable-esp -+ Enable Stack protector, Position independent executable as -+ default if we have suppot for it when compiling ++ Enable Stack protector, Position independent executable and ++ Fortify_sources as default if we have suppot for it when compiling + and link with -z relro and -z now as default. -+ Linux targets supported i*86, x86_64, powerpc, powerpc64, ia64 and arm ++ Linux targets supported i*86, x86_64, powerpc*, ia64, arm* and mips --enable-libssp build libssp directory --enable-build-with-cxx build with C++ compiler instead of C compiler --disable-ppl-version-check disable check for PPL version -@@ -3164,6 +3170,25 @@ +@@ -3164,6 +3170,24 @@ noconfigdirs="$noconfigdirs gnattools" fi @@ -31,7 +31,7 @@ diff -Nur gcc-4.5.1-vanilla/configure gcc-4.5.1/configure + enableval="$enable_esp" + + case $target in -+ i?86*-*-linux* | x86_64*-*-linux* | powerpc-*-linux* | powerpc64-*-linux* | arm*-*-linux* | ia64-*-linux*) ++ i?86*-*-linux* | x86_64*-*-linux* | powerpc-*-linux* | powerpc64-*-linux* | arm*-*-linux* | ia64-*-linux* | mips-*-linux*) + enable_esp=yes + ;; + *) @@ -42,12 +42,11 @@ diff -Nur gcc-4.5.1-vanilla/configure gcc-4.5.1/configure + esac + +fi; -+ + # Check whether --enable-libssp was given. if test "${enable_libssp+set}" = set; then : enableval=$enable_libssp; ENABLE_LIBSSP=$enableval -@@ -14354,6 +14379,9 @@ +@@ -14290,6 +14314,9 @@ *) stage1_cflags="-g -J" ;; esac ;; esac @@ -57,9 +56,33 @@ diff -Nur gcc-4.5.1-vanilla/configure gcc-4.5.1/configure # This is aimed to mimic bootstrap with a non-GCC compiler to catch problems. if test "$GCC" = yes -a "$ENABLE_BUILD_WITH_CXX" != yes; then -diff -Nur gcc-4.5.1-vanilla/gcc/config/linux.h gcc-4.5.1/gcc/config/linux.h ---- gcc-4.5.1-vanilla/gcc/config/linux.h 2009-04-09 17:00:19.000000000 +0200 -+++ gcc-4.5.1/gcc/config/linux.h 2010-10-30 15:13:15.845989169 +0200 +diff -Nur gcc-4.5.0-vanilla/gcc/config/i386/linux64.h gcc-4.5.0/gcc/config/i386/linux64.h +--- gcc-4.5.0-vanilla/gcc/config/i386/linux64.h 2010-03-24 21:44:48.000000000 +0100 ++++ gcc-4.5.0/gcc/config/i386/linux64.h 2010-04-21 15:21:16.730815972 +0200 +@@ -115,7 +115,7 @@ + /* This macro may be overridden in i386/k*bsd-gnu.h. */ + #define REG_NAME(reg) reg + +-#ifdef TARGET_LIBC_PROVIDES_SSP ++#if defined TARGET_LIBC_PROVIDES_SSP && !defined __UCLIBC__ + /* i386 glibc provides __stack_chk_guard in %gs:0x14, + x86_64 glibc provides it in %fs:0x28. */ + #define TARGET_THREAD_SSP_OFFSET (TARGET_64BIT ? 0x28 : 0x14) +diff -Nur gcc-4.5.0-vanilla/gcc/config/i386/linux.h gcc-4.5.0/gcc/config/i386/linux.h +--- gcc-4.5.0-vanilla/gcc/config/i386/linux.h 2010-03-24 21:44:48.000000000 +0100 ++++ gcc-4.5.0/gcc/config/i386/linux.h 2010-04-21 15:21:16.721813554 +0200 +@@ -212,7 +212,7 @@ + /* This macro may be overridden in i386/k*bsd-gnu.h. */ + #define REG_NAME(reg) reg + +-#ifdef TARGET_LIBC_PROVIDES_SSP ++#if defined TARGET_LIBC_PROVIDES_SSP && !defined __UCLIBC__ + /* i386 glibc provides __stack_chk_guard in %gs:0x14. */ + #define TARGET_THREAD_SSP_OFFSET 0x14 + #endif +diff -Nur gcc-4.5.0-vanilla/gcc/config/linux.h gcc-4.5.0/gcc/config/linux.h +--- gcc-4.5.0-vanilla/gcc/config/linux.h 2009-04-09 17:00:19.000000000 +0200 ++++ gcc-4.5.0/gcc/config/linux.h 2010-04-21 15:21:16.667815357 +0200 @@ -43,7 +43,11 @@ object constructed before entering `main'. */ @@ -73,9 +96,9 @@ diff -Nur gcc-4.5.1-vanilla/gcc/config/linux.h gcc-4.5.1/gcc/config/linux.h #define STARTFILE_SPEC \ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" -diff -Nur gcc-4.5.1-vanilla/gcc/config/rs6000/linux64.h gcc-4.5.1/gcc/config/rs6000/linux64.h ---- gcc-4.5.1-vanilla/gcc/config/rs6000/linux64.h 2010-03-17 05:44:37.000000000 +0100 -+++ gcc-4.5.1/gcc/config/rs6000/linux64.h 2010-10-30 15:13:15.843989710 +0200 +diff -Nur gcc-4.5.0-vanilla/gcc/config/rs6000/linux64.h gcc-4.5.0/gcc/config/rs6000/linux64.h +--- gcc-4.5.0-vanilla/gcc/config/rs6000/linux64.h 2010-03-17 05:44:37.000000000 +0100 ++++ gcc-4.5.0/gcc/config/rs6000/linux64.h 2010-04-21 15:21:16.732816308 +0200 @@ -162,7 +162,7 @@ #endif @@ -85,26 +108,83 @@ diff -Nur gcc-4.5.1-vanilla/gcc/config/rs6000/linux64.h gcc-4.5.1/gcc/config/rs6 %{memb} %{!memb: %{msdata=eabi: -memb}} \ %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ %{mcall-freebsd: -mbig} \ -diff -Nur gcc-4.5.1-vanilla/gcc/config/rs6000/sysv4.h gcc-4.5.1/gcc/config/rs6000/sysv4.h ---- gcc-4.5.1-vanilla/gcc/config/rs6000/sysv4.h 2009-11-25 21:23:20.000000000 +0100 -+++ gcc-4.5.1/gcc/config/rs6000/sysv4.h 2010-10-30 15:13:15.846988480 +0200 +@@ -525,7 +525,7 @@ + + #define MD_UNWIND_SUPPORT "config/rs6000/linux-unwind.h" + +-#ifdef TARGET_LIBC_PROVIDES_SSP ++#if defined TARGET_LIBC_PROVIDES_SSP && !defined __UCLIBC__ + /* ppc32 glibc provides __stack_chk_guard in -0x7008(2), + ppc64 glibc provides it at -0x7010(13). */ + #define TARGET_THREAD_SSP_OFFSET (TARGET_64BIT ? -0x7010 : -0x7008) +diff -Nur gcc-4.5.0-vanilla/gcc/config/rs6000/linux.h gcc-4.5.0/gcc/config/rs6000/linux.h +--- gcc-4.5.0-vanilla/gcc/config/rs6000/linux.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5.0/gcc/config/rs6000/linux.h 2010-04-21 15:21:16.731819651 +0200 +@@ -117,7 +117,7 @@ + + #define MD_UNWIND_SUPPORT "config/rs6000/linux-unwind.h" + +-#ifdef TARGET_LIBC_PROVIDES_SSP ++#if defined TARGET_LIBC_PROVIDES_SSP && !defined __UCLIBC__ + /* ppc32 glibc provides __stack_chk_guard in -0x7008(2). */ + #define TARGET_THREAD_SSP_OFFSET -0x7008 + #endif +diff -Nur gcc-4.5.0-vanilla/gcc/config/rs6000/sysv4.h gcc-4.5.0/gcc/config/rs6000/sysv4.h +--- gcc-4.5.0-vanilla/gcc/config/rs6000/sysv4.h 2009-11-25 21:23:20.000000000 +0100 ++++ gcc-4.5.0/gcc/config/rs6000/sysv4.h 2010-04-21 15:21:16.674812959 +0200 @@ -883,7 +883,12 @@ %{!mnewlib: %{pthread:-lpthread} %{shared:-lc} \ %{!shared: %{profile:-lc_p} %{!profile:-lc}}}" -#ifdef HAVE_LD_PIE +#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINTS) -+#define STARTFILE_LINUX_SPEC "\ -+%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ -+%{mnewlib:ecrti.o%s;:crti.o%s} \ -+%{static:%{pie:crtbeginTS.o%s;:crtbeginT.o%s}} %{!static:%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}}" ++#define STARTFILE_LINUX_SPEC \ ++ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ ++ %{mnewlib:ecrti.o%s;:crti.o%s} \ ++ {static:%{pie:crtbeginTS.o%s;:crtbeginT.o%s}} %{!static:%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}}" +#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINTS) #define STARTFILE_LINUX_SPEC "\ %{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ %{mnewlib:ecrti.o%s;:crti.o%s} \ -diff -Nur gcc-4.5.1-vanilla/gcc/config.in gcc-4.5.1/gcc/config.in ---- gcc-4.5.1-vanilla/gcc/config.in 2010-07-31 11:34:58.000000000 +0200 -+++ gcc-4.5.1/gcc/config.in 2010-10-30 15:13:15.784230669 +0200 +diff -Nur gcc-4.5.0-vanilla/gcc/config/s390/linux.h gcc-4.5.0/gcc/config/s390/linux.h +--- gcc-4.5.0-vanilla/gcc/config/s390/linux.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5.0/gcc/config/s390/linux.h 2010-04-21 15:21:16.738814124 +0200 +@@ -93,7 +93,7 @@ + + #define MD_UNWIND_SUPPORT "config/s390/linux-unwind.h" + +-#ifdef TARGET_LIBC_PROVIDES_SSP ++#if defined TARGET_LIBC_PROVIDES_SSP && !defined __UCLIBC__ + /* s390 glibc provides __stack_chk_guard in 0x14(tp), + s390x glibc provides it at 0x28(tp). */ + #define TARGET_THREAD_SSP_OFFSET (TARGET_64BIT ? 0x28 : 0x14) +diff -Nur gcc-4.5.0-vanilla/gcc/config/sparc/linux64.h gcc-4.5.0/gcc/config/sparc/linux64.h +--- gcc-4.5.0-vanilla/gcc/config/sparc/linux64.h 2009-12-08 00:31:01.000000000 +0100 ++++ gcc-4.5.0/gcc/config/sparc/linux64.h 2010-04-21 15:21:16.749816158 +0200 +@@ -298,7 +298,7 @@ + #undef NEED_INDICATE_EXEC_STACK + #define NEED_INDICATE_EXEC_STACK 1 + +-#ifdef TARGET_LIBC_PROVIDES_SSP ++#if defined TARGET_LIBC_PROVIDES_SSP && !defined __UCLIBC__ + /* sparc glibc provides __stack_chk_guard in [%g7 + 0x14], + sparc64 glibc provides it at [%g7 + 0x28]. */ + #define TARGET_THREAD_SSP_OFFSET (TARGET_ARCH64 ? 0x28 : 0x14) +diff -Nur gcc-4.5.0-vanilla/gcc/config/sparc/linux.h gcc-4.5.0/gcc/config/sparc/linux.h +--- gcc-4.5.0-vanilla/gcc/config/sparc/linux.h 2009-12-08 00:31:01.000000000 +0100 ++++ gcc-4.5.0/gcc/config/sparc/linux.h 2010-04-21 15:21:16.746815839 +0200 +@@ -172,7 +172,7 @@ + #undef NEED_INDICATE_EXEC_STACK + #define NEED_INDICATE_EXEC_STACK 1 + +-#ifdef TARGET_LIBC_PROVIDES_SSP ++#if defined TARGET_LIBC_PROVIDES_SSP && !defined __UCLIBC__ + /* sparc glibc provides __stack_chk_guard in [%g7 + 0x14]. */ + #define TARGET_THREAD_SSP_OFFSET 0x14 + #endif +diff -Nur gcc-4.5.0-vanilla/gcc/config.in gcc-4.5.0/gcc/config.in +--- gcc-4.5.0-vanilla/gcc/config.in 2010-04-14 11:30:07.000000000 +0200 ++++ gcc-4.5.0/gcc/config.in 2010-04-21 15:21:09.879812904 +0200 @@ -52,6 +52,12 @@ #endif @@ -131,10 +211,23 @@ diff -Nur gcc-4.5.1-vanilla/gcc/config.in gcc-4.5.1/gcc/config.in /* Define to 1 to enable fixed-point arithmetic extension to C. */ #ifndef USED_FOR_TARGET #undef ENABLE_FIXED_POINT -diff -Nur gcc-4.5.1-vanilla/gcc/configure gcc-4.5.1/gcc/configure ---- gcc-4.5.1-vanilla/gcc/configure 2010-06-14 12:38:18.000000000 +0200 -+++ gcc-4.5.1/gcc/configure 2010-10-30 15:13:15.707229526 +0200 -@@ -680,6 +680,8 @@ +@@ -996,6 +1008,12 @@ + #endif + + ++/* Define to 1 if your compiler supports -fstack-protector */ ++#ifndef USED_FOR_TARGET ++#undef HAVE_GCC_SSP ++#endif ++ ++ + /* Define to 1 if you have the `getchar_unlocked' function. */ + #ifndef USED_FOR_TARGET + #undef HAVE_GETCHAR_UNLOCKED +diff -Nur gcc-4.5.0-vanilla/gcc/configure gcc-4.5.0/gcc/configure +--- gcc-4.5.0-vanilla/gcc/configure 2010-03-26 06:40:32.000000000 +0100 ++++ gcc-4.5.0/gcc/configure 2010-04-21 15:21:09.784072083 +0200 +@@ -678,6 +678,8 @@ HOST_LIBS GGC libgcc_visibility @@ -143,7 +236,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/configure gcc-4.5.1/gcc/configure gcc_cv_readelf gcc_cv_objdump ORIGINAL_NM_FOR_TARGET -@@ -24831,6 +24833,50 @@ +@@ -24576,6 +24578,50 @@ ;; esac @@ -194,10 +287,83 @@ diff -Nur gcc-4.5.1-vanilla/gcc/configure gcc-4.5.1/gcc/configure { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --build-id support" >&5 $as_echo_n "checking linker --build-id support... " >&6; } if test "${gcc_cv_ld_buildid+set}" = set; then : -@@ -25014,6 +25060,74 @@ +@@ -24729,6 +24775,146 @@ fi ++if test x$gcc_cv_libc_provides_ssp = xyes; then ++ echo "$as_me:$LINENO: checking whether $CC support -fstack-protector" >&5 ++echo $ECHO_N "checking whether $CC support -fstack-protector... $ECHO_C" >&6 ++if test "${gcc_cv_cc_stack_protector+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++ saved_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -fstack-protector" ++ cat >conftest.$ac_ext <<_ACEOF ++#ifndef __SSP__ ++#error ++#endif ++ ++_ACEOF ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ++ case $target in ++ i?86*-*-linux* | x86_64*-*-linux* | powerpc-*-linux* | powerpc64-*-linux*) ++ if test x$set_have_as_tls = xyes; then ++ gcc_cv_cc_stack_protector=yes ++ else ++ gcc_cv_cc_stack_protector=no ++ fi ++ ;; ++ *) ++ cc_cv_cc_stack_protector=yes ++ ;; ++ esac ++ ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gcc_cv_cc_stack_protector=no ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ CFLAGS="$saved_CFLAGS" ++ ++fi ++echo "$as_me:$LINENO: result: $gcc_cv_cc_stack_protector" >&5 ++echo "${ECHO_T}$gcc_cv_cc_stack_protector" >&6 ++fi ++if test x$gcc_cv_cc_stack_protector = xyes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_GCC_SSP 1 ++_ACEOF ++ ++fi ++ ++ +if test x$enable_esp = xyes ; then +case $target in + ia64*-*-linux*) @@ -219,7 +385,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/configure gcc-4.5.1/gcc/configure + ;; + esac +else -+ enable_espf_ld=no ++ enable_esp_ld=no +fi +if test x$enable_esp_ld = xyes; then + @@ -228,7 +394,6 @@ diff -Nur gcc-4.5.1-vanilla/gcc/configure gcc-4.5.1/gcc/configure +_ACEOF + +fi -+ +if test x$enable_esp = xyes && test x$enable_esp_ld = xno; then + { { echo "$as_me:$LINENO: error: *** --enable-esp is not supported. You don't have -z,relro or -z,now support in the linker." >&5 +echo "$as_me: error: *** --enable-esp is not supported. You don't have -z,relro or -z,now support in the linker." >&2;} @@ -269,9 +434,9 @@ diff -Nur gcc-4.5.1-vanilla/gcc/configure gcc-4.5.1/gcc/configure # Check if TFmode long double should be used by default or not. # Some glibc targets used DFmode long double, but with glibc 2.4 # and later they can use TFmode. -diff -Nur gcc-4.5.1-vanilla/gcc/cp/lang-specs.h gcc-4.5.1/gcc/cp/lang-specs.h ---- gcc-4.5.1-vanilla/gcc/cp/lang-specs.h 2007-08-06 13:10:19.000000000 +0200 -+++ gcc-4.5.1/gcc/cp/lang-specs.h 2010-10-30 15:13:15.849979777 +0200 +diff -Nur gcc-4.5.0-vanilla/gcc/cp/lang-specs.h gcc-4.5.0/gcc/cp/lang-specs.h +--- gcc-4.5.0-vanilla/gcc/cp/lang-specs.h 2007-08-06 13:10:19.000000000 +0200 ++++ gcc-4.5.0/gcc/cp/lang-specs.h 2010-04-21 15:21:16.684816335 +0200 @@ -47,7 +47,7 @@ %(cpp_options) %2 -o %{save-temps:%b.ii} %{!save-temps:%g.ii} \n}\ cc1plus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.ii} %{!save-temps:%g.ii}}\ @@ -295,9 +460,9 @@ diff -Nur gcc-4.5.1-vanilla/gcc/cp/lang-specs.h gcc-4.5.1/gcc/cp/lang-specs.h - cc1plus -fpreprocessed %i %(cc1_options) %2 %{+e*}\ + cc1plus -fpreprocessed %i %(cc1_options) %(esp_options) %2 %{+e*}\ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, -diff -Nur gcc-4.5.1-vanilla/gcc/doc/invoke.texi gcc-4.5.1/gcc/doc/invoke.texi ---- gcc-4.5.1-vanilla/gcc/doc/invoke.texi 2010-04-06 16:02:22.000000000 +0200 -+++ gcc-4.5.1/gcc/doc/invoke.texi 2010-10-30 15:13:15.864979490 +0200 +diff -Nur gcc-4.5.0-vanilla/gcc/doc/invoke.texi gcc-4.5.0/gcc/doc/invoke.texi +--- gcc-4.5.0-vanilla/gcc/doc/invoke.texi 2010-04-06 16:02:22.000000000 +0200 ++++ gcc-4.5.0/gcc/doc/invoke.texi 2010-04-21 15:21:16.796812184 +0200 @@ -7856,6 +7856,11 @@ @opindex fstack-protector-all Like @option{-fstack-protector} except that all functions are protected. @@ -335,51 +500,48 @@ diff -Nur gcc-4.5.1-vanilla/gcc/doc/invoke.texi gcc-4.5.1/gcc/doc/invoke.texi @item -fno-jump-tables @opindex fno-jump-tables Do not use jump tables for switch statements even where it would be -diff -Nur gcc-4.5.1-vanilla/gcc/esp.h gcc-4.5.1/gcc/esp.h ---- gcc-4.5.1-vanilla/gcc/esp.h 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-4.5.1/gcc/esp.h 2010-10-30 15:13:15.841979565 +0200 -@@ -0,0 +1,145 @@ +diff -Nur gcc-4.5.0-vanilla/gcc/esp.h gcc-4.5.0/gcc/esp.h +--- gcc-4.5.0-vanilla/gcc/esp.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.5.0/gcc/esp.h 2010-04-21 15:21:16.622811922 +0200 +@@ -0,0 +1,148 @@ +/* License terms see GNU GENERAL PUBLIC LICENSE Version 3. -+ * Version 20100527.1 ++ * Version 20100409.1 + * Magnus Granberg (Zorry) */ +#ifndef GCC_ESP_H +#define GCC_ESP_H + -+/* This file will add -fstack-protector-all, -fPIE, -pie and -z now ++/* This file will add -fstack-protector, -fPIE, -pie -D_FORTIFY_SOURCES=2 -z,relro and -z,now + as default if the defines and the spec allow it. ++ ++ On Gentoo + Added a hack for gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass + to support older hardened GCC patches and we don't need to change the code on gcc-specs-* and _filter-hardened. -+ This will add some unsupported upstream commands options as -nopie and -nonow. -+ -D__KERNEL__ is added so we don't have -fPIE, -pie and -fstack-protector-all when building kernels. ++ We use -fstack-protector-all instead of -fstack-protector ++ This will add some unsupported upstream commands options as -nopie. ++ -D__KERNEL__ is added so we don't have -fPIE and -fstack-protector-all when building kernels. + ESP_CC1_SPEC is added to CC1_SPEC. -+ ESP_CC1_STRICT_OVERFLOW_SPEC is added so we don't disable the strict-overflow check. -+ ESP_LINK_PIE_CHECK_SPEC check for -pie, -p, -pg, -profile and -static. ++ -D_FORTIFY_SOURCES=2 is added with gentoo's patchset as default so no need to set it hear. ++ ESP_LINK_SPEC will not add -z,relro as it default on with binutils. ++ ESP_CC1_STRICT_SPEC is added so we don't use gcc/opts.c to disable it. ++ ESP_OPTIONS_PIE_CHECK_SPEC check for -pie, -p, -pg, -profile, -static and -shared. + ENABLE_CRTBEGINTS add support for crtbeginTS.o, build -static with -fPIE or -fpie. +*/ +#ifdef ENABLE_ESP + + /* Hack to support gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass */ -+ #define ESP_CC1_SPEC " %(esp_cc1_ssp) %(esp_cc1_pie) %(esp_cc1_strict_overflow)" -+ #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP ) ++ #define ESP_CC1_SPEC " %(esp_cc1_ssp) %(esp_cc1_pie) %(esp_cc1_strict)" ++ #ifdef HAVE_GCC_SSP + #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: }}" + #else + #define ESP_CC1_SSP_SPEC "" + #endif -+ #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP ) -+ #define ESP_CC1_PIE_SPEC "%{!nopie: }" -+ #else -+ #define ESP_CC1_PIE_SPEC "" -+ #endif -+ #define ESP_CC1_STRICT_OVERFLOW_SPEC "%{!fstrict-overflow:%{!fno-strict-overflow: -fno-strict-overflow}}" ++ #define ESP_CC1_PIE_SPEC "%{!nopie: }" ++ #define ESP_CC1_STRICT_SPEC "%{!fstrict-overflow:%{!fno-strict-overflow: -fno-strict-overflow}}" + + /* ESP_LINK_SPEC is added to LINK_PIE_SPEC if esp is enable -+ -z now will be added if we don't have -vanilla spec. We do a -pie incompatible check -+ Don't remove the specs in the end */ -+ #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_pie_check) " -+ #define ESP_LINK_NOW_SPEC "%{!nonow:-z now}" -+ -+ /* We use ESP_COMMAND_OPTIONS_SPEC to add pie command-line options. */ -+ #define ESP_COMMAND_OPTIONS_SPEC "%{!D__KERNEL__:%{!nopie:%(esp_options_pie) %(esp_link_pie)}}" ++ -z now will be added if we don't have -vanilla spec */ ++ #define ESP_LINK_SPEC "%(esp_link_now)" ++ #define ESP_LINK_NOW_SPEC "%{!now:-z now}" + + /* ESP_OPTIONS_SPEC is added to the compiler spec in gcc/gcc.c */ + #define ESP_OPTIONS_SPEC "%(esp_options_ssp)" @@ -389,8 +551,8 @@ diff -Nur gcc-4.5.1-vanilla/gcc/esp.h gcc-4.5.1/gcc/esp.h + #define ESP_CPP_OPTIONS_SPEC "%(esp_options_ssp)" + + /* This will add -fstack-protector-all if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector -+ -fstack-protector-all and we have EFAULT_SSP or EFAULT_PIE_SSP defined. */ -+ #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP ) ++ -fstack-protector-all and we have TARGET_LIBC_PROVIDES_SSP and HAVE_GCC_SSP defined. */ ++ #ifdef HAVE_GCC_SSP + #define ESP_OPTIONS_SSP_SPEC \ + "%{!D__KERNEL__:%{!nostdlib:%{!nodefaultlibs: %{!fno-stack-protector: \ + %{!fstack-protector:%{!fstack-protector-all:-fstack-protector-all}}}}}}" @@ -398,8 +560,11 @@ diff -Nur gcc-4.5.1-vanilla/gcc/esp.h gcc-4.5.1/gcc/esp.h + #define ESP_OPTIONS_SSP_SPEC "" + #endif + -+ /* If EFAULT_PIE or EFAULT_PIE_SSP is defined we will add -fPIE -pie */ -+ #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP ) ++ /* If HAVE_LD_PIE not defined we will not add any -fPIE -pie */ ++ #ifdef HAVE_LD_PIE ++ ++ /* We use ESP_COMMAND_OPTIONS_SPEC to add pie command-line options. */ ++ #define ESP_COMMAND_OPTIONS_SPEC "%{!D__KERNEL__:%{!nopie:%(esp_options_pie) %(esp_link_pie)}}" + + /* This will add -fPIE if we don't have -pie -fpic -fPIC -fpie -fPIE -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static + -nostdlib -nostartfiles. */ @@ -428,29 +593,32 @@ diff -Nur gcc-4.5.1-vanilla/gcc/esp.h gcc-4.5.1/gcc/esp.h + %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}}" + #endif + -+ /* This will check if -pie is set when (-static) -pg -p -profile. If set it will make gcc print out -+ "-pie and (static)|pg|p|profile are incompatible when linking" */ ++ /* This will check if shared is set when -static -pie -fPIE -fpie -fno-PIC -fno-pic, -pie is set when -static -pg -p -profile. ++ If set it will make gcc print out "-shared and -static|pie|fPIE|fpie|fno-PIC|fno-pic are incompatible" or ++ "-pie and pg|p|profile are incompatible" */ + /* With ENABLE_CRTBEGINTS we don't need to check for -static */ + #ifdef ENABLE_CRTBEGINTS -+ #define ESP_LINK_PIE_CHECK_SPEC \ -+ "%{pie:%{pg|p|profile:%e-pie and -pg|p|profile are incompatible when linking}}" ++ #define ESP_OPTIONS_PIE_CHECK_SPEC \ ++ "%{shared:%{static|pie|fPIE|fpie|fno-PIC|fno-pic:%e-shared and -static|pie|fPIE|fpie|fno-PIC|fno-pic are incompatible}} \ ++ %{pie:%{pg|p|profile:%e-pie and -pg|p|profile are incompatible}}" + #else -+ #define ESP_LINK_PIE_CHECK_SPEC \ -+ "%{pie:%{static|pg|p|profile:%e-pie and -static|pg|p|profile are incompatible when linking}}" ++ #define ESP_OPTIONS_PIE_CHECK_SPEC \ ++ "%{shared:%{static|pie|fPIE|fpie|fno-PIC|fno-pic:%e-shared and -static|pie|fPIE|fpie|fno-PIC|fno-pic are incompatible}} \ ++ %{pie:%{static|pg|p|profile:%e-pie and -static|pg|p|profile are incompatible}}" + #endif + -+ /* We don't pass -pie to the linker when -static. */ ++ /* We don't pass -pie to the linker when -static */ + #ifdef ENABLE_CRTBEGINTS -+ #define LINK_PIE_SPEC "%{!static:%{pie:-pie}} %(esp_link)" ++ #define LINK_PIE_SPEC "%{!static:%{pie:-pie}} %(esp_link) " + #else -+ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)" ++ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link) " + #endif + + #else + #define ESP_OPTIONS_PIE_SPEC "" -+ #define ESP_LINK_PIE_CHECK_SPEC "" ++ #define ESP_OPTIONS_PIE_CHECK_SPEC "" + #define ESP_LINK_PIE_SPEC "" -+ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)" ++ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link) " + #endif + + /* We add extra spec name's to the EXTRA_SPECS list */ @@ -458,15 +626,15 @@ diff -Nur gcc-4.5.1-vanilla/gcc/esp.h gcc-4.5.1/gcc/esp.h + { "esp_cc1", ESP_CC1_SPEC }, \ + { "esp_cc1_pie", ESP_CC1_PIE_SPEC }, \ + { "esp_cc1_ssp", ESP_CC1_SSP_SPEC }, \ -+ { "esp_cc1_strict_overflow", ESP_CC1_STRICT_OVERFLOW_SPEC }, \ -+ { "esp_link", ESP_LINK_SPEC }, \ -+ { "esp_link_now", ESP_LINK_NOW_SPEC }, \ -+ { "esp_link_pie", ESP_LINK_PIE_SPEC }, \ -+ { "esp_link_pie_check", ESP_LINK_PIE_CHECK_SPEC }, \ ++ { "esp_cc1_strict", ESP_CC1_STRICT_SPEC }, \ ++ { "esp_link", ESP_LINK_SPEC }, \ ++ { "esp_link_now", ESP_LINK_NOW_SPEC }, \ ++ { "esp_link_pie", ESP_LINK_PIE_SPEC }, \ + { "esp_command_options", ESP_COMMAND_OPTIONS_SPEC }, \ + { "esp_cpp_options", ESP_CPP_OPTIONS_SPEC }, \ + { "esp_options", ESP_OPTIONS_SPEC }, \ + { "esp_options_pie", ESP_OPTIONS_PIE_SPEC }, \ ++ { "esp_options_pie_check", ESP_OPTIONS_PIE_CHECK_SPEC }, \ + { "esp_options_ssp", ESP_OPTIONS_SSP_SPEC } + + static const char *esp_command_options_spec = ESP_COMMAND_OPTIONS_SPEC; @@ -484,9 +652,9 @@ diff -Nur gcc-4.5.1-vanilla/gcc/esp.h gcc-4.5.1/gcc/esp.h + +#endif +#endif /* End GCC_ESP_H */ -diff -Nur gcc-4.5.1-vanilla/gcc/gcc.c gcc-4.5.1/gcc/gcc.c ---- gcc-4.5.1-vanilla/gcc/gcc.c 2010-04-18 19:46:08.000000000 +0200 -+++ gcc-4.5.1/gcc/gcc.c 2010-10-30 15:13:15.834979921 +0200 +diff -Nur gcc-4.5.0-vanilla/gcc/gcc.c gcc-4.5.0/gcc/gcc.c +--- gcc-4.5.0-vanilla/gcc/gcc.c 2010-02-11 13:23:08.000000000 +0100 ++++ gcc-4.5.0/gcc/gcc.c 2010-04-21 15:21:16.589812777 +0200 @@ -84,6 +84,7 @@ #include "gcc.h" #include "flags.h" @@ -514,7 +682,17 @@ diff -Nur gcc-4.5.1-vanilla/gcc/gcc.c gcc-4.5.1/gcc/gcc.c /* This contains cpp options which are not passed when the preprocessor output will be used by another program. */ -@@ -1075,15 +1078,15 @@ +@@ -893,6 +896,9 @@ + + /* NB: This is shared amongst all front-ends, except for Ada. */ + static const char *cc1_options = ++#ifdef ENABLE_ESP ++"%(esp_options_pie_check)" ++#endif + "%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\ + %1 %{!Q:-quiet} %{!dumpbase:-dumpbase %B} %{d*} %{m*} %{a*}\ + %{fcompare-debug-second:%:compare-debug-auxbase-opt(%b)} \ +@@ -1075,15 +1081,15 @@ %{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \ %(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\ cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \ @@ -533,7 +711,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/gcc.c gcc-4.5.1/gcc/gcc.c %{!fsyntax-only:%(invoke_as)}}}}}}", 0, 1, 1}, {"-", "%{!E:%e-E or -x required when input is from standard input}\ -@@ -1106,7 +1109,7 @@ +@@ -1106,7 +1112,7 @@ %W{o*:--output-pch=%*}%V}}}}}}", 0, 0, 0}, {".i", "@cpp-output", 0, 1, 0}, {"@cpp-output", @@ -542,7 +720,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/gcc.c gcc-4.5.1/gcc/gcc.c {".s", "@assembler", 0, 1, 0}, {"@assembler", "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 1, 0}, -@@ -1699,18 +1702,23 @@ +@@ -1699,18 +1705,23 @@ INIT_STATIC_SPEC ("sysroot_hdrs_suffix_spec", &sysroot_hdrs_suffix_spec), }; @@ -570,7 +748,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/gcc.c gcc-4.5.1/gcc/gcc.c /* List of dynamically allocates specs that have been defined so far. */ -@@ -1798,7 +1806,6 @@ +@@ -1798,7 +1809,6 @@ if (verbose_flag) notice ("Using built-in specs.\n"); @@ -578,7 +756,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/gcc.c gcc-4.5.1/gcc/gcc.c extra_specs = XCNEWVEC (struct spec_list, ARRAY_SIZE (extra_specs_1)); for (i = ARRAY_SIZE (extra_specs_1) - 1; i >= 0; i--) -@@ -1811,7 +1818,6 @@ +@@ -1811,7 +1821,6 @@ sl->ptr_spec = &sl->ptr; next = sl; } @@ -586,7 +764,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/gcc.c gcc-4.5.1/gcc/gcc.c for (i = ARRAY_SIZE (static_specs) - 1; i >= 0; i--) { -@@ -7111,6 +7117,12 @@ +@@ -7111,6 +7120,12 @@ gcc_exec_prefix = concat (gcc_exec_prefix, spec_machine, dir_separator_str, spec_version, dir_separator_str, NULL); @@ -599,10 +777,10 @@ diff -Nur gcc-4.5.1-vanilla/gcc/gcc.c gcc-4.5.1/gcc/gcc.c /* Now we have the specs. Set the `valid' bits for switches that match anything in any spec. */ -diff -Nur gcc-4.5.1-vanilla/gcc/Makefile.in gcc-4.5.1/gcc/Makefile.in ---- gcc-4.5.1-vanilla/gcc/Makefile.in 2010-06-30 15:26:17.000000000 +0200 -+++ gcc-4.5.1/gcc/Makefile.in 2010-10-30 15:13:15.822979675 +0200 -@@ -640,13 +640,24 @@ +diff -Nur gcc-4.5.0-vanilla/gcc/Makefile.in gcc-4.5.0/gcc/Makefile.in +--- gcc-4.5.0-vanilla/gcc/Makefile.in 2010-04-02 09:49:06.000000000 +0200 ++++ gcc-4.5.0/gcc/Makefile.in 2010-04-21 15:21:10.033812913 +0200 +@@ -636,13 +636,24 @@ INHIBIT_LIBC_CFLAGS = -Dinhibit_libc endif @@ -628,7 +806,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/Makefile.in gcc-4.5.1/gcc/Makefile.in # Additional options to use when compiling libgcc2.a. # Some targets override this to -isystem include -@@ -659,7 +670,7 @@ +@@ -655,7 +666,7 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \ -finhibit-size-directive -fno-inline -fno-exceptions \ -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \ @@ -637,7 +815,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/Makefile.in gcc-4.5.1/gcc/Makefile.in # Additional sources to handle exceptions; overridden by targets as needed. LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \ -@@ -689,6 +700,12 @@ +@@ -685,6 +696,12 @@ # The rules for compiling them should be in the t-* file for the machine. EXTRA_PARTS = @extra_parts@ @@ -650,7 +828,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/Makefile.in gcc-4.5.1/gcc/Makefile.in # List of extra object files that should be compiled and linked with # compiler proper (cc1, cc1obj, cc1plus). EXTRA_OBJS = @extra_objs@ -@@ -1867,9 +1884,10 @@ +@@ -1863,9 +1880,10 @@ echo LIBGCC_SYNC = '$(LIBGCC_SYNC)' >> tmp-libgcc.mvars echo LIBGCC_SYNC_CFLAGS = '$(LIBGCC_SYNC_CFLAGS)' >> tmp-libgcc.mvars echo CRTSTUFF_CFLAGS = '$(CRTSTUFF_CFLAGS)' >> tmp-libgcc.mvars @@ -662,7 +840,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/Makefile.in gcc-4.5.1/gcc/Makefile.in mv tmp-libgcc.mvars libgcc.mvars -@@ -1903,12 +1921,14 @@ +@@ -1899,12 +1917,14 @@ $(T)crtbegin.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \ gbl-ctors.h stmp-int-hdrs tsystem.h coretypes.h $(TM_H) $(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) \ @@ -677,7 +855,7 @@ diff -Nur gcc-4.5.1-vanilla/gcc/Makefile.in gcc-4.5.1/gcc/Makefile.in -c $(srcdir)/crtstuff.c -DCRT_END \ -o $(T)crtend$(objext) -@@ -1929,9 +1949,19 @@ +@@ -1925,9 +1945,19 @@ $(T)crtbeginT.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \ gbl-ctors.h stmp-int-hdrs tsystem.h coretypes.h $(TM_H) $(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) \ @@ -697,9 +875,9 @@ diff -Nur gcc-4.5.1-vanilla/gcc/Makefile.in gcc-4.5.1/gcc/Makefile.in # Compile the start modules crt0.o and mcrt0.o that are linked with # every program $(T)crt0.o: s-crt0 ; @true -diff -Nur gcc-4.5.1-vanilla/gcc/objc/lang-specs.h gcc-4.5.1/gcc/objc/lang-specs.h ---- gcc-4.5.1-vanilla/gcc/objc/lang-specs.h 2007-08-02 12:37:36.000000000 +0200 -+++ gcc-4.5.1/gcc/objc/lang-specs.h 2010-10-30 15:13:15.851989223 +0200 +diff -Nur gcc-4.5.0-vanilla/gcc/objc/lang-specs.h gcc-4.5.0/gcc/objc/lang-specs.h +--- gcc-4.5.0-vanilla/gcc/objc/lang-specs.h 2007-08-02 12:37:36.000000000 +0200 ++++ gcc-4.5.0/gcc/objc/lang-specs.h 2010-04-21 15:21:16.702913793 +0200 @@ -30,13 +30,13 @@ %{traditional|ftraditional|traditional-cpp:\ %eGNU Objective C no longer supports traditional compilation}\ @@ -730,9 +908,9 @@ diff -Nur gcc-4.5.1-vanilla/gcc/objc/lang-specs.h gcc-4.5.1/gcc/objc/lang-specs. + cc1obj %(cpp_unique_options) %(cc1_options) %(esp_options) %{print-objc-runtime-info} %{gen-decls}\ -o %g.s %{!o*:--output-pch=%i.gch}\ %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0}, -diff -Nur gcc-4.5.1-vanilla/gcc/objcp/lang-specs.h gcc-4.5.1/gcc/objcp/lang-specs.h ---- gcc-4.5.1-vanilla/gcc/objcp/lang-specs.h 2007-08-02 12:38:44.000000000 +0200 -+++ gcc-4.5.1/gcc/objcp/lang-specs.h 2010-10-30 15:13:15.852989302 +0200 +diff -Nur gcc-4.5.0-vanilla/gcc/objcp/lang-specs.h gcc-4.5.0/gcc/objcp/lang-specs.h +--- gcc-4.5.0-vanilla/gcc/objcp/lang-specs.h 2007-08-02 12:38:44.000000000 +0200 ++++ gcc-4.5.0/gcc/objcp/lang-specs.h 2010-04-21 15:21:16.708817730 +0200 @@ -36,7 +36,7 @@ %(cpp_options) %2 -o %{save-temps:%b.mii} %{!save-temps:%g.mii} \n}\ cc1objplus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.mii} %{!save-temps:%g.mii}}\ @@ -761,9 +939,9 @@ diff -Nur gcc-4.5.1-vanilla/gcc/objcp/lang-specs.h gcc-4.5.1/gcc/objcp/lang-spec - cc1objplus -fpreprocessed %i %(cc1_options) %2 %{+e*}\ + cc1objplus -fpreprocessed %i %(cc1_options) %(esp_options) %2 %{+e*}\ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, -diff -Nur gcc-4.5.1-vanilla/gcc/varasm.c gcc-4.5.1/gcc/varasm.c ---- gcc-4.5.1-vanilla/gcc/varasm.c 2010-03-27 12:56:30.000000000 +0100 -+++ gcc-4.5.1/gcc/varasm.c 2010-10-30 15:13:15.839995541 +0200 +diff -Nur gcc-4.5.0-vanilla/gcc/varasm.c gcc-4.5.0/gcc/varasm.c +--- gcc-4.5.0-vanilla/gcc/varasm.c 2010-03-27 12:56:30.000000000 +0100 ++++ gcc-4.5.0/gcc/varasm.c 2010-04-21 15:21:16.606812404 +0200 @@ -5961,7 +5961,11 @@ bool is_local; @@ -777,9 +955,9 @@ diff -Nur gcc-4.5.1-vanilla/gcc/varasm.c gcc-4.5.1/gcc/varasm.c { if (is_local) kind = TLS_MODEL_LOCAL_EXEC; -diff -Nur gcc-4.5.1-vanilla/libgcc/Makefile.in gcc-4.5.1/libgcc/Makefile.in ---- gcc-4.5.1-vanilla/libgcc/Makefile.in 2010-03-30 15:08:52.000000000 +0200 -+++ gcc-4.5.1/libgcc/Makefile.in 2010-10-30 15:13:15.824991986 +0200 +diff -Nur gcc-4.5.0-vanilla/libgcc/Makefile.in gcc-4.5.0/libgcc/Makefile.in +--- gcc-4.5.0-vanilla/libgcc/Makefile.in 2010-03-30 15:08:52.000000000 +0200 ++++ gcc-4.5.0/libgcc/Makefile.in 2010-04-21 15:21:10.824811514 +0200 @@ -291,6 +291,12 @@ gen-hide-list = echo > \$@ endif @@ -807,9 +985,9 @@ diff -Nur gcc-4.5.1-vanilla/libgcc/Makefile.in gcc-4.5.1/libgcc/Makefile.in endif # Build extra startfiles in the libgcc directory. -diff -Nur gcc-4.5.1-vanilla/libmudflap/configure gcc-4.5.1/libmudflap/configure ---- gcc-4.5.1-vanilla/libmudflap/configure 2010-06-10 10:58:13.000000000 +0200 -+++ gcc-4.5.1/libmudflap/configure 2010-10-30 15:13:15.768230485 +0200 +diff -Nur gcc-4.5.0-vanilla/libmudflap/configure gcc-4.5.0/libmudflap/configure +--- gcc-4.5.0-vanilla/libmudflap/configure 2009-12-05 18:18:53.000000000 +0100 ++++ gcc-4.5.0/libmudflap/configure 2010-04-21 15:21:09.843811773 +0200 @@ -652,6 +652,7 @@ MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE @@ -818,31 +996,33 @@ diff -Nur gcc-4.5.1-vanilla/libmudflap/configure gcc-4.5.1/libmudflap/configure am__tar AMTAR am__leading_dot -diff -Nur gcc-4.5.1-vanilla/libmudflap/Makefile.in gcc-4.5.1/libmudflap/Makefile.in ---- gcc-4.5.1-vanilla/libmudflap/Makefile.in 2010-04-02 20:18:06.000000000 +0200 -+++ gcc-4.5.1/libmudflap/Makefile.in 2010-10-30 15:13:15.826989769 +0200 -@@ -304,9 +304,17 @@ +diff -Nur gcc-4.5.0-vanilla/libmudflap/Makefile.in gcc-4.5.0/libmudflap/Makefile.in +--- gcc-4.5.0-vanilla/libmudflap/Makefile.in 2010-04-02 20:18:06.000000000 +0200 ++++ gcc-4.5.0/libmudflap/Makefile.in 2010-04-21 15:21:10.844815108 +0200 +@@ -304,10 +304,18 @@ MAINT_CHARSET = latin1 SUBDIRS = testsuite -+# Some stuff don't compile with SSP and FORTIFY_SOURCE ++# Some stuff don't compile with PIE or SSP +enable_esp = @enable_esp@ +ifeq ($(enable_esp),yes) -+ NO_ESP_CFLAGS = -fno-stack-protector -U_FORTIFY_SOURCE ++NO_ESP_CFLAGS = -fno-stack-protector -U_FORTIFY_SOURCE +else -+ NO_ESP_CFLAGS = ++NO_ESP_CFLAGS = +endif + # May be used by various substitution variables. gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) -AM_CFLAGS = -Wall $(SECTION_FLAGS) +-@LIBMUDFLAPTH_FALSE@libmudflapth = +AM_CFLAGS = -Wall $(SECTION_FLAGS) $(NO_ESP_CFLAGS) - @LIBMUDFLAPTH_FALSE@libmudflapth = ++@LIBMUDFLAPTH_FALSE@libmudflapth = @LIBMUDFLAPTH_TRUE@libmudflapth = libmudflapth.la toolexeclib_LTLIBRARIES = libmudflap.la $(libmudflapth) -diff -Nur gcc-4.5.1-vanilla/Makefile.in gcc-4.5.1/Makefile.in ---- gcc-4.5.1-vanilla/Makefile.in 2010-06-10 19:05:59.000000000 +0200 -+++ gcc-4.5.1/Makefile.in 2010-10-30 15:13:15.816979901 +0200 + libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include +diff -Nur gcc-4.5.0-vanilla/Makefile.in gcc-4.5.0/Makefile.in +--- gcc-4.5.0-vanilla/Makefile.in 2010-02-17 12:01:44.000000000 +0100 ++++ gcc-4.5.0/Makefile.in 2010-04-21 15:21:10.022812548 +0200 @@ -350,9 +350,17 @@ BUILD_PREFIX = @BUILD_PREFIX@ BUILD_PREFIX_1 = @BUILD_PREFIX_1@ diff --git a/pkgs/core/gcc/patches/gcc45-pr33763.patch b/pkgs/core/gcc/patches/gcc45-pr33763.patch deleted file mode 100644 index dfc9d5995..000000000 --- a/pkgs/core/gcc/patches/gcc45-pr33763.patch +++ /dev/null @@ -1,153 +0,0 @@ -2007-11-06 Jakub Jelinek - - PR tree-optimization/33763 - * gcc.dg/pr33763.c: New test. - * g++.dg/opt/inline13.C: New test. - -2007-11-06 Jan Hubicka - - PR tree-optimization/33763 - * tree-inline.c (expand_call_inline): Silently ignore always_inline - attribute for redefined extern inline functions. - ---- a/gcc/tree-inline.c.jj 2007-11-06 09:29:04.000000000 +0100 -+++ b/gcc/tree-inline.c 2007-11-06 16:19:12.000000000 +0100 -@@ -3157,6 +3157,12 @@ expand_call_inline (basic_block bb, gimp - goto egress; - - if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) -+ /* For extern inline functions that get redefined we always -+ silently ignored alway_inline flag. Better behaviour would -+ be to be able to keep both bodies and use extern inline body -+ for inlining, but we can't do that because frontends overwrite -+ the body. */ -+ && !cg_edge->callee->local.redefined_extern_inline - /* Avoid warnings during early inline pass. */ - && cgraph_global_info_ready) - { ---- a/gcc/testsuite/gcc.dg/pr33763.c.jj 2007-11-06 16:19:12.000000000 +0100 -+++ b/gcc/testsuite/gcc.dg/pr33763.c 2007-11-06 16:19:12.000000000 +0100 -@@ -0,0 +1,60 @@ -+/* PR tree-optimization/33763 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2" } */ -+ -+typedef struct -+{ -+ void *a; -+ void *b; -+} T; -+extern void *foo (const char *, const char *); -+extern void *bar (void *, const char *, T); -+extern int baz (const char *, int); -+ -+extern inline __attribute__ ((always_inline, gnu_inline)) int -+baz (const char *x, int y) -+{ -+ return 2; -+} -+ -+int -+baz (const char *x, int y) -+{ -+ return 1; -+} -+ -+int xa, xb; -+ -+static void * -+inl (const char *x, const char *y) -+{ -+ T t = { &xa, &xb }; -+ int *f = (int *) __builtin_malloc (sizeof (int)); -+ const char *z; -+ int o = 0; -+ void *r = 0; -+ -+ for (z = y; *z; z++) -+ { -+ if (*z == 'r') -+ o |= 1; -+ if (*z == 'w') -+ o |= 2; -+ } -+ if (o == 1) -+ *f = baz (x, 0); -+ if (o == 2) -+ *f = baz (x, 1); -+ if (o == 3) -+ *f = baz (x, 2); -+ -+ if (o && *f > 0) -+ r = bar (f, "w", t); -+ return r; -+} -+ -+void * -+foo (const char *x, const char *y) -+{ -+ return inl (x, y); -+} ---- a/gcc/testsuite/g++.dg/opt/inline13.C.jj 2007-11-06 16:20:20.000000000 +0100 -+++ b/gcc/testsuite/g++.dg/opt/inline13.C 2007-11-06 16:21:30.000000000 +0100 -@@ -0,0 +1,60 @@ -+// PR tree-optimization/33763 -+// { dg-do compile } -+// { dg-options "-O2" } -+ -+typedef struct -+{ -+ void *a; -+ void *b; -+} T; -+extern void *foo (const char *, const char *); -+extern void *bar (void *, const char *, T); -+extern int baz (const char *, int); -+ -+extern inline __attribute__ ((always_inline, gnu_inline)) int -+baz (const char *x, int y) -+{ -+ return 2; -+} -+ -+int -+baz (const char *x, int y) -+{ -+ return 1; -+} -+ -+int xa, xb; -+ -+static void * -+inl (const char *x, const char *y) -+{ -+ T t = { &xa, &xb }; -+ int *f = (int *) __builtin_malloc (sizeof (int)); -+ const char *z; -+ int o = 0; -+ void *r = 0; -+ -+ for (z = y; *z; z++) -+ { -+ if (*z == 'r') -+ o |= 1; -+ if (*z == 'w') -+ o |= 2; -+ } -+ if (o == 1) -+ *f = baz (x, 0); -+ if (o == 2) -+ *f = baz (x, 1); -+ if (o == 3) -+ *f = baz (x, 2); -+ -+ if (o && *f > 0) -+ r = bar (f, "w", t); -+ return r; -+} -+ -+void * -+foo (const char *x, const char *y) -+{ -+ return inl (x, y); -+} diff --git a/pkgs/core/gcc/patches/gcc45-pr38757.patch b/pkgs/core/gcc/patches/gcc45-pr38757.patch deleted file mode 100644 index d3aec2de4..000000000 --- a/pkgs/core/gcc/patches/gcc45-pr38757.patch +++ /dev/null @@ -1,118 +0,0 @@ -2009-03-18 Jakub Jelinek - - PR debug/38757 - * langhooks.h (struct lang_hooks): Add source_language langhook. - * langhooks-def.h (LANG_HOOKS_SOURCE_LANGUAGE): Define to NULL. - (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_SOURCE_LANGUAGE. - * c-lang.c (c_source_language): New function. - (LANG_HOOKS_SOURCE_LANGUAGE): Define. - * dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype - also for DW_LANG_{C,C99,ObjC}. - (gen_compile_unit_die): Use lang_hooks.source_language () to - determine if DW_LANG_C99 or DW_LANG_C89 should be returned. - ---- a/gcc/langhooks.h.jj 2010-06-30 09:48:30.000000000 +0200 -+++ b/gcc/langhooks.h 2010-07-01 16:15:22.432616871 +0200 -@@ -454,6 +454,10 @@ struct lang_hooks - is enabled. */ - bool eh_use_cxa_end_cleanup; - -+ /* Return year of the source language standard version if the FE supports -+ multiple versions of the standard. */ -+ int (*source_language) (void); -+ - /* Whenever you add entries here, make sure you adjust langhooks-def.h - and langhooks.c accordingly. */ - }; ---- a/gcc/langhooks-def.h.jj 2010-06-30 09:48:30.000000000 +0200 -+++ b/gcc/langhooks-def.h 2010-07-01 16:16:07.427460761 +0200 -@@ -1,5 +1,5 @@ - /* Default macros to initialize the lang_hooks data structure. -- Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -+ Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. - Contributed by Alexandre Oliva - -@@ -111,6 +111,7 @@ extern void lhd_omp_firstprivatize_type_ - #define LANG_HOOKS_EH_PERSONALITY lhd_gcc_personality - #define LANG_HOOKS_EH_RUNTIME_TYPE lhd_pass_through_t - #define LANG_HOOKS_EH_USE_CXA_END_CLEANUP false -+#define LANG_HOOKS_SOURCE_LANGUAGE NULL - - /* Attribute hooks. */ - #define LANG_HOOKS_ATTRIBUTE_TABLE NULL -@@ -301,6 +302,7 @@ extern void lhd_end_section (void); - LANG_HOOKS_EH_PERSONALITY, \ - LANG_HOOKS_EH_RUNTIME_TYPE, \ - LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \ -+ LANG_HOOKS_SOURCE_LANGUAGE, \ - } - - #endif /* GCC_LANG_HOOKS_DEF_H */ ---- a/gcc/c-lang.c.jj 2010-06-30 09:48:30.000000000 +0200 -+++ b/gcc/c-lang.c 2010-07-01 16:14:25.396197804 +0200 -@@ -1,6 +1,6 @@ - /* Language-specific hook definitions for C front end. - Copyright (C) 1991, 1995, 1997, 1998, -- 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008 -+ 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, 2009 - Free Software Foundation, Inc. - - This file is part of GCC. -@@ -37,6 +37,12 @@ along with GCC; see the file COPYING3. - - enum c_language_kind c_language = clk_c; - -+static int -+c_source_language (void) -+{ -+ return flag_isoc99 ? 1999 : 1989; -+} -+ - /* Lang hooks common to C and ObjC are declared in c-objc-common.h; - consequently, there should be very few hooks below. */ - -@@ -44,6 +50,8 @@ enum c_language_kind c_language = clk_c; - #define LANG_HOOKS_NAME "GNU C" - #undef LANG_HOOKS_INIT - #define LANG_HOOKS_INIT c_objc_common_init -+#undef LANG_HOOKS_SOURCE_LANGUAGE -+#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language - - /* Each front end provides its own lang hook initializer. */ - struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; ---- a/gcc/dwarf2out.c.jj 2010-07-01 14:07:41.000000000 +0200 -+++ b/gcc/dwarf2out.c 2010-07-01 16:13:24.597354717 +0200 -@@ -17150,9 +17150,18 @@ add_bit_size_attribute (dw_die_ref die, - static inline void - add_prototyped_attribute (dw_die_ref die, tree func_type) - { -- if (get_AT_unsigned (comp_unit_die, DW_AT_language) == DW_LANG_C89 -- && TYPE_ARG_TYPES (func_type) != NULL) -- add_AT_flag (die, DW_AT_prototyped, 1); -+ switch (get_AT_unsigned (comp_unit_die, DW_AT_language)) -+ { -+ case DW_LANG_C: -+ case DW_LANG_C89: -+ case DW_LANG_C99: -+ case DW_LANG_ObjC: -+ if (TYPE_ARG_TYPES (func_type) != NULL) -+ add_AT_flag (die, DW_AT_prototyped, 1); -+ break; -+ default: -+ break; -+ } - } - - /* Add an 'abstract_origin' attribute below a given DIE. The DIE is found -@@ -19246,6 +19255,10 @@ gen_compile_unit_die (const char *filena - language = DW_LANG_ObjC; - else if (strcmp (language_string, "GNU Objective-C++") == 0) - language = DW_LANG_ObjC_plus_plus; -+ else if (strcmp (language_string, "GNU C") == 0 -+ && lang_hooks.source_language -+ && lang_hooks.source_language () >= 1999) -+ language = DW_LANG_C99; - } - - add_AT_unsigned (die, DW_AT_language, language);