cmd/go: include AR env var in gccgo build IDs

The gccgo toolchain uses the archiver specified by the AR environment
variable, or `ar` by default. Teach the build ID to take the value of
this environment variable into account, since different archivers can
produce different results.

Fix #30046.

Change-Id: Ia6821258d54eecedb9026afc38a515cd564c45cb
Reviewed-on: https://go-review.googlesource.com/c/go/+/160897
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
Nikhil Benesch 2019-02-02 12:35:44 -05:00 committed by Brad Fitzpatrick
parent d92bc7a55a
commit 213d1cf3ca
1 changed files with 6 additions and 6 deletions

View File

@ -8,6 +8,11 @@ package work
import (
"bytes"
"cmd/go/internal/base"
"cmd/go/internal/cache"
"cmd/go/internal/cfg"
"cmd/go/internal/load"
"cmd/go/internal/str"
"encoding/json"
"errors"
"fmt"
@ -25,12 +30,6 @@ import (
"strings"
"sync"
"time"
"cmd/go/internal/base"
"cmd/go/internal/cache"
"cmd/go/internal/cfg"
"cmd/go/internal/load"
"cmd/go/internal/str"
)
// actionList returns the list of actions in the dag rooted at root
@ -270,6 +269,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
}
fmt.Fprintf(h, "compile %s %q %q\n", id, forcedGccgoflags, p.Internal.Gccgoflags)
fmt.Fprintf(h, "pkgpath %s\n", gccgoPkgpath(p))
fmt.Fprintf(h, "ar %q\n", BuildToolchain.(gccgoToolchain).ar())
if len(p.SFiles) > 0 {
id, _ = b.gccgoToolID(BuildToolchain.compiler(), "assembler-with-cpp")
// Ignore error; different assembler versions