libbfd.h revision 104834
175584Sru/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically
275584Sru   generated from "libbfd-in.h", "init.c", "libbfd.c", "cache.c",
375584Sru   "reloc.c", "archures.c" and "elf.c".
4104862Sru   Run "make headers" in your build bfd/ to regenerate.  */
575584Sru
675584Sru/* libbfd.h -- Declarations used by bfd library *implementation*.
775584Sru   (This include file is not for users of the library.)
875584Sru   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
975584Sru   2000, 2001, 2002
1075584Sru   Free Software Foundation, Inc.
1175584Sru   Written by Cygnus Support.
1275584Sru
1375584SruThis file is part of BFD, the Binary File Descriptor library.
1475584Sru
15104862SruThis program is free software; you can redistribute it and/or modify
1675584Sruit under the terms of the GNU General Public License as published by
1775584Sruthe Free Software Foundation; either version 2 of the License, or
1875584Sru(at your option) any later version.
1975584Sru
2075584SruThis program is distributed in the hope that it will be useful,
2175584Srubut WITHOUT ANY WARRANTY; without even the implied warranty of
22104862SruMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2375584SruGNU General Public License for more details.
2475584Sru
2575584SruYou should have received a copy of the GNU General Public License
2675584Srualong with this program; if not, write to the Free Software
2775584SruFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
2875584Sru
2975584Sru/* Align an address upward to a boundary, expressed as a number of bytes.
3075584Sru   E.g. align to an 8-byte boundary with argument of 8.  Take care never
3175584Sru   to wrap around if the address is within boundary-1 of the end of the
3275584Sru   address space.  */
3375584Sru#define BFD_ALIGN(this, boundary)					  \
3475584Sru  ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))		  \
3575584Sru   ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
3675584Sru   : ~ (bfd_vma) 0)
3775584Sru
3875584Sru/* If you want to read and write large blocks, you might want to do it
3975584Sru   in quanta of this amount */
4075584Sru#define DEFAULT_BUFFERSIZE 8192
4175584Sru
4275584Sru/* Set a tdata field.  Can't use the other macros for this, since they
4375584Sru   do casts, and casting to the left of assignment isn't portable.  */
4475584Sru#define set_tdata(bfd, v) ((bfd)->tdata.any = (PTR) (v))
45104862Sru
4675584Sru/* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
4775584Sru   to an instance of this structure.  */
48104862Sru
4975584Srustruct bfd_in_memory
50104862Sru{
5175584Sru  /* Size of buffer.  */
5275584Sru  bfd_size_type size;
5375584Sru  /* Buffer holding contents of BFD.  */
5475584Sru  bfd_byte *buffer;
5575584Sru};
5675584Sru
5775584Sru/* tdata for an archive.  For an input archive, cache
5875584Sru   needs to be free()'d.  For an output archive, symdefs do.  */
5975584Sru
6075584Srustruct artdata {
6175584Sru  file_ptr first_file_filepos;
6275584Sru  /* Speed up searching the armap */
6375584Sru  struct ar_cache *cache;
6475584Sru  bfd *archive_head;		/* Only interesting in output routines */
6575584Sru  carsym *symdefs;		/* the symdef entries */
6675584Sru  symindex symdef_count;	/* how many there are */
6775584Sru  char *extended_names;		/* clever intel extension */
6875584Sru  /* when more compilers are standard C, this can be a time_t */
6975584Sru  long  armap_timestamp;	/* Timestamp value written into armap.
7075584Sru				   This is used for BSD archives to check
7175584Sru				   that the timestamp is recent enough
7275584Sru				   for the BSD linker to not complain,
7375584Sru				   just before we finish writing an
7475584Sru				   archive.  */
7575584Sru  file_ptr armap_datepos;	/* Position within archive to seek to
7675584Sru				   rewrite the date field.  */
7775584Sru  PTR tdata;			/* Backend specific information.  */
7875584Sru};
7975584Sru
80104862Sru#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
8175584Sru
8275584Sru/* Goes in bfd's arelt_data slot */
8375584Srustruct areltdata {
8475584Sru  char * arch_header;		/* it's actually a string */
8575584Sru  unsigned int parsed_size;	/* octets of filesize not including ar_hdr */
86104862Sru  char *filename;		/* null-terminated */
87104862Sru};
8875584Sru
8975584Sru#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
9075584Sru
9175584Sruextern PTR bfd_malloc PARAMS ((bfd_size_type));
9275584Sruextern PTR bfd_realloc PARAMS ((PTR, bfd_size_type));
93104862Sruextern PTR bfd_zmalloc PARAMS ((bfd_size_type));
9475584Sru
9575584Sruextern bfd_error_handler_type _bfd_error_handler;
9675584Sru
9775584Sru/* These routines allocate and free things on the BFD's objalloc.  */
9875584Sru
9975584Sruextern PTR bfd_alloc PARAMS ((bfd *, bfd_size_type));
10075584Sruextern PTR bfd_zalloc PARAMS ((bfd *, bfd_size_type));
10175584Sruextern void bfd_release PARAMS ((bfd *, PTR));
10275584Sru
10375584Srubfd *	_bfd_create_empty_archive_element_shell PARAMS ((bfd *obfd));
10475584Srubfd *	_bfd_look_for_bfd_in_cache PARAMS ((bfd *, file_ptr));
10575584Sruboolean _bfd_add_bfd_to_archive_cache PARAMS ((bfd *, file_ptr, bfd *));
10675584Sruboolean	_bfd_generic_mkarchive PARAMS ((bfd *abfd));
10775584Sruconst bfd_target *bfd_generic_archive_p PARAMS ((bfd *abfd));
10875584Sruboolean	bfd_slurp_armap PARAMS ((bfd *abfd));
10975584Sruboolean bfd_slurp_bsd_armap_f2 PARAMS ((bfd *abfd));
11075584Sru#define bfd_slurp_bsd_armap bfd_slurp_armap
11175584Sru#define bfd_slurp_coff_armap bfd_slurp_armap
11275584Sruboolean	_bfd_slurp_extended_name_table PARAMS ((bfd *abfd));
11375584Sruextern boolean _bfd_construct_extended_name_table
11475584Sru  PARAMS ((bfd *, boolean, char **, bfd_size_type *));
11575584Sruboolean	_bfd_write_archive_contents PARAMS ((bfd *abfd));
11675584Sruboolean _bfd_compute_and_write_armap PARAMS ((bfd *, unsigned int elength));
117104862Srubfd *_bfd_get_elt_at_filepos PARAMS ((bfd *archive, file_ptr filepos));
11875584Sruextern bfd *_bfd_generic_get_elt_at_index PARAMS ((bfd *, symindex));
11975584Srubfd * _bfd_new_bfd PARAMS ((void));
12075584Sruvoid _bfd_delete_bfd PARAMS ((bfd *));
12175584Sru
12275584Sruboolean	bfd_false PARAMS ((bfd *ignore));
12375584Sruboolean	bfd_true PARAMS ((bfd *ignore));
12475584SruPTR	bfd_nullvoidptr PARAMS ((bfd *ignore));
12575584Sruint	bfd_0 PARAMS ((bfd *ignore));
12675584Sruunsigned int	bfd_0u PARAMS ((bfd *ignore));
12775584Srulong	bfd_0l PARAMS ((bfd *ignore));
12875584Srulong	_bfd_n1 PARAMS ((bfd *ignore));
129114402Sruvoid	bfd_void PARAMS ((bfd *ignore));
13075584Sru
13175584Srubfd *_bfd_new_bfd_contained_in PARAMS ((bfd *));
13275584Sruconst bfd_target *_bfd_dummy_target PARAMS ((bfd *abfd));
13375584Sru
13475584Sruvoid	bfd_dont_truncate_arname PARAMS ((bfd *abfd, const char *filename,
135104862Sru					char *hdr));
13675584Sruvoid	bfd_bsd_truncate_arname PARAMS ((bfd *abfd, const char *filename,
13775584Sru					char *hdr));
13875584Sruvoid	bfd_gnu_truncate_arname PARAMS ((bfd *abfd, const char *filename,
139104862Sru					char *hdr));
14075584Sru
14175584Sruboolean	bsd_write_armap PARAMS ((bfd *arch, unsigned int elength,
14275584Sru				  struct orl *map, unsigned int orl_count, int stridx));
14375584Sru
14475584Sruboolean	coff_write_armap PARAMS ((bfd *arch, unsigned int elength,
14575584Sru				   struct orl *map, unsigned int orl_count, int stridx));
14675584Sru
14775584Sruextern PTR _bfd_generic_read_ar_hdr PARAMS ((bfd *));
14875584Sru
14975584Sruextern PTR _bfd_generic_read_ar_hdr_mag PARAMS ((bfd *, const char *));
15075584Sru
15175584Srubfd *	bfd_generic_openr_next_archived_file PARAMS ((bfd *archive,
15275584Sru						     bfd *last_file));
15375584Sru
15475584Sruint	bfd_generic_stat_arch_elt PARAMS ((bfd *, struct stat *));
15575584Sru
156104862Sru#define _bfd_read_ar_hdr(abfd) \
15775584Sru  BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
158104862Sru
159104862Sru/* Generic routines to use for BFD_JUMP_TABLE_GENERIC.  Use
160104862Sru   BFD_JUMP_TABLE_GENERIC (_bfd_generic).  */
161104862Sru
16275584Sru#define _bfd_generic_close_and_cleanup bfd_true
16375584Sru#define _bfd_generic_bfd_free_cached_info bfd_true
16475584Sru#define _bfd_generic_new_section_hook \
16575584Sru  ((boolean (*) PARAMS ((bfd *, asection *))) bfd_true)
16675584Sruextern boolean _bfd_generic_get_section_contents
16775584Sru  PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
16875584Sruextern boolean _bfd_generic_get_section_contents_in_window
16975584Sru  PARAMS ((bfd *, asection *, bfd_window *, file_ptr, bfd_size_type));
17075584Sru
17175584Sru/* Generic routines to use for BFD_JUMP_TABLE_COPY.  Use
17275584Sru   BFD_JUMP_TABLE_COPY (_bfd_generic).  */
173104862Sru
17475584Sru#define _bfd_generic_bfd_copy_private_bfd_data \
17575584Sru  ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true)
17675584Sru#define _bfd_generic_bfd_merge_private_bfd_data \
17775584Sru  ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true)
17875584Sru#define _bfd_generic_bfd_set_private_flags \
17975584Sru  ((boolean (*) PARAMS ((bfd *, flagword))) bfd_true)
18075584Sru#define _bfd_generic_bfd_copy_private_section_data \
18175584Sru  ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true)
18275584Sru#define _bfd_generic_bfd_copy_private_symbol_data \
18375584Sru  ((boolean (*) PARAMS ((bfd *, asymbol *, bfd *, asymbol *))) bfd_true)
18475584Sru#define _bfd_generic_bfd_print_private_bfd_data \
18575584Sru  ((boolean (*) PARAMS ((bfd *, PTR))) bfd_true)
18675584Sru
18775584Sru/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
18875584Sru   support.  Use BFD_JUMP_TABLE_CORE (_bfd_nocore).  */
18975584Sru
190104862Sruextern char *_bfd_nocore_core_file_failing_command PARAMS ((bfd *));
191104862Sruextern int _bfd_nocore_core_file_failing_signal PARAMS ((bfd *));
192104862Sruextern boolean _bfd_nocore_core_file_matches_executable_p
193104862Sru  PARAMS ((bfd *, bfd *));
19475584Sru
19575584Sru/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
19675584Sru   file support.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive).  */
19775584Sru
19875584Sru#define _bfd_noarchive_slurp_armap bfd_false
19975584Sru#define _bfd_noarchive_slurp_extended_name_table bfd_false
20075584Sru#define _bfd_noarchive_construct_extended_name_table \
20175584Sru  ((boolean (*) PARAMS ((bfd *, char **, bfd_size_type *, const char **))) \
20275584Sru   bfd_false)
20375584Sru#define _bfd_noarchive_truncate_arname \
20475584Sru  ((void (*) PARAMS ((bfd *, const char *, char *))) bfd_void)
205104862Sru#define _bfd_noarchive_write_armap \
20675584Sru  ((boolean (*) \
20775584Sru    PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int))) \
20875584Sru   bfd_false)
20975584Sru#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
21075584Sru#define _bfd_noarchive_openr_next_archived_file \
21175584Sru  ((bfd *(*) PARAMS ((bfd *, bfd *))) bfd_nullvoidptr)
21275584Sru#define _bfd_noarchive_get_elt_at_index \
21375584Sru  ((bfd *(*) PARAMS ((bfd *, symindex))) bfd_nullvoidptr)
214#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
215#define _bfd_noarchive_update_armap_timestamp bfd_false
216
217/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
218   archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd).  */
219
220#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
221#define _bfd_archive_bsd_slurp_extended_name_table \
222  _bfd_slurp_extended_name_table
223extern boolean _bfd_archive_bsd_construct_extended_name_table
224  PARAMS ((bfd *, char **, bfd_size_type *, const char **));
225#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
226#define _bfd_archive_bsd_write_armap bsd_write_armap
227#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
228#define _bfd_archive_bsd_openr_next_archived_file \
229  bfd_generic_openr_next_archived_file
230#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
231#define _bfd_archive_bsd_generic_stat_arch_elt \
232  bfd_generic_stat_arch_elt
233extern boolean _bfd_archive_bsd_update_armap_timestamp PARAMS ((bfd *));
234
235/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
236   archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff).  */
237
238#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
239#define _bfd_archive_coff_slurp_extended_name_table \
240  _bfd_slurp_extended_name_table
241extern boolean _bfd_archive_coff_construct_extended_name_table
242  PARAMS ((bfd *, char **, bfd_size_type *, const char **));
243#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
244#define _bfd_archive_coff_write_armap coff_write_armap
245#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
246#define _bfd_archive_coff_openr_next_archived_file \
247  bfd_generic_openr_next_archived_file
248#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
249#define _bfd_archive_coff_generic_stat_arch_elt \
250  bfd_generic_stat_arch_elt
251#define _bfd_archive_coff_update_armap_timestamp bfd_true
252
253/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
254   support.  Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).  */
255
256#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
257#define _bfd_nosymbols_get_symtab \
258  ((long (*) PARAMS ((bfd *, asymbol **))) _bfd_n1)
259#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
260#define _bfd_nosymbols_print_symbol \
261  ((void (*) PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type))) bfd_void)
262#define _bfd_nosymbols_get_symbol_info \
263  ((void (*) PARAMS ((bfd *, asymbol *, symbol_info *))) bfd_void)
264#define _bfd_nosymbols_bfd_is_local_label_name \
265  ((boolean (*) PARAMS ((bfd *, const char *))) bfd_false)
266#define _bfd_nosymbols_get_lineno \
267  ((alent *(*) PARAMS ((bfd *, asymbol *))) bfd_nullvoidptr)
268#define _bfd_nosymbols_find_nearest_line \
269  ((boolean (*) \
270    PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **, \
271	     const char **, unsigned int *))) \
272   bfd_false)
273#define _bfd_nosymbols_bfd_make_debug_symbol \
274  ((asymbol *(*) PARAMS ((bfd *, PTR, unsigned long))) bfd_nullvoidptr)
275#define _bfd_nosymbols_read_minisymbols \
276  ((long (*) PARAMS ((bfd *, boolean, PTR *, unsigned int *))) _bfd_n1)
277#define _bfd_nosymbols_minisymbol_to_symbol \
278  ((asymbol *(*) PARAMS ((bfd *, boolean, const PTR, asymbol *))) \
279   bfd_nullvoidptr)
280
281/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
282   support.  Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs).  */
283
284#define _bfd_norelocs_get_reloc_upper_bound \
285  ((long (*) PARAMS ((bfd *, asection *))) _bfd_n1)
286#define _bfd_norelocs_canonicalize_reloc \
287  ((long (*) PARAMS ((bfd *, asection *, arelent **, asymbol **))) _bfd_n1)
288#define _bfd_norelocs_bfd_reloc_type_lookup \
289  ((reloc_howto_type *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) \
290   bfd_nullvoidptr)
291
292/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
293   be written.  Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite).  */
294
295#define _bfd_nowrite_set_arch_mach \
296  ((boolean (*) PARAMS ((bfd *, enum bfd_architecture, unsigned long))) \
297   bfd_false)
298#define _bfd_nowrite_set_section_contents \
299  ((boolean (*) PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type))) \
300   bfd_false)
301
302/* Generic routines to use for BFD_JUMP_TABLE_WRITE.  Use
303   BFD_JUMP_TABLE_WRITE (_bfd_generic).  */
304
305#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
306extern boolean _bfd_generic_set_section_contents
307  PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
308
309/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
310   support linking.  Use BFD_JUMP_TABLE_LINK (_bfd_nolink).  */
311
312#define _bfd_nolink_sizeof_headers ((int (*) PARAMS ((bfd *, boolean))) bfd_0)
313#define _bfd_nolink_bfd_get_relocated_section_contents \
314  ((bfd_byte *(*) \
315    PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, \
316	     bfd_byte *, boolean, asymbol **))) \
317   bfd_nullvoidptr)
318#define _bfd_nolink_bfd_relax_section \
319  ((boolean (*) \
320    PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *))) \
321   bfd_false)
322#define _bfd_nolink_bfd_gc_sections \
323  ((boolean (*) \
324    PARAMS ((bfd *, struct bfd_link_info *))) \
325   bfd_false)
326#define _bfd_nolink_bfd_merge_sections \
327  ((boolean (*) \
328    PARAMS ((bfd *, struct bfd_link_info *))) \
329   bfd_false)
330#define _bfd_nolink_bfd_discard_group \
331  ((boolean (*) \
332    PARAMS ((bfd *, struct sec *))) \
333   bfd_false)
334#define _bfd_nolink_bfd_link_hash_table_create \
335  ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr)
336#define _bfd_nolink_bfd_link_hash_table_free \
337  ((void (*) PARAMS ((struct bfd_link_hash_table *))) bfd_void)
338#define _bfd_nolink_bfd_link_add_symbols \
339  ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false)
340#define _bfd_nolink_bfd_link_just_syms \
341  ((void (*) PARAMS ((asection *, struct bfd_link_info *))) bfd_void)
342#define _bfd_nolink_bfd_final_link \
343  ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false)
344#define _bfd_nolink_bfd_link_split_section \
345  ((boolean (*) PARAMS ((bfd *, struct sec *))) bfd_false)
346
347/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
348   have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
349   (_bfd_nodynamic).  */
350
351#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
352#define _bfd_nodynamic_canonicalize_dynamic_symtab \
353  ((long (*) PARAMS ((bfd *, asymbol **))) _bfd_n1)
354#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
355#define _bfd_nodynamic_canonicalize_dynamic_reloc \
356  ((long (*) PARAMS ((bfd *, arelent **, asymbol **))) _bfd_n1)
357
358/* Generic routine to determine of the given symbol is a local
359   label.  */
360extern boolean bfd_generic_is_local_label_name PARAMS ((bfd *, const char *));
361
362/* Generic minisymbol routines.  */
363extern long _bfd_generic_read_minisymbols
364  PARAMS ((bfd *, boolean, PTR *, unsigned int *));
365extern asymbol *_bfd_generic_minisymbol_to_symbol
366  PARAMS ((bfd *, boolean, const PTR, asymbol *));
367
368/* Find the nearest line using .stab/.stabstr sections.  */
369extern boolean _bfd_stab_section_find_nearest_line
370  PARAMS ((bfd *, asymbol **, asection *, bfd_vma, boolean *, const char **,
371	   const char **, unsigned int *, PTR *));
372
373/* Find the neaderst line using DWARF 1 debugging information.  */
374extern boolean _bfd_dwarf1_find_nearest_line
375  PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
376	   const char **, unsigned int *));
377
378/* Find the nearest line using DWARF 2 debugging information.  */
379extern boolean _bfd_dwarf2_find_nearest_line
380  PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
381	   const char **, unsigned int *, unsigned int,
382	   PTR *));
383
384/* Create a new section entry.  */
385extern struct bfd_hash_entry *bfd_section_hash_newfunc
386  PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
387
388/* A routine to create entries for a bfd_link_hash_table.  */
389extern struct bfd_hash_entry *_bfd_link_hash_newfunc
390  PARAMS ((struct bfd_hash_entry *entry,
391	   struct bfd_hash_table *table,
392	   const char *string));
393
394/* Initialize a bfd_link_hash_table.  */
395extern boolean _bfd_link_hash_table_init
396  PARAMS ((struct bfd_link_hash_table *, bfd *,
397	   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
398				       struct bfd_hash_table *,
399				       const char *)));
400
401/* Generic link hash table creation routine.  */
402extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
403  PARAMS ((bfd *));
404
405/* Generic link hash table destruction routine.  */
406extern void _bfd_generic_link_hash_table_free
407  PARAMS ((struct bfd_link_hash_table *));
408
409/* Generic add symbol routine.  */
410extern boolean _bfd_generic_link_add_symbols
411  PARAMS ((bfd *, struct bfd_link_info *));
412
413/* Generic add symbol routine.  This version is used by targets for
414   which the linker must collect constructors and destructors by name,
415   as the collect2 program does.  */
416extern boolean _bfd_generic_link_add_symbols_collect
417  PARAMS ((bfd *, struct bfd_link_info *));
418
419/* Generic archive add symbol routine.  */
420extern boolean _bfd_generic_link_add_archive_symbols
421  PARAMS ((bfd *, struct bfd_link_info *,
422	   boolean (*checkfn) (bfd *, struct bfd_link_info *, boolean *)));
423
424/* Forward declaration to avoid prototype errors.  */
425typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
426
427/* Generic routine to add a single symbol.  */
428extern boolean _bfd_generic_link_add_one_symbol
429  PARAMS ((struct bfd_link_info *, bfd *, const char *name, flagword,
430	   asection *, bfd_vma, const char *, boolean copy,
431	   boolean constructor, struct bfd_link_hash_entry **));
432
433/* Generic routine to mark section as supplying symbols only.  */
434extern void _bfd_generic_link_just_syms
435  PARAMS ((asection *, struct bfd_link_info *));
436
437/* Generic link routine.  */
438extern boolean _bfd_generic_final_link
439  PARAMS ((bfd *, struct bfd_link_info *));
440
441extern boolean _bfd_generic_link_split_section
442  PARAMS ((bfd *, struct sec *));
443
444/* Generic reloc_link_order processing routine.  */
445extern boolean _bfd_generic_reloc_link_order
446  PARAMS ((bfd *, struct bfd_link_info *, asection *,
447	   struct bfd_link_order *));
448
449/* Default link order processing routine.  */
450extern boolean _bfd_default_link_order
451  PARAMS ((bfd *, struct bfd_link_info *, asection *,
452	   struct bfd_link_order *));
453
454/* Count the number of reloc entries in a link order list.  */
455extern unsigned int _bfd_count_link_order_relocs
456  PARAMS ((struct bfd_link_order *));
457
458/* Final link relocation routine.  */
459extern bfd_reloc_status_type _bfd_final_link_relocate
460  PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *,
461	   bfd_vma, bfd_vma, bfd_vma));
462
463/* Relocate a particular location by a howto and a value.  */
464extern bfd_reloc_status_type _bfd_relocate_contents
465  PARAMS ((reloc_howto_type *, bfd *, bfd_vma, bfd_byte *));
466
467/* Link stabs in sections in the first pass.  */
468
469extern boolean _bfd_link_section_stabs
470  PARAMS ((bfd *, PTR *, asection *, asection *, PTR *));
471
472/* Eliminate stabs for discarded functions and symbols.  */
473extern boolean _bfd_discard_section_stabs
474  PARAMS ((bfd *, asection *, PTR,
475	   boolean (*) (bfd_vma, PTR), PTR));
476
477/* Write out the .stab section when linking stabs in sections.  */
478
479extern boolean _bfd_write_section_stabs
480  PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_byte *));
481
482/* Write out the .stabstr string table when linking stabs in sections.  */
483
484extern boolean _bfd_write_stab_strings PARAMS ((bfd *, PTR *));
485
486/* Find an offset within a .stab section when linking stabs in
487   sections.  */
488
489extern bfd_vma _bfd_stab_section_offset
490  PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_vma));
491
492/* Attempt to merge a SEC_MERGE section.  */
493
494extern boolean _bfd_merge_section
495  PARAMS ((bfd *, PTR *, asection *, PTR *));
496
497/* Attempt to merge SEC_MERGE sections.  */
498
499extern boolean _bfd_merge_sections
500  PARAMS ((bfd *, PTR, void (*)(bfd *, asection *)));
501
502/* Write out a merged section.  */
503
504extern boolean _bfd_write_merged_section
505  PARAMS ((bfd *, asection *, PTR));
506
507/* Find an offset within a modified SEC_MERGE section.  */
508
509extern bfd_vma _bfd_merged_section_offset
510  PARAMS ((bfd *, asection **, PTR, bfd_vma, bfd_vma));
511
512/* Create a string table.  */
513extern struct bfd_strtab_hash *_bfd_stringtab_init PARAMS ((void));
514
515/* Create an XCOFF .debug section style string table.  */
516extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init PARAMS ((void));
517
518/* Free a string table.  */
519extern void _bfd_stringtab_free PARAMS ((struct bfd_strtab_hash *));
520
521/* Get the size of a string table.  */
522extern bfd_size_type _bfd_stringtab_size PARAMS ((struct bfd_strtab_hash *));
523
524/* Add a string to a string table.  */
525extern bfd_size_type _bfd_stringtab_add
526  PARAMS ((struct bfd_strtab_hash *, const char *, boolean hash,
527	   boolean copy));
528
529/* Write out a string table.  */
530extern boolean _bfd_stringtab_emit PARAMS ((bfd *, struct bfd_strtab_hash *));
531
532/* Check that endianness of input and output file match.  */
533extern boolean _bfd_generic_verify_endian_match PARAMS ((bfd *, bfd *));
534
535/* Macros to tell if bfds are read or write enabled.
536
537   Note that bfds open for read may be scribbled into if the fd passed
538   to bfd_fdopenr is actually open both for read and write
539   simultaneously.  However an output bfd will never be open for
540   read.  Therefore sometimes you want to check bfd_read_p or
541   !bfd_read_p, and only sometimes bfd_write_p.
542*/
543
544#define	bfd_read_p(abfd) ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
545#define	bfd_write_p(abfd) ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
546
547void	bfd_assert PARAMS ((const char*,int));
548
549#define BFD_ASSERT(x) \
550{ if (!(x)) bfd_assert(__FILE__,__LINE__); }
551
552#define BFD_FAIL() \
553{ bfd_assert(__FILE__,__LINE__); }
554
555extern void _bfd_abort PARAMS ((const char *, int, const char *))
556     ATTRIBUTE_NORETURN;
557
558/* if gcc >= 2.6, we can give a function name, too */
559#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
560#define __PRETTY_FUNCTION__  ((char *) NULL)
561#endif
562
563#undef abort
564#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
565
566FILE *	bfd_cache_lookup_worker PARAMS ((bfd *));
567
568extern bfd *bfd_last_cache;
569
570/* List of supported target vectors, and the default vector (if
571   bfd_default_vector[0] is NULL, there is no default).  */
572extern const bfd_target * const *bfd_target_vector;
573extern const bfd_target *bfd_default_vector[];
574
575/* Functions shared by the ECOFF and MIPS ELF backends, which have no
576   other common header files.  */
577
578#if defined(__STDC__) || defined(ALMOST_STDC)
579struct ecoff_find_line;
580#endif
581
582extern boolean _bfd_ecoff_locate_line
583  PARAMS ((bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
584	   const struct ecoff_debug_swap * const, struct ecoff_find_line *,
585	   const char **, const char **, unsigned int *));
586extern boolean _bfd_ecoff_get_accumulated_pdr PARAMS ((PTR, bfd_byte *));
587extern boolean _bfd_ecoff_get_accumulated_sym PARAMS ((PTR, bfd_byte *));
588extern boolean _bfd_ecoff_get_accumulated_ss PARAMS ((PTR, bfd_byte *));
589
590extern bfd_vma _bfd_get_gp_value PARAMS ((bfd *));
591extern void _bfd_set_gp_value PARAMS ((bfd *, bfd_vma));
592
593/* Function shared by the COFF and ELF SH backends, which have no
594   other common header files.  */
595
596extern boolean _bfd_sh_align_load_span
597  PARAMS ((bfd *, asection *, bfd_byte *,
598	   boolean (*) (bfd *, asection *, PTR, bfd_byte *, bfd_vma),
599	   PTR, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, boolean *));
600
601/* Extracted from init.c.  */
602/* Extracted from libbfd.c.  */
603boolean
604bfd_write_bigendian_4byte_int PARAMS ((bfd *, unsigned int));
605
606unsigned int
607bfd_log2 PARAMS ((bfd_vma x));
608
609/* Extracted from cache.c.  */
610#define BFD_CACHE_MAX_OPEN 10
611extern bfd *bfd_last_cache;
612
613#define bfd_cache_lookup(x) \
614    ((x)==bfd_last_cache? \
615      (FILE*) (bfd_last_cache->iostream): \
616       bfd_cache_lookup_worker(x))
617boolean
618bfd_cache_init PARAMS ((bfd *abfd));
619
620boolean
621bfd_cache_close PARAMS ((bfd *abfd));
622
623FILE*
624bfd_open_file PARAMS ((bfd *abfd));
625
626FILE *
627bfd_cache_lookup_worker PARAMS ((bfd *abfd));
628
629/* Extracted from reloc.c.  */
630#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
631
632static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
633
634  "BFD_RELOC_64",
635  "BFD_RELOC_32",
636  "BFD_RELOC_26",
637  "BFD_RELOC_24",
638  "BFD_RELOC_16",
639  "BFD_RELOC_14",
640  "BFD_RELOC_8",
641  "BFD_RELOC_64_PCREL",
642  "BFD_RELOC_32_PCREL",
643  "BFD_RELOC_24_PCREL",
644  "BFD_RELOC_16_PCREL",
645  "BFD_RELOC_12_PCREL",
646  "BFD_RELOC_8_PCREL",
647  "BFD_RELOC_32_GOT_PCREL",
648  "BFD_RELOC_16_GOT_PCREL",
649  "BFD_RELOC_8_GOT_PCREL",
650  "BFD_RELOC_32_GOTOFF",
651  "BFD_RELOC_16_GOTOFF",
652  "BFD_RELOC_LO16_GOTOFF",
653  "BFD_RELOC_HI16_GOTOFF",
654  "BFD_RELOC_HI16_S_GOTOFF",
655  "BFD_RELOC_8_GOTOFF",
656  "BFD_RELOC_64_PLT_PCREL",
657  "BFD_RELOC_32_PLT_PCREL",
658  "BFD_RELOC_24_PLT_PCREL",
659  "BFD_RELOC_16_PLT_PCREL",
660  "BFD_RELOC_8_PLT_PCREL",
661  "BFD_RELOC_64_PLTOFF",
662  "BFD_RELOC_32_PLTOFF",
663  "BFD_RELOC_16_PLTOFF",
664  "BFD_RELOC_LO16_PLTOFF",
665  "BFD_RELOC_HI16_PLTOFF",
666  "BFD_RELOC_HI16_S_PLTOFF",
667  "BFD_RELOC_8_PLTOFF",
668  "BFD_RELOC_68K_GLOB_DAT",
669  "BFD_RELOC_68K_JMP_SLOT",
670  "BFD_RELOC_68K_RELATIVE",
671  "BFD_RELOC_32_BASEREL",
672  "BFD_RELOC_16_BASEREL",
673  "BFD_RELOC_LO16_BASEREL",
674  "BFD_RELOC_HI16_BASEREL",
675  "BFD_RELOC_HI16_S_BASEREL",
676  "BFD_RELOC_8_BASEREL",
677  "BFD_RELOC_RVA",
678  "BFD_RELOC_8_FFnn",
679  "BFD_RELOC_32_PCREL_S2",
680  "BFD_RELOC_16_PCREL_S2",
681  "BFD_RELOC_23_PCREL_S2",
682  "BFD_RELOC_HI22",
683  "BFD_RELOC_LO10",
684  "BFD_RELOC_GPREL16",
685  "BFD_RELOC_GPREL32",
686  "BFD_RELOC_I960_CALLJ",
687  "BFD_RELOC_NONE",
688  "BFD_RELOC_SPARC_WDISP22",
689  "BFD_RELOC_SPARC22",
690  "BFD_RELOC_SPARC13",
691  "BFD_RELOC_SPARC_GOT10",
692  "BFD_RELOC_SPARC_GOT13",
693  "BFD_RELOC_SPARC_GOT22",
694  "BFD_RELOC_SPARC_PC10",
695  "BFD_RELOC_SPARC_PC22",
696  "BFD_RELOC_SPARC_WPLT30",
697  "BFD_RELOC_SPARC_COPY",
698  "BFD_RELOC_SPARC_GLOB_DAT",
699  "BFD_RELOC_SPARC_JMP_SLOT",
700  "BFD_RELOC_SPARC_RELATIVE",
701  "BFD_RELOC_SPARC_UA16",
702  "BFD_RELOC_SPARC_UA32",
703  "BFD_RELOC_SPARC_UA64",
704  "BFD_RELOC_SPARC_BASE13",
705  "BFD_RELOC_SPARC_BASE22",
706  "BFD_RELOC_SPARC_10",
707  "BFD_RELOC_SPARC_11",
708  "BFD_RELOC_SPARC_OLO10",
709  "BFD_RELOC_SPARC_HH22",
710  "BFD_RELOC_SPARC_HM10",
711  "BFD_RELOC_SPARC_LM22",
712  "BFD_RELOC_SPARC_PC_HH22",
713  "BFD_RELOC_SPARC_PC_HM10",
714  "BFD_RELOC_SPARC_PC_LM22",
715  "BFD_RELOC_SPARC_WDISP16",
716  "BFD_RELOC_SPARC_WDISP19",
717  "BFD_RELOC_SPARC_7",
718  "BFD_RELOC_SPARC_6",
719  "BFD_RELOC_SPARC_5",
720  "BFD_RELOC_SPARC_PLT32",
721  "BFD_RELOC_SPARC_PLT64",
722  "BFD_RELOC_SPARC_HIX22",
723  "BFD_RELOC_SPARC_LOX10",
724  "BFD_RELOC_SPARC_H44",
725  "BFD_RELOC_SPARC_M44",
726  "BFD_RELOC_SPARC_L44",
727  "BFD_RELOC_SPARC_REGISTER",
728  "BFD_RELOC_SPARC_REV32",
729  "BFD_RELOC_ALPHA_GPDISP_HI16",
730  "BFD_RELOC_ALPHA_GPDISP_LO16",
731  "BFD_RELOC_ALPHA_GPDISP",
732  "BFD_RELOC_ALPHA_LITERAL",
733  "BFD_RELOC_ALPHA_ELF_LITERAL",
734  "BFD_RELOC_ALPHA_LITUSE",
735  "BFD_RELOC_ALPHA_HINT",
736  "BFD_RELOC_ALPHA_LINKAGE",
737  "BFD_RELOC_ALPHA_CODEADDR",
738  "BFD_RELOC_ALPHA_GPREL_HI16",
739  "BFD_RELOC_ALPHA_GPREL_LO16",
740  "BFD_RELOC_ALPHA_BRSGP",
741  "BFD_RELOC_ALPHA_TLSGD",
742  "BFD_RELOC_ALPHA_TLSLDM",
743  "BFD_RELOC_ALPHA_DTPMOD64",
744  "BFD_RELOC_ALPHA_GOTDTPREL16",
745  "BFD_RELOC_ALPHA_DTPREL64",
746  "BFD_RELOC_ALPHA_DTPREL_HI16",
747  "BFD_RELOC_ALPHA_DTPREL_LO16",
748  "BFD_RELOC_ALPHA_DTPREL16",
749  "BFD_RELOC_ALPHA_GOTTPREL16",
750  "BFD_RELOC_ALPHA_TPREL64",
751  "BFD_RELOC_ALPHA_TPREL_HI16",
752  "BFD_RELOC_ALPHA_TPREL_LO16",
753  "BFD_RELOC_ALPHA_TPREL16",
754  "BFD_RELOC_MIPS_JMP",
755  "BFD_RELOC_MIPS16_JMP",
756  "BFD_RELOC_MIPS16_GPREL",
757  "BFD_RELOC_HI16",
758  "BFD_RELOC_HI16_S",
759  "BFD_RELOC_LO16",
760  "BFD_RELOC_PCREL_HI16_S",
761  "BFD_RELOC_PCREL_LO16",
762  "BFD_RELOC_MIPS_LITERAL",
763  "BFD_RELOC_MIPS_GOT16",
764  "BFD_RELOC_MIPS_CALL16",
765  "BFD_RELOC_MIPS_GOT_HI16",
766  "BFD_RELOC_MIPS_GOT_LO16",
767  "BFD_RELOC_MIPS_CALL_HI16",
768  "BFD_RELOC_MIPS_CALL_LO16",
769  "BFD_RELOC_MIPS_SUB",
770  "BFD_RELOC_MIPS_GOT_PAGE",
771  "BFD_RELOC_MIPS_GOT_OFST",
772  "BFD_RELOC_MIPS_GOT_DISP",
773  "BFD_RELOC_MIPS_SHIFT5",
774  "BFD_RELOC_MIPS_SHIFT6",
775  "BFD_RELOC_MIPS_INSERT_A",
776  "BFD_RELOC_MIPS_INSERT_B",
777  "BFD_RELOC_MIPS_DELETE",
778  "BFD_RELOC_MIPS_HIGHEST",
779  "BFD_RELOC_MIPS_HIGHER",
780  "BFD_RELOC_MIPS_SCN_DISP",
781  "BFD_RELOC_MIPS_REL16",
782  "BFD_RELOC_MIPS_RELGOT",
783  "BFD_RELOC_MIPS_JALR",
784  "BFD_RELOC_FRV_LABEL16",
785  "BFD_RELOC_FRV_LABEL24",
786  "BFD_RELOC_FRV_LO16",
787  "BFD_RELOC_FRV_HI16",
788  "BFD_RELOC_FRV_GPREL12",
789  "BFD_RELOC_FRV_GPRELU12",
790  "BFD_RELOC_FRV_GPREL32",
791  "BFD_RELOC_FRV_GPRELHI",
792  "BFD_RELOC_FRV_GPRELLO",
793
794  "BFD_RELOC_386_GOT32",
795  "BFD_RELOC_386_PLT32",
796  "BFD_RELOC_386_COPY",
797  "BFD_RELOC_386_GLOB_DAT",
798  "BFD_RELOC_386_JUMP_SLOT",
799  "BFD_RELOC_386_RELATIVE",
800  "BFD_RELOC_386_GOTOFF",
801  "BFD_RELOC_386_GOTPC",
802  "BFD_RELOC_386_TLS_TPOFF",
803  "BFD_RELOC_386_TLS_IE",
804  "BFD_RELOC_386_TLS_GOTIE",
805  "BFD_RELOC_386_TLS_LE",
806  "BFD_RELOC_386_TLS_GD",
807  "BFD_RELOC_386_TLS_LDM",
808  "BFD_RELOC_386_TLS_LDO_32",
809  "BFD_RELOC_386_TLS_IE_32",
810  "BFD_RELOC_386_TLS_LE_32",
811  "BFD_RELOC_386_TLS_DTPMOD32",
812  "BFD_RELOC_386_TLS_DTPOFF32",
813  "BFD_RELOC_386_TLS_TPOFF32",
814  "BFD_RELOC_X86_64_GOT32",
815  "BFD_RELOC_X86_64_PLT32",
816  "BFD_RELOC_X86_64_COPY",
817  "BFD_RELOC_X86_64_GLOB_DAT",
818  "BFD_RELOC_X86_64_JUMP_SLOT",
819  "BFD_RELOC_X86_64_RELATIVE",
820  "BFD_RELOC_X86_64_GOTPCREL",
821  "BFD_RELOC_X86_64_32S",
822  "BFD_RELOC_NS32K_IMM_8",
823  "BFD_RELOC_NS32K_IMM_16",
824  "BFD_RELOC_NS32K_IMM_32",
825  "BFD_RELOC_NS32K_IMM_8_PCREL",
826  "BFD_RELOC_NS32K_IMM_16_PCREL",
827  "BFD_RELOC_NS32K_IMM_32_PCREL",
828  "BFD_RELOC_NS32K_DISP_8",
829  "BFD_RELOC_NS32K_DISP_16",
830  "BFD_RELOC_NS32K_DISP_32",
831  "BFD_RELOC_NS32K_DISP_8_PCREL",
832  "BFD_RELOC_NS32K_DISP_16_PCREL",
833  "BFD_RELOC_NS32K_DISP_32_PCREL",
834  "BFD_RELOC_PDP11_DISP_8_PCREL",
835  "BFD_RELOC_PDP11_DISP_6_PCREL",
836  "BFD_RELOC_PJ_CODE_HI16",
837  "BFD_RELOC_PJ_CODE_LO16",
838  "BFD_RELOC_PJ_CODE_DIR16",
839  "BFD_RELOC_PJ_CODE_DIR32",
840  "BFD_RELOC_PJ_CODE_REL16",
841  "BFD_RELOC_PJ_CODE_REL32",
842  "BFD_RELOC_PPC_B26",
843  "BFD_RELOC_PPC_BA26",
844  "BFD_RELOC_PPC_TOC16",
845  "BFD_RELOC_PPC_B16",
846  "BFD_RELOC_PPC_B16_BRTAKEN",
847  "BFD_RELOC_PPC_B16_BRNTAKEN",
848  "BFD_RELOC_PPC_BA16",
849  "BFD_RELOC_PPC_BA16_BRTAKEN",
850  "BFD_RELOC_PPC_BA16_BRNTAKEN",
851  "BFD_RELOC_PPC_COPY",
852  "BFD_RELOC_PPC_GLOB_DAT",
853  "BFD_RELOC_PPC_JMP_SLOT",
854  "BFD_RELOC_PPC_RELATIVE",
855  "BFD_RELOC_PPC_LOCAL24PC",
856  "BFD_RELOC_PPC_EMB_NADDR32",
857  "BFD_RELOC_PPC_EMB_NADDR16",
858  "BFD_RELOC_PPC_EMB_NADDR16_LO",
859  "BFD_RELOC_PPC_EMB_NADDR16_HI",
860  "BFD_RELOC_PPC_EMB_NADDR16_HA",
861  "BFD_RELOC_PPC_EMB_SDAI16",
862  "BFD_RELOC_PPC_EMB_SDA2I16",
863  "BFD_RELOC_PPC_EMB_SDA2REL",
864  "BFD_RELOC_PPC_EMB_SDA21",
865  "BFD_RELOC_PPC_EMB_MRKREF",
866  "BFD_RELOC_PPC_EMB_RELSEC16",
867  "BFD_RELOC_PPC_EMB_RELST_LO",
868  "BFD_RELOC_PPC_EMB_RELST_HI",
869  "BFD_RELOC_PPC_EMB_RELST_HA",
870  "BFD_RELOC_PPC_EMB_BIT_FLD",
871  "BFD_RELOC_PPC_EMB_RELSDA",
872  "BFD_RELOC_PPC64_HIGHER",
873  "BFD_RELOC_PPC64_HIGHER_S",
874  "BFD_RELOC_PPC64_HIGHEST",
875  "BFD_RELOC_PPC64_HIGHEST_S",
876  "BFD_RELOC_PPC64_TOC16_LO",
877  "BFD_RELOC_PPC64_TOC16_HI",
878  "BFD_RELOC_PPC64_TOC16_HA",
879  "BFD_RELOC_PPC64_TOC",
880  "BFD_RELOC_PPC64_PLTGOT16",
881  "BFD_RELOC_PPC64_PLTGOT16_LO",
882  "BFD_RELOC_PPC64_PLTGOT16_HI",
883  "BFD_RELOC_PPC64_PLTGOT16_HA",
884  "BFD_RELOC_PPC64_ADDR16_DS",
885  "BFD_RELOC_PPC64_ADDR16_LO_DS",
886  "BFD_RELOC_PPC64_GOT16_DS",
887  "BFD_RELOC_PPC64_GOT16_LO_DS",
888  "BFD_RELOC_PPC64_PLT16_LO_DS",
889  "BFD_RELOC_PPC64_SECTOFF_DS",
890  "BFD_RELOC_PPC64_SECTOFF_LO_DS",
891  "BFD_RELOC_PPC64_TOC16_DS",
892  "BFD_RELOC_PPC64_TOC16_LO_DS",
893  "BFD_RELOC_PPC64_PLTGOT16_DS",
894  "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
895  "BFD_RELOC_I370_D12",
896  "BFD_RELOC_CTOR",
897  "BFD_RELOC_ARM_PCREL_BRANCH",
898  "BFD_RELOC_ARM_PCREL_BLX",
899  "BFD_RELOC_THUMB_PCREL_BLX",
900  "BFD_RELOC_ARM_IMMEDIATE",
901  "BFD_RELOC_ARM_ADRL_IMMEDIATE",
902  "BFD_RELOC_ARM_OFFSET_IMM",
903  "BFD_RELOC_ARM_SHIFT_IMM",
904  "BFD_RELOC_ARM_SWI",
905  "BFD_RELOC_ARM_MULTI",
906  "BFD_RELOC_ARM_CP_OFF_IMM",
907  "BFD_RELOC_ARM_ADR_IMM",
908  "BFD_RELOC_ARM_LDR_IMM",
909  "BFD_RELOC_ARM_LITERAL",
910  "BFD_RELOC_ARM_IN_POOL",
911  "BFD_RELOC_ARM_OFFSET_IMM8",
912  "BFD_RELOC_ARM_HWLITERAL",
913  "BFD_RELOC_ARM_THUMB_ADD",
914  "BFD_RELOC_ARM_THUMB_IMM",
915  "BFD_RELOC_ARM_THUMB_SHIFT",
916  "BFD_RELOC_ARM_THUMB_OFFSET",
917  "BFD_RELOC_ARM_GOT12",
918  "BFD_RELOC_ARM_GOT32",
919  "BFD_RELOC_ARM_JUMP_SLOT",
920  "BFD_RELOC_ARM_COPY",
921  "BFD_RELOC_ARM_GLOB_DAT",
922  "BFD_RELOC_ARM_PLT32",
923  "BFD_RELOC_ARM_RELATIVE",
924  "BFD_RELOC_ARM_GOTOFF",
925  "BFD_RELOC_ARM_GOTPC",
926  "BFD_RELOC_SH_PCDISP8BY2",
927  "BFD_RELOC_SH_PCDISP12BY2",
928  "BFD_RELOC_SH_IMM4",
929  "BFD_RELOC_SH_IMM4BY2",
930  "BFD_RELOC_SH_IMM4BY4",
931  "BFD_RELOC_SH_IMM8",
932  "BFD_RELOC_SH_IMM8BY2",
933  "BFD_RELOC_SH_IMM8BY4",
934  "BFD_RELOC_SH_PCRELIMM8BY2",
935  "BFD_RELOC_SH_PCRELIMM8BY4",
936  "BFD_RELOC_SH_SWITCH16",
937  "BFD_RELOC_SH_SWITCH32",
938  "BFD_RELOC_SH_USES",
939  "BFD_RELOC_SH_COUNT",
940  "BFD_RELOC_SH_ALIGN",
941  "BFD_RELOC_SH_CODE",
942  "BFD_RELOC_SH_DATA",
943  "BFD_RELOC_SH_LABEL",
944  "BFD_RELOC_SH_LOOP_START",
945  "BFD_RELOC_SH_LOOP_END",
946  "BFD_RELOC_SH_COPY",
947  "BFD_RELOC_SH_GLOB_DAT",
948  "BFD_RELOC_SH_JMP_SLOT",
949  "BFD_RELOC_SH_RELATIVE",
950  "BFD_RELOC_SH_GOTPC",
951  "BFD_RELOC_SH_GOT_LOW16",
952  "BFD_RELOC_SH_GOT_MEDLOW16",
953  "BFD_RELOC_SH_GOT_MEDHI16",
954  "BFD_RELOC_SH_GOT_HI16",
955  "BFD_RELOC_SH_GOTPLT_LOW16",
956  "BFD_RELOC_SH_GOTPLT_MEDLOW16",
957  "BFD_RELOC_SH_GOTPLT_MEDHI16",
958  "BFD_RELOC_SH_GOTPLT_HI16",
959  "BFD_RELOC_SH_PLT_LOW16",
960  "BFD_RELOC_SH_PLT_MEDLOW16",
961  "BFD_RELOC_SH_PLT_MEDHI16",
962  "BFD_RELOC_SH_PLT_HI16",
963  "BFD_RELOC_SH_GOTOFF_LOW16",
964  "BFD_RELOC_SH_GOTOFF_MEDLOW16",
965  "BFD_RELOC_SH_GOTOFF_MEDHI16",
966  "BFD_RELOC_SH_GOTOFF_HI16",
967  "BFD_RELOC_SH_GOTPC_LOW16",
968  "BFD_RELOC_SH_GOTPC_MEDLOW16",
969  "BFD_RELOC_SH_GOTPC_MEDHI16",
970  "BFD_RELOC_SH_GOTPC_HI16",
971  "BFD_RELOC_SH_COPY64",
972  "BFD_RELOC_SH_GLOB_DAT64",
973  "BFD_RELOC_SH_JMP_SLOT64",
974  "BFD_RELOC_SH_RELATIVE64",
975  "BFD_RELOC_SH_GOT10BY4",
976  "BFD_RELOC_SH_GOT10BY8",
977  "BFD_RELOC_SH_GOTPLT10BY4",
978  "BFD_RELOC_SH_GOTPLT10BY8",
979  "BFD_RELOC_SH_GOTPLT32",
980  "BFD_RELOC_SH_SHMEDIA_CODE",
981  "BFD_RELOC_SH_IMMU5",
982  "BFD_RELOC_SH_IMMS6",
983  "BFD_RELOC_SH_IMMS6BY32",
984  "BFD_RELOC_SH_IMMU6",
985  "BFD_RELOC_SH_IMMS10",
986  "BFD_RELOC_SH_IMMS10BY2",
987  "BFD_RELOC_SH_IMMS10BY4",
988  "BFD_RELOC_SH_IMMS10BY8",
989  "BFD_RELOC_SH_IMMS16",
990  "BFD_RELOC_SH_IMMU16",
991  "BFD_RELOC_SH_IMM_LOW16",
992  "BFD_RELOC_SH_IMM_LOW16_PCREL",
993  "BFD_RELOC_SH_IMM_MEDLOW16",
994  "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
995  "BFD_RELOC_SH_IMM_MEDHI16",
996  "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
997  "BFD_RELOC_SH_IMM_HI16",
998  "BFD_RELOC_SH_IMM_HI16_PCREL",
999  "BFD_RELOC_SH_PT_16",
1000  "BFD_RELOC_THUMB_PCREL_BRANCH9",
1001  "BFD_RELOC_THUMB_PCREL_BRANCH12",
1002  "BFD_RELOC_THUMB_PCREL_BRANCH23",
1003  "BFD_RELOC_ARC_B22_PCREL",
1004  "BFD_RELOC_ARC_B26",
1005  "BFD_RELOC_D10V_10_PCREL_R",
1006  "BFD_RELOC_D10V_10_PCREL_L",
1007  "BFD_RELOC_D10V_18",
1008  "BFD_RELOC_D10V_18_PCREL",
1009  "BFD_RELOC_D30V_6",
1010  "BFD_RELOC_D30V_9_PCREL",
1011  "BFD_RELOC_D30V_9_PCREL_R",
1012  "BFD_RELOC_D30V_15",
1013  "BFD_RELOC_D30V_15_PCREL",
1014  "BFD_RELOC_D30V_15_PCREL_R",
1015  "BFD_RELOC_D30V_21",
1016  "BFD_RELOC_D30V_21_PCREL",
1017  "BFD_RELOC_D30V_21_PCREL_R",
1018  "BFD_RELOC_D30V_32",
1019  "BFD_RELOC_D30V_32_PCREL",
1020  "BFD_RELOC_DLX_HI16_S",
1021  "BFD_RELOC_DLX_LO16",
1022  "BFD_RELOC_DLX_JMP26",
1023  "BFD_RELOC_M32R_24",
1024  "BFD_RELOC_M32R_10_PCREL",
1025  "BFD_RELOC_M32R_18_PCREL",
1026  "BFD_RELOC_M32R_26_PCREL",
1027  "BFD_RELOC_M32R_HI16_ULO",
1028  "BFD_RELOC_M32R_HI16_SLO",
1029  "BFD_RELOC_M32R_LO16",
1030  "BFD_RELOC_M32R_SDA16",
1031  "BFD_RELOC_V850_9_PCREL",
1032  "BFD_RELOC_V850_22_PCREL",
1033  "BFD_RELOC_V850_SDA_16_16_OFFSET",
1034  "BFD_RELOC_V850_SDA_15_16_OFFSET",
1035  "BFD_RELOC_V850_ZDA_16_16_OFFSET",
1036  "BFD_RELOC_V850_ZDA_15_16_OFFSET",
1037  "BFD_RELOC_V850_TDA_6_8_OFFSET",
1038  "BFD_RELOC_V850_TDA_7_8_OFFSET",
1039  "BFD_RELOC_V850_TDA_7_7_OFFSET",
1040  "BFD_RELOC_V850_TDA_16_16_OFFSET",
1041  "BFD_RELOC_V850_TDA_4_5_OFFSET",
1042  "BFD_RELOC_V850_TDA_4_4_OFFSET",
1043  "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
1044  "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
1045  "BFD_RELOC_V850_CALLT_6_7_OFFSET",
1046  "BFD_RELOC_V850_CALLT_16_16_OFFSET",
1047
1048  "BFD_RELOC_MN10300_32_PCREL",
1049  "BFD_RELOC_MN10300_16_PCREL",
1050  "BFD_RELOC_TIC30_LDP",
1051  "BFD_RELOC_TIC54X_PARTLS7",
1052  "BFD_RELOC_TIC54X_PARTMS9",
1053  "BFD_RELOC_TIC54X_23",
1054  "BFD_RELOC_TIC54X_16_OF_23",
1055  "BFD_RELOC_TIC54X_MS7_OF_23",
1056  "BFD_RELOC_FR30_48",
1057  "BFD_RELOC_FR30_20",
1058  "BFD_RELOC_FR30_6_IN_4",
1059  "BFD_RELOC_FR30_8_IN_8",
1060  "BFD_RELOC_FR30_9_IN_8",
1061  "BFD_RELOC_FR30_10_IN_8",
1062  "BFD_RELOC_FR30_9_PCREL",
1063  "BFD_RELOC_FR30_12_PCREL",
1064  "BFD_RELOC_MCORE_PCREL_IMM8BY4",
1065  "BFD_RELOC_MCORE_PCREL_IMM11BY2",
1066  "BFD_RELOC_MCORE_PCREL_IMM4BY2",
1067  "BFD_RELOC_MCORE_PCREL_32",
1068  "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
1069  "BFD_RELOC_MCORE_RVA",
1070  "BFD_RELOC_MMIX_GETA",
1071  "BFD_RELOC_MMIX_GETA_1",
1072  "BFD_RELOC_MMIX_GETA_2",
1073  "BFD_RELOC_MMIX_GETA_3",
1074  "BFD_RELOC_MMIX_CBRANCH",
1075  "BFD_RELOC_MMIX_CBRANCH_J",
1076  "BFD_RELOC_MMIX_CBRANCH_1",
1077  "BFD_RELOC_MMIX_CBRANCH_2",
1078  "BFD_RELOC_MMIX_CBRANCH_3",
1079  "BFD_RELOC_MMIX_PUSHJ",
1080  "BFD_RELOC_MMIX_PUSHJ_1",
1081  "BFD_RELOC_MMIX_PUSHJ_2",
1082  "BFD_RELOC_MMIX_PUSHJ_3",
1083  "BFD_RELOC_MMIX_JMP",
1084  "BFD_RELOC_MMIX_JMP_1",
1085  "BFD_RELOC_MMIX_JMP_2",
1086  "BFD_RELOC_MMIX_JMP_3",
1087  "BFD_RELOC_MMIX_ADDR19",
1088  "BFD_RELOC_MMIX_ADDR27",
1089  "BFD_RELOC_MMIX_REG_OR_BYTE",
1090  "BFD_RELOC_MMIX_REG",
1091  "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
1092  "BFD_RELOC_MMIX_LOCAL",
1093  "BFD_RELOC_AVR_7_PCREL",
1094  "BFD_RELOC_AVR_13_PCREL",
1095  "BFD_RELOC_AVR_16_PM",
1096  "BFD_RELOC_AVR_LO8_LDI",
1097  "BFD_RELOC_AVR_HI8_LDI",
1098  "BFD_RELOC_AVR_HH8_LDI",
1099  "BFD_RELOC_AVR_LO8_LDI_NEG",
1100  "BFD_RELOC_AVR_HI8_LDI_NEG",
1101  "BFD_RELOC_AVR_HH8_LDI_NEG",
1102  "BFD_RELOC_AVR_LO8_LDI_PM",
1103  "BFD_RELOC_AVR_HI8_LDI_PM",
1104  "BFD_RELOC_AVR_HH8_LDI_PM",
1105  "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
1106  "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
1107  "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
1108  "BFD_RELOC_AVR_CALL",
1109  "BFD_RELOC_390_12",
1110  "BFD_RELOC_390_GOT12",
1111  "BFD_RELOC_390_PLT32",
1112  "BFD_RELOC_390_COPY",
1113  "BFD_RELOC_390_GLOB_DAT",
1114  "BFD_RELOC_390_JMP_SLOT",
1115  "BFD_RELOC_390_RELATIVE",
1116  "BFD_RELOC_390_GOTPC",
1117  "BFD_RELOC_390_GOT16",
1118  "BFD_RELOC_390_PC16DBL",
1119  "BFD_RELOC_390_PLT16DBL",
1120  "BFD_RELOC_390_PC32DBL",
1121  "BFD_RELOC_390_PLT32DBL",
1122  "BFD_RELOC_390_GOTPCDBL",
1123  "BFD_RELOC_390_GOT64",
1124  "BFD_RELOC_390_PLT64",
1125  "BFD_RELOC_390_GOTENT",
1126  "BFD_RELOC_VTABLE_INHERIT",
1127  "BFD_RELOC_VTABLE_ENTRY",
1128  "BFD_RELOC_IA64_IMM14",
1129  "BFD_RELOC_IA64_IMM22",
1130  "BFD_RELOC_IA64_IMM64",
1131  "BFD_RELOC_IA64_DIR32MSB",
1132  "BFD_RELOC_IA64_DIR32LSB",
1133  "BFD_RELOC_IA64_DIR64MSB",
1134  "BFD_RELOC_IA64_DIR64LSB",
1135  "BFD_RELOC_IA64_GPREL22",
1136  "BFD_RELOC_IA64_GPREL64I",
1137  "BFD_RELOC_IA64_GPREL32MSB",
1138  "BFD_RELOC_IA64_GPREL32LSB",
1139  "BFD_RELOC_IA64_GPREL64MSB",
1140  "BFD_RELOC_IA64_GPREL64LSB",
1141  "BFD_RELOC_IA64_LTOFF22",
1142  "BFD_RELOC_IA64_LTOFF64I",
1143  "BFD_RELOC_IA64_PLTOFF22",
1144  "BFD_RELOC_IA64_PLTOFF64I",
1145  "BFD_RELOC_IA64_PLTOFF64MSB",
1146  "BFD_RELOC_IA64_PLTOFF64LSB",
1147  "BFD_RELOC_IA64_FPTR64I",
1148  "BFD_RELOC_IA64_FPTR32MSB",
1149  "BFD_RELOC_IA64_FPTR32LSB",
1150  "BFD_RELOC_IA64_FPTR64MSB",
1151  "BFD_RELOC_IA64_FPTR64LSB",
1152  "BFD_RELOC_IA64_PCREL21B",
1153  "BFD_RELOC_IA64_PCREL21BI",
1154  "BFD_RELOC_IA64_PCREL21M",
1155  "BFD_RELOC_IA64_PCREL21F",
1156  "BFD_RELOC_IA64_PCREL22",
1157  "BFD_RELOC_IA64_PCREL60B",
1158  "BFD_RELOC_IA64_PCREL64I",
1159  "BFD_RELOC_IA64_PCREL32MSB",
1160  "BFD_RELOC_IA64_PCREL32LSB",
1161  "BFD_RELOC_IA64_PCREL64MSB",
1162  "BFD_RELOC_IA64_PCREL64LSB",
1163  "BFD_RELOC_IA64_LTOFF_FPTR22",
1164  "BFD_RELOC_IA64_LTOFF_FPTR64I",
1165  "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
1166  "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
1167  "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
1168  "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
1169  "BFD_RELOC_IA64_SEGREL32MSB",
1170  "BFD_RELOC_IA64_SEGREL32LSB",
1171  "BFD_RELOC_IA64_SEGREL64MSB",
1172  "BFD_RELOC_IA64_SEGREL64LSB",
1173  "BFD_RELOC_IA64_SECREL32MSB",
1174  "BFD_RELOC_IA64_SECREL32LSB",
1175  "BFD_RELOC_IA64_SECREL64MSB",
1176  "BFD_RELOC_IA64_SECREL64LSB",
1177  "BFD_RELOC_IA64_REL32MSB",
1178  "BFD_RELOC_IA64_REL32LSB",
1179  "BFD_RELOC_IA64_REL64MSB",
1180  "BFD_RELOC_IA64_REL64LSB",
1181  "BFD_RELOC_IA64_LTV32MSB",
1182  "BFD_RELOC_IA64_LTV32LSB",
1183  "BFD_RELOC_IA64_LTV64MSB",
1184  "BFD_RELOC_IA64_LTV64LSB",
1185  "BFD_RELOC_IA64_IPLTMSB",
1186  "BFD_RELOC_IA64_IPLTLSB",
1187  "BFD_RELOC_IA64_COPY",
1188  "BFD_RELOC_IA64_LTOFF22X",
1189  "BFD_RELOC_IA64_LDXMOV",
1190  "BFD_RELOC_IA64_TPREL14",
1191  "BFD_RELOC_IA64_TPREL22",
1192  "BFD_RELOC_IA64_TPREL64I",
1193  "BFD_RELOC_IA64_TPREL64MSB",
1194  "BFD_RELOC_IA64_TPREL64LSB",
1195  "BFD_RELOC_IA64_LTOFF_TPREL22",
1196  "BFD_RELOC_IA64_DTPMOD64MSB",
1197  "BFD_RELOC_IA64_DTPMOD64LSB",
1198  "BFD_RELOC_IA64_LTOFF_DTPMOD22",
1199  "BFD_RELOC_IA64_DTPREL14",
1200  "BFD_RELOC_IA64_DTPREL22",
1201  "BFD_RELOC_IA64_DTPREL64I",
1202  "BFD_RELOC_IA64_DTPREL32MSB",
1203  "BFD_RELOC_IA64_DTPREL32LSB",
1204  "BFD_RELOC_IA64_DTPREL64MSB",
1205  "BFD_RELOC_IA64_DTPREL64LSB",
1206  "BFD_RELOC_IA64_LTOFF_DTPREL22",
1207  "BFD_RELOC_M68HC11_HI8",
1208  "BFD_RELOC_M68HC11_LO8",
1209  "BFD_RELOC_M68HC11_3B",
1210  "BFD_RELOC_CRIS_BDISP8",
1211  "BFD_RELOC_CRIS_UNSIGNED_5",
1212  "BFD_RELOC_CRIS_SIGNED_6",
1213  "BFD_RELOC_CRIS_UNSIGNED_6",
1214  "BFD_RELOC_CRIS_UNSIGNED_4",
1215  "BFD_RELOC_CRIS_COPY",
1216  "BFD_RELOC_CRIS_GLOB_DAT",
1217  "BFD_RELOC_CRIS_JUMP_SLOT",
1218  "BFD_RELOC_CRIS_RELATIVE",
1219  "BFD_RELOC_CRIS_32_GOT",
1220  "BFD_RELOC_CRIS_16_GOT",
1221  "BFD_RELOC_CRIS_32_GOTPLT",
1222  "BFD_RELOC_CRIS_16_GOTPLT",
1223  "BFD_RELOC_CRIS_32_GOTREL",
1224  "BFD_RELOC_CRIS_32_PLT_GOTREL",
1225  "BFD_RELOC_CRIS_32_PLT_PCREL",
1226  "BFD_RELOC_860_COPY",
1227  "BFD_RELOC_860_GLOB_DAT",
1228  "BFD_RELOC_860_JUMP_SLOT",
1229  "BFD_RELOC_860_RELATIVE",
1230  "BFD_RELOC_860_PC26",
1231  "BFD_RELOC_860_PLT26",
1232  "BFD_RELOC_860_PC16",
1233  "BFD_RELOC_860_LOW0",
1234  "BFD_RELOC_860_SPLIT0",
1235  "BFD_RELOC_860_LOW1",
1236  "BFD_RELOC_860_SPLIT1",
1237  "BFD_RELOC_860_LOW2",
1238  "BFD_RELOC_860_SPLIT2",
1239  "BFD_RELOC_860_LOW3",
1240  "BFD_RELOC_860_LOGOT0",
1241  "BFD_RELOC_860_SPGOT0",
1242  "BFD_RELOC_860_LOGOT1",
1243  "BFD_RELOC_860_SPGOT1",
1244  "BFD_RELOC_860_LOGOTOFF0",
1245  "BFD_RELOC_860_SPGOTOFF0",
1246  "BFD_RELOC_860_LOGOTOFF1",
1247  "BFD_RELOC_860_SPGOTOFF1",
1248  "BFD_RELOC_860_LOGOTOFF2",
1249  "BFD_RELOC_860_LOGOTOFF3",
1250  "BFD_RELOC_860_LOPC",
1251  "BFD_RELOC_860_HIGHADJ",
1252  "BFD_RELOC_860_HAGOT",
1253  "BFD_RELOC_860_HAGOTOFF",
1254  "BFD_RELOC_860_HAPC",
1255  "BFD_RELOC_860_HIGH",
1256  "BFD_RELOC_860_HIGOT",
1257  "BFD_RELOC_860_HIGOTOFF",
1258  "BFD_RELOC_OPENRISC_ABS_26",
1259  "BFD_RELOC_OPENRISC_REL_26",
1260  "BFD_RELOC_H8_DIR16A8",
1261  "BFD_RELOC_H8_DIR16R8",
1262  "BFD_RELOC_H8_DIR24A8",
1263  "BFD_RELOC_H8_DIR24R8",
1264  "BFD_RELOC_H8_DIR32A16",
1265  "BFD_RELOC_XSTORMY16_REL_12",
1266  "BFD_RELOC_XSTORMY16_24",
1267  "BFD_RELOC_XSTORMY16_FPTR16",
1268  "BFD_RELOC_VAX_GLOB_DAT",
1269  "BFD_RELOC_VAX_JMP_SLOT",
1270  "BFD_RELOC_VAX_RELATIVE",
1271 "@@overflow: BFD_RELOC_UNUSED@@",
1272};
1273#endif
1274
1275reloc_howto_type *
1276bfd_default_reloc_type_lookup PARAMS ((bfd *abfd, bfd_reloc_code_real_type  code));
1277
1278boolean
1279bfd_generic_relax_section PARAMS ((bfd *abfd,
1280    asection *section,
1281    struct bfd_link_info *,
1282    boolean *));
1283
1284boolean
1285bfd_generic_gc_sections PARAMS ((bfd *, struct bfd_link_info *));
1286
1287boolean
1288bfd_generic_merge_sections PARAMS ((bfd *, struct bfd_link_info *));
1289
1290bfd_byte *
1291bfd_generic_get_relocated_section_contents PARAMS ((bfd *abfd,
1292    struct bfd_link_info *link_info,
1293    struct bfd_link_order *link_order,
1294    bfd_byte *data,
1295    boolean relocateable,
1296    asymbol **symbols));
1297
1298/* Extracted from archures.c.  */
1299extern const bfd_arch_info_type bfd_default_arch_struct;
1300boolean
1301bfd_default_set_arch_mach PARAMS ((bfd *abfd,
1302    enum bfd_architecture arch,
1303    unsigned long mach));
1304
1305const bfd_arch_info_type *
1306bfd_default_compatible PARAMS ((const bfd_arch_info_type *a,
1307    const bfd_arch_info_type *b));
1308
1309boolean
1310bfd_default_scan PARAMS ((const struct bfd_arch_info *info, const char *string));
1311
1312/* Extracted from elf.c.  */
1313struct elf_internal_shdr *
1314bfd_elf_find_section PARAMS ((bfd *abfd, char *name));
1315
1316