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.