summaryrefslogtreecommitdiff
path: root/lang/gcc49
diff options
context:
space:
mode:
authorjperkin <jperkin@pkgsrc.org>2014-09-04 18:43:11 +0000
committerjperkin <jperkin@pkgsrc.org>2014-09-04 18:43:11 +0000
commit66f5e90cf80009cb20a1e625f6538c937549bf94 (patch)
treebfc143d2c52b45b8967ffee5445b1ed3d1ab747f /lang/gcc49
parentb2234a912856eec29ba6bf363f3e97c9c84dbdcc (diff)
downloadpkgsrc-66f5e90cf80009cb20a1e625f6538c937549bf94.tar.gz
Initial import of gcc49-4.9.1 as lang/gcc49.
Changes, New Features, and Fixes in GCC 4.9 can be found here: https://gcc.gnu.org/gcc-4.9/changes.html This is based heavily on lang/gcc47 but updated for GCC 4.9.1. Tested on SmartOS (32-bit and 64-bit) and NetBSD 6.1.4/amd64.
Diffstat (limited to 'lang/gcc49')
-rw-r--r--lang/gcc49/DESCR3
-rw-r--r--lang/gcc49/Makefile162
-rw-r--r--lang/gcc49/PLIST.java42
-rw-r--r--lang/gcc49/buildlink3.mk34
-rw-r--r--lang/gcc49/distinfo45
-rw-r--r--lang/gcc49/files/values.c64
-rw-r--r--lang/gcc49/options.mk171
-rw-r--r--lang/gcc49/patches/patch-contrib_make__sunver.pl20
-rw-r--r--lang/gcc49/patches/patch-gcc_Makefile.in14
-rw-r--r--lang/gcc49/patches/patch-gcc_config.gcc85
-rw-r--r--lang/gcc49/patches/patch-gcc_config_dragonfly-stdint.h63
-rw-r--r--lang/gcc49/patches/patch-gcc_config_dragonfly.h142
-rw-r--r--lang/gcc49/patches/patch-gcc_config_dragonfly.opt72
-rw-r--r--lang/gcc49/patches/patch-gcc_config_i386_dragonfly.h108
-rw-r--r--lang/gcc49/patches/patch-gcc_config_netbsd-stdint.h63
-rw-r--r--lang/gcc49/patches/patch-gcc_configure29
-rw-r--r--lang/gcc49/patches/patch-gcc_fortran_f95-lang.c30
-rw-r--r--lang/gcc49/patches/patch-gcc_ginclude_stddef.h68
-rw-r--r--lang/gcc49/patches/patch-include_libiberty.h15
-rw-r--r--lang/gcc49/patches/patch-libcilkrts_runtime_os-unix.c33
-rw-r--r--lang/gcc49/patches/patch-libgcc_config.host50
-rw-r--r--lang/gcc49/patches/patch-libgcc_config_i386_dragonfly-unwind.h165
-rw-r--r--lang/gcc49/patches/patch-libgcc_config_t-slibgcc-darwin26
-rw-r--r--lang/gcc49/patches/patch-libgcc_crtstuff.c29
-rw-r--r--lang/gcc49/patches/patch-libgcc_unwind-dw2-fde-dip.c26
-rw-r--r--lang/gcc49/patches/patch-libgfortran_configure15
-rw-r--r--lang/gcc49/patches/patch-libgo_Makefile.in16
-rw-r--r--lang/gcc49/patches/patch-libgo_runtime_proc.c17
-rw-r--r--lang/gcc49/patches/patch-libiberty_Makefile.in16
-rw-r--r--lang/gcc49/patches/patch-libjava_Makefile.in16
-rw-r--r--lang/gcc49/patches/patch-libjava_boehm.cc27
-rw-r--r--lang/gcc49/patches/patch-libjava_configure17
-rw-r--r--lang/gcc49/patches/patch-libjava_contrib_rebuild-gcj-db.in29
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc307
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc181
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h67
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc106
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h168
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h48
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h39
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc59
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h15
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_configure49
-rw-r--r--lang/gcc49/patches/patch-libstdc++-v3_configure.host16
-rw-r--r--lang/gcc49/version.mk2
45 files changed, 2769 insertions, 0 deletions
diff --git a/lang/gcc49/DESCR b/lang/gcc49/DESCR
new file mode 100644
index 00000000000..0262b0919e3
--- /dev/null
+++ b/lang/gcc49/DESCR
@@ -0,0 +1,3 @@
+The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C,
+Fortran, Java, and Go, as well as libraries for these languages (libstdc++,
+libgcj,...).
diff --git a/lang/gcc49/Makefile b/lang/gcc49/Makefile
new file mode 100644
index 00000000000..f35c79886fe
--- /dev/null
+++ b/lang/gcc49/Makefile
@@ -0,0 +1,162 @@
+# $NetBSD: Makefile,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+GCC_PKGNAME= gcc49
+.include "version.mk"
+
+DISTNAME= gcc-${GCC49_DIST_VERSION}
+PKGNAME= ${GCC_PKGNAME}-${GCC49_DIST_VERSION}
+
+## When bumping the PKGREVISION of this package the PKGREVISION of
+## lang/gcc49-libs needs to be bump to be at least 1 more than the
+## PKGREVISION of this package!
+#PKGREVISION=
+
+CATEGORIES= lang
+MASTER_SITES= ${MASTER_SITE_GNU:=gcc/gcc-${GCC49_DIST_VERSION}/}
+EXTRACT_SUFX= .tar.bz2
+
+MAINTAINER= pkgsrc-users@NetBSD.org
+HOMEPAGE= http://gcc.gnu.org/
+COMMENT= The GNU Compiler Collection (GCC) - 4.9 Release Series
+LICENSE= gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND gnu-lgpl-v3
+
+DISTFILES= ${DEFAULT_DISTFILES}
+EXTRACT_ONLY= ${DEFAULT_DISTFILES}
+
+NOT_FOR_PLATFORM= Interix-*-*
+
+USE_LANGUAGES= c c++
+USE_TOOLS+= gmake makeinfo sed:run
+
+GNU_CONFIGURE= yes
+## Build outside ${WRKSRC}
+OBJDIR= ../build
+CONFIGURE_DIRS= ${OBJDIR}
+CONFIGURE_SCRIPT= ../${DISTNAME}/configure
+GCC_SUBPREFIX= ${GCC_PKGNAME}
+GCC_PREFIX= ${PREFIX}/${GCC_SUBPREFIX}
+GCC_TARGET_MACHINE?= ${MACHINE_GNU_PLATFORM}
+GNU_CONFIGURE_PREFIX= ${GCC_PREFIX}
+INFO_FILES= yes
+
+UNLIMIT_RESOURCES+= datasize
+UNLIMIT_RESOURCES+= stacksize
+
+SUBST_CLASSES+= vars
+SUBST_STAGE.vars= pre-configure
+SUBST_FILES.vars= gcc/Makefile.in
+SUBST_VARS.vars= GCC_TARGET_MACHINE
+
+.include "../../mk/bsd.prefs.mk"
+
+LANGS= c
+
+# In some cases LINKER_RPATH_FLAG needs a trailing space.
+LINKER_RPATH_FLAG:= ${LINKER_RPATH_FLAG:S/-rpath/& /}
+
+## The Library rpath to use in end programs.
+LDFLAGS_FOR_TARGET= ${LDFLAGS:M${COMPILER_RPATH_FLAG}*:N*/usr/lib*}
+
+# The "-static-libstdc++ -static-libgcc" flags are normally added to the
+# boot-ldflags by configure but because we are supply the boot-ldflags
+# we mash supply them.
+BOOT_LDFLAGS= -static-libstdc++ -static-libgcc ${LDFLAGS_FOR_TARGET}
+# Needed on Darwin when LDFLAGS point to a SDK
+BOOT_LDFLAGS+= ${LDFLAGS:M-Wl,-syslibroot*}
+
+## For target librarys and libjava programs.
+CONFIGURE_ENV+= LDFLAGS_FOR_TARGET=${LDFLAGS_FOR_TARGET:Q}
+
+CONFIGURE_ARGS+= --enable-languages=${LANGS:Q}
+CONFIGURE_ARGS+= --enable-shared
+CONFIGURE_ARGS+= --enable-long-long
+CONFIGURE_ARGS+= --with-local-prefix=${GCC_PREFIX:Q}
+CONFIGURE_ARGS+= --enable-libssp
+CONFIGURE_ARGS+= --enable-threads=posix
+CONFIGURE_ARGS+= --with-boot-ldflags=${BOOT_LDFLAGS:Q}
+.if ${OPSYS} == "NetBSD"
+CONFIGURE_ARGS+= --with-gnu-ld --with-ld=/usr/bin/ld
+CONFIGURE_ARGS+= --with-gnu-as --with-as=/usr/bin/as
+MAKE_ENV+= ac_cv_func_clock_gettime=yes
+MAKE_ENV+= ac_cv_func_gethostbyname_r=no
+.endif
+.if ${OPSYS} == "DragonFly"
+CONFIGURE_ARGS+= --disable-bootstrap
+.endif
+.if ${OPSYS} == "Darwin"
+# See ${WRKSRC}/libgcc/config/t-slibgcc-darwin: It uses strip(1) to
+# create a stub library, not just to remove symbols, so we must not
+# let strip(1) be a no-op regardless of ${INSTALL_UNSTRIPPED} or the
+# build fails for missing files.
+CONFIGURE_ARGS+= STRIP_FOR_TARGET=${TOOLS_PLATFORM.strip}
+.endif
+
+.if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || !empty(MACHINE_PLATFORM:MLinux-*-i386)
+CONFIGURE_ARGS+= --with-arch=i486 --with-tune=i486
+.endif
+
+.include "options.mk"
+
+# ${WRKSRC}/fixincludes/ looks for sed and compiles the path to sed into
+# a binary so we need to make sure we give it the installed sed and not
+# the tool wrapped one.
+MAKE_ENV+= ac_cv_path_SED=${TOOLS_SED}
+MAKE_ENV+= lt_cv_path_SED=${TOOLS_SED}
+
+.if ${OPSYS} == "SunOS"
+# Determine whether to use binutils
+. if exists(/usr/sfw/bin/gobjdump)
+CONFIGURE_ENV+= OBJDUMP=/usr/sfw/bin/gobjdump
+. endif
+. if exists(/usr/bin/ld)
+CONFIGURE_ARGS+= --without-gnu-ld --with-ld=/usr/bin/ld
+. else
+CONFIGURE_ARGS+= --without-gnu-ld --with-ld=/usr/ccs/bin/ld
+. endif
+. if exists(/usr/sfw/bin/gas)
+CONFIGURE_ARGS+= --with-gnu-as --with-as=/usr/sfw/bin/gas
+. elif exists(/usr/ccs/bin/as)
+CONFIGURE_ARGS+= --without-gnu-as --with-as=/usr/ccs/bin/as
+. else
+BUILDLINK_DEPMETHOD.binutils= full
+. include "../../devel/binutils/buildlink3.mk"
+CONFIGURE_ARGS+= --with-gnu-as --with-as=${PREFIX}/bin/gas
+. endif
+.endif
+
+pre-configure:
+ ${RUN} cd ${WRKSRC} && ${MKDIR} ${OBJDIR}
+
+TEST_TARGET= -k check || ${TRUE}
+pre-test:
+ ${RUN} \
+ if runtest --version >/dev/null 2>/dev/null ; then \
+ : ; \
+ else \
+ ${ECHO} "ERROR: Please install devel/dejagnu in order to run the test suite." ; \
+ exit 1 ; \
+ fi
+post-test:
+ ${RUN} cd ${WRKSRC} && cd ${OBJDIR} && \
+ ${SHELL} ${WRKSRC}/contrib/test_summary >${WRKDIR}/test_summary.log
+ @${INFO_MSG} "Test summary are available in ${WRKDIR}/test_summary.log"
+
+post-install:
+ ${TEST} -f ${DESTDIR}${GCC_PREFIX}/bin/cc || \
+ ( cd ${DESTDIR}${GCC_PREFIX}/bin ; ${LN} -f gcc cc )
+.if !empty(PKG_OPTIONS:Mgcc-java)
+ ${RM} -f ${DESTDIR}${JAVA_HOME}/bin/javadoc
+ ${RM} -f ${DESTDIR}${JAVA_HOME}/jre/lib/${JAVA_ARCH}/libjawt.so
+.endif
+.if !empty(MACHINE_PLATFORM:MSunOS-*-*86*) && ${OS_VERSION} != "5.11"
+ ${SH} files/values.c ${DESTDIR}${GCC_PREFIX}/bin/gcc -m32 || ${TRUE}
+ ${SH} files/values.c ${DESTDIR}${GCC_PREFIX}/bin/gcc -m64 || ${TRUE}
+.endif
+
+GENERATE_PLIST+= \
+ cd ${DESTDIR}${PREFIX} && \
+ ${FIND} ${GCC_SUBPREFIX} \( -type f -o -type l \) -print | ${SORT} ;
+
+.include "../../mk/dlopen.buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/lang/gcc49/PLIST.java b/lang/gcc49/PLIST.java
new file mode 100644
index 00000000000..56d6a698607
--- /dev/null
+++ b/lang/gcc49/PLIST.java
@@ -0,0 +1,42 @@
+@comment $NetBSD: PLIST.java,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+bin/${JAVA_NAME}-appletviewer
+bin/${JAVA_NAME}-jar
+bin/${JAVA_NAME}-jarsigner
+bin/${JAVA_NAME}-java
+bin/${JAVA_NAME}-javah
+bin/${JAVA_NAME}-keytool
+bin/${JAVA_NAME}-native2ascii
+bin/${JAVA_NAME}-orbd
+bin/${JAVA_NAME}-rmic
+bin/${JAVA_NAME}-rmid
+bin/${JAVA_NAME}-rmiregistry
+bin/${JAVA_NAME}-serialver
+bin/${JAVA_NAME}-tnameserv
+java/${JAVA_NAME}/bin/appletviewer
+java/${JAVA_NAME}/bin/jar
+java/${JAVA_NAME}/bin/jarsigner
+java/${JAVA_NAME}/bin/java
+java/${JAVA_NAME}/bin/javah
+java/${JAVA_NAME}/bin/keytool
+java/${JAVA_NAME}/bin/native2ascii
+java/${JAVA_NAME}/bin/orbd
+java/${JAVA_NAME}/bin/rmic
+java/${JAVA_NAME}/bin/rmid
+java/${JAVA_NAME}/bin/rmiregistry
+java/${JAVA_NAME}/bin/serialver
+java/${JAVA_NAME}/bin/tnameserv
+java/${JAVA_NAME}/include/jawt.h
+java/${JAVA_NAME}/include/jni.h
+java/${JAVA_NAME}/include/linux/jawt_md.h
+java/${JAVA_NAME}/include/linux/jni_md.h
+java/${JAVA_NAME}/jre/bin/java
+java/${JAVA_NAME}/jre/bin/keytool
+java/${JAVA_NAME}/jre/bin/orbd
+java/${JAVA_NAME}/jre/bin/rmid
+java/${JAVA_NAME}/jre/bin/rmiregistry
+java/${JAVA_NAME}/jre/bin/tnameserv
+java/${JAVA_NAME}/jre/lib/${JAVA_ARCH}/client/libjvm.so
+java/${JAVA_NAME}/jre/lib/${JAVA_ARCH}/server/libjvm.so
+java/${JAVA_NAME}/jre/lib/rt.jar
+java/${JAVA_NAME}/jre/lib/security/java.security
+java/${JAVA_NAME}/lib/tools.jar
diff --git a/lang/gcc49/buildlink3.mk b/lang/gcc49/buildlink3.mk
new file mode 100644
index 00000000000..74dc2a0e8a4
--- /dev/null
+++ b/lang/gcc49/buildlink3.mk
@@ -0,0 +1,34 @@
+# $NetBSD: buildlink3.mk,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+BUILDLINK_TREE+= gcc49
+
+.if !defined(GCC49_BUILDLINK3_MK)
+GCC49_BUILDLINK3_MK:=
+
+BUILDLINK_API_DEPENDS.gcc49+= gcc49>=${_GCC_REQD}
+BUILDLINK_ABI_DEPENDS.gcc49+= gcc49>=4.9.1
+BUILDLINK_PKGSRCDIR.gcc49= ../../lang/gcc49
+BUILDLINK_DEPMETHOD.gcc49?= build
+
+FIND_PREFIX:= BUILDLINK_PREFIX.gcc49=gcc49
+.include "../../mk/find-prefix.mk"
+BUILDLINK_PASSTHRU_DIRS+= ${BUILDLINK_PREFIX.gcc49}/gcc49
+
+BUILDLINK_FILES.gcc49= #empty
+BUILDLINK_AUTO_VARS.gcc49= no
+
+# Packages that link against shared libraries need a full dependency.
+.if defined(_USE_GCC_SHLIB)
+DEPENDS+= {gcc49,gcc49-libs}>=${_GCC_REQD}:../../lang/gcc49-libs
+.endif
+
+pkgbase := gcc49
+.include "../../mk/pkg-build-options.mk"
+.if !empty(PKG_BUILD_OPTIONS.gcc49:Mgcc-java)
+.include "../../devel/zlib/buildlink3.mk"
+.endif
+
+.include "../../mk/dlopen.buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
+.endif # GCC49_BUILDLINK3_MK
+BUILDLINK_TREE+= -gcc49
diff --git a/lang/gcc49/distinfo b/lang/gcc49/distinfo
new file mode 100644
index 00000000000..53582fbbccc
--- /dev/null
+++ b/lang/gcc49/distinfo
@@ -0,0 +1,45 @@
+$NetBSD: distinfo,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+SHA1 (ecj-4.5.jar) = 58c1d79c64c8cd718550f32a932ccfde8d1e6449
+RMD160 (ecj-4.5.jar) = d3f4da657f086b6423f74e93f001132f4855368a
+Size (ecj-4.5.jar) = 1470676 bytes
+SHA1 (gcc-4.9.1.tar.bz2) = 3f303f403053f0ce79530dae832811ecef91197e
+RMD160 (gcc-4.9.1.tar.bz2) = 7a829a260648a190afa1d6c616c78ddc861f4f7d
+Size (gcc-4.9.1.tar.bz2) = 89854120 bytes
+SHA1 (patch-contrib_make__sunver.pl) = 49cbd1a83c9b65d07a373262fcf6f71069283d2e
+SHA1 (patch-gcc_Makefile.in) = 45c7a61cf22d02299d2308ba34f0ceb272ad5c5e
+SHA1 (patch-gcc_config.gcc) = f8dc39c70aff31b1b9479895a14710ee9b168b3c
+SHA1 (patch-gcc_config_dragonfly-stdint.h) = 249e78bf2171fcd29eae498e41a12bf747015a19
+SHA1 (patch-gcc_config_dragonfly.h) = 5d671b7cdf8b8e3798dd7ec47f56708aa3548f38
+SHA1 (patch-gcc_config_dragonfly.opt) = b01bee26978f7feb62fc2ec21186449ccaea0db7
+SHA1 (patch-gcc_config_i386_dragonfly.h) = 5756b62791273f77866f06be1df0c267dc90a2ee
+SHA1 (patch-gcc_config_netbsd-stdint.h) = fc430c80adda9d3f58eea47816338f697a659889
+SHA1 (patch-gcc_configure) = eb52890725d2eabb200275b6cb61fd86d976ee31
+SHA1 (patch-gcc_fortran_f95-lang.c) = 9dbac16c146821eed9b06e1e9f0da85ff5c4ee75
+SHA1 (patch-gcc_ginclude_stddef.h) = 8af3e4b4058fc623c61e91f5771699f0ce679957
+SHA1 (patch-include_libiberty.h) = 5254c6a421ae16c71571820f6f07906367f042ba
+SHA1 (patch-libcilkrts_runtime_os-unix.c) = 165e736decbc6e0e3d905d418d71cf4873927925
+SHA1 (patch-libgcc_config.host) = c929bfbd17fcef36ec4f0eeebf27ceca7060d24c
+SHA1 (patch-libgcc_config_i386_dragonfly-unwind.h) = 5a7b12ece06cd7ad44191ea803ba703bd1464cb8
+SHA1 (patch-libgcc_config_t-slibgcc-darwin) = 5e0d2df4622281f3f9bca3e948d0c7b209fab04c
+SHA1 (patch-libgcc_crtstuff.c) = 5ae6b74c6a402cce93b71a7c8100376ebcb20162
+SHA1 (patch-libgcc_unwind-dw2-fde-dip.c) = 4ae2f6280563c0cdc1e59d7516d9f74eb748be5e
+SHA1 (patch-libgfortran_configure) = 398088715086a0c7a0398590d2de3a8107e35a0d
+SHA1 (patch-libgo_Makefile.in) = dd3429a0a87f024f1709b8dda4758080e4525e71
+SHA1 (patch-libgo_runtime_proc.c) = ba716b2772a83a0c3f0d77d67a40c5a3ac2a3d33
+SHA1 (patch-libiberty_Makefile.in) = a5ab85457d69f7bc9fa637ab830c13920d6c4c7c
+SHA1 (patch-libjava_Makefile.in) = a7bc03e3b01f12844106e831dc281a049ee6f906
+SHA1 (patch-libjava_boehm.cc) = b18bc9d410a62543583c77e011f50b86f41ca18a
+SHA1 (patch-libjava_configure) = 449e54fd6fe4357bbd3e378cd6bae5a98fb47dac
+SHA1 (patch-libjava_contrib_rebuild-gcj-db.in) = bb01d738fc7db05046ae37e8ade32574de1d8297
+SHA1 (patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc) = 633877e5332f4b37d34a394123c29a155576b1dc
+SHA1 (patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc) = 91551840d6482bffa0e032b36d00d8e838920a4c
+SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h) = a9c5f9017fe88a25d0c6be217b79ce7eac402b38
+SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc) = e915ac238afdd24f0ff9ebe5063a1fa54dcdd195
+SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h) = d66a3e3461bfdf0ee27c382f75f79c701c39dd08
+SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h) = eb3304dc7e1e3680e21b826668cc13d0eb19e7a4
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h) = 79542a20d50d7bfb1feee917177053f0d193cad3
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc) = 83d0021b595832c4f5dbe99171a200a943c54ed2
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = 9af44e44d78d1db0a416f015b489764e8ebd3002
+SHA1 (patch-libstdc++-v3_configure) = a76369b2942ed39a4235417031c08f81d96dfa7a
+SHA1 (patch-libstdc++-v3_configure.host) = 2d6b7037ab28cbd21f1aa66551384934f32df0ac
diff --git a/lang/gcc49/files/values.c b/lang/gcc49/files/values.c
new file mode 100644
index 00000000000..75f00587342
--- /dev/null
+++ b/lang/gcc49/files/values.c
@@ -0,0 +1,64 @@
+#if 0 /* $NetBSD: values.c,v 1.1 2014/09/04 18:43:11 jperkin Exp $ */
+#
+# This is Solaris x86 specific GCC run-time environment patch, which
+# makes it possible to reliably deploy .init snippets. Trouble is that
+# Solaris linker erroneously pads .init segment with zeros [instead of
+# nops], which is bound to SEGV early upon program start-up. This bug
+# was recognized by GCC team [it is mentioned in source code], but
+# workaround apparently and obviously erroneously slipped away in some
+# newer GCC release. This patch compensates for this mishap by dropping
+# modified values-X*.o into GCC installation tree. Object modules in
+# question are normally provided by Sun and linked prior crtbegin.o.
+# Modified versions are additionally crafted with custom .init segment,
+# which does some magic:-)
+# <appro@fy.chalmers.se>
+set -e
+gcc=gcc
+if [[ "x$1" = x*gcc ]]; then
+ gcc=$1; shift
+fi
+gcc_dir=`${gcc} "$@" -print-libgcc-file-name`
+gcc_dir=${gcc_dir%/*} #*/
+set -x
+${gcc} "$@" -c -o $gcc_dir/values-Xa.o -DXa $0
+${gcc} "$@" -c -o $gcc_dir/values-Xc.o -DXc $0
+${gcc} "$@" -c -o $gcc_dir/values-Xt.o -DXt $0
+exit
+#endif
+
+#include <math.h>
+
+#if defined(Xa)
+const enum version _lib_version = ansi_1;
+#elif defined(Xc)
+const enum version _lib_version = strict_ansi;
+#elif defined(Xt)
+const enum version _lib_version = c_issue_4;
+#else
+#error "compile by issuing 'ksh -f values.c [gcc] [-m64]'"
+#endif
+
+#if defined(__x86_64__)
+asm("\n"
+".section .init\n"
+".align 1\n"
+" leaq 1f(%rip),%rax\n"
+"1: cmpl $0,2f-1b(%rax)\n"
+" jne 2f\n"
+" jmp 2f+5\n"
+" .skip 9\n" /* pad up to 0x1b bytes */
+"2:\n"
+);
+#else
+asm("\n"
+".section .init\n"
+".align 1\n"
+" call 1f\n"
+"1: popl %eax\n"
+" cmpl $0,2f-1b(%eax)\n"
+" jne 2f\n"
+" jmp 2f+5\n"
+" .skip 10\n" /* pad up to 0x1b bytes */
+"2:\n"
+);
+#endif
diff --git a/lang/gcc49/options.mk b/lang/gcc49/options.mk
new file mode 100644
index 00000000000..64aef408fec
--- /dev/null
+++ b/lang/gcc49/options.mk
@@ -0,0 +1,171 @@
+# $NetBSD: options.mk,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+PKG_OPTIONS_VAR= PKG_OPTIONS.${GCC_PKGNAME}
+PKG_SUPPORTED_OPTIONS= nls gcc-inplace-math gcc-c++ gcc-fortran gcc-java \
+ gcc-go gcc-objc gcc-objc++
+PKG_SUGGESTED_OPTIONS= gcc-c++ gcc-fortran gcc-objc gcc-objc++
+
+.if ${OPSYS} == "NetBSD" || ${OPSYS} == "Linux"
+PKG_SUGGESTED_OPTIONS+= nls gcc-java
+.elif ${OPSYS} == "DragonFly"
+PKG_SUGGESTED_OPTIONS+= nls
+.elif ${OPSYS} == "SunOS"
+PKG_SUGGESTED_OPTIONS+= gcc-go gcc-inplace-math
+.else
+PKG_SUGGESTED_OPTIONS+= gcc-java
+.endif
+
+###
+### Determine if multilib is avalible.
+###
+MULTILIB_SUPPORTED?= unknown
+.if !empty(MACHINE_PLATFORM:MLinux-*-x86_64)
+. if exists(/usr/include/gnu/stubs-64.h) && \
+ !exists(/usr/include/gnu/stubs-32.h)
+MULTILIB_SUPPORTED=No
+. else
+MULTILIB_SUPPORTED=Yes
+. endif
+.endif
+.if !empty(MULTILIB_SUPPORTED:M[Yy][Ee][Ss])
+PKG_SUPPORTED_OPTIONS+= gcc-multilib
+PKG_SUGGESTED_OPTIONS+= gcc-multilib
+.endif
+
+.include "../../mk/bsd.options.mk"
+
+###
+### Native Language Support
+###
+.if !empty(PKG_OPTIONS:Mnls)
+USE_TOOLS+= msgfmt
+CONFIGURE_ARGS+= --enable-nls
+CONFIGURE_ARGS+= --with-libiconv-prefix=${BUILDLINK_PREFIX.iconv}
+MAKE_ENV+= ICONVPREFIX=${BUILDLINK_PREFIX.iconv}
+.include "../../converters/libiconv/buildlink3.mk"
+.include "../../devel/gettext-lib/buildlink3.mk"
+.else
+CONFIGURE_ARGS+= --disable-nls
+.endif
+
+###
+### Multilib Support
+###
+.if (!empty(MULTILIB_SUPPORTED:M[Yy][Ee][Ss]) && \
+ empty(PKG_OPTIONS:Mgcc-multilib) ) || \
+ !empty(MULTILIB_SUPPORTED:M[Nn][Oo])
+CONFIGURE_ARGS+= --disable-multilib
+.endif
+
+###
+### Build math libraries in place
+###
+.if !empty(PKG_OPTIONS:Mgcc-inplace-math)
+. include "../../devel/gmp/inplace.mk"
+. include "../../math/mpcomplex/inplace.mk"
+. include "../../math/mpfr/inplace.mk"
+.else
+CONFIGURE_ARGS+= --with-gmp=${BUILDLINK_PREFIX.gmp}
+CONFIGURE_ARGS+= --with-mpc=${BUILDLINK_PREFIX.mpcomplex}
+CONFIGURE_ARGS+= --with-mpfr=${BUILDLINK_PREFIX.mpfr}
+LIBS.SunOS+= -lgmp
+. include "../../devel/gmp/buildlink3.mk"
+. include "../../math/mpcomplex/buildlink3.mk"
+. include "../../math/mpfr/buildlink3.mk"
+.endif
+
+###
+### Optional languages
+### Ada could be added although there is a bootstrapping issue. See
+### ../gcc34-ada for guidance
+###
+
+.if !empty(PKG_OPTIONS:Mgcc-objc++)
+. if empty(PKG_OPTIONS:Mgcc-c++)
+PKG_OPTIONS+= gcc-c++
+. endif
+. if empty(PKG_OPTIONS:Mgcc-objc)
+PKG_OPTIONS+= gcc-objc
+. endif
+LANGS+= obj-c++
+.endif
+
+.if !empty(PKG_OPTIONS:Mgcc-objc)
+LANGS+= objc
+.endif
+
+.if !empty(PKG_OPTIONS:Mgcc-java)
+. if empty(PKG_OPTIONS:Mgcc-c++)
+PKG_OPTIONS+= gcc-c++
+. endif
+
+LANGS+= java
+
+# Add the Eclipse Java compiler for to parse `.java' source files.
+ECJ_JAR= ecj-4.5.jar
+SITES.${ECJ_JAR}= ftp://sourceware.org/pub/java/
+DISTFILES+= ${ECJ_JAR}
+CONFIGURE_ARGS+= --with-ecj-jar=${DISTDIR:Q}/${ECJ_JAR:Q}
+
+JAVA_NAME= ${GCC_PKGNAME}
+JAVA_HOME= ${PREFIX}/java/${JAVA_NAME}
+JAVA_WRAPPERS= appletviewer jar jarsigner java javah keytool \
+ native2ascii orbd rmic rmid rmiregistry serialver \
+ tnameserv
+
+JAVA_ARCH= ${MACHINE_ARCH:S/x86_64/amd64/}
+
+PLIST_SRC+= PLIST.java
+PLIST_SUBST+= JAVA_NAME=${JAVA_NAME:Q}
+PLIST_SUBST+= JAVA_ARCH=${JAVA_ARCH:Q}
+
+# Create a JPackage compatible SDK environment.
+CONFIGURE_ARGS+= --enable-java-home
+CONFIGURE_ARGS+= --with-os-directory=${LOWER_OPSYS:Q}
+CONFIGURE_ARGS+= --with-arch-directory=${JAVA_ARCH:Q}
+CONFIGURE_ARGS+= --with-jvm-root-dir=${JAVA_HOME:Q}
+CONFIGURE_ARGS+= --with-java-home=${JAVA_HOME:Q}
+
+REPLACE_PYTHON= libjava/contrib/aot-compile.in
+
+USE_TOOLS+= unzip zip:run gmake:run
+CONFIGURE_ARGS+= --with-system-zlib
+
+# libjava/contrib/aotcompile.py.in stores the path to a 'make' program so
+# we need to make sure we give it the installed 'make' and not the tool
+# wrapped one.
+CONFIGURE_ENV+= PKGSRC_MAKE=${TOOLS_PATH.gmake}
+MAKE_ENV+= PKGSRC_MAKE=${TOOLS_PATH.gmake}
+
+# fastjar-0.93 from pkgsrc/archivers/fastjar seems to trigger a build
+# failure (seen on NetBSD-5.0/i386) when building java. So in case
+# the fastjar package is installed, make sure the configure script
+# doesn't pick it up.
+CONFIGURE_ENV+= JAR=no
+MAKE_ENV+= JAR=no
+MAKE_ENV+= ac_cv_prog_JAR=no
+
+.include "../../devel/zlib/buildlink3.mk"
+.include "../../lang/python/application.mk"
+.include "../../mk/java-env.mk"
+.endif
+
+.if !empty(PKG_OPTIONS:Mgcc-go)
+LANGS+= go
+.endif
+
+.if !empty(PKG_OPTIONS:Mgcc-fortran)
+LANGS+= fortran
+.endif
+
+.if !empty(PKG_OPTIONS:Mgcc-c++)
+LANGS+= c++
+USE_TOOLS+= perl
+.if ${OPSYS} != "SunOS"
+CONFIGURE_ARGS+= --enable-__cxa_atexit
+.endif
+CONFIGURE_ARGS+= --with-gxx-include-dir=${GCC_PREFIX}/include/c++/
+.else
+CONFIGURE_ARGS+= --disable-build-with-cxx
+CONFIGURE_ARGS+= --disable-build-poststage1-with-cxx
+.endif
diff --git a/lang/gcc49/patches/patch-contrib_make__sunver.pl b/lang/gcc49/patches/patch-contrib_make__sunver.pl
new file mode 100644
index 00000000000..3874ff973cf
--- /dev/null
+++ b/lang/gcc49/patches/patch-contrib_make__sunver.pl
@@ -0,0 +1,20 @@
+$NetBSD: patch-contrib_make__sunver.pl,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Find /usr/bin/elfdump on SmartOS.
+
+--- contrib/make_sunver.pl.orig 2013-02-27 09:15:35.000000000 +0000
++++ contrib/make_sunver.pl
+@@ -55,7 +55,12 @@ foreach $file (@ARGV) {
+ # columns.
+
+ # The path to elfdump.
+-my $elfdump = "/usr/ccs/bin/elfdump";
++my $elfdump;
++if (-x "/usr/bin/elfdump") {
++ $elfdump = "/usr/bin/elfdump";
++} else {
++ $elfdump = "/usr/ccs/bin/elfdump";
++}
+
+ if (-f $elfdump) {
+ open ELFDUMP,$elfdump.' -s '.(join ' ',@OBJECTS).'|' or die $!;
diff --git a/lang/gcc49/patches/patch-gcc_Makefile.in b/lang/gcc49/patches/patch-gcc_Makefile.in
new file mode 100644
index 00000000000..5e8be2a9545
--- /dev/null
+++ b/lang/gcc49/patches/patch-gcc_Makefile.in
@@ -0,0 +1,14 @@
+$NetBSD: patch-gcc_Makefile.in,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Add this GCC libdir to rpath.
+
+--- gcc/Makefile.in.orig 2014-04-15 08:04:17.000000000 +0000
++++ gcc/Makefile.in
+@@ -1930,6 +1930,7 @@ prefix.o: $(BASEVER)
+ # Language-independent files.
+
+ DRIVER_DEFINES = \
++ -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG)$(prefix)/@GCC_TARGET_MACHINE@/lib/%M $(LINKER_RPATH_FLAG)$(libdir)/%M \"" \
+ -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \
+ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
+ -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \
diff --git a/lang/gcc49/patches/patch-gcc_config.gcc b/lang/gcc49/patches/patch-gcc_config.gcc
new file mode 100644
index 00000000000..925a357beb9
--- /dev/null
+++ b/lang/gcc49/patches/patch-gcc_config.gcc
@@ -0,0 +1,85 @@
+$NetBSD: patch-gcc_config.gcc,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+* Add t-crtstuff to tmake_file on NetBSD.
+* Add netbsd-stdint.h to tm_file on NetBSD.
+* wrap the system stdint.h on NetBSD.
+* Add DragonFly support.
+
+--- gcc/config.gcc.orig 2014-06-16 08:15:35.000000000 +0000
++++ gcc/config.gcc
+@@ -687,6 +687,26 @@ case ${target} in
+ # need_64bit_hwint=yes # system compiler has this for all arch!
+ use_gcc_stdint=wrap
+ ;;
++*-*-dragonfly*)
++ gas=yes
++ gnu_ld=yes
++ tmake_file="t-slibgcc"
++ case ${enable_threads} in
++ "" | yes | posix)
++ thread_file='posix'
++ ;;
++ no | gnat | single)
++ # Let these non-posix thread selections fall through if requested
++ ;;
++ *)
++ echo 'Unknown thread configuration for DragonFly BSD'
++ exit 1
++ ;;
++ esac
++ extra_options="$extra_options rpath.opt dragonfly.opt"
++ default_use_cxa_atexit=yes
++ use_gcc_stdint=wrap
++ ;;
+ *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
+ extra_options="$extra_options gnu-user.opt"
+ gas=yes
+@@ -743,6 +763,7 @@ case ${target} in
+ target_has_targetcm=yes
+ ;;
+ *-*-netbsd*)
++ use_gcc_stdint=wrap
+ tmake_file="t-slibgcc"
+ gas=yes
+ gnu_ld=yes
+@@ -1352,6 +1373,14 @@ x86_64-*-rdos*)
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rdos.h i386/rdos64.h"
+ tmake_file="i386/t-i386elf t-svr4"
+ ;;
++i[34567]86-*-dragonfly*)
++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
++ tmake_file="${tmake_file} i386/t-crtstuff"
++ ;;
++x86_64-*-dragonfly*)
++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
++ tmake_file="${tmake_file} i386/t-crtstuff"
++ ;;
+ i[34567]86-*-freebsd*)
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
+ ;;
+@@ -1359,12 +1388,14 @@ 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-*-netbsdelf*)
+- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h"
++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h netbsd-stdint.h"
+ extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
++ tmake_file="${tmake_file} i386/t-crtstuff"
+ ;;
+ x86_64-*-netbsd*)
+- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h"
++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h netbsd-stdint.h"
+ extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
++ tmake_file="${tmake_file} i386/t-crtstuff"
+ ;;
+ i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123])
+ tm_file="i386/i386.h i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h openbsd-oldgas.h openbsd.h i386/openbsd.h"
+@@ -4108,6 +4139,8 @@ case ${target} in
+ ;;
+ i[34567]86-*-mingw* | x86_64-*-mingw*)
+ ;;
++ i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
++ ;;
+ i[34567]86-*-freebsd* | x86_64-*-freebsd*)
+ ;;
+ ia64*-*-linux*)
diff --git a/lang/gcc49/patches/patch-gcc_config_dragonfly-stdint.h b/lang/gcc49/patches/patch-gcc_config_dragonfly-stdint.h
new file mode 100644
index 00000000000..1b748591748
--- /dev/null
+++ b/lang/gcc49/patches/patch-gcc_config_dragonfly-stdint.h
@@ -0,0 +1,63 @@
+$NetBSD: patch-gcc_config_dragonfly-stdint.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- gcc/config/dragonfly-stdint.h.orig 2014-09-04 10:04:26.882998028 +0000
++++ gcc/config/dragonfly-stdint.h
+@@ -0,0 +1,56 @@
++/* Definitions for <stdint.h> types for DragonFly systems.
++ Copyright (C) 2009 Free Software Foundation, Inc.
++ Contributed by Gerald Pfeifer <gerald@pfeifer.com>.
++
++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 3, 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
++<http://www.gnu.org/licenses/>. */
++
++#define SIG_ATOMIC_TYPE "int"
++
++#define INT8_TYPE "signed char"
++#define INT16_TYPE "short int"
++#define INT32_TYPE "int"
++#define INT64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
++#define UINT8_TYPE "unsigned char"
++#define UINT16_TYPE "short unsigned int"
++#define UINT32_TYPE "unsigned int"
++#define UINT64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
++
++#define INT_LEAST8_TYPE INT8_TYPE
++#define INT_LEAST16_TYPE INT16_TYPE
++#define INT_LEAST32_TYPE INT32_TYPE
++#define INT_LEAST64_TYPE INT64_TYPE
++#define UINT_LEAST8_TYPE UINT8_TYPE
++#define UINT_LEAST16_TYPE UINT16_TYPE
++#define UINT_LEAST32_TYPE UINT32_TYPE
++#define UINT_LEAST64_TYPE UINT64_TYPE
++
++#define INT_FAST8_TYPE INT32_TYPE
++#define INT_FAST16_TYPE INT32_TYPE
++#define INT_FAST32_TYPE INT32_TYPE
++#define INT_FAST64_TYPE INT64_TYPE
++#define UINT_FAST8_TYPE UINT32_TYPE
++#define UINT_FAST16_TYPE UINT32_TYPE
++#define UINT_FAST32_TYPE UINT32_TYPE
++#define UINT_FAST64_TYPE UINT64_TYPE
++
++#define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? INT64_TYPE : INT32_TYPE)
++#define UINTPTR_TYPE (LONG_TYPE_SIZE == 64 ? UINT64_TYPE : UINT32_TYPE)
diff --git a/lang/gcc49/patches/patch-gcc_config_dragonfly.h b/lang/gcc49/patches/patch-gcc_config_dragonfly.h
new file mode 100644
index 00000000000..bcd5572f734
--- /dev/null
+++ b/lang/gcc49/patches/patch-gcc_config_dragonfly.h
@@ -0,0 +1,142 @@
+$NetBSD: patch-gcc_config_dragonfly.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- gcc/config/dragonfly.h.orig 2014-09-04 10:04:26.921134898 +0000
++++ gcc/config/dragonfly.h
+@@ -0,0 +1,135 @@
++/* Base configuration file for all DragonFly targets.
++ Copyright (C) 1999, 2000, 2001, 2007, 2008 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 3, 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 COPYING3. If not see
++<http://www.gnu.org/licenses/>. */
++
++/* 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>. */
++
++#undef TARGET_OS_CPP_BUILTINS
++#define TARGET_OS_CPP_BUILTINS() \
++ do \
++ { \
++ builtin_define_std ("unix"); \
++ builtin_define ("__DragonFly__"); \
++ builtin_assert ("system=unix"); \
++ builtin_assert ("system=bsd"); \
++ builtin_assert ("system=DragonFly"); \
++ } \
++ while (0)
++
++#undef CPP_SPEC
++#define CPP_SPEC \
++ "%(cpp_cpu) %(cpp_arch) %{posix:-D_POSIX_SOURCE}"
++
++#undef STARTFILE_SPEC
++#define STARTFILE_SPEC \
++ "%{!shared: \
++ %{pg:gcrt1.o%s} \
++ %{!pg: \
++ %{p:gcrt1.o%s} \
++ %{!p: \
++ %{profile: gcrt1.o%s} \
++ %{!profile: \
++ %{pie: Scrt1.o%s;:crt1.o%s}}}}} \
++ crti.o%s \
++ %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
++
++#undef ENDFILE_SPEC
++#define ENDFILE_SPEC \
++ "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
++
++#undef LIB_SPEC
++#define LIB_SPEC \
++ "%{pthread:-lpthread} -lc"
++
++#if defined(HAVE_LD_EH_FRAME_HDR)
++#define LINK_EH_SPEC "--eh-frame-hdr"
++#endif
++
++/* 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.
++
++ When the -shared link option is used a final link is not being
++ done. */
++
++#define DFBSD_LINK_SPEC \
++ "%{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \
++ %{v:-V} \
++ %{assert*} %{R*} %{rpath*} %{defsym*} \
++ %{shared:-Bshareable %{h*} %{soname*}} \
++ %{!shared: \
++ %{!static: \
++ %{rdynamic:-export-dynamic} \
++ -dynamic-linker %(dfbsd_dynamic_linker) \
++ } \
++ %{static:-Bstatic}} \
++ %{!static:--hash-style=both} \
++ %{symbolic:-Bsymbolic}"
++
++#undef LINK_SPEC
++#define LINK_SPEC DFBSD_LINK_SPEC
++
++#define DFBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.2"
++
++
++/* Use --as-needed -lgcc_s for eh support. */
++#ifdef HAVE_LD_AS_NEEDED
++#define USE_LD_AS_NEEDED 1
++#endif
++
++/************************[ 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
++
++/* Follow DragonFly's standard headers (<machine/stdint.h>, etc...). */
++
++#undef WCHAR_TYPE
++#define WCHAR_TYPE "int"
++
++#undef WINT_TYPE
++#define WINT_TYPE "int"
++
++/*
++ * Profile libraries are found at /usr/lib/profile with standard names
++ * #define MATH_LIBRARY_PROFILE "m_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_POSIX_IO
diff --git a/lang/gcc49/patches/patch-gcc_config_dragonfly.opt b/lang/gcc49/patches/patch-gcc_config_dragonfly.opt
new file mode 100644
index 00000000000..19cfc18d599
--- /dev/null
+++ b/lang/gcc49/patches/patch-gcc_config_dragonfly.opt
@@ -0,0 +1,72 @@
+$NetBSD: patch-gcc_config_dragonfly.opt,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- gcc/config/dragonfly.opt.orig 2014-09-04 10:04:26.963474036 +0000
++++ gcc/config/dragonfly.opt
+@@ -0,0 +1,65 @@
++; DragonFlyBSD options.
++
++; Copyright (C) 2010, 2011
++; 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 3, 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 COPYING3. If not see
++; <http://www.gnu.org/licenses/>.
++
++; See the GCC internals manual (options.texi) for a description of this file's format.
++
++; Please try to keep this file in ASCII collating order.
++
++assert
++Driver Separate
++
++assert=
++Driver JoinedOrMissing
++
++defsym
++Driver Separate
++
++defsym=
++Driver JoinedOrMissing
++
++posix
++Driver
++
++profile
++Driver
++
++pthread
++Driver
++
++rdynamic
++Driver
++
++rpath-link
++Driver Separate
++
++rpath-link=
++Driver JoinedOrMissing
++
++rpath=
++Driver JoinedOrMissing
++
++soname
++Driver Separate
++
++soname=
++Driver JoinedOrMissing
++
++; This comment is to ensure we retain the blank line above.
diff --git a/lang/gcc49/patches/patch-gcc_config_i386_dragonfly.h b/lang/gcc49/patches/patch-gcc_config_i386_dragonfly.h
new file mode 100644
index 00000000000..09fa805455e
--- /dev/null
+++ b/lang/gcc49/patches/patch-gcc_config_i386_dragonfly.h
@@ -0,0 +1,108 @@
+$NetBSD: patch-gcc_config_i386_dragonfly.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- gcc/config/i386/dragonfly.h.orig 2014-09-04 10:04:26.998076438 +0000
++++ gcc/config/i386/dragonfly.h
+@@ -0,0 +1,101 @@
++/* Definitions for Intel 386 running DragonFly with ELF format
++ Copyright (C) 1996, 2000, 2002, 2004, 2007 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 3, 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 COPYING3. If not see
++<http://www.gnu.org/licenses/>. */
++
++
++/* 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 }
++
++
++/* 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)
++
++/* Put all *tf routines in libgcc. */
++#undef LIBGCC2_HAS_TF_MODE
++#define LIBGCC2_HAS_TF_MODE 1
++#define LIBGCC2_TF_CEXT q
++#define TF_SIZE 113
++
++/* Static stack checking is supported by means of probes. */
++#define STACK_CHECK_STATIC_BUILTIN 1
++
++/* Support for i386 has been removed from DragonFly for several releases */
++#define SUBTARGET32_DEFAULT_CPU "i486"
diff --git a/lang/gcc49/patches/patch-gcc_config_netbsd-stdint.h b/lang/gcc49/patches/patch-gcc_config_netbsd-stdint.h
new file mode 100644
index 00000000000..cbaef196785
--- /dev/null
+++ b/lang/gcc49/patches/patch-gcc_config_netbsd-stdint.h
@@ -0,0 +1,63 @@
+$NetBSD: patch-gcc_config_netbsd-stdint.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Copy gcc/config/freebsd-stdint.h to gcc/config/netbsd-stdint.h.
+
+--- gcc/config/netbsd-stdint.h.orig 2014-09-04 10:04:27.042303825 +0000
++++ gcc/config/netbsd-stdint.h
+@@ -0,0 +1,56 @@
++/* Definitions for <stdint.h> types for NetBSD systems.
++ Copyright (C) 2009 Free Software Foundation, Inc.
++ Contributed by Gerald Pfeifer <gerald@pfeifer.com>.
++
++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 3, 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
++<http://www.gnu.org/licenses/>. */
++
++#define SIG_ATOMIC_TYPE "int"
++
++#define INT8_TYPE "signed char"
++#define INT16_TYPE "short int"
++#define INT32_TYPE "int"
++#define INT64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
++#define UINT8_TYPE "unsigned char"
++#define UINT16_TYPE "short unsigned int"
++#define UINT32_TYPE "unsigned int"
++#define UINT64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
++
++#define INT_LEAST8_TYPE "signed char"
++#define INT_LEAST16_TYPE "short int"
++#define INT_LEAST32_TYPE "int"
++#define INT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
++#define UINT_LEAST8_TYPE "unsigned char"
++#define UINT_LEAST16_TYPE "short unsigned int"
++#define UINT_LEAST32_TYPE "unsigned int"
++#define UINT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
++
++#define INT_FAST8_TYPE "int"
++#define INT_FAST16_TYPE "int"
++#define INT_FAST32_TYPE "int"
++#define INT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
++#define UINT_FAST8_TYPE "unsigned int"
++#define UINT_FAST16_TYPE "unsigned int"
++#define UINT_FAST32_TYPE "unsigned int"
++#define UINT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
++
++#define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
++#define UINTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")
diff --git a/lang/gcc49/patches/patch-gcc_configure b/lang/gcc49/patches/patch-gcc_configure
new file mode 100644
index 00000000000..ca701ce1e2d
--- /dev/null
+++ b/lang/gcc49/patches/patch-gcc_configure
@@ -0,0 +1,29 @@
+$NetBSD: patch-gcc_configure,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Add dl_iterate_phdr detection for FreeBSD and DragonFly.
+Detection for NetBSD and OpenBSD is added but commented out in case this
+error handling mechanism is activated for these platforms later.
+
+--- gcc/configure.orig 2014-05-28 11:37:50.000000000 +0000
++++ gcc/configure
+@@ -27449,6 +27449,20 @@ case "$target" in
+ gcc_cv_target_dl_iterate_phdr=no
+ fi
+ ;;
++ *-*-dragonfly* | *-*-freebsd*)
++ if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
++ gcc_cv_target_dl_iterate_phdr=yes
++ else
++ gcc_cv_target_dl_iterate_phdr=no
++ fi
++ ;;
++# *-*-netbsd* | *-*-openbsd*)
++# if grep dl_iterate_phdr $target_header_dir/link_elf.h > /dev/null 2>&1; then
++# gcc_cv_target_dl_iterate_phdr=yes
++# else
++# gcc_cv_target_dl_iterate_phdr=no
++# fi
++# ;;
+ esac
+
+ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
diff --git a/lang/gcc49/patches/patch-gcc_fortran_f95-lang.c b/lang/gcc49/patches/patch-gcc_fortran_f95-lang.c
new file mode 100644
index 00000000000..bfb601c5e60
--- /dev/null
+++ b/lang/gcc49/patches/patch-gcc_fortran_f95-lang.c
@@ -0,0 +1,30 @@
+$NetBSD: patch-gcc_fortran_f95-lang.c,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+No NetBSD the 'cabs' and 'cabsf' functions are are __RENAME so that
+thay have '__c99_' prefixes.
+
+--- gcc/fortran/f95-lang.c.orig 2014-06-30 16:35:48.000000000 +0000
++++ gcc/fortran/f95-lang.c
+@@ -740,12 +740,21 @@ gfc_init_builtin_functions (void)
+ gfc_define_builtin ("__builtin_truncf", mfunc_float[0],
+ BUILT_IN_TRUNCF, "truncf", ATTR_CONST_NOTHROW_LEAF_LIST);
+
++#if defined(__NetBSD__)
++ gfc_define_builtin ("__builtin_cabs", func_cdouble_double,
++ BUILT_IN_CABS, "__c99_cabs", ATTR_CONST_NOTHROW_LEAF_LIST);
++ gfc_define_builtin ("__builtin_cabsf", func_cfloat_float,
++ BUILT_IN_CABSF, "__c99_cabsf", ATTR_CONST_NOTHROW_LEAF_LIST);
+ gfc_define_builtin ("__builtin_cabsl", func_clongdouble_longdouble,
+- BUILT_IN_CABSL, "cabsl", ATTR_CONST_NOTHROW_LEAF_LIST);
++ BUILT_IN_CABSL, "__c99_cabsl", ATTR_CONST_NOTHROW_LEAF_LIST);
++#else
+ gfc_define_builtin ("__builtin_cabs", func_cdouble_double,
+ BUILT_IN_CABS, "cabs", ATTR_CONST_NOTHROW_LEAF_LIST);
+ gfc_define_builtin ("__builtin_cabsf", func_cfloat_float,
+ BUILT_IN_CABSF, "cabsf", ATTR_CONST_NOTHROW_LEAF_LIST);
++ gfc_define_builtin ("__builtin_cabsl", func_clongdouble_longdouble,
++ BUILT_IN_CABSL, "cabsl", ATTR_CONST_NOTHROW_LEAF_LIST);
++#endif
+
+ gfc_define_builtin ("__builtin_copysignl", mfunc_longdouble[1],
+ BUILT_IN_COPYSIGNL, "copysignl",
diff --git a/lang/gcc49/patches/patch-gcc_ginclude_stddef.h b/lang/gcc49/patches/patch-gcc_ginclude_stddef.h
new file mode 100644
index 00000000000..c24c63bde45
--- /dev/null
+++ b/lang/gcc49/patches/patch-gcc_ginclude_stddef.h
@@ -0,0 +1,68 @@
+$NetBSD: patch-gcc_ginclude_stddef.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Fix build on NetBSD i386/amd64 after the ansi.h header include protection
+name change.
+Add DragonFly support.
+
+--- gcc/ginclude/stddef.h.orig 2014-01-02 22:23:26.000000000 +0000
++++ gcc/ginclude/stddef.h
+@@ -50,12 +50,21 @@ see the files COPYING3 and COPYING.RUNTI
+ one less case to deal with in the following. */
+ #if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__)
+ #include <machine/ansi.h>
++#if !defined(_MACHINE_ANSI_H_)
++#if defined(_I386_ANSI_H_) || defined(_X86_64_ANSI_H_)
++#define _MACHINE_ANSI_H_
++#endif
++#endif
+ #endif
+ /* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+ #if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
+ #include <sys/_types.h>
+ #endif
+
++#if defined(__DragonFly__)
++#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_.
+@@ -133,6 +142,7 @@ _TYPE_wchar_t;
+ #ifndef _BSD_PTRDIFF_T_
+ #ifndef ___int_ptrdiff_t_h
+ #ifndef _GCC_PTRDIFF_T
++#ifndef _PTRDIFF_T_DECLARED /* DragonFly */
+ #define _PTRDIFF_T
+ #define _T_PTRDIFF_
+ #define _T_PTRDIFF
+@@ -141,10 +151,12 @@ _TYPE_wchar_t;
+ #define _BSD_PTRDIFF_T_
+ #define ___int_ptrdiff_t_h
+ #define _GCC_PTRDIFF_T
++#define _PTRDIFF_T_DECLARED
+ #ifndef __PTRDIFF_TYPE__
+ #define __PTRDIFF_TYPE__ long int
+ #endif
+ typedef __PTRDIFF_TYPE__ ptrdiff_t;
++#endif /* _PTRDIFF_T_DECLARED */
+ #endif /* _GCC_PTRDIFF_T */
+ #endif /* ___int_ptrdiff_t_h */
+ #endif /* _BSD_PTRDIFF_T_ */
+@@ -198,6 +210,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
+ #define _GCC_SIZE_T
+ #define _SIZET_
+ #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
++ || defined(__DragonFly__) \
+ || defined(__FreeBSD_kernel__)
+ /* __size_t is a typedef on FreeBSD 5, must not trash it. */
+ #elif defined (__VMS__)
+@@ -306,7 +319,7 @@ typedef _BSD_RUNE_T_ rune_t;
+ /* FreeBSD 5 can't be handled well using "traditional" logic above
+ since it no longer defines _BSD_RUNE_T_ yet still desires to export
+ rune_t in some cases... */
+-#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
++#if defined (__DragonFly__) || (defined (__FreeBSD__) && (__FreeBSD__ >= 5))
+ #if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE)
+ #if __BSD_VISIBLE
+ #ifndef _RUNE_T_DECLARED
diff --git a/lang/gcc49/patches/patch-include_libiberty.h b/lang/gcc49/patches/patch-include_libiberty.h
new file mode 100644
index 00000000000..b9f9a325215
--- /dev/null
+++ b/lang/gcc49/patches/patch-include_libiberty.h
@@ -0,0 +1,15 @@
+$NetBSD: patch-include_libiberty.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- include/libiberty.h.orig 2014-01-21 15:09:10.000000000 +0000
++++ include/libiberty.h
+@@ -106,7 +106,7 @@ extern int countargv (char**);
+ to find the declaration so provide a fully prototyped one. If it
+ is 1, we found it so don't provide any declaration at all. */
+ #if !HAVE_DECL_BASENAME
+-#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined(__NetBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__) || defined (__MINGW32__) || defined (HAVE_DECL_BASENAME)
++#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__DragonFly__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined(__NetBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__) || defined (__MINGW32__) || defined (HAVE_DECL_BASENAME)
+ extern char *basename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1);
+ #else
+ /* Do not allow basename to be used if there is no prototype seen. We
diff --git a/lang/gcc49/patches/patch-libcilkrts_runtime_os-unix.c b/lang/gcc49/patches/patch-libcilkrts_runtime_os-unix.c
new file mode 100644
index 00000000000..d831c70d069
--- /dev/null
+++ b/lang/gcc49/patches/patch-libcilkrts_runtime_os-unix.c
@@ -0,0 +1,33 @@
+$NetBSD: patch-libcilkrts_runtime_os-unix.c,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Add NetBSD support.
+
+--- libcilkrts/runtime/os-unix.c.orig 2014-04-17 11:52:44.000000000 +0000
++++ libcilkrts/runtime/os-unix.c
+@@ -54,7 +54,7 @@
+ #elif defined __APPLE__
+ # include <sys/sysctl.h>
+ // Uses sysconf(_SC_NPROCESSORS_ONLN) in verbose output
+-#elif defined __FreeBSD__
++#elif defined __FreeBSD__ || defined __NetBSD__
+ // No additional include files
+ #elif defined __CYGWIN__
+ // Cygwin on Windows - no additional include files
+@@ -374,7 +374,7 @@ COMMON_SYSDEP int __cilkrts_hardware_cpu
+ assert((unsigned)count == count);
+
+ return count;
+-#elif defined __FreeBSD__ || defined __CYGWIN__
++#elif defined __FreeBSD__ || __NetBSD__ || defined __CYGWIN__
+ int ncores = sysconf(_SC_NPROCESSORS_ONLN);
+
+ return ncores;
+@@ -398,7 +398,7 @@ COMMON_SYSDEP void __cilkrts_sleep(void)
+
+ COMMON_SYSDEP void __cilkrts_yield(void)
+ {
+-#if __APPLE__ || __FreeBSD__ || __VXWORKS__
++#if __APPLE__ || __FreeBSD__ || __NetBSD__ || __VXWORKS__
+ // On MacOS, call sched_yield to yield quantum. I'm not sure why we
+ // don't do this on Linux also.
+ sched_yield();
diff --git a/lang/gcc49/patches/patch-libgcc_config.host b/lang/gcc49/patches/patch-libgcc_config.host
new file mode 100644
index 00000000000..136f6b22dd8
--- /dev/null
+++ b/lang/gcc49/patches/patch-libgcc_config.host
@@ -0,0 +1,50 @@
+$NetBSD: patch-libgcc_config.host,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- libgcc/config.host.orig 2014-03-27 15:40:31.000000000 +0000
++++ libgcc/config.host
+@@ -207,6 +207,11 @@ case ${host} in
+ tmake_file="$tmake_file t-darwin ${cpu_type}/t-darwin t-libgcc-pic t-slibgcc-darwin"
+ extra_parts="crt3.o crttms.o crttme.o"
+ ;;
++*-*-dragonfly*)
++ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip"
++ tmake_file="$tmake_file t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
++ ;;
+ *-*-freebsd*)
+ # This is the generic ELF configuration of FreeBSD. Later
+ # machine-specific sections may refine and add to this
+@@ -302,7 +307,7 @@ case ${host} in
+ esac
+
+ case ${host} in
+-*-*-darwin* | *-*-freebsd* | *-*-netbsd* | *-*-openbsd* | *-*-solaris2*)
++*-*-darwin* | *-*-freebsd* | *-*-netbsd* | *-*-openbsd* | *-*-solaris2* | *-*-dragonfly*)
+ enable_execute_stack=enable-execute-stack-mprotect.c
+ ;;
+ i[34567]86-*-mingw* | x86_64-*-mingw*)
+@@ -545,6 +550,14 @@ i[34567]86-*-elf*)
+ x86_64-*-elf*)
+ tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic"
+ ;;
++i[34567]86-*-dragonfly*)
++ tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff"
++ md_unwind_header=i386/dragonfly-unwind.h
++ ;;
++x86_64-*-dragonfly*)
++ tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff"
++ md_unwind_header=i386/dragonfly-unwind.h
++ ;;
+ i[34567]86-*-freebsd*)
+ tmake_file="${tmake_file} i386/t-freebsd i386/t-crtstuff"
+ ;;
+@@ -1262,6 +1275,7 @@ i[34567]86-*-darwin* | x86_64-*-darwin*
+ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]* | \
+ i[34567]86-*-cygwin* | x86_64-*-cygwin* | \
+ i[34567]86-*-mingw* | x86_64-*-mingw* | \
++ i[34567]86-*-dragonfly* | x86_64-*-dragonfly* | \
+ i[34567]86-*-freebsd* | x86_64-*-freebsd* | \
+ i[34567]86-*-openbsd* | x86_64-*-openbsd*)
+ tmake_file="${tmake_file} t-softfp-tf"
diff --git a/lang/gcc49/patches/patch-libgcc_config_i386_dragonfly-unwind.h b/lang/gcc49/patches/patch-libgcc_config_i386_dragonfly-unwind.h
new file mode 100644
index 00000000000..8d712d87488
--- /dev/null
+++ b/lang/gcc49/patches/patch-libgcc_config_i386_dragonfly-unwind.h
@@ -0,0 +1,165 @@
+$NetBSD: patch-libgcc_config_i386_dragonfly-unwind.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- libgcc/config/i386/dragonfly-unwind.h.orig 2014-09-04 10:04:27.455838710 +0000
++++ libgcc/config/i386/dragonfly-unwind.h
+@@ -0,0 +1,158 @@
++/* DWARF2 EH unwinding support for DragonFly BSD: AMD x86-64 and x86.
++ Copyright (C) 2010 John Marino <draco@marino.st> */
++
++/* Do code reading to identify a signal frame, and set the frame
++ state data appropriately. See unwind-dw2.c for the structs. */
++
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#include <signal.h>
++#include <sys/ucontext.h>
++#include <machine/sigframe.h>
++
++
++#define REG_NAME(reg) sf_uc.uc_mcontext.mc_## reg
++
++#ifdef __x86_64__
++#define MD_FALLBACK_FRAME_STATE_FOR x86_64_dragonfly_fallback_frame_state
++
++
++static void
++x86_64_sigtramp_range (unsigned char **start, unsigned char **end)
++{
++ unsigned long ps_strings;
++ int mib[2];
++ size_t len;
++
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PS_STRINGS;
++ len = sizeof (ps_strings);
++ sysctl (mib, 2, &ps_strings, &len, NULL, 0);
++
++ *start = (unsigned char *)ps_strings - 32;
++ *end = (unsigned char *)ps_strings;
++}
++
++
++static _Unwind_Reason_Code
++x86_64_dragonfly_fallback_frame_state
++(struct _Unwind_Context *context, _Unwind_FrameState *fs)
++{
++ unsigned char *pc = context->ra;
++ unsigned char *sigtramp_start, *sigtramp_end;
++ struct sigframe *sf;
++ long new_cfa;
++
++ x86_64_sigtramp_range(&sigtramp_start, &sigtramp_end);
++ if (pc >= sigtramp_end || pc < sigtramp_start)
++ return _URC_END_OF_STACK;
++
++ sf = (struct sigframe *) context->cfa;
++ new_cfa = sf->REG_NAME(rsp);
++ fs->regs.cfa_how = CFA_REG_OFFSET;
++ /* Register 7 is rsp */
++ fs->regs.cfa_reg = 7;
++ fs->regs.cfa_offset = new_cfa - (long) context->cfa;
++
++ /* The SVR4 register numbering macros aren't usable in libgcc. */
++ fs->regs.reg[0].how = REG_SAVED_OFFSET;
++ fs->regs.reg[0].loc.offset = (long)&sf->REG_NAME(rax) - new_cfa;
++ fs->regs.reg[1].how = REG_SAVED_OFFSET;
++ fs->regs.reg[1].loc.offset = (long)&sf->REG_NAME(rdx) - new_cfa;
++ fs->regs.reg[2].how = REG_SAVED_OFFSET;
++ fs->regs.reg[2].loc.offset = (long)&sf->REG_NAME(rcx) - new_cfa;
++ fs->regs.reg[3].how = REG_SAVED_OFFSET;
++ fs->regs.reg[3].loc.offset = (long)&sf->REG_NAME(rbx) - new_cfa;
++ fs->regs.reg[4].how = REG_SAVED_OFFSET;
++ fs->regs.reg[4].loc.offset = (long)&sf->REG_NAME(rsi) - new_cfa;
++ fs->regs.reg[5].how = REG_SAVED_OFFSET;
++ fs->regs.reg[5].loc.offset = (long)&sf->REG_NAME(rdi) - new_cfa;
++ fs->regs.reg[6].how = REG_SAVED_OFFSET;
++ fs->regs.reg[6].loc.offset = (long)&sf->REG_NAME(rbp) - new_cfa;
++ fs->regs.reg[8].how = REG_SAVED_OFFSET;
++ fs->regs.reg[8].loc.offset = (long)&sf->REG_NAME(r8) - new_cfa;
++ fs->regs.reg[9].how = REG_SAVED_OFFSET;
++ fs->regs.reg[9].loc.offset = (long)&sf->REG_NAME(r9) - new_cfa;
++ fs->regs.reg[10].how = REG_SAVED_OFFSET;
++ fs->regs.reg[10].loc.offset = (long)&sf->REG_NAME(r10) - new_cfa;
++ fs->regs.reg[11].how = REG_SAVED_OFFSET;
++ fs->regs.reg[11].loc.offset = (long)&sf->REG_NAME(r11) - new_cfa;
++ fs->regs.reg[12].how = REG_SAVED_OFFSET;
++ fs->regs.reg[12].loc.offset = (long)&sf->REG_NAME(r12) - new_cfa;
++ fs->regs.reg[13].how = REG_SAVED_OFFSET;
++ fs->regs.reg[13].loc.offset = (long)&sf->REG_NAME(r13) - new_cfa;
++ fs->regs.reg[14].how = REG_SAVED_OFFSET;
++ fs->regs.reg[14].loc.offset = (long)&sf->REG_NAME(r14) - new_cfa;
++ fs->regs.reg[15].how = REG_SAVED_OFFSET;
++ fs->regs.reg[15].loc.offset = (long)&sf->REG_NAME(r15) - new_cfa;
++ fs->regs.reg[16].how = REG_SAVED_OFFSET;
++ fs->regs.reg[16].loc.offset = (long)&sf->REG_NAME(rip) - new_cfa;
++ fs->retaddr_column = 16;
++ fs->signal_frame = 1;
++ return _URC_NO_REASON;
++}
++
++#else /* Next section is for i386 */
++
++#define MD_FALLBACK_FRAME_STATE_FOR x86_dragonfly_fallback_frame_state
++
++
++static void
++x86_sigtramp_range (unsigned char **start, unsigned char **end)
++{
++ unsigned long ps_strings;
++ int mib[2];
++ size_t len;
++
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PS_STRINGS;
++ len = sizeof (ps_strings);
++ sysctl (mib, 2, &ps_strings, &len, NULL, 0);
++
++ *start = (unsigned char *)ps_strings - 128;
++ *end = (unsigned char *)ps_strings;
++}
++
++
++static _Unwind_Reason_Code
++x86_dragonfly_fallback_frame_state
++(struct _Unwind_Context *context, _Unwind_FrameState *fs)
++{
++ unsigned char *pc = context->ra;
++ unsigned char *sigtramp_start, *sigtramp_end;
++ struct sigframe *sf;
++ long new_cfa;
++
++ x86_sigtramp_range(&sigtramp_start, &sigtramp_end);
++
++ if (pc >= sigtramp_end || pc < sigtramp_start)
++ return _URC_END_OF_STACK;
++
++ sf = (struct sigframe *) context->cfa;
++ new_cfa = sf->REG_NAME(esp);
++ fs->regs.cfa_how = CFA_REG_OFFSET;
++ fs->regs.cfa_reg = 4;
++ fs->regs.cfa_offset = new_cfa - (long) context->cfa;
++
++ /* The SVR4 register numbering macros aren't usable in libgcc. */
++ fs->regs.reg[0].how = REG_SAVED_OFFSET;
++ fs->regs.reg[0].loc.offset = (long)&sf->REG_NAME(eax) - new_cfa;
++ fs->regs.reg[3].how = REG_SAVED_OFFSET;
++ fs->regs.reg[3].loc.offset = (long)&sf->REG_NAME(ebx) - new_cfa;
++ fs->regs.reg[1].how = REG_SAVED_OFFSET;
++ fs->regs.reg[1].loc.offset = (long)&sf->REG_NAME(ecx) - new_cfa;
++ fs->regs.reg[2].how = REG_SAVED_OFFSET;
++ fs->regs.reg[2].loc.offset = (long)&sf->REG_NAME(edx) - new_cfa;
++ fs->regs.reg[6].how = REG_SAVED_OFFSET;
++ fs->regs.reg[6].loc.offset = (long)&sf->REG_NAME(esi) - new_cfa;
++ fs->regs.reg[7].how = REG_SAVED_OFFSET;
++ fs->regs.reg[7].loc.offset = (long)&sf->REG_NAME(edi) - new_cfa;
++ fs->regs.reg[5].how = REG_SAVED_OFFSET;
++ fs->regs.reg[5].loc.offset = (long)&sf->REG_NAME(ebp) - new_cfa;
++ fs->regs.reg[8].how = REG_SAVED_OFFSET;
++ fs->regs.reg[8].loc.offset = (long)&sf->REG_NAME(eip) - new_cfa;
++ fs->retaddr_column = 8;
++ fs->signal_frame = 1;
++ return _URC_NO_REASON;
++}
++#endif /* ifdef __x86_64__ */
diff --git a/lang/gcc49/patches/patch-libgcc_config_t-slibgcc-darwin b/lang/gcc49/patches/patch-libgcc_config_t-slibgcc-darwin
new file mode 100644
index 00000000000..b1de548ad61
--- /dev/null
+++ b/lang/gcc49/patches/patch-libgcc_config_t-slibgcc-darwin
@@ -0,0 +1,26 @@
+$NetBSD: patch-libgcc_config_t-slibgcc-darwin,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+If we don't install libgcc_s.10.[45].dylib, our gcc links binaries
+with *both* /usr/lib/libgcc_s.1.dylib and
+${GCC_PREFIX}/lib/libgcc_s.1.dylib, which is certainly a bad thing.
+
+The problem was already reported to the upstream but it caught
+seemingly no attention:
+http://gcc.gnu.org/ml/gcc-help/2010-07/msg00164.html
+
+--- libgcc/config/t-slibgcc-darwin.orig 2011-11-02 10:49:46.000000000 +0000
++++ libgcc/config/t-slibgcc-darwin
+@@ -27,13 +27,7 @@ SHLIB_MKMAP_OPTS = -v leading_underscore
+ SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/libgcc-libsystem.ver
+ SHLIB_VERPFX = $(srcdir)/config/$(cpu_type)/libgcc-darwin
+
+-# we're only going to build the stubs if the target slib is /usr/lib
+-# there is no other case in which they're useful in a live system.
+-ifeq (/usr/lib,$(shlib_slibdir))
+ LGCC_STUBS = libgcc_s.10.4.dylib libgcc_s.10.5.dylib
+-else
+-LGCC_STUBS =
+-endif
+
+ LGCC_FILES = libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)
+ LGCC_FILES += $(LGCC_STUBS)
diff --git a/lang/gcc49/patches/patch-libgcc_crtstuff.c b/lang/gcc49/patches/patch-libgcc_crtstuff.c
new file mode 100644
index 00000000000..c6699fecb70
--- /dev/null
+++ b/lang/gcc49/patches/patch-libgcc_crtstuff.c
@@ -0,0 +1,29 @@
+$NetBSD: patch-libgcc_crtstuff.c,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Currently dl_iterate_phdr error handling is hardcoded for FreeBSD 7+
+Expand code to handle all BSDs even though detection is only active for
+FreeBSD and DragonFly currently.
+
+--- libgcc/crtstuff.c.orig 2014-03-10 18:31:20.000000000 +0000
++++ libgcc/crtstuff.c
+@@ -79,11 +79,19 @@ call_ ## FUNC (void) \
+ }
+ #endif
+
++#if defined(TARGET_DL_ITERATE_PHDR) && \
++ ( defined(__FreeBSD__) \
++ || defined(__OpenBSD__) \
++ || defined(__NetBSD__) \
++ || defined(__DragonFly__))
++#define BSD_DL_ITERATE_PHDR_AVAILABLE
++#endif
++
+ #if defined(OBJECT_FORMAT_ELF) \
+ && !defined(OBJECT_FORMAT_FLAT) \
+ && defined(HAVE_LD_EH_FRAME_HDR) \
+ && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
+- && defined(__FreeBSD__) && __FreeBSD__ >= 7
++ && defined(BSD_DL_ITERATE_PHDR_AVAILABLE)
+ #include <link.h>
+ # define USE_PT_GNU_EH_FRAME
+ #endif
diff --git a/lang/gcc49/patches/patch-libgcc_unwind-dw2-fde-dip.c b/lang/gcc49/patches/patch-libgcc_unwind-dw2-fde-dip.c
new file mode 100644
index 00000000000..e6961fcc0b1
--- /dev/null
+++ b/lang/gcc49/patches/patch-libgcc_unwind-dw2-fde-dip.c
@@ -0,0 +1,26 @@
+$NetBSD: patch-libgcc_unwind-dw2-fde-dip.c,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Add dl_iterate_phdr error handling support for all BSDs. The NetBSD and
+OpenBSD code will not run until dl_iterate_phdr detection in the configure
+script is uncommented.
+
+--- libgcc/unwind-dw2-fde-dip.c.orig 2014-01-02 22:25:22.000000000 +0000
++++ libgcc/unwind-dw2-fde-dip.c
+@@ -58,13 +58,15 @@
+ #endif
+
+ #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
+- && defined(__FreeBSD__) && __FreeBSD__ >= 7
++ && defined(TARGET_DL_ITERATE_PHDR) \
++ && (defined(__FreeBSD__) || defined(__DragonFly__))
+ # define ElfW __ElfN
+ # define USE_PT_GNU_EH_FRAME
+ #endif
+
+ #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
+- && defined(__OpenBSD__)
++ && defined(TARGET_DL_ITERATE_PHDR) \
++ && (defined(__OpenBSD__) || defined(__NetBSD__))
+ # define ElfW(type) Elf_##type
+ # define USE_PT_GNU_EH_FRAME
+ #endif
diff --git a/lang/gcc49/patches/patch-libgfortran_configure b/lang/gcc49/patches/patch-libgfortran_configure
new file mode 100644
index 00000000000..381785e5c89
--- /dev/null
+++ b/lang/gcc49/patches/patch-libgfortran_configure
@@ -0,0 +1,15 @@
+$NetBSD: patch-libgfortran_configure,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+"#pragma weak" shouldn't be used on NetBSD.
+
+--- libgfortran/configure.orig 2014-07-16 10:06:03.000000000 +0000
++++ libgfortran/configure
+@@ -26340,7 +26340,7 @@ $as_echo "#define SUPPORTS_WEAK 1" >>con
+
+ fi
+ case "$host" in
+- *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* )
++ *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-netbsd* )
+
+ $as_echo "#define GTHREAD_USE_WEAK 0" >>confdefs.h
+
diff --git a/lang/gcc49/patches/patch-libgo_Makefile.in b/lang/gcc49/patches/patch-libgo_Makefile.in
new file mode 100644
index 00000000000..4db280e6462
--- /dev/null
+++ b/lang/gcc49/patches/patch-libgo_Makefile.in
@@ -0,0 +1,16 @@
+$NetBSD: patch-libgo_Makefile.in,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+proc.c will not compile with inline-functions (implied by -O3)
+so add -fno-inline-functions to its cflags.
+
+--- libgo/Makefile.in.orig 2014-01-08 01:08:29.000000000 +0000
++++ libgo/Makefile.in
+@@ -3153,7 +3153,7 @@ print.lo: runtime/print.c
+ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o print.lo `test -f 'runtime/print.c' || echo '$(srcdir)/'`runtime/print.c
+
+ proc.lo: runtime/proc.c
+-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT proc.lo -MD -MP -MF $(DEPDIR)/proc.Tpo -c -o proc.lo `test -f 'runtime/proc.c' || echo '$(srcdir)/'`runtime/proc.c
++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) -fno-inline-functions $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT proc.lo -MD -MP -MF $(DEPDIR)/proc.Tpo -c -o proc.lo `test -f 'runtime/proc.c' || echo '$(srcdir)/'`runtime/proc.c
+ @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proc.Tpo $(DEPDIR)/proc.Plo
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='runtime/proc.c' object='proc.lo' libtool=yes @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
diff --git a/lang/gcc49/patches/patch-libgo_runtime_proc.c b/lang/gcc49/patches/patch-libgo_runtime_proc.c
new file mode 100644
index 00000000000..3880d8944cb
--- /dev/null
+++ b/lang/gcc49/patches/patch-libgo_runtime_proc.c
@@ -0,0 +1,17 @@
+$NetBSD: patch-libgo_runtime_proc.c,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+SunOS libelf does not support largefile.
+
+--- libgo/runtime/proc.c.orig 2014-05-27 22:01:08.000000000 +0000
++++ libgo/runtime/proc.c
+@@ -11,6 +11,10 @@
+ #include "config.h"
+
+ #ifdef HAVE_DL_ITERATE_PHDR
++#ifdef __sun
++#undef _FILE_OFFSET_BITS
++#define _FILE_OFFSET_BITS 32
++#endif
+ #include <link.h>
+ #endif
+
diff --git a/lang/gcc49/patches/patch-libiberty_Makefile.in b/lang/gcc49/patches/patch-libiberty_Makefile.in
new file mode 100644
index 00000000000..59fefeb6696
--- /dev/null
+++ b/lang/gcc49/patches/patch-libiberty_Makefile.in
@@ -0,0 +1,16 @@
+$NetBSD: patch-libiberty_Makefile.in,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Ensure we look for includes in our include directory first, otherwise
+we may pick up an incompatible ansidecl.h, e.g. from binutils.
+
+--- libiberty/Makefile.in.orig 2013-06-01 00:20:49.000000000 +0000
++++ libiberty/Makefile.in
+@@ -112,7 +112,7 @@ installcheck: installcheck-subdir
+
+ INCDIR=$(srcdir)/$(MULTISRCTOP)../include
+
+-COMPILE.c = $(CC) -c @DEFS@ $(CFLAGS) $(CPPFLAGS) -I. -I$(INCDIR) $(HDEFINES) @ac_libiberty_warn_cflags@
++COMPILE.c = $(CC) -c @DEFS@ -I. -I$(INCDIR) $(CFLAGS) $(CPPFLAGS) $(HDEFINES) @ac_libiberty_warn_cflags@
+
+ # Just to make sure we don't use a built-in rule with VPATH
+ .c.$(objext):
diff --git a/lang/gcc49/patches/patch-libjava_Makefile.in b/lang/gcc49/patches/patch-libjava_Makefile.in
new file mode 100644
index 00000000000..4f1468876f9
--- /dev/null
+++ b/lang/gcc49/patches/patch-libjava_Makefile.in
@@ -0,0 +1,16 @@
+$NetBSD: patch-libjava_Makefile.in,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Tell libtool the fact that libjvm.so is a module to be opened with
+dlopen(3). This is actually needed on Mach-O systems like Darwin.
+
+--- libjava/Makefile.in.orig 2014-07-16 10:06:03.000000000 +0000
++++ libjava/Makefile.in
+@@ -1134,7 +1134,7 @@ libgcj_tools_la_LINK = $(LIBLINK) $(libg
+ libjvm_la_SOURCES = jni-libjvm.cc
+ libjvm_la_DEPENDENCIES = libgcj.la libgcj.spec $(am__append_20)
+ libjvm_la_LIBADD = -L$(here)/.libs libgcj.la
+-libjvm_la_LDFLAGS = -avoid-version $(LIBGCJ_LD_SYMBOLIC) \
++libjvm_la_LDFLAGS = -avoid-version -module $(LIBGCJ_LD_SYMBOLIC) \
+ $(LIBJAVA_LDFLAGS_NOUNDEF)
+
+ libjvm_la_LINK = $(CXXLINK) $(libjvm_la_LDFLAGS)
diff --git a/lang/gcc49/patches/patch-libjava_boehm.cc b/lang/gcc49/patches/patch-libjava_boehm.cc
new file mode 100644
index 00000000000..159d35ad7f6
--- /dev/null
+++ b/lang/gcc49/patches/patch-libjava_boehm.cc
@@ -0,0 +1,27 @@
+$NetBSD: patch-libjava_boehm.cc,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Disable GC_register_my_thread and GC_unregister_my_thread on NetBSD as
+the version of boehm-gc bundled with gcc does not support NetBSD threads.
+
+--- libjava/boehm.cc.orig 2007-10-22 21:24:35.000000000 +0000
++++ libjava/boehm.cc
+@@ -747,7 +747,8 @@ _Jv_GCAttachThread ()
+ // The registration interface is only defined on posixy systems and
+ // only actually works if pthread_getattr_np is defined.
+ // FIXME: until gc7 it is simpler to disable this on solaris.
+-#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS)
++#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) \
++ && !defined(__NetBSD__)
+ GC_register_my_thread ();
+ #endif
+ }
+@@ -755,7 +756,8 @@ _Jv_GCAttachThread ()
+ void
+ _Jv_GCDetachThread ()
+ {
+-#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS)
++#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) \
++ && !defined(__NetBSD__)
+ GC_unregister_my_thread ();
+ #endif
+ }
diff --git a/lang/gcc49/patches/patch-libjava_configure b/lang/gcc49/patches/patch-libjava_configure
new file mode 100644
index 00000000000..5aecd81b716
--- /dev/null
+++ b/lang/gcc49/patches/patch-libjava_configure
@@ -0,0 +1,17 @@
+$NetBSD: patch-libjava_configure,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Avoid a reference to the wrapped make in the pkgsrc work directory from
+showing up in an installed file.
+See: libjava/contrib/aotcompile.py.in
+
+--- libjava/configure.orig 2014-07-16 10:06:03.000000000 +0000
++++ libjava/configure
+@@ -24865,7 +24865,7 @@ $as_echo "Python modules dir: ${python_m
+
+
+ # needed for aot-compile-rpm
+-MAKE=`which make`
++MAKE=${PKGSRC_MAKE}
+
+
+ # Check whether --enable-aot-compile-rpm was given.
diff --git a/lang/gcc49/patches/patch-libjava_contrib_rebuild-gcj-db.in b/lang/gcc49/patches/patch-libjava_contrib_rebuild-gcj-db.in
new file mode 100644
index 00000000000..b940b6d22dc
--- /dev/null
+++ b/lang/gcc49/patches/patch-libjava_contrib_rebuild-gcj-db.in
@@ -0,0 +1,29 @@
+$NetBSD: patch-libjava_contrib_rebuild-gcj-db.in,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+No need to use bash for this small script.
+
+Also -print0 is not portable to solaris and perhaps others.
+
+--- libjava/contrib/rebuild-gcj-db.in.orig 2008-07-02 13:17:54.000000000 +0000
++++ libjava/contrib/rebuild-gcj-db.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ # rebuild-gcj-db
+
+ ## Copyright (C) 2000, 2002, 2003, 2008 Free Software Foundation
+@@ -16,12 +16,12 @@ for i in `@prefix@/bin/gcc --print-multi
+ base=@prefix@/lib/$dirname
+ dbLocation=`@prefix@/bin/gcj-dbtool -p $base`
+ libdir=$base/gcj
+- if ! test -d $libdir; then
++ if test ! -d $libdir; then
+ # No shared libraries here.
+ continue
+ fi
+ dirname $dbLocation | xargs mkdir -p
+ @prefix@/bin/gcj-dbtool -n $dbLocation 64
+- find $libdir -follow -name '*.db' -print0 | \
++ find $libdir -follow -name '*.db' -print | @AWK@ '{printf("%s%c", $1, 0);}'|\
+ @prefix@/bin/gcj-dbtool -0 -m $dbLocation $dbLocation
+ done
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc b/lang/gcc49/patches/patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc
new file mode 100644
index 00000000000..46846aef816
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc
@@ -0,0 +1,307 @@
+$NetBSD: patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- libstdc++-v3/config/locale/dragonfly/c_locale.cc.orig 2014-09-04 10:04:50.888905686 +0000
++++ libstdc++-v3/config/locale/dragonfly/c_locale.cc
+@@ -0,0 +1,300 @@
++// Wrapper for underlying C-language localization -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
++// Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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 3, or (at your option)
++// any later version.
++
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 22.8 Standard locale categories.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <cerrno> // For errno
++#include <cmath> // For isinf, finite, finitef, fabs
++#include <cstdlib> // For strof, strtold
++#include <cstring>
++#include <cstdio>
++#include <locale>
++#include <limits>
++
++#ifdef _GLIBCXX_HAVE_IEEEFP_H
++#include <ieeefp.h>
++#endif
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++ template<>
++ void
++ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
++ const __c_locale&) throw()
++ {
++ // Assumes __s formatted for "C" locale.
++ char* __old = setlocale(LC_ALL, 0);
++ const size_t __len = strlen(__old) + 1;
++ char* __sav = new char[__len];
++ memcpy(__sav, __old, __len);
++ setlocale(LC_ALL, "C");
++ char* __sanity;
++ bool __overflow = false;
++
++#if !__FLT_HAS_INFINITY__
++ errno = 0;
++#endif
++
++#ifdef _GLIBCXX_HAVE_STRTOF
++ __v = strtof(__s, &__sanity);
++#else
++ double __d = strtod(__s, &__sanity);
++ __v = static_cast<float>(__d);
++#ifdef _GLIBCXX_HAVE_FINITEF
++ if (!finitef (__v))
++ __overflow = true;
++#elif defined (_GLIBCXX_HAVE_FINITE)
++ if (!finite (static_cast<double> (__v)))
++ __overflow = true;
++#elif defined (_GLIBCXX_HAVE_ISINF)
++ if (isinf (static_cast<double> (__v)))
++ __overflow = true;
++#else
++ if (fabs(__d) > numeric_limits<float>::max())
++ __overflow = true;
++#endif
++#endif // _GLIBCXX_HAVE_STRTOF
++
++ // _GLIBCXX_RESOLVE_LIB_DEFECTS
++ // 23. Num_get overflow result.
++ if (__sanity == __s || *__sanity != '\0')
++ {
++ __v = 0.0f;
++ __err = ios_base::failbit;
++ }
++ else if (__overflow
++#if __FLT_HAS_INFINITY__
++ || __v == numeric_limits<float>::infinity()
++ || __v == -numeric_limits<float>::infinity()
++#else
++ || ((__v > 1.0f || __v < -1.0f) && errno == ERANGE)
++#endif
++ )
++ {
++ if (__v > 0.0f)
++ __v = numeric_limits<float>::max();
++ else
++ __v = -numeric_limits<float>::max();
++ __err = ios_base::failbit;
++ }
++
++ setlocale(LC_ALL, __sav);
++ delete [] __sav;
++ }
++
++ template<>
++ void
++ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
++ const __c_locale&) throw()
++ {
++ // Assumes __s formatted for "C" locale.
++ char* __old = setlocale(LC_ALL, 0);
++ const size_t __len = strlen(__old) + 1;
++ char* __sav = new char[__len];
++ memcpy(__sav, __old, __len);
++ setlocale(LC_ALL, "C");
++ char* __sanity;
++
++#if !__DBL_HAS_INFINITY__
++ errno = 0;
++#endif
++
++ __v = strtod(__s, &__sanity);
++
++ // _GLIBCXX_RESOLVE_LIB_DEFECTS
++ // 23. Num_get overflow result.
++ if (__sanity == __s || *__sanity != '\0')
++ {
++ __v = 0.0;
++ __err = ios_base::failbit;
++ }
++ else if (
++#if __DBL_HAS_INFINITY__
++ __v == numeric_limits<double>::infinity()
++ || __v == -numeric_limits<double>::infinity())
++#else
++ (__v > 1.0 || __v < -1.0) && errno == ERANGE)
++#endif
++ {
++ if (__v > 0.0)
++ __v = numeric_limits<double>::max();
++ else
++ __v = -numeric_limits<double>::max();
++ __err = ios_base::failbit;
++ }
++
++ setlocale(LC_ALL, __sav);
++ delete [] __sav;
++ }
++
++ template<>
++ void
++ __convert_to_v(const char* __s, long double& __v,
++ ios_base::iostate& __err, const __c_locale&) throw()
++ {
++ // Assumes __s formatted for "C" locale.
++ char* __old = setlocale(LC_ALL, 0);
++ const size_t __len = strlen(__old) + 1;
++ char* __sav = new char[__len];
++ memcpy(__sav, __old, __len);
++ setlocale(LC_ALL, "C");
++
++#if !__LDBL_HAS_INFINITY__
++ errno = 0;
++#endif
++
++#if defined(_GLIBCXX_HAVE_STRTOLD) && !defined(_GLIBCXX_HAVE_BROKEN_STRTOLD)
++ char* __sanity;
++ __v = strtold(__s, &__sanity);
++
++ // _GLIBCXX_RESOLVE_LIB_DEFECTS
++ // 23. Num_get overflow result.
++ if (__sanity == __s || *__sanity != '\0')
++#else
++ typedef char_traits<char>::int_type int_type;
++ int __p = sscanf(__s, "%Lf", &__v);
++
++ if (!__p || static_cast<int_type>(__p) == char_traits<char>::eof())
++#endif
++ {
++ __v = 0.0l;
++ __err = ios_base::failbit;
++ }
++ else if (
++#if __LDBL_HAS_INFINITY__
++ __v == numeric_limits<long double>::infinity()
++ || __v == -numeric_limits<long double>::infinity())
++#else
++ (__v > 1.0l || __v < -1.0l) && errno == ERANGE)
++#endif
++ {
++ if (__v > 0.0l)
++ __v = numeric_limits<long double>::max();
++ else
++ __v = -numeric_limits<long double>::max();
++ __err = ios_base::failbit;
++ }
++
++ setlocale(LC_ALL, __sav);
++ delete [] __sav;
++ }
++
++
++ /* DragonFly's implementation of setlocale won't accept something like
++ "de_DE". According to nls manpage, the expected format is:
++ language[_territory][.codeset][@modifier], but it seems that both
++ the _territory and .codeset components are required.
++
++ As an attempt to correct for this, we'll tack on ".UTF-8" if
++ a period is not detected in the locale string.
++
++ There are no locales with modifiers on DragonFly so if found, they
++ will just be stripped off silently. e.g "de_DE@euro" will be reduced
++ to "de_DE". The UTF-8 default would be added after that.
++ */
++
++ void
++ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s,
++ __c_locale)
++ {
++ const size_t size__s = (__s == NULL) ? 1 : strlen (__s);
++ const char UTF8[] = ".UTF-8";
++ char localspec[size__s + 6 + 1];
++
++ if (__s == NULL) {
++ localspec[0] = NULL;
++ } else {
++ strcpy (localspec, __s);
++ char * pch = strchr (localspec, '@');
++ if (pch != NULL)
++ *pch = 0;
++
++ if ( (strchr (__s, '.') == NULL)
++ && (strcmp (__s, "C") != 0)
++ && (strcmp (__s, "POSIX") != 0))
++ strncat (localspec, UTF8, 6);
++ }
++
++ const char * result = std::setlocale(LC_ALL, localspec);
++
++ if ((strcmp(result, "C") != 0) && (strcmp (result, localspec) != 0))
++ __throw_runtime_error(__N("locale::facet::_S_create_c_locale "
++ "name not valid"));
++ __cloc = 0;
++ }
++
++ void
++ locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
++ { __cloc = 0; }
++
++ __c_locale
++ locale::facet::_S_clone_c_locale(__c_locale&) throw()
++ { return __c_locale(); }
++
++ __c_locale
++ locale::facet::_S_lc_ctype_c_locale(__c_locale, const char*)
++ { return __c_locale(); }
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
++
++namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
++ {
++ "LC_CTYPE",
++ "LC_NUMERIC",
++ "LC_TIME",
++ "LC_COLLATE",
++ "LC_MONETARY",
++ "LC_MESSAGES"
++ };
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++ const char* const* const locale::_S_categories = __gnu_cxx::category_names;
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
++
++// XXX GLIBCXX_ABI Deprecated
++#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
++#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
++ extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
++_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
++#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc b/lang/gcc49/patches/patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc
new file mode 100644
index 00000000000..deb656cdd3c
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc
@@ -0,0 +1,181 @@
+$NetBSD: patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- libstdc++-v3/config/locale/dragonfly/ctype_members.cc.orig 2014-09-04 10:04:50.938450582 +0000
++++ libstdc++-v3/config/locale/dragonfly/ctype_members.cc
+@@ -0,0 +1,174 @@
++// std::ctype implementation details, GNU version -*- C++ -*-
++
++// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
++// Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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 3, or (at your option)
++// any later version.
++
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions.
++//
++
++// Written by Benjamin Kosnik <bkoz@redhat.com>
++
++#include <locale>
++#include <bits/c++locale_internal.h>
++#include <cstdlib>
++#include <cstring>
++#include <cstdio>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++ // NB: The other ctype<char> specializations are in src/locale.cc and
++ // various /config/os/* files.
++
++ ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
++ : ctype<char>(0, false, __refs)
++ {
++ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
++ {
++ this->_S_destroy_c_locale(this->_M_c_locale_ctype);
++ this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
++ }
++ }
++
++ ctype_byname<char>::~ctype_byname()
++ { }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ ctype<wchar_t>::__wmask_type
++ ctype<wchar_t>::_M_convert_to_wmask(
++ const mask __attribute__((__unused__)) __m) const throw()
++ {
++ // DragonFly uses the same codes for 'char' as 'wchar_t', so this routine
++ // never gets called.
++ return __wmask_type();
++ };
++
++ wchar_t
++ ctype<wchar_t>::do_toupper(wchar_t __c) const
++ { return towupper(__c); }
++
++ const wchar_t*
++ ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
++ {
++ while (__lo < __hi)
++ {
++ *__lo = towupper(*__lo);
++ ++__lo;
++ }
++ return __hi;
++ }
++
++ wchar_t
++ ctype<wchar_t>::do_tolower(wchar_t __c) const
++ { return towlower(__c); }
++
++ const wchar_t*
++ ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
++ {
++ while (__lo < __hi)
++ {
++ *__lo = towlower(*__lo);
++ ++__lo;
++ }
++ return __hi;
++ }
++
++ wchar_t
++ ctype<wchar_t>::
++ do_widen(char __c) const
++ { return _M_widen[static_cast<unsigned char>(__c)]; }
++
++ const char*
++ ctype<wchar_t>::
++ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
++ {
++ while (__lo < __hi)
++ {
++ *__dest = _M_widen[static_cast<unsigned char>(*__lo)];
++ ++__lo;
++ ++__dest;
++ }
++ return __hi;
++ }
++
++ char
++ ctype<wchar_t>::
++ do_narrow(wchar_t __wc, char __dfault) const
++ {
++ if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
++ return _M_narrow[__wc];
++ const int __c = wctob(__wc);
++ return (__c == EOF ? __dfault : static_cast<char>(__c));
++ }
++
++ const wchar_t*
++ ctype<wchar_t>::
++ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault,
++ char* __dest) const
++ {
++ if (_M_narrow_ok)
++ while (__lo < __hi)
++ {
++ if (*__lo >= 0 && *__lo < 128)
++ *__dest = _M_narrow[*__lo];
++ else
++ {
++ const int __c = wctob(*__lo);
++ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
++ }
++ ++__lo;
++ ++__dest;
++ }
++ else
++ while (__lo < __hi)
++ {
++ const int __c = wctob(*__lo);
++ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
++ ++__lo;
++ ++__dest;
++ }
++ return __hi;
++ }
++
++ void
++ ctype<wchar_t>::_M_initialize_ctype() throw()
++ {
++ wint_t __i;
++ for (__i = 0; __i < 128; ++__i)
++ {
++ const int __c = wctob(__i);
++ if (__c == EOF)
++ break;
++ else
++ _M_narrow[__i] = static_cast<char>(__c);
++ }
++ if (__i == 128)
++ _M_narrow_ok = true;
++ else
++ _M_narrow_ok = false;
++ for (size_t __i = 0;
++ __i < sizeof(_M_widen) / sizeof(wint_t); ++__i)
++ _M_widen[__i] = btowc(__i);
++ }
++#endif // _GLIBCXX_USE_WCHAR_T
++}
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h
new file mode 100644
index 00000000000..3258b5fadd1
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h
@@ -0,0 +1,67 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h.orig 2014-09-04 10:04:50.980991821 +0000
++++ libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
+@@ -0,0 +1,60 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 2000, 2003, 2009, 2010 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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 3, or (at your option)
++// any later version.
++
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
++// <http://www.gnu.org/licenses/>.
++
++//
++// ISO C++ 14882: 22.1 Locales
++//
++
++// Information as gleaned from /usr/include/ctype.h on DragonFly.
++// Full details can be found from git repo at:
++// http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/include/ctype.h
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++ /// @brief Base class for ctype.
++ struct ctype_base
++ {
++ // Non-standard typedefs.
++ typedef const int* __to_type;
++
++ // NB: Offsets into ctype<char>::_M_table force a particular size
++ // on the mask type. Because of this, we don't use an enum.
++ typedef uint16_t mask;
++ static const mask upper = _CTYPEMASK_U;
++ static const mask lower = _CTYPEMASK_L;
++ static const mask alpha = _CTYPEMASK_A;
++ static const mask digit = _CTYPEMASK_D;
++ static const mask xdigit = _CTYPEMASK_X;
++ static const mask space = _CTYPEMASK_S;
++ static const mask print = _CTYPEMASK_R;
++ static const mask graph = _CTYPEMASK_G;
++ static const mask cntrl = _CTYPEMASK_C;
++ static const mask punct = _CTYPEMASK_P;
++ static const mask alnum = _CTYPEMASK_A | _CTYPEMASK_D;
++ };
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc
new file mode 100644
index 00000000000..64f51ebbae2
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc
@@ -0,0 +1,106 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc.orig 2014-09-04 10:04:51.024501545 +0000
++++ libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
+@@ -0,0 +1,99 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 2011 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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 3, or (at your option)
++// any later version.
++
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
++// <http://www.gnu.org/licenses/>.
++
++/** @file ctype_configure_char.cc */
++
++//
++// ISO C++ 14882: 22.1 Locales
++//
++
++#include <locale>
++#include <cstdlib>
++#include <cstring>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++// Information as gleaned from /usr/include/ctype.h
++
++ const ctype_base::mask*
++ ctype<char>::classic_table() throw()
++ { return 0; }
++
++ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
++ size_t __refs)
++ : facet(__refs), _M_del(__table != 0 && __del),
++ _M_toupper(NULL), _M_tolower(NULL),
++ _M_table(__table ? __table : classic_table())
++ {
++ memset(_M_widen, 0, sizeof(_M_widen));
++ _M_widen_ok = 0;
++ memset(_M_narrow, 0, sizeof(_M_narrow));
++ _M_narrow_ok = 0;
++ }
++
++ ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
++ : facet(__refs), _M_del(__table != 0 && __del),
++ _M_toupper(NULL), _M_tolower(NULL),
++ _M_table(__table ? __table : classic_table())
++ {
++ memset(_M_widen, 0, sizeof(_M_widen));
++ _M_widen_ok = 0;
++ memset(_M_narrow, 0, sizeof(_M_narrow));
++ _M_narrow_ok = 0;
++ }
++
++ char
++ ctype<char>::do_toupper(char __c) const
++ { return ::toupper((int) __c); }
++
++ const char*
++ ctype<char>::do_toupper(char* __low, const char* __high) const
++ {
++ while (__low < __high)
++ {
++ *__low = ::toupper((int) *__low);
++ ++__low;
++ }
++ return __high;
++ }
++
++ char
++ ctype<char>::do_tolower(char __c) const
++ { return ::tolower((int) __c); }
++
++ const char*
++ ctype<char>::do_tolower(char* __low, const char* __high) const
++ {
++ while (__low < __high)
++ {
++ *__low = ::tolower((int) *__low);
++ ++__low;
++ }
++ return __high;
++ }
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h
new file mode 100644
index 00000000000..c3abdce183b
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h
@@ -0,0 +1,168 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h.orig 2014-09-04 10:04:51.067899081 +0000
++++ libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h
+@@ -0,0 +1,161 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 2000, 2003, 2004, 2005, 2009, 2010
++// Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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 3, or (at your option)
++// any later version.
++
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
++// <http://www.gnu.org/licenses/>.
++
++/** @file bits/ctype_inline.h
++ * This is an internal header file, included by other library headers.
++ * Do not attempt to use it directly. @headername{locale}
++ */
++
++//
++// ISO C++ 14882: 22.1 Locales
++//
++
++// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
++// functions go in ctype.cc
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++ bool
++ ctype<char>::
++ is(mask __m, char __c) const
++ {
++ if (_M_table)
++ return _M_table[static_cast<unsigned char>(__c)] & __m;
++ else
++ return __libc_ctype_ [__c + 1] & __m;
++ }
++
++ const char*
++ ctype<char>::
++ is(const char* __low, const char* __high, mask* __vec) const
++ {
++ if (_M_table)
++ while (__low < __high)
++ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
++ else
++ for (;__low < __high; ++__vec, ++__low)
++ {
++ mask __m = 0;
++ if (this->is(upper, *__low)) __m |= upper;
++ if (this->is(lower, *__low)) __m |= lower;
++ if (this->is(alpha, *__low)) __m |= alpha;
++ if (this->is(digit, *__low)) __m |= digit;
++ if (this->is(xdigit, *__low)) __m |= xdigit;
++ if (this->is(space, *__low)) __m |= space;
++ if (this->is(print, *__low)) __m |= print;
++ if (this->is(graph, *__low)) __m |= graph;
++ if (this->is(cntrl, *__low)) __m |= cntrl;
++ if (this->is(punct, *__low)) __m |= punct;
++ // Do not include explicit line for alnum mask since it is a
++ // pure composite of masks on DragonFly.
++ *__vec = __m;
++ }
++ return __high;
++ }
++
++ const char*
++ ctype<char>::
++ scan_is(mask __m, const char* __low, const char* __high) const
++ {
++ if (_M_table)
++ while (__low < __high
++ && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
++ ++__low;
++ else
++ while (__low < __high && !this->is(__m, *__low))
++ ++__low;
++ return __low;
++ }
++
++ const char*
++ ctype<char>::
++ scan_not(mask __m, const char* __low, const char* __high) const
++ {
++ if (_M_table)
++ while (__low < __high
++ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
++ ++__low;
++ else
++ while (__low < __high && this->is(__m, *__low) != 0)
++ ++__low;
++ return __low;
++ }
++
++#ifdef _GLIBCXX_USE_WCHAR_T
++ inline bool
++ ctype<wchar_t>::
++ do_is(mask __m, wchar_t __c) const
++ {
++ return __libc_ctype_ [__c + 1] & __m;
++ }
++
++ inline const wchar_t*
++ ctype<wchar_t>::
++ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
++ {
++ for (; __lo < __hi; ++__vec, ++__lo)
++ {
++ mask __m = 0;
++ if (isupper (*__lo)) __m |= _CTYPEMASK_U;
++ if (islower (*__lo)) __m |= _CTYPEMASK_L;
++ if (isdigit (*__lo)) __m |= _CTYPEMASK_D;
++ if (isspace (*__lo)) __m |= _CTYPEMASK_S;
++ if (ispunct (*__lo)) __m |= _CTYPEMASK_P;
++ if (isblank (*__lo)) __m |= _CTYPEMASK_B;
++ if (iscntrl (*__lo)) __m |= _CTYPEMASK_C;
++ if (isalpha (*__lo)) __m |= _CTYPEMASK_A;
++ if (isgraph (*__lo)) __m |= _CTYPEMASK_G;
++ if (isprint (*__lo)) __m |= _CTYPEMASK_R;
++ if (isxdigit(*__lo)) __m |= _CTYPEMASK_X;
++ /* alnum already covered = alpha | digit */
++
++ *__vec = __m;
++ }
++ return __hi;
++ }
++
++ inline const wchar_t*
++ ctype<wchar_t>::
++ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
++ {
++ while (__lo < __hi && !(__libc_ctype_ [*__lo + 1] & __m))
++ ++__lo;
++ return __lo;
++ }
++
++ inline const wchar_t*
++ ctype<wchar_t>::
++ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
++ {
++ while (__lo < __hi && (__libc_ctype_ [*__lo + 1] & __m))
++ ++__lo;
++ return __lo;
++ }
++#endif
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h
new file mode 100644
index 00000000000..3ec934b92f4
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h
@@ -0,0 +1,48 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- libstdc++-v3/config/os/bsd/dragonfly/os_defines.h.orig 2014-09-04 10:04:51.114470897 +0000
++++ libstdc++-v3/config/os/bsd/dragonfly/os_defines.h
+@@ -0,0 +1,41 @@
++// Specific definitions for BSD -*- C++ -*-
++
++// Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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 3, or (at your option)
++// any later version.
++
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
++// <http://www.gnu.org/licenses/>.
++
++
++#ifndef _GLIBCXX_OS_DEFINES
++#define _GLIBCXX_OS_DEFINES 1
++
++// System-specific #define, typedefs, corrections, etc, go here. This
++// file will come before all others.
++
++/* FreeBSD approach, likely a mistake for DragonFly.
++#define _GLIBCXX_USE_C99_CHECK 1
++#define _GLIBCXX_USE_C99_DYNAMIC (!(__ISO_C_VISIBLE >= 1999))
++#define _GLIBCXX_USE_C99_LONG_LONG_CHECK 1
++#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC (_GLIBCXX_USE_C99_DYNAMIC || !defined __LONG_LONG_SUPPORTED)
++#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_CHECK 1
++#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC defined _XOPEN_SOURCE
++*/
++
++#endif
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h
new file mode 100644
index 00000000000..8f3567afb75
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h
@@ -0,0 +1,39 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support _CTYPE_BL
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2014-01-02 22:30:10.000000000 +0000
++++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
+@@ -43,9 +43,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ // NB: Offsets into ctype<char>::_M_table force a particular size
+ // on the mask type. Because of this, we don't use an enum.
+- typedef unsigned char mask;
+
+-#ifndef _CTYPE_U
++#if defined(_CTYPE_BL)
++ typedef unsigned short mask;
++ static const mask upper = _CTYPE_U;
++ static const mask lower = _CTYPE_L;
++ static const mask alpha = _CTYPE_A;
++ static const mask digit = _CTYPE_D;
++ static const mask xdigit = _CTYPE_X;
++ static const mask space = _CTYPE_S;
++ static const mask print = _CTYPE_R;
++ static const mask graph = _CTYPE_G;
++ static const mask cntrl = _CTYPE_C;
++ static const mask punct = _CTYPE_P;
++ static const mask alnum = _CTYPE_A | _CTYPE_D;
++#elif !defined(_CTYPE_U)
++ typedef unsigned char mask;
+ static const mask upper = _U;
+ static const mask lower = _L;
+ static const mask alpha = _U | _L;
+@@ -58,6 +71,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ static const mask punct = _P;
+ static const mask alnum = _U | _L | _N;
+ #else
++ typedef unsigned char mask;
+ static const mask upper = _CTYPE_U;
+ static const mask lower = _CTYPE_L;
+ static const mask alpha = _CTYPE_U | _CTYPE_L;
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc
new file mode 100644
index 00000000000..092a07a2d09
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc
@@ -0,0 +1,59 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support _CTYPE_BL
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc.orig 2014-01-02 22:30:10.000000000 +0000
++++ libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
+@@ -38,11 +38,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ // Information as gleaned from /usr/include/ctype.h
+
++#ifndef _CTYPE_BL
+ extern "C" const u_int8_t _C_ctype_[];
++#endif
+
+ const ctype_base::mask*
+ ctype<char>::classic_table() throw()
+- { return _C_ctype_ + 1; }
++#ifdef _CTYPE_BL
++ { return _C_ctype_tab_ + 1; }
++#else
++ { return _C_ctype_ + 1; }
++#endif
+
+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+ size_t __refs)
+@@ -69,14 +75,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ char
+ ctype<char>::do_toupper(char __c) const
+- { return ::toupper((int) __c); }
++ { return ::toupper((int)(unsigned char) __c); }
+
+ const char*
+ ctype<char>::do_toupper(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+- *__low = ::toupper((int) *__low);
++ *__low = ::toupper((int)(unsigned char) *__low);
+ ++__low;
+ }
+ return __high;
+@@ -84,14 +90,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ char
+ ctype<char>::do_tolower(char __c) const
+- { return ::tolower((int) __c); }
++ { return ::tolower((int)(unsigned char) __c); }
+
+ const char*
+ ctype<char>::do_tolower(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+- *__low = ::tolower((int) *__low);
++ *__low = ::tolower((int)(unsigned char) *__low);
+ ++__low;
+ }
+ return __high;
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
new file mode 100644
index 00000000000..8fd68f970e5
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
@@ -0,0 +1,15 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support _CTYPE_BL
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h.orig 2014-01-02 22:30:10.000000000 +0000
++++ libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
+@@ -48,7 +48,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ is(const char* __low, const char* __high, mask* __vec) const
+ {
+ while (__low < __high)
+- *__vec++ = _M_table[*__low++];
++ *__vec++ = _M_table[(unsigned char)*__low++];
+ return __high;
+ }
+
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_configure b/lang/gcc49/patches/patch-libstdc++-v3_configure
new file mode 100644
index 00000000000..4352189efdd
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_configure
@@ -0,0 +1,49 @@
+$NetBSD: patch-libstdc++-v3_configure,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- libstdc++-v3/configure.orig 2014-03-20 18:57:07.000000000 +0000
++++ libstdc++-v3/configure
+@@ -15811,7 +15811,7 @@ $as_echo "stdio" >&6; }
+ if test "${enable_clocale+set}" = set; then :
+ enableval=$enable_clocale;
+ case "$enableval" in
+- generic|gnu|ieee_1003.1-2001|newlib|yes|no|auto) ;;
++ generic|gnu|ieee_1003.1-2001|newlib|darwin|dragonfly|yes|no|auto) ;;
+ *) as_fn_error "Unknown argument to enable/disable clocale" "$LINENO" 5 ;;
+ esac
+
+@@ -15849,6 +15849,9 @@ fi
+ darwin* | freebsd*)
+ enable_clocale_flag=darwin
+ ;;
++ dragonfly*)
++ enable_clocale_flag=dragonfly
++ ;;
+ openbsd*)
+ enable_clocale_flag=newlib
+ ;;
+@@ -15988,6 +15991,23 @@ $as_echo "darwin or freebsd" >&6; }
+ CMESSAGES_H=config/locale/generic/messages_members.h
+ CMESSAGES_CC=config/locale/generic/messages_members.cc
+ CMONEY_CC=config/locale/generic/monetary_members.cc
++ CNUMERIC_CC=config/locale/generic/numeric_members.cc
++ CTIME_H=config/locale/generic/time_members.h
++ CTIME_CC=config/locale/generic/time_members.cc
++ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
++ ;;
++ dragonfly)
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: dragonfly" >&5
++$as_echo "dragonfly" >&6; }
++
++ CLOCALE_H=config/locale/generic/c_locale.h
++ CLOCALE_CC=config/locale/dragonfly/c_locale.cc
++ CCODECVT_CC=config/locale/generic/codecvt_members.cc
++ CCOLLATE_CC=config/locale/generic/collate_members.cc
++ CCTYPE_CC=config/locale/dragonfly/ctype_members.cc
++ CMESSAGES_H=config/locale/generic/messages_members.h
++ CMESSAGES_CC=config/locale/generic/messages_members.cc
++ CMONEY_CC=config/locale/generic/monetary_members.cc
+ CNUMERIC_CC=config/locale/generic/numeric_members.cc
+ CTIME_H=config/locale/generic/time_members.h
+ CTIME_CC=config/locale/generic/time_members.cc
diff --git a/lang/gcc49/patches/patch-libstdc++-v3_configure.host b/lang/gcc49/patches/patch-libstdc++-v3_configure.host
new file mode 100644
index 00000000000..8ac6c65bbd0
--- /dev/null
+++ b/lang/gcc49/patches/patch-libstdc++-v3_configure.host
@@ -0,0 +1,16 @@
+$NetBSD: patch-libstdc++-v3_configure.host,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+
+Support DragonFly.
+
+--- libstdc++-v3/configure.host.orig 2013-07-04 21:07:44.000000000 +0000
++++ libstdc++-v3/configure.host
+@@ -260,6 +260,9 @@ case "${host_os}" in
+ os_include_dir="os/djgpp"
+ error_constants_dir="os/djgpp"
+ ;;
++ dragonfly*)
++ os_include_dir="os/bsd/dragonfly"
++ ;;
+ freebsd*)
+ os_include_dir="os/bsd/freebsd"
+ ;;
diff --git a/lang/gcc49/version.mk b/lang/gcc49/version.mk
new file mode 100644
index 00000000000..bde6e079f33
--- /dev/null
+++ b/lang/gcc49/version.mk
@@ -0,0 +1,2 @@
+# $NetBSD: version.mk,v 1.1 2014/09/04 18:43:11 jperkin Exp $
+GCC49_DIST_VERSION:= 4.9.1