Skip to content

Commit 56c1cf3

Browse files
committed
runtime: fix vet complaints for all nacl
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 nacl/*, while keeping "GO_BUILDER_NAME=misc-vetall go tool dist test" happy too. For #31916. Change-Id: I6adb4a7b0c2b03d901fba37f9c05e74e5b7b6691 Reviewed-on: https://go-review.googlesource.com/c/go/+/176107 Reviewed-by: Austin Clements <[email protected]> Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent 13723d4 commit 56c1cf3

9 files changed

+12
-66
lines changed

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

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

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

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

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

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

src/runtime/asm_amd64p32.s

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99

1010
TEXT runtime·rt0_go(SB),NOSPLIT,$0
1111
// copy arguments forward on an even stack
12-
MOVL argc+0(FP), AX
13-
MOVL argv+4(FP), BX
1412
MOVL SP, CX
13+
MOVL 8(CX), AX // argc
14+
MOVL 12(CX), BX // argv
1515
SUBL $128, CX // plenty of scratch
1616
ANDL $~15, CX
1717
MOVL CX, SP
@@ -276,6 +276,7 @@ TEXT runtime·morestack(SB),NOSPLIT,$0-0
276276

277277
// Called from f.
278278
// Set m->morebuf to f's caller.
279+
NOP SP // tell vet SP changed - stop checking offsets
279280
MOVL 8(SP), AX // f's caller's PC
280281
MOVL AX, (m_morebuf+gobuf_pc)(BX)
281282
LEAL 16(SP), AX // f's caller's SP
@@ -443,7 +444,8 @@ TEXT runtime·jmpdefer(SB), NOSPLIT, $0-8
443444
// func asmcgocall(fn, arg unsafe.Pointer) int32
444445
// Not implemented.
445446
TEXT runtime·asmcgocall(SB),NOSPLIT,$0-12
446-
MOVL 0, AX
447+
MOVL 0, AX // crash
448+
MOVL $0, ret+8(FP) // for vet
447449
RET
448450

449451
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)

src/runtime/os_nacl.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func mpreinit(mp *m) {
7777
mp.gsignal.m = mp
7878
}
7979

80-
func sigtramp()
80+
func sigtramp(ctxt byte)
8181

8282
//go:nosplit
8383
func msigsave(mp *m) {

src/runtime/signal_nacl_amd64p32.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ package runtime
66

77
import "unsafe"
88

9+
func nacl_sysinfo(di uint32) // cross-assembly-file call; declared for vet
10+
911
type sigctxt struct {
1012
info *siginfo
1113
ctxt unsafe.Pointer

src/runtime/sys_nacl_386.s

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -258,15 +258,6 @@ TEXT runtime·walltime(SB),NOSPLIT,$20
258258
TEXT syscall·now(SB),NOSPLIT,$0
259259
JMP runtime·walltime(SB)
260260

261-
TEXT runtime·nacl_clock_gettime(SB),NOSPLIT,$8
262-
MOVL arg1+0(FP), AX
263-
MOVL AX, 0(SP)
264-
MOVL arg2+4(FP), AX
265-
MOVL AX, 4(SP)
266-
NACL_SYSCALL(SYS_clock_gettime)
267-
MOVL AX, ret+8(FP)
268-
RET
269-
270261
TEXT runtime·nanotime(SB),NOSPLIT,$20
271262
MOVL $0, 0(SP) // real time clock
272263
LEAL 8(SP), AX
@@ -307,6 +298,7 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$0
307298
JMP ret
308299

309300
// save g
301+
NOP SP // tell vet SP changed - stop checking offsets
310302
MOVL DI, 20(SP)
311303

312304
// g = m->gsignal
@@ -317,7 +309,7 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$0
317309
// copy arguments for sighandler
318310
MOVL $11, 0(SP) // signal
319311
MOVL $0, 4(SP) // siginfo
320-
LEAL ctxt+4(FP), AX
312+
LEAL 8(SP), AX
321313
MOVL AX, 8(SP) // context
322314
MOVL DI, 12(SP) // g
323315

@@ -359,8 +351,7 @@ ret:
359351
//
360352
// We smash BP, because that's what the linker smashes during RET.
361353
//
362-
LEAL ctxt+4(FP), BP
363-
ADDL $64, BP
354+
LEAL 72(SP), BP
364355
MOVL 0(BP), AX
365356
MOVL 4(BP), CX
366357
MOVL 8(BP), DX

src/runtime/sys_nacl_amd64p32.s

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -293,13 +293,6 @@ realtime:
293293
TEXT syscall·now(SB),NOSPLIT,$0
294294
JMP runtime·walltime(SB)
295295

296-
TEXT runtime·nacl_clock_gettime(SB),NOSPLIT,$0
297-
MOVL arg1+0(FP), DI
298-
MOVL arg2+4(FP), SI
299-
NACL_SYSCALL(SYS_clock_gettime)
300-
MOVL AX, ret+8(FP)
301-
RET
302-
303296
TEXT runtime·nanotime(SB),NOSPLIT,$16
304297
MOVQ runtime·faketime(SB), AX
305298
CMPQ AX, $0
@@ -328,7 +321,7 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$80
328321
// NOTE: Cannot use SYS_tls_get here (like we do in mstart_nacl),
329322
// because the main thread never calls tls_set.
330323
LEAL ctxt+0(FP), AX
331-
MOVL (16*4+5*8)(AX), AX
324+
MOVL (16*4+5*8)(AX), AX
332325
MOVL AX, TLS
333326

334327
// check that g exists

src/runtime/sys_nacl_arm.s

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -217,13 +217,6 @@ TEXT runtime·walltime(SB),NOSPLIT,$16
217217
TEXT syscall·now(SB),NOSPLIT,$0
218218
B runtime·walltime(SB)
219219

220-
TEXT runtime·nacl_clock_gettime(SB),NOSPLIT,$0
221-
MOVW arg1+0(FP), R0
222-
MOVW arg2+4(FP), R1
223-
NACL_SYSCALL(SYS_clock_gettime)
224-
MOVW R0, ret+8(FP)
225-
RET
226-
227220
// int64 nanotime(void) so really
228221
// void nanotime(int64 *nsec)
229222
TEXT runtime·nanotime(SB),NOSPLIT,$16
@@ -304,9 +297,6 @@ nog:
304297
MOVW $0, R0
305298
RET
306299

307-
TEXT runtime·nacl_sysinfo(SB),NOSPLIT,$16
308-
RET
309-
310300
// func getRandomData([]byte)
311301
TEXT runtime·getRandomData(SB),NOSPLIT,$0-12
312302
MOVW arg_base+0(FP), R0

0 commit comments

Comments
 (0)