[dev.link] cmd/link: add Target and ArchSyms to arch functions

Change-Id: Iab9e5bd8115e81a10067e44397cbe34addda1b63
Reviewed-on: https://go-review.googlesource.com/c/go/+/222064
Run-TryBot: Jeremy Faller <jeremy@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
Jeremy Faller 2020-03-04 15:27:47 -05:00
parent a3873ab49f
commit cb4c84bd9a
12 changed files with 32 additions and 30 deletions

View file

@ -665,13 +665,15 @@ func (ctxt *Link) windynrelocsyms() {
}
func dynrelocsym(ctxt *Link, s *sym.Symbol) {
target := &ctxt.Target
syms := &ctxt.ArchSyms
for ri := range s.R {
r := &s.R[ri]
if ctxt.BuildMode == BuildModePIE && ctxt.LinkMode == LinkInternal {
// It's expected that some relocations will be done
// later by relocsym (R_TLS_LE, R_ADDROFF), so
// don't worry if Adddynrel returns false.
thearch.Adddynrel(ctxt, s, r)
thearch.Adddynrel(ctxt, target, syms, s, r)
continue
}
@ -679,7 +681,7 @@ func dynrelocsym(ctxt *Link, s *sym.Symbol) {
if r.Sym != nil && !r.Sym.Attr.Reachable() {
Errorf(s, "dynamic relocation to unreachable symbol %s", r.Sym.Name)
}
if !thearch.Adddynrel(ctxt, s, r) {
if !thearch.Adddynrel(ctxt, target, syms, s, r) {
Errorf(s, "unsupported dynamic relocation for symbol %s (type=%d (%s) stype=%d (%s))", r.Sym.Name, r.Type, sym.RelocName(ctxt.Arch, r.Type), r.Sym.Type, r.Sym.Type)
}
}