/* Swaps the information in an executable header taken from a raw byte
stream memory image, into the internal exec_header structure. */
-void
+boolean
os9k_swap_exec_header_in (abfd, raw_bytes, execp)
bfd *abfd;
mh_com *raw_bytes;
dload = bfd_h_get_32 (abfd, bytes->m_idata);
execp->a_data = dload + 8;
- bfd_seek (abfd, (file_ptr) dload, SEEK_SET);
- bfd_read (&dmemstart, sizeof (dmemstart), 1, abfd);
- bfd_read (&dmemsize, sizeof (dmemsize), 1, abfd);
+ if (bfd_seek (abfd, (file_ptr) dload, SEEK_SET) != 0
+ || (bfd_read (&dmemstart, sizeof (dmemstart), 1, abfd)
+ != sizeof (dmemstart))
+ || (bfd_read (&dmemsize, sizeof (dmemsize), 1, abfd)
+ != sizeof (dmemsize)))
+ return false;
execp->a_tload = 0;
execp->a_dload = bfd_h_get_32 (abfd, (unsigned char *) &dmemstart);
execp->a_trsize = 0;
execp->a_drsize = 0;
+
+ return true;
}
#if 0
if (bfd_read ((PTR) & exec_bytes, MHCOM_BYTES_SIZE, 1, abfd)
!= MHCOM_BYTES_SIZE)
{
- bfd_set_error (bfd_error_wrong_format);
+ if (bfd_get_error () != bfd_error_system_call)
+ bfd_set_error (bfd_error_wrong_format);
return 0;
}
return 0;
}
- os9k_swap_exec_header_in (abfd, &exec_bytes, &anexec);
+ if (! os9k_swap_exec_header_in (abfd, &exec_bytes, &anexec))
+ {
+ if (bfd_get_error () != bfd_error_system_call)
+ bfd_set_error (bfd_error_wrong_format);
+ return NULL;
+ }
return aout_32_some_aout_object_p (abfd, &anexec, os9k_callback);
}
bout_swap_exec_header_out (abfd, exec_hdr (abfd), &swapped_hdr);
- bfd_seek (abfd, (file_ptr) 0, SEEK_SET);
- bfd_write ((PTR) & swapped_hdr, 1, EXEC_BYTES_SIZE, abfd);
+ if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
+ || (bfd_write ((PTR) & swapped_hdr, 1, EXEC_BYTES_SIZE, abfd)
+ != EXEC_BYTES_SIZE))
+ return false;
/* Now write out reloc info, followed by syms and strings */
if (bfd_get_symcount (abfd) != 0)
{
- bfd_seek (abfd, (file_ptr) (N_SYMOFF (*exec_hdr (abfd))), SEEK_SET);
+ if (bfd_seek (abfd, (file_ptr) (N_SYMOFF (*exec_hdr (abfd))), SEEK_SET)
+ != 0)
+ return false;
if (!aout_32_write_syms (abfd))
return false;
- bfd_seek (abfd, (file_ptr) (N_TROFF (*exec_hdr (abfd))), SEEK_SET);
+ if (bfd_seek (abfd, (file_ptr) (N_TROFF (*exec_hdr (abfd))), SEEK_SET)
+ != 0)
+ return false;
if (!b_out_squirt_out_relocs (abfd, obj_textsec (abfd)))
return false;
- bfd_seek (abfd, (file_ptr) (N_DROFF (*exec_hdr (abfd))), SEEK_SET);
+ if (bfd_seek (abfd, (file_ptr) (N_DROFF (*exec_hdr (abfd))), SEEK_SET)
+ != 0)
+ return false;
if (!b_out_squirt_out_relocs (abfd, obj_datasec (abfd)))
return false;
}
/* regardless, once we know what we're doing, we might as well get going */
- bfd_seek (abfd, section->filepos + offset, SEEK_SET);
+ if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0)
+ return false;
if (count != 0)
{