+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.
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;
}
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;
}
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;
}
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;
}
/* 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;
}