View | Details | Raw Unified | Return to bug 254917
Collapse All | Expand All

(-)a/devel/valgrind/files/accept4_syscall.patch (-56 lines)
Removed 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
(-)a/devel/valgrind/files/extra-patch-ino64 (-239 lines)
Removed 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
(-)a/devel/valgrind/files/jail_syscalls.patch (-87 lines)
Removed 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
(-)a/devel/valgrind/files/kldload_syscalls.patch (-127 lines)
Removed 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
 /*--------------------------------------------------------------------*/
(-)a/devel/valgrind/files/missing_fcntls.patch (-54 lines)
Removed 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 */
(-)a/devel/valgrind/files/patch-VEX_auxprogs_genoffsets.c (-11 lines)
Removed Link Here
1
--- VEX/auxprogs/genoffsets.c	2016-01-13 19:20:20 UTC
2
+++ VEX/auxprogs/genoffsets.c
3
@@ -59,7 +59,7 @@
4
 #define VG_STRINGIFZ(__str)  #__str
5
 #define VG_STRINGIFY(__str)  VG_STRINGIFZ(__str)
6
 
7
-#define my_offsetof(__type,__field) (&((__type*)0)->__field)
8
+#define my_offsetof(__type,__field) offsetof(__type,__field)
9
 
10
 /* This forces gcc to evaluate the my_offsetof call at compile time,
11
    and then emits it in the assembly, along with the nonsense string
(-)a/devel/valgrind/files/patch-configure.ac (-21 lines)
Removed Link Here
1
--- configure.ac.orig	2016-01-13 19:20:20 UTC
2
+++ configure.ac
3
@@ -136,16 +136,10 @@
4
 AM_CONDITIONAL(COMPILER_IS_CLANG, test $is_clang = clang)
5
 
6
 case "${is_clang}-${gcc_version}" in
7
-     notclang-3.*)
8
+     notclang-[[3-9]].*|notclang-[[1-9]][[0-9]]*)
9
 	AC_MSG_RESULT([ok (${gcc_version})])
10
 	;;
11
-     notclang-4.*)
12
-	AC_MSG_RESULT([ok (${gcc_version})])
13
-	;;
14
-     notclang-5.*)
15
-	AC_MSG_RESULT([ok (${gcc_version})])
16
-	;;
17
-     clang-2.9|clang-3.*|clang-4.*)
18
+     clang-2.9|clang-[[3-9]].*|clang-[[1-9]][[0-9]]*)
19
 	AC_MSG_RESULT([ok (clang-${gcc_version})])
20
 	;;
21
      *)
(-)a/devel/valgrind/files/patch-coregrind-m_debuglog.c (-13 lines)
Removed Link Here
1
--- coregrind/m_debuglog.c.orig	2019-01-08 21:35:12.953178000 +0400
2
+++ coregrind/m_debuglog.c	2019-01-08 21:36:10.940827000 +0400
3
@@ -482,8 +482,8 @@
4
       "popq  %%r15\n"           /* restore r15 */
5
       "addq  $256, %%rsp\n"     /* restore stack ptr */
6
       : /*wr*/
7
-      : /*rd*/    "g" (block)
8
-      : /*trash*/ "rax", "rdi", "rsi", "rdx", "memory", "cc"
9
+      : /*rd*/    "r" (block)
10
+      : /*trash*/ "rax", "rdi", "rsi", "rdx", "memory", "cc", "rcx", "r11"
11
    );
12
    if (block[0] < 0) 
13
       block[0] = -1;
(-)a/devel/valgrind/files/patch-coregrind-m_syswrap-syswrap-amd64-freebsd.c (-30 lines)
Removed Link Here
1
--- coregrind/m_syswrap/syswrap-amd64-freebsd.c.orig	2015-01-26 16:17:32.000000000 -0400
2
+++ coregrind/m_syswrap/syswrap-amd64-freebsd.c	2015-08-31 09:51:17.506396000 -0300
3
@@ -691,6 +691,27 @@
4
       SET_STATUS_Success2( tst->arch.vex.guest_FS_ZERO, tst->arch.vex.guest_RDX );
5
       POST_MEM_WRITE( ARG2, sizeof(void *) );
6
       break;
7
+   case VKI_AMD64_GET_XFPUSTATE:
8
+      {
9
+      	UChar fpuState[160];
10
+      	struct vki_amd64_get_xfpustate *xfs = (struct vki_amd64_get_xfpustate *)ARG2;
11
+	int fpuSaveLen;
12
+      
13
+      	PRINT("sys_amd64_get_xfpustate ( %#lx, %d )", (long unsigned int)xfs->addr, xfs->len);
14
+      	tst = VG_(get_ThreadState)(tid);
15
+
16
+	if (xfs->len <= sizeof(fpuState)) {
17
+      		amd64g_dirtyhelper_FXSAVE_ALL_EXCEPT_XMM(
18
+		    (VexGuestAMD64State *)&tst->arch.vex,
19
+		    (HWord)fpuState);
20
+		VG_(memcpy)(xfs->addr, fpuState, xfs->len);
21
+      		POST_MEM_WRITE( xfs->addr, xfs->len );
22
+		SET_STATUS_Success ( 0 );
23
+	} else {
24
+		SET_STATUS_Failure( VKI_EINVAL );
25
+	}
26
+      }
27
+      break;
28
    default:
29
       VG_(message) (Vg_UserMsg, "unhandled sysarch cmd %ld", ARG1);
30
       VG_(unimplemented) ("unhandled sysarch cmd");
(-)a/devel/valgrind/files/patch-include__vki__vki-freebsd.h (-34 lines)
Removed Link Here
1
--- include/vki/vki-freebsd.h.orig	2015-01-26 16:17:32.000000000 -0400
2
+++ include/vki/vki-freebsd.h	2015-08-31 04:55:29.139189000 -0300
3
@@ -684,6 +684,7 @@
4
 
5
 #define VKI_SOCK_STREAM	1
6
 
7
+#include <sys/types.h>
8
 #include <netinet/tcp.h>
9
 
10
 #define VKI_TCP_NODELAY  TCP_NODELAY
11
@@ -1888,11 +1889,23 @@
12
 #define VKI_I386_SET_FSBASE     8
13
 #define VKI_I386_GET_GSBASE     9
14
 #define VKI_I386_SET_GSBASE     10
15
+#define VKI_I386_SET_XFPUSTATE	11
16
 
17
 #define VKI_AMD64_GET_FSBASE    128
18
 #define VKI_AMD64_SET_FSBASE    129
19
 #define VKI_AMD64_GET_GSBASE    130
20
 #define VKI_AMD64_SET_GSBASE    131
21
+#define	VKI_AMD64_GET_XFPUSTATE	132
22
+
23
+typedef struct vki_i386_get_xfpustate {
24
+	unsigned int addr;
25
+	int len;
26
+};
27
+
28
+typedef struct vki_amd64_get_xfpustate {
29
+	void *addr;
30
+	int len;
31
+};
32
 
33
 //----------------------------------------------------------------------
34
 // From sys/module.h

Return to bug 254917