re PR target/24837 (move dynamic linker names out of LINK_SPEC and into new DYNAMIC_L...
[gcc.git] / gcc / config.gcc
index c7c2cf12ea4f05d486c0403c0a61acd998da4719..70f9bae2e7c1efb891147d4cc26fd7f2fcc3b12c 100644 (file)
@@ -1,5 +1,5 @@
 # GCC target-specific configuration file.
-# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
 # Free Software Foundation, Inc.
 
 #This file is part of GCC.
@@ -356,9 +356,9 @@ esac
 # Common parts for widely ported systems.
 case ${target} in
 *-*-darwin*)
-  tm_file="${tm_file} darwin.h"
+  tm_file="${tm_file} darwin.h ${cpu_type}/darwin.h"
   tm_p_file="${tm_p_file} darwin-protos.h"
-  tmake_file="t-darwin t-slibgcc-darwin"
+  tmake_file="t-darwin ${cpu_type}/t-darwin t-slibgcc-darwin"
   target_gtfiles="\$(srcdir)/config/darwin.c"
   extra_options="${extra_options} darwin.opt"
   c_target_objs="darwin-c.o"
@@ -446,12 +446,21 @@ case ${target} in
 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
   # Must come before *-*-gnu* (because of *-*-linux-gnu* systems).
   extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
+  extra_options="${extra_options} linux.opt"
   gas=yes
   gnu_ld=yes
   case ${enable_threads} in
     "" | yes | posix) thread_file='posix' ;;
   esac
   tmake_file="t-slibgcc-elf-ver t-linux"
+  case ${target} in
+    *-*-*uclibc*)
+      tm_defines="${tm_defines} UCLIBC_DEFAULT=1"
+      ;;
+    *)
+      tm_defines="${tm_defines} UCLIBC_DEFAULT=0"
+      ;;
+  esac
   ;;
 *-*-gnu*)
   # On the Hurd, the setup is just about the same on
@@ -533,14 +542,14 @@ case ${target} in
   ;;
 *-*-vxworks*)
   tmake_file=t-vxworks
-  tm_file="${tm_file} elfos.h svr4.h vxworks.h"
+  tm_file="${tm_file} elfos.h svr4.h"
+  xm_defines=POSIX
+  extra_options="${extra_options} vxworks.opt"
   case ${enable_threads} in
     no) ;;
     "" | yes | vxworks) thread_file='vxworks' ;;
     *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
   esac
-  use_collect2=yes
-  xm_defines=POSIX
   ;;
 esac
 
@@ -568,7 +577,7 @@ alpha*-*-unicosmk*)
 alpha*-*-linux*)
        tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
        target_cpu_default="MASK_GAS"
-       tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee"
+       tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee alpha/t-linux"
        ;;
 alpha*-*-gnu*)
        target_cpu_default="MASK_GAS"
@@ -671,10 +680,24 @@ arm*-*-netbsd*)
        use_collect2=yes
        ;;
 arm*-*-linux*)                 # ARM GNU/Linux with ELF
-       tm_file="dbxelf.h elfos.h linux.h arm/elf.h  arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
-       tmake_file="${tmake_file} arm/t-arm arm/t-linux"
-       extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
-       gnu_ld=yes
+       tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" 
+       tmake_file="${tmake_file} t-linux arm/t-arm"
+       case ${target} in
+       arm*-*-linux-*eabi)
+           tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
+           tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
+           # The BPABI long long divmod functions return a 128-bit value in 
+           # registers r0-r3.  Correctly modeling that requires the use of
+           # TImode.
+           need_64bit_hwint=yes
+           # The EABI requires the use of __cxa_atexit.
+           default_use_cxa_atexit=yes
+           ;;
+       *)
+           tmake_file="$tmake_file arm/t-linux"
+           ;;
+       esac
+       tm_file="$tm_file arm/aout.h arm/arm.h"
        ;;
 arm*-*-uclinux*)               # ARM ucLinux
        tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/linux-gas.h arm/linux-elf.h arm/uclinux-elf.h"
@@ -700,7 +723,7 @@ arm*-*-eabi* | arm*-*-symbianelf* )
          tm_file="${tm_file} arm/symbian.h"
          # We do not include t-bpabi for Symbian OS because the system
          # provides its own implementation of the BPABI functions.
-         tmake_file="${tmake_file} t-slibgcc-elf-ver arm/t-symbian"
+         tmake_file="${tmake_file} arm/t-symbian"
          ;;
        esac
        tm_file="${tm_file} arm/aout.h arm/arm.h"
@@ -832,10 +855,11 @@ hppa*-*-linux* | parisc*-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h pa/pa-linux.h \
                 pa/pa32-regs.h pa/pa32-linux.h"
        tmake_file="${tmake_file} pa/t-linux"
-       # if not configured with --enable-sjlj-exceptions, bump the
-       # libgcc version number
-       if test x$sjlj != x1; then
-           tmake_file="$tmake_file pa/t-slibgcc-elf-ver"
+       # Set the libgcc version number
+       if test x$sjlj = x1; then
+           tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
+       else
+           tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
        fi
        ;;
 # port not yet contributed.
@@ -875,7 +899,7 @@ hppa[12]*-*-hpux10*)
                extra_options="${extra_options} pa/pa-hpux1010.opt"
                ;;
        esac
-       tmake_file="pa/t-pa pa/t-pa-hpux pa/t-hpux-shlib"
+       tmake_file="pa/t-pa-hpux10 pa/t-pa-hpux pa/t-hpux-shlib"
        case ${enable_threads} in
          "")
            if test x$have_pthread_h = xyes ; then
@@ -886,6 +910,12 @@ hppa[12]*-*-hpux10*)
            tmake_file="${tmake_file} pa/t-dce-thr"
            ;;
        esac
+       # Set the libgcc version number
+       if test x$sjlj = x1; then
+           tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
+       else
+           tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
+       fi
        use_collect2=yes
        use_fixproto=yes
        ;;
@@ -918,6 +948,12 @@ hppa*64*-*-hpux11*)
                       pa/pa-hpux1010.opt pa/pa64-hpux.opt"
        need_64bit_hwint=yes
        tmake_file="pa/t-pa64 pa/t-pa-hpux pa/t-hpux-shlib"
+       # Set the libgcc version number
+       if test x$sjlj = x1; then
+           tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
+       else
+           tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
+       fi
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
        case x${enable_threads} in
        xyes | xposix )
@@ -940,7 +976,13 @@ hppa[12]*-*-hpux11*)
                extra_options="${extra_options} pa/pa-hpux1111.opt"
                ;;
        esac
-       tmake_file="pa/t-pa pa/t-pa-hpux pa/t-hpux-shlib"
+       tmake_file="pa/t-pa-hpux11 pa/t-pa-hpux pa/t-hpux-shlib"
+       # Set the libgcc version number
+       if test x$sjlj = x1; then
+           tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
+       else
+           tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
+       fi
        case x${enable_threads} in
        xyes | xposix )
                thread_file=posix 
@@ -949,7 +991,7 @@ hppa[12]*-*-hpux11*)
        use_collect2=yes
        ;;
 i[34567]86-*-darwin*)
-       tm_file="${tm_file} i386/darwin.h"
+       # All the configuration is presently done generically.
        ;;
 i[34567]86-*-elf*)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h"
@@ -961,7 +1003,6 @@ i[34567]86-sequent-ptx4* | i[34567]86-sequent-sysv4*)
        then
                tm_file="${tm_file} usegas.h"
        fi
-       xm_defines="SMALL_ARG_MAX"
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ptx4.h i386/ptx4-i.h"
        tmake_file=t-svr4
        extra_parts="crtbegin.o crtend.o"
@@ -1019,7 +1060,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu)
        i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
        i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
        esac
-       tmake_file="${tmake_file} i386/t-crtstuff"
+       tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtfm"
        ;;
 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h \
@@ -1028,7 +1069,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
        x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;;
        x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
        esac
-       tmake_file="${tmake_file} i386/t-linux64"
+       tmake_file="${tmake_file} i386/t-linux64 i386/t-crtfm"
        ;;
 i[34567]86-*-gnu*)
        ;;
@@ -1092,7 +1133,6 @@ i[34567]86-*-sco3.2v5*)   # 80386 running SCO Open Server 5
        use_fixproto=yes
        ;;
 i[34567]86-*-solaris2*)
-       xm_defines="SMALL_ARG_MAX"
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h sol2.h"
        case ${target} in
        *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
@@ -1159,7 +1199,6 @@ i[34567]86-*-sysv5*)           # Intel x86 on System V Release 5
        use_fixproto=yes
        ;;
 i[34567]86-*-sysv4*)           # Intel 80386's running system V.4
-       xm_defines="SMALL_ARG_MAX"
        tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h i386/sysv4-cpp.h"
        if test x$stabs = xyes
        then
@@ -1169,9 +1208,18 @@ i[34567]86-*-sysv4*)             # Intel 80386's running system V.4
        extra_parts="crtbegin.o crtend.o"
        use_fixproto=yes
        ;;
-i[4567]86-wrs-vxworks)
-       tm_file="${tm_file} i386/sysv4.h i386/unix.h i386/vxworks.h"
-       tmake_file="${tmake_file} i386/t-vxworks"
+i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
+       tm_file="${tm_file} i386/sysv4.h i386/unix.h i386/att.h vx-common.h"
+       case ${target} in
+         *-vxworksae*)
+           tm_file="${tm_file} vxworksae.h i386/vxworksae.h"
+           tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
+           ;;
+         *)
+           tm_file="${tm_file} vxworks.h i386/vxworks.h"
+           tmake_file="${tmake_file} i386/t-vxworks"
+           ;;
+       esac
        ;;
 i[34567]86-*-pe | i[34567]86-*-cygwin*)
        tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h"
@@ -1179,9 +1227,9 @@ i[34567]86-*-pe | i[34567]86-*-cygwin*)
        tmake_file="i386/t-cygwin i386/t-cygming"
        target_gtfiles="\$(srcdir)/config/i386/winnt.c"
        extra_options="${extra_options} i386/cygming.opt"
-       extra_objs=winnt.o
+       extra_objs="winnt.o winnt-stubs.o"
        c_target_objs=cygwin2.o
-       cxx_target_objs=cygwin2.o
+       cxx_target_objs="cygwin2.o winnt-cxx.o"
        extra_gcc_objs=cygwin1.o
        if test x$enable_threads = xyes; then
                thread_file='posix'
@@ -1193,7 +1241,8 @@ i[34567]86-*-mingw32*)
        tmake_file="i386/t-cygming i386/t-mingw32"
        target_gtfiles="\$(srcdir)/config/i386/winnt.c"
        extra_options="${extra_options} i386/cygming.opt"
-       extra_objs=winnt.o
+       extra_objs="winnt.o winnt-stubs.o"
+       cxx_target_objs=winnt-cxx.o
        case ${enable_threads} in
          "" | yes | win32) thread_file='win32' ;;
        esac
@@ -1349,7 +1398,6 @@ m68020-*-elf* | m68k-*-elf*)
        tm_defines="MOTOROLA USE_GAS"
        tmake_file=m68k/t-m68kelf
        extra_parts="crtbegin.o crtend.o"
-       use_fixproto=yes
        ;;
 m68010-*-netbsdelf* | m68k*-*-netbsdelf*)
        tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h m68k/netbsd-elf.h"
@@ -1553,6 +1601,20 @@ mn10300-*-*)
        use_collect2=no
        use_fixproto=yes
        ;;
+mt-*-elf)
+        tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
+        tmake_file="${tmake_file} mt/t-mt"
+        ;;
+ns32k-*-netbsdelf*)
+       echo "GCC does not yet support the ${target} target"; exit 1
+       ;;
+ns32k-*-netbsd*)
+       tm_file="${tm_file} netbsd.h netbsd-aout.h ns32k/netbsd.h"
+       # On NetBSD, the headers are already okay, except for math.h.
+       tmake_file="t-netbsd ns32k/t-ns32k"
+       extra_parts=""
+       use_collect2=yes
+       ;;
 pdp11-*-bsd)
        tm_file="${tm_file} pdp11/2bsd.h"
        use_fixproto=yes
@@ -1588,8 +1650,6 @@ powerpc-*-beos*)
        use_fixproto=yes
        ;;
 powerpc-*-darwin*)
-       tm_file="${tm_file} rs6000/darwin.h"
-       tmake_file="${tmake_file} rs6000/t-darwin"
        extra_options="${extra_options} rs6000/darwin.opt"
        case ${target} in
          *-darwin1[0-9]* | *-darwin[8-9]*)
@@ -1708,22 +1768,30 @@ powerpc-*-gnu*)
                thread_file='posix'
        fi
        ;;
-powerpc-wrs-vxworks*)
+powerpc-wrs-vxworks|powerpc-wrs-vxworksae)
        # 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_options="${extra_options} rs6000/sysv4.opt"
        extra_headers=ppc-asm.h
+       case ${target} in
+         *-vxworksae*)
+           tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
+           tmake_file="${tmake_file} rs6000/t-vxworksae"
+           ;;
+         *-vxworks*)
+           tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
+           ;;
+       esac
        ;;
-powerpc-wrs-windiss*)  # Instruction-level simulator for VxWorks.
+powerpc-wrs-windiss*)  # Instruction-level simulator for VxWorks.
        tm_file="${tm_file} elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/windiss.h"
-        tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
+       tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
        extra_options="${extra_options} rs6000/sysv4.opt"
-        thread_file=""
+       thread_file=""
        use_fixproto=yes
-        ;;
+       ;;
 powerpc-*-lynxos*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
@@ -1801,7 +1869,7 @@ rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*)
        ;;
 s390-*-linux*)
        tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
-       tmake_file="${tmake_file} s390/t-crtstuff"
+       tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux"
        ;;
 s390x-*-linux*)
        tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
@@ -1809,7 +1877,7 @@ s390x-*-linux*)
        md_file=s390/s390.md
        extra_modes=s390/s390-modes.def
        out_file=s390/s390.c
-       tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux64"
+       tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux s390/t-linux64"
        ;;
 s390x-ibm-tpf*)
         tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h s390/tpf.h"
@@ -1996,7 +2064,7 @@ sparc-*-elf*)
 sparc-*-linux*)                # SPARC's running GNU/Linux, libc6
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h"
        extra_options="${extra_options} sparc/long-double-switch.opt"
-       tmake_file="${tmake_file} sparc/t-crtfm"
+       tmake_file="${tmake_file} sparc/t-linux sparc/t-crtfm"
        ;;
 sparc-*-rtems*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h"
@@ -2115,7 +2183,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*)
 sparc64-*-linux*)              # 64-bit SPARC's running GNU/Linux
        tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h"
        extra_options="${extra_options} sparc/long-double-switch.opt"
-       tmake_file="${tmake_file} sparc/t-linux64 sparc/t-crtfm"
+       tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
        ;;
 sparc64-*-netbsd*)
        tm_file="sparc/biarch64.h ${tm_file}"
@@ -2307,6 +2375,9 @@ if test x$with_cpu = x ; then
       # A Cirrus ARM variant.
       with_cpu="ep9312"
       ;;
+    i386-*-*)
+      with_cpu=i386
+      ;;
     i486-*-*)
       with_cpu=i486
       ;;
@@ -2358,13 +2429,26 @@ if test x$with_cpu = x ; then
         pentium_m-*)
           with_cpu=pentium-m
           ;;
-        *)
+        pentiumpro-*)
           with_cpu=pentiumpro
           ;;
+        *)
+          with_cpu=generic
+          ;;
       esac
       ;;
     x86_64-*-*)
-      with_cpu=k8
+      case ${target_noncanonical} in
+        k8-*|opteron-*|athlon_64-*)
+          with_cpu=k8
+          ;;
+        nocona-*)
+          with_cpu=nocona
+          ;;
+        *)
+          with_cpu=generic
+          ;;
+      esac
       ;;
     alphaev6[78]*-*-*)
       with_cpu=ev67
@@ -2570,13 +2654,21 @@ case "${target}" in
                for which in arch cpu tune; do
                        eval "val=\$with_$which"
                        case ${val} in
-                       "" | i386 | i486 \
+                       i386 | i486 \
                        | i586 | pentium | pentium-mmx | winchip-c6 | winchip2 \
                        | c3 | c3-2 | i686 | pentiumpro | pentium2 | pentium3 \
                        | pentium4 | k6 | k6-2 | k6-3 | athlon | athlon-tbird \
-                       | athlon-4 | athlon-xp | athlon-mp | k8 | opteron \
-                       | athlon64 | athlon-fx | prescott | pentium-m \
-                       | pentium4m | pentium3m| nocona)
+                       | athlon-4 | athlon-xp | athlon-mp \
+                       | prescott | pentium-m | pentium4m | pentium3m)
+                               case "${target}" in
+                                 x86_64-*-*)
+                                     echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
+                                     exit 1
+                                     ;;
+                               esac
+                               # OK
+                               ;;
+                       "" | k8 | opteron | athlon64 | athlon-fx | nocona | generic)
                                # OK
                                ;;
                        *)
@@ -2620,6 +2712,25 @@ case "${target}" in
                esac
                ;;
 
+       mt-*-*)
+               supported_defaults="arch"
+
+               case "$with_arch" in
+               "" \
+               | ms1-64-001 \
+               | ms1-16-002 \
+               | ms1-16-003 \
+               | ms2 \
+               | "")
+                       # OK
+                       ;;
+               *)
+                       echo "Unknown arch used in --with-arch=$with_arch" 1>&2
+                       exit 1
+                       ;;
+               esac
+               ;;
+
        powerpc*-*-* | rs6000-*-*)
                supported_defaults="cpu float tune"
 
@@ -2657,7 +2768,7 @@ case "${target}" in
                for which in arch tune; do
                        eval "val=\$with_$which"
                        case ${val} in
-                       "" | g5 | g6 | z900 | z990)
+                       "" | g5 | g6 | z900 | z990 | z9-109)
                                # OK
                                ;;
                        *)
@@ -2836,6 +2947,11 @@ case ${target} in
                 fi
                ;;
 
+       sh[123456ble]*-*-* | sh-*-*)
+               c_target_objs="${c_target_objs} sh-c.o"
+               cxx_target_objs="${cxx_target_objs} sh-c.o"
+               ;;
+
        sparc*-*-*)
                # Some standard aliases.
                case x$with_cpu in
@@ -2874,6 +2990,7 @@ do
                        ;;
                *)
                        echo "This target does not support --with-$option." 2>&1
+                       echo "Valid --with options are: $supported_defaults" 2>&1
                        exit 1
                        ;;
                esac