Index: devel/valgrind/Makefile =================================================================== --- devel/valgrind/Makefile (revision 487542) +++ devel/valgrind/Makefile (working copy) @@ -51,7 +51,8 @@ ${FILESDIR}/accept4_syscall.patch:-p1 \ ${FILESDIR}/jail_syscalls.patch:-p1 \ ${FILESDIR}/kldload_syscalls.patch:-p1 \ - ${FILESDIR}/missing_fcntls.patch:-p1 + ${FILESDIR}/missing_fcntls.patch:-p1 \ + ${FILESDIR}/sigwait.patch:-p1 PORTDOCS= html Index: devel/valgrind/files/sigwait.patch =================================================================== --- devel/valgrind/files/sigwait.patch (nonexistent) +++ devel/valgrind/files/sigwait.patch (working copy) @@ -0,0 +1,46 @@ +--- a/coregrind/m_syswrap/syswrap-freebsd.c 2018-12-12 19:09:24.180201000 +0300 ++++ b/coregrind/m_syswrap/syswrap-freebsd.c 2018-12-13 15:13:53.279566000 +0300 +@@ -2537,6 +2537,24 @@ + POST_MEM_WRITE( ARG2, sizeof(vki_siginfo_t) ); + } + ++PRE(sys_sigwait) ++{ ++ *flags |= SfMayBlock; ++ PRINT("sys_sigwait ( %#lx, %#lx )", ++ ARG1,ARG2); ++ PRE_REG_READ2(long, "sigwait", ++ const vki_sigset_t *, set, int *, sig); ++ if (ARG1 != 0) ++ PRE_MEM_READ( "sigwait(set)", ARG1, sizeof(vki_sigset_t)); ++ if (ARG2 != 0) ++ PRE_MEM_WRITE( "sigwait(sig)", ARG2, sizeof(int*)); ++} ++POST(sys_sigwait) ++{ ++ if (ARG2 != 0) ++ POST_MEM_WRITE( ARG2, sizeof(int*)); ++} ++ + #if 0 /* not on freebsd 4.x */ + PRE(sys_rt_sigqueueinfo) + { +@@ -4309,7 +4340,7 @@ + BSDX_(__NR___acl_delete_link, sys___acl_delete_link), // 427 + + BSDX_(__NR___acl_aclcheck_link, sys___acl_aclcheck_link), // 428 +- //!sigwait 429 ++ BSDXY(__NR_sigwait, sys_sigwait), // 429 + // thr_create 430 + BSDX_(__NR_thr_exit, sys_thr_exit), // 431 + +--- a/coregrind/m_syswrap/priv_syswrap-freebsd.h 2018-12-13 15:16:09.551822000 +0300 ++++ b/coregrind/m_syswrap/priv_syswrap-freebsd.h 2018-12-13 15:16:16.487873000 +0300 +@@ -181,6 +181,7 @@ + DECL_TEMPLATE(freebsd, sys_fake_sigreturn); + DECL_TEMPLATE(freebsd, sys_sigtimedwait); + DECL_TEMPLATE(freebsd, sys_sigwaitinfo); ++DECL_TEMPLATE(freebsd, sys_sigwait); + DECL_TEMPLATE(freebsd, sys_getcontext); + DECL_TEMPLATE(freebsd, sys_setcontext); + DECL_TEMPLATE(freebsd, sys_swapcontext); Index: devel/valgrind-devel/Makefile =================================================================== --- devel/valgrind-devel/Makefile (revision 487542) +++ devel/valgrind-devel/Makefile (working copy) @@ -52,7 +52,8 @@ ${FILESDIR}/accept4_syscall.patch:-p1 \ ${FILESDIR}/jail_syscalls.patch:-p1 \ ${FILESDIR}/kldload_syscalls.patch:-p1 \ - ${FILESDIR}/missing_fcntls.patch:-p1 + ${FILESDIR}/missing_fcntls.patch:-p1 \ + ${FILESDIR}/sigwait.patch:-p1 PORTDOCS= html Index: devel/valgrind-devel/files/sigwait.patch =================================================================== --- devel/valgrind-devel/files/sigwait.patch (nonexistent) +++ devel/valgrind-devel/files/sigwait.patch (working copy) @@ -0,0 +1,46 @@ +--- a/coregrind/m_syswrap/syswrap-freebsd.c 2018-12-12 19:09:24.180201000 +0300 ++++ b/coregrind/m_syswrap/syswrap-freebsd.c 2018-12-13 15:13:53.279566000 +0300 +@@ -2537,6 +2537,24 @@ + POST_MEM_WRITE( ARG2, sizeof(vki_siginfo_t) ); + } + ++PRE(sys_sigwait) ++{ ++ *flags |= SfMayBlock; ++ PRINT("sys_sigwait ( %#lx, %#lx )", ++ ARG1,ARG2); ++ PRE_REG_READ2(long, "sigwait", ++ const vki_sigset_t *, set, int *, sig); ++ if (ARG1 != 0) ++ PRE_MEM_READ( "sigwait(set)", ARG1, sizeof(vki_sigset_t)); ++ if (ARG2 != 0) ++ PRE_MEM_WRITE( "sigwait(sig)", ARG2, sizeof(int*)); ++} ++POST(sys_sigwait) ++{ ++ if (ARG2 != 0) ++ POST_MEM_WRITE( ARG2, sizeof(int*)); ++} ++ + #if 0 /* not on freebsd 4.x */ + PRE(sys_rt_sigqueueinfo) + { +@@ -4309,7 +4340,7 @@ + BSDX_(__NR___acl_delete_link, sys___acl_delete_link), // 427 + + BSDX_(__NR___acl_aclcheck_link, sys___acl_aclcheck_link), // 428 +- //!sigwait 429 ++ BSDXY(__NR_sigwait, sys_sigwait), // 429 + // thr_create 430 + BSDX_(__NR_thr_exit, sys_thr_exit), // 431 + +--- a/coregrind/m_syswrap/priv_syswrap-freebsd.h 2018-12-13 15:16:09.551822000 +0300 ++++ b/coregrind/m_syswrap/priv_syswrap-freebsd.h 2018-12-13 15:16:16.487873000 +0300 +@@ -181,6 +181,7 @@ + DECL_TEMPLATE(freebsd, sys_fake_sigreturn); + DECL_TEMPLATE(freebsd, sys_sigtimedwait); + DECL_TEMPLATE(freebsd, sys_sigwaitinfo); ++DECL_TEMPLATE(freebsd, sys_sigwait); + DECL_TEMPLATE(freebsd, sys_getcontext); + DECL_TEMPLATE(freebsd, sys_setcontext); + DECL_TEMPLATE(freebsd, sys_swapcontext);