diff options
| author | Michal Gorny <mgorny@gentoo.org> | 2018-12-19 17:25:59 +0000 |
|---|---|---|
| committer | Michal Gorny <mgorny@gentoo.org> | 2018-12-19 17:25:59 +0000 |
| commit | f647a9f7dd4d0d0b440ffcf1804d82d238a69bb5 (patch) | |
| tree | 9a54efd18cbedee767b58f2b2a2933ec9fa943c4 | |
| parent | 1d43b3210b29cdb1ec46162eb9e7c7ba86865332 (diff) | |
| download | bcm5719-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.cpp | 8 | ||||
| -rw-r--r-- | clang/lib/Driver/ToolChains/NetBSD.h | 4 |
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; |

