https://github.com/mchoo7 created https://github.com/llvm/llvm-project/pull/183947
This commit address two issues with arm64 RegisterContext on FreeBSDKernelCore. Since LR in pcb structure stores LR for normal threads and PC for crashed thread, both `gpr_lr_arm64` and `gpr_pc_arm64` should point to the same field (the LR field in pcb). Also pcb's LR fields stores LR not PC for normal threads (i.e non-crashed threads) but `gpr_lr_arm64` was not exposed for FreeBSD 13. >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] [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; } _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
