+2016-04-05 Cupertino Miranda <cmiranda@synopsys.com>
+
+ * elf32-arc.c (name_for_global_symbol): Added assert to check for
+ symbol index.
+ (elf_arc_relocate_section): Added and changed asserts, validating
+ the synamic symbol index.
+ (elf_arc_finish_dynamic_symbol): Do not fill the dynamic
+ relocation if symbol has dynindx set to -1.
+
2016-04-05 Maciej W. Rozycki <macro@imgtec.com>
* elflink.c (elf_link_add_object_symbols): Always turn hidden
_rel.r_addend = ADDEND; \
_rel.r_offset = (_htab->s##SECTION)->output_section->vma \
+ (_htab->s##SECTION)->output_offset + OFFSET; \
+ BFD_ASSERT ((long) SYM_IDX != -1); \
_rel.r_info = ELF32_R_INFO (SYM_IDX, TYPE); \
bfd_elf32_swap_reloca_out (BFD, &_rel, _loc); \
}
else if (r_type == R_ARC_PC32
|| r_type == R_ARC_32_PCREL)
{
- BFD_ASSERT (h != NULL && h->dynindx != -1);
+ BFD_ASSERT (h != NULL);
if ((input_section->flags & SEC_ALLOC) != 0)
relocate = FALSE;
else
relocate = TRUE;
+
+ BFD_ASSERT (h->dynindx != -1);
outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
}
else
relocate = FALSE;
else
relocate = TRUE;
+
+ BFD_ASSERT (h->dynindx != -1);
outrel.r_info = ELF32_R_INFO (h->dynindx, R_ARC_32);
}
}
+ htab->sgotplt->output_offset
+ got_offset);
rel.r_addend = 0;
+
+ BFD_ASSERT (h->dynindx != -1);
rel.r_info = ELF32_R_INFO (h->dynindx, R_ARC_JMP_SLOT);
loc = htab->srelplt->contents;
{
ADD_RELA (output_bfd, got, got_offset, 0, R_ARC_RELATIVE, 0);
}
- else
+ /* Do not fully understand the side effects of this condition.
+ The relocation space might still being reserved. Perhaps
+ I should clear its value. */
+ else if (h->dynindx != -1)
{
ADD_RELA (output_bfd, got, got_offset, h->dynindx,
R_ARC_GLOB_DAT, 0);
Elf_Internal_Rela rel;
rel.r_addend = 0;
rel.r_offset = rel_offset;
+
+ BFD_ASSERT (h->dynindx != -1);
rel.r_info = ELF32_R_INFO (h->dynindx, R_ARC_COPY);
bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);