[binutils-gdb/binutils-2_31-branch] [ARC] Fixes TLS failures related to tls-align.

Claudiu Zissulescu claziss@sourceware.org
Thu Nov 15 15:47:00 GMT 2018


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

commit b6aef10de46ead5f6028f2f2fa7d4aa275da025e
Author: Cupertino Miranda <cmiranda@synopsys.com>
Date:   Wed Aug 1 17:22:07 2018 +0100

    [ARC] Fixes TLS failures related to tls-align.
    
    This patch fixes glibc testcase in nptl/tls-align.
    
    bfd/
    2018-08-01  Cupertino Miranda <cmiranda@synopsys.com>
    
    	* arc-got.h (relocate_fix_got_relocs_for_got_info): Changed, fixed
    	    TCB_SIZE offsize to include section alignment.
    	* elf32-arc.c (arc_special_overflow_checks): Likewise.
    
    include/
    2018-08-01  Cupertino Miranda <cmiranda@synopsys.com>
    
    	* arc-reloc.def (ARC_TLS_LE_32): Updated reloc formula.

Diff:
---
 bfd/ChangeLog             | 9 +++++++++
 bfd/arc-got.h             | 8 +++++++-
 bfd/elf32-arc.c           | 3 ++-
 include/ChangeLog         | 6 ++++++
 include/elf/arc-reloc.def | 2 +-
 5 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 14e4107..b26e531 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,6 +1,15 @@
 2018-11-15  Claudiu Zissulescu  <claziss@synopsys.com>
 
 	Backport from mainline
+	2018-08-01  Cupertino Miranda <cmiranda@synopsys.com>
+	* arc-got.h (relocate_fix_got_relocs_for_got_info): Changed, fixed
+	TCB_SIZE offsize to include section alignment.
+	* elf32-arc.c (arc_special_overflow_checks): Likewise.
+
+
+2018-11-15  Claudiu Zissulescu  <claziss@synopsys.com>
+
+	Backport from mainline
 	2018-03-02  Cupertino Miranda <cmiranda@synopsys.com>
 	* elf32-arc.c (elf_arc_check_relocs): Changed.
 
diff --git a/bfd/arc-got.h b/bfd/arc-got.h
index 81ce88f..e32d9b3 100644
--- a/bfd/arc-got.h
+++ b/bfd/arc-got.h
@@ -24,6 +24,9 @@
 
 #define TCB_SIZE (8)
 
+#define	align_power(addr, align)	\
+  (((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
+
 enum tls_type_e
 {
   GOT_UNKNOWN = 0,
@@ -359,7 +362,10 @@ relocate_fix_got_relocs_for_got_info (struct got_entry **	   list_p,
 
 		bfd_put_32 (output_bfd,
 			    sym_value - sec_vma
-			    + (elf_hash_table (info)->dynamic_sections_created ? 0 : TCB_SIZE),
+			    + (elf_hash_table (info)->dynamic_sections_created
+			       ? 0
+			       : (align_power (TCB_SIZE,
+					       tls_sec->alignment_power))),
 			    htab->sgot->contents + entry->offset
 			    + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
 			       ? 4 : 0));
diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index 052765e..d11b773 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -1202,7 +1202,8 @@ arc_special_overflow_checks (const struct arc_relocation_data reloc_data,
 #define _SDA_BASE_ (bfd_signed_vma) (reloc_data.sdata_begin_symbol_vma)
 #define TLS_REL (bfd_signed_vma) \
   ((elf_hash_table (info))->tls_sec->output_section->vma)
-#define TLS_TBSS (8)
+#define TLS_TBSS (align_power(TCB_SIZE, \
+		  reloc_data.sym_section->alignment_power))
 
 #define none (0)
 
diff --git a/include/ChangeLog b/include/ChangeLog
index 7decb4f..e0b82bc 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,9 @@
+2018-11-15  Claudiu Zissulescu  <claziss@synopsys.com>
+
+	Backport from mainline
+	2018-08-01  Cupertino Miranda <cmiranda@synopsys.com>
+	* arc-reloc.def (ARC_TLS_LE_32): Updated reloc formula.
+
 2018-07-18  Nick Clifton  <nickc@redhat.com>
 
 	2.31.1 Release point.
diff --git a/include/elf/arc-reloc.def b/include/elf/arc-reloc.def
index a6db724..e1c69c9 100644
--- a/include/elf/arc-reloc.def
+++ b/include/elf/arc-reloc.def
@@ -489,7 +489,7 @@ ARC_RELOC_HOWTO(ARC_TLS_LE_32, 75, \
                 32, \
                 replace_word32, \
                 dont, \
-                ( ME ( ( ( ( S + A ) + TCB_SIZE ) - TLS_REL ) ) ))
+		( ME ( ( ( ( S + A ) + TLS_TBSS ) - TLS_REL ) ) ))
 
 ARC_RELOC_HOWTO(ARC_S25W_PCREL_PLT, 76, \
                 2, \



More information about the Binutils-cvs mailing list