Ignore:
Timestamp:
Sep 25, 2003, 9:27:01 PM (22 years ago)
Author:
zap
Message:

.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/binutils/bfd/i386aoutemx.c

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r728 r729  
    1818Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
    1919
    20 #include "sysdep.h"
    21 #include "bfd.h"
    22 #include "libbfd.h"
    23 #include "libaout.h"
     20#define EMX
    2421
    25 static bfd_boolean MY(set_sizes) ();
     22#define ARCH_SIZE               32
     23#define DEFAULT_ARCH            bfd_arch_i386
     24
     25#define TEXT_START_ADDR         0x10000
     26#define TARGET_PAGE_SIZE        0x1000
     27#define TARGET_SEGMENT_SIZE     0x10000
     28#define TARGET_STACK_END_ADDR   0x80000000
     29
     30#define ZMAGIC_DISK_BLOCK_SIZE  1024
     31#define BYTES_IN_WORD           4
     32#define NO_CORE_COMMAND
     33
     34#define MY(OP)                  CONCAT2(i386aout_emx_,OP)
     35#define TARGETNAME              "a.out-emx"
     36
     37#define IS_STAB(flags) (((flags) & N_STAB) \
     38        && (flags) != (N_IMP1|N_EXT) && (flags) != (N_IMP2|N_EXT))
     39
     40#include "aout/aoutemx.h"
     41#include "aoutx.h"
     42
     43#define MY_object_p             MY(object_p)
    2644#define MY_backend_data &MY(backend_data)
    2745
    28 static const bfd_target *MY(object_p) ();
    29 #define MY_object_p             MY(object_p)
     46static bfd_boolean MY(set_sizes) PARAMS ((bfd *));
     47static const bfd_target *MY(object_p) PARAMS ((bfd *));
    3048
    3149static CONST struct aout_backend_data MY(backend_data) = {
     
    4765#include "aout-target.h"
    4866
     67#ifndef __EMX__
     68
     69/* Cross-compilation support, borrowed from EMX C runtime library */
     70int _fseek_hdr PARAMS ((FILE *));
     71
     72int _fseek_hdr (FILE *stream)
     73{
     74  struct
     75    {
     76      char magic[2];
     77      char fill1[6];
     78      unsigned short hdr_size;
     79    } exe_hdr;
     80  struct
     81    {
     82      char sig[16];
     83      char bound;
     84      char fill1;
     85      unsigned short hdr_loc_lo;      /* cannot use long, alignment! */
     86      unsigned short hdr_loc_hi;
     87    } patch;
     88  long original_pos;
     89  int saved_errno;
     90
     91  original_pos = ftell (stream);
     92  if (fread (&exe_hdr, sizeof (exe_hdr), 1, stream) != 1)
     93    goto failure;
     94  if (memcmp (exe_hdr.magic, "MZ", 2) != 0)
     95    return (fseek (stream, original_pos, SEEK_SET) == -1 ? -1 : 0);
     96  if (fseek (stream, original_pos + 16 * exe_hdr.hdr_size, SEEK_SET) == -1)
     97    goto failure;
     98  if (fread (&patch, sizeof (patch), 1, stream) != 1)
     99    goto failure;
     100  if (memcmp (patch.sig, "emx", 3) != 0)
     101    goto failure;
     102  if (fseek (stream, original_pos + patch.hdr_loc_lo
     103             + 65536L * patch.hdr_loc_hi, SEEK_SET) == -1)
     104    goto failure;
     105  return 0;
     106
     107failure:
     108  saved_errno = errno;
     109  fseek (stream, original_pos, SEEK_SET);
     110  errno = saved_errno;
     111  return -1;
     112}
     113#endif
     114
    49115/*
    50116 * Finish up the reading of an a.out file header
     
    62128  (void)_fseek_hdr(bfd_cache_lookup(abfd));
    63129  add = bfd_tell (abfd) - org_pos;
    64   if (bfd_read ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd)
     130
     131  if (bfd_bread ((PTR) &exec_bytes, EXEC_BYTES_SIZE, abfd)
    65132      != EXEC_BYTES_SIZE)
    66133  {
     
    76143
    77144  NAME(aout,swap_exec_header_in)(abfd, &exec_bytes, &exec);
    78   exec.emx_add = add;
     145  exec.a_hdrofs = add;
    79146  target = NAME(aout,some_aout_object_p) (abfd, &exec, MY(callback));
    80147  return target;
Note: See TracChangeset for help on using the changeset viewer.