diff options
| author | Waldemar Brodkorb <wbx@openadk.org> | 2014-03-01 09:40:19 +0100 | 
|---|---|---|
| committer | Waldemar Brodkorb <wbx@openadk.org> | 2014-03-01 09:40:19 +0100 | 
| commit | 0a9ca018d598a1d263ebc9d45f41af0bdd498274 (patch) | |
| tree | 4409eaed2cfea2ee25a6474f4bce0be63ca62814 /toolchain/gcc/patches/4.8.2/cflags.patch | |
| parent | 48125484eaaf38ed6b373924fee593b3e0d5c920 (diff) | |
| parent | 3542293b7fcf88cc6aff3696026a7568c43cdd3f (diff) | |
Merge branch 'master' of git+ssh://openadk.org/git/openadk
Diffstat (limited to 'toolchain/gcc/patches/4.8.2/cflags.patch')
| -rw-r--r-- | toolchain/gcc/patches/4.8.2/cflags.patch | 231 | 
1 files changed, 231 insertions, 0 deletions
| diff --git a/toolchain/gcc/patches/4.8.2/cflags.patch b/toolchain/gcc/patches/4.8.2/cflags.patch new file mode 100644 index 000000000..4f9de8069 --- /dev/null +++ b/toolchain/gcc/patches/4.8.2/cflags.patch @@ -0,0 +1,231 @@ +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 { ++      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.8.2.orig/gcc/common.opt gcc-4.8.2/gcc/common.opt +--- gcc-4.8.2.orig/gcc/common.opt	2013-03-14 10:13:36.000000000 +0100 ++++ gcc-4.8.2/gcc/common.opt	2014-02-23 20:22:48.000000000 +0100 +@@ -541,6 +541,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 +@@ -1242,6 +1246,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.8.2.orig/gcc/doc/cppopts.texi gcc-4.8.2/gcc/doc/cppopts.texi +--- gcc-4.8.2.orig/gcc/doc/cppopts.texi	2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/doc/cppopts.texi	2014-02-23 20:22:48.000000000 +0100 +@@ -163,6 +163,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.8.2.orig/gcc/doc/invoke.texi gcc-4.8.2/gcc/doc/invoke.texi +--- gcc-4.8.2.orig/gcc/doc/invoke.texi	2013-06-19 21:55:50.000000000 +0200 ++++ gcc-4.8.2/gcc/doc/invoke.texi	2014-02-23 20:22:48.000000000 +0100 +@@ -240,7 +240,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 +@@ -4807,6 +4807,22 @@ + @option{-Wall} and by @option{-Wpedantic}, 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 +@@ -6918,7 +6934,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.8.2.orig/gcc/java/jvspec.c gcc-4.8.2/gcc/java/jvspec.c +--- gcc-4.8.2.orig/gcc/java/jvspec.c	2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/java/jvspec.c	2014-02-23 20:22:48.000000000 +0100 +@@ -626,6 +626,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.8.2.orig/gcc/opts.c gcc-4.8.2/gcc/opts.c +--- gcc-4.8.2.orig/gcc/opts.c	2013-03-05 07:01:13.000000000 +0100 ++++ gcc-4.8.2/gcc/opts.c	2014-02-23 20:22:48.000000000 +0100 +@@ -468,8 +468,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 }, +@@ -488,6 +486,8 @@ +     { OPT_LEVELS_2_PLUS, OPT_fhoist_adjacent_loads, 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 +@@ -1423,6 +1423,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; | 
