]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: added support for GOARCH=mips64{,le}
authorYao Zhang <lunaria21@gmail.com>
Thu, 10 Sep 2015 14:16:45 +0000 (10:16 -0400)
committerMinux Ma <minux@golang.org>
Thu, 12 Nov 2015 04:54:40 +0000 (04:54 +0000)
Change-Id: I22ea3352ad0794fc611334c2f2ec5f1e894985ce
Reviewed-on: https://go-review.googlesource.com/14460
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
src/cmd/dist/build.go
src/cmd/dist/buildtool.go
src/cmd/dist/test.go
src/cmd/dist/util.go

index bcf6e71d529044668b6b4f42fe7c5d636465f158..a30cd862b5ee1e24e952cef9b8022748737e0ad5 100644 (file)
@@ -54,6 +54,8 @@ var okgoarch = []string{
        "amd64p32",
        "arm",
        "arm64",
+       "mips64",
+       "mips64le",
        "ppc64",
        "ppc64le",
 }
index 8a55b5da7011368853999fd4232d9fa5e74c3755..20d95353075355c492d2efd12e09d32cfdde865a 100644 (file)
@@ -34,12 +34,14 @@ var bootstrapDirs = []string{
        "compile/internal/arm64",
        "compile/internal/big",
        "compile/internal/gc",
+       "compile/internal/mips64",
        "compile/internal/ppc64",
        "compile/internal/x86",
        "internal/gcprog",
        "internal/obj",
        "internal/obj/arm",
        "internal/obj/arm64",
+       "internal/obj/mips",
        "internal/obj/ppc64",
        "internal/obj/x86",
        "link",
@@ -47,6 +49,7 @@ var bootstrapDirs = []string{
        "link/internal/arm",
        "link/internal/arm64",
        "link/internal/ld",
+       "link/internal/mips64",
        "link/internal/ppc64",
        "link/internal/x86",
 }
index 99e0c6907808dcfc2b68d7dcb4c9465ff86a8a61..caaec1d4fd17bb921d0a5480a372ece797a7e10b 100644 (file)
@@ -745,6 +745,10 @@ func (t *tester) cgoTestSOSupported() bool {
                // External linking not implemented on ppc64 (issue #8912).
                return false
        }
+       if t.goarch == "mips64le" || t.goarch == "mips64" {
+               // External linking not implemented on mips64.
+               return false
+       }
        return true
 }
 
index 2fcd9ca995b3d081df6189391d99cac707c851c2..d1e5787d6629c942cd70cd6fe7b068eae016edc6 100644 (file)
@@ -6,6 +6,8 @@ package main
 
 import (
        "bytes"
+       "debug/elf"
+       "encoding/binary"
        "fmt"
        "io/ioutil"
        "os"
@@ -438,6 +440,16 @@ func main() {
                        gohostarch = "ppc64le"
                case strings.Contains(out, "ppc64"):
                        gohostarch = "ppc64"
+               case strings.Contains(out, "mips64"):
+                       file, err := elf.Open(os.Args[0])
+                       if err != nil {
+                               fatal("failed to open %s to determine endianness: %v", os.Args[0], err)
+                       }
+                       if file.FileHeader.ByteOrder == binary.BigEndian {
+                               gohostarch = "mips64"
+                       } else {
+                               gohostarch = "mips64le"
+                       }
                case gohostos == "darwin":
                        if strings.Contains(run("", CheckExit, "uname", "-v"), "RELEASE_ARM_") {
                                gohostarch = "arm"