From: Hiroshi Ioka Date: Wed, 16 Aug 2017 22:26:07 +0000 (+0900) Subject: cmd/link: correct runtime/cgo detection for -linkshared X-Git-Tag: go1.10beta1~1498 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=064ae118c1b8db9a5704be2529675cdab05109db;p=gostls13.git cmd/link: correct runtime/cgo detection for -linkshared Current code detect runtime/cgo iff the package or sub packages imports runtime/cgo directly. However, when we are using linkshared, imported shared libraries might have already included runtime/cgo. This CL handles later case by looking an actual runtime/cgo symbol. Change-Id: I35e7dfdb5e1a939eafc95a0259ee1af9782bc864 Reviewed-on: https://go-review.googlesource.com/56310 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index d906893218..c7f14b3e04 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -421,7 +421,6 @@ func (ctxt *Link) loadlib() { var i int for i = 0; i < len(ctxt.Library); i++ { - iscgo = iscgo || ctxt.Library[i].Pkg == "runtime/cgo" if ctxt.Library[i].Shlib == "" { if ctxt.Debugvlog > 1 { ctxt.Logf("%5.2f autolib: %s (from %s)\n", Cputime(), ctxt.Library[i].File, ctxt.Library[i].Objref) @@ -439,6 +438,8 @@ func (ctxt *Link) loadlib() { } } + iscgo = ctxt.Syms.ROLookup("x_cgo_init", 0) != nil + // We now have enough information to determine the link mode. determineLinkMode(ctxt)