================
@@ -42,64 +44,111 @@ bool RegisterContextFreeBSDKernel_arm64::ReadRegister(
   if (m_pcb_addr == LLDB_INVALID_ADDRESS)
     return false;
 
+  struct {
+#define PCB_FP 10
+#define PCB_LR 11
+    llvm::support::ulittle64_t x[12];
+    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;
-  } pcb;
+  } 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_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 = pcb.x[reg - gpr_x0_arm64];
-    break;
-  case gpr_sp_arm64:
-    value = pcb.sp;
-    break;
-  case gpr_pc_arm64:
-    // The pc of crashing thread is stored in lr.
-    value = pcb.lr;
-    break;
-  default:
-    return false;
+  // TODO: LLVM 24: Remove FreeBSD 13 support
+  if (GetOsreldate() > 1400084) {
----------------
mchoo7 wrote:

The next commit, 
https://github.com/freebsd/freebsd-src/commit/ea3061526e9ce5d3b65932c1d3e4437abd556d65#diff-d07b4e228ca340857a90658e328d65f8dea9c5063e99197fbaaa046d97ae927c,
 bumped __FreeBSD_version. But I made mistake here. it should be `>=` not `>`

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

Reply via email to