* sysdeps/i386/dl-machine.h (elf_machine_rel): Add to, don't clobber,

unrelocated initial value for DTPOFF32 and TPOFF32 relocs.
	Reported by Jakub Jelinek  <jakub@redhat.com>.
This commit is contained in:
Roland McGrath 2002-08-07 22:14:40 +00:00
parent 0be405c239
commit 534feaab4b
2 changed files with 9 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2002-08-07 Roland McGrath <roland@redhat.com>
* sysdeps/i386/dl-machine.h (elf_machine_rel): Add to, don't clobber,
unrelocated initial value for DTPOFF32 and TPOFF32 relocs.
Reported by Jakub Jelinek <jakub@redhat.com>.
2002-08-07 Jakub Jelinek <jakub@redhat.com>
* malloc/malloc.c (public_cALLOc): Check ELEM_SIZE != 0 before

View File

@ -393,20 +393,20 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
/* During relocation all TLS symbols are defined and used.
Therefore the offset is already correct. */
if (sym != NULL)
*reloc_addr = sym->st_value;
*reloc_addr += sym->st_value;
# endif
break;
case R_386_TLS_TPOFF32:
/* The offset is positive, backward from the thread pointer. */
# ifdef RTLD_BOOTSTRAP
*reloc_addr = map->l_tls_offset - sym->st_value;
*reloc_addr += map->l_tls_offset - sym->st_value;
# else
/* We know the offset of object the symbol is contained in.
It is a positive value which will be subtracted from the
thread pointer. To get the variable position in the TLS
block we subtract the offset from that of the TLS block. */
if (sym_map != NULL && sym != NULL)
*reloc_addr = sym_map->l_tls_offset - sym->st_value;
*reloc_addr += sym_map->l_tls_offset - sym->st_value;
# endif
break;
#endif /* use TLS */