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.  See
      bfd_target.  SeeFormats.
 
    * 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