]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix nanotime for macOS Sierra, again.
authorBrad Fitzpatrick <bradfitz@golang.org>
Tue, 2 Aug 2016 04:54:40 +0000 (21:54 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 2 Aug 2016 20:17:50 +0000 (20:17 +0000)
macOS Sierra beta4 changed the kernel interface for getting time.
DX now optionally points to an address for additional info.
Set it to zero to avoid corrupting memory.

Fixes #16570

Change-Id: I9f537e552682045325cdbb68b7d0b4ddafade14a
Reviewed-on: https://go-review.googlesource.com/25400
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Quentin Smith <quentin@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/runtime/sys_darwin_386.s
src/runtime/sys_darwin_amd64.s

index 83f4709f385fbfdb0611c26ae2bb02667b742a19..b5e65e686964bd1d448054aa8574d3633d98b8d0 100644 (file)
@@ -196,15 +196,16 @@ timeloop:
 
 systime:
        // Fall back to system call (usually first call in this thread)
-       LEAL    12(SP), AX      // must be non-nil, unused
+       LEAL    16(SP), AX      // must be non-nil, unused
        MOVL    AX, 4(SP)
        MOVL    $0, 8(SP)       // time zone pointer
+       MOVL    $0, 12(SP)      // required as of Sierra; Issue 16570
        MOVL    $116, AX
        INT     $0x80
        CMPL    AX, $0
        JNE     inreg
-       MOVL    12(SP), AX
-       MOVL    16(SP), DX
+       MOVL    16(SP), AX
+       MOVL    20(SP), DX
 inreg:
        // sec is in AX, usec in DX
        // convert to DX:AX nsec
index e4837ce2915ba126c19f2ef9234bb339f70a49c3..ea2cc068f691353a8b74cb5571fadff93b41a794 100644 (file)
@@ -157,6 +157,7 @@ systime:
        // Fall back to system call (usually first call in this thread).
        MOVQ    SP, DI
        MOVQ    $0, SI
+       MOVQ    $0, DX  // required as of Sierra; Issue 16570
        MOVL    $(0x2000000+116), AX
        SYSCALL
        CMPQ    AX, $0