https://github.com/mchoo7 updated https://github.com/llvm/llvm-project/pull/181283
>From 71c18d3e0bc97e8cae496a52324333ae026b5c4e Mon Sep 17 00:00:00 2001 From: Minsoo Choo <[email protected]> Date: Thu, 12 Feb 2026 17:13:23 -0500 Subject: [PATCH 1/4] [lldb][Process/FreeBSDKernel] Remove libfbsdvmcore support Signed-off-by: Minsoo Choo <[email protected]> --- lldb/cmake/modules/LLDBConfig.cmake | 1 - lldb/source/Plugins/Process/CMakeLists.txt | 2 +- .../Process/FreeBSDKernel/CMakeLists.txt | 15 +-- .../FreeBSDKernel/ProcessFreeBSDKernel.cpp | 121 ++---------------- .../FreeBSDKernel/ProcessFreeBSDKernel.h | 14 +- 5 files changed, 27 insertions(+), 126 deletions(-) diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake index d4471b8a5418d..fe2a62cd04314 100644 --- a/lldb/cmake/modules/LLDBConfig.cmake +++ b/lldb/cmake/modules/LLDBConfig.cmake @@ -63,7 +63,6 @@ add_optional_dependency(LLDB_ENABLE_LZMA "Enable LZMA compression support in LLD add_optional_dependency(LLDB_ENABLE_LUA "Enable Lua scripting support in LLDB" LuaAndSwig LUAANDSWIG_FOUND) add_optional_dependency(LLDB_ENABLE_PYTHON "Enable Python scripting support in LLDB" PythonAndSwig PYTHONANDSWIG_FOUND) add_optional_dependency(LLDB_ENABLE_LIBXML2 "Enable Libxml 2 support in LLDB" LibXml2 LIBXML2_FOUND VERSION ${LLDB_LIBXML2_VERSION}) -add_optional_dependency(LLDB_ENABLE_FBSDVMCORE "Enable libfbsdvmcore support in LLDB" FBSDVMCore FBSDVMCore_FOUND QUIET) option(LLDB_USE_ENTITLEMENTS "When codesigning, use entitlements if available" ON) option(LLDB_BUILD_FRAMEWORK "Build LLDB.framework (Darwin only)" OFF) diff --git a/lldb/source/Plugins/Process/CMakeLists.txt b/lldb/source/Plugins/Process/CMakeLists.txt index 3413360e975fb..9a5f1cd433717 100644 --- a/lldb/source/Plugins/Process/CMakeLists.txt +++ b/lldb/source/Plugins/Process/CMakeLists.txt @@ -8,6 +8,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "Linux|Android") add_subdirectory(POSIX) elseif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") add_subdirectory(FreeBSD) + add_subdirectory(FreeBSDKernel) add_subdirectory(POSIX) elseif (CMAKE_SYSTEM_NAME MATCHES "NetBSD") add_subdirectory(NetBSD) @@ -28,5 +29,4 @@ add_subdirectory(Utility) add_subdirectory(elf-core) add_subdirectory(mach-core) add_subdirectory(minidump) -add_subdirectory(FreeBSDKernel) add_subdirectory(wasm) diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt b/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt index c35b4def24e25..2d90d0c333026 100644 --- a/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt +++ b/lldb/source/Plugins/Process/FreeBSDKernel/CMakeLists.txt @@ -1,16 +1,3 @@ -set(FBSDKERNEL_LIBS) -if(FBSDVMCore_FOUND) - list(APPEND FBSDKERNEL_LIBS fbsdvmcore) -endif() -if("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD") - list(APPEND FBSDKERNEL_LIBS kvm) -endif() - -if (NOT FBSDKERNEL_LIBS) - message(STATUS "Skipping FreeBSDKernel plugin due to missing libfbsdvmcore") - return() -endif() - add_lldb_library(lldbPluginProcessFreeBSDKernel PLUGIN ProcessFreeBSDKernel.cpp RegisterContextFreeBSDKernel_arm64.cpp @@ -23,5 +10,5 @@ add_lldb_library(lldbPluginProcessFreeBSDKernel PLUGIN LINK_LIBS lldbCore lldbTarget - ${FBSDKERNEL_LIBS} + kvm ) diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp b/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp index 196cb5a620f32..beb7e52adf49e 100644 --- a/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp +++ b/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp @@ -14,62 +14,20 @@ #include "ProcessFreeBSDKernel.h" #include "ThreadFreeBSDKernel.h" -#if LLDB_ENABLE_FBSDVMCORE -#include <fvc.h> -#endif -#if defined(__FreeBSD__) -#include <kvm.h> -#endif - using namespace lldb; using namespace lldb_private; LLDB_PLUGIN_DEFINE(ProcessFreeBSDKernel) -namespace { - -#if LLDB_ENABLE_FBSDVMCORE -class ProcessFreeBSDKernelFVC : public ProcessFreeBSDKernel { -public: - ProcessFreeBSDKernelFVC(lldb::TargetSP target_sp, lldb::ListenerSP listener, - fvc_t *fvc, const FileSpec &core_file); - - ~ProcessFreeBSDKernelFVC(); - - size_t DoReadMemory(lldb::addr_t addr, void *buf, size_t size, - lldb_private::Status &error) override; - -private: - fvc_t *m_fvc; - - const char *GetError(); -}; -#endif // LLDB_ENABLE_FBSDVMCORE - -#if defined(__FreeBSD__) -class ProcessFreeBSDKernelKVM : public ProcessFreeBSDKernel { -public: - ProcessFreeBSDKernelKVM(lldb::TargetSP target_sp, lldb::ListenerSP listener, - kvm_t *fvc, const FileSpec &core_file); - - ~ProcessFreeBSDKernelKVM(); - - size_t DoReadMemory(lldb::addr_t addr, void *buf, size_t size, - lldb_private::Status &error) override; - -private: - kvm_t *m_kvm; - - const char *GetError(); -}; -#endif // defined(__FreeBSD__) - -} // namespace - ProcessFreeBSDKernel::ProcessFreeBSDKernel(lldb::TargetSP target_sp, - ListenerSP listener_sp, + ListenerSP listener_sp, kvm_t *kvm, const FileSpec &core_file) - : PostMortemProcess(target_sp, listener_sp, core_file) {} + : PostMortemProcess(target_sp, listener_sp, core_file), m_kvm(kvm) {} + +ProcessFreeBSDKernel::~ProcessFreeBSDKernel() { + if (m_kvm) + kvm_close(m_kvm); +} lldb::ProcessSP ProcessFreeBSDKernel::CreateInstance(lldb::TargetSP target_sp, ListenerSP listener_sp, @@ -77,23 +35,12 @@ lldb::ProcessSP ProcessFreeBSDKernel::CreateInstance(lldb::TargetSP target_sp, bool can_connect) { ModuleSP executable = target_sp->GetExecutableModule(); if (crash_file && !can_connect && executable) { -#if LLDB_ENABLE_FBSDVMCORE - fvc_t *fvc = - fvc_open(executable->GetFileSpec().GetPath().c_str(), - crash_file->GetPath().c_str(), nullptr, nullptr, nullptr); - if (fvc) - return std::make_shared<ProcessFreeBSDKernelFVC>(target_sp, listener_sp, - fvc, *crash_file); -#endif - -#if defined(__FreeBSD__) kvm_t *kvm = kvm_open2(executable->GetFileSpec().GetPath().c_str(), crash_file->GetPath().c_str(), O_RDONLY, nullptr, nullptr); if (kvm) - return std::make_shared<ProcessFreeBSDKernelKVM>(target_sp, listener_sp, - kvm, *crash_file); -#endif + return std::make_shared<ProcessFreeBSDKernel>(target_sp, listener_sp, kvm, + *crash_file); } return nullptr; } @@ -287,50 +234,8 @@ lldb::addr_t ProcessFreeBSDKernel::FindSymbol(const char *name) { return sym ? sym->GetLoadAddress(&GetTarget()) : LLDB_INVALID_ADDRESS; } -#if LLDB_ENABLE_FBSDVMCORE - -ProcessFreeBSDKernelFVC::ProcessFreeBSDKernelFVC(lldb::TargetSP target_sp, - ListenerSP listener_sp, - fvc_t *fvc, - const FileSpec &core_file) - : ProcessFreeBSDKernel(target_sp, listener_sp, crash_file), m_fvc(fvc) {} - -ProcessFreeBSDKernelFVC::~ProcessFreeBSDKernelFVC() { - if (m_fvc) - fvc_close(m_fvc); -} - -size_t ProcessFreeBSDKernelFVC::DoReadMemory(lldb::addr_t addr, void *buf, - size_t size, Status &error) { - ssize_t rd = 0; - rd = fvc_read(m_fvc, addr, buf, size); - if (rd < 0 || static_cast<size_t>(rd) != size) { - error = Status::FromErrorStringWithFormat("Reading memory failed: %s", - GetError()); - return rd > 0 ? rd : 0; - } - return rd; -} - -const char *ProcessFreeBSDKernelFVC::GetError() { return fvc_geterr(m_fvc); } - -#endif // LLDB_ENABLE_FBSDVMCORE - -#if defined(__FreeBSD__) - -ProcessFreeBSDKernelKVM::ProcessFreeBSDKernelKVM(lldb::TargetSP target_sp, - ListenerSP listener_sp, - kvm_t *fvc, - const FileSpec &core_file) - : ProcessFreeBSDKernel(target_sp, listener_sp, core_file), m_kvm(fvc) {} - -ProcessFreeBSDKernelKVM::~ProcessFreeBSDKernelKVM() { - if (m_kvm) - kvm_close(m_kvm); -} - -size_t ProcessFreeBSDKernelKVM::DoReadMemory(lldb::addr_t addr, void *buf, - size_t size, Status &error) { +size_t ProcessFreeBSDKernel::DoReadMemory(lldb::addr_t addr, void *buf, + size_t size, Status &error) { ssize_t rd = 0; rd = kvm_read2(m_kvm, addr, buf, size); if (rd < 0 || static_cast<size_t>(rd) != size) { @@ -341,6 +246,4 @@ size_t ProcessFreeBSDKernelKVM::DoReadMemory(lldb::addr_t addr, void *buf, return rd; } -const char *ProcessFreeBSDKernelKVM::GetError() { return kvm_geterr(m_kvm); } - -#endif // defined(__FreeBSD__) +const char *ProcessFreeBSDKernel::GetError() { return kvm_geterr(m_kvm); } diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.h b/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.h index 81c567581dd56..d933f7bc219f2 100644 --- a/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.h +++ b/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.h @@ -11,10 +11,14 @@ #include "lldb/Target/PostMortemProcess.h" +#include <kvm.h> + class ProcessFreeBSDKernel : public lldb_private::PostMortemProcess { public: ProcessFreeBSDKernel(lldb::TargetSP target_sp, lldb::ListenerSP listener, - const lldb_private::FileSpec &core_file); + kvm_t *kvm, const lldb_private::FileSpec &core_file); + + ~ProcessFreeBSDKernel(); static lldb::ProcessSP CreateInstance(lldb::TargetSP target_sp, lldb::ListenerSP listener, @@ -44,11 +48,19 @@ class ProcessFreeBSDKernel : public lldb_private::PostMortemProcess { lldb_private::DynamicLoader *GetDynamicLoader() override; + size_t DoReadMemory(lldb::addr_t addr, void *buf, size_t size, + lldb_private::Status &error) override; + protected: bool DoUpdateThreadList(lldb_private::ThreadList &old_thread_list, lldb_private::ThreadList &new_thread_list) override; lldb::addr_t FindSymbol(const char *name); + +private: + kvm_t *m_kvm; + + const char *GetError(); }; #endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_PROCESSFREEBSDKERNEL_H >From 5c95c2718c9a442ec72f5cee234c625787228b4d Mon Sep 17 00:00:00 2001 From: Minsoo Choo <[email protected]> Date: Tue, 17 Feb 2026 13:36:39 -0500 Subject: [PATCH 2/4] fixup! [lldb][Process/FreeBSDKernel] Remove libfbsdvmcore support Signed-off-by: Minsoo Choo <[email protected]> --- llvm/docs/ReleaseNotes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md index 128c19296e75e..6e6a74185c813 100644 --- a/llvm/docs/ReleaseNotes.md +++ b/llvm/docs/ReleaseNotes.md @@ -199,6 +199,7 @@ Changes to LLDB #### Kernel Debugging +* Support for libfbsdvmcore has been removed. As a result, `FreeBSDKernel` plugin only works on FreeBSD hosts. * The crashed thread is now automatically selected on start. * Threads are listed in incrmental order by pid then by tid. >From d7b3c30ecf4bf4f0f7a4362c1896935370c5fcb1 Mon Sep 17 00:00:00 2001 From: Minsoo Choo <[email protected]> Date: Thu, 19 Feb 2026 06:35:28 -0500 Subject: [PATCH 3/4] fixup! [lldb][Process/FreeBSDKernel] Remove libfbsdvmcore support Signed-off-by: Minsoo Choo <[email protected]> --- llvm/docs/ReleaseNotes.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md index 6e6a74185c813..c7be7b515f028 100644 --- a/llvm/docs/ReleaseNotes.md +++ b/llvm/docs/ReleaseNotes.md @@ -199,7 +199,9 @@ Changes to LLDB #### Kernel Debugging -* Support for libfbsdvmcore has been removed. As a result, `FreeBSDKernel` plugin only works on FreeBSD hosts. +* Support for libfbsdvmcore has been removed. As a result, FreeBSD kernel dump debugging is now only + available on FreeBSD hosts. Live kernel debugging through the GDB remote protocol is still available + on any platforms. * The crashed thread is now automatically selected on start. * Threads are listed in incrmental order by pid then by tid. >From cb3f09c217e06f6028dd7ac7c7c894e13f4fa581 Mon Sep 17 00:00:00 2001 From: Minsoo Choo <[email protected]> Date: Thu, 19 Feb 2026 06:52:09 -0500 Subject: [PATCH 4/4] fixup! [lldb][Process/FreeBSDKernel] Remove libfbsdvmcore support Signed-off-by: Minsoo Choo <[email protected]> --- llvm/docs/ReleaseNotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md index c7be7b515f028..a594d45e9ddb0 100644 --- a/llvm/docs/ReleaseNotes.md +++ b/llvm/docs/ReleaseNotes.md @@ -201,7 +201,7 @@ Changes to LLDB * Support for libfbsdvmcore has been removed. As a result, FreeBSD kernel dump debugging is now only available on FreeBSD hosts. Live kernel debugging through the GDB remote protocol is still available - on any platforms. + from any platforms. * The crashed thread is now automatically selected on start. * Threads are listed in incrmental order by pid then by tid. _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
