]> Cypherpunks repositories - gostls13.git/commit
cmd/link: always disable lazy PLT resolution when dynamically linking Go
authorMichael Hudson-Doyle <michael.hudson@canonical.com>
Thu, 15 Oct 2015 08:48:11 +0000 (21:48 +1300)
committerMichael Hudson-Doyle <michael.hudson@canonical.com>
Sat, 17 Oct 2015 01:01:42 +0000 (01:01 +0000)
commit69a99ccc6215334d3e4bec16c50dd6f19c2a3940
tree3fcaec1651f691aec2f4fa0d9da69f72fd402701
parentdab143c8820151538fea908efe54e9625d1bc795
cmd/link: always disable lazy PLT resolution when dynamically linking Go

Go cannot allow lazy PLT resolution when calling between Go functions because
the lazy resolution can use more stack than is available. Lazy resolution is
disabled by passing -z now to the system linker, but unfortunately was only
passed when linking to a Go shared library. That sounds fine, but the shared
library containing the runtime is not linked to any other Go shared library but
calls main.init and main.main via a PLT, and before this fix this did use lazy
resolution. (For some reason this never caused a problem on intel, but it
breaks on ppc64le). Fortunately the fix is very simple: always pass -z now to
the system linker when dynamically linking Go.

Change-Id: I7806d40aac80dcd1e56b95864d1cfeb1c42614e2
Reviewed-on: https://go-review.googlesource.com/15870
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/link/internal/ld/lib.go