]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix vet complaints for all nacl
authorRuss Cox <rsc@golang.org>
Wed, 8 May 2019 22:40:58 +0000 (18:40 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 9 May 2019 21:13:46 +0000 (21:13 +0000)
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 <austin@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/vet/all/whitelist/nacl_386.txt [deleted file]
src/cmd/vet/all/whitelist/nacl_amd64p32.txt [deleted file]
src/cmd/vet/all/whitelist/nacl_arm.txt [deleted file]
src/runtime/asm_amd64p32.s
src/runtime/os_nacl.go
src/runtime/signal_nacl_amd64p32.go
src/runtime/sys_nacl_386.s
src/runtime/sys_nacl_amd64p32.s
src/runtime/sys_nacl_arm.s

diff --git a/src/cmd/vet/all/whitelist/nacl_386.txt b/src/cmd/vet/all/whitelist/nacl_386.txt
deleted file mode 100644 (file)
index 9e756d1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-// nacl/386-specific vet whitelist. See readme.txt for details.
-
-runtime/sys_nacl_386.s: [386] nacl_clock_gettime: function nacl_clock_gettime missing Go declaration
-runtime/sys_nacl_386.s: [386] sigtramp: use of 20(SP) points beyond argument frame
-runtime/sys_nacl_386.s: [386] sigtramp: use of 4(SP) points beyond argument frame
-runtime/sys_nacl_386.s: [386] sigtramp: unknown variable ctxt
-runtime/sys_nacl_386.s: [386] sigtramp: use of 8(SP) points beyond argument frame
-runtime/sys_nacl_386.s: [386] sigtramp: use of 12(SP) points beyond argument frame
-runtime/sys_nacl_386.s: [386] sigtramp: use of 20(SP) points beyond argument frame
-runtime/sys_nacl_386.s: [386] sigtramp: unknown variable ctxt
diff --git a/src/cmd/vet/all/whitelist/nacl_amd64p32.txt b/src/cmd/vet/all/whitelist/nacl_amd64p32.txt
deleted file mode 100644 (file)
index fb95a36..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// nacl/amd64p32-specific vet whitelist. See readme.txt for details.
-
-// reflect trampolines intentionally omit arg size. Same for morestack.
-runtime/asm_amd64p32.s: [amd64p32] morestack: use of 8(SP) points beyond argument frame
-runtime/asm_amd64p32.s: [amd64p32] morestack: use of 16(SP) points beyond argument frame
-runtime/asm_amd64p32.s: [amd64p32] morestack: use of 8(SP) points beyond argument frame
-
-runtime/sys_nacl_amd64p32.s: [amd64p32] sigtramp: unknown variable ctxt
-runtime/sys_nacl_amd64p32.s: [amd64p32] sigtramp: unknown variable ctxt
-runtime/sys_nacl_amd64p32.s: [amd64p32] sigtramp: unknown variable ctxt
-runtime/sys_nacl_amd64p32.s: [amd64p32] nacl_sysinfo: function nacl_sysinfo missing Go declaration
-runtime/sys_nacl_amd64p32.s: [amd64p32] nacl_clock_gettime: function nacl_clock_gettime missing Go declaration
-
-// Clearer using FP than SP, but that requires named offsets.
-runtime/asm_amd64p32.s: [amd64p32] rt0_go: unknown variable argc
-runtime/asm_amd64p32.s: [amd64p32] rt0_go: unknown variable argv
-
-runtime/asm_amd64p32.s: [amd64p32] asmcgocall: RET without writing to 4-byte ret+8(FP)
diff --git a/src/cmd/vet/all/whitelist/nacl_arm.txt b/src/cmd/vet/all/whitelist/nacl_arm.txt
deleted file mode 100644 (file)
index 08a613d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-// nacl/arm-specific vet whitelist. See readme.txt for details.
-
-runtime/sys_nacl_arm.s: [arm] nacl_clock_gettime: function nacl_clock_gettime missing Go declaration
-runtime/sys_nacl_arm.s: [arm] nacl_sysinfo: function nacl_sysinfo missing Go declaration
index 4d0d6c565004ea86e6464e4534b3ee17191817f0..48f3711e4d5f4eb125875aae616657141ebecf42 100644 (file)
@@ -9,9 +9,9 @@
 
 TEXT runtime·rt0_go(SB),NOSPLIT,$0
        // copy arguments forward on an even stack
-       MOVL    argc+0(FP), AX
-       MOVL    argv+4(FP), BX
        MOVL    SP, CX
+       MOVL    8(CX), AX       // argc
+       MOVL    12(CX), BX      // argv
        SUBL    $128, CX                // plenty of scratch
        ANDL    $~15, CX
        MOVL    CX, SP
@@ -276,6 +276,7 @@ TEXT runtime·morestack(SB),NOSPLIT,$0-0
 
        // Called from f.
        // Set m->morebuf to f's caller.
+       NOP     SP      // tell vet SP changed - stop checking offsets
        MOVL    8(SP), AX       // f's caller's PC
        MOVL    AX, (m_morebuf+gobuf_pc)(BX)
        LEAL    16(SP), AX      // f's caller's SP
@@ -443,7 +444,8 @@ TEXT runtime·jmpdefer(SB), NOSPLIT, $0-8
 // func asmcgocall(fn, arg unsafe.Pointer) int32
 // Not implemented.
 TEXT runtime·asmcgocall(SB),NOSPLIT,$0-12
-       MOVL    0, AX
+       MOVL    0, AX // crash
+       MOVL    $0, ret+8(FP) // for vet
        RET
 
 // cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
index 155b763c3d7fe26301be1142666a7b9bf5a751ea..2b9a1cf6a5951da0e4ab42e98db9e0bcae79e634 100644 (file)
@@ -77,7 +77,7 @@ func mpreinit(mp *m) {
        mp.gsignal.m = mp
 }
 
-func sigtramp()
+func sigtramp(ctxt byte)
 
 //go:nosplit
 func msigsave(mp *m) {
index 6d656fe14b848b8c8bedf318cf5b9d7b5e4a7f5f..81bbdc5f560c5cf05718848eec6644eed671f34f 100644 (file)
@@ -6,6 +6,8 @@ package runtime
 
 import "unsafe"
 
+func nacl_sysinfo(di uint32) // cross-assembly-file call; declared for vet
+
 type sigctxt struct {
        info *siginfo
        ctxt unsafe.Pointer
index fff75b86263f454f39113e7aed1b4f03d3de658c..8460aabce32f9fb5882346a74bc5a40db4c9dbc8 100644 (file)
@@ -258,15 +258,6 @@ TEXT runtime·walltime(SB),NOSPLIT,$20
 TEXT syscall·now(SB),NOSPLIT,$0
        JMP runtime·walltime(SB)
 
-TEXT runtime·nacl_clock_gettime(SB),NOSPLIT,$8
-       MOVL arg1+0(FP), AX
-       MOVL AX, 0(SP)
-       MOVL arg2+4(FP), AX
-       MOVL AX, 4(SP)
-       NACL_SYSCALL(SYS_clock_gettime)
-       MOVL AX, ret+8(FP)
-       RET
-
 TEXT runtime·nanotime(SB),NOSPLIT,$20
        MOVL $0, 0(SP) // real time clock
        LEAL 8(SP), AX
@@ -307,6 +298,7 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$0
        JMP     ret
 
        // save g
+       NOP     SP      // tell vet SP changed - stop checking offsets
        MOVL    DI, 20(SP)
 
        // g = m->gsignal
@@ -317,7 +309,7 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$0
        // copy arguments for sighandler
        MOVL    $11, 0(SP) // signal
        MOVL    $0, 4(SP) // siginfo
-       LEAL    ctxt+4(FP), AX
+       LEAL    8(SP), AX
        MOVL    AX, 8(SP) // context
        MOVL    DI, 12(SP) // g
 
@@ -359,8 +351,7 @@ ret:
        //
        // We smash BP, because that's what the linker smashes during RET.
        //
-       LEAL    ctxt+4(FP), BP
-       ADDL    $64, BP
+       LEAL    72(SP), BP
        MOVL    0(BP), AX
        MOVL    4(BP), CX
        MOVL    8(BP), DX
index b4a108346d0969cf0a58f35cba0457d04f40f4c2..9f4f69cfc24c69ffb259260826e6da1229736d1c 100644 (file)
@@ -293,13 +293,6 @@ realtime:
 TEXT syscall·now(SB),NOSPLIT,$0
        JMP runtime·walltime(SB)
 
-TEXT runtime·nacl_clock_gettime(SB),NOSPLIT,$0
-       MOVL arg1+0(FP), DI
-       MOVL arg2+4(FP), SI
-       NACL_SYSCALL(SYS_clock_gettime)
-       MOVL AX, ret+8(FP)
-       RET
-
 TEXT runtime·nanotime(SB),NOSPLIT,$16
        MOVQ runtime·faketime(SB), AX
        CMPQ AX, $0
@@ -328,7 +321,7 @@ TEXT runtime·sigtramp(SB),NOSPLIT,$80
        // NOTE: Cannot use SYS_tls_get here (like we do in mstart_nacl),
        // because the main thread never calls tls_set.
        LEAL ctxt+0(FP), AX
-       MOVL (16*4+5*8)(AX), AX
+       MOVL    (16*4+5*8)(AX), AX
        MOVL    AX, TLS
 
        // check that g exists
index b403a18c90cc78fea9c26e6daa3f6790afc6cb99..90201683b7c79585e5f97f7e9242cd1eb07d4bb0 100644 (file)
@@ -217,13 +217,6 @@ TEXT runtime·walltime(SB),NOSPLIT,$16
 TEXT syscall·now(SB),NOSPLIT,$0
        B runtime·walltime(SB)
 
-TEXT runtime·nacl_clock_gettime(SB),NOSPLIT,$0
-       MOVW    arg1+0(FP), R0
-       MOVW    arg2+4(FP), R1
-       NACL_SYSCALL(SYS_clock_gettime)
-       MOVW    R0, ret+8(FP)
-       RET
-
 // int64 nanotime(void) so really
 // void nanotime(int64 *nsec)
 TEXT runtime·nanotime(SB),NOSPLIT,$16
@@ -304,9 +297,6 @@ nog:
        MOVW    $0, R0
        RET
 
-TEXT runtime·nacl_sysinfo(SB),NOSPLIT,$16
-       RET
-
 // func getRandomData([]byte)
 TEXT runtime·getRandomData(SB),NOSPLIT,$0-12
        MOVW arg_base+0(FP), R0