aboutsummaryrefslogtreecommitdiff
path: root/libgo
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2018-09-25 14:16:32 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2018-09-25 14:16:32 +0000
commitb16084d244418d5421505f09851b5adf5abc35ec (patch)
tree872f530a1669ad0f37d72c8b952ee5fe88d9e334 /libgo
parent97b8f8679d0db4b9159e1640ff34460aaccace74 (diff)
downloadgcc-b16084d244418d5421505f09851b5adf5abc35ec.zip
gcc-b16084d244418d5421505f09851b5adf5abc35ec.tar.gz
gcc-b16084d244418d5421505f09851b5adf5abc35ec.tar.bz2
cmd/go: pass down testing gccgo in TestScript
This permits TestScript to work when gccgo is not installed. Previous testing was using a previously installed gccgo, not the newly built one. This revealed that the testing of whether an internal package is permitted was incorrect for standard library packages, since the uninstalled gccgo can see internal packages in the uninstalled libgo. Fix the internal package tests. This permitted removing a couple of gccgo-specific changes in the testsuite. Reviewed-on: https://go-review.googlesource.com/137255 From-SVN: r264570
Diffstat (limited to 'libgo')
-rw-r--r--libgo/go/cmd/go/internal/load/pkg.go10
-rw-r--r--libgo/go/cmd/go/script_test.go1
-rw-r--r--libgo/go/cmd/go/testdata/script/mod_internal.txt4
3 files changed, 11 insertions, 4 deletions
diff --git a/libgo/go/cmd/go/internal/load/pkg.go b/libgo/go/cmd/go/internal/load/pkg.go
index 0579fd5..b6c9037 100644
--- a/libgo/go/cmd/go/internal/load/pkg.go
+++ b/libgo/go/cmd/go/internal/load/pkg.go
@@ -953,8 +953,14 @@ func disallowInternal(srcDir string, importer *Package, importerPath string, p *
}
// We can't check standard packages with gccgo.
- if cfg.BuildContext.Compiler == "gccgo" && p.Standard {
- return p
+ if cfg.BuildContext.Compiler == "gccgo" {
+ if importer == nil {
+ if p.Standard {
+ return p
+ }
+ } else if importer.Standard || strings.HasPrefix(importerPath, "cmd/") {
+ return p
+ }
}
// The stack includes p.ImportPath.
diff --git a/libgo/go/cmd/go/script_test.go b/libgo/go/cmd/go/script_test.go
index 02cb17b..9e958e0 100644
--- a/libgo/go/cmd/go/script_test.go
+++ b/libgo/go/cmd/go/script_test.go
@@ -78,6 +78,7 @@ var extraEnvKeys = []string{
// For gccgo testing.
"GO_TESTING_GOTOOLS",
+ "GCCGO",
"GCCGOTOOLDIR",
}
diff --git a/libgo/go/cmd/go/testdata/script/mod_internal.txt b/libgo/go/cmd/go/testdata/script/mod_internal.txt
index 84e77c6..72706fd 100644
--- a/libgo/go/cmd/go/testdata/script/mod_internal.txt
+++ b/libgo/go/cmd/go/testdata/script/mod_internal.txt
@@ -16,11 +16,11 @@ stderr 'use of internal package golang.org/x/.* not allowed'
# Internal packages in the standard library should not leak into modules.
! go build ./fromstd
-[!gccgo] stderr 'use of internal package internal/testenv not allowed'
+stderr 'use of internal package internal/testenv not allowed'
# Packages found via standard-library vendoring should not leak.
! go build ./fromstdvendor
-[!gccgo] stderr 'use of vendored package golang_org/x/net/http/httpguts not allowed'
+stderr 'use of vendored package golang_org/x/net/http/httpguts not allowed'
env GO111MODULE=off
! go build ./fromstdvendor