From d44c9a046b3c9cf13c8fb561fede2cdbdcc8d75e Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Thu, 19 Mar 2020 12:55:43 -0400 Subject: [PATCH] [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 TryBot-Result: Gobot Gobot Reviewed-by: Jeremy Faller Reviewed-by: Cherry Zhang --- src/cmd/link/internal/loader/loader.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index 13c4e5843c..0eaf401f30 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -1688,6 +1688,9 @@ func (l *Loader) preloadSyms(r *oReader, kind int) { if osym.TopFrame() { l.SetAttrTopFrame(gi, true) } + if osym.Local() { + l.SetAttrLocal(gi, true) + } if strings.HasPrefix(name, "go.itablink.") { 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) v := abiToVer(osym.ABI, r.version) r.syms[ndef+i] = l.LookupOrCreateSym(name, v) + if osym.Local() { + gi := r.syms[ndef+i] + l.SetAttrLocal(gi, true) + } } } -- 2.50.0