]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: set canUsePlugins only on platforms that support plugin
authorCherry Mui <cherryyz@google.com>
Mon, 15 Dec 2025 20:36:23 +0000 (15:36 -0500)
committerDavid Chase <drchase@google.com>
Mon, 15 Dec 2025 21:08:29 +0000 (13:08 -0800)
If a program imports the plugin package, but the plugin build mode
is not supported on the platform, it still cannot use plugin. Don't
treat it like so.

Updates #76815.

Change-Id: I0fd719427d7c3cc96a94ce1f92d6e4457da92a90
Reviewed-on: https://go-review.googlesource.com/c/go/+/730164
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/cmd/link/internal/ld/lib.go

index 22ee13dff87eca7c5768ff9c788e1dc3d2fdc5b1..bcad5add4abe19bc7a533eed16d217eab2b4401e 100644 (file)
@@ -38,6 +38,7 @@ import (
        "encoding/binary"
        "fmt"
        "internal/buildcfg"
+       "internal/platform"
        "io"
        "log"
        "os"
@@ -576,7 +577,8 @@ func (ctxt *Link) loadlib() {
 
        // Plugins a require cgo support to function. Similarly, plugins may require additional
        // internal linker support on some platforms which may not be implemented.
-       ctxt.canUsePlugins = ctxt.LibraryByPkg["plugin"] != nil && iscgo
+       ctxt.canUsePlugins = ctxt.LibraryByPkg["plugin"] != nil && iscgo &&
+               platform.BuildModeSupported("gc", "plugin", buildcfg.GOOS, buildcfg.GOARCH)
 
        // We now have enough information to determine the link mode.
        determineLinkMode(ctxt)