diff options
author | Loren J. Rittle <ljrittle@acm.org> | 2001-05-22 19:28:15 +0000 |
---|---|---|
committer | Loren J. Rittle <ljrittle@gcc.gnu.org> | 2001-05-22 19:28:15 +0000 |
commit | 766a4175b12e77540da5a39482d1cd3e4beb81ff (patch) | |
tree | 4f02300804e0911e677d07ff67301cd3d153605e /gcc/config/freebsd.h | |
parent | 9e405fe52ee14ad3cdcfe1e535225c384436398e (diff) | |
download | gcc-766a4175b12e77540da5a39482d1cd3e4beb81ff.zip gcc-766a4175b12e77540da5a39482d1cd3e4beb81ff.tar.gz gcc-766a4175b12e77540da5a39482d1cd3e4beb81ff.tar.bz2 |
freebsd.h (LIB_SPEC): Key the exact setting to configure-time options and target version of FreeBSD.
* config/freebsd.h (LIB_SPEC): Key the exact setting to
configure-time options and target version of FreeBSD. Set-up
to match architectural change in threading support. Correctly
report when -pthread option is not supported by configure-time
options.
(FBSD_CPP_PREDEFINES): Move from architecture-specific files
and extend to encode target version number in run-time setting
of __FreeBSD__ macro to match the system compiler.
(CPP_PREDEFINES): Likewise.
(PREFERRED_DEBUGGING_TYPE): Change to DWARF2_DEBUG.
* config/alpha/freebsd.h (CPP_PREDEFINES): Moved to common freebsd.h.
* config/i386/freebsd.h (CPP_PREDEFINES): Likewise.
Co-Authored-By: David O'Brien <obrien@freebsd.org>
From-SVN: r42464
Diffstat (limited to 'gcc/config/freebsd.h')
-rw-r--r-- | gcc/config/freebsd.h | 67 |
1 files changed, 59 insertions, 8 deletions
diff --git a/gcc/config/freebsd.h b/gcc/config/freebsd.h index 18065c0..8b526ca 100644 --- a/gcc/config/freebsd.h +++ b/gcc/config/freebsd.h @@ -1,5 +1,5 @@ /* Base configuration file for all FreeBSD targets. - Copyright (C) 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GNU CC. @@ -22,7 +22,9 @@ Boston, MA 02111-1307, USA. */ All FreeBSD architectures should include this file, which will specify their commonalities. Adapted from gcc/config/i386/freebsd-elf.h by - David O'Brien <obrien@FreeBSD.org>. */ + David O'Brien <obrien@FreeBSD.org>. + Further work by David O'Brien <obrien@FreeBSD.org> and + Loren J. Rittle <ljrittle@acm.org>. */ /* This defines which switch letters take arguments. On FreeBSD, most of @@ -48,6 +50,26 @@ Boston, MA 02111-1307, USA. */ #undef WORD_SWITCH_TAKES_ARG #define WORD_SWITCH_TAKES_ARG(STR) (FBSD_WORD_SWITCH_TAKES_ARG(STR)) +#if FBSD_MAJOR == 6 +#define FBSD_CPP_PREDEFINES \ + "-D__FreeBSD__=6 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" +#elif FBSD_MAJOR == 5 +#define FBSD_CPP_PREDEFINES \ + "-D__FreeBSD__=5 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" +#elif FBSD_MAJOR == 4 +#define FBSD_CPP_PREDEFINES \ + "-D__FreeBSD__=4 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" +#elif FBSD_MAJOR == 3 +#define FBSD_CPP_PREDEFINES \ + "-D__FreeBSD__=3 -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" +#else +#define FBSD_CPP_PREDEFINES \ + "-D__FreeBSD__ -Dunix -D__ELF__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" +#endif + +#undef CPP_PREDEFINES +#define CPP_PREDEFINES FBSD_CPP_PREDEFINES + /* Provide a CPP_SPEC appropriate for FreeBSD. We just deal with the GCC option `-posix', and PIC issues. */ @@ -56,11 +78,37 @@ Boston, MA 02111-1307, USA. */ %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \ %{posix:-D_POSIX_SOURCE}" -/* 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). */ +/* Provide a LIB_SPEC appropriate for FreeBSD as configured and as + required by the user-land thread model. Before __FreeBSD_version + 500016, select the appropriate libc, depending on whether we're + doing profiling or need threads support. At __FreeBSD_version + 500016 and later, when threads support is requested include both + -lc and -lc_r instead of only -lc_r. To make matters interesting, + we can't actually use __FreeBSD_version provided by <osreldate.h> + directly since it breaks cross-compiling. As a final twist, make + it a hard error if -pthread is provided on the command line and gcc + was configured with --disable-threads (this will help avoid bug + reports from users complaining about threading when they + misconfigured the gcc bootstrap but are later consulting FreeBSD + manual pages that refer to the mythical -pthread option). */ #undef LIB_SPEC +#ifdef FBSD_NO_THREADS +#define LIB_SPEC " \ + %{pthread: %eThe -pthread option is only supported on FreeBSD when gcc \ +is built with the --enable-threads configure-time option.} \ + %{!shared: \ + %{!pg: -lc} \ + %{pg: -lc_p} \ + }" +#else +#if FBSD_MAJOR >= 5 +#define LIB_SPEC " \ + %{!shared: \ + %{!pg: %{pthread:-lc_r} -lc} \ + %{pg: %{pthread:-lc_r_p} -lc_p} \ + }" +#else #define LIB_SPEC " \ %{!shared: \ %{!pg: \ @@ -70,7 +118,8 @@ Boston, MA 02111-1307, USA. */ %{!pthread:-lc_p} \ %{pthread:-lc_r_p}} \ }" - +#endif +#endif /* Code generation parameters. */ @@ -97,9 +146,11 @@ Boston, MA 02111-1307, USA. */ #undef DEFAULT_VTABLE_THUNKS #define DEFAULT_VTABLE_THUNKS 1 -/* This is BSD, so use stabs instead of DWARF debug format. */ +/* The GNU tools operate better with dwarf2 than stabs. Since we + don't have any native tools to be compatible with, default to + dwarf2. */ #undef PREFERRED_DEBUGGING_TYPE -#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG +#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG #undef IDENT_ASM_OP #define IDENT_ASM_OP "\t.ident\t" |