This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATCH: WindISS support for RS6000
- From: Mark Mitchell <mark at codesourcery dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 07 May 2002 07:39:59 -0700
- Subject: PATCH: WindISS support for RS6000
Here's the version of the WindISS patch I checked in, after tweaking things
so as to avoid having to make the change to the FreeBSD spec, and
the correction to the spelling of crtsavres.o.
Tested with a cross compiler to powerpc-eabisim
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com
2002-05-07 Mark Mitchell <mark@codesourcery.com>
* 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.
Index: sysv4.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/sysv4.h,v
retrieving revision 1.90
diff -c -p -r1.90 sysv4.h
*** sysv4.h 15 Apr 2002 20:35:22 -0000 1.90
--- sysv4.h 7 May 2002 14:39:06 -0000
*************** extern int g_switch_set; /* Whether -G
*** 152,157 ****
--- 152,158 ----
{ "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") },
*************** do { \
*** 943,954 ****
%{myellowknife: %(link_start_yellowknife) } \
%{mmvme: %(link_start_mvme) } \
%{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-gnu: \
! %{!mcall-netbsd: %{!mcall-freebsd: %(link_start_default) }}}}}}}}"
#define LINK_START_DEFAULT_SPEC ""
--- 944,957 ----
%{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: %{!mwindiss: \
! %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: \
! %{!mcall-freebsd: %(link_start_default) }}}}}}}}}"
#define LINK_START_DEFAULT_SPEC ""
*************** do { \
*** 1000,1010 ****
%{myellowknife: %(link_os_yellowknife) } \
%{mmvme: %(link_os_mvme) } \
%{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-gnu: %{!mcall-netbsd: %(link_os_default) }}}}}}}}"
#define LINK_OS_DEFAULT_SPEC ""
--- 1003,1016 ----
%{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: %{!mwindiss: \
! %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \
! %{!mcall-netbsd: %(link_os_default) }}}}}}}}}"
#define LINK_OS_DEFAULT_SPEC ""
*************** do { \
*** 1064,1074 ****
%{myellowknife: %(cpp_os_yellowknife) } \
%{mmvme: %(cpp_os_mvme) } \
%{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-gnu: %{!mcall-netbsd: %(cpp_os_default) }}}}}}}}"
#define CPP_OS_DEFAULT_SPEC ""
--- 1070,1083 ----
%{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: %{!mwindiss: \
! %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \
! %{!mcall-netbsd: %(cpp_os_default) }}}}}}}}}"
#define CPP_OS_DEFAULT_SPEC ""
*************** do { \
*** 1079,1089 ****
%{myellowknife: %(startfile_yellowknife) } \
%{mmvme: %(startfile_mvme) } \
%{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-gnu: %{!mcall-netbsd: %(startfile_default)
}}}}}}}}"
#define STARTFILE_DEFAULT_SPEC ""
--- 1088,1101 ----
%{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: %{!mwindiss: \
! %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \
! %{!mcall-netbsd: %(startfile_default) }}}}}}}}}"
#define STARTFILE_DEFAULT_SPEC ""
*************** do { \
*** 1094,1120 ****
%{myellowknife: %(lib_yellowknife) } \
%{mmvme: %(lib_mvme) } \
%{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-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_DEFAULT_SPEC ""
--- 1106,1141 ----
%{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: %{!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 "\
! %{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 ""
*************** ncrtn.o%s"
*** 1326,1331 ****
--- 1347,1371 ----
%{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
*************** ncrtn.o%s"
*** 1334,1339 ****
--- 1374,1380 ----
{ "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 }, \
*************** ncrtn.o%s"
*** 1343,1348 ****
--- 1384,1390 ----
{ "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 }, \
*************** ncrtn.o%s"
*** 1353,1358 ****
--- 1395,1401 ----
{ "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 }, \
*************** ncrtn.o%s"
*** 1363,1368 ****
--- 1406,1412 ----
{ "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 }, \
*************** ncrtn.o%s"
*** 1377,1382 ****
--- 1421,1427 ----
{ "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 }, \
*************** ncrtn.o%s"
*** 1388,1393 ****
--- 1433,1439 ----
{ "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 }, \
*************** ncrtn.o%s"
*** 1405,1410 ****
--- 1451,1457 ----
{ "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
Index: windiss.h
===================================================================
RCS file: windiss.h
diff -N windiss.h
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- windiss.h 7 May 2002 14:39:06 -0000
***************
*** 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