Update ARC instruction data-base.
[deliverable/binutils-gdb.git] / bfd / coff-i960.c
index 928315f97517ad98b2ec784dc489775e91cf4f62..96704c68e116db49e15a034e8cd60f275f43a8ff 100644 (file)
@@ -1,7 +1,5 @@
 /* BFD back-end for Intel 960 COFF files.
 /* BFD back-end for Intel 960 COFF files.
-   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1997, 1999, 2000, 2001,
-   2002, 2003, 2004, 2005, 2007, 2008, 2009, 2011
-   Free Software Foundation, Inc.
+   Copyright (C) 1990-2016 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
 
 #include "libcoff.h"           /* To allow easier abstraction-breaking.  */
 
 
 #include "libcoff.h"           /* To allow easier abstraction-breaking.  */
 
-static bfd_boolean coff_i960_is_local_label_name
-  PARAMS ((bfd *, const char *));
-static bfd_reloc_status_type optcall_callback
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-static bfd_reloc_status_type coff_i960_relocate
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-static reloc_howto_type *coff_i960_reloc_type_lookup
-  PARAMS ((bfd *, bfd_reloc_code_real_type));
-static bfd_boolean coff_i960_start_final_link
-  PARAMS ((bfd *, struct bfd_link_info *));
-static bfd_boolean coff_i960_relocate_section
-  PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
-          struct internal_reloc *, struct internal_syment *, asection **));
-static bfd_boolean coff_i960_adjust_symndx
-  PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *,
-          struct internal_reloc *, bfd_boolean *));
 
 #define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
 #define COFF_ALIGN_IN_SECTION_HEADER 1
 
 #define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
 #define COFF_ALIGN_IN_SECTION_HEADER 1
@@ -68,9 +50,7 @@ static bfd_boolean coff_i960_adjust_symndx
 /* This set of local label names is taken from gas.  */
 
 static bfd_boolean
 /* This set of local label names is taken from gas.  */
 
 static bfd_boolean
-coff_i960_is_local_label_name (abfd, name)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     const char *name;
+coff_i960_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name)
 {
   return (name[0] == 'L'
          || (name[0] == '.'
 {
   return (name[0] == 'L'
          || (name[0] == '.'
@@ -82,22 +62,22 @@ coff_i960_is_local_label_name (abfd, name)
 /* This is just like the usual CALC_ADDEND, but it includes the
    section VMA for PC relative relocs.  */
 #ifndef CALC_ADDEND
 /* This is just like the usual CALC_ADDEND, but it includes the
    section VMA for PC relative relocs.  */
 #ifndef CALC_ADDEND
-#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr)                \
-  {                                                             \
-    coff_symbol_type *coffsym = (coff_symbol_type *) NULL;      \
-    if (ptr && bfd_asymbol_bfd (ptr) != abfd)                   \
-      coffsym = (obj_symbols (abfd)                             \
-                 + (cache_ptr->sym_ptr_ptr - symbols));         \
-    else if (ptr)                                               \
-      coffsym = coff_symbol_from (abfd, ptr);                   \
-    if (coffsym != (coff_symbol_type *) NULL                    \
-        && coffsym->native->u.syment.n_scnum == 0)              \
-      cache_ptr->addend = 0;                                    \
-    else if (ptr && bfd_asymbol_bfd (ptr) == abfd               \
-             && ptr->section != (asection *) NULL)              \
-      cache_ptr->addend = - (ptr->section->vma + ptr->value);   \
-    else                                                        \
-      cache_ptr->addend = 0;                                    \
+#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr)               \
+  {                                                            \
+    coff_symbol_type *coffsym = (coff_symbol_type *) NULL;     \
+    if (ptr && bfd_asymbol_bfd (ptr) != abfd)                  \
+      coffsym = (obj_symbols (abfd)                            \
+                + (cache_ptr->sym_ptr_ptr - symbols));         \
+    else if (ptr)                                              \
+      coffsym = coff_symbol_from (ptr);                                \
+    if (coffsym != (coff_symbol_type *) NULL                   \
+       && coffsym->native->u.syment.n_scnum == 0)              \
+      cache_ptr->addend = 0;                                   \
+    else if (ptr && bfd_asymbol_bfd (ptr) == abfd              \
+            && ptr->section != (asection *) NULL)              \
+      cache_ptr->addend = - (ptr->section->vma + ptr->value);  \
+    else                                                       \
+      cache_ptr->addend = 0;                                   \
     if (ptr && (reloc.r_type == 25 || reloc.r_type == 27))     \
       cache_ptr->addend += asect->vma;                         \
   }
     if (ptr && (reloc.r_type == 25 || reloc.r_type == 27))     \
       cache_ptr->addend += asect->vma;                         \
   }
@@ -108,15 +88,13 @@ coff_i960_is_local_label_name (abfd, name)
 #define BAL_MASK 0x00ffffff
 
 static bfd_reloc_status_type
 #define BAL_MASK 0x00ffffff
 
 static bfd_reloc_status_type
-optcall_callback (abfd, reloc_entry, symbol_in, data,
-                 input_section, ignore_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol_in;
-     PTR data;
-     asection *input_section;
-     bfd *ignore_bfd ATTRIBUTE_UNUSED;
-     char **error_message;
+optcall_callback (bfd *abfd,
+                 arelent *reloc_entry,
+                 asymbol *symbol_in,
+                 void * data,
+                 asection *input_section,
+                 bfd *ignore_bfd ATTRIBUTE_UNUSED,
+                 char **error_message)
 {
   /* This item has already been relocated correctly, but we may be
    * able to patch in yet better code - done by digging out the
 {
   /* This item has already been relocated correctly, but we may be
    * able to patch in yet better code - done by digging out the
@@ -198,15 +176,13 @@ optcall_callback (abfd, reloc_entry, symbol_in, data,
    COFF specific backend linker.  */
 
 static bfd_reloc_status_type
    COFF specific backend linker.  */
 
 static bfd_reloc_status_type
-coff_i960_relocate (abfd, reloc_entry, symbol, data, input_section,
-                   output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data ATTRIBUTE_UNUSED;
-     asection *input_section ATTRIBUTE_UNUSED;
-     bfd *output_bfd;
-     char **error_message ATTRIBUTE_UNUSED;
+coff_i960_relocate (bfd *abfd,
+                   arelent *reloc_entry,
+                   asymbol *symbol,
+                   void * data ATTRIBUTE_UNUSED,
+                   asection *input_section ATTRIBUTE_UNUSED,
+                   bfd *output_bfd,
+                   char **error_message ATTRIBUTE_UNUSED)
 {
   asection *osec;
 
 {
   asection *osec;
 
@@ -261,11 +237,11 @@ coff_i960_relocate (abfd, reloc_entry, symbol, data, input_section,
       if (coff_section_data (output_bfd, osec) == NULL)
        {
          bfd_size_type amt = sizeof (struct coff_section_tdata);
       if (coff_section_data (output_bfd, osec) == NULL)
        {
          bfd_size_type amt = sizeof (struct coff_section_tdata);
-         osec->used_by_bfd = (PTR) bfd_zalloc (abfd, amt);
+         osec->used_by_bfd = bfd_zalloc (abfd, amt);
          if (osec->used_by_bfd == NULL)
            return bfd_reloc_overflow;
        }
          if (osec->used_by_bfd == NULL)
            return bfd_reloc_overflow;
        }
-      coff_section_data (output_bfd, osec)->tdata = (PTR) syms;
+      coff_section_data (output_bfd, osec)->tdata = syms;
     }
 
   /* Let bfd_perform_relocation do its thing, which will include
     }
 
   /* Let bfd_perform_relocation do its thing, which will include
@@ -285,9 +261,8 @@ static reloc_howto_type howto_optcall =
         optcall_callback, "optcall", TRUE, 0x00ffffff, 0x00ffffff, 0);
 
 static reloc_howto_type *
         optcall_callback, "optcall", TRUE, 0x00ffffff, 0x00ffffff, 0);
 
 static reloc_howto_type *
-coff_i960_reloc_type_lookup (abfd, code)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     bfd_reloc_code_real_type code;
+coff_i960_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+                            bfd_reloc_code_real_type code)
 {
   switch (code)
     {
 {
   switch (code)
     {
@@ -341,15 +316,13 @@ coff_i960_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
    necessary symbols.  */
 
 static bfd_boolean
    necessary symbols.  */
 
 static bfd_boolean
-coff_i960_start_final_link (abfd, info)
-     bfd *abfd;
-     struct bfd_link_info *info;
+coff_i960_start_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   bfd_size_type symesz = bfd_coff_symesz (abfd);
   asection *o;
   bfd_byte *esym;
 
 {
   bfd_size_type symesz = bfd_coff_symesz (abfd);
   asection *o;
   bfd_byte *esym;
 
-  if (! info->relocatable)
+  if (! bfd_link_relocatable (info))
     return TRUE;
 
   esym = (bfd_byte *) bfd_malloc (symesz);
     return TRUE;
 
   esym = (bfd_byte *) bfd_malloc (symesz);
@@ -370,7 +343,7 @@ coff_i960_start_final_link (abfd, info)
       isym.n_sclass = C_STAT;
       isym.n_numaux = 0;
 
       isym.n_sclass = C_STAT;
       isym.n_numaux = 0;
 
-      bfd_coff_swap_sym_out (abfd, (PTR) &isym, (PTR) esym);
+      bfd_coff_swap_sym_out (abfd, &isym, esym);
 
       if (bfd_bwrite (esym, symesz, abfd) != symesz)
        {
 
       if (bfd_bwrite (esym, symesz, abfd) != symesz)
        {
@@ -389,16 +362,14 @@ coff_i960_start_final_link (abfd, info)
 /* The reloc processing routine for the optimized COFF linker.  */
 
 static bfd_boolean
 /* The reloc processing routine for the optimized COFF linker.  */
 
 static bfd_boolean
-coff_i960_relocate_section (output_bfd, info, input_bfd, input_section,
-                           contents, relocs, syms, sections)
-     bfd *output_bfd ATTRIBUTE_UNUSED;
-     struct bfd_link_info *info;
-     bfd *input_bfd;
-     asection *input_section;
-     bfd_byte *contents;
-     struct internal_reloc *relocs;
-     struct internal_syment *syms;
-     asection **sections;
+coff_i960_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
+                           struct bfd_link_info *info,
+                           bfd *input_bfd,
+                           asection *input_section,
+                           bfd_byte *contents,
+                           struct internal_reloc *relocs,
+                           struct internal_syment *syms,
+                           asection **sections)
 {
   struct internal_reloc *rel;
   struct internal_reloc *relend;
 {
   struct internal_reloc *rel;
   struct internal_reloc *relend;
@@ -476,7 +447,7 @@ coff_i960_relocate_section (output_bfd, info, input_bfd, input_section,
                     + sec->output_section->vma
                     + sec->output_offset);
            }
                     + sec->output_section->vma
                     + sec->output_offset);
            }
-         else if (! info->relocatable)
+         else if (! bfd_link_relocatable (info))
            {
              if (! ((*info->callbacks->undefined_symbol)
                     (info, h->root.root.string, input_bfd, input_section,
            {
              if (! ((*info->callbacks->undefined_symbol)
                     (info, h->root.root.string, input_bfd, input_section,
@@ -487,7 +458,7 @@ coff_i960_relocate_section (output_bfd, info, input_bfd, input_section,
 
       done = FALSE;
 
 
       done = FALSE;
 
-      if (howto->type == R_OPTCALL && ! info->relocatable && symndx != -1)
+      if (howto->type == R_OPTCALL && ! bfd_link_relocatable (info) && symndx != -1)
        {
          int class_val;
 
        {
          int class_val;
 
@@ -530,9 +501,9 @@ coff_i960_relocate_section (output_bfd, info, input_bfd, input_section,
                    BFD_ASSERT (sym->n_numaux == 2);
                    esyms = (bfd_byte *) obj_coff_external_syms (input_bfd);
                    esyms += (symndx + 2) * bfd_coff_symesz (input_bfd);
                    BFD_ASSERT (sym->n_numaux == 2);
                    esyms = (bfd_byte *) obj_coff_external_syms (input_bfd);
                    esyms += (symndx + 2) * bfd_coff_symesz (input_bfd);
-                   bfd_coff_swap_aux_in (input_bfd, (PTR) esyms, sym->n_type,
+                   bfd_coff_swap_aux_in (input_bfd, esyms, sym->n_type,
                                          sym->n_sclass, 1, sym->n_numaux,
                                          sym->n_sclass, 1, sym->n_numaux,
-                                         (PTR) &aux);
+                                         &aux);
                    olf = aux.x_bal.x_balntry;
                  }
 
                    olf = aux.x_bal.x_balntry;
                  }
 
@@ -601,13 +572,12 @@ coff_i960_relocate_section (output_bfd, info, input_bfd, input_section,
    for the section.  */
 
 static bfd_boolean
    for the section.  */
 
 static bfd_boolean
-coff_i960_adjust_symndx (obfd, info, ibfd, sec, irel, adjustedp)
-     bfd *obfd ATTRIBUTE_UNUSED;
-     struct bfd_link_info *info ATTRIBUTE_UNUSED;
-     bfd *ibfd;
-     asection *sec ATTRIBUTE_UNUSED;
-     struct internal_reloc *irel;
-     bfd_boolean *adjustedp;
+coff_i960_adjust_symndx (bfd *obfd ATTRIBUTE_UNUSED,
+                        struct bfd_link_info *info ATTRIBUTE_UNUSED,
+                        bfd *ibfd,
+                        asection *sec ATTRIBUTE_UNUSED,
+                        struct internal_reloc *irel,
+                        bfd_boolean *adjustedp)
 {
   struct coff_link_hash_entry *h;
 
 {
   struct coff_link_hash_entry *h;
 
@@ -638,11 +608,11 @@ coff_i960_adjust_symndx (obfd, info, ibfd, sec, irel, adjustedp)
 
 #include "coffcode.h"
 
 
 #include "coffcode.h"
 
-extern const bfd_target icoff_big_vec;
+extern const bfd_target icoff_be_vec;
 
 
-CREATE_LITTLE_COFF_TARGET_VEC (icoff_little_vec, "coff-Intel-little", 0, 0, '_', & icoff_big_vec, COFF_SWAP_TABLE)
+CREATE_LITTLE_COFF_TARGET_VEC (icoff_le_vec, "coff-Intel-little", 0, 0, '_', & icoff_be_vec, COFF_SWAP_TABLE)
 
 
-const bfd_target icoff_big_vec =
+const bfd_target icoff_be_vec =
 {
   "coff-Intel-big",            /* name */
   bfd_target_coff_flavour,
 {
   "coff-Intel-big",            /* name */
   bfd_target_coff_flavour,
@@ -683,7 +653,7 @@ bfd_getb64, bfd_getb_signed_64, bfd_putb64,
      BFD_JUMP_TABLE_LINK (coff),
      BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
 
      BFD_JUMP_TABLE_LINK (coff),
      BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
 
-  & icoff_little_vec,
+  & icoff_le_vec,
 
   COFF_SWAP_TABLE
 };
 
   COFF_SWAP_TABLE
 };
This page took 0.027773 seconds and 4 git commands to generate.