* elf/dl-open.c (dl_open_worker): Only bump the generation counter
	if this is really necessary.
This commit is contained in:
Ulrich Drepper 2002-02-13 09:44:17 +00:00
parent a04586d84d
commit d552a4310c
2 changed files with 18 additions and 2 deletions

View File

@ -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.

View 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. */