• Lynn Boger's avatar
    cmd/go,cmd/link: support buildmode c-shared on ppc64le · 3e7abf82
    Lynn Boger authored
    This change enables buildmode c-shared on ppc64le.
    
    A bug was fixed in runtime/rt0_linux_ppc64le.s that was necessary to
    make this work.  In _rt0_ppc64le_linux_lib, there is code to store
    the value of r2 onto the caller's stack.  However, if this file
    is compiled using a build mode that maintains the TOC address in
    r2, then instructions will be inserted at the beginning of this
    function to generate the r2 value for the callee, not the caller.
    That means the r2 value for the callee is stored onto the caller's
    stack.  If caller and callee don't have the same r2 values, then
    the caller will restore the wrong r2 value after it returns.  This
    situation can happen when using dlopen since the caller of this
    function will be in ld64.so and will definitely have a different
    TOC.
    
    Updates #20756
    
    Change-Id: I6e165e0d0716e73721bbbcc520e8302e4856e3ba
    Reviewed-on: https://go-review.googlesource.com/53890Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    3e7abf82
test.go 34.8 KB