https://gcc.gnu.org/g:555892ac11f0bcc4a8bd1294ead9e16db7e104f6
commit r14-12089-g555892ac11f0bcc4a8bd1294ead9e16db7e104f6 Author: Jakub Jelinek <[email protected]> Date: Mon Sep 8 11:49:58 2025 +0200 libstdc++: Fix up <ext/pointer.h> [PR121827] During the tests mentioned in https://gcc.gnu.org/pipermail/gcc-patches/2025-August/692482.html (but dunno why I haven't noticed it back in August but only when testing https://gcc.gnu.org/pipermail/gcc-patches/2025-September/694527.html ) I've noticed two ext header problems. One is that #include <ext/pointer.h> got broken with the r13-3037-g18f176d0b25591e28 change and since then is no longer self-contained, as it includes iosfwd only if _GLIBCXX_HOSTED is defined but doesn't actually include bits/c++config.h to make sure it is defined, then includes a bunch of headers which do include bits/c++config.h and finally uses in #if _GLIBCXX_HOSTED guarded code what is declared in iosfwd. The other problem is that ext/cast.h is also not a self-contained header, but that one has /** @file ext/cast.h * This is an internal header file, included by other library headers. * Do not attempt to use it directly. @headername{ext/pointer.h} */ comment, so I think we just shouldn't include it in extc++.h and let ext/pointer.h include it. 2025-09-08 Jakub Jelinek <[email protected]> PR libstdc++/121827 * include/precompiled/extc++.h: Don't include ext/cast.h which is an internal header. * include/ext/pointer.h: Include bits/c++config.h before #if _GLIBCXX_HOSTED. (cherry picked from commit 592bafb26eb1fd50979f6cdf2176897c4a02c281) Diff: --- libstdc++-v3/include/ext/pointer.h | 1 + libstdc++-v3/include/precompiled/extc++.h | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/libstdc++-v3/include/ext/pointer.h b/libstdc++-v3/include/ext/pointer.h index f066ee9e8a8c..5f0988f20f1f 100644 --- a/libstdc++-v3/include/ext/pointer.h +++ b/libstdc++-v3/include/ext/pointer.h @@ -38,6 +38,7 @@ #pragma GCC system_header +#include <bits/c++config.h> #if _GLIBCXX_HOSTED # include <iosfwd> #endif diff --git a/libstdc++-v3/include/precompiled/extc++.h b/libstdc++-v3/include/precompiled/extc++.h index 651b9da28028..44174f7465a6 100644 --- a/libstdc++-v3/include/precompiled/extc++.h +++ b/libstdc++-v3/include/precompiled/extc++.h @@ -37,7 +37,6 @@ #endif #include <ext/alloc_traits.h> #include <ext/atomicity.h> -#include <ext/cast.h> #include <ext/iterator> #include <ext/numeric_traits.h> #include <ext/pointer.h>
