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.
This commit is contained in:
parent
ea8432dfb1
commit
bee18f45fd
|
@ -1,3 +1,12 @@
|
|||
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
|
||||
|
|
|
@ -1112,7 +1112,6 @@ cygwin_atexit (void (*function)(void))
|
|||
extern "C" void
|
||||
cygwin_exit (int n)
|
||||
{
|
||||
dll_global_dtors ();
|
||||
if (atexit_lock)
|
||||
atexit_lock.acquire ();
|
||||
exit (n);
|
||||
|
|
|
@ -32,7 +32,7 @@ dll_global_dtors ()
|
|||
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 ();
|
||||
}
|
||||
|
||||
|
|
|
@ -86,6 +86,7 @@ public:
|
|||
hold = &start;
|
||||
return inext ();
|
||||
}
|
||||
friend void dll_global_dtors ();
|
||||
};
|
||||
|
||||
extern dll_list dlls;
|
||||
|
|
Loading…
Reference in New Issue