diff mbox

[Bug,16340,AARCH64] Offset into GOT for TLS relocation computed inconsistently

Message ID 52B29EF7.7040209@linaro.org
State New
Headers show

Commit Message

Kugan Vivekanandarajah Dec. 19, 2013, 7:23 a.m. UTC
Hi,

mongodb for aarch64 segfaults due to an error in applying GOT for TLS
relocation. Michael Hudson-Doyle tracked this down to wrong usage of
offset for the relocation. Attached patch (by Michael Hudson-Doyle)
fixes this. Regression tested on aarch64-none-linux-gnu with no new
regressions.

Is this OK for trunk and backport for 2.24?

Thanks,
Kugan


bfd/
+2013-12-19  Michael Hudson-Doyle  <michael.hudson@linaro.org>
+
+	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Use correct
+	offset for GOT in TLS while calculating relocation address.
+
diff mbox

Patch

diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 8f0e716..e1ab769 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -3831,7 +3831,7 @@  elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
 
       value = (symbol_got_offset (input_bfd, h, r_symndx)
 	       + globals->root.sgot->output_section->vma
-	       + globals->root.sgot->output_section->output_offset);
+	       + globals->root.sgot->output_offset);
 
       value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
 						   0, weak_undef_p);
@@ -3863,7 +3863,7 @@  elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
 
       value = (symbol_tlsdesc_got_offset (input_bfd, h, r_symndx)
 	       + globals->root.sgotplt->output_section->vma
-	       + globals->root.sgotplt->output_section->output_offset
+	       + globals->root.sgotplt->output_offset
 	       + globals->sgotplt_jump_table_size);
 
       value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,