pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/cross/ppc-morphos-gcc
Module Name: pkgsrc
Committed By: js
Date: Sat Jun 13 15:58:32 UTC 2026
Modified Files:
pkgsrc/cross/ppc-morphos-gcc: Makefile distinfo
pkgsrc/cross/ppc-morphos-gcc/files: README fix-fenv-for-crossbuild.diff
gcc-15-morphos.diff
Added Files:
pkgsrc/cross/ppc-morphos-gcc/files: const-baserel.diff
libcpp-disable-canonicalize.diff
Removed Files:
pkgsrc/cross/ppc-morphos-gcc/patches: patch-gcc_config_rs6000_rs6000.cc
patch-libstdc++-v3_crossconfig.m4
Log Message:
Update cross/ppc-morphos-gcc to 15.2.0
This updates to the version from the MorphOS 3.20 SDK.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 pkgsrc/cross/ppc-morphos-gcc/Makefile
cvs rdiff -u -r1.4 -r1.5 pkgsrc/cross/ppc-morphos-gcc/distinfo
cvs rdiff -u -r1.1 -r1.2 pkgsrc/cross/ppc-morphos-gcc/files/README \
pkgsrc/cross/ppc-morphos-gcc/files/fix-fenv-for-crossbuild.diff \
pkgsrc/cross/ppc-morphos-gcc/files/gcc-15-morphos.diff
cvs rdiff -u -r0 -r1.1 pkgsrc/cross/ppc-morphos-gcc/files/const-baserel.diff \
pkgsrc/cross/ppc-morphos-gcc/files/libcpp-disable-canonicalize.diff
cvs rdiff -u -r1.1 -r0 \
pkgsrc/cross/ppc-morphos-gcc/patches/patch-gcc_config_rs6000_rs6000.cc \
pkgsrc/cross/ppc-morphos-gcc/patches/patch-libstdc++-v3_crossconfig.m4
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/cross/ppc-morphos-gcc/Makefile
diff -u pkgsrc/cross/ppc-morphos-gcc/Makefile:1.2 pkgsrc/cross/ppc-morphos-gcc/Makefile:1.3
--- pkgsrc/cross/ppc-morphos-gcc/Makefile:1.2 Sat Apr 4 01:29:41 2026
+++ pkgsrc/cross/ppc-morphos-gcc/Makefile Sat Jun 13 15:58:31 2026
@@ -1,7 +1,6 @@
-# $NetBSD: Makefile,v 1.2 2026/04/04 01:29:41 js Exp $
+# $NetBSD: Makefile,v 1.3 2026/06/13 15:58:31 js Exp $
-DISTNAME= gcc-15.1.0
-PKGREVISION= 1
+DISTNAME= gcc-15.2.0
PKGNAME= ppc-morphos-${DISTNAME}
CATEGORIES= cross
MASTER_SITES= ${MASTER_SITE_GNU:=gcc/gcc-${PKGVERSION_NOREV}/}
@@ -52,6 +51,8 @@ pre-patch:
${RUN} cd ${WRKSRC} && ${PATCH} -p1 <${FILESDIR}/morphos-std-fastfloat.diff
${RUN} cd ${WRKSRC} && ${PATCH} -p0 <${FILESDIR}/fix-saveds.diff
${RUN} cd ${WRKSRC} && ${PATCH} -p0 <${FILESDIR}/objc-saveds.diff
+ ${RUN} cd ${WRKSRC} && ${PATCH} -p1 <${FILESDIR}/libcpp-disable-canonicalize.diff
+ ${RUN} cd ${WRKSRC} && ${PATCH} -p0 <${FILESDIR}/const-baserel.diff
${RUN} find ${WRKSRC} -name configure -print0 | xargs -0 -r perl -i.orig -p -e
"s|toolexecdir='\\\$$\(libdir\)/gcc/\\\$$\(target_alias\)'|toolexecdir='\\\$$(libdir)/gcc-lib/\\\$$(target_alias)'|g;"
${RUN} find ${WRKSRC} -name Makefile.in -print0 | xargs -0 -r perl -i.orig -p -e "s|= \\\$$\(libexecdir\)/gcc/\\\$$\(real_target_noncanonical\)|=
\\\$$(libexecdir)/gcc-lib/\\\$$(real_target_noncanonical)|g;s|= \\\$$\(libdir\)/gcc/\\\$$\(target_noncanonical\)|= \\\$$(libdir)/gcc-lib/\\\$$(target_noncanonical)|g;"
Index: pkgsrc/cross/ppc-morphos-gcc/distinfo
diff -u pkgsrc/cross/ppc-morphos-gcc/distinfo:1.4 pkgsrc/cross/ppc-morphos-gcc/distinfo:1.5
--- pkgsrc/cross/ppc-morphos-gcc/distinfo:1.4 Wed May 13 23:25:14 2026
+++ pkgsrc/cross/ppc-morphos-gcc/distinfo Sat Jun 13 15:58:31 2026
@@ -1,11 +1,10 @@
-$NetBSD: distinfo,v 1.4 2026/05/13 23:25:14 js Exp $
+$NetBSD: distinfo,v 1.5 2026/06/13 15:58:31 js Exp $
-BLAKE2s (gcc-15.1.0.tar.xz) = 260d64654fbfc0ee06540cc4604cd7071be53d616069a9dd57e5359a0b0ecf46
-SHA512 (gcc-15.1.0.tar.xz) = ddd35ca6c653dffa88f7c7ef9ee4cd806e156e0f3b30f4d63e75a8363361285cd566ee73127734cde6a934611de815bee3e32e24bfd2e0ab9f7ff35c929821c1
-Size (gcc-15.1.0.tar.xz) = 98268344 bytes
+BLAKE2s (gcc-15.2.0.tar.xz) = ee9b2705b03ef8e6b5a41cf523dad26dcdaa8047be3743121b1673ce2fcc8832
+SHA512 (gcc-15.2.0.tar.xz) = 89047a2e07bd9da265b507b516ed3635adb17491c7f4f67cf090f0bd5b3fc7f2ee6e4cc4008beef7ca884b6b71dffe2bb652b21f01a702e17b468cca2d10b2de
+Size (gcc-15.2.0.tar.xz) = 101056276 bytes
SHA1 (patch-config_override.m4) = 1ee0186b006a987dc57151a9d112654eabd24db9
SHA1 (patch-gcc_config_rs6000_morphos.h) = c788e480f3f510b61292f5b1ec5b84646b33ab93
-SHA1 (patch-gcc_config_rs6000_rs6000.cc) = d032b17ae563e45476ca3b1114c0f233d01a8a8b
SHA1 (patch-gcc_plugin.cc) = 85facfdab177478fa423fafd0b4f7c1704e2f270
SHA1 (patch-libcc1_configure.ac) = ca40be7af4a4ffc3a4fba1a0dbda76fcde1fa2d9
SHA1 (patch-libcody_buffer.cc) = e214878a48c4ab9688d2a0dbe21bb43d81bc9ef2
@@ -16,6 +15,5 @@ SHA1 (patch-libgcc_config_rs6000_gthr-mo
SHA1 (patch-libiberty_fibheap.c) = f11678ec725c773a18d03236ab4387d9ec9eef7d
SHA1 (patch-libiberty_filedescriptor.c) = 51ad6812739b459d8cb37b6bd8afd5afb92dabd3
SHA1 (patch-libiberty_pex-unix.c) = 7cf523e46d6c669785293f82fa8cf0b6c2b69895
-SHA1 (patch-libstdc++-v3_crossconfig.m4) = 0d0d20f9a1444bd77520decd275ac22d2a6e4890
SHA1 (patch-libstdc++-v3_libsupc++_unwind-cxx.h) = 0234e780171554bf60858b884ab1181cad36f8b2
SHA1 (patch-zlib_zutil.c) = 33a75b615f4d43c628450f8f3743a00a1a050c3e
Index: pkgsrc/cross/ppc-morphos-gcc/files/README
diff -u pkgsrc/cross/ppc-morphos-gcc/files/README:1.1 pkgsrc/cross/ppc-morphos-gcc/files/README:1.2
--- pkgsrc/cross/ppc-morphos-gcc/files/README:1.1 Sun Jun 15 12:51:35 2025
+++ pkgsrc/cross/ppc-morphos-gcc/files/README Sat Jun 13 15:58:32 2026
@@ -1,2 +1,2 @@
-These files are coming from the unreleased MorphOS 3.20 beta SDK, with the
-generated libstdc++-v3/configure removed.
+These files are coming from the MorphOS 3.20 SDK, with the generated
+libstdc++-v3/configure removed.
Index: pkgsrc/cross/ppc-morphos-gcc/files/fix-fenv-for-crossbuild.diff
diff -u pkgsrc/cross/ppc-morphos-gcc/files/fix-fenv-for-crossbuild.diff:1.1 pkgsrc/cross/ppc-morphos-gcc/files/fix-fenv-for-crossbuild.diff:1.2
--- pkgsrc/cross/ppc-morphos-gcc/files/fix-fenv-for-crossbuild.diff:1.1 Sun Jun 15 12:51:35 2025
+++ pkgsrc/cross/ppc-morphos-gcc/files/fix-fenv-for-crossbuild.diff Sat Jun 13 15:58:32 2026
@@ -1,5 +1,5 @@
---- gcc-11.1.0-old/libstdc++-v3/include/c_compatibility/fenv.h 2021-04-27 13:00:16.000000000 +0300
-+++ gcc-11.1.0-new/libstdc++-v3/include/c_compatibility/fenv.h 2021-06-21 22:57:48.553142842 +0300
+--- gcc-15.2.0.orig/libstdc++-v3/include/c_compatibility/fenv.h 2025-08-08 09:51:45.775148372 +0300
++++ gcc-15.2.0/libstdc++-v3/include/c_compatibility/fenv.h 2025-08-08 12:36:34.566775350 +0300
@@ -26,6 +26,10 @@
* This is a Standard C++ Library header.
*/
@@ -11,15 +11,15 @@
#ifndef _GLIBCXX_FENV_H
#define _GLIBCXX_FENV_H 1
-@@ -79,3 +83,5 @@
+@@ -86,3 +90,5 @@
#endif // C++11
#endif // _GLIBCXX_FENV_H
+
+#endif
---- gcc-11.1.0-old/libstdc++-v3/include/c_global/cfenv 2021-04-27 13:00:16.000000000 +0300
-+++ gcc-11.1.0-new/libstdc++-v3/include/c_global/cfenv 2021-06-21 22:54:39.506005252 +0300
-@@ -37,9 +37,11 @@
+--- gcc-15.2.0.orig/libstdc++-v3/include/c_global/cfenv 2025-08-08 09:51:45.776484451 +0300
++++ gcc-15.2.0/libstdc++-v3/include/c_global/cfenv 2025-08-08 12:35:52.862460141 +0300
+@@ -39,9 +39,11 @@
#include <bits/c++config.h>
@@ -32,5 +32,5 @@
+#include_next <fenv.h>
+#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
- #ifdef _GLIBCXX_USE_C99_FENV_TR1
+ #ifdef _GLIBCXX_USE_C99_FENV
Index: pkgsrc/cross/ppc-morphos-gcc/files/gcc-15-morphos.diff
diff -u pkgsrc/cross/ppc-morphos-gcc/files/gcc-15-morphos.diff:1.1 pkgsrc/cross/ppc-morphos-gcc/files/gcc-15-morphos.diff:1.2
--- pkgsrc/cross/ppc-morphos-gcc/files/gcc-15-morphos.diff:1.1 Sun Jun 15 12:51:35 2025
+++ pkgsrc/cross/ppc-morphos-gcc/files/gcc-15-morphos.diff Sat Jun 13 15:58:32 2026
@@ -1,6 +1,6 @@
-diff -ruN gcc-15.1.0.orig/config/gthr.m4 gcc-15.1.0/config/gthr.m4
---- gcc-15.1.0.orig/config/gthr.m4 2025-04-25 11:17:59.000000000 +0300
-+++ gcc-15.1.0/config/gthr.m4 2025-04-25 15:58:40.260619802 +0300
+diff -ruN gcc-15.2.0.orig/config/gthr.m4 gcc-15.2.0/config/gthr.m4
+--- gcc-15.2.0.orig/config/gthr.m4 2025-08-08 09:51:39.867612457 +0300
++++ gcc-15.2.0/config/gthr.m4 2025-08-08 12:20:24.209613638 +0300
@@ -23,6 +23,7 @@
vxworks) thread_header=config/gthr-vxworks.h ;;
win32) thread_header=config/i386/gthr-win32.h ;;
@@ -9,9 +9,9 @@ diff -ruN gcc-15.1.0.orig/config/gthr.m4
esac
AC_SUBST(thread_header)
])
-diff -ruN gcc-15.1.0.orig/config.rpath gcc-15.1.0/config.rpath
---- gcc-15.1.0.orig/config.rpath 2025-04-25 11:17:59.000000000 +0300
-+++ gcc-15.1.0/config.rpath 2025-04-25 15:58:40.260619802 +0300
+diff -ruN gcc-15.2.0.orig/config.rpath gcc-15.2.0/config.rpath
+--- gcc-15.2.0.orig/config.rpath 2025-08-08 09:51:39.865337980 +0300
++++ gcc-15.2.0/config.rpath 2025-08-08 12:20:24.209613638 +0300
@@ -159,6 +159,9 @@
ld_shlibs=no
fi
@@ -22,9 +22,9 @@ diff -ruN gcc-15.1.0.orig/config.rpath g
netbsd*)
;;
solaris* | sysv5*)
-diff -ruN gcc-15.1.0.orig/configure gcc-15.1.0/configure
---- gcc-15.1.0.orig/configure 2025-04-25 11:17:59.000000000 +0300
-+++ gcc-15.1.0/configure 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/configure gcc-15.2.0/configure
+--- gcc-15.2.0.orig/configure 2025-08-08 09:51:39.874338130 +0300
++++ gcc-15.2.0/configure 2025-08-08 12:20:24.209613638 +0300
@@ -4102,6 +4102,9 @@
powerpc-*-beos*)
noconfigdirs="$noconfigdirs gdb"
@@ -35,9 +35,9 @@ diff -ruN gcc-15.1.0.orig/configure gcc-
rs6000-*-lynxos*)
noconfigdirs="$noconfigdirs gprof"
;;
-diff -ruN gcc-15.1.0.orig/configure.ac gcc-15.1.0/configure.ac
---- gcc-15.1.0.orig/configure.ac 2025-04-25 11:17:59.000000000 +0300
-+++ gcc-15.1.0/configure.ac 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/configure.ac gcc-15.2.0/configure.ac
+--- gcc-15.2.0.orig/configure.ac 2025-08-08 09:51:39.874338130 +0300
++++ gcc-15.2.0/configure.ac 2025-08-08 12:20:24.209613638 +0300
@@ -1319,6 +1319,9 @@
powerpc-*-beos*)
noconfigdirs="$noconfigdirs gdb"
@@ -48,9 +48,9 @@ diff -ruN gcc-15.1.0.orig/configure.ac g
rs6000-*-lynxos*)
noconfigdirs="$noconfigdirs gprof"
;;
-diff -ruN gcc-15.1.0.orig/c++tools/resolver.cc gcc-15.1.0/c++tools/resolver.cc
---- gcc-15.1.0.orig/c++tools/resolver.cc 2025-04-25 11:17:59.000000000 +0300
-+++ gcc-15.1.0/c++tools/resolver.cc 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/c++tools/resolver.cc gcc-15.2.0/c++tools/resolver.cc
+--- gcc-15.2.0.orig/c++tools/resolver.cc 2025-08-08 09:51:39.865337980 +0300
++++ gcc-15.2.0/c++tools/resolver.cc 2025-08-08 12:20:24.209613638 +0300
@@ -41,7 +41,7 @@
#else
#ifdef HAVE_SYS_MMAN_H
@@ -60,9 +60,9 @@ diff -ruN gcc-15.1.0.orig/c++tools/resol
#else
#define MAPPED_READING 0
#endif
-diff -ruN gcc-15.1.0.orig/c++tools/server.cc gcc-15.1.0/c++tools/server.cc
---- gcc-15.1.0.orig/c++tools/server.cc 2025-04-25 11:17:59.000000000 +0300
-+++ gcc-15.1.0/c++tools/server.cc 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/c++tools/server.cc gcc-15.2.0/c++tools/server.cc
+--- gcc-15.2.0.orig/c++tools/server.cc 2025-08-08 09:51:39.865337980 +0300
++++ gcc-15.2.0/c++tools/server.cc 2025-08-08 12:20:24.209613638 +0300
@@ -39,7 +39,7 @@
// Network
/* Include network stuff first. Excitingly OSX10.14 uses bcmp here, which
@@ -72,9 +72,9 @@ diff -ruN gcc-15.1.0.orig/c++tools/serve
/* socket, bind, listen, accept{4} */
# define NETWORKING 1
# include <sys/socket.h>
-diff -ruN gcc-15.1.0.orig/fixincludes/configure.ac gcc-15.1.0/fixincludes/configure.ac
---- gcc-15.1.0.orig/fixincludes/configure.ac 2025-04-25 11:17:59.000000000 +0300
-+++ gcc-15.1.0/fixincludes/configure.ac 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/fixincludes/configure.ac gcc-15.2.0/fixincludes/configure.ac
+--- gcc-15.2.0.orig/fixincludes/configure.ac 2025-08-08 09:51:39.911209735 +0300
++++ gcc-15.2.0/fixincludes/configure.ac 2025-08-08 12:20:24.209613638 +0300
@@ -53,6 +53,7 @@
i?86-*-mingw32* | \
x86_64-*-mingw32* | \
@@ -83,9 +83,9 @@ diff -ruN gcc-15.1.0.orig/fixincludes/co
*-*-*vms*)
TARGET=twoprocess
;;
-diff -ruN gcc-15.1.0.orig/fixincludes/fixlib.h gcc-15.1.0/fixincludes/fixlib.h
---- gcc-15.1.0.orig/fixincludes/fixlib.h 2025-04-25 11:17:59.000000000 +0300
-+++ gcc-15.1.0/fixincludes/fixlib.h 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/fixincludes/fixlib.h gcc-15.2.0/fixincludes/fixlib.h
+--- gcc-15.2.0.orig/fixincludes/fixlib.h 2025-08-08 09:51:39.912338764 +0300
++++ gcc-15.2.0/fixincludes/fixlib.h 2025-08-08 12:20:24.209613638 +0300
@@ -32,6 +32,10 @@
#include "xregex.h"
#include "libiberty.h"
@@ -97,9 +97,9 @@ diff -ruN gcc-15.1.0.orig/fixincludes/fi
#ifndef STDIN_FILENO
# define STDIN_FILENO 0
#endif
-diff -ruN gcc-15.1.0.orig/fixincludes/Makefile.in gcc-15.1.0/fixincludes/Makefile.in
---- gcc-15.1.0.orig/fixincludes/Makefile.in 2025-04-25 11:17:59.000000000 +0300
-+++ gcc-15.1.0/fixincludes/Makefile.in 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/fixincludes/Makefile.in gcc-15.2.0/fixincludes/Makefile.in
+--- gcc-15.2.0.orig/fixincludes/Makefile.in 2025-08-08 09:51:39.911209735 +0300
++++ gcc-15.2.0/fixincludes/Makefile.in 2025-08-08 12:20:24.209613638 +0300
@@ -52,9 +52,9 @@
gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER)
@@ -112,9 +112,9 @@ diff -ruN gcc-15.1.0.orig/fixincludes/Ma
# Where our executable files go
itoolsdir = $(libexecsubdir)/install-tools
# Where our data files go
-diff -ruN gcc-15.1.0.orig/gcc/common/config/rs6000/rs6000-common.cc gcc-15.1.0/gcc/common/config/rs6000/rs6000-common.cc
---- gcc-15.1.0.orig/gcc/common/config/rs6000/rs6000-common.cc 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/common/config/rs6000/rs6000-common.cc 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/gcc/common/config/rs6000/rs6000-common.cc gcc-15.2.0/gcc/common/config/rs6000/rs6000-common.cc
+--- gcc-15.2.0.orig/gcc/common/config/rs6000/rs6000-common.cc 2025-08-08 09:51:40.434347472 +0300
++++ gcc-15.2.0/gcc/common/config/rs6000/rs6000-common.cc 2025-08-08 12:20:24.209613638 +0300
@@ -27,6 +27,11 @@
#include "opts.h"
#include "flags.h"
@@ -142,9 +142,9 @@ diff -ruN gcc-15.1.0.orig/gcc/common/con
return true;
}
-diff -ruN gcc-15.1.0.orig/gcc/common.opt gcc-15.1.0/gcc/common.opt
---- gcc-15.1.0.orig/gcc/common.opt 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/common.opt 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/gcc/common.opt gcc-15.2.0/gcc/common.opt
+--- gcc-15.2.0.orig/gcc/common.opt 2025-08-08 09:51:40.430347405 +0300
++++ gcc-15.2.0/gcc/common.opt 2025-08-08 12:20:24.213613672 +0300
@@ -1269,7 +1269,7 @@
Looks for opportunities to reduce stack adjustments and stack references.
@@ -154,9 +154,9 @@ diff -ruN gcc-15.1.0.orig/gcc/common.opt
Put uninitialized globals in the common section.
fcompare-debug
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/morphos.c gcc-15.1.0/gcc/config/rs6000/morphos.c
---- gcc-15.1.0.orig/gcc/config/rs6000/morphos.c 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/gcc/config/rs6000/morphos.c 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/morphos.c gcc-15.2.0/gcc/config/rs6000/morphos.c
+--- gcc-15.2.0.orig/gcc/config/rs6000/morphos.c 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/gcc/config/rs6000/morphos.c 2025-08-08 12:20:24.213613672 +0300
@@ -0,0 +1,204 @@
+#include "config.h"
+#include "system.h"
@@ -362,9 +362,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
+ if (rs6000_default_long_calls)
+ global_options.x_TARGET_SCHED_PROLOG = 0;
+}
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/morphos.h gcc-15.1.0/gcc/config/rs6000/morphos.h
---- gcc-15.1.0.orig/gcc/config/rs6000/morphos.h 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/gcc/config/rs6000/morphos.h 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/morphos.h gcc-15.2.0/gcc/config/rs6000/morphos.h
+--- gcc-15.2.0.orig/gcc/config/rs6000/morphos.h 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/gcc/config/rs6000/morphos.h 2025-08-08 12:20:24.213613672 +0300
@@ -0,0 +1,322 @@
+#undef MD_EXEC_PREFIX
+#undef MD_STARTFILE_PREFIX
@@ -688,9 +688,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
+/* Use morphos.opt */
+extern const char *morphos_mclib_name;
+#define TARGET_USES_MORPHOS_OPT 1
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/morphos.opt gcc-15.1.0/gcc/config/rs6000/morphos.opt
---- gcc-15.1.0.orig/gcc/config/rs6000/morphos.opt 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/gcc/config/rs6000/morphos.opt 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/morphos.opt gcc-15.2.0/gcc/config/rs6000/morphos.opt
+--- gcc-15.2.0.orig/gcc/config/rs6000/morphos.opt 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/gcc/config/rs6000/morphos.opt 2025-08-08 12:20:24.213613672 +0300
@@ -0,0 +1,28 @@
+;
+
@@ -720,17 +720,17 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
+
+pthread
+Driver
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/morphos.opt.urls gcc-15.1.0/gcc/config/rs6000/morphos.opt.urls
---- gcc-15.1.0.orig/gcc/config/rs6000/morphos.opt.urls 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/gcc/config/rs6000/morphos.opt.urls 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/morphos.opt.urls gcc-15.2.0/gcc/config/rs6000/morphos.opt.urls
+--- gcc-15.2.0.orig/gcc/config/rs6000/morphos.opt.urls 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/gcc/config/rs6000/morphos.opt.urls 2025-08-08 12:20:24.213613672 +0300
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/morphos.opt and generated HTML
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/morphos-protos.h gcc-15.1.0/gcc/config/rs6000/morphos-protos.h
---- gcc-15.1.0.orig/gcc/config/rs6000/morphos-protos.h 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/gcc/config/rs6000/morphos-protos.h 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/morphos-protos.h gcc-15.2.0/gcc/config/rs6000/morphos-protos.h
+--- gcc-15.2.0.orig/gcc/config/rs6000/morphos-protos.h 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/gcc/config/rs6000/morphos-protos.h 2025-08-08 12:20:24.213613672 +0300
@@ -0,0 +1,21 @@
+#ifndef GCC_MORPHOS_PROTOS_H
+#define GCC_MORPHOS_PROTOS_H
@@ -753,9 +753,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
+#endif /* RTX_CODE */
+
+#endif /* GCC_MORPHOS_PROTOS_H */
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/morphos-stdint.h gcc-15.1.0/gcc/config/rs6000/morphos-stdint.h
---- gcc-15.1.0.orig/gcc/config/rs6000/morphos-stdint.h 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/gcc/config/rs6000/morphos-stdint.h 2025-04-25 15:58:40.264619834 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/morphos-stdint.h gcc-15.2.0/gcc/config/rs6000/morphos-stdint.h
+--- gcc-15.2.0.orig/gcc/config/rs6000/morphos-stdint.h 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/gcc/config/rs6000/morphos-stdint.h 2025-08-08 12:20:24.213613672 +0300
@@ -0,0 +1,51 @@
+/* Definitions for <stdint.h> types on systems using AIX.
+ Copyright (C) 2009-2018 Free Software Foundation, Inc.
@@ -808,9 +808,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
+#define INTPTR_TYPE "long int"
+#define UINTPTR_TYPE "long unsigned int"
+
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/rs6000.cc gcc-15.1.0/gcc/config/rs6000/rs6000.cc
---- gcc-15.1.0.orig/gcc/config/rs6000/rs6000.cc 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/config/rs6000/rs6000.cc 2025-06-10 09:18:42.000241751 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/rs6000.cc gcc-15.2.0/gcc/config/rs6000/rs6000.cc
+--- gcc-15.2.0.orig/gcc/config/rs6000/rs6000.cc 2025-08-08 09:51:40.636350841 +0300
++++ gcc-15.2.0/gcc/config/rs6000/rs6000.cc 2025-08-08 12:20:24.213613672 +0300
@@ -1366,7 +1366,11 @@
#define TARGET_HAVE_TLS HAVE_AS_TLS
@@ -978,7 +978,7 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
+ SysBase from address 4. */
+
+static bool
-+rs6000_addr_space_zero_address_valid (addr_space_t)
++rs6000_addr_space_zero_address_valid (addr_space_t ap ATTRIBUTE_UNUSED)
+{
+ return true;
+}
@@ -1039,9 +1039,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
}
static inline bool
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/rs6000-internal.h gcc-15.1.0/gcc/config/rs6000/rs6000-internal.h
---- gcc-15.1.0.orig/gcc/config/rs6000/rs6000-internal.h 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/config/rs6000/rs6000-internal.h 2025-04-25 15:58:40.268619866 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/rs6000-internal.h gcc-15.2.0/gcc/config/rs6000/rs6000-internal.h
+--- gcc-15.2.0.orig/gcc/config/rs6000/rs6000-internal.h 2025-08-08 09:51:40.631350758 +0300
++++ gcc-15.2.0/gcc/config/rs6000/rs6000-internal.h 2025-08-08 12:20:24.213613672 +0300
@@ -62,6 +62,11 @@
int altivec_padding_size; /* size of altivec alignment padding */
HOST_WIDE_INT total_size; /* total bytes allocated for stack */
@@ -1054,9 +1054,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
} rs6000_stack_t;
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/rs6000-logue.cc gcc-15.1.0/gcc/config/rs6000/rs6000-logue.cc
---- gcc-15.1.0.orig/gcc/config/rs6000/rs6000-logue.cc 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/config/rs6000/rs6000-logue.cc 2025-04-25 15:58:40.268619866 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/rs6000-logue.cc gcc-15.2.0/gcc/config/rs6000/rs6000-logue.cc
+--- gcc-15.2.0.orig/gcc/config/rs6000/rs6000-logue.cc 2025-08-08 09:51:40.631350758 +0300
++++ gcc-15.2.0/gcc/config/rs6000/rs6000-logue.cc 2025-08-08 12:20:24.213613672 +0300
@@ -722,6 +722,18 @@
&& info->calls_p)
info->rop_hash_size = 8;
@@ -1244,9 +1244,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
/* Restore GPRs. This is done as a PARALLEL if we are using
the load-multiple instructions. */
if (!restoring_GPRs_inline)
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/rs6000.md gcc-15.1.0/gcc/config/rs6000/rs6000.md
---- gcc-15.1.0.orig/gcc/config/rs6000/rs6000.md 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/config/rs6000/rs6000.md 2025-04-25 15:58:40.268619866 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/rs6000.md gcc-15.2.0/gcc/config/rs6000/rs6000.md
+--- gcc-15.2.0.orig/gcc/config/rs6000/rs6000.md 2025-08-08 09:51:40.638350875 +0300
++++ gcc-15.2.0/gcc/config/rs6000/rs6000.md 2025-08-08 12:20:24.217613702 +0300
@@ -11341,6 +11341,25 @@
[(set (match_dup 0) (high:P (match_dup 1)))
(set (match_dup 0) (lo_sum:P (match_dup 0) (match_dup 1)))])
@@ -1273,9 +1273,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
;; Elf specific ways of loading addresses for non-PIC code.
;; The output of this could be r0, but we make a very strong
;; preference for a base register because it will usually
-diff -ruN gcc-15.1.0.orig/gcc/config/rs6000/t-morphos gcc-15.1.0/gcc/config/rs6000/t-morphos
---- gcc-15.1.0.orig/gcc/config/rs6000/t-morphos 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/gcc/config/rs6000/t-morphos 2025-04-25 15:58:40.268619866 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config/rs6000/t-morphos gcc-15.2.0/gcc/config/rs6000/t-morphos
+--- gcc-15.2.0.orig/gcc/config/rs6000/t-morphos 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/gcc/config/rs6000/t-morphos 2025-08-08 12:20:24.217613702 +0300
@@ -0,0 +1,34 @@
+MULTILIB_OPTIONS = mbaserel32 mclib=libnix
+MULTILIB_DIRNAMES = libb32 libnix
@@ -1311,9 +1311,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config/rs6
+ chmod a+r include/syslimits.h
+ $(STAMP) stmp-sdefixinc
+
-diff -ruN gcc-15.1.0.orig/gcc/config.gcc gcc-15.1.0/gcc/config.gcc
---- gcc-15.1.0.orig/gcc/config.gcc 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/config.gcc 2025-04-25 15:58:40.268619866 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config.gcc gcc-15.2.0/gcc/config.gcc
+--- gcc-15.2.0.orig/gcc/config.gcc 2025-08-08 09:51:40.435347488 +0300
++++ gcc-15.2.0/gcc/config.gcc 2025-08-08 12:20:24.217613702 +0300
@@ -3060,6 +3060,15 @@
extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
@@ -1330,9 +1330,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config.gcc
powerpc*-*-linux*)
tm_file="${tm_file} elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
extra_options="${extra_options} rs6000/sysv4.opt"
-diff -ruN gcc-15.1.0.orig/gcc/config.host gcc-15.1.0/gcc/config.host
---- gcc-15.1.0.orig/gcc/config.host 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/config.host 2025-04-25 15:58:40.272619898 +0300
+diff -ruN gcc-15.2.0.orig/gcc/config.host gcc-15.2.0/gcc/config.host
+--- gcc-15.2.0.orig/gcc/config.host 2025-08-08 09:51:40.435347488 +0300
++++ gcc-15.2.0/gcc/config.host 2025-08-08 12:20:24.217613702 +0300
@@ -260,6 +260,10 @@
out_host_hook_obj="${out_host_hook_obj} host-ppc64-darwin.o"
host_xmake_file="${host_xmake_file} rs6000/x-darwin64"
@@ -1344,9 +1344,9 @@ diff -ruN gcc-15.1.0.orig/gcc/config.hos
rs6000-ibm-aix* | powerpc-ibm-aix*)
host_xmake_file="${host_xmake_file} rs6000/x-aix"
;;
-diff -ruN gcc-15.1.0.orig/gcc/configure gcc-15.1.0/gcc/configure
---- gcc-15.1.0.orig/gcc/configure 2025-04-25 11:21:27.000000000 +0300
-+++ gcc-15.1.0/gcc/configure 2025-04-25 15:58:40.272619898 +0300
+diff -ruN gcc-15.2.0.orig/gcc/configure gcc-15.2.0/gcc/configure
+--- gcc-15.2.0.orig/gcc/configure 2025-08-08 09:52:54.960590695 +0300
++++ gcc-15.2.0/gcc/configure 2025-08-08 12:20:24.217613702 +0300
@@ -10801,7 +10801,7 @@
# read() to the same fd. The only system known to have a problem here
# is VMS, where text files have record structure.
@@ -1430,9 +1430,9 @@ diff -ruN gcc-15.1.0.orig/gcc/configure
gcc_cv_ld="$DEFAULT_LINKER"
elif test $install_gold_as_default = yes \
&& test -f $gcc_cv_ld_gold_srcdir/configure.ac \
-diff -ruN gcc-15.1.0.orig/gcc/configure.ac gcc-15.1.0/gcc/configure.ac
---- gcc-15.1.0.orig/gcc/configure.ac 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/configure.ac 2025-04-25 15:58:40.272619898 +0300
+diff -ruN gcc-15.2.0.orig/gcc/configure.ac gcc-15.2.0/gcc/configure.ac
+--- gcc-15.2.0.orig/gcc/configure.ac 2025-08-08 09:51:40.675351492 +0300
++++ gcc-15.2.0/gcc/configure.ac 2025-08-08 12:20:24.221613732 +0300
@@ -1619,6 +1619,10 @@
# just force it.
ac_cv_func_vfork_works=yes
@@ -1453,9 +1453,9 @@ diff -ruN gcc-15.1.0.orig/gcc/configure.
target_thread_file=${enable_threads}
;;
*)
-diff -ruN gcc-15.1.0.orig/gcc/coretypes.h gcc-15.1.0/gcc/coretypes.h
---- gcc-15.1.0.orig/gcc/coretypes.h 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/coretypes.h 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/gcc/coretypes.h gcc-15.2.0/gcc/coretypes.h
+--- gcc-15.2.0.orig/gcc/coretypes.h 2025-08-08 09:51:40.675351492 +0300
++++ gcc-15.2.0/gcc/coretypes.h 2025-08-08 12:20:24.221613732 +0300
@@ -375,11 +375,13 @@
in target.h. */
typedef int reg_class_t;
@@ -1470,9 +1470,9 @@ diff -ruN gcc-15.1.0.orig/gcc/coretypes.
typedef std::pair <tree, tree> tree_pair;
typedef std::pair <const char *, int> string_int_pair;
-diff -ruN gcc-15.1.0.orig/gcc/cppdefault.cc gcc-15.1.0/gcc/cppdefault.cc
---- gcc-15.1.0.orig/gcc/cppdefault.cc 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/cppdefault.cc 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/gcc/cppdefault.cc gcc-15.2.0/gcc/cppdefault.cc
+--- gcc-15.2.0.orig/gcc/cppdefault.cc 2025-08-08 09:51:40.725352326 +0300
++++ gcc-15.2.0/gcc/cppdefault.cc 2025-08-08 12:20:24.221613732 +0300
@@ -40,6 +40,10 @@
= INCLUDE_DEFAULTS;
#else
@@ -1484,9 +1484,9 @@ diff -ruN gcc-15.1.0.orig/gcc/cppdefault
#ifdef GPLUSPLUS_INCLUDE_DIR
/* Pick up GNU C++ generic include files. */
{ GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
-diff -ruN gcc-15.1.0.orig/gcc/gcov-io.h gcc-15.1.0/gcc/gcov-io.h
---- gcc-15.1.0.orig/gcc/gcov-io.h 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/gcov-io.h 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/gcc/gcov-io.h gcc-15.2.0/gcc/gcov-io.h
+--- gcc-15.2.0.orig/gcc/gcov-io.h 2025-08-08 09:51:40.855354495 +0300
++++ gcc-15.2.0/gcc/gcov-io.h 2025-08-08 12:20:24.221613732 +0300
@@ -201,7 +201,7 @@
#endif
#endif
@@ -1496,9 +1496,9 @@ diff -ruN gcc-15.1.0.orig/gcc/gcov-io.h
#define GCOV_LOCKED 1
#else
#define GCOV_LOCKED 0
-diff -ruN gcc-15.1.0.orig/gcc/ginclude/stddef.h gcc-15.1.0/gcc/ginclude/stddef.h
---- gcc-15.1.0.orig/gcc/ginclude/stddef.h 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/ginclude/stddef.h 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/gcc/ginclude/stddef.h gcc-15.2.0/gcc/ginclude/stddef.h
+--- gcc-15.2.0.orig/gcc/ginclude/stddef.h 2025-08-08 09:51:40.880049726 +0300
++++ gcc-15.2.0/gcc/ginclude/stddef.h 2025-08-08 12:20:24.221613732 +0300
@@ -46,15 +46,21 @@
/* This avoids lossage on SunOS but only if stdtypes.h comes first.
There's no way to win with the other order! Sun lossage. */
@@ -1573,9 +1573,9 @@ diff -ruN gcc-15.1.0.orig/gcc/ginclude/s
#endif /* __sys_stdtypes_h */
-diff -ruN gcc-15.1.0.orig/gcc/Makefile.in gcc-15.1.0/gcc/Makefile.in
---- gcc-15.1.0.orig/gcc/Makefile.in 2025-04-25 11:18:00.000000000 +0300
-+++ gcc-15.1.0/gcc/Makefile.in 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/gcc/Makefile.in gcc-15.2.0/gcc/Makefile.in
+--- gcc-15.2.0.orig/gcc/Makefile.in 2025-08-08 09:51:40.073341450 +0300
++++ gcc-15.2.0/gcc/Makefile.in 2025-08-08 12:20:24.221613732 +0300
@@ -679,9 +679,9 @@
# --------
@@ -1635,9 +1635,9 @@ diff -ruN gcc-15.1.0.orig/gcc/Makefile.i
@echo "set TESTING_IN_BUILD_TREE 1" >> ./site.tmp
@echo "set HAVE_LIBSTDCXX_V3 1" >> ./site.tmp
@if test "@enable_plugin@" = "yes" ; then \
-diff -ruN gcc-15.1.0.orig/libada/Makefile.in gcc-15.1.0/libada/Makefile.in
---- gcc-15.1.0.orig/libada/Makefile.in 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libada/Makefile.in 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/libada/Makefile.in gcc-15.2.0/libada/Makefile.in
+--- gcc-15.2.0.orig/libada/Makefile.in 2025-08-08 09:51:44.755386898 +0300
++++ gcc-15.2.0/libada/Makefile.in 2025-08-08 12:20:24.221613732 +0300
@@ -70,7 +70,7 @@
target_noncanonical:=@target_noncanonical@
@@ -1647,9 +1647,9 @@ diff -ruN gcc-15.1.0.orig/libada/Makefil
ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
# exeext should not be used because it's the *host* exeext. We're building
-diff -ruN gcc-15.1.0.orig/libatomic/config/morphos/host-config.h gcc-15.1.0/libatomic/config/morphos/host-config.h
---- gcc-15.1.0.orig/libatomic/config/morphos/host-config.h 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/libatomic/config/morphos/host-config.h 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/libatomic/config/morphos/host-config.h gcc-15.2.0/libatomic/config/morphos/host-config.h
+--- gcc-15.2.0.orig/libatomic/config/morphos/host-config.h 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/libatomic/config/morphos/host-config.h 2025-08-08 12:20:24.221613732 +0300
@@ -0,0 +1,55 @@
+/* Copyright (C) 2014-2019 Free Software Foundation, Inc.
+ Contributed by Kai Tietz <ktietz%redhat.com@localhost>.
@@ -1706,9 +1706,9 @@ diff -ruN gcc-15.1.0.orig/libatomic/conf
+#endif /* protect_start_end */
+
+#include_next <host-config.h>
-diff -ruN gcc-15.1.0.orig/libatomic/config/morphos/lock.c gcc-15.1.0/libatomic/config/morphos/lock.c
---- gcc-15.1.0.orig/libatomic/config/morphos/lock.c 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/libatomic/config/morphos/lock.c 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/libatomic/config/morphos/lock.c gcc-15.2.0/libatomic/config/morphos/lock.c
+--- gcc-15.2.0.orig/libatomic/config/morphos/lock.c 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/libatomic/config/morphos/lock.c 2025-08-08 12:20:24.221613732 +0300
@@ -0,0 +1,178 @@
+/* Copyright (C) 2014-2019 Free Software Foundation, Inc.
+ Contributed by Kai Tietz <ktietz%redhat.com@localhost>.
@@ -1888,9 +1888,9 @@ diff -ruN gcc-15.1.0.orig/libatomic/conf
+ sigsetmask(omask);
+ #endif
+}
-diff -ruN gcc-15.1.0.orig/libatomic/configure gcc-15.1.0/libatomic/configure
---- gcc-15.1.0.orig/libatomic/configure 2025-04-25 11:21:27.000000000 +0300
-+++ gcc-15.1.0/libatomic/configure 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/libatomic/configure gcc-15.2.0/libatomic/configure
+--- gcc-15.2.0.orig/libatomic/configure 2025-08-08 09:52:55.053592246 +0300
++++ gcc-15.2.0/libatomic/configure 2025-08-08 12:20:24.221613732 +0300
@@ -5643,7 +5643,7 @@
lt_cv_sys_max_cmd_len=8192;
;;
@@ -1900,9 +1900,9 @@ diff -ruN gcc-15.1.0.orig/libatomic/conf
# On AmigaOS with pdksh, this test takes hours, literally.
# So we just punt and use a minimum line length of 8192.
lt_cv_sys_max_cmd_len=8192;
-diff -ruN gcc-15.1.0.orig/libatomic/configure.tgt gcc-15.1.0/libatomic/configure.tgt
---- gcc-15.1.0.orig/libatomic/configure.tgt 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libatomic/configure.tgt 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/libatomic/configure.tgt gcc-15.2.0/libatomic/configure.tgt
+--- gcc-15.2.0.orig/libatomic/configure.tgt 2025-08-08 09:51:44.759419621 +0300
++++ gcc-15.2.0/libatomic/configure.tgt 2025-08-08 12:20:24.221613732 +0300
@@ -168,6 +168,11 @@
esac
;;
@@ -1915,9 +1915,9 @@ diff -ruN gcc-15.1.0.orig/libatomic/conf
*-*-rtems*)
XCFLAGS="${configure_tgt_pre_target_cpu_XCFLAGS}"
config_path="rtems"
-diff -ruN gcc-15.1.0.orig/libcpp/files.cc gcc-15.1.0/libcpp/files.cc
---- gcc-15.1.0.orig/libcpp/files.cc 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libcpp/files.cc 2025-04-25 15:58:40.276619928 +0300
+diff -ruN gcc-15.2.0.orig/libcpp/files.cc gcc-15.2.0/libcpp/files.cc
+--- gcc-15.2.0.orig/libcpp/files.cc 2025-08-08 09:51:44.784420038 +0300
++++ gcc-15.2.0/libcpp/files.cc 2025-08-08 12:20:24.221613732 +0300
@@ -39,6 +39,10 @@
# define STAT_SIZE_RELIABLE(ST) true
#endif
@@ -1938,9 +1938,9 @@ diff -ruN gcc-15.1.0.orig/libcpp/files.c
if (file->fd != -1)
{
-diff -ruN gcc-15.1.0.orig/libffi/configure gcc-15.1.0/libffi/configure
---- gcc-15.1.0.orig/libffi/configure 2025-04-25 11:21:27.000000000 +0300
-+++ gcc-15.1.0/libffi/configure 2025-04-25 15:58:40.280619963 +0300
+diff -ruN gcc-15.2.0.orig/libffi/configure gcc-15.2.0/libffi/configure
+--- gcc-15.2.0.orig/libffi/configure 2025-08-08 09:52:54.996591296 +0300
++++ gcc-15.2.0/libffi/configure 2025-08-08 12:20:24.225613762 +0300
@@ -5875,7 +5875,7 @@
lt_cv_sys_max_cmd_len=8192;
;;
@@ -1950,9 +1950,9 @@ diff -ruN gcc-15.1.0.orig/libffi/configu
# On AmigaOS with pdksh, this test takes hours, literally.
# So we just punt and use a minimum line length of 8192.
lt_cv_sys_max_cmd_len=8192;
-diff -ruN gcc-15.1.0.orig/libffi/include/Makefile.in gcc-15.1.0/libffi/include/Makefile.in
---- gcc-15.1.0.orig/libffi/include/Makefile.in 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libffi/include/Makefile.in 2025-04-25 15:58:40.280619963 +0300
+diff -ruN gcc-15.2.0.orig/libffi/include/Makefile.in gcc-15.2.0/libffi/include/Makefile.in
+--- gcc-15.2.0.orig/libffi/include/Makefile.in 2025-08-08 09:51:44.815144968 +0300
++++ gcc-15.2.0/libffi/include/Makefile.in 2025-08-08 12:20:24.225613762 +0300
@@ -327,7 +327,7 @@
# Where generated headers like ffitarget.h get installed.
@@ -1962,15 +1962,15 @@ diff -ruN gcc-15.1.0.orig/libffi/include
toollibffi_HEADERS = ffi.h ffitarget.h
all: all-am
-diff -ruN gcc-15.1.0.orig/libgcc/config/rs6000/gthr-morphos.c gcc-15.1.0/libgcc/config/rs6000/gthr-morphos.c
---- gcc-15.1.0.orig/libgcc/config/rs6000/gthr-morphos.c 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/libgcc/config/rs6000/gthr-morphos.c 2025-04-25 15:58:40.280619963 +0300
-@@ -0,0 +1,2321 @@
+diff -ruN gcc-15.2.0.orig/libgcc/config/rs6000/gthr-morphos.c gcc-15.2.0/libgcc/config/rs6000/gthr-morphos.c
+--- gcc-15.2.0.orig/libgcc/config/rs6000/gthr-morphos.c 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/libgcc/config/rs6000/gthr-morphos.c 2025-08-08 12:20:24.225613762 +0300
+@@ -0,0 +1,1392 @@
+/* Threads compatibility routines for libgcc2. */
+/* Compile this one with gcc. */
+/* Copyright (C) 1997, 1999, 2000, 2004, 2008, 2009
+ Free Software Foundation, Inc.
-+ Copyright (C) 2016-2020 Harry Sintonen
++ Copyright (C) 2016-2026 Harry Sintonen
+
+This file is part of GCC.
+
@@ -1996,17 +1996,6 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+#include "gthr-morphos.h"
+#include <string.h>
+
-+#ifndef GCC_SYSTEM_H
-+#if defined(__GNUC__) && GCC_VERSION > 4000
-+/* GCC 4.0.x has a bug where it may ICE on this expression,
-+ so does GCC 3.4.x (PR17436). */
-+#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q; TOTYPE _nq;})(X))._nq)
-+#else
-+#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((TOTYPE)(FROMTYPE)(X))
-+#endif
-+#define CONST_CAST(TYPE,X) CONST_CAST2(TYPE, const TYPE, (X))
-+#endif
-+
+#ifndef __ATTR_WEAK_ALIAS
+#define __ATTR_WEAK_ALIAS(_f_) __attribute__ ((weak, alias (#_f_)))
+#endif
@@ -2058,487 +2047,6 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+#include <stdio.h>
+#include <ix.h>
+
-+/*
-+ * ixemul internal structures as they were during ixemul <= 50.17.
-+ * This stuff is needed to ensure that the fallback code will continue
-+ * to build with the same offsets regardless of the potential future
-+ * changes to the ixemul internal structures. This stuff is not used
-+ * if the new ixemul.library 50.18+ is available. - Piru
-+ */
-+#define DTYPE_SOCKET50 5
-+
-+struct ixnode50 {
-+ struct ixnode *next, *prev;
-+};
-+
-+struct ixlist50 {
-+ struct ixnode *head, *tail;
-+};
-+
-+struct utimenode50 {
-+ struct ixnode50 node;
-+ unsigned time;
-+};
-+
-+struct glue50 {
-+ struct glue50 *next;
-+ int niobs;
-+ void *iobs;
-+};
-+
-+struct malloc_data50 {
-+ struct ixlist50 md_list;
-+ unsigned int md_malloc_sbrk_used;
-+};
-+
-+struct stackframe;
-+struct session50 {
-+ int s_count;
-+};
-+
-+#ifdef __PPC__
-+#define _JBLEN50 (7+19+2*18+14+3*6)
-+#else
-+#define _JBLEN50 17
-+#endif
-+typedef int jmp_buf50[_JBLEN50];
-+
-+typedef long time50_t;
-+
-+struct timeval50 {
-+ long tv_sec;
-+ long tv_usec;
-+};
-+
-+struct itimerval50 {
-+ struct timeval50 it_interval;
-+ struct timeval50 it_value;
-+};
-+
-+struct rusage50 {
-+ struct timeval50 ru_utime;
-+ struct timeval50 ru_stime;
-+ long ru_maxrss;
-+ long ru_ixrss;
-+ long ru_idrss;
-+ long ru_isrss;
-+ long ru_minflt;
-+ long ru_majflt;
-+ long ru_nswap;
-+ long ru_inblock;
-+ long ru_oublock;
-+ long ru_msgsnd;
-+ long ru_msgrcv;
-+ long ru_nsignals;
-+ long ru_nvcsw;
-+ long ru_nivcsw;
-+};
-+
-+struct rlimit50 {
-+ long rlim_cur;
-+ long rlim_max;
-+};
-+
-+struct mem_file50 {
-+ int mf_offset;
-+ void *mf_buffer;
-+};
-+
-+struct file50 {
-+ char *f_name;
-+ int f_stb_dirty,
-+ f_type,
-+ f_flags,
-+ f_count,
-+ (*f_write)(),
-+ (*f_read)(),
-+ (*f_ioctl)(),
-+ (*f_select)(),
-+ (*f_close)();
-+ union {
-+ struct {
-+ int so;
-+ int domain;
-+ int type;
-+ int protocol;
-+ long id;
-+ } inetsock;
-+ } f__fh;
-+};
-+
-+#define f_socket_domain f__fh.inetsock.domain
-+#define f_socket_type f__fh.inetsock.type
-+#define f_socket_protocol f__fh.inetsock.protocol
-+#define f_socket_id f__fh.inetsock.id
-+
-+typedef char *caddr50_t;
-+
-+struct sigstack50 {
-+ char *ss_sp;
-+ int ss_onstack;
-+};
-+
-+typedef void (*sig50_t)(int);
-+typedef unsigned int sigset50_t;
-+
-+struct passwd50 {
-+ char *pw_name;
-+ char *pw_passwd;
-+ int pw_uid;
-+ int pw_gid;
-+ time50_t pw_change;
-+ char *pw_class;
-+ char *pw_gecos;
-+ char *pw_dir;
-+ char *pw_shell;
-+ time50_t pw_expire;
-+};
-+
-+struct group50 {
-+ char *gr_name;
-+ char *gr_passwd;
-+ int gr_gid;
-+ char **gr_mem;
-+};
-+
-+struct servent50 {
-+ char *s_name;
-+ char **s_aliases;
-+ int s_port;
-+ char *s_proto;
-+};
-+
-+struct protoent50 {
-+ char *p_name;
-+ char **p_aliases;
-+ int p_proto;
-+};
-+
-+struct netent50 {
-+ char *n_name;
-+ char **n_aliases;
-+ int n_addrtype;
-+ unsigned long n_net;
-+};
-+
-+typedef int32_t pid50_t;
-+
-+typedef unsigned short uid50_t;
-+typedef unsigned short gid50_t;
-+
-+#define NOFILE50 512
-+
-+struct user50 {
-+ /* both a magic cookie and a way to get at the library base thru u */
-+ void *u_ixbase;
-+ void *u_user; /* freely usable user field */
-+
-+ long u_a4_pointers_size; /* number of a4 pointers */
-+
-+/* 1.3 - signal management */
-+ sig50_t u_signal[33]; /* disposition of signals */
-+ int u_sigmask[33]; /* signals to be blocked */
-+ sigset50_t u_sigonstack; /* signals to take on sigstack */
-+ sigset50_t u_sigintr; /* signals that interrupt syscalls */
-+ sigset50_t u_oldmask; /* saved mask from before sigpause */
-+ struct sigstack50 u_sigstack; /* sp & on stack state variable */
-+ int u_sig; /* for core dump/debugger XXX */
-+ int u_code; /* for core dump/debugger XXX */
-+
-+ int p_flag; /* process flags, as necessary.. */
-+ int p_xstat; /* exit status */
-+ char p_stat;
-+ char p_cursig;
-+ short pad;
-+ sigset50_t p_sig; /* signals pending to this process */
-+ sigset50_t p_sigmask; /* current signal mask */
-+ sigset50_t p_sigignore; /* signals being ignored */
-+ sigset50_t p_sigcatch; /* signals being caught by user */
-+
-+ caddr50_t p_wchan; /* event process is awaiting */
-+
-+
-+/* 1.4 - descriptor management (for shared library version) */
-+ struct file50 *u_ofile[NOFILE50]; /* file structures for open files */
-+ char u_pofile[NOFILE50]; /* per-process flags of open files */
-+ int u_lastfile; /* high-water mark of u_ofile */
-+ short u_cmask; /* mask for file creation */
-+
-+/* 1.5 - timing and statistics */
-+ struct rusage50 u_ru; /* stats for this proc */
-+ struct rusage50 u_cru; /* sum of stats for reaped children */
-+ struct itimerval50 u_timer[3];
-+ struct timeval50 u_start;
-+ struct utimenode50 u_time;
-+ short u_acflag;
-+
-+ struct uprof50 { /* profile arguments */
-+ short *pr_base; /* buffer base */
-+ unsigned pr_size; /* buffer size */
-+ unsigned pr_off; /* pc offset */
-+ unsigned pr_scale; /* pc scaling */
-+ } u_prof;
-+ unsigned u_prof_last_pc; /* last function that called mcount() */
-+
-+/* 1.6 - resource controls */
-+ struct rlimit50 u_rlimit[9];
-+
-+/* amiga specific stuff */
-+ struct malloc_data50 u_md;
-+
-+ struct ixnode50 u_user_node;
-+ struct Task *u_task;
-+ struct MsgPort *u_sync_mp; /* PA_SIGNAL message port */
-+ struct timerequest *u_time_req;
-+ int *u_errno;
-+ BPTR u_startup_cd;
-+
-+ int u_ringring; /* used in sleep.c and usleep.c */
-+
-+ char ***u_environ;
-+
-+ /* used to handle AmigaOS signals. see SIGMSG */
-+ u_int u_lastrcvsig;
-+ char u_sleep_sig;
-+ char u_pipe_sig;
-+
-+ /* c-startup stuff */
-+ jmp_buf50 u_jmp_buf;
-+ char *u_argline;
-+ u_int u_arglinelen;
-+ int u_expand_cmd_line;
-+
-+ void *u_atexit;
-+
-+ char u_getenv_buf[255];
-+
-+ UBYTE u_is_ppc; /* is this task a native ppc one ? */
-+ void (*u_oexcept_code)();
-+ APTR u_otrap_code;
-+ APTR u_ouser;
-+ struct Interrupt u_itimerint; /* 1 interrupt / task */
-+
-+ int p_pgrp; /* process group */
-+ struct session50 *u_session; /* session pointer */
-+
-+ char *u_strtok_last; /* moved with 37.8 */
-+
-+ /* vfork() support */
-+ struct ixlist50 p_zombies; /* list of death messages */
-+ int p_zombie_sig; /* signal to set when a child died */
-+ struct Process *p_pptr; /* parent */
-+ struct Process *p_opptr; /* old parent (used in ptrace) */
-+ struct Process *p_cptr; /* last recently created child */
-+ struct Process *p_osptr; /* older sybling */
-+ struct Process *p_ysptr; /* younger sybling */
-+ void *p_vfork_msg;
-+
-+ void *u_segs; /* execve stores the SegList here */
-+ u_long u_start_pc; /* start and end addresses */
-+ u_long u_end_pc; /* of the code hunk */
-+ u_long u_oexcept_sigs;
-+
-+ /* stdio support comes here */
-+ char u_tmpnam_bu[1024]; /* quite large.. */
-+ u_long u_tmpcount;
-+ struct glue50 u_sglue;
-+ /* the 3 `standard' FILE pointers (!) are here */
-+ void *u_sF[3];
-+
-+ /* vfork() support #2 */
-+ void *u_save_sp; /* when vfork'd, this is the `real' sp */
-+ jmp_buf50 u_vfork_frame; /* for the parent in vfork () */
-+#ifdef __PPC__
-+ u_int u_mini_stack[4000]; /* 16K stack while in vfork () */
-+ u_char u_mini_stack_pad[15]; /* align pad area */
-+#else
-+ u_int u_mini_stack[1000]; /* 4K stack while in vfork () */
-+#endif
-+ /* stack watcher. When usp < u_red_zone && ix.ix_watch_stack -> SIGSEGV */
-+ void *u_red_zone;
-+
-+ /* base relative support. This even works for pure programs ! */
-+ u_int u_a4;
-+
-+ /* currently there's just 1, meaning don't trace me */
-+ u_int u_trace_flags;
-+
-+ /* this is for getmntinfo() */
-+ void *u_mntbuf;
-+ int u_mntsize;
-+ long u_bufsize;
-+
-+ /* this is for getmntinfo64() */
-+ void *u_mntbuf64;
-+ int u_mntsize64;
-+ long u_bufsize64;
-+
-+ /* this is for SIGWINCH support. */
-+ struct IOStdReq *u_idev_req;
-+ struct Window *u_window; /* the watched window */
-+ struct Interrupt u_idev_int;
-+
-+ /* for `ps' (or dump as it's called for now.. ) */
-+ char *p_wmesg;
-+
-+ /* new support for `real' process groups, control ttys etc.. */
-+ struct user *p_pgrpnxt;
-+ void *p_pgrpptr;
-+ struct Process *p_exec_proc; /* to get back to struct Process */
-+
-+ /* to be able to switch memory lists on the fly, as required when vfork'd
-+ processes are supposed to allocate memory from their parents pool until
-+ they detach. */
-+ struct malloc_data50 *u_mdp;
-+
-+ /* data needed for network support */
-+ struct Library *u_ixnetbase;
-+ void *u_ixnet;
-+ int *u_h_errno;
-+
-+ /* ptrace() and kern_sig.c:stopped_process_handler() interface. */
-+ void *u_regs;
-+ void *u_fpregs;
-+ int u_mask_state;
-+
-+ /* strftime() globals */
-+ size_t u_gsize;
-+ char *u_pt;
-+
-+ /* putenv() global */
-+ int u_env_alloced;
-+
-+ /* rand() global */
-+ u_long u_rand_next;
-+
-+ /* stuff for stackextend */
-+#ifdef __MORPHOS__
-+ void *u_68k_tc_splower; /* original entries of task structure */
-+ void *u_68k_tc_spupper; /* to restore them at exit */
-+ void *u_68k_org_lower; /* original stackborders */
-+ void *u_68k_org_upper;
-+ void **u_68k_stk_limit; /* pointer to limit variable */
-+ unsigned long u_68k_stk_argbt; /* Maximum size of arguments */
-+ void *u_68k_stk_used; /* used stackframes */
-+ void *u_68k_stk_spare; /* spare stackframes */
-+ unsigned long u_68k_stk_current; /* current stack size */
-+ unsigned long u_68k_stk_max; /* maximum stack size so far */
-+
-+ void *u_ppc_tc_splower; /* original entries of task structure */
-+ void *u_ppc_tc_spupper; /* to restore them at exit */
-+ void *u_ppc_org_lower; /* original stackborders */
-+ void *u_ppc_org_upper;
-+ void **u_ppc_stk_limit; /* pointer to limit variable */
-+ unsigned long u_ppc_stk_argbt; /* Maximum size of arguments */
-+ void *u_ppc_stk_used; /* used stackframes */
-+ void *u_ppc_stk_spare; /* spare stackframes */
-+ unsigned long u_ppc_stk_current; /* current stack size */
-+ unsigned long u_ppc_stk_max; /* maximum stack size so far */
-+#else
-+ void *u_tc_splower; /* original entries of task structure */
-+ void *u_tc_spupper; /* to restore them at exit */
-+ void *u_org_lower; /* original stackborders */
-+ void *u_org_upper;
-+ void **u_stk_limit; /* pointer to limit variable */
-+ unsigned long u_stk_argbt; /* Maximum size of arguments */
-+ void *u_stk_used; /* used stackframes */
-+ void *u_stk_spare; /* spare stackframes */
-+ unsigned long u_stk_current; /* current stack size */
-+ unsigned long u_stk_max; /* maximum stack size so far */
-+#endif
-+ char u_root_directory[1024]; /* for chroot() */
-+ short u_is_root; /* current directory is root */
-+
-+ /* stuff for muFS support */
-+ void *u_UserInfo; /* private muUserInfo to use */
-+ void *u_GroupInfo; /* private muGroupInfo to use */
-+ void *u_fileUserInfo; /* private muUserInfo for database ops */
-+ void *u_fileGroupInfo; /* private muGroupInfo for database ops */
-+ BOOL u_groupfileopen; /* dummy for emulation */
-+ BOOL u_passwdfileopen; /* dummy for emulation */
-+ struct passwd50 u_passwd; /* static buffer to hold the data */
-+ struct group50 u_group; /* ditto */
-+
-+ void *u_grp_fp; /* File pointer to the groups file */
-+ int u_grp_stayopen; /* TRUE if group file should stay open */
-+ char **u_members; /* array of group members */
-+ char *u_grp_line; /* buffer for reading a line from the group file */
-+
-+ /* Support for ixnet functions */
-+ void *u_serv_fp; /* File pointer to services file */
-+ char *u_serv_line; /* buffer for reading a line from the services file */
-+ struct servent50 u_serv;
-+ char **u_serv_aliases;
-+ int u_serv_stayopen;
-+
-+ void *u_proto_fp; /* File pointer to protocol file */
-+ char *u_proto_line;
-+ struct protoent50 u_proto;
-+ char **u_proto_aliases;
-+ int u_proto_stayopen;
-+
-+ void *u_net_fp; /* File pointer to network file */
-+ char *u_net_line;
-+ struct netent50 u_net;
-+ char **u_net_aliases;
-+ int u_net_stayopen;
-+
-+ int u_logname_valid;
-+ char u_logname[12 + 1];
-+ char u_logname_buf[12 + 1];
-+
-+ char u_ntoa_buf[18]; /* used by inet_ntoa */
-+
-+ /* resolv state structure */
-+ void *u_res;
-+ int *u_res_socket;
-+
-+ /* logfile handling */
-+ int u_LogFile; /* fd for log */
-+ int u_LogStat; /* status bits, set by openlog() */
-+ char *u_LogTag; /* string to tag the entry with */
-+ int u_LogFacility; /* default facility code */
-+ int u_LogMask; /* mask of priorities to be logged */
-+
-+ int u_setuid; /* used for setuid() - have to remember
-+ * to log out */
-+ /* mmap handling */
-+ void *u_mmap;
-+
-+ struct MsgPort *u_select_mp; /* PA_SIGNAL message port */
-+
-+ /* strtod support */
-+ void *u_freelist[16];
-+ void *u_p5s;
-+ void *u_result;
-+ int u_result_k;
-+
-+ /* popen support */
-+ pid50_t *u_popen_pids;
-+
-+ /* uid / gid support */
-+
-+ void *u_pwd_fp; /* File pointer to the passwd file */
-+ int u_pwd_stayopen; /* TRUE if passwd file should stay open */
-+ char *u_pwd_line; /* buffer for reading a line from the passwd file */
-+
-+ char u_getpass_buf[128 + 1];
-+
-+ char u_crypt_buf[21];
-+
-+ uid50_t u_nextuid;
-+ uid50_t u_nextgid;
-+
-+ uid50_t u_ruid;
-+ uid50_t u_euid;
-+ gid50_t u_rgid;
-+ gid50_t u_egid;
-+ int u_ngroups;
-+ int u_grouplist[1];
-+};
-+#define STRC50 0x010
-+#define SFREEA450 0x100
-+
+#define SIG_DEF int __omask;
+#define SIG_LOCK() __omask = sigsetmask(~0)
+#define SIG_UNLOCK() sigsetmask(__omask)
@@ -2559,27 +2067,8 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+ * Internal
+ */
+
-+typedef struct {
-+ struct MinNode key_node;
-+ void (*key_dtor) (void *);
-+ struct SignalSemaphore key_sem;
-+ struct AVLNode *key_tree;
-+} __internal_key_t;
-+
-+typedef struct {
-+ struct AVLNode node;
-+ ULONG owner; /* pid_t */
-+ void *val;
-+} __internal_key_node_t;
-+
-+/* Nice hack to avoid a constructor */
-+static struct SignalSemaphore keysema = {
-+ {NULL, NULL, NT_SIGNALSEM, 0, NULL}, 0, {(struct MinNode *) &keysema.ss_WaitQueue.mlh_Tail, NULL, (struct MinNode *) &keysema.ss_WaitQueue.mlh_Head}, {{NULL, NULL}, NULL}, NULL, -1
-+};
-+static struct MinList keylist = {
-+ (struct MinNode *) &keylist.mlh_Tail, NULL, (struct MinNode *) &keylist.mlh_Head
-+};
+#if USE_THREAD_SAFETYNET
++/* Nice hack to avoid a constructor */
+static struct MinList threadlist = {
+ (struct MinNode *) &threadlist.mlh_Tail, NULL, (struct MinNode *) &threadlist.mlh_Head
+};
@@ -2613,7 +2102,7 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+ struct Task *task;
+#endif
+#ifdef __ixemul
-+ struct user50 *parent;
++ struct user *parent;
+ int sigmask;
+ struct Message syncmsg;
+#endif
@@ -2722,7 +2211,7 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+/* __gthr_morphos_key_create */
+int __gthr_morphos_key_create (__gthread_key_t *__key, void (*__func) (void *))
+{
-+ __internal_key_t *key_internal;
++ ULONG index;
+ SIG_DEF
+
+ _D("<%s/%s():%lu> __gthread_key_t == 0x%p, __func == 0x%p\n", __FILE__, __FUNCTION__, __LINE__, __key, __func);
@@ -2732,295 +2221,53 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+ return EINVAL;
+ }
+
-+ if (LIB_MINVER((struct Library *) EXEC_BASE_NAME, 51, 46)) {
-+ ULONG index;
-+ SIG_LOCK();
-+ index = TLSAlloc(__func ? TLSTAG_DESTRUCTOR : TAG_IGNORE, (IPTR) __func, TAG_DONE);
-+ SIG_UNLOCK();
-+ if (index == TLS_INVALID_INDEX)
-+ return ENOMEM;
-+ *__key = (__gthread_key_t) index;
-+ return 0;
-+ }
-+
-+ key_internal = (__internal_key_t *) malloc(sizeof(*key_internal));
-+ if(key_internal == NULL) {
-+ _D("<%s/%s():%lu> == ENOMEM\n", __FILE__, __FUNCTION__, __LINE__);
-+ return ENOMEM;
++ if(!LIB_MINVER((struct Library *) EXEC_BASE_NAME, 51, 46)) {
++ /* If executed on old system, just fail. */
++ return ENOTSUP;
+ }
-+
-+ /* Setup key */
-+ key_internal->key_dtor = __func;
-+ key_internal->key_tree = 0;
-+ memset(&key_internal->key_sem, 0, sizeof(key_internal->key_sem));
+ SIG_LOCK();
-+ InitSemaphore(&key_internal->key_sem);
-+
-+ ObtainSemaphore(&keysema);
-+ addtail(&keylist, &key_internal->key_node);
-+ ReleaseSemaphore(&keysema);
-+
-+ _D("<%s/%s():%lu> key_internal[key_dtor == 0x%p, &key_tree == 0x%p, key_sem == 0x%p]\n", __FILE__, __FUNCTION__, __LINE__, key_internal->key_dtor, &key_internal->key_tree,
&key_internal->key_sem);
-+
-+ *__key = (__gthread_key_t) key_internal;
-+
-+ _D("<%s/%s():%lu> == 0\n", __FILE__, __FUNCTION__, __LINE__);
-+
++ index = TLSAlloc(__func ? TLSTAG_DESTRUCTOR : TAG_IGNORE, (IPTR) __func, TAG_DONE);
+ SIG_UNLOCK();
++ if (index == TLS_INVALID_INDEX)
++ return ENOMEM;
++ *__key = (__gthread_key_t) index;
+ return 0;
+}
+
+/* __gthr_morphos_key_delete */
+int __gthr_morphos_key_delete (__gthread_key_t __key)
+{
-+ __internal_key_t *key_internal = (__internal_key_t *) __key;
-+ __internal_key_node_t *key_node, *next_node;
-+#if !USE_THREAD_ONLY_SETSPECIFIC
-+ ULONG __pid = 0;
-+ int is_thread;
-+#endif
++ LONG rc;
+ SIG_DEF
+
+ _D("<%s/%s():%lu> __gthread_key_t == 0x%p\n", __FILE__, __FUNCTION__, __LINE__, __key);
+
-+ if (LIB_MINVER((struct Library *) EXEC_BASE_NAME, 51, 46)) {
-+ LONG rc;
-+ SIG_LOCK();
-+ rc = TLSFree((ULONG) __key);
-+ SIG_UNLOCK();
-+ return rc ? 0 : EINVAL;
-+ }
-+
-+ if(key_internal == NULL) {
-+ _D("<%s/%s():%lu> == EINVAL\n", __FILE__, __FUNCTION__, __LINE__);
-+ return EINVAL;
-+ }
-+
+ SIG_LOCK();
-+
-+#if !USE_THREAD_ONLY_SETSPECIFIC
-+ is_thread = GetThreadInternal(NULL) != NULL;
-+ NewGetTaskAttrsA(NULL, &__pid, sizeof(__pid), TASKINFOTYPE_PID, NULL);
-+#endif
-+
-+ ObtainSemaphore(&keysema);
-+ noderemove(&key_internal->key_node);
-+ ReleaseSemaphore(&keysema);
-+
-+ /* Free all the nodes - note that it is up to the application to make sure
-+ there no are races accessing the key at this stage. */
-+
-+ for(key_node = (__internal_key_node_t *) AVL_FindFirstNode(key_internal->key_tree);
-+ key_node;
-+ key_node = next_node) {
-+ next_node = (__internal_key_node_t *) AVL_FindNextNodeByAddress(&key_node->node);
-+
-+#if !USE_THREAD_ONLY_SETSPECIFIC
-+ /* Call the destructor if the delete is called by the non-thread
-+ owner of this specific node. */
-+ if(!is_thread && key_internal->key_dtor && key_node->val && key_node->owner == __pid) {
-+ void *oldvalue = key_node->val;
-+ key_node->val = NULL;
-+ key_internal->key_dtor(oldvalue);
-+ }
-+#endif
-+ /* free resources associated with the node */
-+ free(key_node);
-+ }
-+
-+ free(key_internal);
-+
-+ _D("<%s/%s():%lu> == 0\n", __FILE__, __FUNCTION__, __LINE__);
-+ SIG_UNLOCK();
-+
-+ return 0;
-+}
-+
-+static LONG ownernodecomparfunc(struct AVLNode *avlnode1, struct AVLNode *avlnode2)
-+{
-+ const __internal_key_node_t *key_node1 = (const __internal_key_node_t *) avlnode1;
-+ const __internal_key_node_t *key_node2 = (const __internal_key_node_t *) avlnode2;
-+ return (LONG) ((IPTR) key_node1->owner - (IPTR) key_node2->owner);
-+}
-+static LONG ownerkeycomparfunc(struct AVLNode *avlnode1, AVLKey avlkey)
-+{
-+ const __internal_key_node_t *key_node1 = (const __internal_key_node_t *) avlnode1;
-+ return (LONG) ((IPTR) key_node1->owner - (IPTR) avlkey);
-+}
-+
-+static __internal_key_node_t *__gthr_morphos_find_specific_node(__internal_key_t *key_internal, ULONG pid)
-+{
-+ __internal_key_node_t *key_node;
-+ key_node = (__internal_key_node_t *) AVL_FindNode(key_internal->key_tree, (AVLKey) pid, (AVLKEYCOMP) ownerkeycomparfunc);
-+ _D("<%s/%s():%lu> == 0x%p\n", __FILE__, __FUNCTION__, __LINE__, key_node);
-+ return key_node;
-+}
-+
-+#define GTHREAD_DESTRUCTOR_ITERATIONS 4
-+
-+static void thread_cleanup(void)
-+{
-+ ULONG __pid = 0;
-+ int foundkey, i;
-+ SIG_DEF
-+
-+ SIG_LOCK();
-+
-+ NewGetTaskAttrsA(NULL, &__pid, sizeof(__pid), TASKINFOTYPE_PID, NULL);
-+
-+ /* Destroy all non-NULL key values for this thread.
-+ Since the destructors can set the keys themselves, we have to
-+ do multiple iterations. */
-+
-+ for(foundkey = 1, i = 0; foundkey && i < GTHREAD_DESTRUCTOR_ITERATIONS; i++) {
-+ __internal_key_t *key_internal;
-+ foundkey = 0;
-+ ObtainSemaphore(&keysema);
-+ for(key_internal = (__internal_key_t *) keylist.mlh_Head;
-+ key_internal->key_node.mln_Succ;
-+ key_internal = (__internal_key_t *) key_internal->key_node.mln_Succ) {
-+ __internal_key_node_t *key_node;
-+
-+ ObtainSemaphore(&key_internal->key_sem);
-+ key_node = __gthr_morphos_find_specific_node(key_internal, __pid);
-+ if(key_node) {
-+ if(key_internal->key_dtor && key_node->val) {
-+ void *oldvalue = key_node->val;
-+ key_node->val = NULL;
-+ key_internal->key_dtor(oldvalue);
-+ foundkey = 1;
-+ }
-+
-+ /* unlink the node from the tree */
-+ AVL_RemNodeByAddress(&key_internal->key_tree, &key_node->node);
-+ /* free resources associated with the node */
-+ free(key_node);
-+ }
-+
-+ /* You might think that it would make sense to try to purge
-+ keys that become "empty" here. However, this would break
-+ calls to __gthread_key_delete. So don't do it. */
-+ ReleaseSemaphore(&key_internal->key_sem);
-+ }
-+ ReleaseSemaphore(&keysema);
-+ }
-+
++ rc = TLSFree((ULONG) __key);
+ SIG_UNLOCK();
++ return rc ? 0 : EINVAL;
+}
+
+/* __gthr_morphos_getspecific */
+void *__gthr_morphos_getspecific (__gthread_key_t __key)
+{
-+ __internal_key_t *key_internal = (__internal_key_t *) __key;
-+ __internal_key_node_t *key_node;
-+ ULONG __pid = 0;
-+ SIG_DEF
-+
+ _D("<%s/%s():%lu> __gthread_key_t == 0x%p\n", __FILE__, __FUNCTION__, __LINE__, __key);
+
-+ if (LIB_MINVER((struct Library *) EXEC_BASE_NAME, 51, 46)) {
-+ /* NOTE: TLSGetValue doesn't require signal locking */
-+ return (void *) TLSGetValue((ULONG) __key);
-+ }
-+
-+ if(key_internal == NULL) {
-+ _D("<%s/%s():%lu> == NULL\n", __FILE__, __FUNCTION__, __LINE__);
-+ return NULL;
-+ }
-+
-+ SIG_LOCK();
-+
-+ NewGetTaskAttrsA(NULL, &__pid, sizeof(__pid), TASKINFOTYPE_PID, NULL);
-+
-+ ObtainSemaphoreShared(&key_internal->key_sem);
-+ key_node = __gthr_morphos_find_specific_node(key_internal, __pid);
-+ ReleaseSemaphore(&key_internal->key_sem);
-+
-+ _D("<%s/%s():%lu> == 0x%p\n", __FILE__, __FUNCTION__, __LINE__, key_node ? key_node->val : NULL);
-+
-+ SIG_UNLOCK();
-+
-+ return key_node ? CONST_CAST(void *, key_node->val) : NULL;
++ return (void *) TLSGetValue((ULONG) __key);
+}
+
+/* __gthr_morphos_setspecific */
+int __gthr_morphos_setspecific (__gthread_key_t __key, const void *__v)
+{
-+ __internal_key_t *key_internal = (__internal_key_t *) __key;
-+ __internal_key_node_t *key_node;
-+ ULONG __pid = 0;
++ LONG rc;
+ SIG_DEF
+
+ _D("<%s/%s():%lu> __gthread_key_t == 0x%p, __v == 0x%p\n", __FILE__, __FUNCTION__, __LINE__, __key, __v);
+
-+ if (LIB_MINVER((struct Library *) EXEC_BASE_NAME, 51, 46)) {
-+ int rc;
-+ SIG_LOCK();
-+ rc = TLSSetValue((ULONG) __key, (APTR) __v) ? 0 : ENOMEM;
-+ SIG_UNLOCK();
-+ return rc;
-+ }
-+
-+ /* Illegal for keys already destroyed by __gthread_key_delete */
-+ if(key_internal == NULL) {
-+ _D("<%s/%s():%lu> == EINVAL\n", __FILE__, __FUNCTION__, __LINE__);
-+ return EINVAL;
-+ }
-+
+ SIG_LOCK();
-+
-+#if USE_THREAD_ONLY_SETSPECIFIC
-+ if(GetThreadInternal(NULL) == NULL) {
-+ /* Tried to setspecific for not a thread. */
-+ _D("<%s/%s():%lu> == EINVAL\n", __FILE__, __FUNCTION__, __LINE__);
-+ SIG_UNLOCK();
-+ return EINVAL;
-+ }
-+#endif
-+
-+ NewGetTaskAttrsA(NULL, &__pid, sizeof(__pid), TASKINFOTYPE_PID, NULL);
-+
-+ ObtainSemaphore(&key_internal->key_sem);
-+
-+ key_node = __gthr_morphos_find_specific_node(key_internal, __pid);
-+
-+ if(key_node != NULL) {
-+ /* Update existing node */
-+ _D("<%s/%s():%lu> key_node->val 0x%p -> 0x%p\n", __FILE__, __FUNCTION__, __LINE__, key_node->val, __v);
-+ key_node->val = (void *) __v;
-+
-+ ReleaseSemaphore(&key_internal->key_sem);
-+
-+ _D("<%s/%s():%lu> == 0\n", __FILE__, __FUNCTION__, __LINE__);
-+
-+ SIG_UNLOCK();
-+ return 0;
-+ }
-+
-+ /* Create a new node */
-+ key_node = (__internal_key_node_t *) malloc(sizeof(*key_node));
-+
-+ if(key_node == NULL) {
-+ ReleaseSemaphore(&key_internal->key_sem);
-+
-+ _D("<%s/%s():%lu> == ENOMEM\n", __FILE__, __FUNCTION__, __LINE__);
-+
-+ SIG_UNLOCK();
-+ return ENOMEM;
-+ }
-+
-+ key_node->owner = __pid;
-+ key_node->val = (void *) __v;
-+
-+ _D("<%s/%s():%lu> key_node->val == 0x%p\n", __FILE__, __FUNCTION__, __LINE__, key_node->val);
-+ AVL_AddNode(&key_internal->key_tree, &key_node->node, (AVLNODECOMP) ownernodecomparfunc);
-+
-+ ReleaseSemaphore(&key_internal->key_sem);
-+
-+ _D("<%s/%s():%lu> == 0\n", __FILE__, __FUNCTION__, __LINE__);
-+
++ rc = TLSSetValue((ULONG) __key, (APTR) __v);
+ SIG_UNLOCK();
-+ return 0;
++ return rc ? 0 : ENOMEM;
+}
+
+/* __gthr_morphos_mutex_init_function */
@@ -3361,179 +2608,8 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+
+/* Thread */
+
-+#ifdef __ixemul
-+
-+static void safe_ix_user_release_sockets(struct user50 *u)
-+{
-+ if (LIB_MINVER((struct Library *)u->u_ixbase, 50, 18))
-+ {
-+ ix_user_release_sockets((struct user *) u);
-+ }
-+ else
-+ {
-+ int i;
-+ for(i = 0; i < NOFILE50; i++)
-+ {
-+ if(u->u_ofile[i] && u->u_ofile[i]->f_type == DTYPE_SOCKET50)
-+ u->u_ofile[i]->f_socket_id = ix_release_socket(i);
-+ }
-+ }
-+}
-+
-+static int safe_ix_user_clone_parent(struct user50 *pu, struct user50 *mu)
-+{
-+ int a4_size;
-+ int fd;
-+ SIG_DEF
-+
-+ if (LIB_MINVER((struct Library *)mu->u_ixbase, 50, 18))
-+ {
-+ return ix_user_clone_parent((struct user *) pu, (struct user *) mu);
-+ }
-+
-+ a4_size = pu->u_a4_pointers_size * 4;
-+
-+ mu->u_is_ppc = pu->u_is_ppc;
-+
-+ /* don't mess with process pointers for now */
-+ mu->p_osptr = 0;
-+ mu->p_ysptr = 0;
-+ mu->p_pptr = 0;
-+
-+ SIG_LOCK();
-+ Forbid();
-+
-+ /* inherit the session of our parent */
-+ mu->u_session = pu->u_session;
-+ if(mu->u_session)
-+ mu->u_session->s_count++; /* and increase use count */
-+
-+ /* inherit the process group of our parent */
-+ mu->p_pgrp = pu->p_pgrp;
-+
-+ /* inherit the uid/gid information from parent */
-+ mu->u_ruid = pu->u_ruid;
-+ mu->u_euid = pu->u_euid;
-+ mu->u_rgid = pu->u_rgid;
-+ mu->u_egid = pu->u_egid;
-+
-+ if((mu->u_ngroups = pu->u_ngroups))
-+ bcopy((char *)pu->u_grouplist, (char *)mu->u_grouplist, pu->u_ngroups * sizeof(int));
-+
-+ if((mu->u_logname_valid = pu->u_logname_valid))
-+ strcpy((char *)mu->u_logname, (char *)pu->u_logname);
-+
-+ /*shmfork(pu, mu);*/
-+
-+ /* borrow the variables of the parent */
-+ mu->u_environ = pu->u_environ;
-+ mu->u_errno = pu->u_errno;
-+
-+ /* tell malloc to use the parents malloc lists */
-+ mu->u_mdp = pu->u_mdp;
-+
-+ /* and inherit several other things as well, upto not including u_md */
-+ bcopy ((void *)&pu->u_a4_pointers_size, (void *)&mu->u_a4_pointers_size,
-+ offsetof (struct user50, u_md) - offsetof (struct user50, u_a4_pointers_size));
-+ bcopy ((char *)pu - a4_size, (char *)mu - a4_size, a4_size);
-+
-+ /* some things have been copied that should be reset */
-+ mu->p_flag &= ~(SFREEA450 | STRC50);
-+ mu->p_xstat = 0;
-+ bzero ((void *)&mu->u_ru, sizeof (struct rusage50));
-+ bzero ((void *)&mu->u_prof, sizeof (struct uprof50));
-+ mu->u_prof_last_pc = 0;
-+ bzero ((void *)&mu->u_cru, sizeof (struct rusage50));
-+ bzero ((void *)&mu->u_timer[0], sizeof (struct itimerval50)); /* just the REAL timer! */
-+ gettimeofday ((struct timeval *) & mu->u_start, 0);
-+
-+ /* and adjust the open count of each of the copied filedescriptors */
-+ for(fd = 0; fd < NOFILE50; fd++)
-+ {
-+ if(!mu->u_ofile[fd])
-+ continue;
-+
-+ /* obtain (and create a new fd) for INET sockets */
-+ if(mu->u_ofile[fd]->f_type == DTYPE_SOCKET50)
-+ {
-+ int newfd, fd2;
-+
-+ /* Was this socket released? */
-+ if(!mu->u_ofile[fd]->f_socket_id)
-+ continue;
-+
-+ /* Yes, it was. So we now obtain a new socket from the underlying TCP/IP stack */
-+ newfd = ix_obtain_socket(mu->u_ofile[fd]->f_socket_id,
-+ mu->u_ofile[fd]->f_socket_domain,
-+ mu->u_ofile[fd]->f_socket_type,
-+ mu->u_ofile[fd]->f_socket_protocol);
-+
-+ mu->u_ofile[fd]->f_socket_id = 0;
-+
-+ if(newfd == -1)
-+ continue;
-+
-+ /* Move the newly created fd to the old one.
-+
-+ Tricky bit: we have to remember that for dupped sockets all file descriptors
-+ point to the same file structure: obtaining one released file descriptor will
-+ obtain them all. So we have to scan for file descriptors that point to the
-+ same file structure for which we just obtained the socket and copy the new
-+ file structure into the dupped file descriptors.
-+
-+ Note that the newly created file structure has the field f_socket_id set to 0,
-+ so we won't come here again because of the if-statement above that tests whether
-+ the socket was released. */
-+
-+ /* scan the file descriptors */
-+ for(fd2 = fd + 1; fd2 < NOFILE50; fd2++)
-+ {
-+ /* do they point to the same file structure? */
-+ if(mu->u_ofile[fd] == mu->u_ofile[fd2])
-+ {
-+ /* in that case copy the newly obtained socket into this file descriptor
-+ and increase the open count */
-+ mu->u_ofile[fd2] = mu->u_ofile[newfd];
-+ mu->u_ofile[newfd]->f_count++;
-+ }
-+ }
-+ /* and finally do the same for fd */
-+ mu->u_ofile[fd] = mu->u_ofile[newfd];
-+ mu->u_ofile[newfd] = 0;
-+ }
-+ else
-+ mu->u_ofile[fd]->f_count++;
-+ }
-+
-+ /* also copy u_segs, after all, the child will run initially in the
-+ same SegList as the parent. */
-+ mu->u_segs = pu->u_segs;
-+ mu->u_start_pc = pu->u_start_pc;
-+ mu->u_end_pc = pu->u_end_pc;
-+
-+ mu->u_is_root = pu->u_is_root;
-+ mu->u_a4 = pu->u_a4;
-+
-+ Permit();
-+ SIG_UNLOCK();
-+
-+ return 0;
-+}
-+
-+static void safe_ix_user_cleanup(struct user50 *mu)
-+{
-+ int i;
-+
-+ if (LIB_MINVER((struct Library *)mu->u_ixbase, 50, 18))
-+ {
-+ ix_user_cleanup((struct user *) mu);
-+ return;
-+ }
-+
-+ for(i = 0; i < NOFILE50; i++)
-+ if(mu->u_ofile[i])
-+ close(i);
-+}
++#ifndef __ixemul
++extern void __tls_call_destructors(int call_local);
+#endif
+
+static void entryfunc(struct taskmsg *msg)
@@ -3543,7 +2619,7 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+ struct MsgPort fakemp;
+ struct WBStartup wbmsg;
+ struct Library *ixbase;
-+ struct user50 *mu;
++ struct user *mu;
+#endif
+ addtail((struct MinList *) &self->pr_Task.tc_MemEntry, (struct MinNode *) &msg->ml->ml_Node);
+
@@ -3565,8 +2641,8 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+#if !USE_THREAD_SAFETYNET
+#warning "This code is unsafe unless if USE_THREAD_SAFETYNET is defined"
+#endif
-+ mu = (struct user50 *) ix_get_long(IXID_USER, 0);
-+ safe_ix_user_clone_parent(msg->parent, mu);
++ mu = (struct user *) ix_get_long(IXID_USER, 0);
++ ix_user_clone_parent(msg->parent, mu);
+ ReplyMsg(&msg->syncmsg);
+ sigsetmask(msg->sigmask);
+#endif
@@ -3575,18 +2651,12 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+
+#ifdef __ixemul
+ sigsetmask(~0);
-+#endif
+
-+ /* free keys associated to this thread */
-+ if (LIB_MINVER((struct Library *) EXEC_BASE_NAME, 51, 46))
-+ TLSCallDestructors(NULL); /* NOTE: Signals are locked for ixemul above */
-+ else
-+ thread_cleanup();
-+
-+#ifdef __ixemul
-+ safe_ix_user_cleanup(mu);
++ ix_user_cleanup(mu);
+
+ CloseLibrary(ixbase);
++#else
++ __tls_call_destructors(TRUE);
+#endif
+
+#if USE_THREAD_SAFETYNET
@@ -3674,12 +2744,13 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+
+#endif
+
++static const struct MemList aml = {{NULL, NULL, 0, 0, NULL}, 1, {{{MEMF_CLEAR}, sizeof(struct taskmsg)}}};
++
+int __gthr_morphos_create (__gthread_t *threadid, void *(*func) (void*),
+ void *args)
+{
+ struct Library *DOSBase;
+ struct taskmsg *msg;
-+ const struct MemList aml = {{NULL, NULL, 0, 0, NULL}, 1, {{{MEMF_CLEAR}, sizeof(*msg)}}};
+ struct MemList *ml;
+ ULONG parentppcsize, parent68ksize;
+ struct Process *proc;
@@ -3714,7 +2785,7 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+ msg->func = func;
+ msg->args = args;
+#ifdef __ixemul
-+ msg->parent = (struct user50 *) ix_get_long(IXID_USER, 0);
++ msg->parent = (struct user *) ix_get_long(IXID_USER, 0);
+ msg->sigmask = __omask;
+ self = (struct Process *) FindTask(NULL);
+ msg->syncmsg.mn_Node.ln_Type = NT_MESSAGE;
@@ -3736,7 +2807,7 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+
+#ifdef __ixemul
+ /* if some fd's are sockets, release them so the child can obtain them */
-+ safe_ix_user_release_sockets(msg->parent);
++ ix_user_release_sockets(msg->parent);
+#endif
+
+#if USE_THREAD_SAFETYNET
@@ -4046,7 +3117,7 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+ waiter.sigmask = 1UL << signal;
+
+ /* add it to the end of the list */
-+ ObtainSemaphore(&__cond->u1.__sem);
++ ObtainSemaphore(&__cond->u1.__sem);
+ addtail(&__cond->u2.__waiters, &waiter.node);
+ ReleaseSemaphore(&__cond->u1.__sem);
+
@@ -4287,9 +3358,9 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+ __gthread_key_delete(key);
+}
+#endif
-diff -ruN gcc-15.1.0.orig/libgcc/config/rs6000/gthr-morphos.h gcc-15.1.0/libgcc/config/rs6000/gthr-morphos.h
---- gcc-15.1.0.orig/libgcc/config/rs6000/gthr-morphos.h 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/libgcc/config/rs6000/gthr-morphos.h 2025-04-25 15:58:40.280619963 +0300
+diff -ruN gcc-15.2.0.orig/libgcc/config/rs6000/gthr-morphos.h gcc-15.2.0/libgcc/config/rs6000/gthr-morphos.h
+--- gcc-15.2.0.orig/libgcc/config/rs6000/gthr-morphos.h 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/libgcc/config/rs6000/gthr-morphos.h 2025-08-08 12:20:24.225613762 +0300
@@ -0,0 +1,433 @@
+/* Threads compatibility routines for libgcc2. */
+/* Compile this one with gcc. */
@@ -4724,15 +3795,15 @@ diff -ruN gcc-15.1.0.orig/libgcc/config/
+#endif
+
+#endif /* ! GCC_GTHR_MORPHOS_H */
-diff -ruN gcc-15.1.0.orig/libgcc/config/rs6000/t-gthr-morphos gcc-15.1.0/libgcc/config/rs6000/t-gthr-morphos
---- gcc-15.1.0.orig/libgcc/config/rs6000/t-gthr-morphos 1970-01-01 02:00:00.000000000 +0200
-+++ gcc-15.1.0/libgcc/config/rs6000/t-gthr-morphos 2025-04-25 15:58:40.280619963 +0300
+diff -ruN gcc-15.2.0.orig/libgcc/config/rs6000/t-gthr-morphos gcc-15.2.0/libgcc/config/rs6000/t-gthr-morphos
+--- gcc-15.2.0.orig/libgcc/config/rs6000/t-gthr-morphos 1970-01-01 02:00:00.000000000 +0200
++++ gcc-15.2.0/libgcc/config/rs6000/t-gthr-morphos 2025-08-08 12:20:24.225613762 +0300
@@ -0,0 +1 @@
+LIB2ADD = $(srcdir)/config/rs6000/gthr-morphos.c
\ No newline at end of file
-diff -ruN gcc-15.1.0.orig/libgcc/config.host gcc-15.1.0/libgcc/config.host
---- gcc-15.1.0.orig/libgcc/config.host 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libgcc/config.host 2025-04-25 15:58:40.280619963 +0300
+diff -ruN gcc-15.2.0.orig/libgcc/config.host gcc-15.2.0/libgcc/config.host
+--- gcc-15.2.0.orig/libgcc/config.host 2025-08-08 09:51:44.833420855 +0300
++++ gcc-15.2.0/libgcc/config.host 2025-08-08 12:20:24.225613762 +0300
@@ -1239,6 +1239,10 @@
;;
esac
@@ -4744,9 +3815,9 @@ diff -ruN gcc-15.1.0.orig/libgcc/config.
powerpc-*-netbsd*)
tmake_file="$tmake_file rs6000/t-netbsd rs6000/t-crtstuff"
;;
-diff -ruN gcc-15.1.0.orig/libgcc/configure gcc-15.1.0/libgcc/configure
---- gcc-15.1.0.orig/libgcc/configure 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libgcc/configure 2025-04-25 15:58:40.280619963 +0300
+diff -ruN gcc-15.2.0.orig/libgcc/configure gcc-15.2.0/libgcc/configure
+--- gcc-15.2.0.orig/libgcc/configure 2025-08-08 09:51:44.915934840 +0300
++++ gcc-15.2.0/libgcc/configure 2025-08-08 12:20:24.225613762 +0300
@@ -5734,6 +5734,7 @@
vxworks) thread_header=config/gthr-vxworks.h ;;
win32) thread_header=config/i386/gthr-win32.h ;;
@@ -4755,9 +3826,9 @@ diff -ruN gcc-15.1.0.orig/libgcc/configu
esac
-diff -ruN gcc-15.1.0.orig/libgcc/crtstuff.c gcc-15.1.0/libgcc/crtstuff.c
---- gcc-15.1.0.orig/libgcc/crtstuff.c 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libgcc/crtstuff.c 2025-04-25 15:58:40.280619963 +0300
+diff -ruN gcc-15.2.0.orig/libgcc/crtstuff.c gcc-15.2.0/libgcc/crtstuff.c
+--- gcc-15.2.0.orig/libgcc/crtstuff.c 2025-08-08 09:51:44.916422240 +0300
++++ gcc-15.2.0/libgcc/crtstuff.c 2025-08-08 12:20:24.225613762 +0300
@@ -157,6 +157,10 @@
# define USE_TM_CLONE_REGISTRY 0
#endif
@@ -4815,9 +3886,9 @@ diff -ruN gcc-15.1.0.orig/libgcc/crtstuf
}
/* Stick a call to __do_global_ctors_aux into the .init section. */
-diff -ruN gcc-15.1.0.orig/libgcc/emutls.c gcc-15.1.0/libgcc/emutls.c
---- gcc-15.1.0.orig/libgcc/emutls.c 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libgcc/emutls.c 2025-04-25 15:58:40.280619963 +0300
+diff -ruN gcc-15.2.0.orig/libgcc/emutls.c gcc-15.2.0/libgcc/emutls.c
+--- gcc-15.2.0.orig/libgcc/emutls.c 2025-08-08 09:51:44.916422240 +0300
++++ gcc-15.2.0/libgcc/emutls.c 2025-08-08 12:20:24.225613762 +0300
@@ -95,6 +95,28 @@
free (ptr);
}
@@ -4847,9 +3918,9 @@ diff -ruN gcc-15.1.0.orig/libgcc/emutls.
static void
emutls_init (void)
{
-diff -ruN gcc-15.1.0.orig/libgcc/libgcov.h gcc-15.1.0/libgcc/libgcov.h
---- gcc-15.1.0.orig/libgcc/libgcov.h 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libgcc/libgcov.h 2025-04-25 15:58:40.280619963 +0300
+diff -ruN gcc-15.2.0.orig/libgcc/libgcov.h gcc-15.2.0/libgcc/libgcov.h
+--- gcc-15.2.0.orig/libgcc/libgcov.h 2025-08-08 09:51:44.918422274 +0300
++++ gcc-15.2.0/libgcc/libgcov.h 2025-08-08 12:20:24.225613762 +0300
@@ -49,6 +49,10 @@
#include <sys/mman.h>
#endif
@@ -4861,9 +3932,9 @@ diff -ruN gcc-15.1.0.orig/libgcc/libgcov
#if __CHAR_BIT__ == 8
typedef unsigned gcov_unsigned_t __attribute__ ((mode (SI)));
typedef unsigned gcov_position_t __attribute__ ((mode (SI)));
-diff -ruN gcc-15.1.0.orig/libgcc/Makefile.in gcc-15.1.0/libgcc/Makefile.in
---- gcc-15.1.0.orig/libgcc/Makefile.in 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libgcc/Makefile.in 2025-04-25 15:58:40.280619963 +0300
+diff -ruN gcc-15.2.0.orig/libgcc/Makefile.in gcc-15.2.0/libgcc/Makefile.in
+--- gcc-15.2.0.orig/libgcc/Makefile.in 2025-08-08 09:51:44.833420855 +0300
++++ gcc-15.2.0/libgcc/Makefile.in 2025-08-08 12:20:24.225613762 +0300
@@ -201,7 +201,7 @@
STRIP_FOR_TARGET = $(STRIP)
@@ -4873,9 +3944,9 @@ diff -ruN gcc-15.1.0.orig/libgcc/Makefil
# Used to install the shared libgcc.
slibdir = @slibdir@
# Maybe used for DLLs on Windows targets.
-diff -ruN gcc-15.1.0.orig/libgfortran/configure gcc-15.1.0/libgfortran/configure
---- gcc-15.1.0.orig/libgfortran/configure 2025-04-25 11:21:27.000000000 +0300
-+++ gcc-15.1.0/libgfortran/configure 2025-04-25 15:58:40.284619995 +0300
+diff -ruN gcc-15.2.0.orig/libgfortran/configure gcc-15.2.0/libgfortran/configure
+--- gcc-15.2.0.orig/libgfortran/configure 2025-08-08 09:52:55.015591612 +0300
++++ gcc-15.2.0/libgfortran/configure 2025-08-08 12:20:24.229613792 +0300
@@ -7271,7 +7271,7 @@
lt_cv_sys_max_cmd_len=8192;
;;
@@ -4885,10 +3956,10 @@ diff -ruN gcc-15.1.0.orig/libgfortran/co
# On AmigaOS with pdksh, this test takes hours, literally.
# So we just punt and use a minimum line length of 8192.
lt_cv_sys_max_cmd_len=8192;
-diff -ruN gcc-15.1.0.orig/libgfortran/Makefile.in gcc-15.1.0/libgfortran/Makefile.in
---- gcc-15.1.0.orig/libgfortran/Makefile.in 2025-04-25 11:21:27.000000000 +0300
-+++ gcc-15.1.0/libgfortran/Makefile.in 2025-04-25 15:58:40.284619995 +0300
-@@ -995,7 +995,7 @@
+diff -ruN gcc-15.2.0.orig/libgfortran/Makefile.in gcc-15.2.0/libgfortran/Makefile.in
+--- gcc-15.2.0.orig/libgfortran/Makefile.in 2025-08-08 09:52:55.002591395 +0300
++++ gcc-15.2.0/libgfortran/Makefile.in 2025-08-08 12:20:24.229613792 +0300
+@@ -998,7 +998,7 @@
libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP)
cafexeclib_LTLIBRARIES = libcaf_single.la
@@ -4897,9 +3968,9 @@ diff -ruN gcc-15.1.0.orig/libgfortran/Ma
libcaf_single_la_SOURCES = caf/single.c
libcaf_single_la_LDFLAGS = -static
libcaf_single_la_DEPENDENCIES = caf/libcaf.h
-diff -ruN gcc-15.1.0.orig/libgomp/configure gcc-15.1.0/libgomp/configure
---- gcc-15.1.0.orig/libgomp/configure 2025-04-25 11:21:27.000000000 +0300
-+++ gcc-15.1.0/libgomp/configure 2025-04-25 15:58:40.284619995 +0300
+diff -ruN gcc-15.2.0.orig/libgomp/configure gcc-15.2.0/libgomp/configure
+--- gcc-15.2.0.orig/libgomp/configure 2025-08-08 09:52:55.033591913 +0300
++++ gcc-15.2.0/libgomp/configure 2025-08-08 12:20:24.229613792 +0300
@@ -5656,7 +5656,7 @@
lt_cv_sys_max_cmd_len=8192;
;;
@@ -4909,10 +3980,10 @@ diff -ruN gcc-15.1.0.orig/libgomp/config
# On AmigaOS with pdksh, this test takes hours, literally.
# So we just punt and use a minimum line length of 8192.
lt_cv_sys_max_cmd_len=8192;
-diff -ruN gcc-15.1.0.orig/libgomp/Makefile.in gcc-15.1.0/libgomp/Makefile.in
---- gcc-15.1.0.orig/libgomp/Makefile.in 2025-04-25 11:21:27.000000000 +0300
-+++ gcc-15.1.0/libgomp/Makefile.in 2025-04-25 15:58:40.284619995 +0300
-@@ -517,8 +517,8 @@
+diff -ruN gcc-15.2.0.orig/libgomp/Makefile.in gcc-15.2.0/libgomp/Makefile.in
+--- gcc-15.2.0.orig/libgomp/Makefile.in 2025-08-08 09:52:55.030591863 +0300
++++ gcc-15.2.0/libgomp/Makefile.in 2025-08-08 12:20:24.229613792 +0300
+@@ -518,8 +518,8 @@
search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \
$(top_srcdir)/../include
@@ -4923,9 +3994,9 @@ diff -ruN gcc-15.1.0.orig/libgomp/Makefi
AM_CPPFLAGS = $(addprefix -I, $(search_path))
AM_CFLAGS = $(XCFLAGS)
AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS)
-diff -ruN gcc-15.1.0.orig/libiberty/configure gcc-15.1.0/libiberty/configure
---- gcc-15.1.0.orig/libiberty/configure 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libiberty/configure 2025-04-25 15:58:40.284619995 +0300
+diff -ruN gcc-15.2.0.orig/libiberty/configure gcc-15.2.0/libiberty/configure
+--- gcc-15.2.0.orig/libiberty/configure 2025-08-08 09:51:45.461626696 +0300
++++ gcc-15.2.0/libiberty/configure 2025-08-08 12:20:24.229613792 +0300
@@ -7119,7 +7119,7 @@
fi
if test "x$ac_cv_func_fork_works" = xcross; then
@@ -4935,9 +4006,9 @@ diff -ruN gcc-15.1.0.orig/libiberty/conf
# Override, as these systems have only a dummy fork() stub
ac_cv_func_fork_works=no
;;
-diff -ruN gcc-15.1.0.orig/libiberty/stack-limit.c gcc-15.1.0/libiberty/stack-limit.c
---- gcc-15.1.0.orig/libiberty/stack-limit.c 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libiberty/stack-limit.c 2025-04-25 15:58:40.284619995 +0300
+diff -ruN gcc-15.2.0.orig/libiberty/stack-limit.c gcc-15.2.0/libiberty/stack-limit.c
+--- gcc-15.2.0.orig/libiberty/stack-limit.c 2025-08-08 09:51:45.469431465 +0300
++++ gcc-15.2.0/libiberty/stack-limit.c 2025-08-08 12:20:24.229613792 +0300
@@ -39,7 +39,7 @@
#ifdef HAVE_STDINT_H
#include <stdint.h>
@@ -4947,9 +4018,9 @@ diff -ruN gcc-15.1.0.orig/libiberty/stac
#include <sys/resource.h>
#endif
-diff -ruN gcc-15.1.0.orig/libobjc/configure gcc-15.1.0/libobjc/configure
---- gcc-15.1.0.orig/libobjc/configure 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libobjc/configure 2025-04-25 15:58:40.284619995 +0300
+diff -ruN gcc-15.2.0.orig/libobjc/configure gcc-15.2.0/libobjc/configure
+--- gcc-15.2.0.orig/libobjc/configure 2025-08-08 09:51:45.484431715 +0300
++++ gcc-15.2.0/libobjc/configure 2025-08-08 12:20:24.233613822 +0300
@@ -2536,7 +2536,7 @@
# Need the gcc compiler version to know where to install libraries
# and header files if --enable-version-specific-runtime-libs option
@@ -4968,9 +4039,9 @@ diff -ruN gcc-15.1.0.orig/libobjc/config
# On AmigaOS with pdksh, this test takes hours, literally.
# So we just punt and use a minimum line length of 8192.
lt_cv_sys_max_cmd_len=8192;
-diff -ruN gcc-15.1.0.orig/libobjc/Makefile.in gcc-15.1.0/libobjc/Makefile.in
---- gcc-15.1.0.orig/libobjc/Makefile.in 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libobjc/Makefile.in 2025-04-25 15:58:40.284619995 +0300
+diff -ruN gcc-15.2.0.orig/libobjc/Makefile.in gcc-15.2.0/libobjc/Makefile.in
+--- gcc-15.2.0.orig/libobjc/Makefile.in 2025-08-08 09:51:45.482431682 +0300
++++ gcc-15.2.0/libobjc/Makefile.in 2025-08-08 12:20:24.233613822 +0300
@@ -48,7 +48,7 @@
top_builddir = .
@@ -4980,9 +4051,9 @@ diff -ruN gcc-15.1.0.orig/libobjc/Makefi
# Multilib support variables.
MULTISRCTOP =
-diff -ruN gcc-15.1.0.orig/libobjc/objc/objc.h gcc-15.1.0/libobjc/objc/objc.h
---- gcc-15.1.0.orig/libobjc/objc/objc.h 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libobjc/objc/objc.h 2025-04-25 15:58:40.284619995 +0300
+diff -ruN gcc-15.2.0.orig/libobjc/objc/objc.h gcc-15.2.0/libobjc/objc/objc.h
+--- gcc-15.2.0.orig/libobjc/objc/objc.h 2025-08-08 09:51:45.487445109 +0300
++++ gcc-15.2.0/libobjc/objc/objc.h 2025-08-08 12:20:24.233613822 +0300
@@ -51,8 +51,13 @@
Important: this could change and we could switch to 'typedef bool
@@ -4997,9 +4068,9 @@ diff -ruN gcc-15.1.0.orig/libobjc/objc/o
#define YES (BOOL)1
#define NO (BOOL)0
-diff -ruN gcc-15.1.0.orig/libobjc/objc-sync.c gcc-15.1.0/libobjc/objc-sync.c
---- gcc-15.1.0.orig/libobjc/objc-sync.c 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libobjc/objc-sync.c 2025-04-25 15:58:40.284619995 +0300
+diff -ruN gcc-15.2.0.orig/libobjc/objc-sync.c gcc-15.2.0/libobjc/objc-sync.c
+--- gcc-15.2.0.orig/libobjc/objc-sync.c 2025-08-08 09:51:45.486431749 +0300
++++ gcc-15.2.0/libobjc/objc-sync.c 2025-08-08 12:20:24.233613822 +0300
@@ -174,6 +174,7 @@
void
__objc_sync_init (void)
@@ -5025,9 +4096,9 @@ diff -ruN gcc-15.1.0.orig/libobjc/objc-s
}
+
+#endif /* MorphOS */
-diff -ruN gcc-15.1.0.orig/libobjc/objects.c gcc-15.1.0/libobjc/objects.c
---- gcc-15.1.0.orig/libobjc/objects.c 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libobjc/objects.c 2025-04-25 15:58:40.284619995 +0300
+diff -ruN gcc-15.2.0.orig/libobjc/objects.c gcc-15.2.0/libobjc/objects.c
+--- gcc-15.2.0.orig/libobjc/objects.c 2025-08-08 09:51:45.487445109 +0300
++++ gcc-15.2.0/libobjc/objects.c 2025-08-08 12:20:24.233613822 +0300
@@ -36,6 +36,7 @@
#endif
@@ -5044,9 +4115,9 @@ diff -ruN gcc-15.1.0.orig/libobjc/object
const char *
object_getClassName (id object)
-diff -ruN gcc-15.1.0.orig/libobjc/thr.c gcc-15.1.0/libobjc/thr.c
---- gcc-15.1.0.orig/libobjc/thr.c 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libobjc/thr.c 2025-04-25 15:58:40.288620027 +0300
+diff -ruN gcc-15.2.0.orig/libobjc/thr.c gcc-15.2.0/libobjc/thr.c
+--- gcc-15.2.0.orig/libobjc/thr.c 2025-08-08 09:51:45.487445109 +0300
++++ gcc-15.2.0/libobjc/thr.c 2025-08-08 12:20:24.233613822 +0300
@@ -35,7 +35,16 @@
#include "objc/runtime.h"
#include "objc-private/module-abi-8.h"
@@ -5415,9 +4486,9 @@ diff -ruN gcc-15.1.0.orig/libobjc/thr.c
}
/* Make the objc thread system aware that a thread which is managed
-diff -ruN gcc-15.1.0.orig/libssp/configure gcc-15.1.0/libssp/configure
---- gcc-15.1.0.orig/libssp/configure 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libssp/configure 2025-04-25 15:58:40.288620027 +0300
+diff -ruN gcc-15.2.0.orig/libssp/configure gcc-15.2.0/libssp/configure
+--- gcc-15.2.0.orig/libssp/configure 2025-08-08 09:51:45.635066903 +0300
++++ gcc-15.2.0/libssp/configure 2025-08-08 12:20:24.233613822 +0300
@@ -5586,7 +5586,7 @@
lt_cv_sys_max_cmd_len=8192;
;;
@@ -5427,9 +4498,9 @@ diff -ruN gcc-15.1.0.orig/libssp/configu
# On AmigaOS with pdksh, this test takes hours, literally.
# So we just punt and use a minimum line length of 8192.
lt_cv_sys_max_cmd_len=8192;
-diff -ruN gcc-15.1.0.orig/libssp/Makefile.in gcc-15.1.0/libssp/Makefile.in
---- gcc-15.1.0.orig/libssp/Makefile.in 2025-04-25 11:18:04.000000000 +0300
-+++ gcc-15.1.0/libssp/Makefile.in 2025-04-25 15:58:40.288620027 +0300
+diff -ruN gcc-15.2.0.orig/libssp/Makefile.in gcc-15.2.0/libssp/Makefile.in
+--- gcc-15.2.0.orig/libssp/Makefile.in 2025-08-08 09:51:45.635066903 +0300
++++ gcc-15.2.0/libssp/Makefile.in 2025-08-08 12:20:24.233613822 +0300
@@ -366,7 +366,7 @@
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = ssp.map-sun
AM_CFLAGS = -Wall $(XCFLAGS)
@@ -5439,9 +4510,9 @@ diff -ruN gcc-15.1.0.orig/libssp/Makefil
nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h
libssp_la_SOURCES = \
ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \
-diff -ruN gcc-15.1.0.orig/libstdc++-v3/acinclude.m4 gcc-15.1.0/libstdc++-v3/acinclude.m4
---- gcc-15.1.0.orig/libstdc++-v3/acinclude.m4 2025-04-25 11:18:05.000000000 +0300
-+++ gcc-15.1.0/libstdc++-v3/acinclude.m4 2025-04-25 15:58:40.288620027 +0300
+diff -ruN gcc-15.2.0.orig/libstdc++-v3/acinclude.m4 gcc-15.2.0/libstdc++-v3/acinclude.m4
+--- gcc-15.2.0.orig/libstdc++-v3/acinclude.m4 2025-08-08 09:51:45.658434618 +0300
++++ gcc-15.2.0/libstdc++-v3/acinclude.m4 2025-08-08 12:20:24.233613822 +0300
@@ -775,9 +775,9 @@
# is selected. FIXME: these variables are misnamed, there are
# no executables installed in _toolexecdir or _toolexeclibdir.
@@ -5486,9 +4557,9 @@ diff -ruN gcc-15.1.0.orig/libstdc++-v3/a
],
[glibcxx_cv_realpath=yes],
[glibcxx_cv_realpath=no])
-diff -ruN gcc-15.1.0.orig/libstdc++-v3/config/io/basic_file_stdio.cc gcc-15.1.0/libstdc++-v3/config/io/basic_file_stdio.cc
---- gcc-15.1.0.orig/libstdc++-v3/config/io/basic_file_stdio.cc 2025-04-25 11:18:05.000000000 +0300
-+++ gcc-15.1.0/libstdc++-v3/config/io/basic_file_stdio.cc 2025-04-25 15:58:40.288620027 +0300
+diff -ruN gcc-15.2.0.orig/libstdc++-v3/config/io/basic_file_stdio.cc gcc-15.2.0/libstdc++-v3/config/io/basic_file_stdio.cc
+--- gcc-15.2.0.orig/libstdc++-v3/config/io/basic_file_stdio.cc 2025-08-08 09:51:45.680119947 +0300
++++ gcc-15.2.0/libstdc++-v3/config/io/basic_file_stdio.cc 2025-08-08 12:20:24.233613822 +0300
@@ -440,6 +440,7 @@
__basic_file<char>::showmanyc()
{
@@ -5505,10 +4576,10 @@ diff -ruN gcc-15.1.0.orig/libstdc++-v3/c
#if defined(_GLIBCXX_HAVE_POLL) && !defined(_GLIBCXX_USE_STDIO_PURE)
// Cheap test.
-diff -ruN gcc-15.1.0.orig/libstdc++-v3/config/os/generic/os_defines.h gcc-15.1.0/libstdc++-v3/config/os/generic/os_defines.h
---- gcc-15.1.0.orig/libstdc++-v3/config/os/generic/os_defines.h 2025-04-25 11:18:05.000000000 +0300
-+++ gcc-15.1.0/libstdc++-v3/config/os/generic/os_defines.h 2025-04-25 15:58:40.288620027 +0300
-@@ -38,4 +38,10 @@
+diff -ruN gcc-15.2.0.orig/libstdc++-v3/config/os/generic/os_defines.h gcc-15.2.0/libstdc++-v3/config/os/generic/os_defines.h
+--- gcc-15.2.0.orig/libstdc++-v3/config/os/generic/os_defines.h 2025-08-08 09:51:45.684459632 +0300
++++ gcc-15.2.0/libstdc++-v3/config/os/generic/os_defines.h 2025-08-08 12:20:24.233613822 +0300
+@@ -38,4 +38,12 @@
// workaround in gthr-posix.h and at link-time for static linking.
#define _GLIBCXX_GTHREAD_USE_WEAK 0
@@ -5516,13 +4587,15 @@ diff -ruN gcc-15.1.0.orig/libstdc++-v3/c
+// Disable the libstdc++ weak reference logic completely for MorphOS because
+// it is broken.
+#define _GLIBCXX_USE_WEAK_REF 0
++// Make use of __cxa_thread_atexit_impl
++#define _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL 1
+#endif
+
#endif
-diff -ruN gcc-15.1.0.orig/libstdc++-v3/crossconfig.m4 gcc-15.1.0/libstdc++-v3/crossconfig.m4
---- gcc-15.1.0.orig/libstdc++-v3/crossconfig.m4 2025-04-25 11:18:05.000000000 +0300
-+++ gcc-15.1.0/libstdc++-v3/crossconfig.m4 2025-04-25 15:58:40.296620091 +0300
-@@ -198,6 +198,12 @@
+diff -ruN gcc-15.2.0.orig/libstdc++-v3/crossconfig.m4 gcc-15.2.0/libstdc++-v3/crossconfig.m4
+--- gcc-15.2.0.orig/libstdc++-v3/crossconfig.m4 2025-08-08 09:51:45.691435169 +0300
++++ gcc-15.2.0/libstdc++-v3/crossconfig.m4 2025-08-08 12:20:24.241613882 +0300
+@@ -198,6 +198,14 @@
AC_CHECK_FUNCS(_wfopen)
GCC_CHECK_TLS
;;
@@ -5531,13 +4604,15 @@ diff -ruN gcc-15.1.0.orig/libstdc++-v3/c
+ GLIBCXX_CHECK_LINKER_FEATURES
+ GLIBCXX_CHECK_MATH_SUPPORT
+ GLIBCXX_CHECK_STDLIB_SUPPORT
++ AC_CHECK_FUNCS(__cxa_thread_atexit_impl)
++ AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
+ ;;
*-netbsd* | *-openbsd*)
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
-diff -ruN gcc-15.1.0.orig/libstdc++-v3/include/bits/locale_classes.h gcc-15.1.0/libstdc++-v3/include/bits/locale_classes.h
---- gcc-15.1.0.orig/libstdc++-v3/include/bits/locale_classes.h 2025-04-25 11:18:05.000000000 +0300
-+++ gcc-15.1.0/libstdc++-v3/include/bits/locale_classes.h 2025-04-25 15:58:40.296620091 +0300
+diff -ruN gcc-15.2.0.orig/libstdc++-v3/include/bits/locale_classes.h gcc-15.2.0/libstdc++-v3/include/bits/locale_classes.h
+--- gcc-15.2.0.orig/libstdc++-v3/include/bits/locale_classes.h 2025-08-08 09:51:45.757436270 +0300
++++ gcc-15.2.0/libstdc++-v3/include/bits/locale_classes.h 2025-08-08 12:20:24.241613882 +0300
@@ -379,8 +379,12 @@
_M_coalesce(const locale& __base, const locale& __add, category __cat);
@@ -5551,9 +4626,9 @@ diff -ruN gcc-15.1.0.orig/libstdc++-v3/i
};
#if __cpp_lib_type_trait_variable_templates // C++ >= 17
-diff -ruN gcc-15.1.0.orig/libstdc++-v3/include/std/mutex gcc-15.1.0/libstdc++-v3/include/std/mutex
---- gcc-15.1.0.orig/libstdc++-v3/include/std/mutex 2025-04-25 11:18:05.000000000 +0300
-+++ gcc-15.1.0/libstdc++-v3/include/std/mutex 2025-04-25 15:58:40.296620091 +0300
+diff -ruN gcc-15.2.0.orig/libstdc++-v3/include/std/mutex gcc-15.2.0/libstdc++-v3/include/std/mutex
+--- gcc-15.2.0.orig/libstdc++-v3/include/std/mutex 2025-08-08 09:51:45.813437204 +0300
++++ gcc-15.2.0/libstdc++-v3/include/std/mutex 2025-08-08 12:20:24.241613882 +0300
@@ -915,7 +915,21 @@
once_flag::_Prepare_execution __exec(__callable);
@@ -5577,9 +4652,9 @@ diff -ruN gcc-15.1.0.orig/libstdc++-v3/i
__throw_system_error(__e);
}
-diff -ruN gcc-15.1.0.orig/libstdc++-v3/libsupc++/new_opa.cc gcc-15.1.0/libstdc++-v3/libsupc++/new_opa.cc
---- gcc-15.1.0.orig/libstdc++-v3/libsupc++/new_opa.cc 2025-04-25 11:18:05.000000000 +0300
-+++ gcc-15.1.0/libstdc++-v3/libsupc++/new_opa.cc 2025-04-25 15:58:40.296620091 +0300
+diff -ruN gcc-15.2.0.orig/libstdc++-v3/libsupc++/new_opa.cc gcc-15.2.0/libstdc++-v3/libsupc++/new_opa.cc
+--- gcc-15.2.0.orig/libstdc++-v3/libsupc++/new_opa.cc 2025-08-08 09:51:45.827437437 +0300
++++ gcc-15.2.0/libstdc++-v3/libsupc++/new_opa.cc 2025-08-08 12:20:24.241613882 +0300
@@ -97,7 +97,10 @@
#else // !HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN
// The C library doesn't provide any aligned allocation functions, define one.
@@ -5592,9 +4667,9 @@ diff -ruN gcc-15.1.0.orig/libstdc++-v3/l
aligned_alloc (std::size_t al, std::size_t sz)
{
// We need extra bytes to store the original value returned by malloc.
-diff -ruN gcc-15.1.0.orig/libstdc++-v3/src/c++11/locale_init.cc gcc-15.1.0/libstdc++-v3/src/c++11/locale_init.cc
---- gcc-15.1.0.orig/libstdc++-v3/src/c++11/locale_init.cc 2025-04-25 11:18:05.000000000 +0300
-+++ gcc-15.1.0/libstdc++-v3/src/c++11/locale_init.cc 2025-04-25 15:58:40.296620091 +0300
+diff -ruN gcc-15.2.0.orig/libstdc++-v3/src/c++11/locale_init.cc gcc-15.2.0/libstdc++-v3/src/c++11/locale_init.cc
+--- gcc-15.2.0.orig/libstdc++-v3/src/c++11/locale_init.cc 2025-08-08 09:51:45.834437554 +0300
++++ gcc-15.2.0/libstdc++-v3/src/c++11/locale_init.cc 2025-08-08 12:20:24.241613882 +0300
@@ -447,7 +447,11 @@
#if _GLIBCXX_USE_DUAL_ABI
// Facets that are instantiated for both the COW and SSO std::string ABIs.
@@ -5607,9 +4682,9 @@ diff -ruN gcc-15.1.0.orig/libstdc++-v3/s
&::_ZNSt8numpunctIcE2idE,
&numpunct<char>::id,
&::_ZNSt7collateIcE2idE,
-diff -ruN gcc-15.1.0.orig/libstdc++-v3/src/c++17/ryu/f2s_intrinsics.h gcc-15.1.0/libstdc++-v3/src/c++17/ryu/f2s_intrinsics.h
---- gcc-15.1.0.orig/libstdc++-v3/src/c++17/ryu/f2s_intrinsics.h 2025-04-25 11:18:05.000000000 +0300
-+++ gcc-15.1.0/libstdc++-v3/src/c++17/ryu/f2s_intrinsics.h 2025-04-25 15:58:40.296620091 +0300
+diff -ruN gcc-15.2.0.orig/libstdc++-v3/src/c++17/ryu/f2s_intrinsics.h gcc-15.2.0/libstdc++-v3/src/c++17/ryu/f2s_intrinsics.h
+--- gcc-15.2.0.orig/libstdc++-v3/src/c++17/ryu/f2s_intrinsics.h 2025-08-08 09:51:45.839437638 +0300
++++ gcc-15.2.0/libstdc++-v3/src/c++17/ryu/f2s_intrinsics.h 2025-08-08 12:20:24.241613882 +0300
@@ -17,6 +17,11 @@
#ifndef RYU_F2S_INTRINSICS_H
#define RYU_F2S_INTRINSICS_H
@@ -5622,9 +4697,9 @@ diff -ruN gcc-15.1.0.orig/libstdc++-v3/s
// Defines RYU_32_BIT_PLATFORM if applicable.
#if defined(RYU_FLOAT_FULL_TABLE)
-diff -ruN gcc-15.1.0.orig/libstdc++-v3/src/filesystem/ops.cc gcc-15.1.0/libstdc++-v3/src/filesystem/ops.cc
---- gcc-15.1.0.orig/libstdc++-v3/src/filesystem/ops.cc 2025-04-25 11:18:05.000000000 +0300
-+++ gcc-15.1.0/libstdc++-v3/src/filesystem/ops.cc 2025-04-25 15:58:40.296620091 +0300
+diff -ruN gcc-15.2.0.orig/libstdc++-v3/src/filesystem/ops.cc gcc-15.2.0/libstdc++-v3/src/filesystem/ops.cc
+--- gcc-15.2.0.orig/libstdc++-v3/src/filesystem/ops.cc 2025-08-08 09:51:45.845994011 +0300
++++ gcc-15.2.0/libstdc++-v3/src/filesystem/ops.cc 2025-08-08 12:20:24.241613882 +0300
@@ -127,11 +127,6 @@
#ifdef _GLIBCXX_USE_REALPATH
@@ -5637,3 +4712,24 @@ diff -ruN gcc-15.1.0.orig/libstdc++-v3/s
if (char* rp = ::realpath(pa.c_str(), buf.get()))
{
if (buf == nullptr)
+--- gcc-9.5.0/libobjc/sendmsg.c_orig 2026-02-24 15:10:27.010497585 +0000
++++ gcc-9.5.0/libobjc/sendmsg.c 2026-02-24 16:00:45.196780951 +0000
+@@ -359,17 +359,17 @@ method_get_imp (struct objc_method * met
+ installed, this function will implicitly invoke +initialize for the
+ class of OBJECT if it hasn't been invoked yet. */
+ inline
+ BOOL
+ __objc_responds_to (id object, SEL sel)
+ {
+ void *res;
+ struct sarray *dtable;
+-
++ if (!sel) return FALSE;
+ /* Install dispatch table if need be */
+ dtable = object->class_pointer->dtable;
+ if (dtable == __objc_uninstalled_dtable)
+ {
+ objc_mutex_lock (__objc_runtime_mutex);
+ if (object->class_pointer->dtable == __objc_uninstalled_dtable)
+ __objc_install_dtable_for_class (object->class_pointer);
+
Added files:
Index: pkgsrc/cross/ppc-morphos-gcc/files/const-baserel.diff
diff -u /dev/null pkgsrc/cross/ppc-morphos-gcc/files/const-baserel.diff:1.1
--- /dev/null Sat Jun 13 15:58:32 2026
+++ pkgsrc/cross/ppc-morphos-gcc/files/const-baserel.diff Sat Jun 13 15:58:32 2026
@@ -0,0 +1,13 @@
+Also use baserel for const - after all, something in a const might refer to
+something that gets relocated, so needs to be accessed baserel as well.
+
+--- gcc/config/rs6000/rs6000.cc.orig 2026-04-04 01:09:46.269295661 +0000
++++ gcc/config/rs6000/rs6000.cc
+@@ -20973,7 +20973,6 @@ rs6000_elf_encode_section_info (tree dec
+ rtx symbol = XEXP (rtl, 0);
+
+ if(TREE_CODE (decl) == VAR_DECL &&
+- !TREE_READONLY(decl) &&
+ GET_CODE (symbol) == SYMBOL_REF)
+ {
+ const char *name = DECL_SECTION_NAME (decl);
Index: pkgsrc/cross/ppc-morphos-gcc/files/libcpp-disable-canonicalize.diff
diff -u /dev/null pkgsrc/cross/ppc-morphos-gcc/files/libcpp-disable-canonicalize.diff:1.1
--- /dev/null Sat Jun 13 15:58:32 2026
+++ pkgsrc/cross/ppc-morphos-gcc/files/libcpp-disable-canonicalize.diff Sat Jun 13 15:58:32 2026
@@ -0,0 +1,18 @@
+--- gcc-x.x.x/libcpp/files.cc.orig 2025-11-11 19:13:40.653252674 +0200
++++ gcc-x.x.x/libcpp/files.cc 2025-11-12 00:53:58.538194331 +0200
+@@ -399,6 +399,7 @@
+ char *copy;
+ void **pp;
+
++#ifndef __ixemul__
+ /* We try to canonicalize system headers. For DOS based file
+ * system, we always try to shorten non-system headers, as DOS
+ * has a tighter constraint on max path length. */
+@@ -417,6 +418,7 @@
+ path = canonical_path;
+ }
+ }
++#endif
+
+ hv = htab_hash_string (path);
+ if (htab_find_with_hash (pfile->nonexistent_file_hash, path, hv) != NULL)
Home |
Main Index |
Thread Index |
Old Index