| Index: bfd/coff-mips.c
|
| diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c
|
| index 4048ca89dd183154761e3e8e5d30062bf9032f5e..cdcdde2bcf25848b4939203f1bb261fc8cce1bc2 100644
|
| --- a/bfd/coff-mips.c
|
| +++ b/bfd/coff-mips.c
|
| @@ -1,6 +1,6 @@
|
| /* BFD back-end for MIPS Extended-Coff files.
|
| Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
| - 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2011
|
| + 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2011, 2012
|
| Free Software Foundation, Inc.
|
| Original version by Per Bothner.
|
| Full support added by Ian Lance Taylor, ian@cygnus.com.
|
| @@ -35,37 +35,19 @@
|
| #include "libecoff.h"
|
|
|
| /* Prototypes for static functions. */
|
| +static bfd_reloc_status_type
|
| +mips_generic_reloc
|
| + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
| +static bfd_reloc_status_type
|
| +mips_refhi_reloc
|
| + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
| +static bfd_reloc_status_type
|
| +mips_reflo_reloc
|
| + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
| +static bfd_reloc_status_type
|
| +mips_gprel_reloc
|
| + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
|
|
| -static bfd_boolean mips_ecoff_bad_format_hook
|
| - PARAMS ((bfd *abfd, PTR filehdr));
|
| -static void mips_ecoff_swap_reloc_in
|
| - PARAMS ((bfd *, PTR, struct internal_reloc *));
|
| -static void mips_ecoff_swap_reloc_out
|
| - PARAMS ((bfd *, const struct internal_reloc *, PTR));
|
| -static void mips_adjust_reloc_in
|
| - PARAMS ((bfd *, const struct internal_reloc *, arelent *));
|
| -static void mips_adjust_reloc_out
|
| - PARAMS ((bfd *, const arelent *, struct internal_reloc *));
|
| -static bfd_reloc_status_type mips_generic_reloc
|
| - PARAMS ((bfd *abfd, arelent *reloc, asymbol *symbol, PTR data,
|
| - asection *section, bfd *output_bfd, char **error));
|
| -static bfd_reloc_status_type mips_refhi_reloc
|
| - PARAMS ((bfd *abfd, arelent *reloc, asymbol *symbol, PTR data,
|
| - asection *section, bfd *output_bfd, char **error));
|
| -static bfd_reloc_status_type mips_reflo_reloc
|
| - PARAMS ((bfd *abfd, arelent *reloc, asymbol *symbol, PTR data,
|
| - asection *section, bfd *output_bfd, char **error));
|
| -static bfd_reloc_status_type mips_gprel_reloc
|
| - PARAMS ((bfd *abfd, arelent *reloc, asymbol *symbol, PTR data,
|
| - asection *section, bfd *output_bfd, char **error));
|
| -static void mips_relocate_hi
|
| - PARAMS ((struct internal_reloc *refhi, struct internal_reloc *reflo,
|
| - bfd *input_bfd, asection *input_section, bfd_byte *contents,
|
| - bfd_vma relocation));
|
| -static bfd_boolean mips_relocate_section
|
| - PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, PTR));
|
| -static reloc_howto_type *mips_bfd_reloc_type_lookup
|
| - PARAMS ((bfd *, bfd_reloc_code_real_type));
|
|
|
| /* ECOFF has COFF sections, but the debugging information is stored in
|
| a completely different format. ECOFF targets use some of the
|
| @@ -79,12 +61,12 @@ static reloc_howto_type *mips_bfd_reloc_type_lookup
|
| #define NO_COFF_RELOCS
|
| #define NO_COFF_SYMBOLS
|
| #define NO_COFF_LINENOS
|
| -#define coff_swap_filehdr_in mips_ecoff_swap_filehdr_in
|
| +#define coff_swap_filehdr_in mips_ecoff_swap_filehdr_in
|
| #define coff_swap_filehdr_out mips_ecoff_swap_filehdr_out
|
| -#define coff_swap_aouthdr_in mips_ecoff_swap_aouthdr_in
|
| +#define coff_swap_aouthdr_in mips_ecoff_swap_aouthdr_in
|
| #define coff_swap_aouthdr_out mips_ecoff_swap_aouthdr_out
|
| -#define coff_swap_scnhdr_in mips_ecoff_swap_scnhdr_in
|
| -#define coff_swap_scnhdr_out mips_ecoff_swap_scnhdr_out
|
| +#define coff_swap_scnhdr_in mips_ecoff_swap_scnhdr_in
|
| +#define coff_swap_scnhdr_out mips_ecoff_swap_scnhdr_out
|
|
|
| #include "coffswap.h"
|
|
|
| @@ -253,9 +235,7 @@ static reloc_howto_type mips_howto_table[] =
|
| /* See whether the magic number matches. */
|
|
|
| static bfd_boolean
|
| -mips_ecoff_bad_format_hook (abfd, filehdr)
|
| - bfd *abfd;
|
| - PTR filehdr;
|
| +mips_ecoff_bad_format_hook (bfd * abfd, void * filehdr)
|
| {
|
| struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
|
|
|
| @@ -287,10 +267,9 @@ mips_ecoff_bad_format_hook (abfd, filehdr)
|
| /* Swap a reloc in. */
|
|
|
| static void
|
| -mips_ecoff_swap_reloc_in (abfd, ext_ptr, intern)
|
| - bfd *abfd;
|
| - PTR ext_ptr;
|
| - struct internal_reloc *intern;
|
| +mips_ecoff_swap_reloc_in (bfd * abfd,
|
| + void * ext_ptr,
|
| + struct internal_reloc *intern)
|
| {
|
| const RELOC *ext = (RELOC *) ext_ptr;
|
|
|
| @@ -326,10 +305,9 @@ mips_ecoff_swap_reloc_in (abfd, ext_ptr, intern)
|
| /* Swap a reloc out. */
|
|
|
| static void
|
| -mips_ecoff_swap_reloc_out (abfd, intern, dst)
|
| - bfd *abfd;
|
| - const struct internal_reloc *intern;
|
| - PTR dst;
|
| +mips_ecoff_swap_reloc_out (bfd * abfd,
|
| + const struct internal_reloc * intern,
|
| + void * dst)
|
| {
|
| RELOC *ext = (RELOC *) dst;
|
| long r_symndx;
|
| @@ -367,10 +345,9 @@ mips_ecoff_swap_reloc_out (abfd, intern, dst)
|
| this backend routine. It must fill in the howto field. */
|
|
|
| static void
|
| -mips_adjust_reloc_in (abfd, intern, rptr)
|
| - bfd *abfd;
|
| - const struct internal_reloc *intern;
|
| - arelent *rptr;
|
| +mips_adjust_reloc_in (bfd *abfd,
|
| + const struct internal_reloc *intern,
|
| + arelent *rptr)
|
| {
|
| if (intern->r_type > MIPS_R_PCREL16)
|
| abort ();
|
| @@ -392,10 +369,9 @@ mips_adjust_reloc_in (abfd, intern, rptr)
|
| are needed for MIPS. */
|
|
|
| static void
|
| -mips_adjust_reloc_out (abfd, rel, intern)
|
| - bfd *abfd ATTRIBUTE_UNUSED;
|
| - const arelent *rel ATTRIBUTE_UNUSED;
|
| - struct internal_reloc *intern ATTRIBUTE_UNUSED;
|
| +mips_adjust_reloc_out (bfd *abfd ATTRIBUTE_UNUSED,
|
| + const arelent *rel ATTRIBUTE_UNUSED,
|
| + struct internal_reloc *intern ATTRIBUTE_UNUSED)
|
| {
|
| }
|
|
|
| @@ -411,20 +387,13 @@ mips_adjust_reloc_out (abfd, rel, intern)
|
| relocatable output against an external symbol. */
|
|
|
| static bfd_reloc_status_type
|
| -mips_generic_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_generic_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
|
| && (symbol->flags & BSF_SECTION_SYM) == 0
|
| @@ -458,20 +427,13 @@ struct mips_hi
|
| static struct mips_hi *mips_refhi_list;
|
|
|
| static bfd_reloc_status_type
|
| -mips_refhi_reloc (abfd,
|
| - reloc_entry,
|
| - symbol,
|
| - data,
|
| - input_section,
|
| - output_bfd,
|
| - error_message)
|
| - bfd *abfd ATTRIBUTE_UNUSED;
|
| - arelent *reloc_entry;
|
| - asymbol *symbol;
|
| - PTR data;
|
| - asection *input_section;
|
| - bfd *output_bfd;
|
| - char **error_message ATTRIBUTE_UNUSED;
|
| +mips_refhi_reloc (bfd *abfd ATTRIBUTE_UNUSED,
|
| + arelent *reloc_entry,
|
| + asymbol *symbol,
|
| + void * data,
|
| + asection *input_section,
|
| + bfd *output_bfd,
|
| + char **error_message ATTRIBUTE_UNUSED)
|
| {
|
| bfd_reloc_status_type ret;
|
| bfd_vma relocation;
|
| @@ -524,20 +486,13 @@ mips_refhi_reloc (abfd,
|
| relocation described above. */
|
|
|
| static bfd_reloc_status_type
|
| -mips_reflo_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_reflo_reloc (bfd *abfd ATTRIBUTE_UNUSED,
|
| + arelent *reloc_entry,
|
| + asymbol *symbol,
|
| + void * data,
|
| + asection *input_section,
|
| + bfd *output_bfd,
|
| + char **error_message ATTRIBUTE_UNUSED)
|
| {
|
| if (mips_refhi_list != NULL)
|
| {
|
| @@ -592,20 +547,13 @@ mips_reflo_reloc (abfd,
|
| the offset from the gp register. */
|
|
|
| static bfd_reloc_status_type
|
| -mips_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;
|
| +mips_gprel_reloc (bfd *abfd ATTRIBUTE_UNUSED,
|
| + arelent *reloc_entry,
|
| + asymbol *symbol,
|
| + void * data,
|
| + asection *input_section,
|
| + bfd *output_bfd,
|
| + char **error_message ATTRIBUTE_UNUSED)
|
| {
|
| bfd_boolean relocatable;
|
| bfd_vma gp;
|
| @@ -732,9 +680,8 @@ mips_gprel_reloc (abfd,
|
| /* Get the howto structure for a generic reloc type. */
|
|
|
| static reloc_howto_type *
|
| -mips_bfd_reloc_type_lookup (abfd, code)
|
| - bfd *abfd ATTRIBUTE_UNUSED;
|
| - bfd_reloc_code_real_type code;
|
| +mips_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
|
| + bfd_reloc_code_real_type code)
|
| {
|
| int mips_type;
|
|
|
| @@ -794,14 +741,12 @@ mips_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
|
| instructions. */
|
|
|
| static void
|
| -mips_relocate_hi (refhi, reflo, input_bfd, input_section, contents,
|
| - relocation)
|
| - struct internal_reloc *refhi;
|
| - struct internal_reloc *reflo;
|
| - bfd *input_bfd;
|
| - asection *input_section;
|
| - bfd_byte *contents;
|
| - bfd_vma relocation;
|
| +mips_relocate_hi (struct internal_reloc *refhi,
|
| + struct internal_reloc *reflo,
|
| + bfd *input_bfd,
|
| + asection *input_section,
|
| + bfd_byte *contents,
|
| + bfd_vma relocation)
|
| {
|
| unsigned long insn;
|
| unsigned long val;
|
| @@ -841,14 +786,12 @@ mips_relocate_hi (refhi, reflo, input_bfd, input_section, contents,
|
| /* Relocate a section while linking a MIPS ECOFF file. */
|
|
|
| static bfd_boolean
|
| -mips_relocate_section (output_bfd, info, input_bfd, input_section,
|
| - contents, external_relocs)
|
| - bfd *output_bfd;
|
| - struct bfd_link_info *info;
|
| - bfd *input_bfd;
|
| - asection *input_section;
|
| - bfd_byte *contents;
|
| - PTR external_relocs;
|
| +mips_relocate_section (bfd *output_bfd,
|
| + struct bfd_link_info *info,
|
| + bfd *input_bfd,
|
| + asection *input_section,
|
| + bfd_byte *contents,
|
| + void * external_relocs)
|
| {
|
| asection **symndx_to_section;
|
| struct ecoff_link_hash_entry **sym_hashes;
|
| @@ -928,7 +871,7 @@ mips_relocate_section (output_bfd, info, input_bfd, input_section,
|
| bfd_reloc_status_type r;
|
|
|
| if (! got_lo)
|
| - mips_ecoff_swap_reloc_in (input_bfd, (PTR) ext_rel, &int_rel);
|
| + mips_ecoff_swap_reloc_in (input_bfd, ext_rel, &int_rel);
|
| else
|
| {
|
| int_rel = lo_int_rel;
|
| @@ -951,7 +894,7 @@ mips_relocate_section (output_bfd, info, input_bfd, input_section,
|
| lo_ext_rel < ext_rel_end;
|
| lo_ext_rel++)
|
| {
|
| - mips_ecoff_swap_reloc_in (input_bfd, (PTR) lo_ext_rel,
|
| + mips_ecoff_swap_reloc_in (input_bfd, lo_ext_rel,
|
| &lo_int_rel);
|
| if (lo_int_rel.r_type != int_rel.r_type)
|
| break;
|
| @@ -1190,7 +1133,7 @@ mips_relocate_section (output_bfd, info, input_bfd, input_section,
|
| - input_section->vma);
|
|
|
| /* Save the changed reloc information. */
|
| - mips_ecoff_swap_reloc_out (input_bfd, &int_rel, (PTR) ext_rel);
|
| + mips_ecoff_swap_reloc_out (input_bfd, &int_rel, ext_rel);
|
| }
|
| else
|
| {
|
| @@ -1303,13 +1246,13 @@ static const struct ecoff_backend_data mips_ecoff_backend_data =
|
| {
|
| /* COFF backend structure. */
|
| {
|
| - (void (*) PARAMS ((bfd *,PTR,int,int,int,int,PTR))) bfd_void, /* aux_in */
|
| - (void (*) PARAMS ((bfd *,PTR,PTR))) bfd_void, /* sym_in */
|
| - (void (*) PARAMS ((bfd *,PTR,PTR))) bfd_void, /* lineno_in */
|
| - (unsigned (*) PARAMS ((bfd *,PTR,int,int,int,int,PTR)))bfd_void,/*aux_out*/
|
| - (unsigned (*) PARAMS ((bfd *,PTR,PTR))) bfd_void, /* sym_out */
|
| - (unsigned (*) PARAMS ((bfd *,PTR,PTR))) bfd_void, /* lineno_out */
|
| - (unsigned (*) PARAMS ((bfd *,PTR,PTR))) bfd_void, /* reloc_out */
|
| + (void (*) (bfd *,void *,int,int,int,int,void *)) bfd_void, /* aux_in */
|
| + (void (*) (bfd *,void *,void *)) bfd_void, /* sym_in */
|
| + (void (*) (bfd *,void *,void *)) bfd_void, /* lineno_in */
|
| + (unsigned (*) (bfd *,void *,int,int,int,int,void *)) bfd_void,/*aux_out*/
|
| + (unsigned (*) (bfd *,void *,void *)) bfd_void, /* sym_out */
|
| + (unsigned (*) (bfd *,void *,void *)) bfd_void, /* lineno_out */
|
| + (unsigned (*) (bfd *,void *,void *)) bfd_void, /* reloc_out */
|
| mips_ecoff_swap_filehdr_out, mips_ecoff_swap_aouthdr_out,
|
| mips_ecoff_swap_scnhdr_out,
|
| FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, TRUE,
|
| @@ -1466,7 +1409,7 @@ const bfd_target ecoff_little_vec =
|
|
|
| & ecoff_big_vec,
|
|
|
| - (PTR) &mips_ecoff_backend_data
|
| + & mips_ecoff_backend_data
|
| };
|
|
|
| const bfd_target ecoff_big_vec =
|
| @@ -1510,7 +1453,7 @@ const bfd_target ecoff_big_vec =
|
|
|
| & ecoff_little_vec,
|
|
|
| - (PTR) &mips_ecoff_backend_data
|
| + & mips_ecoff_backend_data
|
| };
|
|
|
| const bfd_target ecoff_biglittle_vec =
|
| @@ -1555,5 +1498,5 @@ const bfd_target ecoff_biglittle_vec =
|
|
|
| NULL,
|
|
|
| - (PTR) &mips_ecoff_backend_data
|
| + & mips_ecoff_backend_data
|
| };
|
|
|