[dev.link] cmd/link: fix buglet in new GCProg generation code

It should check the name of the symbol being added, not the
GC data symbol we're generating.

Change-Id: I123679778ee542b8d1f5c15bf090fa3578025c19
Reviewed-on: https://go-review.googlesource.com/c/go/+/230018
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Cherry Zhang 2020-04-24 15:19:55 -04:00
parent 1d083eba5b
commit c7a11099c9

View File

@ -1084,14 +1084,14 @@ func (p *GCProg2) AddSym(s loader.Sym) {
// Things without pointers should be in sym.SNOPTRDATA or sym.SNOPTRBSS; // Things without pointers should be in sym.SNOPTRDATA or sym.SNOPTRBSS;
// everything we see should have pointers and should therefore have a type. // everything we see should have pointers and should therefore have a type.
if typ == 0 { if typ == 0 {
switch p.sym.Name() { switch ldr.SymName(s) {
case "runtime.data", "runtime.edata", "runtime.bss", "runtime.ebss": case "runtime.data", "runtime.edata", "runtime.bss", "runtime.ebss":
// Ignore special symbols that are sometimes laid out // Ignore special symbols that are sometimes laid out
// as real symbols. See comment about dyld on darwin in // as real symbols. See comment about dyld on darwin in
// the address function. // the address function.
return return
} }
p.ctxt.Errorf(p.sym.Sym(), "missing Go type information for global symbol: size %d", ldr.SymSize(s)) p.ctxt.Errorf(p.sym.Sym(), "missing Go type information for global symbol %s: size %d", ldr.SymName(s), ldr.SymSize(s))
return return
} }