Index: head/devel/valgrind/Makefile =================================================================== --- head/devel/valgrind/Makefile (revision 493760) +++ head/devel/valgrind/Makefile (revision 493761) @@ -1,98 +1,98 @@ # Created by: Simon Barner # $FreeBSD$ PORTNAME= valgrind PORTVERSION= 3.10.1.20160113 DISTVERSIONPREFIX= freebsd- -PORTREVISION= 6 +PORTREVISION= 7 PORTEPOCH= 1 CATEGORIES= devel MASTER_SITES= https://bitbucket.org/${BB_ACCOUNT}/${BB_PROJECT}/get/${BB_COMMIT}.tar.gz?dummy=/ \ http://mirror.shatow.net/freebsd/${PORTNAME}/ MAINTAINER= bdrewery@FreeBSD.org COMMENT= Memory debugging and profiling tool BB_COMMIT= ce1acb28953f BB_ACCOUNT= stass BB_PROJECT= valgrind-freebsd LICENSE= GPLv2 CONFLICTS= valgrind-devel-[0-9]* ONLY_FOR_ARCHS= i386 amd64 LIB32_PATH?= ${DESTDIR}/usr/lib32/libc.so OPTIONS_DEFINE= DOCS MANPAGES MPI OPTIONS_DEFINE_amd64= 32BIT OPTIONS_DEFAULT= MANPAGES .if exists(${LIB32_PATH}) OPTIONS_DEFAULT_amd64= 32BIT .endif 32BIT_DESC= Enable debugging of 32-bit programs (requires lib32) MPI_DESC= Enable build of MPI wrappers DOCS_BUILD_DEPENDS= docbook-xsl>=0:textproc/docbook-xsl \ xsltproc:textproc/libxslt MANPAGES_BUILD_DEPENDS= docbook-xsl>=0:textproc/docbook-xsl \ xsltproc:textproc/libxslt MPI_LIB_DEPENDS= libmpich.so:net/mpich OPTIONS_SUB= yes USES= pathfix pkgconfig gmake perl5 shebangfix autoreconf USE_PERL5= build GNU_CONFIGURE= yes USE_LDCONFIG= yes SHEBANG_FILES= callgrind/callgrind_annotate.in callgrind/callgrind_control.in 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} CONFIGURE_ENV+= ac_cv_path_PERL=${PERL} .include .if ${OSVERSION} > 1200030 EXTRA_PATCHES+= ${FILESDIR}/extra-patch-ino64:-p1 .endif .if ${ARCH} == "amd64" PLIST_SUB+= AMD64="" ARCH=amd64 . if !${PORT_OPTIONS:M32BIT} CONFIGURE_ARGS+= --enable-only64bit PLIST_SUB+= X86="@comment " . else . if !exists(${LIB32_PATH}) IGNORE=The lib32 distribution was not found. Please install the lib32\ distribution or run 'make config' and uncheck 32BIT option . endif PLIST_SUB+= X86="" . endif .else PLIST_SUB+= X86="" ARCH=x86 PLIST_SUB+= AMD64="@comment " .endif .if !${PORT_OPTIONS:MDOCS} post-patch: @${RM} -r ${WRKSRC}/docs/html .endif post-build: .if ${PORT_OPTIONS:MMANPAGES} cd ${WRKSRC}/docs && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} man-pages .endif .if ${PORT_OPTIONS:MDOCS} cd ${WRKSRC}/docs && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} html-docs .endif .include Index: head/devel/valgrind/files/extra-patch-ino64 =================================================================== --- head/devel/valgrind/files/extra-patch-ino64 (revision 493760) +++ head/devel/valgrind/files/extra-patch-ino64 (revision 493761) @@ -1,241 +1,239 @@ 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 | 56 +++++++++++++++++++++++++ + coregrind/m_syswrap/syswrap-freebsd.c | 65 ++++++++++++++++++++++ + include/vki/vki-freebsd.h | 54 ++++++++++++++++++ include/vki/vki-scnums-freebsd.h | 4 ++ - 4 files changed, 129 insertions(+) + 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 stat *, buf); ++ 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..f20833a 100644 +index aee453e..318a207 100644 --- a/include/vki/vki-freebsd.h +++ b/include/vki/vki-freebsd.h -@@ -367,6 +367,38 @@ struct vki_stat { +@@ -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]; -+// struct vki_timespec st_birthtimespec; -+// unsigned int :(8 / 2) * (16 - (int)sizeof(struct vki_timespec)); -+// unsigned int :(8 / 2) * (16 - (int)sizeof(struct vki_timespec)); +}; //---------------------------------------------------------------------- // From linux-2.6.8.1/include/linux/sched.h -@@ -941,6 +973,30 @@ struct vki_statfs { +@@ -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: head/devel/valgrind/files/patch-coregrind-m_debuglog.c =================================================================== --- head/devel/valgrind/files/patch-coregrind-m_debuglog.c (nonexistent) +++ head/devel/valgrind/files/patch-coregrind-m_debuglog.c (revision 493761) @@ -0,0 +1,13 @@ +--- 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 @@ + "popq %%r15\n" /* restore r15 */ + "addq $256, %%rsp\n" /* restore stack ptr */ + : /*wr*/ +- : /*rd*/ "g" (block) +- : /*trash*/ "rax", "rdi", "rsi", "rdx", "memory", "cc" ++ : /*rd*/ "r" (block) ++ : /*trash*/ "rax", "rdi", "rsi", "rdx", "memory", "cc", "rcx", "r11" + ); + if (block[0] < 0) + block[0] = -1; Property changes on: head/devel/valgrind/files/patch-coregrind-m_debuglog.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property