aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/arc-got.h7
-rw-r--r--bfd/elf32-arc.c1
-rw-r--r--ld/ChangeLog4
-rw-r--r--ld/testsuite/ld-arc/tls_ie-01.d4
5 files changed, 18 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 9ee1bf4..7fb198a 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,11 @@
2017-06-08 Cupertino Miranda <cmiranda@synopsys.com>
+ * arc-got.h (relocate_fix_got_relocs_for_got_info): Added TCB_SIZE to
+ patched section contents for TLS IE reloc.
+ * elf32-arc.c: Remove TCB_SIZE preprocessor macro.
+
+2017-06-08 Cupertino Miranda <cmiranda@synopsys.com>
+
* elf32-arc.c (elf_arc_relocate_section): Added "call" to
RELOC_FOR_GLOBAL_SYMBOL macro.
diff --git a/bfd/arc-got.h b/bfd/arc-got.h
index b8a6d15..f1f6c0e 100644
--- a/bfd/arc-got.h
+++ b/bfd/arc-got.h
@@ -22,6 +22,8 @@
#ifndef ARC_GOT_H
#define ARC_GOT_H
+#define TCB_SIZE (8)
+
enum tls_type_e
{
GOT_UNKNOWN = 0,
@@ -354,7 +356,8 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
= tls_sec->output_section->vma;
bfd_put_32 (output_bfd,
- sym_value - sec_vma,
+ sym_value - sec_vma
+ + (elf_hash_table (info)->dynamic_sections_created ? 0 : TCB_SIZE),
htab->sgot->contents + entry->offset
+ (entry->existing_entries == TLS_GOT_MOD_AND_OFF
? 4 : 0));
@@ -478,8 +481,10 @@ GOT_OFFSET = %#lx, GOT_VMA = %#lx, INDEX = %ld, ADDEND = 0x0\n",
{
bfd_vma addend = 0;
if (list->type == GOT_TLS_IE)
+ {
addend = bfd_get_32 (output_bfd,
htab->sgot->contents + got_offset);
+ }
ADD_RELA (output_bfd, got,
got_offset + (e == TLS_GOT_MOD_AND_OFF ? 4 : 0),
diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index f424f13..c1286b2 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -1187,7 +1187,6 @@ arc_special_overflow_checks (const struct arc_relocation_data reloc_data,
#define TLS_REL (bfd_signed_vma) \
((elf_hash_table (info))->tls_sec->output_section->vma)
#define TLS_TBSS (8)
-#define TCB_SIZE (8)
#define none (0)
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 9dd4256..2cbe09d 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2017-06-08 Cupertino Miranda <cmiranda@synopsys.com>
+
+ * testsuite/ld-arc/tls_ie-01.d: Changed expected result.
+
2017-06-08 H.J. Lu <hongjiu.lu@intel.com>
* testsuite/ld-ifunc/ifunc-1-local-x86.d: Pass
diff --git a/ld/testsuite/ld-arc/tls_ie-01.d b/ld/testsuite/ld-arc/tls_ie-01.d
index 304973c..62b3932 100644
--- a/ld/testsuite/ld-arc/tls_ie-01.d
+++ b/ld/testsuite/ld-arc/tls_ie-01.d
@@ -1,10 +1,10 @@
#source: tls_ie-01.s
#as: -mcpu=arc700
-#ld:
+#ld: -static
#objdump: -s -j .got
#xfail: arc*-*-elf*
[^:]+: file format elf32-littlearc
Contents of section \.got:
- [0-9a-f]+ 00000000 04000000 .+
+ [0-9a-f]+ 08000000 0c000000 +.+