From: Paul E. Murphy Date: Wed, 10 Mar 2021 20:32:27 +0000 (-0600) Subject: cmd/link: fix glink resolver generation on ppc64le X-Git-Tag: go1.17beta1~1180 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0a655598e150ee8ddd96573744c4b60735658f32;p=gostls13.git cmd/link: fix glink resolver generation on ppc64le 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 Run-TryBot: Lynn Boger Reviewed-by: Cherry Zhang TryBot-Result: Go Bot Trust: Lynn Boger --- diff --git a/src/cmd/link/internal/ppc64/asm.go b/src/cmd/link/internal/ppc64/asm.go index 602f0b5299..83df8a7a13 100644 --- a/src/cmd/link/internal/ppc64/asm.go +++ b/src/cmd/link/internal/ppc64/asm.go @@ -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