From: Paul Floyd Date: Sat, 25 Feb 2023 15:09:41 +0000 (+0100) Subject: FreeBSD mknodat syscall dev arg is 64bits so the syscall needs splitting into amd64... X-Git-Tag: VALGRIND_3_21_0~162 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6f7cae623a82b4572a9e0dfa8f2bf855b4c8b49;p=thirdparty%2Fvalgrind.git FreeBSD mknodat syscall dev arg is 64bits so the syscall needs splitting into amd64 and x86 versions --- diff --git a/coregrind/m_syswrap/syswrap-amd64-freebsd.c b/coregrind/m_syswrap/syswrap-amd64-freebsd.c index 4372e6b719..e54b157dd7 100644 --- a/coregrind/m_syswrap/syswrap-amd64-freebsd.c +++ b/coregrind/m_syswrap/syswrap-amd64-freebsd.c @@ -1043,6 +1043,16 @@ POST(sys_procctl) } } +// SYS_mknodat 559 +// int mknodat(int fd, const char *path, mode_t mode, dev_t dev); +PRE(sys_mknodat) +{ + PRINT("sys_mknodat ( %" FMT_REGWORD "u, %#" FMT_REGWORD "x(%s), 0x%" FMT_REGWORD "x, 0x%" FMT_REGWORD "x )", ARG1,ARG2,(char*)ARG2,ARG3,ARG4 ); + PRE_REG_READ4(long, "mknodat", + int, fd, const char *, path, vki_mode_t, mode, vki_dev_t, dev); + PRE_MEM_RASCIIZ( "mknodat(pathname)", ARG2 ); +} + #if (FREEBSD_VERS >= FREEBSD_12) // SYS_cpuset_getdomain 561 diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c index 1ab63ba491..0d64d57605 100644 --- a/coregrind/m_syswrap/syswrap-freebsd.c +++ b/coregrind/m_syswrap/syswrap-freebsd.c @@ -6310,14 +6310,7 @@ POST(sys_fhstatfs) } // SYS_mknodat 559 -// int mknodat(int fd, const char *path, mode_t mode, dev_t dev); -PRE(sys_mknodat) -{ - PRINT("sys_mknodat ( %" FMT_REGWORD "u, %#" FMT_REGWORD "x(%s), 0x%" FMT_REGWORD "x, 0x%" FMT_REGWORD "x )", ARG1,ARG2,(char*)ARG2,ARG3,ARG4 ); - PRE_REG_READ4(long, "mknodat", - int, fd, const char *, path, vki_mode_t, mode, vki_dev_t, dev); - PRE_MEM_RASCIIZ( "mknodat(pathname)", ARG2 ); -} +// x86 / amd64 // SYS_kevent 560 // int kevent(int kq, const struct kevent *changelist, int nchanges, diff --git a/coregrind/m_syswrap/syswrap-x86-freebsd.c b/coregrind/m_syswrap/syswrap-x86-freebsd.c index e8e5a2f89d..61803a37b8 100644 --- a/coregrind/m_syswrap/syswrap-x86-freebsd.c +++ b/coregrind/m_syswrap/syswrap-x86-freebsd.c @@ -1471,6 +1471,16 @@ POST(sys_procctl) } } +// SYS_mknodat 559 +// int mknodat(int fd, const char *path, mode_t mode, dev_t dev); +PRE(sys_mknodat) +{ + PRINT("sys_mknodat ( %" FMT_REGWORD "u, %#" FMT_REGWORD "x(%s), 0x%" FMT_REGWORD "x, 0x%" FMT_REGWORD "x )", ARG1,ARG2,(char*)ARG2,ARG3,ARG4 ); + PRE_REG_READ5(long, "mknodat", + int, fd, const char *, path, vki_mode_t, mode, vki_uint32_t, MERGE64_FIRST(dev), vki_uint32_t, MERGE64_SECOND(idev)) + PRE_MEM_RASCIIZ( "mknodat(pathname)", ARG2 ); +} + #if (FREEBSD_VERS >= FREEBSD_12) // SYS_cpuset_getdomain 561