diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-05-07 14:42:29 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-05-07 14:42:29 +0000 |
commit | f9eaaae5b3f13b5202f00f34ed30f18d027ad582 (patch) | |
tree | 3e58cb5ef7301565e15c3a381db3d791e5bb8bf6 /gcc/config | |
parent | c1c8d456c2890fc4fb0d8e3101c0f3671e6dc5c9 (diff) | |
download | gcc-f9eaaae5b3f13b5202f00f34ed30f18d027ad582.tar.gz |
* config/rs6000/sysv4.h (SUBTARGET_SWITCHES): Add -mwindiss.
(LINK_START_SPEC): Handle it.
(LINK_OS_SPEC): Likewise.
(CPP_SPEC): Likewise.
(STARTFILE_SPEC): Likewise.
(LIB_SPEC): Likewise.
(ENDFILE_SPEC): Likewise. Do not assume crtsavres.o is used on
all platforms.
(CRTSAVRES_DEFAULT_SPEC): New macro.
(LIB_WINDISS_SPEC): New macro.
(CPP_OS_WINDISS_SPEC): Likewise.
(STARTFILE_WINDISS_SPEC): Likewise.
(ENDFILE_WINDISS_SPEC): Likewise.
(LINK_START_WINDISS_SPEC): Likewise.
(LINK_OS_WINDISS_SPEC): Likewise.
* config/rs6000/windiss.h: New file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53257 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/rs6000/sysv4.h | 81 | ||||
-rw-r--r-- | gcc/config/rs6000/windiss.h | 49 |
2 files changed, 113 insertions, 17 deletions
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index 95c7e8b9ade..cf0c6682ce8 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -152,6 +152,7 @@ extern int g_switch_set; /* Whether -G xx was passed. */ { "emb", 0, \ N_("Set the PPC_EMB bit in the ELF flags header") }, \ { "vxworks", 0, N_("no description yet") }, \ + { "windiss", 0, N_("Use the WindISS simulator") }, \ { "shlib", 0, N_("no description yet") }, \ EXTRA_SUBTARGET_SWITCHES \ { "newlib", 0, N_("no description yet") }, @@ -943,12 +944,14 @@ do { \ %{myellowknife: %(link_start_yellowknife) } \ %{mmvme: %(link_start_mvme) } \ %{msim: %(link_start_sim) } \ +%{mwindiss: %(link_start_windiss) } \ %{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-gnu: \ - %{!mcall-netbsd: %{!mcall-freebsd: %(link_start_default) }}}}}}}}" +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: \ + %{!mcall-freebsd: %(link_start_default) }}}}}}}}}" #define LINK_START_DEFAULT_SPEC "" @@ -1000,11 +1003,14 @@ do { \ %{myellowknife: %(link_os_yellowknife) } \ %{mmvme: %(link_os_mvme) } \ %{msim: %(link_os_sim) } \ +%{mwindiss: %(link_os_windiss) } \ %{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-gnu: %{!mcall-netbsd: %(link_os_default) }}}}}}}}" +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ + %{!mcall-netbsd: %(link_os_default) }}}}}}}}}" #define LINK_OS_DEFAULT_SPEC "" @@ -1064,11 +1070,14 @@ do { \ %{myellowknife: %(cpp_os_yellowknife) } \ %{mmvme: %(cpp_os_mvme) } \ %{msim: %(cpp_os_sim) } \ +%{mwindiss: %(cpp_os_windiss) } \ %{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-gnu: %{!mcall-netbsd: %(cpp_os_default) }}}}}}}}" +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ + %{!mcall-netbsd: %(cpp_os_default) }}}}}}}}}" #define CPP_OS_DEFAULT_SPEC "" @@ -1079,11 +1088,14 @@ do { \ %{myellowknife: %(startfile_yellowknife) } \ %{mmvme: %(startfile_mvme) } \ %{msim: %(startfile_sim) } \ +%{mwindiss: %(startfile_windiss) } \ %{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-gnu: %{!mcall-netbsd: %(startfile_default) }}}}}}}}" +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ + %{!mcall-netbsd: %(startfile_default) }}}}}}}}}" #define STARTFILE_DEFAULT_SPEC "" @@ -1094,27 +1106,36 @@ do { \ %{myellowknife: %(lib_yellowknife) } \ %{mmvme: %(lib_mvme) } \ %{msim: %(lib_sim) } \ +%{mwindiss: %(lib_windiss) } \ %{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-gnu: %{!mcall-netbsd: %(lib_default) }}}}}}}}" +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ + %{!mcall-netbsd: %(lib_default) }}}}}}}}}" #define LIB_DEFAULT_SPEC "" /* Override svr4.h definition. */ #undef ENDFILE_SPEC -#define ENDFILE_SPEC "crtsavres.o%s \ -%{mads: %(endfile_ads)} \ -%{myellowknife: %(endfile_yellowknife)} \ -%{mmvme: %(endfile_mvme)} \ -%{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-gnu: %{!mcall-netbsd: %{!mvxworks: %(endfile_default) }}}}}}}}}" +#define ENDFILE_SPEC "\ +%{mads: crtsavres.o%s %(endfile_ads)} \ +%{myellowknife: crtsavres.o%s %(endfile_yellowknife)} \ +%{mmvme: crtsavres.o%s %(endfile_mvme)} \ +%{msim: crtsavres.o%s %(endfile_sim)} \ +%{mwindiss: %(endfile_windiss)} \ +%{mcall-freebsd: crtsavres.o%s %(endfile_freebsd) } \ +%{mcall-linux: crtsavres.o%s %(endfile_linux) } \ +%{mcall-gnu: crtsavres.o%s %(endfile_gnu) } \ +%{mcall-netbsd: crtsavres.o%s %(endfile_netbsd) } \ +%{mvxworks: crtsavres.o%s %(endfile_vxworks) } \ +%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ + %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ + %{!mcall-netbsd: %{!mvxworks: %(crtsavres_default) \ + %(endfile_default) }}}}}}}}}}" + +#define CRTSAVRES_DEFAULT_SPEC "crtsavres.o%s" #define ENDFILE_DEFAULT_SPEC "" @@ -1326,6 +1347,25 @@ ncrtn.o%s" %{mcpu=823: -DCPU=PPC603} \ %{mcpu=860: -DCPU=PPC603}" +/* WindISS support. */ + +#define LIB_WINDISS_SPEC "--start-group -li -lcfp -lwindiss -lram -limpl -limpfp --end-group" + +#define CPP_OS_WINDISS_SPEC "\ +-D__rtasim \ +-D__EABI__ \ +-D__ppc \ +%{!msoft-float: -D__hardfp} \ +" + +#define STARTFILE_WINDISS_SPEC "crt0.o%s crtbegin.o%s" + +#define ENDFILE_WINDISS_SPEC "crtend.o%s" + +#define LINK_START_WINDISS_SPEC "" + +#define LINK_OS_WINDISS_SPEC "" + /* Define any extra SPECS that the compiler needs to generate. */ /* Override rs6000.h definition. */ #undef SUBTARGET_EXTRA_SPECS @@ -1334,6 +1374,7 @@ ncrtn.o%s" { "cpp_sysv_default", CPP_SYSV_DEFAULT_SPEC }, \ { "cpp_endian_default", CPP_ENDIAN_DEFAULT_SPEC }, \ { "cpp_endian", CPP_ENDIAN_SPEC }, \ + { "crtsavres_default", CRTSAVRES_DEFAULT_SPEC }, \ { "lib_ads", LIB_ADS_SPEC }, \ { "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \ { "lib_mvme", LIB_MVME_SPEC }, \ @@ -1343,6 +1384,7 @@ ncrtn.o%s" { "lib_linux", LIB_LINUX_SPEC }, \ { "lib_netbsd", LIB_NETBSD_SPEC }, \ { "lib_vxworks", LIB_VXWORKS_SPEC }, \ + { "lib_windiss", LIB_WINDISS_SPEC }, \ { "lib_default", LIB_DEFAULT_SPEC }, \ { "startfile_ads", STARTFILE_ADS_SPEC }, \ { "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \ @@ -1353,6 +1395,7 @@ ncrtn.o%s" { "startfile_linux", STARTFILE_LINUX_SPEC }, \ { "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \ { "startfile_vxworks", STARTFILE_VXWORKS_SPEC }, \ + { "startfile_windiss", STARTFILE_WINDISS_SPEC }, \ { "startfile_default", STARTFILE_DEFAULT_SPEC }, \ { "endfile_ads", ENDFILE_ADS_SPEC }, \ { "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \ @@ -1363,6 +1406,7 @@ ncrtn.o%s" { "endfile_linux", ENDFILE_LINUX_SPEC }, \ { "endfile_netbsd", ENDFILE_NETBSD_SPEC }, \ { "endfile_vxworks", ENDFILE_VXWORKS_SPEC }, \ + { "endfile_windiss", ENDFILE_WINDISS_SPEC }, \ { "endfile_default", ENDFILE_DEFAULT_SPEC }, \ { "link_path", LINK_PATH_SPEC }, \ { "link_shlib", LINK_SHLIB_SPEC }, \ @@ -1377,6 +1421,7 @@ ncrtn.o%s" { "link_start_linux", LINK_START_LINUX_SPEC }, \ { "link_start_netbsd", LINK_START_NETBSD_SPEC }, \ { "link_start_vxworks", LINK_START_VXWORKS_SPEC }, \ + { "link_start_windiss", LINK_START_WINDISS_SPEC }, \ { "link_start_default", LINK_START_DEFAULT_SPEC }, \ { "link_os", LINK_OS_SPEC }, \ { "link_os_ads", LINK_OS_ADS_SPEC }, \ @@ -1388,6 +1433,7 @@ ncrtn.o%s" { "link_os_gnu", LINK_OS_GNU_SPEC }, \ { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ { "link_os_vxworks", LINK_OS_VXWORKS_SPEC }, \ + { "link_os_windiss", LINK_OS_WINDISS_SPEC }, \ { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ { "cc1_endian_big", CC1_ENDIAN_BIG_SPEC }, \ { "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \ @@ -1405,6 +1451,7 @@ ncrtn.o%s" { "cpp_os_linux", CPP_OS_LINUX_SPEC }, \ { "cpp_os_netbsd", CPP_OS_NETBSD_SPEC }, \ { "cpp_os_vxworks", CPP_OS_VXWORKS_SPEC }, \ + { "cpp_os_windiss", CPP_OS_WINDISS_SPEC }, \ { "cpp_os_default", CPP_OS_DEFAULT_SPEC }, /* Define this macro as a C expression for the initializer of an diff --git a/gcc/config/rs6000/windiss.h b/gcc/config/rs6000/windiss.h new file mode 100644 index 00000000000..32f925aba35 --- /dev/null +++ b/gcc/config/rs6000/windiss.h @@ -0,0 +1,49 @@ +/* Support for GCC on PowerPC using WindISS simulator. + Copyright (C) 2002 Free Software Foundation, Inc. + Contributed by CodeSourcery, LLC. + +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 TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (PowerPC WindISS)"); + +#undef LIB_DEFAULT_SPEC +#define LIB_DEFAULT_SPEC "%(lib_windiss)" + +#undef STARTFILE_DEFAULT_SPEC +#define STARTFILE_DEFAULT_SPEC "%(startfile_windiss)" + +#undef ENDFILE_DEFAULT_SPEC +#define ENDFILE_DEFAULT_SPEC "%(endfile_windiss)" + +#undef LINK_START_DEFAULT_SPEC +#define LINK_START_DEFAULT_SPEC "%(link_start_windiss)" + +#undef LINK_OS_DEFAULT_SPEC +#define LINK_OS_DEFAULT_SPEC "%(link_os_windiss)" + +#undef CRTSAVRES_DEFAULT_SPEC +#define CRTSAVRES_DEFAULT_SPEC "" + +#undef WCHAR_TYPE +#define WCHAR_TYPE "short unsigned int" + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 16 + +#define NO_IMPLICIT_EXTERN_C |