diff -ur work/stass-valgrind-freebsd-ce1acb28953f/coregrind/m_syswrap/syswrap-freebsd.c patched/stass-valgrind-freebsd-ce1acb28953f/coregrind/m_syswrap/syswrap-freebsd.c
--- coregrind/m_syswrap/syswrap-freebsd.c 2016-01-13 20:20:20.000000000 +0100
+++ coregrind/m_syswrap/syswrap-freebsd.c 2020-09-17 21:41:54.117179000 +0200
@@ -3670,6 +3670,64 @@
POST_MEM_WRITE( ARG5, ARG4 );
}
+// ekvz
+PRE(sys_kevent_fbsd12)
+{
+ *flags |= SfMayBlock;
+ PRINT("sys_kevent_fbsd12 ( %ld, %#lx, %ld, %#lx, %ld, %#lx )\n", ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
+ PRE_REG_READ6(long, "kevent",
+ int, fd, struct vki_kevent *, newev, int, num_newev,
+ struct vki_kevent *, ret_ev, int, num_retev,
+ struct timespec *, timeout);
+ if (ARG2 != 0 && ARG3 != 0)
+ PRE_MEM_READ( "kevent(changeevent)", ARG2, sizeof(struct vki_kevent)*ARG3 );
+ if (ARG4 != 0 && ARG5 != 0)
+ PRE_MEM_WRITE( "kevent(events)", ARG4, sizeof(struct vki_kevent)*ARG5);
+ if (ARG6 != 0)
+ PRE_MEM_READ( "kevent(timeout)",
+ ARG6, sizeof(struct vki_timespec));
+}
+
+POST(sys_kevent_fbsd12)
+{
+ vg_assert(SUCCESS);
+ if (RES > 0) {
+ if (ARG4 != 0)
+ POST_MEM_WRITE( ARG4, sizeof(struct vki_kevent)*RES) ;
+ }
+}
+
+//ekvz
+PRE(sys_getrandom) {
+ *flags |= SfMayBlock;
+ PRINT("sys_getrandom ( %#lx, %ld, %#ld )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(ssize_t, "getrandom",
+ void *, buf, size_t, buflen, unsigned int, flags);
+ PRE_MEM_WRITE("getrandom(buf)", ARG1, ARG2);
+}
+
+POST(sys_getrandom)
+{
+ vg_assert(SUCCESS);
+ if (RES != -1)
+ POST_MEM_WRITE( ARG1, ARG2 );
+}
+
+//ekvz
+PRE(sys_minherit) {
+ PRINT("sys_minherit ( %#lx, %ld, %#ld )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(int, "minherit",
+ void *, addr, size_t, len, unsigned int, inherit);
+ PRE_MEM_WRITE("minherit(addr)", ARG1, ARG2);
+}
+
+POST(sys_minherit)
+{
+ vg_assert(SUCCESS);
+ if (RES == 0)
+ POST_MEM_WRITE( ARG1, ARG2 );
+}
+
#undef PRE
#undef POST
@@ -3986,7 +4044,8 @@
// BSDXY(__NR_ntp_gettime, sys_ntp_gettime), // 248
// nosys 249
-// BSDXY(__NR_minherit, sys_minherit), // 250
+ // ekvz
+ BSDXY(__NR_minherit, sys_minherit), // 250
BSDX_(__NR_rfork, sys_rfork), // 251
GENXY(__NR_openbsd_poll, sys_poll), // 252
@@ -4309,6 +4368,10 @@
BSDXY(__NR_shmctl, sys_shmctl), // 512
BSDXY(__NR_pipe2, sys_pipe2), // 542
+
+ //ekvz
+ BSDXY(__NR_kevent_fbsd12, sys_kevent_fbsd12), // 560
+ BSDXY(__NR_getrandom, sys_getrandom), // 563
BSDX_(__NR_fake_sigreturn, sys_fake_sigreturn), // 1000, fake sigreturn
diff -ur work/stass-valgrind-freebsd-ce1acb28953f/include/vki/vki-scnums-freebsd.h patched/stass-valgrind-freebsd-ce1acb28953f/include/vki/vki-scnums-freebsd.h
--- include/vki/vki-scnums-freebsd.h 2020-09-17 20:30:07.460426000 +0200
+++ include/vki/vki-scnums-freebsd.h 2020-09-17 21:38:07.349167000 +0200
@@ -417,6 +417,10 @@
#define __NR_getdirentries64 554
#define __NR_fstatfs64 556
+//ekvz
+#define __NR_kevent_fbsd12 560
+#define __NR_getrandom 563
+
#define __NR_fake_sigreturn 1000
#endif /* __VKI_UNISTD_FREEBSD_H */