Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Mar 2016 15:21:00 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r296456 - in stable/9/contrib/gcc: . doc
Message-ID:  <201603071521.u27FL0p2062786@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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.
 
-@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.
 
-@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
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201603071521.u27FL0p2062786>