]> Cypherpunks repositories - gostls13.git/commitdiff
Run initcgo for all amd64 targets, not just GNU/Linux.
authorIan Lance Taylor <iant@golang.org>
Fri, 9 Apr 2010 21:15:15 +0000 (14:15 -0700)
committerIan Lance Taylor <iant@golang.org>
Fri, 9 Apr 2010 21:15:15 +0000 (14:15 -0700)
This is required to make cgo export work on Darwin.  Note that
this corrects the stack alignment when calling initcgo to that
required by gcc on amd64.

R=rsc
CC=golang-dev
https://golang.org/cl/907041

src/pkg/runtime/amd64/asm.s
src/pkg/runtime/linux/amd64/rt0.s

index 627af66320049d6aadaa567324d872b974061cd3..52b0a89bcb6db5309d67fc09e29f32efe78afb80 100644 (file)
@@ -9,10 +9,16 @@ TEXT  _rt0_amd64(SB),7,$-8
        MOVQ    0(DI), AX               // argc
        LEAQ    8(DI), BX               // argv
        SUBQ    $(4*8+7), SP            // 2args 2auto
-       ANDQ    $~7, SP
+       ANDQ    $~15, SP
        MOVQ    AX, 16(SP)
        MOVQ    BX, 24(SP)
 
+       // if there is an initcgo, call it.
+       MOVQ    initcgo(SB), AX
+       TESTQ   AX, AX
+       JZ      2(PC)
+       CALL    AX
+
        // set the per-goroutine and per-mach registers
        LEAQ    m0(SB), m
        LEAQ    g0(SB), g
@@ -372,4 +378,5 @@ TEXT getcallersp(SB),7,$0
        MOVQ    sp+0(FP), AX
        RET
 
+GLOBL initcgo(SB), $8
 GLOBL libcgo_set_scheduler(SB), $8
index 6b1b2977523189e9ff3bd9d668c5eeba0dc791b7..2190b441445d0c7d02e4acf113afd2f9cbc33c92 100644 (file)
@@ -5,13 +5,6 @@
 // Darwin and Linux use the same linkage to main
 
 TEXT   _rt0_amd64_linux(SB),7,$-8
-       MOVQ    initcgo(SB), AX
-       TESTQ   AX, AX
-       JZ      2(PC)
-       CALL    AX
-
        MOVQ    $_rt0_amd64(SB), AX
        MOVQ    SP, DI
        JMP     AX
-
-GLOBL initcgo(SB), $8