Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 25 Aug 2000 16:48:42 +0000 (16:48 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 25 Aug 2000 16:48:42 +0000 (16:48 +0000)
* elf/dl-close.c (_dl_close): Don't run destructors of objects
marked DF_1_NODELETE.

ChangeLog
elf/dl-close.c
linuxthreads/ChangeLog
linuxthreads/pthread.c

index 3cbcca9..b63e3d2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
 
index cbbb2ae..58a84b5 100644 (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)
        {
index 36e0de4..7b3e50e 100644 (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.
index 646a004..628b0ce 100644 (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;