2004-05-14 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / bfd / elf64-mips.c
index 4422ade8887f9cd07e79052467c2fd127aada79a..fa3b494b998b99680be797c7d6ba10d3a5bf1687 100644 (file)
@@ -62,79 +62,72 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "ecoffswap.h"
 
 static void mips_elf64_swap_reloc_in
-  PARAMS ((bfd *, const Elf64_Mips_External_Rel *,
-          Elf64_Mips_Internal_Rela *));
+  (bfd *, const Elf64_Mips_External_Rel *, Elf64_Mips_Internal_Rela *);
 static void mips_elf64_swap_reloca_in
-  PARAMS ((bfd *, const Elf64_Mips_External_Rela *,
-          Elf64_Mips_Internal_Rela *));
+  (bfd *, const Elf64_Mips_External_Rela *, Elf64_Mips_Internal_Rela *);
 static void mips_elf64_swap_reloc_out
-  PARAMS ((bfd *, const Elf64_Mips_Internal_Rela *,
-          Elf64_Mips_External_Rel *));
+  (bfd *, const Elf64_Mips_Internal_Rela *, Elf64_Mips_External_Rel *);
 static void mips_elf64_swap_reloca_out
-  PARAMS ((bfd *, const Elf64_Mips_Internal_Rela *,
-          Elf64_Mips_External_Rela *));
+  (bfd *, const Elf64_Mips_Internal_Rela *, Elf64_Mips_External_Rela *);
 static void mips_elf64_be_swap_reloc_in
-  PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *));
+  (bfd *, const bfd_byte *, Elf_Internal_Rela *);
 static void mips_elf64_be_swap_reloc_out
-  PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *));
+  (bfd *, const Elf_Internal_Rela *, bfd_byte *);
 static void mips_elf64_be_swap_reloca_in
-  PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *));
+  (bfd *, const bfd_byte *, Elf_Internal_Rela *);
 static void mips_elf64_be_swap_reloca_out
-  PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *));
+  (bfd *, const Elf_Internal_Rela *, bfd_byte *);
 static reloc_howto_type *bfd_elf64_bfd_reloc_type_lookup
-  PARAMS ((bfd *, bfd_reloc_code_real_type));
+  (bfd *, bfd_reloc_code_real_type);
 static reloc_howto_type *mips_elf64_rtype_to_howto
-  PARAMS ((unsigned int, bfd_boolean));
+  (unsigned int, bfd_boolean);
 static void mips_elf64_info_to_howto_rel
-  PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
+  (bfd *, arelent *, Elf_Internal_Rela *);
 static void mips_elf64_info_to_howto_rela
-  PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
+  (bfd *, arelent *, Elf_Internal_Rela *);
 static long mips_elf64_get_reloc_upper_bound
-  PARAMS ((bfd *, asection *));
+  (bfd *, asection *);
 static long mips_elf64_canonicalize_reloc
-  PARAMS ((bfd *, asection *, arelent **, asymbol **));
-static long mips_elf64_get_dynamic_reloc_upper_bound PARAMS ((bfd *));
+  (bfd *, asection *, arelent **, asymbol **);
+static long mips_elf64_get_dynamic_reloc_upper_bound
+  (bfd *);
 static long mips_elf64_canonicalize_dynamic_reloc
-  PARAMS ((bfd *, arelent **, asymbol **));
+  (bfd *, arelent **, asymbol **);
 static bfd_boolean mips_elf64_slurp_one_reloc_table
-  PARAMS ((bfd *, asection *, Elf_Internal_Shdr *, bfd_size_type,
-          arelent *, asymbol **, bfd_boolean));
+  (bfd *, asection *, Elf_Internal_Shdr *, bfd_size_type, arelent *,
+   asymbol **, bfd_boolean);
 static bfd_boolean mips_elf64_slurp_reloc_table
-  PARAMS ((bfd *, asection *, asymbol **, bfd_boolean));
+  (bfd *, asection *, asymbol **, bfd_boolean);
 static void mips_elf64_write_relocs
-  PARAMS ((bfd *, asection *, PTR));
+  (bfd *, asection *, void *);
 static void mips_elf64_write_rel
-  PARAMS((bfd *, asection *, Elf_Internal_Shdr *, int *, PTR));
+  (bfd *, asection *, Elf_Internal_Shdr *, int *, void *);
 static void mips_elf64_write_rela
-  PARAMS((bfd *, asection *, Elf_Internal_Shdr *, int *, PTR));
-static bfd_reloc_status_type mips_elf64_hi16_reloc
-  PARAMS ((bfd *, arelent *, asymbol *,        PTR, asection *, bfd *, char **));
+  (bfd *, asection *, Elf_Internal_Shdr *, int *, void *);
 static bfd_reloc_status_type mips_elf64_gprel16_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type mips_elf64_literal_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type mips_elf64_gprel32_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type mips_elf64_shift6_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-static bfd_reloc_status_type mips_elf64_got16_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type mips16_jump_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type mips16_gprel_reloc
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_boolean mips_elf64_assign_gp
-  PARAMS ((bfd *, bfd_vma *));
+  (bfd *, bfd_vma *);
 static bfd_reloc_status_type mips_elf64_final_gp
-  PARAMS ((bfd *, asymbol *, bfd_boolean, char **, bfd_vma *));
+  (bfd *, asymbol *, bfd_boolean, char **, bfd_vma *);
 static bfd_boolean mips_elf64_object_p
-  PARAMS ((bfd *));
+  (bfd *);
 static irix_compat_t elf64_mips_irix_compat
-  PARAMS ((bfd *));
+  (bfd *);
 static bfd_boolean elf64_mips_grok_prstatus
-  PARAMS ((bfd *, Elf_Internal_Note *));
+  (bfd *, Elf_Internal_Note *);
 static bfd_boolean elf64_mips_grok_psinfo
-  PARAMS ((bfd *, Elf_Internal_Note *));
+  (bfd *, Elf_Internal_Note *);
 
 extern const bfd_target bfd_elf64_bigmips_vec;
 extern const bfd_target bfd_elf64_littlemips_vec;
@@ -158,7 +151,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_NONE",         /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -173,7 +166,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_16",           /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -188,7 +181,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_32",           /* name */
         TRUE,                  /* partial_inplace */
         0xffffffff,            /* src_mask */
@@ -203,7 +196,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_REL32",        /* name */
         TRUE,                  /* partial_inplace */
         0xffffffff,            /* src_mask */
@@ -221,7 +214,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
                                /* This needs complex overflow
                                   detection, because the upper 36
                                   bits must match the PC + 4.  */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_26",           /* name */
         TRUE,                  /* partial_inplace */
         0x03ffffff,            /* src_mask */
@@ -233,13 +226,13 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_MIPS_HI16,          /* type */
-        0,                     /* rightshift */
+        16,                    /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
         16,                    /* bitsize */
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        mips_elf64_hi16_reloc, /* special_function */
+        _bfd_mips_elf_hi16_reloc, /* special_function */
         "R_MIPS_HI16",         /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -254,7 +247,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_lo16_reloc, /* special_function */
         "R_MIPS_LO16",         /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -299,7 +292,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        mips_elf64_got16_reloc, /* special_function */
+        _bfd_mips_elf_got16_reloc, /* special_function */
         "R_MIPS_GOT16",        /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -314,7 +307,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         TRUE,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_PC16",         /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -329,7 +322,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_CALL16",       /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -363,7 +356,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         6,                     /* bitpos */
         complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_SHIFT5",       /* name */
         TRUE,                  /* partial_inplace */
         0x000007c0,            /* src_mask */
@@ -393,7 +386,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_64",           /* name */
         TRUE,                  /* partial_inplace */
         MINUS_ONE,             /* src_mask */
@@ -408,7 +401,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GOT_DISP",     /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -423,7 +416,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GOT_PAGE",     /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -438,7 +431,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GOT_OFST",     /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -453,7 +446,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GOT_HI16",     /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -468,7 +461,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GOT_LO16",     /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -483,7 +476,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_SUB",          /* name */
         TRUE,                  /* partial_inplace */
         MINUS_ONE,             /* src_mask */
@@ -499,7 +492,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_INSERT_A",     /* name */
         TRUE,                  /* partial_inplace */
         0xffffffff,            /* src_mask */
@@ -516,7 +509,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_INSERT_B",     /* name */
         TRUE,                  /* partial_inplace */
         0xffffffff,            /* src_mask */
@@ -532,7 +525,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_DELETE",       /* name */
         TRUE,                  /* partial_inplace */
         0xffffffff,            /* src_mask */
@@ -556,7 +549,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_CALL_HI16",    /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -571,7 +564,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_CALL_LO16",    /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -586,7 +579,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_SCN_DISP",     /* name */
         TRUE,                  /* partial_inplace */
         0xffffffff,            /* src_mask */
@@ -600,7 +593,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_REL16",        /* name */
         TRUE,                  /* partial_inplace */
         0xffff,                /* src_mask */
@@ -620,7 +613,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_RELGOT",       /* name */
         TRUE,                  /* partial_inplace */
         0xffffffff,            /* src_mask */
@@ -636,7 +629,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_JALR",         /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -656,7 +649,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_NONE",         /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -671,7 +664,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_16",           /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -686,7 +679,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_32",           /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -701,7 +694,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_REL32",        /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -719,7 +712,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
                                /* This needs complex overflow
                                   detection, because the upper 36
                                   bits must match the PC + 4.  */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_26",           /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -734,7 +727,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_HI16",         /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -749,7 +742,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_LO16",         /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -794,7 +787,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        mips_elf64_got16_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc, /* special_function */
         "R_MIPS_GOT16",        /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -809,7 +802,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         TRUE,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_PC16",         /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -824,7 +817,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_CALL16",       /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -858,7 +851,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         6,                     /* bitpos */
         complain_overflow_bitfield, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_SHIFT5",       /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -888,7 +881,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_64",           /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -903,7 +896,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GOT_DISP",     /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -918,7 +911,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GOT_PAGE",     /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -933,7 +926,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GOT_OFST",     /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -948,7 +941,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GOT_HI16",     /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -963,7 +956,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GOT_LO16",     /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -978,7 +971,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_SUB",          /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -994,7 +987,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_INSERT_A",     /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1011,7 +1004,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_INSERT_B",     /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1027,7 +1020,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_DELETE",       /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1042,7 +1035,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc, /* special_function */
         "R_MIPS_HIGHER",       /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1057,7 +1050,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc, /* special_function */
         "R_MIPS_HIGHEST",      /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1072,7 +1065,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_CALL_HI16",    /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1087,7 +1080,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_CALL_LO16",    /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1102,7 +1095,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_SCN_DISP",     /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1116,7 +1109,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_REL16",        /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1136,7 +1129,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_RELGOT",       /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1152,7 +1145,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
         FALSE,                 /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_dont, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_JALR",         /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1236,7 +1229,7 @@ static reloc_howto_type elf_mips_gnu_rel16_s2 =
         TRUE,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GNU_REL16_S2", /* name */
         TRUE,                  /* partial_inplace */
         0x0000ffff,            /* src_mask */
@@ -1252,7 +1245,7 @@ static reloc_howto_type elf_mips_gnu_rela16_s2 =
         TRUE,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed, /* complain_on_overflow */
-        bfd_elf_generic_reloc, /* special_function */
+        _bfd_mips_elf_generic_reloc,   /* special_function */
         "R_MIPS_GNU_REL16_S2", /* name */
         FALSE,                 /* partial_inplace */
         0,                     /* src_mask */
@@ -1262,10 +1255,8 @@ static reloc_howto_type elf_mips_gnu_rela16_s2 =
 /* Swap in a MIPS 64-bit Rel reloc.  */
 
 static void
-mips_elf64_swap_reloc_in (abfd, src, dst)
-     bfd *abfd;
-     const Elf64_Mips_External_Rel *src;
-     Elf64_Mips_Internal_Rela *dst;
+mips_elf64_swap_reloc_in (bfd *abfd, const Elf64_Mips_External_Rel *src,
+                         Elf64_Mips_Internal_Rela *dst)
 {
   dst->r_offset = H_GET_64 (abfd, src->r_offset);
   dst->r_sym = H_GET_32 (abfd, src->r_sym);
@@ -1279,10 +1270,8 @@ mips_elf64_swap_reloc_in (abfd, src, dst)
 /* Swap in a MIPS 64-bit Rela reloc.  */
 
 static void
-mips_elf64_swap_reloca_in (abfd, src, dst)
-     bfd *abfd;
-     const Elf64_Mips_External_Rela *src;
-     Elf64_Mips_Internal_Rela *dst;
+mips_elf64_swap_reloca_in (bfd *abfd, const Elf64_Mips_External_Rela *src,
+                          Elf64_Mips_Internal_Rela *dst)
 {
   dst->r_offset = H_GET_64 (abfd, src->r_offset);
   dst->r_sym = H_GET_32 (abfd, src->r_sym);
@@ -1296,10 +1285,8 @@ mips_elf64_swap_reloca_in (abfd, src, dst)
 /* Swap out a MIPS 64-bit Rel reloc.  */
 
 static void
-mips_elf64_swap_reloc_out (abfd, src, dst)
-     bfd *abfd;
-     const Elf64_Mips_Internal_Rela *src;
-     Elf64_Mips_External_Rel *dst;
+mips_elf64_swap_reloc_out (bfd *abfd, const Elf64_Mips_Internal_Rela *src,
+                          Elf64_Mips_External_Rel *dst)
 {
   H_PUT_64 (abfd, src->r_offset, dst->r_offset);
   H_PUT_32 (abfd, src->r_sym, dst->r_sym);
@@ -1312,10 +1299,8 @@ mips_elf64_swap_reloc_out (abfd, src, dst)
 /* Swap out a MIPS 64-bit Rela reloc.  */
 
 static void
-mips_elf64_swap_reloca_out (abfd, src, dst)
-     bfd *abfd;
-     const Elf64_Mips_Internal_Rela *src;
-     Elf64_Mips_External_Rela *dst;
+mips_elf64_swap_reloca_out (bfd *abfd, const Elf64_Mips_Internal_Rela *src,
+                           Elf64_Mips_External_Rela *dst)
 {
   H_PUT_64 (abfd, src->r_offset, dst->r_offset);
   H_PUT_32 (abfd, src->r_sym, dst->r_sym);
@@ -1329,10 +1314,8 @@ mips_elf64_swap_reloca_out (abfd, src, dst)
 /* Swap in a MIPS 64-bit Rel reloc.  */
 
 static void
-mips_elf64_be_swap_reloc_in (abfd, src, dst)
-     bfd *abfd;
-     const bfd_byte *src;
-     Elf_Internal_Rela *dst;
+mips_elf64_be_swap_reloc_in (bfd *abfd, const bfd_byte *src,
+                            Elf_Internal_Rela *dst)
 {
   Elf64_Mips_Internal_Rela mirel;
 
@@ -1354,10 +1337,8 @@ mips_elf64_be_swap_reloc_in (abfd, src, dst)
 /* Swap in a MIPS 64-bit Rela reloc.  */
 
 static void
-mips_elf64_be_swap_reloca_in (abfd, src, dst)
-     bfd *abfd;
-     const bfd_byte *src;
-     Elf_Internal_Rela *dst;
+mips_elf64_be_swap_reloca_in (bfd *abfd, const bfd_byte *src,
+                             Elf_Internal_Rela *dst)
 {
   Elf64_Mips_Internal_Rela mirela;
 
@@ -1379,10 +1360,8 @@ mips_elf64_be_swap_reloca_in (abfd, src, dst)
 /* Swap out a MIPS 64-bit Rel reloc.  */
 
 static void
-mips_elf64_be_swap_reloc_out (abfd, src, dst)
-     bfd *abfd;
-     const Elf_Internal_Rela *src;
-     bfd_byte *dst;
+mips_elf64_be_swap_reloc_out (bfd *abfd, const Elf_Internal_Rela *src,
+                             bfd_byte *dst)
 {
   Elf64_Mips_Internal_Rela mirel;
 
@@ -1405,10 +1384,8 @@ mips_elf64_be_swap_reloc_out (abfd, src, dst)
 /* Swap out a MIPS 64-bit Rela reloc.  */
 
 static void
-mips_elf64_be_swap_reloca_out (abfd, src, dst)
-     bfd *abfd;
-     const Elf_Internal_Rela *src;
-     bfd_byte *dst;
+mips_elf64_be_swap_reloca_out (bfd *abfd, const Elf_Internal_Rela *src,
+                              bfd_byte *dst)
 {
   Elf64_Mips_Internal_Rela mirela;
 
@@ -1430,84 +1407,11 @@ mips_elf64_be_swap_reloca_out (abfd, src, dst)
                              (Elf64_Mips_External_Rela *) dst);
 }
 \f
-/* Do a R_MIPS_HI16 relocation.  */
-
-static bfd_reloc_status_type
-mips_elf64_hi16_reloc (abfd, reloc_entry, symbol, data, input_section,
-                      output_bfd, error_message)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data ATTRIBUTE_UNUSED;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message ATTRIBUTE_UNUSED;
-{
-  /* If we're relocating, and this is an external symbol, we don't
-     want to change anything.  */
-  if (output_bfd != (bfd *) NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (symbol->flags & BSF_LOCAL) != 0)
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (reloc_entry->howto->partial_inplace)
-    {
-      if (((reloc_entry->addend & 0xffff) + 0x8000) & ~0xffff)
-       reloc_entry->addend += 0x8000;
-    }
-
-  return bfd_reloc_continue;
-}
-
-/* Do a R_MIPS_GOT16 reloc.  This is a reloc against the global offset
-   table used for PIC code.  If the symbol is an external symbol, the
-   instruction is modified to contain the offset of the appropriate
-   entry in the global offset table.  If the symbol is a section
-   symbol, the next reloc is a R_MIPS_LO16 reloc.  The two 16 bit
-   addends are combined to form the real addend against the section
-   symbol; the GOT16 is modified to contain the offset of an entry in
-   the global offset table, and the LO16 is modified to offset it
-   appropriately.  Thus an offset larger than 16 bits requires a
-   modified value in the global offset table.
-
-   This implementation suffices for the assembler, but the linker does
-   not yet know how to create global offset tables.  */
-
-static bfd_reloc_status_type
-mips_elf64_got16_reloc (abfd, reloc_entry, symbol, data, input_section,
-                       output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message;
-{
-  /* If we're relocating, and this is a local symbol, we can handle it
-     just like an R_MIPS_HI16.  */
-  if (output_bfd != (bfd *) NULL
-      && ((symbol->flags & BSF_SECTION_SYM) != 0
-         || (symbol->flags & BSF_LOCAL) == 0))
-    return mips_elf64_hi16_reloc (abfd, reloc_entry, symbol, data,
-                                 input_section, output_bfd, error_message);
-
-
-  /* Otherwise we try to handle it as R_MIPS_GOT_DISP.  */
-  return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
-                               input_section, output_bfd, error_message);
-}
-
 /* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
    dangerous relocation.  */
 
 static bfd_boolean
-mips_elf64_assign_gp (output_bfd, pgp)
-     bfd *output_bfd;
-     bfd_vma *pgp;
+mips_elf64_assign_gp (bfd *output_bfd, bfd_vma *pgp)
 {
   unsigned int count;
   asymbol **sym;
@@ -1523,7 +1427,7 @@ mips_elf64_assign_gp (output_bfd, pgp)
 
   /* The linker script will have created a symbol named `_gp' with the
      appropriate value.  */
-  if (sym == (asymbol **) NULL)
+  if (sym == NULL)
     i = count;
   else
     {
@@ -1559,12 +1463,8 @@ mips_elf64_assign_gp (output_bfd, pgp)
    external symbol if we are producing relocatable output.  */
 
 static bfd_reloc_status_type
-mips_elf64_final_gp (output_bfd, symbol, relocatable, error_message, pgp)
-     bfd *output_bfd;
-     asymbol *symbol;
-     bfd_boolean relocatable;
-     char **error_message;
-     bfd_vma *pgp;
+mips_elf64_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable,
+                    char **error_message, bfd_vma *pgp)
 {
   if (bfd_is_und_section (symbol->section)
       && ! relocatable)
@@ -1599,15 +1499,9 @@ mips_elf64_final_gp (output_bfd, symbol, relocatable, error_message, pgp)
    become the offset from the gp register.  */
 
 static bfd_reloc_status_type
-mips_elf64_gprel16_reloc (abfd, reloc_entry, symbol, data, input_section,
-                         output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message;
+mips_elf64_gprel16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+                         void *data, asection *input_section, bfd *output_bfd,
+                         char **error_message)
 {
   bfd_boolean relocatable;
   bfd_reloc_status_type ret;
@@ -1615,7 +1509,7 @@ mips_elf64_gprel16_reloc (abfd, reloc_entry, symbol, data, input_section,
 
   /* If we're relocating, and this is an external symbol, we don't want
      to change anything.  */
-  if (output_bfd != (bfd *) NULL
+  if (output_bfd != NULL
       && (symbol->flags & BSF_SECTION_SYM) == 0
       && (symbol->flags & BSF_LOCAL) != 0)
     {
@@ -1623,7 +1517,7 @@ mips_elf64_gprel16_reloc (abfd, reloc_entry, symbol, data, input_section,
       return bfd_reloc_ok;
     }
 
-  if (output_bfd != (bfd *) NULL)
+  if (output_bfd != NULL)
     relocatable = TRUE;
   else
     {
@@ -1644,15 +1538,9 @@ mips_elf64_gprel16_reloc (abfd, reloc_entry, symbol, data, input_section,
 /* Do a R_MIPS_LITERAL relocation.  */
 
 static bfd_reloc_status_type
-mips_elf64_literal_reloc (abfd, reloc_entry, symbol, data, input_section,
-                         output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message;
+mips_elf64_literal_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+                         void *data, asection *input_section, bfd *output_bfd,
+                         char **error_message)
 {
   bfd_boolean relocatable;
   bfd_reloc_status_type ret;
@@ -1660,7 +1548,7 @@ mips_elf64_literal_reloc (abfd, reloc_entry, symbol, data, input_section,
 
   /* If we're relocating, and this is an external symbol, we don't
      want to change anything.  */
-  if (output_bfd != (bfd *) NULL
+  if (output_bfd != NULL
       && (symbol->flags & BSF_SECTION_SYM) == 0
       && (symbol->flags & BSF_LOCAL) != 0)
     {
@@ -1669,7 +1557,7 @@ mips_elf64_literal_reloc (abfd, reloc_entry, symbol, data, input_section,
     }
 
   /* FIXME: The entries in the .lit8 and .lit4 sections should be merged.  */
-  if (output_bfd != (bfd *) NULL)
+  if (output_bfd != NULL)
     relocatable = TRUE;
   else
     {
@@ -1691,15 +1579,9 @@ mips_elf64_literal_reloc (abfd, reloc_entry, symbol, data, input_section,
    become the offset from the gp register.  */
 
 static bfd_reloc_status_type
-mips_elf64_gprel32_reloc (abfd, reloc_entry, symbol, data, input_section,
-                         output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message;
+mips_elf64_gprel32_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+                         void *data, asection *input_section, bfd *output_bfd,
+                         char **error_message)
 {
   bfd_boolean relocatable;
   bfd_reloc_status_type ret;
@@ -1709,7 +1591,7 @@ mips_elf64_gprel32_reloc (abfd, reloc_entry, symbol, data, input_section,
 
   /* If we're relocating, and this is an external symbol, we don't want
      to change anything.  */
-  if (output_bfd != (bfd *) NULL
+  if (output_bfd != NULL
       && (symbol->flags & BSF_SECTION_SYM) == 0
       && (symbol->flags & BSF_LOCAL) != 0)
     {
@@ -1718,7 +1600,7 @@ mips_elf64_gprel32_reloc (abfd, reloc_entry, symbol, data, input_section,
       return bfd_reloc_outofrange;
     }
 
-  if (output_bfd != (bfd *) NULL)
+  if (output_bfd != NULL)
     relocatable = TRUE;
   else
     {
@@ -1770,49 +1652,30 @@ mips_elf64_gprel32_reloc (abfd, reloc_entry, symbol, data, input_section,
    the rest is at bits 6-10. The bitpos already got right by the howto.  */
 
 static bfd_reloc_status_type
-mips_elf64_shift6_reloc (abfd, reloc_entry, symbol, data, input_section,
-                        output_bfd, error_message)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data ATTRIBUTE_UNUSED;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message ATTRIBUTE_UNUSED;
+mips_elf64_shift6_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+                        void *data, asection *input_section, bfd *output_bfd,
+                        char **error_message)
 {
-  /* If we're relocating, and this is an external symbol, we don't
-     want to change anything.  */
-  if (output_bfd != (bfd *) NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (symbol->flags & BSF_LOCAL) != 0)
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
   if (reloc_entry->howto->partial_inplace)
     {
       reloc_entry->addend = ((reloc_entry->addend & 0x00007c0)
                             | (reloc_entry->addend & 0x00000800) >> 9);
     }
 
-  return bfd_reloc_continue;
+  return _bfd_mips_elf_generic_reloc (abfd, reloc_entry, symbol, data,
+                                     input_section, output_bfd,
+                                     error_message);
 }
 
 /* Handle a mips16 jump.  */
 
 static bfd_reloc_status_type
-mips16_jump_reloc (abfd, reloc_entry, symbol, data, input_section,
-                  output_bfd, error_message)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data ATTRIBUTE_UNUSED;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message ATTRIBUTE_UNUSED;
+mips16_jump_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
+                  asymbol *symbol, void *data ATTRIBUTE_UNUSED,
+                  asection *input_section, bfd *output_bfd,
+                  char **error_message ATTRIBUTE_UNUSED)
 {
-  if (output_bfd != (bfd *) NULL
+  if (output_bfd != NULL
       && (symbol->flags & BSF_SECTION_SYM) == 0
       && (! reloc_entry->howto->partial_inplace
          || reloc_entry->addend == 0))
@@ -1838,15 +1701,9 @@ mips16_jump_reloc (abfd, reloc_entry, symbol, data, input_section,
 /* Handle a mips16 GP relative reloc.  */
 
 static bfd_reloc_status_type
-mips16_gprel_reloc (abfd, reloc_entry, symbol, data, input_section,
-                   output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message;
+mips16_gprel_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+                   void *data, asection *input_section, bfd *output_bfd,
+                   char **error_message)
 {
   bfd_boolean relocatable;
   bfd_reloc_status_type ret;
@@ -1913,13 +1770,10 @@ mips16_gprel_reloc (abfd, reloc_entry, symbol, data, input_section,
   if (reloc_entry->howto->partial_inplace)
     {
       bfd_put_16 (abfd,
-                 (bfd_vma) ((extend & 0xf800)
-                            | ((val >> 11) & 0x1f)
-                            | (val & 0x7e0)),
+                 (extend & 0xf800) | ((val >> 11) & 0x1f) | (val & 0x7e0),
                  (bfd_byte *) data + reloc_entry->address);
       bfd_put_16 (abfd,
-                 (bfd_vma) ((insn & 0xffe0)
-                            | (val & 0x1f)),
+                 (insn & 0xffe0) | (val & 0x1f),
                  (bfd_byte *) data + reloc_entry->address + 2);
     }
   else
@@ -1982,9 +1836,8 @@ static const struct elf_reloc_map mips_reloc_map[] =
 /* Given a BFD reloc type, return a howto structure.  */
 
 static reloc_howto_type *
-bfd_elf64_bfd_reloc_type_lookup (abfd, code)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     bfd_reloc_code_real_type code;
+bfd_elf64_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+                                bfd_reloc_code_real_type code)
 {
   unsigned int i;
   /* FIXME: We default to RELA here instead of choosing the right
@@ -2019,9 +1872,7 @@ bfd_elf64_bfd_reloc_type_lookup (abfd, code)
 /* Given a MIPS Elf_Internal_Rel, fill in an arelent structure.  */
 
 static reloc_howto_type *
-mips_elf64_rtype_to_howto (r_type, rela_p)
-     unsigned int r_type;
-     bfd_boolean rela_p;
+mips_elf64_rtype_to_howto (unsigned int r_type, bfd_boolean rela_p)
 {
   switch (r_type)
     {
@@ -2051,19 +1902,17 @@ mips_elf64_rtype_to_howto (r_type, rela_p)
 /* Prevent relocation handling by bfd for MIPS ELF64.  */
 
 static void
-mips_elf64_info_to_howto_rel (abfd, cache_ptr, dst)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     arelent *cache_ptr ATTRIBUTE_UNUSED;
-     Elf_Internal_Rela *dst ATTRIBUTE_UNUSED;
+mips_elf64_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
+                             arelent *cache_ptr ATTRIBUTE_UNUSED,
+                             Elf_Internal_Rela *dst ATTRIBUTE_UNUSED)
 {
   BFD_ASSERT (0);
 }
 
 static void
-mips_elf64_info_to_howto_rela (abfd, cache_ptr, dst)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     arelent *cache_ptr ATTRIBUTE_UNUSED;
-     Elf_Internal_Rela *dst ATTRIBUTE_UNUSED;
+mips_elf64_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED,
+                              arelent *cache_ptr ATTRIBUTE_UNUSED,
+                              Elf_Internal_Rela *dst ATTRIBUTE_UNUSED)
 {
   BFD_ASSERT (0);
 }
@@ -2072,16 +1921,13 @@ mips_elf64_info_to_howto_rela (abfd, cache_ptr, dst)
    to three relocs, we must tell the user to allocate more space.  */
 
 static long
-mips_elf64_get_reloc_upper_bound (abfd, sec)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     asection *sec;
+mips_elf64_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 {
   return (sec->reloc_count * 3 + 1) * sizeof (arelent *);
 }
 
 static long
-mips_elf64_get_dynamic_reloc_upper_bound (abfd)
-     bfd *abfd;
+mips_elf64_get_dynamic_reloc_upper_bound (bfd *abfd)
 {
   return _bfd_elf_get_dynamic_reloc_upper_bound (abfd) * 3;
 }
@@ -2092,11 +1938,8 @@ mips_elf64_get_dynamic_reloc_upper_bound (abfd)
    3 to obtain the internal relocation count.  */
 
 static long
-mips_elf64_canonicalize_reloc (abfd, section, relptr, symbols)
-     bfd *abfd;
-     sec_ptr section;
-     arelent **relptr;
-     asymbol **symbols;
+mips_elf64_canonicalize_reloc (bfd *abfd, sec_ptr section,
+                              arelent **relptr, asymbol **symbols)
 {
   arelent *tblptr;
   unsigned int i;
@@ -2115,13 +1958,10 @@ mips_elf64_canonicalize_reloc (abfd, section, relptr, symbols)
 }
 
 static long
-mips_elf64_canonicalize_dynamic_reloc (abfd, storage, syms)
-     bfd *abfd;
-     arelent **storage;
-     asymbol **syms;
+mips_elf64_canonicalize_dynamic_reloc (bfd *abfd, arelent **storage,
+                                      asymbol **syms)
 {
-  bfd_boolean (*slurp_relocs)
-    PARAMS ((bfd *, asection *, asymbol **, bfd_boolean));
+  bfd_boolean (*slurp_relocs) (bfd *, asection *, asymbol **, bfd_boolean);
   asection *s;
   long ret;
 
@@ -2164,24 +2004,20 @@ mips_elf64_canonicalize_dynamic_reloc (abfd, storage, syms)
    generic code seems to depend on this.  */
 
 static bfd_boolean
-mips_elf64_slurp_one_reloc_table (abfd, asect, rel_hdr, reloc_count,
-                                 relents, symbols, dynamic)
-     bfd *abfd;
-     asection *asect;
-     Elf_Internal_Shdr *rel_hdr;
-     bfd_size_type reloc_count;
-     arelent *relents;
-     asymbol **symbols;
-     bfd_boolean dynamic;
+mips_elf64_slurp_one_reloc_table (bfd *abfd, asection *asect,
+                                 Elf_Internal_Shdr *rel_hdr,
+                                 bfd_size_type reloc_count,
+                                 arelent *relents, asymbol **symbols,
+                                 bfd_boolean dynamic)
 {
-  PTR allocated = NULL;
+  void *allocated;
   bfd_byte *native_relocs;
   arelent *relent;
   bfd_vma i;
   int entsize;
-  reloc_howto_type *howto_table;
+  bfd_boolean rela_p;
 
-  allocated = (PTR) bfd_malloc (rel_hdr->sh_size);
+  allocated = bfd_malloc (rel_hdr->sh_size);
   if (allocated == NULL)
     return FALSE;
 
@@ -2190,16 +2026,16 @@ mips_elf64_slurp_one_reloc_table (abfd, asect, rel_hdr, reloc_count,
          != rel_hdr->sh_size))
     goto error_return;
 
-  native_relocs = (bfd_byte *) allocated;
+  native_relocs = allocated;
 
   entsize = rel_hdr->sh_entsize;
   BFD_ASSERT (entsize == sizeof (Elf64_Mips_External_Rel)
              || entsize == sizeof (Elf64_Mips_External_Rela));
 
   if (entsize == sizeof (Elf64_Mips_External_Rel))
-    howto_table = mips_elf64_howto_table_rel;
+    rela_p = FALSE;
   else
-    howto_table = mips_elf64_howto_table_rela;
+    rela_p = TRUE;
 
   for (i = 0, relent = relents;
        i < reloc_count;
@@ -2312,7 +2148,7 @@ mips_elf64_slurp_one_reloc_table (abfd, asect, rel_hdr, reloc_count,
 
          relent->addend = rela.r_addend;
 
-         relent->howto = &howto_table[(int) type];
+         relent->howto = mips_elf64_rtype_to_howto (type, rela_p);
 
          ++relent;
        }
@@ -2338,11 +2174,8 @@ mips_elf64_slurp_one_reloc_table (abfd, asect, rel_hdr, reloc_count,
    zero before processing the relocs of a section.  */
 
 static bfd_boolean
-mips_elf64_slurp_reloc_table (abfd, asect, symbols, dynamic)
-     bfd *abfd;
-     asection *asect;
-     asymbol **symbols;
-     bfd_boolean dynamic;
+mips_elf64_slurp_reloc_table (bfd *abfd, asection *asect,
+                             asymbol **symbols, bfd_boolean dynamic)
 {
   struct bfd_elf_section_data * const d = elf_section_data (asect);
   Elf_Internal_Shdr *rel_hdr;
@@ -2388,7 +2221,7 @@ mips_elf64_slurp_reloc_table (abfd, asect, symbols, dynamic)
 
   /* Allocate space for 3 arelent structures for each Rel structure.  */
   amt = (reloc_count + reloc_count2) * 3 * sizeof (arelent);
-  relents = (arelent *) bfd_alloc (abfd, amt);
+  relents = bfd_alloc (abfd, amt);
   if (relents == NULL)
     return FALSE;
 
@@ -2416,12 +2249,9 @@ mips_elf64_slurp_reloc_table (abfd, asect, symbols, dynamic)
 /* Write out the relocations.  */
 
 static void
-mips_elf64_write_relocs (abfd, sec, data)
-     bfd *abfd;
-     asection *sec;
-     PTR data;
+mips_elf64_write_relocs (bfd *abfd, asection *sec, void *data)
 {
-  bfd_boolean *failedp = (bfd_boolean *) data;
+  bfd_boolean *failedp = data;
   int count;
   Elf_Internal_Shdr *rel_hdr;
   unsigned int idx;
@@ -2482,21 +2312,18 @@ mips_elf64_write_relocs (abfd, sec, data)
 }
 
 static void
-mips_elf64_write_rel (abfd, sec, rel_hdr, count, data)
-     bfd *abfd;
-     asection *sec;
-     Elf_Internal_Shdr *rel_hdr;
-     int *count;
-     PTR data;
+mips_elf64_write_rel (bfd *abfd, asection *sec,
+                     Elf_Internal_Shdr *rel_hdr,
+                     int *count, void *data)
 {
-  bfd_boolean *failedp = (bfd_boolean *) data;
+  bfd_boolean *failedp = data;
   Elf64_Mips_External_Rel *ext_rel;
   unsigned int idx;
   asymbol *last_sym = 0;
   int last_sym_idx = 0;
 
-  rel_hdr->sh_size = (bfd_vma)(rel_hdr->sh_entsize * *count);
-  rel_hdr->contents = (PTR) bfd_alloc (abfd, rel_hdr->sh_size);
+  rel_hdr->sh_size = rel_hdr->sh_entsize * *count;
+  rel_hdr->contents = bfd_alloc (abfd, rel_hdr->sh_size);
   if (rel_hdr->contents == NULL)
     {
       *failedp = TRUE;
@@ -2581,21 +2408,18 @@ mips_elf64_write_rel (abfd, sec, rel_hdr, count, data)
 }
 
 static void
-mips_elf64_write_rela (abfd, sec, rela_hdr, count, data)
-     bfd *abfd;
-     asection *sec;
-     Elf_Internal_Shdr *rela_hdr;
-     int *count;
-     PTR data;
+mips_elf64_write_rela (bfd *abfd, asection *sec,
+                      Elf_Internal_Shdr *rela_hdr,
+                      int *count, void *data)
 {
-  bfd_boolean *failedp = (bfd_boolean *) data;
+  bfd_boolean *failedp = data;
   Elf64_Mips_External_Rela *ext_rela;
   unsigned int idx;
   asymbol *last_sym = 0;
   int last_sym_idx = 0;
 
-  rela_hdr->sh_size = (bfd_vma)(rela_hdr->sh_entsize * *count);
-  rela_hdr->contents = (PTR) bfd_alloc (abfd, rela_hdr->sh_size);
+  rela_hdr->sh_size = rela_hdr->sh_entsize * *count;
+  rela_hdr->contents = bfd_alloc (abfd, rela_hdr->sh_size);
   if (rela_hdr->contents == NULL)
     {
       *failedp = TRUE;
@@ -2683,8 +2507,7 @@ mips_elf64_write_rela (abfd, sec, rela_hdr, count, data)
 /* Set the right machine number for a MIPS ELF file.  */
 
 static bfd_boolean
-mips_elf64_object_p (abfd)
-     bfd *abfd;
+mips_elf64_object_p (bfd *abfd)
 {
   unsigned long mach;
 
@@ -2702,8 +2525,7 @@ mips_elf64_object_p (abfd)
 /* Depending on the target vector we generate some version of Irix
    executables or "normal" MIPS ELF ABI executables.  */
 static irix_compat_t
-elf64_mips_irix_compat (abfd)
-     bfd *abfd;
+elf64_mips_irix_compat (bfd *abfd)
 {
   if ((abfd->xvec == &bfd_elf64_bigmips_vec)
       || (abfd->xvec == &bfd_elf64_littlemips_vec))
@@ -2714,9 +2536,7 @@ elf64_mips_irix_compat (abfd)
 \f
 /* Support for core dump NOTE sections.  */
 static bfd_boolean
-elf64_mips_grok_prstatus (abfd, note)
-     bfd *abfd;
-     Elf_Internal_Note *note;
+elf64_mips_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
   unsigned int raw_size;
@@ -2746,9 +2566,7 @@ elf64_mips_grok_prstatus (abfd, note)
 }
 
 static bfd_boolean
-elf64_mips_grok_psinfo (abfd, note)
-     bfd *abfd;
-     Elf_Internal_Note *note;
+elf64_mips_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
@@ -2858,11 +2676,6 @@ const struct elf_size_info mips_elf64_size_info =
 #define ELF_ARCH                       bfd_arch_mips
 #define ELF_MACHINE_CODE               EM_MIPS
 
-/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses
-   a value of 0x1000, and we are compatible.
-   FIXME: How does this affect NewABI?  */
-#define ELF_MAXPAGESIZE                        0x1000
-
 #define elf_backend_collect            TRUE
 #define elf_backend_type_change_ok     TRUE
 #define elf_backend_can_gc_sections    TRUE
@@ -2948,9 +2761,9 @@ const struct elf_size_info mips_elf64_size_info =
 /* MIPS ELF64 archive functions.  */
 #define bfd_elf64_archive_functions
 extern bfd_boolean bfd_elf64_archive_slurp_armap
-  PARAMS ((bfd *));
+  (bfd *);
 extern bfd_boolean bfd_elf64_archive_write_armap
-  PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int));
+  (bfd *, unsigned int, struct orl *, unsigned int, int);
 #define bfd_elf64_archive_slurp_extended_name_table \
                        _bfd_archive_coff_slurp_extended_name_table
 #define bfd_elf64_archive_construct_extended_name_table \
@@ -2973,9 +2786,12 @@ extern bfd_boolean bfd_elf64_archive_write_armap
 #define TARGET_BIG_SYM                 bfd_elf64_bigmips_vec
 #define TARGET_BIG_NAME                        "elf64-bigmips"
 
-#include "elf64-target.h"
+/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses
+   a value of 0x1000, and we are compatible.
+   FIXME: How does this affect NewABI?  */
+#define ELF_MAXPAGESIZE                        0x1000
 
-#define INCLUDED_TARGET_FILE            /* More a type of flag.  */
+#include "elf64-target.h"
 
 /* The SYSV-style 'traditional' (n)64 NewABI.  */
 #undef TARGET_LITTLE_SYM
@@ -2983,10 +2799,17 @@ extern bfd_boolean bfd_elf64_archive_write_armap
 #undef TARGET_BIG_SYM
 #undef TARGET_BIG_NAME
 
+#undef ELF_MAXPAGESIZE
+
 #define TARGET_LITTLE_SYM               bfd_elf64_tradlittlemips_vec
 #define TARGET_LITTLE_NAME              "elf64-tradlittlemips"
 #define TARGET_BIG_SYM                  bfd_elf64_tradbigmips_vec
 #define TARGET_BIG_NAME                 "elf64-tradbigmips"
 
+/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
+   page sizes of up to that limit, so we need to respect it.  */
+#define ELF_MAXPAGESIZE                        0x10000
+#define elf64_bed                      elf64_tradbed
+
 /* Include the target file again for this target.  */
 #include "elf64-target.h"
This page took 0.044055 seconds and 4 git commands to generate.