This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Dynamic TLS GOT entries would not be relocated.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=980aa3e6dfeb0f018915f65be4b2987667f31fe9

commit 980aa3e6dfeb0f018915f65be4b2987667f31fe9
Author: Cupertino Miranda <cmiranda@synopsys.com>
Date:   Thu Jul 21 15:32:35 2016 +0200

    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.

Diff:
---
 bfd/ChangeLog                   |  5 +++++
 bfd/elf32-arc.c                 |  2 ++
 ld/ChangeLog                    |  5 +++++
 ld/testsuite/ld-arc/tls_gd-01.d | 13 +++++++++++++
 ld/testsuite/ld-arc/tls_gd-01.s |  7 +++++++
 5 files changed, 32 insertions(+)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 169b8b5..3d4dc40 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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>
 
 	* elf32-arc.c (elf_arc_finish_dynamic_sections): Changed.
diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index 5ba170e..b726dab 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -1374,6 +1374,8 @@ elf_arc_relocate_section (bfd *		          output_bfd,
       if ((is_reloc_for_GOT (howto)
 	   || is_reloc_for_TLS (howto)))
 	{
+	  reloc_data.should_relocate = TRUE;
+
 	  struct got_entry **list
 	    = get_got_entry_list_for_symbol (output_bfd, r_symndx, h);
 
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 76c2863..bf186c5 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,10 @@
 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>
+
 	* testsuite/ld-arc/tls_ie-01.s: Added to verify associated fix.
 	* testsuite/ld-arc/tls_ie-01.d: Likewise
 
diff --git a/ld/testsuite/ld-arc/tls_gd-01.d b/ld/testsuite/ld-arc/tls_gd-01.d
new file mode 100644
index 0000000..f7027af
--- /dev/null
+++ b/ld/testsuite/ld-arc/tls_gd-01.d
@@ -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
diff --git a/ld/testsuite/ld-arc/tls_gd-01.s b/ld/testsuite/ld-arc/tls_gd-01.s
new file mode 100644
index 0000000..5fbfc54
--- /dev/null
+++ b/ld/testsuite/ld-arc/tls_gd-01.s
@@ -0,0 +1,7 @@
+	.text
+	.align 4
+
+        .global __start
+__start:
+	add r0, pcl, @baz@tlsgd
+	add r0, pcl, @bar@tlsgd


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]