mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 03:10:05 +00:00
* 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:
parent
0be405c239
commit
534feaab4b
@ -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>
|
2002-08-07 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* malloc/malloc.c (public_cALLOc): Check ELEM_SIZE != 0 before
|
* malloc/malloc.c (public_cALLOc): Check ELEM_SIZE != 0 before
|
||||||
|
@ -393,20 +393,20 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
|
|||||||
/* During relocation all TLS symbols are defined and used.
|
/* During relocation all TLS symbols are defined and used.
|
||||||
Therefore the offset is already correct. */
|
Therefore the offset is already correct. */
|
||||||
if (sym != NULL)
|
if (sym != NULL)
|
||||||
*reloc_addr = sym->st_value;
|
*reloc_addr += sym->st_value;
|
||||||
# endif
|
# endif
|
||||||
break;
|
break;
|
||||||
case R_386_TLS_TPOFF32:
|
case R_386_TLS_TPOFF32:
|
||||||
/* The offset is positive, backward from the thread pointer. */
|
/* The offset is positive, backward from the thread pointer. */
|
||||||
# ifdef RTLD_BOOTSTRAP
|
# ifdef RTLD_BOOTSTRAP
|
||||||
*reloc_addr = map->l_tls_offset - sym->st_value;
|
*reloc_addr += map->l_tls_offset - sym->st_value;
|
||||||
# else
|
# else
|
||||||
/* We know the offset of object the symbol is contained in.
|
/* We know the offset of object the symbol is contained in.
|
||||||
It is a positive value which will be subtracted from the
|
It is a positive value which will be subtracted from the
|
||||||
thread pointer. To get the variable position in the TLS
|
thread pointer. To get the variable position in the TLS
|
||||||
block we subtract the offset from that of the TLS block. */
|
block we subtract the offset from that of the TLS block. */
|
||||||
if (sym_map != NULL && sym != NULL)
|
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
|
# endif
|
||||||
break;
|
break;
|
||||||
#endif /* use TLS */
|
#endif /* use TLS */
|
||||||
|
Loading…
Reference in New Issue
Block a user