* libbfd.c (_bfd_generic_verify_endian_match): New function.

* libbfd-in.h (_bfd_generic_verify_endian_match): Declare.
	* libbfd.h: Regenerate.
	* coff-sh.c (sh_merge_private_data): Delete.
	(coff_bfd_merge_private_bfd_data): Change to
	_bfd_generic_verify_endian_match.
	(elf32-sh.c): bfd_elf32_bfd_merge_private_bfd_data: Define.
This commit is contained in:
Joern Rennecke 1999-06-03 18:48:24 +00:00
parent 762100ed56
commit 875f7f6940
6 changed files with 42 additions and 26 deletions

View File

@ -1,3 +1,13 @@
Fri Jun 4 02:29:34 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
* libbfd.c (_bfd_generic_verify_endian_match): New function.
* libbfd-in.h (_bfd_generic_verify_endian_match): Declare.
* libbfd.h: Regenerate.
* coff-sh.c (sh_merge_private_data): Delete.
(coff_bfd_merge_private_bfd_data): Change to
_bfd_generic_verify_endian_match.
(elf32-sh.c): bfd_elf32_bfd_merge_private_bfd_data: Define.
1999-06-03 Ulrich Drepper <drepper@cygnus.com>
* elf32-arm.h: Fix typo: change ELF_MAXPAGE_SIZE to ELF_MAXPAGESIZE.

View File

@ -32,7 +32,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
static bfd_reloc_status_type sh_reloc
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static long get_symbol_value PARAMS ((asymbol *));
static boolean sh_merge_private_data PARAMS ((bfd *, bfd *));
static boolean sh_relax_section
PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *));
static boolean sh_relax_delete_bytes
@ -442,31 +441,7 @@ sh_reloc (abfd, reloc_entry, symbol_in, data, input_section, output_bfd,
return bfd_reloc_ok;
}
/* This routine checks for linking big and little endian objects
together. */
static boolean
sh_merge_private_data (ibfd, obfd)
bfd *ibfd;
bfd *obfd;
{
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",
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;
}
return true;
}
#define coff_bfd_merge_private_bfd_data sh_merge_private_data
#define coff_bfd_merge_private_bfd_data _bfd_generic_verify_endian_match
/* We can do relaxing. */
#define coff_bfd_relax_section sh_relax_section

View File

@ -2050,6 +2050,8 @@ sh_elf_check_relocs (abfd, info, sec, relocs)
#define elf_backend_relocate_section sh_elf_relocate_section
#define bfd_elf32_bfd_get_relocated_section_contents \
sh_elf_get_relocated_section_contents
#define bfd_elf32_bfd_merge_private_bfd_data \
_bfd_generic_verify_endian_match
#define elf_backend_gc_mark_hook sh_elf_gc_mark_hook
#define elf_backend_gc_sweep_hook sh_elf_gc_sweep_hook

View File

@ -479,6 +479,9 @@ extern bfd_size_type _bfd_stringtab_add
/* Write out a string table. */
extern boolean _bfd_stringtab_emit PARAMS ((bfd *, struct bfd_strtab_hash *));
/* Check that endianness of input and output file match. */
extern boolean _bfd_generic_verify_endian_match PARAMS ((bfd *, bfd *));
/* Macros to tell if bfds are read or write enabled.

View File

@ -1261,3 +1261,26 @@ bfd_generic_is_local_label_name (abfd, name)
return (name[0] == locals_prefix);
}
/* Can be used from / for bfd_merge_private_bfd_data to check that
endianness matches between input and output file. Returns
true for a match, otherwise returns false and emits an error. */
boolean
_bfd_generic_verify_endian_match (ibfd, obfd)
bfd *ibfd;
bfd *obfd;
{
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",
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;
}
return true;
}

View File

@ -479,6 +479,9 @@ extern bfd_size_type _bfd_stringtab_add
/* Write out a string table. */
extern boolean _bfd_stringtab_emit PARAMS ((bfd *, struct bfd_strtab_hash *));
/* Check that endianness of input and output file match. */
extern boolean _bfd_generic_verify_endian_match PARAMS ((bfd *, bfd *));
/* Macros to tell if bfds are read or write enabled.