https://github.com/mchoo7 updated https://github.com/llvm/llvm-project/pull/183975
>From af81454d1d1fa8519729e3c9db3162950535aa5a Mon Sep 17 00:00:00 2001 From: Minsoo Choo <[email protected]> Date: Sat, 28 Feb 2026 22:11:06 -0500 Subject: [PATCH 1/2] [lldb][Process/FreeBSDKernelCore] Load core according to KASLR Signed-off-by: Minsoo Choo <[email protected]> --- .../ProcessFreeBSDKernelCore.cpp | 24 +++++++++++++++++++ .../ProcessFreeBSDKernelCore.h | 2 ++ llvm/docs/ReleaseNotes.md | 2 ++ 3 files changed, 28 insertions(+) diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp index 577d8e0d50cf1..0217177c87dbd 100644 --- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp +++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp @@ -118,6 +118,8 @@ bool ProcessFreeBSDKernelCore::CanDebug(lldb::TargetSP target_sp, Status ProcessFreeBSDKernelCore::DoLoadCore() { // The core is already loaded by CreateInstance(). + ApplyKASLR(); + return Status(); } @@ -324,6 +326,28 @@ lldb::addr_t ProcessFreeBSDKernelCore::FindSymbol(const char *name) { return sym ? sym->GetLoadAddress(&GetTarget()) : LLDB_INVALID_ADDRESS; } +void ProcessFreeBSDKernelCore::ApplyKASLR() { + kssize_t displacement = kvm_kerndisp(m_kvm); + + if (displacement == 0) + return; + + Target &target = GetTarget(); + lldb::ModuleSP kernel_module_sp = target.GetExecutableModule(); + if (!kernel_module_sp) + return; + + bool changed = false; + kernel_module_sp->SetLoadAddress( + target, static_cast<lldb::addr_t>(displacement), true, changed); + + if (changed) { + ModuleList loaded_module_list; + loaded_module_list.Append(kernel_module_sp); + target.ModulesDidLoad(loaded_module_list); + } +} + void ProcessFreeBSDKernelCore::PrintUnreadMessage() { Target &target = GetTarget(); Debugger &debugger = target.GetDebugger(); diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.h b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.h index 67cfae13d2a4d..92ddec4696066 100644 --- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.h +++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.h @@ -64,6 +64,8 @@ class ProcessFreeBSDKernelCore : public lldb_private::PostMortemProcess { lldb::addr_t FindSymbol(const char *name); private: + void ApplyKASLR(); + void PrintUnreadMessage(); const char *GetError(); diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md index 2e0c5c5cb9370..86d4669e37db5 100644 --- a/llvm/docs/ReleaseNotes.md +++ b/llvm/docs/ReleaseNotes.md @@ -230,6 +230,8 @@ Changes to LLDB `plugin.process.freebsd-kernel-core.read-only` must be set to `false`. This setting is available when using `/dev/mem` or a kernel dump. However, since `kvm_write()` does not support writing to kernel dumps, writes to a kernel dump will still fail when the setting is false. +* Debugging core with KASLR applied is now supported. Note that this doesn't work for some crash dumps due to + kvm's limitation. ### Linux >From 891e8661ac889728e60e34b6cdb97d2ffdc0fd56 Mon Sep 17 00:00:00 2001 From: Minsoo Choo <[email protected]> Date: Mon, 2 Mar 2026 10:59:25 -0500 Subject: [PATCH 2/2] fixup! [lldb][Process/FreeBSDKernelCore] Load core according to KASLR Signed-off-by: Minsoo Choo <[email protected]> --- llvm/docs/ReleaseNotes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md index 86d4669e37db5..dcb13069abc6c 100644 --- a/llvm/docs/ReleaseNotes.md +++ b/llvm/docs/ReleaseNotes.md @@ -230,8 +230,8 @@ Changes to LLDB `plugin.process.freebsd-kernel-core.read-only` must be set to `false`. This setting is available when using `/dev/mem` or a kernel dump. However, since `kvm_write()` does not support writing to kernel dumps, writes to a kernel dump will still fail when the setting is false. -* Debugging core with KASLR applied is now supported. Note that this doesn't work for some crash dumps due to - kvm's limitation. +* Debugging core with KASLR applied is now supported. Note that this does not work for some crash dumps due to + kvm's limitations. ### Linux _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
