* 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:
parent
762100ed56
commit
875f7f6940
6 changed files with 42 additions and 26 deletions
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
23
bfd/libbfd.c
23
bfd/libbfd.c
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue