OSDN Git Service

2003-01-29 Joel Sherrill <joel@OARcorp.com>
[pf3gnuchains/gcc-fork.git] / gcc / config.gcc
index f2a6b16..a5a1fce 100644 (file)
@@ -1,5 +1,6 @@
 # GCC build-, host- and target-specific configuration file.
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
 
 #This file is part of GCC.
 
 #
 #  gas                 Set to yes or no depending on whether the target
 #                      system normally uses GNU as.
+#
+#  need_64bit_hwint    Set to yes if HOST_WIDE_INT must be 64 bits wide
+#                      for this target.  This is true iff
+#                      MAX_LONG_TYPE_SIZE is 64.  (The code which
+#                      determines the underlying integral type for
+#                      HOST_WIDE_INT cannot see the definition of
+#                      MAX_LONG_TYPE_SIZE.)
 
 # The following variables are used in each case-construct to build up the
 # outgoing variables:
@@ -209,6 +217,7 @@ gas="$gas_flag"
 gnu_ld="$gnu_ld_flag"
 enable_threads=$enable_threads_flag
 target_gtfiles=
+need_64bit_hwint=
 
 # Obsolete configurations.
 case $machine in
@@ -219,7 +228,6 @@ case $machine in
  | mn10200-*-*      \
  | ns32k-*-openbsd* \
  | romp-*-openbsd*  \
- | vax-*-vms* \
  )
     if test "x$enable_obsolete" != xyes; then
       echo "*** Configuration $machine is obsolete." >&2
@@ -238,6 +246,7 @@ cpu_type=`echo $machine | sed 's/-.*$//'`
 case $machine in
 alpha*-*-*)
        cpu_type=alpha
+       need_64bit_hwint=yes
        ;;
 strongarm*-*-*)
        cpu_type=arm
@@ -255,9 +264,11 @@ i[34567]86-*-*)
 x86_64-*-*)
        cpu_type=i386
        extra_headers="mmintrin.h xmmintrin.h"
+       need_64bit_hwint=yes
        ;;
 ia64-*-*)
        extra_headers=ia64intrin.h
+       need_64bit_hwint=yes
        ;;
 hppa*-*-* | parisc*-*-*)
        cpu_type=pa
@@ -271,18 +282,34 @@ m68k-*-*)
        ;;
 mips*-*-*)
        cpu_type=mips
+       need_64bit_hwint=yes
        ;;
 powerpc*-*-*)
        cpu_type=rs6000
        extra_headers="ppc-asm.h altivec.h spe.h"
+       need_64bit_hwint=yes
+       ;;
+rs6000*-*-*)
+       need_64bit_hwint=yes
+       ;;
+sparc64*-*-*)
+       cpu_type=sparc
+       need_64bit_hwint=yes
        ;;
 sparc*-*-*)
        cpu_type=sparc
        ;;
+s390*-*-*)
+       need_64bit_hwint=yes
+       ;;
 # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
 sh[123456789l]*-*-*)
        cpu_type=sh
+       need_64bit_hwint=yes
        ;;
+tic4x-*-*)
+        cpu_type=c4x
+        ;;
 esac
 
 tm_file=${cpu_type}/${cpu_type}.h
@@ -309,7 +336,7 @@ case $machine in
        ;;
 esac
 
-# Common parts for GNU/Linux, GNU/Hurd, OpenBSD, NetBSD, and FreeBSD systems.
+# Common parts for widely ported systems.
 case $machine in
 *-*-linux*)
        xm_defines=POSIX
@@ -434,6 +461,25 @@ case $machine in
        esac
        fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h"
        ;;
+*-*-darwin*)
+       tm_file="${tm_file} darwin.h"
+       tm_p_file="${tm_p_file} darwin-protos.h"
+       tmake_file="t-darwin"
+       target_gtfiles="\$(srcdir)/config/darwin.c"
+       c_target_objs="darwin-c.o"
+       cxx_target_objs="darwin-c.o"
+       extra_parts="crt2.o"
+       # Darwin linker does collect2 functionality
+       use_collect2=no
+       extra_objs="darwin.o"
+       ;;      
+*-*-vxworks*)
+       tmake_file=t-vxworks
+       tm_file="${tm_file} elfos.h svr4.h vxworks.h"
+       thread_file='vxworks'
+       use_collect2=yes
+       xm_defines=POSIX
+       ;;
 esac
 
 case $machine in
@@ -469,7 +515,6 @@ alpha-*-interix)
        target_cpu_default="MASK_GAS|MASK_IEEE_CONFORMANT"
 
        xm_defines=POSIX
-       xm_file="alpha/xm-alpha-interix.h"
        tmake_file="alpha/t-alpha t-interix alpha/t-interix alpha/t-ieee"
        if test x$enable_threads = xyes ; then
                thread_file='posix'
@@ -553,21 +598,10 @@ alpha*-dec-osf[45]*)
            ;;
        esac
        ;;
-alpha*-*-vxworks*)
-       xm_defines=POSIX
-       tm_file="${tm_file} dbx.h alpha/vxworks.h"
-       tmake_file="alpha/t-alpha alpha/t-ieee"
-       if [ x$gas != xyes ]
-       then
-               extra_passes="mips-tfile mips-tdump"
-       fi
-       use_collect2=yes
-       thread_file='vxworks'
-       ;;
 alpha64-dec-*vms*)
        xm_defines=POSIX
        tm_file="${tm_file} alpha/vms.h alpha/vms64.h"
-       xm_file="alpha/xm-vms.h alpha/xm-vms64.h"
+       xm_file="alpha/xm-vms.h"
        tmake_file="alpha/t-alpha alpha/t-vms alpha/t-vms64 alpha/t-ieee"
        xmake_file=alpha/x-vms
        exeext=.exe
@@ -608,11 +642,6 @@ arm-*-coff* | armel-*-coff*)
        tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h"
        tmake_file=arm/t-arm-coff
        ;;
-arm-*-vxworks*)
-       tm_file="arm/semi.h arm/aout.h arm/coff.h arm/vxarm.h arm/arm.h"
-       tmake_file=arm/t-arm-coff
-       thread_file='vxworks'
-       ;;
 arm-semi-aout | armel-semi-aout)
        tm_file="arm/semi.h arm/aout.h arm/arm.h"
        tmake_file=arm/t-semi
@@ -685,7 +714,7 @@ arm-*-pe*)
        ;;
 avr-*-*)
        ;;
-c4x-*-rtems*)
+c4x-*-rtems* | tic4x-*-rtems*)
        xm_defines=POSIX
        tmake_file="c4x/t-c4x t-rtems"
        tm_file="c4x/c4x.h c4x/rtems.h rtems.h"
@@ -695,7 +724,7 @@ c4x-*-rtems*)
        c_target_objs="c4x-c.o"
        cxx_target_objs="c4x-c.o"
        ;;
-c4x-*)
+c4x-* | tic4x-*)
        tmake_file=c4x/t-c4x
        c_target_objs="c4x-c.o"
        cxx_target_objs="c4x-c.o"
@@ -748,6 +777,7 @@ hppa*64*-*-linux* | parisc*64*-*-linux*)
                 pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h pa/pa64-linux.h"
        tmake_file=pa/t-linux64
        gas=yes gnu_ld=yes
+       need_64bit_hwint=yes
        ;;
 hppa*-*-linux* | parisc*-*-linux*)
        target_cpu_default="MASK_PA_11"
@@ -776,8 +806,11 @@ hppa1.1-*-rtems*)
        xm_defines=POSIX
        target_cpu_default="(MASK_JUMP_IN_DELAY | MASK_PORTABLE_RUNTIME | MASK_GAS | MASK_NO_SPACE_REGS | MASK_SOFT_FLOAT)"
        tm_file="${tm_file} pa/pa32-regs.h dbxelf.h elfos.h pa/elf.h pa/pa-pro-end.h libgloss.h pa/rtems.h rtems.h"
-       tmake_file="pa/t-bsd pa/t-pro"
+       tmake_file="pa/t-bsd pa/t-pro t-rtems"
        xmake_file="pa/x-ada"
+       if test x$enable_threads = xyes; then
+         thread_file='rtems'
+       fi
        ;;
 hppa1.0-*-osf*)
        tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-osf.h"
@@ -888,10 +921,11 @@ hppa*64*-*-hpux11*)
                         pa/pa64-regs.h pa/long_double.h pa/pa-hpux.h \
                         pa/pa-hpux11.h pa/pa-64.h pa/pa64-hpux.h"
        fi
+       need_64bit_hwint=yes
        tmake_file="pa/t-pa64 pa/t-pa-hpux"
        xmake_file="pa/x-ada"
        target_cpu_default="(MASK_PA_11|MASK_PA_20|MASK_GAS)"
-
+       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
        if test x$gnu_ld = xyes
        then
                target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
@@ -904,7 +938,6 @@ hppa*64*-*-hpux11*)
 #              tmake_file="${tmake_file} pa/t-dce-thr"
 #      fi
        install_headers_dir=install-headers-cpio
-       use_collect2=yes
        ;;
 hppa1.1-*-hpux11* | hppa2*-*-hpux11*)
        target_cpu_default="MASK_PA_11"
@@ -1003,16 +1036,7 @@ i370-*-linux*)
        elf=yes
        ;;
 i[34567]86-*-darwin*)
-       tm_file="${tm_file} darwin.h i386/darwin.h"
-       tm_p_file="${tm_p_file} darwin-protos.h"
-       tmake_file="t-darwin"
-       extra_objs="darwin.o"
-       target_gtfiles="\$(srcdir)/config/darwin.c"
-       c_target_objs="darwin-c.o"
-       cxx_target_objs="darwin-c.o"
-       extra_parts="crt2.o"
-       # Darwin linker does collect2 functionality
-       use_collect2=no
+       tm_file="${tm_file} i386/darwin.h"
        ;;
 i[34567]86-*-elf*)
        xm_defines=POSIX
@@ -1049,10 +1073,6 @@ i[34567]86-sequent-sysv*)        # would otherwise be caught by i?86-*-sysv*
        echo "*** Configuration $machine not supported" 1>&2
        exit 1
        ;;
-i[34567]86-wrs-vxworks*)
-       tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h i386/vxi386.h"
-       thread_file='vxworks'
-       ;;
 i[34567]86-*-aout*)
        tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h i386/i386-aout.h"
        ;;
@@ -1320,7 +1340,6 @@ i[34567]86-*-uwin*)
        ;;
 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"
-       xm_file="i386/xm-i386-interix.h"
        xm_defines=POSIX
        tmake_file="t-interix i386/t-interix"
        extra_objs=winnt.o
@@ -1334,7 +1353,6 @@ i[34567]86-*-interix3*)
        ;;
 i[34567]86-*-interix*)
        tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/i386-interix.h interix.h"
-       xm_file="i386/xm-i386-interix.h"
        xm_defines=POSIX
        tmake_file="t-interix i386/t-interix"
        extra_objs=winnt.o
@@ -1345,30 +1363,6 @@ i[34567]86-*-interix*)
                tm_file="${tm_file} dbxcoff.h"
        fi
        ;;
-i960-wrs-vxworks5 | i960-wrs-vxworks5.0*)
-       tm_file="${tm_file} i960/vx960.h"
-       tmake_file=i960/t-vxworks960
-       use_collect2=yes
-       thread_file='vxworks'
-       c_target_objs="i960-c.o"
-       cxx_target_objs="i960-c.o"
-       ;;
-i960-wrs-vxworks5* | i960-wrs-vxworks)
-       tm_file="${tm_file} dbxcoff.h i960/i960-coff.h i960/vx960-coff.h"
-       tmake_file=i960/t-vxworks960
-       use_collect2=yes
-       thread_file='vxworks'
-       c_target_objs="i960-c.o"
-       cxx_target_objs="i960-c.o"
-       ;;
-i960-wrs-vxworks*)
-       tm_file="${tm_file} i960/vx960.h"
-       tmake_file=i960/t-vxworks960
-       use_collect2=yes
-       thread_file='vxworks'
-       c_target_objs="i960-c.o"
-       cxx_target_objs="i960-c.o"
-       ;;
 i960-*-coff*)
        tm_file="${tm_file} dbxcoff.h i960/i960-coff.h libgloss.h"
        tmake_file=i960/t-960bare
@@ -1391,12 +1385,6 @@ i960-*-*)                        # Default i960 environment.
        c_target_objs="i960-c.o"
        cxx_target_objs="i960-c.o"
        ;;
-ia64*-*-aix*)
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h ia64/sysv4.h ia64/aix.h"
-       tmake_file="ia64/t-ia64 ia64/t-aix"
-       target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
-       extra_parts="crti.o crtn.o crtbegin.o crtend.o crtbeginS.o crtendS.o"
-       ;;
 ia64*-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/elf.h"
        tmake_file="ia64/t-ia64"
@@ -1422,6 +1410,9 @@ ia64*-*-linux*)
        tmake_file="t-slibgcc-elf-ver t-linux ia64/t-ia64 ia64/t-glibc"
        target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+       if test x"$use_libunwind_exceptions" = xyes; then
+         tmake_file="$tmake_file t-libunwind"
+       fi
        ;;
 ia64*-*-hpux*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h ia64/sysv4.h ia64/hpux.h ia64/hpux_longdouble.h"
@@ -1609,11 +1600,6 @@ m68k-sun-sunos*)                 # For SunOS 4 (the default).
        fi
        use_collect2=yes
        ;;
-m68k-wrs-vxworks*)
-       tm_file=m68k/vxm68k.h
-       tmake_file=m68k/t-vxworks68
-       thread_file='vxworks'
-       ;;
 m68k-*-aout*)
        tmake_file=m68k/t-m68kbare
        tm_file="m68k/m68k-aout.h libgloss.h"
@@ -1676,8 +1662,6 @@ m68k-*-linux*)            # Motorola m68k's running GNU/Linux
                                # aka the GNU/Linux C library 6.
        tm_file=m68k/linux.h
        tmake_file="t-slibgcc-elf-ver t-linux m68k/t-linux"
-       extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
-       gnu_ld=yes
        ;;
 m68k-*-psos*)
        tmake_file=m68k/t-m68kbare
@@ -1755,14 +1739,6 @@ mips-sgi-irix6*)         # SGI System V.4., IRIX 6
 #              thread_file='irix'
 #      fi
        ;;
-mips-wrs-vxworks)
-       tm_file="${tm_file} mips/elf.h mips/vxworks.h"
-       tmake_file=mips/t-ecoff
-       gas=yes
-       gnu_ld=yes
-       extra_parts="crtbegin.o crtend.o"
-       thread_file='vxworks'
-       ;;
 mips-sgi-irix5cross64)         # Irix5 host, Irix 6 target, cross64
        tm_file="mips/iris6.h mips/cross64.h"
        xm_defines=POSIX
@@ -1822,7 +1798,25 @@ mips-sgi-*)      # would otherwise be caught by mips-*-elf*
 mips*-*-netbsd*)                       # NetBSD/mips, either endian.
        target_cpu_default="MASK_GAS|MASK_ABICALLS"
        tm_file="elfos.h ${tm_file} mips/netbsd.h"
-       tmake_file="${tmake_file} mips/t-netbsd"
+       tmake_file="${tmake_file}"
+       ;;
+mips64*-*-linux*)
+       tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h mips/linux64.h"
+       tmake_file="t-slibgcc-elf-ver t-linux mips/t-linux mips/t-linux64"
+
+       # This default ABI is a partial lie: t-linux64 overrides the
+       # DRIVER_SELF_SPEC that sets the default abi, in the spec file
+       # that is installed.  What GCC thinks of as the default must
+       # remain as ABI_32 such that the SONAMEs of the libgcc shared
+       # libraries remain compatible with those of mips-linux-gnu.
+       tm_defines="MIPS_ISA_DEFAULT=1 MIPS_ABI_DEFAULT=ABI_32"
+       target_cpu_default="MASK_ABICALLS|MASK_FLOAT64|MASK_64BIT"
+       extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
+       gnu_ld=yes
+       gas=yes
+       if test x$enable_threads = xyes; then
+               thread_file='posix'
+       fi
        ;;
 mips*-*-linux*)                                # Linux MIPS, either endian.
         tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h"
@@ -1832,7 +1826,7 @@ mips*-*-linux*)                           # Linux MIPS, either endian.
                tm_defines="MIPS_ISA_DEFAULT=32"
                 ;;
         esac
-       tmake_file="t-slibgcc-elf-ver t-linux mips/t-linux"
+       tmake_file="t-slibgcc-elf-ver t-linux"
        ;;
 mips*el-*-openbsd*)    # mips little endian
        target_cpu_default="MASK_GAS|MASK_ABICALLS"
@@ -1850,7 +1844,12 @@ mips-*-ecoff* | mipsel-*-ecoff*)
 mipsisa32-*-elf* | mipsisa32el-*-elf*)
        tm_file="${tm_file} mips/elf.h"
        tmake_file=mips/t-isa3264
-       tm_defines="MIPS_ISA_DEFAULT=32 MIPS_ABI_DEFAULT=ABI_MEABI"
+       tm_defines="MIPS_ISA_DEFAULT=32 MIPS_ABI_DEFAULT=ABI_EABI"
+       ;;
+mipsisa32r2-*-elf* | mipsisa32r2el-*-elf*)
+       tm_file="${tm_file} mips/elf.h"
+       tmake_file=mips/t-isa3264
+       tm_defines="MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_EABI"
        ;;
 mipsisa64-*-elf* | mipsisa64el-*-elf*)
        tm_file="${tm_file} mips/elf.h"
@@ -1916,6 +1915,7 @@ mipstx39-*-elf* | mipstx39el-*-elf*)
        tmake_file=mips/t-r3900
        ;;
 mmix-knuth-mmixware)
+       need_64bit_hwint=yes
        ;;
 mn10200-*-*)
        tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
@@ -1957,48 +1957,38 @@ romp-*-openbsd*)
        # Nothing special
        ;;
 powerpc-*-openbsd*)
-       tmake_file="${tmake_file} rs6000/t-rs6000 rs6000/t-openbsd"
+       tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-openbsd"
        extra_headers=
        ;;
 powerpc64-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux64.h"
-       out_file=rs6000/rs6000.c
-       tmake_file="rs6000/t-rs6000 t-slibgcc-elf-ver t-linux rs6000/t-linux64"
+       tmake_file="rs6000/t-fprules t-slibgcc-elf-ver t-linux rs6000/t-linux64"
        ;;
 powerpc64-*-gnu*)
        tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux64.h rs6000/gnu.h"
-       out_file=rs6000/rs6000.c
-       tmake_file="rs6000/t-rs6000 t-slibgcc-elf-ver t-gnu rs6000/t-linux64"
+       tmake_file="rs6000/t-fprules t-slibgcc-elf-ver t-gnu rs6000/t-linux64"
        ;;
 powerpc-*-beos*)
        tm_file="${tm_file} rs6000/aix.h rs6000/beos.h rs6000/xcoff.h"
        xm_defines=POSIX
-       tmake_file=rs6000/t-beos
+       tmake_file="rs6000/t-fprules rs6000/t-beos"
        extra_headers=
        ;;
 powerpc-*-darwin*)
-       tm_file="${tm_file} darwin.h rs6000/darwin.h"
-       tm_p_file="${tm_p_file} darwin-protos.h"
-       tmake_file="rs6000/t-rs6000 t-darwin rs6000/t-darwin"
-       extra_objs="darwin.o"
-       target_gtfiles="\$(srcdir)/config/darwin.c"
-       c_target_objs="darwin-c.o"
-       cxx_target_objs="darwin-c.o"
-       extra_parts="crt2.o"
-       # Darwin linker does collect2 functionality
-       use_collect2=no
+       tm_file="${tm_file} rs6000/darwin.h"
+       tmake_file="rs6000/t-fprules t-darwin rs6000/t-darwin"
        extra_headers=altivec.h
+       # override ppc default
+       need_64bit_hwint=
        ;;
 powerpc*-*-freebsd*)
        tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h rs6000/freebsd.h"
-       xm_file=rs6000/xm-sysv4.h
-       out_file=rs6000/rs6000.c
-       tmake_file="rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
        ;;
 powerpc-*-sysv*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
        xm_defines=POSIX
-       tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcos rs6000/t-ppccomm"
        ;;
 powerpc-*-netbsd*)
        tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
@@ -2007,7 +1997,7 @@ powerpc-*-netbsd*)
 powerpc-*-chorusos*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h chorus.h"
-       tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcos rs6000/t-ppccomm"
        case x${enable_threads} in
          xyes | xpthreads | xposix)
                thread_file='posix'
@@ -2017,117 +2007,108 @@ powerpc-*-chorusos*)
 powerpc-*-eabiaix*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabiaix.h"
-       tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        ;;
 powerpc-*-eabispe*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabispe.h"
-       tmake_file="rs6000/t-ppcendian rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
        ;;
 powerpc-*-eabisimaltivec*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h rs6000/eabialtivec.h"
-       tmake_file="rs6000/t-ppcendian rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
        ;;
 powerpc-*-eabisim*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h"
-       tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        ;;
 powerpc-*-elf*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
-       tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        ;;
 powerpc-*-eabialtivec*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
-       tmake_file="rs6000/t-ppcendian rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
        ;;
 powerpc-*-eabi*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h"
-       tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        ;;
 powerpc-*-rtems*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/rtems.h rtems.h"
-       tmake_file="rs6000/t-ppcgas t-rtems rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas t-rtems rs6000/t-ppccomm"
        if test x$enable_threads = xyes; then
          thread_file='rtems'
        fi
        ;;
 powerpc-*-linux*libc1)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h"
-       out_file=rs6000/rs6000.c
-       tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux t-linux-gnulibc1 rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux t-linux-gnulibc1 rs6000/t-ppccomm"
        if test x$enable_threads = xyes; then
                thread_file='posix'
        fi
        ;;
 powerpc-*-linux-gnualtivec*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h"
-       out_file=rs6000/rs6000.c
-       tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
        ;;
 powerpc-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h"
-       out_file=rs6000/rs6000.c
-       tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
        ;;
 powerpc-*-gnu-gnualtivec*)
        tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h rs6000/gnu.h"
-       out_file=rs6000/rs6000.c
-       tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
        if test x$enable_threads = xyes; then
                thread_file='posix'
        fi
        ;;
 powerpc-*-gnu*)
        tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/gnu.h"
-       out_file=rs6000/rs6000.c
-       tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
        if test x$enable_threads = xyes; then
                thread_file='posix'
        fi
        ;;
 powerpc-wrs-vxworks*)
-       xm_defines=POSIX
-        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/vxppc.h"
-        tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
-       thread_file='vxworks'
-        ;;
+       # We want vxworks.h after rs6000/sysv4.h, which unfortunately
+       # means we have to redo the tm_file list from scratch.
+       tm_file="rs6000/rs6000.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
+       tm_file="${tm_file} vxworks.h rs6000/vxworks.h"
+       tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
+       extra_headers=ppc-asm.h
+       ;;
 powerpc-wrs-windiss*)
         xm_defines=POSIX
        tm_file="${tm_file} elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/windiss.h"
-        tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+        tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
         thread_file=""
         ;;
-powerpcle-wrs-vxworks*)
-       xm_defines=POSIX
-        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/vxppc.h"
-        tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
-       thread_file='vxworks'
-        ;;
 powerpcle-*-sysv*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h"
        xm_defines=POSIX
-       tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcos rs6000/t-ppccomm"
        ;;
 powerpcle-*-elf*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h"
-       tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        ;;
 powerpcle-*-eabisim*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/eabisim.h"
-       tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        ;;
 powerpcle-*-eabi*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h"
-       tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        ;;
 rs6000-ibm-aix3.[01]*)
        xm_defines=POSIX
@@ -2137,14 +2118,14 @@ rs6000-ibm-aix3.[01]*)
 rs6000-ibm-aix3.2.[456789]* | powerpc-ibm-aix3.2.[456789]*)
        xm_defines=POSIX
        tm_file="${tm_file} rs6000/aix.h rs6000/aix3newas.h rs6000/xcoff.h"
-       tmake_file=rs6000/t-newas
+       tmake_file="rs6000/t-fprules rs6000/t-newas"
        use_collect2=yes
        extra_headers=
        ;;
 rs6000-ibm-aix4.[12]* | powerpc-ibm-aix4.[12]*)
        xm_defines=POSIX
        tm_file="${tm_file} rs6000/aix.h rs6000/aix41.h rs6000/xcoff.h"
-       tmake_file=rs6000/t-newas
+       tmake_file="rs6000/t-fprules rs6000/t-newas"
        use_collect2=yes
        extra_headers=
        ;;
@@ -2189,7 +2170,7 @@ rs6000-*-mach*)
        ;;
 rs6000-*-lynxos*)
        tm_file="lynx.h rs6000/lynx.h"
-       tmake_file=rs6000/t-rs6000
+       tmake_file=rs6000/t-fprules
        use_collect2=yes
        ;;
 s390-*-linux*)
@@ -2223,6 +2204,7 @@ sh-*-elf* | sh[2346l]*-*-elf*)
        sh4*)  target_cpu_default="SELECT_SH4" ;;
        sh3e*) target_cpu_default="SELECT_SH3E" ;;
        sh3*)  target_cpu_default="SELECT_SH3" ;;
+       sh2e*) target_cpu_default="SELECT_SH2E" ;;
        sh2*)  target_cpu_default="SELECT_SH2" ;;
        esac
        case $machine in
@@ -2246,7 +2228,7 @@ sh-*-rtems*)
        fi
        ;;
 sh-*-linux* | sh[2346lbe]*-*-linux*)
-       tmake_file="sh/t-sh sh/t-elf sh/t-linux"
+       tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux sh/t-linux"
        case $machine in
        sh*be-*-* | sh*eb-*-*) ;;
        *)
@@ -2255,7 +2237,6 @@ sh-*-linux* | sh[2346lbe]*-*-linux*)
                ;;
        esac
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h"
-       gas=yes gnu_ld=yes
        case $machine in
        sh64*)
                tmake_file="${tmake_file} sh/t-sh64"
@@ -2268,6 +2249,9 @@ sh-*-linux* | sh[2346lbe]*-*-linux*)
        sh3e[lb]*) target_cpu_default="SELECT_SH3" ;;
        sh3e*) target_cpu_default="SELECT_SH3E" ;;
        sh3*) target_cpu_default="SELECT_SH3" ;;
+       sh2e[lb]e*) target_cpu_default="SELECT_SH2E" ;;
+       sh2e[lb]*) target_cpu_default="SELECT_SH2" ;;
+       sh2e*) target_cpu_default="SELECT_SH2E" ;;
        sh2*) target_cpu_default="SELECT_SH2" ;;
        esac
        case $machine in
@@ -2290,7 +2274,7 @@ sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
        case $machine in
        sh5*-*)
                # SHmedia, 32-bit ABI
-               target_cpu_default="SH5_BIT|SH4_BIT|SH3E_BIT"
+               target_cpu_default="SH5_BIT|SH4_BIT|SH3_BIT|SH_E_BIT"
                tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd-sh5"
                ;;
        sh64*-*)
@@ -2312,17 +2296,6 @@ sparc-tti-*)
        tm_file="${tm_file} sparc/pbd.h"
        xm_defines=POSIX
        ;;
-sparc64-wrs-vxworks*)
-        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/elf.h sparc/biarch64.h gofast.h sparc/vxsparc64.h"
-        tmake_file="sparc/t-vxsparc64 sparc/t-crtfm"
-        use_collect2=yes
-        ;;
-sparc-wrs-vxworks* | sparclite-wrs-vxworks*)
-       tm_file="${tm_file} aoutos.h sparc/aout.h gofast.h sparc/vxsparc.h"
-       tmake_file=sparc/t-vxsparc
-       use_collect2=yes
-       thread_file='vxworks'
-       ;;
 sparc-*-aout*)
        tmake_file=sparc/t-sparcbare
        tm_file="sparc/sparc.h aoutos.h sparc/aout.h libgloss.h"
@@ -2345,7 +2318,6 @@ sparc-*-openbsd*)
        ;;
 sparc64-*-openbsd*)
        tm_file="sparc/openbsd1-64.h sparc/sparc.h elfos.h svr4.h sparc/sysv4.h sparc/sol2.h sparc/sp64-elf.h openbsd.h sparc/openbsd64.h"
-       xm_file=sparc/xm-sp64.h
        gas=yes gnu_ld=yes
        with_cpu=ultrasparc
        ;;
@@ -2432,6 +2404,7 @@ sparc64-*-solaris2* | sparcv9-*-solaris2*)
                thread_file='solaris'
            fi
        fi
+       need_64bit_hwint=yes
        ;;
 sparc-hal-solaris2*)
         xm_defines=POSIX
@@ -2472,6 +2445,7 @@ sparc-*-solaris2*)
                        tm_file="${tm_file} sparc/sol2-gas-bi.h"
                fi
                tmake_file="$tmake_file sparc/t-sol2-64"
+               need_64bit_hwint=yes
                ;;
        esac
        xm_defines=POSIX
@@ -2512,11 +2486,6 @@ sparc-*-sysv4*)
        tmake_file=t-svr4
        extra_parts="crtbegin.o crtend.o"
        ;;
-sparc-*-vxsim*)
-       xm_defines=POSIX
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/vxsim.h"
-       tmake_file=sparc/t-vxsparc
-       ;;
 sparclet-*-aout*)
        tm_file="${tm_file} aoutos.h sparc/aout.h sparc/splet.h libgloss.h"
        tmake_file=sparc/t-splet
@@ -2560,6 +2529,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*)
                x) with_cpu=ultrasparc ;;
                *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
        esac
+       need_64bit_hwint=yes
        ;;
 sparc64-*-linux*)              # 64-bit SPARC's running GNU/Linux
        tmake_file="t-slibgcc-elf-ver t-linux sparc/t-linux64 sparc/t-crtfm"
@@ -2663,8 +2633,8 @@ vax-*-ultrix*)                    # VAXen running ultrix
        tm_file="${tm_file} vax/ultrix.h"
        ;;
 vax-*-vms*)                    # VAXen running VMS
-       xm_file=vax/xm-vms.h
-       tm_file=vax/vms.h
+       echo "Configuration $machine no longer supported" 1>&2
+       exit 1
        ;;
 vax-*-*)                       # VAX default entry
        ;;
@@ -2693,14 +2663,11 @@ xstormy16-*-elf)
        ;;
 xtensa-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h xtensa/elf.h"
-       with_newlib=yes
-       tmake_file=xtensa/t-xtensa
-       extra_parts="crtbegin.o crtend.o"
-       fixincludes=Makefile.in # newlib headers should be OK
+       tmake_file="xtensa/t-xtensa xtensa/t-elf"
        ;;
 xtensa-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h xtensa/linux.h"
-       tmake_file="t-linux xtensa/t-xtensa"
+       tmake_file="t-linux xtensa/t-xtensa xtensa/t-linux"
        ;;
 *)
        echo "*** Configuration $machine not supported" 1>&2
@@ -2743,6 +2710,9 @@ i586-*-*)
        ;;
 i686-*-* | i786-*-*)
        case $target_alias in
+               k8-*)
+                       target_cpu_default2=TARGET_CPU_DEFAULT_k8
+                       ;;
                athlon_xp-*|athlon_mp-*|athlon_4-*)
                        target_cpu_default2=TARGET_CPU_DEFAULT_athlon_sse
                        ;;
@@ -2767,7 +2737,7 @@ x86_64-*-*)
        # We should have hammer chip here, but it does not exist yet and
        # thus it is not supported.  Athlon_SSE is probably equivalent feature
        # wise to hammer from our point of view except for 64bit mode.
-       target_cpu_default2=TARGET_CPU_DEFAULT_athlon_sse
+       target_cpu_default2=TARGET_CPU_DEFAULT_k8
        ;;
 alpha*-*-*)
        case $machine in
@@ -2913,9 +2883,10 @@ powerpc*-*-* | rs6000-*-*)
                        fi
                        ;;
        esac
+       out_file=rs6000/rs6000.c
        c_target_objs="${c_target_objs} rs6000-c.o"
        cxx_target_objs="${cxx_target_objs} rs6000-c.o"
-       tmake_file="${tmake_file} rs6000/t-rs6000-c-rule"
+       tmake_file="rs6000/t-rs6000 ${tmake_file}"
        ;;
 sparc*-*-*)
        case ".$with_cpu" in