diff options
Diffstat (limited to 'src/patchsets/gcc/7.3.0/gentoo/55_all_extra-options.patch')
-rw-r--r-- | src/patchsets/gcc/7.3.0/gentoo/55_all_extra-options.patch | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/patchsets/gcc/7.3.0/gentoo/55_all_extra-options.patch b/src/patchsets/gcc/7.3.0/gentoo/55_all_extra-options.patch new file mode 100644 index 0000000000..ff14c100ca --- /dev/null +++ b/src/patchsets/gcc/7.3.0/gentoo/55_all_extra-options.patch @@ -0,0 +1,87 @@ +On Hardened we add or remove some options like -fstack-check, +-fstack-protector-all, -fstrict_overflow and -z now + +--- a/libgcc/Makefile.in 2011-11-22 04:01:02.000000000 +0100 ++++ b/libgcc/Makefile.in 2011-12-25 15:18:22.449610631 +0100 +@@ -225,7 +225,7 @@ endif + LIBGCC2_DEBUG_CFLAGS = -g + LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \ + $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \ +- -fbuilding-libgcc -fno-stack-protector \ ++ -fbuilding-libgcc -fno-stack-protector -fstack-check=no \ + $(INHIBIT_LIBC_CFLAGS) + + # Additional options to use when compiling libgcc2.a. +@@ -279,7 +290,7 @@ INTERNAL_CFLAGS = $(CFLAGS) $(LIBGCC2_CF + -finhibit-size-directive -fno-inline -fno-exceptions \ + -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \ + -fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \ +- $(INHIBIT_LIBC_CFLAGS) ++ -fstack-check=no $(INHIBIT_LIBC_CFLAGS) + + # Extra flags to use when compiling crt{begin,end}.o. + CRTSTUFF_T_CFLAGS = +--- a/gcc/defaults.h 2016-01-04 15:30:50.000000000 +0100 ++++ b/gcc/defaults.h 2016-05-02 22:23:43.815707806 +0200 +@@ -1398,8 +1398,12 @@ see the files COPYING3 and COPYING.RUNTI + /* Default value for flag_stack_protect when flag_stack_protect is initialized to -1: + --enable-default-ssp: Default flag_stack_protect to -fstack-protector-strong. + --disable-default-ssp: Default flag_stack_protect to 0. ++ Hardened: Default flag_stack_protect to -fstack-protector-all. + */ + #ifdef ENABLE_DEFAULT_SSP ++# ifdef EXTRA_OPTIONS ++# define DEFAULT_FLAG_SSP 2 ++# endif + # ifndef DEFAULT_FLAG_SSP + # define DEFAULT_FLAG_SSP 3 + # endif +--- a/gcc/gcc.c 2016-02-19 23:18:38.000000000 +0100 ++++ b/gcc/gcc.c 2016-05-02 22:56:10.185721270 +0200 +@@ -868,6 +868,13 @@ proper position among the other output f + #endif + #endif + ++#define STACK_CHECK_SPEC "%{fstack-check|fstack-check=*:;: -fstack-check} " ++#ifdef EXTRA_OPTIONS ++#define LINK_NOW_SPEC "%{!nonow:-z now} " ++#else ++#define LINK_NOW_SPEC "" ++#endif ++ + #ifdef ENABLE_DEFAULT_PIE + #define NO_PIE_SPEC "no-pie|static" + #define PIE_SPEC NO_PIE_SPEC "|r|shared:;" +@@ -1013,7 +1020,7 @@ proper position among the other output f + %(linker) " \ + LINK_PLUGIN_SPEC \ + "%{flto|flto=*:%<fcompare-debug*} \ +- %{flto} %{fno-lto} %{flto=*} %l " LINK_PIE_SPEC \ ++ %{flto} %{fno-lto} %{flto=*} %l " LINK_PIE_SPEC LINK_NOW_SPEC \ + "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \ + "%X %{o*} %{e*} %{N} %{n} %{r}\ + %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} \ +@@ -1052,7 +1059,11 @@ proper position among the other output f + + static const char *asm_debug = ASM_DEBUG_SPEC; + static const char *cpp_spec = CPP_SPEC; ++#ifdef EXTRA_OPTIONS ++static const char *cc1_spec = CC1_SPEC STACK_CHECK_SPEC; ++#else + static const char *cc1_spec = CC1_SPEC; ++#endif + static const char *cc1plus_spec = CC1PLUS_SPEC; + static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC; + static const char *link_ssp_spec = LINK_SSP_SPEC; +--- a/gcc/opts.c 2016-03-17 16:11:35.000000000 +0100 ++++ b/gcc/opts.c 2016-04-27 16:48:59.952580580 +0200 +@@ -495,7 +495,9 @@ static const struct default_options defa + { OPT_LEVELS_2_PLUS, OPT_fschedule_insns2, NULL, 1 }, + #endif + { OPT_LEVELS_2_PLUS, OPT_fstrict_aliasing, NULL, 1 }, ++#ifndef EXTRA_OPTIONS + { OPT_LEVELS_2_PLUS, OPT_fstrict_overflow, NULL, 1 }, ++#endif + { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_freorder_blocks_algorithm_, NULL, + REORDER_BLOCKS_ALGORITHM_STC }, + { OPT_LEVELS_2_PLUS, OPT_freorder_functions, NULL, 1 }, |