{
char *ptr = (char *) base;
int i, j;
- char *tmp = alloca (size);
+ char *tmp = xmalloc (size);
/* If i is less than j, i is inserted before j.
memmove (ptr + (j + 1) * size, ptr + j * size, (i - j) * size);
memcpy (ptr + j * size, tmp, size);
}
+ free (tmp);
}
/* Sort relocation by r_offset.
break;
case DT_PLTGOT:
- /* name = ".got"; */
- s = htab->sgot->output_section;
+ s = htab->sgotplt;
goto get_vma;
case DT_JMPREL:
- s = htab->srelplt->output_section;
+ s = htab->srelplt;
get_vma:
- BFD_ASSERT (s != NULL);
- dyn.d_un.d_ptr = s->vma;
+ dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
break;
case DT_PLTRELSZ:
- s = htab->srelplt->output_section;
- BFD_ASSERT (s != NULL);
+ s = htab->srelplt;
dyn.d_un.d_val = s->size;
bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
break;
about changing the DT_RELA entry. */
if (htab->srelplt != NULL)
{
- s = htab->srelplt->output_section;
+ s = htab->srelplt;
dyn.d_un.d_val -= s->size;
}
bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
Elf_Internal_Rela *tmp_rel;
/* Pad to alignment boundary. Only handle current section alignment. */
- sec_size_align = (sec->size + (~((-1) << sec->alignment_power)))
- & ((-1) << sec->alignment_power);
+ sec_size_align = (sec->size + (~((-1U) << sec->alignment_power)))
+ & ((-1U) << sec->alignment_power);
if ((sec_size_align - sec->size) & 0x2)
{
insn16 = NDS32_NOP16;