diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 7c849a364971d..2cde7c782a78e 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -204,6 +204,15 @@ void ToolChain::addCommonFrontendArgs(const OutputInfo &OI, arguments.push_back("-disable-objc-interop"); } + if (Triple.isOSOpenBSD() && Triple.getArch() == llvm::Triple::aarch64) { + arguments.push_back("-Xcc"); + arguments.push_back("-Xclang=-mbranch-target-enforce"); + arguments.push_back("-Xcc"); + arguments.push_back("-Xclang=-msign-return-address=non-leaf"); + arguments.push_back("-Xcc"); + arguments.push_back("-Xclang=-msign-return-address-key=a_key"); + } + if (inputArgs.getLastArg(options::OPT_experimental_serialize_debug_info)) { arguments.push_back( inputArgs.MakeArgString(Twine("-experimental-serialize-debug-info"))); diff --git a/utils/build-script-impl b/utils/build-script-impl index 847fafb5a37f3..10598026149d7 100755 --- a/utils/build-script-impl +++ b/utils/build-script-impl @@ -1425,6 +1425,9 @@ function swift_c_flags() { linux-static-*) echo -n " -D_GNU_SOURCE -DHAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME" ;; + openbsd-aarch64) + echo -n " -Xclang=-msign-return-address=non-leaf -Xclang=-msign-return-address-key=a_key -Xclang=-mbranch-target-enforce" + ;; esac }