port over the important parts of GCC 12 for powerpc from src. Index: distinfo =================================================================== RCS file: /cvsroot/pkgsrc/lang/gcc12/distinfo,v retrieving revision 1.9 diff -p -u -r1.9 distinfo --- distinfo 15 Dec 2024 03:05:12 -0000 1.9 +++ distinfo 17 Dec 2024 23:54:14 -0000 @@ -19,6 +19,10 @@ SHA1 (patch-gcc_config_arm_elf.h) = 5774 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_config_rs6000_rs6000-logue.cc) = 8852ee6656836836b882f673448873190c44466b +SHA1 (patch-gcc_config_rs6000_rs6000.cc) = 9aa2e73720f380c45a59e9e3b4c2b4fd0c4d689e +SHA1 (patch-gcc_config_rs6000_sysv4.h) = be389b7b2a784ca4cd8dd8b8cefb03ae158d368c +SHA1 (patch-gcc_config_rs6000_t-netbsd) = 2deb4b1735c95903aa4f66447a87cb41155d82b7 SHA1 (patch-gcc_configure) = f13d23c46315d18fdbc3bbbad26d0763e2b27690 SHA1 (patch-gcc_targhooks.cc) = 3bd54b7c3efc310aa2277f33cbd87b4a877cafea SHA1 (patch-isl_configure) = 5523c76d95b229b3cd25461b4c2b7af24bf2534e Index: patches/patch-gcc_config_rs6000_rs6000-logue.cc =================================================================== RCS file: patches/patch-gcc_config_rs6000_rs6000-logue.cc diff -N patches/patch-gcc_config_rs6000_rs6000-logue.cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-gcc_config_rs6000_rs6000-logue.cc 17 Dec 2024 23:54:14 -0000 @@ -0,0 +1,22 @@ +--- gcc/config/rs6000/rs6000-logue.cc.orig 2024-06-20 01:08:06.000000000 -0700 ++++ gcc/config/rs6000/rs6000-logue.cc 2024-12-17 15:44:35.079391555 -0800 +@@ -2277,7 +2277,8 @@ + } + else if (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2) + { +-#if !defined (POWERPC_LINUX) && !defined (POWERPC_FREEBSD) ++#if !defined (POWERPC_LINUX) && !defined (POWERPC_FREEBSD) \ ++ && !defined(POWERPC_NETBSD) + /* No out-of-line save/restore routines for GPRs on AIX. */ + gcc_assert (!TARGET_AIX || (sel & SAVRES_REG) != SAVRES_GPR); + #endif +@@ -2289,7 +2290,8 @@ + : ((sel & SAVRES_LR) ? "_restgpr0_" : "_restgpr1_")); + else if ((sel & SAVRES_REG) == SAVRES_FPR) + { +-#if defined (POWERPC_LINUX) || defined (POWERPC_FREEBSD) ++#if defined (POWERPC_LINUX) || defined (POWERPC_FREEBSD) \ ++ || defined(POWERPC_NETBSD) + if ((sel & SAVRES_LR)) + prefix = ((sel & SAVRES_SAVE) ? "_savefpr_" : "_restfpr_"); + else Index: patches/patch-gcc_config_rs6000_rs6000.cc =================================================================== RCS file: patches/patch-gcc_config_rs6000_rs6000.cc diff -N patches/patch-gcc_config_rs6000_rs6000.cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-gcc_config_rs6000_rs6000.cc 17 Dec 2024 23:54:14 -0000 @@ -0,0 +1,24 @@ +--- gcc/config/rs6000/rs6000.cc.orig 2024-06-20 01:08:06.000000000 -0700 ++++ gcc/config/rs6000/rs6000.cc 2024-12-17 15:46:35.810029314 -0800 +@@ -97,7 +97,8 @@ + of the include files, so that POWERPC_LINUX and POWERPC_FREEBSD are + properly defined. */ + #ifndef TARGET_IEEEQUAD_DEFAULT +-#if !defined (POWERPC_LINUX) && !defined (POWERPC_FREEBSD) ++#if !defined (POWERPC_LINUX) && !defined (POWERPC_FREEBSD) \ ++ && !defined(POWERPC_NETBSD) + #define TARGET_IEEEQUAD_DEFAULT 1 + #else + #define TARGET_IEEEQUAD_DEFAULT 0 +@@ -20747,7 +20748,11 @@ + if (flag_pic) + return 3; + else if (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2) ++#if defined (POWERPC_NETBSD) ++ return 3; ++#else + return 2; ++#endif + else + return 0; + } Index: patches/patch-gcc_config_rs6000_sysv4.h =================================================================== RCS file: patches/patch-gcc_config_rs6000_sysv4.h diff -N patches/patch-gcc_config_rs6000_sysv4.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-gcc_config_rs6000_sysv4.h 17 Dec 2024 23:54:14 -0000 @@ -0,0 +1,27 @@ +--- gcc/config/rs6000/sysv4.h.orig 2024-06-20 01:08:06.000000000 -0700 ++++ gcc/config/rs6000/sysv4.h 2024-12-17 15:48:26.037567286 -0800 +@@ -798,21 +798,14 @@ + #define LIB_NETBSD_SPEC "\ + -lc" + +-#define STARTFILE_NETBSD_SPEC "\ +-ncrti.o%s crt0.o%s \ +-%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" ++#define STARTFILE_NETBSD_SPEC NETBSD_STARTFILE_SPEC + +-#define ENDFILE_NETBSD_SPEC "\ +-%{!shared:crtend.o%s} %{shared:crtendS.o%s} \ +-ncrtn.o%s" ++#define ENDFILE_NETBSD_SPEC NETBSD_ENDFILE_SPEC + + #define LINK_START_NETBSD_SPEC "\ + " + +-#define LINK_OS_NETBSD_SPEC "\ +-%{!shared: %{!static: \ +- %{rdynamic:-export-dynamic} \ +- -dynamic-linker /usr/libexec/ld.elf_so}}" ++#define LINK_OS_NETBSD_SPEC NETBSD_LINK_SPEC_ELF + + #define CPP_OS_NETBSD_SPEC "\ + -D__powerpc__ -D__NetBSD__ -D__KPRINTF_ATTRIBUTE__" Index: patches/patch-gcc_config_rs6000_t-netbsd =================================================================== RCS file: patches/patch-gcc_config_rs6000_t-netbsd diff -N patches/patch-gcc_config_rs6000_t-netbsd --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-gcc_config_rs6000_t-netbsd 17 Dec 2024 23:54:14 -0000 @@ -0,0 +1,10 @@ +--- gcc/config/rs6000/t-netbsd.orig 2024-06-20 01:08:06.000000000 -0700 ++++ gcc/config/rs6000/t-netbsd 2024-12-17 15:48:58.969841508 -0800 +@@ -34,3 +34,7 @@ + MULTILIB_EXCEPTIONS = + + MULTILIB_MATCHES = ${MULTILIB_MATCHES_FLOAT} ++ ++# It is important that crtbegin.o, etc., aren't surprised by stuff in .sdata. ++CRTSTUFF_T_CFLAGS += -msdata=none ++CRTSTUFF_T_CFLAGS_S += -msdata=none