]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.17] cmd/link: force eager binding when using plugins on darwin
authorCherry Mui <cherryyz@google.com>
Thu, 16 Dec 2021 19:33:13 +0000 (14:33 -0500)
committerCherry Mui <cherryyz@google.com>
Mon, 7 Feb 2022 20:38:20 +0000 (20:38 +0000)
commit4a31565cc00d3bfbdb3a1eec51ebde01a7219f44
tree41804a1a427790ed8e5eb08f724fed06fe78821e
parente16331902340c02bdf1831b5508df2307b871ef6
[release-branch.go1.17] cmd/link: force eager binding when using plugins on darwin

When building/using plugins on darwin, we need to use flat
namespace so the same symbol from the main executable and the
plugin can be resolved to the same address. Apparently, when using
flat namespace the dynamic linker can hang at forkExec when
resolving a lazy binding. Work around it by forcing early bindings.

Updates #38824.
Fixes #50246.

Change-Id: I983aa0a0960b15bf3f7871382e8231ee244655f4
Reviewed-on: https://go-review.googlesource.com/c/go/+/372798
Trust: Cherry Mui <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
(cherry picked from commit c5fee935bbb8f02406eb653cfed550593755a1a4)
Reviewed-on: https://go-review.googlesource.com/c/go/+/373094
misc/cgo/testplugin/plugin_test.go
misc/cgo/testplugin/testdata/forkexec/main.go [new file with mode: 0644]
src/cmd/link/internal/ld/lib.go