]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/compile/internal/noder/unified.go
cmd/compile: re-compile instantiated generic methods in linkshared mode
[gostls13.git] / src / cmd / compile / internal / noder / unified.go
index f1788c210e30afb0ea9478d04cc241250d3fde54..6c4ac66e3d0eac1be69ebeebd0ea0e458d2416a7 100644 (file)
@@ -158,7 +158,11 @@ func readBodies(target *ir.Package, duringInlining bool) {
                        // Instantiated generic function: add to Decls for typechecking
                        // and compilation.
                        if fn.OClosure == nil && len(pri.dict.targs) != 0 {
-                               if duringInlining {
+                               // cmd/link does not support a type symbol referencing a method symbol
+                               // across DSO boundary, so force re-compiling methods on a generic type
+                               // even it was seen from imported package in linkshared mode, see #58966.
+                               canSkipNonGenericMethod := !(base.Ctxt.Flag_linkshared && ir.IsMethod(fn))
+                               if duringInlining && canSkipNonGenericMethod {
                                        inlDecls = append(inlDecls, fn)
                                } else {
                                        target.Decls = append(target.Decls, fn)