* targets.c (bfd_target): Rearranged fields in target vector.
[deliverable/binutils-gdb.git] / bfd / coffcode.h
index 66e5ce5be3228d4a9d5b30f420bca688eca313cd..af015bb769470186b03bcf5d33fad69aa3eb8017 100644 (file)
@@ -1045,7 +1045,7 @@ SUBSUBSECTION
 
 */
 
-static void
+static boolean
 coff_write_relocs (abfd)
      bfd * abfd;
 {
@@ -1056,7 +1056,8 @@ coff_write_relocs (abfd)
       struct external_reloc dst;
 
       arelent **p = s->orelocation;
-      bfd_seek (abfd, s->rel_filepos, SEEK_SET);
+      if (bfd_seek (abfd, s->rel_filepos, SEEK_SET) != 0)
+       return false;
       for (i = 0; i < s->reloc_count; i++)
        {
          struct internal_reloc n;
@@ -1100,9 +1101,12 @@ coff_write_relocs (abfd)
          n.r_type = q->howto->type;
 #endif
          coff_swap_reloc_out (abfd, &n, &dst);
-         bfd_write ((PTR) & dst, 1, RELSZ, abfd);
+         if (bfd_write ((PTR) & dst, 1, RELSZ, abfd) != RELSZ)
+           return false;
        }
     }
+
+  return true;
 }
 
 /* Set flags and magic number of a coff file from architecture and machine
@@ -1558,10 +1562,12 @@ coff_write_object_contents (abfd)
 
   /* Write section headers to the file.  */
   internal_f.f_nscns = 0;
-  bfd_seek (abfd,
-           (file_ptr) ((abfd->flags & EXEC_P) ?
-                       (FILHSZ + AOUTSZ) : FILHSZ),
-           SEEK_SET);
+  if (bfd_seek (abfd,
+               (file_ptr) ((abfd->flags & EXEC_P) ?
+                           (FILHSZ + AOUTSZ) : FILHSZ),
+               SEEK_SET)
+      != 0)
+    return false;
 
   {
 #if 0
@@ -1641,7 +1647,8 @@ coff_write_object_contents (abfd)
              SCNHDR buff;
 
              coff_swap_scnhdr_out (abfd, &section, &buff);
-             bfd_write ((PTR) (&buff), 1, SCNHSZ, abfd);
+             if (bfd_write ((PTR) (&buff), 1, SCNHSZ, abfd) != SCNHSZ)
+               return false;
 
            }
 
@@ -1770,9 +1777,10 @@ coff_write_object_contents (abfd)
       coff_mangle_symbols (abfd);
       if (! coff_write_symbols (abfd))
        return false;
-      if (!coff_write_linenumbers (abfd))
+      if (! coff_write_linenumbers (abfd))
+       return false;
+      if (! coff_write_relocs (abfd))
        return false;
-      coff_write_relocs (abfd);
     }
   if (text_sec)
     {
@@ -1798,13 +1806,15 @@ coff_write_object_contents (abfd)
   {
     FILHDR buff;
     coff_swap_filehdr_out (abfd, (PTR) & internal_f, (PTR) & buff);
-    bfd_write ((PTR) & buff, 1, FILHSZ, abfd);
+    if (bfd_write ((PTR) & buff, 1, FILHSZ, abfd) != FILHSZ)
+      return false;
   }
   if (abfd->flags & EXEC_P)
     {
       AOUTHDR buff;
       coff_swap_aouthdr_out (abfd, (PTR) & internal_a, (PTR) & buff);
-      bfd_write ((PTR) & buff, 1, AOUTSZ, abfd);
+      if (bfd_write ((PTR) & buff, 1, AOUTSZ, abfd) != AOUTSZ)
+       return false;
     }
   return true;
 }
@@ -1834,7 +1844,8 @@ coff_set_section_contents (abfd, section, location, offset, count)
   if (section->filepos == 0)
     return true;
 
-  bfd_seek (abfd, (file_ptr) (section->filepos + offset), SEEK_SET);
+  if (bfd_seek (abfd, (file_ptr) (section->filepos + offset), SEEK_SET) != 0)
+    return false;
 
   if (count != 0)
     {
@@ -1883,12 +1894,9 @@ buy_and_read (abfd, where, seek_direction, size)
       bfd_set_error (bfd_error_no_memory);
       return (NULL);
     }
-  bfd_seek (abfd, where, seek_direction);
-  if (bfd_read (area, 1, size, abfd) != size)
-    {
-      bfd_set_error (bfd_error_system_call);
-      return (NULL);
-    }                          /* on error */
+  if (bfd_seek (abfd, where, seek_direction) != 0
+      || bfd_read (area, 1, size, abfd) != size)
+    return (NULL);
   return (area);
 }                              /* buy_and_read() */
 
@@ -1984,7 +1992,8 @@ coff_slurp_symbol_table (abfd)
   unsigned int number_of_symbols = 0;
   if (obj_symbols (abfd))
     return true;
-  bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET);
+  if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
+    return false;
 
   /* Read in the symbol table */
   if ((native_symbols = coff_get_normalized_symtab (abfd)) == NULL)
@@ -2414,8 +2423,6 @@ coff_canonicalize_reloc (abfd, section, relptr, symbols)
        return -1;
 
       tblptr = section->relocation;
-      if (!tblptr)
-       return -1;
 
       for (; count++ < section->reloc_count;)
        *relptr++ = tblptr++;
@@ -2490,39 +2497,27 @@ static CONST bfd_coff_backend_data bfd_coff_std_swap_table =
   coff_reloc16_extra_cases, coff_reloc16_estimate
 };
 
-#define coff_core_file_failing_command _bfd_dummy_core_file_failing_command
-#define coff_core_file_failing_signal  _bfd_dummy_core_file_failing_signal
-#define coff_core_file_matches_executable_p    _bfd_dummy_core_file_matches_executable_p
-#define coff_slurp_armap               bfd_slurp_coff_armap
-#define coff_slurp_extended_name_table _bfd_slurp_extended_name_table
-#define coff_truncate_arname           bfd_dont_truncate_arname
-#define coff_openr_next_archived_file  bfd_generic_openr_next_archived_file
-#define coff_generic_stat_arch_elt     bfd_generic_stat_arch_elt
-#define        coff_get_section_contents       bfd_generic_get_section_contents
-#define        coff_close_and_cleanup          bfd_generic_close_and_cleanup
-
-#define coff_bfd_debug_info_start      bfd_void
-#define coff_bfd_debug_info_end                bfd_void
-#define coff_bfd_debug_info_accumulate \
-                       (void (*) PARAMS ((bfd *, struct sec *))) bfd_void
-#define coff_bfd_get_relocated_section_contents  bfd_generic_get_relocated_section_contents
-#define coff_bfd_relax_section         bfd_generic_relax_section
-#ifndef coff_bfd_reloc_type_lookup
-#define coff_bfd_reloc_type_lookup \
-  ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr)
-#endif
-#define coff_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
-#define coff_bfd_link_add_symbols _bfd_generic_link_add_symbols
-#define coff_bfd_final_link _bfd_generic_final_link
+#define        coff_close_and_cleanup _bfd_generic_close_and_cleanup
+#define coff_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
+#define        coff_get_section_contents _bfd_generic_get_section_contents
 
-#ifndef coff_bfd_copy_private_section_data
 #define coff_bfd_copy_private_section_data \
-  ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true)
-#endif
-#ifndef coff_bfd_copy_private_bfd_data
-#define coff_bfd_copy_private_bfd_data \
-  ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true)
-#endif
+  _bfd_generic_bfd_copy_private_section_data
+#define coff_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data
+
 #ifndef coff_bfd_is_local_label
 #define coff_bfd_is_local_label bfd_generic_is_local_label
 #endif
+
+/* The reloc lookup routine must be supplied by each individual COFF
+   backend.  */
+#ifndef coff_bfd_reloc_type_lookup
+#define coff_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
+#endif
+
+#define coff_bfd_get_relocated_section_contents \
+  bfd_generic_get_relocated_section_contents
+#define coff_bfd_relax_section bfd_generic_relax_section
+#define coff_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
+#define coff_bfd_link_add_symbols _bfd_generic_link_add_symbols
+#define coff_bfd_final_link _bfd_generic_final_link
This page took 0.0275 seconds and 4 git commands to generate.