OSDN Git Service

* struct-equiv.c (rtx_equiv_p): Fix POST_MODIFY case.
[pf3gnuchains/gcc-fork.git] / gcc / config.gcc
index 5e2216c..e9d46c1 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.
 #                      threads support was requested.
 #
 #  default_use_cxa_atexit
-#                      "no" by default, can be set to "yes" if a target
-#                      wishes to use __cxa_atexit() by default if the
-#                      $enable___cxa_atexit variable is not set.
+#                        The default value for the $enable___cxa_atexit
+#                      variable.  enable___cxa_atexit needs to be set to
+#                      "yes" for the correct operation of C++ destructors
+#                      but it relies upon the presence of a non-standard C
+#                      library function called __cxa_atexit.
+#                        Since not all C libraries provide __cxa_atexit the
+#                      default value of $default_use_cxa_atexit is set to
+#                      "no" except for targets which are known to be OK.
 #
 #  gas_flag            Either yes or no depending on whether GNU as was
 #                      requested.
@@ -446,12 +451,23 @@ 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
+  # Assume that glibc or uClibc are being used and so __cxa_atexit is provided.
+  default_use_cxa_atexit=yes
   ;;
 *-*-gnu*)
   # On the Hurd, the setup is just about the same on
@@ -473,6 +489,8 @@ case ${target} in
       tm_file="${cpu_type}/${cpu_type}.h i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h gnu.h ${tm_file}"
       ;;
   esac
+  # Assume that glibc is being used and so __cxa_atexit is provided.
+  default_use_cxa_atexit=yes
   ;;
 *-*-netbsd*)
   tmake_file="t-slibgcc-elf-ver t-libc-ok t-netbsd t-libgcc-pic"
@@ -542,6 +560,10 @@ case ${target} in
     *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
   esac
   ;;
+*-*-elf)
+  # Assume that newlib is being used and so __cxa_atexit is provided.
+  default_use_cxa_atexit=yes
+  ;;
 esac
 
 case ${target} in
@@ -568,7 +590,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"
@@ -674,7 +696,7 @@ 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" 
        tmake_file="${tmake_file} t-linux arm/t-arm"
        case ${target} in
-       arm*-*-linux-gnueabi)
+       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 
@@ -714,7 +736,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"
@@ -846,10 +868,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.
@@ -889,7 +912,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
@@ -900,8 +923,11 @@ hppa[12]*-*-hpux10*)
            tmake_file="${tmake_file} pa/t-dce-thr"
            ;;
        esac
-       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
        use_collect2=yes
        use_fixproto=yes
@@ -935,8 +961,11 @@ 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"
-       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
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
        case x${enable_threads} in
@@ -960,9 +989,12 @@ 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"
-       if test x$sjlj != x1; then
-           tmake_file="$tmake_file pa/t-slibgcc-elf-ver"
+       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 )
@@ -1041,7 +1073,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 i386/t-crtfm"
+       tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtfm t-dfprules"
        ;;
 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 \
@@ -1050,7 +1082,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 i386/t-crtfm"
+       tmake_file="${tmake_file} i386/t-linux64 i386/t-crtfm t-dfprules"
        ;;
 i[34567]86-*-gnu*)
        ;;
@@ -1617,7 +1649,7 @@ powerpc64-*-linux*)
                tm_file="rs6000/secureplt.h ${tm_file}"
        fi
        extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
-       tmake_file="rs6000/t-fprules ${tmake_file} rs6000/t-ppccomm rs6000/t-linux64"
+       tmake_file="t-dfprules rs6000/t-fprules ${tmake_file} rs6000/t-ppccomm rs6000/t-linux64"
        ;;
 powerpc64-*-gnu*)
        tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux64.h rs6000/gnu.h"
@@ -1715,7 +1747,7 @@ powerpc-*-linux*spe*)
 powerpc-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
+       tmake_file="t-dfprules rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
        case ${enable_targets}:${cpu_is_64bit} in
            *powerpc64* | all:* | *:yes)
                if test x$cpu_is_64bit = xyes; then
@@ -1850,7 +1882,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"
@@ -1858,7 +1890,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"
@@ -2045,7 +2077,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"
@@ -2164,7 +2196,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}"
@@ -2356,6 +2388,9 @@ if test x$with_cpu = x ; then
       # A Cirrus ARM variant.
       with_cpu="ep9312"
       ;;
+    i386-*-*)
+      with_cpu=i386
+      ;;
     i486-*-*)
       with_cpu=i486
       ;;
@@ -2407,13 +2442,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
@@ -2619,13 +2667,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
                                ;;
                        *)
@@ -2774,7 +2830,7 @@ case "${target}" in
                        "" | sparc | sparcv9 | sparc64 | sparc86x \
                        | v7 | cypress | v8 | supersparc | sparclite | f930 \
                        | f934 | hypersparc | sparclite86x | sparclet | tsc701 \
-                       | v9 | ultrasparc | ultrasparc3)
+                       | v9 | ultrasparc | ultrasparc3 | niagara)
                                # OK
                                ;;
                        *)
@@ -2904,6 +2960,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