diff options
Diffstat (limited to 'contrib/gcc/config/freebsd-spec.h')
-rw-r--r-- | contrib/gcc/config/freebsd-spec.h | 87 |
1 files changed, 57 insertions, 30 deletions
diff --git a/contrib/gcc/config/freebsd-spec.h b/contrib/gcc/config/freebsd-spec.h index 4d81d80..63a56c0 100644 --- a/contrib/gcc/config/freebsd-spec.h +++ b/contrib/gcc/config/freebsd-spec.h @@ -18,6 +18,8 @@ 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. */ +/* $FreeBSD$ */ + /* Common FreeBSD configuration. All FreeBSD architectures should include this file, which will specify their commonalities. @@ -67,6 +69,7 @@ Boston, MA 02111-1307, USA. */ builtin_assert ("system=unix"); \ builtin_assert ("system=bsd"); \ builtin_assert ("system=FreeBSD"); \ + FBSD_NATIVE_TARGET_OS_CPP_BUILTINS(); \ FBSD_TARGET_CPU_CPP_BUILTINS(); \ } \ while (0) @@ -74,48 +77,71 @@ Boston, MA 02111-1307, USA. */ /* Define the default FreeBSD-specific per-CPU hook code. */ #define FBSD_TARGET_CPU_CPP_BUILTINS() do {} while (0) +#ifdef FREEBSD_NATIVE +#define FBSD_NATIVE_TARGET_OS_CPP_BUILTINS() \ + do { \ + builtin_define_std ("__FreeBSD_cc_version=510002"); \ + } while (0) +#else +#define FBSD_NATIVE_TARGET_OS_CPP_BUILTINS() \ + do {} while (0) +#endif + /* Provide a CPP_SPEC appropriate for FreeBSD. We just deal with the GCC - option `-posix', and PIC issues. */ + option `-posix', and PIC issues. Try to detect support for the + `long long' type. Unfortunately the GCC spec parser will not allow us + to properly detect the "iso9899:1990" and "iso9899:199409" forms of + -std=c89. Because of the ':' in the -std argument. :-( I have left + them in the spec as a place holder in hopes someone knows a way to make + the detection of them work. */ #define FBSD_CPP_SPEC " \ %(cpp_cpu) \ %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \ + %{!ansi:%{!std=c89:%{!std=iso9899.1990:%{!std=iso9899.199409:-D_LONGLONG}}}} \ %{posix:-D_POSIX_SOURCE}" -/* 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 - before entering `main'. */ +/* 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 before entering `main'. */ -#define FBSD_STARTFILE_SPEC \ - "%{!shared: \ - %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ - %{!p:%{profile:gcrt1.o%s} \ - %{!profile:crt1.o%s}}}} \ - crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" - -/* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on - the magical crtend.o file (see crtstuff.c) which provides part of - the support for getting C++ file-scope static object constructed - before entering `main', followed by a normal "finalizer" file, - `crtn.o'. */ - -#define FBSD_ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" +#define FBSD_STARTFILE_SPEC "\ + %{!shared: \ + %{pg:gcrt1.o%s} \ + %{!pg: \ + %{p:gcrt1.o%s} \ + %{!p: \ + %{profile:gcrt1.o%s} \ + %{!profile:crt1.o%s}}}} \ + crti.o%s \ + %{!shared:crtbegin.o%s} \ + %{shared:crtbeginS.o%s}" + +/* Provide an ENDFILE_SPEC appropriate for FreeBSD/i386. Here we tack on + our own magical crtend.o file (see crtstuff.c) which provides part of + the support for getting C++ file-scope static object constructed before + entering `main', followed by the normal "finalizer" file, `crtn.o'. */ + +#define FBSD_ENDFILE_SPEC "\ + %{!shared:crtend.o%s} \ + %{shared:crtendS.o%s} \ + crtn.o%s " /* 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). */ + 500016 and later, threads libraries can be linked with libc. + Because of this, and because different (not multiple) threading + libraries may be selected in the link option, the -pthread option + is no longer supported. 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). */ /* Provide a LIB_SPEC appropriate for FreeBSD. Just select the appropriate libc, depending on whether we're doing profiling or need threads support. @@ -130,7 +156,8 @@ is built with the --enable-threads configure-time option.} \ %{pg: -lc_p} \ }" #else -#if FBSD_MAJOR >= 5 +#include <sys/param.h> +#if __FreeBSD_version >= 500016 #define FBSD_LIB_SPEC " \ %{!shared: \ %{!pg: %{pthread:-lc_r} -lc} \ |