hc
2023-02-13 e440ec23c5a540cdd3f7464e8779219be6fd3d95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<!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-2016 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>