forked from OSchip/llvm-project
[Driver][Darwin] Disable default stack protector levels in freestanding mode.
Currently -fstack-protector is on by default when using -ffreestanding. Change the default behavior to have it off when using -ffreestanding. rdar://problem/14089363 llvm-svn: 289005
This commit is contained in:
parent
9ee1a1df24
commit
cfd183ee7e
|
@ -5279,9 +5279,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
Args.AddLastArg(CmdArgs, options::OPT_ftlsmodel_EQ);
|
||||
|
||||
// -fhosted is default.
|
||||
bool IsHosted = true;
|
||||
if (Args.hasFlag(options::OPT_ffreestanding, options::OPT_fhosted, false) ||
|
||||
KernelOrKext)
|
||||
KernelOrKext) {
|
||||
CmdArgs.push_back("-ffreestanding");
|
||||
IsHosted = false;
|
||||
}
|
||||
|
||||
// Forward -f (flag) options which we can pass directly.
|
||||
Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls);
|
||||
|
@ -5414,6 +5417,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
} else {
|
||||
StackProtectorLevel =
|
||||
getToolChain().GetDefaultStackProtectorLevel(KernelOrKext);
|
||||
// Only use a default stack protector on Darwin in case -ffreestanding
|
||||
// is not specified.
|
||||
if (Triple.isOSDarwin() && !IsHosted)
|
||||
StackProtectorLevel = 0;
|
||||
}
|
||||
if (StackProtectorLevel) {
|
||||
CmdArgs.push_back("-stack-protector");
|
||||
|
|
|
@ -47,3 +47,16 @@
|
|||
// SSP_MACOSX_KERNEL-NOT: "-stack-protector"
|
||||
// RUN: %clang -target x86_64-apple-darwin10 -mmacosx-version-min=10.6 -### %s 2>&1 | FileCheck %s -check-prefix=SSP_MACOSX_10_6_KERNEL
|
||||
// SSP_MACOSX_10_6_KERNEL: "-stack-protector" "1"
|
||||
|
||||
// Test default stack protector values for Darwin platforms with -ffreestanding
|
||||
|
||||
// RUN: %clang -ffreestanding -target armv7k-apple-watchos2.0 -### %s 2>&1 | FileCheck %s -check-prefix=SSP_FREE_WATCHOS
|
||||
// SSP_FREE_WATCHOS-NOT: "-stack-protector"
|
||||
// RUN: %clang -ffreestanding -target arm64-apple-ios8.0.0 -### %s 2>&1 | FileCheck %s -check-prefix=SSP_FREE_IOS
|
||||
// SSP_FREE_IOS-NOT: "-stack-protector"
|
||||
// RUN: %clang -ffreestanding -target x86_64-apple-darwin10 -mmacosx-version-min=10.6 -### %s 2>&1 | FileCheck %s -check-prefix=SSP_FREE_MACOSX
|
||||
// SSP_FREE_MACOSX-NOT: "-stack-protector"
|
||||
// RUN: %clang -ffreestanding -target x86_64-apple-darwin10 -mmacosx-version-min=10.5 -### %s 2>&1 | FileCheck %s -check-prefix=SSP_FREE_MACOSX_10_5
|
||||
// SSP_FREE_MACOSX_10_5-NOT: "-stack-protector"
|
||||
// RUN: %clang -ffreestanding -target x86_64-apple-darwin10 -mmacosx-version-min=10.6 -### %s 2>&1 | FileCheck %s -check-prefix=SSP_FREE_MACOSX_10_6_KERNEL
|
||||
// SSP_FREE_MACOSX_10_6_KERNEL-NOT: "-stack-protector"
|
||||
|
|
Loading…
Reference in New Issue