]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: report gcc ld error message when linking fails
authorqmuntal <quimmuntal@gmail.com>
Mon, 3 Feb 2025 20:05:51 +0000 (21:05 +0100)
committerQuim Muntal <quimmuntal@gmail.com>
Thu, 6 Feb 2025 17:10:09 +0000 (09:10 -0800)
The output of the gcc ld command is useful to understand why a package
that uses cgo can't use internal linking. We should log it.

Change-Id: Id524065fc5348be57387f2b67d1e00861f9adf15
Reviewed-on: https://go-review.googlesource.com/c/go/+/646315
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
src/cmd/go/internal/work/exec.go

index c79d6f73ef4a9d02e1c3253decbfb03fb456c848..8e5d48103339b56994a1e421b9b3bba59c03a472 100644 (file)
@@ -2208,7 +2208,7 @@ func (b *Builder) gccld(a *Action, objdir, outfile string, flags []string, objs
        }
 
        cmdargs := []any{cmd, "-o", outfile, objs, flags}
-       _, err := sh.runOut(base.Cwd(), b.cCompilerEnv(), cmdargs...)
+       out, err := sh.runOut(base.Cwd(), b.cCompilerEnv(), cmdargs...)
 
        // Note that failure is an expected outcome here, so we report output only
        // in debug mode and don't report the error.
@@ -2217,7 +2217,7 @@ func (b *Builder) gccld(a *Action, objdir, outfile string, flags []string, objs
                if err != nil {
                        saw = "failed"
                }
-               sh.ShowCmd("", "%s # test for internal linking errors (%s)", joinUnambiguously(str.StringList(cmdargs...)), saw)
+               sh.ShowCmd("", "%s # test for internal linking errors (%s)\n%s", joinUnambiguously(str.StringList(cmdargs...)), saw, out)
        }
 
        return err