Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 275558) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -5c3f52ffbae7a9bb59bce63cd2cffdd8af8f4a92 +68038b4fdf1456482af986cb05dcf3121bd43ffc The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/go/cmd/go/internal/work/buildid.go =================================================================== --- libgo/go/cmd/go/internal/work/buildid.go (revision 275473) +++ libgo/go/cmd/go/internal/work/buildid.go (working copy) @@ -291,14 +291,19 @@ func (b *Builder) gccgoToolID(name, lang exe = lp } } - if _, err := os.Stat(exe); err != nil { - return "", fmt.Errorf("%s: can not find compiler %q: %v; output %q", name, exe, err, out) + id, err = buildid.ReadFile(exe) + if err != nil { + return "", err + } + + // If we can't find a build ID, use a hash. + if id == "" { + id = b.fileHash(exe) } - id = b.fileHash(exe) } b.id.Lock() - b.toolIDCache[name] = id + b.toolIDCache[key] = id b.id.Unlock() return id, nil