Commit 10c8b237 authored by Russ Cox's avatar Russ Cox

runtime: align C library startup calls on amd64

This makes GOEXPERIMENT=framepointer, GOOS=darwin, and buildmode=carchive coexist.

Change-Id: I9f6fb2f0f06f27df683e5b51f2fa55cd21872453
Reviewed-on: https://go-review.googlesource.com/23454Reviewed-by: default avatarAustin Clements <austin@google.com>
parent 3be48b4d
...@@ -12,7 +12,14 @@ TEXT _rt0_amd64_darwin(SB),NOSPLIT,$-8 ...@@ -12,7 +12,14 @@ TEXT _rt0_amd64_darwin(SB),NOSPLIT,$-8
// When linking with -shared, this symbol is called when the shared library // When linking with -shared, this symbol is called when the shared library
// is loaded. // is loaded.
TEXT _rt0_amd64_darwin_lib(SB),NOSPLIT,$0x48 TEXT _rt0_amd64_darwin_lib(SB),NOSPLIT,$0x58
// Align stack. We don't know whether Go is adding a frame pointer here or not.
MOVQ SP, R8
SUBQ $16, R8
ANDQ $~15, R8
XCHGQ SP, R8
MOVQ R8, 0x48(SP)
MOVQ BX, 0x18(SP) MOVQ BX, 0x18(SP)
MOVQ BP, 0x20(SP) MOVQ BP, 0x20(SP)
MOVQ R12, 0x28(SP) MOVQ R12, 0x28(SP)
...@@ -51,6 +58,9 @@ restore: ...@@ -51,6 +58,9 @@ restore:
MOVQ 0x30(SP), R13 MOVQ 0x30(SP), R13
MOVQ 0x38(SP), R14 MOVQ 0x38(SP), R14
MOVQ 0x40(SP), R15 MOVQ 0x40(SP), R15
MOVQ 0x48(SP), R8
MOVQ R8, SP
RET RET
TEXT _rt0_amd64_darwin_lib_go(SB),NOSPLIT,$0 TEXT _rt0_amd64_darwin_lib_go(SB),NOSPLIT,$0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment