summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-05-22 22:57:39 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-05-22 22:57:39 +0000
commitce5c6091e04d27530a356b475ba18b2b45dba57d (patch)
treecda179d05a8a4ca1f647f93e92e47b379734d36c /clang/lib/Driver/Tools.cpp
parent7f9fc2b339fa26b279135007a6b5568624c5a2ef (diff)
downloadbcm5719-llvm-ce5c6091e04d27530a356b475ba18b2b45dba57d.tar.gz
bcm5719-llvm-ce5c6091e04d27530a356b475ba18b2b45dba57d.zip
Don't reduce the stack protector level given -fstack-protector.
Before -fstack-protector would always force a level of 1, even if the default was 2. Patch by Brad Smith. llvm-svn: 209479
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 3fe552db822..7670daa1713 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -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;
OpenPOWER on IntegriCloud