diff options
| author | Lars Gierth | 2026-04-25 15:33:06 +0000 |
|---|---|---|
| committer | Robert Marko | 2026-04-28 08:07:37 +0000 |
| commit | 956a6e2c234abc565ff913fc0fcfdc43b186cf31 (patch) | |
| tree | d51f260ffa191a68958e13317ba2e0c86e7cd2de | |
| parent | d87f1e23056133f576a9f57e108fda479850e42e (diff) | |
| download | openwrt-956a6e2c234abc565ff913fc0fcfdc43b186cf31.tar.gz | |
toolchain: gcc: fix include memory against GCC 16
This patch backports a small but important part of the upstream commit:
b3f1b9e2aa07 build: Remove INCLUDE_MEMORY [PR117737]
Its original commit message fails to mention that the commit also moves
the `#include <memory>` to an earlier position within system.h,
which is the actual change that we're after in this patch.
Building our GCC 14.3 with host GCC 16, the inclusion order starts to matter,
which is an issue that was also touched upon by the upstream commits:
9970b576b7e4 Include safe-ctype.h after C++ standard headers, to avoid over-poisoning
f6e00226a4ca build: Move sstream include above safe-ctype.h {PR117771]
Signed-off-by: Lars Gierth <larsg@systemli.org>
Link: https://github.com/openwrt/openwrt/pull/23095
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit a32a367259574958768f44916d6cce8c8939ad27)
| -rw-r--r-- | toolchain/gcc/patches-14.x/005-include-memory.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/toolchain/gcc/patches-14.x/005-include-memory.patch b/toolchain/gcc/patches-14.x/005-include-memory.patch new file mode 100644 index 0000000000..35bc780343 --- /dev/null +++ b/toolchain/gcc/patches-14.x/005-include-memory.patch @@ -0,0 +1,72 @@ +From: Lars Gierth <larsg@systemli.org> + +This patch backports a small but important part of the upstream commit: + +b3f1b9e2aa07 build: Remove INCLUDE_MEMORY [PR117737] + +Its original commit message fails to mention that the commit also moves +the `#include <memory>` to an earlier position within system.h, +which is the actual change that we're after in this patch. + +Building our GCC 14.3 with host GCC 16, the inclusion order starts to matter, +which is an issue that was also touched upon by the upstream commits: + +9970b576b7e4 Include safe-ctype.h after C++ standard headers, to avoid over-poisoning +f6e00226a4ca build: Move sstream include above safe-ctype.h {PR117771] + +Error log: + + > gcc -v + Using built-in specs. + COLLECT_GCC=gcc + COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/16/lto-wrapper + OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa + OFFLOAD_TARGET_DEFAULT=1 + Target: x86_64-redhat-linux + Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,cobol,algol68,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugzilla.redhat.com/ --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-16.0.1-build/gcc-16.0.1-20260321/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none,amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-tls=gnu2 --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1 --disable-libssp + Thread model: posix + Supported LTO compression algorithms: zlib zstd + gcc version 16.0.1 20260321 (Red Hat 16.0.1-0) (GCC) + > git clean -fdx + > make defconfig + > make V=s + [...] + make[5]: Entering directory '/home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0-initial/gcc' + g++ -fno-PIE -c -DIN_GCC_FRONTEND -O2 -I/home/user/w/ow/openwrt/staging_dir/host/include -pipe -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H -fno-PIE -I. -Ic -I/home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc -I/home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc/c -I/home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc/../include -I/home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc/../libcpp/include -I/home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc/../libcody -I/home/user/w/ow/openwrt/staging_dir/host/include -I/home/user/w/ow/openwrt/staging_dir/host/include -I/home/user/w/ow/openwrt/staging_dir/host/include -I/home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc/../libdecnumber -I/home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc/../libdecnumber/dpd -I../libdecnumber -I/home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc/../libbacktrace -o c/c-decl.o -MT c/c-decl.o -MMD -MP -MF c/.deps/c-decl.TPo /home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc/c/c-decl.cc + In file included from /usr/include/c++/16/bits/basic_ios.h:40, + from /usr/include/c++/16/ios:48, + from /usr/include/c++/16/bits/ostream.h:43, + from /usr/include/c++/16/bits/unique_ptr.h:42, + from /usr/include/c++/16/memory:80, + from /home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc/system.h:766, + from /home/user/w/ow/openwrt/build_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/gcc-14.3.0/gcc/c/c-decl.cc:30: + /usr/include/c++/16/bits/locale_facets.h:252:53: error: macro 'toupper' passed 2 arguments, but takes just 1 + 252 | toupper(char_type *__lo, const char_type* __hi) const + | ^ + [...] + + +--- a/gcc/system.h ++++ b/gcc/system.h +@@ -222,6 +222,7 @@ extern int fprintf_unlocked (FILE *, con + #ifdef INCLUDE_FUNCTIONAL + # include <functional> + #endif ++# include <memory> + # include <cstring> + # include <initializer_list> + # include <new> +@@ -758,13 +759,6 @@ private: + #define LIKELY(x) (__builtin_expect ((x), 1)) + #define UNLIKELY(x) (__builtin_expect ((x), 0)) + +-/* Some of the headers included by <memory> can use "abort" within a +- namespace, e.g. "_VSTD::abort();", which fails after we use the +- preprocessor to redefine "abort" as "fancy_abort" below. */ +- +-#ifdef INCLUDE_MEMORY +-# include <memory> +-#endif + + #ifdef INCLUDE_MUTEX + # include <mutex> |