From 6f7ccafa919acbae98e82871e122fb39593cc52a Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 21 Nov 2014 18:22:05 +0000 Subject: [PATCH] runtime: GOARCH values for ppc64 BE & LE ppc64 for BE ppc64le for LE issue 8654 From-SVN: r217941 --- libgo/configure | 35 ++++++++++++++++++++++++++++++++--- libgo/configure.ac | 13 +++++++++++-- libgo/go/go/build/syslist.go | 2 +- libgo/testsuite/gotest | 2 +- 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/libgo/configure b/libgo/configure index 3352c0ff6d1..ae98e3d187d 100755 --- a/libgo/configure +++ b/libgo/configure @@ -637,6 +637,8 @@ LIBGO_IS_S390X_FALSE LIBGO_IS_S390X_TRUE LIBGO_IS_S390_FALSE LIBGO_IS_S390_TRUE +LIBGO_IS_PPC64LE_FALSE +LIBGO_IS_PPC64LE_TRUE LIBGO_IS_PPC64_FALSE LIBGO_IS_PPC64_TRUE LIBGO_IS_PPC_FALSE @@ -11119,7 +11121,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11122 "configure" +#line 11124 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11225,7 +11227,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11228 "configure" +#line 11230 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -13622,6 +13624,7 @@ is_m68k=no mips_abi=unknown is_ppc=no is_ppc64=no +is_ppc64le=no is_s390=no is_s390x=no is_sparc=no @@ -13733,14 +13736,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext _ACEOF if ac_fn_c_try_compile "$LINENO"; then : is_ppc=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) +#error 64be +#endif +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + is_ppc64le=yes else is_ppc64=yes fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$is_ppc" = "yes"; then GOARCH=ppc - else + elif test "$is_ppc64" = "yes"; then GOARCH=ppc64 + else + GOARCH=ppc64le fi ;; s390*-*-*) @@ -13880,6 +13897,14 @@ else LIBGO_IS_PPC64_FALSE= fi + if test $is_ppc64le = yes; then + LIBGO_IS_PPC64LE_TRUE= + LIBGO_IS_PPC64LE_FALSE='#' +else + LIBGO_IS_PPC64LE_TRUE='#' + LIBGO_IS_PPC64LE_FALSE= +fi + if test $is_s390 = yes; then LIBGO_IS_S390_TRUE= LIBGO_IS_S390_FALSE='#' @@ -15691,6 +15716,10 @@ if test -z "${LIBGO_IS_PPC64_TRUE}" && test -z "${LIBGO_IS_PPC64_FALSE}"; then as_fn_error "conditional \"LIBGO_IS_PPC64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${LIBGO_IS_PPC64LE_TRUE}" && test -z "${LIBGO_IS_PPC64LE_FALSE}"; then + as_fn_error "conditional \"LIBGO_IS_PPC64LE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${LIBGO_IS_S390_TRUE}" && test -z "${LIBGO_IS_S390_FALSE}"; then as_fn_error "conditional \"LIBGO_IS_S390\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/libgo/configure.ac b/libgo/configure.ac index 6dac4d693fe..6f2c6653130 100644 --- a/libgo/configure.ac +++ b/libgo/configure.ac @@ -194,6 +194,7 @@ is_m68k=no mips_abi=unknown is_ppc=no is_ppc64=no +is_ppc64le=no is_s390=no is_s390x=no is_sparc=no @@ -266,11 +267,18 @@ changequote([,])dnl #ifdef _ARCH_PPC64 #error 64-bit #endif], -[is_ppc=yes], [is_ppc64=yes]) +[is_ppc=yes], + [AC_COMPILE_IFELSE([ +#if defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) +#error 64be +#endif], +[is_ppc64le=yes],[is_ppc64=yes])]) if test "$is_ppc" = "yes"; then GOARCH=ppc - else + elif test "$is_ppc64" = "yes"; then GOARCH=ppc64 + else + GOARCH=ppc64le fi ;; s390*-*-*) @@ -310,6 +318,7 @@ AM_CONDITIONAL(LIBGO_IS_MIPSN64, test $mips_abi = n64) AM_CONDITIONAL(LIBGO_IS_MIPSO64, test $mips_abi = o64) AM_CONDITIONAL(LIBGO_IS_PPC, test $is_ppc = yes) AM_CONDITIONAL(LIBGO_IS_PPC64, test $is_ppc64 = yes) +AM_CONDITIONAL(LIBGO_IS_PPC64LE, test $is_ppc64le = yes) AM_CONDITIONAL(LIBGO_IS_S390, test $is_s390 = yes) AM_CONDITIONAL(LIBGO_IS_S390X, test $is_s390x = yes) AM_CONDITIONAL(LIBGO_IS_SPARC, test $is_sparc = yes) diff --git a/libgo/go/go/build/syslist.go b/libgo/go/go/build/syslist.go index 84712bd91fc..bde12a55344 100644 --- a/libgo/go/go/build/syslist.go +++ b/libgo/go/go/build/syslist.go @@ -5,4 +5,4 @@ package build const goosList = "darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris windows " -const goarchList = "386 amd64 amd64p32 arm arm64 alpha m68k mipso32 mipsn32 mipsn64 mipso64 ppc ppc64 s390 s390x sparc sparc64 " +const goarchList = "386 amd64 amd64p32 arm arm64 alpha m68k mipso32 mipsn32 mipsn64 mipso64 ppc ppc64 ppc64le s390 s390x sparc sparc64 " diff --git a/libgo/testsuite/gotest b/libgo/testsuite/gotest index 39beac393c6..1bcd4b9d313 100755 --- a/libgo/testsuite/gotest +++ b/libgo/testsuite/gotest @@ -379,7 +379,7 @@ localname() { { text="T" case "$GOARCH" in - ppc64) text="[TD]" ;; + ppc64*) text="[TD]" ;; esac symtogo='sed -e s/_test/XXXtest/ -e s/.*_\([^_]*\.\)/\1/ -e s/XXXtest/_test/' -- 2.30.2