aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorCherry Zhang <cherryyz@google.com>2020-10-24 13:14:36 -0400
committerCherry Zhang <cherryyz@google.com>2020-10-28 13:25:44 +0000
commit72dec90bfdb60a0ca2ac1b743db472d2e689414e (patch)
tree9c3e315b322275e8b55f01c40757bb0ed2f47b25 /src/cmd
parentcf6cfba4d5358404dd890f6025e573a4b2156543 (diff)
downloadgo-72dec90bfdb60a0ca2ac1b743db472d2e689414e.tar.xz
runtime: set up TLS without cgo on darwin/arm64
Currently, on darwin/arm64 we set up TLS using cgo. TLS is not set for pure Go programs. As we use libc for syscalls on darwin, we need to save the G register before the libc call. Otherwise it is not signal-safe, as a signal may land during the execution of a libc function, where the G register may be clobbered. This CL initializes TLS in Go, by calling the pthread functions directly without cgo. This makes it possible to save the G register to TLS in pure Go programs (done in a later CL). Inspired by Elias's CL 209197. Write the logic in Go instead of assembly. Updates #38485, #35853. Change-Id: I257ba2a411ad387b2f4d50d10129d37fec7a226e Reviewed-on: https://go-review.googlesource.com/c/go/+/265118 Trust: Cherry Zhang <cherryyz@google.com> Trust: Elias Naur <mail@eliasnaur.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/cmd')
0 files changed, 0 insertions, 0 deletions