[Driver] Enable ShadowCallStack, not SafeStack, by default on AArch64 Fuchsia
Submitted for mcgrathr. On AArch64, Fuchsia fully supports both SafeStack and ShadowCallStack ABIs. The latter is now preferred and will be the default. It's possible to enable both simultaneously, but ShadowCallStack is believed to have most of the practical benefit of SafeStack with less cost. Differential Revision: https://reviews.llvm.org/D66712
This commit is contained in:
parent
91095fe072
commit
85b718f53a
|
@ -343,5 +343,10 @@ SanitizerMask Fuchsia::getSupportedSanitizers() const {
|
|||
}
|
||||
|
||||
SanitizerMask Fuchsia::getDefaultSanitizers() const {
|
||||
return SanitizerKind::SafeStack;
|
||||
SanitizerMask Res;
|
||||
if (getTriple().getArch() == llvm::Triple::aarch64)
|
||||
Res |= SanitizerKind::ShadowCallStack;
|
||||
else
|
||||
Res |= SanitizerKind::SafeStack;
|
||||
return Res;
|
||||
}
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
// CHECK: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
|
||||
// CHECK: "-isysroot" "[[SYSROOT:[^"]+]]"
|
||||
// CHECK: "-internal-externc-isystem" "[[SYSROOT]]{{/|\\\\}}include"
|
||||
// CHECK: "-fsanitize=safe-stack"
|
||||
// CHECK-AARCH64: "-fsanitize=shadow-call-stack"
|
||||
// CHECK-X86_64: "-fsanitize=safe-stack"
|
||||
// CHECK: "-stack-protector" "2"
|
||||
// CHECK: "-fno-common"
|
||||
// CHECK: {{.*}}ld.lld{{.*}}" "-z" "rodynamic" "-z" "separate-loadable-segments"
|
||||
|
@ -102,7 +103,7 @@
|
|||
// RUN: -fuse-ld=lld \
|
||||
// RUN: | FileCheck %s -check-prefix=CHECK-ASAN-AARCH64
|
||||
// CHECK-ASAN-AARCH64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
|
||||
// CHECK-ASAN-AARCH64: "-fsanitize=address"
|
||||
// CHECK-ASAN-AARCH64: "-fsanitize=address,shadow-call-stack"
|
||||
// CHECK-ASAN-AARCH64: "-fsanitize-address-globals-dead-stripping"
|
||||
// CHECK-ASAN-AARCH64: "-dynamic-linker" "asan/ld.so.1"
|
||||
// CHECK-ASAN-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}libclang_rt.asan.so"
|
||||
|
@ -134,7 +135,7 @@
|
|||
// RUN: -fuse-ld=lld \
|
||||
// RUN: | FileCheck %s -check-prefix=CHECK-FUZZER-AARCH64
|
||||
// CHECK-FUZZER-AARCH64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
|
||||
// CHECK-FUZZER-AARCH64: "-fsanitize=fuzzer,fuzzer-no-link,safe-stack"
|
||||
// CHECK-FUZZER-AARCH64: "-fsanitize=fuzzer,fuzzer-no-link,shadow-call-stack"
|
||||
// CHECK-FUZZER-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}libclang_rt.fuzzer.a"
|
||||
|
||||
// RUN: %clang %s -### --target=x86_64-fuchsia \
|
||||
|
@ -153,7 +154,7 @@
|
|||
// RUN: -fuse-ld=lld \
|
||||
// RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-AARCH64
|
||||
// CHECK-SCUDO-AARCH64: "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
|
||||
// CHECK-SCUDO-AARCH64: "-fsanitize=safe-stack,scudo"
|
||||
// CHECK-SCUDO-AARCH64: "-fsanitize=shadow-call-stack,scudo"
|
||||
// CHECK-SCUDO-AARCH64: "-pie"
|
||||
// CHECK-SCUDO-AARCH64: "[[RESOURCE_DIR]]{{/|\\\\}}lib{{/|\\\\}}aarch64-fuchsia{{/|\\\\}}libclang_rt.scudo.so"
|
||||
|
||||
|
|
Loading…
Reference in New Issue