summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lib/Target/X86/X86Subtarget.cpp
diff options
context:
space:
mode:
authorguenther <guenther@openbsd.org>2018-12-30 23:08:05 +0000
committerguenther <guenther@openbsd.org>2018-12-30 23:08:05 +0000
commita707410c70e78ea0b53be99070850cd7235cbe9e (patch)
tree64d7585fef652d0ebe991a954c51ff239e006074 /gnu/llvm/lib/Target/X86/X86Subtarget.cpp
parentDefine SOLIB when assembling for a shared-object library (diff)
downloadwireguard-openbsd-a707410c70e78ea0b53be99070850cd7235cbe9e.tar.xz
wireguard-openbsd-a707410c70e78ea0b53be99070850cd7235cbe9e.zip
Turn on -mretpoline by default in clang on amd64, but turn it off
explicitly in SMALL_KERNEL kernel builds. tweaks from jsg@ and tb@ ok deraadt@ kettenis@
Diffstat (limited to 'gnu/llvm/lib/Target/X86/X86Subtarget.cpp')
-rw-r--r--gnu/llvm/lib/Target/X86/X86Subtarget.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/gnu/llvm/lib/Target/X86/X86Subtarget.cpp b/gnu/llvm/lib/Target/X86/X86Subtarget.cpp
index dca98d999e5..195576bf546 100644
--- a/gnu/llvm/lib/Target/X86/X86Subtarget.cpp
+++ b/gnu/llvm/lib/Target/X86/X86Subtarget.cpp
@@ -207,6 +207,14 @@ void X86Subtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) {
FullFS = "+sahf";
}
+ // OpenBSD/amd64 defaults to -mretpoline
+ if (isTargetOpenBSD() && In64BitMode) {
+ if (!FullFS.empty())
+ FullFS = "+retpoline," + FullFS;
+ else
+ FullFS = "+retpoline";
+ }
+
// Parse features string and set the CPU.
ParseSubtargetFeatures(CPUName, FullFS);