aboutsummaryrefslogtreecommitdiff
path: root/libgo
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2015-11-20 21:30:16 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2015-11-20 21:30:16 +0000
commitdcfa3345eb73a09b43b641e1df2015741220450b (patch)
treee4dce54032eeb6f0868277e245ff6a364cccc0ea /libgo
parent1fb19247a9d1771ffd86e27d55cb8863b32e0f52 (diff)
downloadgcc-dcfa3345eb73a09b43b641e1df2015741220450b.zip
gcc-dcfa3345eb73a09b43b641e1df2015741220450b.tar.gz
gcc-dcfa3345eb73a09b43b641e1df2015741220450b.tar.bz2
cmd: Use correct install tool dir with gccgo
When using the go command built from gccgo to build and install a go tool, use the value from runtime GCCGOTOOLDIR as the install directory. This also fixes the output from 'go tool' when used with the gccgo-built go command, to only include the go tools and not other binaries found in the same directory. Reviewed-on: https://go-review.googlesource.com/16516 From-SVN: r230677
Diffstat (limited to 'libgo')
-rw-r--r--libgo/go/cmd/go/pkg.go6
-rw-r--r--libgo/go/cmd/go/tool.go23
2 files changed, 27 insertions, 2 deletions
diff --git a/libgo/go/cmd/go/pkg.go b/libgo/go/cmd/go/pkg.go
index ff5236e..3270a8b 100644
--- a/libgo/go/cmd/go/pkg.go
+++ b/libgo/go/cmd/go/pkg.go
@@ -785,7 +785,11 @@ func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package
if goTools[p.ImportPath] == toTool {
// This is for 'go tool'.
// Override all the usual logic and force it into the tool directory.
- p.target = filepath.Join(gorootPkg, "tool", full)
+ if buildContext.Compiler == "gccgo" {
+ p.target = filepath.Join(runtime.GCCGOTOOLDIR, elem)
+ } else {
+ p.target = filepath.Join(gorootPkg, "tool", full)
+ }
}
if p.target != "" && buildContext.GOOS == "windows" {
p.target += ".exe"
diff --git a/libgo/go/cmd/go/tool.go b/libgo/go/cmd/go/tool.go
index 937ca1f..4b94939 100644
--- a/libgo/go/cmd/go/tool.go
+++ b/libgo/go/cmd/go/tool.go
@@ -39,6 +39,12 @@ var (
toolN bool
)
+// List of go tools found in the gccgo tool directory.
+// Other binaries could be in the same directory so don't
+// show those with the 'go tool' command.
+
+var gccgoTools = []string{"cgo", "fix", "cover", "godoc", "vet"}
+
func init() {
cmdTool.Flag.BoolVar(&toolN, "n", false, "")
}
@@ -146,6 +152,21 @@ func listTools() {
if toolIsWindows && strings.HasSuffix(name, toolWindowsExtension) {
name = name[:len(name)-len(toolWindowsExtension)]
}
- fmt.Println(name)
+
+ // The tool directory used by gccgo will have other binaries
+ // in additions to go tools. Only display go tools for this list.
+
+ if buildContext.Compiler == "gccgo" {
+ for _, tool := range gccgoTools {
+ if tool == name {
+ fmt.Println(name)
+ }
+ }
+ } else {
+
+ // Not gccgo, list all the tools found in this dir
+
+ fmt.Println(name)
+ }
}
}