diff options
author | hasso <hasso> | 2009-04-22 18:59:54 +0000 |
---|---|---|
committer | hasso <hasso> | 2009-04-22 18:59:54 +0000 |
commit | cbe920a120d82b211c1ebf4a6708d52e36a71aec (patch) | |
tree | ed7a67c19b7008c77bb1dcece3c53d25297c1364 /lang/gcc34 | |
parent | 1eb7428a5de265d92010ac53b895da606accbf17 (diff) | |
download | pkgsrc-cbe920a120d82b211c1ebf4a6708d52e36a71aec.tar.gz |
Hack it to work on DragonFly.
Diffstat (limited to 'lang/gcc34')
-rw-r--r-- | lang/gcc34/Makefile | 14 | ||||
-rw-r--r-- | lang/gcc34/distinfo | 6 | ||||
-rw-r--r-- | lang/gcc34/files/dragonfly-spec.h | 128 | ||||
-rw-r--r-- | lang/gcc34/files/dragonfly.h | 87 | ||||
-rw-r--r-- | lang/gcc34/files/i386-dragonfly.h | 142 | ||||
-rw-r--r-- | lang/gcc34/files/i386-dragonfly64.h | 45 | ||||
-rw-r--r-- | lang/gcc34/patches/patch-aa | 13 | ||||
-rw-r--r-- | lang/gcc34/patches/patch-ab | 51 | ||||
-rw-r--r-- | lang/gcc34/patches/patch-at | 31 |
9 files changed, 507 insertions, 10 deletions
diff --git a/lang/gcc34/Makefile b/lang/gcc34/Makefile index 5a9a3f559dd..4a6553e0add 100644 --- a/lang/gcc34/Makefile +++ b/lang/gcc34/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.40 2007/10/25 21:04:22 jlam Exp $ +# $NetBSD: Makefile,v 1.41 2009/04/22 18:59:54 hasso Exp $ # DISTNAME= gcc-${GCC_VERSION} @@ -90,6 +90,12 @@ CONFIGURE_ARGS+= --with-libiconv-prefix=${BUILDLINK_PREFIX.iconv} MAKE_ENV+= ICONVPREFIX=${BUILDLINK_PREFIX.iconv} MAKE_ENV+= SHELL=${CONFIG_SHELL} +# FIXME Because gcc ignores rpath for some reason, it breaks on DragonFly - +# binaries are linked against libintl. Disabling NLS for now. +.if ${OPSYS} == "DragonFly" +CONFIGURE_ARGS+= --disable-nls +.endif + UNLIMIT_RESOURCES+= datasize .if !empty(BUILD_F77:M[Yy][Ee][Ss]) @@ -195,6 +201,12 @@ pre-configure: done ) . endif .endif +.if ${OPSYS} == "DragonFly" + ${CP} ${FILESDIR}/dragonfly.h ${WRKSRC}/gcc/config/dragonfly.h + ${CP} ${FILESDIR}/dragonfly-spec.h ${WRKSRC}/gcc/config/dragonfly-spec.h + ${CP} ${FILESDIR}/i386-dragonfly.h ${WRKSRC}/gcc/config/i386/dragonfly.h + ${CP} ${FILESDIR}/i386-dragonfly64.h ${WRKSRC}/gcc/config/i386/dragonfly64.h +.endif do-configure: ${MKDIR} ${WRKDIR}/obj diff --git a/lang/gcc34/distinfo b/lang/gcc34/distinfo index 6080d7cc5e4..3662b2967ce 100644 --- a/lang/gcc34/distinfo +++ b/lang/gcc34/distinfo @@ -1,8 +1,10 @@ -$NetBSD: distinfo,v 1.18 2009/03/30 10:57:02 markd Exp $ +$NetBSD: distinfo,v 1.19 2009/04/22 18:59:54 hasso Exp $ SHA1 (gcc-3.4.6.tar.bz2) = 97b290fdc572c8e490b3b39f243e69bacad23c2b RMD160 (gcc-3.4.6.tar.bz2) = b15003368cedc7964f6ceaee0c39ddc43a46c442 Size (gcc-3.4.6.tar.bz2) = 28193401 bytes +SHA1 (patch-aa) = 40ba26c4af81ecc0effce3b7ac3c74bdfe4b56a6 +SHA1 (patch-ab) = 50345471e99264104e136acd7c09da0a5275cb62 SHA1 (patch-ae) = 928fa6155e614ca85b02359cf893d6c62231b192 SHA1 (patch-af) = cdd6b0d13c557996cb6582d7fa5dc651d37ee0ee SHA1 (patch-ag) = beee5294d387faafa640ab048823499da629e715 @@ -12,7 +14,7 @@ SHA1 (patch-aj) = ea0bef88be9e823ed2acfa54a59f29016de8cc5e SHA1 (patch-ak) = 1188e98e65fce3b968f9a2c211ffe315644d87d5 SHA1 (patch-al) = 3368a43981499dd46b2caa111eae19a0549d7499 SHA1 (patch-am) = 5a27d8f6a289f9b110a4bdc640547e43b799f08c -SHA1 (patch-at) = a8a310b85e661bbf2cb832027b84b72c1db27a0c +SHA1 (patch-at) = f74c2cd4919c59c0591e5aac7fdf8bb20fb87b96 SHA1 (patch-ba) = 6fc03fc155f630329f7dc831eece6b6464b453a6 SHA1 (patch-bb) = aa088194fb073fcde8d2f558ed55ec36106d60d0 SHA1 (patch-ca) = e04ff912406505abd015789f288ef09a7e1ae386 diff --git a/lang/gcc34/files/dragonfly-spec.h b/lang/gcc34/files/dragonfly-spec.h new file mode 100644 index 00000000000..2e94e24b66e --- /dev/null +++ b/lang/gcc34/files/dragonfly-spec.h @@ -0,0 +1,128 @@ +/* Base configuration file for all FreeBSD targets. + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Common DragonFly configuration. + All DragonFly architectures should include this file, which will specify + their commonalities. + Adapted from gcc/config/freebsd.h by + David O'Brien <obrien@FreeBSD.org> + Loren J. Rittle <ljrittle@acm.org>. */ + + +/* In case we need to know. */ +#define USING_CONFIG_DRAGONFLY_SPEC 1 + +/* This defines which switch letters take arguments. On DragonFly, most of + the normal cases (defined in gcc.c) apply, and we also have -h* and + -z* options (for the linker) (coming from SVR4). + We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */ + +#define DFBSD_SWITCH_TAKES_ARG(CHAR) \ + (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ + || (CHAR) == 'h' \ + || (CHAR) == 'z' /* ignored by ld */ \ + || (CHAR) == 'R') + +/* This defines which multi-letter switches take arguments. */ + +#define DFBSD_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")) + +#define DFBSD_TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + if (DFBSD_MAJOR == 4) \ + builtin_define ("__DragonFly__=4"); \ + else if (DFBSD_MAJOR == 3) \ + builtin_define ("__DragonFly__=3"); \ + if (DFBSD_MAJOR == 2) \ + builtin_define ("__DragonFly__=2"); \ + else if (DFBSD_MAJOR == 1) \ + builtin_define ("__DragonFly__=1"); \ + else \ + builtin_define ("__DragonFly__"); \ + builtin_define_std ("unix"); \ + builtin_define ("__KPRINTF_ATTRIBUTE__"); \ + builtin_assert ("system=unix"); \ + builtin_assert ("system=bsd"); \ + builtin_assert ("system=DragonFly"); \ + DFBSD_TARGET_CPU_CPP_BUILTINS(); \ + } \ + while (0) + +/* Define the default DragonFly-specific per-CPU hook code. */ +#define DFBSD_TARGET_CPU_CPP_BUILTINS() do {} while (0) + +/* Provide a CPP_SPEC appropriate for DragonFly. We just deal with the GCC + option `-posix', and PIC issues. */ + +#define DFBSD_CPP_SPEC " \ + %(cpp_cpu) \ + %{fPIC|fpic|fPIE|fpie:-D__PIC__ -D__pic__} \ + %{posix:-D_POSIX_SOURCE}" + +/* Provide a STARTFILE_SPEC appropriate for DragonFly. 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 DFBSD_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 DragonFly. 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 DFBSD_ENDFILE_SPEC \ + "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" + +/* Provide a LIB_SPEC appropriate for DragonFly as configured and as + required by the user-land thread model. */ + +/* Provide a LIB_SPEC appropriate for DragonFly. Just select the appropriate + libc, depending on whether we're doing profiling or need threads support. + (similar to the default, except no -lg, and no -p). */ + +#ifdef DFBSD_NO_THREADS +#define DFBSD_LIB_SPEC " \ + %{pthread: %eThe -pthread option is only supported on DragonFly when gcc \ +is built with the --enable-threads configure-time option.} \ + %{!shared: \ + %{!pg: -lc} \ + %{pg: -lc_p} \ + }" +#else +#define DFBSD_LIB_SPEC " \ + %{!shared: \ + %{!pg: %{pthread:-lpthread} -lc} \ + %{pg: %{pthread:-lpthread_p} -lc_p} \ + }" +#endif + +#define DFBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.2" diff --git a/lang/gcc34/files/dragonfly.h b/lang/gcc34/files/dragonfly.h new file mode 100644 index 00000000000..6853757b621 --- /dev/null +++ b/lang/gcc34/files/dragonfly.h @@ -0,0 +1,87 @@ +/* Base configuration file for all FreeBSD targets. + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Common DragonFly configuration. + All DragonFly 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>. + Further work by David O'Brien <obrien@FreeBSD.org> and + Loren J. Rittle <ljrittle@acm.org>. */ + + +/* In case we need to know. */ +#define USING_CONFIG_DRAGONFLY 1 + +/* This defines which switch letters take arguments. On DragonFly, most of + the normal cases (defined in gcc.c) apply, and we also have -h* and + -z* options (for the linker) (coming from SVR4). + We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */ + +#undef SWITCH_TAKES_ARG +#define SWITCH_TAKES_ARG(CHAR) (DFBSD_SWITCH_TAKES_ARG(CHAR)) + +#undef WORD_SWITCH_TAKES_ARG +#define WORD_SWITCH_TAKES_ARG(STR) (DFBSD_WORD_SWITCH_TAKES_ARG(STR)) + +#undef TARGET_OS_CPP_BUILTINS +#define TARGET_OS_CPP_BUILTINS() DFBSD_TARGET_OS_CPP_BUILTINS() + +#undef CPP_SPEC +#define CPP_SPEC DFBSD_CPP_SPEC + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC DFBSD_STARTFILE_SPEC + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC DFBSD_ENDFILE_SPEC + +#undef LIB_SPEC +#define LIB_SPEC DFBSD_LIB_SPEC + + +/************************[ Target stuff ]***********************************/ + +/* All DragonFly Architectures support the ELF object file format. */ +#undef OBJECT_FORMAT_ELF +#define OBJECT_FORMAT_ELF + +/* Don't assume anything about the header files. */ +#undef NO_IMPLICIT_EXTERN_C +#define NO_IMPLICIT_EXTERN_C 1 + +/* Make gcc agree with FreeBSD's standard headers (<machine/ansi.h>, etc...) */ + +#undef WCHAR_TYPE +#define WCHAR_TYPE "int" + +#define MATH_LIBRARY_PROFILE "-lm_p" + +/* Code generation parameters. */ + +/* Use periods rather than dollar signs in special g++ assembler names. + This ensures the configuration knows our system correctly so we can link + with libraries compiled with the native cc. */ +#undef NO_DOLLAR_IN_LABEL + +/* Used by libgcc2.c. We support file locking with fcntl / F_SETLKW. + This enables the test coverage code to use file locking when exiting a + program, which avoids race conditions if the program has forked. */ +#define TARGET_HAS_F_SETLKW diff --git a/lang/gcc34/files/i386-dragonfly.h b/lang/gcc34/files/i386-dragonfly.h new file mode 100644 index 00000000000..3617570b5bd --- /dev/null +++ b/lang/gcc34/files/i386-dragonfly.h @@ -0,0 +1,142 @@ +/* Definitions for Intel 386 running DragonFly + Copyright (C) 1996, 2000, 2002 Free Software Foundation, Inc. + Contributed by Eric Youngdale. + Modified for stabs-in-ELF by H.J. Lu. + Adapted from GNU/Linux version by John Polstra. + Continued development by David O'Brien <obrien@freebsd.org> + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + + +#define TARGET_VERSION fprintf (stderr, " (i386 DragonFly)"); + +/* Override the default comment-starter of "/". */ +#undef ASM_COMMENT_START +#define ASM_COMMENT_START "#" + +#undef ASM_APP_ON +#define ASM_APP_ON "#APP\n" + +#undef ASM_APP_OFF +#define ASM_APP_OFF "#NO_APP\n" + +#undef DBX_REGISTER_NUMBER +#define DBX_REGISTER_NUMBER(n) \ + (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n]) + +#undef NO_PROFILE_COUNTERS +#define NO_PROFILE_COUNTERS 1 + +/* Tell final.c that we don't need a label passed to mcount. */ + +#undef MCOUNT_NAME +#define MCOUNT_NAME ".mcount" + +/* Make gcc agree with <machine/ansi.h>. */ + +#undef SIZE_TYPE +#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int") + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int") + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE (TARGET_64BIT ? 32 : BITS_PER_WORD) + +#undef SUBTARGET_EXTRA_SPECS /* i386.h bogusly defines it. */ +#define SUBTARGET_EXTRA_SPECS \ + { "dfbsd_dynamic_linker", DFBSD_DYNAMIC_LINKER } + +/* Provide a STARTFILE_SPEC appropriate for DragonFly. 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'. */ + +#undef STARTFILE_SPEC +#define 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 DragonFly. 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'. */ + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" + +/* Provide a LINK_SPEC appropriate for DragonFly. Here we provide support + for the special GCC options -static and -shared, which allow us to + link things in one of these three modes by applying the appropriate + combinations of options at link-time. We like to support here for + as many of the other GNU linker options as possible. But I don't + have the time to search for those flags. I am sure how to add + support for -soname shared_object_name. H.J. + + I took out %{v:%{!V:-V}}. It is too much :-(. They can use + -Wl,-V. + + When the -shared link option is used a final link is not being + done. */ + +#undef LINK_SPEC +#define LINK_SPEC "\ + %{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \ + %{Wl,*:%*} \ + %{v:-V} \ + %{assert*} %{R*} %{rpath*} %{defsym*} \ + %{shared:-Bshareable %{h*} %{soname*}} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker %(dfbsd_dynamic_linker) }} \ + %{static:-Bstatic}} \ + %{symbolic:-Bsymbolic}" + +/* A C statement to output to the stdio stream FILE an assembler + command to advance the location counter to a multiple of 1<<LOG + bytes if it is within MAX_SKIP bytes. + + This is used to align code labels according to Intel recommendations. */ + +#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN +#undef ASM_OUTPUT_MAX_SKIP_ALIGN +#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE, LOG, MAX_SKIP) \ + if ((LOG) != 0) { \ + if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \ + else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \ + } +#endif + +/* Don't default to pcc-struct-return, we want to retain compatibility with + older gcc versions AND pcc-struct-return is nonreentrant. + (even though the SVR4 ABI for the i386 says that records and unions are + returned in memory). */ + +#undef DEFAULT_PCC_STRUCT_RETURN +#define DEFAULT_PCC_STRUCT_RETURN 0 + +/* DragonFly sets the rounding precision of the FPU to 53 bits. Let the + compiler get the contents of <float.h> and std::numeric_limits correct. */ +#undef TARGET_96_ROUND_53_LONG_DOUBLE +#define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT) diff --git a/lang/gcc34/files/i386-dragonfly64.h b/lang/gcc34/files/i386-dragonfly64.h new file mode 100644 index 00000000000..1e4530f1dc8 --- /dev/null +++ b/lang/gcc34/files/i386-dragonfly64.h @@ -0,0 +1,45 @@ +/* Definitions for AMD x86-64 running DragonFly with ELF format + Copyright (C) 2002 Free Software Foundation, Inc. + Contributed by David O'Brien <obrien@FreeBSD.org> + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + + +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (DragonFly/x86-64)"); + +#define SUBTARGET_EXTRA_SPECS \ + { "dfbsd_dynamic_linker", DFBSD_DYNAMIC_LINKER } + +/* Provide a LINK_SPEC appropriate for the DragonFly/x86-64 target. + This is a copy of LINK_SPEC from <i386/dragonfly.h> tweaked for + the x86-64 target. */ + +#undef LINK_SPEC +#define LINK_SPEC "\ + %{m32:-m elf_i386_dfbsd} \ + %{Wl,*:%*} \ + %{v:-V} \ + %{assert*} %{R*} %{rpath*} %{defsym*} \ + %{shared:-Bshareable %{h*} %{soname*}} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker %(dfbsd_dynamic_linker) }} \ + %{static:-Bstatic}} \ + %{symbolic:-Bsymbolic}" diff --git a/lang/gcc34/patches/patch-aa b/lang/gcc34/patches/patch-aa new file mode 100644 index 00000000000..6109ff74572 --- /dev/null +++ b/lang/gcc34/patches/patch-aa @@ -0,0 +1,13 @@ +$NetBSD: patch-aa,v 1.1 2009/04/22 18:59:54 hasso Exp $ + +--- boehm-gc/include/private/gcconfig.h.orig 2009-04-08 14:54:58 +0300 ++++ boehm-gc/include/private/gcconfig.h 2009-04-08 14:55:38 +0300 +@@ -55,7 +55,7 @@ + # endif + + /* And one for FreeBSD: */ +-# if defined(__FreeBSD__) ++# if defined(__FreeBSD__) || defined(__DragonFly__) + # define FREEBSD + # endif + diff --git a/lang/gcc34/patches/patch-ab b/lang/gcc34/patches/patch-ab new file mode 100644 index 00000000000..41dbe0517ed --- /dev/null +++ b/lang/gcc34/patches/patch-ab @@ -0,0 +1,51 @@ +$NetBSD: patch-ab,v 1.1 2009/04/22 18:59:54 hasso Exp $ + +--- ../gcc-3.4.6/gcc/config.gcc 2005-07-20 00:08:48 +0300 ++++ gcc/config.gcc 2009-04-09 09:26:24 +0300 +@@ -451,6 +451,33 @@ case ${target} in + "" | yes | posix) thread_file='posix' ;; + esac + ;; ++*-*-dragonfly*) ++ gas=yes ++ gnu_ld=yes ++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" ++ case ${target} in ++ *-*-dragonfly1 | *-*-dragonfly[1].*) ++ tm_defines="${tm_defines} DFBSD_MAJOR=1" ;; ++ *-*-dragonfly2 | *-*-dragonfly[2].*) ++ tm_defines="${tm_defines} DFBSD_MAJOR=2" ;; ++ *-*-dragonfly3 | *-*-dragonfly[3].*) ++ tm_defines="${tm_defines} DFBSD_MAJOR=3" ;; ++ *-*-dragonfly4 | *-*-dragonfly[4].*) ++ tm_defines="${tm_defines} DFBSD_MAJOR=4" ;; ++ *) ++ echo 'Please update *-*-dragonfly* in gcc/config.gcc' ++ exit 1 ++ ;; ++ esac ++ tmake_file="t-slibgcc-elf-ver t-dragonfly" ++ case ${enable_threads} in ++ "" | yes | posix) ++ thread_file='posix' ++ tmake_file="${tmake_file} t-dragonfly-thread" ++ ;; ++ esac ++ dfbsd_tm_file="${dfbsd_tm_file} dragonfly-spec.h dragonfly.h" ++ ;; + *-*-linux*libc1* | *-*-linux*aout*) + # Avoid the generic linux case. + ;; +@@ -964,6 +991,12 @@ i[34567]86-*-freebsd*) + x86_64-*-freebsd*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h" + ;; ++i[34567]86-*-dragonfly*) ++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${dfbsd_tm_file} i386/dragonfly.h" ++ ;; ++x86_64-*-dragonfly*) ++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${dfbsd_tm_file} i386/x86-64.h i386/dragonfly.h i386/dragonfly64.h" ++ ;; + i[34567]86-*-netbsdelf*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h" + ;; diff --git a/lang/gcc34/patches/patch-at b/lang/gcc34/patches/patch-at index f4d72aec34c..1808688e19b 100644 --- a/lang/gcc34/patches/patch-at +++ b/lang/gcc34/patches/patch-at @@ -1,24 +1,41 @@ -$NetBSD: patch-at,v 1.1 2009/03/30 10:57:02 markd Exp $ +$NetBSD: patch-at,v 1.2 2009/04/22 18:59:54 hasso Exp $ Alternative fix for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38182 ---- gcc/ginclude/stddef.h.orig 2009-02-28 18:57:06.000000000 +0100 -+++ gcc/ginclude/stddef.h -@@ -64,7 +64,7 @@ Boston, MA 02111-1307, USA. */ +--- gcc/ginclude/stddef.h.orig 2004-08-12 03:34:33 +0300 ++++ gcc/ginclude/stddef.h 2009-04-09 12:05:04 +0300 +@@ -61,10 +61,15 @@ Boston, MA 02111-1307, USA. */ + #include <sys/_types.h> + #endif + ++#if defined (__DragonFly__) ++#include <machine/stdint.h> ++#include <sys/types.h> ++#endif ++ /* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are defined if the corresponding type is *not* defined. FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_ */ -#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) -+#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(__NetBSD__) ++#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(__NetBSD__) || defined(__DragonFly__) #if !defined(_SIZE_T_) && !defined(_BSD_SIZE_T_) #define _SIZE_T #endif -@@ -359,7 +359,7 @@ typedef __WINT_TYPE__ wint_t; +@@ -201,7 +205,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t; + #define ___int_size_t_h + #define _GCC_SIZE_T + #define _SIZET_ +-#if defined (__FreeBSD__) && (__FreeBSD__ >= 5) ++#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) || defined(__DragonFly__) + /* __size_t is a typedef on FreeBSD 5!, must not trash it. */ + #else + #define __size_t +@@ -359,7 +363,7 @@ typedef __WINT_TYPE__ wint_t; /* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc. are already defined. */ /* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */ -#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) -+#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(__NetBSD__) ++#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(__NetBSD__) || defined(__DragonFly__) /* The references to _GCC_PTRDIFF_T_, _GCC_SIZE_T_, and _GCC_WCHAR_T_ are probably typos and should be removed before 2.8 is released. */ #ifdef _GCC_PTRDIFF_T_ |