]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: fix glink resolver generation on ppc64le
authorPaul E. Murphy <murp@ibm.com>
Wed, 10 Mar 2021 20:32:27 +0000 (14:32 -0600)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Thu, 11 Mar 2021 17:36:20 +0000 (17:36 +0000)
AddSymRef grows the section to fit the relocation. This was not
being accounted for. Instead, add a relocation and explicitly
populate it so we patch the desired instructions.

Change-Id: I583147e2545aea34c854f9d35ca920c57be60b90
Reviewed-on: https://go-review.googlesource.com/c/go/+/300949
Run-TryBot: Paul Murphy <murp@ibm.com>
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Lynn Boger <laboger@linux.vnet.ibm.com>

src/cmd/link/internal/ppc64/asm.go

index 602f0b52999a377af6fb7f823560d8cdfeb44c94..83df8a7a1331bae8d2214aa14a5e60410611ac87 100644 (file)
@@ -1039,8 +1039,11 @@ func ensureglinkresolver(ctxt *ld.Link, ldr *loader.Loader) *loader.SymbolBuilde
        glink.AddUint32(ctxt.Arch, 0x7800f082) // srdi r0,r0,2
 
        // r11 = address of the first byte of the PLT
-       glink.AddSymRef(ctxt.Arch, ctxt.PLT, 0, objabi.R_ADDRPOWER, 8)
-
+       r, _ := glink.AddRel(objabi.R_ADDRPOWER)
+       r.SetSym(ctxt.PLT)
+       r.SetSiz(8)
+       r.SetOff(int32(glink.Size()))
+       r.SetAdd(0)
        glink.AddUint32(ctxt.Arch, 0x3d600000) // addis r11,0,.plt@ha
        glink.AddUint32(ctxt.Arch, 0x396b0000) // addi r11,r11,.plt@l