Add support for non-ELF targets to check their relocs.

bfd	* aout-adobe.c: Use _bfd_generic_link_check_relocs.
	* aout-target.h: Likewise.
	* aout-tic30.c: Likewise.
	* binary.c: Likewise.
	* bout.c: Likewise.
	* coff-alpha.c: Likewise.
	* coff-rs6000.c: Likewise.
	* coff64-rs6000.c: Likewise.
	* coffcode.h: Likewise.
	* i386msdos.c: Likewise.
	* i386os9k.c: Likewise.
	* ieee.c: Likewise.
	* ihex.c: Likewise.
	* libbfd-in.h: Likewise.
	* libecoff.h: Likewise.
	* mach-o-target.c: Likewise.
	* mmo.c: Likewise.
	* nlm-target.h: Likewise.
	* oasys.c: Likewise.
	* pef.c: Likewise.
	* plugin.c: Likewise.
	* ppcboot.c: Likewise.
	* som.c: Likewise.
	* srec.c: Likewise.
	* tekhex.c: Likewise.
	* versados.c: Likewise.
	* vms-alpha.c: Likewise.
	* xsym.c: Likewise.
	* elfxx-target.h: Use _bfd_elf_link_check_relocs.
	* linker.c (bfd_link_check_relocs): New function.
	(_bfd_generic_link_check_relocs): New function.
	* targets.c (BFD_JUMP_TABLE_LINK): Add initialization of
	_bfd_link_check_relocs field.
	(struct bfd_target)L Add _bfd_link_check_relocs field.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.

ld	* ldlang.c (lang_check_relocs): Use bfd_link_check_relocs in
	prefernce to _bfd_elf_link_check_relocs.  Drop test for ELF
	targets.  Do not stop the checks when problems are encountered.

include	* bfdlink.h: Add prototype for bfd_link_check_relocs.
This commit is contained in:
Nick Clifton 2016-04-21 15:43:00 +01:00
parent 71829b1a3f
commit 4f3b23b390
38 changed files with 164 additions and 13 deletions

View file

@ -3304,3 +3304,46 @@ bfd_hide_sym_by_version (struct bfd_elf_version_tree *verdefs,
bfd_find_version_for_sym (verdefs, sym_name, &hidden);
return hidden;
}
/*
FUNCTION
bfd_link_check_relocs
SYNOPSIS
bfd_boolean bfd_link_check_relocs
(bfd *abfd, struct bfd_link_info *info);
DESCRIPTION
Checks the relocs in ABFD for validity.
Does not execute the relocs.
Return TRUE if everything is OK, FALSE otherwise.
This is the external entry point to this code.
*/
bfd_boolean
bfd_link_check_relocs (bfd *abfd, struct bfd_link_info *info)
{
return BFD_SEND (abfd, _bfd_link_check_relocs, (abfd, info));
}
/*
FUNCTION
_bfd_generic_link_check_relocs
SYNOPSIS
bfd_boolean _bfd_generic_link_check_relocs
(bfd *abfd, struct bfd_link_info *info);
DESCRIPTION
Stub function for targets that do not implement reloc checking.
Return TRUE.
This is an internal function. It should not be called from
outside the BFD library.
*/
bfd_boolean
_bfd_generic_link_check_relocs (bfd *abfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info ATTRIBUTE_UNUSED)
{
return TRUE;
}