https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94987
Bug ID: 94987 Summary: Missing vtable for std::__future_base::_State_base on libstdc++.a Product: gcc Version: 9.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: kndevl at outlook dot com Target Milestone: --- # Ubuntu 18.04 has gcc 5.5.0 $ nm -C `g++ --print-file-name libstdc++.a` | grep 'vtable for std::__future_base::_State_base' < empty output > ------------------------------------------------------------ $ nm -CD `g++ --print-file-name libstdc++.so` | grep 'vtable for std::__future_base::_State_base' 00000000003d3e58 V vtable for std::__future_base::_State_base ------------------------------------------------------------ # Ubuntu 14.04 has gcc 4.8.4 $ nm -C `g++ --print-file-name libstdc++.a` | grep 'vtable for std::__future_base::_State_base' nm: compatibility-debug_list-2.o: no symbols 0000000000000000 V vtable for std::__future_base::_State_base ------------------------------------------------------------ $ nm -CD `g++ --print-file-name libstdc++.so` | grep 'vtable for std::__future_base::_State_base' 00000000002eb880 V vtable for std::__future_base::_State_base ------------------------------------------------------------ I built a static library on 4.8.4 and tried using it on 5.5.0 with static libstdc++. This library depends on the missing symbol and does not compile on newer libstdc++.a. I tried this on gcc 9.3.0 too and the libstdc++.a does not have this symbol. Dynamic linking with libstdc++.so works fine. I keep track of breaking ABI changes from https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html and I could not find anything related to this. Is this a breaking change? If so, where do I keep myself updated on these?