From: Cupertino Miranda Date: Wed, 1 Aug 2018 16:22:07 +0000 (+0100) Subject: [ARC] Fixes TLS failures related to tls-align. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b6aef10de46ead5f6028f2f2fa7d4aa275da025e;p=thirdparty%2Fbinutils-gdb.git [ARC] Fixes TLS failures related to tls-align. This patch fixes glibc testcase in nptl/tls-align. bfd/ 2018-08-01 Cupertino Miranda * 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 * arc-reloc.def (ARC_TLS_LE_32): Updated reloc formula. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 14e4107326c..b26e53135cb 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +2018-11-15 Claudiu Zissulescu + + Backport from mainline + 2018-08-01 Cupertino Miranda + * 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 Backport from mainline diff --git a/bfd/arc-got.h b/bfd/arc-got.h index 81ce88fe21a..e32d9b30e31 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 052765ebdb8..d11b773adc5 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 7decb4fd7b8..e0b82bc3386 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,9 @@ +2018-11-15 Claudiu Zissulescu + + Backport from mainline + 2018-08-01 Cupertino Miranda + * arc-reloc.def (ARC_TLS_LE_32): Updated reloc formula. + 2018-07-18 Nick Clifton 2.31.1 Release point. diff --git a/include/elf/arc-reloc.def b/include/elf/arc-reloc.def index a6db724da94..e1c69c9d70c 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, \