1
0
mirror of https://github.com/golang/go synced 2024-11-12 09:50:21 -07:00

runtime: use correct psABI SP alignment before calling libc mmap

Fixes #14384.

Change-Id: Ib025cf2d20754b4c2db52f0a8a4717fd303371d6
Reviewed-on: https://go-review.googlesource.com/19660
Run-TryBot: Minux Ma <minux@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
Shenghou Ma 2016-02-18 16:29:39 -05:00 committed by Minux Ma
parent 3e40f13cf3
commit 315f4c70f1

View File

@ -258,7 +258,7 @@ TEXT runtime·sysMmap(SB),NOSPLIT,$0
// Call the function stored in _cgo_mmap using the GCC calling convention. // Call the function stored in _cgo_mmap using the GCC calling convention.
// This must be called on the system stack. // This must be called on the system stack.
TEXT runtime·callCgoMmap(SB),NOSPLIT,$0 TEXT runtime·callCgoMmap(SB),NOSPLIT,$16
MOVQ addr+0(FP), DI MOVQ addr+0(FP), DI
MOVQ n+8(FP), SI MOVQ n+8(FP), SI
MOVL prot+16(FP), DX MOVL prot+16(FP), DX
@ -266,7 +266,11 @@ TEXT runtime·callCgoMmap(SB),NOSPLIT,$0
MOVL fd+24(FP), R8 MOVL fd+24(FP), R8
MOVL off+28(FP), R9 MOVL off+28(FP), R9
MOVQ _cgo_mmap(SB), AX MOVQ _cgo_mmap(SB), AX
MOVQ SP, BX
ANDQ $~15, SP // alignment as per amd64 psABI
MOVQ BX, 0(SP)
CALL AX CALL AX
MOVQ 0(SP), SP
MOVQ AX, ret+32(FP) MOVQ AX, ret+32(FP)
RET RET