diff options
author | Jakub Jelinek <jakub@redhat.com> | 2002-08-08 21:38:27 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2002-08-08 21:38:27 +0000 |
commit | c366c25e10407f3fe6bc2fc73927fe993ee979e8 (patch) | |
tree | 5eaf8c4df70e854bf69396e4af127a3bda01b8c2 /bfd | |
parent | b2dd631140b8d3ada533b546dbeaed2ab3825e82 (diff) | |
download | fsf-binutils-gdb-c366c25e10407f3fe6bc2fc73927fe993ee979e8.zip fsf-binutils-gdb-c366c25e10407f3fe6bc2fc73927fe993ee979e8.tar.gz fsf-binutils-gdb-c366c25e10407f3fe6bc2fc73927fe993ee979e8.tar.bz2 |
* elf32-i386.c (elf_i386_relocate_section): Fill in proper addend
for R_386_TLS_TPOFF32 relocs against symndx 0.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf32-i386.c | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 40a824e..f597f9c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2002-08-08 Jakub Jelinek <jakub@redhat.com> + + * elf32-i386.c (elf_i386_relocate_section): Fill in proper addend + for R_386_TLS_TPOFF32 relocs against symndx 0. + 2002-08-07 H.J. Lu <hjl@gnu.org> * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Check symbol diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 997bf37..5c0d5a1 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -2567,13 +2567,17 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, outrel.r_offset = (htab->sgot->output_section->vma + htab->sgot->output_offset + off); - bfd_put_32 (output_bfd, 0, - htab->sgot->contents + off); indx = h && h->dynindx != -1 ? h->dynindx : 0; if (r_type == R_386_TLS_GD) dr_type = R_386_TLS_DTPMOD32; else dr_type = R_386_TLS_TPOFF32; + if (dr_type == R_386_TLS_TPOFF32 && indx == 0) + bfd_put_32 (output_bfd, relocation - dtpoff_base (info), + htab->sgot->contents + off); + else + bfd_put_32 (output_bfd, 0, + htab->sgot->contents + off); outrel.r_info = ELF32_R_INFO (indx, dr_type); loc = (Elf32_External_Rel *) htab->srelgot->contents; loc += htab->srelgot->reloc_count++; |