diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-poison-parameters.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.6.0/gcc-poison-parameters.patch | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-poison-parameters.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-poison-parameters.patch new file mode 100644 index 0000000..f36fa81 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-poison-parameters.patch @@ -0,0 +1,74 @@ +gcc: add poison parameters detection + +Add the logic that, if not configured with "--enable-target-optspace", +gcc will meet error when build target app with "-Os" option. +This could avoid potential binary crash. + +Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> + +Index: gcc-4.6.0/gcc/config.in +=================================================================== +--- gcc-4.6.0.orig/gcc/config.in ++++ gcc-4.6.0/gcc/config.in +@@ -150,6 +150,12 @@ + #endif + + ++/* Define to enable target optspace support. */ ++#ifndef USED_FOR_TARGET ++#undef ENABLE_TARGET_OPTSPACE ++#endif ++ ++ + /* Define if you want all operations on RTL (the basic data structure of the + optimizer and back end) to be checked for dynamic type safety at runtime. + This is quite expensive. */ +Index: gcc-4.6.0/gcc/configure +=================================================================== +--- gcc-4.6.0.orig/gcc/configure ++++ gcc-4.6.0/gcc/configure +@@ -26434,6 +26434,13 @@ $as_echo "#define ENABLE_LIBQUADMATH_SUP + fi + + ++if test x"$enable_target_optspace" != x; then : ++ ++$as_echo "#define ENABLE_TARGET_OPTSPACE 1" >>confdefs.h ++ ++fi ++ ++ + # Configure the subdirectories + # AC_CONFIG_SUBDIRS($subdirs) + +Index: gcc-4.6.0/gcc/configure.ac +=================================================================== +--- gcc-4.6.0.orig/gcc/configure.ac ++++ gcc-4.6.0/gcc/configure.ac +@@ -4907,6 +4907,11 @@ if test "${ENABLE_LIBQUADMATH_SUPPORT}" + fi + + ++AC_SUBST(enable_target_optspace) ++if test x"$enable_target_optspace" != x; then ++ AC_DEFINE(ENABLE_TARGET_OPTSPACE, 1, [Define to enable target optspace support.]) ++fi ++ + # Configure the subdirectories + # AC_CONFIG_SUBDIRS($subdirs) + +Index: gcc-4.6.0/gcc/opts.c +=================================================================== +--- gcc-4.6.0.orig/gcc/opts.c ++++ gcc-4.6.0/gcc/opts.c +@@ -605,6 +605,10 @@ default_options_optimization (struct gcc + maybe_set_param_value (PARAM_MIN_CROSSJUMP_INSNS, + default_param_value (PARAM_MIN_CROSSJUMP_INSNS), + opts->x_param_values, opts_set->x_param_values); ++#ifndef ENABLE_TARGET_OPTSPACE ++ if (optimize_size == 1) ++ error ("Do not use -Os option if --enable-target-optspace is not set."); ++#endif + + /* Allow default optimizations to be specified on a per-machine basis. */ + maybe_default_options (opts, opts_set, |