libbfd.h revision 104834
189857Sobrien/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically
289857Sobrien   generated from "libbfd-in.h", "init.c", "libbfd.c", "cache.c",
389857Sobrien   "reloc.c", "archures.c" and "elf.c".
489857Sobrien   Run "make headers" in your build bfd/ to regenerate.  */
589857Sobrien
633965Sjdp/* libbfd.h -- Declarations used by bfd library *implementation*.
733965Sjdp   (This include file is not for users of the library.)
878828Sobrien   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
9104834Sobrien   2000, 2001, 2002
1060484Sobrien   Free Software Foundation, Inc.
1133965Sjdp   Written by Cygnus Support.
1233965Sjdp
1333965SjdpThis file is part of BFD, the Binary File Descriptor library.
1433965Sjdp
1533965SjdpThis program is free software; you can redistribute it and/or modify
1633965Sjdpit under the terms of the GNU General Public License as published by
1733965Sjdpthe Free Software Foundation; either version 2 of the License, or
1833965Sjdp(at your option) any later version.
1933965Sjdp
2033965SjdpThis program is distributed in the hope that it will be useful,
2133965Sjdpbut WITHOUT ANY WARRANTY; without even the implied warranty of
2233965SjdpMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2333965SjdpGNU General Public License for more details.
2433965Sjdp
2533965SjdpYou should have received a copy of the GNU General Public License
2633965Sjdpalong with this program; if not, write to the Free Software
2733965SjdpFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
2833965Sjdp
2933965Sjdp/* Align an address upward to a boundary, expressed as a number of bytes.
3038889Sjdp   E.g. align to an 8-byte boundary with argument of 8.  Take care never
3138889Sjdp   to wrap around if the address is within boundary-1 of the end of the
3238889Sjdp   address space.  */
3389857Sobrien#define BFD_ALIGN(this, boundary)					  \
3489857Sobrien  ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))		  \
3589857Sobrien   ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
3638889Sjdp   : ~ (bfd_vma) 0)
3733965Sjdp
3833965Sjdp/* If you want to read and write large blocks, you might want to do it
3933965Sjdp   in quanta of this amount */
4033965Sjdp#define DEFAULT_BUFFERSIZE 8192
4133965Sjdp
4233965Sjdp/* Set a tdata field.  Can't use the other macros for this, since they
4333965Sjdp   do casts, and casting to the left of assignment isn't portable.  */
4433965Sjdp#define set_tdata(bfd, v) ((bfd)->tdata.any = (PTR) (v))
4533965Sjdp
4633965Sjdp/* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
4733965Sjdp   to an instance of this structure.  */
4833965Sjdp
4933965Sjdpstruct bfd_in_memory
5033965Sjdp{
5133965Sjdp  /* Size of buffer.  */
5233965Sjdp  bfd_size_type size;
5333965Sjdp  /* Buffer holding contents of BFD.  */
5433965Sjdp  bfd_byte *buffer;
5533965Sjdp};
5633965Sjdp
5733965Sjdp/* tdata for an archive.  For an input archive, cache
5833965Sjdp   needs to be free()'d.  For an output archive, symdefs do.  */
5933965Sjdp
6033965Sjdpstruct artdata {
6133965Sjdp  file_ptr first_file_filepos;
6233965Sjdp  /* Speed up searching the armap */
6333965Sjdp  struct ar_cache *cache;
6477298Sobrien  bfd *archive_head;		/* Only interesting in output routines */
6533965Sjdp  carsym *symdefs;		/* the symdef entries */
6677298Sobrien  symindex symdef_count;	/* how many there are */
6733965Sjdp  char *extended_names;		/* clever intel extension */
6833965Sjdp  /* when more compilers are standard C, this can be a time_t */
6933965Sjdp  long  armap_timestamp;	/* Timestamp value written into armap.
7033965Sjdp				   This is used for BSD archives to check
7133965Sjdp				   that the timestamp is recent enough
7233965Sjdp				   for the BSD linker to not complain,
7333965Sjdp				   just before we finish writing an
7433965Sjdp				   archive.  */
7533965Sjdp  file_ptr armap_datepos;	/* Position within archive to seek to
7633965Sjdp				   rewrite the date field.  */
7733965Sjdp  PTR tdata;			/* Backend specific information.  */
7833965Sjdp};
7933965Sjdp
8033965Sjdp#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
8133965Sjdp
8233965Sjdp/* Goes in bfd's arelt_data slot */
8333965Sjdpstruct areltdata {
8477298Sobrien  char * arch_header;		/* it's actually a string */
8577298Sobrien  unsigned int parsed_size;	/* octets of filesize not including ar_hdr */
8677298Sobrien  char *filename;		/* null-terminated */
8733965Sjdp};
8833965Sjdp
8933965Sjdp#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
9033965Sjdp
9189857Sobrienextern PTR bfd_malloc PARAMS ((bfd_size_type));
9289857Sobrienextern PTR bfd_realloc PARAMS ((PTR, bfd_size_type));
9389857Sobrienextern PTR bfd_zmalloc PARAMS ((bfd_size_type));
9433965Sjdp
9533965Sjdpextern bfd_error_handler_type _bfd_error_handler;
9633965Sjdp
9733965Sjdp/* These routines allocate and free things on the BFD's objalloc.  */
9833965Sjdp
9989857Sobrienextern PTR bfd_alloc PARAMS ((bfd *, bfd_size_type));
10089857Sobrienextern PTR bfd_zalloc PARAMS ((bfd *, bfd_size_type));
10133965Sjdpextern void bfd_release PARAMS ((bfd *, PTR));
10233965Sjdp
10333965Sjdpbfd *	_bfd_create_empty_archive_element_shell PARAMS ((bfd *obfd));
10489857Sobrienbfd *	_bfd_look_for_bfd_in_cache PARAMS ((bfd *, file_ptr));
10533965Sjdpboolean _bfd_add_bfd_to_archive_cache PARAMS ((bfd *, file_ptr, bfd *));
10633965Sjdpboolean	_bfd_generic_mkarchive PARAMS ((bfd *abfd));
10733965Sjdpconst bfd_target *bfd_generic_archive_p PARAMS ((bfd *abfd));
10833965Sjdpboolean	bfd_slurp_armap PARAMS ((bfd *abfd));
10933965Sjdpboolean bfd_slurp_bsd_armap_f2 PARAMS ((bfd *abfd));
11033965Sjdp#define bfd_slurp_bsd_armap bfd_slurp_armap
11133965Sjdp#define bfd_slurp_coff_armap bfd_slurp_armap
11233965Sjdpboolean	_bfd_slurp_extended_name_table PARAMS ((bfd *abfd));
11333965Sjdpextern boolean _bfd_construct_extended_name_table
11433965Sjdp  PARAMS ((bfd *, boolean, char **, bfd_size_type *));
11533965Sjdpboolean	_bfd_write_archive_contents PARAMS ((bfd *abfd));
11633965Sjdpboolean _bfd_compute_and_write_armap PARAMS ((bfd *, unsigned int elength));
11733965Sjdpbfd *_bfd_get_elt_at_filepos PARAMS ((bfd *archive, file_ptr filepos));
11833965Sjdpextern bfd *_bfd_generic_get_elt_at_index PARAMS ((bfd *, symindex));
11933965Sjdpbfd * _bfd_new_bfd PARAMS ((void));
12089857Sobrienvoid _bfd_delete_bfd PARAMS ((bfd *));
12133965Sjdp
12233965Sjdpboolean	bfd_false PARAMS ((bfd *ignore));
12333965Sjdpboolean	bfd_true PARAMS ((bfd *ignore));
12433965SjdpPTR	bfd_nullvoidptr PARAMS ((bfd *ignore));
12533965Sjdpint	bfd_0 PARAMS ((bfd *ignore));
12633965Sjdpunsigned int	bfd_0u PARAMS ((bfd *ignore));
12733965Sjdplong	bfd_0l PARAMS ((bfd *ignore));
12833965Sjdplong	_bfd_n1 PARAMS ((bfd *ignore));
12933965Sjdpvoid	bfd_void PARAMS ((bfd *ignore));
13033965Sjdp
13133965Sjdpbfd *_bfd_new_bfd_contained_in PARAMS ((bfd *));
13233965Sjdpconst bfd_target *_bfd_dummy_target PARAMS ((bfd *abfd));
13333965Sjdp
13477298Sobrienvoid	bfd_dont_truncate_arname PARAMS ((bfd *abfd, const char *filename,
13533965Sjdp					char *hdr));
13677298Sobrienvoid	bfd_bsd_truncate_arname PARAMS ((bfd *abfd, const char *filename,
13733965Sjdp					char *hdr));
13877298Sobrienvoid	bfd_gnu_truncate_arname PARAMS ((bfd *abfd, const char *filename,
13933965Sjdp					char *hdr));
14033965Sjdp
14133965Sjdpboolean	bsd_write_armap PARAMS ((bfd *arch, unsigned int elength,
14233965Sjdp				  struct orl *map, unsigned int orl_count, int stridx));
14333965Sjdp
14433965Sjdpboolean	coff_write_armap PARAMS ((bfd *arch, unsigned int elength,
14533965Sjdp				   struct orl *map, unsigned int orl_count, int stridx));
14633965Sjdp
14733965Sjdpextern PTR _bfd_generic_read_ar_hdr PARAMS ((bfd *));
14833965Sjdp
14933965Sjdpextern PTR _bfd_generic_read_ar_hdr_mag PARAMS ((bfd *, const char *));
15033965Sjdp
15133965Sjdpbfd *	bfd_generic_openr_next_archived_file PARAMS ((bfd *archive,
15233965Sjdp						     bfd *last_file));
15333965Sjdp
15433965Sjdpint	bfd_generic_stat_arch_elt PARAMS ((bfd *, struct stat *));
15533965Sjdp
15633965Sjdp#define _bfd_read_ar_hdr(abfd) \
15733965Sjdp  BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
15833965Sjdp
15933965Sjdp/* Generic routines to use for BFD_JUMP_TABLE_GENERIC.  Use
16033965Sjdp   BFD_JUMP_TABLE_GENERIC (_bfd_generic).  */
16133965Sjdp
16233965Sjdp#define _bfd_generic_close_and_cleanup bfd_true
16333965Sjdp#define _bfd_generic_bfd_free_cached_info bfd_true
16433965Sjdp#define _bfd_generic_new_section_hook \
16533965Sjdp  ((boolean (*) PARAMS ((bfd *, asection *))) bfd_true)
16633965Sjdpextern boolean _bfd_generic_get_section_contents
16789857Sobrien  PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
16833965Sjdpextern boolean _bfd_generic_get_section_contents_in_window
16933965Sjdp  PARAMS ((bfd *, asection *, bfd_window *, file_ptr, bfd_size_type));
17033965Sjdp
17133965Sjdp/* Generic routines to use for BFD_JUMP_TABLE_COPY.  Use
17233965Sjdp   BFD_JUMP_TABLE_COPY (_bfd_generic).  */
17333965Sjdp
17433965Sjdp#define _bfd_generic_bfd_copy_private_bfd_data \
17533965Sjdp  ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true)
17633965Sjdp#define _bfd_generic_bfd_merge_private_bfd_data \
17733965Sjdp  ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true)
17833965Sjdp#define _bfd_generic_bfd_set_private_flags \
17933965Sjdp  ((boolean (*) PARAMS ((bfd *, flagword))) bfd_true)
18033965Sjdp#define _bfd_generic_bfd_copy_private_section_data \
18133965Sjdp  ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true)
18233965Sjdp#define _bfd_generic_bfd_copy_private_symbol_data \
18333965Sjdp  ((boolean (*) PARAMS ((bfd *, asymbol *, bfd *, asymbol *))) bfd_true)
18433965Sjdp#define _bfd_generic_bfd_print_private_bfd_data \
18533965Sjdp  ((boolean (*) PARAMS ((bfd *, PTR))) bfd_true)
18633965Sjdp
18733965Sjdp/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
18833965Sjdp   support.  Use BFD_JUMP_TABLE_CORE (_bfd_nocore).  */
18933965Sjdp
19033965Sjdpextern char *_bfd_nocore_core_file_failing_command PARAMS ((bfd *));
19133965Sjdpextern int _bfd_nocore_core_file_failing_signal PARAMS ((bfd *));
19233965Sjdpextern boolean _bfd_nocore_core_file_matches_executable_p
19333965Sjdp  PARAMS ((bfd *, bfd *));
19433965Sjdp
19533965Sjdp/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
19633965Sjdp   file support.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive).  */
19733965Sjdp
19833965Sjdp#define _bfd_noarchive_slurp_armap bfd_false
19933965Sjdp#define _bfd_noarchive_slurp_extended_name_table bfd_false
20033965Sjdp#define _bfd_noarchive_construct_extended_name_table \
20133965Sjdp  ((boolean (*) PARAMS ((bfd *, char **, bfd_size_type *, const char **))) \
20233965Sjdp   bfd_false)
20333965Sjdp#define _bfd_noarchive_truncate_arname \
20433965Sjdp  ((void (*) PARAMS ((bfd *, const char *, char *))) bfd_void)
20533965Sjdp#define _bfd_noarchive_write_armap \
20633965Sjdp  ((boolean (*) \
20733965Sjdp    PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int))) \
20833965Sjdp   bfd_false)
20933965Sjdp#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
21033965Sjdp#define _bfd_noarchive_openr_next_archived_file \
21133965Sjdp  ((bfd *(*) PARAMS ((bfd *, bfd *))) bfd_nullvoidptr)
21233965Sjdp#define _bfd_noarchive_get_elt_at_index \
21333965Sjdp  ((bfd *(*) PARAMS ((bfd *, symindex))) bfd_nullvoidptr)
21433965Sjdp#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
21533965Sjdp#define _bfd_noarchive_update_armap_timestamp bfd_false
21633965Sjdp
21733965Sjdp/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
21833965Sjdp   archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd).  */
21933965Sjdp
22033965Sjdp#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
22133965Sjdp#define _bfd_archive_bsd_slurp_extended_name_table \
22233965Sjdp  _bfd_slurp_extended_name_table
22333965Sjdpextern boolean _bfd_archive_bsd_construct_extended_name_table
22433965Sjdp  PARAMS ((bfd *, char **, bfd_size_type *, const char **));
22533965Sjdp#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
22633965Sjdp#define _bfd_archive_bsd_write_armap bsd_write_armap
22733965Sjdp#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
22833965Sjdp#define _bfd_archive_bsd_openr_next_archived_file \
22933965Sjdp  bfd_generic_openr_next_archived_file
23033965Sjdp#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
23133965Sjdp#define _bfd_archive_bsd_generic_stat_arch_elt \
23233965Sjdp  bfd_generic_stat_arch_elt
23333965Sjdpextern boolean _bfd_archive_bsd_update_armap_timestamp PARAMS ((bfd *));
23433965Sjdp
23533965Sjdp/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
23633965Sjdp   archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff).  */
23733965Sjdp
23833965Sjdp#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
23933965Sjdp#define _bfd_archive_coff_slurp_extended_name_table \
24033965Sjdp  _bfd_slurp_extended_name_table
24133965Sjdpextern boolean _bfd_archive_coff_construct_extended_name_table
24233965Sjdp  PARAMS ((bfd *, char **, bfd_size_type *, const char **));
24333965Sjdp#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
24433965Sjdp#define _bfd_archive_coff_write_armap coff_write_armap
24533965Sjdp#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
24633965Sjdp#define _bfd_archive_coff_openr_next_archived_file \
24733965Sjdp  bfd_generic_openr_next_archived_file
24833965Sjdp#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
24933965Sjdp#define _bfd_archive_coff_generic_stat_arch_elt \
25033965Sjdp  bfd_generic_stat_arch_elt
25133965Sjdp#define _bfd_archive_coff_update_armap_timestamp bfd_true
25233965Sjdp
25333965Sjdp/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
25433965Sjdp   support.  Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).  */
25533965Sjdp
25633965Sjdp#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
25733965Sjdp#define _bfd_nosymbols_get_symtab \
25833965Sjdp  ((long (*) PARAMS ((bfd *, asymbol **))) _bfd_n1)
25989857Sobrien#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
26033965Sjdp#define _bfd_nosymbols_print_symbol \
26133965Sjdp  ((void (*) PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type))) bfd_void)
26233965Sjdp#define _bfd_nosymbols_get_symbol_info \
26333965Sjdp  ((void (*) PARAMS ((bfd *, asymbol *, symbol_info *))) bfd_void)
26433965Sjdp#define _bfd_nosymbols_bfd_is_local_label_name \
26533965Sjdp  ((boolean (*) PARAMS ((bfd *, const char *))) bfd_false)
26633965Sjdp#define _bfd_nosymbols_get_lineno \
26733965Sjdp  ((alent *(*) PARAMS ((bfd *, asymbol *))) bfd_nullvoidptr)
26833965Sjdp#define _bfd_nosymbols_find_nearest_line \
26933965Sjdp  ((boolean (*) \
27033965Sjdp    PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **, \
27133965Sjdp	     const char **, unsigned int *))) \
27233965Sjdp   bfd_false)
27333965Sjdp#define _bfd_nosymbols_bfd_make_debug_symbol \
27433965Sjdp  ((asymbol *(*) PARAMS ((bfd *, PTR, unsigned long))) bfd_nullvoidptr)
27533965Sjdp#define _bfd_nosymbols_read_minisymbols \
27633965Sjdp  ((long (*) PARAMS ((bfd *, boolean, PTR *, unsigned int *))) _bfd_n1)
27733965Sjdp#define _bfd_nosymbols_minisymbol_to_symbol \
27833965Sjdp  ((asymbol *(*) PARAMS ((bfd *, boolean, const PTR, asymbol *))) \
27933965Sjdp   bfd_nullvoidptr)
28033965Sjdp
28133965Sjdp/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
28233965Sjdp   support.  Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs).  */
28333965Sjdp
28433965Sjdp#define _bfd_norelocs_get_reloc_upper_bound \
28533965Sjdp  ((long (*) PARAMS ((bfd *, asection *))) _bfd_n1)
28633965Sjdp#define _bfd_norelocs_canonicalize_reloc \
28733965Sjdp  ((long (*) PARAMS ((bfd *, asection *, arelent **, asymbol **))) _bfd_n1)
28833965Sjdp#define _bfd_norelocs_bfd_reloc_type_lookup \
28933965Sjdp  ((reloc_howto_type *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) \
29033965Sjdp   bfd_nullvoidptr)
29133965Sjdp
29233965Sjdp/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
29333965Sjdp   be written.  Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite).  */
29433965Sjdp
29533965Sjdp#define _bfd_nowrite_set_arch_mach \
29633965Sjdp  ((boolean (*) PARAMS ((bfd *, enum bfd_architecture, unsigned long))) \
29733965Sjdp   bfd_false)
29833965Sjdp#define _bfd_nowrite_set_section_contents \
29933965Sjdp  ((boolean (*) PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type))) \
30033965Sjdp   bfd_false)
30133965Sjdp
30233965Sjdp/* Generic routines to use for BFD_JUMP_TABLE_WRITE.  Use
30333965Sjdp   BFD_JUMP_TABLE_WRITE (_bfd_generic).  */
30433965Sjdp
30533965Sjdp#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
30633965Sjdpextern boolean _bfd_generic_set_section_contents
30733965Sjdp  PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
30833965Sjdp
30933965Sjdp/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
31033965Sjdp   support linking.  Use BFD_JUMP_TABLE_LINK (_bfd_nolink).  */
31133965Sjdp
31233965Sjdp#define _bfd_nolink_sizeof_headers ((int (*) PARAMS ((bfd *, boolean))) bfd_0)
31333965Sjdp#define _bfd_nolink_bfd_get_relocated_section_contents \
31433965Sjdp  ((bfd_byte *(*) \
31533965Sjdp    PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, \
31633965Sjdp	     bfd_byte *, boolean, asymbol **))) \
31733965Sjdp   bfd_nullvoidptr)
31833965Sjdp#define _bfd_nolink_bfd_relax_section \
31933965Sjdp  ((boolean (*) \
32033965Sjdp    PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *))) \
32133965Sjdp   bfd_false)
32260484Sobrien#define _bfd_nolink_bfd_gc_sections \
32360484Sobrien  ((boolean (*) \
32460484Sobrien    PARAMS ((bfd *, struct bfd_link_info *))) \
32560484Sobrien   bfd_false)
32689857Sobrien#define _bfd_nolink_bfd_merge_sections \
32789857Sobrien  ((boolean (*) \
32889857Sobrien    PARAMS ((bfd *, struct bfd_link_info *))) \
32989857Sobrien   bfd_false)
330104834Sobrien#define _bfd_nolink_bfd_discard_group \
331104834Sobrien  ((boolean (*) \
332104834Sobrien    PARAMS ((bfd *, struct sec *))) \
333104834Sobrien   bfd_false)
33433965Sjdp#define _bfd_nolink_bfd_link_hash_table_create \
33533965Sjdp  ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr)
336104834Sobrien#define _bfd_nolink_bfd_link_hash_table_free \
337104834Sobrien  ((void (*) PARAMS ((struct bfd_link_hash_table *))) bfd_void)
33833965Sjdp#define _bfd_nolink_bfd_link_add_symbols \
33933965Sjdp  ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false)
340104834Sobrien#define _bfd_nolink_bfd_link_just_syms \
341104834Sobrien  ((void (*) PARAMS ((asection *, struct bfd_link_info *))) bfd_void)
34233965Sjdp#define _bfd_nolink_bfd_final_link \
34333965Sjdp  ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false)
34433965Sjdp#define _bfd_nolink_bfd_link_split_section \
34533965Sjdp  ((boolean (*) PARAMS ((bfd *, struct sec *))) bfd_false)
34633965Sjdp
34733965Sjdp/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
34833965Sjdp   have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
34933965Sjdp   (_bfd_nodynamic).  */
35033965Sjdp
35133965Sjdp#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
35233965Sjdp#define _bfd_nodynamic_canonicalize_dynamic_symtab \
35333965Sjdp  ((long (*) PARAMS ((bfd *, asymbol **))) _bfd_n1)
35433965Sjdp#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
35533965Sjdp#define _bfd_nodynamic_canonicalize_dynamic_reloc \
35633965Sjdp  ((long (*) PARAMS ((bfd *, arelent **, asymbol **))) _bfd_n1)
35733965Sjdp
35833965Sjdp/* Generic routine to determine of the given symbol is a local
35933965Sjdp   label.  */
36033965Sjdpextern boolean bfd_generic_is_local_label_name PARAMS ((bfd *, const char *));
36133965Sjdp
36233965Sjdp/* Generic minisymbol routines.  */
36333965Sjdpextern long _bfd_generic_read_minisymbols
36433965Sjdp  PARAMS ((bfd *, boolean, PTR *, unsigned int *));
36533965Sjdpextern asymbol *_bfd_generic_minisymbol_to_symbol
36633965Sjdp  PARAMS ((bfd *, boolean, const PTR, asymbol *));
36733965Sjdp
36833965Sjdp/* Find the nearest line using .stab/.stabstr sections.  */
36933965Sjdpextern boolean _bfd_stab_section_find_nearest_line
37033965Sjdp  PARAMS ((bfd *, asymbol **, asection *, bfd_vma, boolean *, const char **,
37133965Sjdp	   const char **, unsigned int *, PTR *));
37233965Sjdp
37360484Sobrien/* Find the neaderst line using DWARF 1 debugging information.  */
37460484Sobrienextern boolean _bfd_dwarf1_find_nearest_line
37560484Sobrien  PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
37660484Sobrien	   const char **, unsigned int *));
37760484Sobrien
37838889Sjdp/* Find the nearest line using DWARF 2 debugging information.  */
37938889Sjdpextern boolean _bfd_dwarf2_find_nearest_line
38038889Sjdp  PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
38177298Sobrien	   const char **, unsigned int *, unsigned int,
38277298Sobrien	   PTR *));
38338889Sjdp
38489857Sobrien/* Create a new section entry.  */
38589857Sobrienextern struct bfd_hash_entry *bfd_section_hash_newfunc
38689857Sobrien  PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
38789857Sobrien
38833965Sjdp/* A routine to create entries for a bfd_link_hash_table.  */
38933965Sjdpextern struct bfd_hash_entry *_bfd_link_hash_newfunc
39033965Sjdp  PARAMS ((struct bfd_hash_entry *entry,
39133965Sjdp	   struct bfd_hash_table *table,
39233965Sjdp	   const char *string));
39333965Sjdp
39433965Sjdp/* Initialize a bfd_link_hash_table.  */
39533965Sjdpextern boolean _bfd_link_hash_table_init
39633965Sjdp  PARAMS ((struct bfd_link_hash_table *, bfd *,
39733965Sjdp	   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
39833965Sjdp				       struct bfd_hash_table *,
39933965Sjdp				       const char *)));
40033965Sjdp
40133965Sjdp/* Generic link hash table creation routine.  */
40233965Sjdpextern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
40333965Sjdp  PARAMS ((bfd *));
40433965Sjdp
405104834Sobrien/* Generic link hash table destruction routine.  */
406104834Sobrienextern void _bfd_generic_link_hash_table_free
407104834Sobrien  PARAMS ((struct bfd_link_hash_table *));
408104834Sobrien
40933965Sjdp/* Generic add symbol routine.  */
41033965Sjdpextern boolean _bfd_generic_link_add_symbols
41133965Sjdp  PARAMS ((bfd *, struct bfd_link_info *));
41233965Sjdp
41333965Sjdp/* Generic add symbol routine.  This version is used by targets for
41433965Sjdp   which the linker must collect constructors and destructors by name,
41533965Sjdp   as the collect2 program does.  */
41633965Sjdpextern boolean _bfd_generic_link_add_symbols_collect
41733965Sjdp  PARAMS ((bfd *, struct bfd_link_info *));
41833965Sjdp
41933965Sjdp/* Generic archive add symbol routine.  */
42033965Sjdpextern boolean _bfd_generic_link_add_archive_symbols
42133965Sjdp  PARAMS ((bfd *, struct bfd_link_info *,
42233965Sjdp	   boolean (*checkfn) (bfd *, struct bfd_link_info *, boolean *)));
42333965Sjdp
42433965Sjdp/* Forward declaration to avoid prototype errors.  */
42533965Sjdptypedef struct bfd_link_hash_entry _bfd_link_hash_entry;
42633965Sjdp
42733965Sjdp/* Generic routine to add a single symbol.  */
42833965Sjdpextern boolean _bfd_generic_link_add_one_symbol
42933965Sjdp  PARAMS ((struct bfd_link_info *, bfd *, const char *name, flagword,
43033965Sjdp	   asection *, bfd_vma, const char *, boolean copy,
43133965Sjdp	   boolean constructor, struct bfd_link_hash_entry **));
43233965Sjdp
433104834Sobrien/* Generic routine to mark section as supplying symbols only.  */
434104834Sobrienextern void _bfd_generic_link_just_syms
435104834Sobrien  PARAMS ((asection *, struct bfd_link_info *));
436104834Sobrien
43733965Sjdp/* Generic link routine.  */
43833965Sjdpextern boolean _bfd_generic_final_link
43933965Sjdp  PARAMS ((bfd *, struct bfd_link_info *));
44033965Sjdp
44133965Sjdpextern boolean _bfd_generic_link_split_section
44233965Sjdp  PARAMS ((bfd *, struct sec *));
44333965Sjdp
44433965Sjdp/* Generic reloc_link_order processing routine.  */
44533965Sjdpextern boolean _bfd_generic_reloc_link_order
44633965Sjdp  PARAMS ((bfd *, struct bfd_link_info *, asection *,
44733965Sjdp	   struct bfd_link_order *));
44833965Sjdp
44933965Sjdp/* Default link order processing routine.  */
45033965Sjdpextern boolean _bfd_default_link_order
45133965Sjdp  PARAMS ((bfd *, struct bfd_link_info *, asection *,
45233965Sjdp	   struct bfd_link_order *));
45333965Sjdp
45433965Sjdp/* Count the number of reloc entries in a link order list.  */
45533965Sjdpextern unsigned int _bfd_count_link_order_relocs
45633965Sjdp  PARAMS ((struct bfd_link_order *));
45733965Sjdp
45833965Sjdp/* Final link relocation routine.  */
45933965Sjdpextern bfd_reloc_status_type _bfd_final_link_relocate
46033965Sjdp  PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *,
46189857Sobrien	   bfd_vma, bfd_vma, bfd_vma));
46233965Sjdp
46333965Sjdp/* Relocate a particular location by a howto and a value.  */
46433965Sjdpextern bfd_reloc_status_type _bfd_relocate_contents
46533965Sjdp  PARAMS ((reloc_howto_type *, bfd *, bfd_vma, bfd_byte *));
46633965Sjdp
46733965Sjdp/* Link stabs in sections in the first pass.  */
46833965Sjdp
46933965Sjdpextern boolean _bfd_link_section_stabs
47033965Sjdp  PARAMS ((bfd *, PTR *, asection *, asection *, PTR *));
47133965Sjdp
47289857Sobrien/* Eliminate stabs for discarded functions and symbols.  */
47389857Sobrienextern boolean _bfd_discard_section_stabs
47489857Sobrien  PARAMS ((bfd *, asection *, PTR,
47589857Sobrien	   boolean (*) (bfd_vma, PTR), PTR));
47689857Sobrien
47733965Sjdp/* Write out the .stab section when linking stabs in sections.  */
47833965Sjdp
47933965Sjdpextern boolean _bfd_write_section_stabs
48033965Sjdp  PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_byte *));
48133965Sjdp
48233965Sjdp/* Write out the .stabstr string table when linking stabs in sections.  */
48333965Sjdp
48433965Sjdpextern boolean _bfd_write_stab_strings PARAMS ((bfd *, PTR *));
48533965Sjdp
48633965Sjdp/* Find an offset within a .stab section when linking stabs in
48733965Sjdp   sections.  */
48833965Sjdp
48933965Sjdpextern bfd_vma _bfd_stab_section_offset
49033965Sjdp  PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_vma));
49133965Sjdp
49289857Sobrien/* Attempt to merge a SEC_MERGE section.  */
49389857Sobrien
49489857Sobrienextern boolean _bfd_merge_section
49589857Sobrien  PARAMS ((bfd *, PTR *, asection *, PTR *));
49689857Sobrien
49789857Sobrien/* Attempt to merge SEC_MERGE sections.  */
49889857Sobrien
49989857Sobrienextern boolean _bfd_merge_sections
50089857Sobrien  PARAMS ((bfd *, PTR, void (*)(bfd *, asection *)));
50189857Sobrien
50289857Sobrien/* Write out a merged section.  */
50389857Sobrien
50489857Sobrienextern boolean _bfd_write_merged_section
50589857Sobrien  PARAMS ((bfd *, asection *, PTR));
50689857Sobrien
50789857Sobrien/* Find an offset within a modified SEC_MERGE section.  */
50889857Sobrien
50989857Sobrienextern bfd_vma _bfd_merged_section_offset
51089857Sobrien  PARAMS ((bfd *, asection **, PTR, bfd_vma, bfd_vma));
51189857Sobrien
51233965Sjdp/* Create a string table.  */
51333965Sjdpextern struct bfd_strtab_hash *_bfd_stringtab_init PARAMS ((void));
51433965Sjdp
51533965Sjdp/* Create an XCOFF .debug section style string table.  */
51633965Sjdpextern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init PARAMS ((void));
51733965Sjdp
51833965Sjdp/* Free a string table.  */
51933965Sjdpextern void _bfd_stringtab_free PARAMS ((struct bfd_strtab_hash *));
52033965Sjdp
52133965Sjdp/* Get the size of a string table.  */
52233965Sjdpextern bfd_size_type _bfd_stringtab_size PARAMS ((struct bfd_strtab_hash *));
52333965Sjdp
52433965Sjdp/* Add a string to a string table.  */
52533965Sjdpextern bfd_size_type _bfd_stringtab_add
52633965Sjdp  PARAMS ((struct bfd_strtab_hash *, const char *, boolean hash,
52733965Sjdp	   boolean copy));
52833965Sjdp
52933965Sjdp/* Write out a string table.  */
53033965Sjdpextern boolean _bfd_stringtab_emit PARAMS ((bfd *, struct bfd_strtab_hash *));
53160484Sobrien
53260484Sobrien/* Check that endianness of input and output file match.  */
53360484Sobrienextern boolean _bfd_generic_verify_endian_match PARAMS ((bfd *, bfd *));
53433965Sjdp
53533965Sjdp/* Macros to tell if bfds are read or write enabled.
53633965Sjdp
53733965Sjdp   Note that bfds open for read may be scribbled into if the fd passed
53833965Sjdp   to bfd_fdopenr is actually open both for read and write
53933965Sjdp   simultaneously.  However an output bfd will never be open for
54033965Sjdp   read.  Therefore sometimes you want to check bfd_read_p or
54133965Sjdp   !bfd_read_p, and only sometimes bfd_write_p.
54233965Sjdp*/
54333965Sjdp
54433965Sjdp#define	bfd_read_p(abfd) ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
54533965Sjdp#define	bfd_write_p(abfd) ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
54633965Sjdp
54733965Sjdpvoid	bfd_assert PARAMS ((const char*,int));
54833965Sjdp
54933965Sjdp#define BFD_ASSERT(x) \
55033965Sjdp{ if (!(x)) bfd_assert(__FILE__,__LINE__); }
55133965Sjdp
55233965Sjdp#define BFD_FAIL() \
55333965Sjdp{ bfd_assert(__FILE__,__LINE__); }
55433965Sjdp
55560484Sobrienextern void _bfd_abort PARAMS ((const char *, int, const char *))
55660484Sobrien     ATTRIBUTE_NORETURN;
55760484Sobrien
55860484Sobrien/* if gcc >= 2.6, we can give a function name, too */
55960484Sobrien#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
56060484Sobrien#define __PRETTY_FUNCTION__  ((char *) NULL)
56160484Sobrien#endif
56260484Sobrien
56360484Sobrien#undef abort
56460484Sobrien#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
56560484Sobrien
56633965SjdpFILE *	bfd_cache_lookup_worker PARAMS ((bfd *));
56733965Sjdp
56833965Sjdpextern bfd *bfd_last_cache;
56933965Sjdp
57033965Sjdp/* List of supported target vectors, and the default vector (if
57133965Sjdp   bfd_default_vector[0] is NULL, there is no default).  */
57278828Sobrienextern const bfd_target * const *bfd_target_vector;
57333965Sjdpextern const bfd_target *bfd_default_vector[];
57433965Sjdp
57533965Sjdp/* Functions shared by the ECOFF and MIPS ELF backends, which have no
57633965Sjdp   other common header files.  */
57733965Sjdp
57833965Sjdp#if defined(__STDC__) || defined(ALMOST_STDC)
57933965Sjdpstruct ecoff_find_line;
58033965Sjdp#endif
58133965Sjdp
58233965Sjdpextern boolean _bfd_ecoff_locate_line
58333965Sjdp  PARAMS ((bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
58433965Sjdp	   const struct ecoff_debug_swap * const, struct ecoff_find_line *,
58533965Sjdp	   const char **, const char **, unsigned int *));
58633965Sjdpextern boolean _bfd_ecoff_get_accumulated_pdr PARAMS ((PTR, bfd_byte *));
58733965Sjdpextern boolean _bfd_ecoff_get_accumulated_sym PARAMS ((PTR, bfd_byte *));
58833965Sjdpextern boolean _bfd_ecoff_get_accumulated_ss PARAMS ((PTR, bfd_byte *));
58933965Sjdp
59033965Sjdpextern bfd_vma _bfd_get_gp_value PARAMS ((bfd *));
59133965Sjdpextern void _bfd_set_gp_value PARAMS ((bfd *, bfd_vma));
59233965Sjdp
59333965Sjdp/* Function shared by the COFF and ELF SH backends, which have no
59433965Sjdp   other common header files.  */
59533965Sjdp
59633965Sjdpextern boolean _bfd_sh_align_load_span
59733965Sjdp  PARAMS ((bfd *, asection *, bfd_byte *,
59833965Sjdp	   boolean (*) (bfd *, asection *, PTR, bfd_byte *, bfd_vma),
59933965Sjdp	   PTR, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, boolean *));
60033965Sjdp
601104834Sobrien/* Extracted from init.c.  */
602104834Sobrien/* Extracted from libbfd.c.  */
60394536Sobrienboolean
60489857Sobrienbfd_write_bigendian_4byte_int PARAMS ((bfd *, unsigned int));
60533965Sjdp
60677298Sobrienunsigned int
60733965Sjdpbfd_log2 PARAMS ((bfd_vma x));
60833965Sjdp
609104834Sobrien/* Extracted from cache.c.  */
61033965Sjdp#define BFD_CACHE_MAX_OPEN 10
61133965Sjdpextern bfd *bfd_last_cache;
61233965Sjdp
61333965Sjdp#define bfd_cache_lookup(x) \
61433965Sjdp    ((x)==bfd_last_cache? \
61577298Sobrien      (FILE*) (bfd_last_cache->iostream): \
61633965Sjdp       bfd_cache_lookup_worker(x))
61777298Sobrienboolean
61877298Sobrienbfd_cache_init PARAMS ((bfd *abfd));
61933965Sjdp
62077298Sobrienboolean
62177298Sobrienbfd_cache_close PARAMS ((bfd *abfd));
62233965Sjdp
62377298SobrienFILE*
62433965Sjdpbfd_open_file PARAMS ((bfd *abfd));
62533965Sjdp
62633965SjdpFILE *
62733965Sjdpbfd_cache_lookup_worker PARAMS ((bfd *abfd));
62833965Sjdp
629104834Sobrien/* Extracted from reloc.c.  */
63033965Sjdp#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
63133965Sjdp
63233965Sjdpstatic const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
63333965Sjdp
63433965Sjdp  "BFD_RELOC_64",
63533965Sjdp  "BFD_RELOC_32",
63633965Sjdp  "BFD_RELOC_26",
63733965Sjdp  "BFD_RELOC_24",
63833965Sjdp  "BFD_RELOC_16",
63933965Sjdp  "BFD_RELOC_14",
64033965Sjdp  "BFD_RELOC_8",
64133965Sjdp  "BFD_RELOC_64_PCREL",
64233965Sjdp  "BFD_RELOC_32_PCREL",
64333965Sjdp  "BFD_RELOC_24_PCREL",
64433965Sjdp  "BFD_RELOC_16_PCREL",
64533965Sjdp  "BFD_RELOC_12_PCREL",
64633965Sjdp  "BFD_RELOC_8_PCREL",
64733965Sjdp  "BFD_RELOC_32_GOT_PCREL",
64833965Sjdp  "BFD_RELOC_16_GOT_PCREL",
64933965Sjdp  "BFD_RELOC_8_GOT_PCREL",
65033965Sjdp  "BFD_RELOC_32_GOTOFF",
65133965Sjdp  "BFD_RELOC_16_GOTOFF",
65233965Sjdp  "BFD_RELOC_LO16_GOTOFF",
65333965Sjdp  "BFD_RELOC_HI16_GOTOFF",
65433965Sjdp  "BFD_RELOC_HI16_S_GOTOFF",
65533965Sjdp  "BFD_RELOC_8_GOTOFF",
65689857Sobrien  "BFD_RELOC_64_PLT_PCREL",
65733965Sjdp  "BFD_RELOC_32_PLT_PCREL",
65833965Sjdp  "BFD_RELOC_24_PLT_PCREL",
65933965Sjdp  "BFD_RELOC_16_PLT_PCREL",
66033965Sjdp  "BFD_RELOC_8_PLT_PCREL",
66189857Sobrien  "BFD_RELOC_64_PLTOFF",
66233965Sjdp  "BFD_RELOC_32_PLTOFF",
66333965Sjdp  "BFD_RELOC_16_PLTOFF",
66433965Sjdp  "BFD_RELOC_LO16_PLTOFF",
66533965Sjdp  "BFD_RELOC_HI16_PLTOFF",
66633965Sjdp  "BFD_RELOC_HI16_S_PLTOFF",
66733965Sjdp  "BFD_RELOC_8_PLTOFF",
66833965Sjdp  "BFD_RELOC_68K_GLOB_DAT",
66933965Sjdp  "BFD_RELOC_68K_JMP_SLOT",
67033965Sjdp  "BFD_RELOC_68K_RELATIVE",
67133965Sjdp  "BFD_RELOC_32_BASEREL",
67233965Sjdp  "BFD_RELOC_16_BASEREL",
67333965Sjdp  "BFD_RELOC_LO16_BASEREL",
67433965Sjdp  "BFD_RELOC_HI16_BASEREL",
67533965Sjdp  "BFD_RELOC_HI16_S_BASEREL",
67633965Sjdp  "BFD_RELOC_8_BASEREL",
67733965Sjdp  "BFD_RELOC_RVA",
67833965Sjdp  "BFD_RELOC_8_FFnn",
67933965Sjdp  "BFD_RELOC_32_PCREL_S2",
68033965Sjdp  "BFD_RELOC_16_PCREL_S2",
68133965Sjdp  "BFD_RELOC_23_PCREL_S2",
68233965Sjdp  "BFD_RELOC_HI22",
68333965Sjdp  "BFD_RELOC_LO10",
68433965Sjdp  "BFD_RELOC_GPREL16",
68533965Sjdp  "BFD_RELOC_GPREL32",
68633965Sjdp  "BFD_RELOC_I960_CALLJ",
68733965Sjdp  "BFD_RELOC_NONE",
68833965Sjdp  "BFD_RELOC_SPARC_WDISP22",
68933965Sjdp  "BFD_RELOC_SPARC22",
69033965Sjdp  "BFD_RELOC_SPARC13",
69133965Sjdp  "BFD_RELOC_SPARC_GOT10",
69233965Sjdp  "BFD_RELOC_SPARC_GOT13",
69333965Sjdp  "BFD_RELOC_SPARC_GOT22",
69433965Sjdp  "BFD_RELOC_SPARC_PC10",
69533965Sjdp  "BFD_RELOC_SPARC_PC22",
69633965Sjdp  "BFD_RELOC_SPARC_WPLT30",
69733965Sjdp  "BFD_RELOC_SPARC_COPY",
69833965Sjdp  "BFD_RELOC_SPARC_GLOB_DAT",
69933965Sjdp  "BFD_RELOC_SPARC_JMP_SLOT",
70033965Sjdp  "BFD_RELOC_SPARC_RELATIVE",
70178828Sobrien  "BFD_RELOC_SPARC_UA16",
70233965Sjdp  "BFD_RELOC_SPARC_UA32",
70378828Sobrien  "BFD_RELOC_SPARC_UA64",
70433965Sjdp  "BFD_RELOC_SPARC_BASE13",
70533965Sjdp  "BFD_RELOC_SPARC_BASE22",
70633965Sjdp  "BFD_RELOC_SPARC_10",
70733965Sjdp  "BFD_RELOC_SPARC_11",
70833965Sjdp  "BFD_RELOC_SPARC_OLO10",
70933965Sjdp  "BFD_RELOC_SPARC_HH22",
71033965Sjdp  "BFD_RELOC_SPARC_HM10",
71133965Sjdp  "BFD_RELOC_SPARC_LM22",
71233965Sjdp  "BFD_RELOC_SPARC_PC_HH22",
71333965Sjdp  "BFD_RELOC_SPARC_PC_HM10",
71433965Sjdp  "BFD_RELOC_SPARC_PC_LM22",
71533965Sjdp  "BFD_RELOC_SPARC_WDISP16",
71633965Sjdp  "BFD_RELOC_SPARC_WDISP19",
71733965Sjdp  "BFD_RELOC_SPARC_7",
71833965Sjdp  "BFD_RELOC_SPARC_6",
71933965Sjdp  "BFD_RELOC_SPARC_5",
72089857Sobrien  "BFD_RELOC_SPARC_PLT32",
72138889Sjdp  "BFD_RELOC_SPARC_PLT64",
72238889Sjdp  "BFD_RELOC_SPARC_HIX22",
72338889Sjdp  "BFD_RELOC_SPARC_LOX10",
72438889Sjdp  "BFD_RELOC_SPARC_H44",
72538889Sjdp  "BFD_RELOC_SPARC_M44",
72638889Sjdp  "BFD_RELOC_SPARC_L44",
72738889Sjdp  "BFD_RELOC_SPARC_REGISTER",
72860484Sobrien  "BFD_RELOC_SPARC_REV32",
72933965Sjdp  "BFD_RELOC_ALPHA_GPDISP_HI16",
73033965Sjdp  "BFD_RELOC_ALPHA_GPDISP_LO16",
73133965Sjdp  "BFD_RELOC_ALPHA_GPDISP",
73233965Sjdp  "BFD_RELOC_ALPHA_LITERAL",
73333965Sjdp  "BFD_RELOC_ALPHA_ELF_LITERAL",
73433965Sjdp  "BFD_RELOC_ALPHA_LITUSE",
73533965Sjdp  "BFD_RELOC_ALPHA_HINT",
73633965Sjdp  "BFD_RELOC_ALPHA_LINKAGE",
73733965Sjdp  "BFD_RELOC_ALPHA_CODEADDR",
73889857Sobrien  "BFD_RELOC_ALPHA_GPREL_HI16",
73989857Sobrien  "BFD_RELOC_ALPHA_GPREL_LO16",
74091041Sobrien  "BFD_RELOC_ALPHA_BRSGP",
741104834Sobrien  "BFD_RELOC_ALPHA_TLSGD",
742104834Sobrien  "BFD_RELOC_ALPHA_TLSLDM",
743104834Sobrien  "BFD_RELOC_ALPHA_DTPMOD64",
744104834Sobrien  "BFD_RELOC_ALPHA_GOTDTPREL16",
745104834Sobrien  "BFD_RELOC_ALPHA_DTPREL64",
746104834Sobrien  "BFD_RELOC_ALPHA_DTPREL_HI16",
747104834Sobrien  "BFD_RELOC_ALPHA_DTPREL_LO16",
748104834Sobrien  "BFD_RELOC_ALPHA_DTPREL16",
749104834Sobrien  "BFD_RELOC_ALPHA_GOTTPREL16",
750104834Sobrien  "BFD_RELOC_ALPHA_TPREL64",
751104834Sobrien  "BFD_RELOC_ALPHA_TPREL_HI16",
752104834Sobrien  "BFD_RELOC_ALPHA_TPREL_LO16",
753104834Sobrien  "BFD_RELOC_ALPHA_TPREL16",
75433965Sjdp  "BFD_RELOC_MIPS_JMP",
75533965Sjdp  "BFD_RELOC_MIPS16_JMP",
75633965Sjdp  "BFD_RELOC_MIPS16_GPREL",
75733965Sjdp  "BFD_RELOC_HI16",
75833965Sjdp  "BFD_RELOC_HI16_S",
75933965Sjdp  "BFD_RELOC_LO16",
76033965Sjdp  "BFD_RELOC_PCREL_HI16_S",
76133965Sjdp  "BFD_RELOC_PCREL_LO16",
76233965Sjdp  "BFD_RELOC_MIPS_LITERAL",
76333965Sjdp  "BFD_RELOC_MIPS_GOT16",
76433965Sjdp  "BFD_RELOC_MIPS_CALL16",
76533965Sjdp  "BFD_RELOC_MIPS_GOT_HI16",
76633965Sjdp  "BFD_RELOC_MIPS_GOT_LO16",
76733965Sjdp  "BFD_RELOC_MIPS_CALL_HI16",
76833965Sjdp  "BFD_RELOC_MIPS_CALL_LO16",
76960484Sobrien  "BFD_RELOC_MIPS_SUB",
77060484Sobrien  "BFD_RELOC_MIPS_GOT_PAGE",
77160484Sobrien  "BFD_RELOC_MIPS_GOT_OFST",
77260484Sobrien  "BFD_RELOC_MIPS_GOT_DISP",
77378828Sobrien  "BFD_RELOC_MIPS_SHIFT5",
77478828Sobrien  "BFD_RELOC_MIPS_SHIFT6",
77578828Sobrien  "BFD_RELOC_MIPS_INSERT_A",
77678828Sobrien  "BFD_RELOC_MIPS_INSERT_B",
77778828Sobrien  "BFD_RELOC_MIPS_DELETE",
77878828Sobrien  "BFD_RELOC_MIPS_HIGHEST",
77978828Sobrien  "BFD_RELOC_MIPS_HIGHER",
78078828Sobrien  "BFD_RELOC_MIPS_SCN_DISP",
78178828Sobrien  "BFD_RELOC_MIPS_REL16",
78278828Sobrien  "BFD_RELOC_MIPS_RELGOT",
78378828Sobrien  "BFD_RELOC_MIPS_JALR",
784104834Sobrien  "BFD_RELOC_FRV_LABEL16",
785104834Sobrien  "BFD_RELOC_FRV_LABEL24",
786104834Sobrien  "BFD_RELOC_FRV_LO16",
787104834Sobrien  "BFD_RELOC_FRV_HI16",
788104834Sobrien  "BFD_RELOC_FRV_GPREL12",
789104834Sobrien  "BFD_RELOC_FRV_GPRELU12",
790104834Sobrien  "BFD_RELOC_FRV_GPREL32",
791104834Sobrien  "BFD_RELOC_FRV_GPRELHI",
792104834Sobrien  "BFD_RELOC_FRV_GPRELLO",
79338889Sjdp
79433965Sjdp  "BFD_RELOC_386_GOT32",
79533965Sjdp  "BFD_RELOC_386_PLT32",
79633965Sjdp  "BFD_RELOC_386_COPY",
79733965Sjdp  "BFD_RELOC_386_GLOB_DAT",
79833965Sjdp  "BFD_RELOC_386_JUMP_SLOT",
79933965Sjdp  "BFD_RELOC_386_RELATIVE",
80033965Sjdp  "BFD_RELOC_386_GOTOFF",
80133965Sjdp  "BFD_RELOC_386_GOTPC",
802104834Sobrien  "BFD_RELOC_386_TLS_TPOFF",
803104834Sobrien  "BFD_RELOC_386_TLS_IE",
804104834Sobrien  "BFD_RELOC_386_TLS_GOTIE",
805104834Sobrien  "BFD_RELOC_386_TLS_LE",
806104834Sobrien  "BFD_RELOC_386_TLS_GD",
807104834Sobrien  "BFD_RELOC_386_TLS_LDM",
808104834Sobrien  "BFD_RELOC_386_TLS_LDO_32",
809104834Sobrien  "BFD_RELOC_386_TLS_IE_32",
810104834Sobrien  "BFD_RELOC_386_TLS_LE_32",
811104834Sobrien  "BFD_RELOC_386_TLS_DTPMOD32",
812104834Sobrien  "BFD_RELOC_386_TLS_DTPOFF32",
813104834Sobrien  "BFD_RELOC_386_TLS_TPOFF32",
81477298Sobrien  "BFD_RELOC_X86_64_GOT32",
81577298Sobrien  "BFD_RELOC_X86_64_PLT32",
81677298Sobrien  "BFD_RELOC_X86_64_COPY",
81777298Sobrien  "BFD_RELOC_X86_64_GLOB_DAT",
81877298Sobrien  "BFD_RELOC_X86_64_JUMP_SLOT",
81977298Sobrien  "BFD_RELOC_X86_64_RELATIVE",
82077298Sobrien  "BFD_RELOC_X86_64_GOTPCREL",
82177298Sobrien  "BFD_RELOC_X86_64_32S",
82233965Sjdp  "BFD_RELOC_NS32K_IMM_8",
82333965Sjdp  "BFD_RELOC_NS32K_IMM_16",
82433965Sjdp  "BFD_RELOC_NS32K_IMM_32",
82533965Sjdp  "BFD_RELOC_NS32K_IMM_8_PCREL",
82633965Sjdp  "BFD_RELOC_NS32K_IMM_16_PCREL",
82733965Sjdp  "BFD_RELOC_NS32K_IMM_32_PCREL",
82833965Sjdp  "BFD_RELOC_NS32K_DISP_8",
82933965Sjdp  "BFD_RELOC_NS32K_DISP_16",
83033965Sjdp  "BFD_RELOC_NS32K_DISP_32",
83133965Sjdp  "BFD_RELOC_NS32K_DISP_8_PCREL",
83233965Sjdp  "BFD_RELOC_NS32K_DISP_16_PCREL",
83333965Sjdp  "BFD_RELOC_NS32K_DISP_32_PCREL",
83489857Sobrien  "BFD_RELOC_PDP11_DISP_8_PCREL",
83589857Sobrien  "BFD_RELOC_PDP11_DISP_6_PCREL",
83660484Sobrien  "BFD_RELOC_PJ_CODE_HI16",
83760484Sobrien  "BFD_RELOC_PJ_CODE_LO16",
83860484Sobrien  "BFD_RELOC_PJ_CODE_DIR16",
83960484Sobrien  "BFD_RELOC_PJ_CODE_DIR32",
84060484Sobrien  "BFD_RELOC_PJ_CODE_REL16",
84160484Sobrien  "BFD_RELOC_PJ_CODE_REL32",
84233965Sjdp  "BFD_RELOC_PPC_B26",
84333965Sjdp  "BFD_RELOC_PPC_BA26",
84433965Sjdp  "BFD_RELOC_PPC_TOC16",
84533965Sjdp  "BFD_RELOC_PPC_B16",
84633965Sjdp  "BFD_RELOC_PPC_B16_BRTAKEN",
84733965Sjdp  "BFD_RELOC_PPC_B16_BRNTAKEN",
84833965Sjdp  "BFD_RELOC_PPC_BA16",
84933965Sjdp  "BFD_RELOC_PPC_BA16_BRTAKEN",
85033965Sjdp  "BFD_RELOC_PPC_BA16_BRNTAKEN",
85133965Sjdp  "BFD_RELOC_PPC_COPY",
85233965Sjdp  "BFD_RELOC_PPC_GLOB_DAT",
85333965Sjdp  "BFD_RELOC_PPC_JMP_SLOT",
85433965Sjdp  "BFD_RELOC_PPC_RELATIVE",
85533965Sjdp  "BFD_RELOC_PPC_LOCAL24PC",
85633965Sjdp  "BFD_RELOC_PPC_EMB_NADDR32",
85733965Sjdp  "BFD_RELOC_PPC_EMB_NADDR16",
85833965Sjdp  "BFD_RELOC_PPC_EMB_NADDR16_LO",
85933965Sjdp  "BFD_RELOC_PPC_EMB_NADDR16_HI",
86033965Sjdp  "BFD_RELOC_PPC_EMB_NADDR16_HA",
86133965Sjdp  "BFD_RELOC_PPC_EMB_SDAI16",
86233965Sjdp  "BFD_RELOC_PPC_EMB_SDA2I16",
86333965Sjdp  "BFD_RELOC_PPC_EMB_SDA2REL",
86433965Sjdp  "BFD_RELOC_PPC_EMB_SDA21",
86533965Sjdp  "BFD_RELOC_PPC_EMB_MRKREF",
86633965Sjdp  "BFD_RELOC_PPC_EMB_RELSEC16",
86733965Sjdp  "BFD_RELOC_PPC_EMB_RELST_LO",
86833965Sjdp  "BFD_RELOC_PPC_EMB_RELST_HI",
86933965Sjdp  "BFD_RELOC_PPC_EMB_RELST_HA",
87033965Sjdp  "BFD_RELOC_PPC_EMB_BIT_FLD",
87133965Sjdp  "BFD_RELOC_PPC_EMB_RELSDA",
87289857Sobrien  "BFD_RELOC_PPC64_HIGHER",
87389857Sobrien  "BFD_RELOC_PPC64_HIGHER_S",
87489857Sobrien  "BFD_RELOC_PPC64_HIGHEST",
87589857Sobrien  "BFD_RELOC_PPC64_HIGHEST_S",
87689857Sobrien  "BFD_RELOC_PPC64_TOC16_LO",
87789857Sobrien  "BFD_RELOC_PPC64_TOC16_HI",
87889857Sobrien  "BFD_RELOC_PPC64_TOC16_HA",
87989857Sobrien  "BFD_RELOC_PPC64_TOC",
88089857Sobrien  "BFD_RELOC_PPC64_PLTGOT16",
88189857Sobrien  "BFD_RELOC_PPC64_PLTGOT16_LO",
88289857Sobrien  "BFD_RELOC_PPC64_PLTGOT16_HI",
88389857Sobrien  "BFD_RELOC_PPC64_PLTGOT16_HA",
88489857Sobrien  "BFD_RELOC_PPC64_ADDR16_DS",
88589857Sobrien  "BFD_RELOC_PPC64_ADDR16_LO_DS",
88689857Sobrien  "BFD_RELOC_PPC64_GOT16_DS",
88789857Sobrien  "BFD_RELOC_PPC64_GOT16_LO_DS",
88889857Sobrien  "BFD_RELOC_PPC64_PLT16_LO_DS",
88989857Sobrien  "BFD_RELOC_PPC64_SECTOFF_DS",
89089857Sobrien  "BFD_RELOC_PPC64_SECTOFF_LO_DS",
89189857Sobrien  "BFD_RELOC_PPC64_TOC16_DS",
89289857Sobrien  "BFD_RELOC_PPC64_TOC16_LO_DS",
89389857Sobrien  "BFD_RELOC_PPC64_PLTGOT16_DS",
89489857Sobrien  "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
89560484Sobrien  "BFD_RELOC_I370_D12",
89633965Sjdp  "BFD_RELOC_CTOR",
89733965Sjdp  "BFD_RELOC_ARM_PCREL_BRANCH",
89877298Sobrien  "BFD_RELOC_ARM_PCREL_BLX",
89977298Sobrien  "BFD_RELOC_THUMB_PCREL_BLX",
90033965Sjdp  "BFD_RELOC_ARM_IMMEDIATE",
90160484Sobrien  "BFD_RELOC_ARM_ADRL_IMMEDIATE",
90233965Sjdp  "BFD_RELOC_ARM_OFFSET_IMM",
90333965Sjdp  "BFD_RELOC_ARM_SHIFT_IMM",
90433965Sjdp  "BFD_RELOC_ARM_SWI",
90533965Sjdp  "BFD_RELOC_ARM_MULTI",
90633965Sjdp  "BFD_RELOC_ARM_CP_OFF_IMM",
90733965Sjdp  "BFD_RELOC_ARM_ADR_IMM",
90833965Sjdp  "BFD_RELOC_ARM_LDR_IMM",
90933965Sjdp  "BFD_RELOC_ARM_LITERAL",
91033965Sjdp  "BFD_RELOC_ARM_IN_POOL",
91133965Sjdp  "BFD_RELOC_ARM_OFFSET_IMM8",
91233965Sjdp  "BFD_RELOC_ARM_HWLITERAL",
91333965Sjdp  "BFD_RELOC_ARM_THUMB_ADD",
91433965Sjdp  "BFD_RELOC_ARM_THUMB_IMM",
91533965Sjdp  "BFD_RELOC_ARM_THUMB_SHIFT",
91633965Sjdp  "BFD_RELOC_ARM_THUMB_OFFSET",
91760484Sobrien  "BFD_RELOC_ARM_GOT12",
91860484Sobrien  "BFD_RELOC_ARM_GOT32",
91960484Sobrien  "BFD_RELOC_ARM_JUMP_SLOT",
92060484Sobrien  "BFD_RELOC_ARM_COPY",
92160484Sobrien  "BFD_RELOC_ARM_GLOB_DAT",
92260484Sobrien  "BFD_RELOC_ARM_PLT32",
92360484Sobrien  "BFD_RELOC_ARM_RELATIVE",
92460484Sobrien  "BFD_RELOC_ARM_GOTOFF",
92560484Sobrien  "BFD_RELOC_ARM_GOTPC",
92633965Sjdp  "BFD_RELOC_SH_PCDISP8BY2",
92733965Sjdp  "BFD_RELOC_SH_PCDISP12BY2",
92833965Sjdp  "BFD_RELOC_SH_IMM4",
92933965Sjdp  "BFD_RELOC_SH_IMM4BY2",
93033965Sjdp  "BFD_RELOC_SH_IMM4BY4",
93133965Sjdp  "BFD_RELOC_SH_IMM8",
93233965Sjdp  "BFD_RELOC_SH_IMM8BY2",
93333965Sjdp  "BFD_RELOC_SH_IMM8BY4",
93433965Sjdp  "BFD_RELOC_SH_PCRELIMM8BY2",
93533965Sjdp  "BFD_RELOC_SH_PCRELIMM8BY4",
93633965Sjdp  "BFD_RELOC_SH_SWITCH16",
93733965Sjdp  "BFD_RELOC_SH_SWITCH32",
93833965Sjdp  "BFD_RELOC_SH_USES",
93933965Sjdp  "BFD_RELOC_SH_COUNT",
94033965Sjdp  "BFD_RELOC_SH_ALIGN",
94133965Sjdp  "BFD_RELOC_SH_CODE",
94233965Sjdp  "BFD_RELOC_SH_DATA",
94333965Sjdp  "BFD_RELOC_SH_LABEL",
94477298Sobrien  "BFD_RELOC_SH_LOOP_START",
94577298Sobrien  "BFD_RELOC_SH_LOOP_END",
94677298Sobrien  "BFD_RELOC_SH_COPY",
94777298Sobrien  "BFD_RELOC_SH_GLOB_DAT",
94877298Sobrien  "BFD_RELOC_SH_JMP_SLOT",
94977298Sobrien  "BFD_RELOC_SH_RELATIVE",
95077298Sobrien  "BFD_RELOC_SH_GOTPC",
95199461Sobrien  "BFD_RELOC_SH_GOT_LOW16",
95299461Sobrien  "BFD_RELOC_SH_GOT_MEDLOW16",
95399461Sobrien  "BFD_RELOC_SH_GOT_MEDHI16",
95499461Sobrien  "BFD_RELOC_SH_GOT_HI16",
95599461Sobrien  "BFD_RELOC_SH_GOTPLT_LOW16",
95699461Sobrien  "BFD_RELOC_SH_GOTPLT_MEDLOW16",
95799461Sobrien  "BFD_RELOC_SH_GOTPLT_MEDHI16",
95899461Sobrien  "BFD_RELOC_SH_GOTPLT_HI16",
95999461Sobrien  "BFD_RELOC_SH_PLT_LOW16",
96099461Sobrien  "BFD_RELOC_SH_PLT_MEDLOW16",
96199461Sobrien  "BFD_RELOC_SH_PLT_MEDHI16",
96299461Sobrien  "BFD_RELOC_SH_PLT_HI16",
96399461Sobrien  "BFD_RELOC_SH_GOTOFF_LOW16",
96499461Sobrien  "BFD_RELOC_SH_GOTOFF_MEDLOW16",
96599461Sobrien  "BFD_RELOC_SH_GOTOFF_MEDHI16",
96699461Sobrien  "BFD_RELOC_SH_GOTOFF_HI16",
96799461Sobrien  "BFD_RELOC_SH_GOTPC_LOW16",
96899461Sobrien  "BFD_RELOC_SH_GOTPC_MEDLOW16",
96999461Sobrien  "BFD_RELOC_SH_GOTPC_MEDHI16",
97099461Sobrien  "BFD_RELOC_SH_GOTPC_HI16",
97199461Sobrien  "BFD_RELOC_SH_COPY64",
97299461Sobrien  "BFD_RELOC_SH_GLOB_DAT64",
97399461Sobrien  "BFD_RELOC_SH_JMP_SLOT64",
97499461Sobrien  "BFD_RELOC_SH_RELATIVE64",
97599461Sobrien  "BFD_RELOC_SH_GOT10BY4",
97699461Sobrien  "BFD_RELOC_SH_GOT10BY8",
97799461Sobrien  "BFD_RELOC_SH_GOTPLT10BY4",
97899461Sobrien  "BFD_RELOC_SH_GOTPLT10BY8",
97999461Sobrien  "BFD_RELOC_SH_GOTPLT32",
98099461Sobrien  "BFD_RELOC_SH_SHMEDIA_CODE",
98199461Sobrien  "BFD_RELOC_SH_IMMU5",
98299461Sobrien  "BFD_RELOC_SH_IMMS6",
98399461Sobrien  "BFD_RELOC_SH_IMMS6BY32",
98499461Sobrien  "BFD_RELOC_SH_IMMU6",
98599461Sobrien  "BFD_RELOC_SH_IMMS10",
98699461Sobrien  "BFD_RELOC_SH_IMMS10BY2",
98799461Sobrien  "BFD_RELOC_SH_IMMS10BY4",
98899461Sobrien  "BFD_RELOC_SH_IMMS10BY8",
98999461Sobrien  "BFD_RELOC_SH_IMMS16",
99099461Sobrien  "BFD_RELOC_SH_IMMU16",
99199461Sobrien  "BFD_RELOC_SH_IMM_LOW16",
99299461Sobrien  "BFD_RELOC_SH_IMM_LOW16_PCREL",
99399461Sobrien  "BFD_RELOC_SH_IMM_MEDLOW16",
99499461Sobrien  "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
99599461Sobrien  "BFD_RELOC_SH_IMM_MEDHI16",
99699461Sobrien  "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
99799461Sobrien  "BFD_RELOC_SH_IMM_HI16",
99899461Sobrien  "BFD_RELOC_SH_IMM_HI16_PCREL",
99999461Sobrien  "BFD_RELOC_SH_PT_16",
100038889Sjdp  "BFD_RELOC_THUMB_PCREL_BRANCH9",
100138889Sjdp  "BFD_RELOC_THUMB_PCREL_BRANCH12",
100238889Sjdp  "BFD_RELOC_THUMB_PCREL_BRANCH23",
100338889Sjdp  "BFD_RELOC_ARC_B22_PCREL",
100438889Sjdp  "BFD_RELOC_ARC_B26",
100533965Sjdp  "BFD_RELOC_D10V_10_PCREL_R",
100633965Sjdp  "BFD_RELOC_D10V_10_PCREL_L",
100733965Sjdp  "BFD_RELOC_D10V_18",
100833965Sjdp  "BFD_RELOC_D10V_18_PCREL",
100960484Sobrien  "BFD_RELOC_D30V_6",
101060484Sobrien  "BFD_RELOC_D30V_9_PCREL",
101160484Sobrien  "BFD_RELOC_D30V_9_PCREL_R",
101260484Sobrien  "BFD_RELOC_D30V_15",
101360484Sobrien  "BFD_RELOC_D30V_15_PCREL",
101460484Sobrien  "BFD_RELOC_D30V_15_PCREL_R",
101560484Sobrien  "BFD_RELOC_D30V_21",
101660484Sobrien  "BFD_RELOC_D30V_21_PCREL",
101760484Sobrien  "BFD_RELOC_D30V_21_PCREL_R",
101860484Sobrien  "BFD_RELOC_D30V_32",
101960484Sobrien  "BFD_RELOC_D30V_32_PCREL",
1020104834Sobrien  "BFD_RELOC_DLX_HI16_S",
1021104834Sobrien  "BFD_RELOC_DLX_LO16",
1022104834Sobrien  "BFD_RELOC_DLX_JMP26",
102333965Sjdp  "BFD_RELOC_M32R_24",
102433965Sjdp  "BFD_RELOC_M32R_10_PCREL",
102533965Sjdp  "BFD_RELOC_M32R_18_PCREL",
102633965Sjdp  "BFD_RELOC_M32R_26_PCREL",
102733965Sjdp  "BFD_RELOC_M32R_HI16_ULO",
102833965Sjdp  "BFD_RELOC_M32R_HI16_SLO",
102933965Sjdp  "BFD_RELOC_M32R_LO16",
103033965Sjdp  "BFD_RELOC_M32R_SDA16",
103138889Sjdp  "BFD_RELOC_V850_9_PCREL",
103238889Sjdp  "BFD_RELOC_V850_22_PCREL",
103338889Sjdp  "BFD_RELOC_V850_SDA_16_16_OFFSET",
103438889Sjdp  "BFD_RELOC_V850_SDA_15_16_OFFSET",
103538889Sjdp  "BFD_RELOC_V850_ZDA_16_16_OFFSET",
103638889Sjdp  "BFD_RELOC_V850_ZDA_15_16_OFFSET",
103738889Sjdp  "BFD_RELOC_V850_TDA_6_8_OFFSET",
103838889Sjdp  "BFD_RELOC_V850_TDA_7_8_OFFSET",
103938889Sjdp  "BFD_RELOC_V850_TDA_7_7_OFFSET",
104038889Sjdp  "BFD_RELOC_V850_TDA_16_16_OFFSET",
104160484Sobrien  "BFD_RELOC_V850_TDA_4_5_OFFSET",
104260484Sobrien  "BFD_RELOC_V850_TDA_4_4_OFFSET",
104360484Sobrien  "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
104460484Sobrien  "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
104560484Sobrien  "BFD_RELOC_V850_CALLT_6_7_OFFSET",
104660484Sobrien  "BFD_RELOC_V850_CALLT_16_16_OFFSET",
104733965Sjdp
104833965Sjdp  "BFD_RELOC_MN10300_32_PCREL",
104933965Sjdp  "BFD_RELOC_MN10300_16_PCREL",
105038889Sjdp  "BFD_RELOC_TIC30_LDP",
105177298Sobrien  "BFD_RELOC_TIC54X_PARTLS7",
105277298Sobrien  "BFD_RELOC_TIC54X_PARTMS9",
105377298Sobrien  "BFD_RELOC_TIC54X_23",
105477298Sobrien  "BFD_RELOC_TIC54X_16_OF_23",
105577298Sobrien  "BFD_RELOC_TIC54X_MS7_OF_23",
105660484Sobrien  "BFD_RELOC_FR30_48",
105760484Sobrien  "BFD_RELOC_FR30_20",
105860484Sobrien  "BFD_RELOC_FR30_6_IN_4",
105960484Sobrien  "BFD_RELOC_FR30_8_IN_8",
106060484Sobrien  "BFD_RELOC_FR30_9_IN_8",
106160484Sobrien  "BFD_RELOC_FR30_10_IN_8",
106260484Sobrien  "BFD_RELOC_FR30_9_PCREL",
106360484Sobrien  "BFD_RELOC_FR30_12_PCREL",
106460484Sobrien  "BFD_RELOC_MCORE_PCREL_IMM8BY4",
106560484Sobrien  "BFD_RELOC_MCORE_PCREL_IMM11BY2",
106660484Sobrien  "BFD_RELOC_MCORE_PCREL_IMM4BY2",
106760484Sobrien  "BFD_RELOC_MCORE_PCREL_32",
106860484Sobrien  "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
106960484Sobrien  "BFD_RELOC_MCORE_RVA",
107089857Sobrien  "BFD_RELOC_MMIX_GETA",
107189857Sobrien  "BFD_RELOC_MMIX_GETA_1",
107289857Sobrien  "BFD_RELOC_MMIX_GETA_2",
107389857Sobrien  "BFD_RELOC_MMIX_GETA_3",
107489857Sobrien  "BFD_RELOC_MMIX_CBRANCH",
107589857Sobrien  "BFD_RELOC_MMIX_CBRANCH_J",
107689857Sobrien  "BFD_RELOC_MMIX_CBRANCH_1",
107789857Sobrien  "BFD_RELOC_MMIX_CBRANCH_2",
107889857Sobrien  "BFD_RELOC_MMIX_CBRANCH_3",
107989857Sobrien  "BFD_RELOC_MMIX_PUSHJ",
108089857Sobrien  "BFD_RELOC_MMIX_PUSHJ_1",
108189857Sobrien  "BFD_RELOC_MMIX_PUSHJ_2",
108289857Sobrien  "BFD_RELOC_MMIX_PUSHJ_3",
108389857Sobrien  "BFD_RELOC_MMIX_JMP",
108489857Sobrien  "BFD_RELOC_MMIX_JMP_1",
108589857Sobrien  "BFD_RELOC_MMIX_JMP_2",
108689857Sobrien  "BFD_RELOC_MMIX_JMP_3",
108789857Sobrien  "BFD_RELOC_MMIX_ADDR19",
108889857Sobrien  "BFD_RELOC_MMIX_ADDR27",
108989857Sobrien  "BFD_RELOC_MMIX_REG_OR_BYTE",
109089857Sobrien  "BFD_RELOC_MMIX_REG",
109189857Sobrien  "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
109289857Sobrien  "BFD_RELOC_MMIX_LOCAL",
109360484Sobrien  "BFD_RELOC_AVR_7_PCREL",
109460484Sobrien  "BFD_RELOC_AVR_13_PCREL",
109560484Sobrien  "BFD_RELOC_AVR_16_PM",
109660484Sobrien  "BFD_RELOC_AVR_LO8_LDI",
109760484Sobrien  "BFD_RELOC_AVR_HI8_LDI",
109860484Sobrien  "BFD_RELOC_AVR_HH8_LDI",
109960484Sobrien  "BFD_RELOC_AVR_LO8_LDI_NEG",
110060484Sobrien  "BFD_RELOC_AVR_HI8_LDI_NEG",
110160484Sobrien  "BFD_RELOC_AVR_HH8_LDI_NEG",
110260484Sobrien  "BFD_RELOC_AVR_LO8_LDI_PM",
110360484Sobrien  "BFD_RELOC_AVR_HI8_LDI_PM",
110460484Sobrien  "BFD_RELOC_AVR_HH8_LDI_PM",
110560484Sobrien  "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
110660484Sobrien  "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
110760484Sobrien  "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
110860484Sobrien  "BFD_RELOC_AVR_CALL",
110989857Sobrien  "BFD_RELOC_390_12",
111089857Sobrien  "BFD_RELOC_390_GOT12",
111189857Sobrien  "BFD_RELOC_390_PLT32",
111289857Sobrien  "BFD_RELOC_390_COPY",
111389857Sobrien  "BFD_RELOC_390_GLOB_DAT",
111489857Sobrien  "BFD_RELOC_390_JMP_SLOT",
111589857Sobrien  "BFD_RELOC_390_RELATIVE",
111689857Sobrien  "BFD_RELOC_390_GOTPC",
111789857Sobrien  "BFD_RELOC_390_GOT16",
111889857Sobrien  "BFD_RELOC_390_PC16DBL",
111989857Sobrien  "BFD_RELOC_390_PLT16DBL",
112089857Sobrien  "BFD_RELOC_390_PC32DBL",
112189857Sobrien  "BFD_RELOC_390_PLT32DBL",
112289857Sobrien  "BFD_RELOC_390_GOTPCDBL",
112389857Sobrien  "BFD_RELOC_390_GOT64",
112489857Sobrien  "BFD_RELOC_390_PLT64",
112589857Sobrien  "BFD_RELOC_390_GOTENT",
112660484Sobrien  "BFD_RELOC_VTABLE_INHERIT",
112760484Sobrien  "BFD_RELOC_VTABLE_ENTRY",
112877298Sobrien  "BFD_RELOC_IA64_IMM14",
112977298Sobrien  "BFD_RELOC_IA64_IMM22",
113077298Sobrien  "BFD_RELOC_IA64_IMM64",
113177298Sobrien  "BFD_RELOC_IA64_DIR32MSB",
113277298Sobrien  "BFD_RELOC_IA64_DIR32LSB",
113377298Sobrien  "BFD_RELOC_IA64_DIR64MSB",
113477298Sobrien  "BFD_RELOC_IA64_DIR64LSB",
113577298Sobrien  "BFD_RELOC_IA64_GPREL22",
113677298Sobrien  "BFD_RELOC_IA64_GPREL64I",
113777298Sobrien  "BFD_RELOC_IA64_GPREL32MSB",
113877298Sobrien  "BFD_RELOC_IA64_GPREL32LSB",
113977298Sobrien  "BFD_RELOC_IA64_GPREL64MSB",
114077298Sobrien  "BFD_RELOC_IA64_GPREL64LSB",
114177298Sobrien  "BFD_RELOC_IA64_LTOFF22",
114277298Sobrien  "BFD_RELOC_IA64_LTOFF64I",
114377298Sobrien  "BFD_RELOC_IA64_PLTOFF22",
114477298Sobrien  "BFD_RELOC_IA64_PLTOFF64I",
114577298Sobrien  "BFD_RELOC_IA64_PLTOFF64MSB",
114677298Sobrien  "BFD_RELOC_IA64_PLTOFF64LSB",
114777298Sobrien  "BFD_RELOC_IA64_FPTR64I",
114877298Sobrien  "BFD_RELOC_IA64_FPTR32MSB",
114977298Sobrien  "BFD_RELOC_IA64_FPTR32LSB",
115077298Sobrien  "BFD_RELOC_IA64_FPTR64MSB",
115177298Sobrien  "BFD_RELOC_IA64_FPTR64LSB",
115277298Sobrien  "BFD_RELOC_IA64_PCREL21B",
115377298Sobrien  "BFD_RELOC_IA64_PCREL21BI",
115477298Sobrien  "BFD_RELOC_IA64_PCREL21M",
115577298Sobrien  "BFD_RELOC_IA64_PCREL21F",
115677298Sobrien  "BFD_RELOC_IA64_PCREL22",
115777298Sobrien  "BFD_RELOC_IA64_PCREL60B",
115877298Sobrien  "BFD_RELOC_IA64_PCREL64I",
115977298Sobrien  "BFD_RELOC_IA64_PCREL32MSB",
116077298Sobrien  "BFD_RELOC_IA64_PCREL32LSB",
116177298Sobrien  "BFD_RELOC_IA64_PCREL64MSB",
116277298Sobrien  "BFD_RELOC_IA64_PCREL64LSB",
116377298Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR22",
116477298Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR64I",
116589857Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
116689857Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
116777298Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
116877298Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
116977298Sobrien  "BFD_RELOC_IA64_SEGREL32MSB",
117077298Sobrien  "BFD_RELOC_IA64_SEGREL32LSB",
117177298Sobrien  "BFD_RELOC_IA64_SEGREL64MSB",
117277298Sobrien  "BFD_RELOC_IA64_SEGREL64LSB",
117377298Sobrien  "BFD_RELOC_IA64_SECREL32MSB",
117477298Sobrien  "BFD_RELOC_IA64_SECREL32LSB",
117577298Sobrien  "BFD_RELOC_IA64_SECREL64MSB",
117677298Sobrien  "BFD_RELOC_IA64_SECREL64LSB",
117777298Sobrien  "BFD_RELOC_IA64_REL32MSB",
117877298Sobrien  "BFD_RELOC_IA64_REL32LSB",
117977298Sobrien  "BFD_RELOC_IA64_REL64MSB",
118077298Sobrien  "BFD_RELOC_IA64_REL64LSB",
118177298Sobrien  "BFD_RELOC_IA64_LTV32MSB",
118277298Sobrien  "BFD_RELOC_IA64_LTV32LSB",
118377298Sobrien  "BFD_RELOC_IA64_LTV64MSB",
118477298Sobrien  "BFD_RELOC_IA64_LTV64LSB",
118577298Sobrien  "BFD_RELOC_IA64_IPLTMSB",
118677298Sobrien  "BFD_RELOC_IA64_IPLTLSB",
118777298Sobrien  "BFD_RELOC_IA64_COPY",
1188104834Sobrien  "BFD_RELOC_IA64_LTOFF22X",
1189104834Sobrien  "BFD_RELOC_IA64_LDXMOV",
1190104834Sobrien  "BFD_RELOC_IA64_TPREL14",
119177298Sobrien  "BFD_RELOC_IA64_TPREL22",
1192104834Sobrien  "BFD_RELOC_IA64_TPREL64I",
119377298Sobrien  "BFD_RELOC_IA64_TPREL64MSB",
119477298Sobrien  "BFD_RELOC_IA64_TPREL64LSB",
1195104834Sobrien  "BFD_RELOC_IA64_LTOFF_TPREL22",
1196104834Sobrien  "BFD_RELOC_IA64_DTPMOD64MSB",
1197104834Sobrien  "BFD_RELOC_IA64_DTPMOD64LSB",
1198104834Sobrien  "BFD_RELOC_IA64_LTOFF_DTPMOD22",
1199104834Sobrien  "BFD_RELOC_IA64_DTPREL14",
1200104834Sobrien  "BFD_RELOC_IA64_DTPREL22",
1201104834Sobrien  "BFD_RELOC_IA64_DTPREL64I",
1202104834Sobrien  "BFD_RELOC_IA64_DTPREL32MSB",
1203104834Sobrien  "BFD_RELOC_IA64_DTPREL32LSB",
1204104834Sobrien  "BFD_RELOC_IA64_DTPREL64MSB",
1205104834Sobrien  "BFD_RELOC_IA64_DTPREL64LSB",
1206104834Sobrien  "BFD_RELOC_IA64_LTOFF_DTPREL22",
120777298Sobrien  "BFD_RELOC_M68HC11_HI8",
120877298Sobrien  "BFD_RELOC_M68HC11_LO8",
120977298Sobrien  "BFD_RELOC_M68HC11_3B",
121077298Sobrien  "BFD_RELOC_CRIS_BDISP8",
121177298Sobrien  "BFD_RELOC_CRIS_UNSIGNED_5",
121277298Sobrien  "BFD_RELOC_CRIS_SIGNED_6",
121377298Sobrien  "BFD_RELOC_CRIS_UNSIGNED_6",
121477298Sobrien  "BFD_RELOC_CRIS_UNSIGNED_4",
121589857Sobrien  "BFD_RELOC_CRIS_COPY",
121689857Sobrien  "BFD_RELOC_CRIS_GLOB_DAT",
121789857Sobrien  "BFD_RELOC_CRIS_JUMP_SLOT",
121889857Sobrien  "BFD_RELOC_CRIS_RELATIVE",
121989857Sobrien  "BFD_RELOC_CRIS_32_GOT",
122089857Sobrien  "BFD_RELOC_CRIS_16_GOT",
122189857Sobrien  "BFD_RELOC_CRIS_32_GOTPLT",
122289857Sobrien  "BFD_RELOC_CRIS_16_GOTPLT",
122389857Sobrien  "BFD_RELOC_CRIS_32_GOTREL",
122489857Sobrien  "BFD_RELOC_CRIS_32_PLT_GOTREL",
122589857Sobrien  "BFD_RELOC_CRIS_32_PLT_PCREL",
122677298Sobrien  "BFD_RELOC_860_COPY",
122777298Sobrien  "BFD_RELOC_860_GLOB_DAT",
122877298Sobrien  "BFD_RELOC_860_JUMP_SLOT",
122977298Sobrien  "BFD_RELOC_860_RELATIVE",
123077298Sobrien  "BFD_RELOC_860_PC26",
123177298Sobrien  "BFD_RELOC_860_PLT26",
123277298Sobrien  "BFD_RELOC_860_PC16",
123377298Sobrien  "BFD_RELOC_860_LOW0",
123477298Sobrien  "BFD_RELOC_860_SPLIT0",
123577298Sobrien  "BFD_RELOC_860_LOW1",
123677298Sobrien  "BFD_RELOC_860_SPLIT1",
123777298Sobrien  "BFD_RELOC_860_LOW2",
123877298Sobrien  "BFD_RELOC_860_SPLIT2",
123977298Sobrien  "BFD_RELOC_860_LOW3",
124077298Sobrien  "BFD_RELOC_860_LOGOT0",
124177298Sobrien  "BFD_RELOC_860_SPGOT0",
124277298Sobrien  "BFD_RELOC_860_LOGOT1",
124377298Sobrien  "BFD_RELOC_860_SPGOT1",
124477298Sobrien  "BFD_RELOC_860_LOGOTOFF0",
124577298Sobrien  "BFD_RELOC_860_SPGOTOFF0",
124677298Sobrien  "BFD_RELOC_860_LOGOTOFF1",
124777298Sobrien  "BFD_RELOC_860_SPGOTOFF1",
124877298Sobrien  "BFD_RELOC_860_LOGOTOFF2",
124977298Sobrien  "BFD_RELOC_860_LOGOTOFF3",
125077298Sobrien  "BFD_RELOC_860_LOPC",
125177298Sobrien  "BFD_RELOC_860_HIGHADJ",
125277298Sobrien  "BFD_RELOC_860_HAGOT",
125377298Sobrien  "BFD_RELOC_860_HAGOTOFF",
125477298Sobrien  "BFD_RELOC_860_HAPC",
125577298Sobrien  "BFD_RELOC_860_HIGH",
125677298Sobrien  "BFD_RELOC_860_HIGOT",
125777298Sobrien  "BFD_RELOC_860_HIGOTOFF",
125889857Sobrien  "BFD_RELOC_OPENRISC_ABS_26",
125989857Sobrien  "BFD_RELOC_OPENRISC_REL_26",
126089857Sobrien  "BFD_RELOC_H8_DIR16A8",
126189857Sobrien  "BFD_RELOC_H8_DIR16R8",
126289857Sobrien  "BFD_RELOC_H8_DIR24A8",
126389857Sobrien  "BFD_RELOC_H8_DIR24R8",
126489857Sobrien  "BFD_RELOC_H8_DIR32A16",
126589857Sobrien  "BFD_RELOC_XSTORMY16_REL_12",
126689857Sobrien  "BFD_RELOC_XSTORMY16_24",
126789857Sobrien  "BFD_RELOC_XSTORMY16_FPTR16",
1268104834Sobrien  "BFD_RELOC_VAX_GLOB_DAT",
1269104834Sobrien  "BFD_RELOC_VAX_JMP_SLOT",
1270104834Sobrien  "BFD_RELOC_VAX_RELATIVE",
127133965Sjdp "@@overflow: BFD_RELOC_UNUSED@@",
127233965Sjdp};
127333965Sjdp#endif
127433965Sjdp
127533965Sjdpreloc_howto_type *
127677298Sobrienbfd_default_reloc_type_lookup PARAMS ((bfd *abfd, bfd_reloc_code_real_type  code));
127733965Sjdp
127877298Sobrienboolean
127977298Sobrienbfd_generic_relax_section PARAMS ((bfd *abfd,
128033965Sjdp    asection *section,
128133965Sjdp    struct bfd_link_info *,
128233965Sjdp    boolean *));
128333965Sjdp
128477298Sobrienboolean
128577298Sobrienbfd_generic_gc_sections PARAMS ((bfd *, struct bfd_link_info *));
128660484Sobrien
128789857Sobrienboolean
128889857Sobrienbfd_generic_merge_sections PARAMS ((bfd *, struct bfd_link_info *));
128989857Sobrien
129033965Sjdpbfd_byte *
129177298Sobrienbfd_generic_get_relocated_section_contents PARAMS ((bfd *abfd,
129233965Sjdp    struct bfd_link_info *link_info,
129333965Sjdp    struct bfd_link_order *link_order,
129433965Sjdp    bfd_byte *data,
129533965Sjdp    boolean relocateable,
129633965Sjdp    asymbol **symbols));
129733965Sjdp
1298104834Sobrien/* Extracted from archures.c.  */
129933965Sjdpextern const bfd_arch_info_type bfd_default_arch_struct;
130077298Sobrienboolean
130133965Sjdpbfd_default_set_arch_mach PARAMS ((bfd *abfd,
130233965Sjdp    enum bfd_architecture arch,
130333965Sjdp    unsigned long mach));
130433965Sjdp
130533965Sjdpconst bfd_arch_info_type *
130677298Sobrienbfd_default_compatible PARAMS ((const bfd_arch_info_type *a,
130733965Sjdp    const bfd_arch_info_type *b));
130833965Sjdp
130977298Sobrienboolean
131033965Sjdpbfd_default_scan PARAMS ((const struct bfd_arch_info *info, const char *string));
131133965Sjdp
1312104834Sobrien/* Extracted from elf.c.  */
131333965Sjdpstruct elf_internal_shdr *
131477298Sobrienbfd_elf_find_section PARAMS ((bfd *abfd, char *name));
131533965Sjdp
1316