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>
|
2008-08-01 Christopher Faylor <me+cygwin@cgf.cx>
|
||||||
|
|
||||||
* dcrt0.cc (dll_crt0_1): Add a symbol denoting return from call to
|
* 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
|
extern "C" void
|
||||||
cygwin_exit (int n)
|
cygwin_exit (int n)
|
||||||
{
|
{
|
||||||
dll_global_dtors ();
|
|
||||||
if (atexit_lock)
|
if (atexit_lock)
|
||||||
atexit_lock.acquire ();
|
atexit_lock.acquire ();
|
||||||
exit (n);
|
exit (n);
|
||||||
|
|
|
@ -32,7 +32,7 @@ dll_global_dtors ()
|
||||||
int recorded = dll_global_dtors_recorded;
|
int recorded = dll_global_dtors_recorded;
|
||||||
dll_global_dtors_recorded = false;
|
dll_global_dtors_recorded = false;
|
||||||
if (recorded)
|
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 ();
|
d->p.run_dtors ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,7 @@ public:
|
||||||
hold = &start;
|
hold = &start;
|
||||||
return inext ();
|
return inext ();
|
||||||
}
|
}
|
||||||
|
friend void dll_global_dtors ();
|
||||||
};
|
};
|
||||||
|
|
||||||
extern dll_list dlls;
|
extern dll_list dlls;
|
||||||
|
|
Loading…
Reference in New Issue