mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 03:29:47 +08:00
[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.
This commit is contained in:
@ -24,6 +24,9 @@
|
|||||||
|
|
||||||
#define TCB_SIZE (8)
|
#define TCB_SIZE (8)
|
||||||
|
|
||||||
|
#define align_power(addr, align) \
|
||||||
|
(((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
|
||||||
|
|
||||||
enum tls_type_e
|
enum tls_type_e
|
||||||
{
|
{
|
||||||
GOT_UNKNOWN = 0,
|
GOT_UNKNOWN = 0,
|
||||||
@ -359,7 +362,10 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
|
|||||||
|
|
||||||
bfd_put_32 (output_bfd,
|
bfd_put_32 (output_bfd,
|
||||||
sym_value - sec_vma
|
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
|
htab->sgot->contents + entry->offset
|
||||||
+ (entry->existing_entries == TLS_GOT_MOD_AND_OFF
|
+ (entry->existing_entries == TLS_GOT_MOD_AND_OFF
|
||||||
? 4 : 0));
|
? 4 : 0));
|
||||||
|
@ -1218,7 +1218,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 _SDA_BASE_ (bfd_signed_vma) (reloc_data.sdata_begin_symbol_vma)
|
||||||
#define TLS_REL (bfd_signed_vma) \
|
#define TLS_REL (bfd_signed_vma) \
|
||||||
((elf_hash_table (info))->tls_sec->output_section->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)
|
#define none (0)
|
||||||
|
|
||||||
|
@ -489,7 +489,7 @@ ARC_RELOC_HOWTO(ARC_TLS_LE_32, 75, \
|
|||||||
32, \
|
32, \
|
||||||
replace_word32, \
|
replace_word32, \
|
||||||
dont, \
|
dont, \
|
||||||
( ME ( ( ( ( S + A ) + TCB_SIZE ) - TLS_REL ) ) ))
|
( ME ( ( ( ( S + A ) + TLS_TBSS ) - TLS_REL ) ) ))
|
||||||
|
|
||||||
ARC_RELOC_HOWTO(ARC_S25W_PCREL_PLT, 76, \
|
ARC_RELOC_HOWTO(ARC_S25W_PCREL_PLT, 76, \
|
||||||
2, \
|
2, \
|
||||||
|
Reference in New Issue
Block a user