[Lldb-commits] [PATCH] D55841: GetMemoryRegions for the ProcessMinidump

Tatyana Krasnukha via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Tue Dec 18 10:52:51 PST 2018


tatyana-krasnukha created this revision.
tatyana-krasnukha added a reviewer: clayborg.
tatyana-krasnukha added a project: LLDB.
Herald added a subscriber: lldb-commits.

Moved from D55472 <https://reviews.llvm.org/D55472>


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D55841

Files:
  C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
  C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
  C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
  C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
  C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h


Index: C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
===================================================================
--- C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
+++ C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
@@ -78,6 +78,9 @@
   Status GetMemoryRegionInfo(lldb::addr_t load_addr,
                              MemoryRegionInfo &range_info) override;
 
+  Status GetMemoryRegions(
+      lldb_private::MemoryRegionInfos &region_list) override;
+
   bool GetProcessInfo(ProcessInstanceInfo &info) override;
 
   Status WillResume() override {
Index: C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
===================================================================
--- C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
+++ C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
@@ -288,6 +288,12 @@
   return Status();
 }
 
+Status ProcessMinidump::GetMemoryRegions(
+    lldb_private::MemoryRegionInfos &region_list) {
+  region_list = m_minidump_parser.GetMemoryRegions();
+  return Status();
+}
+
 void ProcessMinidump::Clear() { Process::m_thread_list.Clear(); }
 
 bool ProcessMinidump::UpdateThreadList(ThreadList &old_thread_list,
Index: C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
===================================================================
--- C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
+++ C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
@@ -242,6 +242,8 @@
     return {};
 
   std::vector<const MinidumpMemoryInfo *> result;
+  result.reserve(header->num_of_entries);
+
   for (uint64_t i = 0; i < header->num_of_entries; ++i) {
     result.push_back(reinterpret_cast<const MinidumpMemoryInfo *>(
         data.data() + i * header->size_of_entry));
Index: C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
===================================================================
--- C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
+++ C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
@@ -87,6 +87,8 @@
 
   MemoryRegionInfo GetMemoryRegionInfo(lldb::addr_t load_addr);
 
+  const std::vector<MemoryRegionInfo> &GetMemoryRegions();
+
   // Perform consistency checks and initialize internal data structures
   Status Initialize();
 
Index: C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
===================================================================
--- C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
+++ C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
@@ -537,6 +537,12 @@
 
 MemoryRegionInfo
 MinidumpParser::GetMemoryRegionInfo(lldb::addr_t load_addr) {
+  if (!m_parsed_regions)
+    GetMemoryRegions();
+  return FindMemoryRegion(load_addr);
+}
+
+const std::vector<MemoryRegionInfo> &MinidumpParser::GetMemoryRegions() {
   if (!m_parsed_regions) {
     m_parsed_regions = true;
     // We haven't cached our memory regions yet we will create the region cache
@@ -552,7 +558,7 @@
           CreateRegionsCacheFromMemory64List(*this, m_regions);
     std::sort(m_regions.begin(), m_regions.end());
   }
-  return FindMemoryRegion(load_addr);
+  return m_regions;
 }
 
 Status MinidumpParser::Initialize() {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55841.178734.patch
Type: text/x-patch
Size: 3576 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20181218/2db0fd5a/attachment.bin>


More information about the lldb-commits mailing list