* elfxx-mips.c (mips16_stub_symndx): Handle n64 compound relocs.
(_bfd_mips_elf_check_relocs): Update accordingly.
This commit is contained in:
parent
c0d4d1c0f8
commit
cb4437b891
2 changed files with 13 additions and 5 deletions
|
@ -1,3 +1,8 @@
|
|||
2012-04-16 Maciej W. Rozycki <macro@linux-mips.org>
|
||||
|
||||
* elfxx-mips.c (mips16_stub_symndx): Handle n64 compound relocs.
|
||||
(_bfd_mips_elf_check_relocs): Update accordingly.
|
||||
|
||||
2012-04-13 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR ld/13947
|
||||
|
|
|
@ -1460,14 +1460,17 @@ section_allows_mips16_refs_p (asection *section)
|
|||
function, or 0 if we can't decide which function that is. */
|
||||
|
||||
static unsigned long
|
||||
mips16_stub_symndx (asection *sec ATTRIBUTE_UNUSED,
|
||||
mips16_stub_symndx (const struct elf_backend_data *bed,
|
||||
asection *sec ATTRIBUTE_UNUSED,
|
||||
const Elf_Internal_Rela *relocs,
|
||||
const Elf_Internal_Rela *relend)
|
||||
{
|
||||
int int_rels_per_ext_rel = bed->s->int_rels_per_ext_rel;
|
||||
const Elf_Internal_Rela *rel;
|
||||
|
||||
/* Trust the first R_MIPS_NONE relocation, if any. */
|
||||
for (rel = relocs; rel < relend; rel++)
|
||||
/* Trust the first R_MIPS_NONE relocation, if any, but not a subsequent
|
||||
one in a compound relocation. */
|
||||
for (rel = relocs; rel < relend; rel += int_rels_per_ext_rel)
|
||||
if (ELF_R_TYPE (sec->owner, rel->r_info) == R_MIPS_NONE)
|
||||
return ELF_R_SYM (sec->owner, rel->r_info);
|
||||
|
||||
|
@ -7569,7 +7572,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
|||
/* Look at the relocation information to figure out which symbol
|
||||
this is for. */
|
||||
|
||||
r_symndx = mips16_stub_symndx (sec, relocs, rel_end);
|
||||
r_symndx = mips16_stub_symndx (bed, sec, relocs, rel_end);
|
||||
if (r_symndx == 0)
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
|
@ -7694,7 +7697,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
|||
/* Look at the relocation information to figure out which symbol
|
||||
this is for. */
|
||||
|
||||
r_symndx = mips16_stub_symndx (sec, relocs, rel_end);
|
||||
r_symndx = mips16_stub_symndx (bed, sec, relocs, rel_end);
|
||||
if (r_symndx == 0)
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
|
|
Loading…
Add table
Reference in a new issue