diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-05-22 22:57:39 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-05-22 22:57:39 +0000 |
| commit | ce5c6091e04d27530a356b475ba18b2b45dba57d (patch) | |
| tree | cda179d05a8a4ca1f647f93e92e47b379734d36c /clang/lib/Driver/Tools.cpp | |
| parent | 7f9fc2b339fa26b279135007a6b5568624c5a2ef (diff) | |
| download | bcm5719-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.cpp | 7 |
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; |

