From ffad1c54d2e4b698bab8d198a65c6183e74449a8 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sun, 14 Jan 2018 04:59:01 +0000 Subject: go/types: implement SizesFor for gccgo Move the architecture-specific settings out of configure.ac into a new shell script goarch.sh. Use the new script to collect the values for all architectures to make them available in go/types. Also fix cmd/vet to pass the right compiler when it calls SizesFor. This fixes cmd/vet for systems that are not implemented in the gc toolchain, such as alpha and ia64. Reviewed-on: https://go-review.googlesource.com/87635 From-SVN: r256655 --- libgo/configure.ac | 151 ++++++++++------------------------------------------- 1 file changed, 29 insertions(+), 122 deletions(-) (limited to 'libgo/configure.ac') diff --git a/libgo/configure.ac b/libgo/configure.ac index 1077c9e..c497e78 100644 --- a/libgo/configure.ac +++ b/libgo/configure.ac @@ -207,46 +207,41 @@ AC_SUBST(USE_DEJAGNU) # All known GOARCH values. This is the union of all architectures # supported by the gofrontend and all architectures supported by the # gc toolchain. -# N.B. Keep in sync with gcc/testsuite/go.test/go-test.exp (go-set-goarch). +# To add a new architecture: +# - add it to this list +# - if appropriate, add an entry to ALLGOARCHFAMILY below +# - add an entry to the case on ${host} below to set GOARCH +# - update goarchList in libgo/go/go/build/syslist.go +# - update goarch.sh to report the values for this architecture +# - update go-set-goarch in gcc/testsuite/go.test/go-test.exp +# - update ptrSizeMap and intSizeMap in libgo/go/cmd/cgo/main.go +# - update arch lists in libgo/match.sh +# - update arch lists in libgo/testsuite/gotest +# - update +build lines in several places +# - libgo/go/runtime/lfstack_NNbit.go +# - libgo/go/runtime/hashNN.go +# - libgo/go/runtime/unalignedN.go +# - 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" -# All known GOARCH_FAMILY values. +# All known GOARCH family values. ALLGOARCHFAMILY="I386 ALPHA AMD64 ARM ARM64 IA64 M68K MIPS MIPS64 PPC PPC64 S390 S390X SH SPARC SPARC64" GOARCH=unknown -GOARCH_FAMILY=unknown -GOARCH_BIGENDIAN=false -GOARCH_CACHELINESIZE=64 -GOARCH_PHYSPAGESIZE=4096 -GOARCH_PCQUANTUM=1 -GOARCH_INT64ALIGN=8 -GOARCH_HUGEPAGESIZE=0 -GOARCH_MINFRAMESIZE=0 case ${host} in alpha*-*-*) GOARCH=alpha - GOARCH_FAMILY=ALPHA - GOARCH_PHYSPAGESIZE=8192 - GOARCH_PCQUANTUM=4 ;; aarch64-*-*) GOARCH=arm64 - GOARCH_FAMILY=ARM64 - GOARCH_CACHELINESIZE=32 - GOARCH_PHYSPAGESIZE=65536 - GOARCH_PCQUANTUM=4 - GOARCH_MINFRAMESIZE=8 ;; arm*-*-* | strongarm*-*-* | ep9312*-*-* | xscale-*-*) GOARCH=arm - GOARCH_FAMILY=ARM - GOARCH_CACHELINESIZE=32 - GOARCH_PCQUANTUM=4 - GOARCH_MINFRAMESIZE=4 case ${host} in arm*b*-*-*) GOARCH=armbe - GOARCH_BIGENDIAN=true ;; esac ;; @@ -257,29 +252,14 @@ changequote([,])dnl #ifdef __x86_64__ #error 64-bit #endif], -[GOARCH=386 -GOARCH_FAMILY=I386 -GOARCH_INT64ALIGN=4 -GOARCH_HUGEPAGESIZE="1 << 21" -], -[GOARCH=amd64 -GOARCH_FAMILY=AMD64 -GOARCH_HUGEPAGESIZE="1 << 21" -]) +[GOARCH=386], +[GOARCH=amd64]) ;; ia64-*-*) GOARCH=ia64 - GOARCH_FAMILY=IA64 - GOARCH_CACHELINESIZE=128 - GOARCH_PHYSPAGESIZE=65536 ;; m68k*-*-*) GOARCH=m68k - GOARCH_FAMILY=M68K - GOARCH_BIGENDIAN=true - GOARCH_CACHELINESIZE=16 - GOARCH_PCQUANTUM=4 - GOARCH_INT64ALIGN=2 ;; mips*-*-*) AC_COMPILE_IFELSE([ @@ -304,123 +284,50 @@ GOARCH_HUGEPAGESIZE="1 << 21" "n32") GOARCH=mips64p32 ;; "n64") GOARCH=mips64 ;; esac - case "$mips_abi" in - "o32" | "n32") - GOARCH_FAMILY=MIPS - GOARCH_MINFRAMESIZE=4 - ;; - "n64") - GOARCH_FAMILY=MIPS64 - GOARCH_MINFRAMESIZE=8 - ;; - esac case "${host}" in mips*el-*-*) GOARCH="${GOARCH}le" ;; - *) - GOARCH_BIGENDIAN=true - ;; esac - GOARCH_CACHELINESIZE=32 - GOARCH_PHYSPAGESIZE=16384 - GOARCH_PCQUANTUM=4 ;; rs6000*-*-* | powerpc*-*-*) AC_COMPILE_IFELSE([ #ifdef _ARCH_PPC64 #error 64-bit #endif], -[GOARCH=ppc -GOARCH_FAMILY=PPC -GOARCH_BIGENDIAN=true -], +[GOARCH=ppc], [ -GOARCH_FAMILY=PPC64 AC_COMPILE_IFELSE([ #if defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) #error 64be #endif], -[GOARCH=ppc64le -], -[GOARCH=ppc64 -GOARCH_BIGENDIAN=true -])]) - GOARCH_PHYSPAGESIZE=65536 - GOARCH_PCQUANTUM=4 - GOARCH_MINFRAMESIZE=32 +[GOARCH=ppc64le], +[GOARCH=ppc64])]) ;; s390*-*-*) AC_COMPILE_IFELSE([ #if defined(__s390x__) #error 64-bit #endif], -[GOARCH=s390 -GOARCH_FAMILY=S390 -GOARCH_MINFRAMESIZE=4 -], [GOARCH=s390x -GOARCH_FAMILY=S390X -GOARCH_MINFRAMESIZE=8 -]) - GOARCH_BIGENDIAN=true - GOARCH_CACHELINESIZE=256 - GOARCH_PCQUANTUM=2 - ;; - sh3eb*-*-*) - GOARCH=shbe - GOARCH_FAMILY=SH - GOARCH_BIGENDIAN=true - GOARCH_CACHELINESIZE=16 - GOARCH_PCQUANTUM=2 - GOARCH_MINFRAMESIZE=4 +[GOARCH=s390], +[GOARCH=s390x]) ;; - sh3*-*-*) - GOARCH=sh - GOARCH_FAMILY=SH - GOARCH_CACHELINESIZE=16 - GOARCH_PCQUANTUM=2 - GOARCH_MINFRAMESIZE=4 - ;; - sh4eb*-*-*) + sh3eb*-*-* | sh4eb*-*-*) GOARCH=shbe - GOARCH_FAMILY=SH - GOARCH_BIGENDIAN=true - GOARCH_CACHELINESIZE=32 - GOARCH_PCQUANTUM=2 - GOARCH_MINFRAMESIZE=4 ;; - sh4*-*-*) + sh3*-*-* | sh4*-*-*) GOARCH=sh - GOARCH_FAMILY=SH - GOARCH_CACHELINESIZE=32 - GOARCH_PCQUANTUM=2 - GOARCH_MINFRAMESIZE=4 ;; sparc*-*-*) AC_COMPILE_IFELSE([ #if defined(__sparcv9) || defined(__arch64__) #error 64-bit #endif], -[GOARCH=sparc -GOARCH_FAMILY=SPARC -], -[GOARCH=sparc64 -GOARCH_FAMILY=SPARC64 -]) - GOARCH_BIGENDIAN=true - GOARCH_PHYSPAGESIZE=8192 - GOARCH_PCQUANTUM=4 +[GOARCH=sparc], +[GOARCH=sparc64]) ;; esac AC_SUBST(GOARCH) -AC_SUBST(GOARCH_FAMILY) -AC_SUBST(GOARCH_BIGENDIAN) -AC_SUBST(GOARCH_CACHELINESIZE) -AC_SUBST(GOARCH_PHYSPAGESIZE) -AC_SUBST(GOARCH_PCQUANTUM) -AC_SUBST(GOARCH_INT64ALIGN) -AC_SUBST(GOARCH_HUGEPAGESIZE) -AC_SUBST(GOARCH_MINFRAMESIZE) AC_SUBST(ALLGOARCH) AC_SUBST(ALLGOARCHFAMILY) -- cgit v1.1