* libbfd.c (_bfd_generic_verify_endian_match): New function.
authorJoern Rennecke <joern.rennecke@embecosm.com>
Thu, 3 Jun 1999 18:48:24 +0000 (18:48 +0000)
committerJoern Rennecke <joern.rennecke@embecosm.com>
Thu, 3 Jun 1999 18:48:24 +0000 (18:48 +0000)
* 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.

bfd/ChangeLog
bfd/coff-sh.c
bfd/elf32-sh.c
bfd/libbfd-in.h
bfd/libbfd.c
bfd/libbfd.h

index 1492c9d15297246c710296a63e7f5658cb43050d..478477207ce6200738e1ef534263ab8a4f599e95 100644 (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.
index e3d6eec00d939c5fbc0978d86cc7244d036490ba..8c6028d2a38f5c1358a5897fc06eb7576ed56d1f 100644 (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
index ebbe352456ebbb0bb20752b3a9be04dd8a43b8df..aa9bc0068928b27a034486783e3f38c1761db6e2 100644 (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
index 057bba22c1df8d7a543108c2bc8a7a5177238765..dd6b72c6c86d3f07115dadb9dd5e2efb0729f343 100644 (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 *));
 \f
 /* Macros to tell if bfds are read or write enabled.
 
index 8abd1f58f1cb1bef428c896e93902c24e11f2d60..8da3de0a0e4b8b2780540b1024ee529793aba2b4 100644 (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;
+}
index e395f726af59c6c3e9d045c9a854da0dbbe6ace5..c2f0a1558c60f260f575fff33223f356b8e4aa84 100644 (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 *));
 \f
 /* Macros to tell if bfds are read or write enabled.