On 5/1/25 11:17, WorksButNotTested wrote:
---
  include/exec/page-protection.h | 6 ++++++
  linux-user/elfload.c           | 4 ++++
  linux-user/mmap.c              | 5 +++++
  3 files changed, 15 insertions(+)


Seems reasonable.  Add a patch description and a Signed-off-by, please.


r~

diff --git a/include/exec/page-protection.h b/include/exec/page-protection.h
index c43231af8b..f8826d917e 100644
--- a/include/exec/page-protection.h
+++ b/include/exec/page-protection.h
@@ -38,4 +38,10 @@
   */
  #define PAGE_PASSTHROUGH 0x0800
+/*
+ * For linux-user, indicates that the page should not be included in a core
+ * dump.
+ */
+#define PAGE_DONTDUMP   0x1000
+
  #endif
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index fbfdec2f17..41c46da055 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -4067,6 +4067,10 @@ static size_t vma_dump_size(target_ulong start, 
target_ulong end,
          return 0;
      }
+ if (flags & PAGE_DONTDUMP) {
+        return 0;
+    }
+
      /*
       * Usually we don't dump executable pages as they contain
       * non-writable code that debugger can read directly from
diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index f88a80c31e..62fc8ac921 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -1247,6 +1247,11 @@ abi_long target_madvise(abi_ulong start, abi_ulong 
len_in, int advice)
       */
      mmap_lock();
      switch (advice) {
+    case MADV_DONTDUMP:
+        if (len > 0) {
+            page_set_flags(start, start + len - 1, PAGE_DONTDUMP);
+        }
+        break;
      case MADV_WIPEONFORK:
      case MADV_KEEPONFORK:
          ret = -EINVAL;


Reply via email to