• Michael Hudson-Doyle's avatar
    cmd/link: always disable lazy PLT resolution when dynamically linking Go · 69a99ccc
    Michael Hudson-Doyle authored
    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/15870Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
    69a99ccc
lib.go 50 KB