libbfd.h revision 94536
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,
978828Sobrien   2000, 2001
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)
33033965Sjdp#define _bfd_nolink_bfd_link_hash_table_create \
33133965Sjdp  ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr)
33233965Sjdp#define _bfd_nolink_bfd_link_add_symbols \
33333965Sjdp  ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false)
33433965Sjdp#define _bfd_nolink_bfd_final_link \
33533965Sjdp  ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false)
33633965Sjdp#define _bfd_nolink_bfd_link_split_section \
33733965Sjdp  ((boolean (*) PARAMS ((bfd *, struct sec *))) bfd_false)
33833965Sjdp
33933965Sjdp/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
34033965Sjdp   have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
34133965Sjdp   (_bfd_nodynamic).  */
34233965Sjdp
34333965Sjdp#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
34433965Sjdp#define _bfd_nodynamic_canonicalize_dynamic_symtab \
34533965Sjdp  ((long (*) PARAMS ((bfd *, asymbol **))) _bfd_n1)
34633965Sjdp#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
34733965Sjdp#define _bfd_nodynamic_canonicalize_dynamic_reloc \
34833965Sjdp  ((long (*) PARAMS ((bfd *, arelent **, asymbol **))) _bfd_n1)
34933965Sjdp
35033965Sjdp/* Generic routine to determine of the given symbol is a local
35133965Sjdp   label.  */
35233965Sjdpextern boolean bfd_generic_is_local_label_name PARAMS ((bfd *, const char *));
35333965Sjdp
35433965Sjdp/* Generic minisymbol routines.  */
35533965Sjdpextern long _bfd_generic_read_minisymbols
35633965Sjdp  PARAMS ((bfd *, boolean, PTR *, unsigned int *));
35733965Sjdpextern asymbol *_bfd_generic_minisymbol_to_symbol
35833965Sjdp  PARAMS ((bfd *, boolean, const PTR, asymbol *));
35933965Sjdp
36033965Sjdp/* Find the nearest line using .stab/.stabstr sections.  */
36133965Sjdpextern boolean _bfd_stab_section_find_nearest_line
36233965Sjdp  PARAMS ((bfd *, asymbol **, asection *, bfd_vma, boolean *, const char **,
36333965Sjdp	   const char **, unsigned int *, PTR *));
36433965Sjdp
36560484Sobrien/* Find the neaderst line using DWARF 1 debugging information.  */
36660484Sobrienextern boolean _bfd_dwarf1_find_nearest_line
36760484Sobrien  PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
36860484Sobrien	   const char **, unsigned int *));
36960484Sobrien
37038889Sjdp/* Find the nearest line using DWARF 2 debugging information.  */
37138889Sjdpextern boolean _bfd_dwarf2_find_nearest_line
37238889Sjdp  PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
37377298Sobrien	   const char **, unsigned int *, unsigned int,
37477298Sobrien	   PTR *));
37538889Sjdp
37689857Sobrien/* Create a new section entry.  */
37789857Sobrienextern struct bfd_hash_entry *bfd_section_hash_newfunc
37889857Sobrien  PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
37989857Sobrien
38033965Sjdp/* A routine to create entries for a bfd_link_hash_table.  */
38133965Sjdpextern struct bfd_hash_entry *_bfd_link_hash_newfunc
38233965Sjdp  PARAMS ((struct bfd_hash_entry *entry,
38333965Sjdp	   struct bfd_hash_table *table,
38433965Sjdp	   const char *string));
38533965Sjdp
38633965Sjdp/* Initialize a bfd_link_hash_table.  */
38733965Sjdpextern boolean _bfd_link_hash_table_init
38833965Sjdp  PARAMS ((struct bfd_link_hash_table *, bfd *,
38933965Sjdp	   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
39033965Sjdp				       struct bfd_hash_table *,
39133965Sjdp				       const char *)));
39233965Sjdp
39333965Sjdp/* Generic link hash table creation routine.  */
39433965Sjdpextern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
39533965Sjdp  PARAMS ((bfd *));
39633965Sjdp
39733965Sjdp/* Generic add symbol routine.  */
39833965Sjdpextern boolean _bfd_generic_link_add_symbols
39933965Sjdp  PARAMS ((bfd *, struct bfd_link_info *));
40033965Sjdp
40133965Sjdp/* Generic add symbol routine.  This version is used by targets for
40233965Sjdp   which the linker must collect constructors and destructors by name,
40333965Sjdp   as the collect2 program does.  */
40433965Sjdpextern boolean _bfd_generic_link_add_symbols_collect
40533965Sjdp  PARAMS ((bfd *, struct bfd_link_info *));
40633965Sjdp
40733965Sjdp/* Generic archive add symbol routine.  */
40833965Sjdpextern boolean _bfd_generic_link_add_archive_symbols
40933965Sjdp  PARAMS ((bfd *, struct bfd_link_info *,
41033965Sjdp	   boolean (*checkfn) (bfd *, struct bfd_link_info *, boolean *)));
41133965Sjdp
41233965Sjdp
41333965Sjdp
41433965Sjdp/* Forward declaration to avoid prototype errors.  */
41533965Sjdptypedef struct bfd_link_hash_entry _bfd_link_hash_entry;
41633965Sjdp
41733965Sjdp/* Generic routine to add a single symbol.  */
41833965Sjdpextern boolean _bfd_generic_link_add_one_symbol
41933965Sjdp  PARAMS ((struct bfd_link_info *, bfd *, const char *name, flagword,
42033965Sjdp	   asection *, bfd_vma, const char *, boolean copy,
42133965Sjdp	   boolean constructor, struct bfd_link_hash_entry **));
42233965Sjdp
42333965Sjdp/* Generic link routine.  */
42433965Sjdpextern boolean _bfd_generic_final_link
42533965Sjdp  PARAMS ((bfd *, struct bfd_link_info *));
42633965Sjdp
42733965Sjdpextern boolean _bfd_generic_link_split_section
42833965Sjdp  PARAMS ((bfd *, struct sec *));
42933965Sjdp
43033965Sjdp/* Generic reloc_link_order processing routine.  */
43133965Sjdpextern boolean _bfd_generic_reloc_link_order
43233965Sjdp  PARAMS ((bfd *, struct bfd_link_info *, asection *,
43333965Sjdp	   struct bfd_link_order *));
43433965Sjdp
43533965Sjdp/* Default link order processing routine.  */
43633965Sjdpextern boolean _bfd_default_link_order
43733965Sjdp  PARAMS ((bfd *, struct bfd_link_info *, asection *,
43833965Sjdp	   struct bfd_link_order *));
43933965Sjdp
44033965Sjdp/* Count the number of reloc entries in a link order list.  */
44133965Sjdpextern unsigned int _bfd_count_link_order_relocs
44233965Sjdp  PARAMS ((struct bfd_link_order *));
44333965Sjdp
44433965Sjdp/* Final link relocation routine.  */
44533965Sjdpextern bfd_reloc_status_type _bfd_final_link_relocate
44633965Sjdp  PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *,
44789857Sobrien	   bfd_vma, bfd_vma, bfd_vma));
44833965Sjdp
44933965Sjdp/* Relocate a particular location by a howto and a value.  */
45033965Sjdpextern bfd_reloc_status_type _bfd_relocate_contents
45133965Sjdp  PARAMS ((reloc_howto_type *, bfd *, bfd_vma, bfd_byte *));
45233965Sjdp
45333965Sjdp/* Link stabs in sections in the first pass.  */
45433965Sjdp
45533965Sjdpextern boolean _bfd_link_section_stabs
45633965Sjdp  PARAMS ((bfd *, PTR *, asection *, asection *, PTR *));
45733965Sjdp
45889857Sobrien/* Eliminate stabs for discarded functions and symbols.  */
45989857Sobrienextern boolean _bfd_discard_section_stabs
46089857Sobrien  PARAMS ((bfd *, asection *, PTR,
46189857Sobrien	   boolean (*) (bfd_vma, PTR), PTR));
46289857Sobrien
46333965Sjdp/* Write out the .stab section when linking stabs in sections.  */
46433965Sjdp
46533965Sjdpextern boolean _bfd_write_section_stabs
46633965Sjdp  PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_byte *));
46733965Sjdp
46833965Sjdp/* Write out the .stabstr string table when linking stabs in sections.  */
46933965Sjdp
47033965Sjdpextern boolean _bfd_write_stab_strings PARAMS ((bfd *, PTR *));
47133965Sjdp
47233965Sjdp/* Find an offset within a .stab section when linking stabs in
47333965Sjdp   sections.  */
47433965Sjdp
47533965Sjdpextern bfd_vma _bfd_stab_section_offset
47633965Sjdp  PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_vma));
47733965Sjdp
47889857Sobrien/* Attempt to merge a SEC_MERGE section.  */
47989857Sobrien
48089857Sobrienextern boolean _bfd_merge_section
48189857Sobrien  PARAMS ((bfd *, PTR *, asection *, PTR *));
48289857Sobrien
48389857Sobrien/* Attempt to merge SEC_MERGE sections.  */
48489857Sobrien
48589857Sobrienextern boolean _bfd_merge_sections
48689857Sobrien  PARAMS ((bfd *, PTR, void (*)(bfd *, asection *)));
48789857Sobrien
48889857Sobrien/* Write out a merged section.  */
48989857Sobrien
49089857Sobrienextern boolean _bfd_write_merged_section
49189857Sobrien  PARAMS ((bfd *, asection *, PTR));
49289857Sobrien
49389857Sobrien/* Find an offset within a modified SEC_MERGE section.  */
49489857Sobrien
49589857Sobrienextern bfd_vma _bfd_merged_section_offset
49689857Sobrien  PARAMS ((bfd *, asection **, PTR, bfd_vma, bfd_vma));
49789857Sobrien
49833965Sjdp/* Create a string table.  */
49933965Sjdpextern struct bfd_strtab_hash *_bfd_stringtab_init PARAMS ((void));
50033965Sjdp
50133965Sjdp/* Create an XCOFF .debug section style string table.  */
50233965Sjdpextern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init PARAMS ((void));
50333965Sjdp
50433965Sjdp/* Free a string table.  */
50533965Sjdpextern void _bfd_stringtab_free PARAMS ((struct bfd_strtab_hash *));
50633965Sjdp
50733965Sjdp/* Get the size of a string table.  */
50833965Sjdpextern bfd_size_type _bfd_stringtab_size PARAMS ((struct bfd_strtab_hash *));
50933965Sjdp
51033965Sjdp/* Add a string to a string table.  */
51133965Sjdpextern bfd_size_type _bfd_stringtab_add
51233965Sjdp  PARAMS ((struct bfd_strtab_hash *, const char *, boolean hash,
51333965Sjdp	   boolean copy));
51433965Sjdp
51533965Sjdp/* Write out a string table.  */
51633965Sjdpextern boolean _bfd_stringtab_emit PARAMS ((bfd *, struct bfd_strtab_hash *));
51760484Sobrien
51860484Sobrien/* Check that endianness of input and output file match.  */
51960484Sobrienextern boolean _bfd_generic_verify_endian_match PARAMS ((bfd *, bfd *));
52033965Sjdp
52133965Sjdp/* Macros to tell if bfds are read or write enabled.
52233965Sjdp
52333965Sjdp   Note that bfds open for read may be scribbled into if the fd passed
52433965Sjdp   to bfd_fdopenr is actually open both for read and write
52533965Sjdp   simultaneously.  However an output bfd will never be open for
52633965Sjdp   read.  Therefore sometimes you want to check bfd_read_p or
52733965Sjdp   !bfd_read_p, and only sometimes bfd_write_p.
52833965Sjdp*/
52933965Sjdp
53033965Sjdp#define	bfd_read_p(abfd) ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
53133965Sjdp#define	bfd_write_p(abfd) ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
53233965Sjdp
53333965Sjdpvoid	bfd_assert PARAMS ((const char*,int));
53433965Sjdp
53533965Sjdp#define BFD_ASSERT(x) \
53633965Sjdp{ if (!(x)) bfd_assert(__FILE__,__LINE__); }
53733965Sjdp
53833965Sjdp#define BFD_FAIL() \
53933965Sjdp{ bfd_assert(__FILE__,__LINE__); }
54033965Sjdp
54160484Sobrienextern void _bfd_abort PARAMS ((const char *, int, const char *))
54260484Sobrien     ATTRIBUTE_NORETURN;
54360484Sobrien
54460484Sobrien/* if gcc >= 2.6, we can give a function name, too */
54560484Sobrien#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
54660484Sobrien#define __PRETTY_FUNCTION__  ((char *) NULL)
54760484Sobrien#endif
54860484Sobrien
54960484Sobrien#undef abort
55060484Sobrien#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
55160484Sobrien
55233965SjdpFILE *	bfd_cache_lookup_worker PARAMS ((bfd *));
55333965Sjdp
55433965Sjdpextern bfd *bfd_last_cache;
55533965Sjdp
55633965Sjdp/* List of supported target vectors, and the default vector (if
55733965Sjdp   bfd_default_vector[0] is NULL, there is no default).  */
55878828Sobrienextern const bfd_target * const *bfd_target_vector;
55933965Sjdpextern const bfd_target *bfd_default_vector[];
56033965Sjdp
56133965Sjdp/* Functions shared by the ECOFF and MIPS ELF backends, which have no
56233965Sjdp   other common header files.  */
56333965Sjdp
56433965Sjdp#if defined(__STDC__) || defined(ALMOST_STDC)
56533965Sjdpstruct ecoff_find_line;
56633965Sjdp#endif
56733965Sjdp
56833965Sjdpextern boolean _bfd_ecoff_locate_line
56933965Sjdp  PARAMS ((bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
57033965Sjdp	   const struct ecoff_debug_swap * const, struct ecoff_find_line *,
57133965Sjdp	   const char **, const char **, unsigned int *));
57233965Sjdpextern boolean _bfd_ecoff_get_accumulated_pdr PARAMS ((PTR, bfd_byte *));
57333965Sjdpextern boolean _bfd_ecoff_get_accumulated_sym PARAMS ((PTR, bfd_byte *));
57433965Sjdpextern boolean _bfd_ecoff_get_accumulated_ss PARAMS ((PTR, bfd_byte *));
57533965Sjdp
57633965Sjdpextern bfd_vma _bfd_get_gp_value PARAMS ((bfd *));
57733965Sjdpextern void _bfd_set_gp_value PARAMS ((bfd *, bfd_vma));
57833965Sjdp
57933965Sjdp/* Function shared by the COFF and ELF SH backends, which have no
58033965Sjdp   other common header files.  */
58133965Sjdp
58233965Sjdpextern boolean _bfd_sh_align_load_span
58333965Sjdp  PARAMS ((bfd *, asection *, bfd_byte *,
58433965Sjdp	   boolean (*) (bfd *, asection *, PTR, bfd_byte *, bfd_vma),
58533965Sjdp	   PTR, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, boolean *));
58633965Sjdp
58733965Sjdp/* And more follows */
58833965Sjdp
58994536Sobrienboolean
59089857Sobrienbfd_write_bigendian_4byte_int PARAMS ((bfd *, unsigned int));
59133965Sjdp
59277298Sobrienunsigned int
59333965Sjdpbfd_log2 PARAMS ((bfd_vma x));
59433965Sjdp
59533965Sjdp#define BFD_CACHE_MAX_OPEN 10
59633965Sjdpextern bfd *bfd_last_cache;
59733965Sjdp
59833965Sjdp#define bfd_cache_lookup(x) \
59933965Sjdp    ((x)==bfd_last_cache? \
60077298Sobrien      (FILE*) (bfd_last_cache->iostream): \
60133965Sjdp       bfd_cache_lookup_worker(x))
60277298Sobrienboolean
60377298Sobrienbfd_cache_init PARAMS ((bfd *abfd));
60433965Sjdp
60577298Sobrienboolean
60677298Sobrienbfd_cache_close PARAMS ((bfd *abfd));
60733965Sjdp
60877298SobrienFILE*
60933965Sjdpbfd_open_file PARAMS ((bfd *abfd));
61033965Sjdp
61133965SjdpFILE *
61233965Sjdpbfd_cache_lookup_worker PARAMS ((bfd *abfd));
61333965Sjdp
61433965Sjdp#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
61533965Sjdp
61633965Sjdpstatic const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
61733965Sjdp
61833965Sjdp  "BFD_RELOC_64",
61933965Sjdp  "BFD_RELOC_32",
62033965Sjdp  "BFD_RELOC_26",
62133965Sjdp  "BFD_RELOC_24",
62233965Sjdp  "BFD_RELOC_16",
62333965Sjdp  "BFD_RELOC_14",
62433965Sjdp  "BFD_RELOC_8",
62533965Sjdp  "BFD_RELOC_64_PCREL",
62633965Sjdp  "BFD_RELOC_32_PCREL",
62733965Sjdp  "BFD_RELOC_24_PCREL",
62833965Sjdp  "BFD_RELOC_16_PCREL",
62933965Sjdp  "BFD_RELOC_12_PCREL",
63033965Sjdp  "BFD_RELOC_8_PCREL",
63133965Sjdp  "BFD_RELOC_32_GOT_PCREL",
63233965Sjdp  "BFD_RELOC_16_GOT_PCREL",
63333965Sjdp  "BFD_RELOC_8_GOT_PCREL",
63433965Sjdp  "BFD_RELOC_32_GOTOFF",
63533965Sjdp  "BFD_RELOC_16_GOTOFF",
63633965Sjdp  "BFD_RELOC_LO16_GOTOFF",
63733965Sjdp  "BFD_RELOC_HI16_GOTOFF",
63833965Sjdp  "BFD_RELOC_HI16_S_GOTOFF",
63933965Sjdp  "BFD_RELOC_8_GOTOFF",
64089857Sobrien  "BFD_RELOC_64_PLT_PCREL",
64133965Sjdp  "BFD_RELOC_32_PLT_PCREL",
64233965Sjdp  "BFD_RELOC_24_PLT_PCREL",
64333965Sjdp  "BFD_RELOC_16_PLT_PCREL",
64433965Sjdp  "BFD_RELOC_8_PLT_PCREL",
64589857Sobrien  "BFD_RELOC_64_PLTOFF",
64633965Sjdp  "BFD_RELOC_32_PLTOFF",
64733965Sjdp  "BFD_RELOC_16_PLTOFF",
64833965Sjdp  "BFD_RELOC_LO16_PLTOFF",
64933965Sjdp  "BFD_RELOC_HI16_PLTOFF",
65033965Sjdp  "BFD_RELOC_HI16_S_PLTOFF",
65133965Sjdp  "BFD_RELOC_8_PLTOFF",
65233965Sjdp  "BFD_RELOC_68K_GLOB_DAT",
65333965Sjdp  "BFD_RELOC_68K_JMP_SLOT",
65433965Sjdp  "BFD_RELOC_68K_RELATIVE",
65533965Sjdp  "BFD_RELOC_32_BASEREL",
65633965Sjdp  "BFD_RELOC_16_BASEREL",
65733965Sjdp  "BFD_RELOC_LO16_BASEREL",
65833965Sjdp  "BFD_RELOC_HI16_BASEREL",
65933965Sjdp  "BFD_RELOC_HI16_S_BASEREL",
66033965Sjdp  "BFD_RELOC_8_BASEREL",
66133965Sjdp  "BFD_RELOC_RVA",
66233965Sjdp  "BFD_RELOC_8_FFnn",
66333965Sjdp  "BFD_RELOC_32_PCREL_S2",
66433965Sjdp  "BFD_RELOC_16_PCREL_S2",
66533965Sjdp  "BFD_RELOC_23_PCREL_S2",
66633965Sjdp  "BFD_RELOC_HI22",
66733965Sjdp  "BFD_RELOC_LO10",
66833965Sjdp  "BFD_RELOC_GPREL16",
66933965Sjdp  "BFD_RELOC_GPREL32",
67033965Sjdp  "BFD_RELOC_I960_CALLJ",
67133965Sjdp  "BFD_RELOC_NONE",
67233965Sjdp  "BFD_RELOC_SPARC_WDISP22",
67333965Sjdp  "BFD_RELOC_SPARC22",
67433965Sjdp  "BFD_RELOC_SPARC13",
67533965Sjdp  "BFD_RELOC_SPARC_GOT10",
67633965Sjdp  "BFD_RELOC_SPARC_GOT13",
67733965Sjdp  "BFD_RELOC_SPARC_GOT22",
67833965Sjdp  "BFD_RELOC_SPARC_PC10",
67933965Sjdp  "BFD_RELOC_SPARC_PC22",
68033965Sjdp  "BFD_RELOC_SPARC_WPLT30",
68133965Sjdp  "BFD_RELOC_SPARC_COPY",
68233965Sjdp  "BFD_RELOC_SPARC_GLOB_DAT",
68333965Sjdp  "BFD_RELOC_SPARC_JMP_SLOT",
68433965Sjdp  "BFD_RELOC_SPARC_RELATIVE",
68578828Sobrien  "BFD_RELOC_SPARC_UA16",
68633965Sjdp  "BFD_RELOC_SPARC_UA32",
68778828Sobrien  "BFD_RELOC_SPARC_UA64",
68833965Sjdp  "BFD_RELOC_SPARC_BASE13",
68933965Sjdp  "BFD_RELOC_SPARC_BASE22",
69033965Sjdp  "BFD_RELOC_SPARC_10",
69133965Sjdp  "BFD_RELOC_SPARC_11",
69233965Sjdp  "BFD_RELOC_SPARC_OLO10",
69333965Sjdp  "BFD_RELOC_SPARC_HH22",
69433965Sjdp  "BFD_RELOC_SPARC_HM10",
69533965Sjdp  "BFD_RELOC_SPARC_LM22",
69633965Sjdp  "BFD_RELOC_SPARC_PC_HH22",
69733965Sjdp  "BFD_RELOC_SPARC_PC_HM10",
69833965Sjdp  "BFD_RELOC_SPARC_PC_LM22",
69933965Sjdp  "BFD_RELOC_SPARC_WDISP16",
70033965Sjdp  "BFD_RELOC_SPARC_WDISP19",
70133965Sjdp  "BFD_RELOC_SPARC_7",
70233965Sjdp  "BFD_RELOC_SPARC_6",
70333965Sjdp  "BFD_RELOC_SPARC_5",
70489857Sobrien  "BFD_RELOC_SPARC_PLT32",
70538889Sjdp  "BFD_RELOC_SPARC_PLT64",
70638889Sjdp  "BFD_RELOC_SPARC_HIX22",
70738889Sjdp  "BFD_RELOC_SPARC_LOX10",
70838889Sjdp  "BFD_RELOC_SPARC_H44",
70938889Sjdp  "BFD_RELOC_SPARC_M44",
71038889Sjdp  "BFD_RELOC_SPARC_L44",
71138889Sjdp  "BFD_RELOC_SPARC_REGISTER",
71260484Sobrien  "BFD_RELOC_SPARC_REV32",
71333965Sjdp  "BFD_RELOC_ALPHA_GPDISP_HI16",
71433965Sjdp  "BFD_RELOC_ALPHA_GPDISP_LO16",
71533965Sjdp  "BFD_RELOC_ALPHA_GPDISP",
71633965Sjdp  "BFD_RELOC_ALPHA_LITERAL",
71733965Sjdp  "BFD_RELOC_ALPHA_ELF_LITERAL",
71833965Sjdp  "BFD_RELOC_ALPHA_LITUSE",
71933965Sjdp  "BFD_RELOC_ALPHA_HINT",
72033965Sjdp  "BFD_RELOC_ALPHA_LINKAGE",
72133965Sjdp  "BFD_RELOC_ALPHA_CODEADDR",
72289857Sobrien  "BFD_RELOC_ALPHA_GPREL_HI16",
72389857Sobrien  "BFD_RELOC_ALPHA_GPREL_LO16",
72491041Sobrien  "BFD_RELOC_ALPHA_BRSGP",
72533965Sjdp  "BFD_RELOC_MIPS_JMP",
72633965Sjdp  "BFD_RELOC_MIPS16_JMP",
72733965Sjdp  "BFD_RELOC_MIPS16_GPREL",
72833965Sjdp  "BFD_RELOC_HI16",
72933965Sjdp  "BFD_RELOC_HI16_S",
73033965Sjdp  "BFD_RELOC_LO16",
73133965Sjdp  "BFD_RELOC_PCREL_HI16_S",
73233965Sjdp  "BFD_RELOC_PCREL_LO16",
73333965Sjdp  "BFD_RELOC_MIPS_LITERAL",
73433965Sjdp  "BFD_RELOC_MIPS_GOT16",
73533965Sjdp  "BFD_RELOC_MIPS_CALL16",
73633965Sjdp  "BFD_RELOC_MIPS_GOT_HI16",
73733965Sjdp  "BFD_RELOC_MIPS_GOT_LO16",
73833965Sjdp  "BFD_RELOC_MIPS_CALL_HI16",
73933965Sjdp  "BFD_RELOC_MIPS_CALL_LO16",
74060484Sobrien  "BFD_RELOC_MIPS_SUB",
74160484Sobrien  "BFD_RELOC_MIPS_GOT_PAGE",
74260484Sobrien  "BFD_RELOC_MIPS_GOT_OFST",
74360484Sobrien  "BFD_RELOC_MIPS_GOT_DISP",
74478828Sobrien  "BFD_RELOC_MIPS_SHIFT5",
74578828Sobrien  "BFD_RELOC_MIPS_SHIFT6",
74678828Sobrien  "BFD_RELOC_MIPS_INSERT_A",
74778828Sobrien  "BFD_RELOC_MIPS_INSERT_B",
74878828Sobrien  "BFD_RELOC_MIPS_DELETE",
74978828Sobrien  "BFD_RELOC_MIPS_HIGHEST",
75078828Sobrien  "BFD_RELOC_MIPS_HIGHER",
75178828Sobrien  "BFD_RELOC_MIPS_SCN_DISP",
75278828Sobrien  "BFD_RELOC_MIPS_REL16",
75378828Sobrien  "BFD_RELOC_MIPS_RELGOT",
75478828Sobrien  "BFD_RELOC_MIPS_JALR",
75591041Sobrien  "BFD_RELOC_SH_GOT_LOW16",
75691041Sobrien  "BFD_RELOC_SH_GOT_MEDLOW16",
75791041Sobrien  "BFD_RELOC_SH_GOT_MEDHI16",
75891041Sobrien  "BFD_RELOC_SH_GOT_HI16",
75991041Sobrien  "BFD_RELOC_SH_GOTPLT_LOW16",
76091041Sobrien  "BFD_RELOC_SH_GOTPLT_MEDLOW16",
76191041Sobrien  "BFD_RELOC_SH_GOTPLT_MEDHI16",
76291041Sobrien  "BFD_RELOC_SH_GOTPLT_HI16",
76391041Sobrien  "BFD_RELOC_SH_PLT_LOW16",
76491041Sobrien  "BFD_RELOC_SH_PLT_MEDLOW16",
76591041Sobrien  "BFD_RELOC_SH_PLT_MEDHI16",
76691041Sobrien  "BFD_RELOC_SH_PLT_HI16",
76791041Sobrien  "BFD_RELOC_SH_GOTOFF_LOW16",
76891041Sobrien  "BFD_RELOC_SH_GOTOFF_MEDLOW16",
76991041Sobrien  "BFD_RELOC_SH_GOTOFF_MEDHI16",
77091041Sobrien  "BFD_RELOC_SH_GOTOFF_HI16",
77191041Sobrien  "BFD_RELOC_SH_GOTPC_LOW16",
77291041Sobrien  "BFD_RELOC_SH_GOTPC_MEDLOW16",
77391041Sobrien  "BFD_RELOC_SH_GOTPC_MEDHI16",
77491041Sobrien  "BFD_RELOC_SH_GOTPC_HI16",
77591041Sobrien  "BFD_RELOC_SH_COPY64",
77691041Sobrien  "BFD_RELOC_SH_GLOB_DAT64",
77791041Sobrien  "BFD_RELOC_SH_JMP_SLOT64",
77891041Sobrien  "BFD_RELOC_SH_RELATIVE64",
77991041Sobrien  "BFD_RELOC_SH_GOT10BY4",
78091041Sobrien  "BFD_RELOC_SH_GOT10BY8",
78191041Sobrien  "BFD_RELOC_SH_GOTPLT10BY4",
78291041Sobrien  "BFD_RELOC_SH_GOTPLT10BY8",
78391041Sobrien  "BFD_RELOC_SH_GOTPLT32",
78491041Sobrien  "BFD_RELOC_SH_SHMEDIA_CODE",
78591041Sobrien  "BFD_RELOC_SH_IMMU5",
78691041Sobrien  "BFD_RELOC_SH_IMMS6",
78791041Sobrien  "BFD_RELOC_SH_IMMS6BY32",
78891041Sobrien  "BFD_RELOC_SH_IMMU6",
78991041Sobrien  "BFD_RELOC_SH_IMMS10",
79091041Sobrien  "BFD_RELOC_SH_IMMS10BY2",
79191041Sobrien  "BFD_RELOC_SH_IMMS10BY4",
79291041Sobrien  "BFD_RELOC_SH_IMMS10BY8",
79391041Sobrien  "BFD_RELOC_SH_IMMS16",
79491041Sobrien  "BFD_RELOC_SH_IMMU16",
79591041Sobrien  "BFD_RELOC_SH_IMM_LOW16",
79691041Sobrien  "BFD_RELOC_SH_IMM_LOW16_PCREL",
79791041Sobrien  "BFD_RELOC_SH_IMM_MEDLOW16",
79891041Sobrien  "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
79991041Sobrien  "BFD_RELOC_SH_IMM_MEDHI16",
80091041Sobrien  "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
80191041Sobrien  "BFD_RELOC_SH_IMM_HI16",
80291041Sobrien  "BFD_RELOC_SH_IMM_HI16_PCREL",
80391041Sobrien  "BFD_RELOC_SH_PT_16",
80438889Sjdp
80533965Sjdp  "BFD_RELOC_386_GOT32",
80633965Sjdp  "BFD_RELOC_386_PLT32",
80733965Sjdp  "BFD_RELOC_386_COPY",
80833965Sjdp  "BFD_RELOC_386_GLOB_DAT",
80933965Sjdp  "BFD_RELOC_386_JUMP_SLOT",
81033965Sjdp  "BFD_RELOC_386_RELATIVE",
81133965Sjdp  "BFD_RELOC_386_GOTOFF",
81233965Sjdp  "BFD_RELOC_386_GOTPC",
81377298Sobrien  "BFD_RELOC_X86_64_GOT32",
81477298Sobrien  "BFD_RELOC_X86_64_PLT32",
81577298Sobrien  "BFD_RELOC_X86_64_COPY",
81677298Sobrien  "BFD_RELOC_X86_64_GLOB_DAT",
81777298Sobrien  "BFD_RELOC_X86_64_JUMP_SLOT",
81877298Sobrien  "BFD_RELOC_X86_64_RELATIVE",
81977298Sobrien  "BFD_RELOC_X86_64_GOTPCREL",
82077298Sobrien  "BFD_RELOC_X86_64_32S",
82133965Sjdp  "BFD_RELOC_NS32K_IMM_8",
82233965Sjdp  "BFD_RELOC_NS32K_IMM_16",
82333965Sjdp  "BFD_RELOC_NS32K_IMM_32",
82433965Sjdp  "BFD_RELOC_NS32K_IMM_8_PCREL",
82533965Sjdp  "BFD_RELOC_NS32K_IMM_16_PCREL",
82633965Sjdp  "BFD_RELOC_NS32K_IMM_32_PCREL",
82733965Sjdp  "BFD_RELOC_NS32K_DISP_8",
82833965Sjdp  "BFD_RELOC_NS32K_DISP_16",
82933965Sjdp  "BFD_RELOC_NS32K_DISP_32",
83033965Sjdp  "BFD_RELOC_NS32K_DISP_8_PCREL",
83133965Sjdp  "BFD_RELOC_NS32K_DISP_16_PCREL",
83233965Sjdp  "BFD_RELOC_NS32K_DISP_32_PCREL",
83389857Sobrien  "BFD_RELOC_PDP11_DISP_8_PCREL",
83489857Sobrien  "BFD_RELOC_PDP11_DISP_6_PCREL",
83560484Sobrien  "BFD_RELOC_PJ_CODE_HI16",
83660484Sobrien  "BFD_RELOC_PJ_CODE_LO16",
83760484Sobrien  "BFD_RELOC_PJ_CODE_DIR16",
83860484Sobrien  "BFD_RELOC_PJ_CODE_DIR32",
83960484Sobrien  "BFD_RELOC_PJ_CODE_REL16",
84060484Sobrien  "BFD_RELOC_PJ_CODE_REL32",
84133965Sjdp  "BFD_RELOC_PPC_B26",
84233965Sjdp  "BFD_RELOC_PPC_BA26",
84333965Sjdp  "BFD_RELOC_PPC_TOC16",
84433965Sjdp  "BFD_RELOC_PPC_B16",
84533965Sjdp  "BFD_RELOC_PPC_B16_BRTAKEN",
84633965Sjdp  "BFD_RELOC_PPC_B16_BRNTAKEN",
84733965Sjdp  "BFD_RELOC_PPC_BA16",
84833965Sjdp  "BFD_RELOC_PPC_BA16_BRTAKEN",
84933965Sjdp  "BFD_RELOC_PPC_BA16_BRNTAKEN",
85033965Sjdp  "BFD_RELOC_PPC_COPY",
85133965Sjdp  "BFD_RELOC_PPC_GLOB_DAT",
85233965Sjdp  "BFD_RELOC_PPC_JMP_SLOT",
85333965Sjdp  "BFD_RELOC_PPC_RELATIVE",
85433965Sjdp  "BFD_RELOC_PPC_LOCAL24PC",
85533965Sjdp  "BFD_RELOC_PPC_EMB_NADDR32",
85633965Sjdp  "BFD_RELOC_PPC_EMB_NADDR16",
85733965Sjdp  "BFD_RELOC_PPC_EMB_NADDR16_LO",
85833965Sjdp  "BFD_RELOC_PPC_EMB_NADDR16_HI",
85933965Sjdp  "BFD_RELOC_PPC_EMB_NADDR16_HA",
86033965Sjdp  "BFD_RELOC_PPC_EMB_SDAI16",
86133965Sjdp  "BFD_RELOC_PPC_EMB_SDA2I16",
86233965Sjdp  "BFD_RELOC_PPC_EMB_SDA2REL",
86333965Sjdp  "BFD_RELOC_PPC_EMB_SDA21",
86433965Sjdp  "BFD_RELOC_PPC_EMB_MRKREF",
86533965Sjdp  "BFD_RELOC_PPC_EMB_RELSEC16",
86633965Sjdp  "BFD_RELOC_PPC_EMB_RELST_LO",
86733965Sjdp  "BFD_RELOC_PPC_EMB_RELST_HI",
86833965Sjdp  "BFD_RELOC_PPC_EMB_RELST_HA",
86933965Sjdp  "BFD_RELOC_PPC_EMB_BIT_FLD",
87033965Sjdp  "BFD_RELOC_PPC_EMB_RELSDA",
87189857Sobrien  "BFD_RELOC_PPC64_HIGHER",
87289857Sobrien  "BFD_RELOC_PPC64_HIGHER_S",
87389857Sobrien  "BFD_RELOC_PPC64_HIGHEST",
87489857Sobrien  "BFD_RELOC_PPC64_HIGHEST_S",
87589857Sobrien  "BFD_RELOC_PPC64_TOC16_LO",
87689857Sobrien  "BFD_RELOC_PPC64_TOC16_HI",
87789857Sobrien  "BFD_RELOC_PPC64_TOC16_HA",
87889857Sobrien  "BFD_RELOC_PPC64_TOC",
87989857Sobrien  "BFD_RELOC_PPC64_PLTGOT16",
88089857Sobrien  "BFD_RELOC_PPC64_PLTGOT16_LO",
88189857Sobrien  "BFD_RELOC_PPC64_PLTGOT16_HI",
88289857Sobrien  "BFD_RELOC_PPC64_PLTGOT16_HA",
88389857Sobrien  "BFD_RELOC_PPC64_ADDR16_DS",
88489857Sobrien  "BFD_RELOC_PPC64_ADDR16_LO_DS",
88589857Sobrien  "BFD_RELOC_PPC64_GOT16_DS",
88689857Sobrien  "BFD_RELOC_PPC64_GOT16_LO_DS",
88789857Sobrien  "BFD_RELOC_PPC64_PLT16_LO_DS",
88889857Sobrien  "BFD_RELOC_PPC64_SECTOFF_DS",
88989857Sobrien  "BFD_RELOC_PPC64_SECTOFF_LO_DS",
89089857Sobrien  "BFD_RELOC_PPC64_TOC16_DS",
89189857Sobrien  "BFD_RELOC_PPC64_TOC16_LO_DS",
89289857Sobrien  "BFD_RELOC_PPC64_PLTGOT16_DS",
89389857Sobrien  "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
89460484Sobrien  "BFD_RELOC_I370_D12",
89533965Sjdp  "BFD_RELOC_CTOR",
89633965Sjdp  "BFD_RELOC_ARM_PCREL_BRANCH",
89777298Sobrien  "BFD_RELOC_ARM_PCREL_BLX",
89877298Sobrien  "BFD_RELOC_THUMB_PCREL_BLX",
89933965Sjdp  "BFD_RELOC_ARM_IMMEDIATE",
90060484Sobrien  "BFD_RELOC_ARM_ADRL_IMMEDIATE",
90133965Sjdp  "BFD_RELOC_ARM_OFFSET_IMM",
90233965Sjdp  "BFD_RELOC_ARM_SHIFT_IMM",
90333965Sjdp  "BFD_RELOC_ARM_SWI",
90433965Sjdp  "BFD_RELOC_ARM_MULTI",
90533965Sjdp  "BFD_RELOC_ARM_CP_OFF_IMM",
90633965Sjdp  "BFD_RELOC_ARM_ADR_IMM",
90733965Sjdp  "BFD_RELOC_ARM_LDR_IMM",
90833965Sjdp  "BFD_RELOC_ARM_LITERAL",
90933965Sjdp  "BFD_RELOC_ARM_IN_POOL",
91033965Sjdp  "BFD_RELOC_ARM_OFFSET_IMM8",
91133965Sjdp  "BFD_RELOC_ARM_HWLITERAL",
91233965Sjdp  "BFD_RELOC_ARM_THUMB_ADD",
91333965Sjdp  "BFD_RELOC_ARM_THUMB_IMM",
91433965Sjdp  "BFD_RELOC_ARM_THUMB_SHIFT",
91533965Sjdp  "BFD_RELOC_ARM_THUMB_OFFSET",
91660484Sobrien  "BFD_RELOC_ARM_GOT12",
91760484Sobrien  "BFD_RELOC_ARM_GOT32",
91860484Sobrien  "BFD_RELOC_ARM_JUMP_SLOT",
91960484Sobrien  "BFD_RELOC_ARM_COPY",
92060484Sobrien  "BFD_RELOC_ARM_GLOB_DAT",
92160484Sobrien  "BFD_RELOC_ARM_PLT32",
92260484Sobrien  "BFD_RELOC_ARM_RELATIVE",
92360484Sobrien  "BFD_RELOC_ARM_GOTOFF",
92460484Sobrien  "BFD_RELOC_ARM_GOTPC",
92533965Sjdp  "BFD_RELOC_SH_PCDISP8BY2",
92633965Sjdp  "BFD_RELOC_SH_PCDISP12BY2",
92733965Sjdp  "BFD_RELOC_SH_IMM4",
92833965Sjdp  "BFD_RELOC_SH_IMM4BY2",
92933965Sjdp  "BFD_RELOC_SH_IMM4BY4",
93033965Sjdp  "BFD_RELOC_SH_IMM8",
93133965Sjdp  "BFD_RELOC_SH_IMM8BY2",
93233965Sjdp  "BFD_RELOC_SH_IMM8BY4",
93333965Sjdp  "BFD_RELOC_SH_PCRELIMM8BY2",
93433965Sjdp  "BFD_RELOC_SH_PCRELIMM8BY4",
93533965Sjdp  "BFD_RELOC_SH_SWITCH16",
93633965Sjdp  "BFD_RELOC_SH_SWITCH32",
93733965Sjdp  "BFD_RELOC_SH_USES",
93833965Sjdp  "BFD_RELOC_SH_COUNT",
93933965Sjdp  "BFD_RELOC_SH_ALIGN",
94033965Sjdp  "BFD_RELOC_SH_CODE",
94133965Sjdp  "BFD_RELOC_SH_DATA",
94233965Sjdp  "BFD_RELOC_SH_LABEL",
94377298Sobrien  "BFD_RELOC_SH_LOOP_START",
94477298Sobrien  "BFD_RELOC_SH_LOOP_END",
94577298Sobrien  "BFD_RELOC_SH_COPY",
94677298Sobrien  "BFD_RELOC_SH_GLOB_DAT",
94777298Sobrien  "BFD_RELOC_SH_JMP_SLOT",
94877298Sobrien  "BFD_RELOC_SH_RELATIVE",
94977298Sobrien  "BFD_RELOC_SH_GOTPC",
95038889Sjdp  "BFD_RELOC_THUMB_PCREL_BRANCH9",
95138889Sjdp  "BFD_RELOC_THUMB_PCREL_BRANCH12",
95238889Sjdp  "BFD_RELOC_THUMB_PCREL_BRANCH23",
95338889Sjdp  "BFD_RELOC_ARC_B22_PCREL",
95438889Sjdp  "BFD_RELOC_ARC_B26",
95533965Sjdp  "BFD_RELOC_D10V_10_PCREL_R",
95633965Sjdp  "BFD_RELOC_D10V_10_PCREL_L",
95733965Sjdp  "BFD_RELOC_D10V_18",
95833965Sjdp  "BFD_RELOC_D10V_18_PCREL",
95960484Sobrien  "BFD_RELOC_D30V_6",
96060484Sobrien  "BFD_RELOC_D30V_9_PCREL",
96160484Sobrien  "BFD_RELOC_D30V_9_PCREL_R",
96260484Sobrien  "BFD_RELOC_D30V_15",
96360484Sobrien  "BFD_RELOC_D30V_15_PCREL",
96460484Sobrien  "BFD_RELOC_D30V_15_PCREL_R",
96560484Sobrien  "BFD_RELOC_D30V_21",
96660484Sobrien  "BFD_RELOC_D30V_21_PCREL",
96760484Sobrien  "BFD_RELOC_D30V_21_PCREL_R",
96860484Sobrien  "BFD_RELOC_D30V_32",
96960484Sobrien  "BFD_RELOC_D30V_32_PCREL",
97033965Sjdp  "BFD_RELOC_M32R_24",
97133965Sjdp  "BFD_RELOC_M32R_10_PCREL",
97233965Sjdp  "BFD_RELOC_M32R_18_PCREL",
97333965Sjdp  "BFD_RELOC_M32R_26_PCREL",
97433965Sjdp  "BFD_RELOC_M32R_HI16_ULO",
97533965Sjdp  "BFD_RELOC_M32R_HI16_SLO",
97633965Sjdp  "BFD_RELOC_M32R_LO16",
97733965Sjdp  "BFD_RELOC_M32R_SDA16",
97838889Sjdp  "BFD_RELOC_V850_9_PCREL",
97938889Sjdp  "BFD_RELOC_V850_22_PCREL",
98038889Sjdp  "BFD_RELOC_V850_SDA_16_16_OFFSET",
98138889Sjdp  "BFD_RELOC_V850_SDA_15_16_OFFSET",
98238889Sjdp  "BFD_RELOC_V850_ZDA_16_16_OFFSET",
98338889Sjdp  "BFD_RELOC_V850_ZDA_15_16_OFFSET",
98438889Sjdp  "BFD_RELOC_V850_TDA_6_8_OFFSET",
98538889Sjdp  "BFD_RELOC_V850_TDA_7_8_OFFSET",
98638889Sjdp  "BFD_RELOC_V850_TDA_7_7_OFFSET",
98738889Sjdp  "BFD_RELOC_V850_TDA_16_16_OFFSET",
98860484Sobrien  "BFD_RELOC_V850_TDA_4_5_OFFSET",
98960484Sobrien  "BFD_RELOC_V850_TDA_4_4_OFFSET",
99060484Sobrien  "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
99160484Sobrien  "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
99260484Sobrien  "BFD_RELOC_V850_CALLT_6_7_OFFSET",
99360484Sobrien  "BFD_RELOC_V850_CALLT_16_16_OFFSET",
99433965Sjdp
99533965Sjdp  "BFD_RELOC_MN10300_32_PCREL",
99633965Sjdp  "BFD_RELOC_MN10300_16_PCREL",
99738889Sjdp  "BFD_RELOC_TIC30_LDP",
99877298Sobrien  "BFD_RELOC_TIC54X_PARTLS7",
99977298Sobrien  "BFD_RELOC_TIC54X_PARTMS9",
100077298Sobrien  "BFD_RELOC_TIC54X_23",
100177298Sobrien  "BFD_RELOC_TIC54X_16_OF_23",
100277298Sobrien  "BFD_RELOC_TIC54X_MS7_OF_23",
100360484Sobrien  "BFD_RELOC_FR30_48",
100460484Sobrien  "BFD_RELOC_FR30_20",
100560484Sobrien  "BFD_RELOC_FR30_6_IN_4",
100660484Sobrien  "BFD_RELOC_FR30_8_IN_8",
100760484Sobrien  "BFD_RELOC_FR30_9_IN_8",
100860484Sobrien  "BFD_RELOC_FR30_10_IN_8",
100960484Sobrien  "BFD_RELOC_FR30_9_PCREL",
101060484Sobrien  "BFD_RELOC_FR30_12_PCREL",
101160484Sobrien  "BFD_RELOC_MCORE_PCREL_IMM8BY4",
101260484Sobrien  "BFD_RELOC_MCORE_PCREL_IMM11BY2",
101360484Sobrien  "BFD_RELOC_MCORE_PCREL_IMM4BY2",
101460484Sobrien  "BFD_RELOC_MCORE_PCREL_32",
101560484Sobrien  "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
101660484Sobrien  "BFD_RELOC_MCORE_RVA",
101789857Sobrien  "BFD_RELOC_MMIX_GETA",
101889857Sobrien  "BFD_RELOC_MMIX_GETA_1",
101989857Sobrien  "BFD_RELOC_MMIX_GETA_2",
102089857Sobrien  "BFD_RELOC_MMIX_GETA_3",
102189857Sobrien  "BFD_RELOC_MMIX_CBRANCH",
102289857Sobrien  "BFD_RELOC_MMIX_CBRANCH_J",
102389857Sobrien  "BFD_RELOC_MMIX_CBRANCH_1",
102489857Sobrien  "BFD_RELOC_MMIX_CBRANCH_2",
102589857Sobrien  "BFD_RELOC_MMIX_CBRANCH_3",
102689857Sobrien  "BFD_RELOC_MMIX_PUSHJ",
102789857Sobrien  "BFD_RELOC_MMIX_PUSHJ_1",
102889857Sobrien  "BFD_RELOC_MMIX_PUSHJ_2",
102989857Sobrien  "BFD_RELOC_MMIX_PUSHJ_3",
103089857Sobrien  "BFD_RELOC_MMIX_JMP",
103189857Sobrien  "BFD_RELOC_MMIX_JMP_1",
103289857Sobrien  "BFD_RELOC_MMIX_JMP_2",
103389857Sobrien  "BFD_RELOC_MMIX_JMP_3",
103489857Sobrien  "BFD_RELOC_MMIX_ADDR19",
103589857Sobrien  "BFD_RELOC_MMIX_ADDR27",
103689857Sobrien  "BFD_RELOC_MMIX_REG_OR_BYTE",
103789857Sobrien  "BFD_RELOC_MMIX_REG",
103889857Sobrien  "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
103989857Sobrien  "BFD_RELOC_MMIX_LOCAL",
104060484Sobrien  "BFD_RELOC_AVR_7_PCREL",
104160484Sobrien  "BFD_RELOC_AVR_13_PCREL",
104260484Sobrien  "BFD_RELOC_AVR_16_PM",
104360484Sobrien  "BFD_RELOC_AVR_LO8_LDI",
104460484Sobrien  "BFD_RELOC_AVR_HI8_LDI",
104560484Sobrien  "BFD_RELOC_AVR_HH8_LDI",
104660484Sobrien  "BFD_RELOC_AVR_LO8_LDI_NEG",
104760484Sobrien  "BFD_RELOC_AVR_HI8_LDI_NEG",
104860484Sobrien  "BFD_RELOC_AVR_HH8_LDI_NEG",
104960484Sobrien  "BFD_RELOC_AVR_LO8_LDI_PM",
105060484Sobrien  "BFD_RELOC_AVR_HI8_LDI_PM",
105160484Sobrien  "BFD_RELOC_AVR_HH8_LDI_PM",
105260484Sobrien  "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
105360484Sobrien  "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
105460484Sobrien  "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
105560484Sobrien  "BFD_RELOC_AVR_CALL",
105689857Sobrien  "BFD_RELOC_390_12",
105789857Sobrien  "BFD_RELOC_390_GOT12",
105889857Sobrien  "BFD_RELOC_390_PLT32",
105989857Sobrien  "BFD_RELOC_390_COPY",
106089857Sobrien  "BFD_RELOC_390_GLOB_DAT",
106189857Sobrien  "BFD_RELOC_390_JMP_SLOT",
106289857Sobrien  "BFD_RELOC_390_RELATIVE",
106389857Sobrien  "BFD_RELOC_390_GOTPC",
106489857Sobrien  "BFD_RELOC_390_GOT16",
106589857Sobrien  "BFD_RELOC_390_PC16DBL",
106689857Sobrien  "BFD_RELOC_390_PLT16DBL",
106789857Sobrien  "BFD_RELOC_390_PC32DBL",
106889857Sobrien  "BFD_RELOC_390_PLT32DBL",
106989857Sobrien  "BFD_RELOC_390_GOTPCDBL",
107089857Sobrien  "BFD_RELOC_390_GOT64",
107189857Sobrien  "BFD_RELOC_390_PLT64",
107289857Sobrien  "BFD_RELOC_390_GOTENT",
107360484Sobrien  "BFD_RELOC_VTABLE_INHERIT",
107460484Sobrien  "BFD_RELOC_VTABLE_ENTRY",
107577298Sobrien  "BFD_RELOC_IA64_IMM14",
107677298Sobrien  "BFD_RELOC_IA64_IMM22",
107777298Sobrien  "BFD_RELOC_IA64_IMM64",
107877298Sobrien  "BFD_RELOC_IA64_DIR32MSB",
107977298Sobrien  "BFD_RELOC_IA64_DIR32LSB",
108077298Sobrien  "BFD_RELOC_IA64_DIR64MSB",
108177298Sobrien  "BFD_RELOC_IA64_DIR64LSB",
108277298Sobrien  "BFD_RELOC_IA64_GPREL22",
108377298Sobrien  "BFD_RELOC_IA64_GPREL64I",
108477298Sobrien  "BFD_RELOC_IA64_GPREL32MSB",
108577298Sobrien  "BFD_RELOC_IA64_GPREL32LSB",
108677298Sobrien  "BFD_RELOC_IA64_GPREL64MSB",
108777298Sobrien  "BFD_RELOC_IA64_GPREL64LSB",
108877298Sobrien  "BFD_RELOC_IA64_LTOFF22",
108977298Sobrien  "BFD_RELOC_IA64_LTOFF64I",
109077298Sobrien  "BFD_RELOC_IA64_PLTOFF22",
109177298Sobrien  "BFD_RELOC_IA64_PLTOFF64I",
109277298Sobrien  "BFD_RELOC_IA64_PLTOFF64MSB",
109377298Sobrien  "BFD_RELOC_IA64_PLTOFF64LSB",
109477298Sobrien  "BFD_RELOC_IA64_FPTR64I",
109577298Sobrien  "BFD_RELOC_IA64_FPTR32MSB",
109677298Sobrien  "BFD_RELOC_IA64_FPTR32LSB",
109777298Sobrien  "BFD_RELOC_IA64_FPTR64MSB",
109877298Sobrien  "BFD_RELOC_IA64_FPTR64LSB",
109977298Sobrien  "BFD_RELOC_IA64_PCREL21B",
110077298Sobrien  "BFD_RELOC_IA64_PCREL21BI",
110177298Sobrien  "BFD_RELOC_IA64_PCREL21M",
110277298Sobrien  "BFD_RELOC_IA64_PCREL21F",
110377298Sobrien  "BFD_RELOC_IA64_PCREL22",
110477298Sobrien  "BFD_RELOC_IA64_PCREL60B",
110577298Sobrien  "BFD_RELOC_IA64_PCREL64I",
110677298Sobrien  "BFD_RELOC_IA64_PCREL32MSB",
110777298Sobrien  "BFD_RELOC_IA64_PCREL32LSB",
110877298Sobrien  "BFD_RELOC_IA64_PCREL64MSB",
110977298Sobrien  "BFD_RELOC_IA64_PCREL64LSB",
111077298Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR22",
111177298Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR64I",
111289857Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
111389857Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
111477298Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
111577298Sobrien  "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
111677298Sobrien  "BFD_RELOC_IA64_SEGREL32MSB",
111777298Sobrien  "BFD_RELOC_IA64_SEGREL32LSB",
111877298Sobrien  "BFD_RELOC_IA64_SEGREL64MSB",
111977298Sobrien  "BFD_RELOC_IA64_SEGREL64LSB",
112077298Sobrien  "BFD_RELOC_IA64_SECREL32MSB",
112177298Sobrien  "BFD_RELOC_IA64_SECREL32LSB",
112277298Sobrien  "BFD_RELOC_IA64_SECREL64MSB",
112377298Sobrien  "BFD_RELOC_IA64_SECREL64LSB",
112477298Sobrien  "BFD_RELOC_IA64_REL32MSB",
112577298Sobrien  "BFD_RELOC_IA64_REL32LSB",
112677298Sobrien  "BFD_RELOC_IA64_REL64MSB",
112777298Sobrien  "BFD_RELOC_IA64_REL64LSB",
112877298Sobrien  "BFD_RELOC_IA64_LTV32MSB",
112977298Sobrien  "BFD_RELOC_IA64_LTV32LSB",
113077298Sobrien  "BFD_RELOC_IA64_LTV64MSB",
113177298Sobrien  "BFD_RELOC_IA64_LTV64LSB",
113277298Sobrien  "BFD_RELOC_IA64_IPLTMSB",
113377298Sobrien  "BFD_RELOC_IA64_IPLTLSB",
113477298Sobrien  "BFD_RELOC_IA64_COPY",
113577298Sobrien  "BFD_RELOC_IA64_TPREL22",
113677298Sobrien  "BFD_RELOC_IA64_TPREL64MSB",
113777298Sobrien  "BFD_RELOC_IA64_TPREL64LSB",
113877298Sobrien  "BFD_RELOC_IA64_LTOFF_TP22",
113977298Sobrien  "BFD_RELOC_IA64_LTOFF22X",
114077298Sobrien  "BFD_RELOC_IA64_LDXMOV",
114177298Sobrien  "BFD_RELOC_M68HC11_HI8",
114277298Sobrien  "BFD_RELOC_M68HC11_LO8",
114377298Sobrien  "BFD_RELOC_M68HC11_3B",
114477298Sobrien  "BFD_RELOC_CRIS_BDISP8",
114577298Sobrien  "BFD_RELOC_CRIS_UNSIGNED_5",
114677298Sobrien  "BFD_RELOC_CRIS_SIGNED_6",
114777298Sobrien  "BFD_RELOC_CRIS_UNSIGNED_6",
114877298Sobrien  "BFD_RELOC_CRIS_UNSIGNED_4",
114989857Sobrien  "BFD_RELOC_CRIS_COPY",
115089857Sobrien  "BFD_RELOC_CRIS_GLOB_DAT",
115189857Sobrien  "BFD_RELOC_CRIS_JUMP_SLOT",
115289857Sobrien  "BFD_RELOC_CRIS_RELATIVE",
115389857Sobrien  "BFD_RELOC_CRIS_32_GOT",
115489857Sobrien  "BFD_RELOC_CRIS_16_GOT",
115589857Sobrien  "BFD_RELOC_CRIS_32_GOTPLT",
115689857Sobrien  "BFD_RELOC_CRIS_16_GOTPLT",
115789857Sobrien  "BFD_RELOC_CRIS_32_GOTREL",
115889857Sobrien  "BFD_RELOC_CRIS_32_PLT_GOTREL",
115989857Sobrien  "BFD_RELOC_CRIS_32_PLT_PCREL",
116077298Sobrien  "BFD_RELOC_860_COPY",
116177298Sobrien  "BFD_RELOC_860_GLOB_DAT",
116277298Sobrien  "BFD_RELOC_860_JUMP_SLOT",
116377298Sobrien  "BFD_RELOC_860_RELATIVE",
116477298Sobrien  "BFD_RELOC_860_PC26",
116577298Sobrien  "BFD_RELOC_860_PLT26",
116677298Sobrien  "BFD_RELOC_860_PC16",
116777298Sobrien  "BFD_RELOC_860_LOW0",
116877298Sobrien  "BFD_RELOC_860_SPLIT0",
116977298Sobrien  "BFD_RELOC_860_LOW1",
117077298Sobrien  "BFD_RELOC_860_SPLIT1",
117177298Sobrien  "BFD_RELOC_860_LOW2",
117277298Sobrien  "BFD_RELOC_860_SPLIT2",
117377298Sobrien  "BFD_RELOC_860_LOW3",
117477298Sobrien  "BFD_RELOC_860_LOGOT0",
117577298Sobrien  "BFD_RELOC_860_SPGOT0",
117677298Sobrien  "BFD_RELOC_860_LOGOT1",
117777298Sobrien  "BFD_RELOC_860_SPGOT1",
117877298Sobrien  "BFD_RELOC_860_LOGOTOFF0",
117977298Sobrien  "BFD_RELOC_860_SPGOTOFF0",
118077298Sobrien  "BFD_RELOC_860_LOGOTOFF1",
118177298Sobrien  "BFD_RELOC_860_SPGOTOFF1",
118277298Sobrien  "BFD_RELOC_860_LOGOTOFF2",
118377298Sobrien  "BFD_RELOC_860_LOGOTOFF3",
118477298Sobrien  "BFD_RELOC_860_LOPC",
118577298Sobrien  "BFD_RELOC_860_HIGHADJ",
118677298Sobrien  "BFD_RELOC_860_HAGOT",
118777298Sobrien  "BFD_RELOC_860_HAGOTOFF",
118877298Sobrien  "BFD_RELOC_860_HAPC",
118977298Sobrien  "BFD_RELOC_860_HIGH",
119077298Sobrien  "BFD_RELOC_860_HIGOT",
119177298Sobrien  "BFD_RELOC_860_HIGOTOFF",
119289857Sobrien  "BFD_RELOC_OPENRISC_ABS_26",
119389857Sobrien  "BFD_RELOC_OPENRISC_REL_26",
119489857Sobrien  "BFD_RELOC_H8_DIR16A8",
119589857Sobrien  "BFD_RELOC_H8_DIR16R8",
119689857Sobrien  "BFD_RELOC_H8_DIR24A8",
119789857Sobrien  "BFD_RELOC_H8_DIR24R8",
119889857Sobrien  "BFD_RELOC_H8_DIR32A16",
119989857Sobrien  "BFD_RELOC_XSTORMY16_REL_12",
120089857Sobrien  "BFD_RELOC_XSTORMY16_24",
120189857Sobrien  "BFD_RELOC_XSTORMY16_FPTR16",
120233965Sjdp "@@overflow: BFD_RELOC_UNUSED@@",
120333965Sjdp};
120433965Sjdp#endif
120533965Sjdp
120633965Sjdpreloc_howto_type *
120777298Sobrienbfd_default_reloc_type_lookup PARAMS ((bfd *abfd, bfd_reloc_code_real_type  code));
120833965Sjdp
120977298Sobrienboolean
121077298Sobrienbfd_generic_relax_section PARAMS ((bfd *abfd,
121133965Sjdp    asection *section,
121233965Sjdp    struct bfd_link_info *,
121333965Sjdp    boolean *));
121433965Sjdp
121577298Sobrienboolean
121677298Sobrienbfd_generic_gc_sections PARAMS ((bfd *, struct bfd_link_info *));
121760484Sobrien
121889857Sobrienboolean
121989857Sobrienbfd_generic_merge_sections PARAMS ((bfd *, struct bfd_link_info *));
122089857Sobrien
122133965Sjdpbfd_byte *
122277298Sobrienbfd_generic_get_relocated_section_contents PARAMS ((bfd *abfd,
122333965Sjdp    struct bfd_link_info *link_info,
122433965Sjdp    struct bfd_link_order *link_order,
122533965Sjdp    bfd_byte *data,
122633965Sjdp    boolean relocateable,
122733965Sjdp    asymbol **symbols));
122833965Sjdp
122933965Sjdpextern const bfd_arch_info_type bfd_default_arch_struct;
123077298Sobrienboolean
123133965Sjdpbfd_default_set_arch_mach PARAMS ((bfd *abfd,
123233965Sjdp    enum bfd_architecture arch,
123333965Sjdp    unsigned long mach));
123433965Sjdp
123533965Sjdpconst bfd_arch_info_type *
123677298Sobrienbfd_default_compatible PARAMS ((const bfd_arch_info_type *a,
123733965Sjdp    const bfd_arch_info_type *b));
123833965Sjdp
123977298Sobrienboolean
124033965Sjdpbfd_default_scan PARAMS ((const struct bfd_arch_info *info, const char *string));
124133965Sjdp
124233965Sjdpstruct elf_internal_shdr *
124377298Sobrienbfd_elf_find_section PARAMS ((bfd *abfd, char *name));
124433965Sjdp
1245