* sysdeps/generic/dl-tls.c (__tls_get_addr): After freeing block in

now-unused dtv slot, reset the slot to TLS_DTV_UNALLOCATED.

	* elf/tls-macros.h [__x86_64__] (TLS_GD): Fix the sequence with the
	proper set of no-op insn prefixes.

	* elf/tst-tls8.c (do_test): Use %zd format for l_tls_modid members.
This commit is contained in:
Roland McGrath 2002-10-11 09:18:04 +00:00
parent cfd8a63a1d
commit 2a4f7d66b9
3 changed files with 18 additions and 5 deletions

View file

@ -1,3 +1,13 @@
2002-10-11 Roland McGrath <roland@redhat.com>
* sysdeps/generic/dl-tls.c (__tls_get_addr): After freeing block in
now-unused dtv slot, reset the slot to TLS_DTV_UNALLOCATED.
* elf/tls-macros.h [__x86_64__] (TLS_GD): Fix the sequence with the
proper set of no-op insn prefixes.
* elf/tst-tls8.c (do_test): Use %zd format for l_tls_modid members.
2002-10-11 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/pselect.c: Avoid unnecessary sigprocmask calls.

View file

@ -39,7 +39,7 @@ do_test (void)
modid1 = ((struct link_map *) h1)->l_tls_modid;
else if (((struct link_map *) h1)->l_tls_modid != modid1)
{
printf ("round %d: modid now %d, initially %d\n",
printf ("round %d: modid now %zd, initially %d\n",
i, ((struct link_map *) h1)->l_tls_modid, modid1);
result = 1;
}
@ -69,7 +69,7 @@ do_test (void)
modid2 = ((struct link_map *) h1)->l_tls_modid;
else if (((struct link_map *) h1)->l_tls_modid != modid2)
{
printf ("round %d: modid now %d, initially %d\n",
printf ("round %d: modid now %zd, initially %d\n",
i, ((struct link_map *) h1)->l_tls_modid, modid2);
result = 1;
}
@ -108,7 +108,7 @@ do_test (void)
time. The value of the first round is used. */
if (((struct link_map *) h1)->l_tls_modid != modid1)
{
printf ("round %d: modid now %d, initially %d\n",
printf ("round %d: modid now %zd, initially %d\n",
i, ((struct link_map *) h1)->l_tls_modid, modid1);
result = 1;
}
@ -136,7 +136,7 @@ do_test (void)
time. The value of the first round is used. */
if (((struct link_map *) h1)->l_tls_modid != modid2)
{
printf ("round %d: modid now %d, initially %d\n",
printf ("round %d: modid now %zd, initially %d\n",
i, ((struct link_map *) h1)->l_tls_modid, modid2);
result = 1;
}

View file

@ -500,7 +500,10 @@ __tls_get_addr (GET_ADDR_ARGS)
/* If this modid was used at some point the memory
might still be allocated. */
if (dtv[total + cnt].pointer != TLS_DTV_UNALLOCATED)
free (dtv[total + cnt].pointer);
{
free (dtv[total + cnt].pointer);
dtv[total + cnt].pointer = TLS_DTV_UNALLOCATED;
}
continue;
}