Index: clang/lib/Driver/ToolChains/OpenBSD.cpp
--- clang/lib/Driver/ToolChains/OpenBSD.cpp.orig
+++ clang/lib/Driver/ToolChains/OpenBSD.cpp
@@ -279,6 +279,19 @@ void openbsd::Linker::ConstructJob(Compilation &C, con
     CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtend)));
   }
 
+  auto hasNoExecuteOnly = [&Args]() {
+    for (const Arg *A : Args) {
+      if (A->getOption().matches(options::OPT_Wl_COMMA) &&
+          A->containsValue("--no-execute-only"))
+        return true;
+    }
+    return false;
+  };
+  if (ToolChain.getSanitizerArgs(Args).needsUbsanRt() && !hasNoExecuteOnly()) {
+    D.Diag(diag::err_drv_argument_only_allowed_with)
+        << "-fsanitize=undefined" << "-Wl,--no-execute-only";
+  }
+
   ToolChain.addProfileRTLibs(Args, CmdArgs);
 
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
