mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 19:00:07 +00:00
* 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:
parent
cfd8a63a1d
commit
2a4f7d66b9
10
ChangeLog
10
ChangeLog
@ -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.
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
dtv[total + cnt].pointer = TLS_DTV_UNALLOCATED;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user