summaryrefslogtreecommitdiff
path: root/toolchain/gcc/patches
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain/gcc/patches')
-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
26 files changed, 0 insertions, 4861 deletions
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.7.3/gcc/config.host Tue Jan 7 04:33:29 2014
-@@ -292,6 +292,9 @@
- out_host_hook_obj=host-solaris.o
- host_xmake_file="${host_xmake_file} x-solaris"
- ;;
-+ *-*-openbsd*)
-+ host_lto_plugin_soname=liblto_plugin.so.0.0
-+ ;;
- *-*-linux*)
- out_host_hook_obj=host-linux.o
- host_xmake_file="${host_xmake_file} x-linux"
diff --git a/toolchain/gcc/patches/4.7.4/ppc-uclibc-cmath.patch b/toolchain/gcc/patches/4.7.4/ppc-uclibc-cmath.patch
deleted file mode 100644
index 0e64e8d0e..000000000
--- a/toolchain/gcc/patches/4.7.4/ppc-uclibc-cmath.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-diff -Nur gcc-4.7.3.orig/libstdc++-v3/include/tr1/cmath gcc-4.7.3/libstdc++-v3/include/tr1/cmath
---- gcc-4.7.3.orig/libstdc++-v3/include/tr1/cmath 2011-11-14 00:51:42.000000000 +0100
-+++ gcc-4.7.3/libstdc++-v3/include/tr1/cmath 2013-09-22 20:13:54.000000000 +0200
-@@ -159,143 +159,213 @@
- // functions
- using ::acosh;
- using ::acoshf;
-+#ifdef __LONG_DOUBLE_128__
- using ::acoshl;
-+#endif
-
- using ::asinh;
- using ::asinhf;
-+#ifdef __LONG_DOUBLE_128__
- using ::asinhl;
-+#endif
-
- using ::atanh;
- using ::atanhf;
-+#ifdef __LONG_DOUBLE_128__
- using ::atanhl;
-+#endif
-
- using ::cbrt;
- using ::cbrtf;
-+#ifdef __LONG_DOUBLE_128__
- using ::cbrtl;
-+#endif
-
- using ::copysign;
- using ::copysignf;
-+#ifdef __LONG_DOUBLE_128__
- using ::copysignl;
-+#endif
-
- using ::erf;
- using ::erff;
-+#ifdef __LONG_DOUBLE_128__
- using ::erfl;
-+#endif
-
- using ::erfc;
- using ::erfcf;
-+#ifdef __LONG_DOUBLE_128__
- using ::erfcl;
-+#endif
-
- using ::exp2;
- using ::exp2f;
-+#ifdef __LONG_DOUBLE_128__
- using ::exp2l;
-+#endif
-
- using ::expm1;
- using ::expm1f;
-+#ifdef __LONG_DOUBLE_128__
- using ::expm1l;
-+#endif
-
- using ::fdim;
- using ::fdimf;
-+#ifdef __LONG_DOUBLE_128__
- using ::fdiml;
-+#endif
-
- using ::fma;
- using ::fmaf;
-+#ifdef __LONG_DOUBLE_128__
- using ::fmal;
-+#endif
-
- using ::fmax;
- using ::fmaxf;
-+#ifdef __LONG_DOUBLE_128__
- using ::fmaxl;
-+#endif
-
- using ::fmin;
- using ::fminf;
-+#ifdef __LONG_DOUBLE_128__
- using ::fminl;
-+#endif
-
- using ::hypot;
- using ::hypotf;
-+#ifdef __LONG_DOUBLE_128__
- using ::hypotl;
-+#endif
-
- using ::ilogb;
- using ::ilogbf;
-+#ifdef __LONG_DOUBLE_128__
- using ::ilogbl;
-+#endif
-
- using ::lgamma;
- using ::lgammaf;
-+#ifdef __LONG_DOUBLE_128__
- using ::lgammal;
-+#endif
-
- using ::llrint;
- using ::llrintf;
-+#ifdef __LONG_DOUBLE_128__
- using ::llrintl;
-+#endif
-
- using ::llround;
- using ::llroundf;
-+#ifdef __LONG_DOUBLE_128__
- using ::llroundl;
-+#endif
-
- using ::log1p;
- using ::log1pf;
-+#ifdef __LONG_DOUBLE_128__
- using ::log1pl;
-+#endif
-
- using ::log2;
- using ::log2f;
-+#ifdef __LONG_DOUBLE_128__
- using ::log2l;
-+#endif
-
- using ::logb;
- using ::logbf;
-+#ifdef __LONG_DOUBLE_128__
- using ::logbl;
-+#endif
-
- using ::lrint;
- using ::lrintf;
-+#ifdef __LONG_DOUBLE_128__
- using ::lrintl;
-+#endif
-
- using ::lround;
- using ::lroundf;
-+#ifdef __LONG_DOUBLE_128__
- using ::lroundl;
-+#endif
-
- using ::nan;
- using ::nanf;
-+#ifdef __LONG_DOUBLE_128__
- using ::nanl;
-+#endif
-
- using ::nearbyint;
- using ::nearbyintf;
-+#ifdef __LONG_DOUBLE_128__
- using ::nearbyintl;
-+#endif
-
- using ::nextafter;
- using ::nextafterf;
-+#ifdef __LONG_DOUBLE_128__
- using ::nextafterl;
-+#endif
-
- using ::nexttoward;
- using ::nexttowardf;
-+#ifdef __LONG_DOUBLE_128__
- using ::nexttowardl;
-+#endif
-
- using ::remainder;
- using ::remainderf;
-+#ifdef __LONG_DOUBLE_128__
- using ::remainderl;
-+#endif
-
- using ::remquo;
- using ::remquof;
-+#ifdef __LONG_DOUBLE_128__
- using ::remquol;
-+#endif
-
- using ::rint;
- using ::rintf;
-+#ifdef __LONG_DOUBLE_128__
- using ::rintl;
-+#endif
-
- using ::round;
- using ::roundf;
-+#ifdef __LONG_DOUBLE_128__
- using ::roundl;
-+#endif
-
- using ::scalbln;
- using ::scalblnf;
-+#ifdef __LONG_DOUBLE_128__
- using ::scalblnl;
-+#endif
-
- using ::scalbn;
- using ::scalbnf;
-+#ifdef __LONG_DOUBLE_128__
- using ::scalbnl;
-+#endif
-
- using ::tgamma;
- using ::tgammaf;
-+#ifdef __LONG_DOUBLE_128__
- using ::tgammal;
-+#endif
-
- using ::trunc;
- using ::truncf;
-+#ifdef __LONG_DOUBLE_128__
- using ::truncl;
-+#endif
-
- #endif
-
diff --git a/toolchain/gcc/patches/4.8.3/cflags.patch b/toolchain/gcc/patches/4.8.3/cflags.patch
deleted file mode 100644
index 4f9de8069..000000000
--- a/toolchain/gcc/patches/4.8.3/cflags.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-diff -Nur gcc-4.8.2.orig/gcc/c-family/c.opt gcc-4.8.2/gcc/c-family/c.opt
---- gcc-4.8.2.orig/gcc/c-family/c.opt 2013-01-19 06:25:25.000000000 +0100
-+++ gcc-4.8.2/gcc/c-family/c.opt 2014-02-23 20:22:48.000000000 +0100
-@@ -379,6 +379,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
-@@ -949,6 +953,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.8.2.orig/gcc/c-family/c-opts.c gcc-4.8.2/gcc/c-family/c-opts.c
---- gcc-4.8.2.orig/gcc/c-family/c-opts.c 2013-02-18 20:42:56.000000000 +0100
-+++ gcc-4.8.2/gcc/c-family/c-opts.c 2014-02-23 20:22:48.000000000 +0100
-@@ -104,6 +104,9 @@
- /* Whether any standard preincluded header has been preincluded. */
- static bool done_preinclude;
-
-+/* 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);
-@@ -491,6 +494,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;
-@@ -1027,6 +1036,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 {
-+