Content for TLS_IE_GOT not written to .got.
When no dynamic relocation was generated the .got content would not be updated for the TLS_IE_GOT relocation addresses. bfd/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> * arc-got.h (relocate_fix_got_relocs_for_got_info): Fixed addresses in debug comments. Fixed address in .got related to TLS_IE_GOT dynamic relocation. ld/ChangeLog: Cupertino Miranda <cmiranda@synopsys.com> * testsuite/ld-arc/tls_ie-01.s: Added to verify associated fix. * testsuite/ld-arc/tls_ie-01.d: Likewise
This commit is contained in:
parent
a87aa054a6
commit
4dd72ffdfe
5 changed files with 47 additions and 7 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2016-08-26 Cupertino Miranda <cmiranda@synopsys.com>
|
||||||
|
|
||||||
|
* arc-got.h (relocate_fix_got_relocs_for_got_info): Fixed addresses in
|
||||||
|
debug comments. Fixed address in .got related to TLS_IE_GOT dynamic
|
||||||
|
relocation.
|
||||||
|
|
||||||
2016-08-26 Cupertino Miranda <cmiranda@synopsys.com>
|
2016-08-26 Cupertino Miranda <cmiranda@synopsys.com>
|
||||||
|
|
||||||
* reloc.c: Fixed type in ARC_SECTOFF relocations. Added ARC_SDA_12
|
* reloc.c: Fixed type in ARC_SECTOFF relocations. Added ARC_SDA_12
|
||||||
|
|
|
@ -334,13 +334,15 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
|
||||||
? 4 : 0));
|
? 4 : 0));
|
||||||
|
|
||||||
ARC_DEBUG ("arc_info: FIXED -> %s value = %#lx "
|
ARC_DEBUG ("arc_info: FIXED -> %s value = %#lx "
|
||||||
"@ %p, for symbol %s\n",
|
"@ %lx, for symbol %s\n",
|
||||||
(entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
|
(entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
|
||||||
"GOT_TLS_IE"),
|
"GOT_TLS_IE"),
|
||||||
(long) (sym_value - sec_vma),
|
(long) (sym_value - sec_vma),
|
||||||
htab->sgot->contents + entry->offset
|
(long) (htab->sgot->output_section->vma
|
||||||
|
+ htab->sgot->output_offset->vma
|
||||||
|
+ entry->offset
|
||||||
+ (entry->existing_entries == TLS_GOT_MOD_AND_OFF
|
+ (entry->existing_entries == TLS_GOT_MOD_AND_OFF
|
||||||
? 4 : 0),
|
? 4 : 0)),
|
||||||
symbol_name);
|
symbol_name);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -351,14 +353,22 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
|
||||||
bfd_vma ATTRIBUTE_UNUSED sec_vma
|
bfd_vma ATTRIBUTE_UNUSED sec_vma
|
||||||
= tls_sec->output_section->vma;
|
= tls_sec->output_section->vma;
|
||||||
|
|
||||||
|
bfd_put_32 (output_bfd,
|
||||||
|
sym_value - sec_vma,
|
||||||
|
htab->sgot->contents + entry->offset
|
||||||
|
+ (entry->existing_entries == TLS_GOT_MOD_AND_OFF
|
||||||
|
? 4 : 0));
|
||||||
|
|
||||||
ARC_DEBUG ("arc_info: FIXED -> %s value = %#lx "
|
ARC_DEBUG ("arc_info: FIXED -> %s value = %#lx "
|
||||||
"@ %p, for symbol %s\n",
|
"@ %p, for symbol %s\n",
|
||||||
(entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
|
(entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
|
||||||
"GOT_TLS_IE"),
|
"GOT_TLS_IE"),
|
||||||
(long) (sym_value - sec_vma),
|
(long) (sym_value - sec_vma),
|
||||||
htab->sgot->contents + entry->offset
|
(long) (htab->sgot->output_section->vma
|
||||||
|
+ htab->sgot->output_offset->vma
|
||||||
|
+ entry->offset
|
||||||
+ (entry->existing_entries == TLS_GOT_MOD_AND_OFF
|
+ (entry->existing_entries == TLS_GOT_MOD_AND_OFF
|
||||||
? 4 : 0),
|
? 4 : 0)),
|
||||||
symbol_name);
|
symbol_name);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
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.d: Likewise
|
||||||
|
|
||||||
2016-08-26 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
2016-08-26 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||||||
|
|
||||||
* emultempl/armelf.em (in_implib_filename): Declare and initialize new
|
* emultempl/armelf.em (in_implib_filename): Declare and initialize new
|
||||||
|
|
9
ld/testsuite/ld-arc/tls_ie-01.d
Normal file
9
ld/testsuite/ld-arc/tls_ie-01.d
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#source: tls_ie-01.s
|
||||||
|
#as: -mcpu=arc700
|
||||||
|
#ld:
|
||||||
|
#objdump: -s -j .got
|
||||||
|
|
||||||
|
[^:]+: file format elf32-littlearc
|
||||||
|
|
||||||
|
Contents of section \.got:
|
||||||
|
[0-9a-f]+ 00000000 04000000 .+
|
10
ld/testsuite/ld-arc/tls_ie-01.s
Normal file
10
ld/testsuite/ld-arc/tls_ie-01.s
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
.tls_common foo,4,4
|
||||||
|
.tls_common bar,4,4
|
||||||
|
|
||||||
|
.text
|
||||||
|
.align 4
|
||||||
|
|
||||||
|
.global __start
|
||||||
|
__start:
|
||||||
|
ld r14, [pcl, @foo@tlsie]
|
||||||
|
ld r15, [pcl, @bar@tlsie]
|
Loading…
Reference in a new issue