go/build: use GCCGOTOOLDIR to find gccgo tools

Add the environment variable GCCGOTOOLDIR to permit overriding the default
directory where tools like cgo are found when building with gccgo.

This will be used by the cmd/go tests in a future CL.

Change-Id: I07855bd3f64cced1351183c0408ffa29741b7c3e
Reviewed-on: https://go-review.googlesource.com/45694
Reviewed-by: Than McIntosh <thanm@google.com>
diff --git a/libgo/go/cmd/go/alldocs.go b/libgo/go/cmd/go/alldocs.go
index 3d5dd2b..f946bf6 100644
--- a/libgo/go/cmd/go/alldocs.go
+++ b/libgo/go/cmd/go/alldocs.go
@@ -1143,6 +1143,9 @@
 // 		Defined by Git. A colon-separated list of schemes that are allowed to be used
 // 		with git fetch/clone. If set, any scheme not explicitly mentioned will be
 // 		considered insecure by 'go get'.
+//	GCCGOTOOLDIR
+//		If set, where to find gccgo tools, such as cgo.
+//		The default is based on how gccgo was configured.
 //
 //
 // Import path syntax
diff --git a/libgo/go/cmd/go/help.go b/libgo/go/cmd/go/help.go
index 0c663ad..6b7422c 100644
--- a/libgo/go/cmd/go/help.go
+++ b/libgo/go/cmd/go/help.go
@@ -508,6 +508,9 @@
 		Defined by Git. A colon-separated list of schemes that are allowed to be used
 		with git fetch/clone. If set, any scheme not explicitly mentioned will be
 		considered insecure by 'go get'.
+	GCCGOTOOLDIR
+		If set, where to find gccgo tools, such as cgo.
+		The default is based on how gccgo was configured.
 	`,
 }
 
diff --git a/libgo/go/go/build/build.go b/libgo/go/go/build/build.go
index 4e1b29f..cce5d48 100644
--- a/libgo/go/go/build/build.go
+++ b/libgo/go/go/build/build.go
@@ -1549,7 +1549,7 @@
 
 func getToolDir() string {
 	if runtime.Compiler == "gccgo" {
-		return runtime.GCCGOTOOLDIR
+		return envOr("GCCGOTOOLDIR", runtime.GCCGOTOOLDIR)
 	} else {
 		return filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
 	}