// NYI ntp_gettime // 528
// NYI os_fault_with_payload // 529
#endif /* DARWIN_VERS >= DARWIN_10_13 */
+#if DARWIN_VERS >= DARWIN_10_14
+// NYI kqueue_workloop_ctl // 530
+// NYI __mach_bridge_remote_time // 531
+#endif /* DARWIN_VERS >= DARWIN_10_14 */
// Mach message helpers
DECL_TEMPLATE(darwin, mach_port_set_context);
DECL_TEMPLATE(darwin, swtch);
DECL_TEMPLATE(darwin, swtch_pri);
+#if DARWIN_VERS >= DARWIN_10_14
+DECL_TEMPLATE(darwin, kernelrpc_mach_port_get_attributes_trap);
+#endif /* DARWIN_VERS >= DARWIN_10_14 */
+
// Machine-dependent traps
DECL_TEMPLATE(darwin, thread_fast_set_cthread_self);
F(F_ADDFILESIGS_FOR_DYLD_SIM);
F(F_BARRIERFSYNC);
F(F_ADDFILESIGS_RETURN);
+# endif
+# if DARWIN_VERS >= DARWIN_10_14
+ F(F_CHECK_LV);
# endif
default:
return "UNKNOWN";
break;
# endif
+# if DARWIN_VERS >= DARWIN_10_14
+ case VKI_F_CHECK_LV: /* Check if Library Validation allows this Mach-O file to be
+ mapped into the calling process */
+ // FIXME: Dejan
+ break;
+# endif
+
default:
PRINT("fcntl ( %lu, %lu [??] )", ARG1, ARG2);
log_decaying("UNKNOWN fcntl %lu!", ARG2);
record_named_port(tid, RES, MACH_PORT_RIGHT_RECEIVE, "special-reply-%p");
PRINT("special reply port %s", name_for_port(RES));
}
-
#endif /* DARWIN_VERS >= DARWIN_10_13 */
+
+/* ---------------------------------------------------------------------
+ Added for macOS 10.14 (Mojave)
+ ------------------------------------------------------------------ */
+
+#if DARWIN_VERS >= DARWIN_10_14
+PRE(kernelrpc_mach_port_get_attributes_trap)
+{
+ PRINT("kernelrpc_mach_port_get_attributes_trap( %s, %s, %ld, %#lx, %#lx )",
+ name_for_port(ARG1), name_for_port(ARG2), SARG3, ARG4, ARG5);
+ PRE_REG_READ5(kern_return_t, "kernelrpc_mach_port_get_attributes_trap",
+ mach_port_name_t, target, mach_port_name_t, name, mach_port_flavor_t, flavor,
+ mach_port_info_t, port_info_out, mach_msg_type_number_t*, port_info_outCnt);
+ PRE_MEM_READ( "kernelrpc_mach_port_get_attributes_trap(port_info_outCnt)", ARG5, sizeof(mach_msg_type_number_t));
+ PRE_MEM_WRITE( "kernelrpc_mach_port_get_attributes_trap(port_info_outCnt)", ARG5, sizeof(mach_msg_type_number_t));
+ mach_msg_type_number_t count = *(mach_msg_type_number_t*)ARG5;
+ if (count > 0) {
+ PRE_MEM_WRITE( "kernelrpc_mach_port_get_attributes_trap(port_info_out)", ARG4, count * sizeof(integer_t));
+ }
+}
+#endif /* DARWIN_VERS >= DARWIN_10_14 */
/* ---------------------------------------------------------------------
syscall tables
------------------------------------------------------------------ */
// _____(__NR_ntp_adjtime), // 527
// _____(__NR_ntp_gettime), // 528
// _____(__NR_os_fault_with_payload), // 529
+#endif
+#if DARWIN_VERS >= DARWIN_10_14
+// _____(__NR_kqueue_workloop_ctl), // 530
+// _____(__NR___mach_bridge_remote_time), // 531
#endif
MACX_(__NR_darwin_fake_sigreturn, fake_sigreturn)
MACX_(__NR_semaphore_wait_signal_trap, semaphore_wait_signal),
MACX_(__NR_semaphore_timedwait_trap, semaphore_timedwait),
MACX_(__NR_semaphore_timedwait_signal_trap, semaphore_timedwait_signal),
+
+# if DARWIN_VERS >= DARWIN_10_14
+ MACX_(__NR_kernelrpc_mach_port_get_attributes_trap, kernelrpc_mach_port_get_attributes_trap),
+# else
_____(VG_DARWIN_SYSCALL_CONSTRUCT_MACH(40)), // -40
+# endif
# if DARWIN_VERS >= DARWIN_10_9
MACX_(__NR_kernelrpc_mach_port_guard_trap, kernelrpc_mach_port_guard_trap),
machinery was removed in r10155.
+Mac OS X / macOS supported platforms
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Since January 2025 (and thus Valgrind 3.25) we have required a compiler
+that supports C11. See 42eb19c0da3bb280de88b7f8fc9b7caaa44aedfem for
+details. We also need an xcrun that supports --show-sdk-path (since
+December 2025). I'm not sure when both of those became supported.
+Definitely neither are on Mac OS 10.7 with XCode 4.6.3. And equally
+definitely both are supported on macOS 10.13 with XCode 10.1. That
+means that I don't know which is the oldest version of macOS that
+will build Valgrind (as of December 2025). Somewhere between 10.8 (Darwin 12)
+and 10.12 (Darwin 16).
+
+
Valgrind-developer notes, todos re the MacOSX port
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define __NR_semaphore_timedwait_trap VG_DARWIN_SYSCALL_CONSTRUCT_MACH(38)
#define __NR_semaphore_timedwait_signal_trap VG_DARWIN_SYSCALL_CONSTRUCT_MACH(39)
+#if DARWIN_VERS >= DARWIN_10_14
+#define __NR_kernelrpc_mach_port_get_attributes_trap VG_DARWIN_SYSCALL_CONSTRUCT_MACH(40)
+#endif
+
#if DARWIN_VERS >= DARWIN_10_9
#define __NR_kernelrpc_mach_port_guard_trap VG_DARWIN_SYSCALL_CONSTRUCT_MACH(41)
#define __NR_kernelrpc_mach_port_unguard_trap VG_DARWIN_SYSCALL_CONSTRUCT_MACH(42)
#define __NR_os_fault_with_payload VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(529)
#endif /* DARWIN_VERS >= DARWIN_10_13 */
+#if DARWIN_VERS >= DARWIN_10_14
+#define __NR_kqueue_workloop_ctl VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(530)
+#define __NR___mach_bridge_remote_time VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(531)
+#endif /* DARWIN_VERS >= DARWIN_10_14 */
+
#define __NR_darwin_fake_sigreturn VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(1000)
#endif