https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117630
--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #4) > The remaining global destructors are: > > src/c++98/ios_base_init.h:12 > src/c++11/compatibility-c++0x.cc:218 > src/c++11/compatibility-c++0x.cc:218 > src/c++11/future.cc:77 > src/c++11/ios_errcat.cc:72 > src/c++11/system_error.cc:149 > src/c++11/system_error.cc:149 > src/c++17/memory_resource.cc:95 > src/c++17/memory_resource.cc:95 > src/c++17/memory_resource.cc:95 > src/c++20/tzdb.cc:185 > > The two in compatibility-c++0x.cc are only needed for backward compat with > gcc 4.x, if you're compiling for embedded targets using newlib you probably > don't care about those. Those two could be combined into one struct so there's only one destructor registration instead of two. In theory we could do the same for the two category objects in system_error.cc, and for the three memory resources in memory_resource.cc