https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108969

--- Comment #16 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-13 branch has been updated by Jonathan Wakely
<r...@gcc.gnu.org>:

https://gcc.gnu.org/g:762be0646bf96761ce68a9e06ab60c453e0963d0

commit r13-7217-g762be0646bf96761ce68a9e06ab60c453e0963d0
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Apr 18 14:37:38 2023 +0100

    libstdc++: Export global iostreams with GLIBCXX_3.4.31 symver [PR108969]

    Since GCC 13 the global iostream objects are only initialized once in
    libstdc++, and not by a std::ios::Init object in every translation unit
    that includes <iostream>. To avoid using uninitialized streams defined
    in an older libstdc++.so, translation units using the global iostreams
    should depend on the GLIBCXX_3.4.31 symver.

    Define std::cin as std::__io::cin and then export it as
    std::cin@@GLIBCXX_3.4.31 so that references to std::cin bind to the new
    symver. Also export it as @GLIBCXX_3.4 for backwards compatibility

    libstdc++-v3/ChangeLog:

            PR libstdc++/108969
            * src/Makefile.am: Move globals_io.cc to here.
            * src/Makefile.in: Regenerate.
            * src/c++98/Makefile.am: Remove globals_io.cc from here.
            * src/c++98/Makefile.in: Regenerate.
            * src/c++98/globals_io.cc [_GLIBCXX_SYMVER_GNU] (cin): Adjust
            symbol name and then export with GLIBCXX_3.4.31 symver.
            (cout, cerr, clog, wcin, wcout, wcerr, wclog): Likewise.
            * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt:
            Regenerate.
            * config/abi/post/i486-linux-gnu/baseline_symbols.txt:
            Regenerate.
            * config/abi/post/m68k-linux-gnu/baseline_symbols.txt:
            Regenerate.
            * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt:
            Regenerate.
            * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt:
            Regenerate.
            * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt:
            Regenerate.
            * config/abi/post/s390x-linux-gnu/baseline_symbols.txt:
            Regenerate.
            * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt:
            Regenerate.
            * config/abi/pre/gnu.ver: Add iostream objects to new symver.

Reply via email to