]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Darwin syscall: initial wrapper for kernelrpc_mach_vm_purgable_control_trap
authorPaul Floyd <pjfloyd@wanadoo.fr>
Sun, 7 Dec 2025 10:48:51 +0000 (11:48 +0100)
committerPaul Floyd <pjfloyd@wanadoo.fr>
Sun, 7 Dec 2025 10:48:51 +0000 (11:48 +0100)
Need to add verification of regs and read/write mem.

coregrind/m_syswrap/priv_syswrap-darwin.h
coregrind/m_syswrap/syswrap-darwin.c
include/vki/vki-scnums-darwin.h

index 2a8d2809d93b91dcf8bdcf30bbd4e9b7c6da7e96..d3fd32458c81427d57f3b678e8cd6b6d0c623483 100644 (file)
@@ -726,8 +726,9 @@ DECL_TEMPLATE(darwin, mach_voucher_extract_attr_recipe_trap); // MACH 72
 
 // Mach traps
 #if DARWIN_VERS >= DARWIN_10_8
-DECL_TEMPLATE(darwin, kernelrpc_mach_vm_allocate_trap);
-DECL_TEMPLATE(darwin, kernelrpc_mach_vm_deallocate_trap);
+DECL_TEMPLATE(darwin, kernelrpc_mach_vm_allocate_trap); // MACH 10
+DECL_TEMPLATE(darwin, kernelrpc_mach_vm_purgable_control_trap); // MACH 11
+DECL_TEMPLATE(darwin, kernelrpc_mach_vm_deallocate_trap); // MACH 12
 DECL_TEMPLATE(darwin, kernelrpc_mach_vm_protect_trap);
 DECL_TEMPLATE(darwin, kernelrpc_mach_vm_map_trap);
 DECL_TEMPLATE(darwin, kernelrpc_mach_port_allocate_trap);
index b265765bf8cf1d395fe2a0f143b6fb0124dfb931..67fdd9e2678815b74cb96f43375add6fef8092fb 100644 (file)
@@ -9814,6 +9814,7 @@ PRE(kernelrpc_mach_vm_allocate_trap)
    PRE_MEM_WRITE("kernelrpc_mach_vm_allocate_trap(address)",
                  a2, sizeof(void*));
 }
+
 POST(kernelrpc_mach_vm_allocate_trap)
 {
    UWord a1; UWord a2; ULong a3; UWord a4;
@@ -9835,6 +9836,20 @@ POST(kernelrpc_mach_vm_allocate_trap)
    }
 }
 
+// MACH 11
+// kern_return_t _kernelrpc_mach_vm_purgable_control_trap(mach_port_name_t target,
+//                                                        mach_vm_offset_t address,
+//                                                        vm_purgable_t control,
+//                                                        int *state);
+PRE(kernelrpc_mach_vm_purgable_control_trap)
+{
+    // FIXME PJF munge?
+    PRINT("kernelrpc_mach_vm_purgable_control_trap"
+          "(target:%#lx, address:%#lx, control:%ld, state:%#lx)",
+          ARG1, ARG2, SARG3, ARG4);
+    // FIXME PJF PRE_REG_READ and READ/WRITE MEM
+}
+
 PRE(kernelrpc_mach_vm_deallocate_trap)
 {
    UWord a1; ULong a2; ULong a3;
@@ -11554,7 +11569,7 @@ const SyscallTableEntry ML_(mach_trap_table)[] = {
    _____(VG_DARWIN_SYSCALL_CONSTRUCT_MACH(10)), 
 #  endif
 
-   _____(VG_DARWIN_SYSCALL_CONSTRUCT_MACH(11)), 
+   MACX_(VG_DARWIN_SYSCALL_CONSTRUCT_MACH(11), kernelrpc_mach_vm_purgable_control_trap),
 
 #  if DARWIN_VERS >= DARWIN_10_8
    MACXY(VG_DARWIN_SYSCALL_CONSTRUCT_MACH(12), kernelrpc_mach_vm_deallocate_trap),
index 094852bca794dc85fd80ae5be18f182ea8ad37bf..ae1618b52bcac211a3964a3342a1eb62336edbf8 100644 (file)
 // osfmk/mach/syscall_sw.h
 
 #define __NR_kernelrpc_mach_vm_allocate_trap         VG_DARWIN_SYSCALL_CONSTRUCT_MACH(10)
+#define __NR_kernelrpc_mach_vm_purgable_control_trap VG_DARWIN_SYSCALL_CONSTRUCT_MACH(11)
 
 #define __NR_kernelrpc_mach_vm_deallocate_trap       VG_DARWIN_SYSCALL_CONSTRUCT_MACH(12)