config.gcc (powerpc-*-gnu-gnualtivec*, [...]): New configurations.
authorRoland McGrath <roland@frob.com>
Sun, 17 Feb 2002 23:06:55 +0000 (23:06 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Sun, 17 Feb 2002 23:06:55 +0000 (18:06 -0500)
2002-01-21  Roland McGrath  <roland@frob.com>

        * config.gcc (powerpc-*-gnu-gnualtivec*,
        powerpc-*-gnu*, powerpc64-*-gnu*): New configurations.
        * config/rs6000/gnu.h: New file.
        * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS):
        Grok "gnu" in rs6000_abi_name.
        (ASM_SPEC, CC1_SPEC, LINK_START_SPEC, LINK_OS_SPEC,
        CPP_ENDIAN_SPEC, CPP_SPEC, STARTFILE_SPEC, LIB_SPEC, ENDFILE_SPEC):
        Grok -mcall-gnu analogous to -mcall-linux et al.
        (LIB_GNU_SPEC, STARTFILE_GNU_SPEC, ENDFILE_GNU_SPEC,
        LINK_START_GNU_SPEC, LINK_OS_GNU_SPEC, CPP_OS_GNU_SPEC): New macros.
        (SUBTARGET_EXTRA_SPECS): Add *_os_gnu specs using them.

From-SVN: r49826

gcc/ChangeLog
gcc/config.gcc
gcc/config/rs6000/gnu.h [new file with mode: 0644]
gcc/config/rs6000/sysv4.h

index 700f7a4..dfaf6bc 100644 (file)
@@ -1,3 +1,17 @@
+2002-02-17  Roland McGrath  <roland@frob.com>
+
+       * config.gcc (powerpc-*-gnu-gnualtivec*,
+       powerpc-*-gnu*, powerpc64-*-gnu*): New configurations.
+       * config/rs6000/gnu.h: New file.
+       * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS):
+       Grok "gnu" in rs6000_abi_name.
+       (ASM_SPEC, CC1_SPEC, LINK_START_SPEC, LINK_OS_SPEC,
+       CPP_ENDIAN_SPEC, CPP_SPEC, STARTFILE_SPEC, LIB_SPEC, ENDFILE_SPEC):
+       Grok -mcall-gnu analogous to -mcall-linux et al.
+       (LIB_GNU_SPEC, STARTFILE_GNU_SPEC, ENDFILE_GNU_SPEC,
+       LINK_START_GNU_SPEC, LINK_OS_GNU_SPEC, CPP_OS_GNU_SPEC): New macros.
+       (SUBTARGET_EXTRA_SPECS): Add *_os_gnu specs using them.
+
 2002-02-17  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/3444:
index 9408bb0..8a125c4 100644 (file)
@@ -2679,6 +2679,11 @@ powerpc64-*-linux*)
        out_file=rs6000/rs6000.c
        tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
        ;;
+powerpc64-*-gnu*)
+       tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux64.h rs6000/gnu.h"
+       out_file=rs6000/rs6000.c
+       tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
+       ;;
 powerpc-*-beos*)
        tm_file="${tm_file} rs6000/aix.h rs6000/beos.h rs6000/xcoff.h"
        xm_defines=POSIX
@@ -2783,6 +2788,22 @@ powerpc-*-linux*)
                thread_file='posix'
        fi
        ;;
+powerpc-*-gnu-gnualtivec*)
+       tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h rs6000/gnu.h"
+       out_file=rs6000/rs6000.c
+       tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
+       if test x$enable_threads = xyes; then
+               thread_file='posix'
+       fi
+       ;;
+powerpc-*-gnu*)
+       tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/gnu.h"
+       out_file=rs6000/rs6000.c
+       tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
+       if test x$enable_threads = xyes; then
+               thread_file='posix'
+       fi
+       ;;
 powerpc-wrs-vxworks*)
        xm_defines=POSIX
         tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/vxppc.h"
diff --git a/gcc/config/rs6000/gnu.h b/gcc/config/rs6000/gnu.h
new file mode 100644 (file)
index 0000000..32bd906
--- /dev/null
@@ -0,0 +1,38 @@
+/* Definitions of target machine for GNU compiler,
+   for powerpc machines running GNU.
+   Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING.  If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#undef CPP_OS_DEFAULT_SPEC
+#define CPP_OS_DEFAULT_SPEC "%(cpp_os_gnu)"
+
+#undef STARTFILE_DEFAULT_SPEC
+#define STARTFILE_DEFAULT_SPEC "%(startfile_gnu)"
+
+#undef ENDFILE_DEFAULT_SPEC
+#define ENDFILE_DEFAULT_SPEC "%(endfile_gnu)"
+
+#undef LINK_START_DEFAULT_SPEC
+#define LINK_START_DEFAULT_SPEC "%(link_start_gnu)"
+
+#undef LINK_OS_DEFAULT_SPEC
+#define LINK_OS_DEFAULT_SPEC "%(link_os_gnu)"
+
+#undef TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (PowerPC GNU)");
index 5b0befe..a9a2b05 100644 (file)
@@ -197,6 +197,8 @@ do {                                                                        \
     rs6000_current_abi = ABI_V4;                                       \
   else if (!strcmp (rs6000_abi_name, "linux"))                         \
     rs6000_current_abi = ABI_V4;                                       \
+  else if (!strcmp (rs6000_abi_name, "gnu"))                           \
+    rs6000_current_abi = ABI_V4;                                       \
   else if (!strcmp (rs6000_abi_name, "netbsd"))                                \
     rs6000_current_abi = ABI_V4;                                       \
   else if (!strcmp (rs6000_abi_name, "i960-old"))                      \
@@ -878,6 +880,7 @@ do {                                                \
     %{mcall-freebsd: -mbig} \
     %{mcall-i960-old: -mlittle} \
     %{mcall-linux: -mbig} \
+    %{mcall-gnu: -mbig} \
     %{mcall-netbsd: -mbig} \
 }}}}"
 
@@ -901,10 +904,11 @@ do {                                              \
     %{mcall-freebsd: -mbig %(cc1_endian_big) } \
     %{mcall-i960-old: -mlittle %(cc1_endian_little) } \
     %{mcall-linux: -mbig %(cc1_endian_big) } \
+    %{mcall-gnu: -mbig %(cc1_endian_big) } \
     %{mcall-netbsd: -mbig %(cc1_endian_big) } \
-    %{!mcall-aixdesc: %{!mcall-freebsd: %{!mcall-i960-old: %{!mcall-linux: %{!mcall-netbsd: \
+    %{!mcall-aixdesc: %{!mcall-freebsd: %{!mcall-i960-old: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: \
            %(cc1_endian_default) \
-    }}}}} \
+    }}}}}} \
 }}}} \
 %{mno-sdata: -msdata=none } \
 %{meabi: %{!mcall-*: -mcall-sysv }} \
@@ -913,6 +917,7 @@ do {                                                \
     %{mcall-freebsd: -mno-eabi } \
     %{mcall-i960-old: -meabi } \
     %{mcall-linux: -mno-eabi } \
+    %{mcall-gnu: -mno-eabi } \
     %{mcall-netbsd: -mno-eabi }}} \
 %{msdata: -msdata=default} \
 %{mno-sdata: -msdata=none} \
@@ -943,9 +948,10 @@ do {                                               \
 %{msim: %(link_start_sim) } \
 %{mcall-freebsd: %(link_start_freebsd) } \
 %{mcall-linux: %(link_start_linux) } \
+%{mcall-gnu: %(link_start_gnu) } \
 %{mcall-netbsd: %(link_start_netbsd) } \
-%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: \
-       %{!mcall-netbsd: %{!mcall-freebsd: %(link_start_default) }}}}}}}"
+%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-gnu: \
+       %{!mcall-netbsd: %{!mcall-freebsd: %(link_start_default) }}}}}}}}"
 
 #define LINK_START_DEFAULT_SPEC ""
 
@@ -999,8 +1005,9 @@ do {                                               \
 %{msim: %(link_os_sim) } \
 %{mcall-freebsd: %(link_os_freebsd) } \
 %{mcall-linux: %(link_os_linux) } \
+%{mcall-gnu: %(link_os_gnu) } \
 %{mcall-netbsd: %(link_os_netbsd) } \
-%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %(link_os_default) }}}}}}}"
+%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(link_os_default) }}}}}}}}"
 
 #define LINK_OS_DEFAULT_SPEC ""
 
@@ -1045,10 +1052,11 @@ do {                                            \
 %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
     %{mcall-freebsd: %(cpp_endian_big) } \
     %{mcall-linux: %(cpp_endian_big) } \
+    %{mcall-gnu: %(cpp_endian_big) } \
     %{mcall-netbsd: %(cpp_endian_big) } \
     %{mcall-i960-old: %(cpp_endian_little) } \
     %{mcall-aixdesc:  %(cpp_endian_big) } \
-    %{!mcall-linux: %{!mcall-freebsd: %{!mcall-netbsd: %{!mcall-aixdesc: %(cpp_endian_default) }}}}}}}}"
+    %{!mcall-linux: %{!mcall-gnu: %{!mcall-freebsd: %{!mcall-netbsd: %{!mcall-aixdesc: %(cpp_endian_default) }}}}}}}}}"
 
 #define        CPP_ENDIAN_DEFAULT_SPEC "%(cpp_endian_big)"
 
@@ -1061,8 +1069,9 @@ do {                                              \
 %{msim: %(cpp_os_sim) } \
 %{mcall-freebsd: %(cpp_os_freebsd) } \
 %{mcall-linux: %(cpp_os_linux) } \
+%{mcall-gnu: %(cpp_os_gnu) } \
 %{mcall-netbsd: %(cpp_os_netbsd) } \
-%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %(cpp_os_default) }}}}}}}"
+%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(cpp_os_default) }}}}}}}}"
 
 #define        CPP_OS_DEFAULT_SPEC ""
 
@@ -1075,8 +1084,9 @@ do {                                              \
 %{msim: %(startfile_sim) } \
 %{mcall-freebsd: %(startfile_freebsd) } \
 %{mcall-linux: %(startfile_linux) } \
+%{mcall-gnu: %(startfile_gnu) } \
 %{mcall-netbsd: %(startfile_netbsd) } \
-%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %(startfile_default) }}}}}}}"
+%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(startfile_default) }}}}}}}}"
 
 #define        STARTFILE_DEFAULT_SPEC ""
 
@@ -1089,8 +1099,9 @@ do {                                              \
 %{msim: %(lib_sim) } \
 %{mcall-freebsd: %(lib_freebsd) } \
 %{mcall-linux: %(lib_linux) } \
+%{mcall-gnu: %(lib_gnu) } \
 %{mcall-netbsd: %(lib_netbsd) } \
-%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %(lib_default) }}}}}}}"
+%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(lib_default) }}}}}}}}"
 
 #define LIB_DEFAULT_SPEC ""
 
@@ -1103,9 +1114,10 @@ do {                                             \
 %{msim: %(endfile_sim)} \
 %{mcall-freebsd: %(endfile_freebsd) } \
 %{mcall-linux: %(endfile_linux) } \
+%{mcall-gnu: %(endfile_gnu) } \
 %{mcall-netbsd: %(endfile_netbsd) } \
 %{mvxworks: %(endfile_vxworks) } \
-%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-netbsd: %{!mvxworks: %(endfile_default) }}}}}}}}"
+%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %{!mvxworks: %(endfile_default) }}}}}}}}}"
 
 #define        ENDFILE_DEFAULT_SPEC ""
 
@@ -1215,6 +1227,31 @@ do {                                             \
 -Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT}"
 #endif
 
+/* GNU/Hurd support.  */
+#define LIB_GNU_SPEC "%{mnewlib: --start-group -lgnu -lc --end-group } \
+%{!mnewlib: %{shared:-lc} %{!shared: %{pthread:-lpthread } \
+%{profile:-lc_p} %{!profile:-lc}}}"
+
+#define        STARTFILE_GNU_SPEC "\
+%{!shared: %{!static: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}} \
+%{static: %{pg:gcrt0.o%s} %{!pg:%{p:gcrt0.o%s} %{!p:crt0.o%s}}} \
+%{mnewlib: ecrti.o%s} %{!mnewlib: crti.o%s} \
+%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
+
+#define        ENDFILE_GNU_SPEC "%{!shared:crtend.o%s} %{shared:crtendS.o%s} \
+%{mnewlib: ecrtn.o%s} %{!mnewlib: crtn.o%s}"
+
+#define LINK_START_GNU_SPEC ""
+
+#define LINK_OS_GNU_SPEC "-m elf32ppclinux %{!shared: %{!static: \
+  %{rdynamic:-export-dynamic} \
+  %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
+
+#define CPP_OS_GNU_SPEC "-D__unix__ -D__GNU__  \
+%{!undef:                                      \
+  %{!ansi: -Dunix -D__unix}}                   \
+-Asystem=gnu -Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT}"
+
 /* NetBSD support.  */
 #define LIB_NETBSD_SPEC "\
 %{profile:-lgmon -lc_p} %{!profile:-lc}"
@@ -1293,6 +1330,7 @@ ncrtn.o%s"
   { "lib_mvme",                        LIB_MVME_SPEC },                        \
   { "lib_sim",                 LIB_SIM_SPEC },                         \
   { "lib_freebsd",             LIB_FREEBSD_SPEC },                     \
+  { "lib_gnu",                 LIB_GNU_SPEC },                         \
   { "lib_linux",               LIB_LINUX_SPEC },                       \
   { "lib_netbsd",              LIB_NETBSD_SPEC },                      \
   { "lib_vxworks",             LIB_VXWORKS_SPEC },                     \
@@ -1302,6 +1340,7 @@ ncrtn.o%s"
   { "startfile_mvme",          STARTFILE_MVME_SPEC },                  \
   { "startfile_sim",           STARTFILE_SIM_SPEC },                   \
   { "startfile_freebsd",       STARTFILE_FREEBSD_SPEC },               \
+  { "startfile_gnu",           STARTFILE_GNU_SPEC },                   \
   { "startfile_linux",         STARTFILE_LINUX_SPEC },                 \
   { "startfile_netbsd",                STARTFILE_NETBSD_SPEC },                \
   { "startfile_vxworks",       STARTFILE_VXWORKS_SPEC },               \
@@ -1311,6 +1350,7 @@ ncrtn.o%s"
   { "endfile_mvme",            ENDFILE_MVME_SPEC },                    \
   { "endfile_sim",             ENDFILE_SIM_SPEC },                     \
   { "endfile_freebsd",         ENDFILE_FREEBSD_SPEC },                 \
+  { "endfile_gnu",             ENDFILE_GNU_SPEC },                     \
   { "endfile_linux",           ENDFILE_LINUX_SPEC },                   \
   { "endfile_netbsd",          ENDFILE_NETBSD_SPEC },                  \
   { "endfile_vxworks",         ENDFILE_VXWORKS_SPEC },                 \
@@ -1324,6 +1364,7 @@ ncrtn.o%s"
   { "link_start_mvme",         LINK_START_MVME_SPEC },                 \
   { "link_start_sim",          LINK_START_SIM_SPEC },                  \
   { "link_start_freebsd",      LINK_START_FREEBSD_SPEC },              \
+  { "link_start_gnu",          LINK_START_GNU_SPEC },                  \
   { "link_start_linux",                LINK_START_LINUX_SPEC },                \
   { "link_start_netbsd",       LINK_START_NETBSD_SPEC },               \
   { "link_start_vxworks",      LINK_START_VXWORKS_SPEC },              \
@@ -1335,6 +1376,7 @@ ncrtn.o%s"
   { "link_os_sim",             LINK_OS_SIM_SPEC },                     \
   { "link_os_freebsd",         LINK_OS_FREEBSD_SPEC },                 \
   { "link_os_linux",           LINK_OS_LINUX_SPEC },                   \
+  { "link_os_gnu",             LINK_OS_GNU_SPEC },                     \
   { "link_os_netbsd",          LINK_OS_NETBSD_SPEC },                  \
   { "link_os_vxworks",         LINK_OS_VXWORKS_SPEC },                 \
   { "link_os_default",         LINK_OS_DEFAULT_SPEC },                 \
@@ -1350,6 +1392,7 @@ ncrtn.o%s"
   { "cpp_os_mvme",             CPP_OS_MVME_SPEC },                     \
   { "cpp_os_sim",              CPP_OS_SIM_SPEC },                      \
   { "cpp_os_freebsd",          CPP_OS_FREEBSD_SPEC },                  \
+  { "cpp_os_gnu",              CPP_OS_GNU_SPEC },                      \
   { "cpp_os_linux",            CPP_OS_LINUX_SPEC },                    \
   { "cpp_os_netbsd",           CPP_OS_NETBSD_SPEC },                   \
   { "cpp_os_vxworks",          CPP_OS_VXWORKS_SPEC },                  \