[dev.link] cmd/link: set "local" attribute on symbols during preload

Set the "local" attribute on object file loader symbols during preload,
as opposed to the current strategy of only propagating the local attr
when we convert to sym.Symbols.

Change-Id: I18965e2fdaa9a0b9315d95466d17d9f41aa40a45
Reviewed-on: https://go-review.googlesource.com/c/go/+/224379
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
Than McIntosh 2020-03-19 12:55:43 -04:00
parent 49099d21f5
commit d44c9a046b

View file

@ -1688,6 +1688,9 @@ func (l *Loader) preloadSyms(r *oReader, kind int) {
if osym.TopFrame() { if osym.TopFrame() {
l.SetAttrTopFrame(gi, true) l.SetAttrTopFrame(gi, true)
} }
if osym.Local() {
l.SetAttrLocal(gi, true)
}
if strings.HasPrefix(name, "go.itablink.") { if strings.HasPrefix(name, "go.itablink.") {
l.itablink[gi] = struct{}{} l.itablink[gi] = struct{}{}
} }
@ -1724,6 +1727,10 @@ func loadObjRefs(l *Loader, r *oReader, syms *sym.Symbols) {
name := strings.Replace(osym.Name, "\"\".", r.pkgprefix, -1) name := strings.Replace(osym.Name, "\"\".", r.pkgprefix, -1)
v := abiToVer(osym.ABI, r.version) v := abiToVer(osym.ABI, r.version)
r.syms[ndef+i] = l.LookupOrCreateSym(name, v) r.syms[ndef+i] = l.LookupOrCreateSym(name, v)
if osym.Local() {
gi := r.syms[ndef+i]
l.SetAttrLocal(gi, true)
}
} }
} }