Skip to content

[lldb][Process/FreeBSDKernel] Add riscv64 support#180670

Open
mchoo7 wants to merge 3 commits intollvm:mainfrom
mchoo7:rvkern
Open

[lldb][Process/FreeBSDKernel] Add riscv64 support#180670
mchoo7 wants to merge 3 commits intollvm:mainfrom
mchoo7:rvkern

Conversation

@mchoo7
Copy link
Contributor

@mchoo7 mchoo7 commented Feb 10, 2026

This is LLDB version of https://cgit.freebsd.org/ports/tree/devel/gdb/files/kgdb/riscv-fbsd-kern.c. This enables selecting riscv64 and reading registers from PCB structure on core dump and live kenrel debugging while trapframe unwinding support will be implemented in future. Test files using core dump from riscv64 will be implemented once other kernel debugging improvements are done.

@llvmbot
Copy link
Member

llvmbot commented Feb 10, 2026

@llvm/pr-subscribers-backend-risc-v

Author: Minsoo Choo (mchoo7)

Changes

This is LLDB version of https://cgit.freebsd.org/ports/tree/devel/gdb/files/kgdb/riscv-fbsd-kern.c. Trapframe unwinding will be implemented in future.


Full diff: https://github.com/llvm/llvm-project/pull/180670.diff

6 Files Affected:

  • (modified) lldb/docs/index.rst (+1-1)
  • (modified) lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt (+1)
  • (added) lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.cpp (+104)
  • (added) lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.h (+42)
  • (modified) lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp (+8)
  • (modified) llvm/docs/ReleaseNotes.md (+1)
diff --git a/lldb/docs/index.rst b/lldb/docs/index.rst
index 10683c7593b01..d605d2649d94f 100644
--- a/lldb/docs/index.rst
+++ b/lldb/docs/index.rst
@@ -74,7 +74,7 @@ are welcome:
 * iOS, tvOS, and watchOS device debugging on ARM and AArch64
 * Linux user-space debugging for i386, x86_64, ARM, AArch64, PPC64le, s390x
 * FreeBSD user-space debugging for i386, x86_64, ARM, AArch64, PPC
-* FreeBSD kernel debugging for i386, x86_64, AArch64
+* FreeBSD kernel debugging for i386, x86_64, AArch64, RISCV64
 * NetBSD user-space debugging for i386 and x86_64
 * Windows user-space debugging for i386, x86_64, ARM and AArch64 (*)
 
diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt b/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt
index c35b4def24e25..d8a42c599a77e 100644
--- a/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt
+++ b/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt
@@ -15,6 +15,7 @@ add_lldb_library(lldbPluginProcessFreeBSDKernel PLUGIN
   ProcessFreeBSDKernel.cpp
   RegisterContextFreeBSDKernel_arm64.cpp
   RegisterContextFreeBSDKernel_i386.cpp
+  RegisterContextFreeBSDKernel_riscv64.cpp
   RegisterContextFreeBSDKernel_x86_64.cpp
   ThreadFreeBSDKernel.cpp
 
diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.cpp b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.cpp
new file mode 100644
index 0000000000000..3aa8e8299e82f
--- /dev/null
+++ b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.cpp
@@ -0,0 +1,104 @@
+//===-- RegisterContextFreeBSDKernel_riscv64.cpp
+//----------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "RegisterContextFreeBSDKernel_riscv64.h"
+
+#include "lldb/Target/Process.h"
+#include "lldb/Target/Thread.h"
+#include "lldb/Utility/RegisterValue.h"
+#include "llvm/Support/Endian.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+RegisterContextFreeBSDKernel_riscv64::RegisterContextFreeBSDKernel_riscv64(
+    Thread &thread, std::unique_ptr<RegisterInfoPOSIX_riscv64> register_info_up,
+    lldb::addr_t pcb_addr)
+    : RegisterContextPOSIX_riscv64(thread, std::move(register_info_up)),
+      m_pcb_addr(pcb_addr) {}
+
+bool RegisterContextFreeBSDKernel_riscv64::ReadGPR() { return true; }
+
+bool RegisterContextFreeBSDKernel_riscv64::ReadFPR() { return true; }
+
+bool RegisterContextFreeBSDKernel_riscv64::WriteGPR() {
+  assert(0);
+  return false;
+}
+
+bool RegisterContextFreeBSDKernel_riscv64::WriteFPR() {
+  assert(0);
+  return false;
+}
+
+bool RegisterContextFreeBSDKernel_riscv64::ReadRegister(
+    const RegisterInfo *reg_info, RegisterValue &value) {
+  if (m_pcb_addr == LLDB_INVALID_ADDRESS)
+    return false;
+
+  // https://github.com/freebsd/freebsd-src/blob/main/sys/riscv/include/pcb.h
+  struct {
+    llvm::support::ulittle64_t ra;
+    llvm::support::ulittle64_t sp;
+    llvm::support::ulittle64_t gp;
+    llvm::support::ulittle64_t tp;
+    llvm::support::ulittle64_t s[12];
+  } pcb;
+
+  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_pc_riscv:
+  // Supply the RA as PC as well to simulate the PC as if the thread had just
+  // returned.
+  case gpr_ra_riscv:
+    value = pcb.ra;
+    break;
+  case gpr_sp_riscv:
+    value = pcb.sp;
+    break;
+  case gpr_gp_riscv:
+    value = pcb.gp;
+    break;
+  case gpr_tp_riscv:
+    value = pcb.tp;
+    break;
+  case gpr_fp_riscv:
+    value = pcb.s[0];
+    break;
+  case gpr_s1_riscv:
+    value = pcb.s[1];
+    break;
+  case gpr_s2_riscv:
+  case gpr_s3_riscv:
+  case gpr_s4_riscv:
+  case gpr_s5_riscv:
+  case gpr_s6_riscv:
+  case gpr_s7_riscv:
+  case gpr_s8_riscv:
+  case gpr_s9_riscv:
+  case gpr_s10_riscv:
+  case gpr_s11_riscv:
+    value = pcb.s[reg - gpr_s2_riscv];
+    break;
+  default:
+    return false;
+  }
+  return true;
+}
+
+bool RegisterContextFreeBSDKernel_riscv64::WriteRegister(
+    const RegisterInfo *reg_info, const RegisterValue &value) {
+  return false;
+}
diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.h b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.h
new file mode 100644
index 0000000000000..a99d3a3c215f4
--- /dev/null
+++ b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.h
@@ -0,0 +1,42 @@
+//===-- RegisterContextFreeBSDKernel_riscv64.h ------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_RISCV64_H
+#define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_RISCV64_H
+
+#include "Plugins/Process/Utility/RegisterContextPOSIX_riscv64.h"
+#include "Plugins/Process/elf-core/RegisterUtilities.h"
+
+class RegisterContextFreeBSDKernel_riscv64
+    : public RegisterContextPOSIX_riscv64 {
+public:
+  RegisterContextFreeBSDKernel_riscv64(
+      lldb_private::Thread &thread,
+      std::unique_ptr<RegisterInfoPOSIX_riscv64> register_info_up,
+      lldb::addr_t pcb_addr);
+
+  bool ReadRegister(const lldb_private::RegisterInfo *reg_info,
+                    lldb_private::RegisterValue &value) override;
+
+  bool WriteRegister(const lldb_private::RegisterInfo *reg_info,
+                     const lldb_private::RegisterValue &value) override;
+
+protected:
+  bool ReadGPR() override;
+
+  bool ReadFPR() override;
+
+  bool WriteGPR() override;
+
+  bool WriteFPR() override;
+
+private:
+  lldb::addr_t m_pcb_addr;
+};
+
+#endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_RISCV64_H
diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp b/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp
index dd1ed52719749..28de9bed05519 100644
--- a/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp
+++ b/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp
@@ -15,9 +15,11 @@
 #include "Plugins/Process/Utility/RegisterContextFreeBSD_i386.h"
 #include "Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.h"
 #include "Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h"
+#include "Plugins/Process/Utility/RegisterInfoPOSIX_riscv64.h"
 #include "ProcessFreeBSDKernel.h"
 #include "RegisterContextFreeBSDKernel_arm64.h"
 #include "RegisterContextFreeBSDKernel_i386.h"
+#include "RegisterContextFreeBSDKernel_riscv64.h"
 #include "RegisterContextFreeBSDKernel_x86_64.h"
 
 using namespace lldb;
@@ -62,6 +64,12 @@ ThreadFreeBSDKernel::CreateRegisterContextForFrame(StackFrame *frame) {
               *this, std::make_unique<RegisterInfoPOSIX_arm64>(arch, 0),
               m_pcb_addr);
       break;
+    case llvm::Triple::riscv64:
+      m_thread_reg_ctx_sp =
+          std::make_shared<RegisterContextFreeBSDKernel_riscv64>(
+              *this, std::make_unique<RegisterInfoPOSIX_riscv64>(arch, 0),
+              m_pcb_addr);
+      break;
     case llvm::Triple::x86:
       m_thread_reg_ctx_sp = std::make_shared<RegisterContextFreeBSDKernel_i386>(
           *this, new RegisterContextFreeBSD_i386(arch), m_pcb_addr);
diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md
index 30e74acf973ed..d37af4f25b503 100644
--- a/llvm/docs/ReleaseNotes.md
+++ b/llvm/docs/ReleaseNotes.md
@@ -182,6 +182,7 @@ Changes to LLDB
 * Support for FreeBSD on MIPS64 has been removed.
 * The minimum assumed version of FreeBSD is now 14. The effect of which is that watchpoints are
   assumed to be supported.
+* Kernel debugging support for RISCV64 on FreeBSD has been added.
 
 Changes to BOLT
 ---------------

@llvmbot
Copy link
Member

llvmbot commented Feb 10, 2026

@llvm/pr-subscribers-lldb

Author: Minsoo Choo (mchoo7)

Changes

This is LLDB version of https://cgit.freebsd.org/ports/tree/devel/gdb/files/kgdb/riscv-fbsd-kern.c. Trapframe unwinding will be implemented in future.


Full diff: https://github.com/llvm/llvm-project/pull/180670.diff

6 Files Affected:

  • (modified) lldb/docs/index.rst (+1-1)
  • (modified) lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt (+1)
  • (added) lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.cpp (+104)
  • (added) lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.h (+42)
  • (modified) lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp (+8)
  • (modified) llvm/docs/ReleaseNotes.md (+1)
diff --git a/lldb/docs/index.rst b/lldb/docs/index.rst
index 10683c7593b01..d605d2649d94f 100644
--- a/lldb/docs/index.rst
+++ b/lldb/docs/index.rst
@@ -74,7 +74,7 @@ are welcome:
 * iOS, tvOS, and watchOS device debugging on ARM and AArch64
 * Linux user-space debugging for i386, x86_64, ARM, AArch64, PPC64le, s390x
 * FreeBSD user-space debugging for i386, x86_64, ARM, AArch64, PPC
-* FreeBSD kernel debugging for i386, x86_64, AArch64
+* FreeBSD kernel debugging for i386, x86_64, AArch64, RISCV64
 * NetBSD user-space debugging for i386 and x86_64
 * Windows user-space debugging for i386, x86_64, ARM and AArch64 (*)
 
diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt b/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt
index c35b4def24e25..d8a42c599a77e 100644
--- a/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt
+++ b/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt
@@ -15,6 +15,7 @@ add_lldb_library(lldbPluginProcessFreeBSDKernel PLUGIN
   ProcessFreeBSDKernel.cpp
   RegisterContextFreeBSDKernel_arm64.cpp
   RegisterContextFreeBSDKernel_i386.cpp
+  RegisterContextFreeBSDKernel_riscv64.cpp
   RegisterContextFreeBSDKernel_x86_64.cpp
   ThreadFreeBSDKernel.cpp
 
diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.cpp b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.cpp
new file mode 100644
index 0000000000000..3aa8e8299e82f
--- /dev/null
+++ b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.cpp
@@ -0,0 +1,104 @@
+//===-- RegisterContextFreeBSDKernel_riscv64.cpp
+//----------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "RegisterContextFreeBSDKernel_riscv64.h"
+
+#include "lldb/Target/Process.h"
+#include "lldb/Target/Thread.h"
+#include "lldb/Utility/RegisterValue.h"
+#include "llvm/Support/Endian.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+RegisterContextFreeBSDKernel_riscv64::RegisterContextFreeBSDKernel_riscv64(
+    Thread &thread, std::unique_ptr<RegisterInfoPOSIX_riscv64> register_info_up,
+    lldb::addr_t pcb_addr)
+    : RegisterContextPOSIX_riscv64(thread, std::move(register_info_up)),
+      m_pcb_addr(pcb_addr) {}
+
+bool RegisterContextFreeBSDKernel_riscv64::ReadGPR() { return true; }
+
+bool RegisterContextFreeBSDKernel_riscv64::ReadFPR() { return true; }
+
+bool RegisterContextFreeBSDKernel_riscv64::WriteGPR() {
+  assert(0);
+  return false;
+}
+
+bool RegisterContextFreeBSDKernel_riscv64::WriteFPR() {
+  assert(0);
+  return false;
+}
+
+bool RegisterContextFreeBSDKernel_riscv64::ReadRegister(
+    const RegisterInfo *reg_info, RegisterValue &value) {
+  if (m_pcb_addr == LLDB_INVALID_ADDRESS)
+    return false;
+
+  // https://github.com/freebsd/freebsd-src/blob/main/sys/riscv/include/pcb.h
+  struct {
+    llvm::support::ulittle64_t ra;
+    llvm::support::ulittle64_t sp;
+    llvm::support::ulittle64_t gp;
+    llvm::support::ulittle64_t tp;
+    llvm::support::ulittle64_t s[12];
+  } pcb;
+
+  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_pc_riscv:
+  // Supply the RA as PC as well to simulate the PC as if the thread had just
+  // returned.
+  case gpr_ra_riscv:
+    value = pcb.ra;
+    break;
+  case gpr_sp_riscv:
+    value = pcb.sp;
+    break;
+  case gpr_gp_riscv:
+    value = pcb.gp;
+    break;
+  case gpr_tp_riscv:
+    value = pcb.tp;
+    break;
+  case gpr_fp_riscv:
+    value = pcb.s[0];
+    break;
+  case gpr_s1_riscv:
+    value = pcb.s[1];
+    break;
+  case gpr_s2_riscv:
+  case gpr_s3_riscv:
+  case gpr_s4_riscv:
+  case gpr_s5_riscv:
+  case gpr_s6_riscv:
+  case gpr_s7_riscv:
+  case gpr_s8_riscv:
+  case gpr_s9_riscv:
+  case gpr_s10_riscv:
+  case gpr_s11_riscv:
+    value = pcb.s[reg - gpr_s2_riscv];
+    break;
+  default:
+    return false;
+  }
+  return true;
+}
+
+bool RegisterContextFreeBSDKernel_riscv64::WriteRegister(
+    const RegisterInfo *reg_info, const RegisterValue &value) {
+  return false;
+}
diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.h b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.h
new file mode 100644
index 0000000000000..a99d3a3c215f4
--- /dev/null
+++ b/lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.h
@@ -0,0 +1,42 @@
+//===-- RegisterContextFreeBSDKernel_riscv64.h ------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_RISCV64_H
+#define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_RISCV64_H
+
+#include "Plugins/Process/Utility/RegisterContextPOSIX_riscv64.h"
+#include "Plugins/Process/elf-core/RegisterUtilities.h"
+
+class RegisterContextFreeBSDKernel_riscv64
+    : public RegisterContextPOSIX_riscv64 {
+public:
+  RegisterContextFreeBSDKernel_riscv64(
+      lldb_private::Thread &thread,
+      std::unique_ptr<RegisterInfoPOSIX_riscv64> register_info_up,
+      lldb::addr_t pcb_addr);
+
+  bool ReadRegister(const lldb_private::RegisterInfo *reg_info,
+                    lldb_private::RegisterValue &value) override;
+
+  bool WriteRegister(const lldb_private::RegisterInfo *reg_info,
+                     const lldb_private::RegisterValue &value) override;
+
+protected:
+  bool ReadGPR() override;
+
+  bool ReadFPR() override;
+
+  bool WriteGPR() override;
+
+  bool WriteFPR() override;
+
+private:
+  lldb::addr_t m_pcb_addr;
+};
+
+#endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_RISCV64_H
diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp b/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp
index dd1ed52719749..28de9bed05519 100644
--- a/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp
+++ b/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp
@@ -15,9 +15,11 @@
 #include "Plugins/Process/Utility/RegisterContextFreeBSD_i386.h"
 #include "Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.h"
 #include "Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h"
+#include "Plugins/Process/Utility/RegisterInfoPOSIX_riscv64.h"
 #include "ProcessFreeBSDKernel.h"
 #include "RegisterContextFreeBSDKernel_arm64.h"
 #include "RegisterContextFreeBSDKernel_i386.h"
+#include "RegisterContextFreeBSDKernel_riscv64.h"
 #include "RegisterContextFreeBSDKernel_x86_64.h"
 
 using namespace lldb;
@@ -62,6 +64,12 @@ ThreadFreeBSDKernel::CreateRegisterContextForFrame(StackFrame *frame) {
               *this, std::make_unique<RegisterInfoPOSIX_arm64>(arch, 0),
               m_pcb_addr);
       break;
+    case llvm::Triple::riscv64:
+      m_thread_reg_ctx_sp =
+          std::make_shared<RegisterContextFreeBSDKernel_riscv64>(
+              *this, std::make_unique<RegisterInfoPOSIX_riscv64>(arch, 0),
+              m_pcb_addr);
+      break;
     case llvm::Triple::x86:
       m_thread_reg_ctx_sp = std::make_shared<RegisterContextFreeBSDKernel_i386>(
           *this, new RegisterContextFreeBSD_i386(arch), m_pcb_addr);
diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md
index 30e74acf973ed..d37af4f25b503 100644
--- a/llvm/docs/ReleaseNotes.md
+++ b/llvm/docs/ReleaseNotes.md
@@ -182,6 +182,7 @@ Changes to LLDB
 * Support for FreeBSD on MIPS64 has been removed.
 * The minimum assumed version of FreeBSD is now 14. The effect of which is that watchpoints are
   assumed to be supported.
+* Kernel debugging support for RISCV64 on FreeBSD has been added.
 
 Changes to BOLT
 ---------------

Signed-off-by: Minsoo Choo <minsoochoo0122@proton.me>
Signed-off-by: Minsoo Choo <minsoochoo0122@proton.me>
Copy link
Collaborator

@DavidSpickett DavidSpickett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just skimmed this, leaving the proper review to FreeBSD folks.

Signed-off-by: Minsoo Choo <minsoochoo0122@proton.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants