pkgsrc-Changes archive

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

CVS commit: pkgsrc/lang



Module Name:    pkgsrc
Committed By:   adam
Date:           Thu Jun 16 15:43:55 UTC 2022

Modified Files:
        pkgsrc/lang: Makefile
Added Files:
        pkgsrc/lang/gcc12: DESCR Makefile buildlink3.mk distinfo options.mk
            version.mk
        pkgsrc/lang/gcc12-libs: DESCR Makefile buildlink3.mk
        pkgsrc/lang/gcc12/patches: patch-fixincludes_inclhack.def
            patch-gcc_Makefile.in patch-gcc_config.gcc patch-gcc_config.host
            patch-gcc_config_aarch64_aarch64-netbsd.h
            patch-gcc_config_arm_arm.h patch-gcc_config_arm_bpabi.h
            patch-gcc_config_arm_elf.h patch-gcc_config_arm_netbsd-eabi.h
            patch-gcc_config_arm_netbsd-elf.h patch-gcc_config_nvptx_gen-opt.sh
            patch-gcc_configure patch-isl_configure patch-libffi_configure
            patch-libffi_testsuite_libffi.call_float2.c
            patch-libgcc_config.host patch-libgcc_crtstuff.c
            patch-libgfortran_io_io.h
            patch-libquadmath_printf_quadmath-printf.c
            patch-libquadmath_strtod_strtod__l.c
            patch-libstdc++-v3_libsupc++_new__opa.cc

Log Message:
gcc12: added version 12.1.0

GCC 12

Caveats

An ABI incompatibility between C and C++ when passing or returning by value certain aggregates containing zero width bit-fields has been discovered on various targets. As mentioned in PR102024, since 
the PR42217 fix in GCC 4.5 the C++ front-end has been removing zero width bit-fields from the internal representation of the aggregates after the layout of those aggregates, but the C front-end kept 
them, so passing e.g. struct S { float a; int : 0; float b; } or struct T { float c; int : 0; } by value could differ between C and C++. Starting with GCC 12 the C++ front-end no longer removes those 
bit-fields from the internal representation and per clarified psABI some targets have been changed, so that they either ignore those bit-fields in the argument passing by value decisions in both C 
and C++, or they always take them into account. x86-64, ARM and AArch64 will always ignore them (so there is a C ABI incompatibility between GCC 11 and earlier with GCC 12 or later), PowerPC64 E
LFv2 and S/390 always take them into account (so there is a C++ ABI incompatibility, GCC 4.4 and earlier compatible with GCC 12 or later, incompatible with GCC 4.5 through GCC 11). RISC-V has changed 
the handling of these already starting with GCC 10. As the ABI requires, MIPS takes them into account handling function return values so there is a C++ ABI incompatibility with GCC 4.5 through 11. 
For function arguments on MIPS, refer to the MIPS specific entry. GCC 12 on the above targets will report such incompatibilities as warnings or other diagnostics unless -Wno-psabi is used.
C: Computed gotos require a pointer type now.
C++: Two non-standard std::pair constructors have been deprecated. These allowed the use of an rvalue and a literal 0 to construct a pair containing a move-only type and a pointer. The nullptr 
keyword should be used to initialize the pointer member instead of a literal 0, as this is portable to other C++ implementations.
The configuration option --enable-libstdcxx-allocator no longer supports the bitmap, mt, and pool arguments. Those configurations had been broken for some time.
Fortran: OpenMP code using the omp_lib.h include file can no longer be compiled with -std=f95 but now requires at least -std=f2003. Alternatively, use the omp_lib module, which still supports 
-std=f95 and is recommended to be used instead in general.
OpenMP offloading to Intel MIC has been deprecated and will be removed in a future release.
The cr16 target with the cr16-*-* configuration has been obsoleted and will be removed in a future release.
The hppa[12]*-*-hpux10* and hppa[12]*-*-hpux11* configurations targeting 32-bit PA-RISC with HP-UX have been obsoleted and will be removed in a future release.
The m32c*-*-rtems* configuration has been obsoleted and will be removed in a future release.
The support for the m32r-*-linux*, m32rle-*-linux*, m68k*-*-openbsd* and vax-*-openbsd* configurations has been removed.
STABS: Support for emitting the STABS debugging format is deprecated and will be removed in the next release. All ports now default to emit DWARF (version 2 or later) debugging info or are obsoleted.
The optimization level -Ofast now implies -fno-semantic-interposition.

General Improvements

Vectorization is enabled at -O2 which is now equivalent to the original -O2 -ftree-vectorize -fvect-cost-model=very-cheap. Note that default vectorizer cost model has been changed which used to 
behave as -fvect-cost-model=cheap were specified.
GCC now supports the ShadowCallStack sanitizer, which can be enabled using the command-line option -fsanitize=shadow-call-stack. This sanitizer currently only works on AArch64 targets and it requires 
an environment in which all code has been compiled with -ffixed-r18. Its primary initial user is the Linux kernel.


To generate a diff of this commit:
cvs rdiff -u -r1.649 -r1.650 pkgsrc/lang/Makefile
cvs rdiff -u -r0 -r1.1 pkgsrc/lang/gcc12/DESCR pkgsrc/lang/gcc12/Makefile \
    pkgsrc/lang/gcc12/buildlink3.mk pkgsrc/lang/gcc12/distinfo \
    pkgsrc/lang/gcc12/options.mk pkgsrc/lang/gcc12/version.mk
cvs rdiff -u -r0 -r1.1 pkgsrc/lang/gcc12-libs/DESCR \
    pkgsrc/lang/gcc12-libs/Makefile pkgsrc/lang/gcc12-libs/buildlink3.mk
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/lang/gcc12/patches/patch-fixincludes_inclhack.def \
    pkgsrc/lang/gcc12/patches/patch-gcc_Makefile.in \
    pkgsrc/lang/gcc12/patches/patch-gcc_config.gcc \
    pkgsrc/lang/gcc12/patches/patch-gcc_config.host \
    pkgsrc/lang/gcc12/patches/patch-gcc_config_aarch64_aarch64-netbsd.h \
    pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_arm.h \
    pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_bpabi.h \
    pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_elf.h \
    pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_netbsd-eabi.h \
    pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_netbsd-elf.h \
    pkgsrc/lang/gcc12/patches/patch-gcc_config_nvptx_gen-opt.sh \
    pkgsrc/lang/gcc12/patches/patch-gcc_configure \
    pkgsrc/lang/gcc12/patches/patch-isl_configure \
    pkgsrc/lang/gcc12/patches/patch-libffi_configure \
    pkgsrc/lang/gcc12/patches/patch-libffi_testsuite_libffi.call_float2.c \
    pkgsrc/lang/gcc12/patches/patch-libgcc_config.host \
    pkgsrc/lang/gcc12/patches/patch-libgcc_crtstuff.c \
    pkgsrc/lang/gcc12/patches/patch-libgfortran_io_io.h \
    pkgsrc/lang/gcc12/patches/patch-libquadmath_printf_quadmath-printf.c \
    pkgsrc/lang/gcc12/patches/patch-libquadmath_strtod_strtod__l.c \
    pkgsrc/lang/gcc12/patches/patch-libstdc++-v3_libsupc++_new__opa.cc

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

Modified files:

Index: pkgsrc/lang/Makefile
diff -u pkgsrc/lang/Makefile:1.649 pkgsrc/lang/Makefile:1.650
--- pkgsrc/lang/Makefile:1.649  Fri May 13 14:27:35 2022
+++ pkgsrc/lang/Makefile        Thu Jun 16 15:43:54 2022
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.649 2022/05/13 14:27:35 ryoon Exp $
+# $NetBSD: Makefile,v 1.650 2022/06/16 15:43:54 adam Exp $
 #
 
 COMMENT=       Programming languages
@@ -69,6 +69,8 @@ SUBDIR+=      gcc-aux
 SUBDIR+=       gcc10
 SUBDIR+=       gcc10-aux
 SUBDIR+=       gcc10-libs
+SUBDIR+=       gcc12
+SUBDIR+=       gcc12-libs
 SUBDIR+=       gcc2
 SUBDIR+=       gcc5-aux
 SUBDIR+=       gcc6

Added files:

Index: pkgsrc/lang/gcc12/DESCR
diff -u /dev/null pkgsrc/lang/gcc12/DESCR:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/DESCR     Thu Jun 16 15:43:55 2022
@@ -0,0 +1,2 @@
+The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C,
+Fortran, and Go.
Index: pkgsrc/lang/gcc12/Makefile
diff -u /dev/null pkgsrc/lang/gcc12/Makefile:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/Makefile  Thu Jun 16 15:43:55 2022
@@ -0,0 +1,212 @@
+# $NetBSD: Makefile,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+GCC_PKGNAME=           gcc12
+.include               "version.mk"
+
+DISTNAME=      gcc-${GCC12_DIST_VERSION}
+PKGNAME=       ${GCC_PKGNAME}-${GCC12_DIST_VERSION}
+## When bumping the PKGREVISION of this package the PKGREVISION of
+## lang/gcc12-libs needs to be bumped to be at least 1 more than the
+## PKGREVISION of this package!
+CATEGORIES=    lang
+MASTER_SITES=  ${MASTER_SITE_GNU:=gcc/gcc-${GCC12_DIST_VERSION}/}
+EXTRACT_SUFX=  .tar.xz
+
+MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=      https://gcc.gnu.org/
+COMMENT=       The GNU Compiler Collection (GCC) - 12.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}
+
+# Relocations result in a linker error on AArch64, but not x86.
+MKPIE_SUPPORTED=       no
+CHECK_RELRO_SKIP+=     ${GCC_PKGNAME}/lib/*
+
+NOT_FOR_PLATFORM=      Interix-*-*
+
+USE_LANGUAGES=         c99 c++
+USE_TOOLS+=            gmake makeinfo sed:run tar:build
+USE_TOOLS.NetBSD+=     gsed
+
+GNU_CONFIGURE=         yes
+GNU_CONFIGURE_STRICT=  no
+## 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
+CONFIGURE_ARGS+=       --disable-libstdcxx-pch
+
+UNLIMIT_RESOURCES+=    datasize
+UNLIMIT_RESOURCES+=    stacksize
+
+CHECK_PORTABILITY_SKIP+=       contrib/*
+
+.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*} ${LDFLAGS:M-Wl,-z*}
+
+# 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++
+
+# Disable fixincludes on SmartOS, header changes result in broken includes
+# being generated, see https://github.com/joyent/pkgsrc-legacy/issues/270
+.if ${OS_VARIANT} == "SmartOS"
+SUBST_CLASSES+=                fixinc
+SUBST_STAGE.fixinc=    pre-configure
+SUBST_FILES.fixinc=    gcc/Makefile.in
+SUBST_SED.fixinc=      -e "s,\./fixinc.sh,-c true,"
+.endif
+
+.include "options.mk"
+
+## For graphite support.
+.if !empty(PKG_OPTIONS:Mgcc-graphite)
+
+post-extract:
+       ${TAR} -jxf ${DISTDIR}/${ISL16}.tar.bz2 -C ${WRKSRC}
+       ${MV} ${WRKSRC}/${ISL16} ${WRKSRC}/isl
+.endif
+
+.if !empty(MACHINE_PLATFORM:MNetBSD-*-*)
+# on NetBSD, use the native SSP code in libc
+CONFIGURE_ARGS+=       --disable-libssp
+# Match base libstdc++ major
+SUBST_CLASSES+=                libstdc
+SUBST_STAGE.libstdc=   pre-configure
+SUBST_FILES.libstdc=   libstdc++-v3/configure
+SUBST_MESSAGE.libstdc= Bumping libstdc++ major to 7
+SUBST_SED.libstdc=     -e 's,libtool_VERSION=6:,libtool_VERSION=7:,g'
+.else
+CONFIGURE_ARGS+=       --enable-libssp
+.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-threads=posix
+CONFIGURE_ARGS+=       --with-boot-ldflags=${BOOT_LDFLAGS:Q}
+CONFIGURE_ARGS+=       --without-zstd
+# causes build errors even when using lang/gcc12 to self-host.
+CONFIGURE_ARGS.SunOS+= --disable-libsanitizer
+# multilib on Darwin requires fat-binaries
+CONFIGURE_ARGS.Darwin+=        --disable-multilib
+.if !empty(OSX_SDK_PATH)
+CONFIGURE_ARGS.Darwin+=        --with-sysroot=${OSX_SDK_PATH}
+.endif
+CONFIGURE_ARGS.NetBSD+=        --with-gnu-ld --with-ld=/usr/bin/ld
+CONFIGURE_ARGS.NetBSD+=        --with-gnu-as --with-as=/usr/bin/as
+MAKE_ENV.NetBSD+=      ac_cv_func_clock_gettime=yes
+MAKE_ENV.NetBSD+=      ac_cv_func_gethostbyname_r=no
+MAKE_ENV.NetBSD+=      ac_cv_func_freelocale=no
+MAKE_ENV.NetBSD+=      ac_cv_func_newlocale=no
+MAKE_ENV.NetBSD+=      ac_cv_func_uselocale=no
+MAKE_ENV.SunOS+=       ac_cv_func_mkostemp=no
+
+.if !empty(PKGSRC_COMPILER:Mclang) || ${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
+
+.if ${OS_VARIANT} == "SmartOS"
+SUBST_CLASSES+=                ccs
+SUBST_STAGE.ccs=       pre-configure
+SUBST_FILES.ccs=       contrib/make_sunver.pl
+SUBST_SED.ccs=         -e 's,/usr/ccs/bin,/usr/bin,g'
+.endif
+
+CTF_FILES_SKIP+=       */gengtype      # CPU limit exceeded
+
+pre-configure:
+       ${RUN} cd ${WRKSRC} && ${MKDIR} ${OBJDIR}
+
+TEST_TARGET=   -j ${MAKE_JOBS} -k check || ${TRUE}
+TEST_DEPENDS+= dejagnu-[0-9]*:../../devel/dejagnu
+
+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(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};
+
+CHECK_BUILTIN.zlib:= yes
+.include "../../devel/zlib/builtin.mk"
+CHECK_BUILTIN.zlib:= no
+.if !empty(USE_BUILTIN.zlib:M[yY][eE][sS])
+CONFIGURE_ARGS+=       --with-system-zlib
+.else
+CONFIGURE_ARGS+=       --without-system-zlib
+.endif
+.include "../../mk/dlopen.buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/lang/gcc12/buildlink3.mk
diff -u /dev/null pkgsrc/lang/gcc12/buildlink3.mk:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/buildlink3.mk     Thu Jun 16 15:43:55 2022
@@ -0,0 +1,24 @@
+# $NetBSD: buildlink3.mk,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+BUILDLINK_TREE+=       gcc12
+
+.if !defined(GCC12_BUILDLINK3_MK)
+GCC12_BUILDLINK3_MK:=
+
+BUILDLINK_API_DEPENDS.gcc12+=  gcc12>=${_GCC_REQD}
+BUILDLINK_ABI_DEPENDS.gcc12+=  gcc12>=12.1
+BUILDLINK_PKGSRCDIR.gcc12=     ../../lang/gcc12
+BUILDLINK_DEPMETHOD.gcc12?=    build
+
+BUILDLINK_PASSTHRU_DIRS+=      ${BUILDLINK_PREFIX.gcc12}/gcc12
+
+BUILDLINK_FILES.gcc12=         # empty
+BUILDLINK_AUTO_VARS.gcc12=     no
+
+pkgbase := gcc12
+.include "../../mk/pkg-build-options.mk"
+.include "../../mk/dlopen.buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
+.endif
+
+BUILDLINK_TREE+=       -gcc12
Index: pkgsrc/lang/gcc12/distinfo
diff -u /dev/null pkgsrc/lang/gcc12/distinfo:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/distinfo  Thu Jun 16 15:43:55 2022
@@ -0,0 +1,29 @@
+$NetBSD: distinfo,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+BLAKE2s (gcc-12.1.0.tar.xz) = 286450a2355504683b6ce4e027ea609e790b83868fed0bfbc89041673ae02e0c
+SHA512 (gcc-12.1.0.tar.xz) = 2121d295292814a6761edf1fba08c5f633ebe16f52b80e7b73a91050e71e1d2ed98bf17eebad263e191879561c02b48906c53faa4c4670c486a26fc75df23900
+Size (gcc-12.1.0.tar.xz) = 82701928 bytes
+BLAKE2s (isl-0.16.1.tar.bz2) = 01c3fc657326e81414986eb7ede6f73e540b97009745ced125cdf7f4a8d80f61
+SHA512 (isl-0.16.1.tar.bz2) = c188667a84dc5bdddb4ab7c35f89c91bf15a8171f4fcaf41301cf285fb7328846d9a367c096012fec4cc69d244f0bc9e95d84c09ec097394cd4093076f2a041b
+Size (isl-0.16.1.tar.bz2) = 1626446 bytes
+SHA1 (patch-fixincludes_inclhack.def) = 7b00974d3f52a8364190a607f52a5d7e8a6db41a
+SHA1 (patch-gcc_Makefile.in) = c0f97c75ba1d37eae894141edd58bb36b734f651
+SHA1 (patch-gcc_config.gcc) = 260f187048260e539e928bb04594b6394bb03912
+SHA1 (patch-gcc_config.host) = bf95dd21bfdf79d173e745fbd35c9bb99fdf4087
+SHA1 (patch-gcc_config_aarch64_aarch64-netbsd.h) = abf19e2445bce1773162bddef16cd7f41eb36827
+SHA1 (patch-gcc_config_arm_arm.h) = 9d554349869d67d6393552c33a7824f0dd53cb11
+SHA1 (patch-gcc_config_arm_bpabi.h) = 0b0de5ad95442e34397cb46739ef6e36048d6f45
+SHA1 (patch-gcc_config_arm_elf.h) = 57748157084319cb92d892f2ea5b2f3355567551
+SHA1 (patch-gcc_config_arm_netbsd-eabi.h) = 85eb89de6f2e64fac50251f06d7e4eab35903dae
+SHA1 (patch-gcc_config_arm_netbsd-elf.h) = 367d83c808fd7b5b1989d0490b532ad06b425b31
+SHA1 (patch-gcc_config_nvptx_gen-opt.sh) = 67b8c84f198561c1d964a50946937a0a9cc26749
+SHA1 (patch-gcc_configure) = f13d23c46315d18fdbc3bbbad26d0763e2b27690
+SHA1 (patch-isl_configure) = 5523c76d95b229b3cd25461b4c2b7af24bf2534e
+SHA1 (patch-libffi_configure) = 919bbe094e3ce547a0186eeaddb20a662595f79a
+SHA1 (patch-libffi_testsuite_libffi.call_float2.c) = 89e2dd6aaf2c1f75726f02362d8a8bf7178694ea
+SHA1 (patch-libgcc_config.host) = d40d4d08c807eeff98cc246d1ea756b5b2c749b0
+SHA1 (patch-libgcc_crtstuff.c) = a16d465039de00c195cf0694560140a9c38f3a25
+SHA1 (patch-libgfortran_io_io.h) = d44676239a7f45e42054d24bd5224f43c20055c0
+SHA1 (patch-libquadmath_printf_quadmath-printf.c) = 78e09f1e6d61ee57cee83275093cf46b2335d204
+SHA1 (patch-libquadmath_strtod_strtod__l.c) = 6142c10d34174174cce7f06c37eab04dc431b2dc
+SHA1 (patch-libstdc++-v3_libsupc++_new__opa.cc) = 4183b00a5ee6e61524da4755c825a0c08fd01ed6
Index: pkgsrc/lang/gcc12/options.mk
diff -u /dev/null pkgsrc/lang/gcc12/options.mk:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/options.mk        Thu Jun 16 15:43:55 2022
@@ -0,0 +1,161 @@
+# $NetBSD: options.mk,v 1.1 2022/06/16 15:43:55 adam 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 \
+                       always-libgcc
+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 always-libgcc
+.else
+.endif
+
+.include "../../mk/compiler.mk"
+.if empty(PKGSRC_COMPILER:Mgcc)
+PKG_SUGGESTED_OPTIONS+=                        always-libgcc
+.endif
+
+###
+### Determine if multilib is avalible.
+###
+MULTILIB_SUPPORTED?=   unknown
+.if !empty(MACHINE_PLATFORM:MLinux-*-x86_64)
+.  if exists(/usr/include/x86_64-linux-gnu/gnu)
+_GNU_INCLUDE_DIR=      /usr/include/x86_64-linux-gnu/gnu
+.  else
+_GNU_INCLUDE_DIR=      /usr/include/gnu
+.  endif
+.  if exists(${_GNU_INCLUDE_DIR}/stubs-64.h) && \
+     !exists(${_GNU_INCLUDE_DIR}/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"
+
+###
+### Don't install libgcc if it's older than the system one
+###
+.if empty(PKG_OPTIONS:Malways-libgcc)
+
+.  for _libdir_ in ${_OPSYS_LIB_DIRS}
+.    if exists(${_libdir_})
+BASE_LIBGCC!=                  find ${_libdir_} -name libgcc_s.so
+BASE_LIBGCC_MATCH_STRING!=     ${ECHO} ${BASE_LIBGCC} ${GCC12_DIST_VERSION} | \
+                               ${AWK} -f ../../mk/scripts/larger_symbol_version.awk
+.      if ${BASE_LIBGCC_MATCH_STRING:Mnewer}
+DELETE_INSTALLED_LIBGCC=       yes
+.      endif
+.    endif
+.  endfor
+
+.  if ${DELETE_INSTALLED_LIBGCC:Uno}
+post-install:  delete-installed-libgcc
+
+.PHONY: delete-installed-libgcc
+delete-installed-libgcc:
+       ${FIND} ${DESTDIR} -name 'libgcc_s.so*' -delete
+
+.  endif
+
+.endif
+
+###
+### 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)
+ISL16=                 isl-0.16.1
+SITES.${ISL16}.tar.bz2=        ${MASTER_SITE_GNU:=gcc/infrastructure/}
+DISTFILES+=            ${ISL16}.tar.bz2
+.endif
+
+###
+### Optional languages
+### Ada could be added although there is a bootstrapping issue.
+###
+
+.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-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
Index: pkgsrc/lang/gcc12/version.mk
diff -u /dev/null pkgsrc/lang/gcc12/version.mk:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/version.mk        Thu Jun 16 15:43:55 2022
@@ -0,0 +1,2 @@
+# $NetBSD: version.mk,v 1.1 2022/06/16 15:43:55 adam Exp $
+GCC12_DIST_VERSION:=   12.1.0

Index: pkgsrc/lang/gcc12-libs/DESCR
diff -u /dev/null pkgsrc/lang/gcc12-libs/DESCR:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12-libs/DESCR        Thu Jun 16 15:43:55 2022
@@ -0,0 +1,7 @@
+The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C,
+Fortran, and Go, as well as libraries for these languages (libstdc++,
+libgfortran, ...).
+
+This packages provides GCC support libraries in a specific location and allows
+packages to depend on just the libraries rather than having to pull in the full
+GCC package.
Index: pkgsrc/lang/gcc12-libs/Makefile
diff -u /dev/null pkgsrc/lang/gcc12-libs/Makefile:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12-libs/Makefile     Thu Jun 16 15:43:55 2022
@@ -0,0 +1,66 @@
+# $NetBSD: Makefile,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+GCC_PKGNAME=   gcc12
+.include       "../../lang/${GCC_PKGNAME}/version.mk"
+
+DISTNAME=      gcc-${GCC12_DIST_VERSION}
+PKGNAME=       ${GCC_PKGNAME}-libs-${GCC12_DIST_VERSION}
+
+## The PKGREVISION of this package needs to be at least 1 more than the
+## PKGREVISION of the lang/gcc12 package so that with the dependence pattern
+## '{gcc12,gcc12-libs}>=12.1.*' pkg_add will choose gcc12-libs over gcc12.
+PKGREVISION=   1
+
+CATEGORIES=    lang
+MASTER_SITES=  # empty
+DISTFILES=     # empty
+
+MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=      https://gcc.gnu.org/
+COMMENT=       The GNU Compiler Collection (GCC) support shared libraries
+LICENSE=       gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND gnu-lgpl-v3
+
+USE_TOOLS+=    pax
+
+NO_BUILD=              yes
+CHECK_SHLIBS=          no
+RELRO_SUPPORTED=       no
+
+## Depend on exactly ${GCC12_DIST_VERSION}.
+BUILD_DEPENDS+=                ${GCC_PKGNAME}-${GCC12_DIST_VERSION}{,nb[0-9]*}:../../lang/gcc12
+
+.include "../../mk/bsd.prefs.mk"
+
+LIBGCC_SUBPREFIX=      ${GCC_PKGNAME}
+LIBGCC_PREFIX=         ${LOCALBASE}/${LIBGCC_SUBPREFIX}
+GCC_TARGET_MACHINE?=   ${MACHINE_GNU_PLATFORM}
+BUILD_DEFS+=           GCC_TARGET_MACHINE
+
+.if ${SHLIB_TYPE} == "dylib"
+SHLIB_EXT=     dylib
+.else
+SHLIB_EXT=     so
+.endif
+
+LIBRARY_FILES= ${WRKDIR}/lib_files
+
+GENERATE_PLIST+=       ${SED} -e 's,^,${LIBGCC_SUBPREFIX}/${GCC_TARGET_MACHINE}/,' \
+                       ${LIBRARY_FILES};
+GENERATE_PLIST+=       ${GREP} -q 'lib/' ${LIBRARY_FILES} || \
+                       ${ECHO} '@pkgdir ${LIBGCC_SUBPREFIX}/${GCC_TARGET_MACHINE}/lib';
+
+${LIBRARY_FILES}:
+       ${PKG_INFO} -qL '${GCC_PKGNAME}-${GCC12_DIST_VERSION}*' |       \
+       ${SED} -n -e's,^${LIBGCC_PREFIX}/,,' -e'/libexec\//d'           \
+               -e'/libgij/d;/libgcj/d;/libjvm/d'                       \
+               -e'/lib.*\.${SHLIB_EXT}/p' >${LIBRARY_FILES}
+
+do-install: ${LIBRARY_FILES}
+       ${TEST} -d ${DESTDIR}${LIBGCC_PREFIX}/${GCC_TARGET_MACHINE}/lib ||      \
+               ${MKDIR} ${DESTDIR}${LIBGCC_PREFIX}/${GCC_TARGET_MACHINE}/lib
+       cd ${LIBGCC_PREFIX} &&                                          \
+         ${PAX} -rw ${DESTDIR}${LIBGCC_PREFIX}/${GCC_TARGET_MACHINE} <${LIBRARY_FILES}
+
+.include "../../mk/dlopen.buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/lang/gcc12-libs/buildlink3.mk
diff -u /dev/null pkgsrc/lang/gcc12-libs/buildlink3.mk:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12-libs/buildlink3.mk        Thu Jun 16 15:43:55 2022
@@ -0,0 +1,46 @@
+# $NetBSD: buildlink3.mk,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+BUILDLINK_TREE+=       gcc12-libs
+
+.if !defined(GCC12_LIBS_BUILDLINK3_MK)
+GCC12_LIBS_BUILDLINK3_MK:=
+
+.if !empty(USE_PKGSRC_GCC_RUNTIME:M[Yy][Ee][Ss])
+BUILDLINK_API_DEPENDS.gcc12-libs+=     gcc12-libs>=12.1.0
+.else
+BUILDLINK_API_DEPENDS.gcc12-libs+=     {gcc12,gcc12-libs}>=12.1.0
+.endif
+BUILDLINK_PKGSRCDIR.gcc12-libs=                ../../lang/gcc12-libs
+BUILDLINK_DEPMETHOD.gcc12-libs?=       full
+
+BUILDLINK_PASSTHRU_DIRS+=      ${BUILDLINK_PREFIX.gcc12-libs}/gcc12
+
+BUILDLINK_FILES.gcc12-libs=    #empty
+BUILDLINK_AUTO_VARS.gcc12-libs=        no
+
+.if !empty(USE_PKGSRC_GCC_RUNTIME:M[Yy][Ee][Ss])
+# Use custom specs file to ensure we link against pkgsrc libraries.
+SPECS_LIBGCC=          ${WRAPPER_DIR}/specs.libgcc
+WRAPPER_TARGETS+=      ${SPECS_LIBGCC}
+
+LIBGCC_SUBPREFIX=      gcc12
+LIBGCC_PREFIX=         ${BUILDLINK_PREFIX.gcc12-libs}/${LIBGCC_SUBPREFIX}
+GCC_TARGET_MACHINE?=   ${MACHINE_GNU_PLATFORM}
+
+${SPECS_LIBGCC}:
+       @${ECHO} "*link_libgcc:" >${SPECS_LIBGCC}
+       @${ECHO} "%D ${LINKER_RPATH_FLAG}${LIBGCC_PREFIX}/${GCC_TARGET_MACHINE}/lib/%M" >>${SPECS_LIBGCC}
+
+_WRAP_EXTRA_ARGS.CC+=  -specs=${SPECS_LIBGCC}
+_WRAP_EXTRA_ARGS.CXX+= -specs=${SPECS_LIBGCC}
+_WRAP_EXTRA_ARGS.FC+=  -specs=${SPECS_LIBGCC}
+CWRAPPERS_APPEND.cc+=  -specs=${SPECS_LIBGCC}
+CWRAPPERS_APPEND.cxx+= -specs=${SPECS_LIBGCC}
+CWRAPPERS_APPEND.f77+= -specs=${SPECS_LIBGCC}
+.endif
+
+.include "../../mk/dlopen.buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
+.endif # GCC12_LIBS_BUILDLINK3_MK
+
+BUILDLINK_TREE+=       -gcc12-libs

Index: pkgsrc/lang/gcc12/patches/patch-fixincludes_inclhack.def
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-fixincludes_inclhack.def:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-fixincludes_inclhack.def    Thu Jun 16 15:43:55 2022
@@ -0,0 +1,36 @@
+$NetBSD: patch-fixincludes_inclhack.def,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+A workaround for Catalina SDK bug from
+https://github.com/Homebrew/homebrew-core/pull/44762
+
+--- fixincludes/inclhack.def.orig      2020-03-04 08:29:59.000000000 +0000
++++ fixincludes/inclhack.def
+@@ -1269,6 +1269,28 @@ fix = {
+ };
+ 
+ /*
++ *  macOS 10.15 <Availability.h> does not define __OSX_AVAILABLE_STARTING on
++ *  non-clang compilers.
++ */
++fix = {
++    hackname  = darwin_availability;
++    mach      = "*-*-darwin*";
++    files     = Availability.h;
++    select    = "#endif /\\* __OSX_AVAILABLE_STARTING \\*/";
++    c_fix     = format;
++    c_fix_arg = <<- _EOFix_
++      #endif /* __OSX_AVAILABLE_STARTING */
++      #ifndef __OSX_AVAILABLE_STARTING
++        #define __OSX_AVAILABLE_STARTING(_osx, _ios)
++        #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep)
++        #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg)
++      #endif
++      _EOFix_;
++
++    test_text = "#endif /* __OSX_AVAILABLE_STARTING */";
++};
++
++/*
+  *  macOS 10.12 <AvailabilityInternal.h> uses __attribute__((availability))
+  *  unconditionally.
+  */
Index: pkgsrc/lang/gcc12/patches/patch-gcc_Makefile.in
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_Makefile.in:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_Makefile.in     Thu Jun 16 15:43:55 2022
@@ -0,0 +1,15 @@
+$NetBSD: patch-gcc_Makefile.in,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Add gcc libdir to a programs rpath so that _this gcc's_ support libraries
+are found.
+
+--- gcc/Makefile.in.orig       2017-04-18 18:10:27.000000000 +0000
++++ gcc/Makefile.in
+@@ -2112,6 +2112,7 @@ prefix.o: $(BASEVER)
+ # Language-independent files.
+ 
+ DRIVER_DEFINES = \
++  -DLINK_LIBGCC_SPEC="\"%D $(LINKER_RPATH_FLAG) $(prefix)//lib/%M $(LINKER_RPATH_FLAG) $(libdir)/%M \"" \
+   -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \
+   -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
+   -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \
Index: pkgsrc/lang/gcc12/patches/patch-gcc_config.gcc
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_config.gcc:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_config.gcc      Thu Jun 16 15:43:55 2022
@@ -0,0 +1,237 @@
+$NetBSD: patch-gcc_config.gcc,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Match what is in NetBSD src. Fixes at least aarch64eb, and
+probably several others.
+
+--- gcc/config.gcc.orig        2022-05-06 07:30:56.000000000 +0000
++++ gcc/config.gcc
+@@ -439,6 +439,16 @@ m32r*-*-*)
+         cpu_type=m32r
+       extra_options="${extra_options} g.opt"
+         ;;
++m5200-*-*|m5407-*-*)
++      cpu_type=m68k
++      extra_headers=math-68881.h
++      extra_options="${extra_options} m68k/m68k-tables.opt"
++      ;;
++m680[012]0-*-*)
++      cpu_type=m68k
++      extra_headers=math-68881.h
++      extra_options="${extra_options} m68k/m68k-tables.opt"
++      ;;
+ m68k-*-*)
+       extra_headers=math-68881.h
+       extra_options="${extra_options} m68k/m68k-tables.opt"
+@@ -906,6 +916,11 @@ case ${target} in
+   case ${enable_threads} in
+     "" | yes | posix) thread_file='posix' ;;
+   esac
++  case ${target} in
++    arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
++      default_gnu_indirect_function=yes
++      ;;
++  esac
+   nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
+   default_use_cxa_atexit=yes
+   target_has_targetdm=yes
+@@ -1135,6 +1150,11 @@ aarch64*-*-netbsd*)
+       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
+       tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
++      case $target in
++      aarch64_be-*)
++              tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
++              ;;
++      esac
+       ;;
+ aarch64*-*-linux*)
+       tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
+@@ -1276,7 +1296,6 @@ arm*-*-freebsd*)                # ARM Fr
+       with_tls=${with_tls:-gnu}
+       ;;
+ arm*-*-netbsdelf*)
+-      target_cpu_cname="strongarm"
+       tmake_file="${tmake_file} arm/t-arm"
+       tm_file="dbxelf.h elfos.h ${nbsd_tm_file} arm/elf.h"
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+@@ -1285,26 +1304,34 @@ arm*-*-netbsdelf*)
+       esac
+       case ${target} in
+       arm*-*-netbsdelf-*eabi*)
+-          tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
+-          tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
++          tm_file="${tm_file} arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
++          #tmake_file="$tmake_file arm/t-bpabi"
++          # The EABI requires the use of __cxa_atexit.
++          default_use_cxa_atexit=yes
++          # NetBSD native configuration pulls this in, not sure why this must
++          # be here explicitly for pkgsrc.
++          gcc_cv_initfini_array=yes
+           ;;
+       *)
+-          tm_file="$tm_file arm/netbsd-elf.h"
++          tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h"
++          #tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
+           tmake_file="$tmake_file arm/t-netbsd"
+           ;;
+       esac
+       tm_file="${tm_file} arm/aout.h arm/arm.h"
+       case ${target} in
+       arm*-*-netbsdelf-*eabihf*)
+-          # Hard-float requires at least Arm v5te
+-          target_cpu_cname="arm10e"
+           tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
+           ;;
+       esac
+       case ${target} in
+-      armv6*) target_cpu_cname="arm1176jzf-s";;
+-      armv7*) target_cpu_cname="generic-armv7-a";;
++      armv4*) with_cpu=${with_cpu:-strongarm};;
++      armv6*) with_cpu=${with_cpu:-arm1176jzf-s};;
++      armv7*) with_cpu=${with_cpu:-cortex-a8};;
++      arm*eabihf*) with_cpu=${with_cpu:-arm10e};;
++      arm*) with_cpu=${with_cpu:-arm9e};;
+       esac
++      target_cpu_cname="$with_cpu"
+       ;;
+ arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
+       tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
+@@ -1931,6 +1958,7 @@ i[34567]86-*-netbsdelf*)
+       ;;
+ x86_64-*-netbsd*)
+       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
++      tmake_file="${tmake_file} i386/t-netbsd64"
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+       ;;
+ i[34567]86-*-openbsd*)
+@@ -2259,6 +2287,16 @@ ia64*-*-elf*)
+               target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
+       fi
+       ;;
++ia64*-*-netbsd*)
++      tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} ia64/sysv4.h ia64/netbsd.h"
++      target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
++      tmake_file="${tmake_file} ia64/t-ia64"
++      if test x$with_system_libunwind != xyes ; then
++              tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
++      fi
++      extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
++      extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
++      ;;
+ ia64*-*-freebsd*)
+       tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
+       target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
+@@ -2355,8 +2393,25 @@ m68k-*-elf* | fido-*-elf*)
+               ;;
+       esac
+       ;;
+-m68k*-*-netbsdelf*)
++m68010-*-netbsdelf* | m68k-*-netbsdelf* | m5407-*-netbsdelf*)
+       default_m68k_cpu=68020
++      case ${target} in
++      m5407*)
++              with_arch=${with_arch:-cf}
++              target_cpu_default="mcf5475"
++#             target="`echo ${target} | sed 's/m68kcf/m68k/'`"
++              ;;
++      m68010*)
++              target_cpu_default="m68010"
++              tmake_file="${tmake_file} m68k/t-m68kelf m68k/t-m68010-netbsd"
++              default_m68k_cpu=68010
++              tmake_file="${tmake_file} m68k/t-floatlib"
++              ;;
++      *)
++              with_arch=${with_arch:-m68k}
++              tmake_file="${tmake_file} m68k/t-floatlib"
++              ;;
++      esac
+       default_cf_cpu=5475
+       tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+@@ -2516,6 +2571,26 @@ loongarch*-*-linux*)
+       gcc_cv_initfini_array=yes
+       ;;
+ 
++riscv*-*-netbsd*)                      # NetBSD RISC-V
++       tm_file="elfos.h ${tm_file} ${nbsd_tm_file} riscv/netbsd.h"
++       tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
++       case ${target} in
++         riscv32*) tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=0" ;;
++         *) tmake_file="${tmake_file} riscv/t-netbsd64" ;;
++       esac
++       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
++       tmake_file="${tmake_file} riscv/t-riscv"
++       gnu_ld=yes
++       gas=yes
++       gcc_cv_initfini_array=yes
++       ;;
++mips64*-*-netbsd*)                     # NetBSD/mips64, either endian.
++       target_cpu_default="MASK_ABICALLS|MASK_FLOAT64|MASK_SOFT_FLOAT_ABI"
++       tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h mips/netbsd64.h"
++       tmake_file="${tmake_file} mips/t-netbsd64"
++       tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
++       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
++       ;;
+ mips*-*-netbsd*)                      # NetBSD/mips, either endian.
+       target_cpu_default="MASK_ABICALLS"
+       tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
+@@ -2941,11 +3016,24 @@ powerpc*-*-freebsd*)
+               ;;
+       esac
+       ;;
+-powerpc-*-netbsd*)
+-      tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
++powerpc*-*-netbsd*)
++      tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h"
++      case ${target} in
++          powerpc64*)
++              tm_file="rs6000/biarch64.h ${tm_file}"
++              tm_file="${tm_file} rs6000/sysv4.h rs6000/default64.h rs6000/netbsd64.h"
++              tmake_file="${tmake_file} rs6000/t-netbsd64"
++              ;;
++          *)
++              tm_file="${tm_file} rs6000/sysv4.h rs6000/netbsd.h"
++              tmake_file="${tmake_file} rs6000/t-netbsd"
++              ;;
++      esac
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+-      tmake_file="${tmake_file} rs6000/t-netbsd"
+-      extra_options="${extra_options} rs6000/sysv4.opt"
++      extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
++      if test x${enable_secureplt} != xno; then
++          tm_file="rs6000/secureplt.h ${tm_file}"
++      fi
+       ;;
+ powerpc-*-eabisimaltivec*)
+       tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h rs6000/eabialtivec.h"
+@@ -3450,9 +3538,11 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
+ sparc64-*-netbsd*)
+       tm_file="sparc/biarch64.h ${tm_file}"
+       tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
++      tm_file="${tm_file} sparc/default64.h"
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+       extra_options="${extra_options} sparc/long-double-switch.opt"
+       tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
++      with_cpu=ultrasparc
+       ;;
+ sparc64-*-openbsd*)
+       tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp64-elf.h"
+@@ -3958,6 +4048,9 @@ if test x$with_cpu = x ; then
+     frv550-*-*linux*)
+       with_cpu=fr550
+       ;;
++    m5200-*-*|m5407-*-*)
++      with_cpu=${default_cf_cpu}
++      ;;
+     m68k*-*-*)
+       case "$with_arch" in
+       "cf")
+@@ -4509,7 +4602,7 @@ case "${target}" in
+               esac
+               ;;
+ 
+-      fido-*-* | m68k*-*-*)
++      fido-*-* | m68k*-*-* | m5200-*-* | m5407-*-*)
+               supported_defaults="arch cpu"
+               case "$with_arch" in
+               "" | "m68k"| "cf")
Index: pkgsrc/lang/gcc12/patches/patch-gcc_config.host
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_config.host:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_config.host     Thu Jun 16 15:43:55 2022
@@ -0,0 +1,15 @@
+$NetBSD: patch-gcc_config.host,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Add aarch64*-*-netbsd*.
+
+--- gcc/config.host.orig       2022-05-06 07:30:56.000000000 +0000
++++ gcc/config.host
+@@ -99,7 +99,7 @@ case ${host} in
+ esac
+ 
+ case ${host} in
+-  aarch64*-*-freebsd* | aarch64*-*-linux* | aarch64*-*-fuchsia* |\
++  aarch64*-*-freebsd* | aarch64*-*-netbsd* | aarch64*-*-linux* | aarch64*-*-fuchsia* |\
+   aarch64*-*-darwin*)
+     case ${target} in
+       aarch64*-*-*)
Index: pkgsrc/lang/gcc12/patches/patch-gcc_config_aarch64_aarch64-netbsd.h
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_config_aarch64_aarch64-netbsd.h:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_config_aarch64_aarch64-netbsd.h Thu Jun 16 15:43:55 2022
@@ -0,0 +1,18 @@
+$NetBSD: patch-gcc_config_aarch64_aarch64-netbsd.h,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Match what is in NetBSD src.  Fixes at least aarch64eb, and
+probably several others.
+
+--- gcc/config/aarch64/aarch64-netbsd.h.orig   2021-04-08 04:56:28.033740243 -0700
++++ gcc/config/aarch64/aarch64-netbsd.h        2021-04-24 00:16:41.451665444 -0700
+@@ -20,6 +20,10 @@
+ #ifndef GCC_AARCH64_NETBSD_H
+ #define GCC_AARCH64_NETBSD_H
+ 
++/* NetBSD malloc(3) does 64, not 128 bytes. */
++#undef MALLOC_ABI_ALIGNMENT
++#define MALLOC_ABI_ALIGNMENT  64
++
+ #define TARGET_LINKER_BIG_EMULATION "aarch64nbsdb"
+ #define TARGET_LINKER_LITTLE_EMULATION "aarch64nbsd"
+ 
Index: pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_arm.h
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_arm.h:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_arm.h        Thu Jun 16 15:43:55 2022
@@ -0,0 +1,45 @@
+$NetBSD: patch-gcc_config_arm_arm.h,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+--- gcc/config/arm/arm.h.orig  2021-04-08 04:56:28.057740534 -0700
++++ gcc/config/arm/arm.h       2022-01-31 21:11:39.595024008 -0800
+@@ -937,6 +937,11 @@
+ #define ARM_UNWIND_INFO  0
+ #endif
+ 
++/* Overriden by config/arm/netbsd-eabi.h.  */
++#ifndef ARM_DWARF_UNWIND_TABLES
++#define ARM_DWARF_UNWIND_TABLES 0
++#endif
++
+ /* Use r0 and r1 to pass exception handling information.  */
+ #define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? N : INVALID_REGNUM)
+ 
+@@ -948,11 +953,19 @@
+ #define ARM_TARGET2_DWARF_FORMAT DW_EH_PE_pcrel
+ #endif
+ 
++#if ARM_DWARF_UNWIND_TABLES
++/* DWARF unwinding uses the normal indirect/pcrel vs absptr format
++   for 32bit platforms. */
++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
++  (flag_pic ? (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4) \
++            : DW_EH_PE_absptr)
++#else
+ /* ttype entries (the only interesting data references used)
+    use TARGET2 relocations.  */
+ #define ASM_PREFERRED_EH_DATA_FORMAT(code, data) \
+   (((code) == 0 && (data) == 1 && ARM_UNWIND_INFO) ? ARM_TARGET2_DWARF_FORMAT \
+                              : DW_EH_PE_absptr)
++#endif
+ 
+ /* The native (Norcroft) Pascal compiler for the ARM passes the static chain
+    as an invisible last argument (possible since varargs don't exist in
+@@ -2342,7 +2355,7 @@
+ 
+ /* -mcpu=native handling only makes sense with compiler running on
+    an ARM chip.  */
+-#if defined(__arm__)
++#if defined(__arm__) && defined(__linux__)
+ extern const char *host_detect_local_cpu (int argc, const char **argv);
+ #define HAVE_LOCAL_CPU_DETECT
+ # define MCPU_MTUNE_NATIVE_FUNCTIONS                  \
Index: pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_bpabi.h
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_bpabi.h:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_bpabi.h      Thu Jun 16 15:43:55 2022
@@ -0,0 +1,22 @@
+$NetBSD: patch-gcc_config_arm_bpabi.h,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+--- gcc/config/arm/bpabi.h.orig        2021-04-08 04:56:28.061740583 -0700
++++ gcc/config/arm/bpabi.h     2022-01-31 21:13:16.734263818 -0800
+@@ -24,6 +24,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* Use the AAPCS ABI by default.  */
++#undef ARM_DEFAULT_ABI
+ #define ARM_DEFAULT_ABI ARM_ABI_AAPCS
+ 
+ /* Assume that AAPCS ABIs should adhere to the full BPABI.  */
+@@ -107,7 +108,9 @@
+ /* The BPABI specifies the use of .{init,fini}_array.  Therefore, we
+    do not want GCC to put anything into the .{init,fini} sections.  */
+ #undef INIT_SECTION_ASM_OP
++#define INIT_SECTION_ASM_OP ""
+ #undef FINI_SECTION_ASM_OP
++#define FINI_SECTION_ASM_OP ""
+ #define INIT_ARRAY_SECTION_ASM_OP ARM_EABI_CTORS_SECTION_OP
+ #define FINI_ARRAY_SECTION_ASM_OP ARM_EABI_DTORS_SECTION_OP
+ 
Index: pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_elf.h
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_elf.h:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_elf.h        Thu Jun 16 15:43:55 2022
@@ -0,0 +1,14 @@
+$NetBSD: patch-gcc_config_arm_elf.h,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+--- gcc/config/arm/elf.h.orig  2021-04-08 04:56:28.065740630 -0700
++++ gcc/config/arm/elf.h       2022-01-31 21:14:04.684223580 -0800
+@@ -147,6 +147,8 @@
+ #undef L_floatdidf
+ #undef L_floatdisf
+ #undef L_floatundidf
++/* XXXMRG: don't take this out, we need it! */
++# ifndef __NetBSD__
+ #undef L_floatundisf
++# endif
+ #endif
+-
Index: pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_netbsd-eabi.h
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_netbsd-eabi.h:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_netbsd-eabi.h        Thu Jun 16 15:43:55 2022
@@ -0,0 +1,57 @@
+$NetBSD: patch-gcc_config_arm_netbsd-eabi.h,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+--- gcc/config/arm/netbsd-eabi.h.orig  2021-04-08 04:56:28.065740630 -0700
++++ gcc/config/arm/netbsd-eabi.h       2022-01-31 21:15:29.555403989 -0800
+@@ -49,8 +49,8 @@
+ 
+ #undef ARM_UNWIND_INFO
+ #define ARM_UNWIND_INFO 0
+-#undef DWARF2_UNWIND_INFO
+-#define DWARF2_UNWIND_INFO 1
++#undef ARM_DWARF_UNWIND_TABLES
++#define ARM_DWARF_UNWIND_TABLES 1
+ 
+ #undef TARGET_OS_CPP_BUILTINS
+ #define TARGET_OS_CPP_BUILTINS()              \
+@@ -59,7 +59,7 @@
+       if (TARGET_AAPCS_BASED)                 \
+       TARGET_BPABI_CPP_BUILTINS();            \
+       NETBSD_OS_CPP_BUILTINS_ELF();           \
+-      if (DWARF2_UNWIND_INFO)                 \
++      if (ARM_DWARF_UNWIND_TABLES)            \
+       builtin_define ("__ARM_DWARF_EH__");    \
+     }                                         \
+   while (0)
+@@ -81,17 +81,25 @@
+ 
+ #undef SUBTARGET_EXTRA_ASM_SPEC
+ #define SUBTARGET_EXTRA_ASM_SPEC              \
+-  "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu} "   \
++  "-matpcs %{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu} "   \
+   "%{fpic|fpie:-k} "                          \
+   "%{fPIC|fPIE:-k}"
+ 
++/* Default to full VFP if -mhard-float is specified.  */
++#undef SUBTARGET_ASM_FLOAT_SPEC
++#define SUBTARGET_ASM_FLOAT_SPEC      \
++  "%{mhard-float:%{!mfpu=*:-mfpu=vfp}}   \
++   %{mfloat-abi=hard:%{!mfpu=*:-mfpu=vfp}}"
++
+ #undef SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS                                         \
+   { "subtarget_extra_asm_spec",       SUBTARGET_EXTRA_ASM_SPEC },             \
++  { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC },           \
+   { "linker_eabi_suffix",     TARGET_LINKER_EABI_SUFFIX },            \
+   { "linker_emulation",               TARGET_LINKER_EMULATION },              \
+   { "linker_big_emulation",   TARGET_LINKER_BIG_EMULATION },          \
+   { "linker_little_emulation",        TARGET_LINKER_LITTLE_EMULATION },       \
++  { "be8_link_spec",          BE8_LINK_SPEC },                        \
+   { "target_fix_v4bx_spec",   TARGET_FIX_V4BX_SPEC },                 \
+   NETBSD_SUBTARGET_EXTRA_SPECS
+ 
+@@ -102,4 +110,5 @@
+   "-X %{mbig-endian:-EB -m %(linker_big_emulation)} "         \
+   "%{mlittle-endian:-EL -m %(linker_liitle_emulation)} "      \
+   "%{!mbig-endian:%{!mlittle-endian:-m %(linker_emulation)}} "        \
++  "%(be8_link_spec) "                                         \
+   "%(target_fix_v4bx_spec) %(netbsd_link_spec)"
Index: pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_netbsd-elf.h
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_netbsd-elf.h:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_config_arm_netbsd-elf.h Thu Jun 16 15:43:55 2022
@@ -0,0 +1,80 @@
+$NetBSD: patch-gcc_config_arm_netbsd-elf.h,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+--- gcc/config/arm/netbsd-elf.h.orig   2021-04-08 04:56:28.065740630 -0700
++++ gcc/config/arm/netbsd-elf.h        2022-01-31 21:14:32.314234515 -0800
+@@ -27,9 +27,20 @@
+ 
+ /* arm.h defaults to ARM6 CPU.  */
+ 
+-/* This defaults us to little-endian.  */
+-#ifndef TARGET_ENDIAN_DEFAULT
+-#define TARGET_ENDIAN_DEFAULT 0
++/* Default EABI to armv5t so that thumb shared libraries work.
++   The ARM926EH-S core is the default for armv5te, so set
++   SUBTARGET_CPU_DEFAULT to achieve this.  */
++
++#define SUBTARGET_CPU_DEFAULT \
++      (ARM_DEFAULT_ABI != ARM_ABI_APCS && ARM_DEFAULT_ABI != ARM_ABI_ATPCS \
++          ? TARGET_CPU_arm926ejs : TARGET_CPU_arm6)
++
++/* TARGET_BIG_ENDIAN_DEFAULT is set in
++   config.gcc for big endian configurations.  */
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define TARGET_ENDIAN_DEFAULT    MASK_BIG_END
++#else
++#define TARGET_ENDIAN_DEFAULT    0
+ #endif
+ 
+ #undef MULTILIB_DEFAULTS
+@@ -56,25 +67,28 @@
+ 
+ #undef SUBTARGET_EXTRA_ASM_SPEC
+ #define SUBTARGET_EXTRA_ASM_SPEC      \
++  "-matpcs %{mabi=aapcs*:-meabi=5} "  \
+   "%{" FPIE_OR_FPIC_SPEC ":-k}"
+ 
++#undef SUBTARGET_EXTRA_SPECS
++#define SUBTARGET_EXTRA_SPECS                                 \
++  { "subtarget_extra_asm_spec",       SUBTARGET_EXTRA_ASM_SPEC },     \
++  { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC },   \
++  NETBSD_SUBTARGET_EXTRA_SPECS
++
+ /* Default to full VFP if -mfloat-abi=hard is specified.  */
+ #undef SUBTARGET_ASM_FLOAT_SPEC
+-#define SUBTARGET_ASM_FLOAT_SPEC      \
+-  "%{mfloat-abi=hard:{!mfpu=*:-mfpu=vfp}}"
+-
+-#undef SUBTARGET_EXTRA_SPECS
+-#define SUBTARGET_EXTRA_SPECS                         \
+-  { "subtarget_extra_asm_spec",       SUBTARGET_EXTRA_ASM_SPEC }, \
+-  { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC }, \
+-  { "netbsd_link_spec",               NETBSD_LINK_SPEC_ELF }, \
+-  { "netbsd_entry_point",     NETBSD_ENTRY_POINT },
++#define SUBTARGET_ASM_FLOAT_SPEC              \
++  "%{mhard-float:%{!mfpu=*:-mfpu=vfp}}                \
++   %{mfloat-abi=hard:%{!mfpu=*:-mfpu=vfp}}"
+ 
+ #define NETBSD_ENTRY_POINT "__start"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC \
+-  "-X %{mbig-endian:-EB} %{mlittle-endian:-EL} \
++  "-X \
++   %{mbig-endian:-EB %{-mabi=aapcs*:-m armelfb_nbsd_eabi}} \
++   %{mlittle-endian:-EL %{-mabi=aapcs*:-m armelf_nbsd_eabi}} \
+    %(netbsd_link_spec)"
+ 
+ /* Make GCC agree with <machine/ansi.h>.  */
+@@ -85,6 +99,12 @@
+ #undef PTRDIFF_TYPE
+ #define PTRDIFF_TYPE "long int"
+ 
++#undef INTPTR_TYPE
++#define INTPTR_TYPE PTRDIFF_TYPE
++
++#undef UINTPTR_TYPE
++#define UINTPTR_TYPE SIZE_TYPE
++
+ /* We don't have any limit on the length as out debugger is GDB.  */
+ #undef DBX_CONTIN_LENGTH
+ 
Index: pkgsrc/lang/gcc12/patches/patch-gcc_config_nvptx_gen-opt.sh
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_config_nvptx_gen-opt.sh:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_config_nvptx_gen-opt.sh Thu Jun 16 15:43:55 2022
@@ -0,0 +1,15 @@
+$NetBSD: patch-gcc_config_nvptx_gen-opt.sh,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Portability fix.
+
+--- gcc/config/nvptx/gen-opt.sh.orig   2022-06-15 15:52:17.000000000 +0000
++++ gcc/config/nvptx/gen-opt.sh
+@@ -56,7 +56,7 @@ EnumValue
+ Enum(ptx_isa) String(sm_$sm) Value(PTX_ISA_SM$sm)
+ EOF
+ 
+-    if [ "$sm" == "$last" ]; then
++    if [ "$sm" = "$last" ]; then
+       # Don't end with trailing empty line.
+       continue
+     fi
Index: pkgsrc/lang/gcc12/patches/patch-gcc_configure
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-gcc_configure:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-gcc_configure       Thu Jun 16 15:43:55 2022
@@ -0,0 +1,26 @@
+$NetBSD: patch-gcc_configure,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Portability fix.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90143
+
+--- gcc/configure.orig 2022-05-06 07:30:57.000000000 +0000
++++ gcc/configure
+@@ -6395,7 +6395,7 @@ _ACEOF
+ if test "$enable_largefile" != no; then
+   case "$host, $build" in
+     *-*-aix*,*|*,*-*-aix*)
+-      if test "$ac_cv_sizeof_ino_t" == "4" -a "$ac_cv_sizeof_dev_t" == 4; then
++      if test "$ac_cv_sizeof_ino_t" = "4" -a "$ac_cv_sizeof_dev_t" = 4; then
+ 
+ $as_echo "#define HOST_STAT_FOR_64BIT_INODES stat64x" >>confdefs.h
+ 
+@@ -31598,7 +31598,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
Index: pkgsrc/lang/gcc12/patches/patch-isl_configure
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-isl_configure:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-isl_configure       Thu Jun 16 15:43:55 2022
@@ -0,0 +1,26 @@
+$NetBSD: patch-isl_configure,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Make test portable
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90144
+
+--- isl/configure.orig 2016-01-14 17:26:10.000000000 +0000
++++ isl/configure
+@@ -17561,7 +17561,7 @@ else
+ fi
+ 
+ 
+- if test "x$with_int" == "ximath-32"; then
++ if test "x$with_int" = "ximath-32"; then
+   SMALL_INT_OPT_TRUE=
+   SMALL_INT_OPT_FALSE='#'
+ else
+@@ -17569,7 +17569,7 @@ else
+   SMALL_INT_OPT_FALSE=
+ fi
+ 
+-if test "x$with_int" == "ximath-32"; then :
++if test "x$with_int" = "ximath-32"; then :
+ 
+ 
+ $as_echo "#define USE_SMALL_INT_OPT /**/" >>confdefs.h
Index: pkgsrc/lang/gcc12/patches/patch-libffi_configure
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-libffi_configure:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-libffi_configure    Thu Jun 16 15:43:55 2022
@@ -0,0 +1,16 @@
+$NetBSD: patch-libffi_configure,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90146
+https://github.com/libffi/libffi/issues/485
+
+--- libffi/configure.orig      2022-05-06 07:31:19.000000000 +0000
++++ libffi/configure
+@@ -16155,7 +16155,7 @@ case "$target" in
+ $as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
+ 
+      ;;
+-     *-apple-* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris* | *-linux-android*)
++     *-apple-* | *-*-freebsd* | *-*-kfreebsd* | *-*-netbsd* | *-*-openbsd* | *-pc-solaris* | *-linux-android*)
+ 
+ $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
+ 
Index: pkgsrc/lang/gcc12/patches/patch-libffi_testsuite_libffi.call_float2.c
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-libffi_testsuite_libffi.call_float2.c:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-libffi_testsuite_libffi.call_float2.c       Thu Jun 16 15:43:55 2022
@@ -0,0 +1,15 @@
+$NetBSD: patch-libffi_testsuite_libffi.call_float2.c,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90146
+
+--- libffi/testsuite/libffi.call/float2.c.orig 2022-05-06 07:30:59.000000000 +0000
++++ libffi/testsuite/libffi.call/float2.c
+@@ -47,7 +47,7 @@ int main (void)
+   /* long double support under SunOS/gcc is pretty much non-existent.
+      You'll get the odd bus error in library routines like printf() */
+ #else
+-  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 */
Index: pkgsrc/lang/gcc12/patches/patch-libgcc_config.host
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-libgcc_config.host:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-libgcc_config.host  Thu Jun 16 15:43:55 2022
@@ -0,0 +1,25 @@
+$NetBSD: patch-libgcc_config.host,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+This is needed for arm64 to get Out-of-line LSE atomics linked into libgcc.
+libsupc++ fails to link without this, and for arm to build.
+
+--- libgcc/config.host.orig    2021-04-08 04:56:29.805761640 -0700
++++ libgcc/config.host 2022-02-02 04:08:51.653635705 -0800
+@@ -377,6 +377,7 @@
+ aarch64*-*-netbsd*)
+       extra_parts="$extra_parts crtfastmath.o"
+       tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
++      tmake_file="${tmake_file} ${cpu_type}/t-lse"
+       tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
+       md_unwind_header=aarch64/aarch64-unwind.h
+       ;;
+@@ -463,7 +464,8 @@
+       case ${host} in
+         arm*-*-netbsdelf-*eabi*)
+           tmake_file="${tmake_file} arm/t-netbsd-eabi"
+-          unwind_header=config/arm/unwind-arm.h
++          # GCC 7 vs NetBSD/eabi -> avoid arm unwinder
++          #unwind_header=config/arm/unwind-arm.h
+           ;;
+         *)
+           tmake_file="${tmake_file} arm/t-netbsd t-slibgcc-gld-nover"
Index: pkgsrc/lang/gcc12/patches/patch-libgcc_crtstuff.c
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-libgcc_crtstuff.c:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-libgcc_crtstuff.c   Thu Jun 16 15:43:55 2022
@@ -0,0 +1,15 @@
+$NetBSD: patch-libgcc_crtstuff.c,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90147
+
+--- libgcc/crtstuff.c.orig     2017-01-01 12:07:43.000000000 +0000
++++ libgcc/crtstuff.c
+@@ -81,7 +81,7 @@ call_ ## FUNC (void)                                 \
+ #endif
+ 
+ #if defined(TARGET_DL_ITERATE_PHDR) && \
+-   (defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__))
++   (defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__))
+ #define BSD_DL_ITERATE_PHDR_AVAILABLE
+ #endif
+  
Index: pkgsrc/lang/gcc12/patches/patch-libgfortran_io_io.h
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-libgfortran_io_io.h:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-libgfortran_io_io.h Thu Jun 16 15:43:55 2022
@@ -0,0 +1,18 @@
+$NetBSD: patch-libgfortran_io_io.h,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Don't declare old_locale* an internal_proto to avoid linking problems
+
+--- libgfortran/io/io.h.orig   2018-01-07 10:17:52.000000000 +0000
++++ libgfortran/io/io.h
+@@ -57,11 +57,8 @@ extern locale_t c_locale;
+ internal_proto(c_locale);
+ #else
+ extern char* old_locale;
+-internal_proto(old_locale);
+ extern int old_locale_ctr;
+-internal_proto(old_locale_ctr);
+ extern __gthread_mutex_t old_locale_lock;
+-internal_proto(old_locale_lock);
+ #endif
+ 
+ 
Index: pkgsrc/lang/gcc12/patches/patch-libquadmath_printf_quadmath-printf.c
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-libquadmath_printf_quadmath-printf.c:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-libquadmath_printf_quadmath-printf.c        Thu Jun 16 15:43:55 2022
@@ -0,0 +1,26 @@
+$NetBSD: patch-libquadmath_printf_quadmath-printf.c,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Fix -Werror=char-subscripts.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95178
+
+--- libquadmath/printf/quadmath-printf.c.orig  2020-05-07 10:50:02.000000000 +0000
++++ libquadmath/printf/quadmath-printf.c
+@@ -189,7 +189,7 @@ quadmath_snprintf (char *str, size_t siz
+       ++format;
+       info.width = va_arg (ap, int);
+     }
+-  else if (isdigit (*format))
++  else if (isdigit ((unsigned char) *format))
+     /* Constant width specification.  */
+     info.width = read_int (&format);
+ 
+@@ -206,7 +206,7 @@ quadmath_snprintf (char *str, size_t siz
+ 
+         info.prec = va_arg (ap, int);
+       }
+-      else if (isdigit (*format))
++      else if (isdigit ((unsigned char) *format))
+       info.prec = read_int (&format);
+       else
+       /* "%.?" is treated like "%.0?".  */
Index: pkgsrc/lang/gcc12/patches/patch-libquadmath_strtod_strtod__l.c
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-libquadmath_strtod_strtod__l.c:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-libquadmath_strtod_strtod__l.c      Thu Jun 16 15:43:55 2022
@@ -0,0 +1,23 @@
+$NetBSD: patch-libquadmath_strtod_strtod__l.c,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Fix -Werror=char-subscripts.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95178
+
+--- libquadmath/strtod/strtod_l.c.orig 2020-05-07 10:50:02.000000000 +0000
++++ libquadmath/strtod/strtod_l.c
+@@ -57,10 +57,10 @@
+ # define STRING_TYPE char
+ # define CHAR_TYPE char
+ # define L_(Ch) Ch
+-# define ISSPACE(Ch) isspace (Ch)
+-# define ISDIGIT(Ch) isdigit (Ch)
+-# define ISXDIGIT(Ch) isxdigit (Ch)
+-# define TOLOWER(Ch) tolower (Ch)
++# define ISSPACE(Ch) isspace ((unsigned char) Ch)
++# define ISDIGIT(Ch) isdigit ((unsigned char) Ch)
++# define ISXDIGIT(Ch) isxdigit ((unsigned char) Ch)
++# define TOLOWER(Ch) tolower ((unsigned char) Ch)
+ # define TOLOWER_C(Ch) \
+   ({__typeof(Ch) __tlc = (Ch); \
+     (__tlc >= 'A' && __tlc <= 'Z') ? __tlc - 'A' + 'a' : __tlc; })
Index: pkgsrc/lang/gcc12/patches/patch-libstdc++-v3_libsupc++_new__opa.cc
diff -u /dev/null pkgsrc/lang/gcc12/patches/patch-libstdc++-v3_libsupc++_new__opa.cc:1.1
--- /dev/null   Thu Jun 16 15:43:55 2022
+++ pkgsrc/lang/gcc12/patches/patch-libstdc++-v3_libsupc++_new__opa.cc  Thu Jun 16 15:43:55 2022
@@ -0,0 +1,17 @@
+$NetBSD: patch-libstdc++-v3_libsupc++_new__opa.cc,v 1.1 2022/06/16 15:43:55 adam Exp $
+
+Ensure we can find SunOS std::aligned_alloc if using it.
+
+--- libstdc++-v3/libsupc++/new_opa.cc.orig     2020-03-04 08:30:03.000000000 +0000
++++ libstdc++-v3/libsupc++/new_opa.cc
+@@ -57,6 +57,10 @@ extern "C"
+ }
+ #endif
+ 
++#if defined(__sun) && _GLIBCXX_HAVE_ALIGNED_ALLOC
++using std::aligned_alloc;
++#endif
++
+ namespace __gnu_cxx {
+ #if _GLIBCXX_HAVE_ALIGNED_ALLOC
+ using ::aligned_alloc;



Home | Main Index | Thread Index | Old Index