OSDN Git Service

Pizza-lize :-)
[pf3gnuchains/gcc-fork.git] / gcc / config.gcc
index 0ca4f78..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.
 #
 #  extra_passes                List of extra executables compiled for this target
 #                      machine, used for compiling from source to object.
 #
-#  extra_parts         List of extra object files that should be compiled
-#                      for this target machine.
-#
 #  extra_programs      Like extra_passes, but these are used when linking.
 #
 #  extra_options       List of target-dependent .opt files.
 #  configure_default_options
 #                      Set to an initializer for configure_default_options
 #                      in configargs.h, based on --with-cpu et cetera.
+#
+#  native_system_header_dir
+#                      Where system header files are found for this
+#                      target.  This defaults to /usr/include.  If
+#                      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:
@@ -208,7 +211,6 @@ user_headers_inc_next_post=
 use_gcc_tgmath=yes
 use_gcc_stdint=none
 extra_passes=
-extra_parts=
 extra_programs=
 extra_objs=
 extra_gcc_objs=
@@ -220,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.
@@ -238,6 +239,8 @@ default_gnu_indirect_function=no
 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=
@@ -245,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*                     \
  )
@@ -280,6 +294,7 @@ case ${target} in
  | *-*-linux*oldld*                    \
  | *-*-rtemsaout*                      \
  | *-*-rtemscoff*                      \
+ | *-*-solaris2                                \
  | *-*-solaris2.[0-7]                  \
  | *-*-solaris2.[0-7].*                        \
  | *-*-sysv*           \
@@ -313,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"
@@ -344,13 +360,15 @@ i[34567]86-*-*)
        cpu_type=i386
        c_target_objs="i386-c.o"
        cxx_target_objs="i386-c.o"
+       need_64bit_hwint=yes
        extra_options="${extra_options} fused-madd.opt"
        extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
                       pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
                       nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
                       immintrin.h x86intrin.h avxintrin.h xopintrin.h
                       ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
-                      abmintrin.h bmiintrin.h tbmintrin.h"
+                      lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
+                      avx2intrin.h fmaintrin.h f16cintrin.h"
        ;;
 x86_64-*-*)
        cpu_type=i386
@@ -362,7 +380,8 @@ x86_64-*-*)
                       nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
                       immintrin.h x86intrin.h avxintrin.h xopintrin.h
                       ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
-                      abmintrin.h bmiintrin.h tbmintrin.h"
+                      lzcntintrin.h bmiintrin.h tbmintrin.h bmi2intrin.h
+                      avx2intrin.h fmaintrin.h f16cintrin.h"
        need_64bit_hwint=yes
        ;;
 ia64-*-*)
@@ -418,6 +437,9 @@ score*-*-*)
        ;;
 sparc*-*-*)
        cpu_type=sparc
+       c_target_objs="sparc-c.o"
+       cxx_target_objs="sparc-c.o"
+       extra_headers="visintrin.h"
        need_64bit_hwint=yes
        ;;
 spu*-*-*)
@@ -445,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
@@ -541,24 +571,15 @@ case ${target} in
   # pleases around the provided core setting.
   gas=yes
   gnu_ld=yes
-  extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
   fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
   tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
-  tmake_file="t-slibgcc-elf-ver t-freebsd"
+  tmake_file="t-slibgcc"
   case ${enable_threads} in
     no)
       fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
       ;;
     "" | yes | posix)
       thread_file='posix'
-      tmake_file="${tmake_file} t-freebsd-thread"
-      # Before 5.0, FreeBSD can't bind shared libraries to -lc
-      # when "optionally" threaded via weak pthread_* checks.
-      case ${target} in
-        *-*-freebsd[34] | *-*-freebsd[34].*)
-          tmake_file="${tmake_file} t-slibgcc-nolc-override"
-          ;;
-      esac
       ;;
     *)
       echo 'Unknown thread configuration for FreeBSD'
@@ -578,18 +599,18 @@ case ${target} in
   ;;
 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
   extra_options="$extra_options gnu-user.opt"
-  extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
   gas=yes
   gnu_ld=yes
   case ${enable_threads} in
     "" | yes | posix) thread_file='posix' ;;
   esac
-  tmake_file="t-slibgcc-elf-ver t-linux"
+  tmake_file="t-slibgcc"
   case $target in
     *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu)
       :;;
     *-*-gnu*)
-      tmake_file="$tmake_file t-gnu";;
+      native_system_header_dir=/include
+      ;;
   esac
   # glibc / uclibc / bionic switch.
   # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
@@ -631,7 +652,7 @@ case ${target} in
   esac
   ;;
 *-*-netbsd*)
-  tmake_file="t-slibgcc-elf-ver t-libc-ok t-netbsd t-libgcc-pic"
+  tmake_file="t-slibgcc"
   gas=yes
   gnu_ld=yes
 
@@ -652,15 +673,6 @@ case ${target} in
       ;;
   esac
 
-  # NetBSD 1.7 and later are set up to use GCC's crtstuff for
-  # ELF configurations.  We will clear extra_parts in the
-  # a.out configurations.
-  case ${target} in
-    *-*-netbsd*1.[7-9]* | *-*-netbsd[2-9]* | *-*-netbsdelf[2-9]*)
-      extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
-      ;;
-  esac
-
   # NetBSD 2.0 and later provide __cxa_atexit(), which we use by
   # default (unless overridden by --disable-__cxa_atexit).
   case ${target} in
@@ -670,17 +682,21 @@ case ${target} in
   esac
   ;;
 *-*-openbsd*)
-  tmake_file="t-libc-ok t-openbsd t-libgcc-pic"
+  tmake_file="t-openbsd"
   case ${enable_threads} in
     yes)
       thread_file='posix'
-      tmake_file="${tmake_file} t-openbsd-thread"
       ;;
   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
   ;;
 *-*-rtems*)
   case ${enable_threads} in
@@ -714,10 +730,10 @@ case ${target} in
     tm_file="usegas.h ${tm_file}"
   fi
   tm_p_file="${tm_p_file} sol2-protos.h"
-  tmake_file="${tmake_file} t-sol2 t-slibgcc-dummy"
+  tmake_file="${tmake_file} t-sol2 t-slibgcc"
   c_target_objs="${c_target_objs} sol2-c.o"
-  cxx_target_objs="${cxx_target_objs} sol2-c.o"
-  extra_objs="sol2.o"
+  cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
+  extra_objs="sol2.o sol2-stubs.o"
   extra_options="${extra_options} sol2.opt"
   case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
     "":yes:* | yes:yes:* )
@@ -728,10 +744,12 @@ case ${target} in
 *-*-*vms*)
   extra_options="${extra_options} vms/vms.opt"
   xmake_file=vms/x-vms
-  tmake_file="vms/t-vms"
+  tmake_file="vms/t-vms t-slibgcc"
   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)"
@@ -759,23 +777,20 @@ 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"
-       tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee alpha/t-linux"
        ;;
 alpha*-*-freebsd*)
        tm_file="${tm_file} ${fbsd_tm_file} alpha/elf.h alpha/freebsd.h"
        extra_options="${extra_options} alpha/elf.opt"
        target_cpu_default="MASK_GAS"
-       tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
-       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
        ;;
 alpha*-*-netbsd*)
        tm_file="${tm_file} netbsd.h alpha/elf.h netbsd-elf.h alpha/netbsd.h"
        extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
                       alpha/elf.opt"
        target_cpu_default="MASK_GAS"
-       tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
        ;;
 alpha*-*-openbsd*)
        tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
@@ -783,7 +798,6 @@ alpha*-*-openbsd*)
        extra_options="${extra_options} openbsd.opt alpha/elf.opt"
        # default x-alpha is only appropriate for dec-osf.
        target_cpu_default="MASK_GAS"
-       tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
        ;;
 alpha*-dec-osf5.1*)
        if test x$stabs = xyes
@@ -797,7 +811,7 @@ alpha*-dec-osf5.1*)
                extra_passes="mips-tfile mips-tdump"
        fi
        use_collect2=yes
-       tmake_file="t-slibgcc-dummy"
+       tmake_file="t-slibgcc"
        tm_file="${tm_file} alpha/osf5.h"
        tm_defines="${tm_defines} TARGET_SUPPORT_ARCH=1"
        extra_options="${extra_options} rpath.opt alpha/osf5.opt"
@@ -810,14 +824,14 @@ 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} alpha/t-alpha vms/t-vms64 alpha/t-vms alpha/t-ieee"
+       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-alpha alpha/t-vms alpha/t-ieee"
+       tmake_file="${tmake_file} alpha/t-vms"
        ;;
 arm-wrs-vxworks)
        tm_file="elfos.h arm/elf.h arm/aout.h ${tm_file} vx-common.h vxworks.h arm/vxworks.h"
@@ -831,21 +845,20 @@ arm*-*-freebsd*)
 arm*-*-netbsdelf*)
        tm_file="dbxelf.h elfos.h netbsd.h netbsd-elf.h arm/elf.h arm/aout.h arm/arm.h arm/netbsd-elf.h"
        extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
-       tmake_file="${tmake_file} arm/t-arm arm/t-netbsd"
+       tmake_file="${tmake_file} arm/t-arm"
        ;;
 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} t-linux arm/t-arm"
+       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-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
+           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)
@@ -865,15 +878,13 @@ arm*-*-linux*)                    # ARM GNU/Linux with ELF
        esac
        with_tls=${with_tls:-gnu}
        tm_file="$tm_file arm/aout.h arm/arm.h"
-       tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
        ;;
 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
@@ -883,21 +894,22 @@ arm*-*-uclinux*)          # ARM ucLinux
            default_use_cxa_atexit=yes
        esac
        tm_file="$tm_file arm/aout.h arm/arm.h"
-       tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
        ;;
 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"
-       tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
        ;;
-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*)
@@ -905,26 +917,22 @@ arm*-*-eabi* | arm*-*-symbianelf* )
          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"
          ;;
        esac
        tm_file="${tm_file} arm/aout.h arm/arm.h"
-       tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
-       ;;
-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"
-       tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
        ;;
 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"
-       tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
        ;;
 arm*-wince-pe*)
        tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h dbxcoff.h arm/pe.h arm/wince-pe.h"
@@ -934,15 +942,20 @@ 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"
-       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"
+       extra_objs="avr-devices.o avr-log.o"
        ;;
 avr-*-*)
-       tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h newlib-stdint.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"
+       extra_objs="avr-devices.o avr-log.o"
        ;;
 bfin*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
@@ -956,20 +969,23 @@ 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="t-slibgcc-elf-ver bfin/t-bfin-linux"
-       extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+       tmake_file="bfin/t-bfin-linux t-slibgcc"
        use_collect2=no
        ;;
 bfin*-rtems*)
        tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
-       tmake_file="bfin/t-bfin t-rtems bfin/t-rtems"
+       tmake_file="t-rtems bfin/t-rtems"
        ;;
 bfin*-*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
-       tmake_file=bfin/t-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"
@@ -988,7 +1004,7 @@ cris-*-elf | cris-*-none)
 crisv32-*-linux* | cris-*-linux*)
        tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h cris/linux.h"
        # We need to avoid using t-linux, so override default tmake_file
-       tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux"
+       tmake_file="cris/t-cris cris/t-linux t-slibgcc"
        extra_options="${extra_options} cris/linux.opt"
        case $target in
          cris-*-*)
@@ -999,46 +1015,48 @@ 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}"
-       tmake_file=fr30/t-fr30
-       extra_parts="crti.o crtn.o crtbegin.o crtend.o"
        ;;
 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)
        gas=yes
        gnu_ld=yes
        tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
-       extra_parts="crti.o crtn.o crtbegin.o crtend.o"
-       tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp"
+       tmake_file="${tmake_file} moxie/t-moxie"
        ;;
 moxie-*-uclinux*)
        gas=yes
        gnu_ld=yes
        tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
-       extra_parts="crti.o crtn.o crtbegin.o crtend.o"
-       tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp"
+       tmake_file="${tmake_file} moxie/t-moxie"
        ;;
 moxie-*-rtems*)
-       tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp t-rtems"
+       tmake_file="${tmake_file} moxie/t-moxie t-rtems"
        tm_file="moxie/moxie.h dbxelf.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
        ;;
 h8300-*-rtems*)
-       tmake_file="h8300/t-h8300 h8300/t-elf t-rtems h8300/t-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"
        ;;
 h8300-*-elf*)
-       tmake_file="h8300/t-h8300 h8300/t-elf"
+       tmake_file="h8300/t-h8300"
        tm_file="h8300/h8300.h dbxelf.h elfos.h newlib-stdint.h h8300/elf.h"
        ;;
 hppa*64*-*-linux*)
@@ -1046,7 +1064,6 @@ hppa*64*-*-linux*)
        tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \
                 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
                 pa/pa64-linux.h"
-       tmake_file="${tmake_file} pa/t-linux64"
        gas=yes gnu_ld=yes
        need_64bit_hwint=yes
        ;;
@@ -1054,13 +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 t-slibgcc-libgcc"
-       # Set the libgcc version number
-       if test x$sjlj = x1; then
-           tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
-       else
-           tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
-       fi
+       tmake_file="${tmake_file} pa/t-linux"
        ;;
 # port not yet contributed.
 #hppa*-*-openbsd*)
@@ -1083,7 +1094,7 @@ hppa[12]*-*-hpux10*)
        esac
        use_gcc_stdint=provide
        tm_file="${tm_file} hpux-stdint.h"
-       tmake_file="pa/t-pa-hpux10 pa/t-pa-hpux pa/t-hpux-shlib"
+       tmake_file="t-slibgcc"
        case ${enable_threads} in
          "")
            if test x$have_pthread_h = xyes ; then
@@ -1094,12 +1105,6 @@ hppa[12]*-*-hpux10*)
            tmake_file="${tmake_file} pa/t-dce-thr"
            ;;
        esac
-       # Set the libgcc version number
-       if test x$sjlj = x1; then
-           tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
-       else
-           tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
-       fi
        use_collect2=yes
        gas=yes
        if test "x$with_dwarf2" != x; then
@@ -1132,15 +1137,7 @@ hppa*64*-*-hpux11*)
        extra_options="${extra_options} pa/pa-hpux.opt \
                       pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
        need_64bit_hwint=yes
-       tmake_file="pa/t-pa64 pa/t-pa-hpux pa/t-hpux-shlib"
-       # Set the libgcc version number
-       if test x$sjlj = x1; then
-           tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
-       else
-           tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
-       fi
-       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \
-                    libgcc_stub.a"
+       tmake_file="t-slibgcc"
        case x${enable_threads} in
        x | xyes | xposix )
                thread_file=posix
@@ -1178,14 +1175,7 @@ hppa[12]*-*-hpux11*)
                extra_options="${extra_options} pa/pa-hpux1131.opt"
                ;;
        esac
-       tmake_file="pa/t-pa-hpux11 pa/t-pa-hpux pa/t-hpux-shlib"
-       # Set the libgcc version number
-       if test x$sjlj = x1; then
-           tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
-       else
-           tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
-       fi
-       extra_parts="libgcc_stub.a"
+       tmake_file="t-slibgcc"
        case x${enable_threads} in
        x | xyes | xposix )
                thread_file=posix
@@ -1209,34 +1199,27 @@ hppa[12]*-*-hpux11*)
        fi
        ;;
 i[34567]86-*-darwin*)
-       need_64bit_hwint=yes
        need_64bit_isa=yes
        # Baseline choice for a machine that allows m64 support.
        with_cpu=${with_cpu:-core2}
-       tmake_file="${tmake_file} t-slibgcc-dummy"
-       libgcc_tm_file="$libgcc_tm_file i386/darwin-lib.h"
+       tmake_file="${tmake_file} t-slibgcc"
        ;;
 x86_64-*-darwin*)
        with_cpu=${with_cpu:-core2}
-       tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-dummy"
+       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"
-       tmake_file="${tmake_file} i386/t-i386elf t-svr4"
        ;;
 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"
-       tmake_file="${tmake_file} i386/t-i386elf t-svr4"
        ;;
 i[34567]86-*-freebsd*)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
-       tmake_file="${tmake_file} i386/t-crtstuff"
        ;;
 x86_64-*-freebsd*)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
-       tmake_file="${tmake_file} i386/t-crtstuff"
        ;;
 i[34567]86-*-netbsdelf*)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h"
@@ -1245,13 +1228,12 @@ i[34567]86-*-netbsdelf*)
 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"
-       tmake_file="${tmake_file} i386/t-crtstuff"
        ;;
 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-libc-ok t-openbsd i386/t-openbsd"
+       tmake_file="${tmake_file} t-openbsd i386/t-openbsd"
        # we need collect2 until our bug is fixed...
        use_collect2=yes
        ;;
@@ -1291,7 +1273,6 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
                                esac
                        done
                        TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
-                       need_64bit_hwint=yes
                        need_64bit_isa=yes
                        case X"${with_cpu}" in
                        Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver2|Xbdver1|Xbtver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
@@ -1309,29 +1290,39 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
                        esac
                else
                        tm_file="${tm_file} i386/gnu-user.h i386/linux.h"
-                       # This is a hack to avoid a configuration mismatch
-                       # until the toplevel libgcc move is complete.
-                       extra_parts="${extra_parts} crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
                fi
                ;;
-       i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/gnu-user.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
-       i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
-       i[34567]86-*-kopensolaris*-gnu) tm_file="${tm_file} i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h" ;;
-       i[34567]86-*-gnu*) tm_file="$tm_file i386/gnu-user.h gnu.h i386/gnu.h";;
+       i[34567]86-*-knetbsd*-gnu)
+               tm_file="${tm_file} i386/gnu-user.h knetbsd-gnu.h i386/knetbsd-gnu.h"
+               ;;
+       i[34567]86-*-kfreebsd*-gnu)
+               tm_file="${tm_file} i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
+               ;;
+       i[34567]86-*-kopensolaris*-gnu)
+               tm_file="${tm_file} i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
+               ;;
+       i[34567]86-*-gnu*)
+               tm_file="$tm_file i386/gnu-user.h gnu.h i386/gnu.h"
+               ;;
        esac
-       tmake_file="${tmake_file} i386/t-crtstuff"
        ;;
 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-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-user64.h"
        case ${target} in
        x86_64-*-linux*)
-         tm_file="${tm_file} linux.h i386/linux64.h"
-         default_gnu_indirect_function=glibc-2011 ;;
-       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" ;;
+               tm_file="${tm_file} linux.h i386/linux64.h"
+               # Assume modern glibc
+               default_gnu_indirect_function=yes
+               ;;
+       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 i386/t-crtstuff"
+       tmake_file="${tmake_file} i386/t-linux64"
        x86_multilibs="${with_multilib_list}"
        if test "$x86_multilibs" = "default"; then
                x86_multilibs="m64,m32"
@@ -1352,7 +1343,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
 i[34567]86-pc-msdosdjgpp*)
        xm_file=i386/xm-djgpp.h
        tm_file="dbxcoff.h ${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
-       tmake_file="${tmake_file} i386/t-djgpp"
+       native_system_header_dir=/dev/env/DJDIR/include
        extra_options="${extra_options} i386/djgpp.opt"
        gnu_ld=yes
        gas=yes
@@ -1361,36 +1352,15 @@ i[34567]86-pc-msdosdjgpp*)
 i[34567]86-*-lynxos*)
        xm_defines=POSIX
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/lynx.h lynx.h"
-       tmake_file="${tmake_file} i386/t-crtstuff t-lynx"
-       extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+       tmake_file="${tmake_file} t-lynx"
        extra_options="${extra_options} lynx.opt"
        thread_file=lynx
        gnu_ld=yes
        gas=yes
        ;;
-i[3456x]86-*-netware*)
-       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h tm-dwarf2.h i386/netware.h"
-       tmake_file="${tmake_file} i386/t-netware"
-       extra_objs=netware.o
-       extra_options="${extra_options} i386/netware.opt"
-       case /${with_ld} in
-       */nwld)
-               extra_objs="$extra_objs nwld.o"
-               tm_file="${tm_file} i386/nwld.h"
-               tmake_file="${tmake_file} i386/t-nwld t-slibgcc-dummy"
-               ;;
-       esac
-       case x${enable_threads} in
-       x | xyes | xposix) thread_file='posix';;
-       xnks) thread_file='nks';;
-       xno) ;;
-       *) echo 'Unknown thread configuration for NetWare' >&2; exit 1;;
-       esac
-       ;;
 i[34567]86-*-nto-qnx*)
        tm_file="${tm_file} i386/att.h dbxelf.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
        extra_options="${extra_options} i386/nto.opt"
-       tmake_file="${tmake_file} i386/t-nto"
        gnu_ld=yes
        gas=yes
        ;;
@@ -1418,7 +1388,6 @@ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
                tm_file="${tm_file} i386/x86-64.h i386/sol2-bi.h sol2-bi.h"
                tm_defines="${tm_defines} TARGET_BI_ARCH=1"
                tmake_file="$tmake_file i386/t-sol2-64"
-               need_64bit_hwint=yes
                need_64bit_isa=yes
                case X"${with_cpu}" in
                Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver2|Xbdver1|Xbtver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
@@ -1453,19 +1422,7 @@ i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
 i[34567]86-*-cygwin*)
        tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
        xm_file=i386/xm-cygwin.h
-       # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
-       if test x$sjlj = x0; then
-               tmake_eh_file="i386/t-dw2-eh"
-       else
-               tmake_eh_file="i386/t-sjlj-eh"
-       fi
-       # Shared libgcc DLL install dir depends on cross/native build.
-       if test x${host} = x${target} ; then
-               tmake_dlldir_file="i386/t-dlldir"
-       else
-               tmake_dlldir_file="i386/t-dlldir-x"
-       fi
-       tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-cygming i386/t-cygwin"
+       tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
        target_gtfiles="\$(srcdir)/config/i386/winnt.c"
        extra_options="${extra_options} i386/cygming.opt"
        extra_objs="winnt.o winnt-stubs.o"
@@ -1481,7 +1438,6 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
        xm_file=i386/xm-mingw32.h
        case ${target} in
                x86_64-*-* | *-w64-*)
-                       need_64bit_hwint=yes
                        need_64bit_isa=yes
                        ;;
                *)
@@ -1519,19 +1475,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
                        ;;
        esac
        tm_file="${tm_file} i386/mingw-stdint.h"
-       # This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
-       if test x$sjlj = x0; then
-               tmake_eh_file="i386/t-dw2-eh"
-       else
-               tmake_eh_file="i386/t-sjlj-eh"
-       fi
-       # Shared libgcc DLL install dir depends on cross/native build.
-       if test x${host} = x${target} ; then
-               tmake_dlldir_file="i386/t-dlldir"
-       else
-               tmake_dlldir_file="i386/t-dlldir-x"
-       fi
-       tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-cygming"
+       tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
         case ${target} in
                x86_64-w64-*)
                                tmake_file="${tmake_file} i386/t-mingw-w64"
@@ -1539,10 +1483,8 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
               i[34567]86-w64-*)
                        tmake_file="${tmake_file} i386/t-mingw-w32"
                        ;;
-               *)
-                               tmake_file="${tmake_file} i386/t-mingw32"
-                       ;;
        esac
+        native_system_header_dir=/mingw/include
        target_gtfiles="\$(srcdir)/config/i386/winnt.c"
        extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
        case ${target} in
@@ -1555,15 +1497,16 @@ 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
-         "" | yes | win32)       thread_file='win32'
-           tmake_file="${tmake_file} i386/t-gthr-win32"
+         "" | yes | win32)
+           thread_file='win32'
            ;;
          posix)
            thread_file='posix'
-           tmake_file="i386/t-mingw-pthread ${tmake_file}"
            ;;
        esac
        case ${target} in
@@ -1574,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'
@@ -1599,26 +1542,20 @@ ia64*-*-elf*)
        then
                target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
        fi
-       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
        ;;
 ia64*-*-freebsd*)
        tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
        target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
        tmake_file="${tmake_file} ia64/t-ia64"
-       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
        ;;
 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 ia64/t-glibc"
-       if test x$with_system_libunwind != xyes ; then
-               tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
-       fi
+       tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
        target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
-       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
        ;;
 ia64*-*-hpux*)
        tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/hpux.h"
-       tmake_file="ia64/t-ia64 ia64/t-hpux"
+       tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
        target_cpu_default="MASK_GNU_AS"
        case x$enable_threads in
        x | xyes | xposix )
@@ -1638,9 +1575,9 @@ 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 ia64/t-vms"
+       tmake_file="${tmake_file} vms/t-vms64 ia64/t-ia64"
        target_cpu_default="0"
        if test x$gas = xyes
        then
@@ -1650,40 +1587,37 @@ ia64-hp-*vms*)
        ;;
 iq2000*-*-elf*)
         tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
-        tmake_file=iq2000/t-iq2000
         out_file=iq2000/iq2000.c
         md_file=iq2000/iq2000.md
         ;;
 lm32-*-elf*)
         tm_file="dbxelf.h elfos.h ${tm_file}"
-       tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp"
+       tmake_file="${tmake_file} lm32/t-lm32"
         ;;
 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 lm32/t-fprules-softfp soft-fp/t-softfp"
+       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"
-       tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp"
+       tmake_file="${tmake_file} lm32/t-lm32"
         ;;
 m32r-*-elf*)
        tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
-       extra_parts="crtinit.o crtfini.o"
        ;;
 m32rle-*-elf*)
        tm_file="dbxelf.h elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
-       extra_parts="crtinit.o crtfini.o m32rx/crtinit.o m32rx/crtfini.o"
        ;;
 m32r-*-rtems*)
        tm_file="dbxelf.h elfos.h ${tm_file} m32r/rtems.h rtems.h newlib-stdint.h"
        tmake_file="m32r/t-m32r t-rtems"
-       extra_parts="crtinit.o crtfini.o"
        ;;
 m32r-*-linux*)
        tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} m32r/linux.h"
        # We override the tmake_file for linux -- why?
-       tmake_file="t-slibgcc-elf-ver m32r/t-linux"
+       tmake_file="m32r/t-linux t-slibgcc"
        gnu_ld=yes
        if test x$enable_threads = xyes; then
                thread_file='posix'
@@ -1692,7 +1626,7 @@ m32r-*-linux*)
 m32rle-*-linux*)
        tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h m32r/little.h ${tm_file} m32r/linux.h"
        # We override the tmake_file for linux -- why?
-       tmake_file="t-slibgcc-elf-ver m32r/t-linux"
+       tmake_file="m32r/t-linux t-slibgcc"
        gnu_ld=yes
        if test x$enable_threads = xyes; then
                thread_file='posix'
@@ -1728,7 +1662,6 @@ m68k-*-elf* | fido-*-elf*)
                tmake_file="$tmake_file m68k/t-mlibs"
                ;;
        esac
-       extra_parts="crtbegin.o crtend.o"
        ;;
 m68k*-*-netbsdelf*)
        default_m68k_cpu=68020
@@ -1744,7 +1677,7 @@ m68k*-*-openbsd*)
        tm_defines="${tm_defines} OBSD_OLD_GAS"
        tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h m68k/openbsd.h"
        extra_options="${extra_options} openbsd.opt"
-       tmake_file="t-libc-ok t-openbsd m68k/t-openbsd"
+       tmake_file="t-openbsd m68k/t-openbsd"
        # we need collect2 until our bug is fixed...
        use_collect2=yes
        ;;
@@ -1758,7 +1691,7 @@ m68k-*-uclinux*)          # Motorola m68k/ColdFire running uClinux
        tm_defines="${tm_defines} MOTOROLA=1"
        tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
        ;;
-m68k-*-linux*)         # Motorola m68k's running GNU/Linux
+m68k-*-linux*)                 # Motorola m68k's running GNU/Linux
                                # with ELF format using glibc 2
                                # aka the GNU/Linux C library 6.
        default_m68k_cpu=68020
@@ -1768,11 +1701,6 @@ m68k-*-linux*)           # Motorola m68k's running GNU/Linux
        extra_options="${extra_options} m68k/ieee.opt"
        tm_defines="${tm_defines} MOTOROLA=1"
        tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
-       # if not configured with --enable-sjlj-exceptions, bump the
-       # libgcc version number
-       if test x$sjlj != x1; then
-           tmake_file="$tmake_file m68k/t-slibgcc-elf-ver"
-       fi
        ;;
 m68k-*-rtems*)
        default_m68k_cpu=68020
@@ -1780,7 +1708,6 @@ m68k-*-rtems*)
        tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff t-rtems m68k/t-rtems m68k/t-mlibs"
        tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h newlib-stdint.h"
        tm_defines="${tm_defines} MOTOROLA=1"
-       extra_parts="crtbegin.o crtend.o"
        ;;
 mcore-*-elf)
        tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
@@ -1790,7 +1717,6 @@ mcore-*-elf)
 mep-*-*)
        tm_file="dbxelf.h elfos.h ${tm_file}"
        tmake_file=mep/t-mep
-       extra_parts="crtbegin.o crtend.o"
        c_target_objs="mep-pragma.o"
        cxx_target_objs="mep-pragma.o"
        if test -d "${srcdir}/../newlib/libc/include" &&
@@ -1803,9 +1729,15 @@ microblaze*-linux*)
        tm_file="${tm_file} dbxelf.h gnu-user.h linux.h microblaze/linux.h"
        c_target_objs="${c_target_objs} microblaze-c.o"
        cxx_target_objs="${cxx_target_objs} microblaze-c.o"
-       tmake_file="${tmake_file} t-slibgcc-elf-ver t-slibgcc-nolc-override t-linux microblaze/t-microblaze"
-        extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.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"
@@ -1814,7 +1746,9 @@ microblaze*-*-*)
         ;;
 mips-sgi-irix6.5*)
        tm_file="elfos.h ${tm_file} mips/iris6.h"
-       tmake_file="mips/t-irix6 t-slibgcc-dummy"
+       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"
@@ -1838,8 +1772,8 @@ mips*-*-netbsd*)                  # NetBSD/mips, either endian.
        extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
        ;;
 mips64*-*-linux* | mipsisa64*-*-linux*)
-       tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/linux.h mips/linux64.h"
-       tmake_file="${tmake_file} mips/t-linux64 mips/t-libgcc-mips16"
+       tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h"
+       tmake_file="${tmake_file} mips/t-linux64"
        tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
        case ${target} in
                mips64el-st-linux-gnu)
@@ -1859,12 +1793,10 @@ mips64*-*-linux* | mipsisa64*-*-linux*)
        test x$with_llsc != x || with_llsc=yes
        ;;
 mips*-*-linux*)                                # Linux MIPS, either endian.
-        tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/linux.h"
-       tmake_file="${tmake_file} mips/t-libgcc-mips16"
+        tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h"
        if test x$enable_targets = xall; then
-               tm_file="${tm_file} mips/linux64.h"
+               tm_file="${tm_file} mips/gnu-user64.h mips/linux64.h"
                tmake_file="${tmake_file} mips/t-linux64"
-               tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
        fi
        case ${target} in
         mipsisa32r2*)
@@ -1888,7 +1820,7 @@ mips*-*-openbsd*)
        ;;
 mips*-sde-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/sde.h"
-       tmake_file="mips/t-sde mips/t-libgcc-mips16"
+       tmake_file="mips/t-sde"
        extra_options="${extra_options} mips/sde.opt"
        case "${with_newlib}" in
          yes)
@@ -1925,7 +1857,7 @@ mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
 mipsisa64-*-elf* | mipsisa64el-*-elf* | \
 mipsisa64r2-*-elf* | mipsisa64r2el-*-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
-       tmake_file="mips/t-isa3264 mips/t-libgcc-mips16"
+       tmake_file="mips/t-isa3264"
        case ${target} in
          mipsisa32r2*)
            tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33"
@@ -1962,17 +1894,22 @@ mipsisa64sr71k-*-elf*)
         ;;
 mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
-       tmake_file="mips/t-elf mips/t-libgcc-mips16 mips/t-sb1"
+       tmake_file="mips/t-elf mips/t-sb1"
        target_cpu_default="MASK_64BIT|MASK_FLOAT64"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
        ;;
 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 mips/t-libgcc-mips16"
+       tmake_file="mips/t-elf"
        target_cpu_default="MASK_64BIT|MASK_FLOAT64"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
        ;;
@@ -1983,13 +1920,13 @@ mips64vr-*-elf* | mips64vrel-*-elf*)
         ;;
 mips64orion-*-elf* | mips64orionel-*-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
-       tmake_file="mips/t-elf mips/t-libgcc-mips16"
+       tmake_file="mips/t-elf"
        target_cpu_default="MASK_64BIT|MASK_FLOAT64"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
        ;;
 mips*-*-rtems*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
-       tmake_file="mips/t-elf mips/t-libgcc-mips16 t-rtems mips/t-rtems"
+       tmake_file="mips/t-elf t-rtems mips/t-rtems"
        ;;
 mips-wrs-vxworks)
        tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
@@ -1997,7 +1934,7 @@ mips-wrs-vxworks)
        ;;
 mipstx39-*-elf* | mipstx39el-*-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
-       tmake_file="mips/t-r3900 mips/t-libgcc-mips16"
+       tmake_file="mips/t-r3900"
        ;;
 mmix-knuth-mmixware)
        tm_file="${tm_file} newlib-stdint.h"
@@ -2024,7 +1961,7 @@ picochip-*)
         ;;
 # port not yet contributed
 #powerpc-*-openbsd*)
-#      tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-fprules-fpbit "
+#      tmake_file="${tmake_file} rs6000/t-fprules"
 #      extra_headers=
 #      ;;
 powerpc-*-darwin*)
@@ -2040,20 +1977,29 @@ powerpc-*-darwin*)
          *-darwin[0-6]*)
            ;;
        esac
-       tmake_file="${tmake_file} t-slibgcc-dummy"
+       tmake_file="${tmake_file} t-slibgcc"
        extra_headers=altivec.h
        ;;
 powerpc64-*-darwin*)
        extra_options="${extra_options} ${cpu_type}/darwin.opt"
-       tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-dummy"
+       tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc"
        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 rs6000/t-freebsd"
-       tmake_file="${tmake_file} t-slibgcc-libgcc rs6000/t-fprules-softfp soft-fp/t-softfp"
+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"
@@ -2070,42 +2016,42 @@ powerpc-*-eabispe*)
 powerpc-*-eabisimaltivec*)
        tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h rs6000/eabialtivec.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcendian rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
        use_gcc_stdint=wrap
        ;;
 powerpc-*-eabisim*)
        tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        use_gcc_stdint=wrap
        ;;
 powerpc-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        ;;
 powerpc-*-eabialtivec*)
        tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabialtivec.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcendian rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
        use_gcc_stdint=wrap
        ;;
 powerpc-xilinx-eabi*)
        tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/singlefp.h rs6000/xfpu.h rs6000/xilinx.h"
        extra_options="${extra_options} rs6000/sysv4.opt rs6000/xilinx.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm rs6000/t-xilinx"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm rs6000/t-xilinx"
        use_gcc_stdint=wrap
        ;;
 powerpc-*-eabi*)
        tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        use_gcc_stdint=wrap
        ;;
 powerpc-*-rtems*)
        tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-rtems t-rtems rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-rtems t-rtems rs6000/t-ppccomm"
        ;;
 powerpc-*-linux* | powerpc64-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h"
@@ -2136,10 +2082,13 @@ powerpc-*-linux* | powerpc64-*-linux*)
                ;;
            *)
                tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
+               tmake_file="$tmake_file rs6000/t-linux"
                ;;
        esac
-       tmake_file="${tmake_file} t-slibgcc-libgcc rs6000/t-fprules-softfp soft-fp/t-softfp"
        case ${target} in
+           powerpc*-*-linux*ppc476*)
+               tm_file="${tm_file} rs6000/476.h"
+               extra_options="${extra_options} rs6000/476.opt" ;;
            powerpc*-*-linux*altivec*)
                tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
            powerpc*-*-linux*spe*)
@@ -2153,7 +2102,7 @@ powerpc-*-linux* | powerpc64-*-linux*)
        ;;
 powerpc-wrs-vxworks|powerpc-wrs-vxworksae)
        tm_file="${tm_file} elfos.h freebsd-spec.h rs6000/sysv4.h"
-       tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppccomm rs6000/t-vxworks"
+       tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
        extra_options="${extra_options} rs6000/sysv4.opt"
        extra_headers=ppc-asm.h
        case ${target} in
@@ -2171,31 +2120,30 @@ powerpc-*-lynxos*)
        tm_file="${tm_file} dbxelf.h elfos.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
        tmake_file="t-lynx rs6000/t-lynx"
        extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
-       extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
        thread_file=lynx
        gnu_ld=yes
        gas=yes
        ;;
 powerpcle-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        extra_options="${extra_options} rs6000/sysv4.opt"
        ;;
 powerpcle-*-eabisim*)
        tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        extra_options="${extra_options} rs6000/sysv4.opt"
        use_gcc_stdint=wrap
        ;;
 powerpcle-*-eabi*)
        tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        extra_options="${extra_options} rs6000/sysv4.opt"
        use_gcc_stdint=wrap
        ;;
 rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
        tm_file="rs6000/biarch64.h ${tm_file} rs6000/aix.h rs6000/aix43.h rs6000/xcoff.h rs6000/aix-stdint.h"
-       tmake_file=rs6000/t-aix43
+       tmake_file="rs6000/t-aix43 t-slibgcc"
        extra_options="${extra_options} rs6000/aix64.opt"
        use_collect2=yes
        thread_file='aix'
@@ -2205,7 +2153,7 @@ rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
 rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
        tm_file="rs6000/biarch64.h ${tm_file} rs6000/aix.h rs6000/aix51.h rs6000/xcoff.h rs6000/aix-stdint.h"
        extra_options="${extra_options} rs6000/aix64.opt"
-       tmake_file=rs6000/t-aix43
+       tmake_file="rs6000/t-aix43 t-slibgcc"
        use_collect2=yes
        thread_file='aix'
        use_gcc_stdint=wrap
@@ -2213,7 +2161,7 @@ rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
        ;;
 rs6000-ibm-aix5.2.* | powerpc-ibm-aix5.2.*)
        tm_file="${tm_file} rs6000/aix.h rs6000/aix52.h rs6000/xcoff.h rs6000/aix-stdint.h"
-       tmake_file=rs6000/t-aix52
+       tmake_file="rs6000/t-aix52 t-slibgcc"
        extra_options="${extra_options} rs6000/aix64.opt"
        use_collect2=yes
        thread_file='aix'
@@ -2222,7 +2170,7 @@ rs6000-ibm-aix5.2.* | powerpc-ibm-aix5.2.*)
        ;;
 rs6000-ibm-aix5.3.* | powerpc-ibm-aix5.3.*)
        tm_file="${tm_file} rs6000/aix.h rs6000/aix53.h rs6000/xcoff.h rs6000/aix-stdint.h"
-       tmake_file=rs6000/t-aix52
+       tmake_file="rs6000/t-aix52 t-slibgcc"
        extra_options="${extra_options} rs6000/aix64.opt"
        use_collect2=yes
        thread_file='aix'
@@ -2231,16 +2179,22 @@ rs6000-ibm-aix5.3.* | powerpc-ibm-aix5.3.*)
        ;;
 rs6000-ibm-aix[6789].* | powerpc-ibm-aix[6789].*)
        tm_file="${tm_file} rs6000/aix.h rs6000/aix61.h rs6000/xcoff.h rs6000/aix-stdint.h"
-       tmake_file=rs6000/t-aix52
+       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
        ;;
+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"
        tmake_file="${tmake_file} rx/t-rx"
        ;;
 s390-*-linux*)
@@ -2263,7 +2217,6 @@ s390x-ibm-tpf*)
         md_file=s390/s390.md
         extra_modes=s390/s390-modes.def
         out_file=s390/s390.c
-        extra_parts="crtbeginS.o crtendS.o"
         thread_file='tpf'
        extra_options="${extra_options} s390/tpf.opt"
        ;;
@@ -2271,13 +2224,11 @@ score-*-elf)
        gas=yes
        gnu_ld=yes
         tm_file="dbxelf.h elfos.h score/elf.h score/score.h newlib-stdint.h"
-       extra_parts="crti.o crtn.o crtbegin.o crtend.o"
-        tmake_file="${tmake_file} score/t-score-elf score/t-score-softfp soft-fp/t-softfp"
         ;;
 sh-*-elf* | sh[12346l]*-*-elf* | \
   sh-*-linux* | sh[2346lbe]*-*-linux* | \
   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
-   sh64-*-netbsd* | sh64l*-*-netbsd*)
+  sh64-*-netbsd* | sh64l*-*-netbsd*)
        tmake_file="${tmake_file} sh/t-sh sh/t-elf"
        if test x${with_endian} = x; then
                case ${target} in
@@ -2318,7 +2269,6 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
                         fi
                        tm_file="${tm_file} sh/embed-elf.h"
                        tm_file="${tm_file} sh/superh.h"
-                       tmake_file="${tmake_file} sh/t-superh"
                        extra_options="${extra_options} sh/superh.opt" ;;
        *)              if test x$with_newlib = xyes \
                           && test x$with_libgloss = xyes; then
@@ -2329,17 +2279,16 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
        case ${target} in
        sh5*-*-netbsd*)
                # SHmedia, 32-bit ABI
-               tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd"
+               tmake_file="${tmake_file} sh/t-sh64"
                ;;
        sh64*-netbsd*)
                # SHmedia, 64-bit ABI
-               tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd sh/t-netbsd-sh5-64"
+               tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd-sh5-64"
                ;;
        *-*-netbsd)
-                tmake_file="${tmake_file} sh/t-netbsd"
                ;;
        sh64*-*-linux*)
-               tmake_file="${tmake_file} sh/t-sh64 sh/t-linux64"
+               tmake_file="${tmake_file} sh/t-sh64"
                tm_file="${tm_file} sh/sh64.h"
                extra_headers="shmedia.h ushmedia.h sshmedia.h"
                ;;
@@ -2410,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
@@ -2453,43 +2402,43 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
        tmake_file="$tmake_file t-sysroot-suffix"
        ;;
 sh-*-rtems*)
-       tmake_file="sh/t-sh sh/t-elf t-rtems sh/t-rtems"
+       tmake_file="sh/t-sh t-rtems sh/t-rtems"
        tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
        ;;
 sh-wrs-vxworks)
-       tmake_file="$tmake_file sh/t-sh sh/t-elf sh/t-vxworks"
+       tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
        tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
        ;;
 sparc-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
        case ${target} in
            *-leon-*)
-               tmake_file="sparc/t-leon"
+               tmake_file="sparc/t-sparc sparc/t-leon"
                ;;
            *-leon[3-9]*)
-               tmake_file="sparc/t-leon3"
+               tmake_file="sparc/t-sparc sparc/t-leon3"
                ;;
            *)
-               tmake_file="sparc/t-elf"
+               tmake_file="sparc/t-sparc sparc/t-elf"
                ;;
        esac
        ;;
 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-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-*)
-               tmake_file="${tmake_file} sparc/t-leon"
+               tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
                ;;
            *-leon[3-9]*)
-               tmake_file="${tmake_file} sparc/t-leon3"
+               tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
                ;;
            *)
-               tmake_file="${tmake_file} sparc/t-linux"
+               tmake_file="${tmake_file} sparc/t-sparc"
                ;;
        esac
        if test x$enable_targets = xall; then
@@ -2497,42 +2446,45 @@ 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*)
        tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
        extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
        extra_options="${extra_options} sparc/long-double-switch.opt"
+       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/sol2-64.h ${tm_file}"
+               tm_file="sparc/default-64.h ${tm_file}"
                ;;
            *)
                test x$with_cpu != x || with_cpu=v9
                ;;
        esac
-       tmake_file="${tmake_file} sparc/t-sol2-64"
+       tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2-64"
        ;;
 sparc-wrs-vxworks)
        tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
-       tmake_file="${tmake_file} sparc/t-vxworks"
+       tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
        ;;
 sparc64-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
-       extra_options="${extra_options} sparc/little-endian.opt"
+       extra_options="${extra_options}"
+       tmake_file="${tmake_file} sparc/t-sparc"
        ;;
 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} sparc/little-endian.opt"
-       tmake_file="${tmake_file} t-rtems"
+       extra_options="${extra_options}"
+       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/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-linux sparc/t-linux64"
+       tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
        ;;
 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
        tm_file="${tm_file} ${fbsd_tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/freebsd.h"
@@ -2542,25 +2494,28 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*)
                x) with_cpu=ultrasparc ;;
                *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
        esac
+       tmake_file="${tmake_file} sparc/t-sparc"
        ;;
 sparc64-*-netbsd*)
        tm_file="sparc/biarch64.h ${tm_file}"
        tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
        extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
        extra_options="${extra_options} sparc/long-double-switch.opt"
-       tmake_file="${tmake_file} sparc/t-netbsd64"
+       tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
        ;;
 sparc64-*-openbsd*)
        tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp64-elf.h"
        tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
        extra_options="${extra_options} openbsd.opt"
-       extra_options="${extra_options} sparc/little-endian.opt"
+       extra_options="${extra_options}"
        gas=yes gnu_ld=yes
        with_cpu=ultrasparc
+       tmake_file="${tmake_file} sparc/t-sparc"
        ;;
 spu-*-elf*)
        tm_file="dbxelf.h elfos.h spu/spu-elf.h spu/spu.h newlib-stdint.h"
        tmake_file="spu/t-spu-elf"
+        native_system_header_dir=/include
        extra_headers="spu_intrinsics.h spu_internals.h vmx2spu.h spu_mfcio.h vec_types.h spu_cache.h"
        extra_modes=spu/spu-modes.def
        c_target_objs="${c_target_objs} spu-c.o"
@@ -2569,21 +2524,43 @@ 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"
-       tmake_file="${tmake_file} c6x/t-c6x-softfp soft-fp/t-softfp"
        use_collect2=no
        ;;
 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-slibgcc-elf-ver t-sysroot-suffix"
+       tmake_file="t-sysroot-suffix t-slibgcc"
        tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
-       tmake_file="${tmake_file} c6x/t-c6x-softfp soft-fp/t-softfp"
        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-*-*)
@@ -2615,7 +2592,6 @@ v850*-*-*)
 vax-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h vax/elf.h vax/linux.h"
        extra_options="${extra_options} vax/elf.opt"
-       tmake_file="${tmake_file} vax/t-linux"
        ;;
 vax-*-netbsdelf*)
        tm_file="${tm_file} elfos.h netbsd.h netbsd-elf.h vax/elf.h vax/netbsd-elf.h"
@@ -2634,22 +2610,18 @@ xstormy16-*-elf)
        out_file=stormy16/stormy16.c
        extra_options=stormy16/stormy16.opt
        tmake_file="stormy16/t-stormy16"
-       extra_parts="crtbegin.o crtend.o"
        ;;
 xtensa*-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h xtensa/elf.h"
        extra_options="${extra_options} xtensa/elf.opt"
-       tmake_file="xtensa/t-xtensa xtensa/t-elf"
        ;;
 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/t-linux"
+       tmake_file="${tmake_file} xtensa/t-xtensa"
        ;;
 am33_2.0-*-linux*)
        tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
-       tmake_file="${tmake_file} mn10300/t-linux"
        gas=yes gnu_ld=yes
-       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
        use_collect2=no
        ;;
 m32c-*-rtems*)
@@ -3142,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
@@ -3297,7 +3277,7 @@ case "${target}" in
                        | k8 | k8-sse3 | athlon64 | athlon64-sse3 | opteron \
                        | opteron-sse3 | athlon-fx | bdver2 | bdver1 | btver1 \
                        | amdfam10 | barcelona | nocona | core2 | corei7 \
-                       | corei7-avx | atom)
+                       | corei7-avx | core-avx-i | core-avx2 | atom)
                                # OK
                                ;;
                        *)
@@ -3484,7 +3464,8 @@ case "${target}" in
                        | v8 | supersparc | hypersparc | leon \
                        | sparclite | f930 | f934 | sparclite86x \
                        | sparclet | tsc701 \
-                       | v9 | ultrasparc | ultrasparc3 | niagara | niagara2)
+                       | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
+                       | niagara3 | niagara4)
                                # OK
                                ;;
                        *)
@@ -3586,24 +3567,23 @@ case ${target} in
                ;;
 
        i[34567]86-*-darwin* | x86_64-*-darwin*)
-               tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
                ;;
-       i[34567]86-*-linux* | x86_64-*-linux* | \
-         i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
-         i[34567]86-*-gnu*)
-               tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux"
+       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]*)
-               tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
                ;;
        i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*)
-               tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
                ;;
        i[34567]86-*-freebsd* | x86_64-*-freebsd*)
-               tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
                ;;
        ia64*-*-linux*)
-               tmake_file="${tmake_file} ia64/t-fprules-softfp soft-fp/t-softfp"
                ;;
 
        mips*-*-*)