Skip to content

Commit 924c161

Browse files
committed
runtime: fix vet complaints for all freebsd, netbsd, openbsd
Working toward making the tree vet-safe instead of having so many exceptions in cmd/vet/all/whitelist. This CL makes "go vet -unsafeptr=false runtime" happy for these GOOSes, while keeping "GO_BUILDER_NAME=misc-vetall go tool dist test" happy too. For #31916. Change-Id: I63c4805bdd44b301072da66c77086940e2a2765e Reviewed-on: https://go-review.googlesource.com/c/go/+/176105 Run-TryBot: Russ Cox <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Austin Clements <[email protected]> Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent b4a472b commit 924c161

10 files changed

+29
-44
lines changed

src/cmd/vet/all/whitelist/freebsd_386.txt

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/cmd/vet/all/whitelist/netbsd_386.txt

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/cmd/vet/all/whitelist/netbsd_arm64.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/cmd/vet/all/whitelist/openbsd_386.txt

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/runtime/sys_freebsd_386.s

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ TEXT runtime·thr_new(SB),NOSPLIT,$-4
2222
MOVL AX, ret+8(FP)
2323
RET
2424

25+
// Called by OS using C ABI.
2526
TEXT runtime·thr_start(SB),NOSPLIT,$0
26-
MOVL mm+0(FP), AX
27+
NOP SP // tell vet SP changed - stop checking offsets
28+
MOVL 4(SP), AX // m
2729
MOVL m_g0(AX), BX
2830
LEAL m_tls(AX), BP
2931
MOVL m_id(AX), DI
@@ -234,17 +236,19 @@ TEXT runtime·sigfwd(SB),NOSPLIT,$12-16
234236
MOVL AX, SP
235237
RET
236238

239+
// Called by OS using C ABI.
237240
TEXT runtime·sigtramp(SB),NOSPLIT,$12
238-
MOVL signo+0(FP), BX
241+
NOP SP // tell vet SP changed - stop checking offsets
242+
MOVL 16(SP), BX // signo
239243
MOVL BX, 0(SP)
240-
MOVL info+4(FP), BX
244+
MOVL 20(SP), BX // info
241245
MOVL BX, 4(SP)
242-
MOVL context+8(FP), BX
246+
MOVL 24(SP), BX // context
243247
MOVL BX, 8(SP)
244248
CALL runtime·sigtrampgo(SB)
245249

246250
// call sigreturn
247-
MOVL context+8(FP), AX
251+
MOVL 24(SP), AX // context
248252
MOVL $0, 0(SP) // syscall gap
249253
MOVL AX, 4(SP)
250254
MOVL $417, AX // sigreturn(ucontext)
@@ -319,15 +323,15 @@ TEXT runtime·setldt(SB),NOSPLIT,$32
319323
MOVL $0xffffffff, 0(SP) // auto-allocate entry and return in AX
320324
MOVL AX, 4(SP)
321325
MOVL $1, 8(SP)
322-
CALL runtime·i386_set_ldt(SB)
326+
CALL i386_set_ldt<>(SB)
323327

324328
// compute segment selector - (entry*8+7)
325329
SHLL $3, AX
326330
ADDL $7, AX
327331
MOVW AX, GS
328332
RET
329333

330-
TEXT runtime·i386_set_ldt(SB),NOSPLIT,$16
334+
TEXT i386_set_ldt<>(SB),NOSPLIT,$16
331335
LEAL args+0(FP), AX // 0(FP) == 4(SP) before SP got moved
332336
MOVL $0, 0(SP) // syscall gap
333337
MOVL $1, 4(SP)

src/runtime/sys_netbsd_386.s

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ TEXT runtime·sigprocmask(SB),NOSPLIT,$-4
236236
MOVL $0xf1, 0xf1 // crash
237237
RET
238238

239-
TEXT runtime·sigreturn_tramp(SB),NOSPLIT,$0
239+
TEXT sigreturn_tramp<>(SB),NOSPLIT,$0
240240
LEAL 140(SP), AX // Load address of ucontext
241241
MOVL AX, 4(SP)
242242
MOVL $SYS_setcontext, AX
@@ -252,7 +252,7 @@ TEXT runtime·sigaction(SB),NOSPLIT,$24
252252
MOVSL // arg 1 - sig
253253
MOVSL // arg 2 - act
254254
MOVSL // arg 3 - oact
255-
LEAL runtime·sigreturn_tramp(SB), AX
255+
LEAL sigreturn_tramp<>(SB), AX
256256
STOSL // arg 4 - tramp
257257
MOVL $2, AX
258258
STOSL // arg 5 - vers
@@ -279,7 +279,9 @@ TEXT runtime·sigfwd(SB),NOSPLIT,$12-16
279279
MOVL AX, SP
280280
RET
281281

282+
// Called by OS using C ABI.
282283
TEXT runtime·sigtramp(SB),NOSPLIT,$28
284+
NOP SP // tell vet SP changed - stop checking offsets
283285
// Save callee-saved C registers, since the caller may be a C signal handler.
284286
MOVL BX, bx-4(SP)
285287
MOVL BP, bp-8(SP)
@@ -288,11 +290,11 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$28
288290
// We don't save mxcsr or the x87 control word because sigtrampgo doesn't
289291
// modify them.
290292

291-
MOVL signo+0(FP), BX
293+
MOVL 32(SP), BX // signo
292294
MOVL BX, 0(SP)
293-
MOVL info+4(FP), BX
295+
MOVL 36(SP), BX // info
294296
MOVL BX, 4(SP)
295-
MOVL context+8(FP), BX
297+
MOVL 40(SP), BX // context
296298
MOVL BX, 8(SP)
297299
CALL runtime·sigtrampgo(SB)
298300

src/runtime/sys_netbsd_amd64.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ TEXT runtime·sigprocmask(SB),NOSPLIT,$0
258258
MOVL $0xf1, 0xf1 // crash
259259
RET
260260

261-
TEXT runtime·sigreturn_tramp(SB),NOSPLIT,$-8
261+
TEXT sigreturn_tramp<>(SB),NOSPLIT,$-8
262262
MOVQ R15, DI // Load address of ucontext
263263
MOVQ $SYS_setcontext, AX
264264
SYSCALL
@@ -271,7 +271,7 @@ TEXT runtime·sigaction(SB),NOSPLIT,$-8
271271
MOVQ new+8(FP), SI // arg 2 - nsa
272272
MOVQ old+16(FP), DX // arg 3 - osa
273273
// arg 4 - tramp
274-
LEAQ runtime·sigreturn_tramp(SB), R10
274+
LEAQ sigreturn_tramp<>(SB), R10
275275
MOVQ $2, R8 // arg 5 - vers
276276
MOVL $SYS___sigaction_sigtramp, AX
277277
SYSCALL

src/runtime/sys_netbsd_arm.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ TEXT runtime·sigprocmask(SB),NOSPLIT,$0
240240
MOVW.CS R8, (R8)
241241
RET
242242

243-
TEXT runtime·sigreturn_tramp(SB),NOSPLIT|NOFRAME,$0
243+
TEXT sigreturn_tramp<>(SB),NOSPLIT|NOFRAME,$0
244244
// on entry, SP points to siginfo, we add sizeof(ucontext)
245245
// to SP to get a pointer to ucontext.
246246
ADD $0x80, R13, R0 // 0x80 == sizeof(UcontextT)
@@ -254,7 +254,7 @@ TEXT runtime·sigaction(SB),NOSPLIT,$4
254254
MOVW sig+0(FP), R0 // arg 1 - signum
255255
MOVW new+4(FP), R1 // arg 2 - nsa
256256
MOVW old+8(FP), R2 // arg 3 - osa
257-
MOVW $runtime·sigreturn_tramp(SB), R3 // arg 4 - tramp
257+
MOVW $sigreturn_tramp<>(SB), R3 // arg 4 - tramp
258258
MOVW $2, R4 // arg 5 - vers
259259
MOVW R4, 4(R13)
260260
ADD $4, R13 // pass arg 5 on stack

src/runtime/sys_netbsd_arm64.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ fail:
249249
MOVD $0, R0
250250
MOVD R0, (R0) // crash
251251

252-
TEXT runtime·sigreturn_tramp(SB),NOSPLIT,$-8
252+
TEXT sigreturn_tramp<>(SB),NOSPLIT,$-8
253253
MOVD g, R0
254254
SVC $SYS_setcontext
255255
MOVD $0x4242, R0 // Something failed, return magic number
@@ -260,7 +260,7 @@ TEXT runtime·sigaction(SB),NOSPLIT,$-8
260260
MOVD new+8(FP), R1 // arg 2 - nsa
261261
MOVD old+16(FP), R2 // arg 3 - osa
262262
// arg 4 - tramp
263-
MOVD $runtime·sigreturn_tramp(SB), R3
263+
MOVD $sigreturn_tramp<>(SB), R3
264264
MOVW $2, R4 // arg 5 - vers
265265
SVC $SYS___sigaction_sigtramp
266266
BCS fail

src/runtime/sys_openbsd_386.s

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,9 @@ TEXT runtime·sigfwd(SB),NOSPLIT,$12-16
218218
MOVL AX, SP
219219
RET
220220

221+
// Called by OS using C ABI.
221222
TEXT runtime·sigtramp(SB),NOSPLIT,$28
223+
NOP SP // tell vet SP changed - stop checking offsets
222224
// Save callee-saved C registers, since the caller may be a C signal handler.
223225
MOVL BX, bx-4(SP)
224226
MOVL BP, bp-8(SP)
@@ -227,11 +229,11 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$28
227229
// We don't save mxcsr or the x87 control word because sigtrampgo doesn't
228230
// modify them.
229231

230-
MOVL signo+0(FP), BX
232+
MOVL 32(SP), BX // signo
231233
MOVL BX, 0(SP)
232-
MOVL info+4(FP), BX
234+
MOVL 36(SP), BX // info
233235
MOVL BX, 4(SP)
234-
MOVL context+8(FP), BX
236+
MOVL 40(SP), BX // context
235237
MOVL BX, 8(SP)
236238
CALL runtime·sigtrampgo(SB)
237239

0 commit comments

Comments
 (0)