https://github.com/Jlalond updated 
https://github.com/llvm/llvm-project/pull/125323

>From 973117aaa1d1bffe5a10a8c87edafec91dcd51bd Mon Sep 17 00:00:00 2001
From: Jacob Lalonde <jalalo...@fb.com>
Date: Fri, 31 Jan 2025 17:37:46 -0800
Subject: [PATCH 1/3] Have custom ranges go through the same safety checks as
 everything else, to avoid empty ranges, or ranges with no permissions

---
 lldb/source/Target/Process.cpp | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 89731f798deda88..428f8519b72fd51 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -6677,11 +6677,8 @@ static void GetUserSpecifiedCoreFileSaveRanges(Process 
&process,
 
   for (const auto &range : regions) {
     auto entry = option_ranges.FindEntryThatContains(range.GetRange());
-    if (entry) {
-      ranges.Append(range.GetRange().GetRangeBase(),
-                    range.GetRange().GetByteSize(),
-                    CreateCoreFileMemoryRange(range));
-    }
+    if (entry)
+      AddRegion(range, true, ranges);
   }
 }
 

>From 8bbb150ad7c7ed044d7ca30c745734938263b2d3 Mon Sep 17 00:00:00 2001
From: Jacob Lalonde <jalalo...@fb.com>
Date: Mon, 3 Feb 2025 10:23:22 -0800
Subject: [PATCH 2/3] Add a new test case

---
 .../TestProcessSaveCoreMinidump.py            | 33 +++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git 
a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
 
b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
index 808de687e6ea2e7..2ce8251da3d07cf 100644
--- 
a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
+++ 
b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
@@ -636,3 +636,36 @@ def minidump_saves_fs_base_region(self):
             self.assertTrue(self.dbg.DeleteTarget(target))
             if os.path.isfile(tls_file):
                 os.unlink(tls_file)
+
+    @skipUnlessPlatform(["linux"])
+    @skipUnlessArch("x86_64")
+    def test_invalid_custom_regions_not_included(self):
+        options = lldb.SBSaveCoreOptions()
+        self.build()
+        exe = self.getBuildArtifact("a.out")
+        output_file = self.getBuildArtifact("no_empty_regions.dmp")
+        try:
+            target = self.dbg.CreateTarget(exe)
+            process = target.LaunchSimple(
+                None, None, self.get_process_working_directory()
+            )
+            self.assertState(process.GetState(), lldb.eStateStopped)
+            options.SetPluginName("minidump")
+            options.SetOutputFile(lldb.SBFileSpec(output_file))
+            options.SetStyle(lldb.eSaveCoreCustomOnly)
+            region_one = lldb.SBMemoryRegionInfo()
+            process.GetMemoryRegions().GetMemoryRegionAtIndex(0, region_one)
+            options.AddMemoryRegionToSave(region_one)
+            empty_region = lldb.SBMemoryRegionInfo("empty region", 0x0, 0x0, 
3, True, False)
+            options.AddMemoryRegionToSave(empty_region)
+            region_with_no_permissions = lldb.SBMemoryRegionInfo("no 
permissions", 0x2AAA, 0x2BBB, 0, True, False)
+            options.AddMemoryRegionToSave(region_with_no_permissions)
+            error = process.SaveCore(options)
+            self.assertTrue(error.Success(), error.GetCString())
+            core_target = self.dbg.CreateTarget(None)
+            core_process = core_target.LoadCore(output_file)
+            self.assertNotIn(region_with_no_permissions, 
core_process.GetMemoryRegions())
+            self.assertNotIn(empty_region, core_process.GetMemoryRegions())
+        finally:
+            if os.path.isfile(output_file):
+                os.unlink(output_file)

>From c9ae55ac562769b5301f1d54843b8a1f178a8e0c Mon Sep 17 00:00:00 2001
From: Jacob Lalonde <jalalo...@fb.com>
Date: Mon, 3 Feb 2025 10:56:36 -0800
Subject: [PATCH 3/3] Run python formatter

---
 .../TestProcessSaveCoreMinidump.py                   | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git 
a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
 
b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
index 2ce8251da3d07cf..c2152640c425cee 100644
--- 
a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
+++ 
b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
@@ -656,15 +656,21 @@ def test_invalid_custom_regions_not_included(self):
             region_one = lldb.SBMemoryRegionInfo()
             process.GetMemoryRegions().GetMemoryRegionAtIndex(0, region_one)
             options.AddMemoryRegionToSave(region_one)
-            empty_region = lldb.SBMemoryRegionInfo("empty region", 0x0, 0x0, 
3, True, False)
+            empty_region = lldb.SBMemoryRegionInfo(
+                "empty region", 0x0, 0x0, 3, True, False
+            )
             options.AddMemoryRegionToSave(empty_region)
-            region_with_no_permissions = lldb.SBMemoryRegionInfo("no 
permissions", 0x2AAA, 0x2BBB, 0, True, False)
+            region_with_no_permissions = lldb.SBMemoryRegionInfo(
+                "no permissions", 0x2AAA, 0x2BBB, 0, True, False
+            )
             options.AddMemoryRegionToSave(region_with_no_permissions)
             error = process.SaveCore(options)
             self.assertTrue(error.Success(), error.GetCString())
             core_target = self.dbg.CreateTarget(None)
             core_process = core_target.LoadCore(output_file)
-            self.assertNotIn(region_with_no_permissions, 
core_process.GetMemoryRegions())
+            self.assertNotIn(
+                region_with_no_permissions, core_process.GetMemoryRegions()
+            )
             self.assertNotIn(empty_region, core_process.GetMemoryRegions())
         finally:
             if os.path.isfile(output_file):

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to