pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
gcc12: Add patches for macOS
Module Name: pkgsrc-wip
Committed By: Jason W. Bacon <bacon4000%gmail.com@localhost>
Pushed By: outpaddling
Date: Mon Jun 17 06:57:01 2024 -0500
Changeset: 0821f399fddb4f39f8e16429c68f2b37ce7f4671
Modified Files:
Makefile
Added Files:
gcc12/DESCR
gcc12/Makefile
gcc12/Makefile.common
gcc12/buildlink3.mk
gcc12/distinfo
gcc12/options.mk
gcc12/patches/patch-fixincludes_inclhack.def
gcc12/patches/patch-gcc_Makefile.in
gcc12/patches/patch-gcc_config.gcc
gcc12/patches/patch-gcc_config.host
gcc12/patches/patch-gcc_config_aarch64_aarch64-netbsd.h
gcc12/patches/patch-gcc_config_arm_arm.h
gcc12/patches/patch-gcc_config_arm_bpabi.h
gcc12/patches/patch-gcc_config_arm_elf.h
gcc12/patches/patch-gcc_config_arm_netbsd-eabi.h
gcc12/patches/patch-gcc_config_arm_netbsd-elf.h
gcc12/patches/patch-gcc_config_nvptx_gen-opt.sh
gcc12/patches/patch-gcc_configure
gcc12/patches/patch-gcc_system.h
gcc12/patches/patch-gcc_targhooks.cc
gcc12/patches/patch-isl_configure
gcc12/patches/patch-libcc1_libcc1plugin.cc
gcc12/patches/patch-libcc1_libcp1plugin.cc
gcc12/patches/patch-libffi_configure
gcc12/patches/patch-libffi_testsuite_libffi.call_float2.c
gcc12/patches/patch-libgcc_config.host
gcc12/patches/patch-libgcc_crtstuff.c
gcc12/patches/patch-libgfortran_io_io.h
gcc12/patches/patch-libquadmath_printf_quadmath-printf.c
gcc12/patches/patch-libquadmath_strtod_strtod__l.c
gcc12/patches/patch-libstdc++-v3_libsupc++_new__opa.cc
gcc12/version.mk
Log Message:
gcc12: Add patches for macOS
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=0821f399fddb4f39f8e16429c68f2b37ce7f4671
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
Makefile | 1 +
gcc12/DESCR | 2 +
gcc12/Makefile | 88 ++++++++
gcc12/Makefile.common | 163 ++++++++++++++
gcc12/buildlink3.mk | 24 +++
gcc12/distinfo | 36 ++++
gcc12/options.mk | 164 ++++++++++++++
gcc12/patches/patch-fixincludes_inclhack.def | 36 ++++
gcc12/patches/patch-gcc_Makefile.in | 15 ++
gcc12/patches/patch-gcc_config.gcc | 237 +++++++++++++++++++++
gcc12/patches/patch-gcc_config.host | 15 ++
.../patch-gcc_config_aarch64_aarch64-netbsd.h | 18 ++
gcc12/patches/patch-gcc_config_arm_arm.h | 45 ++++
gcc12/patches/patch-gcc_config_arm_bpabi.h | 22 ++
gcc12/patches/patch-gcc_config_arm_elf.h | 14 ++
gcc12/patches/patch-gcc_config_arm_netbsd-eabi.h | 57 +++++
gcc12/patches/patch-gcc_config_arm_netbsd-elf.h | 80 +++++++
gcc12/patches/patch-gcc_config_nvptx_gen-opt.sh | 15 ++
gcc12/patches/patch-gcc_configure | 26 +++
gcc12/patches/patch-gcc_system.h | 76 +++++++
gcc12/patches/patch-gcc_targhooks.cc | 26 +++
gcc12/patches/patch-isl_configure | 26 +++
gcc12/patches/patch-libcc1_libcc1plugin.cc | 21 ++
gcc12/patches/patch-libcc1_libcp1plugin.cc | 21 ++
gcc12/patches/patch-libffi_configure | 16 ++
.../patch-libffi_testsuite_libffi.call_float2.c | 15 ++
gcc12/patches/patch-libgcc_config.host | 25 +++
gcc12/patches/patch-libgcc_crtstuff.c | 15 ++
gcc12/patches/patch-libgfortran_io_io.h | 18 ++
.../patch-libquadmath_printf_quadmath-printf.c | 26 +++
gcc12/patches/patch-libquadmath_strtod_strtod__l.c | 23 ++
.../patch-libstdc++-v3_libsupc++_new__opa.cc | 17 ++
gcc12/version.mk | 3 +
33 files changed, 1386 insertions(+)
diffs:
diff --git a/Makefile b/Makefile
index f96c5685f5..7a196ffc0c 100644
--- a/Makefile
+++ b/Makefile
@@ -1129,6 +1129,7 @@ SUBDIR+= gauche-pib
SUBDIR+= gcalcli-git
SUBDIR+= gcc10-aux
SUBDIR+= gcc10snapshot
+SUBDIR+= gcc12
SUBDIR+= gcc13-gnat
SUBDIR+= gcc42
SUBDIR+= gcc43
diff --git a/gcc12/DESCR b/gcc12/DESCR
new file mode 100644
index 0000000000..902190a230
--- /dev/null
+++ b/gcc12/DESCR
@@ -0,0 +1,2 @@
+The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C,
+Fortran, and Go.
diff --git a/gcc12/Makefile b/gcc12/Makefile
new file mode 100644
index 0000000000..2c2caa4ffd
--- /dev/null
+++ b/gcc12/Makefile
@@ -0,0 +1,88 @@
+# $NetBSD: Makefile,v 1.9 2024/05/15 12:22:17 ryoon Exp $
+
+PKGNAME= ${GCC_PKGNAME}-${GCC12_DIST_VERSION}
+PKGREVISION= 2
+## 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!
+COMMENT= The GNU Compiler Collection (GCC) - 12.0 Release Series
+
+LANGS= c
+
+.include "Makefile.common"
+
+# In some cases LINKER_RPATH_FLAG needs a trailing space.
+LINKER_RPATH_FLAG:= ${LINKER_RPATH_FLAG:S/-rpath/& /}
+
+LDFLAGS_FOR_TARGET= ${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++
+
+# Work around ld bug in Xcode 15
+.if ${OPSYS} == "Darwin" && ${CC_VERSION:Mclang-15.*}
+LDFLAGS_FOR_TARGET+= -Wl,-ld_classic
+.endif
+
+# 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
+
+.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}
+
+.if ${USE_CROSS_COMPILE:U:tl} == "yes"
+CONFIGURE_ENV+= CC_FOR_BUILD=${NATIVE_CC:Q}
+CONFIGURE_ENV+= CXX_FOR_BUILD=${NATIVE_CXX:Q}
+.endif
+
+CONFIGURE_ARGS+= --enable-languages=${LANGS:Q}
+CONFIGURE_ARGS+= --enable-shared
+
+CTF_FILES_SKIP+= */gengtype # CPU limit exceeded
+
+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};
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/gcc12/Makefile.common b/gcc12/Makefile.common
new file mode 100644
index 0000000000..b53ced3d6a
--- /dev/null
+++ b/gcc12/Makefile.common
@@ -0,0 +1,163 @@
+# $NetBSD: Makefile.common,v 1.6 2023/08/29 09:48:46 nia Exp $
+# used by lang/gcc12-libjit/Makefile
+
+GCC_PKGNAME= gcc12
+.include "version.mk"
+
+DISTNAME= gcc-${GCC12_DIST_VERSION}
+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/
+LICENSE= gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND gnu-lgpl-v3
+
+DISTFILES= ${DEFAULT_DISTFILES}
+EXTRACT_ONLY= ${DEFAULT_DISTFILES}
+
+PATCHDIR= ${.CURDIR}/../../lang/gcc12/patches
+DISTINFO_FILE= ${.CURDIR}/../../lang/gcc12/distinfo
+
+# 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= c c++
+USE_TOOLS+= gmake makeinfo sed 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
+
+# error: 'for' loop initial declarations are only allowed in C99 mode
+USE_CC_FEATURES+= c99
+FORCE_C_STD= gnu99
+
+UNLIMIT_RESOURCES+= datasize
+UNLIMIT_RESOURCES+= stacksize
+
+CHECK_PORTABILITY_SKIP+= contrib/*
+CHECK_PORTABILITY_SKIP+= gcc/configure.orig_dist
+
+.include "../../mk/bsd.prefs.mk"
+
+.include "options.mk"
+
+.if ${MACHINE_PLATFORM:MDarwin-*-aarch64}
+BUILDLINK_TRANSFORM+= rm:-nodefaultrpaths
+CONFIGURE_ARGS+= --disable-darwin-at-rpath
+PATCHFILES= gcc-12.3.0.diff
+PATCH_SITES= https://raw.githubusercontent.com/Homebrew/formula-patches/f1188b90/gcc/
+PATCH_DIST_STRIP= -p1
+.endif
+
+## For graphite support.
+.if !empty(PKG_OPTIONS:Mgcc-graphite)
+
+EXTRACT_ONLY+= ${ISL16}.tar.bz2
+
+post-extract:
+ ${MV} ${WRKDIR}/${ISL16} ${WRKSRC}/isl
+.endif
+
+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 ${MACHINE_PLATFORM:MNetBSD-*-i386} || ${MACHINE_PLATFORM:MLinux-*-i386}
+CONFIGURE_ARGS+= --with-arch=i486 --with-tune=i486
+.endif
+
+.if ${MACHINE_PLATFORM:MNetBSD-*-x86_64} || ${MACHINE_PLATFORM:MLinux-*-x86_64}
+CONFIGURE_ARGS+= --with-arch=nocona --with-tune=nocona --with-fpmath=sse
+.endif
+
+.if ${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 ${OPSYS} == "Linux"
+# glibc limitations, needs at least -O1
+FORTIFY_SUPPORTED= no
+.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
+
+pre-configure:
+ ${RUN} cd ${WRKSRC} && ${MKDIR} ${OBJDIR}
+
+CHECK_BUILTIN.zlib:= yes
+.include "../../devel/zlib/builtin.mk"
+CHECK_BUILTIN.zlib:= no
+.if ${USE_BUILTIN.zlib:tl} == yes
+CONFIGURE_ARGS+= --with-system-zlib
+.else
+CONFIGURE_ARGS+= --without-system-zlib
+.endif
+.include "../../mk/dlopen.buildlink3.mk"
+.include "../../mk/pthread.buildlink3.mk"
diff --git a/gcc12/buildlink3.mk b/gcc12/buildlink3.mk
new file mode 100644
index 0000000000..1cb8e4e418
--- /dev/null
+++ b/gcc12/buildlink3.mk
@@ -0,0 +1,24 @@
+# $NetBSD: buildlink3.mk,v 1.2 2022/06/28 11:34:10 wiz 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.0nb1
+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
diff --git a/gcc12/distinfo b/gcc12/distinfo
new file mode 100644
index 0000000000..528e5a4b24
--- /dev/null
+++ b/gcc12/distinfo
@@ -0,0 +1,36 @@
+$NetBSD: distinfo,v 1.6 2024/05/15 12:22:17 ryoon Exp $
+
+BLAKE2s (gcc-12.3.0.diff) = 0ec7a208da1a1297fb09b7b8cd50855d1fd7cefacc02610cd43525dee2d8b554
+SHA512 (gcc-12.3.0.diff) = 21f9e9f1e9f59385876b1ffdab70fdd4d72d2a6cbbe5e9f68fafa0001d1daca25c6a825210fabd96f5a39a14d6649539b52d789427d64c7a050c3c10525ff054
+Size (gcc-12.3.0.diff) = 498388 bytes
+BLAKE2s (gcc-12.3.0.tar.xz) = 84d193401e32e82a0aa61bbfb4ddab2ed2e582b74502139dceb8173ea422f098
+SHA512 (gcc-12.3.0.tar.xz) = 8fb799dfa2e5de5284edf8f821e3d40c2781e4c570f5adfdb1ca0671fcae3fb7f794ea783e80f01ec7bfbf912ca508e478bd749b2755c2c14e4055648146c204
+Size (gcc-12.3.0.tar.xz) = 85491976 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-gcc_system.h) = b16b5b8382831068832cf7d79603b905ec01691e
+SHA1 (patch-gcc_targhooks.cc) = 3bd54b7c3efc310aa2277f33cbd87b4a877cafea
+SHA1 (patch-isl_configure) = 5523c76d95b229b3cd25461b4c2b7af24bf2534e
+SHA1 (patch-libcc1_libcc1plugin.cc) = e93eccfbbb6f43461071ec6b87b1575cae8d122c
+SHA1 (patch-libcc1_libcp1plugin.cc) = c323e9118bd9860d1824e16e1af578aec4145c46
+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
diff --git a/gcc12/options.mk b/gcc12/options.mk
new file mode 100644
index 0000000000..55d5cbd245
--- /dev/null
+++ b/gcc12/options.mk
@@ -0,0 +1,164 @@
+# $NetBSD: options.mk,v 1.3 2024/03/05 15:26:41 wiz 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
+
+.include "../../mk/bsd.fast.prefs.mk"
+
+.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 ${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 2> /dev/null
+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} == "yes"
+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
diff --git a/gcc12/patches/patch-fixincludes_inclhack.def b/gcc12/patches/patch-fixincludes_inclhack.def
new file mode 100644
index 0000000000..39d247c70f
--- /dev/null
+++ b/gcc12/patches/patch-fixincludes_inclhack.def
@@ -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.
+ */
diff --git a/gcc12/patches/patch-gcc_Makefile.in b/gcc12/patches/patch-gcc_Makefile.in
new file mode 100644
index 0000000000..1b21ab2c95
--- /dev/null
+++ b/gcc12/patches/patch-gcc_Makefile.in
@@ -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/\" \
diff --git a/gcc12/patches/patch-gcc_config.gcc b/gcc12/patches/patch-gcc_config.gcc
new file mode 100644
index 0000000000..96a4be76fc
--- /dev/null
+++ b/gcc12/patches/patch-gcc_config.gcc
@@ -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")
diff --git a/gcc12/patches/patch-gcc_config.host b/gcc12/patches/patch-gcc_config.host
new file mode 100644
index 0000000000..fc86645f01
--- /dev/null
+++ b/gcc12/patches/patch-gcc_config.host
@@ -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*-*-*)
diff --git a/gcc12/patches/patch-gcc_config_aarch64_aarch64-netbsd.h b/gcc12/patches/patch-gcc_config_aarch64_aarch64-netbsd.h
new file mode 100644
index 0000000000..cc38ad35fc
--- /dev/null
+++ b/gcc12/patches/patch-gcc_config_aarch64_aarch64-netbsd.h
@@ -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"
+
diff --git a/gcc12/patches/patch-gcc_config_arm_arm.h b/gcc12/patches/patch-gcc_config_arm_arm.h
new file mode 100644
index 0000000000..9c2a72b20b
--- /dev/null
+++ b/gcc12/patches/patch-gcc_config_arm_arm.h
@@ -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 \
diff --git a/gcc12/patches/patch-gcc_config_arm_bpabi.h b/gcc12/patches/patch-gcc_config_arm_bpabi.h
new file mode 100644
index 0000000000..aa38c80a65
--- /dev/null
+++ b/gcc12/patches/patch-gcc_config_arm_bpabi.h
@@ -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
+
diff --git a/gcc12/patches/patch-gcc_config_arm_elf.h b/gcc12/patches/patch-gcc_config_arm_elf.h
new file mode 100644
index 0000000000..b86ccc6bbd
--- /dev/null
+++ b/gcc12/patches/patch-gcc_config_arm_elf.h
@@ -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
+-
diff --git a/gcc12/patches/patch-gcc_config_arm_netbsd-eabi.h b/gcc12/patches/patch-gcc_config_arm_netbsd-eabi.h
new file mode 100644
index 0000000000..a2cfa5b270
--- /dev/null
+++ b/gcc12/patches/patch-gcc_config_arm_netbsd-eabi.h
@@ -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)"
diff --git a/gcc12/patches/patch-gcc_config_arm_netbsd-elf.h b/gcc12/patches/patch-gcc_config_arm_netbsd-elf.h
new file mode 100644
index 0000000000..f61805ad9e
--- /dev/null
+++ b/gcc12/patches/patch-gcc_config_arm_netbsd-elf.h
@@ -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
+
diff --git a/gcc12/patches/patch-gcc_config_nvptx_gen-opt.sh b/gcc12/patches/patch-gcc_config_nvptx_gen-opt.sh
new file mode 100644
index 0000000000..d07d7b3700
--- /dev/null
+++ b/gcc12/patches/patch-gcc_config_nvptx_gen-opt.sh
@@ -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
diff --git a/gcc12/patches/patch-gcc_configure b/gcc12/patches/patch-gcc_configure
new file mode 100644
index 0000000000..27b351ccc1
--- /dev/null
+++ b/gcc12/patches/patch-gcc_configure
@@ -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
diff --git a/gcc12/patches/patch-gcc_system.h b/gcc12/patches/patch-gcc_system.h
new file mode 100644
index 0000000000..35d896b13c
--- /dev/null
+++ b/gcc12/patches/patch-gcc_system.h
@@ -0,0 +1,76 @@
+$NetBSD$
+
+--- gcc/system.h.orig 2023-05-08 12:14:40.077167427 +0000
++++ gcc/system.h
+@@ -194,27 +194,8 @@ extern int fprintf_unlocked (FILE *, con
+ #undef fread_unlocked
+ #undef fwrite_unlocked
+
+-/* Include <string> before "safe-ctype.h" to avoid GCC poisoning
+- the ctype macros through safe-ctype.h */
+-
+-#ifdef __cplusplus
+-#ifdef INCLUDE_STRING
+-# include <string>
+-#endif
+-#endif
+-
+-/* There are an extraordinary number of issues with <ctype.h>.
+- The last straw is that it varies with the locale. Use libiberty's
+- replacement instead. */
+-#include "safe-ctype.h"
+-
+-#include <sys/types.h>
+-
+-#include <errno.h>
+-
+-#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
+-extern int errno;
+-#endif
++/* Include C++ standard headers before "safe-ctype.h" to avoid GCC
++ poisoning the ctype macros through safe-ctype.h */
+
+ #ifdef __cplusplus
+ #if defined (INCLUDE_ALGORITHM) || !defined (HAVE_SWAP_IN_UTILITY)
+@@ -229,6 +210,9 @@ extern int errno;
+ #ifdef INCLUDE_SET
+ # include <set>
+ #endif
++#ifdef INCLUDE_STRING
++# include <string>
++#endif
+ #ifdef INCLUDE_VECTOR
+ # include <vector>
+ #endif
+@@ -245,6 +229,19 @@ extern int errno;
+ # include <type_traits>
+ #endif
+
++/* There are an extraordinary number of issues with <ctype.h>.
++ The last straw is that it varies with the locale. Use libiberty's
++ replacement instead. */
++#include "safe-ctype.h"
++
++#include <sys/types.h>
++
++#include <errno.h>
++
++#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
++extern int errno;
++#endif
++
+ /* Some of glibc's string inlines cause warnings. Plus we'd rather
+ rely on (and therefore test) GCC's string builtins. */
+ #define __NO_STRING_INLINES
+@@ -270,9 +267,11 @@ extern int errno;
+ that it is processed before we poison "malloc"; otherwise, if a source
+ file uses a standard library header that includes <cstdlib>, we will get
+ an error about 'using std::malloc'. */
++/*
+ #ifdef __cplusplus
+ #include <cstdlib>
+ #endif
++*/
+
+ /* Undef vec_free from AIX stdlib.h header which conflicts with vec.h. */
+ #undef vec_free
diff --git a/gcc12/patches/patch-gcc_targhooks.cc b/gcc12/patches/patch-gcc_targhooks.cc
new file mode 100644
index 0000000000..af448c9ee3
--- /dev/null
+++ b/gcc12/patches/patch-gcc_targhooks.cc
@@ -0,0 +1,26 @@
+$NetBSD: patch-gcc_targhooks.cc,v 1.1 2024/05/15 12:22:18 ryoon Exp $
+
+* Patch from NetBSD src. Fix -fPIC/-fPIE and -fstack-protector-strong/
+ -fstack-protector-all causes undefined reference to `__stack_chk_fail_local'
+ under NetBSD/i386 9 at least.
+
+--- gcc/targhooks.cc.orig 2024-05-14 16:02:43.062711061 +0000
++++ gcc/targhooks.cc
+@@ -961,7 +961,17 @@ default_hidden_stack_protect_fail (void)
+ DECL_ARTIFICIAL (t) = 1;
+ DECL_IGNORED_P (t) = 1;
+ DECL_VISIBILITY_SPECIFIED (t) = 1;
++#if defined(__NetBSD__)
++ /*
++ * This is a hack:
++ * It appears that our gas does not generate @PLT for hidden
++ * symbols. It could be that we need a newer version, or that
++ * this local function is handled differently on linux.
++ */
++ DECL_VISIBILITY (t) = VISIBILITY_DEFAULT;
++#else
+ DECL_VISIBILITY (t) = VISIBILITY_HIDDEN;
++#endif
+
+ stack_chk_fail_decl = t;
+ }
diff --git a/gcc12/patches/patch-isl_configure b/gcc12/patches/patch-isl_configure
new file mode 100644
index 0000000000..647ca00149
--- /dev/null
+++ b/gcc12/patches/patch-isl_configure
@@ -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
diff --git a/gcc12/patches/patch-libcc1_libcc1plugin.cc b/gcc12/patches/patch-libcc1_libcc1plugin.cc
new file mode 100644
index 0000000000..e36465c24b
--- /dev/null
+++ b/gcc12/patches/patch-libcc1_libcc1plugin.cc
@@ -0,0 +1,21 @@
+$NetBSD$
+
+--- libcc1/libcc1plugin.cc.orig 2024-05-14 07:06:13.359508199 +0000
++++ libcc1/libcc1plugin.cc
+@@ -32,6 +32,7 @@
+ #undef PACKAGE_VERSION
+
+ #define INCLUDE_MEMORY
++#define INCLUDE_VECTOR
+ #include "gcc-plugin.h"
+ #include "system.h"
+ #include "coretypes.h"
+@@ -69,8 +70,6 @@
+ #include "gcc-c-interface.h"
+ #include "context.hh"
+
+-#include <vector>
+-
+ using namespace cc1_plugin;
+
+
diff --git a/gcc12/patches/patch-libcc1_libcp1plugin.cc b/gcc12/patches/patch-libcc1_libcp1plugin.cc
new file mode 100644
index 0000000000..f667b5d4b2
--- /dev/null
+++ b/gcc12/patches/patch-libcc1_libcp1plugin.cc
@@ -0,0 +1,21 @@
+$NetBSD$
+
+--- libcc1/libcp1plugin.cc.orig 2024-05-14 07:05:14.590094938 +0000
++++ libcc1/libcp1plugin.cc
+@@ -33,6 +33,7 @@
+ #undef PACKAGE_VERSION
+
+ #define INCLUDE_MEMORY
++#define INCLUDE_VECTOR
+ #include "gcc-plugin.h"
+ #include "system.h"
+ #include "coretypes.h"
+@@ -71,8 +72,6 @@
+ #include "rpc.hh"
+ #include "context.hh"
+
+-#include <vector>
+-
+ using namespace cc1_plugin;
+
+
diff --git a/gcc12/patches/patch-libffi_configure b/gcc12/patches/patch-libffi_configure
new file mode 100644
index 0000000000..f490a8a8a2
--- /dev/null
+++ b/gcc12/patches/patch-libffi_configure
@@ -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
+
diff --git a/gcc12/patches/patch-libffi_testsuite_libffi.call_float2.c b/gcc12/patches/patch-libffi_testsuite_libffi.call_float2.c
new file mode 100644
index 0000000000..33b7f3b2cc
--- /dev/null
+++ b/gcc12/patches/patch-libffi_testsuite_libffi.call_float2.c
@@ -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 */
diff --git a/gcc12/patches/patch-libgcc_config.host b/gcc12/patches/patch-libgcc_config.host
new file mode 100644
index 0000000000..0a008f19ba
--- /dev/null
+++ b/gcc12/patches/patch-libgcc_config.host
@@ -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"
diff --git a/gcc12/patches/patch-libgcc_crtstuff.c b/gcc12/patches/patch-libgcc_crtstuff.c
new file mode 100644
index 0000000000..286348b88d
--- /dev/null
+++ b/gcc12/patches/patch-libgcc_crtstuff.c
@@ -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
+
diff --git a/gcc12/patches/patch-libgfortran_io_io.h b/gcc12/patches/patch-libgfortran_io_io.h
new file mode 100644
index 0000000000..77d3b2a599
--- /dev/null
+++ b/gcc12/patches/patch-libgfortran_io_io.h
@@ -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
+
+
diff --git a/gcc12/patches/patch-libquadmath_printf_quadmath-printf.c b/gcc12/patches/patch-libquadmath_printf_quadmath-printf.c
new file mode 100644
index 0000000000..6a165c7e25
--- /dev/null
+++ b/gcc12/patches/patch-libquadmath_printf_quadmath-printf.c
@@ -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?". */
diff --git a/gcc12/patches/patch-libquadmath_strtod_strtod__l.c b/gcc12/patches/patch-libquadmath_strtod_strtod__l.c
new file mode 100644
index 0000000000..8f5e8751c2
--- /dev/null
+++ b/gcc12/patches/patch-libquadmath_strtod_strtod__l.c
@@ -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; })
diff --git a/gcc12/patches/patch-libstdc++-v3_libsupc++_new__opa.cc b/gcc12/patches/patch-libstdc++-v3_libsupc++_new__opa.cc
new file mode 100644
index 0000000000..4d3b01d2d2
--- /dev/null
+++ b/gcc12/patches/patch-libstdc++-v3_libsupc++_new__opa.cc
@@ -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;
diff --git a/gcc12/version.mk b/gcc12/version.mk
new file mode 100644
index 0000000000..088059c776
--- /dev/null
+++ b/gcc12/version.mk
@@ -0,0 +1,3 @@
+# $NetBSD: version.mk,v 1.3 2023/07/01 10:53:11 wiz Exp $
+
+GCC12_DIST_VERSION:= 12.3.0
Home |
Main Index |
Thread Index |
Old Index