From: Paul Floyd Date: Wed, 14 Jan 2026 19:38:12 +0000 (+0100) Subject: FreeBSD syscall: faccessat has 4 arguments, not 3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2269652fbac5d827d33467bdc04e8c469a5d23df;p=thirdparty%2Fvalgrind.git FreeBSD syscall: faccessat has 4 arguments, not 3 --- diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c index 2870b4eb7..a69fb4fb2 100644 --- a/coregrind/m_syswrap/syswrap-freebsd.c +++ b/coregrind/m_syswrap/syswrap-freebsd.c @@ -5111,9 +5111,9 @@ PRE(sys_shm_open) PRE_REG_READ3(int, "shm_open", const char *, path, int, flags, vki_mode_t, mode); if (ARG1 == VKI_SHM_ANON) { - PRINT("sys_shm_open(%#" FMT_REGWORD "x(SHM_ANON), %" FMT_REGWORD "u, %hu)", ARG1, ARG2, (vki_mode_t)ARG3); + PRINT("sys_shm_open(%#" FMT_REGWORD "x(SHM_ANON), %" FMT_REGWORD "d, %hu)", ARG1, SARG2, (vki_mode_t)ARG3); } else { - PRINT("sys_shm_open(%#" FMT_REGWORD "x(%s), %" FMT_REGWORD "u, %hu)", ARG1, (HChar *)ARG1, ARG2, (vki_mode_t)ARG3); + PRINT("sys_shm_open(%#" FMT_REGWORD "x(%s), %" FMT_REGWORD "d, %hu)", ARG1, (HChar *)ARG1, SARG2, (vki_mode_t)ARG3); PRE_MEM_RASCIIZ( "shm_open(path)", ARG1 ); } *flags |= SfMayBlock; @@ -5176,9 +5176,10 @@ POST(sys_cpuset) // int faccessat(int fd, const char *path, int mode, int flag); PRE(sys_faccessat) { - PRINT("sys_faccessat ( %" FMT_REGWORD "u, %#" FMT_REGWORD "x(%s), %" FMT_REGWORD "u )", ARG1,ARG2,(char*)ARG2,ARG3); - PRE_REG_READ3(int, "faccessat", - int, fd, const char *, path, int, flag); + PRINT("sys_faccessat ( %" FMT_REGWORD "u, %#" FMT_REGWORD "x(%s), %" FMT_REGWORD "d, %" FMT_REGWORD "d )", + ARG1, ARG2,(char*)ARG2, SARG3, SARG4); + PRE_REG_READ4(int, "faccessat", + int, fd, const char *, path, int, mode, int, flag); ML_(fd_at_check_allowed)(SARG1, (const HChar*)ARG2, "faccessat", tid, status); PRE_MEM_RASCIIZ( "faccessat(path)", ARG2 ); } diff --git a/memcheck/tests/freebsd/scalar.c b/memcheck/tests/freebsd/scalar.c index b4d7a46d1..7f8504c7f 100644 --- a/memcheck/tests/freebsd/scalar.c +++ b/memcheck/tests/freebsd/scalar.c @@ -1826,8 +1826,8 @@ int main(void) SY(SYS_cpuset_setaffinity, x0+100, x0+100, x0+200, x0+500, x0+1); FAIL; /* SYS_faccessat 489 */ - GO(SYS_faccessat, "3s 1m"); - SY(SYS_faccessat, x0+1, x0, x0); FAIL; + GO(SYS_faccessat, "4s 1m"); + SY(SYS_faccessat, x0+1, x0, x0, x0); FAIL; /* SYS_fchmodat 490 */ GO(SYS_fchmodat, "4s 1m"); diff --git a/memcheck/tests/freebsd/scalar.stderr.exp b/memcheck/tests/freebsd/scalar.stderr.exp index 449075f3e..61b4e9ff6 100644 --- a/memcheck/tests/freebsd/scalar.stderr.exp +++ b/memcheck/tests/freebsd/scalar.stderr.exp @@ -4129,7 +4129,7 @@ Syscall param cpuset_setaffinity points to unaddressable byte(s) Address 0x........ is not stack'd, malloc'd or (recently) free'd --------------------------------------------------------- -489: SYS_faccessat 3s 1m +489: SYS_faccessat 4s 1m --------------------------------------------------------- Syscall param faccessat(fd) contains uninitialised byte(s) ... @@ -4137,6 +4137,9 @@ Syscall param faccessat(fd) contains uninitialised byte(s) Syscall param faccessat(path) contains uninitialised byte(s) ... +Syscall param faccessat(mode) contains uninitialised byte(s) + ... + Syscall param faccessat(flag) contains uninitialised byte(s) ... diff --git a/memcheck/tests/freebsd/scalar.stderr.exp-x86 b/memcheck/tests/freebsd/scalar.stderr.exp-x86 index e7e2ce0a6..e45da9912 100644 --- a/memcheck/tests/freebsd/scalar.stderr.exp-x86 +++ b/memcheck/tests/freebsd/scalar.stderr.exp-x86 @@ -4168,7 +4168,7 @@ Syscall param cpuset_setaffinity points to unaddressable byte(s) Address 0x........ is not stack'd, malloc'd or (recently) free'd --------------------------------------------------------- -489: SYS_faccessat 3s 1m +489: SYS_faccessat 4s 1m --------------------------------------------------------- Syscall param faccessat(fd) contains uninitialised byte(s) ... @@ -4176,6 +4176,9 @@ Syscall param faccessat(fd) contains uninitialised byte(s) Syscall param faccessat(path) contains uninitialised byte(s) ... +Syscall param faccessat(mode) contains uninitialised byte(s) + ... + Syscall param faccessat(flag) contains uninitialised byte(s) ...