[Lldb-commits] [lldb] 7529605 - [LLDB][PosixELF] Move m_mem_region_cache to generic ELF layer (#195809)
via lldb-commits
lldb-commits at lists.llvm.org
Wed May 6 03:49:39 PDT 2026
Author: aokblast
Date: 2026-05-06T18:49:33+08:00
New Revision: 75296054e40c963d89461497c46400da99d01fe1
URL: https://github.com/llvm/llvm-project/commit/75296054e40c963d89461497c46400da99d01fe1
DIFF: https://github.com/llvm/llvm-project/commit/75296054e40c963d89461497c46400da99d01fe1.diff
LOG: [LLDB][PosixELF] Move m_mem_region_cache to generic ELF layer (#195809)
Added:
lldb/test/Shell/Breakpoint/Inputs/break_stepout.c
lldb/test/Shell/Breakpoint/step-out.test
Modified:
lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.h
lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
lldb/source/Plugins/Process/Linux/NativeProcessLinux.h
lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h
lldb/source/Plugins/Process/POSIX/NativeProcessELF.cpp
lldb/source/Plugins/Process/POSIX/NativeProcessELF.h
Removed:
################################################################################
diff --git a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.h b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.h
index fb7372817265d..4a3da9e987e3c 100644
--- a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.h
+++ b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.h
@@ -101,7 +101,6 @@ class NativeProcessFreeBSD : public NativeProcessELF,
ArchSpec m_arch;
MainLoop &m_main_loop;
LazyBool m_supports_mem_region = eLazyBoolCalculate;
- std::vector<std::pair<MemoryRegionInfo, FileSpec>> m_mem_region_cache;
// Private Instance Methods
NativeProcessFreeBSD(::pid_t pid, int terminal_fd, NativeDelegate &delegate,
diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
index 2dabae4eb8d3d..1ad57bd0c19e1 100644
--- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
+++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
@@ -1313,14 +1313,6 @@ Status NativeProcessLinux::PopulateMemoryRegionCache() {
return Status();
}
-void NativeProcessLinux::DoStopIDBumped(uint32_t newBumpId) {
- Log *log = GetLog(POSIXLog::Process);
- LLDB_LOG(log, "newBumpId={0}", newBumpId);
- LLDB_LOG(log, "clearing {0} entries from memory region cache",
- m_mem_region_cache.size());
- m_mem_region_cache.clear();
-}
-
llvm::Expected<uint64_t>
NativeProcessLinux::Syscall(llvm::ArrayRef<uint64_t> args) {
PopulateMemoryRegionCache();
diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h
index d345f165a75d8..936d690e42ae7 100644
--- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h
+++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h
@@ -122,8 +122,6 @@ class NativeProcessLinux : public NativeProcessELF,
Status RemoveBreakpoint(lldb::addr_t addr, bool hardware = false) override;
- void DoStopIDBumped(uint32_t newBumpId) override;
-
Status GetLoadedModuleFileSpec(const char *module_path,
FileSpec &file_spec) override;
@@ -177,7 +175,6 @@ class NativeProcessLinux : public NativeProcessELF,
ArchSpec m_arch;
LazyBool m_supports_mem_region = eLazyBoolCalculate;
- std::vector<std::pair<MemoryRegionInfo, FileSpec>> m_mem_region_cache;
lldb::tid_t m_pending_notification_tid = LLDB_INVALID_THREAD_ID;
diff --git a/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h b/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h
index f3d07651384fe..976d48e74854e 100644
--- a/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h
+++ b/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h
@@ -97,7 +97,6 @@ class NativeProcessNetBSD : public NativeProcessELF {
ArchSpec m_arch;
MainLoop& m_main_loop;
LazyBool m_supports_mem_region = eLazyBoolCalculate;
- std::vector<std::pair<MemoryRegionInfo, FileSpec>> m_mem_region_cache;
// Private Instance Methods
NativeProcessNetBSD(::pid_t pid, int terminal_fd, NativeDelegate &delegate,
diff --git a/lldb/source/Plugins/Process/POSIX/NativeProcessELF.cpp b/lldb/source/Plugins/Process/POSIX/NativeProcessELF.cpp
index 23e94a5f55e21..29aaf4752d57a 100644
--- a/lldb/source/Plugins/Process/POSIX/NativeProcessELF.cpp
+++ b/lldb/source/Plugins/Process/POSIX/NativeProcessELF.cpp
@@ -186,4 +186,12 @@ void NativeProcessELF::NotifyDidExec() {
m_shared_library_info_addr.reset();
}
+void NativeProcessELF::DoStopIDBumped(uint32_t newBumpId) {
+ Log *log = GetLog(POSIXLog::Process);
+ LLDB_LOG(log, "newBumpId={0}", newBumpId);
+ LLDB_LOG(log, "clearing {0} entries from memory region cache",
+ m_mem_region_cache.size());
+ m_mem_region_cache.clear();
+}
+
} // namespace lldb_private
diff --git a/lldb/source/Plugins/Process/POSIX/NativeProcessELF.h b/lldb/source/Plugins/Process/POSIX/NativeProcessELF.h
index 937def94436be..b5a9a26b4ea8d 100644
--- a/lldb/source/Plugins/Process/POSIX/NativeProcessELF.h
+++ b/lldb/source/Plugins/Process/POSIX/NativeProcessELF.h
@@ -9,8 +9,10 @@
#ifndef liblldb_NativeProcessELF_H_
#define liblldb_NativeProcessELF_H_
+#include "Plugins/Process/POSIX/ProcessPOSIXLog.h"
#include "Plugins/Process/Utility/AuxVector.h"
#include "lldb/Host/common/NativeProcessProtocol.h"
+#include "lldb/Target/MemoryRegionInfo.h"
#include "llvm/BinaryFormat/ELF.h"
#include <optional>
@@ -24,6 +26,7 @@ class NativeProcessELF : public NativeProcessProtocol {
public:
std::optional<uint64_t> GetAuxValue(enum AuxVector::EntryType type);
+ void DoStopIDBumped(uint32_t newBumpId) override;
protected:
template <typename T> struct ELFLinkMap {
@@ -50,6 +53,7 @@ class NativeProcessELF : public NativeProcessProtocol {
std::unique_ptr<AuxVector> m_aux_vector;
std::optional<lldb::addr_t> m_shared_library_info_addr;
+ std::vector<std::pair<MemoryRegionInfo, FileSpec>> m_mem_region_cache;
};
// Explicitly declare the two 32/64 bit templates that NativeProcessELF.cpp will
diff --git a/lldb/test/Shell/Breakpoint/Inputs/break_stepout.c b/lldb/test/Shell/Breakpoint/Inputs/break_stepout.c
new file mode 100644
index 0000000000000..b7ae5db6e77bf
--- /dev/null
+++ b/lldb/test/Shell/Breakpoint/Inputs/break_stepout.c
@@ -0,0 +1,2 @@
+#include <stdio.h>
+int main() { printf("Hello World\n"); }
diff --git a/lldb/test/Shell/Breakpoint/step-out.test b/lldb/test/Shell/Breakpoint/step-out.test
new file mode 100644
index 0000000000000..d77cb8213c777
--- /dev/null
+++ b/lldb/test/Shell/Breakpoint/step-out.test
@@ -0,0 +1,13 @@
+# REQUIRES: system-freebsd
+
+# RUN: cp %p/Inputs/break_stepout.c %t.c
+# RUN: %clang_host -O0 -g -o %t %t.c
+# RUN: rm %t.c
+# RUN: %lldb -b -o "br set -n vfprintf" -o run -o "thread step-out" -o "thread step-out" %t 2>&1 | FileCheck %s
+
+## Check if we step-out twice sucessfully
+
+CHECK: stop reason = step out
+CHECK-NEXT: printf
+CHECK: stop reason = step out
+CHECK-NEXT: main
More information about the lldb-commits
mailing list