From: Loren J. Rittle Date: Tue, 22 May 2001 19:28:15 +0000 (+0000) Subject: freebsd.h (LIB_SPEC): Key the exact setting to configure-time options and target... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=766a4175b12e77540da5a39482d1cd3e4beb81ff;p=gcc.git 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 From-SVN: r42464 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 919b3f4f3de..efdd1a4b422 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2001-05-22 Loren J. Rittle + David O'Brien + + * 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. + 2001-05-22 Loren J. Rittle David O'Brien diff --git a/gcc/config/alpha/freebsd.h b/gcc/config/alpha/freebsd.h index f7c76b2a876..494fdab7a98 100644 --- a/gcc/config/alpha/freebsd.h +++ b/gcc/config/alpha/freebsd.h @@ -19,10 +19,6 @@ along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ -#undef CPP_PREDEFINES -#define CPP_PREDEFINES \ - "-D__ELF__ -Dunix -D__FreeBSD__ -Asystem(unix) -Asystem(bsd) -Asystem(FreeBSD)" - /* Provide a CPP_SPEC appropriate for FreeBSD/alpha. Besides the dealing with the GCC option `-posix', and PIC issues as on all FreeBSD platforms, we must deal with the Alpha's FP issues. */ diff --git a/gcc/config/freebsd.h b/gcc/config/freebsd.h index 18065c01cd8..8b526ca1cf2 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 . */ + David O'Brien . + Further work by David O'Brien and + Loren J. Rittle . */ /* 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 + 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" diff --git a/gcc/config/i386/freebsd.h b/gcc/config/i386/freebsd.h index 6ae623507c4..2d34117d118 100644 --- a/gcc/config/i386/freebsd.h +++ b/gcc/config/i386/freebsd.h @@ -78,10 +78,6 @@ Boston, MA 02111-1307, USA. */ #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE BITS_PER_WORD -#undef CPP_PREDEFINES -#define CPP_PREDEFINES "-Dunix -D__ELF__ -D__FreeBSD__\ - -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" - /* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add the magical crtbegin.o file (see crtstuff.c) which provides part of the support for getting C++ file-scope static object constructed