Index: lld/ELF/Arch/AArch64.cpp
--- lld/ELF/Arch/AArch64.cpp.orig
+++ lld/ELF/Arch/AArch64.cpp
@@ -970,7 +970,11 @@ class AArch64BtiPac final : public AArch64 { (private)
 } // namespace
 
 AArch64BtiPac::AArch64BtiPac() {
+#ifdef __OpenBSD__
+  btiHeader = true;
+#else
   btiHeader = (config->andFeatures & GNU_PROPERTY_AARCH64_FEATURE_1_BTI);
+#endif
   // A BTI (Branch Target Indicator) Plt Entry is only required if the
   // address of the PLT entry can be taken by the program, which permits an
   // indirect jump to the PLT entry. This can happen when the address
@@ -1072,6 +1076,10 @@ void AArch64BtiPac::writePlt(uint8_t *buf, const Symbo
 }
 
 static TargetInfo *getTargetInfo() {
+#ifdef __OpenBSD__
+  static AArch64BtiPac t;
+  return &t;
+#else
   if ((config->andFeatures & GNU_PROPERTY_AARCH64_FEATURE_1_BTI) ||
       config->zPacPlt) {
     static AArch64BtiPac t;
@@ -1079,6 +1087,7 @@ static TargetInfo *getTargetInfo() {
   }
   static AArch64 t;
   return &t;
+#endif
 }
 
 TargetInfo *elf::getAArch64TargetInfo() { return getTargetInfo(); }
