OSDN Git Service

update
[pf3gnuchains/gcc-fork.git] / gcc / configure.in
index f607b04..95c2fed 100644 (file)
@@ -22,7 +22,7 @@
 
 # Initialization and defaults
 AC_INIT(tree.c)
-AC_CONFIG_HEADER(auto-config.h:config.in)
+AC_CONFIG_HEADER(auto-host.h:config.in)
 
 remove=rm
 hard_link=ln
@@ -34,25 +34,25 @@ copy=cp
 # With GNU ld
 AC_ARG_WITH(gnu-ld,
 [  --with-gnu-ld           arrange to work with GNU ld.],
-gnu_ld=yes,
-gnu_ld=no)
+gnu_ld_flag="$with_gnu_ld",
+gnu_ld_flag=no)
 
 # With GNU as
 AC_ARG_WITH(gnu-as,
 [  --with-gnu-as           arrange to work with GNU as.],
-gas=yes,
-gas=no)
+gas_flag="$with_gnu_as",
+gas_flag=no)
 
 # With stabs
 AC_ARG_WITH(stabs,
 [  --with-stabs            arrange to use stabs instead of host debug format.],
-stabs=yes,
+stabs="$with_stabs",
 stabs=no)
 
 # With ELF
 AC_ARG_WITH(elf,
 [  --with-elf              arrange to use ELF instead of host debug format.],
-elf=yes,
+elf="$with_elf",
 elf=no)
 
 # Specify the local prefix
@@ -78,11 +78,19 @@ if [[ x$gxx_include_dir = x ]]; then
        gxx_include_dir='${prefix}/include/g++'
 fi
 
+# Enable expensive internal checks
+AC_ARG_ENABLE(checking,
+[  --enable-checking       enable expensive run-time checks.],
+AC_DEFINE(ENABLE_CHECKING)  
+)
+
 # Enable use of cpplib for C.
 AC_ARG_ENABLE(c-cpplib,
 [  --enable-c-cpplib       Use cpplib for C.],
 if [[[ x$enable_c_cpplib != xno ]]]; then
   extra_c_objs="${extra_c_objs} cpplib.o cppexp.o cpphash.o cpperror.o"
+  extra_c_objs="${extra_c_objs} prefix.o"
+  extra_cxx_objs="${extra_cxx_objs} ../cpplib.o ../cppexp.o ../cpphash.o ../cpperror.o ../prefix.o"
   extra_c_flags=-DUSE_CPPLIB=1
 fi)
   
@@ -91,6 +99,13 @@ AC_ARG_ENABLE(haifa,
 [  --enable-haifa          Use the experimental scheduler.
   --disable-haifa         Don't use the experimental scheduler for the
                           targets which normally enable it.])
+# Fast fixincludes
+#
+# This is a work in progress...
+AC_ARG_WITH(fast-fixincludes,
+[  --with-fast-fixincludes    Use a faster fixinclude program.  Experimental],
+fast_fixinc="$with_fast_fixincludes",
+fast_fixinc=no)
 
 # Enable threads
 # Pass with no value to take the default
@@ -103,8 +118,9 @@ if [[[ x$enable_threads = xno ]]]; then
 fi,
 enable_threads='')
 
+enable_threads_flag=$enable_threads
 # Check if a valid thread package
-case x${enable_threads} in
+case x${enable_threads_flag} in
        x | xno)
                # No threads
                target_thread_file='single'
@@ -114,8 +130,8 @@ case x${enable_threads} in
                target_thread_file=''
                ;;
        xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
-       xsolaris | xwin32 | xdce)
-               target_thread_file=$enable_threads
+       xsolaris | xwin32 | xdce | xvxworks)
+               target_thread_file=$enable_threads_flag
                ;;
        *)
                echo "$enable_threads is an unknown thread package" 1>&2
@@ -135,17 +151,14 @@ AC_PROG_AWK
 AC_PROG_LEX
 GCC_PROG_LN
 GCC_PROG_LN_S
+GCC_C_VOLATILE
 AC_PROG_RANLIB
 AC_PROG_YACC
 EGCS_PROG_INSTALL
 
-# Find the native compiler
-AC_PROG_CC
-AC_PROG_MAKE_SET
-
 AC_HEADER_STDC
 AC_HEADER_TIME
-AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h fcntl.h unistd.h sys/file.h sys/time.h sys/resource.h sys/param.h sys/times.h varargs.h sys/varargs.h)
+AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h fcntl.h unistd.h stab.h sys/file.h sys/time.h sys/resource.h sys/param.h sys/times.h wait.h sys/wait.h)
 
 # Check for thread headers.
 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
@@ -177,30 +190,15 @@ AC_CACHE_VAL(gcc_cv_header_inttypes_h,
   gcc_cv_header_inttypes_h=no)])
 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
 
-AC_CHECK_FUNCS(strtoul)
-AC_CHECK_FUNCS(bsearch)
-AC_CHECK_FUNCS(strerror)
-AC_CHECK_FUNCS(putenv)
-AC_CHECK_FUNCS(popen)
-AC_CHECK_FUNCS(vprintf)
-AC_CHECK_FUNCS(bcopy)
-AC_CHECK_FUNCS(bzero)
-AC_CHECK_FUNCS(bcmp)
-AC_CHECK_FUNCS(index)
-AC_CHECK_FUNCS(rindex)
-AC_CHECK_FUNCS(kill)
-AC_CHECK_FUNCS(getrlimit)
-AC_CHECK_FUNCS(setrlimit)
-
-GCC_NEED_DECLARATION(malloc)
-GCC_NEED_DECLARATION(realloc)
-GCC_NEED_DECLARATION(calloc)
-GCC_NEED_DECLARATION(free)
-GCC_NEED_DECLARATION(index)
-GCC_NEED_DECLARATION(rindex)
-GCC_NEED_DECLARATION(getenv)
-GCC_NEED_DECLARATION(atol)
-GCC_NEED_DECLARATION(sbrk)
+AC_CHECK_FUNCS(strtoul bsearch strerror putenv popen bcopy bzero bcmp \
+       index rindex strchr strrchr kill getrlimit setrlimit atoll atoq \
+       sysconf isascii)
+
+GCC_FUNC_VFPRINTF_DOPRNT
+GCC_FUNC_PRINTF_PTR
+
+GCC_NEED_DECLARATIONS(malloc realloc calloc free bcopy bzero bcmp \
+       index rindex getenv atol sbrk abort atof)
 
 AC_DECL_SYS_SIGLIST
 
@@ -211,9 +209,11 @@ AC_SUBST(manext)
 AC_SUBST(objext)
 
 build_xm_file=
+build_xm_defines=
 build_install_headers_dir=install-headers-tar
 build_exeext=
 host_xm_file=
+host_xm_defines=
 host_xmake_file=
 host_truncate_target=
 host_exeext=
@@ -234,13 +234,16 @@ for machine in $build $host $target; do
        extra_objs=
        extra_host_objs=
        extra_gcc_objs=
+       xm_defines=
        float_format=
        # Set this to force installation and use of collect2.
        use_collect2=
        # Set this to override the default target model.
        target_cpu_default=
        # Set this to control which fixincludes program to use.
-       fixincludes=fixincludes
+       if [[ x$fast_fixinc != xyes ]] ; then
+               fixincludes=fixincludes
+       else fixincludes=fixinc.sh ; fi
        # Set this to control how the header file directory is installed.
        install_headers_dir=install-headers-tar
        # Set this to a non-empty list of args to pass to cpp if the target
@@ -255,6 +258,11 @@ for machine in $build $host $target; do
        exeext=
        # Set this to control which thread package will be used.
        thread_file=
+       # Reinitialize these from the flag values every loop pass, since some
+       # configure entries modify them.
+       gas="$gas_flag"
+       gnu_ld="$gnu_ld_flag"
+       enable_threads=$enable_threads_flag
 
        # Set default cpu_type, tm_file and xm_file so it can be updated in
        # each machine entry.
@@ -269,7 +277,7 @@ for machine in $build $host $target; do
        c*-convex-*)
                cpu_type=convex
                ;;
-       i[[3456]]86-*-*)
+       i[[34567]]86-*-*)
                cpu_type=i386
                ;;
        hppa*-*-*)
@@ -295,6 +303,13 @@ for machine in $build $host $target; do
        tm_file=${cpu_type}/${cpu_type}.h
        xm_file=${cpu_type}/xm-${cpu_type}.h
        
+       # Set the default macros to define for GNU/Linux systems.
+       case $machine in
+       *-*-linux-gnu*)
+               xm_defines="HAVE_ATEXIT POSIX BSTRING"
+               ;;
+       esac
+
        case $machine in
        # Support site-specific machine types.
        *local*)
@@ -315,7 +330,7 @@ for machine in $build $host $target; do
                ;;
        a29k-*-bsd* | a29k-*-sym1*)
                tm_file="${tm_file} a29k/unix.h"
-               xm_file=a29k/xm-unix.h
+               xm_defines=USG
                xmake_file=a29k/x-unix
                use_collect2=yes
                ;;
@@ -323,37 +338,39 @@ for machine in $build $host $target; do
                tm_file="${tm_file} dbxcoff.h a29k/udi.h"
                tmake_file=a29k/t-a29kbare
                ;;
-       a29k-*-vxworks*)
+       a29k-wrs-vxworks*)
                tm_file="${tm_file} dbxcoff.h a29k/udi.h a29k/vx29k.h"
                tmake_file=a29k/t-vx29k
                extra_parts="crtbegin.o crtend.o"
+               thread_file='vxworks'
                ;;
        a29k-*-*)                       # Default a29k environment.
                use_collect2=yes
                ;;
        alpha*-*-linux-gnuecoff*)
                tm_file="${tm_file} alpha/linux-ecoff.h alpha/linux.h"
-               xm_file="${xm_file} alpha/xm-linux.h"
+               target_cpu_default="MASK_GAS"
                gas=no
                xmake_file=none
-               fixincludes=Makefile.in
                gas=yes gnu_ld=yes
                ;;
        alpha*-*-linux-gnulibc1*)
-               tm_file="${tm_file} alpha/elf.h alpha/linux-elf.h alpha/linux.h"
-               xm_file="${xm_file} alpha/xm-linux.h"
-               tmake_file="t-linux t-linux-gnulibc1 alpha/t-linux"
+               tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
+               target_cpu_default="MASK_GAS"
+               tmake_file="t-linux t-linux-gnulibc1 alpha/t-linux alpha/t-crtbe"
+               extra_parts="crtbegin.o crtend.o"
+               fixincludes=fixinc.wrap
                xmake_file=none
-               fixincludes=Makefile.in
                gas=yes gnu_ld=yes
                if [[ x$enable_threads = xyes ]]; then
                        thread_file='posix'
                fi
                ;;
        alpha*-*-linux-gnu*)
-               tm_file="${tm_file} alpha/elf.h alpha/linux-elf.h alpha/linux.h"
-               xm_file="${xm_file} alpha/xm-linux.h"
-               tmake_file="t-linux alpha/t-linux"
+               tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
+               target_cpu_default="MASK_GAS"
+               tmake_file="t-linux alpha/t-linux alpha/t-crtbe"
+               extra_parts="crtbegin.o crtend.o"
                xmake_file=none
                fixincludes=Makefile.in
                gas=yes gnu_ld=yes
@@ -361,6 +378,16 @@ for machine in $build $host $target; do
                        thread_file='posix'
                fi
                ;;
+       alpha*-*-netbsd*)
+               tm_file="${tm_file} alpha/elf.h alpha/netbsd.h alpha/netbsdl-elf.h"
+               target_cpu_default="MASK_GAS"
+               tmake_file="alpha/t-crtbe"
+               extra_parts="crtbegin.o crtend.o"
+               xmake_file=none
+               fixincludes=fixinc.wrap
+               gas=yes gnu_ld=yes
+               ;;
+               
        alpha*-dec-osf*)
                if [[ x$stabs = xyes ]]
                then
@@ -372,7 +399,7 @@ for machine in $build $host $target; do
                fi
                use_collect2=yes
                case $machine in
-                 *-*-osf1.2)
+                 *-*-osf1*)
                    tm_file="${tm_file} alpha/osf.h alpha/osf12.h alpha/osf2or3.h"
                    ;;
                  *-*-osf[[23]]*)
@@ -447,14 +474,13 @@ for machine in $build $host $target; do
                ;;
        arm-*-netbsd*)
                tm_file=arm/netbsd.h
-               xm_file=arm/xm-netbsd.h
+               xm_file="xm-siglist.h ${xm_file}"
                tmake_file="t-netbsd arm/t-netbsd"
                # On NetBSD, the headers are already okay, except for math.h.
-               fixincludes=fixinc.math
+               fixincludes=fixinc.wrap
                ;;
        arm-*-linux-gnuaout*)           # ARM GNU/Linux
                cpu_type=arm
-               xm_file=arm/xm-linux.h
                xmake_file=x-linux
                tm_file=arm/linux-gas.h
                tmake_file=arm/t-linux
@@ -628,6 +654,13 @@ for machine in $build $host $target; do
                then
                        tm_file="${tm_file} pa/pa-gas.h"
                fi
+               if [[ x$enable_threads = x ]]; then
+                   enable_threads=$have_pthread_h
+               fi
+               if [[ x$enable_threads = xyes ]]; then
+                       thread_file='dce'
+                       tmake_file="${tmake_file} pa/t-dce-thr"
+               fi
                install_headers_dir=install-headers-cpio
                use_collect2=yes
                ;;
@@ -684,7 +717,7 @@ for machine in $build $host $target; do
                ;;
        i370-*-mvs*)
                ;;
-       i[[3456]]86-ibm-aix*)           # IBM PS/2 running AIX
+       i[[34567]]86-ibm-aix*)          # IBM PS/2 running AIX
                 if [[ x$gas = xyes ]]
                then
                        tm_file=i386/aix386.h
@@ -694,11 +727,13 @@ for machine in $build $host $target; do
                        tm_file=i386/aix386ng.h
                        use_collect2=yes
                fi
-               xm_file=i386/xm-aix.h
+               xm_file="xm-alloca.h i386/xm-aix.h ${xm_file}"
+               xm_defines=USG
                xmake_file=i386/x-aix
                ;;
-       i[[456]]86-ncr-sysv4*)          # NCR 3000 - ix86 running system V.4
-               xm_file=i386/xm-sysv4.h
+       i[[34567]]86-ncr-sysv4*)        # NCR 3000 - ix86 running system V.4
+               xm_file="xm-siglist.h xm-alloca.h ${xm_file}"
+               xm_defines="USG POSIX SMALL_ARG_MAX"
                xmake_file=i386/x-ncr3000
                if [[ x$stabs = xyes -a x$gas = xyes ]]
                then
@@ -709,7 +744,7 @@ for machine in $build $host $target; do
                extra_parts="crtbegin.o crtend.o"
                tmake_file=i386/t-crtpic
                ;;
-       i[[3456]]86-next-*)
+       i[[34567]]86-next-*)
                tm_file=i386/next.h
                xm_file=i386/xm-next.h
                tmake_file=i386/t-next
@@ -719,7 +754,7 @@ for machine in $build $host $target; do
                        thread_file='mach'
                fi
                ;;
-       i[[3456]]86-sequent-bsd*)               # 80386 from Sequent
+       i[[34567]]86-sequent-bsd*)              # 80386 from Sequent
                use_collect2=yes
                if [[ x$gas = xyes ]]
                then
@@ -728,8 +763,8 @@ for machine in $build $host $target; do
                        tm_file=i386/sequent.h
                fi
                ;;
-       i[[3456]]86-sequent-ptx1*)
-               xm_file=i386/xm-sysv3.h
+       i[[34567]]86-sequent-ptx1*)
+               xm_defines="USG SVR3"
                xmake_file=i386/x-sysv3
                tm_file=i386/seq-sysv3.h
                tmake_file=i386/t-crtstuff
@@ -737,8 +772,8 @@ for machine in $build $host $target; do
                extra_parts="crtbegin.o crtend.o"
                install_headers_dir=install-headers-cpio
                ;;
-       i[[3456]]86-sequent-ptx2* | i[[3456]]86-sequent-sysv3*)
-               xm_file=i386/xm-sysv3.h
+       i[[34567]]86-sequent-ptx2* | i[[34567]]86-sequent-sysv3*)
+               xm_defines="USG SVR3"
                xmake_file=i386/x-sysv3
                tm_file=i386/seq2-sysv3.h
                tmake_file=i386/t-crtstuff
@@ -746,8 +781,9 @@ for machine in $build $host $target; do
                fixincludes=fixinc.ptx
                install_headers_dir=install-headers-cpio
                ;;
-       i[[3456]]86-sequent-ptx4* | i[[3456]]86-sequent-sysv4*)
-               xm_file=i386/xm-sysv4.h
+       i[[34567]]86-sequent-ptx4* | i[[34567]]86-sequent-sysv4*)
+               xm_file="xm-siglist.h xm-alloca.h ${xm_file}"
+               xm_defines="USG POSIX SMALL_ARG_MAX"
                xmake_file=x-svr4
                tm_file=i386/ptx4-i.h
                tmake_file=t-svr4
@@ -756,55 +792,58 @@ for machine in $build $host $target; do
                install_headers_dir=install-headers-cpio
                ;;
        i386-sun-sunos*)                # Sun i386 roadrunner
-               xm_file=i386/xm-sun.h
+               xm_defines=USG
                tm_file=i386/sun.h
                use_collect2=yes
                ;;
-       i[[3456]]86-*-aout*)
+       i[[34567]]86-wrs-vxworks*)
+               tm_file=i386/vxi386.h
+               tmake_file=i386/t-i386bare
+               ;;
+       i[[34567]]86-*-aout*)
                tm_file=i386/i386-aout.h
                tmake_file=i386/t-i386bare
                ;;
-       i[[3456]]86-*-bsdi* | i[[345]]86-*-bsd386*)
+       i[[34567]]86-*-bsdi* | i[[34567]]86-*-bsd386*)
                tm_file=i386/bsd386.h
-               xm_file=i386/xm-bsd386.h
 #              tmake_file=t-libc-ok
                ;;
-       i[[3456]]86-*-bsd*)
+       i[[34567]]86-*-bsd*)
                tm_file=i386/386bsd.h
-               xm_file=i386/xm-bsd386.h
 #              tmake_file=t-libc-ok
 # Next line turned off because both 386BSD and BSD/386 use GNU ld.
 #              use_collect2=yes
                ;;
-       i[[3456]]86-*-freebsdelf*)
+       i[[34567]]86-*-freebsdelf*)
                tm_file="i386/i386.h i386/att.h linux.h i386/freebsd-elf.h i386/perform.h"
                # On FreeBSD, the headers are already ok, except for math.h.
-               fixincludes=fixinc.math
+               fixincludes=fixinc.wrap
                tmake_file=i386/t-freebsd
                gas=yes
                gnu_ld=yes
                stabs=yes
                ;;
-       i[[3456]]86-*-freebsd*)
+       i[[34567]]86-*-freebsd*)
                tm_file=i386/freebsd.h
                # On FreeBSD, the headers are already ok, except for math.h.
-               fixincludes=fixinc.math
+               fixincludes=fixinc.wrap
                tmake_file=i386/t-freebsd
                ;;
-       i[[3456]]86-*-netbsd*)
+       i[[34567]]86-*-netbsd*)
                tm_file=i386/netbsd.h
                # On NetBSD, the headers are already okay, except for math.h.
-               fixincludes=fixinc.math
+               fixincludes=fixinc.wrap
                tmake_file=t-netbsd
                ;;
-       i[[3456]]86-*-coff*)
+       i[[34567]]86-*-coff*)
                tm_file=i386/i386-coff.h
                tmake_file=i386/t-i386bare
                ;;
-       i[[3456]]86-*-isc*)             # 80386 running ISC system
-               xm_file=i386/xm-isc.h
+       i[[34567]]86-*-isc*)            # 80386 running ISC system
+               xm_file="${xm_file} i386/xm-isc.h"
+               xm_defines="USG SVR3"
                case $machine in
-                 i[[345]]86-*-isc[[34]]*)
+                 i[[34567]]86-*-isc[[34]]*)
                    xmake_file=i386/x-isc3
                    ;;
                  *)
@@ -823,26 +862,28 @@ for machine in $build $host $target; do
                fi
                install_headers_dir=install-headers-cpio
                ;;
-       i[[3456]]86-*-linux-gnuoldld*)  # Intel 80386's running GNU/Linux
-               xm_file=i386/xm-linux.h # with a.out format using pre BFD linkers
+       i[[34567]]86-*-linux-gnuoldld*) # Intel 80386's running GNU/Linux
+                                       # with a.out format using
+                                       # pre BFD linkers
                xmake_file=x-linux-aout
                tmake_file="t-linux-aout i386/t-crtstuff"
                tm_file=i386/linux-oldld.h
                fixincludes=Makefile.in #On Linux, the headers are ok already.
                gnu_ld=yes
                ;;
-       i[[3456]]86-*-linux-gnuaout*)   # Intel 80386's running GNU/Linux
-               xm_file=i386/xm-linux.h         # with a.out format
+       i[[34567]]86-*-linux-gnuaout*)  # Intel 80386's running GNU/Linux
+                                       # with a.out format
                xmake_file=x-linux-aout
                tmake_file="t-linux-aout i386/t-crtstuff"
                tm_file=i386/linux-aout.h
                fixincludes=Makefile.in #On Linux, the headers are ok already.
                gnu_ld=yes
                ;;
-       i[[3456]]86-*-linux-gnulibc1)
-               xm_file=i386/xm-linux.h # Intel 80386's running GNU/Linux
-               xmake_file=x-linux      # with ELF format using the
-               tm_file=i386/linux.h    # GNU/Linux C library 5
+       i[[34567]]86-*-linux-gnulibc1)  # Intel 80386's running GNU/Linux
+                                       # with ELF format using the
+                                       # GNU/Linux C library 5
+               xmake_file=x-linux      
+               tm_file=i386/linux.h    
                tmake_file="t-linux t-linux-gnulibc1 i386/t-crtstuff"
                extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
                fixincludes=Makefile.in #On Linux, the headers are ok already.
@@ -851,9 +892,10 @@ for machine in $build $host $target; do
                        thread_file='single'
                fi
                ;;
-       i[[3456]]86-*-linux-gnu*)       # Intel 80386's running GNU/Linux
-               xm_file=i386/xm-linux.h # with ELF format using glibc 2
-               xmake_file=x-linux      # aka GNU/Linux C library 6
+       i[[34567]]86-*-linux-gnu*)      # Intel 80386's running GNU/Linux
+                                       # with ELF format using glibc 2
+                                       # aka GNU/Linux C library 6
+               xmake_file=x-linux
                tm_file=i386/linux.h
                tmake_file="t-linux i386/t-crtstuff"
                extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
@@ -863,21 +905,28 @@ for machine in $build $host $target; do
                        thread_file='posix'
                fi
                ;;
-       i[[3456]]86-*-gnu*)
+       i[[34567]]86-*-gnu*)
+               ;;
+       i[[34567]]86-go32-msdos | i[[34567]]86-*-go32*)
+               xm_file=i386/xm-go32.h
+               tm_file=i386/go32.h
+               tmake_file=i386/t-go32
                ;;
-       i[[3456]]86-go32-msdos | i[[3456]]86-*-go32*)
+       i[[34567]]86-pc-msdosdjgpp*)
                xm_file=i386/xm-go32.h
                tm_file=i386/go32.h
                tmake_file=i386/t-go32
+               gnu_ld=yes
+               gas=yes
                ;;
-       i[[3456]]86-moss-msdos* | i[[3456]]86-*-moss*)
+       i[[34567]]86-moss-msdos* | i[[34567]]86-*-moss*)
                tm_file=i386/moss.h
                tmake_file=t-libc-ok
                fixincludes=Makefile.in
                gnu_ld=yes
                gas=yes
                ;;
-       i[[3456]]86-*-lynxos*)
+       i[[34567]]86-*-lynxos*)
                if [[ x$gas = xyes ]]
                then
                        tm_file=i386/lynx.h
@@ -888,12 +937,12 @@ for machine in $build $host $target; do
                tmake_file=i386/t-i386bare
                xmake_file=x-lynx
                ;;
-       i[[3456]]86-*-mach*)
+       i[[34567]]86-*-mach*)
                tm_file=i386/mach.h
 #              tmake_file=t-libc-ok
                use_collect2=yes
                ;;
-       i[[3456]]86-*-osfrose*)         # 386 using OSF/rose
+       i[[34567]]86-*-osfrose*)                # 386 using OSF/rose
                 if [[ x$elf = xyes ]]
                then
                        tm_file=i386/osfelf.h
@@ -902,24 +951,30 @@ for machine in $build $host $target; do
                        tm_file=i386/osfrose.h
                        use_collect2=yes
                fi
-               xm_file=i386/xm-osf.h
+               xm_file="i386/xm-osf.h ${xm_file}"
                xmake_file=i386/x-osfrose
                tmake_file=i386/t-osf
                extra_objs=halfpic.o
                ;;
-       i[[345]]86-go32-rtems*)
+       i[[34567]]86-go32-rtems*)
                cpu_type=i386
                xm_file=i386/xm-go32.h
                tm_file=i386/go32-rtems.h
                tmake_file="i386/t-go32 t-rtems"
                ;;
-       i[[345]]86-*-rtems*)
+       i[[34567]]86-*-rtemself*)
+               cpu_type=i386
+               tm_file=i386/rtemself.h
+               tmake_file="i386/t-i386bare t-rtems"
+               ;;
+       i[[34567]]86-*-rtems*)
                cpu_type=i386
                tm_file=i386/rtems.h
                tmake_file="i386/t-i386bare t-rtems"
                ;;
-       i[[3456]]86-*-sco3.2v5*)                # 80386 running SCO Open Server 5
-               xm_file=i386/xm-sco5.h
+       i[[34567]]86-*-sco3.2v5*)       # 80386 running SCO Open Server 5
+               xm_file="xm-siglist.h xm-alloca.h ${xm_file} i386/xm-sco5.h"
+               xm_defines="USG SVR3"
                xmake_file=i386/x-sco5
                fixincludes=fixinc.sco
                install_headers_dir=install-headers-cpio
@@ -927,8 +982,9 @@ for machine in $build $host $target; do
                tmake_file=i386/t-sco5
                extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
                ;;
-       i[[3456]]86-*-sco3.2v4*)                # 80386 running SCO 3.2v4 system
-               xm_file=i386/xm-sco.h
+       i[[34567]]86-*-sco3.2v4*)       # 80386 running SCO 3.2v4 system
+               xm_file="${xm_file} i386/xm-sco.h"
+               xm_defines="USG SVR3 BROKEN_LDEXP SMALL_ARG_MAX NO_SYS_SIGLIST"
                xmake_file=i386/x-sco4
                fixincludes=fixinc.sco
                install_headers_dir=install-headers-cpio
@@ -944,7 +1000,7 @@ for machine in $build $host $target; do
                fi
                truncate_target=yes
                ;;
-       i[[3456]]86-*-sco*)             # 80386 running SCO system
+       i[[34567]]86-*-sco*)            # 80386 running SCO system
                xm_file=i386/xm-sco.h
                xmake_file=i386/x-sco
                install_headers_dir=install-headers-cpio
@@ -960,8 +1016,9 @@ for machine in $build $host $target; do
                fi
                truncate_target=yes
                ;;
-       i[[3456]]86-*-solaris2*)
-               xm_file=i386/xm-sysv4.h
+       i[[34567]]86-*-solaris2*)
+               xm_file="xm-siglist.h xm-alloca.h ${xm_file}"
+               xm_defines="USG POSIX SMALL_ARG_MAX"
                if [[ x$stabs = xyes ]]
                then
                        tm_file=i386/sol2dbg.h
@@ -969,16 +1026,21 @@ for machine in $build $host $target; do
                        tm_file=i386/sol2.h
                fi
                tmake_file=i386/t-sol2
-               extra_parts="crt1.o crti.o crtn.o crtbegin.o crtend.o"
+               extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
                xmake_file=x-svr4
-               fixincludes=fixinc.svr4
-               broken_install=yes
+               case $machine in
+               *-*-solaris2.[[0-4]])
+                       fixincludes=fixinc.svr4;;
+               *)
+                       fixincludes=fixinc.wrap;;
+               esac
                if [[ x$enable_threads = xyes ]]; then
                        thread_file='solaris'
                fi
                ;;
-       i[[3456]]86-*-sysv5*)           # Intel x86 on System V Release 5
-               xm_file=i386/xm-sysv4.h
+       i[[34567]]86-*-sysv5*)           # Intel x86 on System V Release 5
+               xm_file="xm-alloca.h xm-siglist.h ${xm_file}"
+               xm_defines="USG POSIX"
                tm_file=i386/sysv4.h
                if [[ x$stabs = xyes ]]
                then
@@ -989,8 +1051,9 @@ for machine in $build $host $target; do
                extra_parts="crtbegin.o crtend.o"
                fixincludes=Makefile.in # The headers are just fine, thank you.
                ;;
-       i[[3456]]86-*-sysv4*)           # Intel 80386's running system V.4
-               xm_file=i386/xm-sysv4.h
+       i[[34567]]86-*-sysv4*)          # Intel 80386's running system V.4
+               xm_file="xm-siglist.h xm-alloca.h ${xm_file}"
+               xm_defines="USG POSIX SMALL_ARG_MAX"
                tm_file=i386/sysv4.h
                if [[ x$stabs = xyes ]]
                then
@@ -1000,8 +1063,23 @@ for machine in $build $host $target; do
                xmake_file=x-svr4
                extra_parts="crtbegin.o crtend.o"
                ;;
-       i[[3456]]86-*-sysv*)            # Intel 80386's running system V
-               xm_file=i386/xm-sysv3.h
+       i[[34567]]86-*-osf1*)           # Intel 80386's running OSF/1 1.3+
+               cpu_type=i386
+               xm_file="${xm_file} xm-svr4.h i386/xm-sysv4.h i386/xm-osf1elf.h"
+               xm_defines="USE_C_ALLOCA SMALL_ARG_MAX"
+               fixincludes=Makefile.in #Don't do it on OSF/1
+               if [[ x$stabs = xyes ]]
+               then
+                       tm_file=i386/osf1elfgdb.h
+               else
+                       tm_file=i386/osf1elf.h
+               fi
+               tmake_file=i386/t-osf1elf
+               xmake_file=i386/x-osf1elf
+               extra_parts="crti.o crtn.o crtbegin.o crtend.o"
+               ;;
+       i[[34567]]86-*-sysv*)           # Intel 80386's running system V
+               xm_defines="USG SVR3"
                xmake_file=i386/x-sysv3
                if [[ x$gas = xyes ]]
                then
@@ -1022,12 +1100,12 @@ for machine in $build $host $target; do
                fi
                ;;
        i386-*-vsta)                    # Intel 80386's running VSTa kernel
-               xm_file=i386/xm-vsta.h
+               xm_file="${xm_file} i386/xm-vsta.h"
                tm_file=i386/vsta.h
                tmake_file=i386/t-vsta
                xmake_file=i386/x-vsta
                ;;
-       i[[3456]]86-*-pe | i[[3456]]86-*-cygwin32)
+       i[[34567]]86-*-pe | i[[34567]]86-*-cygwin32)
                xm_file="${xm_file} i386/xm-cygwin32.h"
                tmake_file=i386/t-cygwin32
                tm_file=i386/cygwin32.h
@@ -1039,10 +1117,10 @@ for machine in $build $host $target; do
                fi
                exeext=.exe
                ;;
-       i[[3456]]86-*-mingw32)
+       i[[34567]]86-*-mingw32*)
                tm_file=i386/mingw32.h
                xm_file="${xm_file} i386/xm-mingw32.h"
-               tmake_file=i386/t-cygwin32
+               tmake_file="i386/t-cygwin32 i386/t-mingw32"
                extra_objs=winnt.o
                xmake_file=i386/x-cygwin32
                fixincludes=Makefile.in
@@ -1050,11 +1128,18 @@ for machine in $build $host $target; do
                        thread_file='win32'
                fi
                exeext=.exe
+               case $machine in
+                       *mingw32msv*)
+                               ;;
+                       *minwg32crt* | *mingw32*)
+                               tm_file="${tm_file} i386/crtdll.h"
+                               ;;
+               esac
                ;;
-       i[[3456]]86-*-winnt*)
+       i[[34567]]86-*-winnt3*)
                tm_file=i386/win-nt.h
                out_file=i386/i386.c
-               xm_file=i386/xm-winnt.h
+               xm_file="xm-winnt.h ${xm_file}"
                xmake_file=winnt/x-winnt
                tmake_file=i386/t-winnt
                extra_host_objs="winnt.o oldnames.o"
@@ -1068,8 +1153,9 @@ for machine in $build $host $target; do
                        thread_file='win32'
                fi
                ;;
-       i[[3456]]86-dg-dgux)
-               xm_file=i386/xm-dgux.h
+       i[[34567]]86-dg-dgux*)
+               xm_file="xm-alloca.h xm-siglist.h ${xm_file}"
+               xm_defines="USG POSIX"
                out_file=i386/dgux.c
                tm_file=i386/dgux.h
                tmake_file=i386/t-dgux
@@ -1098,18 +1184,18 @@ for machine in $build $host $target; do
                ;;
        i860-*-osf*)                    # Intel Paragon XP/S, OSF/1AD
                tm_file="${tm_file} svr3.h i860/paragon.h"
-               xm_file="${xm_file} xm-svr3.h"
+               xm_defines="USG SVR3"
                tmake_file=t-osf
                ;;
        i860-*-sysv3*)
                tm_file="${tm_file} svr3.h i860/sysv3.h"
-               xm_file="${tm_file} xm-svr3.h"
+               xm_defines="USG SVR3"
                xmake_file=i860/x-sysv3
                extra_parts="crtbegin.o crtend.o"
                ;;
        i860-*-sysv4*)
                tm_file="${tm_file} svr4.h i860/sysv4.h"
-               xm_file="${xm_file} xm-svr3.h"
+               xm_defines="USG SVR3"
                xmake_file=i860/x-sysv4
                tmake_file=t-svr4
                extra_parts="crtbegin.o crtend.o"
@@ -1118,16 +1204,19 @@ for machine in $build $host $target; do
                tm_file="${tm_file} i960/vx960.h"
                tmake_file=i960/t-vxworks960
                use_collect2=yes
+               thread_file='vxworks'
                ;;
        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'
                ;;
        i960-wrs-vxworks*)
                tm_file="${tm_file} i960/vx960.h"
                tmake_file=i960/t-vxworks960
                use_collect2=yes
+               thread_file='vxworks'
                ;;
        i960-*-coff*)
                tm_file="${tm_file} dbxcoff.h i960/i960-coff.h libgloss.h"
@@ -1147,7 +1236,8 @@ for machine in $build $host $target; do
                ;;
        m68000-convergent-sysv*)
                tm_file=m68k/ctix.h
-               xm_file=m68k/xm-3b1.h
+               xm_file="m68k/xm-3b1.h ${xm_file}"
+               xm_defines=USG
                use_collect2=yes
                extra_headers=math-68881.h
                ;;
@@ -1158,7 +1248,8 @@ for machine in $build $host $target; do
                extra_headers=math-68881.h
                ;;
        m68000-hp-hpux*)                # HP 9000 series 300
-               xm_file=m68k/xm-hp320.h
+               xm_file="xm_alloca.h ${xm_file}"
+               xm_defines="USG NO_SYS_SIGLIST"
                if [[ x$gas = xyes ]]
                then
                        xmake_file=m68k/x-hp320g
@@ -1182,7 +1273,8 @@ for machine in $build $host $target; do
                extra_headers=math-68881.h
                ;;
        m68000-att-sysv*)
-               xm_file=m68k/xm-3b1.h
+               xm_file="m68k/xm-3b1.h ${xm_file}"
+               xm_defines=USG
                if [[ x$gas = xyes ]]
                then
                        tm_file=m68k/3b1g.h
@@ -1193,7 +1285,7 @@ for machine in $build $host $target; do
                extra_headers=math-68881.h
                ;;
        m68k-apple-aux*)                # Apple Macintosh running A/UX
-               xm_file=m68k/xm-aux.h
+               xm_defines="USG AUX"
                tmake_file=m68k/t-aux
                install_headers_dir=install-headers-cpio
                extra_headers=math-68881.h
@@ -1212,18 +1304,20 @@ for machine in $build $host $target; do
                        tm_file="${tm_file} m68k/auxas.h"
                fi
                tm_file="${tm_file} m68k/a-ux.h"
+               float_format=m68k
                ;;
        m68k-apollo-*)
                tm_file=m68k/apollo68.h
                xmake_file=m68k/x-apollo68
                use_collect2=yes
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-altos-sysv*)                  # Altos 3068
                if [[ x$gas = xyes ]]
                then
                        tm_file=m68k/altos3068.h
-                       xm_file=m68k/xm-altos3068.h
+                       xm_defines=USG
                else
                        echo "The Altos is supported only with the GNU assembler" 1>&2
                        exit 1
@@ -1242,21 +1336,25 @@ for machine in $build $host $target; do
                else
                        tm_file=m68k/dpx2.h
                fi
-               xm_file=m68k/xm-m68kv.h
+               xm_file="xm-alloca.h ${xm_file}"
+               xm_defines=USG
                xmake_file=m68k/x-dpx2
                use_collect2=yes
                extra_headers=math-68881.h
                ;;
        m68k-atari-sysv4*)              # Atari variant of V.4.
                tm_file=m68k/atari.h
-               xm_file=m68k/xm-atari.h
+               xm_file="xm-alloca.h ${xm_file}"
+               xm_defines="USG FULL_PROTOTYPES"
                tmake_file=t-svr4
                extra_parts="crtbegin.o crtend.o"
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-motorola-sysv*)
                tm_file=m68k/mot3300.h
-               xm_file=m68k/xm-mot3300.h
+               xm_file="xm-alloca.h m68k/xm-mot3300.h ${xm_file}"
+               xm_defines=NO_SYS_SIGLIST
                if [[ x$gas = xyes ]]
                then
                        xmake_file=m68k/x-mot3300-gas
@@ -1280,27 +1378,31 @@ for machine in $build $host $target; do
                gdb_needs_out_file_path=yes
                extra_parts="crt0.o mcrt0.o"
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-ncr-sysv*)                 # NCR Tower 32 SVR3
                tm_file=m68k/tower-as.h
-               xm_file="${xm_file} xm-svr3.h"
+               xm_defines="USG SVR3"
                xmake_file=m68k/x-tower
                extra_parts="crtbegin.o crtend.o"
                extra_headers=math-68881.h
                ;;
         m68k-plexus-sysv*)
                tm_file=m68k/plexus.h
-               xm_file=m68k/xm-plexus.h
+               xm_file="xm-alloca.h m68k/xm-plexus.h ${xm_file}"
+               xm_defines=USG
                use_collect2=yes
                extra_headers=math-68881.h
                ;;
        m68k-tti-*)
                tm_file=m68k/pbb.h
-               xm_file=m68k/xm-m68kv.h
+               xm_file="xm-alloca.h ${xm_file}"
+               xm_defines=USG
                extra_headers=math-68881.h
                ;;
        m68k-crds-unos*)
-               xm_file=m68k/xm-crds.h
+               xm_file="xm-alloca.h m68k/xm-crds.h ${xm_file}"
+               xm_defines="USG unos"
                xmake_file=m68k/x-crds
                tm_file=m68k/crds.h
                use_collect2=yes
@@ -1308,28 +1410,33 @@ for machine in $build $host $target; do
                ;;
        m68k-cbm-sysv4*)                # Commodore variant of V.4.
                tm_file=m68k/amix.h
-               xm_file=m68k/xm-amix.h
+               xm_file="xm-alloca.h ${xm_file}"
+               xm_defines="USG FULL_PROTOTYPES"
                xmake_file=m68k/x-amix
                tmake_file=t-svr4
                extra_parts="crtbegin.o crtend.o"
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-ccur-rtu)
                tm_file=m68k/ccur-GAS.h
                xmake_file=m68k/x-ccur
                extra_headers=math-68881.h
                use_collect2=yes
+               float_format=m68k
                ;;
        m68k-hp-bsd4.4*)                # HP 9000/3xx running 4.4bsd
                tm_file=m68k/hp3bsd44.h
                xmake_file=m68k/x-hp3bsd44
                use_collect2=yes
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-hp-bsd*)                   # HP 9000/3xx running Berkeley Unix
                tm_file=m68k/hp3bsd.h
                use_collect2=yes
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-isi-bsd*)
                if [[ x$with_fp = xno ]]
@@ -1337,12 +1444,14 @@ for machine in $build $host $target; do
                        tm_file=m68k/isi-nfp.h
                else
                        tm_file=m68k/isi.h
+                       float_format=m68k
                fi
                use_collect2=yes
                extra_headers=math-68881.h
                ;;
        m68k-hp-hpux7*) # HP 9000 series 300 running HPUX version 7.
-               xm_file=m68k/xm-hp320.h
+               xm_file="xm_alloca.h ${xm_file}"
+               xm_defines="USG NO_SYS_SIGLIST"
                if [[ x$gas = xyes ]]
                then
                        xmake_file=m68k/x-hp320g
@@ -1354,9 +1463,11 @@ for machine in $build $host $target; do
                install_headers_dir=install-headers-cpio
                use_collect2=yes
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-hp-hpux*)  # HP 9000 series 300
-               xm_file=m68k/xm-hp320.h
+               xm_file="xm_alloca.h ${xm_file}"
+               xm_defines="USG NO_SYS_SIGLIST"
                if [[ x$gas = xyes ]]
                then
                        xmake_file=m68k/x-hp320g
@@ -1368,11 +1479,13 @@ for machine in $build $host $target; do
                install_headers_dir=install-headers-cpio
                use_collect2=yes
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-sun-mach*)
                tm_file=m68k/sun3mach.h
                use_collect2=yes
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-sony-newsos3*)
                if [[ x$gas = xyes ]]
@@ -1383,6 +1496,7 @@ for machine in $build $host $target; do
                fi
                use_collect2=yes
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-sony-bsd* | m68k-sony-newsos*)
                if [[ x$gas = xyes ]]
@@ -1393,23 +1507,26 @@ for machine in $build $host $target; do
                fi
                use_collect2=yes
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-next-nextstep2*)
                tm_file=m68k/next21.h
-               xm_file=m68k/xm-next.h
+               xm_file="m68k/xm-next.h ${xm_file}"
                tmake_file=m68k/t-next
                xmake_file=m68k/x-next
                extra_objs=nextstep.o
                extra_headers=math-68881.h
                use_collect2=yes
+               float_format=m68k
                 ;;
        m68k-next-nextstep3*)
                tm_file=m68k/next.h
-               xm_file=m68k/xm-next.h
+               xm_file="m68k/xm-next.h ${xm_file}"
                tmake_file=m68k/t-next
                xmake_file=m68k/x-next
                extra_objs=nextstep.o
                extra_headers=math-68881.h
+               float_format=m68k
                if [[ x$enable_threads = xyes ]]; then
                        thread_file='mach'
                fi
@@ -1420,6 +1537,7 @@ for machine in $build $host $target; do
                        tm_file=m68k/sun3n3.h
                else
                        tm_file=m68k/sun3o3.h
+                       float_format=m68k
                fi
                use_collect2=yes
                extra_headers=math-68881.h
@@ -1430,6 +1548,7 @@ for machine in $build $host $target; do
                        tm_file=m68k/sun3n.h
                else
                        tm_file=m68k/sun3.h
+                       float_format=m68k
                fi
                use_collect2=yes
                extra_headers=math-68881.h
@@ -1438,16 +1557,20 @@ for machine in $build $host $target; do
                tm_file=m68k/vxm68k.h
                tmake_file=m68k/t-vxworks68
                extra_headers=math-68881.h
+               thread_file='vxworks'
+               float_format=m68k
                ;;
        m68k-*-aout*)
                tmake_file=m68k/t-m68kbare
                tm_file="m68k/m68k-aout.h libgloss.h"
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-*-coff*)
                tmake_file=m68k/t-m68kbare
                tm_file="m68k/m68k-coff.h dbx.h libgloss.h"
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-*-lynxos*)
                if [[ x$gas = xyes ]]
@@ -1460,53 +1583,64 @@ for machine in $build $host $target; do
                xmake_file=x-lynx
                tmake_file=m68k/t-lynx
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-*-netbsd*)
                tm_file=m68k/netbsd.h
                # On NetBSD, the headers are already okay, except for math.h.
-               fixincludes=fixinc.math
+               fixincludes=fixinc.wrap
                tmake_file=t-netbsd
+               float_format=m68k
                ;;
        m68k-*-sysv3*)                  # Motorola m68k's running system V.3
-               xm_file=m68k/xm-m68kv.h
+               xm_file="xm-alloca.h ${xm_file}"
+               xm_defines=USG
                xmake_file=m68k/x-m68kv
                extra_parts="crtbegin.o crtend.o"
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-*-sysv4*)                  # Motorola m68k's running system V.4
                tm_file=m68k/m68kv4.h
-               xm_file=m68k/xm-m68kv.h
+               xm_file="xm-alloca.h ${xm_file}"
+               xm_defines=USG
                tmake_file=t-svr4
                extra_parts="crtbegin.o crtend.o"
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-*-linux-gnuaout*)          # Motorola m68k's running GNU/Linux
-               xm_file=m68k/xm-linux.h # with a.out format
+                                       # with a.out format
                xmake_file=x-linux
                tm_file=m68k/linux-aout.h
                tmake_file="t-linux-aout m68k/t-linux-aout"
                fixincludes=Makefile.in # The headers are ok already.
                extra_headers=math-68881.h
+               float_format=m68k
                gnu_ld=yes
                ;;
        m68k-*-linux-gnulibc1)          # Motorola m68k's running GNU/Linux
-               xm_file=m68k/xm-linux.h # with ELF format using the
-               xmake_file=x-linux      # GNU/Linux C library 5
+                                       # with ELF format using the
+                                       # GNU/Linux C library 5
+               xmake_file=x-linux
                tm_file=m68k/linux.h
                tmake_file="t-linux t-linux-gnulibc1 m68k/t-linux"
                extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
                fixincludes=Makefile.in # The headers are ok already.
                extra_headers=math-68881.h
+               float_format=m68k
                gnu_ld=yes
                ;;
        m68k-*-linux-gnu*)              # Motorola m68k's running GNU/Linux
-               xm_file=m68k/xm-linux.h # with ELF format using glibc 2
-               xmake_file=x-linux      # aka the GNU/Linux C library 6.
+                                       # with ELF format using glibc 2
+                                       # aka the GNU/Linux C library 6.
+               xmake_file=x-linux
                tm_file=m68k/linux.h
                tmake_file="t-linux m68k/t-linux"
                extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
                fixincludes=Makefile.in # The headers are ok already.
                extra_headers=math-68881.h
+               float_format=m68k
                gnu_ld=yes
                if [[ x$enable_threads = xyes ]]; then
                        thread_file='posix'
@@ -1516,11 +1650,13 @@ for machine in $build $host $target; do
                tmake_file=m68k/t-m68kbare
                tm_file=m68k/m68k-psos.h
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
        m68k-*-rtems*)
                tmake_file="m68k/t-m68kbare t-rtems"
                tm_file=m68k/rtems.h
                extra_headers=math-68881.h
+               float_format=m68k
                ;;
 
        m88k-dg-dgux*)
@@ -1545,7 +1681,7 @@ for machine in $build $host $target; do
        m88k-dolphin-sysv3*)
                tm_file=m88k/dolph.h
                extra_parts="crtbegin.o crtend.o"
-               xm_file=m88k/xm-sysv3.h
+               xm_file="m88k/xm-sysv3.h ${xm_file}"
                xmake_file=m88k/x-dolph
                if [[ x$gas = xyes ]]
                then
@@ -1555,7 +1691,7 @@ for machine in $build $host $target; do
        m88k-tektronix-sysv3)
                tm_file=m88k/tekXD88.h
                extra_parts="crtbegin.o crtend.o"
-               xm_file=m88k/xm-sysv3.h
+               xm_file="m88k/xm-sysv3.h ${xm_file}"
                xmake_file=m88k/x-tekXD88
                if [[ x$gas = xyes ]]
                then
@@ -1582,7 +1718,7 @@ for machine in $build $host $target; do
        m88k-*-sysv3*)
                tm_file=m88k/sysv3.h
                extra_parts="crtbegin.o crtend.o"
-               xm_file=m88k/xm-sysv3.h
+               xm_file="m88k/xm-sysv3.h ${xm_file}"
                xmake_file=m88k/x-sysv3
                if [[ x$gas = xyes ]]
                then
@@ -1605,9 +1741,17 @@ for machine in $build $host $target; do
                        thread_file='irix'
                fi
                ;;
+       mips-wrs-vxworks)
+               tm_file="mips/elf.h libgloss.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/cross64.h
-               xm_file=mips/xm-iris5.h
+               tm_file="mips/iris6.h mips/cross64.h"
+               xm_defines="USG HAVE_INTTYPES_H"
                fixincludes=Makefile.in
                xmake_file=mips/x-iris
                tmake_file=mips/t-cross64
@@ -1624,12 +1768,12 @@ for machine in $build $host $target; do
                        then
                                tm_file=mips/iris5gdb.h
                        else
-                               tm_file=mips/sni-gas.h
+                               tm_file="mips/sni-svr4.h mips/sni-gas.h"
                        fi
                else
                        tm_file=mips/sni-svr4.h
                fi
-                xm_file=mips/xm-sysv.h
+               xm_defines=USG
                 xmake_file=mips/x-sni-svr4
                 tmake_file=mips/t-mips-gas
                 if [[ x$gnu_ld != xyes ]]
@@ -1640,7 +1784,7 @@ for machine in $build $host $target; do
        mips-sgi-irix5*)                # SGI System V.4., IRIX 5
                if [[ x$gas = xyes ]]
                then
-                       tm_file=mips/iris5gas.h
+                       tm_file="mips/iris5.h mips/iris5gas.h"
                        if [[ x$stabs = xyes ]]
                        then
                                tm_file="${tm_file} dbx.h"
@@ -1648,7 +1792,7 @@ for machine in $build $host $target; do
                else
                        tm_file=mips/iris5.h
                fi
-               xm_file=mips/xm-iris5.h
+               xm_defines="USG HAVE_INTTYPES_H"
                fixincludes=fixinc.irix
                xmake_file=mips/x-iris
                # mips-tfile doesn't work yet
@@ -1660,11 +1804,11 @@ for machine in $build $host $target; do
                fi
                ;;
        mips-sgi-irix4loser*)           # Mostly like a MIPS.
-               tm_file=mips/iris4loser.h
+               tm_file="mips/iris4loser.h mips/iris3.h ${tm_file} mips/iris4.h"
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
-               xm_file=mips/xm-iris4.h
+               xm_defines=USG
                xmake_file=mips/x-iris
                if [[ x$gas = xyes ]]
                then
@@ -1681,11 +1825,11 @@ for machine in $build $host $target; do
                fi
                ;;
        mips-sgi-irix4*)                # Mostly like a MIPS.
-               tm_file=mips/iris4.h
+               tm_file="mips/iris3.h ${tm_file} mips/iris4.h"
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
-               xm_file=mips/xm-iris4.h
+               xm_defines=USG
                xmake_file=mips/x-iris
                if [[ x$gas = xyes ]]
                then
@@ -1702,11 +1846,11 @@ for machine in $build $host $target; do
                fi
                ;;
        mips-sgi-*)                     # Mostly like a MIPS.
-               tm_file=mips/iris3.h
+               tm_file="mips/iris3.h ${tm_file}"
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
-               xm_file=mips/xm-iris3.h
+               xm_defines=USG
                xmake_file=mips/x-iris3
                if [[ x$gas = xyes ]]
                then
@@ -1720,7 +1864,7 @@ for machine in $build $host $target; do
                fi
                ;;
        mips-dec-osfrose*)              # Decstation running OSF/1 reference port with OSF/rose.
-               tm_file=mips/osfrose.h
+               tm_file="mips/osfrose.h ${tm_file}"
                xmake_file=mips/x-osfrose
                tmake_file=mips/t-osfrose
                extra_objs=halfpic.o
@@ -1762,11 +1906,11 @@ for machine in $build $host $target; do
        mips-dec-netbsd*)                  # Decstation running NetBSD
                tm_file=mips/netbsd.h
                # On NetBSD, the headers are already okay, except for math.h.
-               fixincludes=fixinc.math
+               fixincludes=fixinc.wrap
                tmake_file=t-netbsd
                ;;
        mips-sony-bsd* | mips-sony-newsos*)     # Sony NEWS 3600 or risc/news.
-               tm_file=mips/news4.h
+               tm_file="mips/news4.h ${tm_file}"
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
@@ -1785,11 +1929,12 @@ for machine in $build $host $target; do
        mips-sony-sysv*)                # Sony NEWS 3800 with NEWSOS5.0.
                                        # That is based on svr4.
                # t-svr4 is not right because this system doesn't use ELF.
-               tm_file=mips/news5.h
+               tm_file="mips/news5.h ${tm_file}"
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
-               xm_file=mips/xm-news.h
+               xm_file="xm-siglist.h ${xm_file}"
+               xm_defines=USG
                if [[ x$gas = xyes ]]
                then
                        tmake_file=mips/t-mips-gas
@@ -1802,11 +1947,12 @@ for machine in $build $host $target; do
                fi
                ;;
        mips-tandem-sysv4*)             # Tandem S2 running NonStop UX
-               tm_file=mips/svr4-t.h
+               tm_file="mips/svr4-5.h mips/svr4-t.h"
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
-               xm_file=mips/xm-sysv4.h
+               xm_file="xm-siglist.h ${xm_file}"
+               xm_defines=USG
                xmake_file=mips/x-sysv
                if [[ x$gas = xyes ]]
                then
@@ -1822,7 +1968,7 @@ for machine in $build $host $target; do
                fi
                ;;
        mips-*-ultrix* | mips-dec-mach3)        # Decstation.
-               tm_file=mips/ultrix.h
+               tm_file="mips/ultrix.h ${tm_file}"
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
@@ -1857,7 +2003,7 @@ for machine in $build $host $target; do
                fi
                ;;
        mips-*-bsd* | mips-*-riscosbsd* | mips-*-riscos[[1234]]bsd*)
-               tm_file=mips/bsd-4.h    # MIPS BSD 4.3, RISC-OS 4.0
+               tm_file="mips/bsd-4.h ${tm_file}" # MIPS BSD 4.3, RISC-OS 4.0
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
@@ -1878,7 +2024,7 @@ for machine in $build $host $target; do
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
-               xm_file=mips/xm-sysv4.h
+               xm_file="xm-siglist.h ${xm_file}"
                xmake_file=mips/x-sysv
                if [[ x$gas = xyes ]]
                then
@@ -1893,11 +2039,11 @@ for machine in $build $host $target; do
                fi
                ;;
        mips-*-sysv4* | mips-*-riscos[[1234]]sysv4* | mips-*-riscossysv4*)
-               tm_file=mips/svr4-4.h   # MIPS System V.4. RISC-OS 4.0
+               tm_file="mips/svr4-4.h ${tm_file}"
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
-               xm_file=mips/xm-sysv.h
+               xm_defines=USG
                xmake_file=mips/x-sysv
                if [[ x$gas = xyes ]]
                then
@@ -1916,7 +2062,7 @@ for machine in $build $host $target; do
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
-               xm_file=mips/xm-sysv.h
+               xm_defines=USG
                xmake_file=mips/x-sysv
                if [[ x$gas = xyes ]]
                then
@@ -1931,11 +2077,11 @@ for machine in $build $host $target; do
                fi
                ;;
        mips-*-sysv* | mips-*-riscos*sysv*)
-               tm_file=mips/svr3-4.h   # MIPS System V.3, RISC-OS 4.0
+               tm_file="mips/svr3-4.h ${tm_file}"
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
-               xm_file=mips/xm-sysv.h
+               xm_defines=USG
                xmake_file=mips/x-sysv
                if [[ x$gas = xyes ]]
                then
@@ -1975,7 +2121,7 @@ for machine in $build $host $target; do
                tmake_file=mips/t-ecoff
                ;;
        mips-*-ecoff*)
-               tm_file=mips/ecoff.h
+               tm_file="gofast.h mips/ecoff.h"
                if [[ x$stabs = xyes ]]; then
                        tm_file="${tm_file} dbx.h"
                fi
@@ -1994,7 +2140,7 @@ for machine in $build $host $target; do
                tmake_file=mips/t-ecoff
                ;;
        mips64orionel-*-elf*)
-               tm_file="mips/elflorion.h libgloss.h"
+               tm_file="mips/elforion.h mips/elfl64.h libgloss.h"
                tmake_file=mips/t-ecoff
                ;;
        mips64-*-elf*)
@@ -2002,20 +2148,20 @@ for machine in $build $host $target; do
                tmake_file=mips/t-ecoff
                ;;
        mips64orion-*-elf*)
-               tm_file="mips/elforion.h libgloss.h"
+               tm_file="mips/elforion.h mips/elf64.h libgloss.h"
                tmake_file=mips/t-ecoff
                ;;
        mips64orion-*-rtems*)
-               tm_file=mips/rtems64.h
+               tm_file="mips/elforion.h mips/elfl64.h mips/rtems64.h"
                tmake_file="mips/t-ecoff t-rtems"
                ;;
        mipstx39el-*-elf*)
                tm_file="mips/r3900.h mips/elfl.h mips/abi64.h libgloss.h"
-               tmake_file=mips/t-ecoff
+               tmake_file=mips/t-r3900
                ;;
        mipstx39-*-elf*)
                tm_file="mips/r3900.h mips/elf.h mips/abi64.h libgloss.h"
-               tmake_file=mips/t-ecoff
+               tmake_file=mips/t-r3900
                ;;
        mips-*-*)                               # Default MIPS RISC-OS 4.0.
                if [[ x$stabs = xyes ]]; then
@@ -2068,7 +2214,7 @@ for machine in $build $host $target; do
                ;;
 # This has not been updated to GCC 2.
 #      ns32k-ns-genix*)
-#              xm_file=ns32k/xm-genix.h
+#              xm_defines=USG
 #              xmake_file=ns32k/x-genix
 #              tm_file=ns32k/genix.h
 #              use_collect2=yes
@@ -2083,13 +2229,14 @@ for machine in $build $host $target; do
                ;;
        ns32k-pc532-minix*)
                tm_file=ns32k/pc532-min.h
-               xm_file=ns32k/xm-pc532-min.h
+               xm_file="ns32k/xm-pc532-min.h ${xm-file}"
+               xm_defines=USG
                use_collect2=yes
                ;;
        ns32k-pc532-netbsd*)
                tm_file=ns32k/netbsd.h
                # On NetBSD, the headers are already okay, except for math.h.
-               fixincludes=fixinc.math
+               fixincludes=fixinc.wrap
                tmake_file=t-netbsd
                ;;
         pdp11-*-bsd)
@@ -2118,7 +2265,8 @@ for machine in $build $host $target; do
                ;;
        powerpc-*-sysv* | powerpc-*-elf*)
                tm_file=rs6000/sysv4.h
-               xm_file=rs6000/xm-sysv4.h
+               xm_file="xm-siglist.h rs6000/xm-sysv4.h"
+               xm_defines="USG POSIX"
                extra_headers=ppc-asm.h
                if [[ x$gas = xyes ]]
                then
@@ -2162,12 +2310,31 @@ for machine in $build $host $target; do
                fixincludes=Makefile.in
                extra_headers=ppc-asm.h
                ;;
-       powerpc-*-linux-gnu*)
+       powerpc-*-linux-gnulibc1)
                tm_file=rs6000/linux.h
                xm_file=rs6000/xm-sysv4.h
                out_file=rs6000/rs6000.c
                if [[ x$gas = xyes ]]
                then
+                       tmake_file="rs6000/t-ppcos t-linux t-linux-gnulibc1 rs6000/t-ppccomm"
+               else
+                       tmake_file="rs6000/t-ppc t-linux t-linux-gnulibc1 rs6000/t-ppccomm"
+               fi
+               xmake_file=x-linux
+               fixincludes=Makefile.in
+               extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+               extra_headers=ppc-asm.h
+               if [[ x$enable_threads = xyes ]]; then
+                       thread_file='posix'
+               fi
+               ;;
+       powerpc-*-linux-gnu*)
+               tm_file=rs6000/linux.h
+               xm_file="xm-siglist.h rs6000/xm-sysv4.h"
+               xm_defines="USG ${xm_defines}"
+               out_file=rs6000/rs6000.c
+               if [[ x$gas = xyes ]]
+               then
                        tmake_file="rs6000/t-ppcos t-linux rs6000/t-ppccomm"
                else
                        tmake_file="rs6000/t-ppc t-linux rs6000/t-ppccomm"
@@ -2180,16 +2347,19 @@ for machine in $build $host $target; do
                        thread_file='posix'
                fi
                ;;
-        powerpc-*-vxworks*)
+        powerpc-wrs-vxworks*)
                 cpu_type=rs6000
-                xm_file=rs6000/xm-sysv4.h
+               xm_file="xm-siglist.h rs6000/xm-sysv4.h"
+               xm_defines="USG POSIX"
                 tm_file=rs6000/vxppc.h
                 tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
                extra_headers=ppc-asm.h
+               thread_file='vxworks'
                 ;;
        powerpcle-*-sysv* | powerpcle-*-elf*)
                tm_file=rs6000/sysv4le.h
-               xm_file=rs6000/xm-sysv4.h
+               xm_file="xm-siglist.h rs6000/xm-sysv4.h"
+               xm_defines="USG POSIX"
                if [[ x$gas = xyes ]]
                then
                        tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
@@ -2228,7 +2398,7 @@ for machine in $build $host $target; do
                ;;
        powerpcle-*-pe | powerpcle-*-cygwin32)
                tm_file=rs6000/cygwin32.h
-               xm_file=rs6000/xm-cygwin32.h
+               xm_file="rs6000/xm-cygwin32.h ${xm_file}"
                tmake_file=rs6000/t-winnt
                xmake_file=rs6000/x-cygwin32
 #              extra_objs=pe.o
@@ -2241,7 +2411,8 @@ for machine in $build $host $target; do
                ;;
        powerpcle-*-solaris2*)
                tm_file=rs6000/sol2.h
-               xm_file=rs6000/xm-sysv4.h
+               xm_file="xm-siglist.h rs6000/xm-sysv4.h"
+               xm_defines="USG POSIX"
                if [[ x$gas = xyes ]]
                then
                        tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
@@ -2249,7 +2420,12 @@ for machine in $build $host $target; do
                        tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
                fi
                xmake_file=rs6000/x-sysv4
-               fixincludes=fixinc.math
+               case $machine in
+               *-*-solaris2.[[0-4]])
+                       fixincludes=fixinc.svr4;;
+               *)
+                       fixincludes=fixinc.wrap;;
+               esac
                extra_headers=ppc-asm.h
                ;;
        rs6000-ibm-aix3.[[01]]*)
@@ -2267,7 +2443,7 @@ for machine in $build $host $target; do
                fi
                use_collect2=yes
                ;;
-       rs6000-ibm-aix[[456789]].* | powerpc-ibm-aix[[456789]].*)
+       rs6000-ibm-aix4.[[12]].* | powerpc-ibm-aix4.[[12]].*)
                tm_file=rs6000/aix41.h
                if [[ x$host != x$target ]]
                then
@@ -2275,7 +2451,29 @@ for machine in $build $host $target; do
                else
                        tmake_file=rs6000/t-newas
                fi
-               xmake_file=rs6000/x-aix31
+               xmake_file=rs6000/x-aix41
+               use_collect2=yes
+               ;;
+       rs6000-ibm-aix4.[[3456789]].* | powerpc-ibm-aix4.[[3456789]].*)
+               tm_file=rs6000/aix43.h
+               if [[ x$host != x$target ]]
+               then
+                       tmake_file=rs6000/t-xaix43
+               else
+                       tmake_file=rs6000/t-aix43
+               fi
+               xmake_file=rs6000/x-aix43
+               use_collect2=yes
+               ;;
+       rs6000-ibm-aix[[56789]].* | powerpc-ibm-aix[[56789]].*)
+               tm_file=rs6000/aix43.h
+               if [[ x$host != x$target ]]
+               then
+                       tmake_file=rs6000/t-xaix43
+               else
+                       tmake_file=rs6000/t-aix43
+               fi
+               xmake_file=rs6000/x-aix43
                use_collect2=yes
                ;;
        rs6000-ibm-aix*)
@@ -2286,7 +2484,7 @@ for machine in $build $host $target; do
                ;;
        rs6000-*-mach*)
                tm_file=rs6000/mach.h
-               xm_file=rs6000/xm-mach.h
+               xm_file="${xm_file} rs6000/xm-mach.h"
                xmake_file=rs6000/x-mach
                use_collect2=yes
                ;;
@@ -2311,12 +2509,14 @@ for machine in $build $host $target; do
                ;;
        sparc-tti-*)
                tm_file=sparc/pbd.h
-               xm_file=sparc/xm-pbd.h
+               xm_file="xm-alloca.h ${xm_file}"
+               xm_defines=USG
                ;;
        sparc-wrs-vxworks* | sparclite-wrs-vxworks*)
                tm_file=sparc/vxsparc.h
                tmake_file=sparc/t-vxsparc
                use_collect2=yes
+               thread_file='vxworks'
                ;;
        sparc-*-aout*)
                tmake_file=sparc/t-sparcbare
@@ -2325,7 +2525,7 @@ for machine in $build $host $target; do
        sparc-*-netbsd*)
                tm_file=sparc/netbsd.h
                # On NetBSD, the headers are already okay, except for math.h.
-               fixincludes=fixinc.math
+               fixincludes=fixinc.wrap
                tmake_file=t-netbsd
                ;;
        sparc-*-bsd*)
@@ -2339,26 +2539,26 @@ for machine in $build $host $target; do
                float_format=i64
                ;;
        sparc-*-linux-gnuaout*)         # Sparc's running GNU/Linux, a.out
-               xm_file="sparc/xm-sparc.h sparc/xm-linux.h"
+               xm_file="${xm_file} sparc/xm-linux.h"
                tm_file=sparc/linux-aout.h
                xmake_file=x-linux
                fixincludes=Makefile.in #On Linux, the headers are ok already.
                gnu_ld=yes
                ;;
        sparc-*-linux-gnulibc1*)        # Sparc's running GNU/Linux, libc5
-               xm_file="sparc/xm-sparc.h sparc/xm-linux.h"
+               xm_file="${xm_file} sparc/xm-linux.h"
                xmake_file=x-linux
                tm_file=sparc/linux.h
-               tmake_file="t-linux t-linux-gnulibc1 sparc/t-linux"
+               tmake_file="t-linux t-linux-gnulibc1"
                extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
                fixincludes=Makefile.in #On Linux, the headers are ok already.
                gnu_ld=yes
                ;;
        sparc-*-linux-gnu*)             # Sparc's running GNU/Linux, libc6
-               xm_file="sparc/xm-sparc.h sparc/xm-linux.h"
+               xm_file="${xm_file} sparc/xm-linux.h"
                xmake_file=x-linux
                tm_file=sparc/linux.h
-               tmake_file="t-linux sparc/t-linux"
+               tmake_file="t-linux"
                extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
                fixincludes=Makefile.in #On Linux, the headers are ok already.
                gnu_ld=yes
@@ -2382,14 +2582,24 @@ for machine in $build $host $target; do
                tm_file=sparc/rtems.h
                ;;
        sparc-*-solaris2*)
-               tm_file=sparc/sol2.h
-               xm_file=sparc/xm-sol2.h
+               if [[ x$gnu_ld = xyes ]]
+               then
+                       tm_file=sparc/sol2.h
+               else
+                       tm_file=sparc/sol2-sld.h
+               fi
+               xm_file="xm-siglist.h sparc/xm-sysv4.h sparc/xm-sol2.h"
+               xm_defines="USG POSIX"
                tmake_file=sparc/t-sol2
                xmake_file=sparc/x-sysv4
                extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
-               fixincludes=fixinc.svr4
+               case $machine in
+               *-*-solaris2.[[0-4]])
+                       fixincludes=fixinc.svr4;;
+               *)
+                       fixincludes=fixinc.wrap;;
+               esac
                float_format=i128
-               broken_install=yes
                if [[ x${enable_threads} = x ]]; then
                    enable_threads=$have_pthread_h
                    if [[ x${enable_threads} = x ]]; then
@@ -2423,13 +2633,15 @@ for machine in $build $host $target; do
                ;;
        sparc-*-sysv4*)
                tm_file=sparc/sysv4.h
-               xm_file=sparc/xm-sysv4.h
+               xm_file="xm-siglist.h sparc/xm-sysv4.h"
+               xm_defines="USG POSIX"
                tmake_file=t-svr4
                xmake_file=sparc/x-sysv4
                extra_parts="crtbegin.o crtend.o"
                ;;
        sparc-*-vxsim*)
-               xm_file=sparc/xm-sol2.h
+               xm_file="xm-siglist.h sparc/xm-sysv4.h sparc/xm-sol2.h"
+               xm_defines="USG POSIX"
                tm_file=sparc/vxsim.h
                tmake_file=sparc/t-vxsparc
                xmake_file=sparc/x-sysv4
@@ -2469,6 +2681,13 @@ for machine in $build $host $target; do
 #              ;;
 #      tahoe-*-bsd*)                   # tahoe running BSD
 #              ;;
+       thumb-*-coff* | thumbel-*-coff*)
+               tm_file=arm/tcoff.h
+               out_file=arm/thumb.c
+               xm_file=arm/xm-thumb.h
+               md_file=arm/thumb.md
+               tmake_file=arm/t-thumb
+               ;;
 # This hasn't been upgraded to GCC 2.
 #      tron-*-*)
 #              cpu_type=gmicro
@@ -2478,6 +2697,7 @@ for machine in $build $host $target; do
                cpu_type=v850
                tm_file="v850/v850.h"
                xm_file="v850/xm-v850.h"
+               tmake_file=v850/t-v850
                if [[ x$stabs = xyes ]]
                then
                        tm_file="${tm_file} dbx.h"
@@ -2490,13 +2710,13 @@ for machine in $build $host $target; do
                ;;
        vax-*-sysv*)                    # vaxen running system V
                tm_file="${tm_file} vax/vaxv.h"
-               xm_file="${xm_file} vax/xm-vaxv.h"
+               xm_defines=USG
                float_format=vax
                ;;
        vax-*-netbsd*)
                tm_file="${tm_file} netbsd.h vax/netbsd.h"
                # On NetBSD, the headers are already okay, except for math.h.
-               fixincludes=fixinc.math
+               fixincludes=fixinc.wrap
                tmake_file=t-netbsd
                float_format=vax
                ;;
@@ -2525,12 +2745,12 @@ for machine in $build $host $target; do
 
        case $machine in
        *-*-linux-gnu*)
-               ;; # Existing Linux/GNU systems do not use the GNU setup.
+               ;; # Existing GNU/Linux systems do not use the GNU setup.
        *-*-gnu*)
                # On the GNU system, the setup is just about the same on
                # each different CPU.  The specific machines that GNU
                # supports are matched above and just set $cpu_type.
-               xm_file=${cpu_type}/xm-gnu.h
+               xm_file="xm-gnu.h ${xm_file}"
                tm_file=${cpu_type}/gnu.h
                extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
                # GNU always uses ELF.
@@ -2553,7 +2773,7 @@ for machine in $build $host $target; do
                ;;
        esac
 
-       # Distinguish i[3456]86
+       # Distinguish i[34567]86
        # Also, do not run mips-tfile on MIPS if using gas.
        # Process --with-cpu= for PowerPC/rs6000
        target_cpu_default2=
@@ -2564,7 +2784,7 @@ for machine in $build $host $target; do
        i586-*-*)
                target_cpu_default2=2
                ;;
-       i686-*-*)
+       i686-*-* | i786-*-*)
                target_cpu_default2=3
                ;;
        alpha*-*-*)
@@ -2573,7 +2793,7 @@ for machine in $build $host $target; do
                                target_cpu_default2="MASK_CPU_EV6|MASK_BXW|MASK_CIX|MASK_MAX"
                                ;;
                        alphapca56*)
-                               target_cpu_default2="MASK_CPU_EV5|MASK_BWX|TASK_MAX"
+                               target_cpu_default2="MASK_CPU_EV5|MASK_BWX|MASK_MAX"
                                ;;
                        alphaev56*)
                                target_cpu_default2="MASK_CPU_EV5|MASK_BWX"
@@ -2711,6 +2931,7 @@ for machine in $build $host $target; do
                then build_xm_file=$cpu_type/xm-$cpu_type.h
                else build_xm_file=$xm_file
                fi
+               build_xm_defines=$xm_defines
                build_install_headers_dir=$install_headers_dir
                build_exeext=$exeext
                pass1done=yes
@@ -2721,6 +2942,7 @@ for machine in $build $host $target; do
                        then host_xm_file=$cpu_type/xm-$cpu_type.h
                        else host_xm_file=$xm_file
                        fi
+                       host_xm_defines=$xm_defines
                        if [[ x"$xmake_file" = x ]]
                        then xmake_file=$cpu_type/x-$cpu_type
                        fi
@@ -2746,7 +2968,8 @@ then extra_headers=; fi
 if [[ x"$xm_file" = x ]]
 then xm_file=$cpu_type/xm-$cpu_type.h; fi
 
-md_file=$cpu_type/$cpu_type.md
+if [[ x$md_file = x ]]
+then md_file=$cpu_type/$cpu_type.md; fi
 
 if [[ x$out_file = x ]]
 then out_file=$cpu_type/$cpu_type.c; fi
@@ -2762,7 +2985,7 @@ fi
 if [[ x$enable_haifa = x ]]
 then
   case $target in
-    alpha*-* | hppa1.?-* | powerpc*-* | rs6000-*)
+    alpha*-* | hppa1.?-* | powerpc*-* | rs6000-* | *sparc-* | m32r*-*)
       enable_haifa=yes;;
   esac
 fi
@@ -2823,20 +3046,44 @@ fi
 # Set up the header files.
 # $links is the list of header files to create.
 # $vars is the list of shell variables with file names to include.
-# auto-conf.h is the file containing items generated by autoconf and is
+# auto-host.h is the file containing items generated by autoconf and is
 # the first file included by config.h.
-host_xm_file="auto-config.h ${host_xm_file}"
+null_defines=
+host_xm_file="auto-host.h ${host_xm_file}"
 
-# If host=build, it is correct to have hconfig include auto-conf.h
+# If host=build, it is correct to have hconfig include auto-host.h
 # as well.  If host!=build, we are in error and need to do more 
 # work to find out the build config parameters.
 if [[ x$host = x$build ]]
 then
-       build_xm_file="auto-config.h ${build_xm_file}"
+       build_xm_file="auto-host.h ${build_xm_file}"
+else
+       # We create a subdir, then run autoconf in the subdir.
+       # To prevent recursion we set host and build for the new
+       # invocation of configure to the build for this invocation
+       # of configure. 
+       tempdir=build.$$
+       rm -rf $tempdir
+       mkdir $tempdir
+       cd $tempdir
+       case ${srcdir} in
+       /*) realsrcdir=${srcdir};;
+       *) realsrcdir=../${srcdir};;
+       esac
+       CC=${CC_FOR_BUILD} ${realsrcdir}/configure \
+               --target=$target --host=$build --build=$build
+
+       # We just finished tests for the build machine, so rename
+       # the file auto-build.h in the gcc directory.
+       mv auto-host.h ../auto-build.h
+       cd ..
+       rm -rf $tempdir
+       build_xm_file="auto-build.h ${build_xm_file}"
 fi
 
 vars="host_xm_file tm_file xm_file build_xm_file"
 links="config.h tm.h tconfig.h hconfig.h"
+defines="host_xm_defines null_defines xm_defines build_xm_defines"
 
 rm -f config.bak
 if [[ -f config.status ]]; then mv -f config.status config.bak; fi
@@ -2844,9 +3091,9 @@ if [[ -f config.status ]]; then mv -f config.status config.bak; fi
 # Make the links.
 while [[ -n "$vars" ]]
 do
-       # set file to car of files, files to cdr of files
        set $vars; var=$1; shift; vars=$*
        set $links; link=$1; shift; links=$*
+       set $defines; define=$1; shift; defines=$*
 
        rm -f $link
 
@@ -2860,6 +3107,12 @@ do
        for file in `eval echo '$'$var`; do
                echo "#include \"$file\"" >>$link
        done
+
+       for def in `eval echo '$'$define`; do
+               echo "#ifndef $def" >>$link
+               echo "#define $def" >>$link
+               echo "#endif" >>$link
+       done
 done
 
 # Truncate the target if necessary
@@ -2906,12 +3159,18 @@ done
 # FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
 # Otherwise, we can use "CC=$(CC)".
 rm -f symtest.tem
-if $symbolic_link symtest1.tem symtest.tem 2>/dev/null
+if $symbolic_link $srcdir/gcc.c symtest.tem 2>/dev/null
 then
        cc_set_by_configure="\$(CC)"
        stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
 else
-       symbolic_link="cp -p"
+       rm -f symtest.tem
+       if cp -p $srcdir/gcc.c symtest.tem 2>/dev/null
+       then
+               symbolic_link="cp -p"
+       else
+               symbolic_link="cp"
+       fi
        cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
        stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
 fi
@@ -2926,19 +3185,23 @@ done
 
 host_xm_file_list=
 for f in $host_xm_file; do
-       if test $f != "auto-config.h"; then
+       if test $f != "auto-host.h"; then
                host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
        else
-               host_xm_file_list="${host_xm_file_list} auto-config.h"
+               host_xm_file_list="${host_xm_file_list} auto-host.h"
        fi
 done
 
 build_xm_file_list=
 for f in $build_xm_file; do
-       if test $f != "auto-config.h"; then
-               build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
+       if test $f != "auto-build.h"; then
+               if test $f != "auto-host.h"; then
+                       build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
+               else
+                       build_xm_file_list="${build_xm_file_list} auto-host.h"
+               fi
        else
-               build_xm_file_list="${build_xm_file_list} auto-config.h"
+               build_xm_file_list="${build_xm_file_list} auto-build.h"
        fi
 done
 
@@ -2983,7 +3246,7 @@ then
        will_use_collect2=
        maybe_use_collect2=
 else
-       will_use_collect2="ld"
+       will_use_collect2="collect2"
        maybe_use_collect2="-DUSE_COLLECT2"
 fi
 
@@ -3015,6 +3278,46 @@ if [[ -f ../ld/Makefile ]]; then
 #      fi
 fi
 
+# Figure out what assembler alignment features are present.
+AC_MSG_CHECKING(assembler alignment features)
+gcc_cv_as=
+gcc_cv_as_alignment_features=
+if [[ -x as$host_exeext ]]; then
+       # Build using assembler in the current directory.
+       gcc_cv_as=./as$host_exeext
+elif [[ -f $srcdir/../gas/configure.in ]]; then
+       # Single tree build which includes gas.
+       for f in $srcdir/../gas/configure.in $srcdir/../gas/Makefile.in
+       do
+               gcc_cv_gas_version=`grep '^VERSION=[[0-9]]*\.[[0-9]]*' $f`
+               if [[ x$gcc_cv_gas_version != x ]]; then
+                       break
+               fi
+       done
+       gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([[0-9]]*\)"`
+       gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[[0-9]]*\.\([[0-9]]*\)"`
+       # Gas version 2.8 and later support specifying the maximum
+       # bytes to skip when using .p2align.
+       if [[ "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 8 -o "$gcc_cv_gas_major_version" -gt 2 ]]; then
+               gcc_cv_as_alignment_features=".p2align including maximum skip"
+               AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
+       fi
+elif [[ x$host = x$target ]]; then
+       # Native build.
+       gcc_cv_as=as$host_exeext
+fi
+if [[ x$gcc_cv_as != x ]]; then
+       # Check if specifying the maximum bytes to skip when
+       # using .p2align is supported.
+       echo ".p2align 4,,7" > conftest.s
+       if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
+               gcc_cv_as_alignment_features=".p2align including maximum skip"
+               AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
+       fi
+       rm -f conftest.s conftest.o
+fi
+AC_MSG_RESULT($gcc_cv_as_alignment_features)
+
 # Figure out what language subdirectories are present.
 subdirs=
 for lang in ${srcdir}/*/config-lang.in ..
@@ -3158,6 +3461,18 @@ if [[ ! -f Makefile.in ]]; then
        echo "source ${srcdir}/.gdbinit" >> .gdbinit
 fi
 
+# Define variables host_canonical and build_canonical
+# because some Cygnus local changes in the Makefile depend on them.
+build_canonical=${build}
+host_canonical=${host}
+target_subdir=
+if [[ "${host}" != "${target}" ]] ; then
+    target_subdir=${target}/
+fi
+AC_SUBST(build_canonical)
+AC_SUBST(host_canonical)
+AC_SUBST(target_subdir)
+       
 # If this is using newlib, then define inhibit_libc in
 # LIBGCC2_CFLAGS.  This will cause __eprintf to be left out of
 # libgcc.a, but that's OK because newib should have its own version of
@@ -3188,6 +3503,10 @@ if [[ x$enable_haifa != x ]]; then
     done
 fi
 
+# Nothing to do for FLOAT_H, float_format already handled.
+objdir=`pwd`
+AC_SUBST(objdir)
+
 # Process the language and host/target makefile fragments.
 ${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"
 
@@ -3205,6 +3524,7 @@ AC_SUBST(extra_passes)
 AC_SUBST(extra_programs)
 AC_SUBST(extra_parts)
 AC_SUBST(extra_c_objs)
+AC_SUBST(extra_cxx_objs)
 AC_SUBST(extra_c_flags)
 AC_SUBST(extra_objs)
 AC_SUBST(host_extra_gcc_objs)
@@ -3269,6 +3589,11 @@ then
        echo " ${str2}${str3}." 1>&2
 fi
 
+# Truncate the target if necessary
+if [[ x$host_truncate_target != x ]]; then
+       target=`echo $target | sed -e 's/\(..............\).*/\1/'`
+fi
+
 # Configure the subdirectories
 # AC_CONFIG_SUBDIRS($subdirs)
 
@@ -3278,7 +3603,7 @@ AC_OUTPUT($all_outputs,
 [
 . $srcdir/configure.lang
 case x$CONFIG_HEADERS in
-xauto-config.h:config.in)
+xauto-host.h:config.in)
 echo > cstamp-h ;;
 esac
 # If the host supports symlinks, point stage[1234] at ../stage[1234] so