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
