cache_ptr->howto = &elf32_i386_vtinherit_howto;
else if (type == R_386_GNU_VTENTRY)
cache_ptr->howto = &elf32_i386_vtentry_howto;
+ else if (type < R_386_max
+ && (type < FIRST_INVALID_RELOC || type > LAST_INVALID_RELOC))
+ cache_ptr->howto = &elf_howto_table[(int) type];
else
{
- BFD_ASSERT (type < R_386_max);
- BFD_ASSERT (type < FIRST_INVALID_RELOC || type > LAST_INVALID_RELOC);
- cache_ptr->howto = &elf_howto_table[(int) type];
+ (*_bfd_error_handler) (_("%s: invalid relocation type %d"),
+ bfd_get_filename (abfd), (int) type);
+ cache_ptr->howto = &elf_howto_table[(int) R_386_NONE];
}
}
{
if (! ((*info->callbacks->undefined_symbol)
(info, h->root.root.string, input_bfd,
- input_section, rel->r_offset)))
+ input_section, rel->r_offset,
+ (!info->shared || info->no_undefined))))
return false;
relocation = 0;
}