Include bfd.h before sysdep.h, so ansidecl and PROTO() get defined first.
authorJohn Gilmore <gnu@cygnus>
Fri, 11 Oct 1991 10:11:37 +0000 (10:11 +0000)
committerJohn Gilmore <gnu@cygnus>
Fri, 11 Oct 1991 10:11:37 +0000 (10:11 +0000)
bfd/aoutf1.h
bfd/bfd.c
bfd/bout.c
bfd/coff-a29k.c
bfd/core.c
bfd/cpu-a29k.c
bfd/host-aout.c
bfd/newsos3.c
bfd/targets.c

index cc5fc749a63e0a6b4c2e38dba89a59984bb09270..622611c8ea4110042154919c307e1ca9e73fbcc4 100644 (file)
@@ -18,13 +18,13 @@ You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
-#include <ansidecl.h>
-#include <sysdep.h>
-#include <a.out.sun4.h>
 #include "bfd.h"
-#include "libaout.h"           
+#include "sysdep.h"
 #include "libbfd.h"
 
+#include <a.out.sun4.h>
+#include "libaout.h"           
+
 #include "aout64.h"
 #include "stab.gnu.h"
 #include "ar.h"
@@ -62,19 +62,22 @@ bfd_target *
 DEFUN(NAME(sunos,object_p), (abfd),
      bfd *abfd)
 {
-  unsigned char magicbuf[4];   /* Raw bytes of magic number from file */
-  unsigned long magic;         /* Swapped magic number */
+  struct external_exec exec_bytes;     /* Raw exec header from file */
+  struct internal_exec exec;           /* Cleaned-up exec header */
 
-  bfd_error = system_call_error;
-
-  if (bfd_read ((PTR)magicbuf, 1 , 4, abfd) !=
-      sizeof (magicbuf))
+  if (bfd_read ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd)
+      != EXEC_BYTES_SIZE) {
+    bfd_error = wrong_format;
     return 0;
-  magic = bfd_h_get_32 (abfd, magicbuf);
+  }
+
+  exec.a_info = bfd_h_get_32 (abfd, exec_bytes.e_info);
+
+  if (N_BADMAG (exec)) return 0;
 
-  if (N_BADMAG (*((struct internal_exec *) &magic))) return 0;
+  NAME(aout,swap_exec_header_in)(abfd, &exec_bytes, &exec);
 
-  return NAME(aout,some_aout_object_p) (abfd, sunos4_callback);
+  return NAME(aout,some_aout_object_p) (abfd, &exec, sunos4_callback);
 }
 
   /* Determine the size of a relocation entry, based on the architecture */
index 331312e8e9c6a85ce3a0dbd763736090f133bf7b..1d465b19cfefe00368b00b7763b619f7b6841f99 100644 (file)
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -130,13 +130,9 @@ Symbol table for output BFD
 
 $  struct symbol_cache_entry  **outsymbols;             
 
-Architecture of object machine, eg m68k 
+Pointer to structure which contains architecture information
 
-$  enum bfd_architecture obj_arch;
-
-Particular machine within arch, e.g. 68010
-
-$  unsigned long obj_machine;
+$  struct bfd_arch_info *arch_info;
 
 Stuff only useful for archives:
 
@@ -162,10 +158,12 @@ $};
 *---
 
 */
-#include <sysdep.h>
 #include "bfd.h"
+#include "sysdep.h"
 #include "libbfd.h"
 
+extern char *strerror();
+
 
 short _bfd_host_big_endian = 0x0100;
         /* Accessing the above as (*(char*)&_bfd_host_big_endian), will
@@ -219,20 +217,6 @@ bfd_error_vector_type bfd_error_vector =
   bfd_nonrepresentable_section 
   };
 
-#if  !defined(ANSI_LIBRARIES) && !defined(__STDC__) || HOST_SYS==SUN4_SYS
-char *
-strerror (code)
-     int code;
-{
-  extern int sys_nerr;
-  extern char *sys_errlist[];
-
-  return (((code < 0) || (code >= sys_nerr)) ? "(unknown error)" :
-          sys_errlist [code]);
-}
-#endif /* not ANSI_LIBRARIES */
-
-
 char *
 bfd_errmsg (error_tag)
      bfd_ec error_tag;
@@ -430,6 +414,10 @@ bfd_get_mtime (abfd)
 
 #define bfd_coff_swap_lineno_in(a,e,i) \
         BFD_SEND ( a, _bfd_coff_swap_lineno_in, (a,e,i))
+
+#define bfd_set_arch_mach(abfd, arch, mach)\
+        BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
+
 *-
 
 */
index 7a353a5b63b905fe14fe4dd32d88b70fdc369c17..baa2ab27b39618cac8e4905aa5c221221f342c26 100644 (file)
@@ -20,8 +20,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* $Id$ */
 
-#include <sysdep.h>
 #include "bfd.h"
+#include "sysdep.h"
 #include "libbfd.h"
 
 #include "bout.h"
@@ -35,57 +35,102 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
        ( ((addr) + ((1<<(align))-1)) & (-1 << (align)))
 
 
-#define        EXEC_BYTES_SIZE         (sizeof (struct exec))
 PROTO (static boolean, b_out_squirt_out_relocs,(bfd *abfd, asection *section));
 PROTO (static bfd_target *, b_out_callback, (bfd *));
 
 PROTO (boolean, aout_32_slurp_symbol_table, (bfd *abfd));
 PROTO (void , aout_32_write_syms, ());
 
-PROTO (static void, swap_exec_header, (bfd *abfd, struct internal_exec *execp));
+/* Swaps the information in an executable header taken from a raw byte
+   stream memory image, into the internal exec_header structure.  */
 
-
-static bfd_target *
-b_out_little_object_p (abfd)
-     bfd *abfd;
+PROTO(void, bout_swap_exec_header_in,
+      (bfd *abfd,
+      struct external_exec *raw_bytes,
+      struct internal_exec *execp));
+        
+void
+DEFUN(bout_swap_exec_header_in,(abfd, raw_bytes, execp),
+      bfd *abfd AND
+      struct external_exec *raw_bytes AND
+      struct internal_exec *execp)
 {
-  unsigned char magicbytes[LONG_SIZE];
-  struct internal_exec anexec;
-  
-  if (bfd_read ((PTR)magicbytes, 1, LONG_SIZE, abfd) != LONG_SIZE) {
-    bfd_error = system_call_error;
-    return 0;
-  }
-  anexec.a_magic = _do_getl32 (magicbytes);
+  struct external_exec *bytes = (struct external_exec *)raw_bytes;
+
+  /* Now fill in fields in the execp, from the bytes in the raw data.  */
+  execp->a_info   = bfd_h_get_32 (abfd, bytes->e_info);
+  execp->a_text   = GET_WORD (abfd, bytes->e_text);
+  execp->a_data   = GET_WORD (abfd, bytes->e_data);
+  execp->a_bss    = GET_WORD (abfd, bytes->e_bss);
+  execp->a_syms   = GET_WORD (abfd, bytes->e_syms);
+  execp->a_entry  = GET_WORD (abfd, bytes->e_entry);
+  execp->a_trsize = GET_WORD (abfd, bytes->e_trsize);
+  execp->a_drsize = GET_WORD (abfd, bytes->e_drsize);
+  execp->a_tload  = GET_WORD (abfd, bytes->e_tload);
+  execp->a_dload  = GET_WORD (abfd, bytes->e_dload);
+  execp->a_talign = bytes->e_talign[0];
+  execp->a_dalign = bytes->e_dalign[0];
+  execp->a_balign = bytes->e_balign[0];
+}
 
-  if (N_BADMAG (anexec)) {
-    bfd_error = wrong_format;
-    return 0;
-  }
-  return aout_32_some_aout_object_p (abfd, b_out_callback);
+/* Swaps the information in an internal exec header structure into the
+   supplied buffer ready for writing to disk.  */
+
+PROTO(void, bout_swap_exec_header_out,
+         (bfd *abfd,
+          struct internal_exec *execp,
+          struct external_exec *raw_bytes));
+void
+DEFUN(bout_swap_exec_header_out,(abfd, execp, raw_bytes),
+     bfd *abfd AND
+     struct internal_exec *execp AND 
+     struct external_exec *raw_bytes)
+{
+  struct external_exec *bytes = (struct external_exec *)raw_bytes;
+
+  /* Now fill in fields in the raw data, from the fields in the exec struct. */
+  bfd_h_put_32 (abfd, execp->a_info  , bytes->e_info);
+  PUT_WORD (abfd, execp->a_text  , bytes->e_text);
+  PUT_WORD (abfd, execp->a_data  , bytes->e_data);
+  PUT_WORD (abfd, execp->a_bss   , bytes->e_bss);
+  PUT_WORD (abfd, execp->a_syms  , bytes->e_syms);
+  PUT_WORD (abfd, execp->a_entry , bytes->e_entry);
+  PUT_WORD (abfd, execp->a_trsize, bytes->e_trsize);
+  PUT_WORD (abfd, execp->a_drsize, bytes->e_drsize);
+  PUT_WORD (abfd, execp->a_tload , bytes->e_tload);
+  PUT_WORD (abfd, execp->a_dload , bytes->e_dload);
+  bytes->e_talign[0] = execp->a_talign;
+  bytes->e_dalign[0] = execp->a_dalign;
+  bytes->e_balign[0] = execp->a_balign;
+  bytes->e_unused[0] = 0;              /* Clean structs are godly structs */
 }
 
+
 static bfd_target *
-b_out_big_object_p (abfd)
+b_out_object_p (abfd)
      bfd *abfd;
 {
-  unsigned char magicbytes[LONG_SIZE];
   struct internal_exec anexec;
+  struct external_exec exec_bytes;
 
-  if (bfd_read ((PTR)magicbytes, 1, LONG_SIZE, abfd) != LONG_SIZE) {
-    bfd_error = system_call_error;
+  if (bfd_read ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd)
+      != EXEC_BYTES_SIZE) {
+    bfd_error = wrong_format;
     return 0;
   }
 
-  anexec.a_magic = _do_getb32 (magicbytes);
+  anexec.a_info = bfd_h_get_32 (abfd, exec_bytes.e_info);
 
   if (N_BADMAG (anexec)) {
     bfd_error = wrong_format;
     return 0;
   }
-  return aout_32_some_aout_object_p (abfd, b_out_callback);
+
+  bout_swap_exec_header_in (abfd, &exec_bytes, &anexec);
+  return aout_32_some_aout_object_p (abfd, &anexec, b_out_callback);
 }
 
+
 /* Finish up the opening of a b.out file for reading.  Fill in all the
    fields that are not handled by common code.  */
 
@@ -93,27 +138,9 @@ static bfd_target *
 b_out_callback (abfd)
      bfd *abfd;
 {
-  struct internal_exec anexec;
-  struct internal_exec *execp = &anexec;
+  struct internal_exec *execp = exec_hdr (abfd);
   unsigned long bss_start;
 
-  /* Reread the exec header, because the common code didn't get all of
-     our extended header.  */
-
-  if (bfd_seek (abfd, 0L, SEEK_SET) < 0) {
-    bfd_error = system_call_error;
-    return 0;
-  }
-
-  /* FIXME, needs to be hacked for character array read-in ala sunos.c.  */
-  if (bfd_read ((PTR) execp, 1, sizeof (struct internal_exec), abfd)
-      != sizeof (struct internal_exec)) {
-    bfd_error = wrong_format;
-    return 0;
-  }
-
-  swap_exec_header (abfd, execp);
-
   /* Architecture and machine type */
   bfd_set_arch_mach(abfd, 
                    bfd_arch_i960, /* B.out only used on i960 */
@@ -121,8 +148,8 @@ b_out_callback (abfd)
                    );
 
   /* The positions of the string table and symbol table.  */
-  obj_str_filepos (abfd) = N_STROFF (anexec);
-  obj_sym_filepos (abfd) = N_SYMOFF (anexec);
+  obj_str_filepos (abfd) = N_STROFF (*execp);
+  obj_sym_filepos (abfd) = N_SYMOFF (*execp);
 
   /* The alignments of the sections */
   obj_textsec (abfd)->alignment_power = execp->a_talign;
@@ -130,41 +157,41 @@ b_out_callback (abfd)
   obj_bsssec  (abfd)->alignment_power = execp->a_balign;
 
   /* The starting addresses of the sections.  */
-  obj_textsec (abfd)->vma = anexec.a_tload;
-  obj_datasec (abfd)->vma = anexec.a_dload;
-  bss_start = anexec.a_dload + anexec.a_data; /* BSS = end of data section */
-  obj_bsssec (abfd)->vma = i960_align (bss_start, anexec.a_balign);
+  obj_textsec (abfd)->vma = execp->a_tload;
+  obj_datasec (abfd)->vma = execp->a_dload;
+  bss_start = execp->a_dload + execp->a_data; /* BSS = end of data section */
+  obj_bsssec (abfd)->vma = i960_align (bss_start, execp->a_balign);
 
   /* The file positions of the sections */
-  obj_textsec (abfd)->filepos = N_TXTOFF(anexec);
-  obj_datasec (abfd)->filepos = N_DATOFF(anexec);
+  obj_textsec (abfd)->filepos = N_TXTOFF(*execp);
+  obj_datasec (abfd)->filepos = N_DATOFF(*execp);
 
   /* The file positions of the relocation info */
-  obj_textsec (abfd)->rel_filepos = N_TROFF(anexec);
-  obj_datasec (abfd)->rel_filepos =  N_DROFF(anexec);
+  obj_textsec (abfd)->rel_filepos = N_TROFF(*execp);
+  obj_datasec (abfd)->rel_filepos =  N_DROFF(*execp);
 
   return abfd->xvec;
 }
 
+struct container {
+    struct aoutdata a;
+    struct internal_exec e;
+};
 
 static boolean
 b_out_mkobject (abfd)
      bfd *abfd;
 {
-  PTR  rawptr;
-
-  bfd_error = system_call_error;
+  struct container *rawptr;
 
-  /* Use an intermediate variable for clarity */
-  rawptr = (PTR) zalloc (sizeof (struct aoutdata) + sizeof (struct internal_exec));
-
-  if (rawptr == (PTR)NULL) {
+  rawptr = (struct container *) bfd_zalloc (abfd, sizeof (struct container));
+  if (rawptr == NULL) {
     bfd_error = no_memory;
     return false;
   }
 
-  set_tdata(abfd, (struct aoutdata *) rawptr);
-  exec_hdr (abfd) = (struct internal_exec *) ( (char*)rawptr + sizeof (struct aoutdata));
+  set_tdata (abfd, &rawptr->a);
+  exec_hdr (abfd) = &rawptr->e;
 
   /* For simplicity's sake we just make all the sections right here. */
   obj_textsec (abfd) = (asection *)NULL;
@@ -182,9 +209,9 @@ static boolean
 b_out_write_object_contents (abfd)
      bfd *abfd;
 {
-  struct internal_exec swapped_hdr;
+  struct external_exec swapped_hdr;
 
-  exec_hdr (abfd)->a_magic = BMAGIC;
+  exec_hdr (abfd)->a_info = BMAGIC;
 
   exec_hdr (abfd)->a_text = obj_textsec (abfd)->size;
   exec_hdr (abfd)->a_data = obj_datasec (abfd)->size;
@@ -203,13 +230,10 @@ b_out_write_object_contents (abfd)
   exec_hdr (abfd)->a_tload = obj_textsec (abfd)->vma;
   exec_hdr (abfd)->a_dload = obj_datasec (abfd)->vma;
 
-  /* FIXME, turn the header into bytes here, to avoid problems with
-     sizes and alignments of its fields.  */
-  swapped_hdr = *exec_hdr(abfd);
-  swap_exec_header (abfd, &swapped_hdr);
+  bout_swap_exec_header_out (abfd, exec_hdr (abfd), &swapped_hdr);
 
   bfd_seek (abfd, 0L, SEEK_SET);
-  bfd_write ((PTR) &swapped_hdr, 1, sizeof (struct internal_exec), abfd);
+  bfd_write ((PTR) &swapped_hdr, 1, EXEC_BYTES_SIZE, abfd);
 
   /* Now write out reloc info, followed by syms and strings */
   if (bfd_get_symcount (abfd) != 0) 
@@ -228,26 +252,6 @@ b_out_write_object_contents (abfd)
     }
   return true;
 }
-
-static void
-swap_exec_header (abfd, execp)
-     bfd *abfd;
-     struct internal_exec *execp;
-{
-#define swapme(field)  field = bfd_h_get_32 (abfd, (unsigned char *)&field);
-  swapme (execp->a_magic);
-  swapme (execp->a_text);
-  swapme (execp->a_data);
-  swapme (execp->a_bss);
-  swapme (execp->a_syms);
-  swapme (execp->a_entry);
-  swapme (execp->a_trsize);
-  swapme (execp->a_drsize);
-  swapme (execp->a_tload);
-  swapme (execp->a_dload);
-  /* talign, dalign, and balign are one-byte fields and don't swap.  */
-#undef swapme
-}
 \f
 /** Some reloc hackery */
 
@@ -716,7 +720,7 @@ bfd_target b_out_vec_big_host =
 
 _do_getl64, _do_putl64,  _do_getl32, _do_putl32, _do_getl16, _do_putl16, /* data */
 _do_getb64, _do_putb64,  _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* hdrs */
-    {_bfd_dummy_target, b_out_big_object_p, /* bfd_check_format */
+    {_bfd_dummy_target, b_out_object_p, /* bfd_check_format */
        bfd_generic_archive_p, _bfd_dummy_target},
     {bfd_false, b_out_mkobject,        /* bfd_set_format */
        _bfd_generic_mkarchive, bfd_false},
@@ -743,7 +747,7 @@ bfd_target b_out_vec_little_host =
 _do_getl64, _do_putl64, _do_getl32, _do_putl32, _do_getl16, _do_putl16, /* data */
 _do_getl64, _do_putl64, _do_getl32, _do_putl32, _do_getl16, _do_putl16, /* hdrs */
         
-    {_bfd_dummy_target, b_out_little_object_p, /* bfd_check_format */
+    {_bfd_dummy_target, b_out_object_p, /* bfd_check_format */
        bfd_generic_archive_p, _bfd_dummy_target},
     {bfd_false, b_out_mkobject,        /* bfd_set_format */
        _bfd_generic_mkarchive, bfd_false},
@@ -751,4 +755,3 @@ _do_getl64, _do_putl64, _do_getl32, _do_putl32, _do_getl16, _do_putl16, /* hdrs
        _bfd_write_archive_contents, bfd_false},
   JUMP_TABLE(aout_32)
 };
-
index eb999a401054270da7d8ddc0a75079bbf63a5f04..b7506c5f4ff22056cafdfd6945cb8c29868ac0dc 100644 (file)
@@ -22,9 +22,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #define A29K 1
 
-#include <ansidecl.h>
-#include <sysdep.h>
 #include "bfd.h"
+#include "sysdep.h"
 #include "libbfd.h"
 #include "obstack.h"
 #include "amdcoff.h"
index b22dfa8c1b271781bb364780b7df7ba727db5318..49fa7dc9a42bc6a427d04fb6ad38365b9c6b4aa4 100644 (file)
@@ -23,8 +23,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 Buff output this facinating topic
 */
 
-#include "sysdep.h"
 #include "bfd.h"
+#include "sysdep.h"
 #include "libbfd.h"
 
 /** Some core file info commands */
index d9a72f28264c5bae8da8c6fa5f5c5562259ae8e0..303491a7b6f1a03ded4e3449b99b053c1b841a75 100644 (file)
@@ -1,5 +1,5 @@
-#include <sysdep.h>
-#include <bfd.h>
+#include "bfd.h"
+#include "sysdep.h"
 #include "libbfd.h"
 
 static bfd_arch_info_type arch_info_struct = 
index c2e63a2c1e65d59fde36307f1761dca9a87521fd..cf556d0f451841c6e60013d96c57f3c2772e70d9 100644 (file)
@@ -18,9 +18,8 @@ You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
-#include <ansidecl.h>
-#include <sysdep.h>
 #include "bfd.h"
+#include "sysdep.h"
 #include "libbfd.h"
 
 #include <a.out.h>
@@ -129,18 +128,21 @@ DEFUN(NAME(host_aout,object_p), (abfd),
      bfd *abfd)
 {
   unsigned char magicbuf[4];   /* Raw bytes of magic number from file */
-  unsigned long magic;         /* Swapped magic number */
+  struct external_exec exec_bytes;
+  struct internal_exec exec;
 
-  bfd_error = system_call_error;
-
-  if (bfd_read ((PTR)magicbuf, 1, sizeof (magicbuf), abfd) !=
-      sizeof (magicbuf))
+  if (bfd_read ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd)
+      != EXEC_BYTES_SIZE) {
+    bfd_error = wrong_format;
     return 0;
-  magic = bfd_h_get_32 (abfd, magicbuf);
+  }
 
-  if (N_BADMAG (*((struct exec *) &magic))) return 0;
+  exec.a_magic = bfd_h_get_32 (abfd, exec_bytes.a_magic);
 
-  return NAME(aout,some_aout_object_p) (abfd, NAME(host_aout,callback));
+  if (N_BADMAG (exec)) return 0;
+
+  NAME(aout,swap_exec_header_in)(abfd, &exec_bytes, &exec);
+  return NAME(aout,some_aout_object_p) (abfd, &exec, NAME(host_aout,callback));
 }
 
 /* Set parameters about this a.out file that are machine-dependent.
@@ -177,11 +179,15 @@ DEFUN(NAME(host_aout,callback), (abfd),
   obj_sym_filepos (abfd) = N_SYMOFF (*execp);
 
 #ifdef HOST_MACHINE_ARCH
-  abfd->obj_arch = HOST_MACHINE_ARCH;
-#endif
+  bfd_default_set_arch_mach(abfd,
+                           HOST_MACHINE_ARCH, 
 #ifdef HOST_MACHINE_MACHINE
-  abfd->obj_machine = HOST_MACHINE_MACHINE;
-#endif
+                           HOST_MACHINE_MACHINE
+#else  /* not HOST_MACHINE_MACHINE */
+                           0
+#endif /* not HOST_MACHINE_MACHINE */
+                            );
+#endif /* HOST_MACHINE_ARCH */
 
   obj_reloc_entry_size (abfd) = sizeof (struct relocation_info);
   return abfd->xvec;
@@ -236,7 +242,7 @@ DEFUN(NAME(host_aout,write_object_contents), (abfd),
 {
 /* This works because we are on the host system */
 #define        EXEC_BYTES_SIZE         (sizeof (struct exec))
-#define        EXTERNAL_LIST_SIZE      (sizeof (struct nlist))
+#define        EXTERNAL_NLIST_SIZE     (sizeof (struct nlist))
   size_t data_pad = 0;
   unsigned char exec_bytes[EXEC_BYTES_SIZE];
   struct exec *execp = (struct exec *)exec_hdr (abfd);
index 1a351096ccf76eff6715c2fc34b986e98b0bb1d1..8a1cfc84cfa45bf30cc15e9f1dc84331252d6a39 100644 (file)
@@ -23,9 +23,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #define ARCH 32
 #define BYTES_IN_WORD 4
 
-#include <ansidecl.h>
-#include <sysdep.h>
 #include "bfd.h"
+#include "sysdep.h"
 #include "libbfd.h"
 #include "aout64.h"
 
index dd07784f1fd5e8ada4314572253134ef66791dfb..192dda31e37c4e91c8475b1503d3aff6984afd0e 100644 (file)
@@ -20,8 +20,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* $Id$ */
 
-#include <sysdep.h>
 #include "bfd.h"
+#include "sysdep.h"
 #include "libbfd.h"
 
 /*doc*
@@ -298,6 +298,7 @@ extern bfd_target oasys_vec;
 extern bfd_target m88k_bcs_vec;
 extern bfd_target m68kcoff_vec;
 extern bfd_target i386coff_vec;
+extern bfd_target i386aout_vec;
 extern bfd_target a29kcoff_big_vec;
 
 #ifdef SELECT_VECS
@@ -343,6 +344,7 @@ extern bfd_target DEFAULT_VECTOR;
 #define SREC_VEC                srec_vec
 #define M68KCOFF_VEC            m68kcoff_vec
 #define I386COFF_VEC            i386coff_vec
+#define        I386AOUT_VEC            i386aout_vec
 #define A29KCOFF_BIG_VEC       a29kcoff_big_vec
 #endif
 
@@ -356,6 +358,10 @@ bfd_target *target_vector[] = {
         &I386COFF_VEC,
 #endif
 
+#ifdef I386AOUT_VEC
+       &I386AOUT_VEC,
+#endif
+
 #ifdef ECOFF_LITTLE_VEC
         &ECOFF_LITTLE_VEC,
 #endif