svn commit: r296456 - in stable/9/contrib/gcc: . doc
Pedro F. Giffuni
pfg at FreeBSD.org
Mon Mar 7 15:21:02 UTC 2016
Author: pfg
Date: Mon Mar 7 15:20:59 2016
New Revision: 296456
URL: https://svnweb.freebsd.org/changeset/base/296456
Log:
Revert r286714: Add a new option "-fstack-protector-strong".
The stack-protector-strong option was causing problems when building
perl5. This was never within the official featureset of the older GCC
4.x toolchain so just drop it to avoid patching the perl port.
PR: 205307
Modified:
stable/9/contrib/gcc/c-cppbuiltin.c
stable/9/contrib/gcc/cfgexpand.c
stable/9/contrib/gcc/common.opt
stable/9/contrib/gcc/doc/cpp.texi
stable/9/contrib/gcc/doc/gcc.1
stable/9/contrib/gcc/doc/invoke.texi
stable/9/contrib/gcc/gcc.c
Directory Properties:
stable/9/contrib/gcc/ (props changed)
Modified: stable/9/contrib/gcc/c-cppbuiltin.c
==============================================================================
--- stable/9/contrib/gcc/c-cppbuiltin.c Mon Mar 7 15:00:34 2016 (r296455)
+++ stable/9/contrib/gcc/c-cppbuiltin.c Mon Mar 7 15:20:59 2016 (r296456)
@@ -545,9 +545,7 @@ c_cpp_builtins (cpp_reader *pfile)
/* Make the choice of the stack protector runtime visible to source code.
The macro names and values here were chosen for compatibility with an
earlier implementation, i.e. ProPolice. */
- if (flag_stack_protect == 3)
- cpp_define (pfile, "__SSP_STRONG__=3");
- else if (flag_stack_protect == 2)
+ if (flag_stack_protect == 2)
cpp_define (pfile, "__SSP_ALL__=2");
else if (flag_stack_protect == 1)
cpp_define (pfile, "__SSP__=1");
Modified: stable/9/contrib/gcc/cfgexpand.c
==============================================================================
--- stable/9/contrib/gcc/cfgexpand.c Mon Mar 7 15:00:34 2016 (r296455)
+++ stable/9/contrib/gcc/cfgexpand.c Mon Mar 7 15:20:59 2016 (r296456)
@@ -810,12 +810,6 @@ clear_tree_used (tree block)
clear_tree_used (t);
}
-enum {
- SPCT_FLAG_DEFAULT = 1,
- SPCT_FLAG_ALL = 2,
- SPCT_FLAG_STRONG = 3
-};
-
/* Examine TYPE and determine a bit mask of the following features. */
#define SPCT_HAS_LARGE_CHAR_ARRAY 1
@@ -885,8 +879,7 @@ stack_protect_decl_phase (tree decl)
if (bits & SPCT_HAS_SMALL_CHAR_ARRAY)
has_short_buffer = true;
- if (flag_stack_protect == SPCT_FLAG_ALL
- || flag_stack_protect == SPCT_FLAG_STRONG)
+ if (flag_stack_protect == 2)
{
if ((bits & (SPCT_HAS_SMALL_CHAR_ARRAY | SPCT_HAS_LARGE_CHAR_ARRAY))
&& !(bits & SPCT_HAS_AGGREGATE))
@@ -954,36 +947,12 @@ create_stack_guard (void)
cfun->stack_protect_guard = guard;
}
-/* Helper routine to check if a record or union contains an array field. */
-
-static int
-record_or_union_type_has_array_p (tree tree_type)
-{
- tree fields = TYPE_FIELDS (tree_type);
- tree f;
-
- for (f = fields; f; f = TREE_CHAIN (f))
- if (TREE_CODE (f) == FIELD_DECL)
- {
- tree field_type = TREE_TYPE (f);
- if ((TREE_CODE (field_type) == RECORD_TYPE
- || TREE_CODE (field_type) == UNION_TYPE
- || TREE_CODE (field_type) == QUAL_UNION_TYPE)
- && record_or_union_type_has_array_p (field_type))
- return 1;
- if (TREE_CODE (field_type) == ARRAY_TYPE)
- return 1;
- }
- return 0;
-}
-
/* Expand all variables used in the function. */
static void
expand_used_vars (void)
{
tree t, outer_block = DECL_INITIAL (current_function_decl);
- bool gen_stack_protect_signal = false;
/* Compute the phase of the stack frame for this function. */
{
@@ -1003,29 +972,6 @@ expand_used_vars (void)
has_protected_decls = false;
has_short_buffer = false;
- if (flag_stack_protect == SPCT_FLAG_STRONG)
- for (t = cfun->unexpanded_var_list; t; t = TREE_CHAIN (t))
- {
- tree var = TREE_VALUE (t);
- if (!is_global_var (var))
- {
- tree var_type = TREE_TYPE (var);
- /* Examine local referenced variables that have their addresses
- * taken, contain an array, or are arrays. */
- if (TREE_CODE (var) == VAR_DECL
- && (TREE_CODE (var_type) == ARRAY_TYPE
- || TREE_ADDRESSABLE (var)
- || ((TREE_CODE (var_type) == RECORD_TYPE
- || TREE_CODE (var_type) == UNION_TYPE
- || TREE_CODE (var_type) == QUAL_UNION_TYPE)
- && record_or_union_type_has_array_p (var_type))))
- {
- gen_stack_protect_signal = true;
- break;
- }
- }
- }
-
/* At this point all variables on the unexpanded_var_list with TREE_USED
set are not associated with any block scope. Lay them out. */
for (t = cfun->unexpanded_var_list; t; t = TREE_CHAIN (t))
@@ -1086,26 +1032,12 @@ expand_used_vars (void)
dump_stack_var_partition ();
}
- switch (flag_stack_protect)
- {
- case SPCT_FLAG_ALL:
- create_stack_guard ();
- break;
-
- case SPCT_FLAG_STRONG:
- if (gen_stack_protect_signal
- || current_function_calls_alloca || has_protected_decls)
- create_stack_guard ();
- break;
-
- case SPCT_FLAG_DEFAULT:
- if (current_function_calls_alloca || has_protected_decls)
- create_stack_guard();
- break;
-
- default:
- ;
- }
+ /* There are several conditions under which we should create a
+ stack guard: protect-all, alloca used, protected decls present. */
+ if (flag_stack_protect == 2
+ || (flag_stack_protect
+ && (current_function_calls_alloca || has_protected_decls)))
+ create_stack_guard ();
/* Assign rtl to each variable based on these partitions. */
if (stack_vars_num > 0)
Modified: stable/9/contrib/gcc/common.opt
==============================================================================
--- stable/9/contrib/gcc/common.opt Mon Mar 7 15:00:34 2016 (r296455)
+++ stable/9/contrib/gcc/common.opt Mon Mar 7 15:20:59 2016 (r296456)
@@ -878,10 +878,6 @@ fstack-protector-all
Common Report RejectNegative Var(flag_stack_protect, 2) VarExists
Use a stack protection method for every function
-fstack-protector-strong
-Common Report RejectNegative Var(flag_stack_protect, 3)
-Use a smart stack protection method for certain functions
-
fstrength-reduce
Common
Does nothing. Preserved for backward compatibility.
Modified: stable/9/contrib/gcc/doc/cpp.texi
==============================================================================
--- stable/9/contrib/gcc/doc/cpp.texi Mon Mar 7 15:00:34 2016 (r296455)
+++ stable/9/contrib/gcc/doc/cpp.texi Mon Mar 7 15:20:59 2016 (r296456)
@@ -2134,10 +2134,6 @@ use.
This macro is defined, with value 2, when @option{-fstack-protector-all} is
in use.
- at item __SSP_STRONG__
-This macro is defined, with value 3, when @option{-fstack-protector-strong} is
-in use.
-
@item __TIMESTAMP__
This macro expands to a string constant that describes the date and time
of the last modification of the current source file. The string constant
Modified: stable/9/contrib/gcc/doc/gcc.1
==============================================================================
--- stable/9/contrib/gcc/doc/gcc.1 Mon Mar 7 15:00:34 2016 (r296455)
+++ stable/9/contrib/gcc/doc/gcc.1 Mon Mar 7 15:20:59 2016 (r296456)
@@ -339,7 +339,7 @@ in the following sections.
\&\fB\-fsched2\-use\-superblocks
\&\-fsched2\-use\-traces \-fsee \-freschedule\-modulo\-scheduled\-loops
\&\-fsection\-anchors \-fsignaling\-nans \-fsingle\-precision\-constant
-\&\-fstack\-protector \-fstack\-protector\-all \-fstack\-protector\-strong
+\&\-fstack\-protector \-fstack\-protector\-all
\&\-fstrict\-aliasing \-fstrict\-overflow \-ftracer \-fthread\-jumps
\&\-funroll\-all\-loops \-funroll\-loops \-fpeel\-loops
\&\-fsplit\-ivs\-in\-unroller \-funswitch\-loops
@@ -5193,11 +5193,6 @@ If a guard check fails, an error message
.IP "\fB\-fstack\-protector\-all\fR" 4
.IX Item "-fstack-protector-all"
Like \fB\-fstack\-protector\fR except that all functions are protected.
-.IP "\fB\-fstack\-protector\-strong\fR" 4
-.IX Item "-fstack-protector-strong"
-Like \fB\-fstack\-protector\fR but includes additional functions to
-be protected \-\-\- those that have local array definitions, or have
-references to local frame addresses.
.IP "\fB\-fsection\-anchors\fR" 4
.IX Item "-fsection-anchors"
Try to reduce the number of symbolic address calculations by using
Modified: stable/9/contrib/gcc/doc/invoke.texi
==============================================================================
--- stable/9/contrib/gcc/doc/invoke.texi Mon Mar 7 15:00:34 2016 (r296455)
+++ stable/9/contrib/gcc/doc/invoke.texi Mon Mar 7 15:20:59 2016 (r296456)
@@ -325,7 +325,7 @@ in the following sections.
-fsched2-use-superblocks @gol
-fsched2-use-traces -fsee -freschedule-modulo-scheduled-loops @gol
-fsection-anchors -fsignaling-nans -fsingle-precision-constant @gol
--fstack-protector -fstack-protector-all -fstack-protector-strong @gol
+-fstack-protector -fstack-protector-all @gol
-fstrict-aliasing -fstrict-overflow -ftracer -fthread-jumps @gol
-funroll-all-loops -funroll-loops -fpeel-loops @gol
-fsplit-ivs-in-unroller -funswitch-loops @gol
@@ -5786,11 +5786,6 @@ If a guard check fails, an error message
@item -fstack-protector-all
Like @option{-fstack-protector} except that all functions are protected.
- at item -fstack-protector-strong
-Like @option{-fstack-protector} but includes additional functions to
-be protected --- those that have local array definitions, or have
-references to local frame addresses.
-
@item -fsection-anchors
@opindex fsection-anchors
Try to reduce the number of symbolic address calculations by using
Modified: stable/9/contrib/gcc/gcc.c
==============================================================================
--- stable/9/contrib/gcc/gcc.c Mon Mar 7 15:00:34 2016 (r296455)
+++ stable/9/contrib/gcc/gcc.c Mon Mar 7 15:20:59 2016 (r296456)
@@ -680,7 +680,7 @@ proper position among the other output f
#ifdef TARGET_LIBC_PROVIDES_SSP
#define LINK_SSP_SPEC "%{fstack-protector:}"
#else
-#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-strong|fstack-protector-all:-lssp_nonshared -lssp}"
+#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared -lssp}"
#endif
#endif
More information about the svn-src-stable-9
mailing list