summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/config/freebsd-spec.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/config/freebsd-spec.h')
-rw-r--r--contrib/gcc/config/freebsd-spec.h87
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} \
OpenPOWER on IntegriCloud