OSDN Git Service

Pizza-lize :-)
[pf3gnuchains/gcc-fork.git] / gcc / config.gcc
index 8c4e4be..9f70998 100644 (file)
@@ -1,6 +1,6 @@
 # GCC target-specific configuration file.
 # Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
 
 #This file is part of GCC.
 
 #                      build-directory files by prefixing them with "./".
 #                      All other files should relative to $srcdir/config.
 #
-#  libgcc_tm_file      A list of target macro files used only for code
-#                      built for the target, not the host.  These files
-#                      are relative to $srcdir/../libgcc/config and
-#                      must not have the same names as files in
-#                      $srcdir/config.
-#
 #  tm_p_file           Location of file with declarations for functions
 #                      in $out_file.
 #
 #                      the --with-sysroot configure option or the
 #                      --sysroot command line option is used this
 #                      will be relative to the sysroot.
+# target_type_format_char 
+#                      The default character to be used for formatting
+#                      the attribute in a
+#                      .type symbol_name, ${t_t_f_c}<property>
+#                      directive.
 
 # The following variables are used in each case-construct to build up the
 # outgoing variables:
@@ -223,7 +222,6 @@ target_has_targetcm=no
 target_has_targetm_common=yes
 tm_defines=
 xm_defines=
-libgcc_tm_file=
 # Set this to force installation and use of collect2.
 use_collect2=
 # Set this to override the default target model.
@@ -242,6 +240,7 @@ target_gtfiles=
 need_64bit_hwint=
 need_64bit_isa=
 native_system_header_dir=/usr/include
+target_type_format_char='@'
 
 # Don't carry these over build->host->target.  Please.
 xm_file=
@@ -249,10 +248,21 @@ md_file=
 
 # Obsolete configurations.
 case ${target} in
+ # Avoid special cases that are not obsolete
+   arm*-*-*eabi*                       \
+ )
+     ;;
    alpha*-dec-osf5.1*                  \
- | i[34567]86-*-interix3*              \
+ | arm*-*-ecos-elf                     \
+ | arm*-*-elf                          \
+ | arm*-*-freebsd*                     \
+ | arm*-*-linux*                       \
+ | arm*-*-rtemself*                    \
+ | arm*-*-uclinux*                     \
+ | arm*-wince-pe*                      \
  | mips-sgi-irix6.5                    \
  | mips*-*-openbsd*                    \
+ | picochip-*                          \
  | score-*                             \
  | *-*-solaris2.8*                     \
  )
@@ -318,6 +328,7 @@ am33_2.0-*-linux*)
 arm*-*-*)
        cpu_type=arm
        extra_headers="mmintrin.h arm_neon.h"
+       target_type_format_char='%'
        c_target_objs="arm-c.o"
        cxx_target_objs="arm-c.o"
        extra_options="${extra_options} arm/arm-tables.opt"
@@ -357,7 +368,7 @@ i[34567]86-*-*)
                       immintrin.h x86intrin.h avxintrin.h xopintrin.h
                       ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
                       lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
-                      avx2intrin.h fmaintrin.h"
+                      avx2intrin.h fmaintrin.h f16cintrin.h"
        ;;
 x86_64-*-*)
        cpu_type=i386
@@ -370,7 +381,7 @@ x86_64-*-*)
                       immintrin.h x86intrin.h avxintrin.h xopintrin.h
                       ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
                       lzcntintrin.h bmiintrin.h tbmintrin.h bmi2intrin.h
-                      avx2intrin.h fmaintrin.h"
+                      avx2intrin.h fmaintrin.h f16cintrin.h"
        need_64bit_hwint=yes
        ;;
 ia64-*-*)
@@ -456,6 +467,14 @@ tic6x-*-*)
 xtensa*-*-*)
        extra_options="${extra_options} fused-madd.opt"
        ;;
+tilegx*-*-*)
+       cpu_type=tilegx
+       need_64bit_hwint=yes
+       ;;
+tilepro-*-*)
+       cpu_type=tilepro
+       need_64bit_hwint=yes
+       ;;
 esac
 
 tm_file=${cpu_type}/${cpu_type}.h
@@ -673,6 +692,11 @@ 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
   ;;
 *-*-rtems*)
   case ${enable_threads} in
@@ -724,6 +748,8 @@ case ${target} in
   extra_objs="vms.o"
   target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.c"
   tm_p_file="${tm_p_file} vms/vms-protos.h"
+  c_target_objs="vms-c.o"
+  cxx_target_objs="vms-c.o"
   if test x$gnu_ld != xyes; then
     # Build wrappers for native case.
     extra_programs="ld\$(exeext) ar\$(exeext)"
@@ -751,6 +777,7 @@ esac
 case ${target} in
 alpha*-*-linux*)
        tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
+       tmake_file="${tmake_file} alpha/t-linux"
        extra_options="${extra_options} alpha/elf.opt"
        target_cpu_default="MASK_GAS"
        ;;
@@ -797,12 +824,12 @@ alpha*-dec-osf5.1*)
        esac
        ;;
 alpha64-dec-*vms*)
-       tm_file="${tm_file} alpha/vms.h alpha/vms64.h"
+       tm_file="${tm_file} vms/vms.h vms/vms64.h alpha/vms.h"
        xm_file="alpha/xm-vms.h vms/xm-vms64.h"
        tmake_file="${tmake_file} vms/t-vms64 alpha/t-vms"
        ;;
 alpha*-dec-*vms*)
-       tm_file="${tm_file} alpha/vms.h"
+       tm_file="${tm_file} vms/vms.h alpha/vms.h"
        xm_file="alpha/xm-vms.h"
        tmake_file="${tmake_file} alpha/t-vms"
        ;;
@@ -823,16 +850,15 @@ arm*-*-netbsdelf*)
 arm*-*-linux*)                 # ARM GNU/Linux with ELF
        tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
        case $target in
-       arm*b-*)
+       arm*b-*-linux*)
                tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
                ;;
        esac
        tmake_file="${tmake_file} arm/t-arm"
        case ${target} in
-       arm*-*-linux-*eabi)
+       arm*-*-linux-*eabi*)
            tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
-           libgcc_tm_file="$libgcc_tm_file arm/bpabi-lib.h"
-           tmake_file="$tmake_file arm/t-arm-elf arm/t-linux-eabi"
+           tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
            # Define multilib configuration for arm-linux-androideabi.
            case ${target} in
            *-androideabi)
@@ -857,9 +883,9 @@ arm*-*-uclinux*)            # ARM ucLinux
        tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
        tmake_file="arm/t-arm arm/t-arm-elf"
        case ${target} in
-       arm*-*-uclinux*eabi)
+       arm*-*-uclinux*eabi*)
            tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h"
-           libgcc_tm_file="$libgcc_tm_file arm/bpabi-lib.h"
+           tmake_file="$tmake_file arm/t-bpabi"
            # The BPABI long long divmod functions return a 128-bit value in
            # registers r0-r3.  Correctly modeling that requires the use of
            # TImode.
@@ -873,23 +899,30 @@ arm*-*-ecos-elf)
        tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/ecos-elf.h"
        tmake_file="arm/t-arm arm/t-arm-elf"
        ;;
-arm*-*-eabi* | arm*-*-symbianelf* )
+arm*-*-rtemself*)
+       tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/rtems-elf.h rtems.h newlib-stdint.h"
+       tmake_file="arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems"
+       ;;
+arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
        # The BPABI long long divmod functions return a 128-bit value in
        # registers r0-r3.  Correctly modeling that requires the use of
        # TImode.
        need_64bit_hwint=yes
        default_use_cxa_atexit=yes
        tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
-       libgcc_tm_file="$libgcc_tm_file arm/bpabi-lib.h"
        tmake_file="arm/t-arm arm/t-arm-elf"
        case ${target} in
        arm*-*-eabi*)
          tm_file="$tm_file newlib-stdint.h"
+         tmake_file="${tmake_file} arm/t-bpabi"
          use_gcc_stdint=wrap
          ;;
+       arm*-*-rtems*)
+         tm_file="${tm_file} rtems.h arm/rtems-eabi.h newlib-stdint.h"
+         tmake_file="${tmake_file} arm/t-bpabi t-rtems arm/t-rtems-eabi"
+         ;;
        arm*-*-symbianelf*)
          tm_file="${tm_file} arm/symbian.h"
-         libgcc_tm_file="$libgcc_tm_file arm/symbian-lib.h"
          # We do not include t-bpabi for Symbian OS because the system
          # provides its own implementation of the BPABI functions.
          tmake_file="${tmake_file} arm/t-symbian"
@@ -897,10 +930,6 @@ arm*-*-eabi* | arm*-*-symbianelf* )
        esac
        tm_file="${tm_file} arm/aout.h arm/arm.h"
        ;;
-arm*-*-rtems*)
-       tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/rtems-elf.h rtems.h newlib-stdint.h"
-       tmake_file="arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems"
-       ;;
 arm*-*-elf)
        tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
        tmake_file="arm/t-arm arm/t-arm-elf"
@@ -913,14 +942,17 @@ arm*-wince-pe*)
        ;;
 avr-*-rtems*)
        tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h avr/rtems.h rtems.h newlib-stdint.h"
-       libgcc_tm_file="$libgcc_tm_file avr/avr-lib.h"
-       tmake_file="avr/t-avr t-rtems avr/t-rtems"
+       tmake_file="avr/t-avr avr/t-multilib t-rtems 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.h dbxelf.h newlib-stdint.h"
-       libgcc_tm_file="$libgcc_tm_file avr/avr-lib.h"
+       tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h avr/avr-stdint.h"
+       if test x${with_avrlibc} = xyes; then
+           tm_file="${tm_file} ${cpu_type}/avrlibc.h"
+           tm_defines="${tm_defines} WITH_AVRLIBC"
+       fi
+       tmake_file="avr/t-avr avr/t-multilib"
        use_gcc_stdint=wrap
        extra_gcc_objs="driver-avr.o avr-devices.o"
        extra_objs="avr-devices.o avr-log.o"
@@ -949,6 +981,11 @@ bfin*-*)
        use_collect2=no
        use_gcc_stdint=wrap
        ;;
+cr16-*-elf)
+        tm_file="elfos.h ${tm_file}"
+        tmake_file="${tmake_file} cr16/t-cr16 "
+        use_collect2=no
+        ;;
 crisv32-*-elf | crisv32-*-none)
        tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
        tmake_file="cris/t-cris"
@@ -978,18 +1015,24 @@ crisv32-*-linux* | cris-*-linux*)
                ;;
        esac
        ;;
+epiphany-*-elf )
+       tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
+       tmake_file="epiphany/t-epiphany"
+       extra_options="${extra_options} fused-madd.opt"
+       extra_objs="$extra_objs mode-switch-use.o resolve-sw-modes.o"
+       tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
+       extra_headers="epiphany_intrinsics.h"
+       ;;
 fr30-*-elf)
        tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
        ;;
 frv-*-elf)
        tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
-       libgcc_tm_file="${libgcc_tm_file} frv/frv-abi.h"
        tmake_file=frv/t-frv
        ;;
 frv-*-*linux*)
        tm_file="dbxelf.h elfos.h ${tm_file} \
                 gnu-user.h linux.h glibc-stdint.h frv/linux.h"
-       libgcc_tm_file="${libgcc_tm_file} frv/frv-abi.h"
        tmake_file="${tmake_file} frv/t-frv frv/t-linux"
        ;;
 moxie-*-elf)
@@ -1011,12 +1054,10 @@ moxie-*-rtems*)
 h8300-*-rtems*)
        tmake_file="h8300/t-h8300 t-rtems h8300/t-rtems"
        tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h h8300/rtems.h rtems.h newlib-stdint.h"
-       libgcc_tm_file="$libgcc_tm_file h8300/h8300-lib.h"
        ;;
 h8300-*-elf*)
        tmake_file="h8300/t-h8300"
        tm_file="h8300/h8300.h dbxelf.h elfos.h newlib-stdint.h h8300/elf.h"
-       libgcc_tm_file="$libgcc_tm_file h8300/h8300-lib.h"
        ;;
 hppa*64*-*-linux*)
        target_cpu_default="MASK_PA_11|MASK_PA_20"
@@ -1030,6 +1071,7 @@ hppa*-*-linux*)
        target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
        tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
                 pa/pa32-regs.h pa/pa32-linux.h"
+       tmake_file="${tmake_file} pa/t-linux"
        ;;
 # port not yet contributed.
 #hppa*-*-openbsd*)
@@ -1161,13 +1203,11 @@ i[34567]86-*-darwin*)
        # Baseline choice for a machine that allows m64 support.
        with_cpu=${with_cpu:-core2}
        tmake_file="${tmake_file} t-slibgcc"
-       libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.h"
        ;;
 x86_64-*-darwin*)
        with_cpu=${with_cpu:-core2}
        tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc"
        tm_file="${tm_file} ${cpu_type}/darwin64.h"
-       libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.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"
@@ -1457,6 +1497,8 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
        extra_objs="winnt.o winnt-stubs.o"
        c_target_objs="${c_target_objs} msformat-c.o"
        cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
+       gas=yes
+       gnu_ld=yes
        default_use_cxa_atexit=yes
        use_gcc_stdint=wrap
        case ${enable_threads} in
@@ -1475,11 +1517,11 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
                        ;;
        esac
        ;;
-i[34567]86-*-interix3*)
-       tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/i386-interix.h i386/i386-interix3.h interix.h interix3.h"
+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 interix.opt"
-       extra_objs=winnt.o
+       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'
@@ -1508,7 +1550,7 @@ ia64*-*-freebsd*)
        ;;
 ia64*-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
-       tmake_file="${tmake_file} ia64/t-ia64 t-libunwind"
+       tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
        target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
        ;;
 ia64*-*-hpux*)
@@ -1533,7 +1575,7 @@ ia64*-*-hpux*)
        esac
        ;;
 ia64-hp-*vms*)
-       tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/elf.h ia64/vms.h ia64/vms64.h"
+       tm_file="${tm_file} elfos.h ia64/sysv4.h ia64/elf.h vms/vms.h vms/vms64.h ia64/vms.h"
        xm_file="vms/xm-vms.h vms/xm-vms64.h"
        tmake_file="${tmake_file} vms/t-vms64 ia64/t-ia64"
        target_cpu_default="0"
@@ -1556,6 +1598,7 @@ lm32-*-rtems*)
        tm_file="dbxelf.h elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
        tmake_file="${tmake_file} lm32/t-lm32"
        tmake_file="${tmake_file} t-rtems"
+       tmake_file="${tmake_file} lm32/t-rtems"
          ;;
 lm32-*-uclinux*)
         tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h lm32/uclinux-elf.h"
@@ -1687,6 +1730,14 @@ microblaze*-linux*)
        c_target_objs="${c_target_objs} microblaze-c.o"
        cxx_target_objs="${cxx_target_objs} microblaze-c.o"
        ;;
+microblaze*-*-rtems*)
+       tm_file="${tm_file} dbxelf.h"
+       tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
+       c_target_objs="${c_target_objs} microblaze-c.o"
+       cxx_target_objs="${cxx_target_objs} microblaze-c.o"
+       tmake_file="${tmake_file} microblaze/t-microblaze"
+       tmake_file="${tmake_file} t-rtems microblaze/t-rtems"
+        ;;
 microblaze*-*-*)
         tm_file="${tm_file} dbxelf.h"
        c_target_objs="${c_target_objs} microblaze-c.o"
@@ -1696,6 +1747,8 @@ microblaze*-*-*)
 mips-sgi-irix6.5*)
        tm_file="elfos.h ${tm_file} mips/iris6.h"
        tmake_file="mips/t-irix6 t-slibgcc"
+       c_target_objs="irix6-c.o"
+       cxx_target_objs="irix6-c.o"
        extra_options="${extra_options} rpath.opt mips/iris6.opt"
        target_cpu_default="MASK_ABICALLS"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
@@ -1849,6 +1902,11 @@ mips-*-elf* | mipsel-*-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
        tmake_file="mips/t-elf"
        ;;
+mips64-*-toppers* | mips64el-*-toppers*)
+       tm_file="elfos.h ${tm_file} mips/elf.h mips/toppers.h"
+       tmake_file="mips/t-elf mips/t-libgcc-mips16"
+       tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
+       ;;
 mips64-*-elf* | mips64el-*-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
        tmake_file="mips/t-elf"
@@ -1928,10 +1986,20 @@ powerpc64-*-darwin*)
        tm_file="${tm_file} ${cpu_type}/darwin8.h ${cpu_type}/darwin64.h"
        extra_headers=altivec.h
        ;;
-powerpc-*-freebsd*)
-       tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h rs6000/freebsd.h"
-       tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
+powerpc*-*-freebsd*)
+       tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
+       case ${target} in
+            powerpc64*)
+               tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
+               tmake_file="${tmake_file} rs6000/t-freebsd64"
+               extra_options="${extra_options} rs6000/linux64.opt"
+               ;;
+            *)
+               tm_file="${tm_file} rs6000/freebsd.h"
+               ;;
+       esac
        ;;
 powerpc-*-netbsd*)
        tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
@@ -2014,6 +2082,7 @@ powerpc-*-linux* | powerpc64-*-linux*)
                ;;
            *)
                tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
+               tmake_file="$tmake_file rs6000/t-linux"
                ;;
        esac
        case ${target} in
@@ -2117,9 +2186,15 @@ rs6000-ibm-aix[6789].* | powerpc-ibm-aix[6789].*)
        use_gcc_stdint=wrap
        extra_headers=altivec.h
        ;;
+rl78-*-elf*)
+       tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
+       target_has_targetm_common=no
+       c_target_objs="rl78-c.o"
+       cxx_target_objs="rl78-c.o"
+       tmake_file="${tmake_file} rl78/t-rl78"
+       ;;
 rx-*-elf*)
        tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
-       libgcc_tm_file="${libgcc_tm_file} rx/rx-abi.h rx/rx-lib.h"
        tmake_file="${tmake_file} rx/t-rx"
        ;;
 s390-*-linux*)
@@ -2284,7 +2359,7 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
                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,m3e,m4 ;;
+               sh*-*-linux*)   sh_multilibs=m1,m2,m2a,m3e,m4 ;;
                sh*-*-netbsd*)  sh_multilibs=m3,m3e,m4 ;;
                *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
                esac
@@ -2350,10 +2425,10 @@ sparc-*-elf*)
        ;;
 sparc-*-rtems*)
        tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
-       tmake_file="sparc/t-sparc sparc/t-elf t-rtems"
+       tmake_file="sparc/t-sparc sparc/t-elf sparc/t-rtems t-rtems"
        ;;
 sparc-*-linux*)
-       tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h"
+       tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
        extra_options="${extra_options} sparc/long-double-switch.opt"
        case ${target} in
            *-leon-*)
@@ -2371,6 +2446,7 @@ sparc-*-linux*)
                tmake_file="${tmake_file} sparc/t-linux64"
        else
                tm_file="${tm_file} sparc/linux.h"
+               tmake_file="${tmake_file} sparc/t-linux"
        fi
        ;;
 sparc-*-netbsdelf*)
@@ -2380,7 +2456,7 @@ sparc-*-netbsdelf*)
        tmake_file="${tmake_file} sparc/t-sparc"
        ;;
 sparc*-*-solaris2*)
-       tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sol2-bi.h"
+       tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sol2-bi.h sparc/tso.h"
        case ${target} in
            sparc64-*-* | sparcv9-*-*)
                tm_file="sparc/default-64.h ${tm_file}"
@@ -2403,10 +2479,10 @@ sparc64-*-elf*)
 sparc64-*-rtems*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
        extra_options="${extra_options}"
-       tmake_file="${tmake_file} sparc/t-sparc t-rtems"
+       tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64 t-rtems"
        ;;
 sparc64-*-linux*)
-       tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h"
+       tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h sparc/tso.h"
        extra_options="${extra_options} sparc/long-double-switch.opt"
        tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
        ;;
@@ -2448,7 +2524,6 @@ spu-*-elf*)
 tic6x-*-elf)
        tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
        tm_file="${tm_file} dbxelf.h tm-dwarf2.h newlib-stdint.h"
-       libgcc_tm_file="${libgcc_tm_file} c6x/c6x-abi.h"
        tmake_file="c6x/t-c6x c6x/t-c6x-elf"
        use_collect2=no
        ;;
@@ -2456,11 +2531,36 @@ tic6x-*-uclinux)
        tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
        tm_file="${tm_file} dbxelf.h tm-dwarf2.h glibc-stdint.h"
        tm_file="${tm_file} ./sysroot-suffix.h"
-       libgcc_tm_file="${libgcc_tm_file} c6x/c6x-abi.h"
        tmake_file="t-sysroot-suffix t-slibgcc"
        tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
        use_collect2=no
        ;;
+tilegx-*-linux*)
+       tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilegx/linux.h ${tm_file}"
+        tmake_file="${tmake_file} tilegx/t-tilegx"
+       extra_objs="mul-tables.o"
+       c_target_objs="tilegx-c.o"
+       cxx_target_objs="tilegx-c.o"
+       extra_headers="feedback.h"
+       ;;
+tilepro-*-linux*)
+       tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilepro/linux.h ${tm_file}"
+        tmake_file="${tmake_file} tilepro/t-tilepro"
+       extra_objs="mul-tables.o"
+       c_target_objs="tilepro-c.o"
+       cxx_target_objs="tilepro-c.o"
+       extra_headers="feedback.h"
+       ;;
+v850-*-rtems*)
+       target_cpu_default="TARGET_CPU_generic"
+       tm_file="dbxelf.h elfos.h v850/v850.h"
+       tm_file="${tm_file} rtems.h v850/rtems.h newlib-stdint.h"
+       tmake_file="${tmake_file} v850/t-v850"
+       tmake_file="${tmake_file} t-rtems v850/t-rtems"
+       use_collect2=no
+       c_target_objs="v850-c.o"
+       cxx_target_objs="v850-c.o"
+       ;;
 v850*-*-*)
        case ${target} in
        v850e2v3-*-*)
@@ -2544,7 +2644,6 @@ esac
 case ${target} in
 i[34567]86-*-linux* | x86_64-*-linux*)
        tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
-       libgcc_tm_file="${libgcc_tm_file} i386/value-unwind.h"
        ;;
 i[34567]86-*-* | x86_64-*-*)
        tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
@@ -2939,11 +3038,6 @@ if test x$with_schedule = x; then
        esac
 fi
 
-# Support --enable-initfini-array.
-if test x$enable_initfini_array = xyes; then
-  tm_file="${tm_file} initfini-array.h"
-fi
-
 # Validate and mark as valid any --with options supported
 # by this target.  In order to use a particular --with option
 # you must list it in supported_defaults; validating the value
@@ -3020,12 +3114,20 @@ case "${target}" in
 
                case "$with_fpu" in
                "" \
-               | fpa | fpe2 | fpe3 | maverick | vfp | vfp3 | vfpv3 \
+               | vfp | vfp3 | vfpv3 \
                | vfpv3-fp16 | vfpv3-d16 | vfpv3-d16-fp16 | vfpv3xd \
                | vfpv3xd-fp16 | neon | neon-fp16 | vfpv4 | vfpv4-d16 \
                | fpv4-sp-d16 | neon-vfpv4)
                        # OK
                        ;;
+               fpa | fpe2 | fpe3 | maverick)
+                       if test "x$enable_obsolete" != xyes; then
+                           echo "*** Configuration option --with-fpu=${with_fpu} is obsolete." >&2
+                           echo "*** Specify --enable-obsolete to build it anyway." >&2
+                           echo "*** Support will be REMOVED in the next major release of GCC." >&2
+                           exit 1
+                       fi
+                       ;;
                *)
                        echo "Unknown fpu used in --with-fpu=$with_fpu" 2>&1
                        exit 1
@@ -3466,9 +3568,14 @@ case ${target} in
 
        i[34567]86-*-darwin* | x86_64-*-darwin*)
                ;;
-       i[34567]86-*-linux* | x86_64-*-linux* | \
-         i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
-         i[34567]86-*-gnu*)
+       i[34567]86-*-linux* | x86_64-*-linux*)
+               tmake_file="$tmake_file i386/t-linux"
+               ;;
+       i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
+               tmake_file="$tmake_file i386/t-kfreebsd"
+               ;;
+       i[34567]86-*-gnu*)
+               tmake_file="$tmake_file i386/t-gnu"
                ;;
        i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
                ;;