Index: devel/valgrind/Makefile =================================================================== --- devel/valgrind/Makefile (revision 496099) +++ devel/valgrind/Makefile (working copy) @@ -4,7 +4,7 @@ PORTNAME= valgrind PORTVERSION= 3.10.1.20160113 DISTVERSIONPREFIX= freebsd- -PORTREVISION= 7 +PORTREVISION= 8 PORTEPOCH= 1 CATEGORIES= devel MASTER_SITES= https://bitbucket.org/${BB_ACCOUNT}/${BB_PROJECT}/get/${BB_COMMIT}.tar.gz?dummy=/ \ @@ -46,13 +46,8 @@ GNU_CONFIGURE= yes USE_LDCONFIG= yes SHEBANG_FILES= callgrind/callgrind_annotate.in callgrind/callgrind_control.in +CFLAGS+= -mstack-alignment=8 -EXTRA_PATCHES= \ - ${FILESDIR}/accept4_syscall.patch:-p1 \ - ${FILESDIR}/jail_syscalls.patch:-p1 \ - ${FILESDIR}/kldload_syscalls.patch:-p1 \ - ${FILESDIR}/missing_fcntls.patch:-p1 - PORTDOCS= html WRKSRC= ${WRKDIR}/${BB_ACCOUNT}-${BB_PROJECT}-${BB_COMMIT} @@ -61,10 +56,6 @@ .include -.if ${OSVERSION} > 1200030 -EXTRA_PATCHES+= ${FILESDIR}/extra-patch-ino64:-p1 -.endif - .if ${ARCH} == "amd64" PLIST_SUB+= AMD64="" ARCH=amd64 . if !${PORT_OPTIONS:M32BIT} Index: devel/valgrind/files/accept4_syscall.patch =================================================================== --- devel/valgrind/files/accept4_syscall.patch (revision 496099) +++ devel/valgrind/files/accept4_syscall.patch (nonexistent) @@ -1,56 +0,0 @@ -# HG changeset patch -# User Bitbucket -# Date 0 0 -# Node ID af5523fe25247f537884116bd37e8ce171ba837e -# Parent ce1acb28953fd6928ccb8f9511e374eab66e8625 -# Parent 22cf2727f838e9f5efaeba377341c3807d74dbdb -Merge preview of source (22cf2727f838e9f5efaeba377341c3807d74dbdb) to destination (ce1acb28953fd6928ccb8f9511e374eab66e8625). - -diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r af5523fe25247f537884116bd37e8ce171ba837e coregrind/m_syswrap/syswrap-freebsd.c ---- a/coregrind/m_syswrap/syswrap-freebsd.c -+++ b/coregrind/m_syswrap/syswrap-freebsd.c -@@ -480,6 +480,23 @@ - SET_STATUS_from_SysRes(r); - } - -+PRE(sys_accept4) -+{ -+ *flags |= SfMayBlock; -+ PRINT("sys_accept4 ( %ld, %#lx, %ld, %ld)",ARG1,ARG2,ARG3,ARG4); -+ PRE_REG_READ4(long, "accept4", -+ int, s, struct sockaddr *, addr, int, *addrlen, int, flags); -+ ML_(generic_PRE_sys_accept)(tid, ARG1,ARG2,ARG3); -+} -+POST(sys_accept4) -+{ -+ SysRes r; -+ vg_assert(SUCCESS); -+ r = ML_(generic_POST_sys_accept)(tid, VG_(mk_SysRes_Success)(RES), -+ ARG1,ARG2,ARG3); -+ SET_STATUS_from_SysRes(r); -+} -+ - PRE(sys_sendto) - { - *flags |= SfMayBlock; -@@ -4307,7 +4324,8 @@ - - BSDXY(__NR___semctl, sys___semctl), // 510 - BSDXY(__NR_shmctl, sys_shmctl), // 512 -- -+ -+ BSDXY(__NR_accept4, sys_accept4), //541 - BSDXY(__NR_pipe2, sys_pipe2), // 542 - - BSDX_(__NR_fake_sigreturn, sys_fake_sigreturn), // 1000, fake sigreturn -diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r af5523fe25247f537884116bd37e8ce171ba837e include/vki/vki-scnums-freebsd.h ---- a/include/vki/vki-scnums-freebsd.h -+++ b/include/vki/vki-scnums-freebsd.h -@@ -407,6 +407,7 @@ - #define __NR_posix_openpt 504 - #define __NR___semctl 510 - #define __NR_shmctl 512 -+#define __NR_accept4 541 - #define __NR_pipe2 542 - - #define __NR_fake_sigreturn 1000 Index: devel/valgrind/files/extra-patch-ino64 =================================================================== --- devel/valgrind/files/extra-patch-ino64 (revision 496099) +++ devel/valgrind/files/extra-patch-ino64 (nonexistent) @@ -1,239 +0,0 @@ -From 6aaeefab2490d56743ec49d0e20d3fd6ff45fb55 Mon Sep 17 00:00:00 2001 -From: Roman Bogorodskiy -Date: Sat, 9 Sep 2017 18:27:15 +0400 -Subject: [PATCH v2] ino64 support - ---- - coregrind/m_syswrap/priv_syswrap-freebsd.h | 4 ++ - coregrind/m_syswrap/syswrap-freebsd.c | 65 ++++++++++++++++++++++ - include/vki/vki-freebsd.h | 54 ++++++++++++++++++ - include/vki/vki-scnums-freebsd.h | 4 ++ - 4 files changed, 127 insertions(+) - -diff --git a/coregrind/m_syswrap/priv_syswrap-freebsd.h b/coregrind/m_syswrap/priv_syswrap-freebsd.h -index 63d122f..715ad48 100644 ---- a/coregrind/m_syswrap/priv_syswrap-freebsd.h -+++ b/coregrind/m_syswrap/priv_syswrap-freebsd.h -@@ -97,10 +97,12 @@ DECL_TEMPLATE(freebsd, sys_setegid); - DECL_TEMPLATE(freebsd, sys_seteuid); - DECL_TEMPLATE(freebsd, sys_stat); - DECL_TEMPLATE(freebsd, sys_fstat); -+DECL_TEMPLATE(freebsd, sys_fstat64); - DECL_TEMPLATE(freebsd, sys_lstat); - DECL_TEMPLATE(freebsd, sys_pathconf); - DECL_TEMPLATE(freebsd, sys_fpathconf); - DECL_TEMPLATE(freebsd, sys_getdirentries); -+DECL_TEMPLATE(freebsd, sys_getdirentries64); - DECL_TEMPLATE(freebsd, sys_mmap); - DECL_TEMPLATE(freebsd, sys___syscall); - DECL_TEMPLATE(freebsd, sys_lseek); -@@ -208,6 +210,7 @@ DECL_TEMPLATE(freebsd, sys_kevent); - DECL_TEMPLATE(freebsd, sys_sendfile); - DECL_TEMPLATE(freebsd, sys_statfs6); - DECL_TEMPLATE(freebsd, sys_fstatfs6); -+DECL_TEMPLATE(freebsd, sys_fstatfs64); - DECL_TEMPLATE(freebsd, sys_fhstatfs6); - DECL_TEMPLATE(freebsd, sys_thr_exit); - DECL_TEMPLATE(freebsd, sys_thr_self); -@@ -251,6 +254,7 @@ DECL_TEMPLATE(freebsd, sys_fchmodat); - DECL_TEMPLATE(freebsd, sys_fchownat); - DECL_TEMPLATE(freebsd, sys_fexecve); - DECL_TEMPLATE(freebsd, sys_fstatat); -+DECL_TEMPLATE(freebsd, sys_fstatat64); - DECL_TEMPLATE(freebsd, sys_futimesat); - DECL_TEMPLATE(freebsd, sys_linkat); - DECL_TEMPLATE(freebsd, sys_mkdirat); -diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c -index bf6b1f1..978e98e 100644 ---- a/coregrind/m_syswrap/syswrap-freebsd.c -+++ b/coregrind/m_syswrap/syswrap-freebsd.c -@@ -885,6 +885,18 @@ POST(sys_fstat) - POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) ); - } - -+PRE(sys_fstat64) -+{ -+ PRINT("sys_fstat64 ( %ld, %#lx )", ARG1, ARG2); -+ PRE_REG_READ2(long, "fstat", unsigned long, fd, struct stat64 *, buf); -+ PRE_MEM_WRITE( "fstat(buf)", ARG2, sizeof(struct vki_stat64) ); -+} -+ -+POST(sys_fstat64) -+{ -+ POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) ); -+} -+ - PRE(sys_pathconf) - { - PRINT("sys_pathconf ( %#lx(%s), %ld )",ARG1,(char *)ARG1,ARG2); -@@ -1029,6 +1041,26 @@ POST(sys_getdirentries) - } - } - -+PRE(sys_getdirentries64) -+{ -+ *flags |= SfMayBlock; -+ PRINT("sys_getdents ( %ld, %#lx, %ld )", ARG1,ARG2,ARG3); -+ PRE_REG_READ3(vki_ssize_t, "getdirentries", -+ unsigned int, fd, struct dirent *, dirp, -+ vki_size_t, count); -+ PRE_MEM_WRITE( "getdirentries(dirp)", ARG2, ARG3 ); -+} -+ -+POST(sys_getdirentries64) -+{ -+ vg_assert(SUCCESS); -+ if (RES > 0) { -+ POST_MEM_WRITE( ARG2, RES ); -+ if ( ARG4 != 0 ) -+ POST_MEM_WRITE( ARG4, sizeof (vki_off_t)); -+ } -+} -+ - PRE(sys_seteuid) - { - PRINT("sys_seteuid ( %ld )", ARG1); -@@ -1251,6 +1283,19 @@ POST(sys_fstatfs6) - POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs6) ); - } - -+PRE(sys_fstatfs64) -+{ -+ PRINT("sys_fstatfs64 ( %ld, %#lx )", ARG1, ARG2); -+ PRE_REG_READ2(long, "fstatfs6", -+ unsigned int, fd, struct statfs *, buf); -+ PRE_MEM_WRITE( "fstatfs6(buf)", ARG2, sizeof(struct vki_statfs64) ); -+} -+ -+POST(sys_fstatfs64) -+{ -+ POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs64) ); -+} -+ - PRE(sys_statfs6) - { - PRINT("sys_statfs6 ( %#lx(%s), %#lx )",ARG1,(char *)ARG1,ARG2); -@@ -3132,6 +3177,20 @@ POST(sys_fstatat) - POST_MEM_WRITE( ARG3, sizeof(struct vki_stat) ); - } - -+PRE(sys_fstatat64) -+{ -+ PRINT("sys_fstatat ( %ld, %#lx(%s), %#lx )", ARG1,ARG2,(char*)ARG2,ARG3); -+ PRE_REG_READ3(long, "fstatat", -+ int, dfd, char *, file_name, struct stat *, buf); -+ PRE_MEM_RASCIIZ( "fstatat(file_name)", ARG2 ); -+ PRE_MEM_WRITE( "fstatat(buf)", ARG3, sizeof(struct vki_stat) ); -+} -+ -+POST(sys_fstatat64) -+{ -+ POST_MEM_WRITE( ARG3, sizeof(struct vki_stat) ); -+} -+ - PRE(sys_unlinkat) - { - *flags |= SfMayBlock; -@@ -4427,6 +4486,12 @@ const SyscallTableEntry ML_(syscall_table)[] = { - BSDXY(__NR_accept4, sys_accept4), //541 - BSDXY(__NR_pipe2, sys_pipe2), // 542 - -+ // ino64 -+ BSDXY(__NR_fstat64, sys_fstat64), // 551 -+ BSDXY(__NR_fstatat64, sys_fstatat64), // 552 -+ BSDXY(__NR_getdirentries64, sys_getdirentries64), // 554 -+ GENXY(__NR_fstatfs64, sys_fstatfs), // 556 -+ - BSDX_(__NR_fake_sigreturn, sys_fake_sigreturn), // 1000, fake sigreturn - - }; -diff --git a/include/vki/vki-freebsd.h b/include/vki/vki-freebsd.h -index aee453e..318a207 100644 ---- a/include/vki/vki-freebsd.h -+++ b/include/vki/vki-freebsd.h -@@ -367,6 +367,36 @@ struct vki_stat { - unsigned int :(8 / 2) * (16 - (int)sizeof(struct vki_timespec)); - }; - -+struct vki_stat64 { -+ vki_uint64_t st_dev; -+ vki_uint64_t st_ino; -+ vki_uint64_t st_nlink; -+ vki_mode_t st_mode; -+ vki_int16_t st_padding0; -+ vki_uid_t st_uid; -+ vki_gid_t st_gid; -+ vki_int32_t st_padding1; -+ vki_uint64_t st_rdev; -+#if 0 -+ struct vki_timespec st_atimespec; -+ struct vki_timespec st_mtimespec; -+ struct vki_timespec st_ctimespec; -+#else -+ vki_time_t st_atime; -+ long st_atime_nsec; -+ vki_time_t st_mtime; -+ long st_mtime_nsec; -+ vki_time_t st_ctime; -+ long st_ctime_nsec; -+#endif -+ struct vki_timespec st_birthtim; -+ vki_off_t st_size; -+ vki_blkcnt_t st_blocks; -+ vki_blksize_t st_blksize; -+ vki_fflags_t st_flags; -+ vki_uint64_t st_gen; -+ vki_int64_t st_spare[10]; -+}; - - //---------------------------------------------------------------------- - // From linux-2.6.8.1/include/linux/sched.h -@@ -941,6 +971,30 @@ struct vki_statfs { - char f_mntonname[VKI_MNAMELEN]; - }; - -+struct vki_statfs64 { -+ vki_uint32_t f_version; -+ vki_uint32_t f_type; -+ vki_uint64_t f_flags; -+ vki_uint64_t f_bsize; -+ vki_uint64_t f_iosize; -+ vki_uint64_t f_blocks; -+ vki_uint64_t f_bfree; -+ vki_int64_t f_bavail; -+ vki_uint64_t f_files; -+ vki_int64_t f_ffree; -+ vki_uint64_t f_syncwrites; -+ vki_uint64_t f_asyncwrites; -+ vki_uint64_t f_syncreads; -+ vki_uint64_t f_asyncreads; -+ vki_uint64_t f_spare[10]; -+ vki_uint32_t f_namemax; -+ vki_uid_t f_owner; -+ vki_fsid_t f_fsid; -+ char f_charspare[80]; -+ char f_fstypename[VKI_MFSNAMELEN]; -+ char f_mntfromnname[VKI_MNAMELEN]; -+ char f_mntonname[VKI_MNAMELEN]; -+}; - #define MAXFIDSZ 16 - - struct vki_fid { -diff --git a/include/vki/vki-scnums-freebsd.h b/include/vki/vki-scnums-freebsd.h -index 605a42f..ffa241d 100644 ---- a/include/vki/vki-scnums-freebsd.h -+++ b/include/vki/vki-scnums-freebsd.h -@@ -412,6 +412,10 @@ - #define __NR_shmctl 512 - #define __NR_accept4 541 - #define __NR_pipe2 542 -+#define __NR_fstat64 551 -+#define __NR_fstatat64 552 -+#define __NR_getdirentries64 554 -+#define __NR_fstatfs64 556 - - #define __NR_fake_sigreturn 1000 - --- -2.14.1 - Index: devel/valgrind/files/jail_syscalls.patch =================================================================== --- devel/valgrind/files/jail_syscalls.patch (revision 496099) +++ devel/valgrind/files/jail_syscalls.patch (nonexistent) @@ -1,87 +0,0 @@ -# HG changeset patch -# User Bitbucket -# Date 0 0 -# Node ID 90c6097540f35e312d34340b916296130003c851 -# Parent ce1acb28953fd6928ccb8f9511e374eab66e8625 -# Parent 5662e704b72c7ebb116f8478a4ff3847acc72fc6 -Merge preview of source (5662e704b72c7ebb116f8478a4ff3847acc72fc6) to destination (ce1acb28953fd6928ccb8f9511e374eab66e8625). - -diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r 90c6097540f35e312d34340b916296130003c851 coregrind/m_syswrap/syswrap-freebsd.c ---- a/coregrind/m_syswrap/syswrap-freebsd.c -+++ b/coregrind/m_syswrap/syswrap-freebsd.c -@@ -3670,6 +3670,42 @@ - POST_MEM_WRITE( ARG5, ARG4 ); - } - -+PRE(sys_jail_get) -+{ -+ -+ PRINT("sys_jail_get ( %#lx, %lu, %ld )", ARG1, ARG2, ARG3); -+ PRE_REG_READ3(int, "jail_get", struct vki_iovec *, iov, unsigned int, -+ niov, int, flags); -+ PRE_MEM_WRITE("jail_get", ARG1, ARG2 * sizeof(struct vki_iovec)); -+} -+ -+POST(sys_jail_get) -+{ -+ vg_assert(SUCCESS); -+ if (RES != -1) -+ POST_MEM_WRITE(ARG1, ARG2); -+} -+ -+PRE(sys_jail_set) -+{ -+ PRINT("sys_jail_set ( %#lx, %lu, %ld )", ARG1, ARG2, ARG3); -+ PRE_REG_READ3(int, "jail_set", struct vki_iovec *, iov, unsigned int, -+ niov, int, flags); -+ PRE_MEM_WRITE("jail_set", ARG1, ARG2 * sizeof(struct vki_iovec)); -+} -+ -+PRE(sys_jail_attach) -+{ -+ PRINT("sys_jail_attach ( %ld )", ARG1); -+ PRE_REG_READ1(int, "jail_attach", int, jid); -+} -+ -+PRE(sys_jail_remove) -+{ -+ PRINT("sys_jail_remove ( %ld )", ARG1); -+ PRE_REG_READ1(int, "jail_remove", int, jid); -+} -+ - #undef PRE - #undef POST - -@@ -4219,7 +4255,7 @@ - BSDXY(__NR__umtx_lock, sys__umtx_lock), // 434 - BSDXY(__NR__umtx_unlock, sys__umtx_unlock), // 435 - -- // jail_attach 436 -+ BSDX_(__NR_jail_attach, sys_jail_attach), // 436 - // extattr_list_fd 437 - // extattr_list_file 438 - // extattr_list_link 439 -@@ -4303,6 +4339,10 @@ - BSDX_(__NR_symlinkat, sys_symlinkat), // 502 - BSDX_(__NR_unlinkat, sys_unlinkat), // 503 - -+ BSDXY(__NR_jail_get, sys_jail_get), // 506 -+ BSDX_(__NR_jail_set, sys_jail_set), // 507 -+ BSDX_(__NR_jail_remove, sys_jail_remove), // 508 -+ - // posix_openpt 504 - - BSDXY(__NR___semctl, sys___semctl), // 510 -diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r 90c6097540f35e312d34340b916296130003c851 include/vki/vki-scnums-freebsd.h ---- a/include/vki/vki-scnums-freebsd.h -+++ b/include/vki/vki-scnums-freebsd.h -@@ -405,6 +405,9 @@ - #define __NR_symlinkat 502 - #define __NR_unlinkat 503 - #define __NR_posix_openpt 504 -+#define __NR_jail_get 506 -+#define __NR_jail_set 507 -+#define __NR_jail_remove 508 - #define __NR___semctl 510 - #define __NR_shmctl 512 - #define __NR_pipe2 542 Index: devel/valgrind/files/kldload_syscalls.patch =================================================================== --- devel/valgrind/files/kldload_syscalls.patch (revision 496099) +++ devel/valgrind/files/kldload_syscalls.patch (nonexistent) @@ -1,127 +0,0 @@ -# HG changeset patch -# User Bitbucket -# Date 0 0 -# Node ID 7ecd33d57049211e1084fc5e8bf588da49088d75 -# Parent ce1acb28953fd6928ccb8f9511e374eab66e8625 -# Parent 79bf8f58bec842a1aa94f4fff2e4884a6bb5378b -Merge preview of source (79bf8f58bec842a1aa94f4fff2e4884a6bb5378b) to destination (ce1acb28953fd6928ccb8f9511e374eab66e8625). - -diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r 7ecd33d57049211e1084fc5e8bf588da49088d75 coregrind/m_syswrap/syswrap-freebsd.c ---- a/coregrind/m_syswrap/syswrap-freebsd.c -+++ b/coregrind/m_syswrap/syswrap-freebsd.c -@@ -1246,6 +1246,52 @@ - POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs6) ); - } - -+/* --------------------------------------------------------------------- -+ kld* wrappers -+ ------------------------------------------------------------------ */ -+ -+PRE(sys_kldload) -+{ -+ PRINT("sys_kldload ( %#lx(%s) )", ARG1, (char *)ARG1); -+ PRE_REG_READ1(int, "kldload", const char *, "file"); -+ -+ PRE_MEM_RASCIIZ( "kldload(file)", ARG1 ); -+} -+ -+PRE(sys_kldunload) -+{ -+ PRINT("sys_kldunload ( %ld )", ARG1); -+ PRE_REG_READ1(int, "kldunload", int, "fileid"); -+} -+ -+PRE(sys_kldfind) -+{ -+ PRINT("sys_kldfind ( %#lx(%s) )", ARG1, (char *)ARG1); -+ PRE_REG_READ1(int, "kldfind", const char *, "file"); -+ -+ PRE_MEM_RASCIIZ( "kldfind(file)", ARG1 ); -+} -+ -+PRE(sys_kldnext) -+{ -+ PRINT("sys_kldnext ( %ld )", ARG1); -+ PRE_REG_READ1(int, "kldnext", int, "fileid"); -+} -+ -+PRE(sys_kldsym) -+{ -+ PRINT("sys_kldsym ( %ld, %ld, %#lx )", ARG1,ARG2,ARG3 ); -+ PRE_REG_READ3(int, "kldsym", int, "fileid", int, "command", void*, "data"); -+ PRE_MEM_READ( "kldsym(data)", ARG3, sizeof(struct vki_kld_sym_lookup) ); -+ struct vki_kld_sym_lookup *kslp = (struct vki_kld_sym_lookup *)ARG3; -+ PRE_MEM_RASCIIZ( "kldsym(data.symname)", (Addr)kslp->symname ); -+} -+POST(sys_kldsym) -+{ -+ struct vki_kld_sym_lookup *kslp = (struct vki_kld_sym_lookup *)ARG3; -+ POST_MEM_WRITE( (Addr)&kslp->symvalue, sizeof(kslp->symvalue) ); -+ POST_MEM_WRITE( (Addr)&kslp->symsize, sizeof(kslp->symsize) ); -+} - - #if 0 - /* --------------------------------------------------------------------- -@@ -3389,14 +3435,14 @@ - moans--; - VG_(message)(Vg_UserMsg, - "Warning: noted but unhandled ioctl 0x%lx" -- " with no size/direction hints", -+ " with no size/direction hints\n", - ARG2); - VG_(message)(Vg_UserMsg, - " This could cause spurious value errors" -- " to appear."); -+ " to appear.\n"); - VG_(message)(Vg_UserMsg, - " See README_MISSING_SYSCALL_OR_IOCTL for " -- "guidance on writing a proper wrapper." ); -+ "guidance on writing a proper wrapper.\n" ); - } - } else { - if ((dir & _VKI_IOC_WRITE) && size > 0) -@@ -4054,10 +4100,10 @@ - // BSDX_(__NR_modfnext, sys_modfnext), // 302 - BSDX_(__NR_modfind, sys_modfind), // 303 - --// BSDX_(__NR_kldload, sys_kldload), // 304 --// BSDX_(__NR_kldunload, sys_kldunload), // 305 --// BSDX_(__NR_kldfind, sys_kldfind), // 306 --// BSDX_(__NR_kldnext, sys_kldnext), // 307 -+ BSDX_(__NR_kldload, sys_kldload), // 304 -+ BSDX_(__NR_kldunload, sys_kldunload), // 305 -+ BSDX_(__NR_kldfind, sys_kldfind), // 306 -+ BSDX_(__NR_kldnext, sys_kldnext), // 307 - - // BSDXY(__NR_kldstat, sys_kldstat), // 308 - // BSDX_(__NR_kldfirstmod, sys_kldfirstmod), // 309 -@@ -4095,7 +4141,7 @@ - BSDX_(__NR_utrace, sys_utrace), // 335 - - // compat3 sendfile 336 --// BSDXY(__NR_kldsym, sys_kldsym), // 337 -+ BSDXY(__NR_kldsym, sys_kldsym), // 337 - // BSDX_(__NR_jail, sys_jail), // 338 - // unimpl pioctl 339 - -diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r 7ecd33d57049211e1084fc5e8bf588da49088d75 include/vki/vki-freebsd.h ---- a/include/vki/vki-freebsd.h -+++ b/include/vki/vki-freebsd.h -@@ -2129,6 +2129,17 @@ - void *spare[3]; - }; - -+//---------------------------------------------------------------------- -+// From sys/linker.h -+//---------------------------------------------------------------------- -+ -+struct vki_kld_sym_lookup { -+ int version; /* set to sizeof(struct kld_sym_lookup) */ -+ char *symname; /* Symbol name we are looking up */ -+ unsigned long symvalue; -+ vki_size_t symsize; -+}; -+ - /*--------------------------------------------------------------------*/ - /*--- end ---*/ - /*--------------------------------------------------------------------*/ Index: devel/valgrind/files/missing_fcntls.patch =================================================================== --- devel/valgrind/files/missing_fcntls.patch (revision 496099) +++ devel/valgrind/files/missing_fcntls.patch (nonexistent) @@ -1,54 +0,0 @@ -diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c ---- a/coregrind/m_syswrap/syswrap-freebsd.c -+++ b/coregrind/m_syswrap/syswrap-freebsd.c -@@ -3278,9 +3278,12 @@ PRE(sys_fcntl) - - // These ones use ARG3 as "arg". - case VKI_F_DUPFD: -+ case VKI_F_DUPFD_CLOEXEC: - case VKI_F_SETFD: - case VKI_F_SETFL: - case VKI_F_SETOWN: -+ case VKI_F_READAHEAD: -+ case VKI_F_RDAHEAD: - PRINT("sys_fcntl[ARG3=='arg'] ( %ld, %ld, %ld )", ARG1,ARG2,ARG3); - PRE_REG_READ3(long, "fcntl", - unsigned int, fd, unsigned int, cmd, unsigned long, arg); -@@ -3300,6 +3303,7 @@ PRE(sys_fcntl) - - // This one uses ARG3 as "oldd" and ARG4 as "newd". - case VKI_F_DUP2FD: -+ case VKI_F_DUP2FD_CLOEXEC: - PRINT("sys_fcntl[ARG3=='oldd', ARG4=='newd'] ( %ld, %ld, %ld, %ld )", - ARG1,ARG2,ARG3,ARG4); - PRE_REG_READ4(long, "fcntl", -@@ -3339,6 +3343,15 @@ POST(sys_fcntl) - ML_(record_fd_open_named)(tid, RES); - } - } -+ else if (ARG2 == VKI_F_DUPFD_CLOEXEC) { -+ if (!ML_(fd_allowed)(RES, "fcntl(DUPFD_CLOEXEC)", tid, True)) { -+ VG_(close)(RES); -+ SET_STATUS_Failure( VKI_EMFILE ); -+ } else { -+ if (VG_(clo_track_fds)) -+ ML_(record_fd_open_named)(tid, RES); -+ } -+ } - } - - PRE(sys_ioctl) -diff --git a/include/vki/vki-freebsd.h b/include/vki/vki-freebsd.h ---- a/include/vki/vki-freebsd.h -+++ b/include/vki/vki-freebsd.h -@@ -1554,6 +1554,10 @@ struct vki_dirent { - #define VKI_F_SETLK 12 /* set record locking information */ - #define VKI_F_SETLKW 13 /* F_SETLK; wait if blocked */ - #define VKI_F_SETLK_REMOTE 14 /* debugging support for remote locks */ -+#define VKI_F_READAHEAD 15 /* read ahead */ -+#define VKI_F_RDAHEAD 16 /* Darwin compatible read ahead */ -+#define VKI_F_DUPFD_CLOEXEC 17 /* Like F_DUPFD, but FD_CLOEXEC is set */ -+#define VKI_F_DUP2FD_CLOEXEC 18 /* Like F_DUP2FD, but FD_CLOEXEC is set */ - - /* for F_[GET|SET]FL */ - #define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */ Index: devel/valgrind/files/patch-configure.ac =================================================================== --- devel/valgrind/files/patch-configure.ac (revision 496099) +++ devel/valgrind/files/patch-configure.ac (working copy) @@ -1,6 +1,6 @@ ---- configure.ac.orig 2016-01-13 19:20:20 UTC -+++ configure.ac -@@ -145,7 +145,19 @@ +--- configure.ac.orig 2016-01-13 22:20:20.000000000 +0300 ++++ configure.ac 2019-03-17 13:06:51.970389000 +0300 +@@ -145,7 +145,19 @@ case "${is_clang}-${gcc_version}" in notclang-5.*) AC_MSG_RESULT([ok (${gcc_version})]) ;; Index: devel/valgrind/files/patch-coregrind-m_debuglog.c =================================================================== --- devel/valgrind/files/patch-coregrind-m_debuglog.c (revision 496099) +++ devel/valgrind/files/patch-coregrind-m_debuglog.c (working copy) @@ -1,6 +1,6 @@ ---- coregrind/m_debuglog.c.orig 2019-01-08 21:35:12.953178000 +0400 -+++ coregrind/m_debuglog.c 2019-01-08 21:36:10.940827000 +0400 -@@ -482,8 +482,8 @@ +--- coregrind/m_debuglog.c.orig 2016-01-13 22:20:20.000000000 +0300 ++++ coregrind/m_debuglog.c 2019-03-17 13:06:51.971632000 +0300 +@@ -482,8 +482,8 @@ static UInt local_sys_write_stderr ( HChar* buf, Int n "popq %%r15\n" /* restore r15 */ "addq $256, %%rsp\n" /* restore stack ptr */ : /*wr*/ Index: devel/valgrind/files/patch-coregrind-m_syswrap-syswrap-amd64-freebsd.c =================================================================== --- devel/valgrind/files/patch-coregrind-m_syswrap-syswrap-amd64-freebsd.c (revision 496099) +++ devel/valgrind/files/patch-coregrind-m_syswrap-syswrap-amd64-freebsd.c (working copy) @@ -1,6 +1,6 @@ ---- coregrind/m_syswrap/syswrap-amd64-freebsd.c.orig 2015-01-26 16:17:32.000000000 -0400 -+++ coregrind/m_syswrap/syswrap-amd64-freebsd.c 2015-08-31 09:51:17.506396000 -0300 -@@ -691,6 +691,27 @@ +--- coregrind/m_syswrap/syswrap-amd64-freebsd.c.orig 2016-01-13 22:20:20.000000000 +0300 ++++ coregrind/m_syswrap/syswrap-amd64-freebsd.c 2019-03-17 13:06:51.972824000 +0300 +@@ -691,6 +691,27 @@ PRE(sys_sysarch) SET_STATUS_Success2( tst->arch.vex.guest_FS_ZERO, tst->arch.vex.guest_RDX ); POST_MEM_WRITE( ARG2, sizeof(void *) ); break; Index: devel/valgrind/files/patch-coregrind_m_libcfile.c =================================================================== --- devel/valgrind/files/patch-coregrind_m_libcfile.c (nonexistent) +++ devel/valgrind/files/patch-coregrind_m_libcfile.c (working copy) @@ -0,0 +1,24 @@ +--- coregrind/m_libcfile.c.orig 2016-01-13 22:20:20.000000000 +0300 ++++ coregrind/m_libcfile.c 2019-03-17 13:06:51.974161000 +0300 +@@ -255,11 +255,7 @@ Int VG_(pipe) ( Int fd[2] ) + SysRes res = VG_(do_syscall1)(__NR_pipe, (UWord)fd); + return sr_isError(res) ? -1 : 0; + # elif defined(VGO_freebsd) +- SysRes res = VG_(do_syscall0)(__NR_pipe); +- if (!sr_isError(res)) { +- fd[0] = sr_Res(res); +- fd[1] = sr_ResHI(res); +- } ++ SysRes res = VG_(do_syscall2)(__NR_pipe2, (UWord)fd, 0); + return sr_isError(res) ? -1 : 0; + # elif defined(VGO_darwin) + /* __NR_pipe is UX64, so produces a double-word result */ +@@ -369,7 +365,7 @@ Int VG_(fstat) ( Int fd, struct vg_stat* vgbuf ) + # if defined(VGO_linux) || defined(VGO_darwin) || defined(VGO_freebsd) + /* First try with fstat64. If that doesn't work out, fall back to + the vanilla version. */ +-# if defined(__NR_fstat64) ++# if defined(__NR_fstat64) && !defined(VGO_freebsd) + { struct vki_stat64 buf64; + res = VG_(do_syscall2)(__NR_fstat64, (UWord)fd, (UWord)&buf64); + if (!(sr_isError(res) && sr_Err(res) == VKI_ENOSYS)) { Index: devel/valgrind/files/patch-coregrind_m_syswrap_priv_syswrap-freebsd.h =================================================================== --- devel/valgrind/files/patch-coregrind_m_syswrap_priv_syswrap-freebsd.h (nonexistent) +++ devel/valgrind/files/patch-coregrind_m_syswrap_priv_syswrap-freebsd.h (working copy) @@ -0,0 +1,69 @@ +--- coregrind/m_syswrap/priv_syswrap-freebsd.h.orig 2016-01-13 22:20:20.000000000 +0300 ++++ coregrind/m_syswrap/priv_syswrap-freebsd.h 2019-03-17 13:06:51.975479000 +0300 +@@ -46,6 +46,7 @@ + DECL_TEMPLATE(freebsd, sys_syscall); + DECL_TEMPLATE(freebsd, sys_exit); + DECL_TEMPLATE(freebsd, sys_getfsstat4); ++DECL_TEMPLATE(freebsd, sys_getfsstat11); + DECL_TEMPLATE(freebsd, sys_getfsstat); + DECL_TEMPLATE(freebsd, sys_mount); + DECL_TEMPLATE(freebsd, sys_unmount); +@@ -54,6 +55,7 @@ + DECL_TEMPLATE(freebsd, sys_sendmsg); + DECL_TEMPLATE(freebsd, sys_recvfrom); + DECL_TEMPLATE(freebsd, sys_accept); ++DECL_TEMPLATE(freebsd, sys_accept4); + DECL_TEMPLATE(freebsd, sys_getpeername); + DECL_TEMPLATE(freebsd, sys_getsockname); + DECL_TEMPLATE(freebsd, sys_chflags); +@@ -97,10 +99,13 @@ + DECL_TEMPLATE(freebsd, sys_seteuid); + DECL_TEMPLATE(freebsd, sys_stat); + DECL_TEMPLATE(freebsd, sys_fstat); ++DECL_TEMPLATE(freebsd, sys_fstat64); + DECL_TEMPLATE(freebsd, sys_lstat); + DECL_TEMPLATE(freebsd, sys_pathconf); + DECL_TEMPLATE(freebsd, sys_fpathconf); + DECL_TEMPLATE(freebsd, sys_getdirentries); ++DECL_TEMPLATE(freebsd, sys_getdirentries64); ++DECL_TEMPLATE(freebsd, sys_getrandom); + DECL_TEMPLATE(freebsd, sys_mmap); + DECL_TEMPLATE(freebsd, sys___syscall); + DECL_TEMPLATE(freebsd, sys_lseek); +@@ -173,6 +178,10 @@ + DECL_TEMPLATE(freebsd, sys_utrace); + DECL_TEMPLATE(freebsd, sys_kldsym); + DECL_TEMPLATE(freebsd, sys_jail); ++DECL_TEMPLATE(freebsd, sys_jail_get); ++DECL_TEMPLATE(freebsd, sys_jail_set); ++DECL_TEMPLATE(freebsd, sys_jail_attach); ++DECL_TEMPLATE(freebsd, sys_jail_remove); + DECL_TEMPLATE(freebsd, sys_sigprocmask); + DECL_TEMPLATE(freebsd, sys_sigsuspend); + DECL_TEMPLATE(freebsd, sys_sigaction); +@@ -181,6 +190,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); +@@ -207,7 +217,9 @@ + DECL_TEMPLATE(freebsd, sys_kevent); + DECL_TEMPLATE(freebsd, sys_sendfile); + DECL_TEMPLATE(freebsd, sys_statfs6); ++DECL_TEMPLATE(freebsd, sys_statfs11); + DECL_TEMPLATE(freebsd, sys_fstatfs6); ++DECL_TEMPLATE(freebsd, sys_fstatfs64); + DECL_TEMPLATE(freebsd, sys_fhstatfs6); + DECL_TEMPLATE(freebsd, sys_thr_exit); + DECL_TEMPLATE(freebsd, sys_thr_self); +@@ -251,6 +262,7 @@ + DECL_TEMPLATE(freebsd, sys_fchownat); + DECL_TEMPLATE(freebsd, sys_fexecve); + DECL_TEMPLATE(freebsd, sys_fstatat); ++DECL_TEMPLATE(freebsd, sys_fstatat64); + DECL_TEMPLATE(freebsd, sys_futimesat); + DECL_TEMPLATE(freebsd, sys_linkat); + DECL_TEMPLATE(freebsd, sys_mkdirat); Index: devel/valgrind/files/patch-coregrind_m_syswrap_syswrap-freebsd.c =================================================================== --- devel/valgrind/files/patch-coregrind_m_syswrap_syswrap-freebsd.c (nonexistent) +++ devel/valgrind/files/patch-coregrind_m_syswrap_syswrap-freebsd.c (working copy) @@ -0,0 +1,341 @@ +--- coregrind/m_syswrap/syswrap-freebsd.c.orig 2016-01-13 22:20:20.000000000 +0300 ++++ coregrind/m_syswrap/syswrap-freebsd.c 2019-03-17 13:06:51.977414000 +0300 +@@ -868,6 +868,18 @@ + POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) ); + } + ++PRE(sys_fstat64) ++{ ++ PRINT("sys_fstat64 ( %ld, %#lx )", ARG1, ARG2); ++ PRE_REG_READ2(long, "fstat", unsigned long, fd, struct stat *, buf); ++ PRE_MEM_WRITE( "fstat(buf)", ARG2, sizeof(struct vki_stat64) ); ++} ++ ++POST(sys_fstat64) ++{ ++ POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) ); ++} ++ + PRE(sys_pathconf) + { + PRINT("sys_pathconf ( %#lx(%s), %ld )",ARG1,(char *)ARG1,ARG2); +@@ -1012,6 +1024,26 @@ + } + } + ++PRE(sys_getdirentries64) ++{ ++ *flags |= SfMayBlock; ++ PRINT("sys_getdents ( %ld, %#lx, %ld )", ARG1,ARG2,ARG3); ++ PRE_REG_READ3(vki_ssize_t, "getdirentries", ++ unsigned int, fd, struct dirent *, dirp, ++ vki_size_t, count); ++ PRE_MEM_WRITE( "getdirentries(dirp)", ARG2, ARG3 ); ++} ++ ++POST(sys_getdirentries64) ++{ ++ vg_assert(SUCCESS); ++ if (RES > 0) { ++ POST_MEM_WRITE( ARG2, RES ); ++ if ( ARG4 != 0 ) ++ POST_MEM_WRITE( ARG4, sizeof (vki_off_t)); ++ } ++} ++ + PRE(sys_seteuid) + { + PRINT("sys_seteuid ( %ld )", ARG1); +@@ -1070,6 +1102,44 @@ + } + } + ++PRE(sys_kevent11) ++{ ++ /* struct freebsd11_kevent { ++ uintptr_t ident; -- identifier for this event ++ short filter; -- filter for event ++ u_short flags; -- action flags for kqueue ++ u_int fflags; -- filter flag value ++ intptr_t data; -- filter data value ++ void *udata; -- opaque user data identifier ++ }; ++ int kevent(int kq, const struct kevent *changelist, int nchanges, ++ struct kevent *eventlist, int nevents, ++ const struct timespec *timeout); ++ */ ++ *flags |= SfMayBlock; ++ PRINT("sys_kevent11 ( %ld, %#lx, %ld, %#lx, %ld, %#lx )\n", ARG1,ARG2,ARG3,ARG4,ARG5,ARG6); ++ PRE_REG_READ6(long, "kevent11", ++ int, fd, struct vki_kevent11 *, newev, int, num_newev, ++ struct vki_kevent11 *, ret_ev, int, num_retev, ++ struct timespec *, timeout); ++ if (ARG2 != 0 && ARG3 != 0) ++ PRE_MEM_READ( "kevent(changeevent)", ARG2, sizeof(struct vki_kevent11)*ARG3 ); ++ if (ARG4 != 0 && ARG5 != 0) ++ PRE_MEM_WRITE( "kevent(events)", ARG4, sizeof(struct vki_kevent11)*ARG5); ++ if (ARG6 != 0) ++ PRE_MEM_READ( "kevent(timeout)", ++ ARG6, sizeof(struct vki_timespec)); ++} ++ ++POST(sys_kevent11) ++{ ++ vg_assert(SUCCESS); ++ if (RES > 0) { ++ if (ARG4 != 0) ++ POST_MEM_WRITE( ARG4, sizeof(struct vki_kevent11)*RES) ; ++ } ++} ++ + PRE(sys_kevent) + { + /* struct kevent { +@@ -1077,8 +1147,9 @@ + short filter; -- filter for event + u_short flags; -- action flags for kqueue + u_int fflags; -- filter flag value +- intptr_t data; -- filter data value ++ int64_t data; -- filter data value + void *udata; -- opaque user data identifier ++ uint64_t ext[4]; -- extensions + }; + int kevent(int kq, const struct kevent *changelist, int nchanges, + struct kevent *eventlist, int nevents, +@@ -1108,6 +1179,7 @@ + } + } + ++ + PRE(sys___getcwd) + { + PRINT("sys___getcwd ( %#lx, %lu )", ARG1,ARG2); +@@ -1143,6 +1215,20 @@ + } + } + ++PRE(sys_getfsstat11) ++{ ++ PRINT("sys_getfsstat11 ( %#lx, %ld, %ld )",ARG1,ARG2,ARG3); ++ PRE_REG_READ3(long, "getfsstat11", struct vki_statfs11 *, buf, long, len, int, flags); ++ PRE_MEM_WRITE( "getfsstat11(buf)", ARG1, ARG2 ); ++} ++POST(sys_getfsstat11) ++{ ++ vg_assert(SUCCESS); ++ if (RES > 0) { ++ POST_MEM_WRITE( ARG1, RES * sizeof(struct vki_statfs11) ); ++ } ++} ++ + PRE(sys_getfsstat) + { + PRINT("sys_getfsstat ( %#lx, %ld, %ld )",ARG1,ARG2,ARG3); +@@ -1234,6 +1320,19 @@ + POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs6) ); + } + ++PRE(sys_fstatfs64) ++{ ++ PRINT("sys_fstatfs64 ( %ld, %#lx )", ARG1, ARG2); ++ PRE_REG_READ2(long, "fstatfs6", ++ unsigned int, fd, struct statfs *, buf); ++ PRE_MEM_WRITE( "fstatfs6(buf)", ARG2, sizeof(struct vki_statfs6) ); ++} ++ ++POST(sys_fstatfs64) ++{ ++ POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs6) ); ++} ++ + PRE(sys_statfs6) + { + PRINT("sys_statfs6 ( %#lx(%s), %#lx )",ARG1,(char *)ARG1,ARG2); +@@ -1246,7 +1345,19 @@ + POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs6) ); + } + ++PRE(sys_statfs11) ++{ ++ PRINT("sys_statfs11 ( %#lx(%s), %#lx )",ARG1,(char *)ARG1,ARG2); ++ PRE_REG_READ2(long, "statfs11", const char *, path, struct statfs *, buf); ++ PRE_MEM_RASCIIZ( "statfs11(path)", ARG1 ); ++ PRE_MEM_WRITE( "statfs11(buf)", ARG2, sizeof(struct vki_statfs11) ); ++} ++POST(sys_statfs11) ++{ ++ POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs11) ); ++} + ++ + #if 0 + /* --------------------------------------------------------------------- + aio_* wrappers +@@ -1774,6 +1885,20 @@ + miscellaneous wrappers + ------------------------------------------------------------------ */ + ++PRE(sys_minherit) ++{ ++ PRINT("minherit ( %#lx, %lu, %ld )" , ARG1, ARG2, ARG3); ++ PRE_REG_READ3(long, "minherit", ++ void *, addr, vki_size_t, len, int, inherit); ++ if (ARG2 != 0) ++ PRE_MEM_WRITE( "minherit(addr)", ARG1,ARG2 ); ++} ++POST(sys_minherit) ++{ ++ if (ARG2 != 0) ++ POST_MEM_WRITE( ARG1, ARG2 ); ++} ++ + PRE(sys_munlockall) + { + *flags |= SfMayBlock; +@@ -2474,6 +2599,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) + { +@@ -3069,6 +3212,20 @@ + POST_MEM_WRITE( ARG3, sizeof(struct vki_stat) ); + } + ++PRE(sys_fstatat64) ++{ ++ PRINT("sys_fstatat ( %ld, %#lx(%s), %#lx )", ARG1,ARG2,(char*)ARG2,ARG3); ++ PRE_REG_READ3(long, "fstatat", ++ int, dfd, char *, file_name, struct stat *, buf); ++ PRE_MEM_RASCIIZ( "fstatat(file_name)", ARG2 ); ++ PRE_MEM_WRITE( "fstatat(buf)", ARG3, sizeof(struct vki_stat) ); ++} ++ ++POST(sys_fstatat64) ++{ ++ POST_MEM_WRITE( ARG3, sizeof(struct vki_stat) ); ++} ++ + PRE(sys_unlinkat) + { + *flags |= SfMayBlock; +@@ -3374,7 +3531,7 @@ + unsigned int, fd, unsigned int, request, unsigned long, arg); + + /* On FreeBSD, ALL ioctl's are IOR/IOW encoded. Just use the default decoder */ +- if (VG_(strstr)(VG_(clo_sim_hints), "lax-ioctls") != NULL) { ++ if (SimHintiS(SimHint_lax_ioctls, VG_(clo_sim_hints))) { + /* + * Be very lax about ioctl handling; the only + * assumption is that the size is correct. Doesn't +@@ -3655,7 +3812,7 @@ + PRE(sys_cpuset_getaffinity) + { + +- PRINT("sys_cpuset_getaffinity ( %ld, %ld, %lld, %llu, %#lx )", ARG1, ARG2, ++ PRINT("sys_cpuset_getaffinity ( %ld, %ld, %ld, %lu, %#lx )", ARG1, ARG2, + ARG3, ARG4, ARG5); + PRE_REG_READ5(int, "cpuset_getaffinity", + int, level, int, which, long, id, +@@ -3670,6 +3827,19 @@ + POST_MEM_WRITE( ARG5, ARG4 ); + } + ++PRE(sys_getrandom) ++{ ++ 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(cpu)", ARG1, ARG2 ); ++} ++ ++POST(sys_getrandom) ++{ ++ POST_MEM_WRITE( ARG1, ARG2 ); ++} ++ + #undef PRE + #undef POST + +@@ -3870,7 +4040,7 @@ + // BSDXY(__NR_nfssvc, sys_nfssvc), // 155 + + // 4.3 getdirentries 156 +- GENXY(__NR_statfs, sys_statfs), // 157 ++ BSDXY(__NR_statfs11, sys_statfs11), // 157 + GENXY(__NR_fstatfs, sys_fstatfs), // 158 + // nosys 159 + +@@ -3986,7 +4156,7 @@ + + // BSDXY(__NR_ntp_gettime, sys_ntp_gettime), // 248 + // nosys 249 +-// BSDXY(__NR_minherit, sys_minherit), // 250 ++ BSDXY(__NR_minherit, sys_minherit), // 250 + BSDX_(__NR_rfork, sys_rfork), // 251 + + GENXY(__NR_openbsd_poll, sys_poll), // 252 +@@ -4127,7 +4297,7 @@ + BSDXY(__NR_getresuid, sys_getresuid), // 360 + BSDXY(__NR_getresgid, sys_getresgid), // 361 + BSDX_(__NR_kqueue, sys_kqueue), // 362 +- BSDXY(__NR_kevent, sys_kevent), // 363 ++ BSDXY(__NR_kevent11, sys_kevent11), // 363 + + // nosys 364 + // nosys 365 +@@ -4167,7 +4337,7 @@ + BSDXY(__NR_uuidgen, sys_uuidgen), // 392 + BSDXY(__NR_sendfile, sys_sendfile), // 393 + // mac_syscall 394 +- BSDXY(__NR_getfsstat, sys_getfsstat), // 395 ++ BSDXY(__NR_getfsstat11, sys_getfsstat11), // 395 + + BSDXY(__NR_statfs6, sys_statfs6), // 396 + BSDXY(__NR_fstatfs6, sys_fstatfs6), // 397 +@@ -4210,7 +4380,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 + +@@ -4309,6 +4479,17 @@ + BSDXY(__NR_shmctl, sys_shmctl), // 512 + + BSDXY(__NR_pipe2, sys_pipe2), // 542 ++ ++ // ino64 ++ BSDXY(__NR_fstat64, sys_fstat64), // 551 ++ BSDXY(__NR_fstatat64, sys_fstatat64), // 552 ++ BSDXY(__NR_getdirentries64, sys_getdirentries64), // 554 ++ GENXY(__NR_statfs, sys_statfs), // 555 ++ GENXY(__NR_fstatfs64, sys_fstatfs), // 556 ++ BSDXY(__NR_getfsstat, sys_getfsstat), // 557 ++ ++ BSDXY(__NR_kevent, sys_kevent), // 560 ++ BSDXY(__NR_getrandom, sys_getrandom), // 563 + + BSDX_(__NR_fake_sigreturn, sys_fake_sigreturn), // 1000, fake sigreturn + Index: devel/valgrind/files/patch-include__vki__vki-freebsd.h =================================================================== --- devel/valgrind/files/patch-include__vki__vki-freebsd.h (revision 496099) +++ devel/valgrind/files/patch-include__vki__vki-freebsd.h (working copy) @@ -1,7 +1,53 @@ ---- include/vki/vki-freebsd.h.orig 2015-01-26 16:17:32.000000000 -0400 -+++ include/vki/vki-freebsd.h 2015-08-31 04:55:29.139189000 -0300 -@@ -684,6 +684,7 @@ +--- include/vki/vki-freebsd.h.orig 2016-01-13 22:20:20.000000000 +0300 ++++ include/vki/vki-freebsd.h 2019-03-17 13:06:51.978881000 +0300 +@@ -367,7 +367,45 @@ + unsigned int :(8 / 2) * (16 - (int)sizeof(struct vki_timespec)); + }; ++/* FreeBSD 11.x stat */ ++/* struct vki_stat_freebsd11 { TODO } */ + ++/* FreeBSD 12.x stat */ ++struct vki_stat64 { ++ vki_dev_t st_dev; ++ vki_ino_t st_ino; ++ vki_nlink_t st_nlink; ++ vki_mode_t st_mode; ++ vki_int16_t st_padding0; ++ vki_uid_t st_uid; ++ vki_gid_t st_gid; ++ vki_int32_t st_padding1; ++ vki_dev_t st_rdev; ++#if defined(VGA_x86) ++ vki_int32_t st_atim_ext; ++#endif ++ struct vki_timespec st_atim; ++#if defined(VGA_x86) ++ vki_int32_t st_mtim_ext; ++#endif ++ struct vki_timespec st_mtim; ++#if defined(VGA_x86) ++ vki_int32_t st_ctim_ext; ++#endif ++ struct vki_timespec st_ctim; ++#if defined(VGA_x86) ++ vki_int32_t st_btim_ext; ++#endif ++ struct vki_timespec st_birthtim; ++ ++ vki_off_t st_size; ++ vki_blkcnt_t st_blocks; ++ vki_blksize_t st_blksize; ++ vki_fflags_t st_flags; ++ vki_uint64_t st_gen; ++ vki_uint64_t st_spare[10]; ++}; ++ + //---------------------------------------------------------------------- + // From linux-2.6.8.1/include/linux/sched.h + //---------------------------------------------------------------------- +@@ -684,6 +722,7 @@ + #define VKI_SOCK_STREAM 1 +#include @@ -8,24 +54,93 @@ #include #define VKI_TCP_NODELAY TCP_NODELAY -@@ -1888,11 +1889,23 @@ +@@ -888,7 +927,8 @@ + #define VKI_OMFSNAMELEN 16 + #define VKI_OMNAMELEN (88 - 2 * sizeof(long)) + #define VKI_MFSNAMELEN 16 +-#define VKI_MNAMELEN 88 ++#define VKI_MNAMELEN11 88 ++#define VKI_MNAMELEN 1024 + + struct vki_statfs4 { + long f_spare2; +@@ -915,6 +955,31 @@ + long f_spare[2]; + }; + ++struct vki_statfs11 { ++ vki_uint32_t f_version; ++ vki_uint32_t f_type; ++ vki_uint64_t f_flags; ++ vki_uint64_t f_bsize; ++ vki_uint64_t f_iosize; ++ vki_uint64_t f_blocks; ++ vki_uint64_t f_bfree; ++ vki_int64_t f_bavail; ++ vki_uint64_t f_files; ++ vki_int64_t f_ffree; ++ vki_uint64_t f_syncwrites; ++ vki_uint64_t f_asyncwrites; ++ vki_uint64_t f_syncreads; ++ vki_uint64_t f_asyncreads; ++ vki_uint64_t f_spare[10]; ++ vki_uint32_t f_namemax; ++ vki_uid_t f_owner; ++ vki_fsid_t f_fsid; ++ char f_charspare[80]; ++ char f_fstypename[VKI_MFSNAMELEN]; ++ char f_mntfromnname[VKI_MNAMELEN11]; ++ char f_mntonname[VKI_MNAMELEN11]; ++}; ++ + struct vki_statfs { + vki_uint32_t f_version; + vki_uint32_t f_type; +@@ -1157,7 +1222,9 @@ + //---------------------------------------------------------------------- + // From sys/kevent.h + //---------------------------------------------------------------------- +-struct vki_kevent { ++ ++/* FreeBSD 11.x kevent */ ++struct vki_kevent11 { + vki_uintptr_t ident; + vki_int16_t filter; + vki_uint16_t flags; +@@ -1166,6 +1233,15 @@ + void *udata; + }; + ++struct vki_kevent { ++ vki_uintptr_t ident; ++ vki_int16_t filter; ++ vki_uint16_t flags; ++ vki_uint32_t fflags; ++ vki_int64_t data; ++ void *udata; ++ vki_uint64_t ext[4]; ++}; + + // QQQ sort + +@@ -1888,11 +1964,23 @@ #define VKI_I386_SET_FSBASE 8 #define VKI_I386_GET_GSBASE 9 #define VKI_I386_SET_GSBASE 10 -+#define VKI_I386_SET_XFPUSTATE 11 ++#define VKI_I386_SET_XFPUSTATE 11 #define VKI_AMD64_GET_FSBASE 128 #define VKI_AMD64_SET_FSBASE 129 #define VKI_AMD64_GET_GSBASE 130 #define VKI_AMD64_SET_GSBASE 131 -+#define VKI_AMD64_GET_XFPUSTATE 132 ++#define VKI_AMD64_GET_XFPUSTATE 132 + -+typedef struct vki_i386_get_xfpustate { ++struct vki_i386_get_xfpustate { + unsigned int addr; + int len; +}; + -+typedef struct vki_amd64_get_xfpustate { ++struct vki_amd64_get_xfpustate { + void *addr; + int len; +}; Index: devel/valgrind/files/patch-include_vki_vki-scnums-freebsd.h =================================================================== --- devel/valgrind/files/patch-include_vki_vki-scnums-freebsd.h (nonexistent) +++ devel/valgrind/files/patch-include_vki_vki-scnums-freebsd.h (working copy) @@ -0,0 +1,44 @@ +--- include/vki/vki-scnums-freebsd.h.orig 2016-01-13 22:20:20.000000000 +0300 ++++ include/vki/vki-scnums-freebsd.h 2019-03-17 13:06:51.980012000 +0300 +@@ -138,7 +138,7 @@ + #define __NR_setsid 147 + #define __NR_quotactl 148 + #define __NR_nfssvc 155 +-#define __NR_statfs 157 ++#define __NR_statfs11 157 + #define __NR_fstatfs 158 + #define __NR_lgetfh 160 + #define __NR_getfh 161 +@@ -275,7 +275,7 @@ + #define __NR_getresuid 360 + #define __NR_getresgid 361 + #define __NR_kqueue 362 +-#define __NR_kevent 363 ++#define __NR_kevent11 363 + #define __NR_extattr_set_fd 371 + #define __NR_extattr_get_fd 372 + #define __NR_extattr_delete_fd 373 +@@ -299,7 +299,7 @@ + #define __NR_uuidgen 392 + #define __NR_sendfile 393 + #define __NR_mac_syscall 394 +-#define __NR_getfsstat 395 ++#define __NR_getfsstat11 395 + #define __NR_statfs6 396 + #define __NR_fstatfs6 397 + #define __NR_fhstatfs6 398 +@@ -408,6 +408,14 @@ + #define __NR___semctl 510 + #define __NR_shmctl 512 + #define __NR_pipe2 542 ++#define __NR_fstat64 551 ++#define __NR_fstatat64 552 ++#define __NR_getdirentries64 554 ++#define __NR_statfs 555 ++#define __NR_fstatfs64 556 ++#define __NR_getfsstat 557 ++#define __NR_kevent 560 ++#define __NR_getrandom 563 + + #define __NR_fake_sigreturn 1000 +