summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Gorny <mgorny@gentoo.org>2018-12-19 17:25:59 +0000
committerMichal Gorny <mgorny@gentoo.org>2018-12-19 17:25:59 +0000
commitf647a9f7dd4d0d0b440ffcf1804d82d238a69bb5 (patch)
tree9a54efd18cbedee767b58f2b2a2933ec9fa943c4
parent1d43b3210b29cdb1ec46162eb9e7c7ba86865332 (diff)
downloadbcm5719-llvm-f647a9f7dd4d0d0b440ffcf1804d82d238a69bb5.tar.gz
bcm5719-llvm-f647a9f7dd4d0d0b440ffcf1804d82d238a69bb5.zip
[Driver] [NetBSD] Add -D_REENTRANT when using sanitizers
NetBSD intends to support only reentrant interfaces in interceptors. When -lpthread is used without _REENTRANT defined, things are not guaranteed to work. This is especially important for <stdio.h> and sanitization of interfaces around FILE. Some APIs have alternative modes depending on the _REENTRANT definition, and NetBSD intends to support sanitization of the _REENTRANT ones. Differential Revision: https://reviews.llvm.org/D55654 llvm-svn: 349650
-rw-r--r--clang/lib/Driver/ToolChains/NetBSD.cpp8
-rw-r--r--clang/lib/Driver/ToolChains/NetBSD.h4
2 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains/NetBSD.cpp b/clang/lib/Driver/ToolChains/NetBSD.cpp
index 73e230b3ea4..6dba5b1a592 100644
--- a/clang/lib/Driver/ToolChains/NetBSD.cpp
+++ b/clang/lib/Driver/ToolChains/NetBSD.cpp
@@ -457,3 +457,11 @@ SanitizerMask NetBSD::getSupportedSanitizers() const {
}
return Res;
}
+
+void NetBSD::addClangTargetOptions(const ArgList &,
+ ArgStringList &CC1Args,
+ Action::OffloadKind) const {
+ const SanitizerArgs &SanArgs = getSanitizerArgs();
+ if (SanArgs.hasAnySanitizer())
+ CC1Args.push_back("-D_REENTRANT");
+}
diff --git a/clang/lib/Driver/ToolChains/NetBSD.h b/clang/lib/Driver/ToolChains/NetBSD.h
index 49e3a58d02c..ae0865fd657 100644
--- a/clang/lib/Driver/ToolChains/NetBSD.h
+++ b/clang/lib/Driver/ToolChains/NetBSD.h
@@ -76,6 +76,10 @@ public:
SanitizerMask getSupportedSanitizers() const override;
+ void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args,
+ Action::OffloadKind DeviceOffloadKind) const override;
+
protected:
Tool *buildAssembler() const override;
Tool *buildLinker() const override;
OpenPOWER on IntegriCloud