diff options
author | Ian Lance Taylor <ian@airs.com> | 1995-07-05 16:31:07 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1995-07-05 16:31:07 +0000 |
commit | a2546fcef767bb388f8fc4d90b0b04c2ad7063e3 (patch) | |
tree | 2c4cd799cb788486ca7db4833293b26a90bbec03 /bfd/libecoff.h | |
parent | 3af584b4a16be2ddfb92fc52ec491ba181572967 (diff) | |
download | ppe42-binutils-a2546fcef767bb388f8fc4d90b0b04c2ad7063e3.tar.gz ppe42-binutils-a2546fcef767bb388f8fc4d90b0b04c2ad7063e3.zip |
* ecoff.c (_bfd_ecoff_bfd_is_local_label): New function.
* libecoff.h (_bfd_ecoff_bfd_is_local_label): Declare.
* elf32-mips.c (mips_elf_is_local_label): New static function.
(bfd_elf32_bfd_is_local_label): Define.
PR 6978.
Diffstat (limited to 'bfd/libecoff.h')
-rw-r--r-- | bfd/libecoff.h | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/bfd/libecoff.h b/bfd/libecoff.h index a6b8777021..1b9d9a23bc 100644 --- a/bfd/libecoff.h +++ b/bfd/libecoff.h @@ -50,7 +50,7 @@ struct ecoff_backend_data /* Bitsize of constructor entries. */ unsigned int constructor_bitsize; /* Reloc to use for constructor entries. */ - CONST struct reloc_howto_struct *constructor_reloc; + reloc_howto_type *constructor_reloc; /* How to swap debugging information. */ struct ecoff_debug_swap debug_swap; /* External reloc size. */ @@ -124,6 +124,11 @@ typedef struct ecoff_tdata /* True if this BFD was written by the backend linker. */ boolean linker; + /* Used by find_nearest_line entry point. The structure could be + included directly in this one, but there's no point to wasting + the memory just for the infrequently called find_nearest_line. */ + struct ecoff_find_line *find_line_info; + } ecoff_data_type; /* Each canonical asymbol really looks like this. */ @@ -149,11 +154,11 @@ typedef struct ecoff_symbol_struct macro is only ever applied to an asymbol. */ #define ecoffsymbol(asymbol) ((ecoff_symbol_type *) (&((asymbol)->the_bfd))) -/* This is a hack borrowed from coffcode.h; we need to save the index - of an external symbol when we write it out so that can set the - symbol index correctly when we write out the relocs. */ -#define ecoff_get_sym_index(symbol) ((unsigned long) (symbol)->udata) -#define ecoff_set_sym_index(symbol, idx) ((symbol)->udata = (PTR) (idx)) +/* We need to save the index of an external symbol when we write it + out so that can set the symbol index correctly when we write out + the relocs. */ +#define ecoff_get_sym_index(symbol) ((symbol)->udata.i) +#define ecoff_set_sym_index(symbol, idx) ((symbol)->udata.i = (idx)) /* When generating MIPS embedded PIC code, the linker relaxes the code to turn PC relative branches into longer code sequences when the PC @@ -238,18 +243,30 @@ extern boolean _bfd_ecoff_new_section_hook extern boolean _bfd_ecoff_get_section_contents PARAMS ((bfd *, asection *, PTR location, file_ptr, bfd_size_type)); +#define _bfd_ecoff_bfd_link_split_section _bfd_generic_link_split_section + extern boolean _bfd_ecoff_bfd_copy_private_bfd_data PARAMS ((bfd *, bfd *)); #define _bfd_ecoff_bfd_copy_private_section_data \ _bfd_generic_bfd_copy_private_section_data +#define _bfd_ecoff_bfd_copy_private_symbol_data \ + _bfd_generic_bfd_copy_private_symbol_data + +#define _bfd_ecoff_bfd_merge_private_bfd_data \ + _bfd_generic_bfd_merge_private_bfd_data + +#define _bfd_ecoff_bfd_set_private_flags _bfd_generic_bfd_set_private_flags extern boolean _bfd_ecoff_slurp_armap PARAMS ((bfd *abfd)); #define _bfd_ecoff_slurp_extended_name_table _bfd_slurp_extended_name_table +#define _bfd_ecoff_construct_extended_name_table \ + _bfd_archive_bsd_construct_extended_name_table #define _bfd_ecoff_truncate_arname bfd_dont_truncate_arname extern boolean _bfd_ecoff_write_armap PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int)); #define _bfd_ecoff_openr_next_archived_file \ bfd_generic_openr_next_archived_file #define _bfd_ecoff_generic_stat_arch_elt bfd_generic_stat_arch_elt +#define _bfd_ecoff_update_armap_timestamp bfd_true extern long _bfd_ecoff_get_symtab_upper_bound PARAMS ((bfd *abfd)); extern long _bfd_ecoff_get_symtab PARAMS ((bfd *abfd, asymbol **alocation)); @@ -258,7 +275,8 @@ extern void _bfd_ecoff_print_symbol PARAMS ((bfd *, PTR filep, asymbol *, bfd_print_symbol_type)); extern void _bfd_ecoff_get_symbol_info PARAMS ((bfd *, asymbol *, symbol_info *)); -#define _bfd_ecoff_bfd_is_local_label bfd_generic_is_local_label +extern boolean _bfd_ecoff_bfd_is_local_label + PARAMS ((bfd *, asymbol *)); #define _bfd_ecoff_get_lineno _bfd_nosymbols_get_lineno extern boolean _bfd_ecoff_find_nearest_line PARAMS ((bfd *, asection *, asymbol **, bfd_vma offset, @@ -296,3 +314,15 @@ extern boolean _bfd_ecoff_set_arch_mach_hook PARAMS ((bfd *abfd, PTR filehdr)); extern flagword _bfd_ecoff_styp_to_sec_flags PARAMS ((bfd *abfd, PTR hdr, const char *name)); extern boolean _bfd_ecoff_slurp_symbol_table PARAMS ((bfd *abfd)); + +/* ECOFF auxiliary information swapping routines. These are the same + for all ECOFF targets, so they are defined in ecofflink.c. */ + +extern void _bfd_ecoff_swap_tir_in + PARAMS ((int, const struct tir_ext *, TIR *)); +extern void _bfd_ecoff_swap_tir_out + PARAMS ((int, const TIR *, struct tir_ext *)); +extern void _bfd_ecoff_swap_rndx_in + PARAMS ((int, const struct rndx_ext *, RNDXR *)); +extern void _bfd_ecoff_swap_rndx_out + PARAMS ((int, const RNDXR *, struct rndx_ext *)); |