Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 13 Feb 2002 09:44:17 +0000 (09:44 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 13 Feb 2002 09:44:17 +0000 (09:44 +0000)
* elf/dl-open.c (dl_open_worker): Only bump the generation counter
if this is really necessary.

ChangeLog
elf/dl-open.c

index bcc868f..3741e02 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2002-02-13  Ulrich Drepper  <drepper@redhat.com>
 
+       * elf/dl-open.c (dl_open_worker): Only bump the generation counter
+       if this is really necessary.
+
        * elf/dl-close.c (_dl_close): Implement freeing entries in the
        slotinfo array.
        (free_mem): Free memory for the slotinfo array if possible.
index c7acd74..6fcfcce 100644 (file)
@@ -155,6 +155,9 @@ dl_open_worker (void *a)
   const char *dst;
   int lazy;
   unsigned int i;
+#ifdef USE_TLS
+  bool any_tls;
+#endif
 
   /* Maybe we have to expand a DST.  */
   dst = strchr (file, '$');
@@ -292,6 +295,12 @@ dl_open_worker (void *a)
       l = l->l_prev;
     }
 
+#ifdef USE_TLS
+  /* We normally don't bump the TLS generation counter.  There must be
+     actually a need to do this.  */
+  any_tls = false;
+#endif
+
   /* Increment the open count for all dependencies.  If the file is
      not loaded as a dependency here add the search list of the newly
      loaded object to the scope.  */
@@ -415,10 +424,14 @@ dl_open_worker (void *a)
        /* Add the information into the slotinfo data structure.  */
        listp->slotinfo[idx].map = new->l_searchlist.r_list[i];
        listp->slotinfo[idx].gen = GL(dl_tls_generation) + 1;
+
+       /* We have to bump the generation counter.  */
+       any_tls = true;
       }
 
-  /* Bump the generation number.  */
-  ++GL(dl_tls_generation);
+  /* Bump the generation number if necessary.  */
+  if (any_tls)
+    ++GL(dl_tls_generation);
 #endif
 
   /* Run the initializer functions of new objects.  */