*** empty log message ***
authorSteve Chamberlain <steve@cygnus>
Thu, 30 May 1991 22:33:01 +0000 (22:33 +0000)
committerSteve Chamberlain <steve@cygnus>
Thu, 30 May 1991 22:33:01 +0000 (22:33 +0000)
bfd/ChangeLog
bfd/coff-i386.c
bfd/coff-i960.c
bfd/coff-m88k.c
bfd/coff-mips.c
bfd/coffcode.h
include/bfd.h
include/coff-i386.h

index f04bfe5fcacf68c3574ceff82e278d64e6c34a1e..05695e7ce93f9c93009b0011e591401dcc2cbc8b 100644 (file)
@@ -1,3 +1,11 @@
+Thu May 30 15:30:10 1991  Steve Chamberlain  (steve at cygint.cygnus.com)
+
+        *../include/i386coff.h : fixed typo in type field with size
+
+       * i386coff.c icoff.c m88k-bcs.c ecoff.c ../include/bfd.h : Added
+       support in the jump table for the swapping routines exported to
+       gdb. Now gdb works with the 386.
+
 Tue May 28 17:21:43 1991  John Gilmore  (gnu at cygint.cygnus.com)
 
        * Merge in changes from gdb-3.95 release.
index 103de4b57d2e971ff306473b791fe3d74fb1b74c..72990b319b45dbbd23325d694fb0c370fb5d1f89 100644 (file)
@@ -93,7 +93,8 @@ _do_getl64, _do_putl64,  _do_getl32, _do_putl32, _do_getl16, _do_putl16, /* hdrs
   {bfd_false, coff_write_object_contents,      /* bfd_write_contents */
      _bfd_write_archive_contents, bfd_false},
 
-     JUMP_TABLE(coff)
+     JUMP_TABLE(coff),
+       COFF_SWAP_TABLE
 
   };
 
index f2f24227873e37ebeeb17542e54d15a619bdebff..4c3b7e102d7b59931295d46df06c13e244788491 100644 (file)
@@ -195,5 +195,6 @@ _do_getb64, _do_putb64,  _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* hdrs
      _bfd_generic_mkarchive, bfd_false},
   {bfd_false, coff_write_object_contents,      /* bfd_write_contents */
      _bfd_write_archive_contents, bfd_false},
-  JUMP_TABLE(coff)
+  JUMP_TABLE(coff),
+COFF_SWAP_TABLE
 };
index 71a4497ea8c03a322626bf766e5f0c3e8d8d7a99..511dfff44207bfcb27d5d15ff12b2561715b37fe 100644 (file)
@@ -82,7 +82,7 @@ static reloc_howto_type howto_table[] =
 
 
 #define BADMAG(x) MC88BADMAG(x)
-#include "coff-code.h"
+#include "coffcode.h"
 
 
 
@@ -115,5 +115,6 @@ _do_getb64, _do_putb64,   _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* hdr
   {bfd_false, coff_write_object_contents,      /* bfd_write_contents */
      _bfd_write_archive_contents, bfd_false},
 
-  JUMP_TABLE(coff)
+  JUMP_TABLE(coff),
+COFF_SWAP_TABLE
 };
index abfea6a8ca2d6f4243ca27d0a3ccb5ab236e5b7b..4e16150484bda0e1f931b6ac9bb14555eca4cf03 100644 (file)
@@ -85,5 +85,6 @@ _do_getb64, _do_putb64,       _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* hdrs
          bfd_false},
        {bfd_false, coff_write_object_contents, /* bfd_write_contents */
          bfd_false, bfd_false},
-       JUMP_TABLE(coff)
+       JUMP_TABLE(coff),
+         COFF_SWAP_TABLE
 };
index ee3edc29869f1dab02ee7817ed7baf9c8ed0ed8d..8e6627b3df69bab0cd679db6c8e7fc175f3b0438 100644 (file)
@@ -78,8 +78,7 @@ DEFUN(set_index,(symbol, idx),
 */
 
 
-GDB_EXPORT
-void
+static void
 DEFUN(bfd_swap_reloc_in,(abfd, reloc_src, reloc_dst),
       bfd            *abfd AND
       RELOC *reloc_src AND
@@ -93,8 +92,8 @@ DEFUN(bfd_swap_reloc_in,(abfd, reloc_src, reloc_dst),
 #endif
 }
 
-GDB_EXPORT
- void
+
+static void
 DEFUN(bfd_swap_reloc_out,(abfd, reloc_src, reloc_dst),
       bfd            *abfd AND
       struct internal_reloc *reloc_src AND
@@ -109,7 +108,7 @@ DEFUN(bfd_swap_reloc_out,(abfd, reloc_src, reloc_dst),
 
 }
 
-GDB_EXPORT  void 
+static void
 DEFUN(bfd_swap_filehdr_in,(abfd, filehdr_src, filehdr_dst),
       bfd            *abfd AND
       FILHDR         *filehdr_src AND
@@ -140,9 +139,9 @@ DEFUN(bfd_swap_filehdr_out,(abfd, filehdr_in, filehdr_out),
 }
 
 
-GDB_EXPORT 
-void 
-DEFUN(bfd_coff_swap_sym_in,(abfd, ext, in),
+
+static void 
+DEFUN(coff_swap_sym_in,(abfd, ext, in),
       bfd            *abfd AND
       SYMENT *ext AND
       struct internal_syment      *in)
@@ -167,7 +166,7 @@ DEFUN(bfd_coff_swap_sym_in,(abfd, ext, in),
 }
 
 GDB_EXPORT void 
-DEFUN(bfd_coff_swap_sym_out,(abfd,in,  ext),
+DEFUN(coff_swap_sym_out,(abfd,in,  ext),
       bfd            *abfd AND
       struct internal_syment      *in AND
       SYMENT *ext)
@@ -193,8 +192,8 @@ DEFUN(bfd_coff_swap_sym_out,(abfd,in,  ext),
   bfd_h_put_8(abfd,  in->n_numaux , ext->e_numaux);
 }
 
-GDB_EXPORT void
-DEFUN(bfd_coff_swap_aux_in,(abfd, ext, type, class, in),
+static void
+DEFUN(coff_swap_aux_in,(abfd, ext, type, class, in),
       bfd            *abfd AND
       AUXENT    *ext AND
       int             type AND
@@ -245,7 +244,7 @@ DEFUN(bfd_coff_swap_aux_in,(abfd, ext, type, class, in),
 }
 
 GDB_EXPORT void
-DEFUN(bfd_coff_swap_aux_out,(abfd, in, type, class, ext),
+DEFUN(coff_swap_aux_out,(abfd, in, type, class, ext),
   bfd   *abfd AND
   union internal_auxent *in AND
   int    type AND
@@ -296,7 +295,7 @@ DEFUN(bfd_coff_swap_aux_out,(abfd, in, type, class, ext),
 }
 
 GDB_EXPORT void
-DEFUN(bfd_coff_swap_lineno_in,(abfd, ext, in),
+DEFUN(coff_swap_lineno_in,(abfd, ext, in),
       bfd            *abfd AND
       LINENO *ext AND
       struct internal_lineno      *in)
@@ -306,7 +305,7 @@ DEFUN(bfd_coff_swap_lineno_in,(abfd, ext, in),
 }
 
 GDB_EXPORT void
-DEFUN(bfd_coff_swap_lineno_out,(abfd, in, ext),
+DEFUN(coff_swap_lineno_out,(abfd, in, ext),
       bfd            *abfd AND
       struct internal_lineno      *in AND
       struct external_lineno *ext)
@@ -357,7 +356,7 @@ DEFUN(bfd_swap_aouthdr_out,(abfd, aouthdr_in, aouthdr_out),
 }
 
 GDB_EXPORT void 
-DEFUN(bfd_coff_swap_scnhdr_in,(abfd, scnhdr_ext, scnhdr_int),
+DEFUN(coff_swap_scnhdr_in,(abfd, scnhdr_ext, scnhdr_int),
       bfd            *abfd AND
       SCNHDR         *scnhdr_ext AND
       struct internal_scnhdr *scnhdr_int)
@@ -541,7 +540,7 @@ DEFUN(coff_real_object_p,(abfd, nscns, internal_f, internal_a),
     unsigned int    i;
     for (i = 0; i < nscns; i++) {
       struct internal_scnhdr tmp;
-      bfd_coff_swap_scnhdr_in(abfd, external_sections + i, &tmp);
+      coff_swap_scnhdr_in(abfd, external_sections + i, &tmp);
       make_a_section_from_file(abfd,&tmp);
     }
   }
@@ -1123,12 +1122,12 @@ bfd            *abfd)
            int             type = native->n_type;
            int             class =  native->n_sclass;
            SYMENT buf;
-           bfd_coff_swap_sym_out(abfd, native, &buf);
+           coff_swap_sym_out(abfd, native, &buf);
            bfd_write((PTR)& buf, 1, SYMESZ, abfd);
            for (j = 0; j != native->n_numaux;
                 j++) {
              AUXENT buf1;
-             bfd_coff_swap_aux_out(abfd,
+             coff_swap_aux_out(abfd,
                                    (union internal_auxent *)(native + j + 1), type, class, &buf1);
              bfd_write((PTR) (native + j + 1), 1, AUXESZ, abfd);
            }
@@ -1221,13 +1220,13 @@ DEFUN(coff_write_linenumbers,(abfd),
            bzero( (PTR)&out, sizeof(out));
            out.l_lnno = 0;
            out.l_addr.l_symndx = l->u.offset;
-           bfd_coff_swap_lineno_out(abfd, &out, &buff);
+           coff_swap_lineno_out(abfd, &out, &buff);
            bfd_write((PTR) &buff, 1, LINESZ, abfd);
            l++;
            while (l->line_number) {
              out.l_lnno = l->line_number;
              out.l_addr.l_symndx = l->u.offset;
-             bfd_coff_swap_lineno_out(abfd, &out, &buff);
+             coff_swap_lineno_out(abfd, &out, &buff);
              bfd_write((PTR) &buff, 1, LINESZ, abfd);
              l++;
            }
@@ -1825,29 +1824,6 @@ DEFUN(offset_symbol_indices,(abfd, symtab, count, offset),
   return;
 }                              /* offset_symbol_indices() */
 
-#if 0
-/* swap the entire symbol table - we c*/
-static void 
-swap_raw_symtab(abfd, raw_symtab)
-bfd            *abfd;
-SYMENT         *raw_symtab;
-  {
-    long            i;
-    SYMENT         *end = raw_symtab + bfd_get_symcount(abfd);
-    for (; raw_symtab < end; ++raw_symtab) {
-      bfd_coff_swap_sym(abfd, raw_symtab);
-      
-      for (i = raw_symtab->n_numaux; i; --i, ++raw_symtab) {
-       bfd_coff_swap_aux(abfd,
-                         (AUXENT *)(raw_symtab + 1),
-                         raw_symtab->n_type,
-                         raw_symtab->n_sclass);
-      }                                /* swap all the aux entries */
-    }                          /* walk the symbol table */
-    
-    return;
-  }                            /* swap_raw_symtab() */
-#endif
 /*
 read a symbol table into freshly mallocated memory, swap it, and knit the
 symbol names into a normalized form. By normalized here I mean that all
@@ -1901,9 +1877,9 @@ bfd            *abfd)
   /* Swap all the raw entries */
   for (raw_src = raw, internal_ptr = internal; raw_src < raw_end; raw_src++, internal_ptr++) {
     unsigned int i;
-    bfd_coff_swap_sym_in(abfd, raw_src,internal_ptr);    
+    coff_swap_sym_in(abfd, raw_src,internal_ptr);    
     for (i = internal_ptr->n_numaux; i; --i, raw_src++, internal_ptr++) {
-      bfd_coff_swap_aux_in(abfd, (AUXENT *)(raw_src +1), internal_ptr->n_type,
+      coff_swap_aux_in(abfd, (AUXENT *)(raw_src +1), internal_ptr->n_type,
                           internal_ptr->n_sclass, (union
                                                    internal_auxent *)(internal_ptr +1));
     }
@@ -2043,7 +2019,7 @@ asection       *asect;
       
       while (counter < asect->lineno_count) {
        struct internal_lineno dst;
-       bfd_coff_swap_lineno_in(abfd, src, &dst);
+       coff_swap_lineno_in(abfd, src, &dst);
        cache_ptr->line_number = dst.l_lnno;
        
        if (cache_ptr->line_number == 0) {
@@ -2071,52 +2047,6 @@ asection       *asect;
     return true;
   }                            /* coff_slurp_line_table() */
 
-#if 0
-static struct internal_syment  *
-DEFUN(find_next_file_symbol,(abfd, current, end),
-      bfd *abfd AND
-      struct internal_syment *current AND
-      struct internal_syment *end)
-{
-  current += current->n_numaux + 1;
-    
-  while (current < end) {
-    if (current->n_sclass== C_FILE) {
-      return (current);
-    }  
-    current += current->n_numaux + 1;
-  }
-  return end;
-}
-#endif
-
-/*
-Note that C_FILE symbols can, and some do, have more than 1 aux entry.
-*/
-#if 0
-static void
-DEFUN(force_indices_file_symbol_relative,(abfd, symtab),
-      bfd            *abfd AND
-     struct internal_syment         *symtab)
-{
-  struct internal_syment         *end = symtab + bfd_get_symcount(abfd);
-  struct internal_syment         *current;
-  struct internal_syment         *next;
-  /* the first symbol had damn well better be a C_FILE. */
-  BFD_ASSERT(symtab->n_sclass == C_FILE);
-    
-  for (current = find_next_file_symbol(abfd, symtab, end);
-       current < end;
-       current = next) {
-    offset_symbol_indices(abfd, current,
-                         ((next =
-                           find_next_file_symbol(abfd, current,
-                                                 end)) - current),
-                         symtab - current);
-  }
-  return;
-}      
-#endif
 static          boolean
 DEFUN(coff_slurp_symbol_table,(abfd),
       bfd            *abfd)
index 2d102082469c36a7d3c286cac9b52ba5c304af9e..da6a563ef67d4ce7fb72203c3f291d8d4fb63c71 100644 (file)
@@ -514,7 +514,7 @@ typedef struct bfd_target
   /* All the standard stuff */
   SDEF (boolean, _close_and_cleanup, (bfd *)); /* free any allocated data */
   SDEF (boolean, _bfd_set_section_contents, (bfd *, sec_ptr, PTR,
-                                           file_ptr, bfd_size_type));
+                                            file_ptr, bfd_size_type));
   SDEF (boolean, _bfd_get_section_contents, (bfd *, sec_ptr, PTR, 
                                             file_ptr, bfd_size_type));
   SDEF (boolean, _new_section_hook, (bfd *, sec_ptr));
@@ -542,6 +542,26 @@ typedef struct bfd_target
   SDEF (int,    _bfd_stat_arch_elt, (bfd *, struct stat *));
 
   SDEF (int,    _bfd_sizeof_headers, (bfd *, boolean));
+
+  /* Jumps for coff swapping */
+
+  SDEF(void, _bfd_coff_swap_aux_in,(
+       bfd            *abfd ,
+       AUXENT    *ext ,
+       int             type,
+       int             class ,
+       union internal_auxent  *in));
+
+  SDEF(void, _bfd_coff_swap_sym_in,(
+       bfd            *abfd ,
+       SYMENT *ext ,
+       struct internal_syment      *in));
+
+  SDEF(void, _bfd_coff_swap_lineno_in,(
+       bfd            *abfd,
+       LINENO *ext,
+       struct internal_lineno      *in));
+
 } bfd_target;
 \f
 /* The code that implements targets can initialize a jump table with this
@@ -582,6 +602,8 @@ CAT(NAME,_openr_next_archived_file),\
 CAT(NAME,_find_nearest_line),\
 CAT(NAME,_generic_stat_arch_elt),\
 CAT(NAME,_sizeof_headers)
+
+#define COFF_SWAP_TABLE coff_swap_aux_in, coff_swap_sym_in, coff_swap_lineno_in,
 \f
 /* User program access to BFD facilities */
 
@@ -762,6 +784,14 @@ PROTO(boolean,     bfd_scan_arch_mach,(CONST char *, enum bfd_architecture *,
 #define bfd_canonicalize_symtab(abfd, location) \
      BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
 
+#define bfd_coff_swap_lineno_in(abfd, ext, in) \
+  BFD_SEND(abfd, _bfd_coff_swap_lineno_in, (abfd, ext, in))
+
+#define bfd_coff_swap_sym_in(abfd, ext, in) \
+  BFD_SEND(abfd, _bfd_coff_swap_sym_in,(abfd, ext, in))
+
+#define bfd_coff_swap_aux_in(abfd, ext, type, class, in) \
+  BFD_SEND(abfd, _bfd_coff_swap_aux_in,(abfd, ext, type, class, in))
 
 #define bfd_make_empty_symbol(abfd) \
      BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
index 8b0464f858c5a77321b1b6878d37b3e747e6bedf..30655616783ec3fed6f228b1bac61594a05857f5 100755 (executable)
@@ -283,9 +283,9 @@ struct internal_syment {
 #define DT_FCN         (2)     /* function */
 #define DT_ARY         (3)     /* array */
 
-#define N_BTMASK       (0x1f)
-#define N_TMASK                (0x60)
-#define N_BTSHFT       (5)
+#define N_BTMASK       (0xf)
+#define N_TMASK                (0x30)
+#define N_BTSHFT       (4)
 #define N_TSHIFT       (2)
   
 #define BTYPE(x)       ((x) & N_BTMASK)