diff --git a/_multibuild b/_multibuild
index 16ce003..99df490 100644
--- a/_multibuild
+++ b/_multibuild
@@ -23,8 +23,6 @@
cross-hppa-gcc13
cross-arm-none-gcc13-bootstrap
cross-arm-none-gcc13
-cross-epiphany-gcc13-bootstrap
-cross-epiphany-gcc13
cross-riscv64-elf-gcc13-bootstrap
cross-riscv64-elf-gcc13
cross-rx-gcc13-bootstrap
diff --git a/change_spec b/change_spec
index 066845e..2bda278 100644
--- a/change_spec
+++ b/change_spec
@@ -115,7 +115,7 @@ add_cross cross-mips-gcc$base_ver mips mips-suse-linux %define gcc_icecream 1
add_cross cross-hppa-gcc$base_ver-bootstrap hppa hppa-suse-linux %define gcc_libc_bootstrap 1
add_cross cross-hppa-gcc$base_ver hppa hppa-suse-linux %define gcc_icecream 1
add_newlib_cross cross-arm-none-gcc$base_ver arm-none arm-none-eabi
-add_newlib_cross cross-epiphany-gcc$base_ver epiphany epiphany-elf
+#add_newlib_cross cross-epiphany-gcc$base_ver epiphany epiphany-elf
#add_newlib_cross cross-nds32le-gcc$base_ver nds32le nds32le-elf
add_newlib_cross cross-riscv64-elf-gcc$base_ver riscv64 riscv64-elf
#add_newlib_cross cross-rl78-gcc$base_ver rl78 rl78-elf
diff --git a/cross-aarch64-gcc13-bootstrap.spec b/cross-aarch64-gcc13-bootstrap.spec
index f1dcc56..409cda2 100644
--- a/cross-aarch64-gcc13-bootstrap.spec
+++ b/cross-aarch64-gcc13-bootstrap.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-aarch64-gcc13.spec b/cross-aarch64-gcc13.spec
index 2712b1b..0361e5e 100644
--- a/cross-aarch64-gcc13.spec
+++ b/cross-aarch64-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-amdgcn-gcc13.spec b/cross-amdgcn-gcc13.spec
index 7e3dd18..4a8c2ad 100644
--- a/cross-amdgcn-gcc13.spec
+++ b/cross-amdgcn-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-arm-gcc13.spec b/cross-arm-gcc13.spec
index 9a580c3..38b5929 100644
--- a/cross-arm-gcc13.spec
+++ b/cross-arm-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-arm-none-gcc13-bootstrap.spec b/cross-arm-none-gcc13-bootstrap.spec
index 154503b..701a8d0 100644
--- a/cross-arm-none-gcc13-bootstrap.spec
+++ b/cross-arm-none-gcc13-bootstrap.spec
@@ -108,7 +108,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -139,6 +139,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -146,6 +147,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -368,10 +370,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-arm-none-gcc13.spec b/cross-arm-none-gcc13.spec
index 82649b8..f95a62f 100644
--- a/cross-arm-none-gcc13.spec
+++ b/cross-arm-none-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-avr-gcc13-bootstrap.spec b/cross-avr-gcc13-bootstrap.spec
index 8241584..cc8cfd1 100644
--- a/cross-avr-gcc13-bootstrap.spec
+++ b/cross-avr-gcc13-bootstrap.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-avr-gcc13.spec b/cross-avr-gcc13.spec
index d503de4..4a5ae36 100644
--- a/cross-avr-gcc13.spec
+++ b/cross-avr-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-bpf-gcc13.spec b/cross-bpf-gcc13.spec
index 4f90ce2..7249a2c 100644
--- a/cross-bpf-gcc13.spec
+++ b/cross-bpf-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-epiphany-gcc13-bootstrap.spec b/cross-epiphany-gcc13-bootstrap.spec
deleted file mode 100644
index 54ccd99..0000000
--- a/cross-epiphany-gcc13-bootstrap.spec
+++ /dev/null
@@ -1,1083 +0,0 @@
-#
-# spec file
-#
-# Copyright (c) 2024 SUSE LLC
-#
-# All modifications and additions to the file contributed by third parties
-# remain the property of their copyright owners, unless otherwise agreed
-# upon. The license for this file, and modifications and additions to the
-# file, is the same license as for the pristine package itself (unless the
-# license for the pristine package is not an Open Source License, in which
-# case the license is the MIT License). An "Open Source License" is a
-# license that conforms to the Open Source Definition (Version 1.9)
-# published by the Open Source Initiative.
-
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
-#
-
-
-%define pkgname cross-epiphany-gcc13-bootstrap
-%define cross_arch epiphany
-%define gcc_target_arch epiphany-elf
-%define gcc_target_newlib 1
-%define gcc_libc_bootstrap 1
-# nospeccleaner
-
-%define build_cp 0%{!?gcc_accel:1}
-%if 0%{?gcc_libc_bootstrap:1} || "%{cross_arch}" == "bpf"
-%define build_cp 0
-%endif
-%define build_ada 0
-%define build_libjava 0
-%define build_java 0
-
-%define build_fortran 0%{?gcc_accel:1}
-%define build_objc 0
-%define build_objcp 0
-%define build_go 0
-%define build_nvptx 0
-%define build_gcn 0
-%define build_d 0
-%define build_rust 0
-%define build_m2 0
-
-%define enable_plugins 0
-%define build_jit 0
-%define use_lto_bootstrap 0
-
-%define binutils_target %{cross_arch}
-%if "%{cross_arch}" == "armv7l" || "%{cross_arch}" == "armv7hl"
-%define binutils_target arm
-%endif
-%if "%{cross_arch}" == "armv6l" || "%{cross_arch}" == "armv6hl"
-%define binutils_target arm
-%endif
-%if "%{cross_arch}" == "armv5tel"
-%define binutils_target arm
-%endif
-%if "%{cross_arch}" == "arm-none"
-%define binutils_target arm
-%endif
-%if "%{cross_arch}" == "riscv64-elf"
-%define binutils_target riscv64
-%endif
-%if "%{cross_arch}" == "sparcv9"
-%define binutils_target sparc
-%endif
-%define canonical_target %(echo %{binutils_target} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
-%if "%{binutils_target}" == "avr" || "%{binutils_target}" == "spu" || "%{binutils_target}" == "pru"
-%define binutils_os %{canonical_target}
-%else
-%if "%{binutils_target}" == "epiphany" || "%{binutils_target}" == "nds32le" || "%{binutils_target}" == "rl78" || "%{binutils_target}" == "rx"
-%define binutils_os %{canonical_target}-elf
-%else
-%if "%{binutils_target}" == "arm"
-%define binutils_os %{canonical_target}-suse-linux-gnueabi
-%else
-%if "%{binutils_target}" == "bpf"
-%define binutils_os %{canonical_target}-none
-%else
-%if 0%{?gcc_accel:1}
-%define binutils_os %{gcc_target_arch}
-%else
-%define binutils_os %{canonical_target}-suse-linux
-%endif
-%endif
-%endif
-%endif
-%endif
-
-%if 0%{?gcc_icecream:1}
-%define sysroot %{_prefix}/%{gcc_target_arch}
-%else
-# offloading builds newlib in-tree and can install in
-# the GCC private path without extra sysroot
-%if 0%{!?gcc_accel:1}
-# use same sysroot as in binutils.spec
-%define sysroot %{_prefix}/%{binutils_os}/sys-root
-%endif
-%endif
-
-%if %{suse_version} >= 1220
-%define selfconflict() %1
-%else
-%define selfconflict() otherproviders(%1)
-%endif
-
-Name: %{pkgname}
-%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
-
-URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
-Release: 0
-%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
-%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
-%define binsuffix -13
-%if %{suse_version} < 1310
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-%endif
-Group: Development/Languages/C and C++
-Source: gcc-%{version}.tar.xz
-Source1: change_spec
-Source2: gcc13-rpmlintrc
-Source3: gcc13-testresults-rpmlintrc
-Source4: README.First-for.SuSE.packagers
-Source5: newlib-4.3.0.20230120.tar.xz
-Patch2: gcc-add-defaultsspec.diff
-Patch5: tls-no-direct.diff
-Patch6: gcc43-no-unwind-tables.diff
-Patch7: gcc48-libstdc++-api-reference.patch
-Patch11: gcc7-remove-Wexpansion-to-defined-from-Wextra.patch
-Patch15: gcc7-avoid-fixinc-error.diff
-Patch16: gcc9-reproducible-builds.patch
-Patch17: gcc9-reproducible-builds-buildid-for-checksum.patch
-Patch18: gcc10-amdgcn-llvm-as.patch
-Patch19: gcc11-gdwarf-4-default.patch
-Patch20: gcc11-amdgcn-disable-hot-cold-partitioning.patch
-Patch21: gdcflags.patch
-Patch23: gcc13-bsc1216664.patch
-Patch24: gcc13-sanitizer-remove-crypt-interception.patch
-Patch26: gcc13-pr101523.patch
-Patch27: gcc13-amdgcn-remove-fiji.patch
-# A set of patches from the RH srpm
-Patch51: gcc41-ppc32-retaddr.patch
-# Some patches taken from Debian
-Patch60: gcc44-textdomain.patch
-Patch61: gcc44-rename-info-files.patch
-# Feature backports
-Patch100: gcc13-pr88345-min-func-alignment.diff
-
-# Define the canonical target and host architecture
-# %%gcc_target_arch is supposed to be the full target triple
-# %%cross_arch is supposed to be the rpm target variant arch
-# %%TARGET_ARCH will be the canonicalized target CPU part
-# %%HOST_ARCH will be the canonicalized host CPU part
-%if 0%{?gcc_target_arch:1}
-%define TARGET_ARCH %(echo %{cross_arch} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
-%else
-%define TARGET_ARCH %(echo %{_target_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
-%endif
-%if 0%{?disable_32bit:1}
-%define biarch 0
-%else
-%define biarch %(case " %{biarch_targets} " in (*" %{TARGET_ARCH} "*) echo 1;; (*) echo 0;; esac)
-%endif
-
-%define HOST_ARCH %(echo %{_target_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
-%ifarch ppc
-%define GCCDIST powerpc64-suse-linux
-%else
-%ifarch %sparc
-%define GCCDIST sparc64-suse-linux
-%else
-%ifarch %arm
-%define GCCDIST %{HOST_ARCH}-suse-linux-gnueabi
-%else
-%define GCCDIST %{HOST_ARCH}-suse-linux
-%endif
-%endif
-%endif
-
-%define libsubdir %{_libdir}/gcc/%{GCCDIST}/%{gcc_dir_version}
-%define gxxinclude %{_prefix}/include/c++/%{gcc_dir_version}
-
-%if "%{cross_arch}" != "nvptx"
-%if "%{cross_arch}" != "amdgcn"
-BuildRequires: cross-%{binutils_target}-binutils
-Requires: cross-%{binutils_target}-binutils
-%endif
-%endif
-%define hostsuffix %{nil}
-%if 0%{suse_version} < 1220
-%define hostsuffix -4.8
-BuildRequires: gcc48-c++
-%else
-BuildRequires: gcc-c++
-%endif
-%if %{suse_version} > 1500
-BuildRequires: libzstd-devel
-%endif
-BuildRequires: bison
-BuildRequires: flex
-BuildRequires: gettext-devel
-BuildRequires: glibc-devel-32bit
-%if %{with limitbuild}
-BuildRequires: memory-constraints
-%endif
-BuildRequires: mpc-devel
-BuildRequires: mpfr-devel
-BuildRequires: perl
-%if %{suse_version} > 1220
-BuildRequires: makeinfo
-%else
-BuildRequires: texinfo
-%endif
-BuildRequires: zlib-devel
-%if %{suse_version} >= 1230
-BuildRequires: isl-devel
-%endif
-%ifarch ia64
-BuildRequires: libunwind-devel
-%endif
-%if 0%{!?gcc_icecream:1}
-%if 0%{!?gcc_libc_bootstrap:1}
-%if 0%{?gcc_target_newlib:1}
-%if !0%{?is_opensuse}
-ExclusiveArch: do-not-build
-%endif
-BuildRequires: cross-%cross_arch-newlib-devel
-Requires: cross-%cross_arch-newlib-devel
-%endif
-%if "%{cross_arch}" == "avr"
-%if !0%{?is_opensuse}
-ExclusiveArch: do-not-build
-%endif
-BuildRequires: avr-libc
-%endif
-%if 0%{?gcc_target_glibc:1}
-%if %{suse_version} < 1600
-ExclusiveArch: do-not-build
-%endif
-BuildRequires: cross-%cross_arch-glibc-devel
-Requires: cross-%cross_arch-glibc-devel
-%endif
-%endif
-%if "%{cross_arch}" == "nvptx"
-BuildRequires: nvptx-tools
-Requires: cross-nvptx-newlib-devel >= %{version}-%{release}
-Requires: nvptx-tools
-ExclusiveArch: x86_64
-%define nvptx_newlib 1
-%endif
-%if "%{cross_arch}" == "amdgcn"
-# amdgcn uses the llvm assembler and linker
-%if %{suse_version} < 1550
-BuildRequires: llvm13
-%define product_libs_llvm_ver 13
-%else
-BuildRequires: llvm%{product_libs_llvm_ver}
-%endif
-BuildRequires: lld%{product_libs_llvm_ver}
-%if %{suse_version} < 1550
-Requires: llvm13
-%else
-Requires: llvm%{product_libs_llvm_ver}
-%endif
-Requires: cross-amdgcn-newlib-devel >= %{version}-%{release}
-Requires: lld%{product_libs_llvm_ver}
-# SLE12 does not fulfil build requirements for GCN, SLE15 SP1 does
-# technically also SLE12 SP5 but do not bother there
-%if %{suse_version} >= 1550 || 0%{?sle_version:%sle_version} >= 150100
-ExclusiveArch: x86_64
-%else
-ExclusiveArch: do-not-build
-%endif
-%define amdgcn_newlib 1
-%endif
-%endif
-%if "%{cross_arch}" == "pru"
-ExclusiveArch: %arm
-%endif
-%if 0%{?gcc_target_glibc:1}
-%ifarch %{cross_arch}
-ExcludeArch: %{cross_arch}
-%endif
-%endif
-%if 0%{?gcc_icecream:1}%{?gcc_libc_bootstrap:1}
-ExclusiveArch: i586 ppc64le ppc64 x86_64 s390x aarch64 riscv64
-%endif
-%define _binary_payload w.ufdio
-# Obsolete cross-ppc-gcc49 from cross-ppc64-gcc49 which has
-# file conflicts with it and is no longer packaged
-%if "%pkgname" == "cross-ppc64-gcc49"
-Obsoletes: cross-ppc-gcc49 <= 4.9.0+r209354
-%endif
-%if 0%{?gcc_target_newlib:1}%{?gcc_target_glibc:1}
-# Generally only one cross for the same target triplet can be installed
-# at the same time as we are populating a non-version-specific sysroot
-Provides: %{gcc_target_arch}-gcc
-Conflicts: %selfconflict %{gcc_target_arch}-gcc
-%endif
-%if 0%{?gcc_libc_bootstrap:1}
-# The -bootstrap packages file-conflict with the non-bootstrap variants.
-# Even if we don't actually (want to) distribute the bootstrap variants
-# the following avoids repo-checker spamming us endlessly.
-Conflicts: cross-%{cross_arch}-gcc13
-%endif
-#!BuildIgnore: gcc-PIE
-%if 0%{build_cp:1}
-# The cross compiler only packages the arch specific c++ headers, so
-# we need to depend on the host libstdc++ devel headers (we wouldn't need
-# the libs, though)
-Requires: libstdc++6-devel-gcc13
-%endif
-AutoReqProv: off
-%if 0%{!?gcc_accel:1}
-BuildRequires: update-alternatives
-Requires(post): update-alternatives
-Requires(preun):update-alternatives
-%endif
-Summary: The GNU Compiler Collection targeting %{cross_arch}
-License: GPL-3.0-or-later
-
-%description
-The GNU Compiler Collection as a cross-compiler targeting %{cross_arch}.
-%if 0%{?gcc_icecream:1}
-Note this is only useful for building freestanding things like the
-kernel since it fails to include target libraries and headers.
-%endif
-%if 0%{?gcc_libc_bootstrap:1}
-This is a package that is necessary for bootstrapping another package
-only, it is not intended for any other use.
-%endif
-
-%if 0%{suse_version} >= 1500
-# Synchronize output by lines, useful for configure output
-%define make_output_sync -Oline
-%endif
-
-%prep
-%if 0%{?nvptx_newlib:1}%{?amdgcn_newlib:1}
-%setup -q -n gcc-%{version} -a 5
-ln -s newlib-4.3.0.20230120/newlib .
-%else
-%setup -q -n gcc-%{version}
-%endif
-
-#test patching start
-
-%patch -P 2
-%patch -P 5
-%patch -P 6
-%patch -P 7
-%patch -P 11
-%patch -P 15
-%patch -P 16
-%patch -P 17 -p1
-# These patches are needed only for llvm11
-%if "%{TARGET_ARCH}" == "amdgcn" && %{suse_version} < 1550
-%patch -P 18 -p1
-%patch -P 20 -p1
-%endif
-# In SLE15 and earlier default to dwarf4, not dwarf5
-%if %{suse_version} < 1550
-%patch -P 19 -p1
-%endif
-%patch -P 21 -p1
-%patch -P 23 -p1
-%patch -P 24 -p1
-%patch -P 26 -p1
-%patch -P 27 -p1
-%patch -P 51
-%patch -P 60 -p1
-%patch -P 61 -p1
-%patch -P 100 -p1
-
-#test patching end
-
-%build
-%if %{with limitbuild}
-%limit_build -m 900
-%endif
-%define _lto_cflags %{nil}
-# Avoid rebuilding of generated files
-contrib/gcc_update --touch
-
-# SLE11 does not allow empty rpms
-%if %{suse_version} < 1310
-echo "This is a dummy package to provide a dependency." > README
-%endif
-
-rm -rf obj-%{GCCDIST}
-mkdir obj-%{GCCDIST}
-cd obj-%{GCCDIST}
-# Filter out unwanted flags from $RPM_OPT_FLAGS
-optflags=
-optflags_d=
-for flag in $RPM_OPT_FLAGS; do
- add_flag=
- case $flag in
- -U_FORTIFY_SOURCE|-D_FORTIFY_SOURCE=*) ;;
- -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*) ;;
- -ffortify=*|-Wall|-m32|-m64) ;;
-%ifarch %ix86
- # -mcpu is superseded by -mtune but -mtune is not supported by
- # our bootstrap compiler. -mcpu gives a warning that stops
- # the build process, so remove it for now. Also remove all other
- # -march and -mtune flags. They are superseded by proper
- # default compiler settings now.
- -mcpu=i?86|-march=i?86|-mtune=i?86) ;;
-%endif
-%ifarch s390 s390x
- -fsigned-char) ;;
- -O1) add_flag=-O2 ;;
-%endif
-%if 0%{?gcc_target_arch:1}
- # Kill all -march/tune/cpu because that screws building the target libs
- -march=*|-mtune=*|-mcpu=*) ;;
-%endif
- *) add_flag=$flag ;;
- esac
- if test -n "$add_flag"; then
- optflags+=" $add_flag"
- case $add_flag in
- # Filter out -Werror=return-type for D (only valid for C and C++)
- -Werror=return-type) ;;
- *) optflags_d+=" $add_flag" ;;
- esac
- fi
-done
-
-languages=c
-%if %{build_cp}
-languages=$languages,c++
-%endif
-%if %{build_objc}
-languages=$languages,objc
-%endif
-%if %{build_fortran}
-languages=$languages,fortran
-%endif
-%if %{build_objcp}
-languages=$languages,obj-c++
-%endif
-%if %{build_ada}
-languages=$languages,ada
-%endif
-%if %{build_go}
-languages=$languages,go
-%endif
-%if %{build_d}
-languages=$languages,d
-%endif
-%if %{build_jit}
-languages=$languages,jit
-%endif
-%if %{build_rust}
-languages=$languages,rust
-%endif
-%if %{build_m2}
-languages=$languages,m2
-%endif
-
-# In general we want to ship release checking enabled compilers
-# which is the default for released compilers
-#ENABLE_CHECKING="--enable-checking=yes"
-ENABLE_CHECKING="--enable-checking=release"
-#ENABLE_CHECKING=""
-
-# Work around tail/head -1 changes
-export _POSIX2_VERSION=199209
-
-%if "%{TARGET_ARCH}" == "amdgcn"
-mkdir -p target-tools/bin
-ln -s /usr/bin/llvm-ar-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-ar
-ln -s /usr/bin/llvm-mc-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-as
-ln -s /usr/bin/lld-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-ld
-ln -s /usr/bin/llvm-nm-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-nm
-ln -s /usr/bin/llvm-ranlib-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-ranlib
-export PATH="`pwd`/target-tools/bin:$PATH"
-%endif
-
-%if "%{hostsuffix}" != ""
-mkdir -p host-tools/bin
-# Using the host gnatmake like
-# CC="gcc%%{hostsuffix}" GNATBIND="gnatbind%%{hostsuffix}"
-# GNATMAKE="gnatmake%%{hostsuffix}"
-# doesn't work due to PR33857, so an un-suffixed gnatmake has to be
-# available
-%if %{build_ada}
-cp -a /usr/bin/gnatmake%{hostsuffix} host-tools/bin/gnatmake
-cp -a /usr/bin/gnatlink%{hostsuffix} host-tools/bin/gnatlink
-cp -a /usr/bin/gnatbind%{hostsuffix} host-tools/bin/gnatbind
-%endif
-cp -a /usr/bin/gcc%{hostsuffix} host-tools/bin/gcc
-cp -a /usr/bin/g++%{hostsuffix} host-tools/bin/g++
-ln -sf /usr/%{_lib} host-tools/%{_lib}
-export PATH="`pwd`/host-tools/bin:$PATH"
-%endif
-
-%if %{build_d} && %{suse_version} < 1550
-# We are using gcc11-d to bootstrap d
-export GDC=gdc-11
-%endif
-
-# libsanitizer needs and since the glibc/libxcrypt split
-# we don't have that yet in a pure cross environment
-%if 0%{?gcc_target_arch:1}
- CONFARGS="$CONFARGS --disable-libsanitizer"
-%endif
-
-../configure \
- CFLAGS="$optflags" \
- CXXFLAGS="$optflags" \
- XCFLAGS="$optflags" \
- TCFLAGS="$optflags" \
- GDCFLAGS="$optflags_d" \
- --prefix=%{_prefix} \
- --infodir=%{_infodir} \
- --mandir=%{_mandir} \
- --libdir=%{_libdir} \
- --libexecdir=%{_libdir} \
- --enable-languages=$languages \
-%if %{build_nvptx} || %{build_gcn}
- --enable-offload-targets=\
-%if %{build_nvptx}
-nvptx-none,\
-%endif
-%if %{build_gcn}
-amdgcn-amdhsa,\
-%endif
- --enable-offload-defaulted \
-%endif
-%if %{build_nvptx}
- --without-cuda-driver \
-%endif
-%if %{build_jit}
- --enable-host-shared \
-%endif
- $ENABLE_CHECKING \
- --disable-werror \
- --with-gxx-include-dir=%{_prefix}/include/c++/%{gcc_dir_version} \
- --with-libstdcxx-zoneinfo=%{_datadir}/zoneinfo \
- --enable-ssp \
- --disable-libssp \
-%if 0%{!?build_libvtv:1}
- --disable-libvtv \
-%endif
-%if 0%{suse_version} >= 1500
- --enable-cet=auto \
-%else
- --disable-cet \
-%endif
- --disable-libcc1 \
-%if %{enable_plugins}
- --enable-plugin \
-%else
- --disable-plugin \
-%endif
- --with-bugurl="https://bugs.opensuse.org/" \
- --with-pkgversion="SUSE Linux" \
-%if 0%{?sysroot:1}
- --with-slibdir=%{sysroot}/%{_lib} \
-%else
- --with-slibdir=/%{_lib} \
-%endif
- --with-system-zlib \
- --enable-libstdcxx-allocator=new \
- --disable-libstdcxx-pch \
-%if 0%{suse_version} <= 1320
- --with-default-libstdcxx-abi=gcc4-compatible \
-%endif
-%if %{build_d}
- --enable-libphobos \
-%endif
- --enable-version-specific-runtime-libs \
- --with-gcc-major-version-only \
-%if 0%{!?gcc_target_arch:1}
- --enable-linker-build-id \
-%else
-%if 0%{?gcc_target_glibc:1}
- --enable-linker-build-id \
-%endif
-%endif
- --enable-linux-futex \
-%if %{suse_version} >= 1315
-%ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390 s390x %sparc
- --enable-gnu-indirect-function \
-%endif
-%endif
- --program-suffix=%{binsuffix} \
-%ifarch %{disable_multilib_arch}
- --disable-multilib \
-%endif
-%if 0%{!?gcc_target_arch:1}
-%ifarch ia64
- --with-system-libunwind \
-%else
- --without-system-libunwind \
-%endif
-%endif
-%if 0%{?gcc_target_arch:1}
- --program-prefix=%{gcc_target_arch}- \
- --target=%{gcc_target_arch} \
- --disable-nls \
-%if 0%{?sysroot:1}
- --with-sysroot=%sysroot \
-%endif
-%if 0%{?build_sysroot:1}
- --with-build-sysroot=%{build_sysroot} \
-%else
-%if 0%{?sysroot:1}
- --with-build-sysroot=%{sysroot} \
-%endif
-%endif
-%if 0%{?binutils_os:1}
- --with-build-time-tools=/usr/%{binutils_os}/bin \
-%endif
-%if 0%{?gcc_target_newlib}
- --with-newlib \
-%if 0%{?gcc_libc_bootstrap:1}
- --disable-gcov \
-%endif
-%else
-%if 0%{?gcc_libc_bootstrap:1}
- --disable-gcov --disable-threads --disable-shared \
- --disable-libmudflap --disable-libssp --disable-libgomp \
- --disable-libquadmath --disable-libatomic \
- --without-headers --with-newlib \
-%endif
-%endif
-%if "%{TARGET_ARCH}" == "bpf"
- --disable-gcov \
-%endif
-%if "%{TARGET_ARCH}" == "spu"
- --with-gxx-include-dir=%sysroot/include/c++/%{gcc_dir_version} \
- --with-newlib \
-%endif
-%if "%{TARGET_ARCH}" == "nvptx"
- --enable-as-accelerator-for=%{GCCDIST} \
- --disable-sjlj-exceptions \
- --enable-newlib-io-long-long \
-%endif
-%if "%{TARGET_ARCH}" == "amdgcn"
- --enable-as-accelerator-for=%{GCCDIST} \
- --enable-libgomp \
-%endif
-%if "%{TARGET_ARCH}" == "avr"
- --enable-lto \
- --without-gxx-include-dir \
- --with-native-system-header-dir=/include \
-%endif
-%endif
-%if "%{TARGET_ARCH}" == "arm-none"
- --enable-multilib \
- --with-multilib-list=aprofile,rmprofile \
- --disable-decimal-float \
- --disable-libffi \
- --disable-libgomp \
- --disable-libmudflap \
- --disable-libquadmath \
- --disable-shared \
- --disable-threads \
- --disable-tls \
-%endif
-%if "%{TARGET_ARCH}" == "armv6hl" || "%{TARGET_ARCH}" == "arm"
- --with-cpu=arm1176jzf-s \
- --with-float=hard \
- --with-abi=aapcs-linux \
- --with-fpu=vfpv2 \
- --disable-sjlj-exceptions \
-%endif
-%if "%{TARGET_ARCH}" == "armv7hl"
- --with-cpu=generic-armv7-a \
- --with-float=hard \
- --with-abi=aapcs-linux \
- --with-fpu=vfpv3-d16 \
- --disable-sjlj-exceptions \
-%endif
-%if "%{TARGET_ARCH}" == "aarch64"
- --enable-fix-cortex-a53-835769 \
- --enable-fix-cortex-a53-843419 \
-%endif
-%if "%{TARGET_ARCH}" == "powerpc64le"
-%if 0%{?cross_arch:1}
- --with-glibc-version=2.32 \
-%endif
-%if %{suse_version} >= 1600 && !0%{?is_opensuse}
- --with-cpu=power9 \
- --with-tune=power9 \
-%else
-%if %{suse_version} >= 1350
- --with-cpu=power8 \
- --with-tune=power9 \
-%else
-%if %{suse_version} >= 1315 && %{suse_version} != 1320
- --with-cpu=power8 \
- --with-tune=power8 \
-%else
- --with-cpu=power7 \
- --with-tune=power7 \
-%endif
-%endif
-%endif
-%if %{suse_version} > 1500
- --with-long-double-format=ieee \
-%else
- --with-long-double-format=ibm \
-%endif
- --enable-secureplt \
- --with-long-double-128 \
- --enable-targets=powerpcle-linux \
- --disable-multilib \
-%endif
-%if "%{TARGET_ARCH}" == "powerpc" || "%{TARGET_ARCH}" == "powerpc64"
-%if "%{TARGET_ARCH}" == "powerpc"
- --with-cpu=default32 \
-%endif
- --with-cpu-64=power4 \
- --enable-secureplt \
- --with-long-double-128 \
-%endif
-%if "%{TARGET_ARCH}" == "sparc64"
- --with-cpu=ultrasparc \
- --with-long-double-128 \
-%endif
-%if "%{TARGET_ARCH}" == "sparc"
- --with-cpu=v8 \
- --with-long-double-128 \
-%endif
-%if "%{TARGET_ARCH}" == "i586"
-%if %{suse_version} >= 1600 && !0%{?is_opensuse}
- --with-arch-32=x86-64-v2 \
-%else
-%if 0%{?sle_version:%sle_version} >= 150000
- --with-arch-32=x86-64 \
-%else
- --with-arch-32=i586 \
-%endif
-%endif
- --with-tune=generic \
-%endif
-%if "%{TARGET_ARCH}" == "x86_64"
-%ifnarch %{disable_multilib_arch}
- --enable-multilib \
-%if %{suse_version} >= 1600 && !0%{?is_opensuse}
- --with-arch-32=x86-64-v2 \
-%else
- --with-arch-32=x86-64 \
-%endif
-%endif
-%if %{suse_version} >= 1600 && !0%{?is_opensuse}
- --with-arch=x86-64-v2 \
-%endif
- --with-tune=generic \
-%endif
-%if "%{TARGET_ARCH}" == "s390" || "%{TARGET_ARCH}" == "s390x"
-%if %{suse_version} >= 1600 && !0%{?is_opensuse}
- --with-tune=z14 --with-arch=z14 \
-%else
-%if %{suse_version} >= 1310
- --with-tune=zEC12 --with-arch=z196 \
-%else
- --with-tune=z9-109 --with-arch=z900 \
-%endif
-%endif
- --with-long-double-128 \
- --enable-decimal-float \
-%if 0%{?cross_arch:1}
- --disable-multilib \
-%endif
-%endif
-%if "%{TARGET_ARCH}" == "m68k"
- --disable-multilib \
-%endif
-%if "%{TARGET_ARCH}" == "riscv64"
- --disable-multilib \
-%endif
-%if %{with bootstrap}
-%if %{use_lto_bootstrap} && !0%{?building_testsuite:1}
- --with-build-config=bootstrap-lto-lean \
-%endif
-%else
- --disable-bootstrap \
-%endif
- --enable-link-serialization \
- $CONFARGS \
- --build=%{GCCDIST} \
- --host=%{GCCDIST} || \
- {
- rc=$?;
- echo "------- BEGIN config.log ------";
- %{__cat} config.log;
- echo "------- END config.log ------";
- exit $rc;
- }
-
-%if 0%{!?gcc_icecream:1}
-make %{?make_output_sync} %{?_smp_mflags}
-%else
-make %{?make_output_sync} %{?_smp_mflags} all-host
-%endif
-
-%if 0%{?gcc_icecream:%gcc_icecream}
-%package -n cross-%cross_arch-gcc13-icecream-backend
-Summary: Icecream backend for the GNU C Compiler
-Group: Development/Languages/C and C++
-
-%description -n cross-%cross_arch-gcc13-icecream-backend
-This package contains the icecream environment for the GNU C Compiler
-%endif
-
-%if 0%{?nvptx_newlib:1}
-%package -n cross-nvptx-newlib13-devel
-Summary: Newlib for the nvptx offload target
-Group: Development/Languages/C and C++
-Provides: cross-nvptx-newlib-devel = %{version}-%{release}
-Conflicts: cross-nvptx-newlib-devel
-
-%description -n cross-nvptx-newlib13-devel
-Newlib development files for the nvptx offload target compiler.
-%endif
-
-%if 0%{?amdgcn_newlib:1}
-%package -n cross-amdgcn-newlib13-devel
-Summary: Newlib for the amdgcn offload target
-Group: Development/Languages/C and C++
-Provides: cross-amdgcn-newlib-devel = %{version}-%{release}
-Conflicts: cross-amdgcn-newlib-devel
-
-%description -n cross-amdgcn-newlib13-devel
-Newlib development files for the amdgcn offload target compiler.
-%endif
-
-%define targetlibsubdir %{_libdir}/gcc/%{gcc_target_arch}/%{gcc_dir_version}
-
-%install
-cd obj-%{GCCDIST}
-
-%if "%{TARGET_ARCH}" == "amdgcn"
-# libtool needs to be able to call ranlib
-export PATH="`pwd`/target-tools/bin:$PATH"
-%endif
-
-# install and fixup host parts
-make DESTDIR=$RPM_BUILD_ROOT install-host
-rm -rf $RPM_BUILD_ROOT/%{targetlibsubdir}/install-tools
-rm -f $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.la
-# common fixup
-rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty.a
-
-# install and fixup target parts
-%if 0%{?gcc_icecream:1}
-# so expect the sysroot to be populated from natively built binaries
-%else
-# We want shared libraries to reside in the sysroot but the .so symlinks
-# on the host. Once we have a cross target that has shared libs we need
-# to manually fix up things here like we do for non-cross compilers
-mkdir -p $RPM_BUILD_ROOT/%{?sysroot:%sysroot}
-make DESTDIR=$RPM_BUILD_ROOT install-target
-%if %{build_cp}
-# So we installed libstdc++ headers into %prefix where they conflict
-# with other host compilers. Rip out the non-target specific parts
-# again. Note not all cross targets support libstdc++, so create the
-# directory to make things easier.
-mkdir -p $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version}
-find $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version} -mindepth 1 -maxdepth 1 -type d -a -not -name %{gcc_target_arch} | xargs -r rm -r
-find $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version} -maxdepth 1 -type f | xargs -r rm
-# And also remove installed pretty printers which conflict in similar ways
-rm -rf $RPM_BUILD_ROOT/%{_datadir}/gcc%{binsuffix}
-%endif
-%endif
-
-%if 0%{?binutils_os:1}
-for prog in as ld; do
- ln -s /usr/%{binutils_os}/bin/$prog $RPM_BUILD_ROOT%{targetlibsubdir}/
-done
-%endif
-
-# remove docs
-rm -rf $RPM_BUILD_ROOT%{_mandir}
-rm -rf $RPM_BUILD_ROOT%{_infodir}
-
-# for accelerators remove all frontends but lto1 and also install-tools
-%if 0%{?gcc_accel:1}
-rm -f $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/cc1
-rm -f $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/cc1plus
-rm -rf $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/install-tools
-rm -rf $RPM_BUILD_ROOT%{targetlibsubdir}/install-tools
-# also move things from target directories into the accel path since
-# that is the place where we later search for (only)
-( cd $RPM_BUILD_ROOT%{targetlibsubdir} && tar cf - . ) | ( cd $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch} && tar xf - )
-rm -rf $RPM_BUILD_ROOT%{targetlibsubdir}
-%endif
-# for amdgcn install the symlinks to the llvm tools
-# follow alternatives symlinks to the hardcoded version requirement
-%if "%{TARGET_ARCH}" == "amdgcn"
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin
-ln -s /usr/bin/llvm-ar-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ar
-ln -s /usr/bin/llvm-mc-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/as
-ln -s /usr/bin/lld-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ld
-ln -s /usr/bin/llvm-nm-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/nm
-ln -s /usr/bin/llvm-ranlib-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ranlib
-ln -s %{_prefix}/amdgcn-amdhsa/bin/ar $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ar
-ln -s %{_prefix}/amdgcn-amdhsa/bin/as $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-as
-ln -s %{_prefix}/amdgcn-amdhsa/bin/ld $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ld
-ln -s %{_prefix}/amdgcn-amdhsa/bin/nm $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-nm
-ln -s %{_prefix}/amdgcn-amdhsa/bin/ranlib $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ranlib
-%endif
-
-%if 0%{?gcc_icecream:%gcc_icecream}
-# Build an icecream environment
-# The assembler comes from the cross-binutils, and hence is _not_
-# named funnily, not even on ppc, so there we need the original target
-install -s -D %{_prefix}/bin/%{binutils_os}-as \
- $RPM_BUILD_ROOT/env/usr/bin/as
-install -s $RPM_BUILD_ROOT/%{_prefix}/bin/%{gcc_target_arch}-g++%{binsuffix} \
- $RPM_BUILD_ROOT/env/usr/bin/g++
-install -s $RPM_BUILD_ROOT/%{_prefix}/bin/%{gcc_target_arch}-gcc%{binsuffix} \
- $RPM_BUILD_ROOT/env/usr/bin/gcc
-
-for back in cc1 cc1plus; do
- install -s -D $RPM_BUILD_ROOT/%{targetlibsubdir}/$back \
- $RPM_BUILD_ROOT/env%{targetlibsubdir}/$back
-done
-if test -f $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.so; then
- install -s -D $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.so \
- $RPM_BUILD_ROOT/env%{targetlibsubdir}/liblto_plugin.so
-fi
-
-# Make sure to also pull in all shared library requirements for the
-# binaries we put into the environment which is operated by chrooting
-# into it and execing the compiler
-libs=`for bin in $RPM_BUILD_ROOT/env/usr/bin/* $RPM_BUILD_ROOT/env%{targetlibsubdir}/*; do \
- ldd $bin | sed -n '\,^[^/]*\(/[^ ]*\).*,{ s//\1/; p; }' ;\
-done | sort -u `
-for lib in $libs; do
- # Check wether the same library also exists in the parent directory,
- # and prefer that on the assumption that it is a more generic one.
- baselib=`echo "$lib" | sed 's,/[^/]*\(/[^/]*\)$,\1,'`
- test -f "$baselib" && lib=$baselib
- install -s -D $lib $RPM_BUILD_ROOT/env$lib
-done
-
-cd $RPM_BUILD_ROOT/env
-tar --no-recursion --mtime @${SOURCE_DATE_EPOCH:-$(date +%s)} --format=gnu -cv `find *|LC_ALL=C sort` |\
- gzip -n9 > ../%{name}_%{_arch}.tar.gz
-cd ..
-mkdir -p usr/share/icecream-envs
-mv %{name}_%{_arch}.tar.gz usr/share/icecream-envs
-rpm -q --changelog glibc > usr/share/icecream-envs/%{name}_%{_arch}.glibc
-rpm -q --changelog binutils > usr/share/icecream-envs/%{name}_%{_arch}.binutils
-rm -r env
-%endif
-
-# we provide update-alternatives for selecting a compiler version for
-# crosses
-%if 0%{!?gcc_accel:1}
-mkdir -p %{buildroot}%{_sysconfdir}/alternatives
-for ex in gcc cpp \
-%if %{build_cp}
- c++ g++ \
-%endif
- gcc-ar gcc-nm gcc-ranlib lto-dump \
-%if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" != "bpf"
- gcov gcov-dump gcov-tool \
-%endif
- ; do
- ln -s %{_sysconfdir}/alternatives/%{gcc_target_arch}-$ex \
- %{buildroot}%{_bindir}/%{gcc_target_arch}-$ex
-done
-
-%post
-%{_sbindir}/update-alternatives \
- --install %{_bindir}/%{gcc_target_arch}-gcc %{gcc_target_arch}-gcc %{_bindir}/%{gcc_target_arch}-gcc%{binsuffix} 13 \
- --slave %{_bindir}/%{gcc_target_arch}-cpp %{gcc_target_arch}-cpp %{_bindir}/%{gcc_target_arch}-cpp%{binsuffix} \
-%if %{build_cp}
- --slave %{_bindir}/%{gcc_target_arch}-c++ %{gcc_target_arch}-c++ %{_bindir}/%{gcc_target_arch}-c++%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-g++ %{gcc_target_arch}-g++ %{_bindir}/%{gcc_target_arch}-g++%{binsuffix} \
-%endif
-%if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" != "bpf"
- --slave %{_bindir}/%{gcc_target_arch}-gcov %{gcc_target_arch}-gcov %{_bindir}/%{gcc_target_arch}-gcov%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-gcov-dump %{gcc_target_arch}-gcov-dump %{_bindir}/%{gcc_target_arch}-gcov-dump%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-gcov-tool %{gcc_target_arch}-gcov-tool %{_bindir}/%{gcc_target_arch}-gcov-tool%{binsuffix} \
-%endif
- --slave %{_bindir}/%{gcc_target_arch}-gcc-ar %{gcc_target_arch}-gcc-ar %{_bindir}/%{gcc_target_arch}-gcc-ar%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-gcc-nm %{gcc_target_arch}-gcc-nm %{_bindir}/%{gcc_target_arch}-gcc-nm%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-lto-dump %{gcc_target_arch}-lto-dump %{_bindir}/%{gcc_target_arch}-lto-dump%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-gcc-ranlib %{gcc_target_arch}-gcc-ranlib %{_bindir}/%{gcc_target_arch}-gcc-ranlib%{binsuffix}
-
-%postun
-if [ ! -f %{_bindir}/%{gcc_target_arch}-gcc ] ; then
- %{_sbindir}/update-alternatives --remove %{gcc_target_arch}-gcc %{_bindir}/%{gcc_target_arch}-gcc%{binsuffix}
-fi
-%endif
-
-%files
-%defattr(-,root,root)
-%if 0%{?gcc_accel:1}
-%{_prefix}/bin/%{GCCDIST}-accel-%{gcc_target_arch}-*
-%dir %{libsubdir}
-%dir %{libsubdir}/accel
-%{libsubdir}/accel/%{gcc_target_arch}
-%if "%{cross_arch}" == "amdgcn"
-%{_prefix}/%{gcc_target_arch}/bin
-%{_prefix}/bin/amdgcn-amdhsa-ar
-%{_prefix}/bin/amdgcn-amdhsa-as
-%{_prefix}/bin/amdgcn-amdhsa-ld
-%{_prefix}/bin/amdgcn-amdhsa-nm
-%{_prefix}/bin/amdgcn-amdhsa-ranlib
-%endif
-%else
-%{_prefix}/bin/%{gcc_target_arch}-gcc%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-cpp%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcc-ar%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcc-nm%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcc-ranlib%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-lto-dump%{binsuffix}
-%if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" != "bpf"
-%{_prefix}/bin/%{gcc_target_arch}-gcov%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcov-dump%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcov-tool%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcov
-%{_prefix}/bin/%{gcc_target_arch}-gcov-dump
-%{_prefix}/bin/%{gcc_target_arch}-gcov-tool
-%endif
-%{_prefix}/bin/%{gcc_target_arch}-gcc
-%{_prefix}/bin/%{gcc_target_arch}-cpp
-%{_prefix}/bin/%{gcc_target_arch}-gcc-ar
-%{_prefix}/bin/%{gcc_target_arch}-gcc-nm
-%{_prefix}/bin/%{gcc_target_arch}-gcc-ranlib
-%{_prefix}/bin/%{gcc_target_arch}-lto-dump
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-cpp
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-ar
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-nm
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-ranlib
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-lto-dump
-%if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" != "bpf"
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov-dump
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov-tool
-%endif
-%if %{build_cp}
-%{_prefix}/bin/%{gcc_target_arch}-c++%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-g++%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-c++
-%{_prefix}/bin/%{gcc_target_arch}-g++
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-c++
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-g++
-%if 0%{!?gcc_libc_bootstrap:1}
-%if "%{cross_arch}" == "avr" || 0%{?gcc_target_newlib:1} || 0%{?gcc_target_glibc:1}
-%{_prefix}/include/c++
-%endif
-%endif
-%endif
-%dir %{targetlibsubdir}
-%dir %{_libdir}/gcc/%{gcc_target_arch}
-%{targetlibsubdir}
-%endif
-%if 0%{!?gcc_icecream:1} && 0%{!?gcc_libc_bootstrap:1} && 0%{?sysroot:1}
-%{sysroot}
-%endif
-
-%if 0%{?gcc_icecream:%gcc_icecream}
-%files -n cross-%cross_arch-gcc13-icecream-backend
-%defattr(-,root,root)
-/usr/share/icecream-envs
-%endif
-
-%if 0%{?nvptx_newlib:1}
-%files -n cross-nvptx-newlib13-devel
-%defattr(-,root,root)
-%{_prefix}/%{gcc_target_arch}
-%endif
-
-%if 0%{?amdgcn_newlib:1}
-%files -n cross-amdgcn-newlib13-devel
-%defattr(-,root,root)
-%{_prefix}/%{gcc_target_arch}
-%exclude %{_prefix}/%{gcc_target_arch}/bin
-%endif
-
-%changelog
diff --git a/cross-epiphany-gcc13.spec b/cross-epiphany-gcc13.spec
deleted file mode 100644
index 1ef20e1..0000000
--- a/cross-epiphany-gcc13.spec
+++ /dev/null
@@ -1,1082 +0,0 @@
-#
-# spec file
-#
-# Copyright (c) 2024 SUSE LLC
-#
-# All modifications and additions to the file contributed by third parties
-# remain the property of their copyright owners, unless otherwise agreed
-# upon. The license for this file, and modifications and additions to the
-# file, is the same license as for the pristine package itself (unless the
-# license for the pristine package is not an Open Source License, in which
-# case the license is the MIT License). An "Open Source License" is a
-# license that conforms to the Open Source Definition (Version 1.9)
-# published by the Open Source Initiative.
-
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
-#
-
-
-%define pkgname cross-epiphany-gcc13
-%define cross_arch epiphany
-%define gcc_target_arch epiphany-elf
-%define gcc_target_newlib 1
-# nospeccleaner
-
-%define build_cp 0%{!?gcc_accel:1}
-%if 0%{?gcc_libc_bootstrap:1} || "%{cross_arch}" == "bpf"
-%define build_cp 0
-%endif
-%define build_ada 0
-%define build_libjava 0
-%define build_java 0
-
-%define build_fortran 0%{?gcc_accel:1}
-%define build_objc 0
-%define build_objcp 0
-%define build_go 0
-%define build_nvptx 0
-%define build_gcn 0
-%define build_d 0
-%define build_rust 0
-%define build_m2 0
-
-%define enable_plugins 0
-%define build_jit 0
-%define use_lto_bootstrap 0
-
-%define binutils_target %{cross_arch}
-%if "%{cross_arch}" == "armv7l" || "%{cross_arch}" == "armv7hl"
-%define binutils_target arm
-%endif
-%if "%{cross_arch}" == "armv6l" || "%{cross_arch}" == "armv6hl"
-%define binutils_target arm
-%endif
-%if "%{cross_arch}" == "armv5tel"
-%define binutils_target arm
-%endif
-%if "%{cross_arch}" == "arm-none"
-%define binutils_target arm
-%endif
-%if "%{cross_arch}" == "riscv64-elf"
-%define binutils_target riscv64
-%endif
-%if "%{cross_arch}" == "sparcv9"
-%define binutils_target sparc
-%endif
-%define canonical_target %(echo %{binutils_target} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
-%if "%{binutils_target}" == "avr" || "%{binutils_target}" == "spu" || "%{binutils_target}" == "pru"
-%define binutils_os %{canonical_target}
-%else
-%if "%{binutils_target}" == "epiphany" || "%{binutils_target}" == "nds32le" || "%{binutils_target}" == "rl78" || "%{binutils_target}" == "rx"
-%define binutils_os %{canonical_target}-elf
-%else
-%if "%{binutils_target}" == "arm"
-%define binutils_os %{canonical_target}-suse-linux-gnueabi
-%else
-%if "%{binutils_target}" == "bpf"
-%define binutils_os %{canonical_target}-none
-%else
-%if 0%{?gcc_accel:1}
-%define binutils_os %{gcc_target_arch}
-%else
-%define binutils_os %{canonical_target}-suse-linux
-%endif
-%endif
-%endif
-%endif
-%endif
-
-%if 0%{?gcc_icecream:1}
-%define sysroot %{_prefix}/%{gcc_target_arch}
-%else
-# offloading builds newlib in-tree and can install in
-# the GCC private path without extra sysroot
-%if 0%{!?gcc_accel:1}
-# use same sysroot as in binutils.spec
-%define sysroot %{_prefix}/%{binutils_os}/sys-root
-%endif
-%endif
-
-%if %{suse_version} >= 1220
-%define selfconflict() %1
-%else
-%define selfconflict() otherproviders(%1)
-%endif
-
-Name: %{pkgname}
-%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
-
-URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
-Release: 0
-%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
-%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
-%define binsuffix -13
-%if %{suse_version} < 1310
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-%endif
-Group: Development/Languages/C and C++
-Source: gcc-%{version}.tar.xz
-Source1: change_spec
-Source2: gcc13-rpmlintrc
-Source3: gcc13-testresults-rpmlintrc
-Source4: README.First-for.SuSE.packagers
-Source5: newlib-4.3.0.20230120.tar.xz
-Patch2: gcc-add-defaultsspec.diff
-Patch5: tls-no-direct.diff
-Patch6: gcc43-no-unwind-tables.diff
-Patch7: gcc48-libstdc++-api-reference.patch
-Patch11: gcc7-remove-Wexpansion-to-defined-from-Wextra.patch
-Patch15: gcc7-avoid-fixinc-error.diff
-Patch16: gcc9-reproducible-builds.patch
-Patch17: gcc9-reproducible-builds-buildid-for-checksum.patch
-Patch18: gcc10-amdgcn-llvm-as.patch
-Patch19: gcc11-gdwarf-4-default.patch
-Patch20: gcc11-amdgcn-disable-hot-cold-partitioning.patch
-Patch21: gdcflags.patch
-Patch23: gcc13-bsc1216664.patch
-Patch24: gcc13-sanitizer-remove-crypt-interception.patch
-Patch26: gcc13-pr101523.patch
-Patch27: gcc13-amdgcn-remove-fiji.patch
-# A set of patches from the RH srpm
-Patch51: gcc41-ppc32-retaddr.patch
-# Some patches taken from Debian
-Patch60: gcc44-textdomain.patch
-Patch61: gcc44-rename-info-files.patch
-# Feature backports
-Patch100: gcc13-pr88345-min-func-alignment.diff
-
-# Define the canonical target and host architecture
-# %%gcc_target_arch is supposed to be the full target triple
-# %%cross_arch is supposed to be the rpm target variant arch
-# %%TARGET_ARCH will be the canonicalized target CPU part
-# %%HOST_ARCH will be the canonicalized host CPU part
-%if 0%{?gcc_target_arch:1}
-%define TARGET_ARCH %(echo %{cross_arch} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
-%else
-%define TARGET_ARCH %(echo %{_target_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
-%endif
-%if 0%{?disable_32bit:1}
-%define biarch 0
-%else
-%define biarch %(case " %{biarch_targets} " in (*" %{TARGET_ARCH} "*) echo 1;; (*) echo 0;; esac)
-%endif
-
-%define HOST_ARCH %(echo %{_target_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
-%ifarch ppc
-%define GCCDIST powerpc64-suse-linux
-%else
-%ifarch %sparc
-%define GCCDIST sparc64-suse-linux
-%else
-%ifarch %arm
-%define GCCDIST %{HOST_ARCH}-suse-linux-gnueabi
-%else
-%define GCCDIST %{HOST_ARCH}-suse-linux
-%endif
-%endif
-%endif
-
-%define libsubdir %{_libdir}/gcc/%{GCCDIST}/%{gcc_dir_version}
-%define gxxinclude %{_prefix}/include/c++/%{gcc_dir_version}
-
-%if "%{cross_arch}" != "nvptx"
-%if "%{cross_arch}" != "amdgcn"
-BuildRequires: cross-%{binutils_target}-binutils
-Requires: cross-%{binutils_target}-binutils
-%endif
-%endif
-%define hostsuffix %{nil}
-%if 0%{suse_version} < 1220
-%define hostsuffix -4.8
-BuildRequires: gcc48-c++
-%else
-BuildRequires: gcc-c++
-%endif
-%if %{suse_version} > 1500
-BuildRequires: libzstd-devel
-%endif
-BuildRequires: bison
-BuildRequires: flex
-BuildRequires: gettext-devel
-BuildRequires: glibc-devel-32bit
-%if %{with limitbuild}
-BuildRequires: memory-constraints
-%endif
-BuildRequires: mpc-devel
-BuildRequires: mpfr-devel
-BuildRequires: perl
-%if %{suse_version} > 1220
-BuildRequires: makeinfo
-%else
-BuildRequires: texinfo
-%endif
-BuildRequires: zlib-devel
-%if %{suse_version} >= 1230
-BuildRequires: isl-devel
-%endif
-%ifarch ia64
-BuildRequires: libunwind-devel
-%endif
-%if 0%{!?gcc_icecream:1}
-%if 0%{!?gcc_libc_bootstrap:1}
-%if 0%{?gcc_target_newlib:1}
-%if !0%{?is_opensuse}
-ExclusiveArch: do-not-build
-%endif
-BuildRequires: cross-%cross_arch-newlib-devel
-Requires: cross-%cross_arch-newlib-devel
-%endif
-%if "%{cross_arch}" == "avr"
-%if !0%{?is_opensuse}
-ExclusiveArch: do-not-build
-%endif
-BuildRequires: avr-libc
-%endif
-%if 0%{?gcc_target_glibc:1}
-%if %{suse_version} < 1600
-ExclusiveArch: do-not-build
-%endif
-BuildRequires: cross-%cross_arch-glibc-devel
-Requires: cross-%cross_arch-glibc-devel
-%endif
-%endif
-%if "%{cross_arch}" == "nvptx"
-BuildRequires: nvptx-tools
-Requires: cross-nvptx-newlib-devel >= %{version}-%{release}
-Requires: nvptx-tools
-ExclusiveArch: x86_64
-%define nvptx_newlib 1
-%endif
-%if "%{cross_arch}" == "amdgcn"
-# amdgcn uses the llvm assembler and linker
-%if %{suse_version} < 1550
-BuildRequires: llvm13
-%define product_libs_llvm_ver 13
-%else
-BuildRequires: llvm%{product_libs_llvm_ver}
-%endif
-BuildRequires: lld%{product_libs_llvm_ver}
-%if %{suse_version} < 1550
-Requires: llvm13
-%else
-Requires: llvm%{product_libs_llvm_ver}
-%endif
-Requires: cross-amdgcn-newlib-devel >= %{version}-%{release}
-Requires: lld%{product_libs_llvm_ver}
-# SLE12 does not fulfil build requirements for GCN, SLE15 SP1 does
-# technically also SLE12 SP5 but do not bother there
-%if %{suse_version} >= 1550 || 0%{?sle_version:%sle_version} >= 150100
-ExclusiveArch: x86_64
-%else
-ExclusiveArch: do-not-build
-%endif
-%define amdgcn_newlib 1
-%endif
-%endif
-%if "%{cross_arch}" == "pru"
-ExclusiveArch: %arm
-%endif
-%if 0%{?gcc_target_glibc:1}
-%ifarch %{cross_arch}
-ExcludeArch: %{cross_arch}
-%endif
-%endif
-%if 0%{?gcc_icecream:1}%{?gcc_libc_bootstrap:1}
-ExclusiveArch: i586 ppc64le ppc64 x86_64 s390x aarch64 riscv64
-%endif
-%define _binary_payload w.ufdio
-# Obsolete cross-ppc-gcc49 from cross-ppc64-gcc49 which has
-# file conflicts with it and is no longer packaged
-%if "%pkgname" == "cross-ppc64-gcc49"
-Obsoletes: cross-ppc-gcc49 <= 4.9.0+r209354
-%endif
-%if 0%{?gcc_target_newlib:1}%{?gcc_target_glibc:1}
-# Generally only one cross for the same target triplet can be installed
-# at the same time as we are populating a non-version-specific sysroot
-Provides: %{gcc_target_arch}-gcc
-Conflicts: %selfconflict %{gcc_target_arch}-gcc
-%endif
-%if 0%{?gcc_libc_bootstrap:1}
-# The -bootstrap packages file-conflict with the non-bootstrap variants.
-# Even if we don't actually (want to) distribute the bootstrap variants
-# the following avoids repo-checker spamming us endlessly.
-Conflicts: cross-%{cross_arch}-gcc13
-%endif
-#!BuildIgnore: gcc-PIE
-%if 0%{build_cp:1}
-# The cross compiler only packages the arch specific c++ headers, so
-# we need to depend on the host libstdc++ devel headers (we wouldn't need
-# the libs, though)
-Requires: libstdc++6-devel-gcc13
-%endif
-AutoReqProv: off
-%if 0%{!?gcc_accel:1}
-BuildRequires: update-alternatives
-Requires(post): update-alternatives
-Requires(preun):update-alternatives
-%endif
-Summary: The GNU Compiler Collection targeting %{cross_arch}
-License: GPL-3.0-or-later
-
-%description
-The GNU Compiler Collection as a cross-compiler targeting %{cross_arch}.
-%if 0%{?gcc_icecream:1}
-Note this is only useful for building freestanding things like the
-kernel since it fails to include target libraries and headers.
-%endif
-%if 0%{?gcc_libc_bootstrap:1}
-This is a package that is necessary for bootstrapping another package
-only, it is not intended for any other use.
-%endif
-
-%if 0%{suse_version} >= 1500
-# Synchronize output by lines, useful for configure output
-%define make_output_sync -Oline
-%endif
-
-%prep
-%if 0%{?nvptx_newlib:1}%{?amdgcn_newlib:1}
-%setup -q -n gcc-%{version} -a 5
-ln -s newlib-4.3.0.20230120/newlib .
-%else
-%setup -q -n gcc-%{version}
-%endif
-
-#test patching start
-
-%patch -P 2
-%patch -P 5
-%patch -P 6
-%patch -P 7
-%patch -P 11
-%patch -P 15
-%patch -P 16
-%patch -P 17 -p1
-# These patches are needed only for llvm11
-%if "%{TARGET_ARCH}" == "amdgcn" && %{suse_version} < 1550
-%patch -P 18 -p1
-%patch -P 20 -p1
-%endif
-# In SLE15 and earlier default to dwarf4, not dwarf5
-%if %{suse_version} < 1550
-%patch -P 19 -p1
-%endif
-%patch -P 21 -p1
-%patch -P 23 -p1
-%patch -P 24 -p1
-%patch -P 26 -p1
-%patch -P 27 -p1
-%patch -P 51
-%patch -P 60 -p1
-%patch -P 61 -p1
-%patch -P 100 -p1
-
-#test patching end
-
-%build
-%if %{with limitbuild}
-%limit_build -m 900
-%endif
-%define _lto_cflags %{nil}
-# Avoid rebuilding of generated files
-contrib/gcc_update --touch
-
-# SLE11 does not allow empty rpms
-%if %{suse_version} < 1310
-echo "This is a dummy package to provide a dependency." > README
-%endif
-
-rm -rf obj-%{GCCDIST}
-mkdir obj-%{GCCDIST}
-cd obj-%{GCCDIST}
-# Filter out unwanted flags from $RPM_OPT_FLAGS
-optflags=
-optflags_d=
-for flag in $RPM_OPT_FLAGS; do
- add_flag=
- case $flag in
- -U_FORTIFY_SOURCE|-D_FORTIFY_SOURCE=*) ;;
- -fno-rtti|-fno-exceptions|-Wmissing-format-attribute|-fstack-protector*) ;;
- -ffortify=*|-Wall|-m32|-m64) ;;
-%ifarch %ix86
- # -mcpu is superseded by -mtune but -mtune is not supported by
- # our bootstrap compiler. -mcpu gives a warning that stops
- # the build process, so remove it for now. Also remove all other
- # -march and -mtune flags. They are superseded by proper
- # default compiler settings now.
- -mcpu=i?86|-march=i?86|-mtune=i?86) ;;
-%endif
-%ifarch s390 s390x
- -fsigned-char) ;;
- -O1) add_flag=-O2 ;;
-%endif
-%if 0%{?gcc_target_arch:1}
- # Kill all -march/tune/cpu because that screws building the target libs
- -march=*|-mtune=*|-mcpu=*) ;;
-%endif
- *) add_flag=$flag ;;
- esac
- if test -n "$add_flag"; then
- optflags+=" $add_flag"
- case $add_flag in
- # Filter out -Werror=return-type for D (only valid for C and C++)
- -Werror=return-type) ;;
- *) optflags_d+=" $add_flag" ;;
- esac
- fi
-done
-
-languages=c
-%if %{build_cp}
-languages=$languages,c++
-%endif
-%if %{build_objc}
-languages=$languages,objc
-%endif
-%if %{build_fortran}
-languages=$languages,fortran
-%endif
-%if %{build_objcp}
-languages=$languages,obj-c++
-%endif
-%if %{build_ada}
-languages=$languages,ada
-%endif
-%if %{build_go}
-languages=$languages,go
-%endif
-%if %{build_d}
-languages=$languages,d
-%endif
-%if %{build_jit}
-languages=$languages,jit
-%endif
-%if %{build_rust}
-languages=$languages,rust
-%endif
-%if %{build_m2}
-languages=$languages,m2
-%endif
-
-# In general we want to ship release checking enabled compilers
-# which is the default for released compilers
-#ENABLE_CHECKING="--enable-checking=yes"
-ENABLE_CHECKING="--enable-checking=release"
-#ENABLE_CHECKING=""
-
-# Work around tail/head -1 changes
-export _POSIX2_VERSION=199209
-
-%if "%{TARGET_ARCH}" == "amdgcn"
-mkdir -p target-tools/bin
-ln -s /usr/bin/llvm-ar-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-ar
-ln -s /usr/bin/llvm-mc-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-as
-ln -s /usr/bin/lld-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-ld
-ln -s /usr/bin/llvm-nm-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-nm
-ln -s /usr/bin/llvm-ranlib-%{product_libs_llvm_ver}* target-tools/bin/amdgcn-amdhsa-ranlib
-export PATH="`pwd`/target-tools/bin:$PATH"
-%endif
-
-%if "%{hostsuffix}" != ""
-mkdir -p host-tools/bin
-# Using the host gnatmake like
-# CC="gcc%%{hostsuffix}" GNATBIND="gnatbind%%{hostsuffix}"
-# GNATMAKE="gnatmake%%{hostsuffix}"
-# doesn't work due to PR33857, so an un-suffixed gnatmake has to be
-# available
-%if %{build_ada}
-cp -a /usr/bin/gnatmake%{hostsuffix} host-tools/bin/gnatmake
-cp -a /usr/bin/gnatlink%{hostsuffix} host-tools/bin/gnatlink
-cp -a /usr/bin/gnatbind%{hostsuffix} host-tools/bin/gnatbind
-%endif
-cp -a /usr/bin/gcc%{hostsuffix} host-tools/bin/gcc
-cp -a /usr/bin/g++%{hostsuffix} host-tools/bin/g++
-ln -sf /usr/%{_lib} host-tools/%{_lib}
-export PATH="`pwd`/host-tools/bin:$PATH"
-%endif
-
-%if %{build_d} && %{suse_version} < 1550
-# We are using gcc11-d to bootstrap d
-export GDC=gdc-11
-%endif
-
-# libsanitizer needs and since the glibc/libxcrypt split
-# we don't have that yet in a pure cross environment
-%if 0%{?gcc_target_arch:1}
- CONFARGS="$CONFARGS --disable-libsanitizer"
-%endif
-
-../configure \
- CFLAGS="$optflags" \
- CXXFLAGS="$optflags" \
- XCFLAGS="$optflags" \
- TCFLAGS="$optflags" \
- GDCFLAGS="$optflags_d" \
- --prefix=%{_prefix} \
- --infodir=%{_infodir} \
- --mandir=%{_mandir} \
- --libdir=%{_libdir} \
- --libexecdir=%{_libdir} \
- --enable-languages=$languages \
-%if %{build_nvptx} || %{build_gcn}
- --enable-offload-targets=\
-%if %{build_nvptx}
-nvptx-none,\
-%endif
-%if %{build_gcn}
-amdgcn-amdhsa,\
-%endif
- --enable-offload-defaulted \
-%endif
-%if %{build_nvptx}
- --without-cuda-driver \
-%endif
-%if %{build_jit}
- --enable-host-shared \
-%endif
- $ENABLE_CHECKING \
- --disable-werror \
- --with-gxx-include-dir=%{_prefix}/include/c++/%{gcc_dir_version} \
- --with-libstdcxx-zoneinfo=%{_datadir}/zoneinfo \
- --enable-ssp \
- --disable-libssp \
-%if 0%{!?build_libvtv:1}
- --disable-libvtv \
-%endif
-%if 0%{suse_version} >= 1500
- --enable-cet=auto \
-%else
- --disable-cet \
-%endif
- --disable-libcc1 \
-%if %{enable_plugins}
- --enable-plugin \
-%else
- --disable-plugin \
-%endif
- --with-bugurl="https://bugs.opensuse.org/" \
- --with-pkgversion="SUSE Linux" \
-%if 0%{?sysroot:1}
- --with-slibdir=%{sysroot}/%{_lib} \
-%else
- --with-slibdir=/%{_lib} \
-%endif
- --with-system-zlib \
- --enable-libstdcxx-allocator=new \
- --disable-libstdcxx-pch \
-%if 0%{suse_version} <= 1320
- --with-default-libstdcxx-abi=gcc4-compatible \
-%endif
-%if %{build_d}
- --enable-libphobos \
-%endif
- --enable-version-specific-runtime-libs \
- --with-gcc-major-version-only \
-%if 0%{!?gcc_target_arch:1}
- --enable-linker-build-id \
-%else
-%if 0%{?gcc_target_glibc:1}
- --enable-linker-build-id \
-%endif
-%endif
- --enable-linux-futex \
-%if %{suse_version} >= 1315
-%ifarch %ix86 x86_64 ppc ppc64 ppc64le %arm aarch64 s390 s390x %sparc
- --enable-gnu-indirect-function \
-%endif
-%endif
- --program-suffix=%{binsuffix} \
-%ifarch %{disable_multilib_arch}
- --disable-multilib \
-%endif
-%if 0%{!?gcc_target_arch:1}
-%ifarch ia64
- --with-system-libunwind \
-%else
- --without-system-libunwind \
-%endif
-%endif
-%if 0%{?gcc_target_arch:1}
- --program-prefix=%{gcc_target_arch}- \
- --target=%{gcc_target_arch} \
- --disable-nls \
-%if 0%{?sysroot:1}
- --with-sysroot=%sysroot \
-%endif
-%if 0%{?build_sysroot:1}
- --with-build-sysroot=%{build_sysroot} \
-%else
-%if 0%{?sysroot:1}
- --with-build-sysroot=%{sysroot} \
-%endif
-%endif
-%if 0%{?binutils_os:1}
- --with-build-time-tools=/usr/%{binutils_os}/bin \
-%endif
-%if 0%{?gcc_target_newlib}
- --with-newlib \
-%if 0%{?gcc_libc_bootstrap:1}
- --disable-gcov \
-%endif
-%else
-%if 0%{?gcc_libc_bootstrap:1}
- --disable-gcov --disable-threads --disable-shared \
- --disable-libmudflap --disable-libssp --disable-libgomp \
- --disable-libquadmath --disable-libatomic \
- --without-headers --with-newlib \
-%endif
-%endif
-%if "%{TARGET_ARCH}" == "bpf"
- --disable-gcov \
-%endif
-%if "%{TARGET_ARCH}" == "spu"
- --with-gxx-include-dir=%sysroot/include/c++/%{gcc_dir_version} \
- --with-newlib \
-%endif
-%if "%{TARGET_ARCH}" == "nvptx"
- --enable-as-accelerator-for=%{GCCDIST} \
- --disable-sjlj-exceptions \
- --enable-newlib-io-long-long \
-%endif
-%if "%{TARGET_ARCH}" == "amdgcn"
- --enable-as-accelerator-for=%{GCCDIST} \
- --enable-libgomp \
-%endif
-%if "%{TARGET_ARCH}" == "avr"
- --enable-lto \
- --without-gxx-include-dir \
- --with-native-system-header-dir=/include \
-%endif
-%endif
-%if "%{TARGET_ARCH}" == "arm-none"
- --enable-multilib \
- --with-multilib-list=aprofile,rmprofile \
- --disable-decimal-float \
- --disable-libffi \
- --disable-libgomp \
- --disable-libmudflap \
- --disable-libquadmath \
- --disable-shared \
- --disable-threads \
- --disable-tls \
-%endif
-%if "%{TARGET_ARCH}" == "armv6hl" || "%{TARGET_ARCH}" == "arm"
- --with-cpu=arm1176jzf-s \
- --with-float=hard \
- --with-abi=aapcs-linux \
- --with-fpu=vfpv2 \
- --disable-sjlj-exceptions \
-%endif
-%if "%{TARGET_ARCH}" == "armv7hl"
- --with-cpu=generic-armv7-a \
- --with-float=hard \
- --with-abi=aapcs-linux \
- --with-fpu=vfpv3-d16 \
- --disable-sjlj-exceptions \
-%endif
-%if "%{TARGET_ARCH}" == "aarch64"
- --enable-fix-cortex-a53-835769 \
- --enable-fix-cortex-a53-843419 \
-%endif
-%if "%{TARGET_ARCH}" == "powerpc64le"
-%if 0%{?cross_arch:1}
- --with-glibc-version=2.32 \
-%endif
-%if %{suse_version} >= 1600 && !0%{?is_opensuse}
- --with-cpu=power9 \
- --with-tune=power9 \
-%else
-%if %{suse_version} >= 1350
- --with-cpu=power8 \
- --with-tune=power9 \
-%else
-%if %{suse_version} >= 1315 && %{suse_version} != 1320
- --with-cpu=power8 \
- --with-tune=power8 \
-%else
- --with-cpu=power7 \
- --with-tune=power7 \
-%endif
-%endif
-%endif
-%if %{suse_version} > 1500
- --with-long-double-format=ieee \
-%else
- --with-long-double-format=ibm \
-%endif
- --enable-secureplt \
- --with-long-double-128 \
- --enable-targets=powerpcle-linux \
- --disable-multilib \
-%endif
-%if "%{TARGET_ARCH}" == "powerpc" || "%{TARGET_ARCH}" == "powerpc64"
-%if "%{TARGET_ARCH}" == "powerpc"
- --with-cpu=default32 \
-%endif
- --with-cpu-64=power4 \
- --enable-secureplt \
- --with-long-double-128 \
-%endif
-%if "%{TARGET_ARCH}" == "sparc64"
- --with-cpu=ultrasparc \
- --with-long-double-128 \
-%endif
-%if "%{TARGET_ARCH}" == "sparc"
- --with-cpu=v8 \
- --with-long-double-128 \
-%endif
-%if "%{TARGET_ARCH}" == "i586"
-%if %{suse_version} >= 1600 && !0%{?is_opensuse}
- --with-arch-32=x86-64-v2 \
-%else
-%if 0%{?sle_version:%sle_version} >= 150000
- --with-arch-32=x86-64 \
-%else
- --with-arch-32=i586 \
-%endif
-%endif
- --with-tune=generic \
-%endif
-%if "%{TARGET_ARCH}" == "x86_64"
-%ifnarch %{disable_multilib_arch}
- --enable-multilib \
-%if %{suse_version} >= 1600 && !0%{?is_opensuse}
- --with-arch-32=x86-64-v2 \
-%else
- --with-arch-32=x86-64 \
-%endif
-%endif
-%if %{suse_version} >= 1600 && !0%{?is_opensuse}
- --with-arch=x86-64-v2 \
-%endif
- --with-tune=generic \
-%endif
-%if "%{TARGET_ARCH}" == "s390" || "%{TARGET_ARCH}" == "s390x"
-%if %{suse_version} >= 1600 && !0%{?is_opensuse}
- --with-tune=z14 --with-arch=z14 \
-%else
-%if %{suse_version} >= 1310
- --with-tune=zEC12 --with-arch=z196 \
-%else
- --with-tune=z9-109 --with-arch=z900 \
-%endif
-%endif
- --with-long-double-128 \
- --enable-decimal-float \
-%if 0%{?cross_arch:1}
- --disable-multilib \
-%endif
-%endif
-%if "%{TARGET_ARCH}" == "m68k"
- --disable-multilib \
-%endif
-%if "%{TARGET_ARCH}" == "riscv64"
- --disable-multilib \
-%endif
-%if %{with bootstrap}
-%if %{use_lto_bootstrap} && !0%{?building_testsuite:1}
- --with-build-config=bootstrap-lto-lean \
-%endif
-%else
- --disable-bootstrap \
-%endif
- --enable-link-serialization \
- $CONFARGS \
- --build=%{GCCDIST} \
- --host=%{GCCDIST} || \
- {
- rc=$?;
- echo "------- BEGIN config.log ------";
- %{__cat} config.log;
- echo "------- END config.log ------";
- exit $rc;
- }
-
-%if 0%{!?gcc_icecream:1}
-make %{?make_output_sync} %{?_smp_mflags}
-%else
-make %{?make_output_sync} %{?_smp_mflags} all-host
-%endif
-
-%if 0%{?gcc_icecream:%gcc_icecream}
-%package -n cross-%cross_arch-gcc13-icecream-backend
-Summary: Icecream backend for the GNU C Compiler
-Group: Development/Languages/C and C++
-
-%description -n cross-%cross_arch-gcc13-icecream-backend
-This package contains the icecream environment for the GNU C Compiler
-%endif
-
-%if 0%{?nvptx_newlib:1}
-%package -n cross-nvptx-newlib13-devel
-Summary: Newlib for the nvptx offload target
-Group: Development/Languages/C and C++
-Provides: cross-nvptx-newlib-devel = %{version}-%{release}
-Conflicts: cross-nvptx-newlib-devel
-
-%description -n cross-nvptx-newlib13-devel
-Newlib development files for the nvptx offload target compiler.
-%endif
-
-%if 0%{?amdgcn_newlib:1}
-%package -n cross-amdgcn-newlib13-devel
-Summary: Newlib for the amdgcn offload target
-Group: Development/Languages/C and C++
-Provides: cross-amdgcn-newlib-devel = %{version}-%{release}
-Conflicts: cross-amdgcn-newlib-devel
-
-%description -n cross-amdgcn-newlib13-devel
-Newlib development files for the amdgcn offload target compiler.
-%endif
-
-%define targetlibsubdir %{_libdir}/gcc/%{gcc_target_arch}/%{gcc_dir_version}
-
-%install
-cd obj-%{GCCDIST}
-
-%if "%{TARGET_ARCH}" == "amdgcn"
-# libtool needs to be able to call ranlib
-export PATH="`pwd`/target-tools/bin:$PATH"
-%endif
-
-# install and fixup host parts
-make DESTDIR=$RPM_BUILD_ROOT install-host
-rm -rf $RPM_BUILD_ROOT/%{targetlibsubdir}/install-tools
-rm -f $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.la
-# common fixup
-rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty.a
-
-# install and fixup target parts
-%if 0%{?gcc_icecream:1}
-# so expect the sysroot to be populated from natively built binaries
-%else
-# We want shared libraries to reside in the sysroot but the .so symlinks
-# on the host. Once we have a cross target that has shared libs we need
-# to manually fix up things here like we do for non-cross compilers
-mkdir -p $RPM_BUILD_ROOT/%{?sysroot:%sysroot}
-make DESTDIR=$RPM_BUILD_ROOT install-target
-%if %{build_cp}
-# So we installed libstdc++ headers into %prefix where they conflict
-# with other host compilers. Rip out the non-target specific parts
-# again. Note not all cross targets support libstdc++, so create the
-# directory to make things easier.
-mkdir -p $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version}
-find $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version} -mindepth 1 -maxdepth 1 -type d -a -not -name %{gcc_target_arch} | xargs -r rm -r
-find $RPM_BUILD_ROOT/%_prefix/include/c++/%{gcc_dir_version} -maxdepth 1 -type f | xargs -r rm
-# And also remove installed pretty printers which conflict in similar ways
-rm -rf $RPM_BUILD_ROOT/%{_datadir}/gcc%{binsuffix}
-%endif
-%endif
-
-%if 0%{?binutils_os:1}
-for prog in as ld; do
- ln -s /usr/%{binutils_os}/bin/$prog $RPM_BUILD_ROOT%{targetlibsubdir}/
-done
-%endif
-
-# remove docs
-rm -rf $RPM_BUILD_ROOT%{_mandir}
-rm -rf $RPM_BUILD_ROOT%{_infodir}
-
-# for accelerators remove all frontends but lto1 and also install-tools
-%if 0%{?gcc_accel:1}
-rm -f $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/cc1
-rm -f $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/cc1plus
-rm -rf $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch}/install-tools
-rm -rf $RPM_BUILD_ROOT%{targetlibsubdir}/install-tools
-# also move things from target directories into the accel path since
-# that is the place where we later search for (only)
-( cd $RPM_BUILD_ROOT%{targetlibsubdir} && tar cf - . ) | ( cd $RPM_BUILD_ROOT%{libsubdir}/accel/%{gcc_target_arch} && tar xf - )
-rm -rf $RPM_BUILD_ROOT%{targetlibsubdir}
-%endif
-# for amdgcn install the symlinks to the llvm tools
-# follow alternatives symlinks to the hardcoded version requirement
-%if "%{TARGET_ARCH}" == "amdgcn"
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin
-ln -s /usr/bin/llvm-ar-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ar
-ln -s /usr/bin/llvm-mc-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/as
-ln -s /usr/bin/lld-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ld
-ln -s /usr/bin/llvm-nm-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/nm
-ln -s /usr/bin/llvm-ranlib-%{product_libs_llvm_ver}* $RPM_BUILD_ROOT%{_prefix}/amdgcn-amdhsa/bin/ranlib
-ln -s %{_prefix}/amdgcn-amdhsa/bin/ar $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ar
-ln -s %{_prefix}/amdgcn-amdhsa/bin/as $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-as
-ln -s %{_prefix}/amdgcn-amdhsa/bin/ld $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ld
-ln -s %{_prefix}/amdgcn-amdhsa/bin/nm $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-nm
-ln -s %{_prefix}/amdgcn-amdhsa/bin/ranlib $RPM_BUILD_ROOT%{_prefix}/bin/amdgcn-amdhsa-ranlib
-%endif
-
-%if 0%{?gcc_icecream:%gcc_icecream}
-# Build an icecream environment
-# The assembler comes from the cross-binutils, and hence is _not_
-# named funnily, not even on ppc, so there we need the original target
-install -s -D %{_prefix}/bin/%{binutils_os}-as \
- $RPM_BUILD_ROOT/env/usr/bin/as
-install -s $RPM_BUILD_ROOT/%{_prefix}/bin/%{gcc_target_arch}-g++%{binsuffix} \
- $RPM_BUILD_ROOT/env/usr/bin/g++
-install -s $RPM_BUILD_ROOT/%{_prefix}/bin/%{gcc_target_arch}-gcc%{binsuffix} \
- $RPM_BUILD_ROOT/env/usr/bin/gcc
-
-for back in cc1 cc1plus; do
- install -s -D $RPM_BUILD_ROOT/%{targetlibsubdir}/$back \
- $RPM_BUILD_ROOT/env%{targetlibsubdir}/$back
-done
-if test -f $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.so; then
- install -s -D $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.so \
- $RPM_BUILD_ROOT/env%{targetlibsubdir}/liblto_plugin.so
-fi
-
-# Make sure to also pull in all shared library requirements for the
-# binaries we put into the environment which is operated by chrooting
-# into it and execing the compiler
-libs=`for bin in $RPM_BUILD_ROOT/env/usr/bin/* $RPM_BUILD_ROOT/env%{targetlibsubdir}/*; do \
- ldd $bin | sed -n '\,^[^/]*\(/[^ ]*\).*,{ s//\1/; p; }' ;\
-done | sort -u `
-for lib in $libs; do
- # Check wether the same library also exists in the parent directory,
- # and prefer that on the assumption that it is a more generic one.
- baselib=`echo "$lib" | sed 's,/[^/]*\(/[^/]*\)$,\1,'`
- test -f "$baselib" && lib=$baselib
- install -s -D $lib $RPM_BUILD_ROOT/env$lib
-done
-
-cd $RPM_BUILD_ROOT/env
-tar --no-recursion --mtime @${SOURCE_DATE_EPOCH:-$(date +%s)} --format=gnu -cv `find *|LC_ALL=C sort` |\
- gzip -n9 > ../%{name}_%{_arch}.tar.gz
-cd ..
-mkdir -p usr/share/icecream-envs
-mv %{name}_%{_arch}.tar.gz usr/share/icecream-envs
-rpm -q --changelog glibc > usr/share/icecream-envs/%{name}_%{_arch}.glibc
-rpm -q --changelog binutils > usr/share/icecream-envs/%{name}_%{_arch}.binutils
-rm -r env
-%endif
-
-# we provide update-alternatives for selecting a compiler version for
-# crosses
-%if 0%{!?gcc_accel:1}
-mkdir -p %{buildroot}%{_sysconfdir}/alternatives
-for ex in gcc cpp \
-%if %{build_cp}
- c++ g++ \
-%endif
- gcc-ar gcc-nm gcc-ranlib lto-dump \
-%if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" != "bpf"
- gcov gcov-dump gcov-tool \
-%endif
- ; do
- ln -s %{_sysconfdir}/alternatives/%{gcc_target_arch}-$ex \
- %{buildroot}%{_bindir}/%{gcc_target_arch}-$ex
-done
-
-%post
-%{_sbindir}/update-alternatives \
- --install %{_bindir}/%{gcc_target_arch}-gcc %{gcc_target_arch}-gcc %{_bindir}/%{gcc_target_arch}-gcc%{binsuffix} 13 \
- --slave %{_bindir}/%{gcc_target_arch}-cpp %{gcc_target_arch}-cpp %{_bindir}/%{gcc_target_arch}-cpp%{binsuffix} \
-%if %{build_cp}
- --slave %{_bindir}/%{gcc_target_arch}-c++ %{gcc_target_arch}-c++ %{_bindir}/%{gcc_target_arch}-c++%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-g++ %{gcc_target_arch}-g++ %{_bindir}/%{gcc_target_arch}-g++%{binsuffix} \
-%endif
-%if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" != "bpf"
- --slave %{_bindir}/%{gcc_target_arch}-gcov %{gcc_target_arch}-gcov %{_bindir}/%{gcc_target_arch}-gcov%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-gcov-dump %{gcc_target_arch}-gcov-dump %{_bindir}/%{gcc_target_arch}-gcov-dump%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-gcov-tool %{gcc_target_arch}-gcov-tool %{_bindir}/%{gcc_target_arch}-gcov-tool%{binsuffix} \
-%endif
- --slave %{_bindir}/%{gcc_target_arch}-gcc-ar %{gcc_target_arch}-gcc-ar %{_bindir}/%{gcc_target_arch}-gcc-ar%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-gcc-nm %{gcc_target_arch}-gcc-nm %{_bindir}/%{gcc_target_arch}-gcc-nm%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-lto-dump %{gcc_target_arch}-lto-dump %{_bindir}/%{gcc_target_arch}-lto-dump%{binsuffix} \
- --slave %{_bindir}/%{gcc_target_arch}-gcc-ranlib %{gcc_target_arch}-gcc-ranlib %{_bindir}/%{gcc_target_arch}-gcc-ranlib%{binsuffix}
-
-%postun
-if [ ! -f %{_bindir}/%{gcc_target_arch}-gcc ] ; then
- %{_sbindir}/update-alternatives --remove %{gcc_target_arch}-gcc %{_bindir}/%{gcc_target_arch}-gcc%{binsuffix}
-fi
-%endif
-
-%files
-%defattr(-,root,root)
-%if 0%{?gcc_accel:1}
-%{_prefix}/bin/%{GCCDIST}-accel-%{gcc_target_arch}-*
-%dir %{libsubdir}
-%dir %{libsubdir}/accel
-%{libsubdir}/accel/%{gcc_target_arch}
-%if "%{cross_arch}" == "amdgcn"
-%{_prefix}/%{gcc_target_arch}/bin
-%{_prefix}/bin/amdgcn-amdhsa-ar
-%{_prefix}/bin/amdgcn-amdhsa-as
-%{_prefix}/bin/amdgcn-amdhsa-ld
-%{_prefix}/bin/amdgcn-amdhsa-nm
-%{_prefix}/bin/amdgcn-amdhsa-ranlib
-%endif
-%else
-%{_prefix}/bin/%{gcc_target_arch}-gcc%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-cpp%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcc-ar%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcc-nm%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcc-ranlib%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-lto-dump%{binsuffix}
-%if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" != "bpf"
-%{_prefix}/bin/%{gcc_target_arch}-gcov%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcov-dump%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcov-tool%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-gcov
-%{_prefix}/bin/%{gcc_target_arch}-gcov-dump
-%{_prefix}/bin/%{gcc_target_arch}-gcov-tool
-%endif
-%{_prefix}/bin/%{gcc_target_arch}-gcc
-%{_prefix}/bin/%{gcc_target_arch}-cpp
-%{_prefix}/bin/%{gcc_target_arch}-gcc-ar
-%{_prefix}/bin/%{gcc_target_arch}-gcc-nm
-%{_prefix}/bin/%{gcc_target_arch}-gcc-ranlib
-%{_prefix}/bin/%{gcc_target_arch}-lto-dump
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-cpp
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-ar
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-nm
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcc-ranlib
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-lto-dump
-%if 0%{!?gcc_libc_bootstrap:1} && "%{cross_arch}" != "bpf"
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov-dump
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-gcov-tool
-%endif
-%if %{build_cp}
-%{_prefix}/bin/%{gcc_target_arch}-c++%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-g++%{binsuffix}
-%{_prefix}/bin/%{gcc_target_arch}-c++
-%{_prefix}/bin/%{gcc_target_arch}-g++
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-c++
-%ghost %{_sysconfdir}/alternatives/%{gcc_target_arch}-g++
-%if 0%{!?gcc_libc_bootstrap:1}
-%if "%{cross_arch}" == "avr" || 0%{?gcc_target_newlib:1} || 0%{?gcc_target_glibc:1}
-%{_prefix}/include/c++
-%endif
-%endif
-%endif
-%dir %{targetlibsubdir}
-%dir %{_libdir}/gcc/%{gcc_target_arch}
-%{targetlibsubdir}
-%endif
-%if 0%{!?gcc_icecream:1} && 0%{!?gcc_libc_bootstrap:1} && 0%{?sysroot:1}
-%{sysroot}
-%endif
-
-%if 0%{?gcc_icecream:%gcc_icecream}
-%files -n cross-%cross_arch-gcc13-icecream-backend
-%defattr(-,root,root)
-/usr/share/icecream-envs
-%endif
-
-%if 0%{?nvptx_newlib:1}
-%files -n cross-nvptx-newlib13-devel
-%defattr(-,root,root)
-%{_prefix}/%{gcc_target_arch}
-%endif
-
-%if 0%{?amdgcn_newlib:1}
-%files -n cross-amdgcn-newlib13-devel
-%defattr(-,root,root)
-%{_prefix}/%{gcc_target_arch}
-%exclude %{_prefix}/%{gcc_target_arch}/bin
-%endif
-
-%changelog
diff --git a/cross-hppa-gcc13-bootstrap.spec b/cross-hppa-gcc13-bootstrap.spec
index 66b3147..7d51bcd 100644
--- a/cross-hppa-gcc13-bootstrap.spec
+++ b/cross-hppa-gcc13-bootstrap.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-hppa-gcc13.spec b/cross-hppa-gcc13.spec
index b9d1c51..4873968 100644
--- a/cross-hppa-gcc13.spec
+++ b/cross-hppa-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-m68k-gcc13.spec b/cross-m68k-gcc13.spec
index de6399b..ddd0465 100644
--- a/cross-m68k-gcc13.spec
+++ b/cross-m68k-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-mips-gcc13.spec b/cross-mips-gcc13.spec
index 3aa75e7..ef6b25c 100644
--- a/cross-mips-gcc13.spec
+++ b/cross-mips-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-nvptx-gcc13.spec b/cross-nvptx-gcc13.spec
index b0c1f75..b007bfe 100644
--- a/cross-nvptx-gcc13.spec
+++ b/cross-nvptx-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-ppc64-gcc13.spec b/cross-ppc64-gcc13.spec
index 428f587..36161e8 100644
--- a/cross-ppc64-gcc13.spec
+++ b/cross-ppc64-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-ppc64le-gcc13-bootstrap.spec b/cross-ppc64le-gcc13-bootstrap.spec
index 379cc3a..c77c138 100644
--- a/cross-ppc64le-gcc13-bootstrap.spec
+++ b/cross-ppc64le-gcc13-bootstrap.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-ppc64le-gcc13.spec b/cross-ppc64le-gcc13.spec
index ecde70c..36c8610 100644
--- a/cross-ppc64le-gcc13.spec
+++ b/cross-ppc64le-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-pru-gcc13-bootstrap.spec b/cross-pru-gcc13-bootstrap.spec
index 6ce9dab..be76dab 100644
--- a/cross-pru-gcc13-bootstrap.spec
+++ b/cross-pru-gcc13-bootstrap.spec
@@ -108,7 +108,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -139,6 +139,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -146,6 +147,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -368,10 +370,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-pru-gcc13.spec b/cross-pru-gcc13.spec
index 16694d6..f73aade 100644
--- a/cross-pru-gcc13.spec
+++ b/cross-pru-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-riscv64-elf-gcc13-bootstrap.spec b/cross-riscv64-elf-gcc13-bootstrap.spec
index 5469c27..4d8f398 100644
--- a/cross-riscv64-elf-gcc13-bootstrap.spec
+++ b/cross-riscv64-elf-gcc13-bootstrap.spec
@@ -108,7 +108,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -139,6 +139,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -146,6 +147,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -368,10 +370,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-riscv64-elf-gcc13.spec b/cross-riscv64-elf-gcc13.spec
index 2dcb168..1998043 100644
--- a/cross-riscv64-elf-gcc13.spec
+++ b/cross-riscv64-elf-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-riscv64-gcc13-bootstrap.spec b/cross-riscv64-gcc13-bootstrap.spec
index 5c1f783..f7c39f7 100644
--- a/cross-riscv64-gcc13-bootstrap.spec
+++ b/cross-riscv64-gcc13-bootstrap.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-riscv64-gcc13.spec b/cross-riscv64-gcc13.spec
index 7175f79..2519785 100644
--- a/cross-riscv64-gcc13.spec
+++ b/cross-riscv64-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-rx-gcc13-bootstrap.spec b/cross-rx-gcc13-bootstrap.spec
index 1f9aae2..116ba69 100644
--- a/cross-rx-gcc13-bootstrap.spec
+++ b/cross-rx-gcc13-bootstrap.spec
@@ -108,7 +108,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -139,6 +139,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -146,6 +147,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -368,10 +370,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-rx-gcc13.spec b/cross-rx-gcc13.spec
index f27fb02..cd07604 100644
--- a/cross-rx-gcc13.spec
+++ b/cross-rx-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-s390x-gcc13-bootstrap.spec b/cross-s390x-gcc13-bootstrap.spec
index 8e77508..daed67d 100644
--- a/cross-s390x-gcc13-bootstrap.spec
+++ b/cross-s390x-gcc13-bootstrap.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-s390x-gcc13.spec b/cross-s390x-gcc13.spec
index 7b3acc3..89628b4 100644
--- a/cross-s390x-gcc13.spec
+++ b/cross-s390x-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-sparc-gcc13.spec b/cross-sparc-gcc13.spec
index 70816b3..ea53b27 100644
--- a/cross-sparc-gcc13.spec
+++ b/cross-sparc-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-sparc64-gcc13.spec b/cross-sparc64-gcc13.spec
index 7c430f8..c51f958 100644
--- a/cross-sparc64-gcc13.spec
+++ b/cross-sparc64-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/cross-x86_64-gcc13.spec b/cross-x86_64-gcc13.spec
index 1d4f80f..8ce345c 100644
--- a/cross-x86_64-gcc13.spec
+++ b/cross-x86_64-gcc13.spec
@@ -107,7 +107,7 @@ Name: %{pkgname}
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -138,6 +138,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -145,6 +146,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# Define the canonical target and host architecture
# %%gcc_target_arch is supposed to be the full target triple
@@ -367,10 +369,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/gcc-13.3.0+git8781.tar.xz b/gcc-13.3.0+git8781.tar.xz
deleted file mode 100644
index c805335..0000000
--- a/gcc-13.3.0+git8781.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:36b7233e20d0098470f4724bd5872892f4a3f2d9c6659356fafb3e787c70b299
-size 87275840
diff --git a/gcc-13.3.1+git8964.tar.xz b/gcc-13.3.1+git8964.tar.xz
new file mode 100644
index 0000000..d4a72d5
--- /dev/null
+++ b/gcc-13.3.1+git8964.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b28899078a9457c5e406db83d8e891ef71b5f2568998c0166f29f4619999ce33
+size 87282684
diff --git a/gcc.spec.in b/gcc.spec.in
index 289a946..cafb1bf 100644
--- a/gcc.spec.in
+++ b/gcc.spec.in
@@ -204,7 +204,7 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 1
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -390,6 +390,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -397,6 +398,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
# GCC-TESTSUITE-DELETE-BEGIN
# SRC-COMMON-END
@@ -1365,10 +1367,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/gcc13-pr116657.patch b/gcc13-pr116657.patch
new file mode 100644
index 0000000..8a8add2
--- /dev/null
+++ b/gcc13-pr116657.patch
@@ -0,0 +1,566 @@
+From 5ceea2ac106d6dd1aa8175670b15a801316cf1c9 Mon Sep 17 00:00:00 2001
+From: Richard Biener
+Date: Tue, 30 Apr 2024 09:52:13 +0100
+Subject: [PATCH] libstdc++: Fix std::chrono::tzdb to work with vanguard format
+To: gcc-patches@gcc.gnu.org
+
+From: Jonathan Wakely
+
+I found some issues in the std::chrono::tzdb parser by testing the
+tzdata "vanguard" format, which uses new features that aren't enabled in
+the "main" and "rearguard" data formats.
+
+Since 2024a the keyword "minimum" is no longer valid for the FROM and TO
+fields in a Rule line, which means that "m" is now a valid abbreviation
+for "maximum". Previously we expected either "mi" or "ma". For backwards
+compatibility, a FROM field beginning with "mi" is still supported and
+is treated as 1900. The "maximum" keyword is only allowed in TO now,
+because it makes no sense in FROM. To support these changes the
+minmax_year and minmax_year2 classes for parsing FROM and TO are
+replaced with a single years_from_to class that reads both fields.
+
+The vanguard format makes use of %z in Zone FORMAT fields, which caused
+an exception to be thrown from ZoneInfo::set_abbrev because no % or /
+characters were expected when a Zone doesn't use a named Rule. The
+ZoneInfo::to(sys_info&) function now uses format_abbrev_str to replace
+any %z with the current offset. Although format_abbrev_str also checks
+for %s and STD/DST formats, those only make sense when a named Rule is
+in effect, so won't occur when ZoneInfo::to(sys_info&) is used.
+
+Since making this change on trunk, the tzdata-2024b release started
+using %z in the main format, not just vanguard. This makes a backport to
+release branches necessary (see PR 116657).
+
+This change also implements a feature that has always been missing from
+time_zone::_M_get_sys_info: finding the Rule that is active before the
+specified time point, so that we can correctly handle %s in the FORMAT
+for the first new sys_info that gets created. This requires implementing
+a poorly documented feature of zic, to get the LETTERS field from a
+later transition, as described at
+https://mm.icann.org/pipermail/tz/2024-April/058891.html
+In order for this to work we need to be able to distinguish an empty
+letters field (as used by CE%sT where the variable part is either empty
+or "S") from "the letters field is not known for this transition". The
+tzdata file uses "-" for an empty letters field, which libstdc++ was
+previously replacing with "" when the Rule was parsed. Instead, we now
+preserve the "-" in the Rule object, so that "" can be used for the case
+where we don't know the letters (and so need to decide it).
+
+libstdc++-v3/ChangeLog:
+
+ * src/c++20/tzdb.cc (minmax_year, minmax_year2): Remove.
+ (years_from_to): New class replacing minmax_year and
+ minmax_year2.
+ (format_abbrev_str, select_std_or_dst_abbrev): Move earlier in
+ the file. Handle "-" for letters.
+ (ZoneInfo::to): Use format_abbrev_str to expand %z.
+ (ZoneInfo::set_abbrev): Remove exception. Change parameter from
+ reference to value.
+ (operator>>(istream&, Rule&)): Do not clear letters when it
+ contains "-".
+ (time_zone::_M_get_sys_info): Add missing logic to find the Rule
+ in effect before the time point.
+ * testsuite/std/time/tzdb/1.cc: Adjust for vanguard format using
+ "GMT" as the Zone name, not as a Link to "Etc/GMT".
+ * testsuite/std/time/time_zone/sys_info_abbrev.cc: New test.
+
+(cherry picked from commit 0ca8d56f2085715f27ee536c6c344bc47af49cdd)
+---
+ libstdc++-v3/src/c++20/tzdb.cc | 265 +++++++++++-------
+ .../std/time/time_zone/sys_info_abbrev.cc | 106 +++++++
+ libstdc++-v3/testsuite/std/time/tzdb/1.cc | 6 +-
+ 3 files changed, 274 insertions(+), 103 deletions(-)
+ create mode 100644 libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
+
+diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
+index e058caf27d8..034e72f0274 100644
+--- a/libstdc++-v3/src/c++20/tzdb.cc
++++ b/libstdc++-v3/src/c++20/tzdb.cc
+@@ -342,51 +342,103 @@ namespace std::chrono
+ friend istream& operator>>(istream&, on_day&);
+ };
+
+- // Wrapper for chrono::year that reads a year, or one of the keywords
+- // "minimum" or "maximum", or an unambiguous prefix of a keyword.
+- struct minmax_year
++ // Wrapper for two chrono::year values, which reads the FROM and TO
++ // fields of a Rule line. The FROM field is a year and TO is a year or
++ // one of the keywords "maximum" or "only" (or an abbreviation of those).
++ // For backwards compatibility, the keyword "minimum" is recognized
++ // for FROM and interpreted as 1900.
++ struct years_from_to
+ {
+- year& y;
++ year& from;
++ year& to;
+
+- friend istream& operator>>(istream& in, minmax_year&& y)
++ friend istream& operator>>(istream& in, years_from_to&& yy)
+ {
+- if (ws(in).peek() == 'm') // keywords "minimum" or "maximum"
++ string s;
++ auto c = ws(in).peek();
++ if (c == 'm') [[unlikely]] // keyword "minimum"
+ {
+- string s;
+- in >> s; // extract the rest of the word, but only look at s[1]
+- if (s[1] == 'a')
+- y.y = year::max();
+- else if (s[1] == 'i')
+- y.y = year::min();
+- else
+- in.setstate(ios::failbit);
++ in >> s; // extract the rest of the word
++ yy.from = year(1900);
++ }
++ else if (int num = 0; in >> num) [[likely]]
++ yy.from = year{num};
++
++ c = ws(in).peek();
++ if (c == 'm') // keyword "maximum"
++ {
++ in >> s; // extract the rest of the word
++ yy.to = year::max();
++ }
++ else if (c == 'o') // keyword "only"
++ {
++ in >> s; // extract the rest of the word
++ yy.to = yy.from;
+ }
+ else if (int num = 0; in >> num)
+- y.y = year{num};
++ yy.to = year{num};
++
+ return in;
+ }
+ };
+
+- // As above for minmax_year, but also supports the keyword "only",
+- // meaning that the TO year is the same as the FROM year.
+- struct minmax_year2
++ bool
++ select_std_or_dst_abbrev(string& abbrev, minutes save)
+ {
+- minmax_year to;
+- year from;
++ if (size_t pos = abbrev.find('/'); pos != string::npos)
++ {
++ // Select one of "STD/DST" for standard or daylight.
++ if (save == 0min)
++ abbrev.erase(pos);
++ else
++ abbrev.erase(0, pos + 1);
++ return true;
++ }
++ return false;
++ }
+
+- friend istream& operator>>(istream& in, minmax_year2&& y)
+- {
+- if (ws(in).peek() == 'o') // keyword "only"
+- {
+- string s;
+- in >> s; // extract the whole keyword
+- y.to.y = y.from;
+- }
+- else
+- in >> std::move(y.to);
+- return in;
+- }
+- };
++ // Set the sys_info::abbrev string by expanding any placeholders.
++ void
++ format_abbrev_str(sys_info& info, string_view letters = {})
++ {
++ if (size_t pos = info.abbrev.find('%'); pos != string::npos)
++ {
++ if (info.abbrev[pos + 1] == 's')
++ {
++ // Expand "%s" to the variable part, given by Rule::letters.
++ if (letters == "-")
++ info.abbrev.erase(pos, 2);
++ else
++ info.abbrev.replace(pos, 2, letters);
++ }
++ else if (info.abbrev[pos + 1] == 'z')
++ {
++ // Expand "%z" to the UT offset as +/-hh, +/-hhmm, or +/-hhmmss.
++ hh_mm_ss t(info.offset);
++ string z(1, "+-"[t.is_negative()]);
++ long val = t.hours().count();
++ int digits = 2;
++ if (int m = t.minutes().count())
++ {
++ digits = 4;
++ val *= 100;
++ val += m;
++ if (int s = t.seconds().count())
++ {
++ digits = 6;
++ val *= 100;
++ val += s;
++ }
++ }
++ auto sval = std::to_string(val);
++ z += string(digits - sval.size(), '0');
++ z += sval;
++ info.abbrev.replace(pos, 2, z);
++ }
++ }
++ else
++ select_std_or_dst_abbrev(info.abbrev, info.save);
++ }
+
+ // A time zone information record.
+ // Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -462,6 +514,7 @@ namespace std::chrono
+ info.offset = offset();
+ info.save = minutes(m_save);
+ info.abbrev = format();
++ format_abbrev_str(info); // expand %z
+ return true;
+ }
+
+@@ -469,12 +522,9 @@ namespace std::chrono
+ friend class time_zone;
+
+ void
+- set_abbrev(const string& abbrev)
++ set_abbrev(string abbrev)
+ {
+- // In practice, the FORMAT field never needs expanding here.
+- if (abbrev.find_first_of("/%") != abbrev.npos)
+- __throw_runtime_error("std::chrono::time_zone: invalid data");
+- m_buf = abbrev;
++ m_buf = std::move(abbrev);
+ m_pos = 0;
+ m_expanded = true;
+ }
+@@ -544,9 +594,7 @@ namespace std::chrono
+
+ // Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+
+- in >> quoted(rule.name)
+- >> minmax_year{rule.from}
+- >> minmax_year2{rule.to, rule.from};
++ in >> quoted(rule.name) >> years_from_to{rule.from, rule.to};
+
+ if (char type; in >> type && type != '-')
+ in.setstate(ios::failbit);
+@@ -557,7 +605,7 @@ namespace std::chrono
+ if (save_time.indicator != at_time::Wall)
+ {
+ // We don't actually store the save_time.indicator, because we
+- // assume that it's always deducable from the actual offset value.
++ // assume that it's always deducible from the offset value.
+ auto expected = save_time.time == 0s
+ ? at_time::Standard
+ : at_time::Daylight;
+@@ -567,8 +615,6 @@ namespace std::chrono
+ rule.save = save_time.time;
+
+ in >> rule.letters;
+- if (rule.letters == "-")
+- rule.letters.clear();
+ return in;
+ }
+
+@@ -714,58 +760,6 @@ namespace std::chrono
+ #endif // TZDB_DISABLED
+ };
+
+-#ifndef TZDB_DISABLED
+- namespace
+- {
+- bool
+- select_std_or_dst_abbrev(string& abbrev, minutes save)
+- {
+- if (size_t pos = abbrev.find('/'); pos != string::npos)
+- {
+- // Select one of "STD/DST" for standard or daylight.
+- if (save == 0min)
+- abbrev.erase(pos);
+- else
+- abbrev.erase(0, pos + 1);
+- return true;
+- }
+- return false;
+- }
+-
+- // Set the sys_info::abbrev string by expanding any placeholders.
+- void
+- format_abbrev_str(sys_info& info, string_view letters = {})
+- {
+- if (size_t pos = info.abbrev.find("%s"); pos != string::npos)
+- {
+- // Expand "%s" to the variable part, given by Rule::letters.
+- info.abbrev.replace(pos, 2, letters);
+- }
+- else if (size_t pos = info.abbrev.find("%z"); pos != string::npos)
+- {
+- // Expand "%z" to the UT offset as +/-hh, +/-hhmm, or +/-hhmmss.
+- hh_mm_ss t(info.offset);
+- string z(1, "+-"[t.is_negative()]);
+- long val = t.hours().count();
+- if (minutes m = t.minutes(); m != m.zero())
+- {
+- val *= 100;
+- val += m.count();
+- if (seconds s = t.seconds(); s != s.zero())
+- {
+- val *= 100;
+- val += s.count();
+- }
+- }
+- z += std::to_string(val);
+- info.abbrev.replace(pos, 2, z);
+- }
+- else
+- select_std_or_dst_abbrev(info.abbrev, info.save);
+- }
+- }
+-#endif // TZDB_DISABLED
+-
+ // Implementation of std::chrono::time_zone::get_info(const sys_time&)
+ sys_info
+ time_zone::_M_get_sys_info(sys_seconds tp) const
+@@ -834,12 +828,72 @@ namespace std::chrono
+ info.abbrev = ri.format();
+
+ string_view letters;
+- if (i != infos.begin())
++ if (i != infos.begin() && i[-1].expanded())
++ letters = i[-1].next_letters();
++
++ if (letters.empty())
+ {
+- if (i[-1].expanded())
+- letters = i[-1].next_letters();
+- // XXX else need to find Rule active before this time and use it
+- // to know the initial offset, save, and letters.
++ sys_seconds t = info.begin - seconds(1);
++ const year_month_day date(chrono::floor(t));
++
++ // Try to find a Rule active before this time, to get initial
++ // SAVE and LETTERS values. There may not be a Rule for the period
++ // before the first DST transition, so find the earliest DST->STD
++ // transition and use the LETTERS from that.
++ const Rule* active_rule = nullptr;
++ sys_seconds active_rule_start = sys_seconds::min();
++ const Rule* first_std = nullptr;
++ for (const auto& rule : rules)
++ {
++ if (rule.save == minutes(0))
++ {
++ if (!first_std)
++ first_std = &rule;
++ else if (rule.from < first_std->from)
++ first_std = &rule;
++ else if (rule.from == first_std->from)
++ {
++ if (rule.start_time(rule.from, {})
++ < first_std->start_time(first_std->from, {}))
++ first_std = &rule;
++ }
++ }
++
++ year y = date.year();
++
++ if (y > rule.to) // rule no longer applies at time t
++ continue;
++ if (y < rule.from) // rule doesn't apply yet at time t
++ continue;
++
++ sys_seconds rule_start;
++
++ seconds offset{}; // appropriate for at_time::Universal
++ if (rule.when.indicator == at_time::Wall)
++ offset = info.offset;
++ else if (rule.when.indicator == at_time::Standard)
++ offset = ri.offset();
++
++ // Time the rule takes effect this year:
++ rule_start = rule.start_time(y, offset);
++
++ if (rule_start >= t && rule.from < y)
++ {
++ // Try this rule in the previous year.
++ rule_start = rule.start_time(--y, offset);
++ }
++
++ if (active_rule_start < rule_start && rule_start < t)
++ {
++ active_rule_start = rule_start;
++ active_rule = &rule;
++ }
++ }
++
++ if (active_rule)
++ letters = active_rule->letters;
++ else if (first_std)
++ letters = first_std->letters;
+ }
+
+ const Rule* curr_rule = nullptr;
+@@ -2064,9 +2118,11 @@ namespace std::chrono
+ istringstream in2(std::move(rules));
+ in2 >> rules_time;
+ inf.m_save = duration_cast(rules_time.time);
++ // If the FORMAT is "STD/DST" then we can choose the right one
++ // now, so that we store a shorter string.
+ select_std_or_dst_abbrev(fmt, inf.m_save);
+ }
+- inf.set_abbrev(fmt);
++ inf.set_abbrev(std::move(fmt));
+ }
+
+ // YEAR [MONTH [DAY [TIME]]]
+@@ -2077,7 +2133,12 @@ namespace std::chrono
+ abbrev_month m{January};
+ int d = 1;
+ at_time t{};
++ // XXX DAY should support ON format, e.g. lastSun or Sun>=8
+ in >> m >> d >> t;
++ // XXX UNTIL field should be interpreted
++ // "using the rules in effect just before the transition"
++ // so might need to store as year_month_day and hh_mm_ss and only
++ // convert to a sys_time once we know the offset in effect.
+ inf.m_until = sys_days(year(y)/m.m/day(d)) + seconds(t.time);
+ }
+ else
+diff --git a/libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc b/libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
+new file mode 100644
+index 00000000000..f1a8fff02f5
+--- /dev/null
++++ b/libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
+@@ -0,0 +1,106 @@
++// { dg-do run { target c++20 } }
++// { dg-require-effective-target tzdb }
++// { dg-require-effective-target cxx11_abi }
++// { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } }
++
++#include
++#include
++#include
++
++static bool override_used = false;
++
++namespace __gnu_cxx
++{
++ const char* zoneinfo_dir_override() {
++ override_used = true;
++ return "./";
++ }
++}
++
++using namespace std::chrono;
++
++void
++test_format()
++{
++ std::ofstream("tzdata.zi") << R"(# version test_1
++Zone Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u
++ -1 - %z 1975
++ 0 - GMT
++Zon Some/Zone 1:2:3 - %z 1900
++ 1:23:45 - %z 1950
++Zo Another/Zone 1:2:3 - AZ0 1901
++ 1 Roolz A%sZ 2000
++ 1 Roolz SAZ/DAZ 2005
++ 1 Roolz %z
++Rule Roolz 1950 max - April 1 2 1 D
++Rul Roolz 1950 max - Oct 1 1 0 S
++Z Strange/Zone 1 - X%sX 1980
++ 1 - FOO/BAR 1990
++ 2:00 - %zzz 1995
++ 0:9 - %zzz 1996
++ 0:8:7 - %zzz 1997
++ 0:6:5.5 - %zzz 1998
++)";
++
++ const auto& db = reload_tzdb();
++ VERIFY( override_used ); // If this fails then XFAIL for the target.
++ VERIFY( db.version == "test_1" );
++
++ // Test formatting %z as
++ auto tz = locate_zone("Africa/Bissau");
++ auto inf = tz->get_info(sys_days(1974y/1/1));
++ VERIFY( inf.abbrev == "-01" );
++
++ tz = locate_zone("Some/Zone");
++ inf = tz->get_info(sys_days(1899y/1/1));
++ VERIFY( inf.abbrev == "+010203" );
++ inf = tz->get_info(sys_days(1955y/1/1));
++ VERIFY( inf.abbrev == "+012345" );
++
++ tz = locate_zone("Another/Zone");
++ // Test formatting %s as the LETTER/S field from the active Rule.
++ inf = tz->get_info(sys_days(1910y/January/1));
++ VERIFY( inf.abbrev == "ASZ" );
++ inf = tz->get_info(sys_days(1950y/January/1));
++ VERIFY( inf.abbrev == "ASZ" );
++ inf = tz->get_info(sys_days(1950y/June/1));
++ VERIFY( inf.abbrev == "ADZ" );
++ inf = tz->get_info(sys_days(1999y/January/1));
++ VERIFY( inf.abbrev == "ASZ" );
++ inf = tz->get_info(sys_days(1999y/July/1));
++ VERIFY( inf.abbrev == "ADZ" );
++ // Test formatting STD/DST according to the active Rule.
++ inf = tz->get_info(sys_days(2000y/January/2));
++ VERIFY( inf.abbrev == "SAZ" );
++ inf = tz->get_info(sys_days(2001y/January/1));
++ VERIFY( inf.abbrev == "SAZ" );
++ inf = tz->get_info(sys_days(2001y/July/1));
++ VERIFY( inf.abbrev == "DAZ" );
++ // Test formatting %z as the offset determined by the active Rule.
++ inf = tz->get_info(sys_days(2005y/January/2));
++ VERIFY( inf.abbrev == "+01" );
++ inf = tz->get_info(sys_days(2006y/January/1));
++ VERIFY( inf.abbrev == "+01" );
++ inf = tz->get_info(sys_days(2006y/July/1));
++ VERIFY( inf.abbrev == "+02" );
++
++ // Test formatting %z, %s and S/D for a Zone with no associated Rules.
++ tz = locate_zone("Strange/Zone");
++ inf = tz->get_info(sys_days(1979y/January/1));
++ VERIFY( inf.abbrev == "XX" ); // No Rule means nothing to use for %s.
++ inf = tz->get_info(sys_days(1981y/July/1));
++ VERIFY( inf.abbrev == "FOO" ); // Always standard time means first string.
++ inf = tz->get_info(sys_days(1994y/July/1));
++ VERIFY( inf.abbrev == "+02zz" );
++ inf = tz->get_info(sys_days(1995y/July/1));
++ VERIFY( inf.abbrev == "+0009zz" );
++ inf = tz->get_info(sys_days(1996y/July/1));
++ VERIFY( inf.abbrev == "+000807zz" );
++ inf = tz->get_info(sys_days(1997y/July/1));
++ VERIFY( inf.abbrev == "+000606zz" );
++}
++
++int main()
++{
++ test_format();
++}
+diff --git a/libstdc++-v3/testsuite/std/time/tzdb/1.cc b/libstdc++-v3/testsuite/std/time/tzdb/1.cc
+index 5f69e182603..73d316f5570 100644
+--- a/libstdc++-v3/testsuite/std/time/tzdb/1.cc
++++ b/libstdc++-v3/testsuite/std/time/tzdb/1.cc
+@@ -40,11 +40,15 @@ test_locate()
+ const tzdb& db = get_tzdb();
+ const time_zone* tz = db.locate_zone("GMT");
+ VERIFY( tz != nullptr );
+- VERIFY( tz->name() == "Etc/GMT" );
+ VERIFY( tz == std::chrono::locate_zone("GMT") );
+ VERIFY( tz == db.locate_zone("Etc/GMT") );
+ VERIFY( tz == db.locate_zone("Etc/GMT+0") );
+
++ // Since 2022f GMT is now a Zone and Etc/GMT a link instead of vice versa,
++ // but only when using the vanguard format. As of 2024a, the main and
++ // rearguard formats still have Etc/GMT as a Zone and GMT as a link.
++ VERIFY( tz->name() == "GMT" || tz->name() == "Etc/GMT" );
++
+ VERIFY( db.locate_zone(db.current_zone()->name()) == db.current_zone() );
+ }
+
+--
+2.43.0
+
diff --git a/gcc13-rs6000-Adjust-fpatchable-function-entry.patch b/gcc13-rs6000-Adjust-fpatchable-function-entry.patch
new file mode 100644
index 0000000..fc4af5d
--- /dev/null
+++ b/gcc13-rs6000-Adjust-fpatchable-function-entry.patch
@@ -0,0 +1,265 @@
+From 8926dc1cbe8fa3b9ae35bf03ec503bbc40f9cf37 Mon Sep 17 00:00:00 2001
+From: Giuliano Belinassi
+Date: Thu, 25 Jul 2024 11:54:22 -0300
+Subject: [PATCH] Backport rs6000: Adjust -fpatchable-function-entry* support
+ for dual entry
+
+Original message:
+As the discussion in PR112980, although the current
+implementation for -fpatchable-function-entry* conforms
+with the documentation (making N NOPs be consecutive),
+it's inefficient for both kernel and userspace livepatching
+(see comments in PR for the details).
+
+So this patch is to change the current implementation by
+emitting the "before" NOPs before global entry point and
+the "after" NOPs after local entry point. The new behavior
+would not keep NOPs to be consecutive, so the documentation
+is updated to emphasize this
+
+Backport to gcc-13
+
+Authored-by: Kewen Lin
+Backported-by: Giuliano Belinassi
+
+ PR target/112980
+
+gcc/ChangeLog:
+
+ * config/rs6000/rs6000-logue.cc (rs6000_output_function_prologue):
+ Adjust the handling on patch area emitting with dual entry, remove
+ the restriction on "before" NOPs count, not emit "before" NOPs any
+ more but only emit "after" NOPs.
+ * config/rs6000/rs6000.cc (rs6000_print_patchable_function_entry):
+ Adjust by respecting cfun->machine->stop_patch_area_print.
+ (rs6000_elf_declare_function_name): For ELFv2 with dual entry, set
+ cfun->machine->stop_patch_area_print as true.
+ * config/rs6000/rs6000.h (struct machine_function): Remove member
+ global_entry_emitted, add new member stop_patch_area_print.
+ * doc/invoke.texi (option -fpatchable-function-entry): Adjust the
+ documentation for PowerPC ELFv2 dual entry.
+
+gcc/testsuite/ChangeLog:
+
+ * c-c++-common/patchable_function_entry-default.c: Adjust.
+ * gcc.target/powerpc/pr99888-4.c: Likewise.
+ * gcc.target/powerpc/pr99888-5.c: Likewise.
+ * gcc.target/powerpc/pr99888-6.c: Likewise.
+
+Signed-off-by: Giuliano Belinassi
+---
+ gcc/config/rs6000/rs6000-logue.cc | 40 +++++--------------
+ gcc/config/rs6000/rs6000.cc | 15 +++++--
+ gcc/config/rs6000/rs6000.h | 10 +++--
+ gcc/doc/invoke.texi | 8 ++--
+ .../patchable_function_entry-default.c | 3 --
+ gcc/testsuite/gcc.target/powerpc/pr99888-4.c | 4 +-
+ gcc/testsuite/gcc.target/powerpc/pr99888-5.c | 4 +-
+ gcc/testsuite/gcc.target/powerpc/pr99888-6.c | 4 +-
+ 8 files changed, 33 insertions(+), 55 deletions(-)
+
+diff --git a/gcc/config/rs6000/rs6000-logue.cc b/gcc/config/rs6000/rs6000-logue.cc
+index 208404e6864..3835bc943ad 100644
+--- a/gcc/config/rs6000/rs6000-logue.cc
++++ b/gcc/config/rs6000/rs6000-logue.cc
+@@ -4001,43 +4001,21 @@ rs6000_output_function_prologue (FILE *file)
+ fprintf (file, "\tadd 2,2,12\n");
+ }
+
+- unsigned short patch_area_size = crtl->patch_area_size;
+- unsigned short patch_area_entry = crtl->patch_area_entry;
+- /* Need to emit the patching area. */
+- if (patch_area_size > 0)
+- {
+- cfun->machine->global_entry_emitted = true;
+- /* As ELFv2 ABI shows, the allowable bytes between the global
+- and local entry points are 0, 4, 8, 16, 32 and 64 when
+- there is a local entry point. Considering there are two
+- non-prefixed instructions for global entry point prologue
+- (8 bytes), the count for patchable nops before local entry
+- point would be 2, 6 and 14. It's possible to support those
+- other counts of nops by not making a local entry point, but
+- we don't have clear use cases for them, so leave them
+- unsupported for now. */
+- if (patch_area_entry > 0)
+- {
+- if (patch_area_entry != 2
+- && patch_area_entry != 6
+- && patch_area_entry != 14)
+- error ("unsupported number of nops before function entry (%u)",
+- patch_area_entry);
+- rs6000_print_patchable_function_entry (file, patch_area_entry,
+- true);
+- patch_area_size -= patch_area_entry;
+- }
+- }
+-
+ fputs ("\t.localentry\t", file);
+ assemble_name (file, name);
+ fputs (",.-", file);
+ assemble_name (file, name);
+ fputs ("\n", file);
+ /* Emit the nops after local entry. */
+- if (patch_area_size > 0)
+- rs6000_print_patchable_function_entry (file, patch_area_size,
+- patch_area_entry == 0);
++ unsigned short patch_area_size = crtl->patch_area_size;
++ unsigned short patch_area_entry = crtl->patch_area_entry;
++ if (patch_area_size > patch_area_entry)
++ {
++ cfun->machine->stop_patch_area_print = false;
++ patch_area_size -= patch_area_entry;
++ rs6000_print_patchable_function_entry (file, patch_area_size,
++ patch_area_entry == 0);
++ }
+ }
+
+ else if (rs6000_pcrel_p ())
+diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
+index 2b876c90e6f..a08ed7466dd 100644
+--- a/gcc/config/rs6000/rs6000.cc
++++ b/gcc/config/rs6000/rs6000.cc
+@@ -14936,12 +14936,14 @@ rs6000_print_patchable_function_entry (FILE *file,
+ bool record_p)
+ {
+ bool global_entry_needed_p = rs6000_global_entry_point_prologue_needed_p ();
+- /* For a function which needs global entry point, we will emit the
+- patchable area before and after local entry point under the control of
+- cfun->machine->global_entry_emitted, see the handling in function
++ /* For a function which needs global entry point, we will only emit the
++ patchable area after local entry point under the control of
++ !cfun->machine->stop_patch_area_print, see the handling in functions
+ rs6000_output_function_prologue. */
+- if (!global_entry_needed_p || cfun->machine->global_entry_emitted)
++ if (!cfun->machine->stop_patch_area_print)
+ default_print_patchable_function_entry (file, patch_area_size, record_p);
++ else
++ gcc_assert (global_entry_needed_p);
+ }
+
+ enum rtx_code
+@@ -21115,6 +21117,11 @@ rs6000_elf_declare_function_name (FILE *file, const char *name, tree decl)
+ fprintf (file, "\t.previous\n");
+ }
+ ASM_OUTPUT_LABEL (file, name);
++ /* At this time, the "before" NOPs have been already emitted,
++ let's stop generic code from printing the "after" NOPs and
++ emit just after local entry later. */
++ if (rs6000_global_entry_point_prologue_needed_p ())
++ cfun->machine->stop_patch_area_print = true;
+ }
+
+ static void rs6000_elf_file_end (void) ATTRIBUTE_UNUSED;
+diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
+index 9f02025b0c8..ebe97beb182 100644
+--- a/gcc/config/rs6000/rs6000.h
++++ b/gcc/config/rs6000/rs6000.h
+@@ -2437,10 +2437,12 @@ typedef struct GTY(()) machine_function
+ bool lr_is_wrapped_separately;
+ bool toc_is_wrapped_separately;
+ bool mma_return_type_error;
+- /* Indicate global entry is emitted, only useful when the function requires
+- global entry. It helps to control the patchable area before and after
+- local entry. */
+- bool global_entry_emitted;
++ /* With ELFv2 ABI dual entry points being adopted, generic framework
++ targetm.asm_out.print_patchable_function_entry would generate "after"
++ NOPs before local entry, it is wrong. This flag is to stop it from
++ printing patch area before local entry, it is only useful when the
++ function requires dual entry points. */
++ bool stop_patch_area_print;
+ } machine_function;
+ #endif
+
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index b17d0cf9341..0cdc5ac8c61 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -17449,11 +17449,11 @@ If @code{N=0}, no pad location is recorded.
+ The NOP instructions are inserted at---and maybe before, depending on
+ @var{M}---the function entry address, even before the prologue. On
+ PowerPC with the ELFv2 ABI, for a function with dual entry points,
+-the local entry point is this function entry address.
++@var{M} NOP instructions are inserted before the global entry point and
++@var{N} - @var{M} NOP instructions are inserted after the local entry
++point, which means the NOP instructions may not be consecutive.
+
+-The maximum value of @var{N} and @var{M} is 65535. On PowerPC with the
+-ELFv2 ABI, for a function with dual entry points, the supported values
+-for @var{M} are 0, 2, 6 and 14.
++The maximum value of @var{N} and @var{M} is 65535.
+ @end table
+
+
+diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-default.c b/gcc/testsuite/c-c++-common/patchable_function_entry-default.c
+index 3ccbafc87db..899938b4aa3 100644
+--- a/gcc/testsuite/c-c++-common/patchable_function_entry-default.c
++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-default.c
+@@ -1,9 +1,6 @@
+ /* { dg-do compile { target { ! { nvptx*-*-* visium-*-* } } } } */
+ /* { dg-options "-O2 -fpatchable-function-entry=3,1" } */
+ /* { dg-additional-options "-fno-pie" { target sparc*-*-* } } */
+-/* See PR99888, one single preceding nop isn't allowed on powerpc_elfv2,
+- so overriding with two preceding nops to make it pass there. */
+-/* { dg-additional-options "-fpatchable-function-entry=3,2" { target powerpc_elfv2 } } */
+ /* { dg-final { scan-assembler-times "nop|NOP|SWYM" 3 { target { ! { alpha*-*-* riscv*-*-* } } } } } */
+ /* { dg-final { scan-assembler-times "bis" 3 { target alpha*-*-* } } } */
+ /* { dg-final { scan-assembler-times "nop\n" 3 { target riscv*-*-* } } } */
+diff --git a/gcc/testsuite/gcc.target/powerpc/pr99888-4.c b/gcc/testsuite/gcc.target/powerpc/pr99888-4.c
+index 00a8d4d316e..6f23f2bb939 100644
+--- a/gcc/testsuite/gcc.target/powerpc/pr99888-4.c
++++ b/gcc/testsuite/gcc.target/powerpc/pr99888-4.c
+@@ -2,12 +2,10 @@
+ /* There is no global entry point prologue with pcrel. */
+ /* { dg-options "-mno-pcrel -fpatchable-function-entry=1,1" } */
+
+-/* Verify one error emitted for unexpected 1 nop before local
+- entry. */
++/* Verify there is no error with 1 nop before local entry. */
+
+ extern int a;
+
+ int test (int b) {
+ return a + b;
+ }
+-/* { dg-error "unsupported number of nops before function entry \\(1\\)" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/gcc.target/powerpc/pr99888-5.c b/gcc/testsuite/gcc.target/powerpc/pr99888-5.c
+index 39d3b4465f1..13f192ebd20 100644
+--- a/gcc/testsuite/gcc.target/powerpc/pr99888-5.c
++++ b/gcc/testsuite/gcc.target/powerpc/pr99888-5.c
+@@ -2,12 +2,10 @@
+ /* There is no global entry point prologue with pcrel. */
+ /* { dg-options "-mno-pcrel -fpatchable-function-entry=7,3" } */
+
+-/* Verify one error emitted for unexpected 3 nops before local
+- entry. */
++/* Verify no error emitted for 3 nops before local entry. */
+
+ extern int a;
+
+ int test (int b) {
+ return a + b;
+ }
+-/* { dg-error "unsupported number of nops before function entry \\(3\\)" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/gcc.target/powerpc/pr99888-6.c b/gcc/testsuite/gcc.target/powerpc/pr99888-6.c
+index c6c18dcc7ac..431c69cae9a 100644
+--- a/gcc/testsuite/gcc.target/powerpc/pr99888-6.c
++++ b/gcc/testsuite/gcc.target/powerpc/pr99888-6.c
+@@ -2,8 +2,7 @@
+ /* There is no global entry point prologue with pcrel. */
+ /* { dg-options "-mno-pcrel" } */
+
+-/* Verify one error emitted for unexpected 4 nops before local
+- entry. */
++/* Verify no error emitted for 4 nops before local entry. */
+
+ extern int a;
+
+@@ -11,4 +10,3 @@ __attribute__ ((patchable_function_entry (20, 4)))
+ int test (int b) {
+ return a + b;
+ }
+-/* { dg-error "unsupported number of nops before function entry \\(4\\)" "" { target *-*-* } .-1 } */
+--
+2.45.2
+
diff --git a/gcc13-testresults.spec b/gcc13-testresults.spec
index 4b82c6f..aaca531 100644
--- a/gcc13-testresults.spec
+++ b/gcc13-testresults.spec
@@ -221,7 +221,7 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -406,6 +406,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -413,6 +414,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
Summary: Testsuite results
License: SUSE-Public-Domain
@@ -551,10 +553,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end
diff --git a/gcc13.changes b/gcc13.changes
index f7c2457..73e2cf6 100644
--- a/gcc13.changes
+++ b/gcc13.changes
@@ -1,3 +1,26 @@
+-------------------------------------------------------------------
+Tue Oct 22 08:06:21 UTC 2024 - Richard Biener
+
+- Remove epiphany build, newlib no longer builds for it.
+
+-------------------------------------------------------------------
+Wed Oct 16 13:32:36 UTC 2024 - Richard Biener
+
+- Add gcc13-pr116657.patch to fix for parsing tzdata 2024b [gcc#116657]
+
+-------------------------------------------------------------------
+Wed Aug 7 09:32:00 UTC 2024 - Richard Biener
+
+- Update to gcc-13 branch head, 9d368828bd4d04ce507e02a581, git8964
+ * includes fix for samba build with glibc 2.40
+
+-------------------------------------------------------------------
+Thu Jul 25 17:29:02 UTC 2024 - Giuliano Belinassi
+
+- Add gcc13-rs6000-Adjust-fpatchable-function-entry.patch to fix
+ the incorrect NOPs layout when -fpatchable-function-enry is passed
+ in ppc64le.
+
-------------------------------------------------------------------
Tue May 21 08:56:28 UTC 2024 - Richard Biener
diff --git a/gcc13.spec b/gcc13.spec
index 4a37c31..db11437 100644
--- a/gcc13.spec
+++ b/gcc13.spec
@@ -200,7 +200,7 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: https://gcc.gnu.org/
-Version: 13.3.0+git8781
+Version: 13.3.1+git8964
Release: 0
%define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1)
%define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/')
@@ -385,6 +385,7 @@ Patch23: gcc13-bsc1216664.patch
Patch24: gcc13-sanitizer-remove-crypt-interception.patch
Patch26: gcc13-pr101523.patch
Patch27: gcc13-amdgcn-remove-fiji.patch
+Patch28: gcc13-pr116657.patch
# A set of patches from the RH srpm
Patch51: gcc41-ppc32-retaddr.patch
# Some patches taken from Debian
@@ -392,6 +393,7 @@ Patch60: gcc44-textdomain.patch
Patch61: gcc44-rename-info-files.patch
# Feature backports
Patch100: gcc13-pr88345-min-func-alignment.diff
+Patch101: gcc13-rs6000-Adjust-fpatchable-function-entry.patch
License: GPL-3.0-or-later
Summary: The GNU C Compiler and Support Files
@@ -2375,10 +2377,12 @@ ln -s newlib-4.3.0.20230120/newlib .
%patch -P 24 -p1
%patch -P 26 -p1
%patch -P 27 -p1
+%patch -P 28 -p1
%patch -P 51
%patch -P 60 -p1
%patch -P 61 -p1
%patch -P 100 -p1
+%patch -P 101 -p1
#test patching end