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:
_bfd_new_bfd, then call
bfd_find_targetwith the target string supplied to
bfd_openrand the new BFD pointer.
bfd_find_target, look up the environment variable
GNUTARGETand use that as the target string.
NULL, or the target string is
default, then use the first item in the target vector as the target type, and set
target_defaultedin the BFD to cause
bfd_check_formatto loop through all the targets. See bfd_target. See Formats.
bfd_openrattempts 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.
target_defaulted has been set, each possible target
type is tried to see if it recognizes the specified format.
TRUE when the caller guesses right.