(elf_link_input_bfd): Handle the case where a badly formatted input file results
in a reloc which has no associated global symbol
This commit is contained in:
parent
f3429a74c5
commit
8c19749adc
@ -1,3 +1,9 @@
|
||||
2005-04-27 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* elflink.c (elf_link_input_bfd): Handle the case where a badly
|
||||
formatted input file results in a reloc which has no associated
|
||||
global symbol.
|
||||
|
||||
2005-04-26 Jerome Guitton <guitton@gnat.com>
|
||||
|
||||
* bfd.m4 (BFD_NEED_DECLARATION): Restore.
|
||||
|
@ -7019,6 +7019,23 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd)
|
||||
&& finfo->sections[r_symndx] == NULL))
|
||||
{
|
||||
h = sym_hashes[r_symndx - extsymoff];
|
||||
|
||||
/* Badly formatted input files can contain relocs that
|
||||
reference non-existant symbols. Check here so that
|
||||
we do not seg fault. */
|
||||
if (h == NULL)
|
||||
{
|
||||
char buffer [32];
|
||||
|
||||
sprintf_vma (buffer, rel->r_info);
|
||||
(*_bfd_error_handler)
|
||||
(_("error: %B contains a reloc (0x%s) for section %A "
|
||||
"that references a non-existent global symbol"),
|
||||
input_bfd, o, buffer);
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
while (h->root.type == bfd_link_hash_indirect
|
||||
|| h->root.type == bfd_link_hash_warning)
|
||||
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
||||
|
Loading…
Reference in New Issue
Block a user