@@ -23,10 +23,14 @@ var (
23
23
libc_setuid ,
24
24
libc_setpgid ,
25
25
libc_syscall ,
26
- libc_wait4 ,
27
- pipe1 libcFunc
26
+ libc_wait4 libcFunc
28
27
)
29
28
29
+ //go:linkname pipe1x runtime.pipe1
30
+ var pipe1x libcFunc // name to take addr of pipe1
31
+
32
+ func pipe1 () // declared for vet; do NOT call
33
+
30
34
//go:nosplit
31
35
func syscall_sysvicall6 (fn , nargs , a1 , a2 , a3 , a4 , a5 , a6 uintptr ) (r1 , r2 , err uintptr ) {
32
36
call := libcall {
@@ -35,7 +39,7 @@ func syscall_sysvicall6(fn, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err
35
39
args : uintptr (unsafe .Pointer (& a1 )),
36
40
}
37
41
entersyscallblock ()
38
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
42
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
39
43
exitsyscall ()
40
44
return call .r1 , call .r2 , call .err
41
45
}
@@ -47,7 +51,7 @@ func syscall_rawsysvicall6(fn, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, e
47
51
n : nargs ,
48
52
args : uintptr (unsafe .Pointer (& a1 )),
49
53
}
50
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
54
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
51
55
return call .r1 , call .r2 , call .err
52
56
}
53
57
@@ -62,7 +66,7 @@ func syscall_chdir(path uintptr) (err uintptr) {
62
66
n : 1 ,
63
67
args : uintptr (unsafe .Pointer (& path )),
64
68
}
65
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
69
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
66
70
return call .err
67
71
}
68
72
@@ -73,7 +77,7 @@ func syscall_chroot(path uintptr) (err uintptr) {
73
77
n : 1 ,
74
78
args : uintptr (unsafe .Pointer (& path )),
75
79
}
76
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
80
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
77
81
return call .err
78
82
}
79
83
@@ -97,7 +101,7 @@ func syscall_execve(path, argv, envp uintptr) (err uintptr) {
97
101
n : 3 ,
98
102
args : uintptr (unsafe .Pointer (& path )),
99
103
}
100
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
104
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
101
105
return call .err
102
106
}
103
107
@@ -114,7 +118,7 @@ func syscall_fcntl(fd, cmd, arg uintptr) (val, err uintptr) {
114
118
n : 3 ,
115
119
args : uintptr (unsafe .Pointer (& fd )),
116
120
}
117
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
121
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
118
122
return call .r1 , call .err
119
123
}
120
124
@@ -125,7 +129,7 @@ func syscall_forkx(flags uintptr) (pid uintptr, err uintptr) {
125
129
n : 1 ,
126
130
args : uintptr (unsafe .Pointer (& flags )),
127
131
}
128
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
132
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
129
133
return call .r1 , call .err
130
134
}
131
135
@@ -138,7 +142,7 @@ func syscall_gethostname() (name string, err uintptr) {
138
142
args : uintptr (unsafe .Pointer (& args [0 ])),
139
143
}
140
144
entersyscallblock ()
141
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
145
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
142
146
exitsyscall ()
143
147
if call .r1 != 0 {
144
148
return "" , call .err
@@ -154,7 +158,7 @@ func syscall_getpid() (pid, err uintptr) {
154
158
n : 0 ,
155
159
args : uintptr (unsafe .Pointer (& libc_getpid )), // it's unused but must be non-nil, otherwise crashes
156
160
}
157
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
161
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
158
162
return call .r1 , call .err
159
163
}
160
164
@@ -165,18 +169,18 @@ func syscall_ioctl(fd, req, arg uintptr) (err uintptr) {
165
169
n : 3 ,
166
170
args : uintptr (unsafe .Pointer (& fd )),
167
171
}
168
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
172
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
169
173
return call .err
170
174
}
171
175
172
176
func syscall_pipe () (r , w , err uintptr ) {
173
177
call := libcall {
174
- fn : uintptr (unsafe .Pointer (& pipe1 )),
178
+ fn : uintptr (unsafe .Pointer (& pipe1x )),
175
179
n : 0 ,
176
- args : uintptr (unsafe .Pointer (& pipe1 )), // it's unused but must be non-nil, otherwise crashes
180
+ args : uintptr (unsafe .Pointer (& pipe1x )), // it's unused but must be non-nil, otherwise crashes
177
181
}
178
182
entersyscallblock ()
179
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
183
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
180
184
exitsyscall ()
181
185
return call .r1 , call .r2 , call .err
182
186
}
@@ -200,7 +204,7 @@ func syscall_setgid(gid uintptr) (err uintptr) {
200
204
n : 1 ,
201
205
args : uintptr (unsafe .Pointer (& gid )),
202
206
}
203
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
207
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
204
208
return call .err
205
209
}
206
210
@@ -211,7 +215,7 @@ func syscall_setgroups(ngid, gid uintptr) (err uintptr) {
211
215
n : 2 ,
212
216
args : uintptr (unsafe .Pointer (& ngid )),
213
217
}
214
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
218
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
215
219
return call .err
216
220
}
217
221
@@ -222,7 +226,7 @@ func syscall_setsid() (pid, err uintptr) {
222
226
n : 0 ,
223
227
args : uintptr (unsafe .Pointer (& libc_setsid )), // it's unused but must be non-nil, otherwise crashes
224
228
}
225
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
229
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
226
230
return call .r1 , call .err
227
231
}
228
232
@@ -233,7 +237,7 @@ func syscall_setuid(uid uintptr) (err uintptr) {
233
237
n : 1 ,
234
238
args : uintptr (unsafe .Pointer (& uid )),
235
239
}
236
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
240
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
237
241
return call .err
238
242
}
239
243
@@ -244,7 +248,7 @@ func syscall_setpgid(pid, pgid uintptr) (err uintptr) {
244
248
n : 2 ,
245
249
args : uintptr (unsafe .Pointer (& pid )),
246
250
}
247
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
251
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
248
252
return call .err
249
253
}
250
254
@@ -255,7 +259,7 @@ func syscall_syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) {
255
259
args : uintptr (unsafe .Pointer (& trap )),
256
260
}
257
261
entersyscallblock ()
258
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
262
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
259
263
exitsyscall ()
260
264
return call .r1 , call .r2 , call .err
261
265
}
@@ -267,7 +271,7 @@ func syscall_wait4(pid uintptr, wstatus *uint32, options uintptr, rusage unsafe.
267
271
args : uintptr (unsafe .Pointer (& pid )),
268
272
}
269
273
entersyscallblock ()
270
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
274
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
271
275
exitsyscall ()
272
276
return int (call .r1 ), call .err
273
277
}
@@ -279,6 +283,6 @@ func syscall_write(fd, buf, nbyte uintptr) (n, err uintptr) {
279
283
n : 3 ,
280
284
args : uintptr (unsafe .Pointer (& fd )),
281
285
}
282
- asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (& call ))
286
+ asmcgocall (unsafe .Pointer (& asmsysvicall6x ), unsafe .Pointer (& call ))
283
287
return call .r1 , call .err
284
288
}
0 commit comments