From 55047c9d1a0c3278720f91d54f8b70e9e04e0a25 Mon Sep 17 00:00:00 2001 From: Phil Edwards Date: Thu, 23 Oct 2003 05:16:56 +0000 Subject: [PATCH] config.gcc: Update *-*-vxworks* generic hook and comments. 2003-10-22 Phil Edwards * config.gcc: Update *-*-vxworks* generic hook and comments. (arm-wrs-vxworks, i[4567]86-wrs-vxworks, mips-wrs-vxworks, mips-wrs-windiss, sh-wrs-vxworks): New stanzas. * genmultilib: Allow the MULTILIB_OSDIRNAMES to be mapped directly. * config/svr4.h (SWITCH_TAKES_ARG): Undefine it before redefining it. * config/windiss.h: New file. * config/arm/t-vxworks: New file. * config/arm/vxworks.h: New file. * config/i386/t-vxworks: New file. * config/i386/vxworks.h: New file. * config/mips/t-vxworks: New file. * config/mips/vxworks.h: New file. * config/mips/windiss.h: New file. * config/sh/t-vxworks: New file. * config/sh/vxworks.h: New file. From-SVN: r72834 --- gcc/ChangeLog | 18 +++++++ gcc/config.gcc | 35 ++++++++++++- gcc/config/arm/t-vxworks | 10 ++++ gcc/config/arm/vxworks.h | 95 +++++++++++++++++++++++++++++++++++ gcc/config/i386/t-vxworks | 8 +++ gcc/config/i386/vxworks.h | 74 +++++++++++++++++++++++++++ gcc/config/mips/t-vxworks | 16 ++++++ gcc/config/mips/vxworks.h | 79 +++++++++++++++++++++++++++++ gcc/config/mips/windiss.h | 103 ++++++++++++++++++++++++++++++++++++++ gcc/config/sh/t-vxworks | 11 ++++ gcc/config/sh/vxworks.h | 50 ++++++++++++++++++ gcc/config/svr4.h | 1 + gcc/config/windiss.h | 38 ++++++++++++++ gcc/genmultilib | 68 ++++++++++++++++++------- 14 files changed, 586 insertions(+), 20 deletions(-) create mode 100644 gcc/config/arm/t-vxworks create mode 100644 gcc/config/arm/vxworks.h create mode 100644 gcc/config/i386/t-vxworks create mode 100644 gcc/config/i386/vxworks.h create mode 100644 gcc/config/mips/t-vxworks create mode 100644 gcc/config/mips/vxworks.h create mode 100644 gcc/config/mips/windiss.h create mode 100644 gcc/config/sh/t-vxworks create mode 100644 gcc/config/sh/vxworks.h create mode 100644 gcc/config/windiss.h diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4786bebd57c1..e4459ae1cd81 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2003-10-22 Phil Edwards + + * config.gcc: Update *-*-vxworks* generic hook and comments. + (arm-wrs-vxworks, i[4567]86-wrs-vxworks, mips-wrs-vxworks, + mips-wrs-windiss, sh-wrs-vxworks): New stanzas. + * genmultilib: Allow the MULTILIB_OSDIRNAMES to be mapped directly. + * config/svr4.h (SWITCH_TAKES_ARG): Undefine it before redefining it. + * config/windiss.h: New file. + * config/arm/t-vxworks: New file. + * config/arm/vxworks.h: New file. + * config/i386/t-vxworks: New file. + * config/i386/vxworks.h: New file. + * config/mips/t-vxworks: New file. + * config/mips/vxworks.h: New file. + * config/mips/windiss.h: New file. + * config/sh/t-vxworks: New file. + * config/sh/vxworks.h: New file. + 2003-10-22 Kazu Hirata * config/h8300/h8300.c (h8300_output_function_epilogue): Remove. diff --git a/gcc/config.gcc b/gcc/config.gcc index 1446f1197126..5249689ab17e 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -506,8 +506,13 @@ case ${target} in *-*-vxworks*) tmake_file=t-vxworks tm_file="${tm_file} elfos.h svr4.h vxworks.h" - thread_file='vxworks' + case ${enable_threads} in + no) ;; + "" | yes | vxworks) thread_file='vxworks' ;; + *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;; + esac use_collect2=yes + xm_defines=POSIX ;; esac @@ -619,6 +624,10 @@ arm-semi-aof | armel-semi-aof) tm_file="arm/semiaof.h arm/aof.h arm/arm.h" tmake_file=arm/t-semi ;; +arm-wrs-vxworks) + tm_file="dbxelf.h elfos.h svr4.h vxworks.h arm/elf.h arm/aout.h arm/arm.h arm/vxworks.h" + tmake_file="${tmake_file} arm/t-vxworks" + ;; arm*-*-freebsd*|strongarm*-*-freebsd*) tm_file="dbxelf.h elfos.h ${fbsd_tm_file} arm/elf.h arm/aout.h arm/freebsd.h arm/arm.h" tmake_file="${tmake_file} arm/t-strongarm-elf" @@ -1102,6 +1111,10 @@ i386-*-vsta) # Intel 80386's running VSTa kernel tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/vsta.h" use_fixproto=yes ;; +i[4567]86-wrs-vxworks) + tm_file="${tm_file} i386/sysv4.h i386/unix.h i386/vxworks.h" + tmake_file="${tmake_file} i386/t-vxworks" + ;; i[34567]86-*-pe | i[34567]86-*-cygwin*) tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h" xm_file=i386/xm-cygwin.h @@ -1564,6 +1577,20 @@ mips*-*-rtems*) tm_file="${tm_file} mips/elf.h mips/rtems.h rtems.h" tmake_file="mips/t-elf t-rtems mips/t-rtems" ;; +mips-wrs-vxworks) + # We want vxworks.h after mips/elf.h, which unfortunately means we + # have to redo the tm_file list from scratch. + tm_file="elfos.h mips/mips.h svr4.h mips/elf.h vxworks.h mips/vxworks.h" + tmake_file="${tmake_file} mips/t-vxworks" + target_cpu_default="MASK_GAS" + ;; +mips-wrs-windiss) # Instruction-level simulator for VxWorks. + xm_defines=POSIX + tm_file="elfos.h mips/mips.h svr4.h mips/elf.h windiss.h mips/windiss.h" + tmake_file="${tmake_file} mips/t-elf" + target_cpu_default="MASK_GAS" + thread_file= + ;; mipstx39-*-elf* | mipstx39el-*-elf*) tm_file="${tm_file} mips/r3900.h mips/elf.h" tmake_file=mips/t-r3900 @@ -1713,7 +1740,7 @@ powerpc-wrs-vxworks*) tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks" extra_headers=ppc-asm.h ;; -powerpc-wrs-windiss*) +powerpc-wrs-windiss*) # Instruction-level simulator for VxWorks. tm_file="${tm_file} elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/windiss.h" tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm" thread_file="" @@ -1900,6 +1927,10 @@ sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ ;; esac ;; +sh-wrs-vxworks) + tmake_file="$tmake_file sh/t-sh sh/t-elf sh/t-vxworks" + tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/embed-elf.h sh/vxworks.h" + ;; sh-*-*) tm_file="${tm_file} dbxcoff.h sh/coff.h" use_fixproto=yes diff --git a/gcc/config/arm/t-vxworks b/gcc/config/arm/t-vxworks new file mode 100644 index 000000000000..e620cfdf8ee9 --- /dev/null +++ b/gcc/config/arm/t-vxworks @@ -0,0 +1,10 @@ +# Multilibs for VxWorks. + +MULTILIB_OPTIONS = \ + t4/t4be/t4t/t4tbe/t5/t5be/t5t/t5tbe/txscale/txscalebe + +MULTILIB_DIRNAMES = \ + ARMARCH4gnu ARMARCH4gnube ARMARCH4_Tgnu ARMARCH4_Tgnube \ + ARMARCH5gnu ARMARCH5gnube ARMARCH5_Tgnu ARMARCH5_Tgnube \ + XSCALEgnu XSCALEgnube + diff --git a/gcc/config/arm/vxworks.h b/gcc/config/arm/vxworks.h new file mode 100644 index 000000000000..a5a6a09f6e88 --- /dev/null +++ b/gcc/config/arm/vxworks.h @@ -0,0 +1,95 @@ +/* Definitions of target machine for GCC, + for ARM with targetting the VXWorks run time environment. + Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc. + + Contributed by: Mike Stump + Brought up to date by CodeSourcery, LLC. + +This file is part of GCC. + +GCC 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. + +GCC 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 GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + + +#define TARGET_OS_CPP_BUILTINS() \ + do { \ + builtin_define ("__vxworks"); \ + if (TARGET_BIG_END) \ + builtin_define ("ARMEB"); \ + else \ + builtin_define ("ARMEL"); \ + \ + if (arm_is_xscale) \ + builtin_define ("CPU=XSCALE"); \ + else if (arm_arch5) \ + builtin_define ("CPU=ARMARCH5"); \ + else if (arm_arch4) \ + { \ + if (thumb_code) \ + builtin_define ("CPU=ARMARCH4_T"); \ + else \ + builtin_define ("CPU=ARMARCH4"); \ + } \ + } while (0) + +#undef CC1_SPEC +#define CC1_SPEC \ +"%{t4: -mapcs-32 -mlittle-endian -march=armv4 ; \ + t4be: -mapcs-32 -mbig-endian -march=armv4 ; \ + t4t: -mthumb -mthumb-interwork -mlittle-endian -march=armv4t ; \ + t4tbe: -mthumb -mthumb-interwork -mbig-endian -march=armv4t ; \ + t5: -mapcs-32 -mlittle-endian -march=armv5 ; \ + t5be: -mapcs-32 -mbig-endian -march=armv5 ; \ + t5t: -mthumb -mthumb-interwork -mlittle-endian -march=armv5 ; \ + t5tbe: -mthumb -mthumb-interwork -mbig-endian -march=armv5 ; \ + txscale: -mapcs-32 -mlittle-endian -mcpu=xscale ; \ + txscalebe: -mapcs-32 -mbig-endian -mcpu=xscale ; \ + : -march=armv4}" + +/* The -Q options from svr4.h aren't understood and must be removed. */ +#undef ASM_SPEC +#define ASM_SPEC \ + "%{v:-V} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}" + +/* VxWorks does all the library stuff itself. */ +#undef LIB_SPEC +#define LIB_SPEC "" + +/* VxWorks uses object files, not loadable images. make linker just + combine objects. */ +#undef LINK_SPEC +#define LINK_SPEC "-r" + +/* VxWorks provides the functionality of crt0.o and friends itself. */ +#undef STARTFILE_SPEC +#define STARTFILE_SPEC "" + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC "" + +#undef TARGET_VERSION +#define TARGET_VERSION fputs (" (ARM/VxWorks)", stderr); + +/* There is no default multilib. */ +#undef MULTILIB_DEFAULTS + +#undef ASM_FILE_START +#define ASM_FILE_START(STREAM) \ + do \ + { \ + fprintf (STREAM, "%s Generated by GCC %s for ARM/VxWorks\n", \ + ASM_COMMENT_START, version_string); \ + } \ + while (0) diff --git a/gcc/config/i386/t-vxworks b/gcc/config/i386/t-vxworks new file mode 100644 index 000000000000..609399502e79 --- /dev/null +++ b/gcc/config/i386/t-vxworks @@ -0,0 +1,8 @@ +# Multilibs for VxWorks. + +#GCC does not have an arch=pentium3 setting, so we cannot build PENTIUM3gnu +MULTILIB_OPTIONS = \ + march=i486/march=pentium/march=pentiumpro/march=pentium4 +MULTILIB_DIRNAMES = \ + I80486 PENTIUMgnu PENTIUM2gnu PENTIUM4gnu + diff --git a/gcc/config/i386/vxworks.h b/gcc/config/i386/vxworks.h new file mode 100644 index 000000000000..5ded098b9d31 --- /dev/null +++ b/gcc/config/i386/vxworks.h @@ -0,0 +1,74 @@ +/* Definitions of target machine for GCC. VxWorks i586 version. + Copyright (C) 2003 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC 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. + +GCC 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 GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + + +#define HANDLE_SYSV_PRAGMA 1 + +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (80586, VxWorks syntax)"); + +/* Prefix for internally generated assembler labels. If we aren't using + underscores, we are using prefix `.'s to identify labels that should + be ignored, as in `i386/gas.h' --karl@cs.umb.edu */ + +#define LPREFIX "L" + +/* Assembler pseudos to introduce constants of various size. */ + +#define ASM_SHORT "\t.word\t" +#define ASM_LONG "\t.long\t" +#define ASM_QUAD "\t.quad\t" /* Should not be used for 32bit compilation. */ + + +#define ASM_OUTPUT_ALIGN(FILE,LOG) \ + if ((LOG)!=0) fprintf ((FILE), "\t.balign %d\n", 1<<(LOG)) + +#undef ASM_SPEC +#define ASM_SPEC "%{v:-V} %{Qy:} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}" + +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__vxworks"); \ + builtin_assert ("system=unix"); \ + \ + if (TARGET_386) \ + builtin_define ("CPU=I80386"); \ + else if (TARGET_486) \ + builtin_define ("CPU=I80486"); \ + else if (TARGET_PENTIUM) \ + { \ + builtin_define ("CPU=PENTIUM"); \ + builtin_define ("CPU_VARIANT=PENTIUM"); \ + } \ + else if (TARGET_PENTIUMPRO) \ + { \ + builtin_define ("CPU=PENTIUM2"); \ + builtin_define ("CPU_VARIANT=PENTIUMPRO"); \ + } \ + else if (TARGET_PENTIUM4) \ + { \ + builtin_define ("CPU=PENTIUM4"); \ + builtin_define ("CPU_VARIANT=PENTIUM4"); \ + } \ + } \ + while (0) + + diff --git a/gcc/config/mips/t-vxworks b/gcc/config/mips/t-vxworks new file mode 100644 index 000000000000..51e006aa9028 --- /dev/null +++ b/gcc/config/mips/t-vxworks @@ -0,0 +1,16 @@ +# Multilibs for VxWorks. + +# default is mips1 EB hard-float +MULTILIB_OPTIONS = mips2/mips3 EL msoft-float +MULTILIB_MATCHES = EL=mel mips2=mips32 mips3=mips4 mips3=mips64 + +MULTILIB_EXCEPTIONS = EL EL/msoft-float mips3/msoft-float mips3/EL/msoft-float + +MUTLILIB_EXTRA_OPTS = -G 0 -mno-branch-likely + +MULTILIB_OSDIRNAMES = msoft-float=!MIPS32sfr3kgnu \ + mips2=!MIPS32gnu mips2/msoft-float=!MIPS32sfgnu \ + mips2/EL=!MIPS32gnule \ + mips2/EL/msoft-float=!MIPS32sfgnule \ + mips3=!MIPS64gnu mips3/EL=!MIPS64gnule + diff --git a/gcc/config/mips/vxworks.h b/gcc/config/mips/vxworks.h new file mode 100644 index 000000000000..fc4db447e344 --- /dev/null +++ b/gcc/config/mips/vxworks.h @@ -0,0 +1,79 @@ +/* Copyright (C) 1999, 2003 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC 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. + +GCC 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 GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#undef EXTRA_SECTIONS +#define EXTRA_SECTIONS in_sdata, in_sbss + +#undef EXTRA_SECTION_FUNCTIONS +#define EXTRA_SECTION_FUNCTIONS \ + SECTION_FUNCTION_TEMPLATE(sdata_section, in_sdata, SDATA_SECTION_ASM_OP) \ + SECTION_FUNCTION_TEMPLATE(sbss_section, in_sbss, SBSS_SECTION_ASM_OP) + + +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (MIPS, VxWorks syntax)"); + +/* Combination of mips.h and svr4.h. */ +#undef SWITCH_TAKES_ARG +#define SWITCH_TAKES_ARG(CHAR) \ + (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ + || (CHAR) == 'G' \ + || (CHAR) == 'h' \ + || (CHAR) == 'x' \ + || (CHAR) == 'z') + +#undef ASM_SPEC +#define ASM_SPEC "\ +%{!G:-G 0} %{G*} %(endian_spec) %{mips1} %{mips2} %{mips3} %{mips4} \ +%{mips32} %{mips32r2} %{mips64} \ +%{mips16:%{!mno-mips16:-mips16}} %{mno-mips16:-no-mips16} \ +%(subtarget_asm_optimizing_spec) \ +%(subtarget_asm_debugging_spec) \ +%{membedded-pic} \ +%{mabi=32:-32}%{mabi=n32:-n32}%{mabi=64:-64}%{mabi=n64:-64} \ +%{mabi=eabi} %{mabi=o64} %{!mabi*: %(asm_abi_default_spec)} \ +%{mgp32} %{mgp64} %{march=*} %{mxgot:-xgot} \ +%(target_asm_spec) \ +%(subtarget_asm_spec)" + +#undef LINK_SPEC +/* LINK_SPEC is clobbered in svr4.h. ugh! */ +#define LINK_SPEC "\ +%(endian_spec) \ +%{!G:-G 0} %{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips64} \ +%{bestGnum}" + +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__vxworks"); \ + builtin_assert ("system=unix"); \ + } \ + while (0) + +#undef SUBTARGET_CPP_SPEC +#define SUBTARGET_CPP_SPEC \ +"%{!DCPU=*: %{mips3|mips4|mips64:-DCPU=MIPS64;:-DCPU=MIPS32}} \ + %{EL|mel:-DMIPSEL;:-DMIPSEB} \ + %{msoft-float:-DSOFT_FLOAT} \ + %{mips1:-D_WRS_R3K_EXC_SUPPORT}" + +/* No sdata. */ +#undef MIPS_DEFAULT_GVALUE +#define MIPS_DEFAULT_GVALUE 0 diff --git a/gcc/config/mips/windiss.h b/gcc/config/mips/windiss.h new file mode 100644 index 000000000000..9f7c4471902c --- /dev/null +++ b/gcc/config/mips/windiss.h @@ -0,0 +1,103 @@ +/* Support for GCC on MIPS using WindISS simulator. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Contributed by CodeSourcery, LLC. + +This file is part of GCC. + +GCC 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. + +GCC 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 GCC; 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, " (MIPS WindISS)"); + +/* Combination of mips.h and svr4.h. */ +#undef SWITCH_TAKES_ARG +#define SWITCH_TAKES_ARG(CHAR) \ + (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ + || (CHAR) == 'G' \ + || (CHAR) == 'h' \ + || (CHAR) == 'x' \ + || (CHAR) == 'z') + +#undef SUBTARGET_CPP_SPEC +#define SUBTARGET_CPP_SPEC \ +"%{!DCPU=*: %{mips3|mips4|mips64:-DCPU=MIPS64;:-DCPU=MIPS32}} \ + %{EL|mel:-DMIPSEL;:-DMIPSEB} \ + %{msoft-float:-DSOFT_FLOAT} \ + %{mips1:-D_WRS_R3K_EXC_SUPPORT}" + +#undef ASM_SPEC +#define ASM_SPEC "\ +%{!G:-G 0} %{G*} %(endian_spec) %{mips1} %{mips2} %{mips3} %{mips4} \ +%{mips32} %{mips32r2} %{mips64} \ +%{mips16:%{!mno-mips16:-mips16}} %{mno-mips16:-no-mips16} \ +%(subtarget_asm_optimizing_spec) \ +%(subtarget_asm_debugging_spec) \ +%{membedded-pic} \ +%{mabi=32:-32}%{mabi=n32:-n32}%{mabi=64:-64}%{mabi=n64:-64} \ +%{mabi=eabi} %{mabi=o64} %{!mabi*: %(asm_abi_default_spec)} \ +%{mgp32} %{mgp64} %{march=*} %{mxgot:-xgot} \ +%(target_asm_spec) \ +%(subtarget_asm_spec)" + +#undef LINK_SPEC +/* LINK_SPEC is clobbered in svr4.h. ugh! */ +#define LINK_SPEC "\ +-m elf32mipswindiss \ +%{!G:-G 0} %{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips64} \ +%{bestGnum}" + +/* Diab libs MIPS{,E,F,L,M,W,X,Y,Z}{,H,N,S} + + . + E - Elf (small-data/const=8 + F - Elf Far (small-data/const=0) + L - Little Elf + M - Little Elf Far + W - elf32 bigmips + X - elf32 bigmips (far?) + Y - elf32 littlemips + Z - elf32 littlemips (far?) + + . - Integer routines + H - Hard float + N - No float + S - Soft float + + Want {F,M}{,H,S} + +*/ + +#undef LIB_SPEC +#define LIB_SPEC "--start-group -li -lcfp -lwindiss -lram -limpl -limpfp --end-group" + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC "crt0.o%s crtbegin.o%s" + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC "crtend.o%s" + +/* We have no shared libraries. These two shouldn't be necessary. */ +#undef LINK_SHLIB_SPEC +#define LINK_SHLIB_SPEC "" +#undef LINK_EH_SPEC +#define LINK_EH_SPEC "" + +#undef CRTSAVRES_DEFAULT_SPEC +#define CRTSAVRES_DEFAULT_SPEC "" + +/* No sdata. */ +#undef MIPS_DEFAULT_GVALUE +#define MIPS_DEFAULT_GVALUE 0 diff --git a/gcc/config/sh/t-vxworks b/gcc/config/sh/t-vxworks new file mode 100644 index 000000000000..85a2114589b7 --- /dev/null +++ b/gcc/config/sh/t-vxworks @@ -0,0 +1,11 @@ +# Multilibs for VxWorks. + +MULTILIB_OPTIONS = m2/m3/m4 ml + +MULTILIB_EXCEPTIONS = ml m2/ml + +MULTILIB_OSDIRNAMES = \ + m2=!SH7600gnu \ + m3=!SH7700gnu m3/ml=!SH7700gnule \ + m4=!SH7750gnu m4/ml=!SH7750gnule + diff --git a/gcc/config/sh/vxworks.h b/gcc/config/sh/vxworks.h new file mode 100644 index 000000000000..61c3236967f4 --- /dev/null +++ b/gcc/config/sh/vxworks.h @@ -0,0 +1,50 @@ +/* Definitions of target machine for GCC, + for SuperH with targeting the VXWorks run time environment. + Copyright (C) 2003 Free Software Foundation, Inc. + Contributed by CodeSourcery, LLC. + +This file is part of GCC. + +GCC 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. + +GCC 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 GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + + +#define TARGET_OS_CPP_BUILTINS() \ + do { \ + builtin_define ("__vxworks"); \ + builtin_define ("CPU=SH7000"); \ + } while (0) + +/* VxWorks does all the library stuff itself. */ +#undef LIB_SPEC +#define LIB_SPEC "" + +/* VxWorks uses object files, not loadable images. Make the linker just + combine objects. */ +#undef LINK_SPEC +#define LINK_SPEC "-r" + +/* VxWorks provides the functionality of crt0.o and friends itself. */ +#undef STARTFILE_SPEC +#define STARTFILE_SPEC "" + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC "" + +#undef TARGET_VERSION +#define TARGET_VERSION fputs (" (SH/VxWorks)", stderr); + +/* There is no default multilib. */ +#undef MULTILIB_DEFAULTS diff --git a/gcc/config/svr4.h b/gcc/config/svr4.h index 714326a5f432..ca65cd84aae7 100644 --- a/gcc/config/svr4.h +++ b/gcc/config/svr4.h @@ -41,6 +41,7 @@ Boston, MA 02111-1307, USA. -z* options (for the linker). Note however that there is no such thing as a -T option for svr4. */ +#undef SWITCH_TAKES_ARG #define SWITCH_TAKES_ARG(CHAR) \ (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ || (CHAR) == 'h' \ diff --git a/gcc/config/windiss.h b/gcc/config/windiss.h new file mode 100644 index 000000000000..7aef9b678813 --- /dev/null +++ b/gcc/config/windiss.h @@ -0,0 +1,38 @@ +/* Support for GCC using WindISS simulator. + Copyright (C) 2003 Free Software Foundation, Inc. + Contributed by CodeSourcery, LLC. + +This file is part of GCC. + +GCC 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. + +GCC 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 GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + + +/* windiss uses wchar_t == unsigned short (UCS2) on all architectures. */ +#undef WCHAR_TYPE +#define WCHAR_TYPE "short unsigned int" +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 16 + +/* windiss has wint_t == int */ +#undef WINT_TYPE +#define WINT_TYPE "int" + +/* No profiling. */ +#undef FUNCTION_PROFILER +#define FUNCTION_PROFILER(FILE, LABELNO) \ +{ \ + sorry ("profiler support for WindISS"); \ +} diff --git a/gcc/genmultilib b/gcc/genmultilib index 097ecf95dee6..b5ffa9d4d528 100644 --- a/gcc/genmultilib +++ b/gcc/genmultilib @@ -63,10 +63,15 @@ # for the rule to exclude a set. Options can be preceded with a '!' to # match a logical NOT. -# The optional sevenths argument is a list of OS subdirectory names. -# The format is the same as of the second argument. -# The difference is that second argument describes multilib directories -# in GCC conventions, while this one the OS multilib convention. +# The optional seventh argument is a list of OS subdirectory names. +# The format is either the same as of the second argument, or a set of +# mappings. When it is the same as the second argument, it describes +# the multilib directories using OS conventions, rather than GCC +# conventions. When it is a set of mappings of the form gccdir=osdir, +# the left side gives the GCC convention and the right gives the +# equivalent OS defined location. If the osdir part begins with a !, +# the os directory names are used exclusively. Use the mapping when +# there is no one-to-one equivalence between GCC levels and the OS. # The last option should be "yes" if multilibs are enabled. If it is not # "yes", all GCC multilib dir names will be ".". @@ -216,24 +221,44 @@ fi # Construct a sed pattern which will convert option names to OS directory # names. toosdirnames= +defaultosdirname= if [ -n "${osdirnames}" ]; then set x ${osdirnames} shift - for set in ${options}; do - for opts in `echo ${set} | sed -e 's|/| |'g`; do - patt="/" - for opt in `echo ${opts} | sed -e 's_|_ _'g`; do - if [ "$1" != "${opt}" ]; then - toosdirnames="${toosdirnames} -e s|/${opt}/|/${1}/|g" - patt="${patt}${1}/" - if [ "${patt}" != "/${1}/" ]; then - toosdirnames="${toosdirnames} -e s|${patt}|/${1}/|g" + while [ $# != 0 ] ; do + case "$1" in + .=*) + defaultosdirname=`echo $1 | sed 's|^.=|:|'` + shift + ;; + *=*) + patt=`echo $1 | sed -e 's|=|/$=/|'` + toosdirnames="${toosdirnames} -e s=^/${patt}/=" + shift + ;; + *) + break + ;; + esac + done + + if [ $# != 0 ]; then + for set in ${options}; do + for opts in `echo ${set} | sed -e 's|/| |'g`; do + patt="/" + for opt in `echo ${opts} | sed -e 's_|_ _'g`; do + if [ "$1" != "${opt}" ]; then + toosdirnames="${toosdirnames} -e s|/${opt}/|/${1}/|g" + patt="${patt}${1}/" + if [ "${patt}" != "/${1}/" ]; then + toosdirnames="${toosdirnames} -e s|${patt}|/${1}/|g" + fi fi - fi + done + shift done - shift done - done + fi fi # We need another recursive shell script to correctly handle positive @@ -275,7 +300,7 @@ for set in ${options}; do done done optout=`echo ${optout} | sed -e 's/^ //'` -echo "\". ${optout};\"," +echo "\".${defaultosdirname} ${optout};\"," # Work over the list of combinations. We have to translate each one # to use the directory names rather than the option names, we have to @@ -299,7 +324,14 @@ for combo in ${combinations}; do if [ "x${enable_multilib}" != xyes ]; then dirout=".:${osdirout}" else - dirout="${dirout}:${osdirout}" + case "${osdirout}" in + !*) + dirout=`echo ${osdirout} | sed 's/^!//'` + ;; + *) + dirout="${dirout}:${osdirout}" + ;; + esac fi else if [ "x${enable_multilib}" != xyes ]; then -- 2.39.2