summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSolomon Peachy <pizza@shaftnet.org>2022-10-09 19:17:41 -0400
committerSolomon Peachy <pizza@shaftnet.org>2025-01-08 09:31:51 -0500
commit573ba5472e60c996539385481fa2ce01dc696e8d (patch)
tree071bee39669514b4bc622f0b0510828b6dd33eb4
parent9417ece0eaac4f2e87be04971508ae1822cb6ebb (diff)
downloadrockbox-573ba5472e.tar.gz
rockbox-573ba5472e.zip
Toolchains: Update to GCC 9.5.0
All toolchain dependencies are circa the GCC 9.5.0 release: GCC 9.5.0, binutils 2.38, gmp 6.2.1, mpfr 4.1.1, mpc 1.2.1, isl 0.18 Native: * arm - mini2g, nano2g seems to work - ipod6g boot hang on 9.5.0 (possibly leading to disk corruption) * mips - xduoox3 seems stable so far * m68k - binaries untested Hosted: * arm - binaries untested * mips - erosq seems stable so far * Android NDK - unchanged at GCC 4.9.4 Change-Id: I614f1b198643bfa8c45f68e4d8e15307a4998618
-rwxr-xr-xtools/configure12
-rwxr-xr-xtools/rockboxdev.sh129
-rw-r--r--tools/toolchain-patches/apple_silicon.patch13
-rw-r--r--tools/toolchain-patches/glibc-227-make44.patch (renamed from tools/toolchain-patches/glibc-225-make44.patch)102
-rw-r--r--tools/toolchain-patches/rockbox-multilibs-noexceptions-arm-elf-eabi-gcc-4.9.4.diff56
-rw-r--r--tools/toolchain-patches/rockbox-multilibs-noexceptions-arm-elf-eabi-gcc-9.5.0.diff43
6 files changed, 164 insertions, 191 deletions
diff --git a/tools/configure b/tools/configure
index 2f72f6c78a..1a6805f708 100755
--- a/tools/configure
+++ b/tools/configure
@@ -138,7 +138,7 @@ app_set_lcd_size () {
findarmgcc() {
prefixtools arm-elf-eabi-
- gccchoice="4.9.4"
+ gccchoice="9.5.0"
}
# scan the $PATH for the given command
@@ -543,7 +543,7 @@ coldfirecc () {
GCCOPTS="$CCOPTS -mcpu=5249 -malign-int -mstrict-align"
GCCOPTIMIZE="-fomit-frame-pointer"
endian="big"
- gccchoice="4.9.4"
+ gccchoice="9.5.0"
}
arm7tdmicc () {
@@ -616,7 +616,7 @@ mipselcc () {
GCCOPTS="$GCCOPTS -ffunction-sections -msoft-float -G 0 -Wno-parentheses"
GCCOPTIMIZE="-fomit-frame-pointer"
endian="little"
- gccchoice="4.9.4"
+ gccchoice="9.5.0"
}
mipsr2elcc () {
@@ -626,7 +626,7 @@ mipsr2elcc () {
GCCOPTS="$GCCOPTS -ffunction-sections -msoft-float -G 0 -Wno-parentheses"
GCCOPTIMIZE="-fomit-frame-pointer"
endian="little"
- gccchoice="4.9.4"
+ gccchoice="9.5.0"
}
maemocc () {
@@ -773,7 +773,7 @@ arm1176jzlinuxcc () {
GCCOPTS="$GCCOPTS -D_GNU_SOURCE=1 -U_FORTIFY_SOURCE -D_REENTRANT"
# Set up compiler
- gccchoice="4.9.4"
+ gccchoice="9.5.0"
prefixtools "arm-rockbox-linux-gnueabi-"
}
@@ -953,7 +953,7 @@ mipsellinuxcc () {
GCCOPTS="$GCCOPTS -D_GNU_SOURCE=1 -U_FORTIFY_SOURCE -D_REENTRANT"
# Set up compiler
- gccchoice="4.9.4"
+ gccchoice="9.5.0"
prefixtools "mipsel-rockbox-linux-gnu-"
}
diff --git a/tools/rockboxdev.sh b/tools/rockboxdev.sh
index 9c0a05ddbd..7275ef6fac 100755
--- a/tools/rockboxdev.sh
+++ b/tools/rockboxdev.sh
@@ -484,30 +484,30 @@ build() {
cd "$toolname-$version"
if (echo $needs_libs | grep -q gmp && test ! -d gmp); then
echo "ROCKBOXDEV: Getting GMP"
- getfile "gmp-6.1.2.tar.xz" "$GNU_MIRROR/gmp"
- tar xJf $dlwhere/gmp-6.1.2.tar.xz
- ln -s gmp-6.1.2 gmp
+ getfile "gmp-6.2.1.tar.bz2" "$GNU_MIRROR/gmp"
+ tar xjf $dlwhere/gmp-6.2.1.tar.bz2
+ ln -s gmp-6.2.1 gmp
fi
if (echo $needs_libs | grep -q mpfr && test ! -d mpfr); then
echo "ROCKBOXDEV: Getting MPFR"
- getfile "mpfr-3.1.6.tar.xz" "$GNU_MIRROR/mpfr"
- tar xJf $dlwhere/mpfr-3.1.6.tar.xz
- ln -s mpfr-3.1.6 mpfr
+ getfile "mpfr-4.1.1.tar.xz" "$GNU_MIRROR/mpfr"
+ tar xJf $dlwhere/mpfr-4.1.1.tar.xz
+ ln -s mpfr-4.1.1 mpfr
fi
if (echo $needs_libs | grep -q mpc && test ! -d mpc); then
echo "ROCKBOXDEV: Getting MPC"
- getfile "mpc-1.0.1.tar.gz" "http://www.multiprecision.org/downloads"
- tar xzf $dlwhere/mpc-1.0.1.tar.gz
- ln -s mpc-1.0.1 mpc
+ getfile "mpc-1.2.1.tar.gz" "http://www.multiprecision.org/downloads"
+ tar xzf $dlwhere/mpc-1.2.1.tar.gz
+ ln -s mpc-1.2.1 mpc
fi
if (echo $needs_libs | grep -q isl && test ! -d isl); then
echo "ROCKBOXDEV: Getting ISL"
- getfile "isl-0.15.tar.bz2" "https://gcc.gnu.org/pub/gcc/infrastructure"
- tar xjf $dlwhere/isl-0.15.tar.bz2
- ln -s isl-0.15 isl
+ getfile "isl-0.18.tar.bz2" "https://gcc.gnu.org/pub/gcc/infrastructure"
+ tar xjf $dlwhere/isl-0.18.tar.bz2
+ ln -s isl-0.18 isl
fi
cd $builddir
fi
@@ -562,9 +562,9 @@ build_linux_toolchain () {
# check libraries:
# contrary to other toolchains that rely on a hack to avoid installing
- # gmp, mpc and mpfr, we simply require that they are installed on the system
- # this is not a huge requirement since virtually all systems these days
- # provide dev packages for them
+ # gmp, mpc, and mpfr, we simply require that they are installed on
+ # the system this is not a huge requirement since virtually all systems
+ # these days provide dev packages for them
# FIXME: maybe add an option to download and install them automatically
checklib "mpc" "gmp" "mpfr"
@@ -596,18 +596,6 @@ build_linux_toolchain () {
extract "linux-$linux_ver"
extract "glibc-$glibc_ver"
- # do we have a patch?
- for p in $glibc_patches; do
- echo "ROCKBOXDEV: applying patch $p"
- (cd $builddir/glibc-$glibc_ver ; patch -p1 < "$patch_dir/$p")
-
- # check if the patch applied cleanly
- if [ $? -gt 0 ]; then
- echo "ROCKBOXDEV: failed to apply patch $p"
- exit
- fi
- done
-
# we make it possible to restart a build on error by using the RBDEV_RESTART
# variable, the format is RBDEV_RESTART="tool" where tool is the toolname at which
# to restart (binutils, gcc)
@@ -638,6 +626,18 @@ build_linux_toolchain () {
# build glibc using the first stage cross compiler
# we need to set the prefix to /usr because the glibc runs on the actual
# target and is indeed installed in /usr
+
+ for p in $glibc_patches; do
+ echo "ROCKBOXDEV: applying patch $p"
+ (cd $builddir/glibc-$glibc_ver ; patch -p1 < "$patch_dir/$p")
+
+ # check if the patch applied cleanly
+ if [ $? -gt 0 ]; then
+ echo "ROCKBOXDEV: failed to apply patch $p"
+ exit
+ fi
+ done
+
RESTART_STEP="glibc" \
prefix="/usr" \
buildtool "glibc" "$glibc_ver" "--target=$target --host=$target --build=$MACHTYPE \
@@ -784,26 +784,26 @@ do
echo ""
case $arch in
[Ii])
- build "binutils" "mipsel-elf" "2.26.1" "" "--disable-werror" "gmp isl"
- build "gcc" "mipsel-elf" "4.9.4" "" "" "gmp mpfr mpc isl"
+ build "binutils" "mipsel-elf" "2.38" "" "--disable-werror" "gmp isl"
+ build "gcc" "mipsel-elf" "9.5.0" "" "" "gmp mpfr mpc isl"
;;
[Mm])
- build "binutils" "m68k-elf" "2.26.1" "" "--disable-werror" "gmp isl"
- build "gcc" "m68k-elf" "4.9.4" "" "--with-arch=cf MAKEINFO=missing" "gmp mpfr mpc isl"
+ build "binutils" "m68k-elf" "2.38" "" "--disable-werror" "gmp isl"
+ build "gcc" "m68k-elf" "9.5.0" "" "--with-arch=cf MAKEINFO=missing" "gmp mpfr mpc isl"
;;
[Aa])
binopts=""
- gccopts=""
+ gccopts="--with-multilib-list=rmprofile"
case $system in
Darwin)
binopts="--disable-nls"
gccopts="--disable-nls"
;;
esac
- build "binutils" "arm-elf-eabi" "2.26.1" "" "$binopts --disable-werror" "gmp isl"
- build "gcc" "arm-elf-eabi" "4.9.4" "rockbox-multilibs-noexceptions-arm-elf-eabi-gcc-4.9.4.diff" "$gccopts MAKEINFO=missing" "gmp mpfr mpc isl"
+ build "binutils" "arm-elf-eabi" "2.38" "" "$binopts --disable-werror" "gmp isl"
+ build "gcc" "arm-elf-eabi" "9.5.0" "rockbox-multilibs-noexceptions-arm-elf-eabi-gcc-9.5.0.diff" "$gccopts MAKEINFO=missing" "gmp mpfr mpc isl"
;;
[Xx])
# IMPORTANT NOTE
@@ -812,30 +812,19 @@ do
#
# Samsung YP-R0/R1:
# ARM1176JZF-S, softfp EABI
- # gcc: 4.9.4 is the latest 4.9.x stable branch, also the only one that
- # compiles with GCC >6
- # kernel: 2.6.27.59 is the same 2.6.x stable kernel as used by the
- # original ct-ng toolchain, the device runs kernel 2.6.24
- # glibc: 2.19 is the latest version that supports kernel 2.6.24 which
- # is used on the device, but we need to support ABI 2.4 because
- # the device uses glibc 2.4.2
- #
+ # kernel: device runs 2.6.24, but oem toolchain is built against 2.6.27.59
+ # glibc: device runs 2.4.2
+ #
# Sony NWZ:
- # gcc: 4.9.4 is the latest 4.9.x stable branch, also the only one that
- # compiles with GCC >6
- # kernel: 2.6.32.68 is the latest 2.6.x stable kernel, the device
- # runs kernel 2.6.23 or 2.6.35 or 3.x for the most recent
- # glibc: 2.19 is the latest version that supports kernel 2.6.23 which
- # is used on many Sony players, but we need to support ABI 2.7
- # because the device uses glibc 2.7
+ # kernel: Varies from device to device; 2.6.23, 2.6.35, and 3.x seen.
+ # glibc: device runs 2.7
#
- # Thus the lowest common denominator is to use the latest 2.6.x stable
- # kernel but compile glibc to support kernel 2.6.23 and glibc 2.4.
- # We use a recent 2.26.1 binutils to avoid any build problems and
- # avoid patches/bugs.
+ # Thus the lowest common denominator is to target 2.6.23 and glibc 2.4
+ # Use a recent 2.6.32 LTS kernel, but glibc 2.20 targeting 2.6.23 and API 2.4
+ #
glibcopts="--enable-kernel=2.6.23 --enable-oldest-abi=2.4"
- build_linux_toolchain "arm-rockbox-linux-gnueabi" "2.26.1" "" "4.9.4" \
- "$gccopts" "2.6.32.68" "2.19" "$glibcopts" "glibc-220-make44.patch"
+ build_linux_toolchain "arm-rockbox-linux-gnueabi" "2.38" "" "9.5.0" \
+ "$gccopts" "2.6.32.71" "2.20" "$glibcopts" "glibc-220-make44.patch"
# build alsa-lib
# we need to set the prefix to how it is on device (/usr) and then
# tweak install dir at make install step
@@ -850,28 +839,22 @@ do
# This toolchain must support several targets and thus must support
# the oldest possible configuration.
#
- # AGPTek Rocker:
- # XBurst release 1 (something inbetween mips32r1 and mips32r2)
- # gcc: 4.9.4 is the latest 4.9.x stable branch, also the only one that
- # compiles with GCC >6
+ # AGPTek Rocker (and other HibyOS players):
# kernel: 3.10.14
# glibc: 2.16
# alsa: 1.0.29
#
- # FiiO M3K Linux:
+ # FiiO M3K Linux (Based on Ingenic SDK):
# kernel: 3.10.14
# glibc: 2.16
# alsa: 1.0.26
#
- # To maximize compatibility, we use kernel 3.2.85 which is the lastest
- # longterm 3.2 kernel and is supported by the latest glibc, and we
- # require support for up to glibc 2.16
- # We use a recent 2.26.1 binutils to avoid any build problems and
- # avoid patches/bugs.
- glibcopts="--enable-kernel=3.2 --enable-oldest-abi=2.16"
- # FIXME: maybe add -mhard-float
- build_linux_toolchain "mipsel-rockbox-linux-gnu" "2.26.1" "" "4.9.4" \
- "$gccopts" "3.2.85" "2.25" "$glibcopts" "glibc-225-make44.patch"
+ # Use a recent 3.10 LTS kernel, but glibc 2.27 targeting 3.2.x and API 2.16
+ #
+ glibcopts="--enable-kernel=3.2 --enable-oldest-abi=2.16 --disable-werror"
+ # FIXME: maybe add -mhard-float?
+ build_linux_toolchain "mipsel-rockbox-linux-gnu" "2.38" "" "9.5.0" \
+ "$gccopts" "3.10.108" "2.27" "$glibcopts" "glibc-227-make44.patch"
# build alsa-lib
# we need to set the prefix to how it is on device (/usr) and then
# tweak install dir at make install step
@@ -879,7 +862,10 @@ do
gettool "alsa-lib" "$alsalib_ver"
extract "alsa-lib-$alsalib_ver"
prefix="/usr" buildtool "alsa-lib" "$alsalib_ver" \
- "--host=$target --disable-python" "" "install DESTDIR=$prefix/$target/sysroot"
+ "--host=$target --disable-python" "" "install DESTDIR=$prefix/$target/sysroot"
+
+ ### Everything below here is needed only for bluetooth support
+
# build libffi
libffi_ver="3.2.1"
gettool "libffi" "$libffi_ver"
@@ -900,7 +886,7 @@ do
gettool "glib" "$glib_ver"
extract "glib-$glib_ver"
prefix="/usr" buildtool "glib" "$glib_ver" \
- "--host=$target --with-sysroot=$prefix/$target/sysroot --disable-libelf glib_cv_stack_grows=no glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=yes ac_cv_func_posix_getgrgid_r=yes" "" "install DESTDIR=$prefix/$target/sysroot"
+ "--host=$target --with-sysroot=$prefix/$target/sysroot --disable-libelf glib_cv_stack_grows=no glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=yes ac_cv_func_posix_getgrgid_r=yes CFLAGS=-Wno-error=format-nonliteral" "" "install DESTDIR=$prefix/$target/sysroot"
# build expat
expat_ver="2.1.0"
@@ -916,7 +902,6 @@ do
prefix="/usr" buildtool "dbus" "$dbus_ver" \
"--host=$target --with-sysroot=$prefix/$target/sysroot --includedir=/usr/include --enable-abstract-sockets ac_cv_lib_expat_XML_ParserCreate_MM=yes --disable-systemd --disable-launchd --enable-x11-autolaunch=no --with-x=no -disable-selinux --disable-apparmor --disable-doxygen-docs " "" "install DESTDIR=$prefix/$target/sysroot "
-
;;
*)
echo "ROCKBOXDEV: Unsupported architecture option: $arch"
diff --git a/tools/toolchain-patches/apple_silicon.patch b/tools/toolchain-patches/apple_silicon.patch
index a428c776da..d0f6a66584 100644
--- a/tools/toolchain-patches/apple_silicon.patch
+++ b/tools/toolchain-patches/apple_silicon.patch
@@ -1,3 +1,16 @@
+diff --git a/gcc/gcc/config/aarch64/aarch64.h b/gcc/gcc/config/aarch64/aarch64.h
+index 976f9afae5..736b83ff0b 100644
+--- a/gcc/config/aarch64/aarch64.h
++++ b/gcc/config/aarch64/aarch64.h
+@@ -1000,7 +1000,7 @@ extern const char *aarch64_rewrite_mcpu (int argc, const char **argv);
+ #define MCPU_TO_MARCH_SPEC_FUNCTIONS \
+ { "rewrite_mcpu", aarch64_rewrite_mcpu },
+
+-#if defined(__aarch64__)
++#if defined(__aarch64__) && ! defined(__APPLE__)
+ extern const char *host_detect_local_cpu (int argc, const char **argv);
+ #define HAVE_LOCAL_CPU_DETECT
+ # define EXTRA_SPEC_FUNCTIONS \
diff --git a/gcc/gcc/config/host-darwin.c b/gcc/gcc/config/host-darwin.c
index 8f700eec85..b737abc006 100644
--- a/gcc/config/host-darwin.c
diff --git a/tools/toolchain-patches/glibc-225-make44.patch b/tools/toolchain-patches/glibc-227-make44.patch
index 45d4e9c621..3de5cb0fdd 100644
--- a/tools/toolchain-patches/glibc-225-make44.patch
+++ b/tools/toolchain-patches/glibc-227-make44.patch
@@ -1,7 +1,7 @@
-diff -Naur glibc-2.25/libio/stdio.h glibc-2.25-patched/libio/stdio.h
---- glibc-2.25/libio/stdio.h 2017-02-05 10:28:43.000000000 -0500
-+++ glibc-2.25-patched/libio/stdio.h 2023-05-23 15:22:27.482980335 -0400
-@@ -154,18 +154,23 @@
+diff -Naur glibc-2.27/libio/stdio.h glibc-2.27-patched/libio/stdio.h
+--- glibc-2.27/libio/stdio.h 2018-02-01 11:17:18.000000000 -0500
++++ glibc-2.27-patched/libio/stdio.h 2023-05-23 14:10:06.618633203 -0400
+@@ -118,18 +118,23 @@
# define P_tmpdir "/tmp"
#endif
@@ -32,20 +32,19 @@ diff -Naur glibc-2.25/libio/stdio.h glibc-2.25-patched/libio/stdio.h
/* Standard streams. */
extern struct _IO_FILE *stdin; /* Standard input stream. */
-diff -Naur glibc-2.25/Makerules glibc-2.25-patched/Makerules
---- glibc-2.25/Makerules 2017-02-05 10:28:43.000000000 -0500
-+++ glibc-2.25-patched/Makerules 2023-05-23 15:22:05.594967548 -0400
-@@ -1474,55 +1474,7 @@
- endif
+diff -Naur glibc-2.27/Makerules glibc-2.27-patched/Makerules
+--- glibc-2.27/Makerules 2018-02-01 11:17:18.000000000 -0500
++++ glibc-2.27-patched/Makerules 2023-05-23 14:10:06.617633203 -0400
+@@ -1522,46 +1522,6 @@
endif
--
+
-# These will have been set by sysdeps/posix/Makefile.
-L_tmpnam ?= 1
-TMP_MAX ?= 0
-L_ctermid ?= 1
-L_cuserid ?= 1
-
+-
-stdio_lim = $(common-objpfx)bits/stdio_lim.h
-
-$(stdio_lim:lim.h=%.h) $(stdio_lim:lim.h=%.d): $(stdio_lim:lim.h=%.st); @:
@@ -53,8 +52,7 @@ diff -Naur glibc-2.25/Makerules glibc-2.25-patched/Makerules
- $(common-objpfx)config.make
- $(make-target-directory)
- { echo '#include "$(..)posix/bits/posix1_lim.h"'; \
-- echo '#define _LIBC 1'; \
-- echo '#include "$(..)misc/sys/uio.h"'; } | \
+- } | \
- $(CC) -E -dM -MD -MP -MF $(@:st=dT) -MT '$(@:st=h) $(@:st=d)' \
- $(CPPUNDEFS) $(+includes) -xc - -o $(@:st=hT)
- sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
@@ -62,21 +60,14 @@ diff -Naur glibc-2.25/Makerules glibc-2.25-patched/Makerules
- mv -f $(@:st=dt) $(@:st=d)
- fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; \
- filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`; \
-- iov_max=`sed -n 's/^#define UIO_MAXIOV //p' $(@:st=hT)`; \
- fopen_max=$${fopen_max:-16}; \
- filename_max=$${filename_max:-1024}; \
-- if [ -z "$$iov_max" ]; then \
-- define_iov_max="# undef IOV_MAX"; \
-- else \
-- define_iov_max="# define IOV_MAX $$iov_max"; \
-- fi; \
- sed -e "s/@FOPEN_MAX@/$$fopen_max/" \
- -e "s/@FILENAME_MAX@/$$filename_max/" \
- -e "s/@L_tmpnam@/$(L_tmpnam)/" \
- -e "s/@TMP_MAX@/$(TMP_MAX)/" \
- -e "s/@L_ctermid@/$(L_ctermid)/" \
- -e "s/@L_cuserid@/$(L_cuserid)/" \
-- -e "s/@define_IOV_MAX@/$$define_iov_max/" \
- $< > $(@:st=h.new)
- $(move-if-change) $(@:st=h.new) $(@:st=h)
-# Remove these last so that they can be examined if something went wrong.
@@ -91,9 +82,9 @@ diff -Naur glibc-2.25/Makerules glibc-2.25-patched/Makerules
FORCE:
.PHONY: echo-headers
-diff -Naur glibc-2.25/Rules glibc-2.25-patched/Rules
---- glibc-2.25/Rules 2017-02-05 10:28:43.000000000 -0500
-+++ glibc-2.25-patched/Rules 2023-05-23 15:22:27.482980335 -0400
+diff -Naur glibc-2.27/Rules glibc-2.27-patched/Rules
+--- glibc-2.27/Rules 2018-02-01 11:17:18.000000000 -0500
++++ glibc-2.27-patched/Rules 2023-05-23 14:10:06.617633203 -0400
@@ -60,9 +60,6 @@
common-generated :=
endif
@@ -104,11 +95,11 @@ diff -Naur glibc-2.25/Rules glibc-2.25-patched/Rules
include $(..)Makerules
.PHONY: subdir_lib
-diff -Naur glibc-2.25/stdio-common/stdio_lim.h.in glibc-2.25-patched/stdio-common/stdio_lim.h.in
---- glibc-2.25/stdio-common/stdio_lim.h.in 2017-02-05 10:28:43.000000000 -0500
-+++ glibc-2.25-patched/stdio-common/stdio_lim.h.in 1969-12-31 19:00:00.000000000 -0500
-@@ -1,42 +0,0 @@
--/* Copyright (C) 1994-2017 Free Software Foundation, Inc.
+diff -Naur glibc-2.27/stdio-common/stdio_lim.h.in glibc-2.27-patched/stdio-common/stdio_lim.h.in
+--- glibc-2.27/stdio-common/stdio_lim.h.in 2018-02-01 11:17:18.000000000 -0500
++++ glibc-2.27-patched/stdio-common/stdio_lim.h.in 1969-12-31 19:00:00.000000000 -0500
+@@ -1,39 +0,0 @@
+-/* Copyright (C) 1994-2018 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
@@ -125,34 +116,31 @@ diff -Naur glibc-2.25/stdio-common/stdio_lim.h.in glibc-2.25-patched/stdio-commo
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
--#if !defined _STDIO_H && !defined __need_FOPEN_MAX && !defined __need_IOV_MAX
+-#ifndef _BITS_STDIO_LIM_H
+-#define _BITS_STDIO_LIM_H 1
+-
+-#ifndef _STDIO_H
-# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
-#endif
-
--#ifdef _STDIO_H
--# define L_tmpnam @L_tmpnam@
--# define TMP_MAX @TMP_MAX@
--# define FILENAME_MAX @FILENAME_MAX@
+-#define L_tmpnam @L_tmpnam@
+-#define TMP_MAX @TMP_MAX@
+-#define FILENAME_MAX @FILENAME_MAX@
-
--# ifdef __USE_POSIX
--# define L_ctermid @L_ctermid@
--# if !defined __USE_XOPEN2K || defined __USE_GNU
--# define L_cuserid @L_cuserid@
--# endif
+-#ifdef __USE_POSIX
+-# define L_ctermid @L_ctermid@
+-# if !defined __USE_XOPEN2K || defined __USE_GNU
+-# define L_cuserid @L_cuserid@
-# endif
-#endif
-
--#if defined __need_FOPEN_MAX || defined _STDIO_H
--# undef FOPEN_MAX
--# define FOPEN_MAX @FOPEN_MAX@
--#endif
+-#undef FOPEN_MAX
+-#define FOPEN_MAX @FOPEN_MAX@
-
--#if defined __need_IOV_MAX && !defined IOV_MAX
--@define_IOV_MAX@
--#endif
-diff -Naur glibc-2.25/sysdeps/mach/hurd/bits/stdio_lim.h glibc-2.25-patched/sysdeps/mach/hurd/bits/stdio_lim.h
---- glibc-2.25/sysdeps/mach/hurd/bits/stdio_lim.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.25-patched/sysdeps/mach/hurd/bits/stdio_lim.h 2023-05-23 15:22:27.483980336 -0400
+-#endif /* bits/stdio_lim.h */
+diff -Naur glibc-2.27/sysdeps/mach/hurd/bits/stdio_lim.h glibc-2.27-patched/sysdeps/mach/hurd/bits/stdio_lim.h
+--- glibc-2.27/sysdeps/mach/hurd/bits/stdio_lim.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.27-patched/sysdeps/mach/hurd/bits/stdio_lim.h 2023-05-23 14:10:06.618633203 -0400
@@ -0,0 +1,28 @@
+/* System specific stdio.h definitions. Hurd version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
@@ -182,9 +170,9 @@ diff -Naur glibc-2.25/sysdeps/mach/hurd/bits/stdio_lim.h glibc-2.25-patched/sysd
+#define FILENAME_MAX 1024
+
+#endif /* bits/stdio_lim.h */
-diff -Naur glibc-2.25/sysdeps/posix/Makefile glibc-2.25-patched/sysdeps/posix/Makefile
---- glibc-2.25/sysdeps/posix/Makefile 2017-02-05 10:28:43.000000000 -0500
-+++ glibc-2.25-patched/sysdeps/posix/Makefile 2023-05-23 15:22:27.483980336 -0400
+diff -Naur glibc-2.27/sysdeps/posix/Makefile glibc-2.27-patched/sysdeps/posix/Makefile
+--- glibc-2.27/sysdeps/posix/Makefile 2018-02-01 11:17:18.000000000 -0500
++++ glibc-2.27-patched/sysdeps/posix/Makefile 2023-05-23 14:10:06.618633203 -0400
@@ -1,8 +1,3 @@
-# These affect the generated bits/stdio_lim.h file.
-L_tmpnam = 20
@@ -194,9 +182,9 @@ diff -Naur glibc-2.25/sysdeps/posix/Makefile glibc-2.25-patched/sysdeps/posix/Ma
ifeq ($(subdir)|$(have-thread-library),rt|no)
# With NPTL, this lives in libpthread so it can be used for sem_open too.
-diff -Naur glibc-2.25/sysdeps/unix/sysv/linux/bits/stdio_lim.h glibc-2.25-patched/sysdeps/unix/sysv/linux/bits/stdio_lim.h
---- glibc-2.25/sysdeps/unix/sysv/linux/bits/stdio_lim.h 1969-12-31 19:00:00.000000000 -0500
-+++ glibc-2.25-patched/sysdeps/unix/sysv/linux/bits/stdio_lim.h 2023-05-23 15:22:27.483980336 -0400
+diff -Naur glibc-2.27/sysdeps/unix/sysv/linux/bits/stdio_lim.h glibc-2.27-patched/sysdeps/unix/sysv/linux/bits/stdio_lim.h
+--- glibc-2.27/sysdeps/unix/sysv/linux/bits/stdio_lim.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.27-patched/sysdeps/unix/sysv/linux/bits/stdio_lim.h 2023-05-23 14:10:06.618633203 -0400
@@ -0,0 +1,28 @@
+/* System specific stdio.h definitions. Linux version.
+ Copyright (C) 2023 Free Software Foundation, Inc.
@@ -219,9 +207,9 @@ diff -Naur glibc-2.25/sysdeps/unix/sysv/linux/bits/stdio_lim.h glibc-2.25-patche
+#ifndef _BITS_STDIO_LIM_H
+#define _BITS_STDIO_LIM_H 1
+
-+//#ifndef _STDIO_H
-+//# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
-+//#endif
++#ifndef _STDIO_H
++# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
++#endif
+
+#define FILENAME_MAX 4096
+
diff --git a/tools/toolchain-patches/rockbox-multilibs-noexceptions-arm-elf-eabi-gcc-4.9.4.diff b/tools/toolchain-patches/rockbox-multilibs-noexceptions-arm-elf-eabi-gcc-4.9.4.diff
deleted file mode 100644
index cd98d3751c..0000000000
--- a/tools/toolchain-patches/rockbox-multilibs-noexceptions-arm-elf-eabi-gcc-4.9.4.diff
+++ /dev/null
@@ -1,56 +0,0 @@
-diff -Naur gcc-4.9.4/gcc/config/arm/t-arm-elf gcc-4.9.4-fixed/gcc/config/arm/t-arm-elf
---- gcc-4.9.4/gcc/config/arm/t-arm-elf 2014-01-02 17:23:26.000000000 -0500
-+++ gcc-4.9.4-fixed/gcc/config/arm/t-arm-elf 2020-07-01 22:11:01.198403110 -0400
-@@ -44,6 +44,11 @@
- #MULTILIB_EXCEPTIONS += *mcpu=fa526/*mfloat-abi=hard*
- #MULTILIB_EXCEPTIONS += *mcpu=fa626/*mfloat-abi=hard*
-
-+# We build a lib for each specific CPU Rockbox targets. If anyone knows a better
-+# way to do this, please let us know.
-+MULTILIB_OPTIONS += mcpu=arm7tdmi/mcpu=arm9tdmi/mcpu=arm9e/mcpu=arm926ej-s/mcpu=arm1136jf-s
-+MULTILIB_DIRNAMES += arm7tdmi arm9tdmi arm9e arm926ej-s arm1136jf-s
-+
- # MULTILIB_OPTIONS += mcpu=ep9312
- # MULTILIB_DIRNAMES += ep9312
- # MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312*
-@@ -56,8 +61,8 @@
- # MULTILIB_DIRNAMES += fpu soft
- # MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard*
- #
--# MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork
--# MULTILIB_DIRNAMES += normal interwork
-+MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork
-+MULTILIB_DIRNAMES += normal interwork
- #
- # MULTILIB_OPTIONS += fno-leading-underscore/fleading-underscore
- # MULTILIB_DIRNAMES += elf under
-diff -Naur gcc-4.9.4/libgcc/config/arm/t-bpabi gcc-4.9.4-fixed/libgcc/config/arm/t-bpabi
---- gcc-4.9.4/libgcc/config/arm/t-bpabi 2012-08-17 11:06:06.000000000 -0400
-+++ gcc-4.9.4-fixed/libgcc/config/arm/t-bpabi 2020-07-01 22:13:39.103762818 -0400
-@@ -17,4 +17,4 @@
- # On ARM, specifying -fnon-call-exceptions will needlessly pull in
- # the unwinder in simple programs which use 64-bit division. Omitting
- # the option is safe.
--LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
-+LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions -fno-non-call-exceptions
-diff -Naur gcc-4.9.4/libgcc/Makefile.in gcc-4.9.4-fixed/libgcc/Makefile.in
---- gcc-4.9.4/libgcc/Makefile.in 2014-01-08 11:37:08.000000000 -0500
-+++ gcc-4.9.4-fixed/libgcc/Makefile.in 2020-07-01 22:11:01.199403087 -0400
-@@ -495,7 +495,7 @@
- ifeq ($(LIB2_DIVMOD_EXCEPTION_FLAGS),)
- # Provide default flags for compiling divmod functions, if they haven't been
- # set already by a target-specific Makefile fragment.
--LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions -fnon-call-exceptions
-+LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions -fno-non-call-exceptions
- endif
-
- # Build LIB2_DIVMOD_FUNCS.
-@@ -816,7 +816,7 @@
- # libgcc_eh.a, only LIB2ADDEH matters. If we do, only LIB2ADDEHSTATIC and
- # LIB2ADDEHSHARED matter. (Usually all three are identical.)
-
--c_flags := -fexceptions
-+c_flags := -fno-exceptions
-
- ifeq ($(enable_shared),yes)
-
diff --git a/tools/toolchain-patches/rockbox-multilibs-noexceptions-arm-elf-eabi-gcc-9.5.0.diff b/tools/toolchain-patches/rockbox-multilibs-noexceptions-arm-elf-eabi-gcc-9.5.0.diff
new file mode 100644
index 0000000000..09fa4c82b2
--- /dev/null
+++ b/tools/toolchain-patches/rockbox-multilibs-noexceptions-arm-elf-eabi-gcc-9.5.0.diff
@@ -0,0 +1,43 @@
+diff -aur gcc-8.5.0/gcc/config/arm/t-arm-elf gcc-8.5.0-patched/gcc/config/arm/t-arm-elf
+--- gcc-8.5.0/gcc/config/arm/t-arm-elf 2021-05-14 04:42:08.000000000 -0400
++++ gcc-8.5.0-patched/gcc/config/arm/t-arm-elf 2022-11-26 23:16:30.714433566 -0500
+@@ -81,6 +81,10 @@
+ MULTILIB_REQUIRED += marm/mfpu=auto/march=armv5te+fp/mfloat-abi=hard
+ MULTILIB_REQUIRED += mthumb/mfpu=auto/march=armv7+fp/mfloat-abi=hard
+
++# And we want to be able to disable interworking
++MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork
++MULTILIB_DIRNAMES += normal interwork
++
+ # PART 3 - Match rules
+
+ # Map all supported FPUs onto mfpu=auto
+diff -aur gcc-8.5.0/libgcc/config/arm/t-bpabi gcc-8.5.0-patched/libgcc/config/arm/t-bpabi
+--- gcc-8.5.0/libgcc/config/arm/t-bpabi 2021-05-14 04:42:10.000000000 -0400
++++ gcc-8.5.0-patched/libgcc/config/arm/t-bpabi 2022-11-26 23:14:40.938038440 -0500
+@@ -17,4 +17,4 @@
+ # On ARM, specifying -fnon-call-exceptions will needlessly pull in
+ # the unwinder in simple programs which use 64-bit division. Omitting
+ # the option is safe.
+-LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
++LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions -fno-non-call-exceptions
+diff -aur gcc-8.5.0/libgcc/Makefile.in gcc-8.5.0-patched/libgcc/Makefile.in
+--- gcc-8.5.0/libgcc/Makefile.in 2021-05-14 04:42:10.000000000 -0400
++++ gcc-8.5.0-patched/libgcc/Makefile.in 2022-11-26 23:13:56.781304250 -0500
+@@ -530,7 +530,7 @@
+ ifeq ($(LIB2_DIVMOD_EXCEPTION_FLAGS),)
+ # Provide default flags for compiling divmod functions, if they haven't been
+ # set already by a target-specific Makefile fragment.
+-LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions -fnon-call-exceptions
++LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions -fno-non-call-exceptions
+ endif
+
+ # Build LIB2_DIVMOD_FUNCS.
+@@ -851,7 +851,7 @@
+ # libgcc_eh.a, only LIB2ADDEH matters. If we do, only LIB2ADDEHSTATIC and
+ # LIB2ADDEHSHARED matter. (Usually all three are identical.)
+
+-c_flags := -fexceptions
++c_flags := -fno-exceptions
+
+ ifeq ($(enable_shared),yes)