forked from Imagelibrary/binutils-gdb
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:
47
bfd/cpu-sh.c
47
bfd/cpu-sh.c
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user