]> granicus.if.org Git - clang/commitdiff
Don't reduce the stack protector level given -fstack-protector.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 22 May 2014 22:57:39 +0000 (22:57 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 22 May 2014 22:57:39 +0000 (22:57 +0000)
Before -fstack-protector would always force a level of 1, even if the default
was 2.

Patch by Brad Smith.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209479 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp
test/Driver/stack-protector.c

index 3fe552db822e8cbcbc2b730b35dd136e3de1a373..7670daa17134813794ba6575c06e8a9af9ffaad8 100644 (file)
@@ -3379,9 +3379,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
                                options::OPT_fstack_protector_all,
                                options::OPT_fstack_protector_strong,
                                options::OPT_fstack_protector)) {
-    if (A->getOption().matches(options::OPT_fstack_protector))
-      StackProtectorLevel = LangOptions::SSPOn;
-    else if (A->getOption().matches(options::OPT_fstack_protector_strong))
+    if (A->getOption().matches(options::OPT_fstack_protector)) {
+      StackProtectorLevel = std::max<unsigned>(LangOptions::SSPOn,
+        getToolChain().GetDefaultStackProtectorLevel(KernelOrKext));
+    } else if (A->getOption().matches(options::OPT_fstack_protector_strong))
       StackProtectorLevel = LangOptions::SSPStrong;
     else if (A->getOption().matches(options::OPT_fstack_protector_all))
       StackProtectorLevel = LangOptions::SSPReq;
index cf2cc34de55f1259eefe18113a5cb1f62f3cb1bb..7576c3abe6f5d58f79beb036cd154dd5536ba6b7 100644 (file)
@@ -13,6 +13,9 @@
 // RUN: %clang -target i386-pc-openbsd -### %s 2>&1 | FileCheck %s -check-prefix=OPENBSD
 // OPENBSD: "-stack-protector" "2"
 
+// RUN: %clang -target i386-pc-openbsd -fstack-protector -### %s 2>&1 | FileCheck %s -check-prefix=OPENBSD_SPS
+// OPENBSD_SPS: "-stack-protector" "2"
+
 // RUN: %clang -target i386-pc-openbsd -fno-stack-protector -### %s 2>&1 | FileCheck %s -check-prefix=OPENBSD_OFF
 // OPENBSD_OFF-NOT: "-stack-protector"