diff options
| author | Ed Schouten <ed@nuxi.nl> | 2016-02-17 18:56:20 +0000 |
|---|---|---|
| committer | Ed Schouten <ed@nuxi.nl> | 2016-02-17 18:56:20 +0000 |
| commit | 51bfbe7f2cb368784ade05a523535becd6316742 (patch) | |
| tree | 8907bdcab45b2673e843b2fc9f9dcf6c4b62f1fa | |
| parent | 009d60650dd52219d579a4ec35db892cb7692217 (diff) | |
| download | bcm5719-llvm-51bfbe7f2cb368784ade05a523535becd6316742.tar.gz bcm5719-llvm-51bfbe7f2cb368784ade05a523535becd6316742.zip | |
Enable SafeStack for CloudABI.
Summary:
I've got a patchset in my home directory to integrate support for
SafeStack into CloudABI's C library. All of the CloudABI unit tests
still seem to pass. Pretty sweet!
This change adds the necessary changes to Clang to make
-fsanitize=safe-stack work on CloudABI. Without it, passing this command
line flag throws an error.
Reviewers: eugenis, samsonov
Differential Revision: http://reviews.llvm.org/D17243
llvm-svn: 261135
| -rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Driver/ToolChains.h | 2 | ||||
| -rw-r--r-- | clang/test/Driver/fsanitize.c | 4 |
3 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index 6c5cdb27597..165d5345a36 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -3000,6 +3000,12 @@ Tool *CloudABI::buildLinker() const { return new tools::cloudabi::Linker(*this); } +SanitizerMask CloudABI::getSupportedSanitizers() const { + SanitizerMask Res = ToolChain::getSupportedSanitizers(); + Res |= SanitizerKind::SafeStack; + return Res; +} + /// OpenBSD - OpenBSD tool chain which can call as(1) and ld(1) directly. OpenBSD::OpenBSD(const Driver &D, const llvm::Triple &Triple, diff --git a/clang/lib/Driver/ToolChains.h b/clang/lib/Driver/ToolChains.h index 11e4c834b41..b956ac94052 100644 --- a/clang/lib/Driver/ToolChains.h +++ b/clang/lib/Driver/ToolChains.h @@ -617,6 +617,8 @@ public: bool isPIEDefault() const override { return false; } + SanitizerMask getSupportedSanitizers() const override; + protected: Tool *buildLinker() const override; }; diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c index 76f41018209..0d6c4d6340c 100644 --- a/clang/test/Driver/fsanitize.c +++ b/clang/test/Driver/fsanitize.c @@ -311,6 +311,10 @@ // RUN: %clang -target powerpc64le-unknown-linux-gnu -fsanitize=memory %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-SANM // CHECK-SANM: "-fsanitize=memory" +// RUN: %clang -target aarch64-unknown-cloudabi -fsanitize=safe-stack %s -### 2>&1 | FileCheck %s -check-prefix=SAFESTACK-CLOUDABI +// RUN: %clang -target x86_64-unknown-cloudabi -fsanitize=safe-stack %s -### 2>&1 | FileCheck %s -check-prefix=SAFESTACK-CLOUDABI +// SAFESTACK-CLOUDABI: "-fsanitize=safe-stack" + // RUN: %clang -target x86_64-scei-ps4 -fsanitize=function -fsanitize=undefined %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-FSAN-UBSAN-PS4 // CHECK-FSAN-UBSAN-PS4: unsupported option '-fsanitize=function' for target 'x86_64-scei-ps4' // RUN: %clang -target x86_64-scei-ps4 -fsanitize=function %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-FSAN-PS4 |

