cvs commit ChangeLog config.sub configure configure.in toplev.c

From-SVN: r17060
This commit is contained in:
Fred Fish 1997-12-12 06:36:11 +00:00 committed by Jeff Law
parent baf558778c
commit c55dcc7ddd
12 changed files with 337 additions and 6 deletions

View File

@ -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)

8
gcc/config.sub vendored
View File

@ -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/"`
;;

124
gcc/config/rs6000/beos.h Normal file
View File

@ -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

51
gcc/config/rs6000/t-beos Normal file
View File

@ -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 =

9
gcc/config/rs6000/x-beos Normal file
View File

@ -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`

View File

@ -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"

7
gcc/configure vendored
View File

@ -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

View File

@ -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

View File

@ -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 */

View File

@ -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. */

View File

@ -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 */

View File

@ -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) \