irix6-unwind.h: New file.
[gcc.git] / libgcc / config.host
index 362d2f24d561bd71ec9769e53f29493755779432..6ea74900c86b2b617f1f9252d4fa83f791da350d 100644 (file)
@@ -1,6 +1,6 @@
 # libgcc host-specific configuration file.
 # Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2008, 2009 Free Software Foundation, Inc.
+# 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 
 #This file is part of GCC.
 
 #                      The default is ".hidden".
 #  cpu_type            The name of the cpu, if different from the first
 #                      chunk of the canonical host name.
+#  enable_execute_stack The name of a source file implementing
+#                      __enable_execute_stack.
 #  extra_parts         List of extra object files that should be compiled
 #                      for this target machine.  This may be overridden
 #                      by setting EXTRA_PARTS in a tmake_file fragment.
 #                      If either is set, EXTRA_PARTS and
 #                      EXTRA_MULTILIB_PARTS inherited from the GCC
 #                      subdirectory will be ignored.
+#  md_unwind_header    The name of a header file defining
+#                      MD_FALLBACK_FRAME_STATE_FOR.
 #  tmake_file          A list of machine-description-specific
 #                      makefile-fragments, if different from
 #                      "$cpu_type/t-$cpu_type".
 
 asm_hidden_op=.hidden
+enable_execute_stack=
 extra_parts=
 tmake_file=
+md_unwind_header=no-unwind.h
 
 # Set default cpu_type so it can be updated in each machine entry.
 cpu_type=`echo ${host} | sed 's/-.*$//'`
@@ -84,6 +90,8 @@ fido-*-*)
        ;;
 frv*)  cpu_type=frv
        ;;
+moxie*)        cpu_type=moxie
+       ;;
 i[34567]86-*-*)
        cpu_type=i386
        ;;
@@ -95,11 +103,19 @@ ia64-*-*)
 hppa*-*-*)
        cpu_type=pa
        ;;
+lm32*-*-*)
+       cpu_type=lm32
+       ;;
 m32r*-*-*)
         cpu_type=m32r
         ;;
 m68k-*-*)
        ;;
+mep*-*-*)
+       ;;
+microblaze*-*-*)
+       cpu_type=microblaze
+       ;;
 mips*-*-*)
        cpu_type=mips
        ;;
@@ -158,12 +174,50 @@ case ${host} in
   ;;
 *-*-rtems*)
   ;;
+*-*-solaris2*)
+  tmake_file="$tmake_file t-sol2 t-slibgcc t-slibgcc-elf-ver"
+  if test $with_gnu_ld = yes; then
+    tmake_file="$tmake_file t-slibgcc-gld"
+  else
+    tmake_file="$tmake_file t-slibgcc-sld"
+  fi
+  # Add cpu-specific t-sol2 after t-slibgcc-* so it can augment SHLIB_MAPFILES.
+  tmake_file="$tmake_file $cpu_type/t-sol2"
+  extra_parts="gmon.o crtbegin.o crtend.o"
+  case ${host} in
+    i?86-*-solaris2.1[0-9]*)
+      # Solaris 10+/x86 provides crt1.o, crti.o, crtn.o, and gcrt1.o as
+      # part of the base system.
+      ;;
+    sparc*-*-solaris2.1[0-9]*)
+      # Solaris 10+/SPARC lacks crt1.o and gcrt1.o.
+      extra_parts="$extra_parts crt1.o gcrt1.o"
+      ;;
+    *)
+      tmake_file="$tmake_file t-crtin"
+      extra_parts="$extra_parts crt1.o crti.o crtn.o gcrt1.o"
+      ;;
+  esac
+  ;;
 *-*-vxworks*)
   ;;
 *-*-elf)
   ;;
 esac
 
+case ${host} in
+*-*-darwin* | *-*-freebsd* | *-*-netbsd* | *-*-openbsd* | *-*-solaris2* | \
+  alpha*-dec-osf5.1*)
+  enable_execute_stack=enable-execute-stack-mprotect.c
+  ;;
+i[34567]86-*-mingw* | x86_64-*-mingw*)
+  enable_execute_stack=config/i386/enable-execute-stack-mingw32.c
+  ;;
+*)
+  enable_execute_stack=enable-execute-stack-empty.c;
+  ;;
+esac
+
 case ${host} in
 # Support site-specific machine types.
 *local*)
@@ -172,9 +226,10 @@ case ${host} in
        then tmake_file=${cpu_type}/t-$rest
        fi
        ;;
-alpha*-*-linux* | alpha*-*-gnu*)
+alpha*-*-linux*)
        tmake_file="${tmake_file} alpha/t-crtfm"
        extra_parts="$extra_parts crtfastmath.o"
+       md_unwind_header=alpha/linux-unwind.h
        ;;
 alpha*-*-freebsd*)
        ;;
@@ -182,13 +237,23 @@ alpha*-*-netbsd*)
        ;;
 alpha*-*-openbsd*)
        ;;
-alpha*-dec-osf[45]*)
+alpha*-dec-osf5.1*)
+       tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee alpha/t-crtfm t-slibgcc alpha/t-slibgcc-osf"
+       case ${target_thread_file} in
+         posix)
+           tmake_file="${tmake_file} alpha/t-osf-pthread"
+           ;;
+       esac
+       extra_parts="${extra_parts} qrnnd.o crtfastmath.o gthr-posix.o"
+       md_unwind_header=alpha/osf5-unwind.h
        ;;
 alpha64-dec-*vms*)
+       tmake_file="vms/t-vms vms/t-vms64 alpha/t-vms"
+       md_unwind_header=alpha/vms-unwind.h
        ;;
 alpha*-dec-*vms*)
-       ;;
-arc-*-elf*)
+       tmake_file="vms/t-vms alpha/t-vms"
+       md_unwind_header=alpha/vms-unwind.h
        ;;
 arm-wrs-vxworks)
        ;;
@@ -196,8 +261,6 @@ arm*-*-freebsd*)
        ;;
 arm*-*-netbsdelf*)
        ;;
-arm*-*-netbsd*)
-       ;;
 arm*-*-linux*)                 # ARM GNU/Linux with ELF
        ;;
 arm*-*-uclinux*)               # ARM ucLinux
@@ -212,8 +275,6 @@ arm*-*-elf)
        ;;
 arm*-wince-pe*)
        ;;
-arm-*-pe*)
-       ;;
 avr-*-rtems*)
        ;;
 avr-*-*)
@@ -223,11 +284,13 @@ avr-*-*)
 bfin*-elf*)
         ;;
 bfin*-uclinux*)
+       md_unwind_header=bfin/linux-unwind.h
         ;;
 bfin*-linux-uclibc*)
        # No need to build crtbeginT.o on uClibc systems.  Should probably
        # be moved to the OS specific section above.
        extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+       md_unwind_header=bfin/linux-unwind.h
        ;;
 bfin*-*)
         ;;
@@ -236,8 +299,6 @@ crisv32-*-elf | crisv32-*-none | cris-*-elf | cris-*-none)
        ;;
 cris-*-linux* | crisv32-*-linux*)
        ;;
-crx-*-elf)
-       ;;
 fido-*-elf)
        ;;
 fr30-*-elf)
@@ -253,12 +314,16 @@ h8300-*-elf*)
 hppa*64*-*-linux*)
        ;;
 hppa*-*-linux*)
+       md_unwind_header=pa/linux-unwind.h
        ;;
 hppa[12]*-*-hpux10*)
+       md_unwind_header=pa/hpux-unwind.h
        ;;
 hppa*64*-*-hpux11*)
+       md_unwind_header=pa/hpux-unwind.h
        ;;
 hppa[12]*-*-hpux11*)
+       md_unwind_header=pa/hpux-unwind.h
        ;;
 i[34567]86-*-darwin*)
        ;;
@@ -270,26 +335,28 @@ i[34567]86-*-elf*)
 x86_64-*-elf*)
        ;;
 i[34567]86-*-freebsd*)
+       tmake_file="${tmake_file} i386/t-freebsd"
        ;;
 x86_64-*-freebsd*)
+       tmake_file="${tmake_file} i386/t-freebsd"
        ;;
 i[34567]86-*-netbsdelf*)
        ;;
-i[34567]86-*-netbsd*)
-       ;;
 x86_64-*-netbsd*)
        ;;
 i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123])
        ;;
 i[34567]86-*-openbsd*)
        ;;
-i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu*)
+i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
        extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
        tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm"
+       md_unwind_header=i386/linux-unwind.h
        ;;
 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
        extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
        tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm"
+       md_unwind_header=i386/linux-unwind.h
        ;;
 i[34567]86-pc-msdosdjgpp*)
        ;;
@@ -305,27 +372,24 @@ i[3456x]86-*-netware*)
 i[34567]86-*-nto-qnx*)
        ;;
 i[34567]86-*-rtems*)
+       extra_parts="crtbegin.o crtend.o crti.o crtn.o"
+       tmake_file="${tmake_file} t-crtin i386/t-softfp i386/t-crtstuff t-rtems"
        ;;
 i[34567]86-*-solaris2*)
-       tmake_file="${tmake_file} i386/t-sol2"
-       case ${host} in
-       *-*-solaris2.1[0-9]*)
-               # Solaris 2.10 provides crt1.o, crti.o, crtn.o, and gcrt1.o as
-               # part of the base system.
-               extra_parts="gmon.o crtbegin.o crtend.o"
-               ;;
-       *)
-               extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
-               ;;
-       esac
+       tmake_file="$tmake_file i386/t-crtfm"
+       extra_parts="$extra_parts crtfastmath.o"
+       md_unwind_header=i386/sol2-unwind.h
        ;;
 i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
        ;;
-i[34567]86-*-pe)
+i[34567]86-*-cygwin*)
+       extra_parts="crtbegin.o crtend.o crtfastmath.o"
+       tmake_file="i386/t-cygming i386/t-crtfm"
        ;;
-i[34567]86-*-cygwin* | i[34567]86-*-mingw*)
+i[34567]86-*-mingw*)
        extra_parts="crtbegin.o crtend.o crtfastmath.o"
        tmake_file="i386/t-cygming i386/t-crtfm"
+       md_unwind_header=i386/w32-unwind.h
        ;;
 x86_64-*-mingw*)
        ;;
@@ -336,15 +400,30 @@ ia64*-*-elf*)
        tmake_file="ia64/t-ia64"
        ;;
 ia64*-*-freebsd*)
+       extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+       tmake_file="ia64/t-ia64"
        ;;
 ia64*-*-linux*)
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
        tmake_file="ia64/t-ia64 t-softfp ia64/t-fprules-softfp ia64/t-softfp-compat"
+       md_unwind_header=ia64/linux-unwind.h
        ;;
 ia64*-*-hpux*)
        ;;
+ia64-hp-*vms*)
+       tmake_file="vms/t-vms vms/t-vms64 ia64/t-vms"
+       md_unwind_header=ia64/vms-unwind.h
+       ;;
 iq2000*-*-elf*)
         ;;
+lm32-*-elf*|lm32-*-rtems*)
+        extra_parts="crtbegin.o crtend.o crti.o crtn.o"
+        tmake_file="lm32/t-lm32 lm32/t-elf t-softfp"
+       ;;
+lm32-*-uclinux*)
+        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
+        tmake_file="lm32/t-lm32 lm32/t-uclinux t-softfp"
+       ;;      
 m32r-*-elf*|m32r-*-rtems*)
        ;;
 m32rle-*-elf*)
@@ -353,10 +432,6 @@ m32r-*-linux*)
        ;;
 m32rle-*-linux*)
        ;;
-m68hc11-*-*|m6811-*-*)
-        ;;
-m68hc12-*-*|m6812-*-*)
-        ;;
 m68k-*-elf*)
        ;;
 m68k*-*-netbsdelf*)
@@ -364,24 +439,36 @@ m68k*-*-netbsdelf*)
 m68k*-*-openbsd*)
        ;;
 m68k-*-uclinux*)               # Motorola m68k/ColdFire running uClinux with uClibc
+       md_unwind_header=m68k/linux-unwind.h
        ;;
-m68k-*-linux*)         # Motorola m68k's running GNU/Linux
+m68k-*-linux*)                 # Motorola m68k's running GNU/Linux
                                # with ELF format using glibc 2
                                # aka the GNU/Linux C library 6.
+       md_unwind_header=m68k/linux-unwind.h
        ;;
 m68k-*-rtems*)
        ;;
 mcore-*-elf)
        ;;
-mcore-*-pe*)
+microblaze*-*-*)
+        tmake_file="microblaze/t-microblaze"
        ;;
-mips-sgi-irix[56]*)
+mips-sgi-irix6.5*)
+       tmake_file="mips/t-irix6 t-crtfm t-slibgcc mips/t-slibgcc-irix"
+       extra_parts="crtbegin.o crtend.o crtfastmath.o irix-crti.o irix-crtn.o"
+       md_unwind_header=mips/irix6-unwind.h
        ;;
 mips*-*-netbsd*)                       # NetBSD/mips, either endian.
        ;;
 mips64*-*-linux*)
+       extra_parts="$extra_parts crtfastmath.o"
+       tmake_file="{$tmake_file} t-crtfm"
+       md_unwind_header=mips/linux-unwind.h
        ;;
 mips*-*-linux*)                                # Linux MIPS, either endian.
+       extra_parts="$extra_parts crtfastmath.o"
+       tmake_file="{$tmake_file} t-crtfm"
+       md_unwind_header=mips/linux-unwind.h
        ;;
 mips*-*-openbsd*)
        ;;
@@ -412,22 +499,39 @@ mips-wrs-vxworks)
 mipstx39-*-elf* | mipstx39el-*-elf*)
        ;;
 mmix-knuth-mmixware)
+       extra_parts="crti.o crtn.o crtbegin.o crtend.o"
+       tmake_file="${tmake_file} ${cpu_type}/t-${cpu_type}"
        ;;
 mn10300-*-*)
        ;;
+moxie-*-*)
+       tmake_file="moxie/t-moxie moxie/t-moxie-softfp"
+       extra_parts="crtbegin.o crtend.o crti.o crtn.o"
+       ;;
 pdp11-*-*)
        ;;
 picochip-*-*)
         ;;
 powerpc-*-darwin*)
+       case ${host} in
+       *-*-darwin9* | *-*-darwin[12][0-9]*)
+         # libSystem contains unwind information for signal frames since
+         # Darwin 9.
+         ;;
+       *)
+         md_unwind_header=rs6000/darwin-unwind.h
+         ;;
+       esac
        ;;
 powerpc64-*-darwin*)
        ;;
-powerpc*-*-freebsd*)
+powerpc-*-freebsd*)
+       tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-freebsd t-softfp"
        ;;
 powerpc-*-netbsd*)
        ;;
 powerpc-*-eabispe*)
+       tmake_file="${tmake_file} rs6000/t-ppccomm"
        ;;
 powerpc-*-eabisimaltivec*)
        ;;
@@ -438,20 +542,13 @@ powerpc-*-elf*)
 powerpc-*-eabialtivec*)
        ;;
 powerpc-*-eabi*)
+       tmake_file="${tmake_file} rs6000/t-ppccomm"
        ;;
 powerpc-*-rtems*)
        ;;
 powerpc-*-linux* | powerpc64-*-linux*)
        tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-ldbl128 t-softfp"
-       ;;
-powerpc64-*-gnu*)
-       tmake_file="${tmake_file} rs6000/t-ldbl128 t-softfp"
-       ;;
-powerpc-*-gnu-gnualtivec*)
-       tmake_file="${tmake_file} rs6000/t-ldbl128"
-       ;;
-powerpc-*-gnu*)
-       tmake_file="${tmake_file} rs6000/t-ldbl128"
+       md_unwind_header=rs6000/linux-unwind.h
        ;;
 powerpc-wrs-vxworks|powerpc-wrs-vxworksae)
        ;;
@@ -469,22 +566,32 @@ rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
        ;;
 rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*)
        ;;
+rx-*-elf)
+       extra_parts="crtbegin.o crtend.o"
+       tmake_file="rx/t-rx"
+       ;;
 s390-*-linux*)
+       tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux s390/32/t-floattodi"
+       md_unwind_header=s390/linux-unwind.h
        ;;
 s390x-*-linux*)
+       tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux"
+       md_unwind_header=s390/linux-unwind.h
        ;;
 s390x-ibm-tpf*)
+       tmake_file="${tmake_file} s390/t-crtstuff s390/t-tpf"
+       md_unwind_header=s390/tpf-unwind.h
        ;;
 score-*-elf)
         ;;
 sh-*-elf* | sh[12346l]*-*-elf* | \
-sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
   sh-*-linux* | sh[2346lbe]*-*-linux* | \
   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
    sh64-*-netbsd* | sh64l*-*-netbsd*)
        case ${host} in
        sh*-*-linux*)
                tmake_file="${tmake_file} sh/t-linux"
+               md_unwind_header=sh/linux-unwind.h
                ;;
        esac
        ;;
@@ -497,18 +604,33 @@ sparc-*-netbsdelf*)
 sparc64-*-openbsd*)
        ;;
 sparc-*-elf*)
+       case ${host} in
+       *-leon[3-9]*)
+               ;;
+       *)
+               tmake_file="sparc/t-softmul"
+               ;;
+       esac
+       tmake_file="${tmake_file} sparc/t-softfp t-crtin t-crtfm"
+       extra_parts="crtbegin.o crtend.o crti.o crtn.o crtfastmath.o"
        ;;
 sparc-*-linux*)                # SPARC's running GNU/Linux, libc6
        extra_parts="$extra_parts crtfastmath.o"
-       tmake_file="${tmake_file} sparc/t-crtfm"
+       tmake_file="${tmake_file} t-crtfm"
+       md_unwind_header=sparc/linux-unwind.h
        ;;
-sparc-*-rtems*)
+sparc-*-rtems* | sparc64-*-rtems* )
+       tmake_file="sparc/t-elf t-crtin t-crtfm t-rtems"
+       extra_parts="crtbegin.o crtend.o crti.o crtn.o crtfastmath.o"
        ;;
-sparc64-*-solaris2* | sparcv9-*-solaris2*)
-       ;;
-sparc-*-solaris2*)
+sparc*-*-solaris2*)
+       tmake_file="$tmake_file t-crtfm"
+       extra_parts="$extra_parts crtfastmath.o"
+       md_unwind_header=sparc/sol2-unwind.h
        ;;
 sparc64-*-elf*)
+       tmake_file="${tmake_file} t-crtin t-crtfm"
+       extra_parts="crtbegin.o crtend.o crti.o crtn.o crtfastmath.o"
        ;;
 sparc-wrs-vxworks)
        ;;
@@ -516,7 +638,8 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*)
        ;;
 sparc64-*-linux*)              # 64-bit SPARC's running GNU/Linux
        extra_parts="$extra_parts crtfastmath.o"
-       tmake_file="${tmake_file} sparc/t-crtfm"
+       tmake_file="${tmake_file} t-crtfm"
+       md_unwind_header=sparc/linux-unwind.h
        ;;
 sparc64-*-netbsd*)
        ;;
@@ -528,9 +651,9 @@ v850e-*-*)
        ;;
 v850-*-*)
        ;;
-vax-*-netbsdelf*)
+vax-*-linux*)
        ;;
-vax-*-netbsd*)
+vax-*-netbsdelf*)
        ;;
 vax-*-openbsd*)
        ;;
@@ -539,12 +662,15 @@ xstormy16-*-elf)
 xtensa*-*-elf*)
        ;;
 xtensa*-*-linux*)
+       md_unwind_header=xtensa/linux-unwind.h
        ;;
 am33_2.0-*-linux*)
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
        ;;
 m32c-*-elf*|m32c-*-rtems*)
        ;;
+mep*-*-*)
+       ;;
 *)
        echo "*** Configuration ${host} not supported" 1>&2
        exit 1
@@ -556,12 +682,20 @@ i[34567]86-*-linux* | x86_64-*-linux* | \
   i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | \
   i[34567]86-*-gnu*)
        tmake_file="${tmake_file} t-tls"
+       if test "$libgcc_cv_cfi" = "yes"; then
+               tmake_file="${tmake_file} t-stack i386/t-stack-i386"
+       fi
        ;;
 esac
 
 case ${host} in
 i[34567]86-*-darwin* | x86_64-*-darwin* | \
-  i[34567]86-*-linux* | x86_64-*-linux*)
+  i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
+  i[34567]86-*-linux* | x86_64-*-linux* | \
+  i[34567]86-*-gnu* | \
+  i[34567]86-*-solaris2* | \
+  i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw* | \
+  i[34567]86-*-freebsd* | x86_64-*-freebsd*)
        if test "${host_address}" = 32; then
                tmake_file="${tmake_file} t-softfp i386/${host_address}/t-fprules-softfp"
        fi