diff options
Diffstat (limited to 'src/cmd/link/internal/ld/deadcode.go')
| -rw-r--r-- | src/cmd/link/internal/ld/deadcode.go | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/cmd/link/internal/ld/deadcode.go b/src/cmd/link/internal/ld/deadcode.go index f99f5e8984..e1badc2a48 100644 --- a/src/cmd/link/internal/ld/deadcode.go +++ b/src/cmd/link/internal/ld/deadcode.go @@ -107,10 +107,11 @@ func deadcode(ctxt *Link) { } if Buildmode != BuildmodeShared { - // Keep a typelink if the symbol it points at is being kept. - // (When BuildmodeShared, always keep typelinks.) + // Keep a typelink or itablink if the symbol it points at is being kept. + // (When BuildmodeShared, always keep typelinks and itablinks.) for _, s := range ctxt.Allsym { - if strings.HasPrefix(s.Name, "go.typelink.") { + if strings.HasPrefix(s.Name, "go.typelink.") || + strings.HasPrefix(s.Name, "go.itablink.") { s.Attr.Set(AttrReachable, len(s.R) == 1 && s.R[0].Sym.Attr.Reachable()) } } |
