summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Hosek <phosek@chromium.org>2017-02-24 03:17:41 +0000
committerPetr Hosek <phosek@chromium.org>2017-02-24 03:17:41 +0000
commit162540ec1da81657b8003ce1554a07b5d6f26c02 (patch)
tree88e77feb655ddc242005c8416a1f3e8f84e53b67
parenta7d5916308907624199161b9454487cc30482341 (diff)
downloadbcm5719-llvm-162540ec1da81657b8003ce1554a07b5d6f26c02.tar.gz
bcm5719-llvm-162540ec1da81657b8003ce1554a07b5d6f26c02.zip
[Driver] Enable SafeStack for Fuchsia targets
The runtime support is provided directly by the Fuchsia system C library. Patch by Roland McGrath Differential Revision: https://reviews.llvm.org/D30238 llvm-svn: 296082
-rw-r--r--clang/lib/Driver/ToolChains.cpp6
-rw-r--r--clang/lib/Driver/ToolChains.h2
-rw-r--r--clang/test/Driver/fuchsia.c5
3 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index 533206e4061..495cc0a73b7 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -4860,6 +4860,12 @@ void Fuchsia::AddCXXStdlibLibArgs(const ArgList &Args,
CmdArgs.push_back("-lunwind");
}
+SanitizerMask Fuchsia::getSupportedSanitizers() const {
+ SanitizerMask Res = ToolChain::getSupportedSanitizers();
+ Res |= SanitizerKind::SafeStack;
+ return Res;
+}
+
/// DragonFly - DragonFly tool chain which can call as(1) and ld(1) directly.
DragonFly::DragonFly(const Driver &D, const llvm::Triple &Triple,
diff --git a/clang/lib/Driver/ToolChains.h b/clang/lib/Driver/ToolChains.h
index 8646efbf388..7810b76d1be 100644
--- a/clang/lib/Driver/ToolChains.h
+++ b/clang/lib/Driver/ToolChains.h
@@ -1095,6 +1095,8 @@ public:
return llvm::DebuggerKind::GDB;
}
+ SanitizerMask getSupportedSanitizers() const override;
+
RuntimeLibType
GetRuntimeLibType(const llvm::opt::ArgList &Args) const override;
CXXStdlibType
diff --git a/clang/test/Driver/fuchsia.c b/clang/test/Driver/fuchsia.c
index 75172edf6b2..58c2bbe533c 100644
--- a/clang/test/Driver/fuchsia.c
+++ b/clang/test/Driver/fuchsia.c
@@ -38,3 +38,8 @@
// CHECK-RELOCATABLE-NOT: "-pie"
// CHECK-RELOCATABLE-NOT: "--build-id"
// CHECK-RELOCATABLE: "-r"
+
+// RUN: %clang %s -### --target=x86_64-unknown-fuchsia \
+// RUN: -fsanitize=safe-stack 2>&1 \
+// RUN: | FileCheck %s -check-prefix=CHECK-SAFESTACK
+// CHECK-SAFESTACK: "-fsanitize=safe-stack"
OpenPOWER on IntegriCloud