diff --git a/Makefile.am b/Makefile.am index 154f68f5f..793df71c0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -47,7 +47,7 @@ SUPP_FILES = \ darwin9.supp darwin9-drd.supp \ darwin10.supp darwin10-drd.supp \ darwin11.supp darwin12.supp darwin13.supp darwin14.supp darwin15.supp \ - darwin16.supp darwin17.supp \ + darwin16.supp darwin17.supp darwin18.supp \ bionic.supp \ solaris11.supp solaris12.supp DEFAULT_SUPP_FILES = @DEFAULT_SUPP@ diff --git a/configure.ac b/configure.ac index 289514ff1..397202011 100644 --- a/configure.ac +++ b/configure.ac @@ -368,6 +368,7 @@ case "${host_os}" in AC_DEFINE([DARWIN_10_11], 101100, [DARWIN_VERS value for Mac OS X 10.11]) AC_DEFINE([DARWIN_10_12], 101200, [DARWIN_VERS value for macOS 10.12]) AC_DEFINE([DARWIN_10_13], 101300, [DARWIN_VERS value for macOS 10.13]) + AC_DEFINE([DARWIN_10_14], 101400, [DARWIN_VERS value for macOS 10.14]) AC_MSG_CHECKING([for the kernel version]) kernel=`uname -r` @@ -443,9 +444,15 @@ case "${host_os}" in DEFAULT_SUPP="darwin17.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}" ;; + 18.*) + AC_MSG_RESULT([Darwin 18.x (${kernel}) / macOS 10.14 Mojave]) + AC_DEFINE([DARWIN_VERS], DARWIN_10_14, [Darwin / Mac OS X version]) + DEFAULT_SUPP="darwin18.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}" + ;; *) AC_MSG_RESULT([unsupported (${kernel})]) - AC_MSG_ERROR([Valgrind works on Darwin 10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x and 17.x (Mac OS X 10.6/7/8/9/10/11 and macOS 10.12/13)]) + AC_MSG_ERROR([Valgrind works on Darwin 10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x, 17.x and 18.x (Mac OS X 10.6/7/8/9/10/11 and macOS 10.12/13/14)]) ;; esac ;; diff --git a/coregrind/fixup_macho_loadcmds.c b/coregrind/fixup_macho_loadcmds.c index cdb3622a5..81ae0e3ab 100644 --- a/coregrind/fixup_macho_loadcmds.c +++ b/coregrind/fixup_macho_loadcmds.c @@ -123,7 +123,7 @@ && DARWIN_VERS != DARWIN_10_7 && DARWIN_VERS != DARWIN_10_8 \ && DARWIN_VERS != DARWIN_10_9 && DARWIN_VERS != DARWIN_10_10 \ && DARWIN_VERS != DARWIN_10_11 && DARWIN_VERS != DARWIN_10_12 \ - && DARWIN_VERS != DARWIN_10_13 + && DARWIN_VERS != DARWIN_10_13 && DARWIN_VERS != DARWIN_10_14 # error "Unknown DARWIN_VERS value. This file only compiles on Darwin." #endif diff --git a/coregrind/m_syswrap/syswrap-amd64-darwin.c b/coregrind/m_syswrap/syswrap-amd64-darwin.c index f50932977..cb414f207 100644 --- a/coregrind/m_syswrap/syswrap-amd64-darwin.c +++ b/coregrind/m_syswrap/syswrap-amd64-darwin.c @@ -483,7 +483,8 @@ void wqthread_hijack(Addr self, Addr kport, Addr stackaddr, Addr workitem, || DARWIN_VERS == DARWIN_10_10 \ || DARWIN_VERS == DARWIN_10_11 \ || DARWIN_VERS == DARWIN_10_12 \ - || DARWIN_VERS == DARWIN_10_13 + || DARWIN_VERS == DARWIN_10_13 \ + || DARWIN_VERS == DARWIN_10_14 UWord magic_delta = 0xE0; # else # error "magic_delta: to be computed on new OS version" diff --git a/coregrind/m_syswrap/syswrap-darwin.c b/coregrind/m_syswrap/syswrap-darwin.c index 590493df4..90a334bdf 100644 --- a/coregrind/m_syswrap/syswrap-darwin.c +++ b/coregrind/m_syswrap/syswrap-darwin.c @@ -1748,6 +1748,12 @@ PRE(fcntl) 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); diff --git a/coregrind/m_syswrap/syswrap-x86-darwin.c b/coregrind/m_syswrap/syswrap-x86-darwin.c index a5d9e9767..7c2612a0f 100644 --- a/coregrind/m_syswrap/syswrap-x86-darwin.c +++ b/coregrind/m_syswrap/syswrap-x86-darwin.c @@ -431,7 +431,8 @@ void wqthread_hijack(Addr self, Addr kport, Addr stackaddr, Addr workitem, || DARWIN_VERS == DARWIN_10_10 \ || DARWIN_VERS == DARWIN_10_11 \ || DARWIN_VERS == DARWIN_10_12 \ - || DARWIN_VERS == DARWIN_10_13 + || DARWIN_VERS == DARWIN_10_13 \ + || DARWIN_VERS == DARWIN_10_14 UWord magic_delta = 0xB0; # else # error "magic_delta: to be computed on new OS version" diff --git a/darwin18.supp b/darwin18.supp new file mode 100644 index 000000000..c3da6b0af --- /dev/null +++ b/darwin18.supp @@ -0,0 +1,5 @@ + +# Suppressions for Darwin 18.x / macOS 10.14 High Sierra + +############################################ + diff --git a/include/vki/vki-darwin.h b/include/vki/vki-darwin.h index 3b31ff116..142014faa 100644 --- a/include/vki/vki-darwin.h +++ b/include/vki/vki-darwin.h @@ -309,6 +309,9 @@ typedef uint32_t vki_u32; # define VKI_F_BARRIERFSYNC F_BARRIERFSYNC # define VKI_F_ADDFILESIGS_RETURN F_ADDFILESIGS_RETURN #endif +#if DARWIN_VERS >= DARWIN_10_14 +# define VKI_F_CHECK_LV F_CHECK_LV +#endif #define VKI_F_FULLFSYNC F_FULLFSYNC #define VKI_F_PATHPKG_CHECK F_PATHPKG_CHECK #define VKI_F_FREEZE_FS F_FREEZE_FS diff --git a/include/vki/vki-scnums-darwin.h b/include/vki/vki-scnums-darwin.h index 99cb342fa..98ab6d325 100644 --- a/include/vki/vki-scnums-darwin.h +++ b/include/vki/vki-scnums-darwin.h @@ -838,6 +838,11 @@ #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 */ + #if DARWIN_VERS < DARWIN_10_6 #define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(427) #elif DARWIN_VERS < DARWIN_10_7 @@ -854,6 +859,8 @@ #define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(522) #elif DARWIN_VERS == DARWIN_10_13 #define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(530) +#elif DARWIN_VERS == DARWIN_10_14 +#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(532) #else #error unknown darwin version #endif