summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@uclibc-ng.org>2016-08-24 22:24:38 +0200
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2016-08-24 22:25:08 +0200
commit9683c207c75e5bc6513b1e8db6bdc2ed4c3db1f5 (patch)
tree510da161ad9e89032f4df8738ca26ad0a2d6b33d
parent9c15da431e4f1c8faf9bf747578b2c6b6c4d7d02 (diff)
gcc: update to 6.2.0, cleanup symbol names to simplify minor updates
Remove old versions of gcc no longer used or regulary tested. We concentrate on the latest three major versions for most of the architectures.
-rw-r--r--target/config/Config.in.compiler43
-rw-r--r--toolchain/gcc/Makefile.inc58
-rw-r--r--toolchain/gcc/patches/4.5.4/cflags-honour.patch232
-rw-r--r--toolchain/gcc/patches/4.5.4/disable-dwarf.frv11
-rw-r--r--toolchain/gcc/patches/4.7.4/armhf.patch72
-rw-r--r--toolchain/gcc/patches/4.7.4/cflags.patch241
-rw-r--r--toolchain/gcc/patches/4.7.4/openbsd-lto.patch13
-rw-r--r--toolchain/gcc/patches/4.7.4/ppc-uclibc-cmath.patch217
-rw-r--r--toolchain/gcc/patches/4.8.3/cflags.patch231
-rw-r--r--toolchain/gcc/patches/4.8.5/cflags.patch231
-rw-r--r--toolchain/gcc/patches/4.8.5/disable-atomics.patch12
-rw-r--r--toolchain/gcc/patches/4.8.5/disable-tm.patch14
-rw-r--r--toolchain/gcc/patches/4.8.5/gcc.musl633
-rw-r--r--toolchain/gcc/patches/4.8.5/libstdcxx-uclibc-c99.patch273
-rw-r--r--toolchain/gcc/patches/4.8.5/uclibc-cmath.ppc1878
-rw-r--r--toolchain/gcc/patches/6.2.0/add-crtreloc.frv (renamed from toolchain/gcc/patches/6.1.0/add-crtreloc.frv)0
-rw-r--r--toolchain/gcc/patches/6.2.0/bfin-workaround.patch (renamed from toolchain/gcc/patches/6.1.0/bfin-workaround.patch)0
-rw-r--r--toolchain/gcc/patches/6.2.0/fix-dwarf-fdpic.patch (renamed from toolchain/gcc/patches/6.1.0/fix-dwarf-fdpic.patch)0
-rw-r--r--toolchain/gcc/patches/6.2.0/fix-m86k-libgcc.patch (renamed from toolchain/gcc/patches/6.1.0/fix-m86k-libgcc.patch)0
-rw-r--r--toolchain/gcc/patches/6.2.0/frv-remove-write-macro.patch (renamed from toolchain/gcc/patches/6.1.0/frv-remove-write-macro.patch)0
-rw-r--r--toolchain/gcc/patches/6.2.0/libgcc_linker-script.patch (renamed from toolchain/gcc/patches/6.1.0/libgcc_linker-script.patch)0
-rw-r--r--toolchain/gcc/patches/6.2.0/uclinux-threads.patch (renamed from toolchain/gcc/patches/6.1.0/uclinux-threads.patch)0
-rw-r--r--toolchain/gcc/patches/6.2.0/xtensa-musl.patch (renamed from toolchain/gcc/patches/6.1.0/xtensa-musl.patch)0
-rw-r--r--toolchain/gcc/patches/arc-2015.12/100-libstdcxx-uclibc-c99.patch273
-rw-r--r--toolchain/gcc/patches/arc-2015.12/851-PR-other-56780.patch244
-rw-r--r--toolchain/gcc/patches/arc-2015.12/900-UPDATE-Fix-handling-complex-PIC-moves.patch103
-rw-r--r--toolchain/gcc/patches/arc-2015.12/901-UPDATE1-Fix-handling-complex-PIC-moves.patch83
-rw-r--r--toolchain/gcc/patches/arc-2015.12/950-Don-t-allow-mcompact-casesi-for-ARCv2.patch100
28 files changed, 35 insertions, 4927 deletions
diff --git a/target/config/Config.in.compiler b/target/config/Config.in.compiler
index 69eb777e8..11df35415 100644
--- a/target/config/Config.in.compiler
+++ b/target/config/Config.in.compiler
@@ -17,19 +17,20 @@ choice
prompt "GCC version"
depends on ADK_BUILD_COMPILER_GCC
default ADK_TOOLCHAIN_GCC_ARC if ADK_TARGET_ARCH_ARC
-default ADK_TOOLCHAIN_GCC_4_2_4 if ADK_TARGET_ARCH_METAG
-default ADK_TOOLCHAIN_GCC_4_4_7 if ADK_TARGET_ARCH_AVR32
-default ADK_TOOLCHAIN_GCC_4_9_4 if ADK_TARGET_LIB_GLIBC && ADK_TARGET_ARCH_SH
-default ADK_TOOLCHAIN_GCC_4_9_4 if ADK_TARGET_SYSTEM_KINETIS_K70
-default ADK_TOOLCHAIN_GCC_5_3_OR1K if ADK_TARGET_ARCH_OR1K
-default ADK_TOOLCHAIN_GCC_6_1_0 if ADK_TARGET_ARCH_XTENSA
-default ADK_TOOLCHAIN_GCC_6_1_0 if ADK_TARGET_ARCH_BFIN
-default ADK_TOOLCHAIN_GCC_6_1_0 if ADK_TARGET_ARCH_C6X
-default ADK_TOOLCHAIN_GCC_6_1_0 if ADK_TARGET_ARCH_CR16
-default ADK_TOOLCHAIN_GCC_6_1_0 if ADK_TARGET_ARCH_H8300
-default ADK_TOOLCHAIN_GCC_6_1_0 if ADK_TARGET_ARCH_FRV
-default ADK_TOOLCHAIN_GCC_6_1_0 if ADK_TARGET_CPU_MIPS_MIPS32R6 || ADK_TARGET_CPU_MIPS64_MIPS64R6
-default ADK_TOOLCHAIN_GCC_5_4_0
+default ADK_TOOLCHAIN_GCC_OR1K if ADK_TARGET_ARCH_OR1K
+default ADK_TOOLCHAIN_GCC_4_2 if ADK_TARGET_ARCH_METAG
+default ADK_TOOLCHAIN_GCC_4_4 if ADK_TARGET_ARCH_AVR32
+default ADK_TOOLCHAIN_GCC_4_9 if ADK_TARGET_LIB_GLIBC && ADK_TARGET_ARCH_SH
+default ADK_TOOLCHAIN_GCC_4_9 if ADK_TARGET_SYSTEM_KINETIS_K70
+default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_ARCH_XTENSA
+default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_ARCH_BFIN
+default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_ARCH_C6X
+default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_ARCH_CR16
+default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_ARCH_H8300
+default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_ARCH_FRV
+default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_ARCH_M32R
+default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_CPU_MIPS_MIPS32R6 || ADK_TARGET_CPU_MIPS64_MIPS64R6
+default ADK_TOOLCHAIN_GCC_5
config ADK_TOOLCHAIN_GCC_GIT
bool "git"
@@ -40,8 +41,8 @@ config ADK_TOOLCHAIN_GCC_GIT
depends on !ADK_TARGET_ARCH_OR1K
select ADK_DISABLE_HONOUR_CFLAGS
-config ADK_TOOLCHAIN_GCC_6_1_0
- bool "6.1.0"
+config ADK_TOOLCHAIN_GCC_6
+ bool "6.2.0"
depends on !ADK_TARGET_ARCH_ARC
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_METAG
@@ -49,7 +50,7 @@ config ADK_TOOLCHAIN_GCC_6_1_0
depends on !ADK_TARGET_ARCH_OR1K
select ADK_DISABLE_HONOUR_CFLAGS
-config ADK_TOOLCHAIN_GCC_5_4_0
+config ADK_TOOLCHAIN_GCC_5
bool "5.4.0"
depends on !ADK_TARGET_ARCH_ARC
depends on !ADK_TARGET_ARCH_AVR32
@@ -67,7 +68,7 @@ config ADK_TOOLCHAIN_GCC_5_4_0
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
-config ADK_TOOLCHAIN_GCC_4_9_4
+config ADK_TOOLCHAIN_GCC_4_9
bool "4.9.4"
depends on !ADK_TARGET_ARCH_ARC
depends on !ADK_TARGET_ARCH_AVR32
@@ -81,8 +82,8 @@ config ADK_TOOLCHAIN_GCC_4_9_4
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
-config ADK_TOOLCHAIN_GCC_5_3_OR1K
- bool "5.3-or1k"
+config ADK_TOOLCHAIN_GCC_OR1K
+ bool "or1k"
select ADK_DISABLE_HONOUR_CFLAGS
depends on ADK_TARGET_ARCH_OR1K
@@ -91,11 +92,11 @@ config ADK_TOOLCHAIN_GCC_ARC
depends on ADK_TARGET_ARCH_ARC
select ADK_DISABLE_HONOUR_CFLAGS
-config ADK_TOOLCHAIN_GCC_4_4_7
+config ADK_TOOLCHAIN_GCC_4_4
bool "4.4.7"
depends on ADK_TARGET_ARCH_AVR32
-config ADK_TOOLCHAIN_GCC_4_2_4
+config ADK_TOOLCHAIN_GCC_4_2
bool "4.2.4"
depends on ADK_TARGET_ARCH_METAG
select ADK_DISABLE_HONOUR_CFLAGS
diff --git a/toolchain/gcc/Makefile.inc b/toolchain/gcc/Makefile.inc
index c970c05c5..a13750b87 100644
--- a/toolchain/gcc/Makefile.inc
+++ b/toolchain/gcc/Makefile.inc
@@ -2,15 +2,15 @@
# material, please see the LICENCE file in the top-level directory.
PKG_NAME:= gcc
-ifeq ($(ADK_TOOLCHAIN_GCC_6_1_0),y)
-PKG_VERSION:= 6.1.0
-PKG_HASH:= 724a61d190f27d5028791587149c6a6d6a312d6659a61636be5be86b6e809b59
+ifeq ($(ADK_TOOLCHAIN_GCC_6),y)
+PKG_VERSION:= 6.2.0
+PKG_HASH:= ba8c49e54f1b3e04434d6261e5718ed843d1ba3e54a070740913acfbd815e577
PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
PKG_RELEASE:= 1
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 22
endif
-ifeq ($(ADK_TOOLCHAIN_GCC_5_4_0),y)
+ifeq ($(ADK_TOOLCHAIN_GCC_5),y)
PKG_VERSION:= 5.4.0
PKG_HASH:= 37089e80c3f2e9a0663d7ccc51c2a6c7dbbf3275bc1e4ed1ed3b1460cd5b3030
PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
@@ -18,15 +18,7 @@ PKG_RELEASE:= 1
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 21
endif
-ifeq ($(ADK_TOOLCHAIN_GCC_5_3_OR1K),y)
-PKG_VERSION:= musl-5.3.0
-PKG_GIT:= branch
-PKG_SITES:= https://github.com/openrisc/or1k-gcc.git
-PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
-LIBSTDCXXVER:= 21
-endif
-ifeq ($(ADK_TOOLCHAIN_GCC_4_9_4),y)
+ifeq ($(ADK_TOOLCHAIN_GCC_4_9),y)
PKG_VERSION:= 4.9.4
PKG_HASH:= 1680f92781b92cbdb57d7e4f647c650678c594154cb0d707fd9a994424a9860d
PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
@@ -34,14 +26,6 @@ PKG_RELEASE:= 1
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 20
endif
-ifeq ($(ADK_TOOLCHAIN_GCC_4_8_5),y)
-PKG_VERSION:= 4.8.5
-PKG_HASH:= 1dbc5cd94c9947fe5dffd298e569de7f44c3cedbd428fceea59490d336d8295a
-PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
-PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-LIBSTDCXXVER:= 19
-endif
ifeq ($(ADK_TOOLCHAIN_GCC_ARC),y)
PKG_VERSION:= arc-2016.03
PKG_GIT:= tag
@@ -49,31 +33,15 @@ PKG_SITES:= https://github.com/foss-for-synopsys-dwc-arc-processors/gcc.git
PKG_RELEASE:= 1
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
endif
-ifeq ($(ADK_TOOLCHAIN_GCC_4_7_4),y)
-PKG_VERSION:= 4.7.4
-PKG_HASH:= ddbaa583c5d4e4f0928bf15d9f6b6c283349e16eedc47bde71e1b813f6f37819
-PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
-PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-LIBSTDCXXVER:= 17
-endif
-ifeq ($(ADK_TOOLCHAIN_GCC_4_6_3),y)
-PKG_VERSION:= 4.6.3
-PKG_HASH:= 3122a8f1a30106034ec70bad633c3fd899d8b6a1216c723f0f03be22c2fe65b0
-PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
-PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-LIBSTDCXXVER:= 19
-endif
-ifeq ($(ADK_TOOLCHAIN_GCC_4_5_4),y)
-PKG_VERSION:= 4.5.4
-PKG_HASH:= 33fb968907ef7b6c528f6395ba049eb34c4df859bf5aa6c2bc3856268801e078
-PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
+ifeq ($(ADK_TOOLCHAIN_GCC_OR1K),y)
+PKG_VERSION:= musl-5.3.0
+PKG_GIT:= branch
+PKG_SITES:= https://github.com/openrisc/or1k-gcc.git
PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-LIBSTDCXXVER:= 19
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+LIBSTDCXXVER:= 21
endif
-ifeq ($(ADK_TOOLCHAIN_GCC_4_4_7),y)
+ifeq ($(ADK_TOOLCHAIN_GCC_4_4),y)
PKG_VERSION:= 4.4.7
PKG_HASH:= 76ad7c433af1c798a1e116c4dfa8f5f794f0d32bff65f88c54dcd5e5d146fc32
PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
@@ -81,7 +49,7 @@ PKG_RELEASE:= 1
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 19
endif
-ifeq ($(ADK_TOOLCHAIN_GCC_4_2_4),y)
+ifeq ($(ADK_TOOLCHAIN_GCC_4_2),y)
PKG_VERSION:= 4.2.4
PKG_HASH:= 7cb75c5183bd18f415860084440377016dc78feeee2852227b831f2e4fcaa5d6
PKG_SITES:= http://gcc.cybermirror.org/releases/gcc-${PKG_VERSION}/
diff --git a/toolchain/gcc/patches/4.5.4/cflags-honour.patch b/toolchain/gcc/patches/4.5.4/cflags-honour.patch
deleted file mode 100644
index df61de0d0..000000000
--- a/toolchain/gcc/patches/4.5.4/cflags-honour.patch
+++ /dev/null
@@ -1,232 +0,0 @@
-diff -Nur gcc-4.5.4.orig/gcc/common.opt gcc-4.5.4/gcc/common.opt
---- gcc-4.5.4.orig/gcc/common.opt 2010-03-18 04:01:09.000000000 +0100
-+++ gcc-4.5.4/gcc/common.opt 2014-08-29 11:25:51.000000000 +0200
-@@ -105,6 +105,10 @@
- Common Joined
- Treat specified warning as error
-
-+Werror-maybe-reset
-+Common
-+If environment variable GCC_NO_WERROR is set, act as -Wno-error
-+
- Wextra
- Common Var(extra_warnings) Warning
- Print extra (possibly unwanted) warnings
-@@ -613,6 +617,9 @@
- Common Report Var(flag_guess_branch_prob) Optimization
- Enable guessing of branch probabilities
-
-+fhonour-copts
-+Common RejectNegative
-+
- ; Nonzero means ignore `#ident' directives. 0 means handle them.
- ; Generate position-independent code for executables if possible
- ; On SVR4 targets, it also controls whether or not to emit a
-diff -Nur gcc-4.5.4.orig/gcc/c.opt gcc-4.5.4/gcc/c.opt
---- gcc-4.5.4.orig/gcc/c.opt 2010-04-02 21:54:46.000000000 +0200
-+++ gcc-4.5.4/gcc/c.opt 2014-08-29 11:25:51.000000000 +0200
-@@ -219,6 +219,10 @@
- C ObjC RejectNegative Warning
- This switch is deprecated; use -Werror=implicit-function-declaration instead
-
-+Werror-maybe-reset
-+C ObjC C++ ObjC++
-+; Documented in common.opt
-+
- Wfloat-equal
- C ObjC C++ ObjC++ Var(warn_float_equal) Warning
- Warn if testing floating point numbers for equality
-@@ -633,6 +637,9 @@
- fhonor-std
- C++ ObjC++
-
-+fhonour-copts
-+C ObjC C++ ObjC++ RejectNegative
-+
- fhosted
- C ObjC
- Assume normal C execution environment
-diff -Nur gcc-4.5.4.orig/gcc/c-opts.c gcc-4.5.4/gcc/c-opts.c
---- gcc-4.5.4.orig/gcc/c-opts.c 2010-04-02 21:54:46.000000000 +0200
-+++ gcc-4.5.4/gcc/c-opts.c 2014-08-29 11:25:51.000000000 +0200
-@@ -106,6 +106,9 @@
- /* Number of deferred options scanned for -include. */
- static size_t include_cursor;
-
-+/* Check if a port honours COPTS. */
-+static int honour_copts = 0;
-+
- static void set_Wimplicit (int);
- static void handle_OPT_d (const char *);
- static void set_std_cxx98 (int);
-@@ -472,6 +475,9 @@
- enable_warning_as_error ("implicit-function-declaration", value, CL_C | CL_ObjC);
- break;
-
-+ case OPT_Werror_maybe_reset:
-+ break;
-+
- case OPT_Wformat:
- set_Wformat (value);
- break;
-@@ -704,6 +710,12 @@
- flag_exceptions = value;
- break;
-
-+ case OPT_fhonour_copts:
-+ if (c_language == clk_c) {
-+ honour_copts++;
-+ }
-+ break;
-+
- case OPT_fimplement_inlines:
- flag_implement_inlines = value;
- break;
-@@ -1240,6 +1252,47 @@
- return false;
- }
-
-+ if (c_language == clk_c) {
-+ char *ev = getenv ("GCC_HONOUR_COPTS");
-+ int evv;
-+ if (ev == NULL)
-+ evv = -1;
-+ else if ((*ev == '0') || (*ev == '\0'))
-+ evv = 0;
-+ else if (*ev == '1')
-+ evv = 1;
-+ else if (*ev == '2')
-+ evv = 2;
-+ else if (*ev == 's')
-+ evv = -1;
-+ else {
-+ warning (0, "unknown GCC_HONOUR_COPTS value, assuming 1");
-+ evv = 1; /* maybe depend this on something like MIRBSD_NATIVE? */
-+ }
-+ if (evv == 1) {
-+ if (honour_copts == 0) {
-+ error ("someone does not honour COPTS at all in lenient mode");
-+ return false;
-+ } else if (honour_copts != 1) {
-+ warning (0, "someone does not honour COPTS correctly, passed %d times",
-+ honour_copts);
-+ }
-+ } else if (evv == 2) {
-+ if (honour_copts == 0) {
-+ error ("someone does not honour COPTS at all in strict mode");
-+ return false;
-+ } else if (honour_copts != 1) {
-+ error ("someone does not honour COPTS correctly, passed %d times",
-+ honour_copts);
-+ return false;
-+ }
-+ } else if (evv == 0) {
-+ if (honour_copts != 1)
-+ inform (0, "someone does not honour COPTS correctly, passed %d times",
-+ honour_copts);
-+ }
-+ }
-+
- return true;
- }
-
-diff -Nur gcc-4.5.4.orig/gcc/doc/cppopts.texi gcc-4.5.4/gcc/doc/cppopts.texi
---- gcc-4.5.4.orig/gcc/doc/cppopts.texi 2010-04-02 21:54:46.000000000 +0200
-+++ gcc-4.5.4/gcc/doc/cppopts.texi 2014-08-29 11:25:51.000000000 +0200
-@@ -164,6 +164,11 @@
- Make all warnings into hard errors. Source code which triggers warnings
- will be rejected.
-
-+ at item -Werror-maybe-reset
-+ at opindex Werror-maybe-reset
-+Act like @samp{-Wno-error} if the @env{GCC_NO_WERROR} environment
-+variable is set to anything other than 0 or empty.
-+
- @item -Wsystem-headers
- @opindex Wsystem-headers
- Issue warnings for code in system headers. These are normally unhelpful
-diff -Nur gcc-4.5.4.orig/gcc/doc/invoke.texi gcc-4.5.4/gcc/doc/invoke.texi
---- gcc-4.5.4.orig/gcc/doc/invoke.texi 2011-03-23 23:03:29.000000000 +0100
-+++ gcc-4.5.4/gcc/doc/invoke.texi 2014-08-29 11:25:51.000000000 +0200
-@@ -4324,6 +4324,22 @@
- @option{-Wall} and by @option{-pedantic}, which can be disabled with
- @option{-Wno-pointer-sign}.
-
-+ at item -Werror-maybe-reset
-+ at opindex Werror-maybe-reset
-+Act like @samp{-Wno-error} if the @env{GCC_NO_WERROR} environment
-+variable is set to anything other than 0 or empty.
-+
-+ at item -fhonour-copts
-+ at opindex fhonour-copts
-+If @env{GCC_HONOUR_COPTS} is set to 1, abort if this option is not
-+given at least once, and warn if it is given more than once.
-+If @env{GCC_HONOUR_COPTS} is set to 2, abort if this option is not
-+given exactly once.
-+If @env{GCC_HONOUR_COPTS} is set to 0 or unset, warn if this option
-+is not given exactly once.
-+The warning is quelled if @env{GCC_HONOUR_COPTS} is set to @samp{s}.
-+This flag and environment variable only affect the C language.
-+
- @item -Wstack-protector
- @opindex Wstack-protector
- @opindex Wno-stack-protector
-@@ -6076,7 +6092,7 @@
- second branch or a point immediately following it, depending on whether
- the condition is known to be true or false.
-
--Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
-+Enabled at levels @option{-O3}.
-
- @item -fsplit-wide-types
- @opindex fsplit-wide-types
-diff -Nur gcc-4.5.4.orig/gcc/java/jvspec.c gcc-4.5.4/gcc/java/jvspec.c
---- gcc-4.5.4.orig/gcc/java/jvspec.c 2010-01-20 11:35:38.000000000 +0100
-+++ gcc-4.5.4/gcc/java/jvspec.c 2014-08-29 11:25:51.000000000 +0200
-@@ -667,6 +667,7 @@
- class name. Append dummy `.c' that can be stripped by set_input so %b
- is correct. */
- set_input (concat (main_class_name, "main.c", NULL));
-+ putenv ("GCC_HONOUR_COPTS=s"); /* XXX hack! */
- err = do_spec (jvgenmain_spec);
- if (err == 0)
- {
-diff -Nur gcc-4.5.4.orig/gcc/opts.c gcc-4.5.4/gcc/opts.c
---- gcc-4.5.4.orig/gcc/opts.c 2010-05-17 12:13:28.000000000 +0200
-+++ gcc-4.5.4/gcc/opts.c 2014-08-29 11:25:51.000000000 +0200
-@@ -897,8 +897,6 @@
- flag_schedule_insns_after_reload = opt2;
- #endif
- flag_regmove = opt2;
-- flag_strict_aliasing = opt2;
-- flag_strict_overflow = opt2;
- flag_reorder_blocks = opt2;
- flag_reorder_functions = opt2;
- flag_tree_vrp = opt2;
-@@ -918,6 +916,8 @@
-
- /* -O3 optimizations. */
- opt3 = (optimize >= 3);
-+ flag_strict_aliasing = opt3;
-+ flag_strict_overflow = opt3;
- flag_predictive_commoning = opt3;
- flag_inline_functions = opt3;
- flag_unswitch_loops = opt3;
-@@ -1646,6 +1646,17 @@
- enable_warning_as_error (arg, value, lang_mask);
- break;
-
-+ case OPT_Werror_maybe_reset:
-+ {
-+ char *ev = getenv ("GCC_NO_WERROR");
-+ if ((ev != NULL) && (*ev != '0'))
-+ warnings_are_errors = 0;
-+ }
-+ break;
-+
-+ case OPT_fhonour_copts:
-+ break;
-+
- case OPT_Wlarger_than_:
- /* This form corresponds to -Wlarger-than-.
- Kept for backward compatibility.
diff --git a/toolchain/gcc/patches/4.5.4/disable-dwarf.frv b/toolchain/gcc/patches/4.5.4/disable-dwarf.frv
deleted file mode 100644
index ee4ca01a1..000000000
--- a/toolchain/gcc/patches/4.5.4/disable-dwarf.frv
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nur gcc-4.5.4.orig/gcc/config/t-linux gcc-4.5.4/gcc/config/t-linux
---- gcc-4.5.4.orig/gcc/config/t-linux 2009-04-21 21:03:23.000000000 +0200
-+++ gcc-4.5.4/gcc/config/t-linux 2015-11-21 17:25:52.720653570 +0100
-@@ -27,6 +27,6 @@
- SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver
-
- # Use unwind-dw2-fde-glibc
--LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \
-+LIB2ADDEH = $(srcdir)/unwind-dw2.c \
- $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c
- LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c
diff --git a/toolchain/gcc/patches/4.7.4/armhf.patch b/toolchain/gcc/patches/4.7.4/armhf.patch
deleted file mode 100644
index 4c0bf744d..000000000
--- a/toolchain/gcc/patches/4.7.4/armhf.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-diff -Nur gcc-4.7.2.orig/gcc/config/arm/linux-eabi.h gcc-4.7.2/gcc/config/arm/linux-eabi.h
---- gcc-4.7.2.orig/gcc/config/arm/linux-eabi.h 2011-11-02 16:03:19.000000000 +0100
-+++ gcc-4.7.2/gcc/config/arm/linux-eabi.h 2013-05-03 16:38:21.000000000 +0200
-@@ -34,7 +34,21 @@
- /* We default to a soft-float ABI so that binaries can run on all
- target hardware. */
- #undef TARGET_DEFAULT_FLOAT_ABI
-+#ifdef TARGET_CONFIGURED_FLOAT_ABI
-+#if TARGET_CONFIGURED_FLOAT_ABI == 2
-+#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
-+#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=hard"
-+#elif TARGET_CONFIGURED_FLOAT_ABI == 1
-+#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFTFP
-+#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=softfp"
-+#else
- #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
-+#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft"
-+#endif
-+#else
-+#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
-+#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft"
-+#endif
-
- /* We default to the "aapcs-linux" ABI so that enums are int-sized by
- default. */
-@@ -62,7 +76,45 @@
- /* Use ld-linux.so.3 so that it will be possible to run "classic"
- GNU/Linux binaries on an EABI system. */
- #undef GLIBC_DYNAMIC_LINKER
--#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
-+#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
-+#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
-+#ifdef TARGET_CONFIGURED_FLOAT_ABI
-+#if TARGET_CONFIGURED_FLOAT_ABI == 2
-+#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT
-+#else
-+#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
-+#endif
-+#else
-+#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
-+#endif
-+
-+#define GLIBC_DYNAMIC_LINKER \
-+ "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
-+ %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
-+ %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
-+
-+/* Set the multilib defaults according the configuration, needed to
-+ let gcc -print-multi-dir do the right thing. */
-+
-+#if TARGET_BIG_ENDIAN_DEFAULT
-+#define MULTILIB_DEFAULT_ENDIAN "mbig-endian"
-+#else
-+#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian"
-+#endif
-+
-+#ifndef TARGET_CONFIGURED_THUMB_MODE
-+#define MULTILIB_DEFAULT_MODE "marm"
-+#elif TARGET_CONFIGURED_THUMB_MODE == 1
-+#define MULTILIB_DEFAULT_MODE "mthumb"
-+#else
-+#define MULTILIB_DEFAULT_MODE "marm"
-+#endif
-+
-+#undef MULTILIB_DEFAULTS
-+#define MULTILIB_DEFAULTS \
-+ { MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \
-+ MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" }
-+
-
- /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
- use the GNU/Linux version, not the generic BPABI version. */
diff --git a/toolchain/gcc/patches/4.7.4/cflags.patch b/toolchain/gcc/patches/4.7.4/cflags.patch
deleted file mode 100644
index a9ccdcbc8..000000000
--- a/toolchain/gcc/patches/4.7.4/cflags.patch
+++ /dev/null
@@ -1,241 +0,0 @@
-diff -Nur gcc-4.7.2.orig/gcc/c-family/c-opts.c gcc-4.7.2/gcc/c-family/c-opts.c
---- gcc-4.7.2.orig/gcc/c-family/c-opts.c 2012-01-18 14:10:40.000000000 +0100
-+++ gcc-4.7.2/gcc/c-family/c-opts.c 2012-09-22 12:53:33.000000000 +0200
-@@ -108,6 +108,9 @@
- /* Number of deferred options scanned for -include. */
- static size_t include_cursor;
-
-+/* Check if a port honours COPTS. */
-+static int honour_copts = 0;
-+
- static void handle_OPT_d (const char *);
- static void set_std_cxx98 (int);
- static void set_std_cxx11 (int);
-@@ -449,6 +452,9 @@
- cpp_opts->warn_endif_labels = value;
- break;
-
-+ case OPT_Werror_maybe_reset:
-+ break;
-+
- case OPT_Wformat:
- set_Wformat (value);
- break;
-@@ -592,6 +598,12 @@
- flag_no_builtin = !value;
- break;
-
-+ case OPT_fhonour_copts:
-+ if (c_language == clk_c) {
-+ honour_copts++;
-+ }
-+ break;
-+
- case OPT_fconstant_string_class_:
- constant_string_class_name = arg;
- break;
-@@ -1098,6 +1110,47 @@
- return false;
- }
-
-+ if (c_language == clk_c) {
-+ char *ev = getenv ("GCC_HONOUR_COPTS");
-+ int evv;
-+ if (ev == NULL)
-+ evv = -1;
-+ else if ((*ev == '0') || (*ev == '\0'))
-+ evv = 0;
-+ else if (*ev == '1')
-+ evv = 1;
-+ else if (*ev == '2')
-+ evv = 2;
-+ else if (*ev == 's')
-+ evv = -1;
-+ else {
-+ warning (0, "unknown GCC_HONOUR_COPTS value, assuming 1");
-+ evv = 1; /* maybe depend this on something like MIRBSD_NATIVE? */
-+ }
-+ if (evv == 1) {
-+ if (honour_copts == 0) {
-+ error ("someone does not honour COPTS at all in lenient mode");
-+ return false;
-+ } else if (honour_copts != 1) {
-+ warning (0, "someone does not honour COPTS correctly, passed %d times",
-+ honour_copts);
-+ }
-+ } else if (evv == 2) {
-+ if (honour_copts == 0) {
-+ error ("someone does not honour COPTS at all in strict mode");
-+ return false;
-+ } else if (honour_copts != 1) {
-+ error ("someone does not honour COPTS correctly, passed %d times",
-+ honour_copts);
-+ return false;
-+ }
-+ } else if (evv == 0) {
-+ if (honour_copts != 1)
-+ inform (0, "someone does not honour COPTS correctly, passed %d times",
-+ honour_copts);
-+ }
-+ }
-+
- return true;
- }
-
-diff -Nur gcc-4.7.2.orig/gcc/c-family/c.opt gcc-4.7.2/gcc/c-family/c.opt
---- gcc-4.7.2.orig/gcc/c-family/c.opt 2012-02-06 11:31:18.000000000 +0100
-+++ gcc-4.7.2/gcc/c-family/c.opt 2012-09-22 12:53:33.000000000 +0200
-@@ -371,6 +371,10 @@
- C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
- This switch is deprecated; use -Werror=implicit-function-declaration instead
-
-+Werror-maybe-reset
-+C ObjC C++ ObjC++
-+; Documented in common.opt
-+
- Wfloat-equal
- C ObjC C++ ObjC++ Var(warn_float_equal) Warning
- Warn if testing floating point numbers for equality
-@@ -830,6 +834,9 @@
- fhonor-std
- C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
-
-+fhonour-copts
-+C ObjC C++ ObjC++ RejectNegative
-+
- fhosted
- C ObjC
- Assume normal C execution environment
-diff -Nur gcc-4.7.2.orig/gcc/common.opt gcc-4.7.2/gcc/common.opt
---- gcc-4.7.2.orig/gcc/common.opt 2012-08-06 16:34:27.000000000 +0200
-+++ gcc-4.7.2/gcc/common.opt 2012-09-22 12:53:33.000000000 +0200
-@@ -531,6 +531,10 @@
- Common Joined
- Treat specified warning as error
-
-+Werror-maybe-reset
-+Common
-+If environment variable GCC_NO_WERROR is set, act as -Wno-error
-+
- Wextra
- Common Var(extra_warnings) Warning
- Print extra (possibly unwanted) warnings
-@@ -1209,6 +1213,9 @@
- Common Report Var(flag_guess_branch_prob) Optimization
- Enable guessing of branch probabilities
-
-+fhonour-copts
-+Common RejectNegative
-+
- ; Nonzero means ignore `#ident' directives. 0 means handle them.
- ; Generate position-independent code for executables if possible
- ; On SVR4 targets, it also controls whether or not to emit a
-diff -Nur gcc-4.7.2.orig/gcc/doc/cppopts.texi gcc-4.7.2/gcc/doc/cppopts.texi
---- gcc-4.7.2.orig/gcc/doc/cppopts.texi 2011-12-20 21:44:13.000000000 +0100
-+++ gcc-4.7.2/gcc/doc/cppopts.texi 2012-09-22 12:53:33.000000000 +0200
-@@ -164,6 +164,11 @@
- Make all warnings into hard errors. Source code which triggers warnings
- will be rejected.
-
-+ at item -Werror-maybe-reset
-+ at opindex Werror-maybe-reset
-+Act like @samp{-Wno-error} if the @env{GCC_NO_WERROR} environment
-+variable is set to anything other than 0 or empty.
-+
- @item -Wsystem-headers
- @opindex Wsystem-headers
- Issue warnings for code in system headers. These are normally unhelpful
-diff -Nur gcc-4.7.2.orig/gcc/doc/invoke.texi gcc-4.7.2/gcc/doc/invoke.texi
---- gcc-4.7.2.orig/gcc/doc/invoke.texi 2012-09-14 22:45:27.000000000 +0200
-+++ gcc-4.7.2/gcc/doc/invoke.texi 2012-09-22 12:53:33.000000000 +0200
-@@ -242,7 +242,7 @@
- -Wconversion -Wcoverage-mismatch -Wno-cpp -Wno-deprecated @gol
- -Wno-deprecated-declarations -Wdisabled-optimization @gol
- -Wno-div-by-zero -Wdouble-promotion -Wempty-body -Wenum-compare @gol
---Wno-endif-labels -Werror -Werror=* @gol
-+-Wno-endif-labels -Werror -Werror=* -Werror-maybe-reset @gol
- -Wfatal-errors -Wfloat-equal -Wformat -Wformat=2 @gol
- -Wno-format-contains-nul -Wno-format-extra-args -Wformat-nonliteral @gol
- -Wformat-security -Wformat-y2k @gol
-@@ -4651,6 +4651,22 @@
- @option{-Wall} and by @option{-pedantic}, which can be disabled with
- @option{-Wno-pointer-sign}.
-
-+ at item -Werror-maybe-reset
-+ at opindex Werror-maybe-reset
-+Act like @samp{-Wno-error} if the @env{GCC_NO_WERROR} environment
-+variable is set to anything other than 0 or empty.
-+
-+ at item -fhonour-copts
-+ at opindex fhonour-copts
-+If @env{GCC_HONOUR_COPTS} is set to 1, abort if this option is not
-+given at least once, and warn if it is given more than once.
-+If @env{GCC_HONOUR_COPTS} is set to 2, abort if this option is not
-+given exactly once.
-+If @env{GCC_HONOUR_COPTS} is set to 0 or unset, warn if this option
-+is not given exactly once.
-+The warning is quelled if @env{GCC_HONOUR_COPTS} is set to @samp{s}.
-+This flag and environment variable only affect the C language.
-+
- @item -Wstack-protector
- @opindex Wstack-protector
- @opindex Wno-stack-protector
-@@ -6570,7 +6586,7 @@
- second branch or a point immediately following it, depending on whether
- the condition is known to be true or false.
-
--Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
-+Enabled at levels @option{-O3}.
-
- @item -fsplit-wide-types
- @opindex fsplit-wide-types
-diff -Nur gcc-4.7.2.orig/gcc/java/jvspec.c gcc-4.7.2/gcc/java/jvspec.c
---- gcc-4.7.2.orig/gcc/java/jvspec.c 2011-02-13 20:20:01.000000000 +0100
-+++ gcc-4.7.2/gcc/java/jvspec.c 2012-09-22 12:53:33.000000000 +0200
-@@ -627,6 +627,7 @@
- class name. Append dummy `.c' that can be stripped by set_input so %b
- is correct. */
- set_input (concat (main_class_name, "main.c", NULL));
-+ putenv ("GCC_HONOUR_COPTS=s"); /* XXX hack! */
- err = do_spec (jvgenmain_spec);
- if (err == 0)
- {
-diff -Nur gcc-4.7.2.orig/gcc/opts.c gcc-4.7.2/gcc/opts.c
---- gcc-4.7.2.orig/gcc/opts.c 2012-01-10 17:27:55.000000000 +0100
-+++ gcc-4.7.2/gcc/opts.c 2012-09-22 12:53:33.000000000 +0200
-@@ -470,8 +470,6 @@
- { OPT_LEVELS_2_PLUS, OPT_fschedule_insns2, NULL, 1 },
- #endif
- { OPT_LEVELS_2_PLUS, OPT_fregmove, NULL, 1 },
-- { OPT_LEVELS_2_PLUS, OPT_fstrict_aliasing, NULL, 1 },
-- { OPT_LEVELS_2_PLUS, OPT_fstrict_overflow, NULL, 1 },
- { OPT_LEVELS_2_PLUS, OPT_freorder_blocks, NULL, 1 },
- { OPT_LEVELS_2_PLUS, OPT_freorder_functions, NULL, 1 },
- { OPT_LEVELS_2_PLUS, OPT_ftree_vrp, NULL, 1 },
-@@ -489,6 +487,8 @@
- { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_foptimize_strlen, NULL, 1 },
-
- /* -O3 optimizations. */
-+ { OPT_LEVELS_3_PLUS, OPT_fstrict_aliasing, NULL, 1 },
-+ { OPT_LEVELS_3_PLUS, OPT_fstrict_overflow, NULL, 1 },
- { OPT_LEVELS_3_PLUS, OPT_ftree_loop_distribute_patterns, NULL, 1 },
- { OPT_LEVELS_3_PLUS, OPT_fpredictive_commoning, NULL, 1 },
- /* Inlining of functions reducing size is a good idea with -Os
-@@ -1432,6 +1432,17 @@
- opts, opts_set, loc, dc);
- break;
-
-+ case OPT_Werror_maybe_reset:
-+ {
-+ char *ev = getenv ("GCC_NO_WERROR");
-+ if ((ev != NULL) && (*ev != '0'))
-+ warnings_are_errors = 0;
-+ }
-+ break;
-+
-+ case OPT_fhonour_copts:
-+ break;
-+
- case OPT_Wlarger_than_:
- opts->x_larger_than_size = value;
- opts->x_warn_larger_than = value != -1;
diff --git a/toolchain/gcc/patches/4.7.4/openbsd-lto.patch b/toolchain/gcc/patches/4.7.4/openbsd-lto.patch
deleted file mode 100644
index 8a94971b7..000000000
--- a/toolchain/gcc/patches/4.7.4/openbsd-lto.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -Nur gcc-4.7.3.orig/gcc/config.host gcc-4.7.3/gcc/config.host
---- gcc-4.7.3.orig/gcc/config.host Tue Oct 18 08:14:14 2011
-+++ gcc-4