summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2019-09-28 22:34:04 +0000
committerpatrick <patrick@openbsd.org>2019-09-28 22:34:04 +0000
commit6fa5adb2b628678ac733f1abb64262f2ded86284 (patch)
tree58ca061dbddb2f31cfeec90f6af22c305c6793bd
parentsync (diff)
downloadwireguard-openbsd-6fa5adb2b628678ac733f1abb64262f2ded86284.tar.xz
wireguard-openbsd-6fa5adb2b628678ac733f1abb64262f2ded86284.zip
Make clang emit the proper path to our libcompiler_rt.a when asked to.
Change of behaviour in latest clang upgrade noticed by jsing@ during the Go port update, where --print-libgcc-file-name is being used which prints the compiler-rt path. ok kettenis@
-rw-r--r--gnu/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp9
-rw-r--r--gnu/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.h3
2 files changed, 12 insertions, 0 deletions
diff --git a/gnu/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp b/gnu/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp
index 7615edaa78b..e9cb88e5ca0 100644
--- a/gnu/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp
+++ b/gnu/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp
@@ -17,6 +17,7 @@
#include "clang/Driver/Options.h"
#include "clang/Driver/SanitizerArgs.h"
#include "llvm/Option/ArgList.h"
+#include "llvm/Support/Path.h"
using namespace clang::driver;
using namespace clang::driver::tools;
@@ -318,3 +319,11 @@ void OpenBSD::AddCXXStdlibLibArgs(const ArgList &Args,
break;
}
}
+
+std::string OpenBSD::getCompilerRT(const ArgList &Args,
+ StringRef Component,
+ bool Shared) const {
+ SmallString<128> P(getDriver().SysRoot);
+ llvm::sys::path::append(P, "/usr/lib/libcompiler_rt.a");
+ return P.str();
+}
diff --git a/gnu/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.h b/gnu/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.h
index 295e2390e19..6d520d724f5 100644
--- a/gnu/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.h
+++ b/gnu/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.h
@@ -74,6 +74,9 @@ public:
const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;
+ std::string getCompilerRT(const llvm::opt::ArgList &Args, StringRef Component,
+ bool Shared = false) const override;
+
unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const override {
return 2;
}