https://sourceware.org/bugzilla/show_bug.cgi?id=16340
Bug ID: 16340
Summary: aarch64: offset into GOT for TLS relocation computed
inconsistently
Product: binutils
Version: 2.25 (HEAD)
Status: NEW
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: michael.hudson at linaro dot org
Created attachment 7328
--> https://sourceware.org/bugzilla/attachment.cgi?id=7328&action=edit
simple proposed fix
Hi,
I don't have a non-gigantic test case but it's possible for the offset into the
GOT used when accessing a __thread variable to be different from that written
into the relocation (modulo confusions with terminology :).
This is the code that determines the offset to patch into the code
(elfnn-aarch64.c line 3845):
value = (symbol_got_offset (input_bfd, h, r_symndx)
+ globals->root.sgot->output_section->vma
+
globals->root.sgot->output_section->output_offset);
and this is the code that determines the offset as written into the relocation
(elfnn-aarch64.c line 4248):
off = symbol_got_offset (input_bfd, h, r_symndx);
...
rela.r_offset =
globals->root.sgot->output_section->vma +
globals->root.sgot->output_offset + off;
The former is "root.sgot->output_section->output_offset", the latter is
"root.sgot->output_offset".
I'll attach a very simple patch that seems to fix the problem. A test case
would be nice, but is beyond my knowledge currently.
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-binutils