Changeset 729 for trunk/src/binutils/bfd/i386aoutemx.c
- Timestamp:
- Sep 25, 2003, 9:27:01 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/binutils/bfd/i386aoutemx.c
-
Property cvs2svn:cvs-rev
changed from
1.2
to1.3
r728 r729 18 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 19 19 20 #include "sysdep.h" 21 #include "bfd.h" 22 #include "libbfd.h" 23 #include "libaout.h" 20 #define EMX 24 21 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) 26 44 #define MY_backend_data &MY(backend_data) 27 45 28 static const bfd_target *MY(object_p) ();29 #define MY_object_p MY(object_p) 46 static bfd_boolean MY(set_sizes) PARAMS ((bfd *)); 47 static const bfd_target *MY(object_p) PARAMS ((bfd *)); 30 48 31 49 static CONST struct aout_backend_data MY(backend_data) = { … … 47 65 #include "aout-target.h" 48 66 67 #ifndef __EMX__ 68 69 /* Cross-compilation support, borrowed from EMX C runtime library */ 70 int _fseek_hdr PARAMS ((FILE *)); 71 72 int _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 107 failure: 108 saved_errno = errno; 109 fseek (stream, original_pos, SEEK_SET); 110 errno = saved_errno; 111 return -1; 112 } 113 #endif 114 49 115 /* 50 116 * Finish up the reading of an a.out file header … … 62 128 (void)_fseek_hdr(bfd_cache_lookup(abfd)); 63 129 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) 65 132 != EXEC_BYTES_SIZE) 66 133 { … … 76 143 77 144 NAME(aout,swap_exec_header_in)(abfd, &exec_bytes, &exec); 78 exec. emx_add= add;145 exec.a_hdrofs = add; 79 146 target = NAME(aout,some_aout_object_p) (abfd, &exec, MY(callback)); 80 147 return target; -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.