Dynamic TLS GOT entries would not be relocated.
Forgot to set should_relocate to TRUE in case of GOT and TLS relocations of undefined symbols for shared libraries. In dynamic libraries if symbol is not known the instruction relocation would not be resolved to point to the respective .got entry. A test was created to detect similar future mistakes. bfd/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> * elf32-arc.c (elf_arc_relocate_section): Changed. Set should_relocate to TRUE for GOT and TLS relocs. ld/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> * ld/testsuite/ld-arc/tls_gd-01.s: Added a testcase for this patch. * ld/testsuite/ld-arc/tls_gd-01.d: Likewise.
This commit is contained in:
parent
65b94e9097
commit
980aa3e6df
5 changed files with 32 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2016-08-26 Cupertino Miranda <cmiranda@synopsys.com>
|
||||||
|
|
||||||
|
* elf32-arc.c (elf_arc_relocate_section): Changed. Set should_relocate
|
||||||
|
to TRUE for GOT and TLS relocs.
|
||||||
|
|
||||||
2016-08-26 Cupertino Miranda <cmiranda@synospsys.com>
|
2016-08-26 Cupertino Miranda <cmiranda@synospsys.com>
|
||||||
|
|
||||||
* elf32-arc.c (elf_arc_finish_dynamic_sections): Changed.
|
* elf32-arc.c (elf_arc_finish_dynamic_sections): Changed.
|
||||||
|
|
|
@ -1374,6 +1374,8 @@ elf_arc_relocate_section (bfd * output_bfd,
|
||||||
if ((is_reloc_for_GOT (howto)
|
if ((is_reloc_for_GOT (howto)
|
||||||
|| is_reloc_for_TLS (howto)))
|
|| is_reloc_for_TLS (howto)))
|
||||||
{
|
{
|
||||||
|
reloc_data.should_relocate = TRUE;
|
||||||
|
|
||||||
struct got_entry **list
|
struct got_entry **list
|
||||||
= get_got_entry_list_for_symbol (output_bfd, r_symndx, h);
|
= get_got_entry_list_for_symbol (output_bfd, r_symndx, h);
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-08-26 Cupertino Miranda <cmiranda@synopsys.com>
|
||||||
|
|
||||||
|
* ld/testsuite/ld-arc/tls_gd-01.s: Added a testcase for this patch.
|
||||||
|
* ld/testsuite/ld-arc/tls_gd-01.d: Likewise.
|
||||||
|
|
||||||
2016-08-26 Cupertino Miranda <cmiranda@synopsys.com>
|
2016-08-26 Cupertino Miranda <cmiranda@synopsys.com>
|
||||||
|
|
||||||
* testsuite/ld-arc/tls_ie-01.s: Added to verify associated fix.
|
* testsuite/ld-arc/tls_ie-01.s: Added to verify associated fix.
|
||||||
|
|
13
ld/testsuite/ld-arc/tls_gd-01.d
Normal file
13
ld/testsuite/ld-arc/tls_gd-01.d
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#source: tls_gd-01.s
|
||||||
|
#as: -mcpu=arc700
|
||||||
|
#ld: -shared
|
||||||
|
#objdump: -d
|
||||||
|
|
||||||
|
[^:]+: file format elf32-littlearc
|
||||||
|
|
||||||
|
|
||||||
|
Disassembly of section \.text:
|
||||||
|
|
||||||
|
[0-9a-f]+ <__start>:
|
||||||
|
[0-9a-f]+: 2700 7f80 0000 2080 add r0,pcl,0x2080
|
||||||
|
[0-9a-f]+: 2700 7f80 0000 2080 add r0,pcl,0x2080
|
7
ld/testsuite/ld-arc/tls_gd-01.s
Normal file
7
ld/testsuite/ld-arc/tls_gd-01.s
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
.text
|
||||||
|
.align 4
|
||||||
|
|
||||||
|
.global __start
|
||||||
|
__start:
|
||||||
|
add r0, pcl, @baz@tlsgd
|
||||||
|
add r0, pcl, @bar@tlsgd
|
Loading…
Reference in a new issue