From: Petr Hosek Date: Fri, 24 Feb 2017 03:17:41 +0000 (+0000) Subject: [Driver] Enable SafeStack for Fuchsia targets X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4ff7b4b98d25427581ffdf161ebe3a1883b93181;p=clang [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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@296082 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 533206e406..495cc0a73b 100644 --- a/lib/Driver/ToolChains.cpp +++ b/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/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h index 8646efbf38..7810b76d1b 100644 --- a/lib/Driver/ToolChains.h +++ b/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/test/Driver/fuchsia.c b/test/Driver/fuchsia.c index 75172edf6b..58c2bbe533 100644 --- a/test/Driver/fuchsia.c +++ b/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"