https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60936
--- Comment #25 from Jonathan Wakely <redi at gcc dot gnu.org> --- I have, and it doesn't make much difference: 175800 gcc48.so 608280 gcc49.so 1159624 gcc5-cow.so 1176296 gcc6-cow-gc.so 1176296 gcc6-cow.so 1180400 gcc6-gc.so 1180400 gcc6.so 258376 gcc7-cow-patched.so 1188568 gcc7-cow-trunk.so 258384 gcc7-patched.so 1188552 gcc7-trunk.so -cow means using -D_GLIBCXX_CXX11_ABI=0 -gc means using -Wl,--gc-sections -patched means I've split the explicit instantiations into separate files and changed __snprintf_lite to not use __int_to_char from locale-inst.o The patch makes a big difference.