forked from OSchip/llvm-project
enable -fstack-protector on 10.5 for usermode binaries by default.
This matches gcc's behavior. llvm-svn: 138324
This commit is contained in:
parent
05e609331c
commit
dd47363b3a
|
|
@ -139,7 +139,9 @@ public:
|
||||||
|
|
||||||
/// GetDefaultStackProtectorLevel - Get the default stack protector level for
|
/// GetDefaultStackProtectorLevel - Get the default stack protector level for
|
||||||
/// this tool chain (0=off, 1=on, 2=all).
|
/// this tool chain (0=off, 1=on, 2=all).
|
||||||
virtual unsigned GetDefaultStackProtectorLevel() const { return 0; }
|
virtual unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/// IsUnwindTablesDefault - Does this tool chain use -funwind-tables
|
/// IsUnwindTablesDefault - Does this tool chain use -funwind-tables
|
||||||
/// by default.
|
/// by default.
|
||||||
|
|
|
||||||
|
|
@ -237,9 +237,12 @@ public:
|
||||||
return !(!isTargetIPhoneOS() && isMacosxVersionLT(10, 6));
|
return !(!isTargetIPhoneOS() && isMacosxVersionLT(10, 6));
|
||||||
}
|
}
|
||||||
virtual bool IsUnwindTablesDefault() const;
|
virtual bool IsUnwindTablesDefault() const;
|
||||||
virtual unsigned GetDefaultStackProtectorLevel() const {
|
virtual unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const {
|
||||||
// Stack protectors default to on for 10.6 and beyond.
|
// Stack protectors default to on for user code on 10.5,
|
||||||
return !isTargetIPhoneOS() && !isMacosxVersionLT(10, 6);
|
// and for everything in 10.6 and beyond
|
||||||
|
return !isTargetIPhoneOS() &&
|
||||||
|
(!isMacosxVersionLT(10, 6) ||
|
||||||
|
(!isMacosxVersionLT(10, 5) && !KernelOrKext));
|
||||||
}
|
}
|
||||||
virtual const char *GetDefaultRelocationModel() const;
|
virtual const char *GetDefaultRelocationModel() const;
|
||||||
virtual const char *GetForcedPicModel() const;
|
virtual const char *GetForcedPicModel() const;
|
||||||
|
|
|
||||||
|
|
@ -1671,8 +1671,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
StackProtectorLevel = 1;
|
StackProtectorLevel = 1;
|
||||||
else if (A->getOption().matches(options::OPT_fstack_protector_all))
|
else if (A->getOption().matches(options::OPT_fstack_protector_all))
|
||||||
StackProtectorLevel = 2;
|
StackProtectorLevel = 2;
|
||||||
} else
|
} else {
|
||||||
StackProtectorLevel = getToolChain().GetDefaultStackProtectorLevel();
|
StackProtectorLevel =
|
||||||
|
getToolChain().GetDefaultStackProtectorLevel(KernelOrKext);
|
||||||
|
}
|
||||||
if (StackProtectorLevel) {
|
if (StackProtectorLevel) {
|
||||||
CmdArgs.push_back("-stack-protector");
|
CmdArgs.push_back("-stack-protector");
|
||||||
CmdArgs.push_back(Args.MakeArgString(Twine(StackProtectorLevel)));
|
CmdArgs.push_back(Args.MakeArgString(Twine(StackProtectorLevel)));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue