summaryrefslogtreecommitdiff
path: root/lang/gcc295/files/freebsd.h
diff options
context:
space:
mode:
authorDavid E. O'Brien <obrien@FreeBSD.org>1999-08-05 16:06:07 +0000
committerDavid E. O'Brien <obrien@FreeBSD.org>1999-08-05 16:06:07 +0000
commit4d4d7bde851d7512fc4a382c73f7a1764511a8f1 (patch)
treede1c1d449eb81a2209df468573e633b033aad7ae /lang/gcc295/files/freebsd.h
parent"foo" and "bar" are not valid categories. :) (diff)
Update to GCC-2.95 (what would have been EGCS-1.2).
Diffstat (limited to 'lang/gcc295/files/freebsd.h')
-rw-r--r--lang/gcc295/files/freebsd.h63
1 files changed, 43 insertions, 20 deletions
diff --git a/lang/gcc295/files/freebsd.h b/lang/gcc295/files/freebsd.h
index 5719d55a4b9b..40ed10359025 100644
--- a/lang/gcc295/files/freebsd.h
+++ b/lang/gcc295/files/freebsd.h
@@ -1,3 +1,4 @@
+/* $Id: freebsd.h,v 1.8 1999/07/25 03:34:38 obrien Exp $ */
/* Base configuration file for all FreeBSD targets.
Copyright (C) 1999 Free Software Foundation, Inc.
@@ -25,59 +26,81 @@ Boston, MA 02111-1307, USA. */
egcs/gcc/config/i386/freebsd-elf.h version by David O'Brien */
-/* Don't assume anything about the header files. */
+/* Don't assume anything about the header files. */
#undef NO_IMPLICIT_EXTERN_C
#define NO_IMPLICIT_EXTERN_C
/* This defines which switch letters take arguments. On FreeBSD, most of
the normal cases (defined in gcc.c) apply, and we also have -h* and
-z* options (for the linker) (comming from svr4).
- We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
+ We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
+
+#define FBSD_SWITCH_TAKES_ARG(CHAR) \
+ (DEFAULT_SWITCH_TAKES_ARG (CHAR) \
+ || (CHAR) == 'h' \
+ || (CHAR) == 'z' /* ignored by ld */ \
+ || (CHAR) == 'R')
#undef SWITCH_TAKES_ARG
-#define SWITCH_TAKES_ARG(CHAR) \
- (DEFAULT_SWITCH_TAKES_ARG (CHAR) \
- || (CHAR) == 'h' \
- || (CHAR) == 'z' /* ignored by ld */ \
- || (CHAR) == 'R')
+#define SWITCH_TAKES_ARG(CHAR) (FBSD_SWITCH_TAKES_ARG(CHAR))
-#undef WORD_SWITCH_TAKES_ARG
-#define WORD_SWITCH_TAKES_ARG(STR) \
+#define FBSD_WORD_SWITCH_TAKES_ARG(STR) \
(DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \
|| !strcmp (STR, "rpath") || !strcmp (STR, "rpath-link") \
|| !strcmp (STR, "soname") || !strcmp (STR, "defsym") \
|| !strcmp (STR, "assert") || !strcmp (STR, "dynamic-linker"))
+#undef WORD_SWITCH_TAKES_ARG
+#define WORD_SWITCH_TAKES_ARG(STR) (FBSD_WORD_SWITCH_TAKES_ARG(STR))
+/* Place spaces around this string. We depend on string splicing to produce
+ the final CPP_PREDEFINES value. */
#define CPP_FBSD_PREDEFINES " -Dunix -D__FreeBSD__ -Asystem(unix) -Asystem(FreeBSD) "
+/* Provide a LIB_SPEC appropriate for FreeBSD. Just select the appropriate
+ libc, depending on whether we're doing profiling or need threads support.
+ (simular to the default, except no -lg, and no -p). */
+
+#undef LIB_SPEC
+#define LIB_SPEC "%{!shared: \
+ %{!pg:%{!pthread:%{!kthread:-lc} \
+ %{kthread:-lpthread -lc}} \
+ %{pthread:-lc_r}} \
+ %{pg:%{!pthread:%{!kthread:-lc_p} \
+ %{kthread:-lpthread_p -lc_p}} \
+ %{pthread:-lc_r_p}}}"
+
+/* Tell gcc to locate libgcc.a for us according to the -m rules. */
+#undef LIBGCC_SPEC
+#define LIBGCC_SPEC \
+ "%{!shared:%{!pthread:%{!kthread:libgcc.a%s}}%{pthread|kthread:libgcc_r.a%s}}"
+
/* Code generation parameters. */
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
- we want to retain compatibility with older gcc versions.
+ we want to retain compatibility with older gcc versions
(even though the svr4 ABI for the i386 says that records and unions are
- returned in memory) */
+ returned in memory). */
#undef DEFAULT_PCC_STRUCT_RETURN
#define DEFAULT_PCC_STRUCT_RETURN 0
/* Ensure we the configuration knows our system correctly so we can link with
- libraries compiled with the native cc. */
+ libraries compiled with the native cc. */
#undef NO_DOLLAR_IN_LABEL
-/* Use more efficient ``thunks'' to implement C++ vtables. XXX note that
- this setting is claimed to have a few bugs by the EGCS maintainers. They
- believe the bugs will be worked out in EGCS 1.2. */
+/* Use more efficient ``thunks'' to implement C++ vtables. */
#undef DEFAULT_VTABLE_THUNKS
#define DEFAULT_VTABLE_THUNKS 1
-/* Our malloc can allocte pagesized blocks efficiently. The default size
- of 4072 bytes is not optimal on the i386 nor the Alpha. */
-#undef OBSTACK_CHUNK_SIZE
-#define OBSTACK_CHUNK_SIZE (getpagesize())
-
/* Miscellaneous parameters. */
/* Tell libgcc2.c that FreeBSD targets support atexit(3). */
#define HAVE_ATEXIT
+
+#ifdef BOOTSTRAP_BOMBS_ON_CURRENT
+/* Our malloc can allocte pagesized blocks efficiently. The default size
+ of 4072 bytes is not optimal on the i386 nor the Alpha. */
+#define OBSTACK_CHUNK_SIZE (getpagesize())
+#endif