[Lldb-commits] [PATCH] D140249: [lldb] Do not deallocate memory after exec
Alex Langford via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri Dec 16 16:24:26 PST 2022
bulbazord updated this revision to Diff 483692.
bulbazord added a comment.
Add a comment explaining why we do not dealloc after exec
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D140249/new/
https://reviews.llvm.org/D140249
Files:
lldb/include/lldb/Target/Memory.h
lldb/source/Target/Memory.cpp
lldb/source/Target/Process.cpp
Index: lldb/source/Target/Process.cpp
===================================================================
--- lldb/source/Target/Process.cpp
+++ lldb/source/Target/Process.cpp
@@ -542,7 +542,7 @@
m_notifications.swap(empty_notifications);
m_image_tokens.clear();
m_memory_cache.Clear();
- m_allocated_memory_cache.Clear();
+ m_allocated_memory_cache.Clear(/*did_exec=*/false);
{
std::lock_guard<std::recursive_mutex> guard(m_language_runtimes_mutex);
m_language_runtimes.clear();
@@ -5656,7 +5656,7 @@
m_dyld_up.reset();
m_jit_loaders_up.reset();
m_image_tokens.clear();
- m_allocated_memory_cache.Clear();
+ m_allocated_memory_cache.Clear(/*did_exec=*/true);
{
std::lock_guard<std::recursive_mutex> guard(m_language_runtimes_mutex);
m_language_runtimes.clear();
Index: lldb/source/Target/Memory.cpp
===================================================================
--- lldb/source/Target/Memory.cpp
+++ lldb/source/Target/Memory.cpp
@@ -332,9 +332,11 @@
AllocatedMemoryCache::~AllocatedMemoryCache() = default;
-void AllocatedMemoryCache::Clear() {
+void AllocatedMemoryCache::Clear(bool did_exec) {
std::lock_guard<std::recursive_mutex> guard(m_mutex);
- if (m_process.IsAlive()) {
+ // After an exec, the inferior is a new process and these memory regions are
+ // no longer allocated.
+ if (m_process.IsAlive() && !did_exec) {
PermissionsToBlockMap::iterator pos, end = m_memory_map.end();
for (pos = m_memory_map.begin(); pos != end; ++pos)
m_process.DoDeallocateMemory(pos->second->GetBaseAddress());
Index: lldb/include/lldb/Target/Memory.h
===================================================================
--- lldb/include/lldb/Target/Memory.h
+++ lldb/include/lldb/Target/Memory.h
@@ -116,7 +116,7 @@
~AllocatedMemoryCache();
- void Clear();
+ void Clear(bool did_exec);
lldb::addr_t AllocateMemory(size_t byte_size, uint32_t permissions,
Status &error);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D140249.483692.patch
Type: text/x-patch
Size: 1990 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20221217/31507cf1/attachment.bin>
More information about the lldb-commits
mailing list