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/3] [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/3] 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
 

>From 2f8efb7a7dc259b84b1d0dbe38cf861c4e8ff953 Mon Sep 17 00:00:00 2001
From: Minsoo Choo <[email protected]>
Date: Wed, 4 Mar 2026 10:28:58 -0500
Subject: [PATCH 3/3] fixup! [lldb][Process/FreeBSDKernelCore] Load core
 according to KASLR

Signed-off-by: Minsoo Choo <[email protected]>
---
 .../Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp  | 4 ++--
 .../Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.h    | 2 +-
 llvm/docs/ReleaseNotes.md                                     | 2 --
 3 files changed, 3 insertions(+), 5 deletions(-)

diff --git 
a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp 
b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp
index 0217177c87dbd..d2f663f810bfe 100644
--- 
a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp
+++ 
b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp
@@ -118,7 +118,7 @@ bool ProcessFreeBSDKernelCore::CanDebug(lldb::TargetSP 
target_sp,
 
 Status ProcessFreeBSDKernelCore::DoLoadCore() {
   // The core is already loaded by CreateInstance().
-  ApplyKASLR();
+  SetKernelDisplacement();
 
   return Status();
 }
@@ -326,7 +326,7 @@ lldb::addr_t ProcessFreeBSDKernelCore::FindSymbol(const 
char *name) {
   return sym ? sym->GetLoadAddress(&GetTarget()) : LLDB_INVALID_ADDRESS;
 }
 
-void ProcessFreeBSDKernelCore::ApplyKASLR() {
+void ProcessFreeBSDKernelCore::SetKernelDisplacement() {
   kssize_t displacement = kvm_kerndisp(m_kvm);
 
   if (displacement == 0)
diff --git 
a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.h 
b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.h
index 92ddec4696066..d82e55ea74bd9 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.h
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.h
@@ -64,7 +64,7 @@ class ProcessFreeBSDKernelCore : public 
lldb_private::PostMortemProcess {
   lldb::addr_t FindSymbol(const char *name);
 
 private:
-  void ApplyKASLR();
+  void SetKernelDisplacement();
 
   void PrintUnreadMessage();
 
diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md
index dcb13069abc6c..2e0c5c5cb9370 100644
--- a/llvm/docs/ReleaseNotes.md
+++ b/llvm/docs/ReleaseNotes.md
@@ -230,8 +230,6 @@ 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 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

Reply via email to