* elf/dl-close.c (_dl_close): Don't run destructors of objects
	marked DF_1_NODELETE.
This commit is contained in:
Ulrich Drepper 2000-08-25 16:48:42 +00:00
parent b7fb789d88
commit 7045878b04
4 changed files with 10 additions and 3 deletions

View File

@ -1,5 +1,8 @@
2000-08-25 Ulrich Drepper <drepper@redhat.com>
* elf/dl-close.c (_dl_close): Don't run destructors of objects
marked DF_1_NODELETE.
* sysdeps/posix/system.c (__libc_system): We cannot use vfork here
since we call sigaction in the child.

View File

@ -80,6 +80,7 @@ _dl_close (void *_map)
struct link_map *imap = map->l_initfini[i];
if (imap->l_opencount == 1 && imap->l_type == lt_loaded
&& (imap->l_info[DT_FINI] || imap->l_info[DT_FINI_ARRAY])
&& ! (list[i]->l_flags_1 & DF_1_NODELETE)
/* Skip any half-cooked objects that were never initialized. */
&& imap->l_init_called)
{

View File

@ -1,5 +1,7 @@
2000-08-25 Ulrich Drepper <drepper@redhat.com>
* pthread.c (pthread_exit_process): Move thread_self us inside `if'.
* sysdeps/pthread/pthread.h
(PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP): Defined.
(PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP: Defined.

View File

@ -1,3 +1,4 @@
/* Linuxthreads - a simple clone()-based implementation of Posix */
/* threads for Linux. */
/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */
@ -724,10 +725,10 @@ weak_alias (__pthread_yield, pthread_yield)
static void pthread_exit_process(int retcode, void *arg)
{
struct pthread_request request;
pthread_descr self = thread_self();
if (__builtin_expect (__pthread_manager_request, 0) >= 0) {
struct pthread_request request;
pthread_descr self = thread_self();
request.req_thread = self;
request.req_kind = REQ_PROCESS_EXIT;
request.req_args.exit.code = retcode;