]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: use correct psABI SP alignment before calling libc mmap
authorShenghou Ma <minux@golang.org>
Thu, 18 Feb 2016 21:29:39 +0000 (16:29 -0500)
committerAndrew Gerrand <adg@golang.org>
Thu, 14 Apr 2016 05:20:45 +0000 (05:20 +0000)
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>
Reviewed-on: https://go-review.googlesource.com/22037

src/runtime/sys_linux_amd64.s

index aed85cb0aa0aa836b51651d23c2b07a2cab44f50..f407078176ad39b3e44629dae722d45eafc45bcf 100644 (file)
@@ -258,7 +258,7 @@ TEXT runtime·sysMmap(SB),NOSPLIT,$0
 
 // Call the function stored in _cgo_mmap using the GCC calling convention.
 // 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    n+8(FP), SI
        MOVL    prot+16(FP), DX
@@ -266,7 +266,11 @@ TEXT runtime·callCgoMmap(SB),NOSPLIT,$0
        MOVL    fd+24(FP), R8
        MOVL    off+28(FP), R9
        MOVQ    _cgo_mmap(SB), AX
+       MOVQ    SP, BX
+       ANDQ    $~15, SP        // alignment as per amd64 psABI
+       MOVQ    BX, 0(SP)
        CALL    AX
+       MOVQ    0(SP), SP
        MOVQ    AX, ret+32(FP)
        RET