From: Cherry Zhang Date: Thu, 29 Oct 2020 02:46:41 +0000 (-0400) Subject: cmd/link: put C static symbols in the symbol table, attempt 2 X-Git-Tag: go1.16beta1~407 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=75789880a6693a4a0645f1b5924d1ede87308a63;p=gostls13.git cmd/link: put C static symbols in the symbol table, attempt 2 We don't put Go static symbols in the symbol table, as they are always compiler-generated (there is no way to define a static symbol in user code in Go). We retain static symbols in assembly code, as it may be user-defined. Also retain static symbols in C. This is the second attempt of CL 263259, which was reverted because it broke AIX tests in that it brought TOC.stmp symbols in the symbol table. This time we use SymPkg(s) == "" to identify non-Go symbols, instead of IsExternal(s), as the latter also includes linker-modified Go symbols. Change-Id: I5c752c54f0fc6ac4cde6a0e8161dac5b72a47d56 Reviewed-on: https://go-review.googlesource.com/c/go/+/266237 Trust: Cherry Zhang Run-TryBot: Cherry Zhang Run-TryBot: Ian Lance Taylor TryBot-Result: Go Bot Reviewed-by: Than McIntosh --- diff --git a/src/cmd/link/internal/ld/symtab.go b/src/cmd/link/internal/ld/symtab.go index 2e2e392c59..4971389613 100644 --- a/src/cmd/link/internal/ld/symtab.go +++ b/src/cmd/link/internal/ld/symtab.go @@ -519,7 +519,7 @@ func (ctxt *Link) symtab(pcln *pclntab) []sym.SymKind { nsym := loader.Sym(ldr.NSym()) symGroupType := make([]sym.SymKind, nsym) for s := loader.Sym(1); s < nsym; s++ { - if !ctxt.IsExternal() && ldr.IsFileLocal(s) && !ldr.IsFromAssembly(s) { + if !ctxt.IsExternal() && ldr.IsFileLocal(s) && !ldr.IsFromAssembly(s) && ldr.SymPkg(s) != "" { ldr.SetAttrNotInSymbolTable(s, true) } if !ldr.AttrReachable(s) || ldr.AttrSpecial(s) || (ldr.SymType(s) != sym.SRODATA && ldr.SymType(s) != sym.SGOFUNC) {