bfd_merge_private_bfd_data tidy

bfd_merge_private_bfd_data and _bfd_generic_verify_endian_match are
linker functions, so move them to linker.c.

bfd/
	* Makefile.am (LIBBFD_H_FILES): Update.
	* doc/Makefile.am (LIBBFD_H_DEP): Likewise.
	* cpu-sh.c (sh_merge_bfd_arch): Move to..
	* elf32-sh.c: ..here, and make static.
	* elf32-arc.c (arc_elf_merge_private_bfd_data): Delete extraneous
	error.
	* elf32-cris.c (cris_elf_merge_private_bfd_data): Don't call
	_bfd_generic_verify_endian_match.
	* elf32-microblaze.c (microblaze_elf_merge_private_bfd_data): Delete.
	(bfd_elf32_bfd_merge_private_bfd_data): Define as
	_bfd_generic_verify_endian_match.
	* elf32-mt.c (mt_elf_merge_private_bfd_data): Don't test
	boolean == FALSE.
	* elf32-xgate.c (_bfd_xgate_elf_merge_private_bfd_data): Delete.
	(bfd_elf32_bfd_merge_private_bfd_data): Don't define.
	* elf32-xgate.h (_bfd_xgate_elf_merge_private_bfd_data): Delete.
	* libbfd-in.h (_bfd_generic_verify_endian_match): Delete.
	* libbfd.c (_bfd_generic_verify_endian_match): Move to..
	* linker.c: ..here, and make internal.
	* bfd.c (bfd_merge_private_bfd_data): Move to..
	* linker.c: ..here.
	* Makefile.in: Regenerate.
	* doc/Makefile.in: Regenerate.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.
opcodes/
	* sh-opc.h (sh_merge_bfd_arch): Delete prototype.
This commit is contained in:
Alan Modra
2016-10-07 10:58:35 +10:30
parent b62b1f7143
commit 1047201fd0
21 changed files with 159 additions and 163 deletions

View File

@@ -496,50 +496,3 @@ sh_get_bfd_mach_from_arch_set (unsigned int arch_set)
return result;
}
/* Merge the architecture type of two BFD files, such that the
resultant architecture supports all the features required
by the two input BFDs.
If the input BFDs are multually incompatible - i.e. one uses
DSP while the other uses FPU - or there is no known architecture
that fits the requirements then an error is emitted. */
bfd_boolean
sh_merge_bfd_arch (bfd *ibfd, bfd *obfd)
{
unsigned int old_arch, new_arch, merged_arch;
if (! _bfd_generic_verify_endian_match (ibfd, obfd))
return FALSE;
old_arch = sh_get_arch_up_from_bfd_mach (bfd_get_mach (obfd));
new_arch = sh_get_arch_up_from_bfd_mach (bfd_get_mach (ibfd));
merged_arch = SH_MERGE_ARCH_SET (old_arch, new_arch);
if (!SH_VALID_CO_ARCH_SET (merged_arch))
{
_bfd_error_handler
("%B: uses %s instructions while previous modules use %s instructions",
ibfd,
SH_ARCH_SET_HAS_DSP (new_arch) ? "dsp" : "floating point",
SH_ARCH_SET_HAS_DSP (new_arch) ? "floating point" : "dsp");
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
else if (!SH_VALID_ARCH_SET (merged_arch))
{
_bfd_error_handler
("internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture\n",
bfd_printable_name (obfd),
bfd_printable_name (ibfd));
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
bfd_default_set_arch_mach (obfd, bfd_arch_sh,
sh_get_bfd_mach_from_arch_set (merged_arch));
return TRUE;
}