]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: update plt size appropriately on ppc64
authorLynn Boger <laboger@linux.vnet.ibm.com>
Tue, 13 Oct 2020 13:15:52 +0000 (09:15 -0400)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Tue, 13 Oct 2020 16:26:21 +0000 (16:26 +0000)
When attempting to enable internal linking with cgo on ppc64
it was discovered that the plt size was not being updated
after adding entries to it, which resulted in this error:

  .plt: initialize bounds (16 < 24)

This changes fixes that problem.

Updates #21961

Change-Id: Ie17539c329f5a4802e5defd93852dcdde19ded8c
Reviewed-on: https://go-review.googlesource.com/c/go/+/261837
Trust: Lynn Boger <laboger@linux.vnet.ibm.com>
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/cmd/link/internal/ppc64/asm.go

index dc522e6a3809dd0449c94a6db50f5a82d66b437a..e58bf7370e81707d2e943fc2d5b314635b73bb63 100644 (file)
@@ -994,6 +994,7 @@ func addpltsym(ctxt *ld.Link, ldr *loader.Loader, s loader.Sym) {
                ldr.SetPlt(s, int32(plt.Size()))
 
                plt.Grow(plt.Size() + 8)
+               plt.SetSize(plt.Size() + 8)
 
                rela.AddAddrPlus(ctxt.Arch, plt.Sym(), int64(ldr.SymPlt(s)))
                rela.AddUint64(ctxt.Arch, ld.ELF64_R_INFO(uint32(ldr.SymDynid(s)), uint32(elf.R_PPC64_JMP_SLOT)))