diff options
author | Russ Cox <rsc@golang.org> | 2014-09-12 00:23:03 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2014-09-12 00:23:03 -0400 |
commit | 9ea7b4e606b033d7c12c67fa2508f74aca2a8118 (patch) | |
tree | 9cb1117a680c35620ee11e003c070449beb086bc /src/syscall/asm_freebsd_amd64.s | |
parent | 01cc50951b57fd695075fa8a7e53025cf6115da0 (diff) | |
download | go-9ea7b4e606b033d7c12c67fa2508f74aca2a8118.tar.gz |
syscall: make func Syscall use pointer maps from Go prototypes
Before, Syscall and friends were having their arguments
treated conservatively. Now they will use the Go prototype,
which will mean the arguments are not considered pointers
at all.
This is safe because of CL 139360044.
The fact that all these non-Solaris systems were using
conservative scanning of the Syscall arguments is why
the failure that prompted CL 139360044 was only
observed on Solaris, which does something completely different.
If we'd done this earlier, we'd have seen the Solaris
failure in more places.
LGTM=khr
R=khr
CC=golang-codereviews
https://codereview.appspot.com/144730043
Diffstat (limited to 'src/syscall/asm_freebsd_amd64.s')
-rw-r--r-- | src/syscall/asm_freebsd_amd64.s | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/syscall/asm_freebsd_amd64.s b/src/syscall/asm_freebsd_amd64.s index 58cbfe1a9..95583b95c 100644 --- a/src/syscall/asm_freebsd_amd64.s +++ b/src/syscall/asm_freebsd_amd64.s @@ -22,6 +22,7 @@ // Trap # in AX, args in DI SI DX, return in AX DX TEXT ·Syscall(SB),NOSPLIT,$0-56 + GO_ARGS CALL runtime·entersyscall(SB) MOVQ 16(SP), DI MOVQ 24(SP), SI @@ -45,6 +46,7 @@ ok: RET TEXT ·Syscall6(SB),NOSPLIT,$0-80 + GO_ARGS CALL runtime·entersyscall(SB) MOVQ 16(SP), DI MOVQ 24(SP), SI @@ -68,6 +70,7 @@ ok6: RET TEXT ·Syscall9(SB),NOSPLIT,$0-104 + GO_ARGS CALL runtime·entersyscall(SB) MOVQ 8(SP), AX MOVQ 16(SP), DI @@ -101,6 +104,7 @@ ok9: RET TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + GO_ARGS MOVQ 16(SP), DI MOVQ 24(SP), SI MOVQ 32(SP), DX @@ -121,6 +125,7 @@ ok1: RET TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + GO_ARGS MOVQ 16(SP), DI MOVQ 24(SP), SI MOVQ 32(SP), DX |