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