https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100376
--- Comment #3 from cqwrteur <unlvsur at live dot com> --- i understand what's going on here. It is because std::filebuf in libstdc++ has a __c_lock data member which is before the __c_file. However, libstdc++ on windows does not support threading. A lot of people including me was using GCC with MCF gthread. The __gthread_lock_t in mcf gthread leads a different abi compared to nomarl version of libstdc++. The solution is that we need to provide win32 threading with libstdc++ by ourselves with win32 apis. Or if people are using different threading libraries, we get an ABI breaking.