import gdb-2000-01-17 snapshot
[external/binutils.git] / bfd / coff-rs6000.c
index ba879d2..6923000 100644 (file)
@@ -1,5 +1,6 @@
 /* BFD back-end for IBM RS/6000 "XCOFF" files.
-   Copyright 1990, 91, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
+   Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+   Free Software Foundation, Inc.
    FIXME: Can someone provide a transliteration of this name into ASCII?
    Using the following chars caused a compiler warning on HIUX (so I replaced
    them with octal escapes), and isn't useful without an understanding of what
@@ -53,6 +54,7 @@ static const char *normalize_filename PARAMS ((bfd *));
 static boolean xcoff_write_armap
   PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int));
 static boolean xcoff_write_archive_contents PARAMS ((bfd *));
+static int _bfd_xcoff_sizeof_headers PARAMS ((bfd *, boolean));
 \f
 /* We use our own tdata type.  Its first field is the COFF tdata type,
    so the COFF routines are compatible.  */
@@ -138,8 +140,8 @@ xcoff_copy_private_bfd_data (ibfd, obfd)
 
 static boolean
 xcoff_is_local_label_name (abfd, name)
-     bfd *abfd;
-     const char *name;
+     bfd *abfd ATTRIBUTE_UNUSED;
+     const char *name ATTRIBUTE_UNUSED;
 {
   return false;
 }
@@ -257,7 +259,7 @@ static reloc_howto_type xcoff_howto_table[] =
         0xffff,                /* dst_mask */                             
         false),                /* pcrel_offset */
   
-  { 7 },
+  EMPTY_HOWTO (7),
   
   /* Non modifiable absolute branch.  */
   HOWTO (8,                    /* type */                                 
@@ -274,7 +276,7 @@ static reloc_howto_type xcoff_howto_table[] =
         0x3fffffc,             /* dst_mask */                             
         false),                /* pcrel_offset */
   
-  { 9 },
+  EMPTY_HOWTO (9),
 
   /* Non modifiable relative branch.  */
   HOWTO (0xa,                  /* type */                                 
@@ -291,7 +293,7 @@ static reloc_howto_type xcoff_howto_table[] =
         0x3fffffc,             /* dst_mask */                             
         false),                /* pcrel_offset */
   
-  { 0xb },
+  EMPTY_HOWTO (0xb),
 
   /* Indirect load.  */
   HOWTO (0xc,                  /* type */                                 
@@ -323,7 +325,7 @@ static reloc_howto_type xcoff_howto_table[] =
         0xffff,                /* dst_mask */                             
         false),                /* pcrel_offset */
   
-  { 0xe },
+  EMPTY_HOWTO (0xe),
   
   /* Non-relocating reference.  */
   HOWTO (0xf,                  /* type */                                 
@@ -340,8 +342,8 @@ static reloc_howto_type xcoff_howto_table[] =
         0,                     /* dst_mask */                             
         false),                /* pcrel_offset */
   
-  { 0x10 },
-  { 0x11 },
+  EMPTY_HOWTO (0x10),
+  EMPTY_HOWTO (0x11),
   
   /* TOC relative indirect load.  */
   HOWTO (0x12,                 /* type */                                 
@@ -517,7 +519,7 @@ xcoff_rtype2howto (relent, internal)
 
 static reloc_howto_type *
 xcoff_reloc_type_lookup (abfd, code)
-     bfd *abfd;
+     bfd *abfd ATTRIBUTE_UNUSED;
      bfd_reloc_code_real_type code;
 {
   switch (code)
@@ -850,7 +852,7 @@ xcoff_read_ar_hdr (abfd)
     return NULL;
 
   namlen = strtol (hdr.namlen, (char **) NULL, 10);
-  hdrp = bfd_alloc (abfd, SIZEOF_AR_HDR + namlen + 1);
+  hdrp = (struct xcoff_ar_hdr *) bfd_alloc (abfd, SIZEOF_AR_HDR + namlen + 1);
   if (hdrp == NULL)
     return NULL;
   memcpy (hdrp, &hdr, SIZEOF_AR_HDR);
@@ -955,7 +957,7 @@ normalize_filename (abfd)
 static boolean
 xcoff_write_armap (abfd, elength, map, orl_count, stridx)
      bfd *abfd;
-     unsigned int elength;
+     unsigned int elength ATTRIBUTE_UNUSED;
      struct orl *map;
      unsigned int orl_count;
      int stridx;
@@ -1122,8 +1124,7 @@ xcoff_write_archive_contents (abfd)
 
          if (sub->arelt_data == NULL)
            {
-             sub->arelt_data = ((struct areltdata *)
-                                bfd_alloc (sub, sizeof (struct areltdata)));
+             sub->arelt_data = bfd_alloc (sub, sizeof (struct areltdata));
              if (sub->arelt_data == NULL)
                return false;
            }
@@ -1293,7 +1294,7 @@ xcoff_write_archive_contents (abfd)
 static int
 _bfd_xcoff_sizeof_headers (abfd, reloc)
      bfd *abfd;
-     boolean reloc;
+     boolean reloc ATTRIBUTE_UNUSED;
 {
   int size;
 
@@ -1360,6 +1361,7 @@ extern int lynx_core_file_failing_signal PARAMS ((bfd *abfd));
 #define _bfd_xcoff_bfd_get_relocated_section_contents \
   coff_bfd_get_relocated_section_contents
 #define _bfd_xcoff_bfd_relax_section coff_bfd_relax_section
+#define _bfd_xcoff_bfd_gc_sections coff_bfd_gc_sections
 #define _bfd_xcoff_bfd_link_split_section coff_bfd_link_split_section
 
 /* The transfer vector that leads the outside world to all of the above. */
@@ -1413,5 +1415,7 @@ const bfd_target
      BFD_JUMP_TABLE_LINK (_bfd_xcoff),
      BFD_JUMP_TABLE_DYNAMIC (_bfd_xcoff),
 
-  COFF_SWAP_TABLE,
+  NULL,
+  
+  COFF_SWAP_TABLE
 };