[lldb][Process/FreeBSDKernel] Add riscv64 support#180670
Open
[lldb][Process/FreeBSDKernel] Add riscv64 support#180670
Conversation
Member
|
@llvm/pr-subscribers-backend-risc-v Author: Minsoo Choo (mchoo7) ChangesThis 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:
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
---------------
|
Member
|
@llvm/pr-subscribers-lldb Author: Minsoo Choo (mchoo7) ChangesThis 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:
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>
lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.cpp
Outdated
Show resolved
Hide resolved
Collaborator
DavidSpickett
left a comment
There was a problem hiding this comment.
Just skimmed this, leaving the proper review to FreeBSD folks.
lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.h
Outdated
Show resolved
Hide resolved
Signed-off-by: Minsoo Choo <minsoochoo0122@proton.me>
jrtc27
reviewed
Feb 11, 2026
lldb/source/Plugins/Process/FreeBSDKernel/RegisterContextFreeBSDKernel_riscv64.cpp
Show resolved
Hide resolved
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.