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

>From 815f04ab0d0ab252c5e1c7b3d8fd67a70935e190 Mon Sep 17 00:00:00 2001
From: Minsoo Choo <[email protected]>
Date: Sat, 28 Feb 2026 15:13:29 -0500
Subject: [PATCH 1/2] [lldb][Process/FreeBSDKernelCore] Fix RegisterContext for
 arm64

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

diff --git 
a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
 
b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
index afd60a64a6365..442fa9b12460f 100644
--- 
a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
+++ 
b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
@@ -101,7 +101,7 @@ bool RegisterContextFreeBSDKernelCore_arm64::ReadRegister(
       // 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];
+      value = pcb.x[gpr_lr_arm64 - gpr_x19_arm64];
       break;
     case gpr_sp_arm64:
       value = pcb.sp;
@@ -151,13 +151,14 @@ bool RegisterContextFreeBSDKernelCore_arm64::ReadRegister(
                     "nonconsecutive arm64 register numbers");
       value = pcb13.x[reg - gpr_x0_arm64];
       break;
-    case gpr_sp_arm64:
-      value = pcb13.sp;
-      break;
+    case gpr_lr_arm64:
     case gpr_pc_arm64:
       // The pc of crashing thread is stored in lr.
       value = pcb13.lr;
       break;
+    case gpr_sp_arm64:
+      value = pcb13.sp;
+      break;
     default:
       return false;
     }

>From 15185aee111e0c96c1b01a3d5d77d22ac215ac00 Mon Sep 17 00:00:00 2001
From: Minsoo Choo <[email protected]>
Date: Sat, 28 Feb 2026 16:19:52 -0500
Subject: [PATCH 2/2] fixup! [lldb][Process/FreeBSDKernelCore] Fix
 RegisterContext for arm64

Signed-off-by: Minsoo Choo <[email protected]>
---
 .../RegisterContextFreeBSDKernelCore_arm64.cpp     | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git 
a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
 
b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
index 442fa9b12460f..15f14f6b2d127 100644
--- 
a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
+++ 
b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
@@ -96,16 +96,15 @@ bool RegisterContextFreeBSDKernelCore_arm64::ReadRegister(
                     "nonconsecutive arm64 register numbers");
       value = pcb.x[reg - gpr_x19_arm64];
       break;
-    case gpr_lr_arm64:
+    case gpr_sp_arm64:
+      value = pcb.sp;
+      break;
     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[gpr_lr_arm64 - gpr_x19_arm64];
       break;
-    case gpr_sp_arm64:
-      value = pcb.sp;
-      break;
     default:
       return false;
     }
@@ -151,14 +150,13 @@ bool RegisterContextFreeBSDKernelCore_arm64::ReadRegister(
                     "nonconsecutive arm64 register numbers");
       value = pcb13.x[reg - gpr_x0_arm64];
       break;
-    case gpr_lr_arm64:
+    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;
-    case gpr_sp_arm64:
-      value = pcb13.sp;
-      break;
     default:
       return false;
     }

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

Reply via email to