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

--- Comment #8 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>:

https://gcc.gnu.org/g:fc7a1fb0238e379d466316aa219734ac61f4bc0e

commit r15-3576-gfc7a1fb0238e379d466316aa219734ac61f4bc0e
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Sep 10 14:36:26 2024 +0100

    libstdc++: Only use std::ios_base_library_init() for ELF [PR116159]

    The undefined std::ios_base_library_init() symbol that is referenced by
    <iostream> is only supposed to be used for targets where symbol
    versioning is supported.

    The mingw-w64 target defaults to --enable-symvers=gnu due to using GNU
    ld but doesn't actually support symbol versioning. This means it tries
    to emit references to the std::ios_base_library_init() symbol, which
    isn't really defined in the library. This causes problems when using lld
    to link user binaries.

    Disable the undefined symbol reference for non-ELF targets.

    libstdc++-v3/ChangeLog:

            PR libstdc++/116159
            * include/std/iostream (ios_base_library_init): Only define for
            ELF targets.
            * src/c++98/ios_init.cc (ios_base_library_init): Likewise.

Reply via email to