configure.ac: Add aarch64-*-freebsd*.
[platform/upstream/gcc.git] / gcc / config.gcc
index 0dfc08f..7bbf546 100644 (file)
@@ -1,5 +1,5 @@
 # GCC target-specific configuration file.
-# Copyright (C) 1997-2015 Free Software Foundation, Inc.
+# Copyright (C) 1997-2016 Free Software Foundation, Inc.
 
 #This file is part of GCC.
 
@@ -236,7 +236,6 @@ md_file=
 
 # Obsolete configurations.
 case ${target} in
-# Currently there are no obsolete targets.
  nothing                               \
  )
     if test "x$enable_obsolete" != xyes; then
@@ -301,8 +300,10 @@ m32c*-*-*)
         ;;
 aarch64*-*-*)
        cpu_type=aarch64
-       extra_headers="arm_neon.h arm_acle.h"
-       extra_objs="aarch64-builtins.o aarch-common.o"
+       extra_headers="arm_fp16.h arm_neon.h arm_acle.h"
+       c_target_objs="aarch64-c.o"
+       cxx_target_objs="aarch64-c.o"
+       extra_objs="aarch64-builtins.o aarch-common.o cortex-a57-fma-steering.o"
        target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.c"
        target_has_targetm_common=yes
        ;;
@@ -315,11 +316,13 @@ am33_2.0-*-linux*)
        ;;
 arc*-*-*)
        cpu_type=arc
+       c_target_objs="arc-c.o"
+       cxx_target_objs="arc-c.o"
        ;;
 arm*-*-*)
        cpu_type=arm
        extra_objs="arm-builtins.o aarch-common.o"
-       extra_headers="mmintrin.h arm_neon.h arm_acle.h"
+       extra_headers="mmintrin.h arm_neon.h arm_acle.h arm_fp16.h"
        target_type_format_char='%'
        c_target_objs="arm-c.o"
        cxx_target_objs="arm-c.o"
@@ -330,7 +333,6 @@ avr-*-*)
        cpu_type=avr
        c_target_objs="avr-c.o"
        cxx_target_objs="avr-c.o"
-       extra_options="${extra_options} avr/avr-tables.opt"
        ;;
 bfin*-*)
        cpu_type=bfin
@@ -341,6 +343,9 @@ crisv32-*)
 frv*)  cpu_type=frv
        extra_options="${extra_options} g.opt"
        ;;
+ft32*) cpu_type=ft32
+       target_has_targetm_common=no
+       ;;
 moxie*)        cpu_type=moxie
        target_has_targetm_common=no
        ;;
@@ -368,7 +373,8 @@ i[34567]86-*-*)
                       xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
                       avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
                       avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
-                      avx512vbmivlintrin.h clwbintrin.h pcommitintrin.h"
+                      avx512vbmivlintrin.h clwbintrin.h mwaitxintrin.h
+                      clzerointrin.h pkuintrin.h"
        ;;
 x86_64-*-*)
        cpu_type=i386
@@ -389,7 +395,8 @@ x86_64-*-*)
                       xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
                       avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
                       avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
-                      avx512vbmivlintrin.h clwbintrin.h pcommitintrin.h"
+                      avx512vbmivlintrin.h clwbintrin.h mwaitxintrin.h
+                      clzerointrin.h pkuintrin.h"
        ;;
 ia64-*-*)
        extra_headers=ia64intrin.h
@@ -415,8 +422,9 @@ microblaze*-*-*)
         ;;
 mips*-*-*)
        cpu_type=mips
-       extra_headers="loongson.h"
-       extra_options="${extra_options} g.opt mips/mips-tables.opt"
+       extra_headers="loongson.h msa.h"
+       extra_objs="frame-header-opt.o"
+       extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
        ;;
 nds32*)
        cpu_type=nds32
@@ -434,7 +442,7 @@ powerpc*-*-*)
        cpu_type=rs6000
        extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h spu2vmx.h vec_types.h si2vmx.h htmintrin.h htmxlintrin.h"
        case x$with_cpu in
-           xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|Xe6500)
+           xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
                cpu_is_64bit=yes
                ;;
        esac
@@ -455,7 +463,7 @@ spu*-*-*)
 s390*-*-*)
        cpu_type=s390
        extra_options="${extra_options} fused-madd.opt"
-       extra_headers="s390intrin.h htmintrin.h htmxlintrin.h"
+       extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
        ;;
 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
 sh[123456789lbe]*-*-* | sh-*-*)
@@ -576,22 +584,22 @@ case ${target} in
 esac
 
 # Common C libraries.
-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
 
 # 32-bit x86 processors supported by --with-arch=.  Each processor
 # MUST be separated by exactly one space.
 x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
 athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
 i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
-pentium4 pentium4m pentiumpro prescott"
+pentium4 pentium4m pentiumpro prescott lakemont"
 
 # 64-bit x86 processors supported by --with-arch=.  Each processor
 # MUST be separated by exactly one space.
 x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
-bdver3 bdver4 btver1 btver2 k8 k8-sse3 opteron opteron-sse3 nocona \
+bdver3 bdver4 znver1 btver1 btver2 k8 k8-sse3 opteron opteron-sse3 nocona \
 core2 corei7 corei7-avx core-avx-i core-avx2 atom slm nehalem westmere \
-sandybridge ivybridge haswell broadwell bonnell silvermont knl x86-64 \
-native"
+sandybridge ivybridge haswell broadwell bonnell silvermont knl \
+skylake-avx512 x86-64 native"
 
 # Additional x86 processors supported by --with-cpu=.  Each processor
 # MUST be separated by exactly one space.
@@ -606,9 +614,12 @@ case ${target} in
   *-*-darwin9*)
     tm_file="${tm_file} darwin9.h"
     ;;
-  *-*-darwin[12][0-9]*)
+  *-*-darwin[1][01]*)
     tm_file="${tm_file} darwin9.h darwin10.h"
     ;;
+  *-*-darwin[1][2-9]* | *-*-darwin[2][0-9]*)
+    tm_file="${tm_file} darwin9.h darwin10.h darwin12.h"
+    ;;
   esac
   tm_file="${tm_file} ${cpu_type}/darwin.h"
   tm_p_file="${tm_p_file} darwin-protos.h"
@@ -665,6 +676,11 @@ case ${target} in
   gas=yes
   gnu_ld=yes
   fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
+  if test "$fbsd_major" = ""; then
+    echo "Specify the major version number of the targeted FreeBSD release"
+    echo "like this: --target=amd64-unknown-freebsd10.1"
+    exit 1
+  fi
   tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
   tmake_file="t-slibgcc"
   case ${enable_threads} in
@@ -689,7 +705,7 @@ case ${target} in
   esac
   use_gcc_stdint=wrap
   ;;
-*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
+*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
   extra_options="$extra_options gnu-user.opt"
   gas=yes
   gnu_ld=yes
@@ -698,7 +714,7 @@ case ${target} in
   esac
   tmake_file="t-slibgcc"
   case $target in
-    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu)
+    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
       :;;
     *-*-gnu*)
       native_system_header_dir=/include
@@ -721,6 +737,9 @@ case ${target} in
     *-*-*uclibc*)
       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
       ;;
+    *-*-*musl*)
+      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
+      ;;
     *)
       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
       ;;
@@ -782,15 +801,16 @@ case ${target} in
       ;;
   esac
   case ${target} in
-    *-*-openbsd2.*|*-*-openbsd3.[012])
-      tm_defines="${tm_defines} HAS_LIBC_R=1" ;;
-  esac
-  case ${target} in
     *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
       default_use_cxa_atexit=yes
       ;;
   esac
   ;;
+*-*-phoenix*)
+  gas=yes
+  gnu_ld=yes
+  default_use_cxa_atexit=yes
+  ;;
 *-*-rtems*)
   case ${enable_threads} in
     "" | yes | rtems) thread_file='rtems' ;;
@@ -820,6 +840,12 @@ case ${target} in
   sol2_tm_file_head="dbxelf.h elfos.h ${cpu_type}/sysv4.h"
   sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
   sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
+  case ${target} in
+    *-*-solaris2.1[2-9]*)
+      # __cxa_atexit was introduced in Solaris 12.
+      default_use_cxa_atexit=yes
+      ;;
+  esac
   use_gcc_stdint=wrap
   if test x$gnu_ld = xyes; then
     tm_file="usegld.h ${tm_file}"
@@ -877,11 +903,18 @@ case ${target} in
 esac
 
 case ${target} in
-aarch64*-*-elf)
+aarch64*-*-elf | aarch64*-*-rtems*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h"
        tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-elf-raw.h"
        tmake_file="${tmake_file} aarch64/t-aarch64"
-       use_gcc_stdint=wrap
+       case $target in
+       aarch64-*-elf*)
+               use_gcc_stdint=wrap
+               ;;
+       aarch64-*-rtems*)
+               tm_file="${tm_file} rtems.h aarch64/rtems.h"
+               ;;
+       esac
        case $target in
        aarch64_be-*)
                tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
@@ -904,6 +937,11 @@ aarch64*-*-elf)
        done
        TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
        ;;
+aarch64*-*-freebsd*)
+       tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file}"
+       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-freebsd.h"
+       tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
+       ;;
 aarch64*-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
        tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-linux.h"
@@ -1021,11 +1059,9 @@ arm*-*-freebsd*)                # ARM FreeBSD EABI
        case $target in
        armv6*-*-freebsd*)
            tm_defines="${tm_defines} TARGET_FREEBSD_ARMv6=1"
-           ;;
-       esac
-       case $target in
-       arm*hf-*-freebsd*)
-           tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
+            if test $fbsd_major -ge 11; then
+               tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
+            fi
            ;;
        esac
        with_tls=${with_tls:-gnu}
@@ -1062,6 +1098,12 @@ arm*-*-uclinux*eabi*)            # ARM ucLinux
        # The EABI requires the use of __cxa_atexit.
        default_use_cxa_atexit=yes
        ;;
+arm*-*-phoenix*)
+       tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
+       tm_file="${tm_file} newlib-stdint.h phoenix.h"
+       tm_file="${tm_file} arm/aout.h arm/arm.h"
+       tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
+       ;;
 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
        case ${target} in
        arm*eb-*-eabi*)
@@ -1089,14 +1131,8 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
        esac
        tm_file="${tm_file} arm/aout.h vxworks-dummy.h arm/arm.h"
        ;;
-avr-*-rtems*)
-       tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h dbxelf.h avr/rtems.h rtems.h newlib-stdint.h"
-       tmake_file="${tmake_file} avr/t-avr avr/t-multilib avr/t-rtems"
-       extra_gcc_objs="driver-avr.o avr-devices.o"
-       extra_objs="avr-devices.o avr-log.o"
-       ;;
 avr-*-*)
-       tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h dbxelf.h avr/avr-stdint.h"
+       tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h dbxelf.h avr/avr-stdint.h"
        if test x${with_avrlibc} != xno; then
            tm_file="${tm_file} ${cpu_type}/avrlibc.h"
            tm_defines="${tm_defines} WITH_AVRLIBC"
@@ -1118,7 +1154,7 @@ bfin*-uclinux*)
        ;;
 bfin*-linux-uclibc*)
        tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
-       tmake_file="bfin/t-bfin-linux t-slibgcc t-linux"
+       tmake_file="${tmake_file} bfin/t-bfin-linux"
        use_collect2=no
        ;;
 bfin*-rtems*)
@@ -1131,7 +1167,7 @@ bfin*-*)
        use_gcc_stdint=wrap
        ;;
 cr16-*-elf)
-        tm_file="elfos.h ${tm_file}"
+        tm_file="elfos.h ${tm_file} newlib-stdint.h"
         tmake_file="${tmake_file} cr16/t-cr16 "
         use_collect2=no
         ;;
@@ -1183,6 +1219,12 @@ frv-*-*linux*)
                 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
        tmake_file="${tmake_file} frv/t-frv frv/t-linux"
        ;;
+ft32-*-elf)
+       gas=yes
+       gnu_ld=yes
+       tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
+       tmake_file="${tmake_file} ft32/t-ft32"
+       ;;
 moxie-*-elf)
        gas=yes
        gnu_ld=yes
@@ -1205,14 +1247,14 @@ moxie-*-moxiebox*)
        tm_file="${tm_file} dbxelf.h elfos.h moxie/moxiebox.h newlib-stdint.h"
        tmake_file="${tmake_file} moxie/t-moxiebox"
        ;;
-h8300-*-rtems*)
-       tmake_file="${tmake_file} h8300/t-h8300 h8300/t-rtems"
-       tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h h8300/rtems.h rtems.h newlib-stdint.h"
-       ;;
 h8300-*-elf*)
        tmake_file="h8300/t-h8300"
        tm_file="h8300/h8300.h dbxelf.h elfos.h newlib-stdint.h h8300/elf.h"
        ;;
+h8300-*-linux*)
+       tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
+       tm_file="h8300/h8300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
+       ;;
 hppa*64*-*-linux*)
        target_cpu_default="MASK_PA_11|MASK_PA_20"
        tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \
@@ -1365,12 +1407,18 @@ x86_64-*-darwin*)
        tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc"
        tm_file="${tm_file} ${cpu_type}/darwin64.h"
        ;;
+i[34567]86-*-elfiamcu)
+       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h"
+       ;;
 i[34567]86-*-elf*)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h"
        ;;
 x86_64-*-elf*)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
        ;;
+x86_64-*-rtems*)
+       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtems-64.h"
+       ;;
 i[34567]86-*-rdos*)
     tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
     ;;
@@ -1400,14 +1448,6 @@ x86_64-*-netbsd*)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h"
        extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
        ;;
-i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123])
-       tm_file="i386/i386.h i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h openbsd-oldgas.h openbsd.h i386/openbsd.h"
-       extra_options="${extra_options} openbsd.opt"
-       # needed to unconfuse gdb
-       tmake_file="${tmake_file} t-openbsd i386/t-openbsd"
-       # we need collect2 until our bug is fixed...
-       use_collect2=yes
-       ;;
 i[34567]86-*-openbsd*)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
        tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
@@ -1422,7 +1462,7 @@ x86_64-*-openbsd*)
        gas=yes
        gnu_ld=yes
        ;;
-i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
+i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
                        # Intel 80386's running GNU/*
                        # with ELF format using glibc 2
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h"
@@ -1432,7 +1472,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
                extra_options="${extra_options} linux-android.opt"
                # Assume modern glibc if not targeting Android nor uclibc.
                case ${target} in
-               *-*-*android*|*-*-*uclibc*)
+               *-*-*android*|*-*-*uclibc*|*-*-*musl*)
                  ;;
                *)
                  default_gnu_indirect_function=yes
@@ -1478,9 +1518,6 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
                        tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
                fi
                ;;
-       i[34567]86-*-knetbsd*-gnu)
-               tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h knetbsd-gnu.h i386/knetbsd-gnu.h"
-               ;;
        i[34567]86-*-kfreebsd*-gnu)
                tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
                ;;
@@ -1492,7 +1529,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
                ;;
        esac
        ;;
-x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
+x86_64-*-linux* | x86_64-*-kfreebsd*-gnu)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h \
                 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
        case ${target} in
@@ -1501,7 +1538,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
                extra_options="${extra_options} linux-android.opt"
                # Assume modern glibc if not targeting Android nor uclibc.
                case ${target} in
-               *-*-*android*|*-*-*uclibc*)
+               *-*-*android*|*-*-*uclibc*|*-*-*musl*)
                  ;;
                *)
                  default_gnu_indirect_function=yes
@@ -1511,9 +1548,6 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
        x86_64-*-kfreebsd*-gnu)
                tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
                ;;
-       x86_64-*-knetbsd*-gnu)
-               tm_file="${tm_file} knetbsd-gnu.h"
-               ;;
        esac
        tmake_file="${tmake_file} i386/t-linux64"
        x86_multilibs="${with_multilib_list}"
@@ -1726,19 +1760,6 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
                        ;;
        esac
        ;;
-i[34567]86-*-interix[3-9]*)
-       tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/i386-interix.h"
-       tmake_file="${tmake_file} i386/t-interix"
-       extra_options="${extra_options} rpath.opt i386/interix.opt"
-       extra_objs="winnt.o winnt-stubs.o"
-       target_gtfiles="\$(srcdir)/config/i386/winnt.c"
-       if test x$enable_threads = xyes ; then
-               thread_file='posix'
-       fi
-       if test x$stabs = xyes ; then
-               tm_file="${tm_file} dbxcoff.h"
-       fi
-       ;;
 ia64*-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
        tmake_file="ia64/t-ia64"
@@ -1799,7 +1820,7 @@ iq2000*-*-elf*)
         md_file=iq2000/iq2000.md
         ;;
 lm32-*-elf*)
-        tm_file="dbxelf.h elfos.h ${tm_file}"
+        tm_file="dbxelf.h elfos.h ${tm_file} newlib-stdint.h"
        tmake_file="${tmake_file} lm32/t-lm32"
         ;;
 lm32-*-rtems*)
@@ -1817,10 +1838,6 @@ m32r-*-elf*)
 m32rle-*-elf*)
        tm_file="dbxelf.h elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
        ;;
-m32r-*-rtems*)
-       tm_file="dbxelf.h elfos.h ${tm_file} m32r/rtems.h rtems.h newlib-stdint.h"
-       tmake_file="${tmake_file} m32r/t-m32r"
-       ;;
 m32r-*-linux*)
        tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} m32r/linux.h"
        tmake_file="${tmake_file} m32r/t-linux t-slibgcc"
@@ -1919,17 +1936,6 @@ mcore-*-elf)
        tmake_file=mcore/t-mcore
        inhibit_libc=true
        ;;
-mep-*-*)
-       tm_file="dbxelf.h elfos.h ${tm_file}"
-       tmake_file=mep/t-mep
-       c_target_objs="mep-pragma.o"
-       cxx_target_objs="mep-pragma.o"
-       if test -d "${srcdir}/../newlib/libc/include" &&
-          test "x$with_headers" = x; then
-               with_headers=yes
-       fi
-       use_gcc_stdint=wrap
-       ;;
 microblaze*-linux*)
        case $target in
                microblazeel-*)
@@ -1986,6 +1992,8 @@ mips*-img-linux*)
        extra_options="${extra_options} linux-android.opt"
        tmake_file="${tmake_file} mips/t-img-linux"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
+       with_arch_32="mips32r6"
+       with_arch_64="mips64r6"
        gnu_ld=yes
        gas=yes
        ;;
@@ -1994,6 +2002,8 @@ mips*-mti-linux*)
        extra_options="${extra_options} linux-android.opt"
        tmake_file="${tmake_file} mips/t-mti-linux"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
+       with_arch_32="mips32r2"
+       with_arch_64="mips64r2"
        gnu_ld=yes
        gas=yes
        ;;
@@ -2048,11 +2058,15 @@ mips*-mti-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
        tmake_file="mips/t-mti-elf"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
+       with_arch_32="mips32r2"
+       with_arch_64="mips64r2"
        ;;
 mips*-img-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
        tmake_file="mips/t-img-elf"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
+       with_arch_32="mips32r6"
+       with_arch_64="mips64r6"
        ;;
 mips*-sde-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
@@ -2200,6 +2214,7 @@ msp430*-*-*)
        c_target_objs="msp430-c.o"
        cxx_target_objs="msp430-c.o"
        tmake_file="${tmake_file} msp430/t-msp430"
+       extra_gcc_objs="driver-msp430.o"
        ;;
 nds32le-*-*)
        target_cpu_default="0"
@@ -2233,6 +2248,10 @@ nios2-*-*)
 nvptx-*)
        tm_file="${tm_file} newlib-stdint.h"
        tmake_file="nvptx/t-nvptx"
+       if test x$enable_as_accelerator = xyes; then
+               extra_programs="${extra_programs} mkoffload\$(exeext)"
+               tm_file="${tm_file} nvptx/offload.h"
+       fi
        ;;
 pdp11-*-*)
        tm_file="${tm_file} newlib-stdint.h"
@@ -2335,28 +2354,33 @@ powerpc-*-rtems*)
 powerpc*-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
+       tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
        extra_objs="$extra_objs rs6000-linux.o"
        case ${target} in
            powerpc*le-*-*)
                tm_file="${tm_file} rs6000/sysv4le.h" ;;
        esac
-       maybe_biarch=yes
+       case ${target}:${with_cpu} in
+           powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
+       esac
+       maybe_biarch=${cpu_is_64bit}
+       case ${enable_targets} in
+           *powerpc64*) maybe_biarch=yes ;;
+           all) maybe_biarch=yes ;;
+       esac
        case ${target} in
            powerpc64*-*-linux*spe* | powerpc64*-*-linux*paired*)
-               echo "*** Configuration ${target} not supported" 1>&2
+               echo "*** Configuration ${target} not supported" 1>&2
                exit 1
                ;;
            powerpc*-*-linux*spe* | powerpc*-*-linux*paired*)
                maybe_biarch=
                ;;
-           powerpc64*-*-linux*)
-               test x$with_cpu != x || cpu_is_64bit=yes
-               maybe_biarch=always
-               ;;
        esac
-       case ${maybe_biarch}:${enable_targets}:${cpu_is_64bit} in
-           always:* | yes:*powerpc64* | yes:all:* | yes:*:yes)
+       case ${target}:${enable_targets}:${maybe_biarch} in
+           powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
+           | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
+           | powerpcle-*:*powerpc64le*:yes)
                if test x$cpu_is_64bit = xyes; then
                    tm_file="${tm_file} rs6000/default64.h"
                fi
@@ -2377,9 +2401,14 @@ powerpc*-*-linux*)
                esac
                extra_options="${extra_options} rs6000/linux64.opt"
                ;;
+           powerpc64*)
+               tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
+               extra_options="${extra_options} rs6000/linux64.opt"
+               tmake_file="${tmake_file} rs6000/t-linux"
+               ;;
            *)
                tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
-               tmake_file="$tmake_file rs6000/t-linux"
+               tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
                ;;
        esac
        case ${target} in
@@ -2393,6 +2422,10 @@ powerpc*-*-linux*)
            powerpc*-*-linux*paired*)
                tm_file="${tm_file} rs6000/750cl.h" ;;
        esac
+       case ${target} in
+           *-linux*-musl*)
+               enable_secureplt=yes ;;
+       esac
        if test x${enable_secureplt} = xyes; then
                tm_file="rs6000/secureplt.h ${tm_file}"
        fi
@@ -2478,7 +2511,7 @@ rs6000-ibm-aix5.3.* | powerpc-ibm-aix5.3.*)
        use_gcc_stdint=wrap
        extra_headers=altivec.h
        ;;
-rs6000-ibm-aix[6789].* | powerpc-ibm-aix[6789].*)
+rs6000-ibm-aix6.* | powerpc-ibm-aix6.*)
        tm_file="${tm_file} rs6000/aix.h rs6000/aix61.h rs6000/xcoff.h rs6000/aix-stdint.h"
        tmake_file="rs6000/t-aix52 t-slibgcc"
        extra_options="${extra_options} rs6000/aix64.opt"
@@ -2486,6 +2519,17 @@ rs6000-ibm-aix[6789].* | powerpc-ibm-aix[6789].*)
        thread_file='aix'
        use_gcc_stdint=wrap
        extra_headers=altivec.h
+       default_use_cxa_atexit=yes
+       ;;
+rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
+       tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
+       tmake_file="rs6000/t-aix52 t-slibgcc"
+       extra_options="${extra_options} rs6000/aix64.opt"
+       use_collect2=yes
+       thread_file='aix'
+       use_gcc_stdint=wrap
+       extra_headers=altivec.h
+       default_use_cxa_atexit=yes
        ;;
 rl78-*-elf*)
        tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
@@ -2501,40 +2545,47 @@ rx-*-elf*)
 s390-*-linux*)
        default_gnu_indirect_function=yes
        tm_file="s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
+       c_target_objs="${c_target_objs} s390-c.o"
+       cxx_target_objs="${cxx_target_objs} s390-c.o"
        if test x$enable_targets = xall; then
                tmake_file="${tmake_file} s390/t-linux64"
        fi
+       tmake_file="${tmake_file} s390/t-s390"
        ;;
 s390x-*-linux*)
        default_gnu_indirect_function=yes
        tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
        tm_p_file="linux-protos.h s390/s390-protos.h"
+       c_target_objs="${c_target_objs} s390-c.o"
+       cxx_target_objs="${cxx_target_objs} s390-c.o"
        md_file=s390/s390.md
        extra_modes=s390/s390-modes.def
        out_file=s390/s390.c
-       tmake_file="${tmake_file} s390/t-linux64"
+       tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
        ;;
 s390x-ibm-tpf*)
-        tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h s390/tpf.h"
-        tm_p_file=s390/s390-protos.h
-        md_file=s390/s390.md
-        extra_modes=s390/s390-modes.def
-        out_file=s390/s390.c
-        thread_file='tpf'
+       tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h s390/tpf.h"
+       tm_p_file=s390/s390-protos.h
+       c_target_objs="${c_target_objs} s390-c.o"
+       cxx_target_objs="${cxx_target_objs} s390-c.o"
+       md_file=s390/s390.md
+       extra_modes=s390/s390-modes.def
+       out_file=s390/s390.c
+       thread_file='tpf'
        extra_options="${extra_options} s390/tpf.opt"
+       tmake_file="${tmake_file} s390/t-s390"
        ;;
 sh-*-elf* | sh[12346l]*-*-elf* | \
   sh-*-linux* | sh[2346lbe]*-*-linux* | \
-  sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
-  sh64-*-netbsd* | sh64l*-*-netbsd*)
+  sh-*-netbsdelf* | shl*-*-netbsdelf*)
        tmake_file="${tmake_file} sh/t-sh sh/t-elf"
        if test x${with_endian} = x; then
                case ${target} in
                sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
                shbe-*-* | sheb-*-*)               with_endian=big,little ;;
                sh[1234]l* | sh[34]*-*-linux*)     with_endian=little ;;
-               shl* | sh64l* | sh*-*-linux* | \
-                 sh5l* | sh-superh-elf)           with_endian=little,big ;;
+               shl* | sh*-*-linux* | \
+                 sh-superh-elf)                   with_endian=little,big ;;
                sh[1234]*-*-*)                     with_endian=big ;;
                *)                                 with_endian=big,little ;;
                esac
@@ -2555,6 +2606,9 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
        tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h"
        case ${target} in
        sh*-*-linux*)   tmake_file="${tmake_file} sh/t-linux"
+                       if test x$enable_fdpic = xyes; then
+                               tm_defines="$tm_defines FDPIC_DEFAULT=1"
+                       fi
                        tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
        sh*-*-netbsd*)
                        tm_file="${tm_file} netbsd.h netbsd-elf.h sh/netbsd-elf.h"
@@ -2575,37 +2629,14 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
                        tm_file="${tm_file} sh/embed-elf.h" ;;
        esac
        case ${target} in
-       sh5*-*-netbsd*)
-               # SHmedia, 32-bit ABI
-               tmake_file="${tmake_file} sh/t-sh64"
-               ;;
-       sh64*-netbsd*)
-               # SHmedia, 64-bit ABI
-               tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd-sh5-64"
-               ;;
        *-*-netbsd)
                ;;
-       sh64*-*-linux*)
-               tmake_file="${tmake_file} sh/t-sh64"
-               tm_file="${tm_file} sh/sh64.h"
-               extra_headers="shmedia.h ushmedia.h sshmedia.h"
-               ;;
-       sh64*)
-               tmake_file="${tmake_file} sh/t-sh64"
-               tm_file="${tm_file} sh/sh64.h"
-               if test x$with_newlib = xyes; then
-                       tm_file="${tm_file} newlib-stdint.h"
-               fi
-               extra_headers="shmedia.h ushmedia.h sshmedia.h"
-               ;;
        *-*-elf*)
                tm_file="${tm_file} newlib-stdint.h"
                ;;
        esac
        # sed el/eb endian suffixes away to avoid confusion with sh[23]e
        case `echo ${target} | sed 's/e[lb]-/-/'` in
-       sh64*-*-netbsd*)        sh_cpu_target=sh5-64media ;;
-       sh64* | sh5*-*-netbsd*) sh_cpu_target=sh5-32media ;;
        sh4a_single_only*)      sh_cpu_target=sh4a-single-only ;;
        sh4a_single*)           sh_cpu_target=sh4a-single ;;
        sh4a_nofpu*)            sh_cpu_target=sh4a-nofpu ;;
@@ -2628,7 +2659,6 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
        # did the user say --without-fp ?
        if test x$with_fp = xno; then
                case ${sh_cpu_target} in
-               sh5-*media)     sh_cpu_target=${sh_cpu_target}-nofpu ;;
                sh4al | sh1)    ;;
                sh4a* )         sh_cpu_target=sh4a-nofpu ;;
                sh4*)           sh_cpu_target=sh4-nofpu ;;
@@ -2641,8 +2671,6 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
        fi
        sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
        case $sh_cpu_default in
-       sh5-64media-nofpu | sh5-64media | \
-         sh5-32media-nofpu | sh5-32media | sh5-compact-nofpu | sh5-compact | \
          sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
          sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
          sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
@@ -2653,9 +2681,7 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
        sh_multilibs=${with_multilib_list}
        if test "$sh_multilibs" = "default" ; then
                case ${target} in
-               sh64-superh-linux* | \
                sh[1234]*)      sh_multilibs=${sh_cpu_target} ;;
-               sh64* | sh5*)   sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu ;;
                sh-superh-*)    sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
                sh*-*-linux*)   sh_multilibs=m1,m2,m2a,m3e,m4 ;;
                sh*-*-netbsd*)  sh_multilibs=m3,m3e,m4 ;;
@@ -2674,10 +2700,7 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
                m1 | m2 | m2e | m3 | m3e | \
                m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
                m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
-               m2a | m2a-single | m2a-single-only | m2a-nofpu | \
-               m5-64media | m5-64media-nofpu | \
-               m5-32media | m5-32media-nofpu | \
-               m5-compact | m5-compact-nofpu)
+               m2a | m2a-single | m2a-single-only | m2a-nofpu)
                        # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
                        # It is passed to MULTIILIB_OPTIONS verbatim.
                        TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
@@ -2694,7 +2717,7 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
        done
        TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
        if test x${enable_incomplete_targets} = xyes ; then
-               tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1 SUPPORT_SH5_32MEDIA=1 SUPPORT_SH5_32MEDIA_NOFPU=1 SUPPORT_SH5_64MEDIA=1 SUPPORT_SH5_64MEDIA_NOFPU=1"
+               tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
        fi
        tm_file="$tm_file ./sysroot-suffix.h"
        tmake_file="$tmake_file t-sysroot-suffix"
@@ -2904,7 +2927,7 @@ vax-*-netbsdelf*)
        extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
        ;;
 vax-*-openbsd*)
-       tm_file="vax/vax.h vax/openbsd1.h openbsd.h openbsd-stdint.h openbsd-pthread.h vax/openbsd.h"
+       tm_file="vax/vax.h vax/openbsd1.h openbsd.h openbsd-stdint.h openbsd-libpthread.h vax/openbsd.h"
        extra_options="${extra_options} openbsd.opt"
        use_collect2=yes
        ;;
@@ -2929,6 +2952,11 @@ xtensa*-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
        tmake_file="${tmake_file} xtensa/t-xtensa"
        ;;
+xtensa*-*-uclinux*)
+       tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
+       tmake_file="${tmake_file} xtensa/t-xtensa"
+       extra_options="${extra_options} xtensa/uclinux.opt"
+       ;;
 am33_2.0-*-linux*)
        tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
        gas=yes gnu_ld=yes
@@ -2965,6 +2993,7 @@ esac
 case ${target} in
 *-intelmic-* | *-intelmicemul-*)
        tmake_file="${tmake_file} i386/t-intelmic"
+       tm_file="${tm_file} i386/intelmic-offload.h"
        ;;
 esac
 
@@ -3047,6 +3076,10 @@ case ${target} in
     ;;
   i686-*-* | i786-*-*)
     case ${target_noncanonical} in
+      znver1-*)
+       arch=znver1
+       cpu=znver1
+       ;;
       bdver4-*)
         arch=bdver4
         cpu=bdver4
@@ -3160,6 +3193,10 @@ case ${target} in
     ;;
   x86_64-*-*)
     case ${target_noncanonical} in
+      znver1-*)
+       arch=znver1
+       cpu=znver1
+       ;;
       bdver4-*)
         arch=bdver4
         cpu=bdver4
@@ -3228,6 +3265,9 @@ esac
 # This block sets nothing except for with_cpu.
 if test x$with_cpu = x ; then
   case ${target} in
+    i[34567]86-*-elfiamcu)
+      with_cpu=lakemont
+      ;;
     i[34567]86-*-*|x86_64-*-*)
       with_cpu=$cpu
       ;;
@@ -3285,6 +3325,9 @@ if test x$with_cpu = x ; then
          ;;
       esac
       ;;
+    visium-*-*)
+      with_cpu=gr5
+      ;;
   esac
 
   # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
@@ -3320,6 +3363,9 @@ if test x$with_arch = x ; then
       # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
       # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
       ;;
+    i[34567]86-*-elfiamcu)
+      with_arch=lakemont
+      ;;
     i[34567]86-*-*)
       # --with-fpmath sets the default ISA to SSE2, which is the same
       # ISA supported by Pentium 4.
@@ -3455,7 +3501,7 @@ case "${target}" in
 
                        eval "val=\$with_$which"
                        base_val=`echo $val | sed -e 's/\+.*//'`
-                       ext_val=`echo $val | sed -e 's/[a-z0-9\-]\+//'`
+                       ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
 
                        if [ $which = arch ]; then
                          def=aarch64-arches.def
@@ -3502,22 +3548,28 @@ case "${target}" in
                                    ${srcdir}/config/aarch64/aarch64-option-extensions.def \
                                    > /dev/null; then
 
-                                 ext_on=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
+                                 ext_canon=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
                                        ${srcdir}/config/aarch64/aarch64-option-extensions.def | \
                                        sed -e 's/^[^,]*,[      ]*//' | \
                                        sed -e 's/,.*$//'`
-                                 ext_off=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
+                                 ext_on=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
                                        ${srcdir}/config/aarch64/aarch64-option-extensions.def | \
                                        sed -e 's/^[^,]*,[      ]*[^,]*,[       ]*//' | \
                                        sed -e 's/,.*$//' | \
                                        sed -e 's/).*$//'`
+                                 ext_off=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
+                                       ${srcdir}/config/aarch64/aarch64-option-extensions.def | \
+                                       sed -e 's/^[^,]*,[      ]*[^,]*,[       ]*[^,]*,[       ]*//' | \
+                                       sed -e 's/,.*$//' | \
+                                       sed -e 's/).*$//'`
+
 
                                  if [ $ext = $base_ext ]; then
                                        # Adding extension
-                                       ext_mask="("$ext_mask") | ("$ext_on")"
+                                       ext_mask="("$ext_mask") | ("$ext_on" | "$ext_canon")"
                                  else
                                        # Removing extension
-                                       ext_mask="("$ext_mask") & ~("$ext_off")"
+                                       ext_mask="("$ext_mask") & ~("$ext_off" | "$ext_canon")"
                                  fi
 
                                  true
@@ -3673,38 +3725,40 @@ case "${target}" in
                # Add extra multilibs
                if test "x$with_multilib_list" != x; then
                        arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
-                       for arm_multilib in ${arm_multilibs}; do
-                               case ${arm_multilib} in
-                               aprofile)
+                       case ${arm_multilibs} in
+                       aprofile)
                                # Note that arm/t-aprofile is a
                                # stand-alone make file fragment to be
                                # used only with itself.  We do not
                                # specifically use the
                                # TM_MULTILIB_OPTION framework because
                                # this shorthand is more
-                               # pragmatic. Additionally it is only
-                               # designed to work without any
-                               # with-cpu, with-arch with-mode
+                               # pragmatic.
+                               tmake_profile_file="arm/t-aprofile"
+                               ;;
+                       default)
+                               ;;
+                       *)
+                               echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
+                               exit 1
+                               ;;
+                       esac
+
+                       if test "x${tmake_profile_file}" != x ; then
+                               # arm/t-aprofile is only designed to work
+                               # without any with-cpu, with-arch, with-mode,
                                # with-fpu or with-float options.
-                                       if test "x$with_arch" != x \
-                                           || test "x$with_cpu" != x \
-                                           || test "x$with_float" != x \
-                                           || test "x$with_fpu" != x \
-                                           || test "x$with_mode" != x ; then
-                                           echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=aprofile" 1>&2
-                                           exit 1
-                                       fi
-                                       tmake_file="${tmake_file} arm/t-aprofile"
-                                       break
-                                       ;;
-                               default)
-                                       ;;
-                               *)
-                                       echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
-                                       exit 1
-                                       ;;
-                               esac
-                       done
+                               if test "x$with_arch" != x \
+                                   || test "x$with_cpu" != x \
+                                   || test "x$with_float" != x \
+                                   || test "x$with_fpu" != x \
+                                   || test "x$with_mode" != x ; then
+                                   echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
+                                   exit 1
+                               fi
+
+                               tmake_file="${tmake_file} ${tmake_profile_file}"
+                       fi
                fi
                ;;
 
@@ -3996,8 +4050,21 @@ case "${target}" in
                esac
                ;;
 
+       nios2*-*-*)
+               supported_defaults="arch"
+                       case "$with_arch" in
+                       "" | r1 | r2)
+                               # OK
+                               ;;
+                       *)
+                               echo "Unknown arch used in --with-arch=$with_arch" 1>&2
+                               exit 1
+                               ;;
+                       esac
+               ;;
+
        powerpc*-*-* | rs6000-*-*)
-               supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64"
+               supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"
 
                for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
                        eval "val=\$with_$which"
@@ -4019,7 +4086,7 @@ case "${target}" in
                                eval "with_$which=405"
                                ;;
                        "" | common | native \
-                       | power | power[2345678] | power6x | powerpc | powerpc64 \
+                       | power | power[23456789] | power6x | powerpc | powerpc64 \
                        | rios | rios1 | rios2 | rsc | rsc1 | rs64a \
                        | 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
                        | 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
@@ -4044,6 +4111,56 @@ case "${target}" in
                        exit 1
                        ;;
                esac
+
+               if test "x$with_advance_toolchain" != x; then
+                   if test -d "/opt/$with_advance_toolchain/." -a \
+                       -d "/opt/$with_advance_toolchain/bin/." -a \
+                       -d "/opt/$with_advance_toolchain/include/."; then
+
+                       tm_file="$tm_file ./advance-toolchain.h"
+                       (at="/opt/$with_advance_toolchain"
+                        echo "/* Use Advance Toolchain $at */"
+                        echo
+                        echo "#ifndef USE_AT_INCLUDE_FILES"
+                        echo "#define USE_AT_INCLUDE_FILES 1"
+                        echo "#endif"
+                        echo
+                        echo "#if USE_AT_INCLUDE_FILES"
+                        echo "#undef  INCLUDE_EXTRA_SPEC"
+                        echo "#define INCLUDE_EXTRA_SPEC" \
+                             "\"-isystem $at/include\""
+                        echo "#endif"
+                        echo
+                        echo "#undef  LINK_OS_EXTRA_SPEC32"
+                        echo "#define LINK_OS_EXTRA_SPEC32" \
+                             "\"%(link_os_new_dtags)" \
+                             "-rpath $prefix/lib -rpath $at/lib" \
+                             "-L $prefix/lib -L $at/lib\""
+                        echo
+                        echo "#undef  LINK_OS_EXTRA_SPEC64"
+                        echo "#define LINK_OS_EXTRA_SPEC64" \
+                             "\"%(link_os_new_dtags)" \
+                             "-rpath $prefix/lib64 -rpath $at/lib64" \
+                             "-L $prefix/lib64 -L $at/lib64\""
+                        echo
+                        echo "#undef  LINK_OS_NEW_DTAGS_SPEC"
+                        echo "#define LINK_OS_NEW_DTAGS_SPEC" \
+                             "\"--enable-new-dtags\""
+                        echo
+                        echo "#undef  DYNAMIC_LINKER_PREFIX"
+                        echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
+                        echo
+                        echo "#undef  MD_EXEC_PREFIX"
+                        echo "#define MD_EXEC_PREFIX \"$at/bin/\""
+                        echo
+                        echo "#undef  MD_STARTFILE_PREFIX"
+                        echo "#define MD_STARTFILE_PREFIX \"$at/lib/\"") \
+                           > advance-toolchain.h
+                   else
+                       echo "Unknown advance-toolchain $with_advance_toolchain"
+                       exit 1
+                   fi
+               fi
                ;;
 
        s390*-*-*)
@@ -4052,7 +4169,7 @@ case "${target}" in
                for which in arch tune; do
                        eval "val=\$with_$which"
                        case ${val} in
-                       "" | g5 | g6 | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12)
+                       "" | native | g5 | g6 | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13)
                                # OK
                                ;;
                        *)
@@ -4073,7 +4190,7 @@ case "${target}" in
                esac
                ;;
 
-       sh[123456ble]-*-* | sh-*-*)
+       sh[123456ble]*-*-* | sh-*-*)
                supported_defaults="cpu"
                case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
                "" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
@@ -4093,9 +4210,9 @@ case "${target}" in
                esac
                ;;
        sparc*-*-*)
-               supported_defaults="cpu float tune"
+               supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
 
-               for which in cpu tune; do
+               for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
                        eval "val=\$with_$which"
                        case ${val} in
                        "" | sparc | sparcv9 | sparc64 \
@@ -4104,7 +4221,7 @@ case "${target}" in
                        | sparclite | f930 | f934 | sparclite86x \
                        | sparclet | tsc701 \
                        | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
-                       | niagara3 | niagara4)
+                       | niagara3 | niagara4 | niagara7)
                                # OK
                                ;;
                        *)
@@ -4168,6 +4285,16 @@ case "${target}" in
                        ;;
                esac
                ;;
+       visium-*-*)
+               supported_defaults="cpu"
+               case $with_cpu in
+                 "" | gr5 | gr6)
+                       ;;
+                 *)    echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
+                       exit 1
+                       ;;
+               esac
+               ;;
 esac
 
 # Set some miscellaneous flags for particular targets.
@@ -4215,6 +4342,9 @@ case ${target} in
        i[34567]86-*-gnu*)
                tmake_file="$tmake_file i386/t-gnu"
                ;;
+       i[34567]86-*-msdosdjgpp*)
+               tmake_file="${tmake_file} i386/t-djgpp"
+               ;;
        i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
                ;;
        i[34567]86-*-cygwin* | x86_64-*-cygwin*)
@@ -4322,6 +4452,9 @@ case ${target} in
                        ;;
                esac
                ;;
+       visium-*-*)
+               target_cpu_default2="TARGET_CPU_$with_cpu"
+               ;;
 esac
 
 t=