diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-12-12 06:36:11 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-12-12 06:36:11 +0000 |
commit | 79013643f74b7dc4a245677254dac312e28f2626 (patch) | |
tree | 0530e9c643eaef61bbc3e8f377a86fd51992d8b1 /gcc | |
parent | e4182547e32f49d916a849a51a4efa8590f10636 (diff) | |
download | gcc-79013643f74b7dc4a245677254dac312e28f2626.tar.gz |
cvs commit ChangeLog config.sub configure configure.in toplev.c
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17060 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rwxr-xr-x | gcc/config.sub | 8 | ||||
-rw-r--r-- | gcc/config/rs6000/beos.h | 124 | ||||
-rw-r--r-- | gcc/config/rs6000/t-beos | 51 | ||||
-rw-r--r-- | gcc/config/rs6000/x-beos | 9 | ||||
-rw-r--r-- | gcc/config/rs6000/xm-beos.h | 89 | ||||
-rwxr-xr-x | gcc/configure | 7 | ||||
-rw-r--r-- | gcc/configure.in | 7 | ||||
-rw-r--r-- | gcc/ginclude/stdarg.h | 7 | ||||
-rw-r--r-- | gcc/ginclude/stddef.h | 13 | ||||
-rw-r--r-- | gcc/ginclude/varargs.h | 8 | ||||
-rw-r--r-- | gcc/toplev.c | 7 |
12 files changed, 337 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 459dd59236e..34b123e85a9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +Thu Dec 11 23:34:54 1997 Fred Fish <fnf@ninemoons.com> + + * config.sub: Add support for BeOS target. + * configure.in: Likewise. + * ginclude/stdarg.h: Likewise. + * ginclude/stddef.h: Likewise. + * ginclude/varargs.h: Likewise. + * rs6000/beos.h: New file for BeOS. + * rs6000/t-beos: Likewise. + * rs6000/x-beos: Likewise. + * rs6000/xm-beos.h: Likewise. + * toplev.c (get_run_time): Just return 0 on BeOS. + Thu Dec 11 23:25:23 1997 Jeffrey A Law (law@cygnus.com) Toon Moene (toon@moene.indiv.nluug.nl) diff --git a/gcc/config.sub b/gcc/config.sub index 213a6d47d67..376152313a4 100755 --- a/gcc/config.sub +++ b/gcc/config.sub @@ -716,7 +716,7 @@ case $os in | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv*) + | -mingw32* | -linux-gnu* | -uxpv* | -beos* ) # Remember, each alternative MUST END IN *, to match a version number. ;; -linux*) @@ -895,6 +895,9 @@ case $basic_machine in f301-fujitsu) os=-uxpv ;; + *-be) + os=-beos + ;; *) os=-none ;; @@ -946,6 +949,9 @@ case $basic_machine in -aux*) vendor=apple ;; + -beos*) + vendor=be + ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; diff --git a/gcc/config/rs6000/beos.h b/gcc/config/rs6000/beos.h new file mode 100644 index 00000000000..851601ff2b8 --- /dev/null +++ b/gcc/config/rs6000/beos.h @@ -0,0 +1,124 @@ +/* Definitions of target machine for GNU compiler, for BeOS. + Copyright (C) 1997 Free Software Foundation, Inc. + Contributed by Fred Fish (fnf@cygnus.com), based on aix41.h + from David Edelsohn (edelsohn@npac.syr.edu). + +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. */ + + +/* Enable AIX XL compiler calling convention breakage compatibility. */ +#define MASK_XL_CALL 0x40000000 +#define TARGET_XL_CALL (target_flags & MASK_XL_CALL) +#undef SUBTARGET_SWITCHES +#define SUBTARGET_SWITCHES \ + {"xl-call", MASK_XL_CALL}, \ + {"no-xl-call", - MASK_XL_CALL}, \ + {"threads", 0}, \ + {"pe", 0}, + +#include "rs6000/rs6000.h" + +#undef ASM_SPEC +#define ASM_SPEC "-u %(asm_cpu)" + +#undef CPP_PREDEFINES +/* __POWERPC__ must be defined for some header files */ +#define CPP_PREDEFINES "-D__BEOS__ -D__POWERPC__ -Asystem(beos) -Acpu(powerpc) -Amachine(powerpc)" + +#undef CPP_SPEC +#define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %(cpp_cpu)" + +#undef CPP_DEFAULT_SPEC +#define CPP_DEFAULT_SPEC "-D_ARCH_PPC" + +/* This is the easiest way to disable use of gcc's builtin alloca, + which in the current BeOS release (DR9) is a problem because of the + relatively low default stack size of 256K with no way to expand it. + So anything we compile for the BeOS target should not use the + builtin alloca. This also has the unwanted side effect of + disabling all builtin functions though. */ + +#undef CC1_SPEC +#define CC1_SPEC "%{!fbuiltin: -fno-builtin}" +#undef CC1PLUS_SPEC +#define CC1PLUS_SPEC "%{!fbuiltin: -fno-builtin}" + +#undef ASM_DEFAULT_SPEC +#define ASM_DEFAULT_SPEC "-mppc" + +#undef TARGET_DEFAULT +#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS) + +#undef PROCESSOR_DEFAULT +#define PROCESSOR_DEFAULT PROCESSOR_PPC603 + +/* Define this macro as a C expression for the initializer of an + array of string to tell the driver program which options are + defaults for this target and thus do not need to be handled + specially when using `MULTILIB_OPTIONS'. + + Do not define this macro if `MULTILIB_OPTIONS' is not defined in + the target makefile fragment or if none of the options listed in + `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ + +#undef MULTILIB_DEFAULTS +#define MULTILIB_DEFAULTS { "mcpu=powerpc" } + +/* These are not necessary when we pass -u to the assembler, and undefining + them saves a great deal of space in object files. */ + +#undef ASM_OUTPUT_EXTERNAL +#undef ASM_OUTPUT_EXTERNAL_LIBCALL +#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \ +{ rtx _symref = XEXP (DECL_RTL (DECL), 0); \ + if ((TREE_CODE (DECL) == VAR_DECL \ + || TREE_CODE (DECL) == FUNCTION_DECL) \ + && (NAME)[strlen (NAME) - 1] != ']') \ + { \ + char *_name = (char *) permalloc (strlen (XSTR (_symref, 0)) + 5); \ + strcpy (_name, XSTR (_symref, 0)); \ + strcat (_name, TREE_CODE (DECL) == FUNCTION_DECL ? "[DS]" : "[RW]"); \ + XSTR (_symref, 0) = _name; \ + } \ +} + +/* These empty definitions get rid of the attempt to link in crt0.o + and any libraries like libc.a. + On BeOS the ld executable is actually a linker front end that first runs + the GNU linker with the -r option to generate a relocatable XCOFF output + file, and then runs Metrowork's linker (mwld) to generate a fully linked + executable. */ + +#undef LIB_SPEC +#define LIB_SPEC "" + +#undef LINK_SPEC +#define LINK_SPEC "" + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC "" + +/* Text to write out after a CALL that may be replaced by glue code by + the loader. */ + +#undef RS6000_CALL_GLUE +#define RS6000_CALL_GLUE "cror 15,15,15" + +/* Struct alignments are done on 4 byte boundaries for all types. */ +#undef BIGGEST_FIELD_ALIGNMENT +#define BIGGEST_FIELD_ALIGNMENT 32 diff --git a/gcc/config/rs6000/t-beos b/gcc/config/rs6000/t-beos new file mode 100644 index 00000000000..1436108ab14 --- /dev/null +++ b/gcc/config/rs6000/t-beos @@ -0,0 +1,51 @@ +# Do not build libgcc1. +LIBGCC1 = +CROSS_LIBGCC1 = + +# These are really part of libgcc1, but this will cause them to be +# built correctly, so... [taken from t-sparclite] +LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c + +dp-bit.c: $(srcdir)/config/fp-bit.c + cat $(srcdir)/config/fp-bit.c > dp-bit.c + +fp-bit.c: $(srcdir)/config/fp-bit.c + echo '#define FLOAT' > fp-bit.c + cat $(srcdir)/config/fp-bit.c >> fp-bit.c + +# Build the libraries for both hard and soft floating point + +MULTILIB_OPTIONS = msoft-float mcpu=common +MULTILIB_DIRNAMES = soft-float common + +LIBGCC = stmp-multilib +INSTALL_LIBGCC = install-multilib + +# This is probably the correct define, to override the Makefile +# default, but using it causes more problems than it solves. +# +# Using it will cause fixincludes to try and fix some of the +# mwcc header files, which it seems to do a poor job of. On +# the other hand, not using it will only cause the gcc version +# of limits.h to lack the header and trailer parts that are +# tacked on to it when there is a limits.h in the system header +# dir. +# +# For now it is probably better to change the rule for +# LIMITS_H_TEST to explicitly look for the BeOS limits.h. +# If the gcc limits.h is not set up to #include_next the +# BeOS limits.h, then some things will go undefined, like +# PATH_MAX. + +#SYSTEM_HEADER_DIR=/boot/develop/headers/posix +# Test to see whether <limits.h> exists in the system header files. +LIMITS_H_TEST = [ -f /boot/develop/headers/posix/limits.h ] + +# Aix 3.2.x needs milli.exp for -mcpu=common +EXTRA_PARTS = milli.exp +milli.exp: $(srcdir)/config/rs6000/milli.exp + rm -f milli.exp + cp $(srcdir)/config/rs6000/milli.exp ./milli.exp + +# Don't use collect. +USE_COLLECT2 = diff --git a/gcc/config/rs6000/x-beos b/gcc/config/rs6000/x-beos new file mode 100644 index 00000000000..37b8ccac9cf --- /dev/null +++ b/gcc/config/rs6000/x-beos @@ -0,0 +1,9 @@ +# configuration for BeOS +INSTALL=install -c + +# Show we need to use the C version of ALLOCA +ALLOCA=alloca.o +# Use it regardless of whether we are compiling with gcc or not. +USE_ALLOCA= `echo "${ALLOCA}"` +USE_HOST_ALLOCA= `echo ${HOST_PREFIX}${HOST_ALLOCA}` +SUBDIR_USE_ALLOCA = `if [ x$(ALLOCA) != x ]; then echo ../$(ALLOCA); else true; fi` diff --git a/gcc/config/rs6000/xm-beos.h b/gcc/config/rs6000/xm-beos.h new file mode 100644 index 00000000000..681aa73bcc6 --- /dev/null +++ b/gcc/config/rs6000/xm-beos.h @@ -0,0 +1,89 @@ +/* Configuration for GNU C-compiler for BeOS host. + Copyright (C) 1997 Free Software Foundation, Inc. + Contributed by Fred Fish (fnf@cygnus.com), based on xm-rs6000.h + by Richard Kenner (kenner@vlsi1.ultra.nyu.edu). + + +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. */ + + +/* #defines that need visibility everywhere. */ + +#define FALSE 0 +#define TRUE 1 + +/* This describes the machine the compiler is hosted on. */ + +#define HOST_BITS_PER_CHAR 8 +#define HOST_BITS_PER_SHORT 16 +#define HOST_BITS_PER_INT 32 +#define HOST_BITS_PER_LONG 32 +#define HOST_BITS_PER_LONGLONG 64 + +#define HOST_WORDS_BIG_ENDIAN + +/* target machine dependencies. + tm.h is a symbolic link to the actual target specific file. */ + +#include "tm.h" + +/* Arguments to use with `exit'. */ + +#define SUCCESS_EXIT_CODE 0 +#define FATAL_EXIT_CODE 33 + +/* Use the C alloca and use only int bitfields. */ + +#define USE_C_ALLOCA +extern void *alloca (); +#define ONLY_INT_FIELDS + +/* use ANSI/SYSV style byte manipulation routines instead of BSD ones */ + +#undef bcopy +#define bcopy(s,d,n) memmove((d),(s),(n)) +#undef bzero +#define bzero(d,n) memset((d),0,(n)) +#undef bcmp +#define bcmp(l,r,n) memcmp((l),(r),(n)) +#undef index +#define index strchr +#undef rindex +#define rindex strrchr + +/* BeOS is closer to USG than BSD */ + +#define USG + +/* Define various things that the BeOS host has. */ + +#define HAVE_VPRINTF +#define HAVE_PUTENV +#define HAVE_ATEXIT +#define HAVE_RENAME + +#define STDC_HEADERS 1 + +/* STANDARD_INCLUDE_DIR is the equivalent of "/usr/include" on UNIX. */ + +#define STANDARD_INCLUDE_DIR "/boot/develop/headers/posix" + +/* SYSTEM_INCLUDE_DIR is the location for system specific, non-POSIX headers. */ + +#define SYSTEM_INCLUDE_DIR "/boot/develop/headers/be" + diff --git a/gcc/configure b/gcc/configure index e9dc7cd7480..ffbb35c2964 100755 --- a/gcc/configure +++ b/gcc/configure @@ -4883,6 +4883,13 @@ for machine in $build $host $target; do xmake_file=romp/x-mach use_collect2=yes ;; + powerpc-*-beos*) + cpu_type=rs6000 + tm_file=rs6000/beos.h + xm_file=rs6000/xm-beos.h + tmake_file=rs6000/t-beos + xmake_file=rs6000/x-beos + ;; powerpc-*-sysv* | powerpc-*-elf*) if [ x$enable_haifa != xno ]; then enable_haifa=yes diff --git a/gcc/configure.in b/gcc/configure.in index d307fa0882f..98377e9973d 100644 --- a/gcc/configure.in +++ b/gcc/configure.in @@ -2124,6 +2124,13 @@ for machine in $build $host $target; do xmake_file=romp/x-mach use_collect2=yes ;; + powerpc-*-beos*) + cpu_type=rs6000 + tm_file=rs6000/beos.h + xm_file=rs6000/xm-beos.h + tmake_file=rs6000/t-beos + xmake_file=rs6000/x-beos + ;; powerpc-*-sysv* | powerpc-*-elf*) if [[ x$enable_haifa != xno ]]; then enable_haifa=yes diff --git a/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h index 24f3383198d..71673fb02a0 100644 --- a/gcc/ginclude/stdarg.h +++ b/gcc/ginclude/stdarg.h @@ -64,7 +64,7 @@ #ifndef __GNUC_VA_LIST #define __GNUC_VA_LIST -#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__) +#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__) || defined (__BEOS__) typedef char *__gnuc_va_list; #else typedef void *__gnuc_va_list; @@ -178,7 +178,9 @@ typedef __gnuc_va_list va_list; #ifndef _VA_LIST /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ #ifndef _VA_LIST_T_H +#ifndef __va_list__ typedef __gnuc_va_list va_list; +#endif /* not __va_list__ */ #endif /* not _VA_LIST_T_H */ #endif /* not _VA_LIST */ #endif /* not _VA_LIST_DEFINED */ @@ -194,6 +196,9 @@ typedef __gnuc_va_list va_list; #ifndef _VA_LIST_T_H #define _VA_LIST_T_H #endif +#ifndef __va_list__ +#define __va_list__ /* BeOS */ +#endif #endif /* not _VA_LIST_, except on certain systems */ diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h index 23d8455c649..0fb57430bce 100644 --- a/gcc/ginclude/stddef.h +++ b/gcc/ginclude/stddef.h @@ -135,6 +135,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t; /* Define this type if we are doing the whole job, or if we want this type in particular. */ #if defined (_STDDEF_H) || defined (__need_size_t) +#ifndef __size_t__ /* BeOS */ #ifndef _SIZE_T /* in case <sys/types.h> has defined it. */ #ifndef _SYS_SIZE_T_H #ifndef _T_SIZE_ @@ -148,6 +149,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t; #ifndef _GCC_SIZE_T #ifndef _SIZET_ #ifndef __size_t +#define __size_t__ /* BeOS */ #define _SIZE_T #define _SYS_SIZE_T_H #define _T_SIZE_ @@ -166,6 +168,9 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t; #endif #if !(defined (__GNUG__) && defined (size_t)) typedef __SIZE_TYPE__ size_t; +#ifdef __BEOS__ +typedef long ssize_t; +#endif /* __BEOS__ */ #endif /* !(defined (__GNUG__) && defined (size_t)) */ #endif /* __size_t */ #endif /* _SIZET_ */ @@ -180,6 +185,7 @@ typedef __SIZE_TYPE__ size_t; #endif /* _T_SIZE_ */ #endif /* _SYS_SIZE_T_H */ #endif /* _SIZE_T */ +#endif /* __size_t__ */ #undef __need_size_t #endif /* _STDDEF_H or __need_size_t. */ @@ -192,6 +198,7 @@ typedef __SIZE_TYPE__ size_t; /* Define this type if we are doing the whole job, or if we want this type in particular. */ #if defined (_STDDEF_H) || defined (__need_wchar_t) +#ifndef __wchar_t__ /* BeOS */ #ifndef _WCHAR_T #ifndef _T_WCHAR_ #ifndef _T_WCHAR @@ -204,6 +211,7 @@ typedef __SIZE_TYPE__ size_t; #ifndef ___int_wchar_t_h #ifndef __INT_WCHAR_T_H #ifndef _GCC_WCHAR_T +#define __wchar_t__ /* BeOS */ #define _WCHAR_T #define _T_WCHAR_ #define _T_WCHAR @@ -237,8 +245,12 @@ typedef _BSD_RUNE_T_ rune_t; #endif #ifndef __WCHAR_TYPE__ +#ifdef __BEOS__ +#define __WCHAR_TYPE__ unsigned char +#else #define __WCHAR_TYPE__ int #endif +#endif #ifndef __cplusplus typedef __WCHAR_TYPE__ wchar_t; #endif @@ -254,6 +266,7 @@ typedef __WCHAR_TYPE__ wchar_t; #endif #endif #endif +#endif /* __wchar_t__ */ #undef __need_wchar_t #endif /* _STDDEF_H or __need_wchar_t. */ diff --git a/gcc/ginclude/varargs.h b/gcc/ginclude/varargs.h index 410d06aac69..4259b9f55d8 100644 --- a/gcc/ginclude/varargs.h +++ b/gcc/ginclude/varargs.h @@ -96,7 +96,7 @@ #ifndef __GNUC_VA_LIST #define __GNUC_VA_LIST -#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) +#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__BEOS__) typedef char *__gnuc_va_list; #else typedef void *__gnuc_va_list; @@ -192,7 +192,10 @@ typedef __gnuc_va_list va_list; #ifndef _VA_LIST /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ #ifndef _VA_LIST_T_H +/* The macro __va_list__ is used in BeOS */ +#ifndef __va_list__ typedef __gnuc_va_list va_list; +#endif /* not __va_list__ */ #endif /* not _VA_LIST_T_H */ #endif /* not _VA_LIST */ #endif /* not _VA_LIST_DEFINED */ @@ -208,6 +211,9 @@ typedef __gnuc_va_list va_list; #ifndef _VA_LIST_T_H #define _VA_LIST_T_H #endif +#ifndef __va_list__ /* BeOS */ +#define __va_list__ +#endif #endif /* not _VA_LIST_, except on certain systems */ diff --git a/gcc/toplev.c b/gcc/toplev.c index 9cbd513fca2..984b7682b90 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1036,9 +1036,10 @@ get_run_time () #else /* VMS */ times ((void *) &vms_times); return (vms_times.proc_user_time + vms_times.proc_system_time) * 10000; -#endif -#endif -#endif +#endif /* VMS */ +#endif /* USG */ +#endif /* _WIN32 */ +#endif /* __BEOS__ */ } #define TIMEVAR(VAR, BODY) \ |