<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file documents the BFD library.

Copyright (C) 1991-2015 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "GNU General Public License" and "Funding
Free Software", the Front-Cover texts being (a) (see below), and with
the Back-Cover Texts being (b) (see below).  A copy of the license is
included in the section entitled "GNU Free Documentation License".

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Untitled Document: Targets</title>

<meta name="description" content="Untitled Document: Targets">
<meta name="keywords" content="Untitled Document: Targets">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="BFD-Index.html#BFD-Index" rel="index" title="BFD Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="BFD-front-end.html#BFD-front-end" rel="up" title="BFD front end">
<link href="bfd_005ftarget.html#bfd_005ftarget" rel="next" title="bfd_target">
<link href="Core-Files.html#Core-Files" rel="prev" title="Core Files">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Targets"></a>
<div class="header">
<p>
Next: <a href="Architectures.html#Architectures" accesskey="n" rel="next">Architectures</a>, Previous: <a href="Core-Files.html#Core-Files" accesskey="p" rel="prev">Core Files</a>, Up: <a href="BFD-front-end.html#BFD-front-end" accesskey="u" rel="up">BFD front end</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="BFD-Index.html#BFD-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Targets-1"></a>
<h3 class="section">2.12 Targets</h3>


<p><strong>Description</strong><br>
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&rsquo;s requests through a pointer into
calls to the back end routines.
</p>
<p>When a file is opened with <code>bfd_openr</code>, its format and
target are unknown. BFD uses various mechanisms to determine
how to interpret the file. The operations performed are:
</p>
<ul>
<li> Create a BFD by calling the internal routine
<code>_bfd_new_bfd</code>, then call <code>bfd_find_target</code> with the
target string supplied to <code>bfd_openr</code> and the new BFD pointer.

</li><li> If a null target string was provided to <code>bfd_find_target</code>,
look up the environment variable <code>GNUTARGET</code> and use
that as the target string.

</li><li> If the target string is still <code>NULL</code>, or the target string is
<code>default</code>, then use the first item in the target vector
as the target type, and set <code>target_defaulted</code> in the BFD to
cause <code>bfd_check_format</code> to loop through all the targets.
See <a href="bfd_005ftarget.html#bfd_005ftarget">bfd_target</a>.  See <a href="Formats.html#Formats">Formats</a>.

</li><li> Otherwise, inspect the elements in the target vector
one by one, until a match on target name is found. When found,
use it.

</li><li> Otherwise return the error <code>bfd_error_invalid_target</code> to
<code>bfd_openr</code>.

</li><li> <code>bfd_openr</code> attempts to open the file using
<code>bfd_open_file</code>, and returns the BFD.
</li></ul>
<p>Once the BFD has been opened and the target selected, the file
format may be determined. This is done by calling
<code>bfd_check_format</code> on the BFD with a suggested format.
If <code>target_defaulted</code> has been set, each possible target
type is tried to see if it recognizes the specified format.
<code>bfd_check_format</code> returns <code>TRUE</code> when the caller guesses right.
</p><table class="menu" border="0" cellspacing="0">
<tr><td align="left" valign="top">&bull; <a href="bfd_005ftarget.html#bfd_005ftarget" accesskey="1">bfd_target</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
</table>

<hr>
<div class="header">
<p>
Next: <a href="Architectures.html#Architectures" accesskey="n" rel="next">Architectures</a>, Previous: <a href="Core-Files.html#Core-Files" accesskey="p" rel="prev">Core Files</a>, Up: <a href="BFD-front-end.html#BFD-front-end" accesskey="u" rel="up">BFD front end</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="BFD-Index.html#BFD-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
