bfdt.texi revision 1.4
1@section @code{typedef bfd}
2A BFD has type @code{bfd}; objects of this type are the
3cornerstone of any application using BFD. Using BFD
4consists of making references though the BFD and to data in the BFD.
5
6Here is the structure that defines the type @code{bfd}.  It
7contains the major data about the file and pointers
8to the rest of the data.
9
10
11@example
12
13enum bfd_direction
14  @{
15    no_direction = 0,
16    read_direction = 1,
17    write_direction = 2,
18    both_direction = 3
19  @};
20
21struct bfd
22@{
23  /* A unique identifier of the BFD  */
24  unsigned int id;
25
26  /* The filename the application opened the BFD with.  */
27  const char *filename;
28
29  /* A pointer to the target jump table.  */
30  const struct bfd_target *xvec;
31
32  /* The IOSTREAM, and corresponding IO vector that provide access
33     to the file backing the BFD.  */
34  void *iostream;
35  const struct bfd_iovec *iovec;
36
37  /* The caching routines use these to maintain a
38     least-recently-used list of BFDs.  */
39  struct bfd *lru_prev, *lru_next;
40
41  /* When a file is closed by the caching routines, BFD retains
42     state information on the file here...  */
43  ufile_ptr where;
44
45  /* File modified time, if mtime_set is TRUE.  */
46  long mtime;
47
48  /* Reserved for an unimplemented file locking extension.  */
49  int ifd;
50
51  /* The format which belongs to the BFD. (object, core, etc.)  */
52  bfd_format format;
53
54  /* The direction with which the BFD was opened.  */
55  enum bfd_direction direction;
56
57  /* Format_specific flags.  */
58  flagword flags;
59
60  /* Values that may appear in the flags field of a BFD.  These also
61     appear in the object_flags field of the bfd_target structure, where
62     they indicate the set of flags used by that backend (not all flags
63     are meaningful for all object file formats) (FIXME: at the moment,
64     the object_flags values have mostly just been copied from backend
65     to another, and are not necessarily correct).  */
66
67#define BFD_NO_FLAGS   0x00
68
69  /* BFD contains relocation entries.  */
70#define HAS_RELOC      0x01
71
72  /* BFD is directly executable.  */
73#define EXEC_P         0x02
74
75  /* BFD has line number information (basically used for F_LNNO in a
76     COFF header).  */
77#define HAS_LINENO     0x04
78
79  /* BFD has debugging information.  */
80#define HAS_DEBUG      0x08
81
82  /* BFD has symbols.  */
83#define HAS_SYMS       0x10
84
85  /* BFD has local symbols (basically used for F_LSYMS in a COFF
86     header).  */
87#define HAS_LOCALS     0x20
88
89  /* BFD is a dynamic object.  */
90#define DYNAMIC        0x40
91
92  /* Text section is write protected (if D_PAGED is not set, this is
93     like an a.out NMAGIC file) (the linker sets this by default, but
94     clears it for -r or -N).  */
95#define WP_TEXT        0x80
96
97  /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
98     linker sets this by default, but clears it for -r or -n or -N).  */
99#define D_PAGED        0x100
100
101  /* BFD is relaxable (this means that bfd_relax_section may be able to
102     do something) (sometimes bfd_relax_section can do something even if
103     this is not set).  */
104#define BFD_IS_RELAXABLE 0x200
105
106  /* This may be set before writing out a BFD to request using a
107     traditional format.  For example, this is used to request that when
108     writing out an a.out object the symbols not be hashed to eliminate
109     duplicates.  */
110#define BFD_TRADITIONAL_FORMAT 0x400
111
112  /* This flag indicates that the BFD contents are actually cached
113     in memory.  If this is set, iostream points to a bfd_in_memory
114     struct.  */
115#define BFD_IN_MEMORY 0x800
116
117  /* The sections in this BFD specify a memory page.  */
118#define HAS_LOAD_PAGE 0x1000
119
120  /* This BFD has been created by the linker and doesn't correspond
121     to any input file.  */
122#define BFD_LINKER_CREATED 0x2000
123
124  /* This may be set before writing out a BFD to request that it
125     be written using values for UIDs, GIDs, timestamps, etc. that
126     will be consistent from run to run.  */
127#define BFD_DETERMINISTIC_OUTPUT 0x4000
128
129  /* Compress sections in this BFD.  */
130#define BFD_COMPRESS 0x8000
131
132  /* Decompress sections in this BFD.  */
133#define BFD_DECOMPRESS 0x10000
134
135  /* BFD is a dummy, for plugins.  */
136#define BFD_PLUGIN 0x20000
137
138  /* Flags bits to be saved in bfd_preserve_save.  */
139#define BFD_FLAGS_SAVED \
140  (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN)
141
142  /* Flags bits which are for BFD use only.  */
143#define BFD_FLAGS_FOR_BFD_USE_MASK \
144  (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
145   | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT)
146
147  /* Currently my_archive is tested before adding origin to
148     anything. I believe that this can become always an add of
149     origin, with origin set to 0 for non archive files.  */
150  ufile_ptr origin;
151
152  /* The origin in the archive of the proxy entry.  This will
153     normally be the same as origin, except for thin archives,
154     when it will contain the current offset of the proxy in the
155     thin archive rather than the offset of the bfd in its actual
156     container.  */
157  ufile_ptr proxy_origin;
158
159  /* A hash table for section names.  */
160  struct bfd_hash_table section_htab;
161
162  /* Pointer to linked list of sections.  */
163  struct bfd_section *sections;
164
165  /* The last section on the section list.  */
166  struct bfd_section *section_last;
167
168  /* The number of sections.  */
169  unsigned int section_count;
170
171  /* Stuff only useful for object files:
172     The start address.  */
173  bfd_vma start_address;
174
175  /* Used for input and output.  */
176  unsigned int symcount;
177
178  /* Symbol table for output BFD (with symcount entries).
179     Also used by the linker to cache input BFD symbols.  */
180  struct bfd_symbol  **outsymbols;
181
182  /* Used for slurped dynamic symbol tables.  */
183  unsigned int dynsymcount;
184
185  /* Pointer to structure which contains architecture information.  */
186  const struct bfd_arch_info *arch_info;
187
188  /* Stuff only useful for archives.  */
189  void *arelt_data;
190  struct bfd *my_archive;      /* The containing archive BFD.  */
191  struct bfd *archive_next;    /* The next BFD in the archive.  */
192  struct bfd *archive_head;    /* The first BFD in the archive.  */
193  struct bfd *nested_archives; /* List of nested archive in a flattened
194                                  thin archive.  */
195
196  /* A chain of BFD structures involved in a link.  */
197  struct bfd *link_next;
198
199  /* A field used by _bfd_generic_link_add_archive_symbols.  This will
200     be used only for archive elements.  */
201  int archive_pass;
202
203  /* Used by the back end to hold private data.  */
204  union
205    @{
206      struct aout_data_struct *aout_data;
207      struct artdata *aout_ar_data;
208      struct _oasys_data *oasys_obj_data;
209      struct _oasys_ar_data *oasys_ar_data;
210      struct coff_tdata *coff_obj_data;
211      struct pe_tdata *pe_obj_data;
212      struct xcoff_tdata *xcoff_obj_data;
213      struct ecoff_tdata *ecoff_obj_data;
214      struct ieee_data_struct *ieee_data;
215      struct ieee_ar_data_struct *ieee_ar_data;
216      struct srec_data_struct *srec_data;
217      struct verilog_data_struct *verilog_data;
218      struct ihex_data_struct *ihex_data;
219      struct tekhex_data_struct *tekhex_data;
220      struct elf_obj_tdata *elf_obj_data;
221      struct nlm_obj_tdata *nlm_obj_data;
222      struct bout_data_struct *bout_data;
223      struct mmo_data_struct *mmo_data;
224      struct sun_core_struct *sun_core_data;
225      struct sco5_core_struct *sco5_core_data;
226      struct trad_core_struct *trad_core_data;
227      struct som_data_struct *som_data;
228      struct hpux_core_struct *hpux_core_data;
229      struct hppabsd_core_struct *hppabsd_core_data;
230      struct sgi_core_struct *sgi_core_data;
231      struct lynx_core_struct *lynx_core_data;
232      struct osf_core_struct *osf_core_data;
233      struct cisco_core_struct *cisco_core_data;
234      struct versados_data_struct *versados_data;
235      struct netbsd_core_struct *netbsd_core_data;
236      struct mach_o_data_struct *mach_o_data;
237      struct mach_o_fat_data_struct *mach_o_fat_data;
238      struct plugin_data_struct *plugin_data;
239      struct bfd_pef_data_struct *pef_data;
240      struct bfd_pef_xlib_data_struct *pef_xlib_data;
241      struct bfd_sym_data_struct *sym_data;
242      void *any;
243    @}
244  tdata;
245
246  /* Used by the application to hold private data.  */
247  void *usrdata;
248
249  /* Where all the allocated stuff under this BFD goes.  This is a
250     struct objalloc *, but we use void * to avoid requiring the inclusion
251     of objalloc.h.  */
252  void *memory;
253
254  /* Is the file descriptor being cached?  That is, can it be closed as
255     needed, and re-opened when accessed later?  */
256  unsigned int cacheable : 1;
257
258  /* Marks whether there was a default target specified when the
259     BFD was opened. This is used to select which matching algorithm
260     to use to choose the back end.  */
261  unsigned int target_defaulted : 1;
262
263  /* ... and here: (``once'' means at least once).  */
264  unsigned int opened_once : 1;
265
266  /* Set if we have a locally maintained mtime value, rather than
267     getting it from the file each time.  */
268  unsigned int mtime_set : 1;
269
270  /* Flag set if symbols from this BFD should not be exported.  */
271  unsigned int no_export : 1;
272
273  /* Remember when output has begun, to stop strange things
274     from happening.  */
275  unsigned int output_has_begun : 1;
276
277  /* Have archive map.  */
278  unsigned int has_armap : 1;
279
280  /* Set if this is a thin archive.  */
281  unsigned int is_thin_archive : 1;
282
283  /* Set if only required symbols should be added in the link hash table for
284     this object.  Used by VMS linkers.  */
285  unsigned int selective_search : 1;
286@};
287
288@end example
289@section Error reporting
290Most BFD functions return nonzero on success (check their
291individual documentation for precise semantics).  On an error,
292they call @code{bfd_set_error} to set an error condition that callers
293can check by calling @code{bfd_get_error}.
294If that returns @code{bfd_error_system_call}, then check
295@code{errno}.
296
297The easiest way to report a BFD error to the user is to
298use @code{bfd_perror}.
299
300@subsection Type @code{bfd_error_type}
301The values returned by @code{bfd_get_error} are defined by the
302enumerated type @code{bfd_error_type}.
303
304
305@example
306
307typedef enum bfd_error
308@{
309  bfd_error_no_error = 0,
310  bfd_error_system_call,
311  bfd_error_invalid_target,
312  bfd_error_wrong_format,
313  bfd_error_wrong_object_format,
314  bfd_error_invalid_operation,
315  bfd_error_no_memory,
316  bfd_error_no_symbols,
317  bfd_error_no_armap,
318  bfd_error_no_more_archived_files,
319  bfd_error_malformed_archive,
320  bfd_error_file_not_recognized,
321  bfd_error_file_ambiguously_recognized,
322  bfd_error_no_contents,
323  bfd_error_nonrepresentable_section,
324  bfd_error_no_debug_section,
325  bfd_error_bad_value,
326  bfd_error_file_truncated,
327  bfd_error_file_too_big,
328  bfd_error_on_input,
329  bfd_error_invalid_error_code
330@}
331bfd_error_type;
332
333@end example
334@findex bfd_get_error
335@subsubsection @code{bfd_get_error}
336@strong{Synopsis}
337@example
338bfd_error_type bfd_get_error (void);
339@end example
340@strong{Description}@*
341Return the current BFD error condition.
342
343@findex bfd_set_error
344@subsubsection @code{bfd_set_error}
345@strong{Synopsis}
346@example
347void bfd_set_error (bfd_error_type error_tag, ...);
348@end example
349@strong{Description}@*
350Set the BFD error condition to be @var{error_tag}.
351If @var{error_tag} is bfd_error_on_input, then this function
352takes two more parameters, the input bfd where the error
353occurred, and the bfd_error_type error.
354
355@findex bfd_errmsg
356@subsubsection @code{bfd_errmsg}
357@strong{Synopsis}
358@example
359const char *bfd_errmsg (bfd_error_type error_tag);
360@end example
361@strong{Description}@*
362Return a string describing the error @var{error_tag}, or
363the system error if @var{error_tag} is @code{bfd_error_system_call}.
364
365@findex bfd_perror
366@subsubsection @code{bfd_perror}
367@strong{Synopsis}
368@example
369void bfd_perror (const char *message);
370@end example
371@strong{Description}@*
372Print to the standard error stream a string describing the
373last BFD error that occurred, or the last system error if
374the last BFD error was a system call failure.  If @var{message}
375is non-NULL and non-empty, the error string printed is preceded
376by @var{message}, a colon, and a space.  It is followed by a newline.
377
378@subsection BFD error handler
379Some BFD functions want to print messages describing the
380problem.  They call a BFD error handler function.  This
381function may be overridden by the program.
382
383The BFD error handler acts like printf.
384
385
386@example
387
388typedef void (*bfd_error_handler_type) (const char *, ...);
389
390@end example
391@findex bfd_set_error_handler
392@subsubsection @code{bfd_set_error_handler}
393@strong{Synopsis}
394@example
395bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
396@end example
397@strong{Description}@*
398Set the BFD error handler function.  Returns the previous
399function.
400
401@findex bfd_set_error_program_name
402@subsubsection @code{bfd_set_error_program_name}
403@strong{Synopsis}
404@example
405void bfd_set_error_program_name (const char *);
406@end example
407@strong{Description}@*
408Set the program name to use when printing a BFD error.  This
409is printed before the error message followed by a colon and
410space.  The string must not be changed after it is passed to
411this function.
412
413@findex bfd_get_error_handler
414@subsubsection @code{bfd_get_error_handler}
415@strong{Synopsis}
416@example
417bfd_error_handler_type bfd_get_error_handler (void);
418@end example
419@strong{Description}@*
420Return the BFD error handler function.
421
422@subsection BFD assert handler
423If BFD finds an internal inconsistency, the bfd assert
424handler is called with information on the BFD version, BFD
425source file and line.  If this happens, most programs linked
426against BFD are expected to want to exit with an error, or mark
427the current BFD operation as failed, so it is recommended to
428override the default handler, which just calls
429_bfd_error_handler and continues.
430
431
432@example
433
434typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
435                                         const char *bfd_version,
436                                         const char *bfd_file,
437                                         int bfd_line);
438
439@end example
440@findex bfd_set_assert_handler
441@subsubsection @code{bfd_set_assert_handler}
442@strong{Synopsis}
443@example
444bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
445@end example
446@strong{Description}@*
447Set the BFD assert handler function.  Returns the previous
448function.
449
450@findex bfd_get_assert_handler
451@subsubsection @code{bfd_get_assert_handler}
452@strong{Synopsis}
453@example
454bfd_assert_handler_type bfd_get_assert_handler (void);
455@end example
456@strong{Description}@*
457Return the BFD assert handler function.
458
459@section Miscellaneous
460
461
462@subsection Miscellaneous functions
463
464
465@findex bfd_get_reloc_upper_bound
466@subsubsection @code{bfd_get_reloc_upper_bound}
467@strong{Synopsis}
468@example
469long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
470@end example
471@strong{Description}@*
472Return the number of bytes required to store the
473relocation information associated with section @var{sect}
474attached to bfd @var{abfd}.  If an error occurs, return -1.
475
476@findex bfd_canonicalize_reloc
477@subsubsection @code{bfd_canonicalize_reloc}
478@strong{Synopsis}
479@example
480long bfd_canonicalize_reloc
481   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
482@end example
483@strong{Description}@*
484Call the back end associated with the open BFD
485@var{abfd} and translate the external form of the relocation
486information attached to @var{sec} into the internal canonical
487form.  Place the table into memory at @var{loc}, which has
488been preallocated, usually by a call to
489@code{bfd_get_reloc_upper_bound}.  Returns the number of relocs, or
490-1 on error.
491
492The @var{syms} table is also needed for horrible internal magic
493reasons.
494
495@findex bfd_set_reloc
496@subsubsection @code{bfd_set_reloc}
497@strong{Synopsis}
498@example
499void bfd_set_reloc
500   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
501@end example
502@strong{Description}@*
503Set the relocation pointer and count within
504section @var{sec} to the values @var{rel} and @var{count}.
505The argument @var{abfd} is ignored.
506
507@findex bfd_set_file_flags
508@subsubsection @code{bfd_set_file_flags}
509@strong{Synopsis}
510@example
511bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
512@end example
513@strong{Description}@*
514Set the flag word in the BFD @var{abfd} to the value @var{flags}.
515
516Possible errors are:
517@itemize @bullet
518
519@item
520@code{bfd_error_wrong_format} - The target bfd was not of object format.
521@item
522@code{bfd_error_invalid_operation} - The target bfd was open for reading.
523@item
524@code{bfd_error_invalid_operation} -
525The flag word contained a bit which was not applicable to the
526type of file.  E.g., an attempt was made to set the @code{D_PAGED} bit
527on a BFD format which does not support demand paging.
528@end itemize
529
530@findex bfd_get_arch_size
531@subsubsection @code{bfd_get_arch_size}
532@strong{Synopsis}
533@example
534int bfd_get_arch_size (bfd *abfd);
535@end example
536@strong{Description}@*
537Returns the architecture address size, in bits, as determined
538by the object file's format.  For ELF, this information is
539included in the header.
540
541@strong{Returns}@*
542Returns the arch size in bits if known, @code{-1} otherwise.
543
544@findex bfd_get_sign_extend_vma
545@subsubsection @code{bfd_get_sign_extend_vma}
546@strong{Synopsis}
547@example
548int bfd_get_sign_extend_vma (bfd *abfd);
549@end example
550@strong{Description}@*
551Indicates if the target architecture "naturally" sign extends
552an address.  Some architectures implicitly sign extend address
553values when they are converted to types larger than the size
554of an address.  For instance, bfd_get_start_address() will
555return an address sign extended to fill a bfd_vma when this is
556the case.
557
558@strong{Returns}@*
559Returns @code{1} if the target architecture is known to sign
560extend addresses, @code{0} if the target architecture is known to
561not sign extend addresses, and @code{-1} otherwise.
562
563@findex bfd_set_start_address
564@subsubsection @code{bfd_set_start_address}
565@strong{Synopsis}
566@example
567bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
568@end example
569@strong{Description}@*
570Make @var{vma} the entry point of output BFD @var{abfd}.
571
572@strong{Returns}@*
573Returns @code{TRUE} on success, @code{FALSE} otherwise.
574
575@findex bfd_get_gp_size
576@subsubsection @code{bfd_get_gp_size}
577@strong{Synopsis}
578@example
579unsigned int bfd_get_gp_size (bfd *abfd);
580@end example
581@strong{Description}@*
582Return the maximum size of objects to be optimized using the GP
583register under MIPS ECOFF.  This is typically set by the @code{-G}
584argument to the compiler, assembler or linker.
585
586@findex bfd_set_gp_size
587@subsubsection @code{bfd_set_gp_size}
588@strong{Synopsis}
589@example
590void bfd_set_gp_size (bfd *abfd, unsigned int i);
591@end example
592@strong{Description}@*
593Set the maximum size of objects to be optimized using the GP
594register under ECOFF or MIPS ELF.  This is typically set by
595the @code{-G} argument to the compiler, assembler or linker.
596
597@findex bfd_scan_vma
598@subsubsection @code{bfd_scan_vma}
599@strong{Synopsis}
600@example
601bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
602@end example
603@strong{Description}@*
604Convert, like @code{strtoul}, a numerical expression
605@var{string} into a @code{bfd_vma} integer, and return that integer.
606(Though without as many bells and whistles as @code{strtoul}.)
607The expression is assumed to be unsigned (i.e., positive).
608If given a @var{base}, it is used as the base for conversion.
609A base of 0 causes the function to interpret the string
610in hex if a leading "0x" or "0X" is found, otherwise
611in octal if a leading zero is found, otherwise in decimal.
612
613If the value would overflow, the maximum @code{bfd_vma} value is
614returned.
615
616@findex bfd_copy_private_header_data
617@subsubsection @code{bfd_copy_private_header_data}
618@strong{Synopsis}
619@example
620bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
621@end example
622@strong{Description}@*
623Copy private BFD header information from the BFD @var{ibfd} to the
624the BFD @var{obfd}.  This copies information that may require
625sections to exist, but does not require symbol tables.  Return
626@code{true} on success, @code{false} on error.
627Possible error returns are:
628
629@itemize @bullet
630
631@item
632@code{bfd_error_no_memory} -
633Not enough memory exists to create private data for @var{obfd}.
634@end itemize
635@example
636#define bfd_copy_private_header_data(ibfd, obfd) \
637     BFD_SEND (obfd, _bfd_copy_private_header_data, \
638               (ibfd, obfd))
639@end example
640
641@findex bfd_copy_private_bfd_data
642@subsubsection @code{bfd_copy_private_bfd_data}
643@strong{Synopsis}
644@example
645bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
646@end example
647@strong{Description}@*
648Copy private BFD information from the BFD @var{ibfd} to the
649the BFD @var{obfd}.  Return @code{TRUE} on success, @code{FALSE} on error.
650Possible error returns are:
651
652@itemize @bullet
653
654@item
655@code{bfd_error_no_memory} -
656Not enough memory exists to create private data for @var{obfd}.
657@end itemize
658@example
659#define bfd_copy_private_bfd_data(ibfd, obfd) \
660     BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
661               (ibfd, obfd))
662@end example
663
664@findex bfd_merge_private_bfd_data
665@subsubsection @code{bfd_merge_private_bfd_data}
666@strong{Synopsis}
667@example
668bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
669@end example
670@strong{Description}@*
671Merge private BFD information from the BFD @var{ibfd} to the
672the output file BFD @var{obfd} when linking.  Return @code{TRUE}
673on success, @code{FALSE} on error.  Possible error returns are:
674
675@itemize @bullet
676
677@item
678@code{bfd_error_no_memory} -
679Not enough memory exists to create private data for @var{obfd}.
680@end itemize
681@example
682#define bfd_merge_private_bfd_data(ibfd, obfd) \
683     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
684               (ibfd, obfd))
685@end example
686
687@findex bfd_set_private_flags
688@subsubsection @code{bfd_set_private_flags}
689@strong{Synopsis}
690@example
691bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
692@end example
693@strong{Description}@*
694Set private BFD flag information in the BFD @var{abfd}.
695Return @code{TRUE} on success, @code{FALSE} on error.  Possible error
696returns are:
697
698@itemize @bullet
699
700@item
701@code{bfd_error_no_memory} -
702Not enough memory exists to create private data for @var{obfd}.
703@end itemize
704@example
705#define bfd_set_private_flags(abfd, flags) \
706     BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
707@end example
708
709@findex Other functions
710@subsubsection @code{Other functions}
711@strong{Description}@*
712The following functions exist but have not yet been documented.
713@example
714#define bfd_sizeof_headers(abfd, info) \
715       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
716
717#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
718       BFD_SEND (abfd, _bfd_find_nearest_line, \
719                 (abfd, sec, syms, off, file, func, line))
720
721#define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
722                                            line, disc) \
723       BFD_SEND (abfd, _bfd_find_nearest_line_discriminator, \
724                 (abfd, sec, syms, off, file, func, line, disc))
725
726#define bfd_find_line(abfd, syms, sym, file, line) \
727       BFD_SEND (abfd, _bfd_find_line, \
728                 (abfd, syms, sym, file, line))
729
730#define bfd_find_inliner_info(abfd, file, func, line) \
731       BFD_SEND (abfd, _bfd_find_inliner_info, \
732                 (abfd, file, func, line))
733
734#define bfd_debug_info_start(abfd) \
735       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
736
737#define bfd_debug_info_end(abfd) \
738       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
739
740#define bfd_debug_info_accumulate(abfd, section) \
741       BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
742
743#define bfd_stat_arch_elt(abfd, stat) \
744       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
745
746#define bfd_update_armap_timestamp(abfd) \
747       BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
748
749#define bfd_set_arch_mach(abfd, arch, mach)\
750       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
751
752#define bfd_relax_section(abfd, section, link_info, again) \
753       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
754
755#define bfd_gc_sections(abfd, link_info) \
756       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
757
758#define bfd_lookup_section_flags(link_info, flag_info, section) \
759       BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
760
761#define bfd_merge_sections(abfd, link_info) \
762       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
763
764#define bfd_is_group_section(abfd, sec) \
765       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
766
767#define bfd_discard_group(abfd, sec) \
768       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
769
770#define bfd_link_hash_table_create(abfd) \
771       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
772
773#define bfd_link_hash_table_free(abfd, hash) \
774       BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
775
776#define bfd_link_add_symbols(abfd, info) \
777       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
778
779#define bfd_link_just_syms(abfd, sec, info) \
780       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
781
782#define bfd_final_link(abfd, info) \
783       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
784
785#define bfd_free_cached_info(abfd) \
786       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
787
788#define bfd_get_dynamic_symtab_upper_bound(abfd) \
789       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
790
791#define bfd_print_private_bfd_data(abfd, file)\
792       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
793
794#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
795       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
796
797#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
798       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
799                                                   dyncount, dynsyms, ret))
800
801#define bfd_get_dynamic_reloc_upper_bound(abfd) \
802       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
803
804#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
805       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
806
807extern bfd_byte *bfd_get_relocated_section_contents
808  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
809   bfd_boolean, asymbol **);
810
811@end example
812
813@findex bfd_alt_mach_code
814@subsubsection @code{bfd_alt_mach_code}
815@strong{Synopsis}
816@example
817bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
818@end example
819@strong{Description}@*
820When more than one machine code number is available for the
821same machine type, this function can be used to switch between
822the preferred one (alternative == 0) and any others.  Currently,
823only ELF supports this feature, with up to two alternate
824machine codes.
825
826
827@example
828struct bfd_preserve
829@{
830  void *marker;
831  void *tdata;
832  flagword flags;
833  const struct bfd_arch_info *arch_info;
834  struct bfd_section *sections;
835  struct bfd_section *section_last;
836  unsigned int section_count;
837  struct bfd_hash_table section_htab;
838@};
839
840@end example
841@findex bfd_preserve_save
842@subsubsection @code{bfd_preserve_save}
843@strong{Synopsis}
844@example
845bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
846@end example
847@strong{Description}@*
848When testing an object for compatibility with a particular
849target back-end, the back-end object_p function needs to set
850up certain fields in the bfd on successfully recognizing the
851object.  This typically happens in a piecemeal fashion, with
852failures possible at many points.  On failure, the bfd is
853supposed to be restored to its initial state, which is
854virtually impossible.  However, restoring a subset of the bfd
855state works in practice.  This function stores the subset and
856reinitializes the bfd.
857
858@findex bfd_preserve_restore
859@subsubsection @code{bfd_preserve_restore}
860@strong{Synopsis}
861@example
862void bfd_preserve_restore (bfd *, struct bfd_preserve *);
863@end example
864@strong{Description}@*
865This function restores bfd state saved by bfd_preserve_save.
866If MARKER is non-NULL in struct bfd_preserve then that block
867and all subsequently bfd_alloc'd memory is freed.
868
869@findex bfd_preserve_finish
870@subsubsection @code{bfd_preserve_finish}
871@strong{Synopsis}
872@example
873void bfd_preserve_finish (bfd *, struct bfd_preserve *);
874@end example
875@strong{Description}@*
876This function should be called when the bfd state saved by
877bfd_preserve_save is no longer needed.  ie. when the back-end
878object_p function returns with success.
879
880@findex bfd_emul_get_maxpagesize
881@subsubsection @code{bfd_emul_get_maxpagesize}
882@strong{Synopsis}
883@example
884bfd_vma bfd_emul_get_maxpagesize (const char *);
885@end example
886@strong{Description}@*
887Returns the maximum page size, in bytes, as determined by
888emulation.
889
890@strong{Returns}@*
891Returns the maximum page size in bytes for ELF, 0 otherwise.
892
893@findex bfd_emul_set_maxpagesize
894@subsubsection @code{bfd_emul_set_maxpagesize}
895@strong{Synopsis}
896@example
897void bfd_emul_set_maxpagesize (const char *, bfd_vma);
898@end example
899@strong{Description}@*
900For ELF, set the maximum page size for the emulation.  It is
901a no-op for other formats.
902
903@findex bfd_emul_get_commonpagesize
904@subsubsection @code{bfd_emul_get_commonpagesize}
905@strong{Synopsis}
906@example
907bfd_vma bfd_emul_get_commonpagesize (const char *);
908@end example
909@strong{Description}@*
910Returns the common page size, in bytes, as determined by
911emulation.
912
913@strong{Returns}@*
914Returns the common page size in bytes for ELF, 0 otherwise.
915
916@findex bfd_emul_set_commonpagesize
917@subsubsection @code{bfd_emul_set_commonpagesize}
918@strong{Synopsis}
919@example
920void bfd_emul_set_commonpagesize (const char *, bfd_vma);
921@end example
922@strong{Description}@*
923For ELF, set the common page size for the emulation.  It is
924a no-op for other formats.
925
926@findex bfd_demangle
927@subsubsection @code{bfd_demangle}
928@strong{Synopsis}
929@example
930char *bfd_demangle (bfd *, const char *, int);
931@end example
932@strong{Description}@*
933Wrapper around cplus_demangle.  Strips leading underscores and
934other such chars that would otherwise confuse the demangler.
935If passed a g++ v3 ABI mangled name, returns a buffer allocated
936with malloc holding the demangled name.  Returns NULL otherwise
937and on memory alloc failure.
938
939