Use bfd_generic_verify_endian_match() and fix it to only check when endianness
is known.
This commit is contained in:
parent
0ab71ce35a
commit
1fe494a572
@ -1,3 +1,21 @@
|
||||
2000-05-22 Momchil Velikov <velco@fadata.bg>
|
||||
|
||||
* libbfd.c (_bfd_generic_verify_endian_match): Compare endianess
|
||||
only if it is known for both input and output bfds. Separate
|
||||
error message strings as in some languages, it may be necessary
|
||||
to change more than one place in the string to change between
|
||||
'big' and 'little'.
|
||||
|
||||
* elf32-ppc.c (ppc_elf_merge_private_bfd_data): Remove inline
|
||||
endianess checks, call _bfd_generic_verify_endian_match() instead.
|
||||
|
||||
* elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Likewise.
|
||||
|
||||
* elf32-mcore.c (mcore_elf_merge_private_bfd_data): Likewise.
|
||||
|
||||
* elf32-arm.h (elf32_arm_merge_private_bfd_data): Likewise. Verify
|
||||
endianess before checking bfd flavours.
|
||||
|
||||
2000-05-22 H.J. Lu <hjl@gnu.org>
|
||||
|
||||
* elflink.h (elf_link_output_extsym): Clear the visibility
|
||||
|
@ -2007,25 +2007,14 @@ elf32_arm_merge_private_bfd_data (ibfd, obfd)
|
||||
flagword out_flags;
|
||||
flagword in_flags;
|
||||
|
||||
/* Check if we have the same endianess */
|
||||
if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
|
||||
return false;
|
||||
|
||||
if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|
||||
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
|
||||
return true;
|
||||
|
||||
/* Check if we have the same endianess */
|
||||
if ( ibfd->xvec->byteorder != obfd->xvec->byteorder
|
||||
&& obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN
|
||||
&& ibfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
(_("%s: compiled for a %s endian system and target is %s endian"),
|
||||
bfd_get_filename (ibfd),
|
||||
bfd_big_endian (ibfd) ? "big" : "little",
|
||||
bfd_big_endian (obfd) ? "big" : "little");
|
||||
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return false;
|
||||
}
|
||||
|
||||
/* The input BFD must have had its flags initialised. */
|
||||
/* The following seems bogus to me -- The flags are initialized in
|
||||
the assembler but I don't think an elf_flags_init field is
|
||||
|
@ -322,18 +322,8 @@ mcore_elf_merge_private_bfd_data (ibfd, obfd)
|
||||
flagword new_flags;
|
||||
|
||||
/* Check if we have the same endianess */
|
||||
if ( ibfd->xvec->byteorder != obfd->xvec->byteorder
|
||||
&& obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
(_("%s: compiled for a %s endian system and target is %s endian.\n"),
|
||||
bfd_get_filename (ibfd),
|
||||
bfd_big_endian (ibfd) ? "big" : "little",
|
||||
bfd_big_endian (obfd) ? "big" : "little");
|
||||
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return false;
|
||||
}
|
||||
if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
|
||||
return false;
|
||||
|
||||
if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|
||||
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
|
||||
|
@ -2460,21 +2460,8 @@ _bfd_mips_elf_merge_private_bfd_data (ibfd, obfd)
|
||||
boolean ok;
|
||||
|
||||
/* Check if we have the same endianess */
|
||||
if (ibfd->xvec->byteorder != obfd->xvec->byteorder
|
||||
&& obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
|
||||
{
|
||||
const char *msg;
|
||||
|
||||
if (bfd_big_endian (ibfd))
|
||||
msg = _("%s: compiled for a big endian system and target is little endian");
|
||||
else
|
||||
msg = _("%s: compiled for a little endian system and target is big endian");
|
||||
|
||||
(*_bfd_error_handler) (msg, bfd_get_filename (ibfd));
|
||||
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return false;
|
||||
}
|
||||
if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
|
||||
return false;
|
||||
|
||||
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|
||||
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
|
||||
|
@ -1399,21 +1399,8 @@ ppc_elf_merge_private_bfd_data (ibfd, obfd)
|
||||
boolean error;
|
||||
|
||||
/* Check if we have the same endianess */
|
||||
if (ibfd->xvec->byteorder != obfd->xvec->byteorder
|
||||
&& obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
|
||||
{
|
||||
const char *msg;
|
||||
|
||||
if (bfd_big_endian (ibfd))
|
||||
msg = _("%s: compiled for a big endian system and target is little endian");
|
||||
else
|
||||
msg = _("%s: compiled for a little endian system and target is big endian");
|
||||
|
||||
(*_bfd_error_handler) (msg, bfd_get_filename (ibfd));
|
||||
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return false;
|
||||
}
|
||||
if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
|
||||
return false;
|
||||
|
||||
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|
||||
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
|
||||
|
14
bfd/libbfd.c
14
bfd/libbfd.c
@ -1306,13 +1306,17 @@ _bfd_generic_verify_endian_match (ibfd, obfd)
|
||||
bfd *obfd;
|
||||
{
|
||||
if (ibfd->xvec->byteorder != obfd->xvec->byteorder
|
||||
&& ibfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN
|
||||
&& obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
("%s: compiled for a %s endian system and target is %s endian",
|
||||
bfd_get_filename (ibfd),
|
||||
bfd_big_endian (ibfd) ? "big" : "little",
|
||||
bfd_big_endian (obfd) ? "big" : "little");
|
||||
const char *msg;
|
||||
|
||||
if (bfd_big_endian (ibfd))
|
||||
msg = _("%s: compiled for a big endian system and target is little endian");
|
||||
else
|
||||
msg = _("%s: compiled for a little endian system and target is big endian");
|
||||
|
||||
(*_bfd_error_handler) (msg, bfd_get_filename (ibfd));
|
||||
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user