https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39796
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Patrick Palka <ppa...@gcc.gnu.org>: https://gcc.gnu.org/g:4e4e3ffd10f53ef71696bc728ab40258751a2df4 commit r13-3707-g4e4e3ffd10f53ef71696bc728ab40258751a2df4 Author: Patrick Palka <ppa...@redhat.com> Date: Sun Nov 6 11:16:00 2022 -0500 libstdc++: Move stream initialization into compiled library [PR44952] This patch moves the static object for constructing the standard streams out from <iostream> and into the compiled library on systems that support init priorities. This'll mean <iostream> no longer introduces a separate global constructor in each TU that includes it. We can do this only if the init_priority attribute is supported because we need a way to ensure the stream initialization runs first before any user global initializer, particularly when linking with a static libstdc++.a. PR libstdc++/44952 PR libstdc++/39796 PR libstdc++/98108 libstdc++-v3/ChangeLog: * include/std/iostream (__ioinit): No longer define here if the init_priority attribute is usable. * src/c++98/ios_init.cc (__ioinit): Define here instead if init_priority is usable, via ... * src/c++98/ios_base_init.h: ... this new file.