https://github.com/mchoo7 updated 
https://github.com/llvm/llvm-project/pull/180222

>From cdb644c0f10eed626480e434366b0d78d16d8d17 Mon Sep 17 00:00:00 2001
From: Minsoo Choo <[email protected]>
Date: Fri, 6 Feb 2026 11:15:14 -0500
Subject: [PATCH 1/6] [lldb][Process/FreeBSDKernel] Fix broken debugging on
 aarch64

Signed-off-by: Minsoo Choo <[email protected]>
---
 .../RegisterContextFreeBSDKernel_arm64.cpp    | 40 ++++++-------------
 1 file changed, 12 insertions(+), 28 deletions(-)

diff --git 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
index 11843ddc82d97..f8e7570548053 100644
--- 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
+++ 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
@@ -43,9 +43,9 @@ bool RegisterContextFreeBSDKernel_arm64::ReadRegister(
     return false;
 
   struct {
-    llvm::support::ulittle64_t x[30];
-    llvm::support::ulittle64_t lr;
-    llvm::support::ulittle64_t _reserved;
+#define PCB_FP 10
+#define PCB_LR 11
+    llvm::support::ulittle64_t x[12];
     llvm::support::ulittle64_t sp;
   } pcb;
 
@@ -57,25 +57,6 @@ bool RegisterContextFreeBSDKernel_arm64::ReadRegister(
 
   uint32_t reg = reg_info->kinds[lldb::eRegisterKindLLDB];
   switch (reg) {
-  case gpr_x0_arm64:
-  case gpr_x1_arm64:
-  case gpr_x2_arm64:
-  case gpr_x3_arm64:
-  case gpr_x4_arm64:
-  case gpr_x5_arm64:
-  case gpr_x6_arm64:
-  case gpr_x7_arm64:
-  case gpr_x8_arm64:
-  case gpr_x9_arm64:
-  case gpr_x10_arm64:
-  case gpr_x11_arm64:
-  case gpr_x12_arm64:
-  case gpr_x13_arm64:
-  case gpr_x14_arm64:
-  case gpr_x15_arm64:
-  case gpr_x16_arm64:
-  case gpr_x17_arm64:
-  case gpr_x18_arm64:
   case gpr_x19_arm64:
   case gpr_x20_arm64:
   case gpr_x21_arm64:
@@ -87,16 +68,19 @@ bool RegisterContextFreeBSDKernel_arm64::ReadRegister(
   case gpr_x27_arm64:
   case gpr_x28_arm64:
   case gpr_fp_arm64:
-    static_assert(gpr_fp_arm64 - gpr_x0_arm64 == 29,
+    static_assert(gpr_fp_arm64 - gpr_x19_arm64 == PCB_FP,
                   "nonconsecutive arm64 register numbers");
-    value = pcb.x[reg - gpr_x0_arm64];
-    break;
-  case gpr_sp_arm64:
-    value = pcb.sp;
+    value = pcb.x[reg - gpr_x19_arm64];
     break;
+  case gpr_lr_arm64:
   case gpr_pc_arm64:
     // The pc of crashing thread is stored in lr.
-    value = pcb.lr;
+    static_assert(gpr_lr_arm64 - gpr_x19_arm64 == PCB_LR,
+                  "nonconsecutive arm64 register numbers");
+    value = pcb.x[reg - gpr_x19_arm64];
+    break;
+  case gpr_sp_arm64:
+    value = pcb.sp;
     break;
   default:
     return false;

>From 11882f4502b7bd9aee3d7f8f21e39d10305244ca Mon Sep 17 00:00:00 2001
From: Minsoo Choo <[email protected]>
Date: Fri, 6 Feb 2026 13:43:31 -0500
Subject: [PATCH 2/6] fixup! [lldb][Process/FreeBSDKernel] Fix broken debugging
 on aarch64

Signed-off-by: Minsoo Choo <[email protected]>
---
 .../RegisterContextFreeBSDKernel_arm64.cpp    | 163 ++++++++++++++----
 .../RegisterContextFreeBSDKernel_arm64.h      |   4 +
 2 files changed, 134 insertions(+), 33 deletions(-)

diff --git 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
index f8e7570548053..9be283a4fa208 100644
--- 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
+++ 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
@@ -9,7 +9,9 @@
 #include "RegisterContextFreeBSDKernel_arm64.h"
 #include "Plugins/Process/Utility/lldb-arm64-register-enums.h"
 
+#include "lldb/Symbol/Symbol.h"
 #include "lldb/Target/Process.h"
+#include "lldb/Target/Target.h"
 #include "lldb/Target/Thread.h"
 #include "lldb/Utility/RegisterValue.h"
 #include "llvm/Support/Endian.h"
@@ -49,41 +51,104 @@ bool RegisterContextFreeBSDKernel_arm64::ReadRegister(
     llvm::support::ulittle64_t sp;
   } pcb;
 
+  struct {
+    llvm::support::ulittle64_t x[30];
+    llvm::support::ulittle64_t lr;
+    llvm::support::ulittle64_t _reserved;
+    llvm::support::ulittle64_t sp;
+  } pcb13;
+
   Status error;
-  size_t rd =
-      m_thread.GetProcess()->ReadMemory(m_pcb_addr, &pcb, sizeof(pcb), error);
-  if (rd != sizeof(pcb))
-    return false;
 
-  uint32_t reg = reg_info->kinds[lldb::eRegisterKindLLDB];
-  switch (reg) {
-  case gpr_x19_arm64:
-  case gpr_x20_arm64:
-  case gpr_x21_arm64:
-  case gpr_x22_arm64:
-  case gpr_x23_arm64:
-  case gpr_x24_arm64:
-  case gpr_x25_arm64:
-  case gpr_x26_arm64:
-  case gpr_x27_arm64:
-  case gpr_x28_arm64:
-  case gpr_fp_arm64:
-    static_assert(gpr_fp_arm64 - gpr_x19_arm64 == PCB_FP,
-                  "nonconsecutive arm64 register numbers");
-    value = pcb.x[reg - gpr_x19_arm64];
-    break;
-  case gpr_lr_arm64:
-  case gpr_pc_arm64:
-    // The pc of crashing thread is stored in lr.
-    static_assert(gpr_lr_arm64 - gpr_x19_arm64 == PCB_LR,
-                  "nonconsecutive arm64 register numbers");
-    value = pcb.x[reg - gpr_x19_arm64];
-    break;
-  case gpr_sp_arm64:
-    value = pcb.sp;
-    break;
-  default:
-    return false;
+  // TODO: LLVM 24: Remove FreeBSD 13 support
+  if (GetOsreldate() > 1400084) {
+    size_t rd =
+        m_thread.GetProcess()->ReadMemory(m_pcb_addr, &pcb, sizeof(pcb), 
error);
+    if (rd != sizeof(pcb))
+      return false;
+
+    uint32_t reg = reg_info->kinds[lldb::eRegisterKindLLDB];
+    switch (reg) {
+    case gpr_x19_arm64:
+    case gpr_x20_arm64:
+    case gpr_x21_arm64:
+    case gpr_x22_arm64:
+    case gpr_x23_arm64:
+    case gpr_x24_arm64:
+    case gpr_x25_arm64:
+    case gpr_x26_arm64:
+    case gpr_x27_arm64:
+    case gpr_x28_arm64:
+    case gpr_fp_arm64:
+      static_assert(gpr_fp_arm64 - gpr_x19_arm64 == PCB_FP,
+                    "nonconsecutive arm64 register numbers");
+      value = pcb.x[reg - gpr_x19_arm64];
+      break;
+    case gpr_lr_arm64:
+    case gpr_pc_arm64:
+      // The pc of crashing thread is stored in lr.
+      static_assert(gpr_lr_arm64 - gpr_x19_arm64 == PCB_LR,
+                    "nonconsecutive arm64 register numbers");
+      value = pcb.x[reg - gpr_x19_arm64];
+      break;
+    case gpr_sp_arm64:
+      value = pcb.sp;
+      break;
+    default:
+      return false;
+    }
+  } else {
+    size_t rd = m_thread.GetProcess()->ReadMemory(m_pcb_addr, &pcb13,
+                                                  sizeof(pcb13), error);
+    if (rd != sizeof(pcb13))
+      return false;
+
+    uint32_t reg = reg_info->kinds[lldb::eRegisterKindLLDB];
+    switch (reg) {
+    case gpr_x0_arm64:
+    case gpr_x1_arm64:
+    case gpr_x2_arm64:
+    case gpr_x3_arm64:
+    case gpr_x4_arm64:
+    case gpr_x5_arm64:
+    case gpr_x6_arm64:
+    case gpr_x7_arm64:
+    case gpr_x8_arm64:
+    case gpr_x9_arm64:
+    case gpr_x10_arm64:
+    case gpr_x11_arm64:
+    case gpr_x12_arm64:
+    case gpr_x13_arm64:
+    case gpr_x14_arm64:
+    case gpr_x15_arm64:
+    case gpr_x16_arm64:
+    case gpr_x17_arm64:
+    case gpr_x18_arm64:
+    case gpr_x19_arm64:
+    case gpr_x20_arm64:
+    case gpr_x21_arm64:
+    case gpr_x22_arm64:
+    case gpr_x23_arm64:
+    case gpr_x24_arm64:
+    case gpr_x25_arm64:
+    case gpr_x26_arm64:
+    case gpr_x27_arm64:
+    case gpr_x28_arm64:
+    case gpr_fp_arm64:
+      static_assert(gpr_fp_arm64 - gpr_x0_arm64 == 29,
+                    "nonconsecutive arm64 register numbers");
+      value = pcb13.x[reg - gpr_x0_arm64];
+      break;
+    case gpr_sp_arm64:
+      value = pcb13.sp;
+      break;
+    case gpr_pc_arm64:
+      // The pc of crashing thread is stored in lr.
+      value = pcb13.lr;
+      break;
+    default:
+      return false;
+    }
   }
   return true;
 }
@@ -92,3 +157,35 @@ bool RegisterContextFreeBSDKernel_arm64::WriteRegister(
     const RegisterInfo *reg_info, const RegisterValue &value) {
   return false;
 }
+
+int64_t RegisterContextFreeBSDKernel_arm64::GetOsreldate() {
+  ProcessSP process_sp = m_thread.GetProcess();
+  if (!process_sp)
+    return 0;
+
+  Target &target = process_sp->GetTarget();
+
+  SymbolContextList sc_list;
+  target.GetImages().FindSymbolsWithNameAndType(ConstString("osreldate"),
+                                                lldb::eSymbolTypeData, 
sc_list);
+
+  if (sc_list.GetSize() > 0) {
+    SymbolContext sc;
+    sc_list.GetContextAtIndex(0, sc);
+
+    if (sc.symbol) {
+      lldb::addr_t addr = sc.symbol->GetLoadAddress(&target);
+      if (addr != LLDB_INVALID_ADDRESS) {
+        Status error;
+        int64_t osreldate = 0;
+        size_t bytes_read =
+            process_sp->ReadMemory(addr, &osreldate, sizeof(osreldate), error);
+        if (bytes_read == sizeof(osreldate) && error.Success()) {
+          return osreldate;
+        }
+      }
+    }
+  }
+
+  return 0;
+}
diff --git 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.h
 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.h
index 155dda6e748f5..6763bec1ba686 100644
--- 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.h
+++ 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.h
@@ -12,6 +12,8 @@
 #include "Plugins/Process/Utility/RegisterContextPOSIX_arm64.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 
+#include "lldb/Target/Target.h"
+
 class RegisterContextFreeBSDKernel_arm64 : public RegisterContextPOSIX_arm64 {
 public:
   RegisterContextFreeBSDKernel_arm64(
@@ -36,6 +38,8 @@ class RegisterContextFreeBSDKernel_arm64 : public 
RegisterContextPOSIX_arm64 {
 
 private:
   lldb::addr_t m_pcb_addr;
+
+  int64_t GetOsreldate();
 };
 
 #endif // 
LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_ARM64_H

>From 1798331978ba99cb87878ced9d7b7aa5e69810b7 Mon Sep 17 00:00:00 2001
From: Minsoo Choo <[email protected]>
Date: Mon, 9 Feb 2026 10:01:12 -0500
Subject: [PATCH 3/6] fixup! [lldb][Process/FreeBSDKernel] Fix broken debugging
 on aarch64

Signed-off-by: Minsoo Choo <[email protected]>
---
 .../RegisterContextFreeBSDKernel_arm64.cpp    | 40 +++++++++++--------
 .../RegisterContextFreeBSDKernel_arm64.h      |  4 +-
 2 files changed, 25 insertions(+), 19 deletions(-)

diff --git 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
index 9be283a4fa208..1a329f80dfee8 100644
--- 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
+++ 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
@@ -13,12 +13,16 @@
 #include "lldb/Target/Process.h"
 #include "lldb/Target/Target.h"
 #include "lldb/Target/Thread.h"
+#include "lldb/Utility/LLDBLog.h"
+#include "lldb/Utility/Log.h"
 #include "lldb/Utility/RegisterValue.h"
 #include "llvm/Support/Endian.h"
 
 using namespace lldb;
 using namespace lldb_private;
 
+#define FBSD14 1400084
+
 RegisterContextFreeBSDKernel_arm64::RegisterContextFreeBSDKernel_arm64(
     Thread &thread, std::unique_ptr<RegisterInfoPOSIX_arm64> register_info_up,
     lldb::addr_t pcb_addr)
@@ -61,7 +65,7 @@ bool RegisterContextFreeBSDKernel_arm64::ReadRegister(
   Status error;
 
   // TODO: LLVM 24: Remove FreeBSD 13 support
-  if (GetOsreldate() > 1400084) {
+  if (GetOsreldate() >= FBSD14) {
     size_t rd =
         m_thread.GetProcess()->ReadMemory(m_pcb_addr, &pcb, sizeof(pcb), 
error);
     if (rd != sizeof(pcb))
@@ -158,7 +162,7 @@ bool RegisterContextFreeBSDKernel_arm64::WriteRegister(
   return false;
 }
 
-int64_t RegisterContextFreeBSDKernel_arm64::GetOsreldate() {
+int RegisterContextFreeBSDKernel_arm64::GetOsreldate() {
   ProcessSP process_sp = m_thread.GetProcess();
   if (!process_sp)
     return 0;
@@ -169,20 +173,24 @@ int64_t 
RegisterContextFreeBSDKernel_arm64::GetOsreldate() {
   target.GetImages().FindSymbolsWithNameAndType(ConstString("osreldate"),
                                                 lldb::eSymbolTypeData, 
sc_list);
 
-  if (sc_list.GetSize() > 0) {
-    SymbolContext sc;
-    sc_list.GetContextAtIndex(0, sc);
-
-    if (sc.symbol) {
-      lldb::addr_t addr = sc.symbol->GetLoadAddress(&target);
-      if (addr != LLDB_INVALID_ADDRESS) {
-        Status error;
-        int64_t osreldate = 0;
-        size_t bytes_read =
-            process_sp->ReadMemory(addr, &osreldate, sizeof(osreldate), error);
-        if (bytes_read == sizeof(osreldate) && error.Success()) {
-          return osreldate;
-        }
+  if (sc_list.GetSize() == 0) {
+    LLDB_LOGF(GetLog(LLDBLog::Object),
+              "Cannot find osreldate. Defaulting to %d.", FBSD14);
+    return FBSD14;
+  }
+
+  SymbolContext sc;
+  sc_list.GetContextAtIndex(0, sc);
+
+  if (sc.symbol) {
+    lldb::addr_t addr = sc.symbol->GetLoadAddress(&target);
+    if (addr != LLDB_INVALID_ADDRESS) {
+      Status error;
+      int64_t osreldate = 0;
+      size_t bytes_read =
+          process_sp->ReadMemory(addr, &osreldate, sizeof(osreldate), error);
+      if (bytes_read == sizeof(osreldate) && error.Success()) {
+        return osreldate;
       }
     }
   }
diff --git 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.h
 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.h
index 6763bec1ba686..25b2767ee5b9f 100644
--- 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.h
+++ 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.h
@@ -12,8 +12,6 @@
 #include "Plugins/Process/Utility/RegisterContextPOSIX_arm64.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 
-#include "lldb/Target/Target.h"
-
 class RegisterContextFreeBSDKernel_arm64 : public RegisterContextPOSIX_arm64 {
 public:
   RegisterContextFreeBSDKernel_arm64(
@@ -39,7 +37,7 @@ class RegisterContextFreeBSDKernel_arm64 : public 
RegisterContextPOSIX_arm64 {
 private:
   lldb::addr_t m_pcb_addr;
 
-  int64_t GetOsreldate();
+  int GetOsreldate();
 };
 
 #endif // 
LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_ARM64_H

>From 4e0d1c90a5cfe3cffb76acaf2e3d1aac720803ee Mon Sep 17 00:00:00 2001
From: Minsoo Choo <[email protected]>
Date: Thu, 12 Feb 2026 09:38:02 -0500
Subject: [PATCH 4/6] fixup! [lldb][Process/FreeBSDKernel] Fix broken debugging
 on aarch64

Signed-off-by: Minsoo Choo <[email protected]>
---
 .../RegisterContextFreeBSDKernel_arm64.cpp    | 56 +++++++++++--------
 1 file changed, 32 insertions(+), 24 deletions(-)

diff --git 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
index 1a329f80dfee8..3acf558c5677e 100644
--- 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
+++ 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
@@ -18,11 +18,11 @@
 #include "lldb/Utility/RegisterValue.h"
 #include "llvm/Support/Endian.h"
 
+#include <optional>
+
 using namespace lldb;
 using namespace lldb_private;
 
-#define FBSD14 1400084
-
 RegisterContextFreeBSDKernel_arm64::RegisterContextFreeBSDKernel_arm64(
     Thread &thread, std::unique_ptr<RegisterInfoPOSIX_arm64> register_info_up,
     lldb::addr_t pcb_addr)
@@ -48,13 +48,13 @@ bool RegisterContextFreeBSDKernel_arm64::ReadRegister(
   if (m_pcb_addr == LLDB_INVALID_ADDRESS)
     return false;
 
+  // https://cgit.freebsd.org/src/tree/sys/arm64/include/pcb.h
   struct {
-#define PCB_FP 10
-#define PCB_LR 11
     llvm::support::ulittle64_t x[12];
     llvm::support::ulittle64_t sp;
   } pcb;
 
+  // https://cgit.freebsd.org/src/tree/sys/arm64/include/pcb.h?h=stable%2F13
   struct {
     llvm::support::ulittle64_t x[30];
     llvm::support::ulittle64_t lr;
@@ -63,9 +63,19 @@ bool RegisterContextFreeBSDKernel_arm64::ReadRegister(
   } pcb13;
 
   Status error;
+  constexpr int FBSD14 = 1400084;
+  static const int osreldate = 1400084;
+  auto osreldate_or_null = GetOsreldate();
+  if (osreldate_or_null)
+    osreldate = *osreldate_or_null;
+  else
+    LLDB_LOGF(GetLog(LLDBLog::Object),
+              "Cannot find osreldate. Defaulting to %d.", FBSD14);
 
   // TODO: LLVM 24: Remove FreeBSD 13 support
-  if (GetOsreldate() >= FBSD14) {
+  if (osreldate >= FBSD14) {
+    constexpr uint32_t PCB_FP = 10;
+    constexpr uint32_t PCB_LR = 11;
     size_t rd =
         m_thread.GetProcess()->ReadMemory(m_pcb_addr, &pcb, sizeof(pcb), 
error);
     if (rd != sizeof(pcb))
@@ -162,10 +172,10 @@ bool RegisterContextFreeBSDKernel_arm64::WriteRegister(
   return false;
 }
 
-int RegisterContextFreeBSDKernel_arm64::GetOsreldate() {
+std::optional<int> RegisterContextFreeBSDKernel_arm64::GetOsreldate() {
   ProcessSP process_sp = m_thread.GetProcess();
   if (!process_sp)
-    return 0;
+    return std::nullopt;
 
   Target &target = process_sp->GetTarget();
 
@@ -173,27 +183,25 @@ int RegisterContextFreeBSDKernel_arm64::GetOsreldate() {
   target.GetImages().FindSymbolsWithNameAndType(ConstString("osreldate"),
                                                 lldb::eSymbolTypeData, 
sc_list);
 
-  if (sc_list.GetSize() == 0) {
-    LLDB_LOGF(GetLog(LLDBLog::Object),
-              "Cannot find osreldate. Defaulting to %d.", FBSD14);
-    return FBSD14;
-  }
+  if (sc_list.GetSize() == 0)
+    return std::nullopt;
 
   SymbolContext sc;
   sc_list.GetContextAtIndex(0, sc);
 
-  if (sc.symbol) {
-    lldb::addr_t addr = sc.symbol->GetLoadAddress(&target);
-    if (addr != LLDB_INVALID_ADDRESS) {
-      Status error;
-      int64_t osreldate = 0;
-      size_t bytes_read =
-          process_sp->ReadMemory(addr, &osreldate, sizeof(osreldate), error);
-      if (bytes_read == sizeof(osreldate) && error.Success()) {
-        return osreldate;
-      }
-    }
+  if (!sc.symbol)
+    return std::nullopt;
+
+  lldb::addr_t addr = sc.symbol->GetLoadAddress(&target);
+  if (addr == LLDB_INVALID_ADDRESS)
+    return std::nullopt;
+  Status error;
+  int64_t osreldate = 0;
+  size_t bytes_read =
+      process_sp->ReadMemory(addr, &osreldate, sizeof(osreldate), error);
+  if (bytes_read == sizeof(osreldate) && error.Success()) {
+    return osreldate;
   }
 
-  return 0;
+  return std::nullopt;
 }

>From b242e6a0a7fef880bb5aa4108571c07dfb37d89c Mon Sep 17 00:00:00 2001
From: Minsoo Choo <[email protected]>
Date: Thu, 12 Feb 2026 10:43:37 -0500
Subject: [PATCH 5/6] fixup! [lldb][Process/FreeBSDKernel] Fix broken debugging
 on aarch64

Signed-off-by: Minsoo Choo <[email protected]>
---
 .../FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp    | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
index 3acf558c5677e..f4e6a91fc8411 100644
--- 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
+++ 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
@@ -182,26 +182,24 @@ std::optional<int> 
RegisterContextFreeBSDKernel_arm64::GetOsreldate() {
   SymbolContextList sc_list;
   target.GetImages().FindSymbolsWithNameAndType(ConstString("osreldate"),
                                                 lldb::eSymbolTypeData, 
sc_list);
-
   if (sc_list.GetSize() == 0)
     return std::nullopt;
 
   SymbolContext sc;
   sc_list.GetContextAtIndex(0, sc);
-
   if (!sc.symbol)
     return std::nullopt;
 
   lldb::addr_t addr = sc.symbol->GetLoadAddress(&target);
   if (addr == LLDB_INVALID_ADDRESS)
     return std::nullopt;
+
   Status error;
   int64_t osreldate = 0;
   size_t bytes_read =
       process_sp->ReadMemory(addr, &osreldate, sizeof(osreldate), error);
-  if (bytes_read == sizeof(osreldate) && error.Success()) {
+  if (bytes_read == sizeof(osreldate) && error.Success())
     return osreldate;
-  }
 
   return std::nullopt;
 }

>From cfe96c0e4c4da09b94572e639629239a63f630fb Mon Sep 17 00:00:00 2001
From: Minsoo Choo <[email protected]>
Date: Thu, 12 Feb 2026 11:03:37 -0500
Subject: [PATCH 6/6] fixup! [lldb][Process/FreeBSDKernel] Fix broken debugging
 on aarch64

Signed-off-by: Minsoo Choo <[email protected]>
---
 .../FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp      | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
index f4e6a91fc8411..ecde9a9df6131 100644
--- 
a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
+++ 
b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_arm64.cpp
@@ -64,7 +64,7 @@ bool RegisterContextFreeBSDKernel_arm64::ReadRegister(
 
   Status error;
   constexpr int FBSD14 = 1400084;
-  static const int osreldate = 1400084;
+  int osreldate = FBSD14;
   auto osreldate_or_null = GetOsreldate();
   if (osreldate_or_null)
     osreldate = *osreldate_or_null;
@@ -195,7 +195,7 @@ std::optional<int> 
RegisterContextFreeBSDKernel_arm64::GetOsreldate() {
     return std::nullopt;
 
   Status error;
-  int64_t osreldate = 0;
+  int osreldate = 0;
   size_t bytes_read =
       process_sp->ReadMemory(addr, &osreldate, sizeof(osreldate), error);
   if (bytes_read == sizeof(osreldate) && error.Success())

_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to