[ bfd/ChangeLog ]
[platform/upstream/binutils.git] / bfd / libbfd.h
1 /* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
2    generated from "libbfd-in.h", "init.c", "libbfd.c", "bfdio.c", 
3    "bfdwin.c", "cache.c", "reloc.c", "archures.c" and "elf.c".
4    Run "make headers" in your build bfd/ to regenerate.  */
5
6 /* libbfd.h -- Declarations used by bfd library *implementation*.
7    (This include file is not for users of the library.)
8
9    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
10    1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
11
12    Written by Cygnus Support.
13
14 This file is part of BFD, the Binary File Descriptor library.
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 2 of the License, or
19 (at your option) any later version.
20
21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 GNU General Public License for more details.
25
26 You should have received a copy of the GNU General Public License
27 along with this program; if not, write to the Free Software
28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
29
30 /* Align an address upward to a boundary, expressed as a number of bytes.
31    E.g. align to an 8-byte boundary with argument of 8.  Take care never
32    to wrap around if the address is within boundary-1 of the end of the
33    address space.  */
34 #define BFD_ALIGN(this, boundary)                                         \
35   ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))              \
36    ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
37    : ~ (bfd_vma) 0)
38
39 /* If you want to read and write large blocks, you might want to do it
40    in quanta of this amount */
41 #define DEFAULT_BUFFERSIZE 8192
42
43 /* Set a tdata field.  Can't use the other macros for this, since they
44    do casts, and casting to the left of assignment isn't portable.  */
45 #define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
46
47 /* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
48    to an instance of this structure.  */
49
50 struct bfd_in_memory
51 {
52   /* Size of buffer.  */
53   bfd_size_type size;
54   /* Buffer holding contents of BFD.  */
55   bfd_byte *buffer;
56 };
57
58 /* tdata for an archive.  For an input archive, cache
59    needs to be free()'d.  For an output archive, symdefs do.  */
60
61 struct artdata {
62   file_ptr first_file_filepos;
63   /* Speed up searching the armap */
64   struct ar_cache *cache;
65   bfd *archive_head;            /* Only interesting in output routines */
66   carsym *symdefs;              /* the symdef entries */
67   symindex symdef_count;        /* how many there are */
68   char *extended_names;         /* clever intel extension */
69   /* when more compilers are standard C, this can be a time_t */
70   long  armap_timestamp;        /* Timestamp value written into armap.
71                                    This is used for BSD archives to check
72                                    that the timestamp is recent enough
73                                    for the BSD linker to not complain,
74                                    just before we finish writing an
75                                    archive.  */
76   file_ptr armap_datepos;       /* Position within archive to seek to
77                                    rewrite the date field.  */
78   void *tdata;                  /* Backend specific information.  */
79 };
80
81 #define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
82
83 /* Goes in bfd's arelt_data slot */
84 struct areltdata {
85   char * arch_header;           /* it's actually a string */
86   unsigned int parsed_size;     /* octets of filesize not including ar_hdr */
87   char *filename;               /* null-terminated */
88 };
89
90 #define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
91
92 extern void *bfd_malloc
93   (bfd_size_type);
94 extern void *bfd_realloc
95   (void *, bfd_size_type);
96 extern void *bfd_zmalloc
97   (bfd_size_type);
98
99 extern bfd_error_handler_type _bfd_error_handler;
100
101 /* These routines allocate and free things on the BFD's objalloc.  */
102
103 extern void *bfd_alloc
104   (bfd *, bfd_size_type);
105 extern void *bfd_zalloc
106   (bfd *, bfd_size_type);
107 extern void bfd_release
108   (bfd *, void *);
109
110 bfd * _bfd_create_empty_archive_element_shell
111   (bfd *obfd);
112 bfd * _bfd_look_for_bfd_in_cache
113   (bfd *, file_ptr);
114 bfd_boolean _bfd_add_bfd_to_archive_cache
115   (bfd *, file_ptr, bfd *);
116 bfd_boolean _bfd_generic_mkarchive
117   (bfd *abfd);
118 const bfd_target *bfd_generic_archive_p
119   (bfd *abfd);
120 bfd_boolean bfd_slurp_armap
121   (bfd *abfd);
122 bfd_boolean bfd_slurp_bsd_armap_f2
123   (bfd *abfd);
124 #define bfd_slurp_bsd_armap bfd_slurp_armap
125 #define bfd_slurp_coff_armap bfd_slurp_armap
126 bfd_boolean _bfd_slurp_extended_name_table
127   (bfd *abfd);
128 extern bfd_boolean _bfd_construct_extended_name_table
129   (bfd *, bfd_boolean, char **, bfd_size_type *);
130 bfd_boolean _bfd_write_archive_contents
131   (bfd *abfd);
132 bfd_boolean _bfd_compute_and_write_armap
133   (bfd *, unsigned int elength);
134 bfd *_bfd_get_elt_at_filepos
135   (bfd *archive, file_ptr filepos);
136 extern bfd *_bfd_generic_get_elt_at_index
137   (bfd *, symindex);
138 bfd * _bfd_new_bfd
139   (void);
140 void _bfd_delete_bfd
141   (bfd *);
142
143 bfd_boolean bfd_false
144   (bfd *ignore);
145 bfd_boolean bfd_true
146   (bfd *ignore);
147 void *bfd_nullvoidptr
148   (bfd *ignore);
149 int bfd_0
150   (bfd *ignore);
151 unsigned int bfd_0u
152   (bfd *ignore);
153 long bfd_0l
154   (bfd *ignore);
155 long _bfd_n1
156   (bfd *ignore);
157 void bfd_void
158   (bfd *ignore);
159
160 bfd *_bfd_new_bfd_contained_in
161   (bfd *);
162 const bfd_target *_bfd_dummy_target
163   (bfd *abfd);
164
165 void bfd_dont_truncate_arname
166   (bfd *abfd, const char *filename, char *hdr);
167 void bfd_bsd_truncate_arname
168   (bfd *abfd, const char *filename, char *hdr);
169 void bfd_gnu_truncate_arname
170   (bfd *abfd, const char *filename, char *hdr);
171
172 bfd_boolean bsd_write_armap
173   (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
174    int stridx);
175
176 bfd_boolean coff_write_armap
177   (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
178    int stridx);
179
180 extern void *_bfd_generic_read_ar_hdr
181   (bfd *);
182
183 extern void *_bfd_generic_read_ar_hdr_mag
184   (bfd *, const char *);
185
186 bfd * bfd_generic_openr_next_archived_file
187   (bfd *archive, bfd *last_file);
188
189 int bfd_generic_stat_arch_elt
190   (bfd *, struct stat *);
191
192 #define _bfd_read_ar_hdr(abfd) \
193   BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
194 \f
195 /* Generic routines to use for BFD_JUMP_TABLE_GENERIC.  Use
196    BFD_JUMP_TABLE_GENERIC (_bfd_generic).  */
197
198 #define _bfd_generic_close_and_cleanup bfd_true
199 #define _bfd_generic_bfd_free_cached_info bfd_true
200 #define _bfd_generic_new_section_hook \
201   ((bfd_boolean (*) (bfd *, asection *)) bfd_true)
202 extern bfd_boolean _bfd_generic_get_section_contents
203   (bfd *, asection *, void *, file_ptr, bfd_size_type);
204 extern bfd_boolean _bfd_generic_get_section_contents_in_window
205   (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type);
206
207 /* Generic routines to use for BFD_JUMP_TABLE_COPY.  Use
208    BFD_JUMP_TABLE_COPY (_bfd_generic).  */
209
210 #define _bfd_generic_bfd_copy_private_bfd_data \
211   ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
212 #define _bfd_generic_bfd_merge_private_bfd_data \
213   ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
214 #define _bfd_generic_bfd_set_private_flags \
215   ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
216 #define _bfd_generic_bfd_copy_private_section_data \
217   ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true)
218 #define _bfd_generic_bfd_copy_private_symbol_data \
219   ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true)
220 #define _bfd_generic_bfd_print_private_bfd_data \
221   ((bfd_boolean (*) (bfd *, void *)) bfd_true)
222
223 /* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
224    support.  Use BFD_JUMP_TABLE_CORE (_bfd_nocore).  */
225
226 extern char *_bfd_nocore_core_file_failing_command
227   (bfd *);
228 extern int _bfd_nocore_core_file_failing_signal
229   (bfd *);
230 extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
231   (bfd *, bfd *);
232
233 /* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
234    file support.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive).  */
235
236 #define _bfd_noarchive_slurp_armap bfd_false
237 #define _bfd_noarchive_slurp_extended_name_table bfd_false
238 #define _bfd_noarchive_construct_extended_name_table \
239   ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) \
240    bfd_false)
241 #define _bfd_noarchive_truncate_arname \
242   ((void (*) (bfd *, const char *, char *)) bfd_void)
243 #define _bfd_noarchive_write_armap \
244   ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \
245    bfd_false)
246 #define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
247 #define _bfd_noarchive_openr_next_archived_file \
248   ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr)
249 #define _bfd_noarchive_get_elt_at_index \
250   ((bfd *(*) (bfd *, symindex)) bfd_nullvoidptr)
251 #define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
252 #define _bfd_noarchive_update_armap_timestamp bfd_false
253
254 /* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
255    archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd).  */
256
257 #define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
258 #define _bfd_archive_bsd_slurp_extended_name_table \
259   _bfd_slurp_extended_name_table
260 extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
261   (bfd *, char **, bfd_size_type *, const char **);
262 #define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
263 #define _bfd_archive_bsd_write_armap bsd_write_armap
264 #define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
265 #define _bfd_archive_bsd_openr_next_archived_file \
266   bfd_generic_openr_next_archived_file
267 #define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
268 #define _bfd_archive_bsd_generic_stat_arch_elt \
269   bfd_generic_stat_arch_elt
270 extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
271   (bfd *);
272
273 /* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
274    archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff).  */
275
276 #define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
277 #define _bfd_archive_coff_slurp_extended_name_table \
278   _bfd_slurp_extended_name_table
279 extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
280   (bfd *, char **, bfd_size_type *, const char **);
281 #define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
282 #define _bfd_archive_coff_write_armap coff_write_armap
283 #define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
284 #define _bfd_archive_coff_openr_next_archived_file \
285   bfd_generic_openr_next_archived_file
286 #define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
287 #define _bfd_archive_coff_generic_stat_arch_elt \
288   bfd_generic_stat_arch_elt
289 #define _bfd_archive_coff_update_armap_timestamp bfd_true
290
291 /* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
292    support.  Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).  */
293
294 #define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
295 #define _bfd_nosymbols_canonicalize_symtab \
296   ((long (*) (bfd *, asymbol **)) _bfd_n1)
297 #define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
298 #define _bfd_nosymbols_print_symbol \
299   ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
300 #define _bfd_nosymbols_get_symbol_info \
301   ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
302 #define _bfd_nosymbols_bfd_is_local_label_name \
303   ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
304 #define _bfd_nosymbols_get_lineno \
305   ((alent *(*) (bfd *, asymbol *)) bfd_nullvoidptr)
306 #define _bfd_nosymbols_find_nearest_line \
307   ((bfd_boolean (*) (bfd *, asection *, asymbol **, bfd_vma, const char **, \
308                      const char **, unsigned int *)) \
309    bfd_false)
310 #define _bfd_nosymbols_bfd_make_debug_symbol \
311   ((asymbol *(*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
312 #define _bfd_nosymbols_read_minisymbols \
313   ((long (*) (bfd *, bfd_boolean, void **, unsigned int *)) _bfd_n1)
314 #define _bfd_nosymbols_minisymbol_to_symbol \
315   ((asymbol *(*) (bfd *, bfd_boolean, const void *, asymbol *)) \
316    bfd_nullvoidptr)
317
318 /* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
319    support.  Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs).  */
320
321 #define _bfd_norelocs_get_reloc_upper_bound \
322   ((long (*) (bfd *, asection *)) _bfd_n1)
323 #define _bfd_norelocs_canonicalize_reloc \
324   ((long (*) (bfd *, asection *, arelent **, asymbol **)) _bfd_n1)
325 #define _bfd_norelocs_bfd_reloc_type_lookup \
326   ((reloc_howto_type *(*) (bfd *, bfd_reloc_code_real_type)) bfd_nullvoidptr)
327
328 /* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
329    be written.  Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite).  */
330
331 #define _bfd_nowrite_set_arch_mach \
332   ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \
333    bfd_false)
334 #define _bfd_nowrite_set_section_contents \
335   ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \
336    bfd_false)
337
338 /* Generic routines to use for BFD_JUMP_TABLE_WRITE.  Use
339    BFD_JUMP_TABLE_WRITE (_bfd_generic).  */
340
341 #define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
342 extern bfd_boolean _bfd_generic_set_section_contents
343   (bfd *, asection *, const void *, file_ptr, bfd_size_type);
344
345 /* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
346    support linking.  Use BFD_JUMP_TABLE_LINK (_bfd_nolink).  */
347
348 #define _bfd_nolink_sizeof_headers ((int (*) (bfd *, bfd_boolean)) bfd_0)
349 #define _bfd_nolink_bfd_get_relocated_section_contents \
350   ((bfd_byte *(*) (bfd *, struct bfd_link_info *, struct bfd_link_order *, \
351                    bfd_byte *, bfd_boolean, asymbol **)) \
352    bfd_nullvoidptr)
353 #define _bfd_nolink_bfd_relax_section \
354   ((bfd_boolean (*) \
355     (bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
356    bfd_false)
357 #define _bfd_nolink_bfd_gc_sections \
358   ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
359    bfd_false)
360 #define _bfd_nolink_bfd_merge_sections \
361   ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
362    bfd_false)
363 #define _bfd_nolink_bfd_discard_group \
364   ((bfd_boolean (*) (bfd *, struct bfd_section *)) \
365    bfd_false)
366 #define _bfd_nolink_bfd_link_hash_table_create \
367   ((struct bfd_link_hash_table *(*) (bfd *)) bfd_nullvoidptr)
368 #define _bfd_nolink_bfd_link_hash_table_free \
369   ((void (*) (struct bfd_link_hash_table *)) bfd_void)
370 #define _bfd_nolink_bfd_link_add_symbols \
371   ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
372 #define _bfd_nolink_bfd_link_just_syms \
373   ((void (*) (asection *, struct bfd_link_info *)) bfd_void)
374 #define _bfd_nolink_bfd_final_link \
375   ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
376 #define _bfd_nolink_bfd_link_split_section \
377   ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
378
379 /* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
380    have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
381    (_bfd_nodynamic).  */
382
383 #define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
384 #define _bfd_nodynamic_canonicalize_dynamic_symtab \
385   ((long (*) (bfd *, asymbol **)) _bfd_n1)
386 #define _bfd_nodynamic_get_synthetic_symtab \
387   ((long (*) (bfd *, asymbol **, asymbol **)) _bfd_n1)
388 #define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
389 #define _bfd_nodynamic_canonicalize_dynamic_reloc \
390   ((long (*) (bfd *, arelent **, asymbol **)) _bfd_n1)
391 \f
392 /* Generic routine to determine of the given symbol is a local
393    label.  */
394 extern bfd_boolean bfd_generic_is_local_label_name
395   (bfd *, const char *);
396
397 /* Generic minisymbol routines.  */
398 extern long _bfd_generic_read_minisymbols
399   (bfd *, bfd_boolean, void **, unsigned int *);
400 extern asymbol *_bfd_generic_minisymbol_to_symbol
401   (bfd *, bfd_boolean, const void *, asymbol *);
402
403 /* Find the nearest line using .stab/.stabstr sections.  */
404 extern bfd_boolean _bfd_stab_section_find_nearest_line
405   (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
406    const char **, const char **, unsigned int *, void **);
407
408 /* Find the neaderst line using DWARF 1 debugging information.  */
409 extern bfd_boolean _bfd_dwarf1_find_nearest_line
410   (bfd *, asection *, asymbol **, bfd_vma, const char **,
411    const char **, unsigned int *);
412
413 /* Find the nearest line using DWARF 2 debugging information.  */
414 extern bfd_boolean _bfd_dwarf2_find_nearest_line
415   (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
416    unsigned int *, unsigned int, void **);
417
418 /* Create a new section entry.  */
419 extern struct bfd_hash_entry *bfd_section_hash_newfunc
420   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
421
422 /* A routine to create entries for a bfd_link_hash_table.  */
423 extern struct bfd_hash_entry *_bfd_link_hash_newfunc
424   (struct bfd_hash_entry *entry, struct bfd_hash_table *table,
425    const char *string);
426
427 /* Initialize a bfd_link_hash_table.  */
428 extern bfd_boolean _bfd_link_hash_table_init
429   (struct bfd_link_hash_table *, bfd *,
430    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
431                                struct bfd_hash_table *,
432                                const char *));
433
434 /* Generic link hash table creation routine.  */
435 extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
436   (bfd *);
437
438 /* Generic link hash table destruction routine.  */
439 extern void _bfd_generic_link_hash_table_free
440   (struct bfd_link_hash_table *);
441
442 /* Generic add symbol routine.  */
443 extern bfd_boolean _bfd_generic_link_add_symbols
444   (bfd *, struct bfd_link_info *);
445
446 /* Generic add symbol routine.  This version is used by targets for
447    which the linker must collect constructors and destructors by name,
448    as the collect2 program does.  */
449 extern bfd_boolean _bfd_generic_link_add_symbols_collect
450   (bfd *, struct bfd_link_info *);
451
452 /* Generic archive add symbol routine.  */
453 extern bfd_boolean _bfd_generic_link_add_archive_symbols
454   (bfd *, struct bfd_link_info *,
455    bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
456
457 /* Forward declaration to avoid prototype errors.  */
458 typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
459
460 /* Generic routine to add a single symbol.  */
461 extern bfd_boolean _bfd_generic_link_add_one_symbol
462   (struct bfd_link_info *, bfd *, const char *name, flagword,
463    asection *, bfd_vma, const char *, bfd_boolean copy,
464    bfd_boolean constructor, struct bfd_link_hash_entry **);
465
466 /* Generic routine to mark section as supplying symbols only.  */
467 extern void _bfd_generic_link_just_syms
468   (asection *, struct bfd_link_info *);
469
470 /* Generic link routine.  */
471 extern bfd_boolean _bfd_generic_final_link
472   (bfd *, struct bfd_link_info *);
473
474 extern bfd_boolean _bfd_generic_link_split_section
475   (bfd *, struct bfd_section *);
476
477 /* Generic reloc_link_order processing routine.  */
478 extern bfd_boolean _bfd_generic_reloc_link_order
479   (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
480
481 /* Default link order processing routine.  */
482 extern bfd_boolean _bfd_default_link_order
483   (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
484
485 /* Count the number of reloc entries in a link order list.  */
486 extern unsigned int _bfd_count_link_order_relocs
487   (struct bfd_link_order *);
488
489 /* Final link relocation routine.  */
490 extern bfd_reloc_status_type _bfd_final_link_relocate
491   (reloc_howto_type *, bfd *, asection *, bfd_byte *,
492    bfd_vma, bfd_vma, bfd_vma);
493
494 /* Relocate a particular location by a howto and a value.  */
495 extern bfd_reloc_status_type _bfd_relocate_contents
496   (reloc_howto_type *, bfd *, bfd_vma, bfd_byte *);
497
498 /* Link stabs in sections in the first pass.  */
499
500 extern bfd_boolean _bfd_link_section_stabs
501   (bfd *, void **, asection *, asection *, void **, bfd_size_type *);
502
503 /* Eliminate stabs for discarded functions and symbols.  */
504 extern bfd_boolean _bfd_discard_section_stabs
505   (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *);
506
507 /* Write out the .stab section when linking stabs in sections.  */
508
509 extern bfd_boolean _bfd_write_section_stabs
510   (bfd *, void **, asection *, void **, bfd_byte *);
511
512 /* Write out the .stabstr string table when linking stabs in sections.  */
513
514 extern bfd_boolean _bfd_write_stab_strings
515   (bfd *, void **);
516
517 /* Find an offset within a .stab section when linking stabs in
518    sections.  */
519
520 extern bfd_vma _bfd_stab_section_offset
521   (bfd *, void **, asection *, void **, bfd_vma);
522
523 /* Attempt to merge a SEC_MERGE section.  */
524
525 extern bfd_boolean _bfd_merge_section
526   (bfd *, void **, asection *, void **);
527
528 /* Attempt to merge SEC_MERGE sections.  */
529
530 extern bfd_boolean _bfd_merge_sections
531   (bfd *, void *, void (*) (bfd *, asection *));
532
533 /* Write out a merged section.  */
534
535 extern bfd_boolean _bfd_write_merged_section
536   (bfd *, asection *, void *);
537
538 /* Find an offset within a modified SEC_MERGE section.  */
539
540 extern bfd_vma _bfd_merged_section_offset
541   (bfd *, asection **, void *, bfd_vma, bfd_vma);
542
543 /* Create a string table.  */
544 extern struct bfd_strtab_hash *_bfd_stringtab_init
545   (void);
546
547 /* Create an XCOFF .debug section style string table.  */
548 extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
549   (void);
550
551 /* Free a string table.  */
552 extern void _bfd_stringtab_free
553   (struct bfd_strtab_hash *);
554
555 /* Get the size of a string table.  */
556 extern bfd_size_type _bfd_stringtab_size
557   (struct bfd_strtab_hash *);
558
559 /* Add a string to a string table.  */
560 extern bfd_size_type _bfd_stringtab_add
561   (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy);
562
563 /* Write out a string table.  */
564 extern bfd_boolean _bfd_stringtab_emit
565   (bfd *, struct bfd_strtab_hash *);
566
567 /* Check that endianness of input and output file match.  */
568 extern bfd_boolean _bfd_generic_verify_endian_match
569   (bfd *, bfd *);
570 \f
571 /* Macros to tell if bfds are read or write enabled.
572
573    Note that bfds open for read may be scribbled into if the fd passed
574    to bfd_fdopenr is actually open both for read and write
575    simultaneously.  However an output bfd will never be open for
576    read.  Therefore sometimes you want to check bfd_read_p or
577    !bfd_read_p, and only sometimes bfd_write_p.
578 */
579
580 #define bfd_read_p(abfd) \
581   ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
582 #define bfd_write_p(abfd) \
583   ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
584
585 void bfd_assert
586   (const char*,int);
587
588 #define BFD_ASSERT(x) \
589   { if (!(x)) bfd_assert(__FILE__,__LINE__); }
590
591 #define BFD_FAIL() \
592   { bfd_assert(__FILE__,__LINE__); }
593
594 extern void _bfd_abort
595   (const char *, int, const char *) ATTRIBUTE_NORETURN;
596
597 /* if gcc >= 2.6, we can give a function name, too */
598 #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
599 #define __PRETTY_FUNCTION__  ((char *) NULL)
600 #endif
601
602 #undef abort
603 #define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
604
605 /* Manipulate a system FILE but using BFD's "file_ptr", rather than
606    the system "off_t" or "off64_t", as the offset.  */
607 extern file_ptr real_ftell (FILE *file);
608 extern int real_fseek (FILE *file, file_ptr offset, int whence);
609
610 FILE *  bfd_cache_lookup_worker
611   (bfd *);
612
613 extern bfd *bfd_last_cache;
614
615 /* List of supported target vectors, and the default vector (if
616    bfd_default_vector[0] is NULL, there is no default).  */
617 extern const bfd_target * const *bfd_target_vector;
618 extern const bfd_target *bfd_default_vector[];
619
620 /* List of associated target vectors.  */
621 extern const bfd_target * const *bfd_associated_vector;
622
623 /* Functions shared by the ECOFF and MIPS ELF backends, which have no
624    other common header files.  */
625
626 #if defined(__STDC__) || defined(ALMOST_STDC)
627 struct ecoff_find_line;
628 #endif
629
630 extern bfd_boolean _bfd_ecoff_locate_line
631   (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
632    const struct ecoff_debug_swap * const, struct ecoff_find_line *,
633    const char **, const char **, unsigned int *);
634 extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
635   (void *, bfd_byte *);
636 extern bfd_boolean _bfd_ecoff_get_accumulated_sym
637   (void *, bfd_byte *);
638 extern bfd_boolean _bfd_ecoff_get_accumulated_ss
639   (void *, bfd_byte *);
640
641 extern bfd_vma _bfd_get_gp_value
642   (bfd *);
643 extern void _bfd_set_gp_value
644   (bfd *, bfd_vma);
645
646 /* Function shared by the COFF and ELF SH backends, which have no
647    other common header files.  */
648
649 #ifndef _bfd_sh_align_load_span
650 extern bfd_boolean _bfd_sh_align_load_span
651   (bfd *, asection *, bfd_byte *,
652    bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
653    void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *);
654 #endif
655 /* Extracted from init.c.  */
656 /* Extracted from libbfd.c.  */
657 bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
658
659 unsigned int bfd_log2 (bfd_vma x);
660
661 /* Extracted from bfdio.c.  */
662 struct bfd_iovec
663 {
664   /* To avoid problems with macros, a "b" rather than "f"
665      prefix is prepended to each method name.  */
666   /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
667      bytes starting at PTR.  Return the number of bytes actually
668      transfered (a read past end-of-file returns less than NBYTES),
669      or -1 (setting <<bfd_error>>) if an error occurs.  */
670   file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
671   file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
672                       file_ptr nbytes);
673   /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
674      if an error occurs.  */
675   file_ptr (*btell) (struct bfd *abfd);
676   /* For the following, on successful completion a value of 0 is returned.
677      Otherwise, a value of -1 is returned (and  <<bfd_error>> is set).  */
678   int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
679   int (*bclose) (struct bfd *abfd);
680   int (*bflush) (struct bfd *abfd);
681   int (*bstat) (struct bfd *abfd, struct stat *sb);
682 };
683 /* Extracted from bfdwin.c.  */
684 struct _bfd_window_internal {
685   struct _bfd_window_internal *next;
686   void *data;
687   bfd_size_type size;
688   int refcount : 31;           /* should be enough...  */
689   unsigned mapped : 1;         /* 1 = mmap, 0 = malloc */
690 };
691 /* Extracted from cache.c.  */
692 #define BFD_CACHE_MAX_OPEN 10
693 extern bfd *bfd_last_cache;
694
695 #define bfd_cache_lookup(x) \
696     ((x)==bfd_last_cache? \
697       (FILE*) (bfd_last_cache->iostream): \
698        bfd_cache_lookup_worker(x))
699 bfd_boolean bfd_cache_init (bfd *abfd);
700
701 bfd_boolean bfd_cache_close (bfd *abfd);
702
703 FILE* bfd_open_file (bfd *abfd);
704
705 FILE *bfd_cache_lookup_worker (bfd *abfd);
706
707 /* Extracted from reloc.c.  */
708 #ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
709
710 static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
711
712   "BFD_RELOC_64",
713   "BFD_RELOC_32",
714   "BFD_RELOC_26",
715   "BFD_RELOC_24",
716   "BFD_RELOC_16",
717   "BFD_RELOC_14",
718   "BFD_RELOC_8",
719   "BFD_RELOC_64_PCREL",
720   "BFD_RELOC_32_PCREL",
721   "BFD_RELOC_24_PCREL",
722   "BFD_RELOC_16_PCREL",
723   "BFD_RELOC_12_PCREL",
724   "BFD_RELOC_8_PCREL",
725   "BFD_RELOC_32_SECREL",
726   "BFD_RELOC_32_GOT_PCREL",
727   "BFD_RELOC_16_GOT_PCREL",
728   "BFD_RELOC_8_GOT_PCREL",
729   "BFD_RELOC_32_GOTOFF",
730   "BFD_RELOC_16_GOTOFF",
731   "BFD_RELOC_LO16_GOTOFF",
732   "BFD_RELOC_HI16_GOTOFF",
733   "BFD_RELOC_HI16_S_GOTOFF",
734   "BFD_RELOC_8_GOTOFF",
735   "BFD_RELOC_64_PLT_PCREL",
736   "BFD_RELOC_32_PLT_PCREL",
737   "BFD_RELOC_24_PLT_PCREL",
738   "BFD_RELOC_16_PLT_PCREL",
739   "BFD_RELOC_8_PLT_PCREL",
740   "BFD_RELOC_64_PLTOFF",
741   "BFD_RELOC_32_PLTOFF",
742   "BFD_RELOC_16_PLTOFF",
743   "BFD_RELOC_LO16_PLTOFF",
744   "BFD_RELOC_HI16_PLTOFF",
745   "BFD_RELOC_HI16_S_PLTOFF",
746   "BFD_RELOC_8_PLTOFF",
747   "BFD_RELOC_68K_GLOB_DAT",
748   "BFD_RELOC_68K_JMP_SLOT",
749   "BFD_RELOC_68K_RELATIVE",
750   "BFD_RELOC_32_BASEREL",
751   "BFD_RELOC_16_BASEREL",
752   "BFD_RELOC_LO16_BASEREL",
753   "BFD_RELOC_HI16_BASEREL",
754   "BFD_RELOC_HI16_S_BASEREL",
755   "BFD_RELOC_8_BASEREL",
756   "BFD_RELOC_RVA",
757   "BFD_RELOC_8_FFnn",
758   "BFD_RELOC_32_PCREL_S2",
759   "BFD_RELOC_16_PCREL_S2",
760   "BFD_RELOC_23_PCREL_S2",
761   "BFD_RELOC_HI22",
762   "BFD_RELOC_LO10",
763   "BFD_RELOC_GPREL16",
764   "BFD_RELOC_GPREL32",
765   "BFD_RELOC_I960_CALLJ",
766   "BFD_RELOC_NONE",
767   "BFD_RELOC_SPARC_WDISP22",
768   "BFD_RELOC_SPARC22",
769   "BFD_RELOC_SPARC13",
770   "BFD_RELOC_SPARC_GOT10",
771   "BFD_RELOC_SPARC_GOT13",
772   "BFD_RELOC_SPARC_GOT22",
773   "BFD_RELOC_SPARC_PC10",
774   "BFD_RELOC_SPARC_PC22",
775   "BFD_RELOC_SPARC_WPLT30",
776   "BFD_RELOC_SPARC_COPY",
777   "BFD_RELOC_SPARC_GLOB_DAT",
778   "BFD_RELOC_SPARC_JMP_SLOT",
779   "BFD_RELOC_SPARC_RELATIVE",
780   "BFD_RELOC_SPARC_UA16",
781   "BFD_RELOC_SPARC_UA32",
782   "BFD_RELOC_SPARC_UA64",
783   "BFD_RELOC_SPARC_BASE13",
784   "BFD_RELOC_SPARC_BASE22",
785   "BFD_RELOC_SPARC_10",
786   "BFD_RELOC_SPARC_11",
787   "BFD_RELOC_SPARC_OLO10",
788   "BFD_RELOC_SPARC_HH22",
789   "BFD_RELOC_SPARC_HM10",
790   "BFD_RELOC_SPARC_LM22",
791   "BFD_RELOC_SPARC_PC_HH22",
792   "BFD_RELOC_SPARC_PC_HM10",
793   "BFD_RELOC_SPARC_PC_LM22",
794   "BFD_RELOC_SPARC_WDISP16",
795   "BFD_RELOC_SPARC_WDISP19",
796   "BFD_RELOC_SPARC_7",
797   "BFD_RELOC_SPARC_6",
798   "BFD_RELOC_SPARC_5",
799   "BFD_RELOC_SPARC_PLT32",
800   "BFD_RELOC_SPARC_PLT64",
801   "BFD_RELOC_SPARC_HIX22",
802   "BFD_RELOC_SPARC_LOX10",
803   "BFD_RELOC_SPARC_H44",
804   "BFD_RELOC_SPARC_M44",
805   "BFD_RELOC_SPARC_L44",
806   "BFD_RELOC_SPARC_REGISTER",
807   "BFD_RELOC_SPARC_REV32",
808   "BFD_RELOC_SPARC_TLS_GD_HI22",
809   "BFD_RELOC_SPARC_TLS_GD_LO10",
810   "BFD_RELOC_SPARC_TLS_GD_ADD",
811   "BFD_RELOC_SPARC_TLS_GD_CALL",
812   "BFD_RELOC_SPARC_TLS_LDM_HI22",
813   "BFD_RELOC_SPARC_TLS_LDM_LO10",
814   "BFD_RELOC_SPARC_TLS_LDM_ADD",
815   "BFD_RELOC_SPARC_TLS_LDM_CALL",
816   "BFD_RELOC_SPARC_TLS_LDO_HIX22",
817   "BFD_RELOC_SPARC_TLS_LDO_LOX10",
818   "BFD_RELOC_SPARC_TLS_LDO_ADD",
819   "BFD_RELOC_SPARC_TLS_IE_HI22",
820   "BFD_RELOC_SPARC_TLS_IE_LO10",
821   "BFD_RELOC_SPARC_TLS_IE_LD",
822   "BFD_RELOC_SPARC_TLS_IE_LDX",
823   "BFD_RELOC_SPARC_TLS_IE_ADD",
824   "BFD_RELOC_SPARC_TLS_LE_HIX22",
825   "BFD_RELOC_SPARC_TLS_LE_LOX10",
826   "BFD_RELOC_SPARC_TLS_DTPMOD32",
827   "BFD_RELOC_SPARC_TLS_DTPMOD64",
828   "BFD_RELOC_SPARC_TLS_DTPOFF32",
829   "BFD_RELOC_SPARC_TLS_DTPOFF64",
830   "BFD_RELOC_SPARC_TLS_TPOFF32",
831   "BFD_RELOC_SPARC_TLS_TPOFF64",
832   "BFD_RELOC_ALPHA_GPDISP_HI16",
833   "BFD_RELOC_ALPHA_GPDISP_LO16",
834   "BFD_RELOC_ALPHA_GPDISP",
835   "BFD_RELOC_ALPHA_LITERAL",
836   "BFD_RELOC_ALPHA_ELF_LITERAL",
837   "BFD_RELOC_ALPHA_LITUSE",
838   "BFD_RELOC_ALPHA_HINT",
839   "BFD_RELOC_ALPHA_LINKAGE",
840   "BFD_RELOC_ALPHA_CODEADDR",
841   "BFD_RELOC_ALPHA_GPREL_HI16",
842   "BFD_RELOC_ALPHA_GPREL_LO16",
843   "BFD_RELOC_ALPHA_BRSGP",
844   "BFD_RELOC_ALPHA_TLSGD",
845   "BFD_RELOC_ALPHA_TLSLDM",
846   "BFD_RELOC_ALPHA_DTPMOD64",
847   "BFD_RELOC_ALPHA_GOTDTPREL16",
848   "BFD_RELOC_ALPHA_DTPREL64",
849   "BFD_RELOC_ALPHA_DTPREL_HI16",
850   "BFD_RELOC_ALPHA_DTPREL_LO16",
851   "BFD_RELOC_ALPHA_DTPREL16",
852   "BFD_RELOC_ALPHA_GOTTPREL16",
853   "BFD_RELOC_ALPHA_TPREL64",
854   "BFD_RELOC_ALPHA_TPREL_HI16",
855   "BFD_RELOC_ALPHA_TPREL_LO16",
856   "BFD_RELOC_ALPHA_TPREL16",
857   "BFD_RELOC_MIPS_JMP",
858   "BFD_RELOC_MIPS16_JMP",
859   "BFD_RELOC_MIPS16_GPREL",
860   "BFD_RELOC_HI16",
861   "BFD_RELOC_HI16_S",
862   "BFD_RELOC_LO16",
863   "BFD_RELOC_MIPS_LITERAL",
864   "BFD_RELOC_MIPS_GOT16",
865   "BFD_RELOC_MIPS_CALL16",
866   "BFD_RELOC_MIPS_GOT_HI16",
867   "BFD_RELOC_MIPS_GOT_LO16",
868   "BFD_RELOC_MIPS_CALL_HI16",
869   "BFD_RELOC_MIPS_CALL_LO16",
870   "BFD_RELOC_MIPS_SUB",
871   "BFD_RELOC_MIPS_GOT_PAGE",
872   "BFD_RELOC_MIPS_GOT_OFST",
873   "BFD_RELOC_MIPS_GOT_DISP",
874   "BFD_RELOC_MIPS_SHIFT5",
875   "BFD_RELOC_MIPS_SHIFT6",
876   "BFD_RELOC_MIPS_INSERT_A",
877   "BFD_RELOC_MIPS_INSERT_B",
878   "BFD_RELOC_MIPS_DELETE",
879   "BFD_RELOC_MIPS_HIGHEST",
880   "BFD_RELOC_MIPS_HIGHER",
881   "BFD_RELOC_MIPS_SCN_DISP",
882   "BFD_RELOC_MIPS_REL16",
883   "BFD_RELOC_MIPS_RELGOT",
884   "BFD_RELOC_MIPS_JALR",
885
886   "BFD_RELOC_FRV_LABEL16",
887   "BFD_RELOC_FRV_LABEL24",
888   "BFD_RELOC_FRV_LO16",
889   "BFD_RELOC_FRV_HI16",
890   "BFD_RELOC_FRV_GPREL12",
891   "BFD_RELOC_FRV_GPRELU12",
892   "BFD_RELOC_FRV_GPREL32",
893   "BFD_RELOC_FRV_GPRELHI",
894   "BFD_RELOC_FRV_GPRELLO",
895   "BFD_RELOC_FRV_GOT12",
896   "BFD_RELOC_FRV_GOTHI",
897   "BFD_RELOC_FRV_GOTLO",
898   "BFD_RELOC_FRV_FUNCDESC",
899   "BFD_RELOC_FRV_FUNCDESC_GOT12",
900   "BFD_RELOC_FRV_FUNCDESC_GOTHI",
901   "BFD_RELOC_FRV_FUNCDESC_GOTLO",
902   "BFD_RELOC_FRV_FUNCDESC_VALUE",
903   "BFD_RELOC_FRV_FUNCDESC_GOTOFF12",
904   "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI",
905   "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO",
906   "BFD_RELOC_FRV_GOTOFF12",
907   "BFD_RELOC_FRV_GOTOFFHI",
908   "BFD_RELOC_FRV_GOTOFFLO",
909
910   "BFD_RELOC_MN10300_GOTOFF24",
911   "BFD_RELOC_MN10300_GOT32",
912   "BFD_RELOC_MN10300_GOT24",
913   "BFD_RELOC_MN10300_GOT16",
914   "BFD_RELOC_MN10300_COPY",
915   "BFD_RELOC_MN10300_GLOB_DAT",
916   "BFD_RELOC_MN10300_JMP_SLOT",
917   "BFD_RELOC_MN10300_RELATIVE",
918
919   "BFD_RELOC_386_GOT32",
920   "BFD_RELOC_386_PLT32",
921   "BFD_RELOC_386_COPY",
922   "BFD_RELOC_386_GLOB_DAT",
923   "BFD_RELOC_386_JUMP_SLOT",
924   "BFD_RELOC_386_RELATIVE",
925   "BFD_RELOC_386_GOTOFF",
926   "BFD_RELOC_386_GOTPC",
927   "BFD_RELOC_386_TLS_TPOFF",
928   "BFD_RELOC_386_TLS_IE",
929   "BFD_RELOC_386_TLS_GOTIE",
930   "BFD_RELOC_386_TLS_LE",
931   "BFD_RELOC_386_TLS_GD",
932   "BFD_RELOC_386_TLS_LDM",
933   "BFD_RELOC_386_TLS_LDO_32",
934   "BFD_RELOC_386_TLS_IE_32",
935   "BFD_RELOC_386_TLS_LE_32",
936   "BFD_RELOC_386_TLS_DTPMOD32",
937   "BFD_RELOC_386_TLS_DTPOFF32",
938   "BFD_RELOC_386_TLS_TPOFF32",
939   "BFD_RELOC_X86_64_GOT32",
940   "BFD_RELOC_X86_64_PLT32",
941   "BFD_RELOC_X86_64_COPY",
942   "BFD_RELOC_X86_64_GLOB_DAT",
943   "BFD_RELOC_X86_64_JUMP_SLOT",
944   "BFD_RELOC_X86_64_RELATIVE",
945   "BFD_RELOC_X86_64_GOTPCREL",
946   "BFD_RELOC_X86_64_32S",
947   "BFD_RELOC_X86_64_DTPMOD64",
948   "BFD_RELOC_X86_64_DTPOFF64",
949   "BFD_RELOC_X86_64_TPOFF64",
950   "BFD_RELOC_X86_64_TLSGD",
951   "BFD_RELOC_X86_64_TLSLD",
952   "BFD_RELOC_X86_64_DTPOFF32",
953   "BFD_RELOC_X86_64_GOTTPOFF",
954   "BFD_RELOC_X86_64_TPOFF32",
955   "BFD_RELOC_NS32K_IMM_8",
956   "BFD_RELOC_NS32K_IMM_16",
957   "BFD_RELOC_NS32K_IMM_32",
958   "BFD_RELOC_NS32K_IMM_8_PCREL",
959   "BFD_RELOC_NS32K_IMM_16_PCREL",
960   "BFD_RELOC_NS32K_IMM_32_PCREL",
961   "BFD_RELOC_NS32K_DISP_8",
962   "BFD_RELOC_NS32K_DISP_16",
963   "BFD_RELOC_NS32K_DISP_32",
964   "BFD_RELOC_NS32K_DISP_8_PCREL",
965   "BFD_RELOC_NS32K_DISP_16_PCREL",
966   "BFD_RELOC_NS32K_DISP_32_PCREL",
967   "BFD_RELOC_PDP11_DISP_8_PCREL",
968   "BFD_RELOC_PDP11_DISP_6_PCREL",
969   "BFD_RELOC_PJ_CODE_HI16",
970   "BFD_RELOC_PJ_CODE_LO16",
971   "BFD_RELOC_PJ_CODE_DIR16",
972   "BFD_RELOC_PJ_CODE_DIR32",
973   "BFD_RELOC_PJ_CODE_REL16",
974   "BFD_RELOC_PJ_CODE_REL32",
975   "BFD_RELOC_PPC_B26",
976   "BFD_RELOC_PPC_BA26",
977   "BFD_RELOC_PPC_TOC16",
978   "BFD_RELOC_PPC_B16",
979   "BFD_RELOC_PPC_B16_BRTAKEN",
980   "BFD_RELOC_PPC_B16_BRNTAKEN",
981   "BFD_RELOC_PPC_BA16",
982   "BFD_RELOC_PPC_BA16_BRTAKEN",
983   "BFD_RELOC_PPC_BA16_BRNTAKEN",
984   "BFD_RELOC_PPC_COPY",
985   "BFD_RELOC_PPC_GLOB_DAT",
986   "BFD_RELOC_PPC_JMP_SLOT",
987   "BFD_RELOC_PPC_RELATIVE",
988   "BFD_RELOC_PPC_LOCAL24PC",
989   "BFD_RELOC_PPC_EMB_NADDR32",
990   "BFD_RELOC_PPC_EMB_NADDR16",
991   "BFD_RELOC_PPC_EMB_NADDR16_LO",
992   "BFD_RELOC_PPC_EMB_NADDR16_HI",
993   "BFD_RELOC_PPC_EMB_NADDR16_HA",
994   "BFD_RELOC_PPC_EMB_SDAI16",
995   "BFD_RELOC_PPC_EMB_SDA2I16",
996   "BFD_RELOC_PPC_EMB_SDA2REL",
997   "BFD_RELOC_PPC_EMB_SDA21",
998   "BFD_RELOC_PPC_EMB_MRKREF",
999   "BFD_RELOC_PPC_EMB_RELSEC16",
1000   "BFD_RELOC_PPC_EMB_RELST_LO",
1001   "BFD_RELOC_PPC_EMB_RELST_HI",
1002   "BFD_RELOC_PPC_EMB_RELST_HA",
1003   "BFD_RELOC_PPC_EMB_BIT_FLD",
1004   "BFD_RELOC_PPC_EMB_RELSDA",
1005   "BFD_RELOC_PPC64_HIGHER",
1006   "BFD_RELOC_PPC64_HIGHER_S",
1007   "BFD_RELOC_PPC64_HIGHEST",
1008   "BFD_RELOC_PPC64_HIGHEST_S",
1009   "BFD_RELOC_PPC64_TOC16_LO",
1010   "BFD_RELOC_PPC64_TOC16_HI",
1011   "BFD_RELOC_PPC64_TOC16_HA",
1012   "BFD_RELOC_PPC64_TOC",
1013   "BFD_RELOC_PPC64_PLTGOT16",
1014   "BFD_RELOC_PPC64_PLTGOT16_LO",
1015   "BFD_RELOC_PPC64_PLTGOT16_HI",
1016   "BFD_RELOC_PPC64_PLTGOT16_HA",
1017   "BFD_RELOC_PPC64_ADDR16_DS",
1018   "BFD_RELOC_PPC64_ADDR16_LO_DS",
1019   "BFD_RELOC_PPC64_GOT16_DS",
1020   "BFD_RELOC_PPC64_GOT16_LO_DS",
1021   "BFD_RELOC_PPC64_PLT16_LO_DS",
1022   "BFD_RELOC_PPC64_SECTOFF_DS",
1023   "BFD_RELOC_PPC64_SECTOFF_LO_DS",
1024   "BFD_RELOC_PPC64_TOC16_DS",
1025   "BFD_RELOC_PPC64_TOC16_LO_DS",
1026   "BFD_RELOC_PPC64_PLTGOT16_DS",
1027   "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
1028   "BFD_RELOC_PPC_TLS",
1029   "BFD_RELOC_PPC_DTPMOD",
1030   "BFD_RELOC_PPC_TPREL16",
1031   "BFD_RELOC_PPC_TPREL16_LO",
1032   "BFD_RELOC_PPC_TPREL16_HI",
1033   "BFD_RELOC_PPC_TPREL16_HA",
1034   "BFD_RELOC_PPC_TPREL",
1035   "BFD_RELOC_PPC_DTPREL16",
1036   "BFD_RELOC_PPC_DTPREL16_LO",
1037   "BFD_RELOC_PPC_DTPREL16_HI",
1038   "BFD_RELOC_PPC_DTPREL16_HA",
1039   "BFD_RELOC_PPC_DTPREL",
1040   "BFD_RELOC_PPC_GOT_TLSGD16",
1041   "BFD_RELOC_PPC_GOT_TLSGD16_LO",
1042   "BFD_RELOC_PPC_GOT_TLSGD16_HI",
1043   "BFD_RELOC_PPC_GOT_TLSGD16_HA",
1044   "BFD_RELOC_PPC_GOT_TLSLD16",
1045   "BFD_RELOC_PPC_GOT_TLSLD16_LO",
1046   "BFD_RELOC_PPC_GOT_TLSLD16_HI",
1047   "BFD_RELOC_PPC_GOT_TLSLD16_HA",
1048   "BFD_RELOC_PPC_GOT_TPREL16",
1049   "BFD_RELOC_PPC_GOT_TPREL16_LO",
1050   "BFD_RELOC_PPC_GOT_TPREL16_HI",
1051   "BFD_RELOC_PPC_GOT_TPREL16_HA",
1052   "BFD_RELOC_PPC_GOT_DTPREL16",
1053   "BFD_RELOC_PPC_GOT_DTPREL16_LO",
1054   "BFD_RELOC_PPC_GOT_DTPREL16_HI",
1055   "BFD_RELOC_PPC_GOT_DTPREL16_HA",
1056   "BFD_RELOC_PPC64_TPREL16_DS",
1057   "BFD_RELOC_PPC64_TPREL16_LO_DS",
1058   "BFD_RELOC_PPC64_TPREL16_HIGHER",
1059   "BFD_RELOC_PPC64_TPREL16_HIGHERA",
1060   "BFD_RELOC_PPC64_TPREL16_HIGHEST",
1061   "BFD_RELOC_PPC64_TPREL16_HIGHESTA",
1062   "BFD_RELOC_PPC64_DTPREL16_DS",
1063   "BFD_RELOC_PPC64_DTPREL16_LO_DS",
1064   "BFD_RELOC_PPC64_DTPREL16_HIGHER",
1065   "BFD_RELOC_PPC64_DTPREL16_HIGHERA",
1066   "BFD_RELOC_PPC64_DTPREL16_HIGHEST",
1067   "BFD_RELOC_PPC64_DTPREL16_HIGHESTA",
1068   "BFD_RELOC_I370_D12",
1069   "BFD_RELOC_CTOR",
1070   "BFD_RELOC_ARM_PCREL_BRANCH",
1071   "BFD_RELOC_ARM_PCREL_BLX",
1072   "BFD_RELOC_THUMB_PCREL_BLX",
1073   "BFD_RELOC_ARM_IMMEDIATE",
1074   "BFD_RELOC_ARM_ADRL_IMMEDIATE",
1075   "BFD_RELOC_ARM_OFFSET_IMM",
1076   "BFD_RELOC_ARM_SHIFT_IMM",
1077   "BFD_RELOC_ARM_SWI",
1078   "BFD_RELOC_ARM_MULTI",
1079   "BFD_RELOC_ARM_CP_OFF_IMM",
1080   "BFD_RELOC_ARM_CP_OFF_IMM_S2",
1081   "BFD_RELOC_ARM_ADR_IMM",
1082   "BFD_RELOC_ARM_LDR_IMM",
1083   "BFD_RELOC_ARM_LITERAL",
1084   "BFD_RELOC_ARM_IN_POOL",
1085   "BFD_RELOC_ARM_OFFSET_IMM8",
1086   "BFD_RELOC_ARM_HWLITERAL",
1087   "BFD_RELOC_ARM_THUMB_ADD",
1088   "BFD_RELOC_ARM_THUMB_IMM",
1089   "BFD_RELOC_ARM_THUMB_SHIFT",
1090   "BFD_RELOC_ARM_THUMB_OFFSET",
1091   "BFD_RELOC_ARM_GOT12",
1092   "BFD_RELOC_ARM_GOT32",
1093   "BFD_RELOC_ARM_JUMP_SLOT",
1094   "BFD_RELOC_ARM_COPY",
1095   "BFD_RELOC_ARM_GLOB_DAT",
1096   "BFD_RELOC_ARM_PLT32",
1097   "BFD_RELOC_ARM_RELATIVE",
1098   "BFD_RELOC_ARM_GOTOFF",
1099   "BFD_RELOC_ARM_GOTPC",
1100   "BFD_RELOC_SH_PCDISP8BY2",
1101   "BFD_RELOC_SH_PCDISP12BY2",
1102   "BFD_RELOC_SH_IMM4",
1103   "BFD_RELOC_SH_IMM4BY2",
1104   "BFD_RELOC_SH_IMM4BY4",
1105   "BFD_RELOC_SH_IMM8",
1106   "BFD_RELOC_SH_IMM8BY2",
1107   "BFD_RELOC_SH_IMM8BY4",
1108   "BFD_RELOC_SH_PCRELIMM8BY2",
1109   "BFD_RELOC_SH_PCRELIMM8BY4",
1110   "BFD_RELOC_SH_SWITCH16",
1111   "BFD_RELOC_SH_SWITCH32",
1112   "BFD_RELOC_SH_USES",
1113   "BFD_RELOC_SH_COUNT",
1114   "BFD_RELOC_SH_ALIGN",
1115   "BFD_RELOC_SH_CODE",
1116   "BFD_RELOC_SH_DATA",
1117   "BFD_RELOC_SH_LABEL",
1118   "BFD_RELOC_SH_LOOP_START",
1119   "BFD_RELOC_SH_LOOP_END",
1120   "BFD_RELOC_SH_COPY",
1121   "BFD_RELOC_SH_GLOB_DAT",
1122   "BFD_RELOC_SH_JMP_SLOT",
1123   "BFD_RELOC_SH_RELATIVE",
1124   "BFD_RELOC_SH_GOTPC",
1125   "BFD_RELOC_SH_GOT_LOW16",
1126   "BFD_RELOC_SH_GOT_MEDLOW16",
1127   "BFD_RELOC_SH_GOT_MEDHI16",
1128   "BFD_RELOC_SH_GOT_HI16",
1129   "BFD_RELOC_SH_GOTPLT_LOW16",
1130   "BFD_RELOC_SH_GOTPLT_MEDLOW16",
1131   "BFD_RELOC_SH_GOTPLT_MEDHI16",
1132   "BFD_RELOC_SH_GOTPLT_HI16",
1133   "BFD_RELOC_SH_PLT_LOW16",
1134   "BFD_RELOC_SH_PLT_MEDLOW16",
1135   "BFD_RELOC_SH_PLT_MEDHI16",
1136   "BFD_RELOC_SH_PLT_HI16",
1137   "BFD_RELOC_SH_GOTOFF_LOW16",
1138   "BFD_RELOC_SH_GOTOFF_MEDLOW16",
1139   "BFD_RELOC_SH_GOTOFF_MEDHI16",
1140   "BFD_RELOC_SH_GOTOFF_HI16",
1141   "BFD_RELOC_SH_GOTPC_LOW16",
1142   "BFD_RELOC_SH_GOTPC_MEDLOW16",
1143   "BFD_RELOC_SH_GOTPC_MEDHI16",
1144   "BFD_RELOC_SH_GOTPC_HI16",
1145   "BFD_RELOC_SH_COPY64",
1146   "BFD_RELOC_SH_GLOB_DAT64",
1147   "BFD_RELOC_SH_JMP_SLOT64",
1148   "BFD_RELOC_SH_RELATIVE64",
1149   "BFD_RELOC_SH_GOT10BY4",
1150   "BFD_RELOC_SH_GOT10BY8",
1151   "BFD_RELOC_SH_GOTPLT10BY4",
1152   "BFD_RELOC_SH_GOTPLT10BY8",
1153   "BFD_RELOC_SH_GOTPLT32",
1154   "BFD_RELOC_SH_SHMEDIA_CODE",
1155   "BFD_RELOC_SH_IMMU5",
1156   "BFD_RELOC_SH_IMMS6",
1157   "BFD_RELOC_SH_IMMS6BY32",
1158   "BFD_RELOC_SH_IMMU6",
1159   "BFD_RELOC_SH_IMMS10",
1160   "BFD_RELOC_SH_IMMS10BY2",
1161   "BFD_RELOC_SH_IMMS10BY4",
1162   "BFD_RELOC_SH_IMMS10BY8",
1163   "BFD_RELOC_SH_IMMS16",
1164   "BFD_RELOC_SH_IMMU16",
1165   "BFD_RELOC_SH_IMM_LOW16",
1166   "BFD_RELOC_SH_IMM_LOW16_PCREL",
1167   "BFD_RELOC_SH_IMM_MEDLOW16",
1168   "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
1169   "BFD_RELOC_SH_IMM_MEDHI16",
1170   "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
1171   "BFD_RELOC_SH_IMM_HI16",
1172   "BFD_RELOC_SH_IMM_HI16_PCREL",
1173   "BFD_RELOC_SH_PT_16",
1174   "BFD_RELOC_SH_TLS_GD_32",
1175   "BFD_RELOC_SH_TLS_LD_32",
1176   "BFD_RELOC_SH_TLS_LDO_32",
1177   "BFD_RELOC_SH_TLS_IE_32",
1178   "BFD_RELOC_SH_TLS_LE_32",
1179   "BFD_RELOC_SH_TLS_DTPMOD32",
1180   "BFD_RELOC_SH_TLS_DTPOFF32",
1181   "BFD_RELOC_SH_TLS_TPOFF32",
1182   "BFD_RELOC_THUMB_PCREL_BRANCH9",
1183   "BFD_RELOC_THUMB_PCREL_BRANCH12",
1184   "BFD_RELOC_THUMB_PCREL_BRANCH23",
1185   "BFD_RELOC_ARC_B22_PCREL",
1186   "BFD_RELOC_ARC_B26",
1187   "BFD_RELOC_D10V_10_PCREL_R",
1188   "BFD_RELOC_D10V_10_PCREL_L",
1189   "BFD_RELOC_D10V_18",
1190   "BFD_RELOC_D10V_18_PCREL",
1191   "BFD_RELOC_D30V_6",
1192   "BFD_RELOC_D30V_9_PCREL",
1193   "BFD_RELOC_D30V_9_PCREL_R",
1194   "BFD_RELOC_D30V_15",
1195   "BFD_RELOC_D30V_15_PCREL",
1196   "BFD_RELOC_D30V_15_PCREL_R",
1197   "BFD_RELOC_D30V_21",
1198   "BFD_RELOC_D30V_21_PCREL",
1199   "BFD_RELOC_D30V_21_PCREL_R",
1200   "BFD_RELOC_D30V_32",
1201   "BFD_RELOC_D30V_32_PCREL",
1202   "BFD_RELOC_DLX_HI16_S",
1203   "BFD_RELOC_DLX_LO16",
1204   "BFD_RELOC_DLX_JMP26",
1205   "BFD_RELOC_M32R_24",
1206   "BFD_RELOC_M32R_10_PCREL",
1207   "BFD_RELOC_M32R_18_PCREL",
1208   "BFD_RELOC_M32R_26_PCREL",
1209   "BFD_RELOC_M32R_HI16_ULO",
1210   "BFD_RELOC_M32R_HI16_SLO",
1211   "BFD_RELOC_M32R_LO16",
1212   "BFD_RELOC_M32R_SDA16",
1213   "BFD_RELOC_M32R_GOT24",
1214   "BFD_RELOC_M32R_26_PLTREL",
1215   "BFD_RELOC_M32R_COPY",
1216   "BFD_RELOC_M32R_GLOB_DAT",
1217   "BFD_RELOC_M32R_JMP_SLOT",
1218   "BFD_RELOC_M32R_RELATIVE",
1219   "BFD_RELOC_M32R_GOTOFF",
1220   "BFD_RELOC_M32R_GOTPC24",
1221   "BFD_RELOC_M32R_GOT16_HI_ULO",
1222   "BFD_RELOC_M32R_GOT16_HI_SLO",
1223   "BFD_RELOC_M32R_GOT16_LO",
1224   "BFD_RELOC_M32R_GOTPC_HI_ULO",
1225   "BFD_RELOC_M32R_GOTPC_HI_SLO",
1226   "BFD_RELOC_M32R_GOTPC_LO",
1227   "BFD_RELOC_V850_9_PCREL",
1228   "BFD_RELOC_V850_22_PCREL",
1229   "BFD_RELOC_V850_SDA_16_16_OFFSET",
1230   "BFD_RELOC_V850_SDA_15_16_OFFSET",
1231   "BFD_RELOC_V850_ZDA_16_16_OFFSET",
1232   "BFD_RELOC_V850_ZDA_15_16_OFFSET",
1233   "BFD_RELOC_V850_TDA_6_8_OFFSET",
1234   "BFD_RELOC_V850_TDA_7_8_OFFSET",
1235   "BFD_RELOC_V850_TDA_7_7_OFFSET",
1236   "BFD_RELOC_V850_TDA_16_16_OFFSET",
1237   "BFD_RELOC_V850_TDA_4_5_OFFSET",
1238   "BFD_RELOC_V850_TDA_4_4_OFFSET",
1239   "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
1240   "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
1241   "BFD_RELOC_V850_CALLT_6_7_OFFSET",
1242   "BFD_RELOC_V850_CALLT_16_16_OFFSET",
1243   "BFD_RELOC_V850_LONGCALL",
1244   "BFD_RELOC_V850_LONGJUMP",
1245   "BFD_RELOC_V850_ALIGN",
1246   "BFD_RELOC_MN10300_32_PCREL",
1247   "BFD_RELOC_MN10300_16_PCREL",
1248   "BFD_RELOC_TIC30_LDP",
1249   "BFD_RELOC_TIC54X_PARTLS7",
1250   "BFD_RELOC_TIC54X_PARTMS9",
1251   "BFD_RELOC_TIC54X_23",
1252   "BFD_RELOC_TIC54X_16_OF_23",
1253   "BFD_RELOC_TIC54X_MS7_OF_23",
1254   "BFD_RELOC_FR30_48",
1255   "BFD_RELOC_FR30_20",
1256   "BFD_RELOC_FR30_6_IN_4",
1257   "BFD_RELOC_FR30_8_IN_8",
1258   "BFD_RELOC_FR30_9_IN_8",
1259   "BFD_RELOC_FR30_10_IN_8",
1260   "BFD_RELOC_FR30_9_PCREL",
1261   "BFD_RELOC_FR30_12_PCREL",
1262   "BFD_RELOC_MCORE_PCREL_IMM8BY4",
1263   "BFD_RELOC_MCORE_PCREL_IMM11BY2",
1264   "BFD_RELOC_MCORE_PCREL_IMM4BY2",
1265   "BFD_RELOC_MCORE_PCREL_32",
1266   "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
1267   "BFD_RELOC_MCORE_RVA",
1268   "BFD_RELOC_MMIX_GETA",
1269   "BFD_RELOC_MMIX_GETA_1",
1270   "BFD_RELOC_MMIX_GETA_2",
1271   "BFD_RELOC_MMIX_GETA_3",
1272   "BFD_RELOC_MMIX_CBRANCH",
1273   "BFD_RELOC_MMIX_CBRANCH_J",
1274   "BFD_RELOC_MMIX_CBRANCH_1",
1275   "BFD_RELOC_MMIX_CBRANCH_2",
1276   "BFD_RELOC_MMIX_CBRANCH_3",
1277   "BFD_RELOC_MMIX_PUSHJ",
1278   "BFD_RELOC_MMIX_PUSHJ_1",
1279   "BFD_RELOC_MMIX_PUSHJ_2",
1280   "BFD_RELOC_MMIX_PUSHJ_3",
1281   "BFD_RELOC_MMIX_PUSHJ_STUBBABLE",
1282   "BFD_RELOC_MMIX_JMP",
1283   "BFD_RELOC_MMIX_JMP_1",
1284   "BFD_RELOC_MMIX_JMP_2",
1285   "BFD_RELOC_MMIX_JMP_3",
1286   "BFD_RELOC_MMIX_ADDR19",
1287   "BFD_RELOC_MMIX_ADDR27",
1288   "BFD_RELOC_MMIX_REG_OR_BYTE",
1289   "BFD_RELOC_MMIX_REG",
1290   "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
1291   "BFD_RELOC_MMIX_LOCAL",
1292   "BFD_RELOC_AVR_7_PCREL",
1293   "BFD_RELOC_AVR_13_PCREL",
1294   "BFD_RELOC_AVR_16_PM",
1295   "BFD_RELOC_AVR_LO8_LDI",
1296   "BFD_RELOC_AVR_HI8_LDI",
1297   "BFD_RELOC_AVR_HH8_LDI",
1298   "BFD_RELOC_AVR_LO8_LDI_NEG",
1299   "BFD_RELOC_AVR_HI8_LDI_NEG",
1300   "BFD_RELOC_AVR_HH8_LDI_NEG",
1301   "BFD_RELOC_AVR_LO8_LDI_PM",
1302   "BFD_RELOC_AVR_HI8_LDI_PM",
1303   "BFD_RELOC_AVR_HH8_LDI_PM",
1304   "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
1305   "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
1306   "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
1307   "BFD_RELOC_AVR_CALL",
1308   "BFD_RELOC_390_12",
1309   "BFD_RELOC_390_GOT12",
1310   "BFD_RELOC_390_PLT32",
1311   "BFD_RELOC_390_COPY",
1312   "BFD_RELOC_390_GLOB_DAT",
1313   "BFD_RELOC_390_JMP_SLOT",
1314   "BFD_RELOC_390_RELATIVE",
1315   "BFD_RELOC_390_GOTPC",
1316   "BFD_RELOC_390_GOT16",
1317   "BFD_RELOC_390_PC16DBL",
1318   "BFD_RELOC_390_PLT16DBL",
1319   "BFD_RELOC_390_PC32DBL",
1320   "BFD_RELOC_390_PLT32DBL",
1321   "BFD_RELOC_390_GOTPCDBL",
1322   "BFD_RELOC_390_GOT64",
1323   "BFD_RELOC_390_PLT64",
1324   "BFD_RELOC_390_GOTENT",
1325   "BFD_RELOC_390_GOTOFF64",
1326   "BFD_RELOC_390_GOTPLT12",
1327   "BFD_RELOC_390_GOTPLT16",
1328   "BFD_RELOC_390_GOTPLT32",
1329   "BFD_RELOC_390_GOTPLT64",
1330   "BFD_RELOC_390_GOTPLTENT",
1331   "BFD_RELOC_390_PLTOFF16",
1332   "BFD_RELOC_390_PLTOFF32",
1333   "BFD_RELOC_390_PLTOFF64",
1334   "BFD_RELOC_390_TLS_LOAD",
1335   "BFD_RELOC_390_TLS_GDCALL",
1336   "BFD_RELOC_390_TLS_LDCALL",
1337   "BFD_RELOC_390_TLS_GD32",
1338   "BFD_RELOC_390_TLS_GD64",
1339   "BFD_RELOC_390_TLS_GOTIE12",
1340   "BFD_RELOC_390_TLS_GOTIE32",
1341   "BFD_RELOC_390_TLS_GOTIE64",
1342   "BFD_RELOC_390_TLS_LDM32",
1343   "BFD_RELOC_390_TLS_LDM64",
1344   "BFD_RELOC_390_TLS_IE32",
1345   "BFD_RELOC_390_TLS_IE64",
1346   "BFD_RELOC_390_TLS_IEENT",
1347   "BFD_RELOC_390_TLS_LE32",
1348   "BFD_RELOC_390_TLS_LE64",
1349   "BFD_RELOC_390_TLS_LDO32",
1350   "BFD_RELOC_390_TLS_LDO64",
1351   "BFD_RELOC_390_TLS_DTPMOD",
1352   "BFD_RELOC_390_TLS_DTPOFF",
1353   "BFD_RELOC_390_TLS_TPOFF",
1354   "BFD_RELOC_390_20",
1355   "BFD_RELOC_390_GOT20",
1356   "BFD_RELOC_390_GOTPLT20",
1357   "BFD_RELOC_390_TLS_GOTIE20",
1358   "BFD_RELOC_IP2K_FR9",
1359   "BFD_RELOC_IP2K_BANK",
1360   "BFD_RELOC_IP2K_ADDR16CJP",
1361   "BFD_RELOC_IP2K_PAGE3",
1362   "BFD_RELOC_IP2K_LO8DATA",
1363   "BFD_RELOC_IP2K_HI8DATA",
1364   "BFD_RELOC_IP2K_EX8DATA",
1365   "BFD_RELOC_IP2K_LO8INSN",
1366   "BFD_RELOC_IP2K_HI8INSN",
1367   "BFD_RELOC_IP2K_PC_SKIP",
1368   "BFD_RELOC_IP2K_TEXT",
1369   "BFD_RELOC_IP2K_FR_OFFSET",
1370   "BFD_RELOC_VPE4KMATH_DATA",
1371   "BFD_RELOC_VPE4KMATH_INSN",
1372   "BFD_RELOC_VTABLE_INHERIT",
1373   "BFD_RELOC_VTABLE_ENTRY",
1374   "BFD_RELOC_IA64_IMM14",
1375   "BFD_RELOC_IA64_IMM22",
1376   "BFD_RELOC_IA64_IMM64",
1377   "BFD_RELOC_IA64_DIR32MSB",
1378   "BFD_RELOC_IA64_DIR32LSB",
1379   "BFD_RELOC_IA64_DIR64MSB",
1380   "BFD_RELOC_IA64_DIR64LSB",
1381   "BFD_RELOC_IA64_GPREL22",
1382   "BFD_RELOC_IA64_GPREL64I",
1383   "BFD_RELOC_IA64_GPREL32MSB",
1384   "BFD_RELOC_IA64_GPREL32LSB",
1385   "BFD_RELOC_IA64_GPREL64MSB",
1386   "BFD_RELOC_IA64_GPREL64LSB",
1387   "BFD_RELOC_IA64_LTOFF22",
1388   "BFD_RELOC_IA64_LTOFF64I",
1389   "BFD_RELOC_IA64_PLTOFF22",
1390   "BFD_RELOC_IA64_PLTOFF64I",
1391   "BFD_RELOC_IA64_PLTOFF64MSB",
1392   "BFD_RELOC_IA64_PLTOFF64LSB",
1393   "BFD_RELOC_IA64_FPTR64I",
1394   "BFD_RELOC_IA64_FPTR32MSB",
1395   "BFD_RELOC_IA64_FPTR32LSB",
1396   "BFD_RELOC_IA64_FPTR64MSB",
1397   "BFD_RELOC_IA64_FPTR64LSB",
1398   "BFD_RELOC_IA64_PCREL21B",
1399   "BFD_RELOC_IA64_PCREL21BI",
1400   "BFD_RELOC_IA64_PCREL21M",
1401   "BFD_RELOC_IA64_PCREL21F",
1402   "BFD_RELOC_IA64_PCREL22",
1403   "BFD_RELOC_IA64_PCREL60B",
1404   "BFD_RELOC_IA64_PCREL64I",
1405   "BFD_RELOC_IA64_PCREL32MSB",
1406   "BFD_RELOC_IA64_PCREL32LSB",
1407   "BFD_RELOC_IA64_PCREL64MSB",
1408   "BFD_RELOC_IA64_PCREL64LSB",
1409   "BFD_RELOC_IA64_LTOFF_FPTR22",
1410   "BFD_RELOC_IA64_LTOFF_FPTR64I",
1411   "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
1412   "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
1413   "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
1414   "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
1415   "BFD_RELOC_IA64_SEGREL32MSB",
1416   "BFD_RELOC_IA64_SEGREL32LSB",
1417   "BFD_RELOC_IA64_SEGREL64MSB",
1418   "BFD_RELOC_IA64_SEGREL64LSB",
1419   "BFD_RELOC_IA64_SECREL32MSB",
1420   "BFD_RELOC_IA64_SECREL32LSB",
1421   "BFD_RELOC_IA64_SECREL64MSB",
1422   "BFD_RELOC_IA64_SECREL64LSB",
1423   "BFD_RELOC_IA64_REL32MSB",
1424   "BFD_RELOC_IA64_REL32LSB",
1425   "BFD_RELOC_IA64_REL64MSB",
1426   "BFD_RELOC_IA64_REL64LSB",
1427   "BFD_RELOC_IA64_LTV32MSB",
1428   "BFD_RELOC_IA64_LTV32LSB",
1429   "BFD_RELOC_IA64_LTV64MSB",
1430   "BFD_RELOC_IA64_LTV64LSB",
1431   "BFD_RELOC_IA64_IPLTMSB",
1432   "BFD_RELOC_IA64_IPLTLSB",
1433   "BFD_RELOC_IA64_COPY",
1434   "BFD_RELOC_IA64_LTOFF22X",
1435   "BFD_RELOC_IA64_LDXMOV",
1436   "BFD_RELOC_IA64_TPREL14",
1437   "BFD_RELOC_IA64_TPREL22",
1438   "BFD_RELOC_IA64_TPREL64I",
1439   "BFD_RELOC_IA64_TPREL64MSB",
1440   "BFD_RELOC_IA64_TPREL64LSB",
1441   "BFD_RELOC_IA64_LTOFF_TPREL22",
1442   "BFD_RELOC_IA64_DTPMOD64MSB",
1443   "BFD_RELOC_IA64_DTPMOD64LSB",
1444   "BFD_RELOC_IA64_LTOFF_DTPMOD22",
1445   "BFD_RELOC_IA64_DTPREL14",
1446   "BFD_RELOC_IA64_DTPREL22",
1447   "BFD_RELOC_IA64_DTPREL64I",
1448   "BFD_RELOC_IA64_DTPREL32MSB",
1449   "BFD_RELOC_IA64_DTPREL32LSB",
1450   "BFD_RELOC_IA64_DTPREL64MSB",
1451   "BFD_RELOC_IA64_DTPREL64LSB",
1452   "BFD_RELOC_IA64_LTOFF_DTPREL22",
1453   "BFD_RELOC_M68HC11_HI8",
1454   "BFD_RELOC_M68HC11_LO8",
1455   "BFD_RELOC_M68HC11_3B",
1456   "BFD_RELOC_M68HC11_RL_JUMP",
1457   "BFD_RELOC_M68HC11_RL_GROUP",
1458   "BFD_RELOC_M68HC11_LO16",
1459   "BFD_RELOC_M68HC11_PAGE",
1460   "BFD_RELOC_M68HC11_24",
1461   "BFD_RELOC_M68HC12_5B",
1462   "BFD_RELOC_16C_NUM08",
1463   "BFD_RELOC_16C_NUM08_C",
1464   "BFD_RELOC_16C_NUM16",
1465   "BFD_RELOC_16C_NUM16_C",
1466   "BFD_RELOC_16C_NUM32",
1467   "BFD_RELOC_16C_NUM32_C",
1468   "BFD_RELOC_16C_DISP04",
1469   "BFD_RELOC_16C_DISP04_C",
1470   "BFD_RELOC_16C_DISP08",
1471   "BFD_RELOC_16C_DISP08_C",
1472   "BFD_RELOC_16C_DISP16",
1473   "BFD_RELOC_16C_DISP16_C",
1474   "BFD_RELOC_16C_DISP24",
1475   "BFD_RELOC_16C_DISP24_C",
1476   "BFD_RELOC_16C_DISP24a",
1477   "BFD_RELOC_16C_DISP24a_C",
1478   "BFD_RELOC_16C_REG04",
1479   "BFD_RELOC_16C_REG04_C",
1480   "BFD_RELOC_16C_REG04a",
1481   "BFD_RELOC_16C_REG04a_C",
1482   "BFD_RELOC_16C_REG14",
1483   "BFD_RELOC_16C_REG14_C",
1484   "BFD_RELOC_16C_REG16",
1485   "BFD_RELOC_16C_REG16_C",
1486   "BFD_RELOC_16C_REG20",
1487   "BFD_RELOC_16C_REG20_C",
1488   "BFD_RELOC_16C_ABS20",
1489   "BFD_RELOC_16C_ABS20_C",
1490   "BFD_RELOC_16C_ABS24",
1491   "BFD_RELOC_16C_ABS24_C",
1492   "BFD_RELOC_16C_IMM04",
1493   "BFD_RELOC_16C_IMM04_C",
1494   "BFD_RELOC_16C_IMM16",
1495   "BFD_RELOC_16C_IMM16_C",
1496   "BFD_RELOC_16C_IMM20",
1497   "BFD_RELOC_16C_IMM20_C",
1498   "BFD_RELOC_16C_IMM24",
1499   "BFD_RELOC_16C_IMM24_C",
1500   "BFD_RELOC_16C_IMM32",
1501   "BFD_RELOC_16C_IMM32_C",
1502   "BFD_RELOC_CRIS_BDISP8",
1503   "BFD_RELOC_CRIS_UNSIGNED_5",
1504   "BFD_RELOC_CRIS_SIGNED_6",
1505   "BFD_RELOC_CRIS_UNSIGNED_6",
1506   "BFD_RELOC_CRIS_UNSIGNED_4",
1507   "BFD_RELOC_CRIS_COPY",
1508   "BFD_RELOC_CRIS_GLOB_DAT",
1509   "BFD_RELOC_CRIS_JUMP_SLOT",
1510   "BFD_RELOC_CRIS_RELATIVE",
1511   "BFD_RELOC_CRIS_32_GOT",
1512   "BFD_RELOC_CRIS_16_GOT",
1513   "BFD_RELOC_CRIS_32_GOTPLT",
1514   "BFD_RELOC_CRIS_16_GOTPLT",
1515   "BFD_RELOC_CRIS_32_GOTREL",
1516   "BFD_RELOC_CRIS_32_PLT_GOTREL",
1517   "BFD_RELOC_CRIS_32_PLT_PCREL",
1518   "BFD_RELOC_860_COPY",
1519   "BFD_RELOC_860_GLOB_DAT",
1520   "BFD_RELOC_860_JUMP_SLOT",
1521   "BFD_RELOC_860_RELATIVE",
1522   "BFD_RELOC_860_PC26",
1523   "BFD_RELOC_860_PLT26",
1524   "BFD_RELOC_860_PC16",
1525   "BFD_RELOC_860_LOW0",
1526   "BFD_RELOC_860_SPLIT0",
1527   "BFD_RELOC_860_LOW1",
1528   "BFD_RELOC_860_SPLIT1",
1529   "BFD_RELOC_860_LOW2",
1530   "BFD_RELOC_860_SPLIT2",
1531   "BFD_RELOC_860_LOW3",
1532   "BFD_RELOC_860_LOGOT0",
1533   "BFD_RELOC_860_SPGOT0",
1534   "BFD_RELOC_860_LOGOT1",
1535   "BFD_RELOC_860_SPGOT1",
1536   "BFD_RELOC_860_LOGOTOFF0",
1537   "BFD_RELOC_860_SPGOTOFF0",
1538   "BFD_RELOC_860_LOGOTOFF1",
1539   "BFD_RELOC_860_SPGOTOFF1",
1540   "BFD_RELOC_860_LOGOTOFF2",
1541   "BFD_RELOC_860_LOGOTOFF3",
1542   "BFD_RELOC_860_LOPC",
1543   "BFD_RELOC_860_HIGHADJ",
1544   "BFD_RELOC_860_HAGOT",
1545   "BFD_RELOC_860_HAGOTOFF",
1546   "BFD_RELOC_860_HAPC",
1547   "BFD_RELOC_860_HIGH",
1548   "BFD_RELOC_860_HIGOT",
1549   "BFD_RELOC_860_HIGOTOFF",
1550   "BFD_RELOC_OPENRISC_ABS_26",
1551   "BFD_RELOC_OPENRISC_REL_26",
1552   "BFD_RELOC_H8_DIR16A8",
1553   "BFD_RELOC_H8_DIR16R8",
1554   "BFD_RELOC_H8_DIR24A8",
1555   "BFD_RELOC_H8_DIR24R8",
1556   "BFD_RELOC_H8_DIR32A16",
1557   "BFD_RELOC_XSTORMY16_REL_12",
1558   "BFD_RELOC_XSTORMY16_12",
1559   "BFD_RELOC_XSTORMY16_24",
1560   "BFD_RELOC_XSTORMY16_FPTR16",
1561   "BFD_RELOC_VAX_GLOB_DAT",
1562   "BFD_RELOC_VAX_JMP_SLOT",
1563   "BFD_RELOC_VAX_RELATIVE",
1564   "BFD_RELOC_MSP430_10_PCREL",
1565   "BFD_RELOC_MSP430_16_PCREL",
1566   "BFD_RELOC_MSP430_16",
1567   "BFD_RELOC_MSP430_16_PCREL_BYTE",
1568   "BFD_RELOC_MSP430_16_BYTE",
1569   "BFD_RELOC_IQ2000_OFFSET_16",
1570   "BFD_RELOC_IQ2000_OFFSET_21",
1571   "BFD_RELOC_IQ2000_UHI16",
1572   "BFD_RELOC_XTENSA_RTLD",
1573   "BFD_RELOC_XTENSA_GLOB_DAT",
1574   "BFD_RELOC_XTENSA_JMP_SLOT",
1575   "BFD_RELOC_XTENSA_RELATIVE",
1576   "BFD_RELOC_XTENSA_PLT",
1577   "BFD_RELOC_XTENSA_OP0",
1578   "BFD_RELOC_XTENSA_OP1",
1579   "BFD_RELOC_XTENSA_OP2",
1580   "BFD_RELOC_XTENSA_ASM_EXPAND",
1581   "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
1582  "@@overflow: BFD_RELOC_UNUSED@@",
1583 };
1584 #endif
1585
1586 reloc_howto_type *bfd_default_reloc_type_lookup
1587    (bfd *abfd, bfd_reloc_code_real_type  code);
1588
1589 bfd_boolean bfd_generic_relax_section
1590    (bfd *abfd,
1591     asection *section,
1592     struct bfd_link_info *,
1593     bfd_boolean *);
1594
1595 bfd_boolean bfd_generic_gc_sections
1596    (bfd *, struct bfd_link_info *);
1597
1598 bfd_boolean bfd_generic_merge_sections
1599    (bfd *, struct bfd_link_info *);
1600
1601 bfd_byte *bfd_generic_get_relocated_section_contents
1602    (bfd *abfd,
1603     struct bfd_link_info *link_info,
1604     struct bfd_link_order *link_order,
1605     bfd_byte *data,
1606     bfd_boolean relocatable,
1607     asymbol **symbols);
1608
1609 /* Extracted from archures.c.  */
1610 extern const bfd_arch_info_type bfd_default_arch_struct;
1611 bfd_boolean bfd_default_set_arch_mach
1612    (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
1613
1614 const bfd_arch_info_type *bfd_default_compatible
1615    (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
1616
1617 bfd_boolean bfd_default_scan
1618    (const struct bfd_arch_info *info, const char *string);
1619
1620 /* Extracted from elf.c.  */
1621 struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
1622