bfd: Targets
2.12 Targets
============
*Description*
Each port of BFD to a different machine requires the creation of a
target back end. All the back end provides to the root part of BFD is a
structure containing pointers to functions which perform certain low
level operations on files. BFD translates the applications's requests
through a pointer into calls to the back end routines.
When a file is opened with 'bfd_openr', its format and target are
unknown. BFD uses various mechanisms to determine how to interpret the
file. The operations performed are:
* Create a BFD by calling the internal routine '_bfd_new_bfd', then
call 'bfd_find_target' with the target string supplied to
'bfd_openr' and the new BFD pointer.
* If a null target string was provided to 'bfd_find_target', look up
the environment variable 'GNUTARGET' and use that as the target
string.
* If the target string is still 'NULL', or the target string is
'default', then use the first item in the target vector as the
target type, and set 'target_defaulted' in the BFD to cause
'bfd_check_format' to loop through all the targets.
bfd_target. Formats.
* Otherwise, inspect the elements in the target vector one by one,
until a match on target name is found. When found, use it.
* Otherwise return the error 'bfd_error_invalid_target' to
'bfd_openr'.
* 'bfd_openr' attempts to open the file using 'bfd_open_file', and
returns the BFD.
Once the BFD has been opened and the target selected, the file format
may be determined. This is done by calling 'bfd_check_format' on the
BFD with a suggested format. If 'target_defaulted' has been set, each
possible target type is tried to see if it recognizes the specified
format. 'bfd_check_format' returns 'TRUE' when the caller guesses
right.
Menu