Untitled Document: Targets

Next: Architectures, Previous: Core Files, Up: BFD front end   [Contents][Index]


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. See 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.

• bfd_target:   

Next: Architectures, Previous: Core Files, Up: BFD front end   [Contents][Index]