* elf32-frv.c (_frvfdpic_add_dyn_reloc): Don't warn when we get

a zero symndx for which we hadn't accounted a dynamic relocation.
(_frvfdpic_add_rofixup): Likewise.
This commit is contained in:
Alexandre Oliva 2004-05-08 07:05:32 +00:00
parent f4ca1d1f22
commit 3f980e41d7
2 changed files with 21 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2004-05-08 Alexandre Oliva <aoliva@redhat.com>
* elf32-frv.c (_frvfdpic_add_dyn_reloc): Don't warn when we get
a zero symndx for which we hadn't accounted a dynamic relocation.
(_frvfdpic_add_rofixup): Likewise.
2004-05-07 Brian Ford <ford@vss.fsi.com>
DJ Delorie <dj@redhat.com>

View File

@ -939,8 +939,18 @@ _frvfdpic_add_dyn_reloc (bfd *output_bfd, asection *sreloc, bfd_vma offset,
sreloc->contents + reloc_offset);
sreloc->reloc_count++;
BFD_ASSERT (entry->dynrelocs > 0);
entry->dynrelocs--;
/* If the entry's index is zero, this relocation was probably to a
linkonce section that got discarded. We reserved a dynamic
relocation, but it was for another entry than the one we got at
the time of emitting the relocation. Unfortunately there's no
simple way for us to catch this situation, since the relocation
is cleared right before calling relocate_section, at which point
we no longer know what the relocation used to point to. */
if (entry->symndx)
{
BFD_ASSERT (entry->dynrelocs > 0);
entry->dynrelocs--;
}
return reloc_offset;
}
@ -964,8 +974,10 @@ _frvfdpic_add_rofixup (bfd *output_bfd, asection *rofixup, bfd_vma offset,
}
rofixup->reloc_count++;
if (entry)
if (entry && entry->symndx)
{
/* See discussion about symndx == 0 in _frvfdpic_add_dyn_reloc
above. */
BFD_ASSERT (entry->fixups > 0);
entry->fixups--;
}