View | Details | Raw Unified | Return to bug 234631 | Differences between
and this patch

Collapse All | Expand All

(-)devel/valgrind/Makefile (-11 / +2 lines)
Lines 4-10 Link Here
4
PORTNAME=	valgrind
4
PORTNAME=	valgrind
5
PORTVERSION=	3.10.1.20160113
5
PORTVERSION=	3.10.1.20160113
6
DISTVERSIONPREFIX=	freebsd-
6
DISTVERSIONPREFIX=	freebsd-
7
PORTREVISION=	7
7
PORTREVISION=	8
8
PORTEPOCH=	1
8
PORTEPOCH=	1
9
CATEGORIES=	devel
9
CATEGORIES=	devel
10
MASTER_SITES=	https://bitbucket.org/${BB_ACCOUNT}/${BB_PROJECT}/get/${BB_COMMIT}.tar.gz?dummy=/ \
10
MASTER_SITES=	https://bitbucket.org/${BB_ACCOUNT}/${BB_PROJECT}/get/${BB_COMMIT}.tar.gz?dummy=/ \
Lines 46-58 Link Here
46
GNU_CONFIGURE=	yes
46
GNU_CONFIGURE=	yes
47
USE_LDCONFIG=	yes
47
USE_LDCONFIG=	yes
48
SHEBANG_FILES=	callgrind/callgrind_annotate.in callgrind/callgrind_control.in
48
SHEBANG_FILES=	callgrind/callgrind_annotate.in callgrind/callgrind_control.in
49
CFLAGS+=	-mstack-alignment=8
49
50
50
EXTRA_PATCHES=	\
51
		${FILESDIR}/accept4_syscall.patch:-p1 \
52
		${FILESDIR}/jail_syscalls.patch:-p1 \
53
		${FILESDIR}/kldload_syscalls.patch:-p1 \
54
		${FILESDIR}/missing_fcntls.patch:-p1
55
56
PORTDOCS=	html
51
PORTDOCS=	html
57
52
58
WRKSRC=		${WRKDIR}/${BB_ACCOUNT}-${BB_PROJECT}-${BB_COMMIT}
53
WRKSRC=		${WRKDIR}/${BB_ACCOUNT}-${BB_PROJECT}-${BB_COMMIT}
Lines 61-70 Link Here
61
56
62
.include <bsd.port.options.mk>
57
.include <bsd.port.options.mk>
63
58
64
.if ${OSVERSION} > 1200030
65
EXTRA_PATCHES+=	${FILESDIR}/extra-patch-ino64:-p1
66
.endif
67
68
.if ${ARCH} == "amd64"
59
.if ${ARCH} == "amd64"
69
PLIST_SUB+=	AMD64="" ARCH=amd64
60
PLIST_SUB+=	AMD64="" ARCH=amd64
70
. if !${PORT_OPTIONS:M32BIT}
61
. if !${PORT_OPTIONS:M32BIT}
(-)devel/valgrind/files/accept4_syscall.patch (-56 lines)
Lines 1-56 Link Here
1
# HG changeset patch
2
# User Bitbucket <noreply@bitbucket.org>
3
# Date 0 0
4
# Node ID af5523fe25247f537884116bd37e8ce171ba837e
5
# Parent  ce1acb28953fd6928ccb8f9511e374eab66e8625
6
# Parent  22cf2727f838e9f5efaeba377341c3807d74dbdb
7
Merge preview of source (22cf2727f838e9f5efaeba377341c3807d74dbdb) to destination (ce1acb28953fd6928ccb8f9511e374eab66e8625).
8
9
diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r af5523fe25247f537884116bd37e8ce171ba837e coregrind/m_syswrap/syswrap-freebsd.c
10
--- a/coregrind/m_syswrap/syswrap-freebsd.c
11
+++ b/coregrind/m_syswrap/syswrap-freebsd.c
12
@@ -480,6 +480,23 @@
13
    SET_STATUS_from_SysRes(r);
14
 }
15
 
16
+PRE(sys_accept4)
17
+{
18
+   *flags |= SfMayBlock;
19
+   PRINT("sys_accept4 ( %ld, %#lx, %ld, %ld)",ARG1,ARG2,ARG3,ARG4);
20
+   PRE_REG_READ4(long, "accept4",
21
+                 int, s, struct sockaddr *, addr, int, *addrlen, int, flags);
22
+   ML_(generic_PRE_sys_accept)(tid, ARG1,ARG2,ARG3);
23
+}
24
+POST(sys_accept4)
25
+{
26
+   SysRes r;
27
+   vg_assert(SUCCESS);
28
+   r = ML_(generic_POST_sys_accept)(tid, VG_(mk_SysRes_Success)(RES),
29
+                                         ARG1,ARG2,ARG3);
30
+   SET_STATUS_from_SysRes(r);
31
+}
32
+
33
 PRE(sys_sendto)
34
 {
35
    *flags |= SfMayBlock;
36
@@ -4307,7 +4324,8 @@
37
 
38
    BSDXY(__NR___semctl,			sys___semctl),			// 510
39
    BSDXY(__NR_shmctl,			sys_shmctl),			// 512
40
-
41
+   
42
+   BSDXY(__NR_accept4,           sys_accept4),            //541
43
    BSDXY(__NR_pipe2,			sys_pipe2),			// 542
44
 
45
    BSDX_(__NR_fake_sigreturn,		sys_fake_sigreturn),		// 1000, fake sigreturn
46
diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r af5523fe25247f537884116bd37e8ce171ba837e include/vki/vki-scnums-freebsd.h
47
--- a/include/vki/vki-scnums-freebsd.h
48
+++ b/include/vki/vki-scnums-freebsd.h
49
@@ -407,6 +407,7 @@
50
 #define	__NR_posix_openpt	504
51
 #define	__NR___semctl		510
52
 #define	__NR_shmctl		512
53
+#define __NR_accept4		541
54
 #define	__NR_pipe2		542
55
 
56
 #define __NR_fake_sigreturn	1000
(-)devel/valgrind/files/extra-patch-ino64 (-239 lines)
Lines 1-239 Link Here
1
From 6aaeefab2490d56743ec49d0e20d3fd6ff45fb55 Mon Sep 17 00:00:00 2001
2
From: Roman Bogorodskiy <bogorodskiy@gmail.com>
3
Date: Sat, 9 Sep 2017 18:27:15 +0400
4
Subject: [PATCH v2] ino64 support
5
6
---
7
 coregrind/m_syswrap/priv_syswrap-freebsd.h |  4 ++
8
 coregrind/m_syswrap/syswrap-freebsd.c      | 65 ++++++++++++++++++++++
9
 include/vki/vki-freebsd.h                  | 54 ++++++++++++++++++
10
 include/vki/vki-scnums-freebsd.h           |  4 ++
11
 4 files changed, 127 insertions(+)
12
13
diff --git a/coregrind/m_syswrap/priv_syswrap-freebsd.h b/coregrind/m_syswrap/priv_syswrap-freebsd.h
14
index 63d122f..715ad48 100644
15
--- a/coregrind/m_syswrap/priv_syswrap-freebsd.h
16
+++ b/coregrind/m_syswrap/priv_syswrap-freebsd.h
17
@@ -97,10 +97,12 @@ DECL_TEMPLATE(freebsd, sys_setegid);
18
 DECL_TEMPLATE(freebsd, sys_seteuid);
19
 DECL_TEMPLATE(freebsd, sys_stat);
20
 DECL_TEMPLATE(freebsd, sys_fstat);
21
+DECL_TEMPLATE(freebsd, sys_fstat64);
22
 DECL_TEMPLATE(freebsd, sys_lstat);
23
 DECL_TEMPLATE(freebsd, sys_pathconf);
24
 DECL_TEMPLATE(freebsd, sys_fpathconf);
25
 DECL_TEMPLATE(freebsd, sys_getdirentries);
26
+DECL_TEMPLATE(freebsd, sys_getdirentries64);
27
 DECL_TEMPLATE(freebsd, sys_mmap);
28
 DECL_TEMPLATE(freebsd, sys___syscall);
29
 DECL_TEMPLATE(freebsd, sys_lseek);
30
@@ -208,6 +210,7 @@ DECL_TEMPLATE(freebsd, sys_kevent);
31
 DECL_TEMPLATE(freebsd, sys_sendfile);
32
 DECL_TEMPLATE(freebsd, sys_statfs6);
33
 DECL_TEMPLATE(freebsd, sys_fstatfs6);
34
+DECL_TEMPLATE(freebsd, sys_fstatfs64);
35
 DECL_TEMPLATE(freebsd, sys_fhstatfs6);
36
 DECL_TEMPLATE(freebsd, sys_thr_exit);
37
 DECL_TEMPLATE(freebsd, sys_thr_self);
38
@@ -251,6 +254,7 @@ DECL_TEMPLATE(freebsd, sys_fchmodat);
39
 DECL_TEMPLATE(freebsd, sys_fchownat);
40
 DECL_TEMPLATE(freebsd, sys_fexecve);
41
 DECL_TEMPLATE(freebsd, sys_fstatat);
42
+DECL_TEMPLATE(freebsd, sys_fstatat64);
43
 DECL_TEMPLATE(freebsd, sys_futimesat);
44
 DECL_TEMPLATE(freebsd, sys_linkat);
45
 DECL_TEMPLATE(freebsd, sys_mkdirat);
46
diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c
47
index bf6b1f1..978e98e 100644
48
--- a/coregrind/m_syswrap/syswrap-freebsd.c
49
+++ b/coregrind/m_syswrap/syswrap-freebsd.c
50
@@ -885,6 +885,18 @@ POST(sys_fstat)
51
    POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) );
52
 }
53
 
54
+PRE(sys_fstat64)
55
+{
56
+   PRINT("sys_fstat64 ( %ld, %#lx )", ARG1, ARG2);
57
+   PRE_REG_READ2(long, "fstat", unsigned long, fd, struct stat64 *, buf);
58
+   PRE_MEM_WRITE( "fstat(buf)", ARG2, sizeof(struct vki_stat64) );
59
+}
60
+
61
+POST(sys_fstat64)
62
+{
63
+   POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) );
64
+}
65
+
66
 PRE(sys_pathconf)
67
 {
68
    PRINT("sys_pathconf ( %#lx(%s), %ld )",ARG1,(char *)ARG1,ARG2);
69
@@ -1029,6 +1041,26 @@ POST(sys_getdirentries)
70
    }
71
 }
72
 
73
+PRE(sys_getdirentries64)
74
+{
75
+   *flags |= SfMayBlock;
76
+   PRINT("sys_getdents ( %ld, %#lx, %ld )", ARG1,ARG2,ARG3);
77
+   PRE_REG_READ3(vki_ssize_t, "getdirentries",
78
+                 unsigned int, fd, struct dirent *, dirp,
79
+                 vki_size_t, count);
80
+   PRE_MEM_WRITE( "getdirentries(dirp)", ARG2, ARG3 );
81
+}
82
+
83
+POST(sys_getdirentries64)
84
+{
85
+   vg_assert(SUCCESS);
86
+   if (RES > 0) {
87
+      POST_MEM_WRITE( ARG2, RES );
88
+      if ( ARG4 != 0 )
89
+	 POST_MEM_WRITE( ARG4, sizeof (vki_off_t));
90
+   }
91
+}
92
+
93
 PRE(sys_seteuid)
94
 {
95
    PRINT("sys_seteuid ( %ld )", ARG1);
96
@@ -1251,6 +1283,19 @@ POST(sys_fstatfs6)
97
    POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs6) );
98
 }
99
 
100
+PRE(sys_fstatfs64)
101
+{
102
+   PRINT("sys_fstatfs64 ( %ld, %#lx )", ARG1, ARG2);
103
+   PRE_REG_READ2(long, "fstatfs6",
104
+                 unsigned int, fd, struct statfs *, buf);
105
+   PRE_MEM_WRITE( "fstatfs6(buf)", ARG2, sizeof(struct vki_statfs64) );
106
+}
107
+
108
+POST(sys_fstatfs64)
109
+{
110
+   POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs64) );
111
+}
112
+
113
 PRE(sys_statfs6)
114
 {
115
    PRINT("sys_statfs6 ( %#lx(%s), %#lx )",ARG1,(char *)ARG1,ARG2);
116
@@ -3132,6 +3177,20 @@ POST(sys_fstatat)
117
    POST_MEM_WRITE( ARG3, sizeof(struct vki_stat) );
118
 }
119
 
120
+PRE(sys_fstatat64)
121
+{
122
+   PRINT("sys_fstatat ( %ld, %#lx(%s), %#lx )", ARG1,ARG2,(char*)ARG2,ARG3);
123
+   PRE_REG_READ3(long, "fstatat",
124
+                 int, dfd, char *, file_name, struct stat *, buf);
125
+   PRE_MEM_RASCIIZ( "fstatat(file_name)", ARG2 );
126
+   PRE_MEM_WRITE( "fstatat(buf)", ARG3, sizeof(struct vki_stat) );
127
+}
128
+
129
+POST(sys_fstatat64)
130
+{
131
+   POST_MEM_WRITE( ARG3, sizeof(struct vki_stat) );
132
+}
133
+
134
 PRE(sys_unlinkat)
135
 {
136
    *flags |= SfMayBlock;
137
@@ -4427,6 +4486,12 @@ const SyscallTableEntry ML_(syscall_table)[] = {
138
    BSDXY(__NR_accept4,           sys_accept4),            //541
139
    BSDXY(__NR_pipe2,			sys_pipe2),			// 542
140
 
141
+   // ino64
142
+   BSDXY(__NR_fstat64,			sys_fstat64),			// 551
143
+   BSDXY(__NR_fstatat64,		sys_fstatat64),			// 552
144
+   BSDXY(__NR_getdirentries64,		sys_getdirentries64),		// 554
145
+   GENXY(__NR_fstatfs64,		sys_fstatfs),   		// 556
146
+
147
    BSDX_(__NR_fake_sigreturn,		sys_fake_sigreturn),		// 1000, fake sigreturn
148
 
149
 };
150
diff --git a/include/vki/vki-freebsd.h b/include/vki/vki-freebsd.h
151
index aee453e..318a207 100644
152
--- a/include/vki/vki-freebsd.h
153
+++ b/include/vki/vki-freebsd.h
154
@@ -367,6 +367,36 @@ struct vki_stat {
155
 	unsigned int :(8 / 2) * (16 - (int)sizeof(struct vki_timespec));
156
 };
157
 
158
+struct vki_stat64 {
159
+	vki_uint64_t	st_dev;
160
+	vki_uint64_t	st_ino;
161
+	vki_uint64_t	st_nlink;
162
+	vki_mode_t	st_mode;
163
+        vki_int16_t     st_padding0;
164
+	vki_uid_t	st_uid;
165
+	vki_gid_t	st_gid;
166
+        vki_int32_t     st_padding1;
167
+	vki_uint64_t	st_rdev;
168
+#if 0
169
+	struct vki_timespec	st_atimespec;
170
+	struct vki_timespec	st_mtimespec;
171
+	struct vki_timespec	st_ctimespec;
172
+#else
173
+	vki_time_t	st_atime;
174
+	long		st_atime_nsec;
175
+	vki_time_t	st_mtime;
176
+	long		st_mtime_nsec;
177
+	vki_time_t	st_ctime;
178
+	long		st_ctime_nsec;
179
+#endif
180
+	struct vki_timespec	st_birthtim;
181
+	vki_off_t	st_size;
182
+	vki_blkcnt_t	st_blocks;
183
+	vki_blksize_t	st_blksize;
184
+	vki_fflags_t	st_flags;
185
+	vki_uint64_t	st_gen;
186
+	vki_int64_t	st_spare[10];
187
+};
188
 
189
 //----------------------------------------------------------------------
190
 // From linux-2.6.8.1/include/linux/sched.h
191
@@ -941,6 +971,30 @@ struct vki_statfs {
192
 	char		f_mntonname[VKI_MNAMELEN];
193
 };
194
 
195
+struct vki_statfs64 {
196
+	vki_uint32_t	f_version;
197
+	vki_uint32_t	f_type;
198
+	vki_uint64_t	f_flags;
199
+	vki_uint64_t	f_bsize;
200
+	vki_uint64_t	f_iosize;
201
+	vki_uint64_t	f_blocks;
202
+	vki_uint64_t	f_bfree;
203
+	vki_int64_t	f_bavail;
204
+	vki_uint64_t	f_files;
205
+	vki_int64_t	f_ffree;
206
+	vki_uint64_t	f_syncwrites;
207
+	vki_uint64_t	f_asyncwrites;
208
+	vki_uint64_t	f_syncreads;
209
+	vki_uint64_t	f_asyncreads;
210
+	vki_uint64_t	f_spare[10];
211
+	vki_uint32_t	f_namemax;
212
+	vki_uid_t	f_owner;
213
+	vki_fsid_t	f_fsid;
214
+	char		f_charspare[80];
215
+	char		f_fstypename[VKI_MFSNAMELEN];
216
+	char		f_mntfromnname[VKI_MNAMELEN];
217
+	char		f_mntonname[VKI_MNAMELEN];
218
+};
219
 #define MAXFIDSZ        16
220
 
221
 struct vki_fid {
222
diff --git a/include/vki/vki-scnums-freebsd.h b/include/vki/vki-scnums-freebsd.h
223
index 605a42f..ffa241d 100644
224
--- a/include/vki/vki-scnums-freebsd.h
225
+++ b/include/vki/vki-scnums-freebsd.h
226
@@ -412,6 +412,10 @@
227
 #define	__NR_shmctl		512
228
 #define __NR_accept4		541
229
 #define	__NR_pipe2		542
230
+#define	__NR_fstat64		551
231
+#define	__NR_fstatat64		552
232
+#define	__NR_getdirentries64	554
233
+#define	__NR_fstatfs64		556
234
 
235
 #define __NR_fake_sigreturn	1000
236
 
237
-- 
238
2.14.1
239
(-)devel/valgrind/files/jail_syscalls.patch (-87 lines)
Lines 1-87 Link Here
1
# HG changeset patch
2
# User Bitbucket <noreply@bitbucket.org>
3
# Date 0 0
4
# Node ID 90c6097540f35e312d34340b916296130003c851
5
# Parent  ce1acb28953fd6928ccb8f9511e374eab66e8625
6
# Parent  5662e704b72c7ebb116f8478a4ff3847acc72fc6
7
Merge preview of source (5662e704b72c7ebb116f8478a4ff3847acc72fc6) to destination (ce1acb28953fd6928ccb8f9511e374eab66e8625).
8
9
diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r 90c6097540f35e312d34340b916296130003c851 coregrind/m_syswrap/syswrap-freebsd.c
10
--- a/coregrind/m_syswrap/syswrap-freebsd.c
11
+++ b/coregrind/m_syswrap/syswrap-freebsd.c
12
@@ -3670,6 +3670,42 @@
13
         POST_MEM_WRITE( ARG5, ARG4 );
14
 }
15
 
16
+PRE(sys_jail_get)
17
+{
18
+
19
+	PRINT("sys_jail_get ( %#lx, %lu, %ld )", ARG1, ARG2, ARG3);
20
+	PRE_REG_READ3(int, "jail_get", struct vki_iovec *, iov, unsigned int,
21
+		niov, int, flags);
22
+	PRE_MEM_WRITE("jail_get", ARG1, ARG2 * sizeof(struct vki_iovec));
23
+}
24
+
25
+POST(sys_jail_get)
26
+{
27
+	vg_assert(SUCCESS);
28
+	if (RES != -1)
29
+		POST_MEM_WRITE(ARG1, ARG2);
30
+}
31
+
32
+PRE(sys_jail_set)
33
+{
34
+	PRINT("sys_jail_set ( %#lx, %lu, %ld )", ARG1, ARG2, ARG3);
35
+	PRE_REG_READ3(int, "jail_set", struct vki_iovec *, iov, unsigned int,
36
+		niov, int, flags);
37
+	PRE_MEM_WRITE("jail_set", ARG1, ARG2 * sizeof(struct vki_iovec));
38
+}
39
+
40
+PRE(sys_jail_attach)
41
+{
42
+	PRINT("sys_jail_attach ( %ld )", ARG1);
43
+	PRE_REG_READ1(int, "jail_attach", int, jid);
44
+}
45
+
46
+PRE(sys_jail_remove)
47
+{
48
+	PRINT("sys_jail_remove ( %ld )", ARG1);
49
+	PRE_REG_READ1(int, "jail_remove", int, jid);
50
+}
51
+
52
 #undef PRE
53
 #undef POST
54
 
55
@@ -4219,7 +4255,7 @@
56
    BSDXY(__NR__umtx_lock,		sys__umtx_lock),		// 434
57
    BSDXY(__NR__umtx_unlock,		sys__umtx_unlock),		// 435
58
 
59
-   // jail_attach							   436
60
+   BSDX_(__NR_jail_attach,		sys_jail_attach),	// 436
61
    // extattr_list_fd							   437
62
    // extattr_list_file							   438
63
    // extattr_list_link							   439
64
@@ -4303,6 +4339,10 @@
65
    BSDX_(__NR_symlinkat,		sys_symlinkat),			// 502
66
    BSDX_(__NR_unlinkat,			sys_unlinkat),			// 503
67
 
68
+   BSDXY(__NR_jail_get,			sys_jail_get),			// 506
69
+   BSDX_(__NR_jail_set,			sys_jail_set),			// 507
70
+   BSDX_(__NR_jail_remove,		sys_jail_remove),		// 508
71
+
72
    // posix_openpt							   504
73
 
74
    BSDXY(__NR___semctl,			sys___semctl),			// 510
75
diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r 90c6097540f35e312d34340b916296130003c851 include/vki/vki-scnums-freebsd.h
76
--- a/include/vki/vki-scnums-freebsd.h
77
+++ b/include/vki/vki-scnums-freebsd.h
78
@@ -405,6 +405,9 @@
79
 #define	__NR_symlinkat		502
80
 #define	__NR_unlinkat		503
81
 #define	__NR_posix_openpt	504
82
+#define	__NR_jail_get		506
83
+#define	__NR_jail_set		507
84
+#define	__NR_jail_remove	508
85
 #define	__NR___semctl		510
86
 #define	__NR_shmctl		512
87
 #define	__NR_pipe2		542
(-)devel/valgrind/files/kldload_syscalls.patch (-127 lines)
Lines 1-127 Link Here
1
# HG changeset patch
2
# User Bitbucket <noreply@bitbucket.org>
3
# Date 0 0
4
# Node ID 7ecd33d57049211e1084fc5e8bf588da49088d75
5
# Parent  ce1acb28953fd6928ccb8f9511e374eab66e8625
6
# Parent  79bf8f58bec842a1aa94f4fff2e4884a6bb5378b
7
Merge preview of source (79bf8f58bec842a1aa94f4fff2e4884a6bb5378b) to destination (ce1acb28953fd6928ccb8f9511e374eab66e8625).
8
9
diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r 7ecd33d57049211e1084fc5e8bf588da49088d75 coregrind/m_syswrap/syswrap-freebsd.c
10
--- a/coregrind/m_syswrap/syswrap-freebsd.c
11
+++ b/coregrind/m_syswrap/syswrap-freebsd.c
12
@@ -1246,6 +1246,52 @@
13
    POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs6) );
14
 }
15
 
16
+/* ---------------------------------------------------------------------
17
+   kld* wrappers
18
+   ------------------------------------------------------------------ */
19
+
20
+PRE(sys_kldload)
21
+{
22
+   PRINT("sys_kldload ( %#lx(%s) )", ARG1, (char *)ARG1);
23
+   PRE_REG_READ1(int, "kldload", const char *, "file");
24
+
25
+   PRE_MEM_RASCIIZ( "kldload(file)", ARG1 );
26
+}
27
+
28
+PRE(sys_kldunload)
29
+{
30
+   PRINT("sys_kldunload ( %ld )", ARG1);
31
+   PRE_REG_READ1(int, "kldunload", int, "fileid");
32
+}
33
+
34
+PRE(sys_kldfind)
35
+{
36
+   PRINT("sys_kldfind ( %#lx(%s) )", ARG1, (char *)ARG1);
37
+   PRE_REG_READ1(int, "kldfind", const char *, "file");
38
+
39
+   PRE_MEM_RASCIIZ( "kldfind(file)", ARG1 );
40
+}
41
+
42
+PRE(sys_kldnext)
43
+{
44
+   PRINT("sys_kldnext ( %ld )", ARG1);
45
+   PRE_REG_READ1(int, "kldnext", int, "fileid");
46
+}
47
+
48
+PRE(sys_kldsym)
49
+{
50
+   PRINT("sys_kldsym ( %ld, %ld, %#lx )", ARG1,ARG2,ARG3 );
51
+   PRE_REG_READ3(int, "kldsym", int, "fileid", int, "command", void*, "data");
52
+   PRE_MEM_READ( "kldsym(data)", ARG3, sizeof(struct vki_kld_sym_lookup) );
53
+   struct vki_kld_sym_lookup *kslp = (struct vki_kld_sym_lookup *)ARG3;
54
+   PRE_MEM_RASCIIZ( "kldsym(data.symname)", (Addr)kslp->symname );
55
+}
56
+POST(sys_kldsym)
57
+{
58
+   struct vki_kld_sym_lookup *kslp = (struct vki_kld_sym_lookup *)ARG3;
59
+   POST_MEM_WRITE( (Addr)&kslp->symvalue, sizeof(kslp->symvalue) );
60
+   POST_MEM_WRITE( (Addr)&kslp->symsize, sizeof(kslp->symsize) );
61
+}
62
 
63
 #if 0
64
 /* ---------------------------------------------------------------------
65
@@ -3389,14 +3435,14 @@
66
 	    moans--;
67
 	    VG_(message)(Vg_UserMsg, 
68
 			 "Warning: noted but unhandled ioctl 0x%lx"
69
-			 " with no size/direction hints",
70
+			 " with no size/direction hints\n",
71
 			 ARG2); 
72
 	    VG_(message)(Vg_UserMsg, 
73
 			 "   This could cause spurious value errors"
74
-			 " to appear.");
75
+			 " to appear.\n");
76
 	    VG_(message)(Vg_UserMsg, 
77
 			 "   See README_MISSING_SYSCALL_OR_IOCTL for "
78
-			 "guidance on writing a proper wrapper." );
79
+			 "guidance on writing a proper wrapper.\n" );
80
 	 }
81
    } else {
82
 	 if ((dir & _VKI_IOC_WRITE) && size > 0)
83
@@ -4054,10 +4100,10 @@
84
 // BSDX_(__NR_modfnext,			sys_modfnext),			// 302
85
    BSDX_(__NR_modfind,			sys_modfind),			// 303
86
 
87
-// BSDX_(__NR_kldload,			sys_kldload),			// 304
88
-// BSDX_(__NR_kldunload,		sys_kldunload),			// 305
89
-// BSDX_(__NR_kldfind,			sys_kldfind),			// 306
90
-// BSDX_(__NR_kldnext,			sys_kldnext),			// 307
91
+   BSDX_(__NR_kldload,			sys_kldload),			// 304
92
+   BSDX_(__NR_kldunload,		sys_kldunload),			// 305
93
+   BSDX_(__NR_kldfind,			sys_kldfind),			// 306
94
+   BSDX_(__NR_kldnext,			sys_kldnext),			// 307
95
 
96
 // BSDXY(__NR_kldstat,			sys_kldstat),			// 308
97
 // BSDX_(__NR_kldfirstmod,		sys_kldfirstmod),		// 309
98
@@ -4095,7 +4141,7 @@
99
    BSDX_(__NR_utrace,			sys_utrace),			// 335
100
 
101
    // compat3 sendfile							   336
102
-// BSDXY(__NR_kldsym,			sys_kldsym),			// 337
103
+   BSDXY(__NR_kldsym,			sys_kldsym),			// 337
104
 // BSDX_(__NR_jail,			sys_jail),			// 338
105
    // unimpl pioctl							   339
106
 
107
diff -r ce1acb28953fd6928ccb8f9511e374eab66e8625 -r 7ecd33d57049211e1084fc5e8bf588da49088d75 include/vki/vki-freebsd.h
108
--- a/include/vki/vki-freebsd.h
109
+++ b/include/vki/vki-freebsd.h
110
@@ -2129,6 +2129,17 @@
111
 	void	*spare[3];
112
 };
113
 
114
+//----------------------------------------------------------------------
115
+// From sys/linker.h
116
+//----------------------------------------------------------------------
117
+
118
+struct vki_kld_sym_lookup {
119
+    int         version;        /* set to sizeof(struct kld_sym_lookup) */
120
+    char        *symname;       /* Symbol name we are looking up */
121
+    unsigned long symvalue;
122
+    vki_size_t  symsize;
123
+};
124
+
125
 /*--------------------------------------------------------------------*/
126
 /*--- end                                                          ---*/
127
 /*--------------------------------------------------------------------*/
(-)devel/valgrind/files/missing_fcntls.patch (-54 lines)
Lines 1-54 Link Here
1
diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c
2
--- a/coregrind/m_syswrap/syswrap-freebsd.c
3
+++ b/coregrind/m_syswrap/syswrap-freebsd.c
4
@@ -3278,9 +3278,12 @@ PRE(sys_fcntl)
5
 
6
    // These ones use ARG3 as "arg".
7
    case VKI_F_DUPFD:
8
+   case VKI_F_DUPFD_CLOEXEC:
9
    case VKI_F_SETFD:
10
    case VKI_F_SETFL:
11
    case VKI_F_SETOWN:
12
+   case VKI_F_READAHEAD:
13
+   case VKI_F_RDAHEAD:
14
       PRINT("sys_fcntl[ARG3=='arg'] ( %ld, %ld, %ld )", ARG1,ARG2,ARG3);
15
       PRE_REG_READ3(long, "fcntl",
16
                     unsigned int, fd, unsigned int, cmd, unsigned long, arg);
17
@@ -3300,6 +3303,7 @@ PRE(sys_fcntl)
18
 
19
    // This one uses ARG3 as "oldd" and ARG4 as "newd".
20
    case VKI_F_DUP2FD:
21
+   case VKI_F_DUP2FD_CLOEXEC:
22
       PRINT("sys_fcntl[ARG3=='oldd', ARG4=='newd'] ( %ld, %ld, %ld, %ld )",
23
          ARG1,ARG2,ARG3,ARG4);
24
       PRE_REG_READ4(long, "fcntl",
25
@@ -3339,6 +3343,15 @@ POST(sys_fcntl)
26
             ML_(record_fd_open_named)(tid, RES);
27
       }
28
    }
29
+   else if (ARG2 == VKI_F_DUPFD_CLOEXEC) {
30
+      if (!ML_(fd_allowed)(RES, "fcntl(DUPFD_CLOEXEC)", tid, True)) {
31
+         VG_(close)(RES);
32
+         SET_STATUS_Failure( VKI_EMFILE );
33
+      } else {
34
+         if (VG_(clo_track_fds))
35
+            ML_(record_fd_open_named)(tid, RES);
36
+      }
37
+   }
38
 }
39
 
40
 PRE(sys_ioctl)
41
diff --git a/include/vki/vki-freebsd.h b/include/vki/vki-freebsd.h
42
--- a/include/vki/vki-freebsd.h
43
+++ b/include/vki/vki-freebsd.h
44
@@ -1554,6 +1554,10 @@ struct vki_dirent {
45
 #define VKI_F_SETLK		12	/* set record locking information */
46
 #define VKI_F_SETLKW		13	/* F_SETLK; wait if blocked */
47
 #define VKI_F_SETLK_REMOTE	14	/* debugging support for remote locks */
48
+#define VKI_F_READAHEAD		15	/* read ahead */
49
+#define VKI_F_RDAHEAD		16	/* Darwin compatible read ahead */
50
+#define VKI_F_DUPFD_CLOEXEC	17	/* Like F_DUPFD, but FD_CLOEXEC is set */
51
+#define VKI_F_DUP2FD_CLOEXEC	18	/* Like F_DUP2FD, but FD_CLOEXEC is set */
52
 
53
 /* for F_[GET|SET]FL */
54
 #define VKI_FD_CLOEXEC	1	/* actually anything with low bit set goes */
(-)devel/valgrind/files/patch-configure.ac (-3 / +3 lines)
Lines 1-6 Link Here
1
--- configure.ac.orig	2016-01-13 19:20:20 UTC
1
--- configure.ac.orig	2016-01-13 22:20:20.000000000 +0300
2
+++ configure.ac
2
+++ configure.ac	2019-03-17 13:06:51.970389000 +0300
3
@@ -145,7 +145,19 @@
3
@@ -145,7 +145,19 @@ case "${is_clang}-${gcc_version}" in
4
      notclang-5.*)
4
      notclang-5.*)
5
 	AC_MSG_RESULT([ok (${gcc_version})])
5
 	AC_MSG_RESULT([ok (${gcc_version})])
6
 	;;
6
 	;;
(-)devel/valgrind/files/patch-coregrind-m_debuglog.c (-3 / +3 lines)
Lines 1-6 Link Here
1
--- coregrind/m_debuglog.c.orig	2019-01-08 21:35:12.953178000 +0400
1
--- coregrind/m_debuglog.c.orig	2016-01-13 22:20:20.000000000 +0300
2
+++ coregrind/m_debuglog.c	2019-01-08 21:36:10.940827000 +0400
2
+++ coregrind/m_debuglog.c	2019-03-17 13:06:51.971632000 +0300
3
@@ -482,8 +482,8 @@
3
@@ -482,8 +482,8 @@ static UInt local_sys_write_stderr ( HChar* buf, Int n
4
       "popq  %%r15\n"           /* restore r15 */
4
       "popq  %%r15\n"           /* restore r15 */
5
       "addq  $256, %%rsp\n"     /* restore stack ptr */
5
       "addq  $256, %%rsp\n"     /* restore stack ptr */
6
       : /*wr*/
6
       : /*wr*/
(-)devel/valgrind/files/patch-coregrind-m_syswrap-syswrap-amd64-freebsd.c (-3 / +3 lines)
Lines 1-6 Link Here
1
--- coregrind/m_syswrap/syswrap-amd64-freebsd.c.orig	2015-01-26 16:17:32.000000000 -0400
1
--- coregrind/m_syswrap/syswrap-amd64-freebsd.c.orig	2016-01-13 22:20:20.000000000 +0300
2
+++ coregrind/m_syswrap/syswrap-amd64-freebsd.c	2015-08-31 09:51:17.506396000 -0300
2
+++ coregrind/m_syswrap/syswrap-amd64-freebsd.c	2019-03-17 13:06:51.972824000 +0300
3
@@ -691,6 +691,27 @@
3
@@ -691,6 +691,27 @@ PRE(sys_sysarch)
4
       SET_STATUS_Success2( tst->arch.vex.guest_FS_ZERO, tst->arch.vex.guest_RDX );
4
       SET_STATUS_Success2( tst->arch.vex.guest_FS_ZERO, tst->arch.vex.guest_RDX );
5
       POST_MEM_WRITE( ARG2, sizeof(void *) );
5
       POST_MEM_WRITE( ARG2, sizeof(void *) );
6
       break;
6
       break;
(-)devel/valgrind/files/patch-coregrind_m_libcfile.c (+24 lines)
Line 0 Link Here
1
--- coregrind/m_libcfile.c.orig	2016-01-13 22:20:20.000000000 +0300
2
+++ coregrind/m_libcfile.c	2019-03-17 13:06:51.974161000 +0300
3
@@ -255,11 +255,7 @@ Int VG_(pipe) ( Int fd[2] )
4
    SysRes res = VG_(do_syscall1)(__NR_pipe, (UWord)fd);
5
    return sr_isError(res) ? -1 : 0;
6
 #  elif defined(VGO_freebsd)
7
-   SysRes res = VG_(do_syscall0)(__NR_pipe);
8
-   if (!sr_isError(res)) {
9
-      fd[0] = sr_Res(res);
10
-      fd[1] = sr_ResHI(res);
11
-   }
12
+   SysRes res = VG_(do_syscall2)(__NR_pipe2, (UWord)fd, 0);
13
    return sr_isError(res) ? -1 : 0;
14
 #  elif defined(VGO_darwin)
15
    /* __NR_pipe is UX64, so produces a double-word result */
16
@@ -369,7 +365,7 @@ Int VG_(fstat) ( Int fd, struct vg_stat* vgbuf )
17
 #  if defined(VGO_linux)  ||  defined(VGO_darwin)  ||  defined(VGO_freebsd)
18
    /* First try with fstat64.  If that doesn't work out, fall back to
19
       the vanilla version. */
20
-#  if defined(__NR_fstat64)
21
+#  if defined(__NR_fstat64) && !defined(VGO_freebsd)
22
    { struct vki_stat64 buf64;
23
      res = VG_(do_syscall2)(__NR_fstat64, (UWord)fd, (UWord)&buf64);
24
      if (!(sr_isError(res) && sr_Err(res) == VKI_ENOSYS)) {
(-)devel/valgrind/files/patch-coregrind_m_syswrap_priv_syswrap-freebsd.h (+69 lines)
Line 0 Link Here
1
--- coregrind/m_syswrap/priv_syswrap-freebsd.h.orig	2016-01-13 22:20:20.000000000 +0300
2
+++ coregrind/m_syswrap/priv_syswrap-freebsd.h	2019-03-17 13:06:51.975479000 +0300
3
@@ -46,6 +46,7 @@
4
 DECL_TEMPLATE(freebsd, sys_syscall);
5
 DECL_TEMPLATE(freebsd, sys_exit);
6
 DECL_TEMPLATE(freebsd, sys_getfsstat4);
7
+DECL_TEMPLATE(freebsd, sys_getfsstat11);
8
 DECL_TEMPLATE(freebsd, sys_getfsstat);
9
 DECL_TEMPLATE(freebsd, sys_mount);
10
 DECL_TEMPLATE(freebsd, sys_unmount);
11
@@ -54,6 +55,7 @@
12
 DECL_TEMPLATE(freebsd, sys_sendmsg);
13
 DECL_TEMPLATE(freebsd, sys_recvfrom);
14
 DECL_TEMPLATE(freebsd, sys_accept);
15
+DECL_TEMPLATE(freebsd, sys_accept4);
16
 DECL_TEMPLATE(freebsd, sys_getpeername);
17
 DECL_TEMPLATE(freebsd, sys_getsockname);
18
 DECL_TEMPLATE(freebsd, sys_chflags);
19
@@ -97,10 +99,13 @@
20
 DECL_TEMPLATE(freebsd, sys_seteuid);
21
 DECL_TEMPLATE(freebsd, sys_stat);
22
 DECL_TEMPLATE(freebsd, sys_fstat);
23
+DECL_TEMPLATE(freebsd, sys_fstat64);
24
 DECL_TEMPLATE(freebsd, sys_lstat);
25
 DECL_TEMPLATE(freebsd, sys_pathconf);
26
 DECL_TEMPLATE(freebsd, sys_fpathconf);
27
 DECL_TEMPLATE(freebsd, sys_getdirentries);
28
+DECL_TEMPLATE(freebsd, sys_getdirentries64);
29
+DECL_TEMPLATE(freebsd, sys_getrandom);
30
 DECL_TEMPLATE(freebsd, sys_mmap);
31
 DECL_TEMPLATE(freebsd, sys___syscall);
32
 DECL_TEMPLATE(freebsd, sys_lseek);
33
@@ -173,6 +178,10 @@
34
 DECL_TEMPLATE(freebsd, sys_utrace);
35
 DECL_TEMPLATE(freebsd, sys_kldsym);
36
 DECL_TEMPLATE(freebsd, sys_jail);
37
+DECL_TEMPLATE(freebsd, sys_jail_get);
38
+DECL_TEMPLATE(freebsd, sys_jail_set);
39
+DECL_TEMPLATE(freebsd, sys_jail_attach);
40
+DECL_TEMPLATE(freebsd, sys_jail_remove);
41
 DECL_TEMPLATE(freebsd, sys_sigprocmask);
42
 DECL_TEMPLATE(freebsd, sys_sigsuspend);
43
 DECL_TEMPLATE(freebsd, sys_sigaction);
44
@@ -181,6 +190,7 @@
45
 DECL_TEMPLATE(freebsd, sys_fake_sigreturn);
46
 DECL_TEMPLATE(freebsd, sys_sigtimedwait);
47
 DECL_TEMPLATE(freebsd, sys_sigwaitinfo);
48
+DECL_TEMPLATE(freebsd, sys_sigwait);
49
 DECL_TEMPLATE(freebsd, sys_getcontext);
50
 DECL_TEMPLATE(freebsd, sys_setcontext);
51
 DECL_TEMPLATE(freebsd, sys_swapcontext);
52
@@ -207,7 +217,9 @@
53
 DECL_TEMPLATE(freebsd, sys_kevent);
54
 DECL_TEMPLATE(freebsd, sys_sendfile);
55
 DECL_TEMPLATE(freebsd, sys_statfs6);
56
+DECL_TEMPLATE(freebsd, sys_statfs11);
57
 DECL_TEMPLATE(freebsd, sys_fstatfs6);
58
+DECL_TEMPLATE(freebsd, sys_fstatfs64);
59
 DECL_TEMPLATE(freebsd, sys_fhstatfs6);
60
 DECL_TEMPLATE(freebsd, sys_thr_exit);
61
 DECL_TEMPLATE(freebsd, sys_thr_self);
62
@@ -251,6 +262,7 @@
63
 DECL_TEMPLATE(freebsd, sys_fchownat);
64
 DECL_TEMPLATE(freebsd, sys_fexecve);
65
 DECL_TEMPLATE(freebsd, sys_fstatat);
66
+DECL_TEMPLATE(freebsd, sys_fstatat64);
67
 DECL_TEMPLATE(freebsd, sys_futimesat);
68
 DECL_TEMPLATE(freebsd, sys_linkat);
69
 DECL_TEMPLATE(freebsd, sys_mkdirat);
(-)devel/valgrind/files/patch-coregrind_m_syswrap_syswrap-freebsd.c (+341 lines)
Line 0 Link Here
1
--- coregrind/m_syswrap/syswrap-freebsd.c.orig	2016-01-13 22:20:20.000000000 +0300
2
+++ coregrind/m_syswrap/syswrap-freebsd.c	2019-03-17 13:06:51.977414000 +0300
3
@@ -868,6 +868,18 @@
4
    POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) );
5
 }
6
 
7
+PRE(sys_fstat64)
8
+{
9
+   PRINT("sys_fstat64 ( %ld, %#lx )", ARG1, ARG2);
10
+   PRE_REG_READ2(long, "fstat", unsigned long, fd, struct stat *, buf);
11
+   PRE_MEM_WRITE( "fstat(buf)", ARG2, sizeof(struct vki_stat64) );
12
+}
13
+
14
+POST(sys_fstat64)
15
+{
16
+   POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) );
17
+}
18
+
19
 PRE(sys_pathconf)
20
 {
21
    PRINT("sys_pathconf ( %#lx(%s), %ld )",ARG1,(char *)ARG1,ARG2);
22
@@ -1012,6 +1024,26 @@
23
    }
24
 }
25
 
26
+PRE(sys_getdirentries64)
27
+{
28
+   *flags |= SfMayBlock;
29
+   PRINT("sys_getdents ( %ld, %#lx, %ld )", ARG1,ARG2,ARG3);
30
+   PRE_REG_READ3(vki_ssize_t, "getdirentries",
31
+                 unsigned int, fd, struct dirent *, dirp,
32
+                 vki_size_t, count);
33
+   PRE_MEM_WRITE( "getdirentries(dirp)", ARG2, ARG3 );
34
+}
35
+
36
+POST(sys_getdirentries64)
37
+{
38
+   vg_assert(SUCCESS);
39
+   if (RES > 0) {
40
+      POST_MEM_WRITE( ARG2, RES );
41
+      if ( ARG4 != 0 )
42
+	 POST_MEM_WRITE( ARG4, sizeof (vki_off_t));
43
+   }
44
+}
45
+
46
 PRE(sys_seteuid)
47
 {
48
    PRINT("sys_seteuid ( %ld )", ARG1);
49
@@ -1070,6 +1102,44 @@
50
    }
51
 }
52
 
53
+PRE(sys_kevent11)
54
+{
55
+   /* struct freebsd11_kevent {
56
+        uintptr_t ident;  -- identifier for this event
57
+	short     filter; -- filter for event
58
+	u_short   flags;  -- action flags for kqueue
59
+	u_int     fflags; -- filter flag value
60
+	intptr_t  data;   -- filter data value
61
+	void      *udata; -- opaque user data identifier
62
+      };
63
+      int kevent(int kq, const struct kevent *changelist, int nchanges,
64
+                 struct kevent *eventlist, int nevents,
65
+                 const struct timespec *timeout);
66
+   */
67
+   *flags |= SfMayBlock;
68
+   PRINT("sys_kevent11 ( %ld, %#lx, %ld, %#lx, %ld, %#lx )\n", ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
69
+   PRE_REG_READ6(long, "kevent11",
70
+                 int, fd, struct vki_kevent11 *, newev, int, num_newev,
71
+		 struct vki_kevent11 *, ret_ev, int, num_retev,
72
+		 struct timespec *, timeout);
73
+   if (ARG2 != 0 && ARG3 != 0)
74
+      PRE_MEM_READ( "kevent(changeevent)", ARG2, sizeof(struct vki_kevent11)*ARG3 );
75
+   if (ARG4 != 0 && ARG5 != 0)
76
+      PRE_MEM_WRITE( "kevent(events)", ARG4, sizeof(struct vki_kevent11)*ARG5);
77
+   if (ARG6 != 0)
78
+      PRE_MEM_READ( "kevent(timeout)",
79
+                    ARG6, sizeof(struct vki_timespec));
80
+}
81
+
82
+POST(sys_kevent11)
83
+{
84
+   vg_assert(SUCCESS);
85
+   if (RES > 0) {
86
+      if (ARG4 != 0)
87
+         POST_MEM_WRITE( ARG4, sizeof(struct vki_kevent11)*RES) ;
88
+   }
89
+}
90
+
91
 PRE(sys_kevent)
92
 {
93
    /* struct kevent {
94
@@ -1077,8 +1147,9 @@
95
 	short     filter; -- filter for event
96
 	u_short   flags;  -- action flags for kqueue
97
 	u_int     fflags; -- filter flag value
98
-	intptr_t  data;   -- filter data value
99
+	int64_t   data;   -- filter data value
100
 	void      *udata; -- opaque user data identifier
101
+	uint64_t  ext[4]; -- extensions
102
       };
103
       int kevent(int kq, const struct kevent *changelist, int nchanges,
104
                  struct kevent *eventlist, int nevents,
105
@@ -1108,6 +1179,7 @@
106
    }
107
 }
108
 
109
+
110
 PRE(sys___getcwd)
111
 {
112
    PRINT("sys___getcwd ( %#lx, %lu )", ARG1,ARG2);
113
@@ -1143,6 +1215,20 @@
114
    }
115
 }
116
 
117
+PRE(sys_getfsstat11)
118
+{
119
+   PRINT("sys_getfsstat11 ( %#lx, %ld, %ld )",ARG1,ARG2,ARG3);
120
+   PRE_REG_READ3(long, "getfsstat11", struct vki_statfs11 *, buf, long, len, int, flags);
121
+   PRE_MEM_WRITE( "getfsstat11(buf)", ARG1, ARG2 );
122
+}
123
+POST(sys_getfsstat11)
124
+{
125
+   vg_assert(SUCCESS);
126
+   if (RES > 0) {
127
+      POST_MEM_WRITE( ARG1, RES * sizeof(struct vki_statfs11) );
128
+   }
129
+}
130
+
131
 PRE(sys_getfsstat)
132
 {
133
    PRINT("sys_getfsstat ( %#lx, %ld, %ld )",ARG1,ARG2,ARG3);
134
@@ -1234,6 +1320,19 @@
135
    POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs6) );
136
 }
137
 
138
+PRE(sys_fstatfs64)
139
+{
140
+   PRINT("sys_fstatfs64 ( %ld, %#lx )", ARG1, ARG2);
141
+   PRE_REG_READ2(long, "fstatfs6",
142
+                 unsigned int, fd, struct statfs *, buf);
143
+   PRE_MEM_WRITE( "fstatfs6(buf)", ARG2, sizeof(struct vki_statfs6) );
144
+}
145
+
146
+POST(sys_fstatfs64)
147
+{
148
+   POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs6) );
149
+}
150
+
151
 PRE(sys_statfs6)
152
 {
153
    PRINT("sys_statfs6 ( %#lx(%s), %#lx )",ARG1,(char *)ARG1,ARG2);
154
@@ -1246,7 +1345,19 @@
155
    POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs6) );
156
 }
157
 
158
+PRE(sys_statfs11)
159
+{
160
+   PRINT("sys_statfs11 ( %#lx(%s), %#lx )",ARG1,(char *)ARG1,ARG2);
161
+   PRE_REG_READ2(long, "statfs11", const char *, path, struct statfs *, buf);
162
+   PRE_MEM_RASCIIZ( "statfs11(path)", ARG1 );
163
+   PRE_MEM_WRITE( "statfs11(buf)", ARG2, sizeof(struct vki_statfs11) );
164
+}
165
+POST(sys_statfs11)
166
+{
167
+   POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs11) );
168
+}
169
 
170
+
171
 #if 0
172
 /* ---------------------------------------------------------------------
173
    aio_* wrappers
174
@@ -1774,6 +1885,20 @@
175
    miscellaneous wrappers
176
    ------------------------------------------------------------------ */
177
 
178
+PRE(sys_minherit)
179
+{
180
+   PRINT("minherit ( %#lx, %lu, %ld )" , ARG1, ARG2, ARG3);
181
+   PRE_REG_READ3(long, "minherit", 
182
+                 void *, addr, vki_size_t, len, int, inherit);
183
+   if (ARG2 != 0)
184
+      PRE_MEM_WRITE( "minherit(addr)", ARG1,ARG2 );
185
+}
186
+POST(sys_minherit)
187
+{
188
+   if (ARG2 != 0)
189
+      POST_MEM_WRITE( ARG1, ARG2 );
190
+}
191
+
192
 PRE(sys_munlockall)
193
 {
194
    *flags |= SfMayBlock;
195
@@ -2474,6 +2599,24 @@
196
       POST_MEM_WRITE( ARG2, sizeof(vki_siginfo_t) );
197
 }
198
 
199
+PRE(sys_sigwait)
200
+{
201
+   *flags |= SfMayBlock;
202
+   PRINT("sys_sigwait ( %#lx, %#lx )",
203
+         ARG1,ARG2);
204
+   PRE_REG_READ2(long, "sigwait", 
205
+                 const vki_sigset_t *, set, int *, sig);
206
+   if (ARG1 != 0) 
207
+      PRE_MEM_READ(  "sigwait(set)",  ARG1, sizeof(vki_sigset_t));
208
+   if (ARG2 != 0)
209
+      PRE_MEM_WRITE( "sigwait(sig)", ARG2, sizeof(int*));
210
+}
211
+POST(sys_sigwait)
212
+{
213
+   if (ARG2 != 0)
214
+      POST_MEM_WRITE( ARG2, sizeof(int*));
215
+}
216
+
217
 #if 0	/* not on freebsd 4.x */
218
 PRE(sys_rt_sigqueueinfo)
219
 {
220
@@ -3069,6 +3212,20 @@
221
    POST_MEM_WRITE( ARG3, sizeof(struct vki_stat) );
222
 }
223
 
224
+PRE(sys_fstatat64)
225
+{
226
+   PRINT("sys_fstatat ( %ld, %#lx(%s), %#lx )", ARG1,ARG2,(char*)ARG2,ARG3);
227
+   PRE_REG_READ3(long, "fstatat",
228
+                 int, dfd, char *, file_name, struct stat *, buf);
229
+   PRE_MEM_RASCIIZ( "fstatat(file_name)", ARG2 );
230
+   PRE_MEM_WRITE( "fstatat(buf)", ARG3, sizeof(struct vki_stat) );
231
+}
232
+
233
+POST(sys_fstatat64)
234
+{
235
+   POST_MEM_WRITE( ARG3, sizeof(struct vki_stat) );
236
+}
237
+
238
 PRE(sys_unlinkat)
239
 {
240
    *flags |= SfMayBlock;
241
@@ -3374,7 +3531,7 @@
242
                  unsigned int, fd, unsigned int, request, unsigned long, arg);
243
 
244
 /* On FreeBSD, ALL ioctl's are IOR/IOW encoded.  Just use the default decoder */
245
-   if (VG_(strstr)(VG_(clo_sim_hints), "lax-ioctls") != NULL) {
246
+   if (SimHintiS(SimHint_lax_ioctls, VG_(clo_sim_hints))) {
247
       /* 
248
       * Be very lax about ioctl handling; the only
249
       * assumption is that the size is correct. Doesn't
250
@@ -3655,7 +3812,7 @@
251
 PRE(sys_cpuset_getaffinity)
252
 {
253
 
254
-    PRINT("sys_cpuset_getaffinity ( %ld, %ld, %lld, %llu, %#lx )", ARG1, ARG2,
255
+    PRINT("sys_cpuset_getaffinity ( %ld, %ld, %ld, %lu, %#lx )", ARG1, ARG2,
256
         ARG3, ARG4, ARG5);
257
     PRE_REG_READ5(int, "cpuset_getaffinity",
258
         int, level, int, which, long, id,
259
@@ -3670,6 +3827,19 @@
260
         POST_MEM_WRITE( ARG5, ARG4 );
261
 }
262
 
263
+PRE(sys_getrandom)
264
+{
265
+   PRINT("sys_getrandom ( %#lx, %ld, %ld )" , ARG1,ARG2,ARG3);
266
+   PRE_REG_READ3(ssize_t, "getrandom",
267
+                 void *, buf, size_t, buflen, unsigned int, flags);
268
+   PRE_MEM_WRITE( "getrandom(cpu)", ARG1, ARG2 );
269
+}
270
+
271
+POST(sys_getrandom)
272
+{
273
+   POST_MEM_WRITE( ARG1, ARG2 );
274
+}
275
+
276
 #undef PRE
277
 #undef POST
278
 
279
@@ -3870,7 +4040,7 @@
280
    // BSDXY(__NR_nfssvc,		sys_nfssvc),			// 155
281
 
282
    // 4.3 getdirentries							   156
283
-   GENXY(__NR_statfs,			sys_statfs),			// 157
284
+   BSDXY(__NR_statfs11,			sys_statfs11),			// 157
285
    GENXY(__NR_fstatfs,			sys_fstatfs),			// 158
286
    // nosys								   159
287
 
288
@@ -3986,7 +4156,7 @@
289
 
290
 // BSDXY(__NR_ntp_gettime,		sys_ntp_gettime),		// 248
291
    // nosys								   249
292
-// BSDXY(__NR_minherit,			sys_minherit),			// 250
293
+   BSDXY(__NR_minherit,			sys_minherit),			// 250
294
    BSDX_(__NR_rfork,			sys_rfork),			// 251
295
 
296
    GENXY(__NR_openbsd_poll,		sys_poll),			// 252
297
@@ -4127,7 +4297,7 @@
298
    BSDXY(__NR_getresuid,		sys_getresuid),			// 360
299
    BSDXY(__NR_getresgid,		sys_getresgid),			// 361
300
    BSDX_(__NR_kqueue,			sys_kqueue),			// 362
301
-   BSDXY(__NR_kevent,			sys_kevent),			// 363
302
+   BSDXY(__NR_kevent11,			sys_kevent11),			// 363
303
 
304
    // nosys								   364
305
    // nosys								   365
306
@@ -4167,7 +4337,7 @@
307
    BSDXY(__NR_uuidgen,			sys_uuidgen),			// 392
308
    BSDXY(__NR_sendfile,			sys_sendfile),			// 393
309
    // mac_syscall							   394
310
-   BSDXY(__NR_getfsstat,		sys_getfsstat),			// 395
311
+   BSDXY(__NR_getfsstat11,		sys_getfsstat11),		// 395
312
 
313
    BSDXY(__NR_statfs6,			sys_statfs6),			// 396
314
    BSDXY(__NR_fstatfs6,			sys_fstatfs6),			// 397
315
@@ -4210,7 +4380,7 @@
316
    BSDX_(__NR___acl_delete_link,	sys___acl_delete_link),		// 427
317
 
318
    BSDX_(__NR___acl_aclcheck_link,	sys___acl_aclcheck_link),	// 428
319
-   //!sigwait								   429
320
+   BSDXY(__NR_sigwait,			sys_sigwait),			// 429
321
    // thr_create							   430
322
    BSDX_(__NR_thr_exit,			sys_thr_exit),			// 431
323
 
324
@@ -4309,6 +4479,17 @@
325
    BSDXY(__NR_shmctl,			sys_shmctl),			// 512
326
 
327
    BSDXY(__NR_pipe2,			sys_pipe2),			// 542
328
+
329
+   // ino64
330
+   BSDXY(__NR_fstat64,			sys_fstat64),			// 551
331
+   BSDXY(__NR_fstatat64,		sys_fstatat64),			// 552
332
+   BSDXY(__NR_getdirentries64,		sys_getdirentries64),		// 554
333
+   GENXY(__NR_statfs,			sys_statfs),			// 555
334
+   GENXY(__NR_fstatfs64,		sys_fstatfs),			// 556
335
+   BSDXY(__NR_getfsstat,		sys_getfsstat),			// 557
336
+
337
+   BSDXY(__NR_kevent,			sys_kevent),			// 560
338
+   BSDXY(__NR_getrandom,		sys_getrandom),			// 563
339
 
340
    BSDX_(__NR_fake_sigreturn,		sys_fake_sigreturn),		// 1000, fake sigreturn
341
 
(-)devel/valgrind/files/patch-include__vki__vki-freebsd.h (-8 / +123 lines)
Lines 1-7 Link Here
1
--- include/vki/vki-freebsd.h.orig	2015-01-26 16:17:32.000000000 -0400
1
--- include/vki/vki-freebsd.h.orig	2016-01-13 22:20:20.000000000 +0300
2
+++ include/vki/vki-freebsd.h	2015-08-31 04:55:29.139189000 -0300
2
+++ include/vki/vki-freebsd.h	2019-03-17 13:06:51.978881000 +0300
3
@@ -684,6 +684,7 @@
3
@@ -367,7 +367,45 @@
4
 	unsigned int :(8 / 2) * (16 - (int)sizeof(struct vki_timespec));
5
 };
4
 
6
 
7
+/* FreeBSD 11.x stat */
8
+/* struct vki_stat_freebsd11 { TODO } */
9
 
10
+/* FreeBSD 12.x stat */
11
+struct vki_stat64 {
12
+	vki_dev_t	st_dev;
13
+	vki_ino_t	st_ino;
14
+	vki_nlink_t	st_nlink;
15
+	vki_mode_t	st_mode;
16
+	vki_int16_t	st_padding0;
17
+	vki_uid_t	st_uid;
18
+	vki_gid_t	st_gid;
19
+	vki_int32_t	st_padding1;
20
+	vki_dev_t	st_rdev;
21
+#if defined(VGA_x86)
22
+	vki_int32_t	st_atim_ext;
23
+#endif
24
+	struct vki_timespec st_atim;
25
+#if defined(VGA_x86)
26
+	vki_int32_t	st_mtim_ext;
27
+#endif
28
+	struct vki_timespec st_mtim;
29
+#if defined(VGA_x86)
30
+	vki_int32_t	st_ctim_ext;
31
+#endif
32
+	struct vki_timespec st_ctim;
33
+#if defined(VGA_x86)
34
+	vki_int32_t	st_btim_ext;
35
+#endif
36
+	struct vki_timespec st_birthtim;
37
+
38
+	vki_off_t	st_size;
39
+	vki_blkcnt_t	st_blocks;
40
+	vki_blksize_t	st_blksize;
41
+	vki_fflags_t	st_flags;
42
+	vki_uint64_t	st_gen;
43
+	vki_uint64_t	st_spare[10];
44
+};
45
+
46
 //----------------------------------------------------------------------
47
 // From linux-2.6.8.1/include/linux/sched.h
48
 //----------------------------------------------------------------------
49
@@ -684,6 +722,7 @@
50
 
5
 #define VKI_SOCK_STREAM	1
51
 #define VKI_SOCK_STREAM	1
6
 
52
 
7
+#include <sys/types.h>
53
+#include <sys/types.h>
Lines 8-31 Link Here
8
 #include <netinet/tcp.h>
54
 #include <netinet/tcp.h>
9
 
55
 
10
 #define VKI_TCP_NODELAY  TCP_NODELAY
56
 #define VKI_TCP_NODELAY  TCP_NODELAY
11
@@ -1888,11 +1889,23 @@
57
@@ -888,7 +927,8 @@
58
 #define VKI_OMFSNAMELEN	16
59
 #define VKI_OMNAMELEN	(88 - 2 * sizeof(long))
60
 #define VKI_MFSNAMELEN	16
61
-#define VKI_MNAMELEN	88
62
+#define VKI_MNAMELEN11	88
63
+#define VKI_MNAMELEN	1024
64
 
65
 struct vki_statfs4 {
66
 	long		f_spare2;
67
@@ -915,6 +955,31 @@
68
 	long		f_spare[2];
69
 };
70
 
71
+struct vki_statfs11 {
72
+	vki_uint32_t	f_version;
73
+	vki_uint32_t	f_type;
74
+	vki_uint64_t	f_flags;
75
+	vki_uint64_t	f_bsize;
76
+	vki_uint64_t	f_iosize;
77
+	vki_uint64_t	f_blocks;
78
+	vki_uint64_t	f_bfree;
79
+	vki_int64_t	f_bavail;
80
+	vki_uint64_t	f_files;
81
+	vki_int64_t	f_ffree;
82
+	vki_uint64_t	f_syncwrites;
83
+	vki_uint64_t	f_asyncwrites;
84
+	vki_uint64_t	f_syncreads;
85
+	vki_uint64_t	f_asyncreads;
86
+	vki_uint64_t	f_spare[10];
87
+	vki_uint32_t	f_namemax;
88
+	vki_uid_t	f_owner;
89
+	vki_fsid_t	f_fsid;
90
+	char		f_charspare[80];
91
+	char		f_fstypename[VKI_MFSNAMELEN];
92
+	char		f_mntfromnname[VKI_MNAMELEN11];
93
+	char		f_mntonname[VKI_MNAMELEN11];
94
+};
95
+
96
 struct vki_statfs {
97
 	vki_uint32_t	f_version;
98
 	vki_uint32_t	f_type;
99
@@ -1157,7 +1222,9 @@
100
 //----------------------------------------------------------------------
101
 // From sys/kevent.h
102
 //----------------------------------------------------------------------
103
-struct vki_kevent {
104
+
105
+/* FreeBSD 11.x kevent */
106
+struct vki_kevent11 {
107
 	vki_uintptr_t  ident;
108
 	vki_int16_t    filter;
109
 	vki_uint16_t   flags;
110
@@ -1166,6 +1233,15 @@
111
 	void           *udata;
112
 };
113
 
114
+struct vki_kevent {
115
+	vki_uintptr_t  ident;
116
+	vki_int16_t    filter;
117
+	vki_uint16_t   flags;
118
+	vki_uint32_t   fflags;
119
+	vki_int64_t    data;
120
+	void           *udata;
121
+	vki_uint64_t   ext[4];
122
+};
123
 
124
 // QQQ sort
125
 
126
@@ -1888,11 +1964,23 @@
12
 #define VKI_I386_SET_FSBASE     8
127
 #define VKI_I386_SET_FSBASE     8
13
 #define VKI_I386_GET_GSBASE     9
128
 #define VKI_I386_GET_GSBASE     9
14
 #define VKI_I386_SET_GSBASE     10
129
 #define VKI_I386_SET_GSBASE     10
15
+#define VKI_I386_SET_XFPUSTATE	11
130
+#define VKI_I386_SET_XFPUSTATE  11
16
 
131
 
17
 #define VKI_AMD64_GET_FSBASE    128
132
 #define VKI_AMD64_GET_FSBASE    128
18
 #define VKI_AMD64_SET_FSBASE    129
133
 #define VKI_AMD64_SET_FSBASE    129
19
 #define VKI_AMD64_GET_GSBASE    130
134
 #define VKI_AMD64_GET_GSBASE    130
20
 #define VKI_AMD64_SET_GSBASE    131
135
 #define VKI_AMD64_SET_GSBASE    131
21
+#define	VKI_AMD64_GET_XFPUSTATE	132
136
+#define VKI_AMD64_GET_XFPUSTATE 132
22
+
137
+
23
+typedef struct vki_i386_get_xfpustate {
138
+struct vki_i386_get_xfpustate {
24
+	unsigned int addr;
139
+	unsigned int addr;
25
+	int len;
140
+	int len;
26
+};
141
+};
27
+
142
+
28
+typedef struct vki_amd64_get_xfpustate {
143
+struct vki_amd64_get_xfpustate {
29
+	void *addr;
144
+	void *addr;
30
+	int len;
145
+	int len;
31
+};
146
+};
(-)devel/valgrind/files/patch-include_vki_vki-scnums-freebsd.h (+44 lines)
Line 0 Link Here
1
--- include/vki/vki-scnums-freebsd.h.orig	2016-01-13 22:20:20.000000000 +0300
2
+++ include/vki/vki-scnums-freebsd.h	2019-03-17 13:06:51.980012000 +0300
3
@@ -138,7 +138,7 @@
4
 #define	__NR_setsid		147
5
 #define	__NR_quotactl		148
6
 #define	__NR_nfssvc		155
7
-#define	__NR_statfs		157
8
+#define	__NR_statfs11		157
9
 #define	__NR_fstatfs		158
10
 #define	__NR_lgetfh		160
11
 #define	__NR_getfh		161
12
@@ -275,7 +275,7 @@
13
 #define	__NR_getresuid		360
14
 #define	__NR_getresgid		361
15
 #define	__NR_kqueue		362
16
-#define	__NR_kevent		363
17
+#define	__NR_kevent11		363
18
 #define	__NR_extattr_set_fd	371
19
 #define	__NR_extattr_get_fd	372
20
 #define	__NR_extattr_delete_fd	373
21
@@ -299,7 +299,7 @@
22
 #define	__NR_uuidgen		392
23
 #define	__NR_sendfile		393
24
 #define	__NR_mac_syscall	394
25
-#define	__NR_getfsstat		395
26
+#define	__NR_getfsstat11	395
27
 #define	__NR_statfs6		396
28
 #define	__NR_fstatfs6		397
29
 #define	__NR_fhstatfs6		398
30
@@ -408,6 +408,14 @@
31
 #define	__NR___semctl		510
32
 #define	__NR_shmctl		512
33
 #define	__NR_pipe2		542
34
+#define	__NR_fstat64		551
35
+#define	__NR_fstatat64		552
36
+#define	__NR_getdirentries64	554
37
+#define	__NR_statfs		555
38
+#define	__NR_fstatfs64		556
39
+#define	__NR_getfsstat		557
40
+#define	__NR_kevent		560
41
+#define	__NR_getrandom		563
42
 
43
 #define __NR_fake_sigreturn	1000
44
 

Return to bug 234631