https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102992
--- Comment #16 from Iain Sandoe <iains at gcc dot gnu.org> --- (In reply to Thomas Koenig from comment #14) > (In reply to Iain Sandoe from comment #6) > > I had a brief look at some new fails on macOS12 / Darwin21 for gcov. > > > > It seems that .mod_term_funcs entries are not being run - so if libgfortran > > relies on something defined as __attribute__((destructor)) [e.g. to flush > > file output] that might explain the issue. > > Well, there is (at the end of main.c) > > /* Cleanup the runtime library. */ > > static void __attribute__((destructor)) > cleanup (void) > { > close_units (); > } That would seem a very likely candidate for the issue. NOTE: I have been discussing the non-running of mod_term_funcs with my "downstream" and Apple folks. The consensus is that this is 99.99% likely an unintentional bug that just happens not to show with clang-based toolchains because they queue DTORs on atexit (as does GCC for C++). > I guess that could be put into main, after the call to __MAIN, instead. Well, unless there's a good reason to have it in a DTOR, it makes for a more robust solution to call it directly (there are various other differences that could occur in mixed code bases esp. c++ + fortran even without the Darwin21.1 bug). will try your alternate code later.