https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97729
Bug ID: 97729 Summary: Link failure due to basic_stringbuf and others when building DLL on MinGW Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: markus.boeck02 at gmail dot com Target Milestone: --- Current trunk of libstdc++ is not able to be built when building a shared library on the i686-w64-mingw32 and x86_64-w64-mingw32 targets. Following configure arguments were used: ../configure --target=x86_64-w64-mingw32 --disable-bootstrap --with-sysroot=/mnt/c/GCC-Build/NewestLinux --prefix=/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install --disable-multilib --with-tune=znver1 --disable-libstdcxx-verbose --disable-nls --enable-shared --with-gnu-ld --enable-threads=posix --enable-__cxa_atexit --enable-libgomp --with-gnu-as --with-as=/mnt/c/GCC-Build/NewestLinux/bin/x86_64-w64-mingw32-as --with-ld=/mnt/c/GCC-Build/NewestLinux/bin/x86_64-w64-mingw32-ld --enable-languages=c,c++,fortran,lto,objc,obj-c++ --with-cross-host The last relevant lines of stdout are: /bin/bash ../libtool --tag CXX --mode=link /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/./gcc/xgcc -shared-libgcc -B/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/./gcc -nostdinc++ -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src/.libs -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/lib -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/mingw/lib -isystem /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/include -isystem /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/mingw/include -B/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/bin/ -B/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/lib/ -isystem /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/include -isystem /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/sys-include -Wl,-O1 -no-undefined -bindir "/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/lib/../lib" -Wl,--gc-sections -std=gnu++98 -DDLL_EXPORT -DPIC -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2 -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -frandom-seed=libstdc++.la -o libstdc++.la -version-info 6:29:0 -Wl,--version-script=libstdc++-symbols.ver -lm -no-undefined -bindir "/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/lib/../lib" -rpath /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/lib/../lib compatibility.lo compatibility-debug_list.lo compatibility-debug_list-2.lo compatibility-c++0x.lo compatibility-atomic-c++0x.lo compatibility-thread-c++0x.lo compatibility-chrono.lo compatibility-condvar.lo ../libsupc++/libsupc++convenience.la ../src/c++98/libc++98convenience.la ../src/c++11/libc++11convenience.la ../src/c++17/libc++17convenience.la ../src/c++20/libc++20convenience.la make all-am make[3]: Entering directory '/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libgfortran' libtool: link: rm -fr .libs/libstdc++.dll.a libtool: link: /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/./gcc/xgcc -shared-libgcc -B/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/./gcc -nostdinc++ -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src/.libs -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/lib -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/mingw/lib -isystem /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/include -isystem /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/mingw/include -B/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/bin/ -B/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/lib/ -isystem /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/include -isystem /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/sys-include -shared -nostdlib /mnt/c/GCC-Build/NewestLinux/mingw/lib/../lib/dllcrt2.o /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/./gcc/crtbegin.o .libs/compatibility.o .libs/compatibility-debug_list.o .libs/compatibility-debug_list-2.o .libs/compatibility-c++0x.o .libs/compatibility-atomic-c++0x.o .libs/compatibility-thread-c++0x.o .libs/compatibility-chrono.o .libs/compatibility-condvar.o -Wl,--whole-archive ../libsupc++/.libs/libsupc++convenience.a ../src/c++98/.libs/libc++98convenience.a ../src/c++11/.libs/libc++11convenience.a ../src/c++17/.libs/libc++17convenience.a ../src/c++20/.libs/libc++20convenience.a -Wl,--no-whole-archive -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/libsupc++/.libs -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src/.libs -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/x86_64-w64-mingw32/lib -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/install/mingw/lib -L/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/./gcc -L/mnt/c/GCC-Build/NewestLinux/mingw/lib/../lib -L/mnt/c/GCC-Build/NewestLinux/mingw/lib -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 /mnt/c/GCC-Build-Array/gcc/build-host-x86_64/./gcc/crtend.o -Wl,-O1 -Wl,--gc-sections -Wl,--version-script=libstdc++-symbols.ver -o .libs/libstdc++-6.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libstdc++.dll.a : : : true DO=all multi-do # make make[3]: Leaving directory '/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libgfortran' make[2]: Leaving directory '/mnt/c/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libgfortran' /mnt/c/GCC-Build/NewestLinux/bin/x86_64-w64-mingw32-ld: ../libsupc++/.libs/libsupc++convenience.a(nested_exception.o): in function `std::__exception_ptr::exception_ptr::~exception_ptr()': C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/libsupc++/C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/include/bits/exception_ptr.h:194: multiple definition of `std::__exception_ptr::exception_ptr::~exception_ptr()'; ../libsupc++/.libs/libsupc++convenience.a(eh_ptr.o):C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/libsupc++/C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/include/bits/exception_ptr.h:194: first defined here /mnt/c/GCC-Build/NewestLinux/bin/x86_64-w64-mingw32-ld: ../src/c++11/.libs/libc++11convenience.a(future.o): in function `std::__exception_ptr::exception_ptr::exception_ptr()': C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src/c++11/C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/include/bits/std_mutex.h:105: multiple definition of `std::__exception_ptr::exception_ptr::exception_ptr()'; ../libsupc++/.libs/libsupc++convenience.a(eh_ptr.o):C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/libsupc++/C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/include/bits/exception_ptr.h:176: first defined here /mnt/c/GCC-Build/NewestLinux/bin/x86_64-w64-mingw32-ld: ../src/c++20/.libs/libc++20convenience.a(sstream-inst.o): in function `std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::basic_stringbuf(std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >&&, std::allocator<char> const&)': C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src/c++20/C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/include/sstream:210: undefined reference to `std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::basic_stringbuf(std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >&&, std::allocator<char> const&, std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::__xfer_bufptrs&&)' /mnt/c/GCC-Build/NewestLinux/bin/x86_64-w64-mingw32-ld: ../src/c++20/.libs/libc++20convenience.a(sstream-inst.o): in function `std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::basic_stringbuf(std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >&&, std::allocator<char> const&)': C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src/c++20/C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/include/sstream:210: undefined reference to `std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::basic_stringbuf(std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >&&, std::allocator<char> const&, std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::__xfer_bufptrs&&)' /mnt/c/GCC-Build/NewestLinux/bin/x86_64-w64-mingw32-ld: ../src/c++20/.libs/libc++20convenience.a(sstream-inst.o): in function `std::__cxx11::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_stringbuf(std::__cxx11::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&&, std::allocator<wchar_t> const&)': C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src/c++20/C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/include/sstream:210: undefined reference to `std::__cxx11::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_stringbuf(std::__cxx11::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&&, std::allocator<wchar_t> const&, std::__cxx11::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::__xfer_bufptrs&&)' /mnt/c/GCC-Build/NewestLinux/bin/x86_64-w64-mingw32-ld: ../src/c++20/.libs/libc++20convenience.a(sstream-inst.o): in function `std::__cxx11::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_stringbuf(std::__cxx11::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&&, std::allocator<wchar_t> const&)': C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/src/c++20/C:/GCC-Build-Array/gcc/build-host-x86_64/x86_64-w64-mingw32/libstdc++-v3/include/sstream:210: undefined reference to `std::__cxx11::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_stringbuf(std::__cxx11::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&&, std::allocator<wchar_t> const&, std::__cxx11::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::__xfer_bufptrs&&)' collect2: error: ld returned 1 exit status make[5]: *** [libstdc++.la] Error 1