1
0
mirror of https://github.com/golang/go synced 2024-11-26 08:17:59 -07:00

cmd/link: count relocations better

Change-Id: Ie188abeb0194bf266d38c9bd0dda4b8f48934697
Reviewed-on: https://go-review.googlesource.com/c/go/+/312035
Trust: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
Russ Cox 2021-04-14 19:53:43 -04:00
parent 41e5ae4883
commit 199575a119

View File

@ -524,7 +524,6 @@ func (f *peFile) emitRelocations(ctxt *Link) {
if sect.Vaddr >= sect.Seg.Vaddr+sect.Seg.Filelen { if sect.Vaddr >= sect.Seg.Vaddr+sect.Seg.Filelen {
return 0 return 0
} }
nrelocs := 0
sect.Reloff = uint64(ctxt.Out.Offset()) sect.Reloff = uint64(ctxt.Out.Offset())
for i, s := range syms { for i, s := range syms {
if !ldr.AttrReachable(s) { if !ldr.AttrReachable(s) {
@ -562,11 +561,11 @@ func (f *peFile) emitRelocations(ctxt *Link) {
if !thearch.PEreloc1(ctxt.Arch, ctxt.Out, ldr, s, rr, int64(uint64(ldr.SymValue(s)+int64(r.Off()))-base)) { if !thearch.PEreloc1(ctxt.Arch, ctxt.Out, ldr, s, rr, int64(uint64(ldr.SymValue(s)+int64(r.Off()))-base)) {
ctxt.Errorf(s, "unsupported obj reloc %d/%d to %s", r.Type(), r.Siz(), ldr.SymName(r.Sym())) ctxt.Errorf(s, "unsupported obj reloc %d/%d to %s", r.Type(), r.Siz(), ldr.SymName(r.Sym()))
} }
nrelocs++
} }
} }
sect.Rellen = uint64(ctxt.Out.Offset()) - sect.Reloff sect.Rellen = uint64(ctxt.Out.Offset()) - sect.Reloff
return nrelocs const relocLen = 4 + 4 + 2
return int(sect.Rellen / relocLen)
} }
sects := []struct { sects := []struct {