diff mbox series

[v5,1/7] gcc: Upgrade GCC to 16.1 release

Message ID 20260527133516.2337150-2-Hemanth.KumarMD@windriver.com
State New
Headers show
Series gcc: Upgrade GCC to 16.1 release | expand

Commit Message

Hemanth Kumar M D May 27, 2026, 1:35 p.m. UTC
From: Hemanth Kumar M D <Hemanth.KumarMD@windriver.com>

Notable changes in GCC 16 include:
- Improved C23/C++23 support and initial C++26 features
- Enhanced diagnostics and static analyzer improvements
- Optimizer and code generation enhancements
- Target-specific updates for AArch64, RISC-V, x86, and others
- Runtime library updates (libstdc++, libatomic, libgomp, libsanitizer)
- Multiple bug fixes and performance improvements

* Rebased existing OE-Core patches for GCC 16.1 and dropped
patches merged upstream.

For detailed info: https://gcc.gnu.org/gcc-16/changes.html

Signed-off-by: Hemanth Kumar M D <Hemanth.KumarMD@windriver.com>
---
 meta/conf/distro/include/maintainers.inc      |   2 +-
 meta/conf/distro/include/tcmode-default.inc   |   2 +-
 .../gcc/{gcc-15.2.inc => gcc-16.1.inc}        |  17 +-
 ...ian_15.2.bb => gcc-cross-canadian_16.1.bb} |   0
 .../{gcc-cross_15.2.bb => gcc-cross_16.1.bb}  |   0
 ...-crosssdk_15.2.bb => gcc-crosssdk_16.1.bb} |   0
 ...cc-runtime_15.2.bb => gcc-runtime_16.1.bb} |   0
 ...itizers_15.2.bb => gcc-sanitizers_16.1.bb} |   0
 ...{gcc-source_15.2.bb => gcc-source_16.1.bb} |   0
 ...AMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch |   2 +-
 ...sroot-gcc-version-specific-dirs-with.patch |   4 +-
 ...omic-Do-not-enforce-march-on-aarch64.patch |  18 +-
 ...025-gcc-testsuite-tweaks-for-mips-OE.patch |  78 +++---
 .../gcc/gcc/0026-fix-pr90579-testcases.patch  |  40 ---
 .../gcc/gcc/0027-gcc15-pr122394.patch         |  88 ------
 ...028-fix-gcc-libitm-false-postives-01.patch | 187 -------------
 ...028-fix-gcc-libitm-false-postives-02.patch | 220 ---------------
 ...dy-Make-it-buildable-by-C-11-to-C-26.patch | 257 ------------------
 .../gcc/{gcc_15.2.bb => gcc_16.1.bb}          |   0
 ...initial_15.2.bb => libgcc-initial_16.1.bb} |   0
 .../gcc/{libgcc_15.2.bb => libgcc_16.1.bb}    |   0
 ...ibgfortran_15.2.bb => libgfortran_16.1.bb} |   0
 22 files changed, 66 insertions(+), 849 deletions(-)
 rename meta/recipes-devtools/gcc/{gcc-15.2.inc => gcc-16.1.inc} (88%)
 rename meta/recipes-devtools/gcc/{gcc-cross-canadian_15.2.bb => gcc-cross-canadian_16.1.bb} (100%)
 rename meta/recipes-devtools/gcc/{gcc-cross_15.2.bb => gcc-cross_16.1.bb} (100%)
 rename meta/recipes-devtools/gcc/{gcc-crosssdk_15.2.bb => gcc-crosssdk_16.1.bb} (100%)
 rename meta/recipes-devtools/gcc/{gcc-runtime_15.2.bb => gcc-runtime_16.1.bb} (100%)
 rename meta/recipes-devtools/gcc/{gcc-sanitizers_15.2.bb => gcc-sanitizers_16.1.bb} (100%)
 rename meta/recipes-devtools/gcc/{gcc-source_15.2.bb => gcc-source_16.1.bb} (100%)
 delete mode 100644 meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch
 delete mode 100644 meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch
 delete mode 100644 meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch
 delete mode 100644 meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch
 delete mode 100644 meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
 rename meta/recipes-devtools/gcc/{gcc_15.2.bb => gcc_16.1.bb} (100%)
 rename meta/recipes-devtools/gcc/{libgcc-initial_15.2.bb => libgcc-initial_16.1.bb} (100%)
 rename meta/recipes-devtools/gcc/{libgcc_15.2.bb => libgcc_16.1.bb} (100%)
 rename meta/recipes-devtools/gcc/{libgfortran_15.2.bb => libgfortran_16.1.bb} (100%)

Comments

Khem Raj May 27, 2026, 3:36 p.m. UTC | #1
This patchset looks good to me

On Wed, May 27, 2026, 3:35 PM Hemanth Kumar M D via lists.openembedded.org
<Hemanth.KumarMD=windriver.com@lists.openembedded.org> wrote:

> From: Hemanth Kumar M D <Hemanth.KumarMD@windriver.com>
>
> Notable changes in GCC 16 include:
> - Improved C23/C++23 support and initial C++26 features
> - Enhanced diagnostics and static analyzer improvements
> - Optimizer and code generation enhancements
> - Target-specific updates for AArch64, RISC-V, x86, and others
> - Runtime library updates (libstdc++, libatomic, libgomp, libsanitizer)
> - Multiple bug fixes and performance improvements
>
> * Rebased existing OE-Core patches for GCC 16.1 and dropped
> patches merged upstream.
>
> For detailed info: https://gcc.gnu.org/gcc-16/changes.html
>
> Signed-off-by: Hemanth Kumar M D <Hemanth.KumarMD@windriver.com>
> ---
>  meta/conf/distro/include/maintainers.inc      |   2 +-
>  meta/conf/distro/include/tcmode-default.inc   |   2 +-
>  .../gcc/{gcc-15.2.inc => gcc-16.1.inc}        |  17 +-
>  ...ian_15.2.bb => gcc-cross-canadian_16.1.bb} |   0
>  .../{gcc-cross_15.2.bb => gcc-cross_16.1.bb}  |   0
>  ...-crosssdk_15.2.bb => gcc-crosssdk_16.1.bb} |   0
>  ...cc-runtime_15.2.bb => gcc-runtime_16.1.bb} |   0
>  ...itizers_15.2.bb => gcc-sanitizers_16.1.bb} |   0
>  ...{gcc-source_15.2.bb => gcc-source_16.1.bb} |   0
>  ...AMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch |   2 +-
>  ...sroot-gcc-version-specific-dirs-with.patch |   4 +-
>  ...omic-Do-not-enforce-march-on-aarch64.patch |  18 +-
>  ...025-gcc-testsuite-tweaks-for-mips-OE.patch |  78 +++---
>  .../gcc/gcc/0026-fix-pr90579-testcases.patch  |  40 ---
>  .../gcc/gcc/0027-gcc15-pr122394.patch         |  88 ------
>  ...028-fix-gcc-libitm-false-postives-01.patch | 187 -------------
>  ...028-fix-gcc-libitm-false-postives-02.patch | 220 ---------------
>  ...dy-Make-it-buildable-by-C-11-to-C-26.patch | 257 ------------------
>  .../gcc/{gcc_15.2.bb => gcc_16.1.bb}          |   0
>  ...initial_15.2.bb => libgcc-initial_16.1.bb} |   0
>  .../gcc/{libgcc_15.2.bb => libgcc_16.1.bb}    |   0
>  ...ibgfortran_15.2.bb => libgfortran_16.1.bb} |   0
>  22 files changed, 66 insertions(+), 849 deletions(-)
>  rename meta/recipes-devtools/gcc/{gcc-15.2.inc => gcc-16.1.inc} (88%)
>  rename meta/recipes-devtools/gcc/{gcc-cross-canadian_15.2.bb =>
> gcc-cross-canadian_16.1.bb} (100%)
>  rename meta/recipes-devtools/gcc/{gcc-cross_15.2.bb => gcc-cross_16.1.bb}
> (100%)
>  rename meta/recipes-devtools/gcc/{gcc-crosssdk_15.2.bb =>
> gcc-crosssdk_16.1.bb} (100%)
>  rename meta/recipes-devtools/gcc/{gcc-runtime_15.2.bb =>
> gcc-runtime_16.1.bb} (100%)
>  rename meta/recipes-devtools/gcc/{gcc-sanitizers_15.2.bb =>
> gcc-sanitizers_16.1.bb} (100%)
>  rename meta/recipes-devtools/gcc/{gcc-source_15.2.bb =>
> gcc-source_16.1.bb} (100%)
>  delete mode 100644
> meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch
>  delete mode 100644 meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch
>  delete mode 100644
> meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch
>  delete mode 100644
> meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch
>  delete mode 100644
> meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
>  rename meta/recipes-devtools/gcc/{gcc_15.2.bb => gcc_16.1.bb} (100%)
>  rename meta/recipes-devtools/gcc/{libgcc-initial_15.2.bb =>
> libgcc-initial_16.1.bb} (100%)
>  rename meta/recipes-devtools/gcc/{libgcc_15.2.bb => libgcc_16.1.bb}
> (100%)
>  rename meta/recipes-devtools/gcc/{libgfortran_15.2.bb =>
> libgfortran_16.1.bb} (100%)
>
> diff --git a/meta/conf/distro/include/maintainers.inc
> b/meta/conf/distro/include/maintainers.inc
> index 24c5a9d712..fdfdec28b5 100644
> --- a/meta/conf/distro/include/maintainers.inc
> +++ b/meta/conf/distro/include/maintainers.inc
> @@ -200,7 +200,7 @@
> RECIPE_MAINTAINER:pn-gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem
> Raj <r
>  RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <
> raj.khem@gmail.com>"
>  RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>"
>  RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>"
> -RECIPE_MAINTAINER:pn-gcc-source-15.2.0 = "Khem Raj <raj.khem@gmail.com>"
> +RECIPE_MAINTAINER:pn-gcc-source-16.1.0 = "Khem Raj <raj.khem@gmail.com>"
>  RECIPE_MAINTAINER:pn-gcompat = "Khem Raj <raj.khem@gmail.com>"
>  RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>"
>  RECIPE_MAINTAINER:pn-gcr = "Unassigned <unassigned@yoctoproject.org>"
> diff --git a/meta/conf/distro/include/tcmode-default.inc
> b/meta/conf/distro/include/tcmode-default.inc
> index 3c956dfb12..33d3efd845 100644
> --- a/meta/conf/distro/include/tcmode-default.inc
> +++ b/meta/conf/distro/include/tcmode-default.inc
> @@ -9,7 +9,7 @@ PREFERRED_PROVIDER_virtual/nativesdk-cross-binutils ?=
> "binutils-crosssdk-${SDK_
>  # Default libc config
>  PREFERRED_PROVIDER_virtual/gettext ??= "gettext"
>
> -GCCVERSION ?= "15.%"
> +GCCVERSION ?= "16.%"
>  SDKGCCVERSION ?= "${GCCVERSION}"
>  GLIBCVERSION ?= "2.43%"
>  RUSTVERSION ?= "1.95.0%"
> diff --git a/meta/recipes-devtools/gcc/gcc-15.2.inc
> b/meta/recipes-devtools/gcc/gcc-16.1.inc
> similarity index 88%
> rename from meta/recipes-devtools/gcc/gcc-15.2.inc
> rename to meta/recipes-devtools/gcc/gcc-16.1.inc
> index a96f2b8411..3a96228631 100644
> --- a/meta/recipes-devtools/gcc/gcc-15.2.inc
> +++ b/meta/recipes-devtools/gcc/gcc-16.1.inc
> @@ -2,11 +2,11 @@ require gcc-common.inc
>
>  # Third digit in PV should be incremented after a minor release
>
> -PV = "15.2.0"
> +PV = "16.1.0"
>
>  # BINV should be incremented to a revision after a minor gcc release
>
> -BINV = "15.2.0"
> +BINV = "16.1.0"
>
>  FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:"
>
> @@ -34,17 +34,17 @@ LIC_FILES_CHKSUM = "\
>  #SRC_URI[sha256sum] =
> "41bf7be5dc029112a9df625266e7de030ffc36ff3638f270b180ae8c91fe6449"
>
>  # from snapshot
> -#RELEASE ?= "15-20250420"
> -#RELEASE ?= "15.1.0-RC-20250418"
> +#RELEASE ?= "16-20260502"
> +#RELEASE ?= "16.1.0-RC-20260424"
>  #BASEURI ?= "
> https://gcc.gnu.org/pub/gcc/snapshots/${RELEASE}/gcc-${RELEASE}.tar.xz"
>  #SOURCEDIR ?= "gcc-${RELEASE}"
> -#SRC_URI[sha256sum] =
> "fe18624317c6c662977eea8b5a506ec6c132fc11c7a8d53e2f6d21b139b0af3c"
> +#SRC_URI[sha256sum] =
> "e8edc2aaf0affce7020658b0be9a3fc820aa33dc610640d3fe1ba1aee360051b"
>
>  # official release
>  RELEASE ?= "${PV}"
>  BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz"
>  SOURCEDIR ?= "gcc-${PV}"
> -SRC_URI[sha256sum] =
> "438fd996826b0c82485a29da03a72d71d6e3541a83ec702df4271f6fe025d24e"
> +SRC_URI[sha256sum] =
> "50efb4d94c3397aff3b0d61a5abd748b4dd31d9d3f2ab7be05b171d36a510f79"
>
>  SRC_URI = "${BASEURI} \
>             file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
> @@ -72,11 +72,6 @@ SRC_URI = "${BASEURI} \
>             file://0023-Fix-install-path-of-linux64.h.patch \
>             file://0024-Avoid-hardcoded-build-paths-into-ppc-libgcc.patch \
>             file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \
> -           file://0026-fix-pr90579-testcases.patch \
> -           file://0027-gcc15-pr122394.patch \
> -           file://0028-fix-gcc-libitm-false-postives-01.patch \
> -           file://0028-fix-gcc-libitm-false-postives-02.patch \
> -           file://0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch \
>             file://0001-mapper-localhost-might-not-be-known.patch \
>  "
>
> diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_15.2.bb
> b/meta/recipes-devtools/gcc/gcc-cross-canadian_16.1.bb
> similarity index 100%
> rename from meta/recipes-devtools/gcc/gcc-cross-canadian_15.2.bb
> rename to meta/recipes-devtools/gcc/gcc-cross-canadian_16.1.bb
> diff --git a/meta/recipes-devtools/gcc/gcc-cross_15.2.bb
> b/meta/recipes-devtools/gcc/gcc-cross_16.1.bb
> similarity index 100%
> rename from meta/recipes-devtools/gcc/gcc-cross_15.2.bb
> rename to meta/recipes-devtools/gcc/gcc-cross_16.1.bb
> diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_15.2.bb
> b/meta/recipes-devtools/gcc/gcc-crosssdk_16.1.bb
> similarity index 100%
> rename from meta/recipes-devtools/gcc/gcc-crosssdk_15.2.bb
> rename to meta/recipes-devtools/gcc/gcc-crosssdk_16.1.bb
> diff --git a/meta/recipes-devtools/gcc/gcc-runtime_15.2.bb
> b/meta/recipes-devtools/gcc/gcc-runtime_16.1.bb
> similarity index 100%
> rename from meta/recipes-devtools/gcc/gcc-runtime_15.2.bb
> rename to meta/recipes-devtools/gcc/gcc-runtime_16.1.bb
> diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_15.2.bb
> b/meta/recipes-devtools/gcc/gcc-sanitizers_16.1.bb
> similarity index 100%
> rename from meta/recipes-devtools/gcc/gcc-sanitizers_15.2.bb
> rename to meta/recipes-devtools/gcc/gcc-sanitizers_16.1.bb
> diff --git a/meta/recipes-devtools/gcc/gcc-source_15.2.bb
> b/meta/recipes-devtools/gcc/gcc-source_16.1.bb
> similarity index 100%
> rename from meta/recipes-devtools/gcc/gcc-source_15.2.bb
> rename to meta/recipes-devtools/gcc/gcc-source_16.1.bb
> diff --git
> a/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
> b/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
> index 621f8bc41f..07e9e23f3d 100644
> ---
> a/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
> +++
> b/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
> @@ -172,7 +172,7 @@ index fbc75a90ad5..38c239940bd 100644
>  +  SYSTEMLIBS_DIR "ld-linux-loongarch-" ABI_SPEC ".so.1"
>
>   #define MUSL_ABI_SPEC \
> -   "%{mabi=lp64d:}" \
> +   "%{mabi=ilp32d:}" \
>  @@ -40,7 +40,7 @@ along with GCC; see the file COPYING3.  If not see
>
>   #undef MUSL_DYNAMIC_LINKER
> diff --git
> a/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch
> b/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch
> index a087ba17d9..678457bbc9 100644
> ---
> a/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch
> +++
> b/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch
> @@ -89,12 +89,12 @@ index 007c91780f6..22eb17bc099 100644
>  +                  {
>  +                    memcpy (path + len, this_multi, this_multi_len + 1);
>  +                    memcpy (path + len + this_multi_len, multi_suffix,
> suffix_len + 1);
> -+                    ret = callback (path, callback_info);
> ++                    ret = callback (path);
>  +                      if (ret)
>  +                        break;
>  +                  }
>  +              }
>  +
>               memcpy (path + len, multi_suffix, suffix_len + 1);
> -             ret = callback (path, callback_info);
> +             ret = callback (path);
>               if (ret)
> diff --git
> a/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch
> b/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch
> index 0f2a9d8c1f..5a8a79c0d2 100644
> ---
> a/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch
> +++
> b/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch
> @@ -29,14 +29,14 @@ index 0f1a7156084..255fe448e63 100644
>
>   endif
>  diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
> -index 9798e7c09e9..3b3027eb77d 100644
> +index 887ae41..b3d5e6f 100644
>  --- a/libatomic/Makefile.in
>  +++ b/libatomic/Makefile.in
> -@@ -452,7 +452,6 @@ M_SRC = $(firstword $(filter %/$(M_FILE),
> $(all_c_files)))
> - libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \
> -       _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \
> -       $(am__append_3) $(am__append_4)
> --@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS =
> -march=armv8-a+lse
> - @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp
> -DHAVE_KERNEL64
> - @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586
> - @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -mcx16 -mcx16
> +@@ -470,7 +470,6 @@ libatomic_la_LDFLAGS = $(libatomic_version_info)
> $(libatomic_version_script) \
> + @PARTIAL_VXWORKS_FALSE@       _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) \
> + @PARTIAL_VXWORKS_FALSE@       $(am__append_2) $(am__append_3) \
> + @PARTIAL_VXWORKS_FALSE@       $(am__append_4) $(am__append_5)
> +-@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@
> @PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv8-a+lse
> + @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@
> @PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
> + @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS =
> -march=i586
> + @ARCH_LOONGARCH_TRUE@@HAVE_IFUNC_TRUE@
> @PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -mlsx|-mscq
> diff --git
> a/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
> b/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
> index fcdd79a840..dc708942b4 100644
> ---
> a/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
> +++
> b/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
> @@ -92,10 +92,10 @@ index 6dd8fa3fce9..95672008219 100644
>         "preprocess" {
>             set compile_type "preprocess"
>  diff --git a/gcc/testsuite/lib/target-supports.exp
> b/gcc/testsuite/lib/target-supports.exp
> -index c0376b04551..5d053dfe726 100644
> +index 55775d0..df161a9 100644
>  --- a/gcc/testsuite/lib/target-supports.exp
>  +++ b/gcc/testsuite/lib/target-supports.exp
> -@@ -2949,14 +2949,7 @@ proc check_mips_loongson_mmi_hw_available { } {
> +@@ -3113,14 +3113,7 @@ proc check_mips_loongson_mmi_hw_available { } {
>         if { !([istarget mips*-*-*]) } {
>             expr 0
>         } else {
> @@ -107,11 +107,11 @@ index c0376b04551..5d053dfe726 100644
>  -              return 0;
>  -            }
>  -          } "-mloongson-mmi"
> -+          expr 0
> ++            expr 0
>         }
>       }]
>   }
> -@@ -2970,29 +2963,7 @@ proc check_mips_msa_hw_available { } {
> +@@ -3134,29 +3127,7 @@ proc check_mips_msa_hw_available { } {
>       if { !([istarget mips*-*-*]) } {
>         expr 0
>       } else {
> @@ -138,38 +138,41 @@ index c0376b04551..5d053dfe726 100644
>  -      }
>  -      #endif
>  -      } "-mmsa"
> -+      expr 0
> ++    expr 0
>       }
>     }]
>   }
> -@@ -10371,6 +10342,7 @@ proc is-effective-target-keyword { arg } {
> +@@ -10740,6 +10711,7 @@ proc is-effective-target-keyword { arg } {
>
>   proc et-dg-runtest { runtest testcases flags default-extra-flags } {
>       global dg-do-what-default
> -+    global do-what-limit
> ++    global do-what-limit
>       global EFFECTIVE_TARGETS
>       global et_index
>
> -@@ -10378,6 +10350,7 @@ proc et-dg-runtest { runtest testcases flags
> default-extra-flags } {
> +@@ -10747,16 +10719,19 @@ proc et-dg-runtest { runtest testcases flags
> default-extra-flags } {
>         foreach target $EFFECTIVE_TARGETS {
>             set target_flags $flags
>             set dg-do-what-default compile
> -+            set do-what-limit link
> -           set et_index [lsearch -exact $EFFECTIVE_TARGETS $target]
> +-          set et_index [lsearch -exact $EFFECTIVE_TARGETS $target]
> ++          set do-what-limit link
> ++            set et_index [lsearch -exact $EFFECTIVE_TARGETS $target]
>             if { [info procs add_options_for_${target}] != [list] } {
>                 set target_flags [add_options_for_${target} "$flags"]
> -@@ -10385,8 +10358,10 @@ proc et-dg-runtest { runtest testcases flags
> default-extra-flags } {
> +           }
>             if { [info procs check_effective_target_${target}_runtime]
>                  != [list] && [check_effective_target_${target}_runtime] }
> {
>                 set dg-do-what-default run
> -+              set do-what-limit run
> ++                set do-what-limit run
>             }
>             $runtest $testcases $target_flags ${default-extra-flags}
> +-          unset et_index
>  +          unset do-what-limit
> ++            unset et_index
>         }
>       } else {
> -       set et_index 0
> -@@ -12172,6 +12147,7 @@ proc check_effective_target_sigsetjmp {} {
> +       $runtest $testcases $flags ${default-extra-flags}
> +@@ -12539,6 +12514,7 @@ proc check_effective_target_sigsetjmp {} {
>   proc check_vect_support_and_set_flags { } {
>       global DEFAULT_VECTCFLAGS
>       global dg-do-what-default
> @@ -177,51 +180,62 @@ index c0376b04551..5d053dfe726 100644
>       global EFFECTIVE_TARGETS
>
>       if [istarget powerpc*-*-*] {
> -@@ -12203,6 +12179,7 @@ proc check_vect_support_and_set_flags { } {
> +@@ -12570,14 +12546,16 @@ proc check_vect_support_and_set_flags { } {
>                 set DEFAULT_VECTCFLAGS [linsert $DEFAULT_VECTCFLAGS 0
> "-mcpu=970"]
>             }
>             set dg-do-what-default compile
> -+        set do-what-limit link
> -       }
> +-      }
> ++       set do-what-limit link
> ++        }
>       } elseif { [check_effective_target_x86] } {
>         lappend DEFAULT_VECTCFLAGS "-msse2"
> -@@ -12210,6 +12187,7 @@ proc check_vect_support_and_set_flags { } {
> +       if { [check_effective_target_sse2_runtime] } {
>             set dg-do-what-default run
>         } else {
>             set dg-do-what-default compile
> -+        set do-what-limit link
> -       }
> +-      }
> ++         set do-what-limit link
> ++        }
>       } elseif { [istarget mips*-*-*]
>                && [check_effective_target_nomips16] } {
> -@@ -12229,6 +12207,7 @@ proc check_vect_support_and_set_flags { } {
> +       if { [check_effective_target_mpaired_single "-mpaired-single"] } {
> +@@ -12596,7 +12574,8 @@ proc check_vect_support_and_set_flags { } {
>             set dg-do-what-default run
>         } else {
>             set dg-do-what-default compile
> -+        set do-what-limit link
> -       }
> +-      }
> ++       set do-what-limit link
> ++        }
>       } elseif [istarget alpha*-*-*] {
>         # Alpha's vectorization capabilities are extremely limited.
> -@@ -12242,6 +12221,7 @@ proc check_vect_support_and_set_flags { } {
> +       # It's more effort than its worth disabling all of the tests
> +@@ -12609,7 +12588,8 @@ proc check_vect_support_and_set_flags { } {
>             set dg-do-what-default run
>         } else {
>             set dg-do-what-default compile
> -+        set do-what-limit link
> -       }
> +-      }
> ++       set do-what-limit link
> ++        }
>       } elseif [istarget ia64-*-*] {
>         set dg-do-what-default run
> -@@ -12255,6 +12235,7 @@ proc check_vect_support_and_set_flags { } {
> +     } elseif [is-effective-target arm_neon_ok] {
> +@@ -12622,7 +12602,8 @@ proc check_vect_support_and_set_flags { } {
>             set dg-do-what-default run
>         } else {
>             set dg-do-what-default compile
> -+        set do-what-limit link
> -       }
> +-      }
> ++       set do-what-limit link
> ++        }
>       } elseif [istarget aarch64*-*-*] {
>         set dg-do-what-default run
> -@@ -12279,6 +12260,7 @@ proc check_vect_support_and_set_flags { } {
> +     } elseif [istarget s390*-*-*] {
> +@@ -12646,7 +12627,8 @@ proc check_vect_support_and_set_flags { } {
>         } else {
>             lappend DEFAULT_VECTCFLAGS "-march=z14" "-mzarch"
>             set dg-do-what-default compile
> -+        set do-what-limit link
> -       }
> +-      }
> ++       set do-what-limit link
> ++        }
>       } elseif [istarget amdgcn-*-*] {
>         set dg-do-what-default run
> +     } elseif [istarget riscv*-*-*] {
> diff --git
> a/meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch
> b/meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch
> deleted file mode 100644
> index 6ada61b74f..0000000000
> --- a/meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -From 679e24f5a751663998ff7202149a749e0f7251f9 Mon Sep 17 00:00:00 2001
> -From: Harish Sadineni <Harish.Sadineni@windriver.com>
> -Date: Sun, 10 Aug 2025 20:28:00 +0800
> -Subject: [PATCH] testsuite: i386: Fix gcc.target/i386/pr90579.c when PIE
> is
> - enabled [PR118885]
> -
> -When gcc build with --enable-deafult-pie the following tests
> -were getting failed:
> - FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+40
> - FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+32
> - FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+24
> - FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+16
> -
> -    PR target/118885
> -
> -gcc/testsuite/ChangeLog:
> -
> -    * gcc.target/i386/pr90579.c: add -fno-pie to dg-options
> -    to fix tests when PIE is enabled.
> -
> -Upstream-Status: Backport [
> https://gcc.gnu.org/cgit/gcc/commit/?id=679e24f5a751663998ff7202149a749e0f7251f9
> ]
> -
> -Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
> ----
> - gcc/testsuite/gcc.target/i386/pr90579.c | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/gcc/testsuite/gcc.target/i386/pr90579.c
> b/gcc/testsuite/gcc.target/i386/pr90579.c
> -index ab48a44063c..19081ec9fdf 100644
> ---- a/gcc/testsuite/gcc.target/i386/pr90579.c
> -+++ b/gcc/testsuite/gcc.target/i386/pr90579.c
> -@@ -1,5 +1,5 @@
> - /* { dg-do compile } */
> --/* { dg-options "-O3 -mavx2 -mfpmath=sse" } */
> -+/* { dg-options "-O3 -mavx2 -mfpmath=sse -fno-pie" } */
> -
> - extern double r[6];
> - extern double a[];
> ---
> -2.49.0
> diff --git a/meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch
> b/meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch
> deleted file mode 100644
> index 9ee371cef7..0000000000
> --- a/meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch
> +++ /dev/null
> @@ -1,88 +0,0 @@
> -From e55dcff97708a4937dc4d8736b8b3074ebbff6f3 Mon Sep 17 00:00:00 2001
> -From: Jakub Jelinek <jakub@redhat.com>
> -Date: Mon, 27 Oct 2025 17:43:17 +0100
> -Subject: phiopt: Fix up DEBUG_EXPR_DECL creation in spaceship_replacement
> - [PR122394]
> -
> -The following testcase ICEs in gcc 15 (and is at least latent in 12-14
> too),
> -because the DEBUG_EXPR_DECL has incorrect mode.  It has
> -TREE_TYPE (orig_use_lhs) type, but TYPE_MODE (type) rather than
> -TYPE_MODE (TREE_TYPE (orig_use_lhs)) where the two types are sometimes
> -the same, but sometimes different (same if !has_cast_debug_uses, different
> -otherwise).
> -
> -Though, there wouldn't be the this issue if it used the proper API to
> create
> -the DEBUG_EXPR_DECL which takes care of everything.  This is the sole
> -spot that doesn't use that API.
> -
> -Doesn't affect the trunk because the code has been removed and replaced
> with
> -different stuff after the libstdc++ ABI change in r16-3474.
> -Before r15-5557 the mode has been always wrong because this was done only
> -for has_cast_debug_uses.  And the bug has been introduced with r12-5490.
> -
> -Enough archeology, while it could be fixed by changing the second
> -SET_DECL_MODE argument, I think it is better to use build_debug_expr_decl.
> -
> -2025-10-27  Jakub Jelinek  <jakub@redhat.com>
> -
> -       PR tree-optimization/122394
> -       * tree-ssa-phiopt.cc (spaceship_replacement): Use
> -       build_debug_expr_decl instead of manually building DEBUG_EXPR_DECL
> -       and getting SET_DECL_MODE wrong.
> -
> -       * g++.dg/opt/pr122394.C: New test.
> -
> -Upstream-Status: Backport [
> https://gcc.gnu.org/cgit/gcc/commit/?id=e55dcff97708a4937dc4d8736b8b3074ebbff6f3
> ]
> -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> ----
> - gcc/testsuite/g++.dg/opt/pr122394.C | 20 ++++++++++++++++++++
> - gcc/tree-ssa-phiopt.cc              |  6 ++----
> - 2 files changed, 22 insertions(+), 4 deletions(-)
> - create mode 100644 gcc/testsuite/g++.dg/opt/pr122394.C
> -
> -diff --git a/gcc/testsuite/g++.dg/opt/pr122394.C
> b/gcc/testsuite/g++.dg/opt/pr122394.C
> -new file mode 100644
> -index 000000000000..1f84bebd74c2
> ---- /dev/null
> -+++ b/gcc/testsuite/g++.dg/opt/pr122394.C
> -@@ -0,0 +1,20 @@
> -+// PR tree-optimization/122394
> -+// { dg-do compile { target c++23 } }
> -+// { dg-options "-O1 -g" }
> -+
> -+#include <compare>
> -+
> -+struct A {
> -+  friend auto operator<=> (A, A) = default;
> -+  double a;
> -+};
> -+void foo ();
> -+A b, c;
> -+
> -+void
> -+bar ()
> -+{
> -+  bool d = c >= b;
> -+  if (d)
> -+    foo ();
> -+}
> -diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc
> -index aaebae6b38c0..3e0ad9d3bb09 100644
> ---- a/gcc/tree-ssa-phiopt.cc
> -+++ b/gcc/tree-ssa-phiopt.cc
> -@@ -2995,10 +2995,8 @@ spaceship_replacement (basic_block cond_bb,
> basic_block middle_bb,
> -             if (has_cast_debug_uses
> -                 || (HONOR_NANS (TREE_TYPE (lhs1)) && !is_cast))
> -               {
> --                tree temp3 = make_node (DEBUG_EXPR_DECL);
> --                DECL_ARTIFICIAL (temp3) = 1;
> --                TREE_TYPE (temp3) = TREE_TYPE (orig_use_lhs);
> --                SET_DECL_MODE (temp3, TYPE_MODE (type));
> -+                tree temp3
> -+                  = build_debug_expr_decl (TREE_TYPE (orig_use_lhs));
> -                 if (has_cast_debug_uses)
> -                   t = fold_convert (TREE_TYPE (temp3), temp2);
> -                 else
> ---
> -cgit
> -
> diff --git
> a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch
> b/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch
> deleted file mode 100644
> index d8ed99adb5..0000000000
> ---
> a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch
> +++ /dev/null
> @@ -1,187 +0,0 @@
> -From b129ff0880c6d10e0379b46889d01255ee8d1f82 Mon Sep 17 00:00:00 2001
> -From: Pietro Monteiro <pietro@sociotechnical.xyz>
> -Date: Fri, 30 Jan 2026 20:22:49 -0500
> -Subject: libitm: testsuite: don't include libstdc++ paths in test names
> - [PR69018]
> -
> -Libitm C++ tests pass -B/full/path/to/build/libstc++/src/.libs on the
> -options argument to dg-runtest and the libstdc++ include paths as
> -the default-extra-options.  This causes 2 problems:
> -
> -1) If a test uses `dg-options' then the libstdc++ include paths are
> -not passed to the compiler.
> -
> -2) The `-B/full/path/to/build/libstc++/src/.libs' gets added to the
> -test name.  This makes comparing build done in different directories
> -harder because the hardcoded full path.
> -
> -Stop passing options and default-extra-options to dg-runtest and move
> -dealing with the path-releated flags to libitm_target_compile in
> -libitm.exp, where they are added to additional_flags.
> -
> -Also change the FSF address to the website in the license text.
> -
> -libitm/ChangeLog:
> -       PR libitm/69018
> -       * testsuite/lib/libitm.exp (libitm_target_compile): Add
> -       lang_include_flags and `-B${blddir}/${lang_library_paths}' to
> -       additional_flags.
> -       * testsuite/libitm.c++/c++.exp: Set lang_library_paths and
> lang_include_flags.
> -
> -Upstream-Status: Backport [
> https://gcc.gnu.org/cgit/gcc/patch/?id=b129ff0880c6d10e0379b46889d01255ee8d1f82
> ]
> -
> -Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>
> -Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
> ----
> - libitm/testsuite/lib/libitm.exp     | 25 ++++++++++----
> - libitm/testsuite/libitm.c++/c++.exp | 67
> +++++++++++++++++--------------------
> - 2 files changed, 48 insertions(+), 44 deletions(-)
> -
> -diff --git a/libitm/testsuite/lib/libitm.exp
> b/libitm/testsuite/lib/libitm.exp
> -index 0b3301537cee..69a49906d338 100644
> ---- a/libitm/testsuite/lib/libitm.exp
> -+++ b/libitm/testsuite/lib/libitm.exp
> -@@ -9,8 +9,7 @@
> - # GNU General Public License for more details.
> - #
> - # You should have received a copy of the GNU General Public License
> --# along with this program; if not, write to the Free Software
> --# Foundation, Inc., 51 Franklin Street
> <https://www.google.com/maps/search/51+Franklin+Street?entry=gmail&source=g>,
> Fifth Floor, Boston, MA 02110-1301, USA.
> -+# along with this program; if not, see <http://www.gnu.org/licenses/>.
> -
> - # Damn dejagnu for not having proper library search paths for load_lib.
> - # We have to explicitly load everything that gcc-dg.exp wants to load.
> -@@ -193,14 +192,24 @@ proc libitm_target_compile { source dest type
> options } {
> -     global gluefile wrap_flags
> -     global ALWAYS_CFLAGS
> -     global GCC_UNDER_TEST
> --    global lang_test_file
> --    global lang_library_path
> -+    global lang_library_paths
> -     global lang_link_flags
> -+    global lang_include_flags
> -
> --    if { [info exists lang_test_file] } {
> --      if { $blddir != "" } {
> -+    if { [info exists lang_include_flags] } {
> -+      lappend options "additional_flags=${lang_include_flags}"
> -+    }
> -+
> -+    if { [info exists lang_library_paths] } {
> -+      foreach lang_library_path $lang_library_paths {
> -+          # targets that use lib[...].a%s in their specs need a -B option
> -+          # for uninstalled testing.
> -+          lappend options
> "additional_flags=-B${blddir}/${lang_library_path}"
> -           lappend options "ldflags=-L${blddir}/${lang_library_path}"
> -       }
> -+    }
> -+
> -+    if { [info exists lang_link_flags] } {
> -       lappend options "ldflags=${lang_link_flags}"
> -     }
> -
> -@@ -219,7 +228,9 @@ proc libitm_target_compile { source dest type options
> } {
> -       set options [concat "$ALWAYS_CFLAGS" $options]
> -     }
> -
> --    set options [dg-additional-files-options $options $source $dest
> $type]
> -+    if { $source != "" } {
> -+        set options [dg-additional-files-options $options $source $dest
> $type]
> -+    }
> -
> -     set result [target_compile $source $dest $type $options]
> -
> -diff --git a/libitm/testsuite/libitm.c++/c++.exp
> b/libitm/testsuite/libitm.c++/c++.exp
> -index a1ce7ce4062e..90f3058e7249 100644
> ---- a/libitm/testsuite/libitm.c++/c++.exp
> -+++ b/libitm/testsuite/libitm.c++/c++.exp
> -@@ -11,8 +11,7 @@
> - # GNU General Public License for more details.
> - #
> - # You should have received a copy of the GNU General Public License
> --# along with this program; if not, write to the Free Software
> --# Foundation, Inc., 51 Franklin Street
> <https://www.google.com/maps/search/51+Franklin+Street?entry=gmail&source=g>,
> Fifth Floor, Boston, MA 02110-1301, USA.
> -+# along with this program; if not, see <http://www.gnu.org/licenses/>.
> -
> - load_lib libitm-dg.exp
> - load_gcc_lib gcc-dg.exp
> -@@ -33,48 +32,42 @@ set blddir [lookfor_file [get_multilibs] libitm]
> -
> -
> - if { $blddir != "" } {
> --    # Look for a static libstdc++ first.
> --    if [file exists "${blddir}/${lang_library_path}/libstdc++.a"] {
> --      set lang_test_file "${lang_library_path}/libstdc++.a"
> --      set lang_test_file_found 1
> --      # We may have a shared only build, so look for a shared libstdc++.
> --    } elseif [file exists
> "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] {
> --      set lang_test_file "${lang_library_path}/libstdc++.${shlib_ext}"
> --      set lang_test_file_found 1
> --    } else {
> --      puts "No libstdc++ library found, will not execute c++ tests"
> -+    if { ![file exists "${blddir}/${lang_library_path}/libstdc++.a"]
> -+       && ![file exists
> "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] } {
> -+      verbose -log "No libstdc++ library found, will not execute c++
> tests"
> -+      unset lang_library_path
> -+      return
> -     }
> --} elseif { [info exists GXX_UNDER_TEST] } {
> --    set lang_test_file_found 1
> --    # Needs to exist for libitm.exp.
> --    set lang_test_file ""
> -+    lappend lang_library_paths ${lang_library_path}
> -+} elseif { ![info exists GXX_UNDER_TEST] } {
> -+    verbose -log "GXX_UNDER_TEST not defined, will not execute c++ tests"
> -+    return
> -+}
> -+
> -+# Gather a list of all tests.
> -+set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
> -+
> -+if { $blddir != "" } {
> -+    set ld_library_path
> "$always_ld_library_path:${blddir}/${lang_library_path}"
> - } else {
> --    puts "GXX_UNDER_TEST not defined, will not execute c++ tests"
> -+    set ld_library_path "$always_ld_library_path"
> - }
> -
> --if { $lang_test_file_found } {
> --    # Gather a list of all tests.
> --    set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
> -+append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
> -+set_ld_library_path_env_vars
> -
> --    set stdcxxadder ""
> --    if { $blddir != "" } {
> --      set ld_library_path
> "$always_ld_library_path:${blddir}/${lang_library_path}"
> --      set stdcxxadder "-B ${blddir}/${lang_library_path}"
> --    } else {
> --      set ld_library_path "$always_ld_library_path"
> --    }
> --    append ld_library_path [gcc-set-multilib-library-path
> $GCC_UNDER_TEST]
> --    set_ld_library_path_env_vars
> -+set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
> -+if { [file exists $flags_file] } {
> -+    set lang_include_flags [exec sh $flags_file --build-includes]
> -+}
> -
> --    set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
> --    if { [file exists $flags_file] } {
> --      set libstdcxx_includes [exec sh $flags_file --build-includes]
> --    } else {
> --      set libstdcxx_includes ""
> --    }
> -+# Main loop.
> -+dg-runtest $tests "" ""
> -
> --    # Main loop.
> --    dg-runtest $tests $stdcxxadder $libstdcxx_includes
> -+if { $blddir != "" } {
> -+    unset lang_include_flags
> -+    unset lang_library_path
> -+    unset lang_library_paths
> - }
> -
> - # All done.
> ---
> -cgit
> diff --git
> a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch
> b/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch
> deleted file mode 100644
> index 67ed47ff51..0000000000
> ---
> a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch
> +++ /dev/null
> @@ -1,220 +0,0 @@
> -From 66ce317036f2eb5aeb96d5e4b9e468799d7566b6 Mon Sep 17 00:00:00 2001
> -From: Pietro Monteiro <pietro@sociotechnical.xyz>
> -Date: Wed, 11 Feb 2026 11:55:13 -0500
> -Subject: libitm: Fix recent libitm testsuite regression [PR69018]
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -The commit r16-7202-gb129ff0880c6d1 broke running libitm’s testsuite
> -using combinations of options because it didn’t clean up all the
> -global variables set in c++.exp.  Fix the regression by using g++ for
> -the C++ tests and cleaning up the variables shared between C and C++
> -tests.
> -
> -libitm/ChangeLog:
> -       PR libitm/69018
> -       * testsuite/lib/libitm.exp (libitm_init): Check
> -       GXX_UNDER_TEST.  Add "${blddir}/.libs" to
> -       always_ld_library_path if blddir is not empty.  Use
> -       "-fdiagnostics-plain-output".  Don't set compiler to
> GCC_UNDER_TEST.
> -       * testsuite/libitm.c++/c++.exp: If $blddir is not empty set
> -       libstdc++_library_path, shlib_ext, lang_include_flags, add
> -       "${blddir}/${lang_library_paths}" to ld_library_path.
> -       Unset libstdc++_library_path and shlib_ext if we skip C++
> -       tests and at the end of the test run.
> -       * testsuite/libitm.c/c.exp: Update the FSF address to the
> -       website in the license text. Unset lang_library_paths and
> -       lang_include_flags.  Set the compiler to $GCC_UNDER_TEST.
> -
> -Upstream-Status: Backport [
> https://gcc.gnu.org/cgit/gcc/patch/?id=66ce317036f2eb5aeb96d5e4b9e468799d7566b6
> ]
> -
> -Co-authored-by: Jakub Jelinek  <jakub@redhat.com>
> -Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>
> -Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
> ----
> - libitm/testsuite/lib/libitm.exp     | 21 +++++++++++++++----
> - libitm/testsuite/libitm.c++/c++.exp | 42
> ++++++++++++++-----------------------
> - libitm/testsuite/libitm.c/c.exp     | 14 ++++++-------
> - 3 files changed, 40 insertions(+), 37 deletions(-)
> -
> -diff --git a/libitm/testsuite/lib/libitm.exp
> b/libitm/testsuite/lib/libitm.exp
> -index 69a49906d338..2de0f6cbf158 100644
> ---- a/libitm/testsuite/lib/libitm.exp
> -+++ b/libitm/testsuite/lib/libitm.exp
> -@@ -79,7 +79,7 @@ proc libitm_init { args } {
> -     global ALWAYS_CFLAGS
> -     global CFLAGS
> -     global TOOL_EXECUTABLE TOOL_OPTIONS
> --    global GCC_UNDER_TEST
> -+    global GCC_UNDER_TEST GXX_UNDER_TEST
> -     global TESTING_IN_BUILD_TREE
> -     global target_triplet
> -     global always_ld_library_path
> -@@ -97,6 +97,17 @@ proc libitm_init { args } {
> -       } else {
> -           set GCC_UNDER_TEST "[find_gcc]"
> -       }
> -+      # Only if we're guessing 'GCC_UNDER_TEST', we're also going to
> guess
> -+      # 'GXX_UNDER_TEST'
> -+      if ![info exists GXX_UNDER_TEST] then {
> -+          if [info exists TOOL_EXECUTABLE] {
> -+              set GXX_UNDER_TEST $TOOL_EXECUTABLE
> -+          } else {
> -+              set GXX_UNDER_TEST "[find_g++]"
> -+          }
> -+      } else {
> -+          error "GXX_UNDER_TEST set but not GCC_UNDER_TEST"
> -+      }
> -     }
> -
> -     if ![info exists tmpdir] {
> -@@ -119,7 +130,7 @@ proc libitm_init { args } {
> -     }
> -
> -     # Compute what needs to be put into LD_LIBRARY_PATH
> --    set always_ld_library_path ".:${blddir}/.libs"
> -+    set always_ld_library_path "."
> -
> -     # Compute what needs to be added to the existing LD_LIBRARY_PATH.
> -     if {$gccdir != ""} {
> -@@ -150,6 +161,8 @@ proc libitm_init { args } {
> -       lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/"
> -       lappend ALWAYS_CFLAGS "additional_flags=-I${blddir}"
> -       lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs"
> -+
> -+      append always_ld_library_path ":${blddir}/.libs"
> -     }
> -     lappend ALWAYS_CFLAGS "additional_flags=-I${srcdir}/.."
> -
> -@@ -179,7 +192,8 @@ proc libitm_init { args } {
> -     # Turn on transactional memory support.
> -     lappend ALWAYS_CFLAGS "additional_flags=-fgnu-tm"
> -
> --    lappend ALWAYS_CFLAGS "additional_flags=-fdiagnostics-color=never"
> -+    # Disable caret, color, URL diagnostics
> -+    lappend ALWAYS_CFLAGS "additional_flags=-fdiagnostics-plain-output"
> - }
> -
> - #
> -@@ -220,7 +234,6 @@ proc libitm_target_compile { source dest type options
> } {
> -
> -     lappend options "additional_flags=[libio_include_flags]"
> -     lappend options "timeout=[timeout_value]"
> --    lappend options "compiler=$GCC_UNDER_TEST"
> -
> -     set options [concat $libitm_compile_options $options]
> -
> -diff --git a/libitm/testsuite/libitm.c++/c++.exp
> b/libitm/testsuite/libitm.c++/c++.exp
> -index 90f3058e7249..c24dc830bcc5 100644
> ---- a/libitm/testsuite/libitm.c++/c++.exp
> -+++ b/libitm/testsuite/libitm.c++/c++.exp
> -@@ -16,39 +16,33 @@
> - load_lib libitm-dg.exp
> - load_gcc_lib gcc-dg.exp
> -
> --global shlib_ext
> --
> --set shlib_ext [get_shlib_extension]
> --# The C++ tests should be linked with g++, which defaults to
> -shared-libgcc.
> --# Doing that is currently too intrusive, so hardcode here.
> --set lang_link_flags "-shared-libgcc -lstdc++"
> --set lang_test_file_found 0
> --set lang_library_path "../libstdc++-v3/src/.libs"
> --
> --# Initialize dg.
> --dg-init
> --
> --set blddir [lookfor_file [get_multilibs] libitm]
> --
> --
> - if { $blddir != "" } {
> --    if { ![file exists "${blddir}/${lang_library_path}/libstdc++.a"]
> --       && ![file exists
> "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] } {
> -+    set libstdc++_library_path "../libstdc++-v3/src/.libs"
> -+    set shlib_ext [get_shlib_extension]
> -+    if { ![file exists "${blddir}/${libstdc++_library_path}/libstdc++.a"]
> -+       && ![file exists
> "${blddir}/${libstdc++_library_path}/libstdc++.${shlib_ext}"] } {
> -       verbose -log "No libstdc++ library found, will not execute c++
> tests"
> --      unset lang_library_path
> -+      unset libstdc++_library_path
> -+      unset shlib_ext
> -       return
> -     }
> --    lappend lang_library_paths ${lang_library_path}
> -+    lappend lang_library_paths ${libstdc++_library_path}
> - } elseif { ![info exists GXX_UNDER_TEST] } {
> -     verbose -log "GXX_UNDER_TEST not defined, will not execute c++ tests"
> -     return
> - }
> -
> -+lappend ALWAYS_CFLAGS "compiler=$GXX_UNDER_TEST"
> -+
> -+# Initialize dg.
> -+dg-init
> -+
> - # Gather a list of all tests.
> - set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
> -
> - if { $blddir != "" } {
> --    set ld_library_path
> "$always_ld_library_path:${blddir}/${lang_library_path}"
> -+    set lang_include_flags [exec sh
> ${blddir}/../libstdc++-v3/scripts/testsuite_flags --build-includes]
> -+    set ld_library_path
> "$always_ld_library_path:${blddir}/${lang_library_paths}"
> - } else {
> -     set ld_library_path "$always_ld_library_path"
> - }
> -@@ -56,18 +50,14 @@ if { $blddir != "" } {
> - append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
> - set_ld_library_path_env_vars
> -
> --set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
> --if { [file exists $flags_file] } {
> --    set lang_include_flags [exec sh $flags_file --build-includes]
> --}
> --
> - # Main loop.
> - dg-runtest $tests "" ""
> -
> - if { $blddir != "" } {
> -     unset lang_include_flags
> --    unset lang_library_path
> -+    unset libstdc++_library_path
> -     unset lang_library_paths
> -+    unset shlib_ext
> - }
> -
> - # All done.
> -diff --git a/libitm/testsuite/libitm.c/c.exp
> b/libitm/testsuite/libitm.c/c.exp
> -index daa71427d64c..7a697b870932 100644
> ---- a/libitm/testsuite/libitm.c/c.exp
> -+++ b/libitm/testsuite/libitm.c/c.exp
> -@@ -9,20 +9,20 @@
> - # GNU General Public License for more details.
> - #
> - # You should have received a copy of the GNU General Public License
> --# along with this program; if not, write to the Free Software
> --# Foundation, Inc., 51 Franklin Street
> <https://www.google.com/maps/search/51+Franklin+Street?entry=gmail&source=g>,
> Fifth Floor, Boston, MA 02110-1301, USA.
> -+# along with this program; if not, see <http://www.gnu.org/licenses/>.
> -
> --if [info exists lang_library_path] then {
> --    unset lang_library_path
> --    unset lang_link_flags
> -+if [info exists lang_library_paths] then {
> -+    unset lang_library_paths
> - }
> --if [info exists lang_test_file] then {
> --    unset lang_test_file
> -+if [info exists lang_include_flags] then {
> -+    unset lang_include_flags
> - }
> -
> - load_lib libitm-dg.exp
> - load_gcc_lib gcc-dg.exp
> -
> -+lappend ALWAYS_CFLAGS "compiler=$GCC_UNDER_TEST"
> -+
> - # If a testcase doesn't have special options, use these.
> - if ![info exists DEFAULT_CFLAGS] then {
> -     set DEFAULT_CFLAGS "-O2"
> ---
> -cgit
> diff --git
> a/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
> b/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
> deleted file mode 100644
> index 431facb011..0000000000
> ---
> a/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
> +++ /dev/null
> @@ -1,257 +0,0 @@
> -From 0ffe3c9af4e5d5468df742512b6e930fe7039230 Mon Sep 17 00:00:00 2001
> -From: Jakub Jelinek <jakub@redhat.com>
> -Date: Fri, 21 Nov 2025 16:25:58 +0100
> -Subject: [PATCH] libcody: Make it buildable by C++11 to C++26
> -
> -The following builds with -std=c++11 and c++14 and c++17 and c++20 and
> c++23
> -and c++26.
> -
> -I see the u8 string literals are mixed e.g. with strerror, so in
> --fexec-charset=IBM1047 there will still be garbage, so am not 100% sure if
> -the u8 literals everywhere are worth it either.
> -
> -2025-11-21  Jakub Jelinek  <jakub@redhat.com>
> -
> -       * cody.hh (S2C): For __cpp_char8_t >= 201811 use char8_t instead of
> -       char in argument type.
> -       (MessageBuffer::Space): Revert 2025-11-15 change.
> -       (MessageBuffer::Append): For __cpp_char8_t >= 201811 add overload
> -       with char8_t const * type of first argument.
> -       (Packet::Packet): Similarly for first argument.
> -       * client.cc (CommunicationError, Client::ProcessResponse,
> -       Client::Connect, ConnectResponse, PathnameResponse, OKResponse,
> -       IncludeTranslateResponse): Cast u8 string literals to (const char
> *)
> -       where needed.
> -       * server.cc (Server::ProcessRequests, ConnectRequest): Likewise.
> -
> -Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
> -Upstream-Status: Backport [07a767c7a50d1daae8ef7d4aba73fe53ad40c0b7]
> ----
> - libcody/client.cc | 36 +++++++++++++++++++-----------------
> - libcody/cody.hh   | 22 ++++++++++++++++++++++
> - libcody/server.cc | 28 ++++++++++++++--------------
> - 3 files changed, 55 insertions(+), 31 deletions(-)
> -
> -diff --git a/libcody/client.cc b/libcody/client.cc
> -index ae69d190cb77..147fecdbe500 100644
> ---- a/libcody/client.cc
> -+++ b/libcody/client.cc
> -@@ -97,7 +97,7 @@ int Client::CommunicateWithServer ()
> -
> - static Packet CommunicationError (int err)
> - {
> --  std::string e {u8"communication error:"};
> -+  std::string e {(const char *) u8"communication error:"};
> -   e.append (strerror (err));
> -
> -   return Packet (Client::PC_ERROR, std::move (e));
> -@@ -110,33 +110,34 @@ Packet Client::ProcessResponse
> (std::vector<std::string> &words,
> -     {
> -       if (e == EINVAL)
> -       {
> --        std::string msg (u8"malformed string '");
> -+        std::string msg ((const char *) u8"malformed string '");
> -         msg.append (words[0]);
> --        msg.append (u8"'");
> -+        msg.append ((const char *) u8"'");
> -         return Packet (Client::PC_ERROR, std::move (msg));
> -       }
> -       else
> --      return Packet (Client::PC_ERROR, u8"missing response");
> -+      return Packet (Client::PC_ERROR, (const char *) u8"missing
> response");
> -     }
> -
> -   Assert (!words.empty ());
> --  if (words[0] == u8"ERROR")
> -+  if (words[0] == (const char *) u8"ERROR")
> -     return Packet (Client::PC_ERROR,
> --                 words.size () == 2 ? words[1]: u8"malformed error
> response");
> -+                 words.size () == 2 ? words[1]
> -+                 : (const char *) u8"malformed error response");
> -
> -   if (isLast && !read.IsAtEnd ())
> -     return Packet (Client::PC_ERROR,
> --                 std::string (u8"unexpected extra response"));
> -+                 std::string ((const char *) u8"unexpected extra
> response"));
> -
> -   Assert (code < Detail::RC_HWM);
> -   Packet result (responseTable[code] (words));
> -   result.SetRequest (code);
> -   if (result.GetCode () == Client::PC_ERROR && result.GetString ().empty
> ())
> -     {
> --      std::string msg {u8"malformed response '"};
> -+      std::string msg {(const char *) u8"malformed response '"};
> -
> -       read.LexedLine (msg);
> --      msg.append (u8"'");
> -+      msg.append ((const char *) u8"'");
> -       result.GetString () = std::move (msg);
> -     }
> -   else if (result.GetCode () == Client::PC_CONNECT)
> -@@ -199,7 +200,7 @@ Packet Client::Connect (char const *agent, char const
> *ident,
> -                         size_t alen, size_t ilen)
> - {
> -   write.BeginLine ();
> --  write.AppendWord (u8"HELLO");
> -+  write.AppendWord ((const char *) u8"HELLO");
> -   write.AppendInteger (Version);
> -   write.AppendWord (agent, true, alen);
> -   write.AppendWord (ident, true, ilen);
> -@@ -211,7 +212,8 @@ Packet Client::Connect (char const *agent, char const
> *ident,
> - // HELLO $version $agent [$flags]
> - Packet ConnectResponse (std::vector<std::string> &words)
> - {
> --  if (words[0] == u8"HELLO" && (words.size () == 3 || words.size () ==
> 4))
> -+  if (words[0] == (const char *) u8"HELLO"
> -+      && (words.size () == 3 || words.size () == 4))
> -     {
> -       char *eptr;
> -       unsigned long val = strtoul (words[1].c_str (), &eptr, 10);
> -@@ -247,7 +249,7 @@ Packet Client::ModuleRepo ()
> - // PATHNAME $dir | ERROR
> - Packet PathnameResponse (std::vector<std::string> &words)
> - {
> --  if (words[0] == u8"PATHNAME" && words.size () == 2)
> -+  if (words[0] == (const char *) u8"PATHNAME" && words.size () == 2)
> -     return Packet (Client::PC_PATHNAME, std::move (words[1]));
> -
> -   return Packet (Client::PC_ERROR, u8"");
> -@@ -256,7 +258,7 @@ Packet PathnameResponse (std::vector<std::string>
> &words)
> - // OK or ERROR
> - Packet OKResponse (std::vector<std::string> &words)
> - {
> --  if (words[0] == u8"OK")
> -+  if (words[0] == (const char *) u8"OK")
> -     return Packet (Client::PC_OK);
> -   else
> -     return Packet (Client::PC_ERROR,
> -@@ -319,11 +321,11 @@ Packet Client::IncludeTranslate (char const
> *include, Flags flags, size_t ilen)
> - // PATHNAME $cmifile
> - Packet IncludeTranslateResponse (std::vector<std::string> &words)
> - {
> --  if (words[0] == u8"BOOL" && words.size () == 2)
> -+  if (words[0] == (const char *) u8"BOOL" && words.size () == 2)
> -     {
> --      if (words[1] == u8"FALSE")
> --      return Packet (Client::PC_BOOL, 0);
> --      else if (words[1] == u8"TRUE")
> -+      if (words[1] == (const char *) u8"FALSE")
> -+      return Packet (Client::PC_BOOL);
> -+      else if (words[1] == (const char *) u8"TRUE")
> -       return Packet (Client::PC_BOOL, 1);
> -       else
> -       return Packet (Client::PC_ERROR, u8"");
> -diff --git a/libcody/cody.hh b/libcody/cody.hh
> -index 789ce9e70b75..93bce93aa94d 100644
> ---- a/libcody/cody.hh
> -+++ b/libcody/cody.hh
> -@@ -47,12 +47,21 @@ namespace Detail  {
> -
> - // C++11 doesn't have utf8 character literals :(
> -
> -+#if __cpp_char8_t >= 201811
> -+template<unsigned I>
> -+constexpr char S2C (char8_t const (&s)[I])
> -+{
> -+  static_assert (I == 2, "only single octet strings may be converted");
> -+  return s[0];
> -+}
> -+#else
> - template<unsigned I>
> - constexpr char S2C (char const (&s)[I])
> - {
> -   static_assert (I == 2, "only single octet strings may be converted");
> -   return s[0];
> - }
> -+#endif
> -
> - /// Internal buffering class.  Used to concatenate outgoing messages
> - /// and Lex incoming ones.
> -@@ -123,6 +132,13 @@ public:
> -       Space ();
> -     Append (str, maybe_quote, len);
> -   }
> -+#if __cpp_char8_t >= 201811
> -+  void AppendWord (char8_t const *str, bool maybe_quote = false,
> -+                 size_t len = ~size_t (0))
> -+  {
> -+    AppendWord ((const char *) str, maybe_quote, len);
> -+  }
> -+#endif
> -   /// Add a word as with AppendWord
> -   /// @param str the string to append
> -   /// @param maybe_quote string might need quoting, as for Append
> -@@ -264,6 +280,12 @@ public:
> -     : string (s), cat (STRING), code (c)
> -   {
> -   }
> -+#if __cpp_char8_t >= 201811
> -+  Packet (unsigned c, const char8_t *s)
> -+    : string ((const char *) s), cat (STRING), code (c)
> -+  {
> -+  }
> -+#endif
> -   Packet (unsigned c, std::vector<std::string> &&v)
> -     : vector (std::move (v)), cat (VECTOR), code (c)
> -   {
> -diff --git a/libcody/server.cc b/libcody/server.cc
> -index e2fa069bb933..c18469fae843 100644
> ---- a/libcody/server.cc
> -+++ b/libcody/server.cc
> -@@ -36,12 +36,12 @@ static RequestPair
> -   const requestTable[Detail::RC_HWM] =
> -   {
> -     // Same order as enum RequestCode
> --    RequestPair {u8"HELLO", nullptr},
> --    RequestPair {u8"MODULE-REPO", ModuleRepoRequest},
> --    RequestPair {u8"MODULE-EXPORT", ModuleExportRequest},
> --    RequestPair {u8"MODULE-IMPORT", ModuleImportRequest},
> --    RequestPair {u8"MODULE-COMPILED", ModuleCompiledRequest},
> --    RequestPair {u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
> -+    RequestPair {(const char *) u8"HELLO", nullptr},
> -+    RequestPair {(const char *) u8"MODULE-REPO", ModuleRepoRequest},
> -+    RequestPair {(const char *) u8"MODULE-EXPORT", ModuleExportRequest},
> -+    RequestPair {(const char *) u8"MODULE-IMPORT", ModuleImportRequest},
> -+    RequestPair {(const char *) u8"MODULE-COMPILED",
> ModuleCompiledRequest},
> -+    RequestPair {(const char *) u8"INCLUDE-TRANSLATE",
> IncludeTranslateRequest},
> -   };
> - }
> -
> -@@ -135,21 +135,21 @@ void Server::ProcessRequests (void)
> -         std::string msg;
> -
> -         if (err > 0)
> --          msg = u8"error processing '";
> -+          msg = (const char *) u8"error processing '";
> -         else if (ix >= Detail::RC_HWM)
> --          msg = u8"unrecognized '";
> -+          msg = (const char *) u8"unrecognized '";
> -         else if (IsConnected () && ix == Detail::RC_CONNECT)
> --          msg = u8"already connected '";
> -+          msg = (const char *) u8"already connected '";
> -         else if (!IsConnected () && ix != Detail::RC_CONNECT)
> --          msg = u8"not connected '";
> -+          msg = (const char *) u8"not connected '";
> -         else
> --          msg = u8"malformed '";
> -+          msg = (const char *) u8"malformed '";
> -
> -         read.LexedLine (msg);
> --        msg.append (u8"'");
> -+        msg.append ((const char *) u8"'");
> -         if (err > 0)
> -           {
> --            msg.append (u8" ");
> -+            msg.append ((const char *) u8" ");
> -             msg.append (strerror (err));
> -           }
> -         resolver->ErrorResponse (this, std::move (msg));
> -@@ -176,7 +176,7 @@ Resolver *ConnectRequest (Server *s, Resolver *r,
> -     return nullptr;
> -
> -   if (words.size () == 3)
> --    words.emplace_back (u8"");
> -+    words.emplace_back ((const char *) u8"");
> -   unsigned version = ParseUnsigned (words[1]);
> -   if (version == ~0u)
> -     return nullptr;
> diff --git a/meta/recipes-devtools/gcc/gcc_15.2.bb
> b/meta/recipes-devtools/gcc/gcc_16.1.bb
> similarity index 100%
> rename from meta/recipes-devtools/gcc/gcc_15.2.bb
> rename to meta/recipes-devtools/gcc/gcc_16.1.bb
> diff --git a/meta/recipes-devtools/gcc/libgcc-initial_15.2.bb
> b/meta/recipes-devtools/gcc/libgcc-initial_16.1.bb
> similarity index 100%
> rename from meta/recipes-devtools/gcc/libgcc-initial_15.2.bb
> rename to meta/recipes-devtools/gcc/libgcc-initial_16.1.bb
> diff --git a/meta/recipes-devtools/gcc/libgcc_15.2.bb
> b/meta/recipes-devtools/gcc/libgcc_16.1.bb
> similarity index 100%
> rename from meta/recipes-devtools/gcc/libgcc_15.2.bb
> rename to meta/recipes-devtools/gcc/libgcc_16.1.bb
> diff --git a/meta/recipes-devtools/gcc/libgfortran_15.2.bb
> b/meta/recipes-devtools/gcc/libgfortran_16.1.bb
> similarity index 100%
> rename from meta/recipes-devtools/gcc/libgfortran_15.2.bb
> rename to meta/recipes-devtools/gcc/libgfortran_16.1.bb
> --
> 2.49.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#237662):
> https://lists.openembedded.org/g/openembedded-core/message/237662
> Mute This Topic: https://lists.openembedded.org/mt/119512432/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
diff mbox series

Patch

diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 24c5a9d712..fdfdec28b5 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -200,7 +200,7 @@  RECIPE_MAINTAINER:pn-gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <r
 RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER:pn-gcc-source-15.2.0 = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gcc-source-16.1.0 = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER:pn-gcompat = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>"
 RECIPE_MAINTAINER:pn-gcr = "Unassigned <unassigned@yoctoproject.org>"
diff --git a/meta/conf/distro/include/tcmode-default.inc b/meta/conf/distro/include/tcmode-default.inc
index 3c956dfb12..33d3efd845 100644
--- a/meta/conf/distro/include/tcmode-default.inc
+++ b/meta/conf/distro/include/tcmode-default.inc
@@ -9,7 +9,7 @@  PREFERRED_PROVIDER_virtual/nativesdk-cross-binutils ?= "binutils-crosssdk-${SDK_
 # Default libc config
 PREFERRED_PROVIDER_virtual/gettext ??= "gettext"
 
-GCCVERSION ?= "15.%"
+GCCVERSION ?= "16.%"
 SDKGCCVERSION ?= "${GCCVERSION}"
 GLIBCVERSION ?= "2.43%"
 RUSTVERSION ?= "1.95.0%"
diff --git a/meta/recipes-devtools/gcc/gcc-15.2.inc b/meta/recipes-devtools/gcc/gcc-16.1.inc
similarity index 88%
rename from meta/recipes-devtools/gcc/gcc-15.2.inc
rename to meta/recipes-devtools/gcc/gcc-16.1.inc
index a96f2b8411..3a96228631 100644
--- a/meta/recipes-devtools/gcc/gcc-15.2.inc
+++ b/meta/recipes-devtools/gcc/gcc-16.1.inc
@@ -2,11 +2,11 @@  require gcc-common.inc
 
 # Third digit in PV should be incremented after a minor release
 
-PV = "15.2.0"
+PV = "16.1.0"
 
 # BINV should be incremented to a revision after a minor gcc release
 
-BINV = "15.2.0"
+BINV = "16.1.0"
 
 FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:"
 
@@ -34,17 +34,17 @@  LIC_FILES_CHKSUM = "\
 #SRC_URI[sha256sum] = "41bf7be5dc029112a9df625266e7de030ffc36ff3638f270b180ae8c91fe6449"
 
 # from snapshot
-#RELEASE ?= "15-20250420"
-#RELEASE ?= "15.1.0-RC-20250418"
+#RELEASE ?= "16-20260502"
+#RELEASE ?= "16.1.0-RC-20260424"
 #BASEURI ?= "https://gcc.gnu.org/pub/gcc/snapshots/${RELEASE}/gcc-${RELEASE}.tar.xz"
 #SOURCEDIR ?= "gcc-${RELEASE}"
-#SRC_URI[sha256sum] = "fe18624317c6c662977eea8b5a506ec6c132fc11c7a8d53e2f6d21b139b0af3c"
+#SRC_URI[sha256sum] = "e8edc2aaf0affce7020658b0be9a3fc820aa33dc610640d3fe1ba1aee360051b"
 
 # official release
 RELEASE ?= "${PV}"
 BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz"
 SOURCEDIR ?= "gcc-${PV}"
-SRC_URI[sha256sum] = "438fd996826b0c82485a29da03a72d71d6e3541a83ec702df4271f6fe025d24e"
+SRC_URI[sha256sum] = "50efb4d94c3397aff3b0d61a5abd748b4dd31d9d3f2ab7be05b171d36a510f79"
 
 SRC_URI = "${BASEURI} \
            file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
@@ -72,11 +72,6 @@  SRC_URI = "${BASEURI} \
            file://0023-Fix-install-path-of-linux64.h.patch \
            file://0024-Avoid-hardcoded-build-paths-into-ppc-libgcc.patch \
            file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \
-           file://0026-fix-pr90579-testcases.patch \
-           file://0027-gcc15-pr122394.patch \
-           file://0028-fix-gcc-libitm-false-postives-01.patch \
-           file://0028-fix-gcc-libitm-false-postives-02.patch \
-           file://0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch \
            file://0001-mapper-localhost-might-not-be-known.patch \
 "
 
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_15.2.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-cross-canadian_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-cross-canadian_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc-cross_15.2.bb b/meta/recipes-devtools/gcc/gcc-cross_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-cross_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-cross_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_15.2.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-crosssdk_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-crosssdk_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_15.2.bb b/meta/recipes-devtools/gcc/gcc-runtime_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-runtime_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-runtime_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_15.2.bb b/meta/recipes-devtools/gcc/gcc-sanitizers_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-sanitizers_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-sanitizers_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc-source_15.2.bb b/meta/recipes-devtools/gcc/gcc-source_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-source_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-source_16.1.bb
diff --git a/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch b/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
index 621f8bc41f..07e9e23f3d 100644
--- a/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
+++ b/meta/recipes-devtools/gcc/gcc/0007-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
@@ -172,7 +172,7 @@  index fbc75a90ad5..38c239940bd 100644
 +  SYSTEMLIBS_DIR "ld-linux-loongarch-" ABI_SPEC ".so.1"
  
  #define MUSL_ABI_SPEC \
-   "%{mabi=lp64d:}" \
+   "%{mabi=ilp32d:}" \
 @@ -40,7 +40,7 @@ along with GCC; see the file COPYING3.  If not see
  
  #undef MUSL_DYNAMIC_LINKER
diff --git a/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch b/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch
index a087ba17d9..678457bbc9 100644
--- a/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch
+++ b/meta/recipes-devtools/gcc/gcc/0017-Search-target-sysroot-gcc-version-specific-dirs-with.patch
@@ -89,12 +89,12 @@  index 007c91780f6..22eb17bc099 100644
 +	            {
 +		      memcpy (path + len, this_multi, this_multi_len + 1);
 +	              memcpy (path + len + this_multi_len, multi_suffix, suffix_len + 1);
-+	              ret = callback (path, callback_info);
++	              ret = callback (path);
 +	                if (ret)
 +		          break;
 +	            }
 +	        }
 +
  	      memcpy (path + len, multi_suffix, suffix_len + 1);
- 	      ret = callback (path, callback_info);
+ 	      ret = callback (path);
  	      if (ret)
diff --git a/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch b/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch
index 0f2a9d8c1f..5a8a79c0d2 100644
--- a/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch
+++ b/meta/recipes-devtools/gcc/gcc/0022-libatomic-Do-not-enforce-march-on-aarch64.patch
@@ -29,14 +29,14 @@  index 0f1a7156084..255fe448e63 100644
  
  endif
 diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
-index 9798e7c09e9..3b3027eb77d 100644
+index 887ae41..b3d5e6f 100644
 --- a/libatomic/Makefile.in
 +++ b/libatomic/Makefile.in
-@@ -452,7 +452,6 @@ M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files)))
- libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \
- 	_$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \
- 	$(am__append_3) $(am__append_4)
--@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv8-a+lse
- @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
- @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586
- @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -mcx16 -mcx16
+@@ -470,7 +470,6 @@ libatomic_la_LDFLAGS = $(libatomic_version_info) $(libatomic_version_script) \
+ @PARTIAL_VXWORKS_FALSE@	_$(s)_.lo,$(SIZEOBJS))) $(am__append_1) \
+ @PARTIAL_VXWORKS_FALSE@	$(am__append_2) $(am__append_3) \
+ @PARTIAL_VXWORKS_FALSE@	$(am__append_4) $(am__append_5)
+-@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv8-a+lse
+ @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
+ @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=i586
+ @ARCH_LOONGARCH_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -mlsx|-mscq
diff --git a/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch b/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
index fcdd79a840..dc708942b4 100644
--- a/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
+++ b/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
@@ -92,10 +92,10 @@  index 6dd8fa3fce9..95672008219 100644
  	"preprocess" {
  	    set compile_type "preprocess"
 diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
-index c0376b04551..5d053dfe726 100644
+index 55775d0..df161a9 100644
 --- a/gcc/testsuite/lib/target-supports.exp
 +++ b/gcc/testsuite/lib/target-supports.exp
-@@ -2949,14 +2949,7 @@ proc check_mips_loongson_mmi_hw_available { } {
+@@ -3113,14 +3113,7 @@ proc check_mips_loongson_mmi_hw_available { } {
  	if { !([istarget mips*-*-*]) } {
  	    expr 0
  	} else {
@@ -107,11 +107,11 @@  index c0376b04551..5d053dfe726 100644
 -		return 0;
 -	      }
 -	    } "-mloongson-mmi"
-+	    expr 0
++            expr 0
  	}
      }]
  }
-@@ -2970,29 +2963,7 @@ proc check_mips_msa_hw_available { } {
+@@ -3134,29 +3127,7 @@ proc check_mips_msa_hw_available { } {
      if { !([istarget mips*-*-*]) } {
        expr 0
      } else {
@@ -138,38 +138,41 @@  index c0376b04551..5d053dfe726 100644
 -	}
 -	#endif
 -      } "-mmsa"
-+      expr 0
++    expr 0
      }
    }]
  }
-@@ -10371,6 +10342,7 @@ proc is-effective-target-keyword { arg } {
+@@ -10740,6 +10711,7 @@ proc is-effective-target-keyword { arg } {
  
  proc et-dg-runtest { runtest testcases flags default-extra-flags } {
      global dg-do-what-default
-+    global do-what-limit
++    global do-what-limit 
      global EFFECTIVE_TARGETS
      global et_index
  
-@@ -10378,6 +10350,7 @@ proc et-dg-runtest { runtest testcases flags default-extra-flags } {
+@@ -10747,16 +10719,19 @@ proc et-dg-runtest { runtest testcases flags default-extra-flags } {
  	foreach target $EFFECTIVE_TARGETS {
  	    set target_flags $flags
  	    set dg-do-what-default compile
-+            set do-what-limit link
- 	    set et_index [lsearch -exact $EFFECTIVE_TARGETS $target]
+-	    set et_index [lsearch -exact $EFFECTIVE_TARGETS $target]
++	    set do-what-limit link
++            set et_index [lsearch -exact $EFFECTIVE_TARGETS $target]
  	    if { [info procs add_options_for_${target}] != [list] } {
  		set target_flags [add_options_for_${target} "$flags"]
-@@ -10385,8 +10358,10 @@ proc et-dg-runtest { runtest testcases flags default-extra-flags } {
+ 	    }
  	    if { [info procs check_effective_target_${target}_runtime]
  		 != [list] && [check_effective_target_${target}_runtime] } {
  		set dg-do-what-default run
-+		set do-what-limit run
++                set do-what-limit run
  	    }
  	    $runtest $testcases $target_flags ${default-extra-flags}
+-	    unset et_index
 +	    unset do-what-limit
++            unset et_index
  	}
      } else {
- 	set et_index 0
-@@ -12172,6 +12147,7 @@ proc check_effective_target_sigsetjmp {} {
+ 	$runtest $testcases $flags ${default-extra-flags}
+@@ -12539,6 +12514,7 @@ proc check_effective_target_sigsetjmp {} {
  proc check_vect_support_and_set_flags { } {
      global DEFAULT_VECTCFLAGS
      global dg-do-what-default
@@ -177,51 +180,62 @@  index c0376b04551..5d053dfe726 100644
      global EFFECTIVE_TARGETS
  
      if [istarget powerpc*-*-*] {
-@@ -12203,6 +12179,7 @@ proc check_vect_support_and_set_flags { } {
+@@ -12570,14 +12546,16 @@ proc check_vect_support_and_set_flags { } {
  		set DEFAULT_VECTCFLAGS [linsert $DEFAULT_VECTCFLAGS 0 "-mcpu=970"]
  	    }
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++	 set do-what-limit link
++        }
      } elseif { [check_effective_target_x86] } {
  	lappend DEFAULT_VECTCFLAGS "-msse2"
-@@ -12210,6 +12187,7 @@ proc check_vect_support_and_set_flags { } {
+ 	if { [check_effective_target_sse2_runtime] } {
  	    set dg-do-what-default run
  	} else {
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++         set do-what-limit link	
++        }
      } elseif { [istarget mips*-*-*]
  	       && [check_effective_target_nomips16] } {
-@@ -12229,6 +12207,7 @@ proc check_vect_support_and_set_flags { } {
+ 	if { [check_effective_target_mpaired_single "-mpaired-single"] } {
+@@ -12596,7 +12574,8 @@ proc check_vect_support_and_set_flags { } {
  	    set dg-do-what-default run
  	} else {
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++	 set do-what-limit link
++        }
      } elseif [istarget alpha*-*-*] {
  	# Alpha's vectorization capabilities are extremely limited.
-@@ -12242,6 +12221,7 @@ proc check_vect_support_and_set_flags { } {
+ 	# It's more effort than its worth disabling all of the tests
+@@ -12609,7 +12588,8 @@ proc check_vect_support_and_set_flags { } {
  	    set dg-do-what-default run
  	} else {
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++	 set do-what-limit link
++        }
      } elseif [istarget ia64-*-*] {
  	set dg-do-what-default run
-@@ -12255,6 +12235,7 @@ proc check_vect_support_and_set_flags { } {
+     } elseif [is-effective-target arm_neon_ok] {
+@@ -12622,7 +12602,8 @@ proc check_vect_support_and_set_flags { } {
  	    set dg-do-what-default run
  	} else {
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++	 set do-what-limit link
++        }
      } elseif [istarget aarch64*-*-*] {
  	set dg-do-what-default run
-@@ -12279,6 +12260,7 @@ proc check_vect_support_and_set_flags { } {
+     } elseif [istarget s390*-*-*] {
+@@ -12646,7 +12627,8 @@ proc check_vect_support_and_set_flags { } {
  	} else {
  	    lappend DEFAULT_VECTCFLAGS "-march=z14" "-mzarch"
  	    set dg-do-what-default compile
-+        set do-what-limit link
- 	}
+-	}
++	 set do-what-limit link
++        }
      } elseif [istarget amdgcn-*-*] {
  	set dg-do-what-default run
+     } elseif [istarget riscv*-*-*] {
diff --git a/meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch b/meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch
deleted file mode 100644
index 6ada61b74f..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0026-fix-pr90579-testcases.patch
+++ /dev/null
@@ -1,40 +0,0 @@ 
-From 679e24f5a751663998ff7202149a749e0f7251f9 Mon Sep 17 00:00:00 2001
-From: Harish Sadineni <Harish.Sadineni@windriver.com>
-Date: Sun, 10 Aug 2025 20:28:00 +0800
-Subject: [PATCH] testsuite: i386: Fix gcc.target/i386/pr90579.c when PIE is
- enabled [PR118885]
-
-When gcc build with --enable-deafult-pie the following tests
-were getting failed:
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+40
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+32
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+24
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+16
-
-    PR target/118885
-
-gcc/testsuite/ChangeLog:
-
-    * gcc.target/i386/pr90579.c: add -fno-pie to dg-options
-    to fix tests when PIE is enabled.
-
-Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/commit/?id=679e24f5a751663998ff7202149a749e0f7251f9]
-
-Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
----
- gcc/testsuite/gcc.target/i386/pr90579.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gcc/testsuite/gcc.target/i386/pr90579.c b/gcc/testsuite/gcc.target/i386/pr90579.c
-index ab48a44063c..19081ec9fdf 100644
---- a/gcc/testsuite/gcc.target/i386/pr90579.c
-+++ b/gcc/testsuite/gcc.target/i386/pr90579.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O3 -mavx2 -mfpmath=sse" } */
-+/* { dg-options "-O3 -mavx2 -mfpmath=sse -fno-pie" } */
- 
- extern double r[6];
- extern double a[];
--- 
-2.49.0
diff --git a/meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch b/meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch
deleted file mode 100644
index 9ee371cef7..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0027-gcc15-pr122394.patch
+++ /dev/null
@@ -1,88 +0,0 @@ 
-From e55dcff97708a4937dc4d8736b8b3074ebbff6f3 Mon Sep 17 00:00:00 2001
-From: Jakub Jelinek <jakub@redhat.com>
-Date: Mon, 27 Oct 2025 17:43:17 +0100
-Subject: phiopt: Fix up DEBUG_EXPR_DECL creation in spaceship_replacement
- [PR122394]
-
-The following testcase ICEs in gcc 15 (and is at least latent in 12-14 too),
-because the DEBUG_EXPR_DECL has incorrect mode.  It has
-TREE_TYPE (orig_use_lhs) type, but TYPE_MODE (type) rather than
-TYPE_MODE (TREE_TYPE (orig_use_lhs)) where the two types are sometimes
-the same, but sometimes different (same if !has_cast_debug_uses, different
-otherwise).
-
-Though, there wouldn't be the this issue if it used the proper API to create
-the DEBUG_EXPR_DECL which takes care of everything.  This is the sole
-spot that doesn't use that API.
-
-Doesn't affect the trunk because the code has been removed and replaced with
-different stuff after the libstdc++ ABI change in r16-3474.
-Before r15-5557 the mode has been always wrong because this was done only
-for has_cast_debug_uses.  And the bug has been introduced with r12-5490.
-
-Enough archeology, while it could be fixed by changing the second
-SET_DECL_MODE argument, I think it is better to use build_debug_expr_decl.
-
-2025-10-27  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/122394
-	* tree-ssa-phiopt.cc (spaceship_replacement): Use
-	build_debug_expr_decl instead of manually building DEBUG_EXPR_DECL
-	and getting SET_DECL_MODE wrong.
-
-	* g++.dg/opt/pr122394.C: New test.
-
-Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/commit/?id=e55dcff97708a4937dc4d8736b8b3074ebbff6f3]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- gcc/testsuite/g++.dg/opt/pr122394.C | 20 ++++++++++++++++++++
- gcc/tree-ssa-phiopt.cc              |  6 ++----
- 2 files changed, 22 insertions(+), 4 deletions(-)
- create mode 100644 gcc/testsuite/g++.dg/opt/pr122394.C
-
-diff --git a/gcc/testsuite/g++.dg/opt/pr122394.C b/gcc/testsuite/g++.dg/opt/pr122394.C
-new file mode 100644
-index 000000000000..1f84bebd74c2
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/opt/pr122394.C
-@@ -0,0 +1,20 @@
-+// PR tree-optimization/122394
-+// { dg-do compile { target c++23 } }
-+// { dg-options "-O1 -g" }
-+
-+#include <compare>
-+
-+struct A {
-+  friend auto operator<=> (A, A) = default;
-+  double a;
-+};
-+void foo ();
-+A b, c;
-+
-+void
-+bar ()
-+{
-+  bool d = c >= b;
-+  if (d)
-+    foo ();
-+}
-diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc
-index aaebae6b38c0..3e0ad9d3bb09 100644
---- a/gcc/tree-ssa-phiopt.cc
-+++ b/gcc/tree-ssa-phiopt.cc
-@@ -2995,10 +2995,8 @@ spaceship_replacement (basic_block cond_bb, basic_block middle_bb,
- 	      if (has_cast_debug_uses
- 		  || (HONOR_NANS (TREE_TYPE (lhs1)) && !is_cast))
- 		{
--		  tree temp3 = make_node (DEBUG_EXPR_DECL);
--		  DECL_ARTIFICIAL (temp3) = 1;
--		  TREE_TYPE (temp3) = TREE_TYPE (orig_use_lhs);
--		  SET_DECL_MODE (temp3, TYPE_MODE (type));
-+		  tree temp3
-+		    = build_debug_expr_decl (TREE_TYPE (orig_use_lhs));
- 		  if (has_cast_debug_uses)
- 		    t = fold_convert (TREE_TYPE (temp3), temp2);
- 		  else
--- 
-cgit 
-
diff --git a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch b/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch
deleted file mode 100644
index d8ed99adb5..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-01.patch
+++ /dev/null
@@ -1,187 +0,0 @@ 
-From b129ff0880c6d10e0379b46889d01255ee8d1f82 Mon Sep 17 00:00:00 2001
-From: Pietro Monteiro <pietro@sociotechnical.xyz>
-Date: Fri, 30 Jan 2026 20:22:49 -0500
-Subject: libitm: testsuite: don't include libstdc++ paths in test names
- [PR69018]
-
-Libitm C++ tests pass -B/full/path/to/build/libstc++/src/.libs on the
-options argument to dg-runtest and the libstdc++ include paths as
-the default-extra-options.  This causes 2 problems:
-
-1) If a test uses `dg-options' then the libstdc++ include paths are
-not passed to the compiler.
-
-2) The `-B/full/path/to/build/libstc++/src/.libs' gets added to the
-test name.  This makes comparing build done in different directories
-harder because the hardcoded full path.
-
-Stop passing options and default-extra-options to dg-runtest and move
-dealing with the path-releated flags to libitm_target_compile in
-libitm.exp, where they are added to additional_flags.
-
-Also change the FSF address to the website in the license text.
-
-libitm/ChangeLog:
-	PR libitm/69018
-	* testsuite/lib/libitm.exp (libitm_target_compile): Add
-	lang_include_flags and `-B${blddir}/${lang_library_paths}' to
-	additional_flags.
-	* testsuite/libitm.c++/c++.exp: Set lang_library_paths and lang_include_flags.
-
-Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/patch/?id=b129ff0880c6d10e0379b46889d01255ee8d1f82]
-
-Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>
-Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
----
- libitm/testsuite/lib/libitm.exp     | 25 ++++++++++----
- libitm/testsuite/libitm.c++/c++.exp | 67 +++++++++++++++++--------------------
- 2 files changed, 48 insertions(+), 44 deletions(-)
-
-diff --git a/libitm/testsuite/lib/libitm.exp b/libitm/testsuite/lib/libitm.exp
-index 0b3301537cee..69a49906d338 100644
---- a/libitm/testsuite/lib/libitm.exp
-+++ b/libitm/testsuite/lib/libitm.exp
-@@ -9,8 +9,7 @@
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- 
- # Damn dejagnu for not having proper library search paths for load_lib.
- # We have to explicitly load everything that gcc-dg.exp wants to load.
-@@ -193,14 +192,24 @@ proc libitm_target_compile { source dest type options } {
-     global gluefile wrap_flags
-     global ALWAYS_CFLAGS
-     global GCC_UNDER_TEST
--    global lang_test_file
--    global lang_library_path
-+    global lang_library_paths
-     global lang_link_flags
-+    global lang_include_flags
- 
--    if { [info exists lang_test_file] } {
--	if { $blddir != "" } {
-+    if { [info exists lang_include_flags] } {
-+	lappend options "additional_flags=${lang_include_flags}"
-+    }
-+
-+    if { [info exists lang_library_paths] } {
-+	foreach lang_library_path $lang_library_paths {
-+	    # targets that use lib[...].a%s in their specs need a -B option
-+	    # for uninstalled testing.
-+	    lappend options "additional_flags=-B${blddir}/${lang_library_path}"
- 	    lappend options "ldflags=-L${blddir}/${lang_library_path}"
- 	}
-+    }
-+
-+    if { [info exists lang_link_flags] } {
- 	lappend options "ldflags=${lang_link_flags}"
-     }
- 
-@@ -219,7 +228,9 @@ proc libitm_target_compile { source dest type options } {
- 	set options [concat "$ALWAYS_CFLAGS" $options]
-     }
- 
--    set options [dg-additional-files-options $options $source $dest $type]
-+    if { $source != "" } {
-+        set options [dg-additional-files-options $options $source $dest $type]
-+    }
- 
-     set result [target_compile $source $dest $type $options]
- 
-diff --git a/libitm/testsuite/libitm.c++/c++.exp b/libitm/testsuite/libitm.c++/c++.exp
-index a1ce7ce4062e..90f3058e7249 100644
---- a/libitm/testsuite/libitm.c++/c++.exp
-+++ b/libitm/testsuite/libitm.c++/c++.exp
-@@ -11,8 +11,7 @@
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- 
- load_lib libitm-dg.exp
- load_gcc_lib gcc-dg.exp
-@@ -33,48 +32,42 @@ set blddir [lookfor_file [get_multilibs] libitm]
- 
- 
- if { $blddir != "" } {
--    # Look for a static libstdc++ first.
--    if [file exists "${blddir}/${lang_library_path}/libstdc++.a"] {
--	set lang_test_file "${lang_library_path}/libstdc++.a"
--	set lang_test_file_found 1
--	# We may have a shared only build, so look for a shared libstdc++.
--    } elseif [file exists "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] {
--	set lang_test_file "${lang_library_path}/libstdc++.${shlib_ext}"
--	set lang_test_file_found 1
--    } else {
--	puts "No libstdc++ library found, will not execute c++ tests"
-+    if { ![file exists "${blddir}/${lang_library_path}/libstdc++.a"]
-+	 && ![file exists "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] } {
-+	verbose -log "No libstdc++ library found, will not execute c++ tests"
-+	unset lang_library_path
-+	return
-     }
--} elseif { [info exists GXX_UNDER_TEST] } {
--    set lang_test_file_found 1
--    # Needs to exist for libitm.exp.
--    set lang_test_file ""
-+    lappend lang_library_paths ${lang_library_path}
-+} elseif { ![info exists GXX_UNDER_TEST] } {
-+    verbose -log "GXX_UNDER_TEST not defined, will not execute c++ tests"
-+    return
-+}
-+
-+# Gather a list of all tests.
-+set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
-+
-+if { $blddir != "" } {
-+    set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
- } else {
--    puts "GXX_UNDER_TEST not defined, will not execute c++ tests"
-+    set ld_library_path "$always_ld_library_path"
- }
- 
--if { $lang_test_file_found } {
--    # Gather a list of all tests.
--    set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
-+append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
-+set_ld_library_path_env_vars
- 
--    set stdcxxadder ""
--    if { $blddir != "" } {
--	set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
--	set stdcxxadder "-B ${blddir}/${lang_library_path}"
--    } else {
--	set ld_library_path "$always_ld_library_path"
--    }
--    append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
--    set_ld_library_path_env_vars
-+set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
-+if { [file exists $flags_file] } {
-+    set lang_include_flags [exec sh $flags_file --build-includes]
-+}
- 
--    set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
--    if { [file exists $flags_file] } {
--	set libstdcxx_includes [exec sh $flags_file --build-includes]
--    } else {
--	set libstdcxx_includes ""
--    }
-+# Main loop.
-+dg-runtest $tests "" ""
- 
--    # Main loop.
--    dg-runtest $tests $stdcxxadder $libstdcxx_includes
-+if { $blddir != "" } {
-+    unset lang_include_flags
-+    unset lang_library_path
-+    unset lang_library_paths
- }
- 
- # All done.
--- 
-cgit 
diff --git a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch b/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch
deleted file mode 100644
index 67ed47ff51..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0028-fix-gcc-libitm-false-postives-02.patch
+++ /dev/null
@@ -1,220 +0,0 @@ 
-From 66ce317036f2eb5aeb96d5e4b9e468799d7566b6 Mon Sep 17 00:00:00 2001
-From: Pietro Monteiro <pietro@sociotechnical.xyz>
-Date: Wed, 11 Feb 2026 11:55:13 -0500
-Subject: libitm: Fix recent libitm testsuite regression [PR69018]
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The commit r16-7202-gb129ff0880c6d1 broke running libitm’s testsuite
-using combinations of options because it didn’t clean up all the
-global variables set in c++.exp.  Fix the regression by using g++ for
-the C++ tests and cleaning up the variables shared between C and C++
-tests.
-
-libitm/ChangeLog:
-	PR libitm/69018
-	* testsuite/lib/libitm.exp (libitm_init): Check
-	GXX_UNDER_TEST.  Add "${blddir}/.libs" to
-	always_ld_library_path if blddir is not empty.  Use
-	"-fdiagnostics-plain-output".  Don't set compiler to GCC_UNDER_TEST.
-	* testsuite/libitm.c++/c++.exp: If $blddir is not empty set
-	libstdc++_library_path, shlib_ext, lang_include_flags, add
-	"${blddir}/${lang_library_paths}" to ld_library_path.
-	Unset libstdc++_library_path and shlib_ext if we skip C++
-	tests and at the end of the test run.
-	* testsuite/libitm.c/c.exp: Update the FSF address to the
-	website in the license text. Unset lang_library_paths and
-	lang_include_flags.  Set the compiler to $GCC_UNDER_TEST.
-
-Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/patch/?id=66ce317036f2eb5aeb96d5e4b9e468799d7566b6]
-
-Co-authored-by: Jakub Jelinek  <jakub@redhat.com>
-Signed-off-by: Pietro Monteiro <pietro@sociotechnical.xyz>
-Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
----
- libitm/testsuite/lib/libitm.exp     | 21 +++++++++++++++----
- libitm/testsuite/libitm.c++/c++.exp | 42 ++++++++++++++-----------------------
- libitm/testsuite/libitm.c/c.exp     | 14 ++++++-------
- 3 files changed, 40 insertions(+), 37 deletions(-)
-
-diff --git a/libitm/testsuite/lib/libitm.exp b/libitm/testsuite/lib/libitm.exp
-index 69a49906d338..2de0f6cbf158 100644
---- a/libitm/testsuite/lib/libitm.exp
-+++ b/libitm/testsuite/lib/libitm.exp
-@@ -79,7 +79,7 @@ proc libitm_init { args } {
-     global ALWAYS_CFLAGS
-     global CFLAGS
-     global TOOL_EXECUTABLE TOOL_OPTIONS
--    global GCC_UNDER_TEST
-+    global GCC_UNDER_TEST GXX_UNDER_TEST
-     global TESTING_IN_BUILD_TREE
-     global target_triplet
-     global always_ld_library_path
-@@ -97,6 +97,17 @@ proc libitm_init { args } {
- 	} else {
- 	    set GCC_UNDER_TEST "[find_gcc]"
- 	}
-+	# Only if we're guessing 'GCC_UNDER_TEST', we're also going to guess
-+	# 'GXX_UNDER_TEST'
-+	if ![info exists GXX_UNDER_TEST] then {
-+	    if [info exists TOOL_EXECUTABLE] {
-+		set GXX_UNDER_TEST $TOOL_EXECUTABLE
-+	    } else {
-+		set GXX_UNDER_TEST "[find_g++]"
-+	    }
-+	} else {
-+	    error "GXX_UNDER_TEST set but not GCC_UNDER_TEST"
-+	}
-     }
- 
-     if ![info exists tmpdir] {
-@@ -119,7 +130,7 @@ proc libitm_init { args } {
-     }
- 
-     # Compute what needs to be put into LD_LIBRARY_PATH
--    set always_ld_library_path ".:${blddir}/.libs"
-+    set always_ld_library_path "."
- 
-     # Compute what needs to be added to the existing LD_LIBRARY_PATH.
-     if {$gccdir != ""} {
-@@ -150,6 +161,8 @@ proc libitm_init { args } {
- 	lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/"
- 	lappend ALWAYS_CFLAGS "additional_flags=-I${blddir}"
- 	lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs"
-+
-+	append always_ld_library_path ":${blddir}/.libs"
-     }
-     lappend ALWAYS_CFLAGS "additional_flags=-I${srcdir}/.."
- 
-@@ -179,7 +192,8 @@ proc libitm_init { args } {
-     # Turn on transactional memory support.
-     lappend ALWAYS_CFLAGS "additional_flags=-fgnu-tm"
- 
--    lappend ALWAYS_CFLAGS "additional_flags=-fdiagnostics-color=never"
-+    # Disable caret, color, URL diagnostics
-+    lappend ALWAYS_CFLAGS "additional_flags=-fdiagnostics-plain-output"
- }
- 
- #
-@@ -220,7 +234,6 @@ proc libitm_target_compile { source dest type options } {
- 
-     lappend options "additional_flags=[libio_include_flags]"
-     lappend options "timeout=[timeout_value]"
--    lappend options "compiler=$GCC_UNDER_TEST"
- 
-     set options [concat $libitm_compile_options $options]
- 
-diff --git a/libitm/testsuite/libitm.c++/c++.exp b/libitm/testsuite/libitm.c++/c++.exp
-index 90f3058e7249..c24dc830bcc5 100644
---- a/libitm/testsuite/libitm.c++/c++.exp
-+++ b/libitm/testsuite/libitm.c++/c++.exp
-@@ -16,39 +16,33 @@
- load_lib libitm-dg.exp
- load_gcc_lib gcc-dg.exp
- 
--global shlib_ext
--
--set shlib_ext [get_shlib_extension]
--# The C++ tests should be linked with g++, which defaults to -shared-libgcc.
--# Doing that is currently too intrusive, so hardcode here.
--set lang_link_flags "-shared-libgcc -lstdc++"
--set lang_test_file_found 0
--set lang_library_path "../libstdc++-v3/src/.libs"
--
--# Initialize dg.
--dg-init
--
--set blddir [lookfor_file [get_multilibs] libitm]
--
--
- if { $blddir != "" } {
--    if { ![file exists "${blddir}/${lang_library_path}/libstdc++.a"]
--	 && ![file exists "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] } {
-+    set libstdc++_library_path "../libstdc++-v3/src/.libs"
-+    set shlib_ext [get_shlib_extension]
-+    if { ![file exists "${blddir}/${libstdc++_library_path}/libstdc++.a"]
-+	 && ![file exists "${blddir}/${libstdc++_library_path}/libstdc++.${shlib_ext}"] } {
- 	verbose -log "No libstdc++ library found, will not execute c++ tests"
--	unset lang_library_path
-+	unset libstdc++_library_path
-+	unset shlib_ext
- 	return
-     }
--    lappend lang_library_paths ${lang_library_path}
-+    lappend lang_library_paths ${libstdc++_library_path}
- } elseif { ![info exists GXX_UNDER_TEST] } {
-     verbose -log "GXX_UNDER_TEST not defined, will not execute c++ tests"
-     return
- }
- 
-+lappend ALWAYS_CFLAGS "compiler=$GXX_UNDER_TEST"
-+
-+# Initialize dg.
-+dg-init
-+
- # Gather a list of all tests.
- set tests [lsort [glob -nocomplain $srcdir/$subdir/*.C]]
- 
- if { $blddir != "" } {
--    set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
-+    set lang_include_flags [exec sh ${blddir}/../libstdc++-v3/scripts/testsuite_flags --build-includes]
-+    set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_paths}"
- } else {
-     set ld_library_path "$always_ld_library_path"
- }
-@@ -56,18 +50,14 @@ if { $blddir != "" } {
- append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
- set_ld_library_path_env_vars
- 
--set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
--if { [file exists $flags_file] } {
--    set lang_include_flags [exec sh $flags_file --build-includes]
--}
--
- # Main loop.
- dg-runtest $tests "" ""
- 
- if { $blddir != "" } {
-     unset lang_include_flags
--    unset lang_library_path
-+    unset libstdc++_library_path
-     unset lang_library_paths
-+    unset shlib_ext
- }
- 
- # All done.
-diff --git a/libitm/testsuite/libitm.c/c.exp b/libitm/testsuite/libitm.c/c.exp
-index daa71427d64c..7a697b870932 100644
---- a/libitm/testsuite/libitm.c/c.exp
-+++ b/libitm/testsuite/libitm.c/c.exp
-@@ -9,20 +9,20 @@
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- 
--if [info exists lang_library_path] then {
--    unset lang_library_path
--    unset lang_link_flags
-+if [info exists lang_library_paths] then {
-+    unset lang_library_paths
- }
--if [info exists lang_test_file] then {
--    unset lang_test_file
-+if [info exists lang_include_flags] then {
-+    unset lang_include_flags
- }
- 
- load_lib libitm-dg.exp
- load_gcc_lib gcc-dg.exp
- 
-+lappend ALWAYS_CFLAGS "compiler=$GCC_UNDER_TEST"
-+
- # If a testcase doesn't have special options, use these.
- if ![info exists DEFAULT_CFLAGS] then {
-     set DEFAULT_CFLAGS "-O2"
--- 
-cgit 
diff --git a/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch b/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
deleted file mode 100644
index 431facb011..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
+++ /dev/null
@@ -1,257 +0,0 @@ 
-From 0ffe3c9af4e5d5468df742512b6e930fe7039230 Mon Sep 17 00:00:00 2001
-From: Jakub Jelinek <jakub@redhat.com>
-Date: Fri, 21 Nov 2025 16:25:58 +0100
-Subject: [PATCH] libcody: Make it buildable by C++11 to C++26
-
-The following builds with -std=c++11 and c++14 and c++17 and c++20 and c++23
-and c++26.
-
-I see the u8 string literals are mixed e.g. with strerror, so in
--fexec-charset=IBM1047 there will still be garbage, so am not 100% sure if
-the u8 literals everywhere are worth it either.
-
-2025-11-21  Jakub Jelinek  <jakub@redhat.com>
-
-	* cody.hh (S2C): For __cpp_char8_t >= 201811 use char8_t instead of
-	char in argument type.
-	(MessageBuffer::Space): Revert 2025-11-15 change.
-	(MessageBuffer::Append): For __cpp_char8_t >= 201811 add overload
-	with char8_t const * type of first argument.
-	(Packet::Packet): Similarly for first argument.
-	* client.cc (CommunicationError, Client::ProcessResponse,
-	Client::Connect, ConnectResponse, PathnameResponse, OKResponse,
-	IncludeTranslateResponse): Cast u8 string literals to (const char *)
-	where needed.
-	* server.cc (Server::ProcessRequests, ConnectRequest): Likewise.
-
-Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
-Upstream-Status: Backport [07a767c7a50d1daae8ef7d4aba73fe53ad40c0b7]
----
- libcody/client.cc | 36 +++++++++++++++++++-----------------
- libcody/cody.hh   | 22 ++++++++++++++++++++++
- libcody/server.cc | 28 ++++++++++++++--------------
- 3 files changed, 55 insertions(+), 31 deletions(-)
-
-diff --git a/libcody/client.cc b/libcody/client.cc
-index ae69d190cb77..147fecdbe500 100644
---- a/libcody/client.cc
-+++ b/libcody/client.cc
-@@ -97,7 +97,7 @@ int Client::CommunicateWithServer ()
- 
- static Packet CommunicationError (int err)
- {
--  std::string e {u8"communication error:"};
-+  std::string e {(const char *) u8"communication error:"};
-   e.append (strerror (err));
- 
-   return Packet (Client::PC_ERROR, std::move (e));
-@@ -110,33 +110,34 @@ Packet Client::ProcessResponse (std::vector<std::string> &words,
-     {
-       if (e == EINVAL)
- 	{
--	  std::string msg (u8"malformed string '");
-+	  std::string msg ((const char *) u8"malformed string '");
- 	  msg.append (words[0]);
--	  msg.append (u8"'");
-+	  msg.append ((const char *) u8"'");
- 	  return Packet (Client::PC_ERROR, std::move (msg));
- 	}
-       else
--	return Packet (Client::PC_ERROR, u8"missing response");
-+	return Packet (Client::PC_ERROR, (const char *) u8"missing response");
-     }
- 
-   Assert (!words.empty ());
--  if (words[0] == u8"ERROR")
-+  if (words[0] == (const char *) u8"ERROR")
-     return Packet (Client::PC_ERROR,
--		   words.size () == 2 ? words[1]: u8"malformed error response");
-+		   words.size () == 2 ? words[1]
-+		   : (const char *) u8"malformed error response");
- 
-   if (isLast && !read.IsAtEnd ())
-     return Packet (Client::PC_ERROR,
--		   std::string (u8"unexpected extra response"));
-+		   std::string ((const char *) u8"unexpected extra response"));
- 
-   Assert (code < Detail::RC_HWM);
-   Packet result (responseTable[code] (words));
-   result.SetRequest (code);
-   if (result.GetCode () == Client::PC_ERROR && result.GetString ().empty ())
-     {
--      std::string msg {u8"malformed response '"};
-+      std::string msg {(const char *) u8"malformed response '"};
- 
-       read.LexedLine (msg);
--      msg.append (u8"'");
-+      msg.append ((const char *) u8"'");
-       result.GetString () = std::move (msg);
-     }
-   else if (result.GetCode () == Client::PC_CONNECT)
-@@ -199,7 +200,7 @@ Packet Client::Connect (char const *agent, char const *ident,
- 			  size_t alen, size_t ilen)
- {
-   write.BeginLine ();
--  write.AppendWord (u8"HELLO");
-+  write.AppendWord ((const char *) u8"HELLO");
-   write.AppendInteger (Version);
-   write.AppendWord (agent, true, alen);
-   write.AppendWord (ident, true, ilen);
-@@ -211,7 +212,8 @@ Packet Client::Connect (char const *agent, char const *ident,
- // HELLO $version $agent [$flags]
- Packet ConnectResponse (std::vector<std::string> &words)
- {
--  if (words[0] == u8"HELLO" && (words.size () == 3 || words.size () == 4))
-+  if (words[0] == (const char *) u8"HELLO"
-+      && (words.size () == 3 || words.size () == 4))
-     {
-       char *eptr;
-       unsigned long val = strtoul (words[1].c_str (), &eptr, 10);
-@@ -247,7 +249,7 @@ Packet Client::ModuleRepo ()
- // PATHNAME $dir | ERROR
- Packet PathnameResponse (std::vector<std::string> &words)
- {
--  if (words[0] == u8"PATHNAME" && words.size () == 2)
-+  if (words[0] == (const char *) u8"PATHNAME" && words.size () == 2)
-     return Packet (Client::PC_PATHNAME, std::move (words[1]));
- 
-   return Packet (Client::PC_ERROR, u8"");
-@@ -256,7 +258,7 @@ Packet PathnameResponse (std::vector<std::string> &words)
- // OK or ERROR
- Packet OKResponse (std::vector<std::string> &words)
- {
--  if (words[0] == u8"OK")
-+  if (words[0] == (const char *) u8"OK")
-     return Packet (Client::PC_OK);
-   else
-     return Packet (Client::PC_ERROR,
-@@ -319,11 +321,11 @@ Packet Client::IncludeTranslate (char const *include, Flags flags, size_t ilen)
- // PATHNAME $cmifile
- Packet IncludeTranslateResponse (std::vector<std::string> &words)
- {
--  if (words[0] == u8"BOOL" && words.size () == 2)
-+  if (words[0] == (const char *) u8"BOOL" && words.size () == 2)
-     {
--      if (words[1] == u8"FALSE")
--	return Packet (Client::PC_BOOL, 0);
--      else if (words[1] == u8"TRUE")
-+      if (words[1] == (const char *) u8"FALSE")
-+	return Packet (Client::PC_BOOL);
-+      else if (words[1] == (const char *) u8"TRUE")
- 	return Packet (Client::PC_BOOL, 1);
-       else
- 	return Packet (Client::PC_ERROR, u8"");
-diff --git a/libcody/cody.hh b/libcody/cody.hh
-index 789ce9e70b75..93bce93aa94d 100644
---- a/libcody/cody.hh
-+++ b/libcody/cody.hh
-@@ -47,12 +47,21 @@ namespace Detail  {
- 
- // C++11 doesn't have utf8 character literals :(
- 
-+#if __cpp_char8_t >= 201811
-+template<unsigned I>
-+constexpr char S2C (char8_t const (&s)[I])
-+{
-+  static_assert (I == 2, "only single octet strings may be converted");
-+  return s[0];
-+}
-+#else
- template<unsigned I>
- constexpr char S2C (char const (&s)[I])
- {
-   static_assert (I == 2, "only single octet strings may be converted");
-   return s[0];
- }
-+#endif
- 
- /// Internal buffering class.  Used to concatenate outgoing messages
- /// and Lex incoming ones.
-@@ -123,6 +132,13 @@ public:
-       Space ();
-     Append (str, maybe_quote, len);
-   }
-+#if __cpp_char8_t >= 201811
-+  void AppendWord (char8_t const *str, bool maybe_quote = false,
-+		   size_t len = ~size_t (0))
-+  {
-+    AppendWord ((const char *) str, maybe_quote, len);
-+  }
-+#endif
-   /// Add a word as with AppendWord
-   /// @param str the string to append
-   /// @param maybe_quote string might need quoting, as for Append
-@@ -264,6 +280,12 @@ public:
-     : string (s), cat (STRING), code (c)
-   {
-   }
-+#if __cpp_char8_t >= 201811
-+  Packet (unsigned c, const char8_t *s)
-+    : string ((const char *) s), cat (STRING), code (c)
-+  {
-+  }
-+#endif
-   Packet (unsigned c, std::vector<std::string> &&v)
-     : vector (std::move (v)), cat (VECTOR), code (c)
-   {
-diff --git a/libcody/server.cc b/libcody/server.cc
-index e2fa069bb933..c18469fae843 100644
---- a/libcody/server.cc
-+++ b/libcody/server.cc
-@@ -36,12 +36,12 @@ static RequestPair
-   const requestTable[Detail::RC_HWM] =
-   {
-     // Same order as enum RequestCode
--    RequestPair {u8"HELLO", nullptr},
--    RequestPair {u8"MODULE-REPO", ModuleRepoRequest},
--    RequestPair {u8"MODULE-EXPORT", ModuleExportRequest},
--    RequestPair {u8"MODULE-IMPORT", ModuleImportRequest},
--    RequestPair {u8"MODULE-COMPILED", ModuleCompiledRequest},
--    RequestPair {u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
-+    RequestPair {(const char *) u8"HELLO", nullptr},
-+    RequestPair {(const char *) u8"MODULE-REPO", ModuleRepoRequest},
-+    RequestPair {(const char *) u8"MODULE-EXPORT", ModuleExportRequest},
-+    RequestPair {(const char *) u8"MODULE-IMPORT", ModuleImportRequest},
-+    RequestPair {(const char *) u8"MODULE-COMPILED", ModuleCompiledRequest},
-+    RequestPair {(const char *) u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
-   };
- }
- 
-@@ -135,21 +135,21 @@ void Server::ProcessRequests (void)
- 	  std::string msg;
- 
- 	  if (err > 0)
--	    msg = u8"error processing '";
-+	    msg = (const char *) u8"error processing '";
- 	  else if (ix >= Detail::RC_HWM)
--	    msg = u8"unrecognized '";
-+	    msg = (const char *) u8"unrecognized '";
- 	  else if (IsConnected () && ix == Detail::RC_CONNECT)
--	    msg = u8"already connected '";
-+	    msg = (const char *) u8"already connected '";
- 	  else if (!IsConnected () && ix != Detail::RC_CONNECT)
--	    msg = u8"not connected '";
-+	    msg = (const char *) u8"not connected '";
- 	  else
--	    msg = u8"malformed '";
-+	    msg = (const char *) u8"malformed '";
- 
- 	  read.LexedLine (msg);
--	  msg.append (u8"'");
-+	  msg.append ((const char *) u8"'");
- 	  if (err > 0)
- 	    {
--	      msg.append (u8" ");
-+	      msg.append ((const char *) u8" ");
- 	      msg.append (strerror (err));
- 	    }
- 	  resolver->ErrorResponse (this, std::move (msg));
-@@ -176,7 +176,7 @@ Resolver *ConnectRequest (Server *s, Resolver *r,
-     return nullptr;
- 
-   if (words.size () == 3)
--    words.emplace_back (u8"");
-+    words.emplace_back ((const char *) u8"");
-   unsigned version = ParseUnsigned (words[1]);
-   if (version == ~0u)
-     return nullptr;
diff --git a/meta/recipes-devtools/gcc/gcc_15.2.bb b/meta/recipes-devtools/gcc/gcc_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc_15.2.bb
rename to meta/recipes-devtools/gcc/gcc_16.1.bb
diff --git a/meta/recipes-devtools/gcc/libgcc-initial_15.2.bb b/meta/recipes-devtools/gcc/libgcc-initial_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgcc-initial_15.2.bb
rename to meta/recipes-devtools/gcc/libgcc-initial_16.1.bb
diff --git a/meta/recipes-devtools/gcc/libgcc_15.2.bb b/meta/recipes-devtools/gcc/libgcc_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgcc_15.2.bb
rename to meta/recipes-devtools/gcc/libgcc_16.1.bb
diff --git a/meta/recipes-devtools/gcc/libgfortran_15.2.bb b/meta/recipes-devtools/gcc/libgfortran_16.1.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgfortran_15.2.bb
rename to meta/recipes-devtools/gcc/libgfortran_16.1.bb