Skip to content

Commit

Permalink
[Driver] Enable SafeStack by default on Fuchsia
Browse files Browse the repository at this point in the history
This is already used throughout the entire system, so make it a default.

Differential Revision: https://reviews.llvm.org/D44065

llvm-svn: 326867
  • Loading branch information
petrhosek committed Mar 7, 2018
1 parent 35824ef commit fdcbcfb
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 5 deletions.
4 changes: 4 additions & 0 deletions clang/lib/Driver/ToolChains/Fuchsia.cpp
Expand Up @@ -284,3 +284,7 @@ SanitizerMask Fuchsia::getSupportedSanitizers() const {
Res |= SanitizerKind::Scudo;
return Res;
}

SanitizerMask Fuchsia::getDefaultSanitizers() const {
return SanitizerKind::SafeStack;
}
5 changes: 5 additions & 0 deletions clang/lib/Driver/ToolChains/Fuchsia.h
Expand Up @@ -60,10 +60,15 @@ class LLVM_LIBRARY_VISIBILITY Fuchsia : public ToolChain {
return llvm::DebuggerKind::GDB;
}

unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const override {
return 2; // SSPStrong
}

std::string ComputeEffectiveClangTriple(const llvm::opt::ArgList &Args,
types::ID InputType) const override;

SanitizerMask getSupportedSanitizers() const override;
SanitizerMask getDefaultSanitizers() const override;

RuntimeLibType
GetRuntimeLibType(const llvm::opt::ArgList &Args) const override;
Expand Down
12 changes: 7 additions & 5 deletions clang/test/Driver/fuchsia.c
Expand Up @@ -10,6 +10,8 @@
// CHECK: "-fuse-init-array"
// CHECK: "-isysroot" "[[SYSROOT:[^"]+]]"
// CHECK: "-internal-externc-isystem" "[[SYSROOT]]{{/|\\\\}}include"
// CHECK: "-fsanitize=safe-stack"
// CHECK: "-stack-protector" "2"
// CHECK: "-fno-common"
// CHECK: {{.*}}ld.lld{{.*}}" "-z" "rodynamic"
// CHECK: "--sysroot=[[SYSROOT]]"
Expand Down Expand Up @@ -84,31 +86,31 @@
// RUN: %clang %s -### --target=x86_64-fuchsia \
// RUN: -fsanitize=fuzzer 2>&1 \
// RUN: | FileCheck %s -check-prefix=CHECK-FUZZER-X86
// CHECK-FUZZER-X86: "-fsanitize=fuzzer,fuzzer-no-link"
// CHECK-FUZZER-X86: "-fsanitize=fuzzer,fuzzer-no-link,safe-stack"
// CHECK-FUZZER-X86: "{{.*[/\\]}}libclang_rt.fuzzer-x86_64.a"

// RUN: %clang %s -### --target=aarch64-fuchsia \
// RUN: -fsanitize=fuzzer 2>&1 \
// RUN: | FileCheck %s -check-prefix=CHECK-FUZZER-AARCH64
// CHECK-FUZZER-AARCH64: "-fsanitize=fuzzer,fuzzer-no-link"
// CHECK-FUZZER-AARCH64: "-fsanitize=fuzzer,fuzzer-no-link,safe-stack"
// CHECK-FUZZER-AARCH64: "{{.*[/\\]}}libclang_rt.fuzzer-aarch64.a"

// RUN: %clang %s -### --target=x86_64-fuchsia \
// RUN: -fsanitize=scudo 2>&1 \
// RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-X86
// CHECK-SCUDO-X86: "-fsanitize=scudo"
// CHECK-SCUDO-X86: "-fsanitize=safe-stack,scudo"
// CHECK-SCUDO-X86: "-pie"
// CHECK-SCUDO-X86: "{{.*[/\\]}}libclang_rt.scudo-x86_64.so"

// RUN: %clang %s -### --target=aarch64-fuchsia \
// RUN: -fsanitize=scudo 2>&1 \
// RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-AARCH64
// CHECK-SCUDO-AARCH64: "-fsanitize=scudo"
// CHECK-SCUDO-AARCH64: "-fsanitize=safe-stack,scudo"
// CHECK-SCUDO-AARCH64: "-pie"
// CHECK-SCUDO-AARCH64: "{{.*[/\\]}}libclang_rt.scudo-aarch64.so"

// RUN: %clang %s -### --target=x86_64-fuchsia \
// RUN: -fsanitize=scudo -fPIC -shared 2>&1 \
// RUN: | FileCheck %s -check-prefix=CHECK-SCUDO-SHARED
// CHECK-SCUDO-SHARED: "-fsanitize=scudo"
// CHECK-SCUDO-SHARED: "-fsanitize=safe-stack,scudo"
// CHECK-SCUDO-SHARED: "{{.*[/\\]}}libclang_rt.scudo-x86_64.so"

0 comments on commit fdcbcfb

Please sign in to comment.