cmd/go: silence ar with D flag failures

The first call of ar must not show its output in order to avoid useless
    error messages about D flag.
    The corresponding Go toolchain patch is CL 182077.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/183817

From-SVN: r272661
This commit is contained in:
Ian Lance Taylor 2019-06-26 00:04:36 +00:00
parent ebecdd0c36
commit c31a34018a
2 changed files with 9 additions and 2 deletions

View File

@ -1,4 +1,4 @@
a857aad2f3994e6fa42a6fc65330e65d209597a0
1d6578a20a9a2ee599a07f03cf7f8e7797d72b9c
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -209,9 +209,16 @@ func (tools gccgoToolchain) pack(b *Builder, a *Action, afile string, ofiles []s
}
absAfile := mkAbs(objdir, afile)
// Try with D modifier first, then without if that fails.
if b.run(a, p.Dir, p.ImportPath, nil, tools.ar(), arArgs, "rcD", absAfile, absOfiles) != nil {
output, err := b.runOut(p.Dir, nil, tools.ar(), arArgs, "rcD", absAfile, absOfiles)
if err != nil {
return b.run(a, p.Dir, p.ImportPath, nil, tools.ar(), arArgs, "rc", absAfile, absOfiles)
}
if len(output) > 0 {
// Show the output if there is any even without errors.
b.showOutput(a, p.Dir, p.ImportPath, b.processOutput(output))
}
return nil
}