https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58142
Eric Gallager <egallager at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=52268 --- Comment #11 from Eric Gallager <egallager at gcc dot gnu.org> --- (In reply to Iain Sandoe from comment #4) > (In reply to Jonathan Wakely from comment #3) > > I think it's still open because nobody has looked at it again recently, not > > because of any conscious decision. > > > > I'm changing the component to libstdc++ as the runtime library is > > responsible for the cleanup. > > > > Iain, what do you think? If comment 2 is right, then GCC 7.1 and later will > > use __cxa_thread_atexit from libc and the destruction order will be correct. > > I don't know when Darwin libc acquired that function, maybe it's in all > > supported versions of Darwin but we just didn't use it until the PR 78968 > > change. > > A quick look says that __cxa_thread_atexit exists in libc from Darwin13, > macOS 10.9 / Mavericks onwards. > > So it's not present in the system mentioned in the OP and Comment #1. > .. it will not be present in Darwin9 and 10 which I still build and test > for, but it's present in all versions "supported" by the vendor. > > We have previously worked around such issues by having a version-specific > CRT, but not sure if that's applicable in this case. > > NOTE 1: Darwin uses GCC's emulatedTLS, and I have some concerns that there > might be C++ issues with initialisers (and, thus possibly DTORs) anyway (see > 84497). and also bug 52268 > > NOTE 2: (I don't think it's relevant, but just for completeness) Darwin's > linker doesn't support ctor/dtor priorities.