re PR go/84484 (libgo configure tests fail to find -latomic)
authorAndreas Schwab <schwab@linux-m68k.org>
Thu, 22 Feb 2018 19:49:04 +0000 (19:49 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 22 Feb 2018 19:49:04 +0000 (19:49 +0000)
PR go/84484
    libgo: add support for riscv64

    Patch by Andreas Schwab.

    Reviewed-on: https://go-review.googlesource.com/96377

* go.test/go-test.exp (go-set-goarch): Recognize riscv64-*-*.

From-SVN: r257914

17 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/go.test/go-test.exp
libgo/configure
libgo/configure.ac
libgo/go/cmd/cgo/main.go
libgo/go/go/build/syslist.go
libgo/go/internal/syscall/unix/getrandom_linux_generic.go
libgo/go/runtime/hash64.go
libgo/go/runtime/lfstack_64bit.go
libgo/go/runtime/unaligned1.go
libgo/go/syscall/endian_little.go
libgo/go/syscall/libcall_linux_ustat.go
libgo/goarch.sh
libgo/match.sh
libgo/misc/cgo/testcshared/src/libgo2/dup2.go
libgo/misc/cgo/testcshared/src/libgo2/dup3.go
libgo/testsuite/gotest

index e58ed9be1c6950f3fb84eb8c7b01beeb3a113620..2097d800c5efa0c3755e4b65d8d08c451019700d 100644 (file)
@@ -1,3 +1,7 @@
+2018-02-22  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * go.test/go-test.exp (go-set-goarch): Recognize riscv64-*-*.
+
 2018-02-22  Martin Sebor  <msebor@redhat.com>
 
        PR tree-optimization/84480
index 1c83ba11080119c6189748b4bb95fcbd2f2dd3a0..cab0d0e2fbb770ad5cf26cef600dbd9bda62e82c 100644 (file)
@@ -246,6 +246,9 @@ proc go-set-goarch { } {
                }
            }
        }
+       "riscv64-*-*" {
+           set goarch "riscv64"
+       }
        "s390*-*-*" {
            if [check_effective_target_ilp32] {
                set goarch "s390"
index dcfc524bccbe49928dd9afd77dc68468f326c717..c5f8e8a37637219730e105c306187eaa10ce47ec 100755 (executable)
@@ -13653,10 +13653,10 @@ esac
 #   - libgo/go/syscall/endian_XX.go
 #   - possibly others
 # - possibly update files in libgo/go/internal/syscall/unix
-ALLGOARCH="386 alpha amd64 amd64p32 arm armbe arm64 arm64be ia64 m68k mips mipsle mips64 mips64le mips64p32 mips64p32le ppc ppc64 ppc64le s390 s390x sh shbe sparc sparc64"
+ALLGOARCH="386 alpha amd64 amd64p32 arm armbe arm64 arm64be ia64 m68k mips mipsle mips64 mips64le mips64p32 mips64p32le ppc ppc64 ppc64le riscv64 s390 s390x sh shbe sparc sparc64"
 
 # All known GOARCH family values.
-ALLGOARCHFAMILY="I386 ALPHA AMD64 ARM ARM64 IA64 M68K MIPS MIPS64 PPC PPC64 S390 S390X SH SPARC SPARC64"
+ALLGOARCHFAMILY="I386 ALPHA AMD64 ARM ARM64 IA64 M68K MIPS MIPS64 PPC PPC64 RISCV64 S390 S390X SH SPARC SPARC64"
 
 GOARCH=unknown
 case ${host} in
@@ -13773,6 +13773,9 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     ;;
+  riscv64-*-*)
+    GOARCH=riscv64
+    ;;
   s390*-*-*)
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
index 1f49aee9e17c48d14bef03ae9274841ccc4cac88..eabe294afa92b54057187f03330efba2fb12b625 100644 (file)
@@ -224,10 +224,10 @@ AC_SUBST(USE_DEJAGNU)
 #   - libgo/go/syscall/endian_XX.go
 #   - possibly others
 # - possibly update files in libgo/go/internal/syscall/unix
-ALLGOARCH="386 alpha amd64 amd64p32 arm armbe arm64 arm64be ia64 m68k mips mipsle mips64 mips64le mips64p32 mips64p32le ppc ppc64 ppc64le s390 s390x sh shbe sparc sparc64"
+ALLGOARCH="386 alpha amd64 amd64p32 arm armbe arm64 arm64be ia64 m68k mips mipsle mips64 mips64le mips64p32 mips64p32le ppc ppc64 ppc64le riscv64 s390 s390x sh shbe sparc sparc64"
 
 # All known GOARCH family values.
-ALLGOARCHFAMILY="I386 ALPHA AMD64 ARM ARM64 IA64 M68K MIPS MIPS64 PPC PPC64 S390 S390X SH SPARC SPARC64"
+ALLGOARCHFAMILY="I386 ALPHA AMD64 ARM ARM64 IA64 M68K MIPS MIPS64 PPC PPC64 RISCV64 S390 S390X SH SPARC SPARC64"
 
 GOARCH=unknown
 case ${host} in
@@ -304,6 +304,9 @@ AC_COMPILE_IFELSE([
 [GOARCH=ppc64le],
 [GOARCH=ppc64])])
     ;;
+  riscv64-*-*)
+    GOARCH=riscv64
+    ;;
   s390*-*-*)
     AC_COMPILE_IFELSE([
 #if defined(__s390x__)
index f5c231ced6d302fdadf5d82abe6a04c95f472a9f..6baabfd1336691ea9079d9f9388ef945fa08d852 100644 (file)
@@ -168,6 +168,7 @@ var ptrSizeMap = map[string]int64{
        "ppc":         4,
        "ppc64":       8,
        "ppc64le":     8,
+       "riscv64":     8,
        "s390":        4,
        "s390x":       8,
        "sh":          4,
@@ -192,6 +193,7 @@ var intSizeMap = map[string]int64{
        "ppc":         4,
        "ppc64":       8,
        "ppc64le":     8,
+       "riscv64":     8,
        "s390":        4,
        "s390x":       8,
        "sh":          4,
index 6bf72630e7cea2a9072662f0f1e4e4fe99cacb56..679d195025e276539aff47dc8a0a23a0e1375abf 100644 (file)
@@ -5,4 +5,4 @@
 package build
 
 const goosList = "aix android darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris windows zos "
-const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be alpha m68k ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le ppc s390 s390x sh shbe sparc sparc64"
+const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be alpha m68k ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le ppc riscv64 s390 s390x sh shbe sparc sparc64"
index 8425800b6da8417cb53763f32219e701888703f6..d6af3dea8d72b5305b17b0606c903a4849d95e72 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build arm64
+// +build arm64 riscv64
 
 package unix
 
index 5912943a4e9774cc624d8319e1d02edf785ac4ae..74775a88f269768d52738f68c4987371b4ab9d4d 100644 (file)
@@ -6,7 +6,7 @@
 //   xxhash: https://code.google.com/p/xxhash/
 // cityhash: https://code.google.com/p/cityhash/
 
-// +build amd64 amd64p32 arm64 mips64 mips64le ppc64 ppc64le s390x alpha arm64be ia64 mips64p32 mips64p32le sparc64
+// +build amd64 amd64p32 arm64 mips64 mips64le ppc64 ppc64le s390x alpha arm64be ia64 mips64p32 mips64p32le sparc64 riscv64
 
 package runtime
 
index 95d0eba57a6b138bc6943a4e995296d049891c76..dca17181e3e06bdc367a5371729dd534db663d51 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build amd64 arm64 mips64 mips64le ppc64 ppc64le s390x arm64be alpha sparc64 ia64
+// +build amd64 arm64 mips64 mips64le ppc64 ppc64le s390x arm64be alpha sparc64 ia64 riscv64
 
 package runtime
 
index c94f19eeb940cc27d8e8cf8a7614bedc2990f304..2f5b63a4c7c0f1bbf5e12ec6e8bc21f2f42388d3 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build 386 amd64 amd64p32 arm64 ppc64 ppc64le s390x ppc s390 arm64be
+// +build 386 amd64 amd64p32 arm64 ppc64 ppc64le s390x ppc s390 arm64be riscv64
 
 package runtime
 
index b91d4bb72de745d80ebbf57a538137085e585bcc..4a7312198f5bde8e05a1008555d34058c36bdb9a 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 //
-// +build 386 amd64 amd64p32 arm arm64 ppc64le mips64le mipsle alpha ia64 mips64p32le sh
+// +build 386 amd64 amd64p32 arm arm64 ppc64le mips64le mipsle alpha ia64 mips64p32le sh riscv64
 
 package syscall
 
index 261f086f47e2f8647287fc11cbdd746f2570d069..3aff344f25c05a90084bbfa2c339813ba3e5e26b 100644 (file)
@@ -4,7 +4,7 @@
 
 // GNU/Linux library ustat call.
 // This is not supported on some kernels, such as arm64.
-// +build !arm64
+// +build !arm64,!riscv64
 
 package syscall
 
index 9165e6a19a3af2f9fedd743897c8870579f98b89..c63cbbaa76b4d55d1007696303900e4443f9bb60 100755 (executable)
@@ -146,6 +146,10 @@ case $goarch in
                ;;
        esac
        ;;
+    riscv64)
+       family=RISCV64
+       pcquantum=2
+       ;;
     s390)
        family=S390
        bigendian=true
index 62405556ede915d3d036f6987c15fbb6bacf82c0..9247ec6f40d0b45e6f5d47f48bc79594e0657e5a 100755 (executable)
@@ -116,7 +116,7 @@ for f in $gofiles; do
        aix | android | darwin | dragonfly | freebsd | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
            tag1=nonmatchingtag
            ;;
-       386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | ppc64 | ppc64le | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | ppc | s390 | s390x | sh | shbe | sparc | sparc64)
+       386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | ppc64 | ppc64le | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | ppc | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64)
            tag1=nonmatchingtag
            ;;
     esac
@@ -128,7 +128,7 @@ for f in $gofiles; do
        aix | android | darwin | dragonfly | freebsd | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
            tag2=nonmatchingtag
            ;;
-       386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | ppc64 | ppc64le | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | ppc | s390 | s390x | sh | shbe | sparc | sparc64)
+       386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | ppc64 | ppc64le | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | ppc | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64)
            tag2=nonmatchingtag
            ;;
     esac
index d18f0b130d3f767671e4030fd34056c85c4bd132..d343aa54d9a8779450092461213c8d748d26fb84 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build darwin dragonfly freebsd linux,!arm64 netbsd openbsd
+// +build darwin dragonfly freebsd linux,!arm64,!riscv64 netbsd openbsd
 
 package main
 
index c9c65a6e3c1f62be51add7bc6c129cb92dabe2b3..459f0dc196874fbf53db87bf2d976f21d18c4043 100644 (file)
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build linux,arm64
+// +build linux,arm64 linux,riscv64
 
 package main
 
index f978042cccc6b300ab2f3263379306f9af8b8aba..06848fdb1f0b0da0306c59af19c7c169508929d5 100755 (executable)
@@ -314,7 +314,7 @@ x)
            aix | android | darwin | dragonfly | freebsd | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
                tag1=nonmatchingtag
                ;;
-           386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | ppc64 | ppc64le | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | ppc | s390 | s390x | sh | shbe | sparc | sparc64)
+           386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | ppc64 | ppc64le | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | ppc | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64)
                tag1=nonmatchingtag
                ;;
            esac
@@ -326,7 +326,7 @@ x)
            aix | android | darwin | dragonfly | freebsd | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
                tag2=nonmatchingtag
                ;;
-           386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | ppc64 | ppc64le | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | ppc | s390 | s390x | sh | shbe | sparc | sparc64)
+           386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | ppc64 | ppc64le | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | ppc | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64)
                tag2=nonmatchingtag
                ;;
            esac