{
unsigned long r_symndx;
asection *sec;
+ Elf_Internal_Sym sym;
if (next_erel == bed->s->int_rels_per_ext_rel)
{
/* This is a reloc against a local symbol. */
*rel_hash = NULL;
- isym = isymbuf + r_symndx;
+ sym = isymbuf[r_symndx];
sec = finfo->sections[r_symndx];
- if (ELF_ST_TYPE (isym->st_info) == STT_SECTION)
+ if (ELF_ST_TYPE (sym.st_info) == STT_SECTION)
{
/* I suppose the backend ought to fill in the
section of any STT_SECTION symbol against a
must output it now. */
shlink = symtab_hdr->sh_link;
name = (bfd_elf_string_from_elf_section
- (input_bfd, shlink, isym->st_name));
+ (input_bfd, shlink, sym.st_name));
if (name == NULL)
return false;
osec = sec->output_section;
- isym->st_shndx =
+ sym.st_shndx =
_bfd_elf_section_from_bfd_section (output_bfd,
osec);
- if (isym->st_shndx == SHN_BAD)
+ if (sym.st_shndx == SHN_BAD)
return false;
- isym->st_value += sec->output_offset;
+ sym.st_value += sec->output_offset;
if (! finfo->info->relocateable)
{
- isym->st_value += osec->vma;
- if (ELF_ST_TYPE (isym->st_info) == STT_TLS)
+ sym.st_value += osec->vma;
+ if (ELF_ST_TYPE (sym.st_info) == STT_TLS)
{
/* STT_TLS symbols are relative to PT_TLS
segment base. */
BFD_ASSERT (finfo->first_tls_sec != NULL);
- isym->st_value -= finfo->first_tls_sec->vma;
+ sym.st_value -= finfo->first_tls_sec->vma;
}
}
finfo->indices[r_symndx]
= bfd_get_symcount (output_bfd);
- if (! elf_link_output_sym (finfo, name, isym, sec))
+ if (! elf_link_output_sym (finfo, name, &sym, sec))
return false;
}