aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/link/internal/ld/lib.go
diff options
context:
space:
mode:
authorCherry Zhang <cherryyz@google.com>2020-06-30 18:41:24 -0400
committerCherry Zhang <cherryyz@google.com>2020-07-01 14:41:27 +0000
commitd7553d9af916682e9f68d1a1aa585a12293ed1f8 (patch)
tree88f96434a3379f4aba80a86703116457b22fcf2c /src/cmd/link/internal/ld/lib.go
parent84152d57692fc21ad5ee4bcf8eb0a5ec2a958790 (diff)
downloadgo-d7553d9af916682e9f68d1a1aa585a12293ed1f8.tar.gz
go-d7553d9af916682e9f68d1a1aa585a12293ed1f8.zip
cmd/link: mark special symbols reachable
The special symbols are linker-created symbols for special purposes, therefore reachable (otherwise the linker won't create them). Mark them so, so they get converted to sym.Symbols when we convert to old symbol representation. In particular, the failure for building shared library on PPC64 is due to .TOC. symbol not being converted to sym.Symbol, but referenced in addmoduledata. Change-Id: Iaf5d145ffa5d15122e86a6e6983514e56dd5d456 Reviewed-on: https://go-review.googlesource.com/c/go/+/240620 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
Diffstat (limited to 'src/cmd/link/internal/ld/lib.go')
-rw-r--r--src/cmd/link/internal/ld/lib.go2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
index 61ccc28a1d..7b6fd9594d 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -157,6 +157,7 @@ const AfterLoadlibFull = 2
func (ctxt *Link) mkArchSym(which int, name string, ver int, ls *loader.Sym, ss **sym.Symbol) {
if which == BeforeLoadlibFull {
*ls = ctxt.loader.LookupOrCreateSym(name, ver)
+ ctxt.loader.SetAttrReachable(*ls, true)
} else {
*ss = ctxt.loader.Syms[*ls]
}
@@ -167,6 +168,7 @@ func (ctxt *Link) mkArchSym(which int, name string, ver int, ls *loader.Sym, ss
func (ctxt *Link) mkArchSymVec(which int, name string, ver int, ls []loader.Sym, ss []*sym.Symbol) {
if which == BeforeLoadlibFull {
ls[ver] = ctxt.loader.LookupOrCreateSym(name, ver)
+ ctxt.loader.SetAttrReachable(ls[ver], true)
} else if ls[ver] != 0 {
ss[ver] = ctxt.loader.Syms[ls[ver]]
}