pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

add package gcc7snapshot version 20160911



Module Name:	pkgsrc-wip
Committed By:	coypu <coypu%sdf.org@localhost>
Pushed By:	coypu
Date:		Tue Sep 13 18:25:32 2016 +0300
Changeset:	e3495974c91c1950b3eb6e533185c29dbe142668

Modified Files:
	Makefile
Added Files:
	gcc7snapshot/DESCR
	gcc7snapshot/Makefile
	gcc7snapshot/PLIST.java
	gcc7snapshot/TODO
	gcc7snapshot/buildlink3.mk
	gcc7snapshot/distinfo
	gcc7snapshot/options.mk
	gcc7snapshot/patches/patch-gcc_Makefile.in
	gcc7snapshot/patches/patch-gcc_config.gcc
	gcc7snapshot/patches/patch-gcc_config_netbsd-protos.h
	gcc7snapshot/patches/patch-gcc_config_netbsd-stdint.h
	gcc7snapshot/patches/patch-gcc_config_netbsd.c
	gcc7snapshot/patches/patch-gcc_config_netbsd.h
	gcc7snapshot/patches/patch-gcc_config_t-netbsd
	gcc7snapshot/patches/patch-gcc_config_x-netbsd
	gcc7snapshot/patches/patch-gcc_configure
	gcc7snapshot/patches/patch-gcc_ggc-common.c
	gcc7snapshot/patches/patch-gcc_lto_lto.c
	gcc7snapshot/patches/patch-gcc_system.h
	gcc7snapshot/patches/patch-libcilkrts_configure
	gcc7snapshot/patches/patch-libcilkrts_runtime_os-unix.c
	gcc7snapshot/patches/patch-libdecnumber_decNumber.c
	gcc7snapshot/patches/patch-libffi_configure
	gcc7snapshot/patches/patch-libffi_testsuite_libffi.call_float2.c
	gcc7snapshot/patches/patch-libgcc_crtstuff.c
	gcc7snapshot/patches/patch-libgcc_unwind-dw2-fde-dip.c
	gcc7snapshot/patches/patch-libgfortran_configure
	gcc7snapshot/patches/patch-libgo_Makefile.in
	gcc7snapshot/patches/patch-libjava_boehm.cc
	gcc7snapshot/patches/patch-libjava_configure
	gcc7snapshot/patches/patch-libjava_contrib_rebuild-gcj-db.in
	gcc7snapshot/patches/patch-libsanitizer_configure.tgt
	gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h
	gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc
	gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
	gcc7snapshot/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h
	gcc7snapshot/version.mk

Log Message:
add package gcc7snapshot version 20160911

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,...).

Changes since the GCC 6.0 series:

Caveats

    The non-standard C++0x type traits has_trivial_default_constructor, has_trivial_copy_constructor and has_trivial_copy_assign have been removed.

General Optimizer Improvements
New Languages and Language specific improvements
C family

    GCC 6's C and C++ frontends were able to offer suggestions for misspelled field names:

        spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'?
           return ptr->colour;
                       ^~~~~~

    GCC 7 greatly expands the scope of these suggestions. Firstly, it adds fix-it hints to such suggestions:

        spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'?
           return ptr->colour;
                       ^~~~~~
                       color

    The suggestions now cover many other things, such as misspelled function names:

        spellcheck-identifiers.c:11:3: warning: implicit declaration of function 'gtk_widget_showall'; did you mean 'gtk_widget_show_all'? [-Wimplicit-function-declaration]
           gtk_widget_showall (w);
           ^~~~~~~~~~~~~~~~~~
           gtk_widget_show_all

    misspelled macro names and enum values:

        spellcheck-identifiers.cc:85:11: error: 'MAX_ITEM' undeclared here (not in a function); did you mean 'MAX_ITEMS'?
         int array[MAX_ITEM];
                   ^~~~~~~~
                   MAX_ITEMS

    misspelled type names:

        spellcheck-typenames.c:7:14: error: unknown type name 'singed'; did you mean 'signed'?
         void test (singed char e);
                    ^~~~~~
                    signed

    and, in the C frontend, named initializers:

        test.c:7:20: error: 'struct s' has no member named 'colour'; did you mean 'color'?
         struct s test = { .colour = 3 };
                            ^~~~~~
                            color

    The preprocessor can now offer suggestions for misspelled directives, e.g.:

        test.c:5:2: error:invalid preprocessing directive #endfi; did you mean #endif?
         #endfi
          ^~~~~
          endif

    Warnings about format strings now underline the pertinent part of the string, and can offer suggested fixes. In some cases, the pertinent argument is underlined.

        test.c:51:29: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'int' [-Wformat=]
           printf ("foo: %d  bar: %s baz: %d", 100, i + j, 102);
                                  ~^                ~~~~~
                                  %d

C

    The C front end now supports type names _FloatN for floating-point types with IEEE interchange formats and _FloatNx for floating-point types with IEEE extended formats. These type names come from ISO/IEC TS 18661-3:2015.

    The set of types supported depends on the target for which GCC is configured. Most targets support _Float32, _Float32x and _Float64. _Float128 is supported on targets where IEEE binary128 encoding was already supported as long double or __float128. _Float64x is supported on targets where a type with either binary128 or Intel extended precision format is available.

    Constants with these types are supported using suffixes fN, FN, fNx and FNx (e.g., 1.2f128 or 2.3F64x). Macros such as FLT128_MAX are defined in <float.h> if __STDC_WANT_IEC_60559_TYPES_EXT__ is defined before it is included.

    These new types are always distinct from each other and from float, double and long double, even if they have the same encoding. Complex types such as _Complex _Float128 are also supported.

    Type-generic built-in functions such as __builtin_isinf support the new types, and the following type-specific built-in functions have versions (suffixed fN or fNx) for the new types: __builtin_copysign, __builtin_fabs, __builtin_huge_val, __builtin_inf, __builtin_nan, __builtin_nans.

C++

    The C++ frontend will now provide fix-it hints for some missing semicolons, allowing for automatic fixes by IDEs:

        test.cc:4:11: error: expected ';' after class definition
         class a {}
                   ^
                   ;

Runtime Library (libstdc++)

    Experimental support for C++17, including the following new features:
        std::string_view;
        std::any, std::optional, and std::variant;
        std::invoke, std::is_callable, and std::is_nothrow_callable;
        std::is_swappable, and std::is_nothrow_swappable;
        std::apply, and std::make_from_tuple;
        std::void_t, std::bool_constant, std::conjunction, std::disjunction, and std::negation;
        Mathematical Special Functions;
        std::chrono::floor, std::chrono::ceil, std::chrono::round, and std::chrono::abs;
        std::clamp;
        std::shared_ptr<T>::weak_type, std::enable_shared_from_this<T>::weak_from_this(), and std::owner_less<void>;
    Thanks to Daniel Krügler, Tim Shen, Edward Smith-Rowland, and Ville Voutilainen for work on the C++17 support.
    A new power-of-two rehashing policy for use with the _Hashtable internals, thanks to François Dumont.

Fortran

    Support for a number of legacy vendor extensions with new flags:
        -fdec-structure - Support for DEC STRUCTURE and UNION.
        -fdec-intrinsic-ints - Support for new integer intrinsics such as degree-valued trig functions (like TAND) and COTAN.
        -fdec - Enable the -fdec family of extensions.
    New flag -finit-derived to control default initialization of derived-type variables.

libgccjit

The libgccjit API gained support for marking calls as requiring tail-call optimization via a new entrypoint: gcc_jit_rvalue_set_bool_require_tail_call.

libgccjit performs numerous checks at the API boundary, but if these succeed, it previously ignored errors and other diagnostics emitted within the core of GCC, and treated the compile of a gcc_jit_context as having succeeded. As of GCC 7 it now ensures that if any diagnostics are emitted, they are visible from the libgccjit API, and that the the context is flagged as having failed.
New Targets and Target Specific Improvements
Operating Systems
Other significant improvements

    -fverbose-asm previously emitted information on the meanings of assembly expressions. This has been extended so that it now also prints comments showing the source lines that correspond to the assembly, making it easier to read the generated assembly (especially with larger functions). For example, given this C source file:

        int test (int n)
        {
          int i;
          int total = 0;

          for (i = 0; i < n; i++)
            total += i * i;
          return total;
        }

    -fverbose-asm now gives output similar to this for the function body (when compiling for x86_64, with -Os):

               .text
               .globl  test
               .type   test, @@function
        test:
        .LFB0:
               .cfi_startproc
        # example.c:4:   int total = 0;
               xorl    %eax, %eax      # <retval>
        # example.c:6:   for (i = 0; i < n; i++)
               xorl    %edx, %edx      # i
        .L2:
        # example.c:6:   for (i = 0; i < n; i++)
               cmpl    %edi, %edx      # n, i
               jge     .L5     #,
        # example.c:7:     total += i * i;
               movl    %edx, %ecx      # i, tmp92
               imull   %edx, %ecx      # i, tmp92
        # example.c:6:   for (i = 0; i < n; i++)
               incl    %edx    # i
        # example.c:7:     total += i * i;
               addl    %ecx, %eax      # tmp92, <retval>
               jmp     .L2     #
        .L5:
        # example.c:10: }
               ret
               .cfi_endproc

    A new option -fdiagnostics-parseable-fixits allows for fix-it hints to be emitted in a machine-readable form, suitable for consumption by IDEs. For example, given:

        spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'?
           return ptr->colour;
                       ^~~~~~
                       color

    it will emit:

        fix-it:"spellcheck-fields.cc":{52:13-52:19}:"color"

    The gcc and g++ driver programs will now provide suggestions for misspelled arguments to command-line options.

        $ gcc -c test.c -ftls-model=global-dinamic
        gcc: error: unknown TLS model 'global-dinamic'
        gcc: note: valid arguments to '-ftls-model=' are: global-dynamic initial-exec local-dynamic local-exec; did you mean 'global-dynamic'?

    The compiler will now provide suggestions for misspelled parameters.

        $ gcc -c test.c --param max-early-inliner-iteration=3
        cc1: error: invalid --param name 'max-early-inliner-iteration'; did you mean 'max-early-inliner-iterations'?

    GCC has gained an internal unit-testing framework, allowing for more detailed testing of its implementation details.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=e3495974c91c1950b3eb6e533185c29dbe142668

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 Makefile                                           |   1 +
 gcc7snapshot/DESCR                                 |   3 +
 gcc7snapshot/Makefile                              | 179 ++++++++++++++++++++
 gcc7snapshot/PLIST.java                            |  42 +++++
 gcc7snapshot/TODO                                  |  47 ++++++
 gcc7snapshot/buildlink3.mk                         |  31 ++++
 gcc7snapshot/distinfo                              |  39 +++++
 gcc7snapshot/options.mk                            | 181 +++++++++++++++++++++
 gcc7snapshot/patches/patch-gcc_Makefile.in         |  15 ++
 gcc7snapshot/patches/patch-gcc_config.gcc          |  39 +++++
 .../patches/patch-gcc_config_netbsd-protos.h       |  34 ++++
 .../patches/patch-gcc_config_netbsd-stdint.h       |  63 +++++++
 gcc7snapshot/patches/patch-gcc_config_netbsd.c     | 102 ++++++++++++
 gcc7snapshot/patches/patch-gcc_config_netbsd.h     |  43 +++++
 gcc7snapshot/patches/patch-gcc_config_t-netbsd     |  28 ++++
 gcc7snapshot/patches/patch-gcc_config_x-netbsd     |  12 ++
 gcc7snapshot/patches/patch-gcc_configure           |  13 ++
 gcc7snapshot/patches/patch-gcc_ggc-common.c        |  71 ++++++++
 gcc7snapshot/patches/patch-gcc_lto_lto.c           |  19 +++
 gcc7snapshot/patches/patch-gcc_system.h            |  27 +++
 gcc7snapshot/patches/patch-libcilkrts_configure    |  13 ++
 .../patches/patch-libcilkrts_runtime_os-unix.c     |  40 +++++
 .../patches/patch-libdecnumber_decNumber.c         |  13 ++
 gcc7snapshot/patches/patch-libffi_configure        |  13 ++
 .../patch-libffi_testsuite_libffi.call_float2.c    |  13 ++
 gcc7snapshot/patches/patch-libgcc_crtstuff.c       |  14 ++
 .../patches/patch-libgcc_unwind-dw2-fde-dip.c      |  13 ++
 gcc7snapshot/patches/patch-libgfortran_configure   |  13 ++
 gcc7snapshot/patches/patch-libgo_Makefile.in       |  17 ++
 gcc7snapshot/patches/patch-libjava_boehm.cc        |  22 +++
 gcc7snapshot/patches/patch-libjava_configure       |  17 ++
 .../patch-libjava_contrib_rebuild-gcj-db.in        |  29 ++++
 .../patches/patch-libsanitizer_configure.tgt       |  13 ++
 ...libstdc++-v3_config_os_bsd_netbsd_ctype__base.h |  37 +++++
 ..._config_os_bsd_netbsd_ctype__configure__char.cc |  58 +++++++
 ...bstdc++-v3_config_os_bsd_netbsd_ctype__inline.h |  13 ++
 .../patch-libstdc++-v3_libsupc++_unwind-cxx.h      |  12 ++
 gcc7snapshot/version.mk                            |   2 +
 38 files changed, 1341 insertions(+)

diffs:
diff --git a/Makefile b/Makefile
index 80dca2a..93bea85 100644
--- a/Makefile
+++ b/Makefile
@@ -839,6 +839,7 @@ SUBDIR+=	gcalcli-git
 SUBDIR+=	gcc42
 SUBDIR+=	gcc43
 SUBDIR+=	gcc6snapshot
+SUBDIR+=	gcc7snapshot
 SUBDIR+=	gconf-cleaner
 SUBDIR+=	gcr
 SUBDIR+=	gdal-docs
diff --git a/gcc7snapshot/DESCR b/gcc7snapshot/DESCR
new file mode 100644
index 0000000..ce00d3e
--- /dev/null
+++ b/gcc7snapshot/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,...). This package provides the development version of version 7.x.
diff --git a/gcc7snapshot/Makefile b/gcc7snapshot/Makefile
new file mode 100644
index 0000000..a3205f6
--- /dev/null
+++ b/gcc7snapshot/Makefile
@@ -0,0 +1,179 @@
+# $NetBSD: Makefile,v 1.3 2014/12/10 06:10:46 keckhardt Exp $
+
+GCC_PKGNAME=		gcc7snapshot
+.include		"version.mk"
+
+DISTNAME=	gcc-${GCC7S_DIST_VERSION}
+PKGNAME=	${GCC_PKGNAME}-${GCC7S_DIST_VERSION}
+## When bumping the PKGREVISION of this package the PKGREVISION of
+## lang/gcc7-libs needs to be bump to be at least 1 more than the
+## PKGREVISION of this package!
+#PKGREVISION=	1
+CATEGORIES=	lang
+MASTER_SITES=	${MASTER_SITE_GNU:=gcc/snapshots/${GCC7S-DIST_VERSION}/}
+MASTER_SITES+=	ftp://ftp.fu-berlin.de/unix/languages/gcc/snapshots/${GCC7S_DIST_VERSION}/
+EXTRACT_SUFX=	.tar.bz2
+
+MAINTAINER=	pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=	http://gcc.gnu.org/
+COMMENT=	The GNU Compiler Collection (GCC) - 7.0 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 tar:build
+
+GNU_CONFIGURE=		yes
+## Build outside ${WRKSRC}
+OBJDIR=			../build
+CONFIGURE_DIRS=		${OBJDIR}
+CONFIGURE_SCRIPT=	../${DISTNAME}/configure
+GCC_SUBPREFIX=		${GCC_PKGNAME}
+GCC_PREFIX=		${PREFIX}/${GCC_SUBPREFIX}
+GNU_CONFIGURE_PREFIX=	${GCC_PREFIX}
+INFO_FILES=		yes
+
+UNLIMIT_RESOURCES+=	datasize
+UNLIMIT_RESOURCES+=	stacksize
+
+SUBST_CLASSES+=		vars
+SUBST_MESSAGE.vars=	Setting target machine name path in ${SUBST_FILES.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*}
+# GCC does not understand this option; remove it, or stage build will fail
+BUILDLINK_TRANSFORM+=	rm:-stdlib=libc++
+
+.include "options.mk"
+
+## For graphite support.
+.if !empty(PKG_OPTIONS:Mgcc-graphite)
+
+post-extract:
+	${TAR} -jxf ${DISTDIR}/${ISL14}.tar.bz2 -C ${WRKSRC}
+	${MV} ${WRKSRC}/${ISL14} ${WRKSRC}/isl
+.endif
+
+## 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
+MAKE_ENV+=		ac_cv_func_freelocale=no
+MAKE_ENV+=		ac_cv_func_newlocale=no
+MAKE_ENV+=		ac_cv_func_uselocale=no
+.endif
+.if ${OPSYS} == "DragonFly"
+CONFIGURE_ARGS+=	--disable-bootstrap
+.endif
+
+
+
+.if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || !empty(MACHINE_PLATFORM:MLinux-*-i386)
+CONFIGURE_ARGS+=	--with-arch=i486 --with-tune=i486
+.endif
+
+.if !empty(MACHINE_PLATFORM:MNetBSD-*-x86_64) || !empty(MACHINE_PLATFORM:MLinux-*-x86_64)
+CONFIGURE_ARGS+=	--with-arch=nocona --with-tune=nocona --with-fpmath=sse
+.endif
+
+.if !empty(MACHINE_PLATFORM:MDarwin-[0-8].*-*)
+CONFIGURE_ARGS+=	--with-dwarf2
+.endif
+
+
+# ${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}
+
+# Determine whether to use binutils
+.if ${OPSYS} == "SunOS"
+.  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/gcc7snapshot/PLIST.java b/gcc7snapshot/PLIST.java
new file mode 100644
index 0000000..13e22b0
--- /dev/null
+++ b/gcc7snapshot/PLIST.java
@@ -0,0 +1,42 @@
+@comment $NetBSD: PLIST.java,v 1.1 2014/10/19 10:50:56 keckhardt 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/gcc7snapshot/TODO b/gcc7snapshot/TODO
new file mode 100644
index 0000000..f33a7f2
--- /dev/null
+++ b/gcc7snapshot/TODO
@@ -0,0 +1,47 @@
+TODO
+====
+
+
+I won't work on gcc any longer after gcc6 has been released in about 
+April 2016. So please step up as maintainer of gcc6/gcc7 for NetBSD.
+
+0) This package aims to keep the latest gcc usable on NetBSD, although
+any work on gcc should happen upstream as far as possible. But it is 
+hopeless without enough NetBSD developers working on it upstream. I have sent
+some patches for NetBSD to GCC a few month ago but there is no progress yet:
+
+PR 64271, the minimal patch set to bootstrap, extracted from pkgsrc.
+Jonathan Wakely is working on the libstdc++ patches involved.
+Without acceptance of patches for PR 64271, no other patches
+will be accepted upstream. 
+
+PR 39570, this bug causes all gfortran run tests to fail. I have developed
+the necessary patches and sent them upstream. For gcc50snapshot it means
+replacing a short patch by a bunch of complex patches, but they are gcc
+conforming and can be reused for other patches as well.
+
+PR 48244, for iso_c_binding support in gfortran. The patches are
+there but it is delayed by PR 64271.
+
+
+1) On NetBSD a working cabsl function must be present in libm to build gfortran.
+This has been added to NetBSD7 on 2014/10/13. Before this date it was defined
+in complex.h but missing from libm.
+
+2) Unless NetBSD gets proper support for C99, the number of test failures
+will stay high. The dozens of missing or inaccurate long double functions
+causes a misconception of NetBSD being an obscure platform, causing other
+projects like gcc or R to abandon support for NetBSD. And the race goes on,
+now we need support for C11 functions like aligned_alloc and the plethora
+of thread functions in our libc/libm.
+ 
+3) This package and the lang/gccXY need a cleanup or a complete new start. I
+think that SUBST_VARS could handle the platform dependencies in a much cleaner
+way.
+
+4) Patches from lang/gcc5 should be integrated as far as possible, especially
+patches for other platforms. Right now I just look at it from time to time.
+
+Have fun,
+
+Kai-Uwe Eckhardt
diff --git a/gcc7snapshot/buildlink3.mk b/gcc7snapshot/buildlink3.mk
new file mode 100644
index 0000000..bc93ca3
--- /dev/null
+++ b/gcc7snapshot/buildlink3.mk
@@ -0,0 +1,31 @@
+# $NetBSD: buildlink3.mk,v 1.1 2014/10/19 10:6:56 keckhardt Exp $
+
+BUILDLINK_TREE+=	gcc7snapshot
+
+.if !defined(GCC7_BUILDLINK3_MK)
+GCC6SNAPSHOT_BUILDLINK3_MK:=
+
+BUILDLINK_API_DEPENDS.gcc7snapshot+=	gcc6>=${_GCC_REQD}
+BUILDLINK_ABI_DEPENDS.gcc7snapshot+=	gcc6>=7.0
+BUILDLINK_PKGSRCDIR.gcc7snapshot=	../../wip/gcc7snapshot
+BUILDLINK_DEPMETHOD.gcc7snapshot?=	build
+
+BUILDLINK_FILES.gcc7snapshot=		#empty
+BUILDLINK_AUTO_VARS.gcc7snapshot=	no
+
+# Packages that link against shared libraries need a full dependency.
+#.if defined(_USE_GCC_SHLIB)
+#DEPENDS+=	{gcc7, gcc7-libs}>=${_GCC_REQD}:../../lang/gcc7-libs
+#ABI_DEPENDS+=	{gcc7,gcc7-libs}>=7.0:../../lang/gcc7-libs
+#.endif
+
+pkgbase := gcc7snapshot
+.include "../../mk/pkg-build-options.mk"
+.if !empty(PKG_BUILD_OPTIONS.gcc7snapshot:Mgcc-java)
+.include "../../devel/zlib/buildlink3.mk"
+.endif
+
+.include "../../mk/dlopen.buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
+.endif # GCC7SNAPSHOT_BUILDLINK3_MK
+BUILDLINK_TREE+=	-gcc7snapshot
diff --git a/gcc7snapshot/distinfo b/gcc7snapshot/distinfo
new file mode 100644
index 0000000..e2bea49
--- /dev/null
+++ b/gcc7snapshot/distinfo
@@ -0,0 +1,39 @@
+$NetBSD: distinfo,v 1.23 2015/05/06 05:25:00 keckhardt Exp $
+
+SHA1 (gcc-7-20160911.tar.bz2) = 07677ce44ae40b093a29346eb1b514a576e7c97f
+RMD160 (gcc-7-20160911.tar.bz2) = 681d814ce5db67d5b6907151c3ad1afcda81a830
+SHA512 (gcc-7-20160911.tar.bz2) = c967645054217773a5e280c484b22405ad9a9ff6c2d7a7b63f686fa1c0e91a10ea19ab17c5767873031f593e1ba48514c3f428d63c741c678e3e0f32e340aedd
+Size (gcc-7-20160911.tar.bz2) = 96535634 bytes
+SHA1 (isl-0.14.tar.bz2) = b09e25df265c97ed54002cd811d227a9a26c5f9c
+RMD160 (isl-0.14.tar.bz2) = 4c69d026b51561bc1948cb7db79331b78a9d2c39
+SHA512 (isl-0.14.tar.bz2) = 117c0c6f31d91a9284a8f54a748df6494ca2ac21507a45611e911403e9610579b9323ce624aea1de0b8089b3194e59d4364f01bdb71ddcf8f6c24c749d11c4b7
+Size (isl-0.14.tar.bz2) = 1399896 bytes
+SHA1 (patch-gcc_Makefile.in) = ce366a091960d335ecb022918e2f7bfc4e3fcccf
+SHA1 (patch-gcc_config.gcc) = baad2e92fcda854d8b1828990a2c515f5e2112c7
+SHA1 (patch-gcc_config_netbsd-protos.h) = 6d28864b4ccc8c1a63fe28e43601b84b63a00633
+SHA1 (patch-gcc_config_netbsd-stdint.h) = 025fc883101a187e84ed4c0772406720d645d550
+SHA1 (patch-gcc_config_netbsd.c) = 3c09521e1803633a3643cf396a03f1f433ec869b
+SHA1 (patch-gcc_config_netbsd.h) = 81891a83bb17b99fdb2c9381b8e8a1767391c695
+SHA1 (patch-gcc_config_t-netbsd) = 802ad5706aa7ca9629f8e237f08fbb1569d28846
+SHA1 (patch-gcc_config_x-netbsd) = 6dc3d78e26df62054ea29f98ca51592858e671e3
+SHA1 (patch-gcc_configure) = 15fb7af267b79965f83bc64ce8aad1279b0ea52d
+SHA1 (patch-gcc_ggc-common.c) = a5d2dba635859f5d680c3f80d7c30b42461c752b
+SHA1 (patch-gcc_lto_lto.c) = 825b632e2a7ff5777d4fbfdcf6f0ea3f64c4742b
+SHA1 (patch-gcc_system.h) = 4c959a6b1c4d524cbdf44cfb80f0e5758ec20783
+SHA1 (patch-libcilkrts_configure) = 0d88069173cba34158f5b6b91d2d12ca81b0300c
+SHA1 (patch-libcilkrts_runtime_os-unix.c) = 7985df8877515214c14670f06ebc59bcb720cc47
+SHA1 (patch-libdecnumber_decNumber.c) = cec90e49c829bfc6ba1ec605d2fac7daaad62762
+SHA1 (patch-libffi_configure) = bcfbfe8abddc378e2de4a39ad0669583b37e0292
+SHA1 (patch-libffi_testsuite_libffi.call_float2.c) = 6321dde308579448c27c2b6e1e30633699dd145f
+SHA1 (patch-libgcc_crtstuff.c) = d22dd1fb4a79aed2e7c2864f0bb00bcc338b3ab8
+SHA1 (patch-libgcc_unwind-dw2-fde-dip.c) = 9c5e1823226521d11900b4d3b92c050d3941a1f6
+SHA1 (patch-libgfortran_configure) = 869a60fd08edecf18a42732dcbf226bad1309394
+SHA1 (patch-libgo_Makefile.in) = 612987541f745c7be6835ce7fb7119884db294c3
+SHA1 (patch-libjava_boehm.cc) = bf5564261b02523927685340f59ce8faf7f84ace
+SHA1 (patch-libjava_configure) = 48ea2baffe87e09dda8133d286bd9b1bfe4c3f8a
+SHA1 (patch-libjava_contrib_rebuild-gcj-db.in) = bb01d738fc7db05046ae37e8ade32574de1d8297
+SHA1 (patch-libsanitizer_configure.tgt) = 0aff54104734b2cb21090e33f9304738946ea5a0
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h) = 014d442c885b9c51d1a4af05205279c274a9559d
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc) = 06bba6da02344f76c26eed765a7cb022c035994e
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = 626fc1f9c035ac5cef30a92d525af4e778835ebf
+SHA1 (patch-libstdc++-v3_libsupc++_unwind-cxx.h) = 9784bfa4323f8498b36565d0fea28fce69ffdbb1
diff --git a/gcc7snapshot/options.mk b/gcc7snapshot/options.mk
new file mode 100644
index 0000000..b60e9f8
--- /dev/null
+++ b/gcc7snapshot/options.mk
@@ -0,0 +1,181 @@
+# $NetBSD: options.mk,v 1.2 2014/12/10 06:10:46 keckhardt Exp $
+
+PKG_OPTIONS_VAR=	PKG_OPTIONS.${GCC_PKGNAME}
+PKG_SUPPORTED_OPTIONS=	nls gcc-inplace-math gcc-c++ gcc-fortran \
+			gcc-go gcc-objc gcc-objc++ gcc-graphite gcc-java
+PKG_SUGGESTED_OPTIONS=	gcc-c++ gcc-fortran gcc-objc gcc-objc++ \
+			gcc-graphite gcc-inplace-math
+
+.if ${OPSYS} == "NetBSD"
+PKG_SUGGESTED_OPTIONS+=	nls
+.elif ${OPSYS} == "Linux"
+PKG_SUGGESTED_OPTIONS+=	nls
+.elif ${OPSYS} == "DragonFly"
+PKG_SUGGESTED_OPTIONS+= nls
+.elif ${OPSYS} == "SunOS"
+PKG_SUGGESTED_OPTIONS+=	gcc-inplace-math
+.else
+.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
+
+
+###
+### Graphite Support
+###
+.if !empty(PKG_OPTIONS:Mgcc-graphite)
+ISL14 = isl-0.14
+SITES.${ISL14}.tar.bz2 = ${MASTER_SITE_GNU:=gcc/infrastructure/}
+DISTFILES += ${ISL14}.tar.bz2
+.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
+CONFIGURE_ARGS+=	--enable-__cxa_atexit
+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/gcc7snapshot/patches/patch-gcc_Makefile.in b/gcc7snapshot/patches/patch-gcc_Makefile.in
new file mode 100644
index 0000000..1f714e9
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_Makefile.in
@@ -0,0 +1,15 @@
+$NetBSD: patch-gcc_Makefile.in,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+Add gcc libdir to a programs rpath so that _this gcc's_ support libraries
+are found.
+
+--- gcc/Makefile.in.orig	2013-03-05 09:46:34.000000000 +0000
++++ gcc/Makefile.in
+@@ -2027,6 +2027,7 @@ prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_
+ # 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/gcc7snapshot/patches/patch-gcc_config.gcc b/gcc7snapshot/patches/patch-gcc_config.gcc
new file mode 100644
index 0000000..8da074c
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_config.gcc
@@ -0,0 +1,39 @@
+$NetBSD: patch-gcc_config.gcc,v 1.2 2014/12/17 21:51:02 keckhardt Exp $
+
+--- gcc/config.gcc.orig	2014-11-21 16:04:20.000000000 +0000
++++ gcc/config.gcc
+@@ -762,10 +762,16 @@ case ${target} in
+   target_has_targetcm=yes
+   ;;
+ *-*-netbsd*)
+-  tmake_file="t-slibgcc"
++  use_gcc_stdint=wrap
++  tmake_file="t-slibgcc t-netbsd"
+   gas=yes
+   gnu_ld=yes
+ 
++  # cabs/cabsf are renamed to __c99_cabs/cabsf
++  tm_p_file="${tm_p_file} netbsd-protos.h"
++  target_gtfiles="\$(srcdir)/config/netbsd.c"
++  extra_objs="netbsd.o"
++
+   # NetBSD 2.0 and later get POSIX threads enabled by default.
+   # Allow them to be explicitly enabled on any other version.
+   case ${enable_threads} in
+@@ -1434,12 +1440,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-*-openbsd*)
+ 	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
diff --git a/gcc7snapshot/patches/patch-gcc_config_netbsd-protos.h b/gcc7snapshot/patches/patch-gcc_config_netbsd-protos.h
new file mode 100644
index 0000000..6045c33
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_config_netbsd-protos.h
@@ -0,0 +1,34 @@
+$NetBSD: patch-gcc_config_netbsd-protos.h,v 1.1 2014/12/17 21:51:02 keckhardt Exp $
+
+--- /dev/null	2014-12-15 07:13:57.000000000 +0000
++++ gcc/config/netbsd-protos.h
+@@ -0,0 +1,29 @@
++/* Prototypes.
++   Copyright (C) 2001-2014 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/>.  */
++
++#ifndef _NETBSD_PROTOS_H_
++#define _NETBSD_PROTOS_H_
++
++double __c99_cabs (double complex);
++float __c99_cabsf (float complex);
++long double __c99_cabsl (long double complex);
++
++void netbsd_patch_builtins (void);
++
++#endif /* _NETBSD_PROTOS_H_ */
diff --git a/gcc7snapshot/patches/patch-gcc_config_netbsd-stdint.h b/gcc7snapshot/patches/patch-gcc_config_netbsd-stdint.h
new file mode 100644
index 0000000..94ee640
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_config_netbsd-stdint.h
@@ -0,0 +1,63 @@
+$NetBSD: patch-gcc_config_netbsd-stdint.h,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+Copy gcc/config/freebsd-stdint.h to gcc/config/netbsd-stdint.h.
+
+--- gcc/config/netbsd-stdint.h.orig	2012-04-02 09:19:19.577200540 +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@localhost>.
++
++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/gcc7snapshot/patches/patch-gcc_config_netbsd.c b/gcc7snapshot/patches/patch-gcc_config_netbsd.c
new file mode 100644
index 0000000..a7b7ad9
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_config_netbsd.c
@@ -0,0 +1,102 @@
+$NetBSD$
+
+--- gcc/config/netbsd.c.orig	2015-10-06 16:35:05.000000000 +0000
++++ gcc/config/netbsd.c
+@@ -0,0 +1,97 @@
++/* Functions for generic NetBSD as target machine for GNU C compiler.
++   Copyright (C) 1989-2014 Free Software Foundation, Inc.
++   Contributed by Apple Computer 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/>.  */
++
++
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "backend.h"
++#include "cfghooks.h"
++#include "tree.h"
++#include "gimple.h"
++#include "rtl.h"
++#include "df.h"
++#include "regs.h"
++#include "insn-config.h"
++#include "conditions.h"
++#include "insn-flags.h"
++#include "output.h"
++#include "insn-attr.h"
++#include "flags.h"
++#include "alias.h"
++#include "fold-const.h"
++#include "stringpool.h"
++#include "varasm.h"
++#include "stor-layout.h"
++#include "expmed.h"
++#include "dojump.h"
++#include "explow.h"
++#include "calls.h"
++#include "emit-rtl.h"
++#include "stmt.h"
++#include "expr.h"
++#include "reload.h"
++#include "langhooks.h"
++#include "target.h"
++#include "tm_p.h"
++#include "diagnostic-core.h"
++#include "toplev.h"
++#include "cfgrtl.h"
++#include "cfganal.h"
++#include "lcm.h"
++#include "cfgbuild.h"
++#include "cfgcleanup.h"
++#include "debug.h"
++#include "internal-fn.h"
++#include "gimple-fold.h"
++#include "tree-eh.h"
++#include "gimplify.h"
++#include "cgraph.h"
++#include "alloc-pool.h"
++#include "lto-streamer.h"
++#include "lto-section-names.h"
++
++static void
++netbsd_patch_builtin (enum built_in_function fncode)
++{
++  tree fn = builtin_decl_explicit (fncode);
++  tree sym;
++  char *newname;
++
++  if (!fn)
++    return;
++
++  sym = DECL_ASSEMBLER_NAME (fn);
++  newname = ACONCAT (("__c99_", IDENTIFIER_POINTER (sym), NULL));
++
++  set_user_assembler_name (fn, newname);
++
++  fn = builtin_decl_implicit (fncode);
++  if (fn)
++    set_user_assembler_name (fn, newname);
++}
++
++void
++netbsd_patch_builtins (void)
++{
++  netbsd_patch_builtin (BUILT_IN_CABSF);
++  netbsd_patch_builtin (BUILT_IN_CABS);
++  netbsd_patch_builtin (BUILT_IN_CABSL);
++}
diff --git a/gcc7snapshot/patches/patch-gcc_config_netbsd.h b/gcc7snapshot/patches/patch-gcc_config_netbsd.h
new file mode 100644
index 0000000..1e84a66
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_config_netbsd.h
@@ -0,0 +1,43 @@
+$NetBSD: patch-gcc_config_netbsd.h,v 1.1 2014/12/17 21:51:02 keckhardt Exp $
+
+when using shared, link against libc
+another unexplained change`
+
+--- gcc/config/netbsd.h.orig	2014-01-02 22:23:26.000000000 +0000
++++ gcc/config/netbsd.h
+@@ -17,6 +17,9 @@ You should have received a copy of the G
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
++
++#include "netbsd-protos.h"
++
+ /* TARGET_OS_CPP_BUILTINS() common to all NetBSD targets.  */
+ #define NETBSD_OS_CPP_BUILTINS_COMMON()		\
+   do						\
+@@ -96,6 +99,7 @@ along with GCC; see the file COPYING3.  
+        %{!pg:-lposix}}		\
+      %{p:-lposix_p}		\
+      %{pg:-lposix_p}}		\
++   %{shared:-lc}		\
+    %{!shared:			\
+      %{!symbolic:		\
+        %{!p:			\
+@@ -109,6 +113,7 @@ along with GCC; see the file COPYING3.  
+        %{!pg:-lposix}}		\
+      %{p:-lposix_p}		\
+      %{pg:-lposix_p}}		\
++   %{shared:-lc}		\
+    %{!shared:			\
+      %{!symbolic:		\
+        %{!p:			\
+@@ -175,3 +180,9 @@ along with GCC; see the file COPYING3.  
+ 
+ #undef WINT_TYPE
+ #define WINT_TYPE "int"
++
++#undef SUBTARGET_INIT_BUILTINS
++#define SUBTARGET_INIT_BUILTINS			\
++do {						\
++  netbsd_patch_builtins ();			\
++} while(0)
diff --git a/gcc7snapshot/patches/patch-gcc_config_t-netbsd b/gcc7snapshot/patches/patch-gcc_config_t-netbsd
new file mode 100644
index 0000000..43d3a75
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_config_t-netbsd
@@ -0,0 +1,28 @@
+$NetBSD: patch-gcc_config_t-netbsd,v 1.1 2014/12/17 21:51:02 keckhardt Exp $
+
+--- /dev/null	2014-12-16 20:23:05.000000000 +0000
++++ gcc/config/t-netbsd
+@@ -0,0 +1,23 @@
++# Copyright (C) 2002-2014 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/>.
++
++
++netbsd.o: $(srcdir)/config/netbsd.c
++	$(COMPILE) $<
++	$(POSTCOMPILE)
++
diff --git a/gcc7snapshot/patches/patch-gcc_config_x-netbsd b/gcc7snapshot/patches/patch-gcc_config_x-netbsd
new file mode 100644
index 0000000..bbd84a1
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_config_x-netbsd
@@ -0,0 +1,12 @@
+$NetBSD: patch-gcc_config_x-netbsd,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+Add host hooks for NetBSD - needed for working precompiled headers.
+http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58397
+
+--- /dev/null	2013-09-11 09:12:57.000000000 +0200
++++ gcc/config/x-netbsd	2013-09-10 18:57:27.000000000 +0200
+@@ -0,0 +1,4 @@
++host-netbsd.o : $(srcdir)/config/host-netbsd.c $(CONFIG_H) $(SYSTEM_H) \
++  coretypes.h hosthooks.h hosthooks-def.h $(HOOKS_H)
++	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
++		$(srcdir)/config/host-netbsd.c
diff --git a/gcc7snapshot/patches/patch-gcc_configure b/gcc7snapshot/patches/patch-gcc_configure
new file mode 100644
index 0000000..ed169d1
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_configure
@@ -0,0 +1,13 @@
+$NetBSD$
+
+--- gcc/configure.orig	2015-09-30 23:06:11.000000000 +0000
++++ gcc/configure
+@@ -28321,7 +28321,7 @@ case "$target" in
+       gcc_cv_target_dl_iterate_phdr=no
+     fi
+     ;;
+-  *-*-dragonfly* | *-*-freebsd*)
++  *-*-dragonfly* | *-*-freebsd* | *-*-netbsd* )
+     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
diff --git a/gcc7snapshot/patches/patch-gcc_ggc-common.c b/gcc7snapshot/patches/patch-gcc_ggc-common.c
new file mode 100644
index 0000000..aad88bd
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_ggc-common.c
@@ -0,0 +1,71 @@
+$NetBSD: patch-gcc_ggc-common.c,v 1.3 2015/02/05 15:55:39 keckhardt Exp $
+
+--- gcc/ggc-common.c.orig	2014-12-10 03:45:40.000000000 +0000
++++ gcc/ggc-common.c
+@@ -603,6 +603,8 @@ gt_pch_restore (FILE *f)
+   size_t i;
+   struct mmap_info mmi;
+   int result;
++  struct line_maps * old_line_table = line_table;
++  location_t old_input_loc = input_location;
+ 
+   /* Delete any deletable objects.  This makes ggc_pch_read much
+      faster, as it can be sure that no GCable objects remain other
+@@ -616,32 +618,50 @@ gt_pch_restore (FILE *f)
+   /* Read in all the scalar variables.  */
+   for (rt = gt_pch_scalar_rtab; *rt; rt++)
+     for (rti = *rt; rti->base != NULL; rti++)
+-      if (fread (rti->base, rti->stride, 1, f) != 1)
++      if (fread (rti->base, rti->stride, 1, f) != 1) {
++        line_table = old_line_table;
++        input_location = old_input_loc;
+ 	fatal_error (input_location, "can%'t read PCH file: %m");
++      }
+ 
+   /* Read in all the global pointers, in 6 easy loops.  */
+   for (rt = gt_ggc_rtab; *rt; rt++)
+     for (rti = *rt; rti->base != NULL; rti++)
+       for (i = 0; i < rti->nelt; i++)
+ 	if (fread ((char *)rti->base + rti->stride * i,
+-		   sizeof (void *), 1, f) != 1)
++		   sizeof (void *), 1, f) != 1) {
++          line_table = old_line_table;
++          input_location = old_input_loc;
+ 	  fatal_error (input_location, "can%'t read PCH file: %m");
++        }
+ 
+-  if (fread (&mmi, sizeof (mmi), 1, f) != 1)
++  if (fread (&mmi, sizeof (mmi), 1, f) != 1) {
++    line_table = old_line_table;
++    input_location = old_input_loc;
+     fatal_error (input_location, "can%'t read PCH file: %m");
++  }
+ 
+   result = host_hooks.gt_pch_use_address (mmi.preferred_base, mmi.size,
+ 					  fileno (f), mmi.offset);
+-  if (result < 0)
++  if (result < 0) {
++    line_table = old_line_table;
++    input_location = old_input_loc;
+     fatal_error (input_location, "had to relocate PCH");
++  }
+   if (result == 0)
+     {
+       if (fseek (f, mmi.offset, SEEK_SET) != 0
+-	  || fread (mmi.preferred_base, mmi.size, 1, f) != 1)
++	  || fread (mmi.preferred_base, mmi.size, 1, f) != 1) {
++        line_table = old_line_table;
++        input_location = old_input_loc;
+ 	fatal_error (input_location, "can%'t read PCH file: %m");
++      }
+     }
+-  else if (fseek (f, mmi.offset + mmi.size, SEEK_SET) != 0)
+-    fatal_error (input_location, "can%'t read PCH file: %m");
++  else if (fseek (f, mmi.offset + mmi.size, SEEK_SET) != 0) {
++        line_table = old_line_table;
++        input_location = old_input_loc;
++        fatal_error (input_location, "can%'t read PCH file: %m");
++  }
+ 
+   ggc_pch_read (f, mmi.preferred_base);
+ 
diff --git a/gcc7snapshot/patches/patch-gcc_lto_lto.c b/gcc7snapshot/patches/patch-gcc_lto_lto.c
new file mode 100644
index 0000000..c546e29
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_lto_lto.c
@@ -0,0 +1,19 @@
+$NetBSD: patch-gcc_lto_lto.c,v 1.2 2015/02/05 15:55:39 keckhardt Exp $
+
+--- gcc/lto/lto.c.orig	2015-01-30 16:15:00.000000000 +0000
++++ gcc/lto/lto.c
+@@ -2495,7 +2495,13 @@ wait_for_child ()
+ #ifndef WCONTINUED
+ #define WCONTINUED 0
+ #endif
+-      int w = waitpid (0, &status, WUNTRACED | WCONTINUED);
++
++#if defined(__NetBSD__)
++      int w = waitpid(0, &status, WUNTRACED | WALLSIG);
++#else
++      int w = waitpid(0, &status, WUNTRACED | WCONTINUED);
++#endif
++ 
+       if (w == -1)
+ 	fatal_error (input_location, "waitpid failed");
+ 
diff --git a/gcc7snapshot/patches/patch-gcc_system.h b/gcc7snapshot/patches/patch-gcc_system.h
new file mode 100644
index 0000000..77574b3
--- /dev/null
+++ b/gcc7snapshot/patches/patch-gcc_system.h
@@ -0,0 +1,27 @@
+$NetBSD: patch-gcc_system.h,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+--- gcc/system.h.orig	2013-04-29 18:37:29.000000000 +0000
++++ gcc/system.h
+@@ -72,18 +72,22 @@ along with GCC; see the file COPYING3.  
+ 
+ #if defined HAVE_DECL_PUTC_UNLOCKED && HAVE_DECL_PUTC_UNLOCKED
+ 
++# if !defined(__NetBSD__)
+ # ifdef HAVE_PUTC_UNLOCKED
+ #  undef putc
+ #  define putc(C, Stream) putc_unlocked (C, Stream)
+ # endif
++# endif
+ # ifdef HAVE_PUTCHAR_UNLOCKED
+ #  undef putchar
+ #  define putchar(C) putchar_unlocked (C)
+ # endif
++# if !defined(__NetBSD__)
+ # ifdef HAVE_GETC_UNLOCKED
+ #  undef getc
+ #  define getc(Stream) getc_unlocked (Stream)
+ # endif
++# endif
+ # ifdef HAVE_GETCHAR_UNLOCKED
+ #  undef getchar
+ #  define getchar() getchar_unlocked ()
diff --git a/gcc7snapshot/patches/patch-libcilkrts_configure b/gcc7snapshot/patches/patch-libcilkrts_configure
new file mode 100644
index 0000000..e313654
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libcilkrts_configure
@@ -0,0 +1,13 @@
+$NetBSD: patch-libcilkrts_configure,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+--- libcilkrts/configure.orig	2014-08-12 11:06:44.000000000 +0000
++++ libcilkrts/configure
+@@ -14519,7 +14519,7 @@ esac
+ CFLAGS="$save_CFLAGS"
+ 
+ if test $enable_shared = yes; then
+-  link_cilkrts="-lcilkrts %{static: $LIBS}"
++  link_cilkrts="-rpath ${PREFIX}/gcc6snapshot/lib --as-needed -lgcc_s -lcilkrts %{static $LIBS}"
+ else
+   link_cilkrts="-lcilkrts $LIBS"
+ fi
diff --git a/gcc7snapshot/patches/patch-libcilkrts_runtime_os-unix.c b/gcc7snapshot/patches/patch-libcilkrts_runtime_os-unix.c
new file mode 100644
index 0000000..885b55d
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libcilkrts_runtime_os-unix.c
@@ -0,0 +1,40 @@
+$NetBSD: patch-libcilkrts_runtime_os-unix.c,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+NetBSD doesn't need additional include files too
+NetBSD can also obtain number of online cpus from sysconf
+NetBSD can use sched_yield for sleeping
+
+--- libcilkrts/runtime/os-unix.c.orig	2014-05-21 11:08:58.000000000 +0000
++++ libcilkrts/runtime/os-unix.c
+@@ -73,6 +73,7 @@
+ #elif defined __CYGWIN__ || \
+       defined __DragonFly__ || \
+       defined __FreeBSD__ || \
++      defined __NetBSD__ || \
+       defined __GNU__
+ // No additional include files
+ 
+@@ -397,6 +398,7 @@ COMMON_SYSDEP int __cilkrts_hardware_cpu
+     defined __CYGWIN__   || \
+     defined __DragonFly__  || \
+     defined __FreeBSD__  || \
++    defined __NetBSD__ || \
+     (defined(__sun__) && defined(__svr4__))
+     return (int)sysconf(_SC_NPROCESSORS_ONLN);
+ #elif defined __MIC__
+@@ -426,6 +428,7 @@ COMMON_SYSDEP void __cilkrts_idle(void)
+     // silencing workers that are not stealing work.
+ #if defined(__ANDROID__)  || \
+     defined(__FreeBSD__)  || \
++    defined(__NetBSD__)   || \
+     defined(__VXWORKS__)  || \
+     (defined(__sun__) && defined(__svr4__))
+     sched_yield();
+@@ -453,6 +456,7 @@ COMMON_SYSDEP void __cilkrts_yield(void)
+ #if defined(__ANDROID__)  || \
+     defined(__APPLE__)    || \
+     defined(__FreeBSD__)  || \
++    defined(__NetBSD__)   || \
+     defined(__VXWORKS__)  || \
+     (defined(__sun__) && defined(__svr4__))
+     // Call sched_yield to yield quantum.  I'm not sure why we
diff --git a/gcc7snapshot/patches/patch-libdecnumber_decNumber.c b/gcc7snapshot/patches/patch-libdecnumber_decNumber.c
new file mode 100644
index 0000000..377fc3c
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libdecnumber_decNumber.c
@@ -0,0 +1,13 @@
+$NetBSD: patch-libdecnumber_decNumber.c,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+--- libdecnumber/decNumber.c.orig	2013-08-14 08:42:04.000000000 +0000
++++ libdecnumber/decNumber.c
+@@ -770,7 +770,7 @@ decNumber * decNumberAbs(decNumber *res,
+ decNumber * decNumberAdd(decNumber *res, const decNumber *lhs,
+ 			 const decNumber *rhs, decContext *set) {
+   uInt status=0;			/* accumulator */
+-  decAddOp(res, lhs, rhs, set, 0, &status);
++  decAddOp(res, lhs, rhs, set, (uByte)0, &status);
+   if (status!=0) decStatus(res, status, set);
+   #if DECCHECK
+   decCheckInexact(res, set);
diff --git a/gcc7snapshot/patches/patch-libffi_configure b/gcc7snapshot/patches/patch-libffi_configure
new file mode 100644
index 0000000..a3bb46b
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libffi_configure
@@ -0,0 +1,13 @@
+$NetBSD: patch-libffi_configure,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+--- libffi/configure.orig	2013-06-01 17:03:49.000000000 +0000
++++ libffi/configure
+@@ -12689,7 +12689,7 @@ case "$target" in
+ $as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
+ 
+      ;;
+-     *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
++     *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-netbsd* | *-*-openbsd* | *-pc-solaris*)
+ 
+ $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
+ 
diff --git a/gcc7snapshot/patches/patch-libffi_testsuite_libffi.call_float2.c b/gcc7snapshot/patches/patch-libffi_testsuite_libffi.call_float2.c
new file mode 100644
index 0000000..db84fc7
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libffi_testsuite_libffi.call_float2.c
@@ -0,0 +1,13 @@
+$NetBSD: patch-libffi_testsuite_libffi.call_float2.c,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+--- libffi/testsuite/libffi.call/float2.c.orig	2013-06-01 17:08:18.000000000 +0000
++++ libffi/testsuite/libffi.call/float2.c
+@@ -45,7 +45,7 @@ int main (void)
+   /* This is ifdef'd out for now. long double support under SunOS/gcc
+      is pretty much non-existent.  You'll get the odd bus error in library
+      routines like printf().  */
+-  printf ("%Lf, %Lf, %Lf, %Lf\n", ld, ldblit(f), ld - ldblit(f), LDBL_EPSILON);
++  printf ("%Lf, %Lf, %Lf, %Lf\n", (long double)ld, (long double)ldblit(f), (long double)(ld - ldblit(f)), (long double)LDBL_EPSILON);
+ #endif
+ 
+   /* These are not always the same!! Check for a reasonable delta */
diff --git a/gcc7snapshot/patches/patch-libgcc_crtstuff.c b/gcc7snapshot/patches/patch-libgcc_crtstuff.c
new file mode 100644
index 0000000..123b2af
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libgcc_crtstuff.c
@@ -0,0 +1,14 @@
+$NetBSD: patch-libgcc_crtstuff.c,v 1.3 2014/11/04 09:09:28 keckhardt Exp $
+
+--- libgcc/crtstuff.c.orig	2014-09-22 00:49:01.000000000 +0000
++++ libgcc/crtstuff.c
+@@ -81,7 +81,8 @@ call_ ## FUNC (void)					\
+ #endif
+ 
+ #if defined(TARGET_DL_ITERATE_PHDR) && \
+-   (defined(__DragonFly__) || defined(__FreeBSD__))
++   (defined(__DragonFly__) || defined(__FreeBSD__) || \
++   defined(__NetBSD__) || defined(__OpenBSD__))
+ #define BSD_DL_ITERATE_PHDR_AVAILABLE
+ #endif
+  
diff --git a/gcc7snapshot/patches/patch-libgcc_unwind-dw2-fde-dip.c b/gcc7snapshot/patches/patch-libgcc_unwind-dw2-fde-dip.c
new file mode 100644
index 0000000..a1b7671
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libgcc_unwind-dw2-fde-dip.c
@@ -0,0 +1,13 @@
+$NetBSD: patch-libgcc_unwind-dw2-fde-dip.c,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+--- libgcc/unwind-dw2-fde-dip.c.orig	2014-05-21 11:08:58.000000000 +0000
++++ libgcc/unwind-dw2-fde-dip.c
+@@ -65,7 +65,7 @@
+ #endif
+ 
+ #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
+-    && defined(__OpenBSD__)
++    && defined(__OpenBSD__) || defined(__NetBSD__)
+ # define ElfW(type) Elf_##type
+ # define USE_PT_GNU_EH_FRAME
+ #endif
diff --git a/gcc7snapshot/patches/patch-libgfortran_configure b/gcc7snapshot/patches/patch-libgfortran_configure
new file mode 100644
index 0000000..34902c2
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libgfortran_configure
@@ -0,0 +1,13 @@
+$NetBSD$
+
+--- libgfortran/configure.orig	2015-10-04 22:33:03.000000000 +0000
++++ libgfortran/configure
+@@ -25992,7 +25992,7 @@ $as_echo "#define SUPPORTS_WEAK 1" >>con
+ 
+   fi
+   case "$host" in
+-    *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* )
++    *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* | *-*-netbsd* )
+ 
+ $as_echo "#define GTHREAD_USE_WEAK 0" >>confdefs.h
+ 
diff --git a/gcc7snapshot/patches/patch-libgo_Makefile.in b/gcc7snapshot/patches/patch-libgo_Makefile.in
new file mode 100644
index 0000000..8f19c25
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libgo_Makefile.in
@@ -0,0 +1,17 @@
+$NetBSD: patch-libgo_Makefile.in,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+proc.c will not compile with inline-functions (implied by -O3) 
+so add -fno-inline-functions to it's cflags.
+
+
+--- libgo/Makefile.in.orig	2012-08-06 14:34:27.000000000 +0000
++++ libgo/Makefile.in
+@@ -3051,7 +3051,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/gcc7snapshot/patches/patch-libjava_boehm.cc b/gcc7snapshot/patches/patch-libjava_boehm.cc
new file mode 100644
index 0000000..9dc4ade
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libjava_boehm.cc
@@ -0,0 +1,22 @@
+$NetBSD: patch-libjava_boehm.cc,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+--- libjava/boehm.cc.orig	2014-05-20 18:02:20.000000000 +0000
++++ libjava/boehm.cc
+@@ -748,7 +748,7 @@ _Jv_GCAttachThread ()
+   // 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) \
+-    && !defined(GC_WIN32_THREADS)
++    && !defined(__NetBSD__) && !defined(GC_WIN32_THREADS)
+   GC_register_my_thread ();
+ #endif
+ }
+@@ -757,7 +757,7 @@ void
+ _Jv_GCDetachThread ()
+ {
+ #if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) \
+-    && !defined(GC_WIN32_THREADS)
++    && !defined(__NetBSD__) && !defined(GC_WIN32_THREADS)
+   GC_unregister_my_thread ();
+ #endif
+ }
diff --git a/gcc7snapshot/patches/patch-libjava_configure b/gcc7snapshot/patches/patch-libjava_configure
new file mode 100644
index 0000000..dc84aa6
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libjava_configure
@@ -0,0 +1,17 @@
+$NetBSD: patch-libjava_configure,v 1.1 2014/10/19 10:50:57 keckhardt 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	2012-03-22 07:37:39.000000000 +0000
++++ libjava/configure
+@@ -24692,7 +24692,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/gcc7snapshot/patches/patch-libjava_contrib_rebuild-gcj-db.in b/gcc7snapshot/patches/patch-libjava_contrib_rebuild-gcj-db.in
new file mode 100644
index 0000000..fd2d06d
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libjava_contrib_rebuild-gcj-db.in
@@ -0,0 +1,29 @@
+$NetBSD: patch-libjava_contrib_rebuild-gcj-db.in,v 1.1 2014/10/19 10:50:57 keckhardt 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/gcc7snapshot/patches/patch-libsanitizer_configure.tgt b/gcc7snapshot/patches/patch-libsanitizer_configure.tgt
new file mode 100644
index 0000000..6825fc8
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libsanitizer_configure.tgt
@@ -0,0 +1,13 @@
+$NetBSD$
+
+--- libsanitizer/configure.tgt.orig	2015-11-23 09:07:18.000000000 +0000
++++ libsanitizer/configure.tgt
+@@ -41,7 +41,7 @@ case "${target}" in
+ 		TSAN_TARGET_DEPENDENT_OBJECTS=tsan_rtl_aarch64.lo
+ 	fi
+ 	;;
+-  x86_64-*-darwin[1]* | i?86-*-darwin[1]*)
++  x86_64-*-darwin[1][1-9]* | i?86-*-darwin[1][1-9]*)
+ 	TSAN_SUPPORTED=no
+ 	;;
+   *)
diff --git a/gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h b/gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h
new file mode 100644
index 0000000..ee8c1b0
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h
@@ -0,0 +1,37 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig	2013-02-03 17:54:05.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/gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc b/gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc
new file mode 100644
index 0000000..13b07d9
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc
@@ -0,0 +1,58 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64271
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc.orig	2013-02-03 17:54:05.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()
++#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/gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h b/gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
new file mode 100644
index 0000000..c1b963c
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h.orig	2013-02-03 17:54:05.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/gcc7snapshot/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h b/gcc7snapshot/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h
new file mode 100644
index 0000000..0d73552
--- /dev/null
+++ b/gcc7snapshot/patches/patch-libstdc++-v3_libsupc++_unwind-cxx.h
@@ -0,0 +1,12 @@
+$NetBSD: patch-libstdc++-v3_libsupc++_unwind-cxx.h,v 1.1 2014/10/19 10:50:57 keckhardt Exp $
+
+--- libstdc++-v3/libsupc++/unwind-cxx.h.orig	2013-03-19 17:04:44.000000000 +0000
++++ libstdc++-v3/libsupc++/unwind-cxx.h
+@@ -38,6 +38,7 @@
+ #include <cxxabi.h>
+ 
+ #ifdef _GLIBCXX_HAVE_SYS_SDT_H
++#include <cstdlib>
+ #include <sys/sdt.h>
+ /* We only want to use stap probes starting with v3.  Earlier versions
+    added too much startup cost.  */
diff --git a/gcc7snapshot/version.mk b/gcc7snapshot/version.mk
new file mode 100644
index 0000000..8e8f2b6
--- /dev/null
+++ b/gcc7snapshot/version.mk
@@ -0,0 +1,2 @@
+# $NetBSD: version.mk,v 1.21 2015/05/06 05:25:00 keckhardt Exp $
+GCC7S_DIST_VERSION:=7-20160911


Home | Main Index | Thread Index | Old Index