Update.
* include/stdlib.h: Add prototype for __cxa_atexit.
This commit is contained in:
parent
41a173e1e3
commit
a6a478e9f9
|
@ -1,5 +1,7 @@
|
||||||
2000-03-19 Ulrich Drepper <drepper@redhat.com>
|
2000-03-19 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* include/stdlib.h: Add prototype for __cxa_atexit.
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/i386/sys/debugreg.h: Update comment about
|
* sysdeps/unix/sysv/linux/i386/sys/debugreg.h: Update comment about
|
||||||
_SLOWDOWN flags. Patch by Jim Blandy <jimb@cygnus.com>.
|
_SLOWDOWN flags. Patch by Jim Blandy <jimb@cygnus.com>.
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,8 @@ extern int __add_to_environ (const char *name, const char *value,
|
||||||
extern void _quicksort (void *const pbase, size_t total_elems,
|
extern void _quicksort (void *const pbase, size_t total_elems,
|
||||||
size_t size, __compar_fn_t cmp);
|
size_t size, __compar_fn_t cmp);
|
||||||
|
|
||||||
|
extern int __cxa_atexit (void (*func) (void *), void *arg, void *d);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#undef __Need_M_And_C
|
#undef __Need_M_And_C
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2000-03-19 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* pthread.c (pthread_initialize): Instead of on_exit use
|
||||||
|
__cxa_atexit if __dso_label is available to allow unloading the
|
||||||
|
libpthread shared library.
|
||||||
|
|
||||||
2000-03-16 Ulrich Drepper <drepper@redhat.com>
|
2000-03-16 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* condvar.c: Make tests for ownership of mutex less strict.
|
* condvar.c: Make tests for ownership of mutex less strict.
|
||||||
|
|
|
@ -308,6 +308,8 @@ __libc_allocate_rtsig (int high)
|
||||||
|
|
||||||
static void pthread_initialize(void) __attribute__((constructor));
|
static void pthread_initialize(void) __attribute__((constructor));
|
||||||
|
|
||||||
|
extern void *__dso_handle __attribute__ ((weak));
|
||||||
|
|
||||||
static void pthread_initialize(void)
|
static void pthread_initialize(void)
|
||||||
{
|
{
|
||||||
struct sigaction sa;
|
struct sigaction sa;
|
||||||
|
@ -387,7 +389,13 @@ static void pthread_initialize(void)
|
||||||
/* Register an exit function to kill all other threads. */
|
/* Register an exit function to kill all other threads. */
|
||||||
/* Do it early so that user-registered atexit functions are called
|
/* Do it early so that user-registered atexit functions are called
|
||||||
before pthread_exit_process. */
|
before pthread_exit_process. */
|
||||||
__on_exit(pthread_exit_process, NULL);
|
if (__dso_handle)
|
||||||
|
/* The cast is a bit unclean. The function expects two arguments but
|
||||||
|
we can only pass one. Fortunately this is not a problem since the
|
||||||
|
second argument of `pthread_exit_process' is simply ignored. */
|
||||||
|
__cxa_atexit((void (*) (void *)) pthread_exit_process, NULL, __dso_handle);
|
||||||
|
else
|
||||||
|
on_exit (pthread_exit_process, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __pthread_initialize(void)
|
void __pthread_initialize(void)
|
||||||
|
|
Loading…
Reference in a new issue