* dcrt0.cc (cygwin_exit): Remove (hopefully) extraneous call to
dll_global_dtors.
* dll_init.cc (dll_global_dtors): Run destructors in reverse dependency/load
order.
* dll_init.h (dll_list): Add dll_global_dtors as a friend.
+2008-08-04 Christopher Faylor <me+cygwin@cgf.cx>
+
+ Changes suggested by Dave Korn.
+ * dcrt0.cc (cygwin_exit): Remove (hopefully) extraneous call to
+ dll_global_dtors.
+ * dll_init.cc (dll_global_dtors): Run destructors in reverse
+ dependency/load order.
+ * dll_init.h (dll_list): Add dll_global_dtors as a friend.
+
2008-08-01 Christopher Faylor <me+cygwin@cgf.cx>
* dcrt0.cc (dll_crt0_1): Add a symbol denoting return from call to
extern "C" void
cygwin_exit (int n)
{
- dll_global_dtors ();
if (atexit_lock)
atexit_lock.acquire ();
exit (n);
int recorded = dll_global_dtors_recorded;
dll_global_dtors_recorded = false;
if (recorded)
- for (dll *d = dlls.istart (DLL_ANY); d; d = dlls.inext ())
+ for (dll *d = dlls.end; d != &dlls.start; d = d->prev)
d->p.run_dtors ();
}
hold = &start;
return inext ();
}
+ friend void dll_global_dtors ();
};
extern dll_list dlls;