[llvm-commits] [llvm-gcc-4.2] r59205 - in /llvm-gcc-4.2/trunk/gcc: llvm-backend.cpp llvm-convert.cpp

Bill Wendling isanbard at gmail.com
Wed Nov 12 17:04:15 PST 2008


Author: void
Date: Wed Nov 12 19:04:15 2008
New Revision: 59205

URL: http://llvm.org/viewvc/llvm-project?rev=59205&view=rev
Log:
Implement stack protectors using function attributes instead of command line
options. This allows LTO to generate proper stack protectors.

Modified:
    llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
    llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=59205&r1=59204&r2=59205&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Wed Nov 12 19:04:15 2008
@@ -167,16 +167,8 @@
   }
 
   if (flag_stack_protect > 0) {
-    std::string Arg;
-
-    if (flag_stack_protect == 1)
-      Arg = "--enable-stack-protector=some";
-    else
-      Arg = "--enable-stack-protector=all";
-
-    ArgStrings.push_back(Arg);
-    Arg = "--stack-protector-buffer-size=" +
-      utostr(PARAM_VALUE(PARAM_SSP_BUFFER_SIZE));
+    std::string Arg("--stack-protector-buffer-size=" +
+                    utostr(PARAM_VALUE(PARAM_SSP_BUFFER_SIZE)));
     ArgStrings.push_back(Arg);
   }
 

Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=59205&r1=59204&r2=59205&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Wed Nov 12 19:04:15 2008
@@ -679,6 +679,12 @@
   if (optimize_size)
     Fn->addFnAttr(Attribute::OptimizeForSize);
 
+  // Handle stack smashing protection.
+  if (flag_stack_protect == 1)
+    Fn->addFnAttr(Attribute::StackProtect);
+  else if (flag_stack_protect == 2)
+    Fn->addFnAttr(Attribute::StackProtectReq);
+
   // Handle annotate attributes
   if (DECL_ATTRIBUTES(FnDecl))
     AddAnnotateAttrsToGlobal(Fn, FnDecl);





More information about the llvm-commits mailing list