https://golang.org/issue/16701 points out that `go test -i` fails when
using gccgo.  This patch fixes the problem, by recognizing that the
go/build package will fail to load a standard import when using gccgo.
This is a gccgo-specific patch, because the standard go/build package
does not distinguish standard packages and user-written packages in
this way.  I will leave the issue open to find a better approach in
the future.  This patch bootstrapped and ran Go testsuite on
x86_64-pc-linux-gnu.  Committed to mainline.

Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE     (revision 239443)
+++ gcc/go/gofrontend/MERGE     (working copy)
@@ -1,4 +1,4 @@
-24e0c4c98e0614b1892316aca787f1c564f2d269
+affb1bf5fcd7abf05993c54313d8000b93a08d4a
 
 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/pkg.go
===================================================================
--- libgo/go/cmd/go/pkg.go      (revision 238662)
+++ libgo/go/cmd/go/pkg.go      (working copy)
@@ -763,6 +763,13 @@ var cgoSyscallExclude = map[string]bool{
 func (p *Package) load(stk *importStack, bp *build.Package, err error) 
*Package {
        p.copyBuild(bp)
 
+       // When using gccgo the go/build package will not be able to
+       // find a standard package.  It would be nicer to not get that
+       // error, but go/build doesn't know stdpkg.
+       if runtime.Compiler == "gccgo" && err != nil && p.Standard {
+               err = nil
+       }
+
        // The localPrefix is the path we interpret ./ imports relative to.
        // Synthesized main packages sometimes override this.
        p.localPrefix = dirToImportPath(p.Dir)

Reply via email to