1 |
24 |
jeremybenn |
This is bfd.info, produced by makeinfo version 4.8 from bfd.texinfo.
|
2 |
|
|
|
3 |
|
|
START-INFO-DIR-ENTRY
|
4 |
|
|
* Bfd: (bfd). The Binary File Descriptor library.
|
5 |
|
|
END-INFO-DIR-ENTRY
|
6 |
|
|
|
7 |
|
|
This file documents the BFD library.
|
8 |
|
|
|
9 |
|
|
Copyright (C) 1991, 2000, 2001, 2003, 2006, 2007 Free Software
|
10 |
|
|
Foundation, Inc.
|
11 |
|
|
|
12 |
|
|
Permission is granted to copy, distribute and/or modify this document
|
13 |
|
|
under the terms of the GNU Free Documentation License, Version 1.1 or
|
14 |
|
|
any later version published by the Free Software Foundation; with the
|
15 |
|
|
Invariant Sections being "GNU General Public License" and "Funding Free
|
16 |
|
|
Software", the Front-Cover texts being (a) (see below), and with the
|
17 |
|
|
Back-Cover Texts being (b) (see below). A copy of the license is
|
18 |
|
|
included in the section entitled "GNU Free Documentation License".
|
19 |
|
|
|
20 |
|
|
(a) The FSF's Front-Cover Text is:
|
21 |
|
|
|
22 |
|
|
A GNU Manual
|
23 |
|
|
|
24 |
|
|
(b) The FSF's Back-Cover Text is:
|
25 |
|
|
|
26 |
|
|
You have freedom to copy and modify this GNU Manual, like GNU
|
27 |
|
|
software. Copies published by the Free Software Foundation raise
|
28 |
|
|
funds for GNU development.
|
29 |
|
|
|
30 |
|
|
|
31 |
|
|
File: bfd.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir)
|
32 |
|
|
|
33 |
|
|
This file documents the binary file descriptor library libbfd.
|
34 |
|
|
|
35 |
|
|
* Menu:
|
36 |
|
|
|
37 |
|
|
* Overview:: Overview of BFD
|
38 |
|
|
* BFD front end:: BFD front end
|
39 |
|
|
* BFD back ends:: BFD back ends
|
40 |
|
|
* GNU Free Documentation License:: GNU Free Documentation License
|
41 |
|
|
* BFD Index:: BFD Index
|
42 |
|
|
|
43 |
|
|
|
44 |
|
|
File: bfd.info, Node: Overview, Next: BFD front end, Prev: Top, Up: Top
|
45 |
|
|
|
46 |
|
|
1 Introduction
|
47 |
|
|
**************
|
48 |
|
|
|
49 |
|
|
BFD is a package which allows applications to use the same routines to
|
50 |
|
|
operate on object files whatever the object file format. A new object
|
51 |
|
|
file format can be supported simply by creating a new BFD back end and
|
52 |
|
|
adding it to the library.
|
53 |
|
|
|
54 |
|
|
BFD is split into two parts: the front end, and the back ends (one
|
55 |
|
|
for each object file format).
|
56 |
|
|
* The front end of BFD provides the interface to the user. It manages
|
57 |
|
|
memory and various canonical data structures. The front end also
|
58 |
|
|
decides which back end to use and when to call back end routines.
|
59 |
|
|
|
60 |
|
|
* The back ends provide BFD its view of the real world. Each back
|
61 |
|
|
end provides a set of calls which the BFD front end can use to
|
62 |
|
|
maintain its canonical form. The back ends also may keep around
|
63 |
|
|
information for their own use, for greater efficiency.
|
64 |
|
|
|
65 |
|
|
* Menu:
|
66 |
|
|
|
67 |
|
|
* History:: History
|
68 |
|
|
* How It Works:: How It Works
|
69 |
|
|
* What BFD Version 2 Can Do:: What BFD Version 2 Can Do
|
70 |
|
|
|
71 |
|
|
|
72 |
|
|
File: bfd.info, Node: History, Next: How It Works, Prev: Overview, Up: Overview
|
73 |
|
|
|
74 |
|
|
1.1 History
|
75 |
|
|
===========
|
76 |
|
|
|
77 |
|
|
One spur behind BFD was the desire, on the part of the GNU 960 team at
|
78 |
|
|
Intel Oregon, for interoperability of applications on their COFF and
|
79 |
|
|
b.out file formats. Cygnus was providing GNU support for the team, and
|
80 |
|
|
was contracted to provide the required functionality.
|
81 |
|
|
|
82 |
|
|
The name came from a conversation David Wallace was having with
|
83 |
|
|
Richard Stallman about the library: RMS said that it would be quite
|
84 |
|
|
hard--David said "BFD". Stallman was right, but the name stuck.
|
85 |
|
|
|
86 |
|
|
At the same time, Ready Systems wanted much the same thing, but for
|
87 |
|
|
different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k
|
88 |
|
|
coff.
|
89 |
|
|
|
90 |
|
|
BFD was first implemented by members of Cygnus Support; Steve
|
91 |
|
|
Chamberlain (`sac@cygnus.com'), John Gilmore (`gnu@cygnus.com'), K.
|
92 |
|
|
Richard Pixley (`rich@cygnus.com') and David Henkel-Wallace
|
93 |
|
|
(`gumby@cygnus.com').
|
94 |
|
|
|
95 |
|
|
|
96 |
|
|
File: bfd.info, Node: How It Works, Next: What BFD Version 2 Can Do, Prev: History, Up: Overview
|
97 |
|
|
|
98 |
|
|
1.2 How To Use BFD
|
99 |
|
|
==================
|
100 |
|
|
|
101 |
|
|
To use the library, include `bfd.h' and link with `libbfd.a'.
|
102 |
|
|
|
103 |
|
|
BFD provides a common interface to the parts of an object file for a
|
104 |
|
|
calling application.
|
105 |
|
|
|
106 |
|
|
When an application successfully opens a target file (object,
|
107 |
|
|
archive, or whatever), a pointer to an internal structure is returned.
|
108 |
|
|
This pointer points to a structure called `bfd', described in `bfd.h'.
|
109 |
|
|
Our convention is to call this pointer a BFD, and instances of it
|
110 |
|
|
within code `abfd'. All operations on the target object file are
|
111 |
|
|
applied as methods to the BFD. The mapping is defined within `bfd.h'
|
112 |
|
|
in a set of macros, all beginning with `bfd_' to reduce namespace
|
113 |
|
|
pollution.
|
114 |
|
|
|
115 |
|
|
For example, this sequence does what you would probably expect:
|
116 |
|
|
return the number of sections in an object file attached to a BFD
|
117 |
|
|
`abfd'.
|
118 |
|
|
|
119 |
|
|
#include "bfd.h"
|
120 |
|
|
|
121 |
|
|
unsigned int number_of_sections (abfd)
|
122 |
|
|
bfd *abfd;
|
123 |
|
|
{
|
124 |
|
|
return bfd_count_sections (abfd);
|
125 |
|
|
}
|
126 |
|
|
|
127 |
|
|
The abstraction used within BFD is that an object file has:
|
128 |
|
|
|
129 |
|
|
* a header,
|
130 |
|
|
|
131 |
|
|
* a number of sections containing raw data (*note Sections::),
|
132 |
|
|
|
133 |
|
|
* a set of relocations (*note Relocations::), and
|
134 |
|
|
|
135 |
|
|
* some symbol information (*note Symbols::).
|
136 |
|
|
Also, BFDs opened for archives have the additional attribute of an
|
137 |
|
|
index and contain subordinate BFDs. This approach is fine for a.out and
|
138 |
|
|
coff, but loses efficiency when applied to formats such as S-records and
|
139 |
|
|
IEEE-695.
|
140 |
|
|
|
141 |
|
|
|
142 |
|
|
File: bfd.info, Node: What BFD Version 2 Can Do, Prev: How It Works, Up: Overview
|
143 |
|
|
|
144 |
|
|
1.3 What BFD Version 2 Can Do
|
145 |
|
|
=============================
|
146 |
|
|
|
147 |
|
|
When an object file is opened, BFD subroutines automatically determine
|
148 |
|
|
the format of the input object file. They then build a descriptor in
|
149 |
|
|
memory with pointers to routines that will be used to access elements of
|
150 |
|
|
the object file's data structures.
|
151 |
|
|
|
152 |
|
|
As different information from the object files is required, BFD
|
153 |
|
|
reads from different sections of the file and processes them. For
|
154 |
|
|
example, a very common operation for the linker is processing symbol
|
155 |
|
|
tables. Each BFD back end provides a routine for converting between
|
156 |
|
|
the object file's representation of symbols and an internal canonical
|
157 |
|
|
format. When the linker asks for the symbol table of an object file, it
|
158 |
|
|
calls through a memory pointer to the routine from the relevant BFD
|
159 |
|
|
back end which reads and converts the table into a canonical form. The
|
160 |
|
|
linker then operates upon the canonical form. When the link is finished
|
161 |
|
|
and the linker writes the output file's symbol table, another BFD back
|
162 |
|
|
end routine is called to take the newly created symbol table and
|
163 |
|
|
convert it into the chosen output format.
|
164 |
|
|
|
165 |
|
|
* Menu:
|
166 |
|
|
|
167 |
|
|
* BFD information loss:: Information Loss
|
168 |
|
|
* Canonical format:: The BFD canonical object-file format
|
169 |
|
|
|
170 |
|
|
|
171 |
|
|
File: bfd.info, Node: BFD information loss, Next: Canonical format, Up: What BFD Version 2 Can Do
|
172 |
|
|
|
173 |
|
|
1.3.1 Information Loss
|
174 |
|
|
----------------------
|
175 |
|
|
|
176 |
|
|
_Information can be lost during output._ The output formats supported
|
177 |
|
|
by BFD do not provide identical facilities, and information which can
|
178 |
|
|
be described in one form has nowhere to go in another format. One
|
179 |
|
|
example of this is alignment information in `b.out'. There is nowhere
|
180 |
|
|
in an `a.out' format file to store alignment information on the
|
181 |
|
|
contained data, so when a file is linked from `b.out' and an `a.out'
|
182 |
|
|
image is produced, alignment information will not propagate to the
|
183 |
|
|
output file. (The linker will still use the alignment information
|
184 |
|
|
internally, so the link is performed correctly).
|
185 |
|
|
|
186 |
|
|
Another example is COFF section names. COFF files may contain an
|
187 |
|
|
unlimited number of sections, each one with a textual section name. If
|
188 |
|
|
the target of the link is a format which does not have many sections
|
189 |
|
|
(e.g., `a.out') or has sections without names (e.g., the Oasys format),
|
190 |
|
|
the link cannot be done simply. You can circumvent this problem by
|
191 |
|
|
describing the desired input-to-output section mapping with the linker
|
192 |
|
|
command language.
|
193 |
|
|
|
194 |
|
|
_Information can be lost during canonicalization._ The BFD internal
|
195 |
|
|
canonical form of the external formats is not exhaustive; there are
|
196 |
|
|
structures in input formats for which there is no direct representation
|
197 |
|
|
internally. This means that the BFD back ends cannot maintain all
|
198 |
|
|
possible data richness through the transformation between external to
|
199 |
|
|
internal and back to external formats.
|
200 |
|
|
|
201 |
|
|
This limitation is only a problem when an application reads one
|
202 |
|
|
format and writes another. Each BFD back end is responsible for
|
203 |
|
|
maintaining as much data as possible, and the internal BFD canonical
|
204 |
|
|
form has structures which are opaque to the BFD core, and exported only
|
205 |
|
|
to the back ends. When a file is read in one format, the canonical form
|
206 |
|
|
is generated for BFD and the application. At the same time, the back
|
207 |
|
|
end saves away any information which may otherwise be lost. If the data
|
208 |
|
|
is then written back in the same format, the back end routine will be
|
209 |
|
|
able to use the canonical form provided by the BFD core as well as the
|
210 |
|
|
information it prepared earlier. Since there is a great deal of
|
211 |
|
|
commonality between back ends, there is no information lost when
|
212 |
|
|
linking or copying big endian COFF to little endian COFF, or `a.out' to
|
213 |
|
|
`b.out'. When a mixture of formats is linked, the information is only
|
214 |
|
|
lost from the files whose format differs from the destination.
|
215 |
|
|
|
216 |
|
|
|
217 |
|
|
File: bfd.info, Node: Canonical format, Prev: BFD information loss, Up: What BFD Version 2 Can Do
|
218 |
|
|
|
219 |
|
|
1.3.2 The BFD canonical object-file format
|
220 |
|
|
------------------------------------------
|
221 |
|
|
|
222 |
|
|
The greatest potential for loss of information occurs when there is the
|
223 |
|
|
least overlap between the information provided by the source format,
|
224 |
|
|
that stored by the canonical format, and that needed by the destination
|
225 |
|
|
format. A brief description of the canonical form may help you
|
226 |
|
|
understand which kinds of data you can count on preserving across
|
227 |
|
|
conversions.
|
228 |
|
|
|
229 |
|
|
_files_
|
230 |
|
|
Information stored on a per-file basis includes target machine
|
231 |
|
|
architecture, particular implementation format type, a demand
|
232 |
|
|
pageable bit, and a write protected bit. Information like Unix
|
233 |
|
|
magic numbers is not stored here--only the magic numbers' meaning,
|
234 |
|
|
so a `ZMAGIC' file would have both the demand pageable bit and the
|
235 |
|
|
write protected text bit set. The byte order of the target is
|
236 |
|
|
stored on a per-file basis, so that big- and little-endian object
|
237 |
|
|
files may be used with one another.
|
238 |
|
|
|
239 |
|
|
_sections_
|
240 |
|
|
Each section in the input file contains the name of the section,
|
241 |
|
|
the section's original address in the object file, size and
|
242 |
|
|
alignment information, various flags, and pointers into other BFD
|
243 |
|
|
data structures.
|
244 |
|
|
|
245 |
|
|
_symbols_
|
246 |
|
|
Each symbol contains a pointer to the information for the object
|
247 |
|
|
file which originally defined it, its name, its value, and various
|
248 |
|
|
flag bits. When a BFD back end reads in a symbol table, it
|
249 |
|
|
relocates all symbols to make them relative to the base of the
|
250 |
|
|
section where they were defined. Doing this ensures that each
|
251 |
|
|
symbol points to its containing section. Each symbol also has a
|
252 |
|
|
varying amount of hidden private data for the BFD back end. Since
|
253 |
|
|
the symbol points to the original file, the private data format
|
254 |
|
|
for that symbol is accessible. `ld' can operate on a collection
|
255 |
|
|
of symbols of wildly different formats without problems.
|
256 |
|
|
|
257 |
|
|
Normal global and simple local symbols are maintained on output,
|
258 |
|
|
so an output file (no matter its format) will retain symbols
|
259 |
|
|
pointing to functions and to global, static, and common variables.
|
260 |
|
|
Some symbol information is not worth retaining; in `a.out', type
|
261 |
|
|
information is stored in the symbol table as long symbol names.
|
262 |
|
|
This information would be useless to most COFF debuggers; the
|
263 |
|
|
linker has command line switches to allow users to throw it away.
|
264 |
|
|
|
265 |
|
|
There is one word of type information within the symbol, so if the
|
266 |
|
|
format supports symbol type information within symbols (for
|
267 |
|
|
example, COFF, IEEE, Oasys) and the type is simple enough to fit
|
268 |
|
|
within one word (nearly everything but aggregates), the
|
269 |
|
|
information will be preserved.
|
270 |
|
|
|
271 |
|
|
_relocation level_
|
272 |
|
|
Each canonical BFD relocation record contains a pointer to the
|
273 |
|
|
symbol to relocate to, the offset of the data to relocate, the
|
274 |
|
|
section the data is in, and a pointer to a relocation type
|
275 |
|
|
descriptor. Relocation is performed by passing messages through
|
276 |
|
|
the relocation type descriptor and the symbol pointer. Therefore,
|
277 |
|
|
relocations can be performed on output data using a relocation
|
278 |
|
|
method that is only available in one of the input formats. For
|
279 |
|
|
instance, Oasys provides a byte relocation format. A relocation
|
280 |
|
|
record requesting this relocation type would point indirectly to a
|
281 |
|
|
routine to perform this, so the relocation may be performed on a
|
282 |
|
|
byte being written to a 68k COFF file, even though 68k COFF has no
|
283 |
|
|
such relocation type.
|
284 |
|
|
|
285 |
|
|
_line numbers_
|
286 |
|
|
Object formats can contain, for debugging purposes, some form of
|
287 |
|
|
mapping between symbols, source line numbers, and addresses in the
|
288 |
|
|
output file. These addresses have to be relocated along with the
|
289 |
|
|
symbol information. Each symbol with an associated list of line
|
290 |
|
|
number records points to the first record of the list. The head
|
291 |
|
|
of a line number list consists of a pointer to the symbol, which
|
292 |
|
|
allows finding out the address of the function whose line number
|
293 |
|
|
is being described. The rest of the list is made up of pairs:
|
294 |
|
|
offsets into the section and line numbers. Any format which can
|
295 |
|
|
simply derive this information can pass it successfully between
|
296 |
|
|
formats (COFF, IEEE and Oasys).
|
297 |
|
|
|
298 |
|
|
|
299 |
|
|
File: bfd.info, Node: BFD front end, Next: BFD back ends, Prev: Overview, Up: Top
|
300 |
|
|
|
301 |
|
|
2 BFD Front End
|
302 |
|
|
***************
|
303 |
|
|
|
304 |
|
|
2.1 `typedef bfd'
|
305 |
|
|
=================
|
306 |
|
|
|
307 |
|
|
A BFD has type `bfd'; objects of this type are the cornerstone of any
|
308 |
|
|
application using BFD. Using BFD consists of making references though
|
309 |
|
|
the BFD and to data in the BFD.
|
310 |
|
|
|
311 |
|
|
Here is the structure that defines the type `bfd'. It contains the
|
312 |
|
|
major data about the file and pointers to the rest of the data.
|
313 |
|
|
|
314 |
|
|
|
315 |
|
|
struct bfd
|
316 |
|
|
{
|
317 |
|
|
/* A unique identifier of the BFD */
|
318 |
|
|
unsigned int id;
|
319 |
|
|
|
320 |
|
|
/* The filename the application opened the BFD with. */
|
321 |
|
|
const char *filename;
|
322 |
|
|
|
323 |
|
|
/* A pointer to the target jump table. */
|
324 |
|
|
const struct bfd_target *xvec;
|
325 |
|
|
|
326 |
|
|
/* The IOSTREAM, and corresponding IO vector that provide access
|
327 |
|
|
to the file backing the BFD. */
|
328 |
|
|
void *iostream;
|
329 |
|
|
const struct bfd_iovec *iovec;
|
330 |
|
|
|
331 |
|
|
/* Is the file descriptor being cached? That is, can it be closed as
|
332 |
|
|
needed, and re-opened when accessed later? */
|
333 |
|
|
bfd_boolean cacheable;
|
334 |
|
|
|
335 |
|
|
/* Marks whether there was a default target specified when the
|
336 |
|
|
BFD was opened. This is used to select which matching algorithm
|
337 |
|
|
to use to choose the back end. */
|
338 |
|
|
bfd_boolean target_defaulted;
|
339 |
|
|
|
340 |
|
|
/* The caching routines use these to maintain a
|
341 |
|
|
least-recently-used list of BFDs. */
|
342 |
|
|
struct bfd *lru_prev, *lru_next;
|
343 |
|
|
|
344 |
|
|
/* When a file is closed by the caching routines, BFD retains
|
345 |
|
|
state information on the file here... */
|
346 |
|
|
ufile_ptr where;
|
347 |
|
|
|
348 |
|
|
/* ... and here: (``once'' means at least once). */
|
349 |
|
|
bfd_boolean opened_once;
|
350 |
|
|
|
351 |
|
|
/* Set if we have a locally maintained mtime value, rather than
|
352 |
|
|
getting it from the file each time. */
|
353 |
|
|
bfd_boolean mtime_set;
|
354 |
|
|
|
355 |
|
|
/* File modified time, if mtime_set is TRUE. */
|
356 |
|
|
long mtime;
|
357 |
|
|
|
358 |
|
|
/* Reserved for an unimplemented file locking extension. */
|
359 |
|
|
int ifd;
|
360 |
|
|
|
361 |
|
|
/* The format which belongs to the BFD. (object, core, etc.) */
|
362 |
|
|
bfd_format format;
|
363 |
|
|
|
364 |
|
|
/* The direction with which the BFD was opened. */
|
365 |
|
|
enum bfd_direction
|
366 |
|
|
{
|
367 |
|
|
no_direction = 0,
|
368 |
|
|
read_direction = 1,
|
369 |
|
|
write_direction = 2,
|
370 |
|
|
both_direction = 3
|
371 |
|
|
}
|
372 |
|
|
direction;
|
373 |
|
|
|
374 |
|
|
/* Format_specific flags. */
|
375 |
|
|
flagword flags;
|
376 |
|
|
|
377 |
|
|
/* Currently my_archive is tested before adding origin to
|
378 |
|
|
anything. I believe that this can become always an add of
|
379 |
|
|
origin, with origin set to 0 for non archive files. */
|
380 |
|
|
ufile_ptr origin;
|
381 |
|
|
|
382 |
|
|
/* Remember when output has begun, to stop strange things
|
383 |
|
|
from happening. */
|
384 |
|
|
bfd_boolean output_has_begun;
|
385 |
|
|
|
386 |
|
|
/* A hash table for section names. */
|
387 |
|
|
struct bfd_hash_table section_htab;
|
388 |
|
|
|
389 |
|
|
/* Pointer to linked list of sections. */
|
390 |
|
|
struct bfd_section *sections;
|
391 |
|
|
|
392 |
|
|
/* The last section on the section list. */
|
393 |
|
|
struct bfd_section *section_last;
|
394 |
|
|
|
395 |
|
|
/* The number of sections. */
|
396 |
|
|
unsigned int section_count;
|
397 |
|
|
|
398 |
|
|
/* Stuff only useful for object files:
|
399 |
|
|
The start address. */
|
400 |
|
|
bfd_vma start_address;
|
401 |
|
|
|
402 |
|
|
/* Used for input and output. */
|
403 |
|
|
unsigned int symcount;
|
404 |
|
|
|
405 |
|
|
/* Symbol table for output BFD (with symcount entries). */
|
406 |
|
|
struct bfd_symbol **outsymbols;
|
407 |
|
|
|
408 |
|
|
/* Used for slurped dynamic symbol tables. */
|
409 |
|
|
unsigned int dynsymcount;
|
410 |
|
|
|
411 |
|
|
/* Pointer to structure which contains architecture information. */
|
412 |
|
|
const struct bfd_arch_info *arch_info;
|
413 |
|
|
|
414 |
|
|
/* Flag set if symbols from this BFD should not be exported. */
|
415 |
|
|
bfd_boolean no_export;
|
416 |
|
|
|
417 |
|
|
/* Stuff only useful for archives. */
|
418 |
|
|
void *arelt_data;
|
419 |
|
|
struct bfd *my_archive; /* The containing archive BFD. */
|
420 |
|
|
struct bfd *archive_next; /* The next BFD in the archive. */
|
421 |
|
|
struct bfd *archive_head; /* The first BFD in the archive. */
|
422 |
|
|
bfd_boolean has_armap;
|
423 |
|
|
|
424 |
|
|
/* A chain of BFD structures involved in a link. */
|
425 |
|
|
struct bfd *link_next;
|
426 |
|
|
|
427 |
|
|
/* A field used by _bfd_generic_link_add_archive_symbols. This will
|
428 |
|
|
be used only for archive elements. */
|
429 |
|
|
int archive_pass;
|
430 |
|
|
|
431 |
|
|
/* Used by the back end to hold private data. */
|
432 |
|
|
union
|
433 |
|
|
{
|
434 |
|
|
struct aout_data_struct *aout_data;
|
435 |
|
|
struct artdata *aout_ar_data;
|
436 |
|
|
struct _oasys_data *oasys_obj_data;
|
437 |
|
|
struct _oasys_ar_data *oasys_ar_data;
|
438 |
|
|
struct coff_tdata *coff_obj_data;
|
439 |
|
|
struct pe_tdata *pe_obj_data;
|
440 |
|
|
struct xcoff_tdata *xcoff_obj_data;
|
441 |
|
|
struct ecoff_tdata *ecoff_obj_data;
|
442 |
|
|
struct ieee_data_struct *ieee_data;
|
443 |
|
|
struct ieee_ar_data_struct *ieee_ar_data;
|
444 |
|
|
struct srec_data_struct *srec_data;
|
445 |
|
|
struct ihex_data_struct *ihex_data;
|
446 |
|
|
struct tekhex_data_struct *tekhex_data;
|
447 |
|
|
struct elf_obj_tdata *elf_obj_data;
|
448 |
|
|
struct nlm_obj_tdata *nlm_obj_data;
|
449 |
|
|
struct bout_data_struct *bout_data;
|
450 |
|
|
struct mmo_data_struct *mmo_data;
|
451 |
|
|
struct sun_core_struct *sun_core_data;
|
452 |
|
|
struct sco5_core_struct *sco5_core_data;
|
453 |
|
|
struct trad_core_struct *trad_core_data;
|
454 |
|
|
struct som_data_struct *som_data;
|
455 |
|
|
struct hpux_core_struct *hpux_core_data;
|
456 |
|
|
struct hppabsd_core_struct *hppabsd_core_data;
|
457 |
|
|
struct sgi_core_struct *sgi_core_data;
|
458 |
|
|
struct lynx_core_struct *lynx_core_data;
|
459 |
|
|
struct osf_core_struct *osf_core_data;
|
460 |
|
|
struct cisco_core_struct *cisco_core_data;
|
461 |
|
|
struct versados_data_struct *versados_data;
|
462 |
|
|
struct netbsd_core_struct *netbsd_core_data;
|
463 |
|
|
struct mach_o_data_struct *mach_o_data;
|
464 |
|
|
struct mach_o_fat_data_struct *mach_o_fat_data;
|
465 |
|
|
struct bfd_pef_data_struct *pef_data;
|
466 |
|
|
struct bfd_pef_xlib_data_struct *pef_xlib_data;
|
467 |
|
|
struct bfd_sym_data_struct *sym_data;
|
468 |
|
|
void *any;
|
469 |
|
|
}
|
470 |
|
|
tdata;
|
471 |
|
|
|
472 |
|
|
/* Used by the application to hold private data. */
|
473 |
|
|
void *usrdata;
|
474 |
|
|
|
475 |
|
|
/* Where all the allocated stuff under this BFD goes. This is a
|
476 |
|
|
struct objalloc *, but we use void * to avoid requiring the inclusion
|
477 |
|
|
of objalloc.h. */
|
478 |
|
|
void *memory;
|
479 |
|
|
};
|
480 |
|
|
|
481 |
|
|
2.2 Error reporting
|
482 |
|
|
===================
|
483 |
|
|
|
484 |
|
|
Most BFD functions return nonzero on success (check their individual
|
485 |
|
|
documentation for precise semantics). On an error, they call
|
486 |
|
|
`bfd_set_error' to set an error condition that callers can check by
|
487 |
|
|
calling `bfd_get_error'. If that returns `bfd_error_system_call', then
|
488 |
|
|
check `errno'.
|
489 |
|
|
|
490 |
|
|
The easiest way to report a BFD error to the user is to use
|
491 |
|
|
`bfd_perror'.
|
492 |
|
|
|
493 |
|
|
2.2.1 Type `bfd_error_type'
|
494 |
|
|
---------------------------
|
495 |
|
|
|
496 |
|
|
The values returned by `bfd_get_error' are defined by the enumerated
|
497 |
|
|
type `bfd_error_type'.
|
498 |
|
|
|
499 |
|
|
|
500 |
|
|
typedef enum bfd_error
|
501 |
|
|
{
|
502 |
|
|
bfd_error_no_error = 0,
|
503 |
|
|
bfd_error_system_call,
|
504 |
|
|
bfd_error_invalid_target,
|
505 |
|
|
bfd_error_wrong_format,
|
506 |
|
|
bfd_error_wrong_object_format,
|
507 |
|
|
bfd_error_invalid_operation,
|
508 |
|
|
bfd_error_no_memory,
|
509 |
|
|
bfd_error_no_symbols,
|
510 |
|
|
bfd_error_no_armap,
|
511 |
|
|
bfd_error_no_more_archived_files,
|
512 |
|
|
bfd_error_malformed_archive,
|
513 |
|
|
bfd_error_file_not_recognized,
|
514 |
|
|
bfd_error_file_ambiguously_recognized,
|
515 |
|
|
bfd_error_no_contents,
|
516 |
|
|
bfd_error_nonrepresentable_section,
|
517 |
|
|
bfd_error_no_debug_section,
|
518 |
|
|
bfd_error_bad_value,
|
519 |
|
|
bfd_error_file_truncated,
|
520 |
|
|
bfd_error_file_too_big,
|
521 |
|
|
bfd_error_on_input,
|
522 |
|
|
bfd_error_invalid_error_code
|
523 |
|
|
}
|
524 |
|
|
bfd_error_type;
|
525 |
|
|
|
526 |
|
|
2.2.1.1 `bfd_get_error'
|
527 |
|
|
.......................
|
528 |
|
|
|
529 |
|
|
*Synopsis*
|
530 |
|
|
bfd_error_type bfd_get_error (void);
|
531 |
|
|
*Description*
|
532 |
|
|
Return the current BFD error condition.
|
533 |
|
|
|
534 |
|
|
2.2.1.2 `bfd_set_error'
|
535 |
|
|
.......................
|
536 |
|
|
|
537 |
|
|
*Synopsis*
|
538 |
|
|
void bfd_set_error (bfd_error_type error_tag, ...);
|
539 |
|
|
*Description*
|
540 |
|
|
Set the BFD error condition to be ERROR_TAG. If ERROR_TAG is
|
541 |
|
|
bfd_error_on_input, then this function takes two more parameters, the
|
542 |
|
|
input bfd where the error occurred, and the bfd_error_type error.
|
543 |
|
|
|
544 |
|
|
2.2.1.3 `bfd_errmsg'
|
545 |
|
|
....................
|
546 |
|
|
|
547 |
|
|
*Synopsis*
|
548 |
|
|
const char *bfd_errmsg (bfd_error_type error_tag);
|
549 |
|
|
*Description*
|
550 |
|
|
Return a string describing the error ERROR_TAG, or the system error if
|
551 |
|
|
ERROR_TAG is `bfd_error_system_call'.
|
552 |
|
|
|
553 |
|
|
2.2.1.4 `bfd_perror'
|
554 |
|
|
....................
|
555 |
|
|
|
556 |
|
|
*Synopsis*
|
557 |
|
|
void bfd_perror (const char *message);
|
558 |
|
|
*Description*
|
559 |
|
|
Print to the standard error stream a string describing the last BFD
|
560 |
|
|
error that occurred, or the last system error if the last BFD error was
|
561 |
|
|
a system call failure. If MESSAGE is non-NULL and non-empty, the error
|
562 |
|
|
string printed is preceded by MESSAGE, a colon, and a space. It is
|
563 |
|
|
followed by a newline.
|
564 |
|
|
|
565 |
|
|
2.2.2 BFD error handler
|
566 |
|
|
-----------------------
|
567 |
|
|
|
568 |
|
|
Some BFD functions want to print messages describing the problem. They
|
569 |
|
|
call a BFD error handler function. This function may be overridden by
|
570 |
|
|
the program.
|
571 |
|
|
|
572 |
|
|
The BFD error handler acts like printf.
|
573 |
|
|
|
574 |
|
|
|
575 |
|
|
typedef void (*bfd_error_handler_type) (const char *, ...);
|
576 |
|
|
|
577 |
|
|
2.2.2.1 `bfd_set_error_handler'
|
578 |
|
|
...............................
|
579 |
|
|
|
580 |
|
|
*Synopsis*
|
581 |
|
|
bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
|
582 |
|
|
*Description*
|
583 |
|
|
Set the BFD error handler function. Returns the previous function.
|
584 |
|
|
|
585 |
|
|
2.2.2.2 `bfd_set_error_program_name'
|
586 |
|
|
....................................
|
587 |
|
|
|
588 |
|
|
*Synopsis*
|
589 |
|
|
void bfd_set_error_program_name (const char *);
|
590 |
|
|
*Description*
|
591 |
|
|
Set the program name to use when printing a BFD error. This is printed
|
592 |
|
|
before the error message followed by a colon and space. The string
|
593 |
|
|
must not be changed after it is passed to this function.
|
594 |
|
|
|
595 |
|
|
2.2.2.3 `bfd_get_error_handler'
|
596 |
|
|
...............................
|
597 |
|
|
|
598 |
|
|
*Synopsis*
|
599 |
|
|
bfd_error_handler_type bfd_get_error_handler (void);
|
600 |
|
|
*Description*
|
601 |
|
|
Return the BFD error handler function.
|
602 |
|
|
|
603 |
|
|
2.3 Miscellaneous
|
604 |
|
|
=================
|
605 |
|
|
|
606 |
|
|
2.3.1 Miscellaneous functions
|
607 |
|
|
-----------------------------
|
608 |
|
|
|
609 |
|
|
2.3.1.1 `bfd_get_reloc_upper_bound'
|
610 |
|
|
...................................
|
611 |
|
|
|
612 |
|
|
*Synopsis*
|
613 |
|
|
long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
|
614 |
|
|
*Description*
|
615 |
|
|
Return the number of bytes required to store the relocation information
|
616 |
|
|
associated with section SECT attached to bfd ABFD. If an error occurs,
|
617 |
|
|
return -1.
|
618 |
|
|
|
619 |
|
|
2.3.1.2 `bfd_canonicalize_reloc'
|
620 |
|
|
................................
|
621 |
|
|
|
622 |
|
|
*Synopsis*
|
623 |
|
|
long bfd_canonicalize_reloc
|
624 |
|
|
(bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
|
625 |
|
|
*Description*
|
626 |
|
|
Call the back end associated with the open BFD ABFD and translate the
|
627 |
|
|
external form of the relocation information attached to SEC into the
|
628 |
|
|
internal canonical form. Place the table into memory at LOC, which has
|
629 |
|
|
been preallocated, usually by a call to `bfd_get_reloc_upper_bound'.
|
630 |
|
|
Returns the number of relocs, or -1 on error.
|
631 |
|
|
|
632 |
|
|
The SYMS table is also needed for horrible internal magic reasons.
|
633 |
|
|
|
634 |
|
|
2.3.1.3 `bfd_set_reloc'
|
635 |
|
|
.......................
|
636 |
|
|
|
637 |
|
|
*Synopsis*
|
638 |
|
|
void bfd_set_reloc
|
639 |
|
|
(bfd *abfd, asection *sec, arelent **rel, unsigned int count);
|
640 |
|
|
*Description*
|
641 |
|
|
Set the relocation pointer and count within section SEC to the values
|
642 |
|
|
REL and COUNT. The argument ABFD is ignored.
|
643 |
|
|
|
644 |
|
|
2.3.1.4 `bfd_set_file_flags'
|
645 |
|
|
............................
|
646 |
|
|
|
647 |
|
|
*Synopsis*
|
648 |
|
|
bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
|
649 |
|
|
*Description*
|
650 |
|
|
Set the flag word in the BFD ABFD to the value FLAGS.
|
651 |
|
|
|
652 |
|
|
Possible errors are:
|
653 |
|
|
* `bfd_error_wrong_format' - The target bfd was not of object format.
|
654 |
|
|
|
655 |
|
|
* `bfd_error_invalid_operation' - The target bfd was open for
|
656 |
|
|
reading.
|
657 |
|
|
|
658 |
|
|
* `bfd_error_invalid_operation' - The flag word contained a bit
|
659 |
|
|
which was not applicable to the type of file. E.g., an attempt
|
660 |
|
|
was made to set the `D_PAGED' bit on a BFD format which does not
|
661 |
|
|
support demand paging.
|
662 |
|
|
|
663 |
|
|
2.3.1.5 `bfd_get_arch_size'
|
664 |
|
|
...........................
|
665 |
|
|
|
666 |
|
|
*Synopsis*
|
667 |
|
|
int bfd_get_arch_size (bfd *abfd);
|
668 |
|
|
*Description*
|
669 |
|
|
Returns the architecture address size, in bits, as determined by the
|
670 |
|
|
object file's format. For ELF, this information is included in the
|
671 |
|
|
header.
|
672 |
|
|
|
673 |
|
|
*Returns*
|
674 |
|
|
Returns the arch size in bits if known, `-1' otherwise.
|
675 |
|
|
|
676 |
|
|
2.3.1.6 `bfd_get_sign_extend_vma'
|
677 |
|
|
.................................
|
678 |
|
|
|
679 |
|
|
*Synopsis*
|
680 |
|
|
int bfd_get_sign_extend_vma (bfd *abfd);
|
681 |
|
|
*Description*
|
682 |
|
|
Indicates if the target architecture "naturally" sign extends an
|
683 |
|
|
address. Some architectures implicitly sign extend address values when
|
684 |
|
|
they are converted to types larger than the size of an address. For
|
685 |
|
|
instance, bfd_get_start_address() will return an address sign extended
|
686 |
|
|
to fill a bfd_vma when this is the case.
|
687 |
|
|
|
688 |
|
|
*Returns*
|
689 |
|
|
Returns `1' if the target architecture is known to sign extend
|
690 |
|
|
addresses, `0' if the target architecture is known to not sign extend
|
691 |
|
|
addresses, and `-1' otherwise.
|
692 |
|
|
|
693 |
|
|
2.3.1.7 `bfd_set_start_address'
|
694 |
|
|
...............................
|
695 |
|
|
|
696 |
|
|
*Synopsis*
|
697 |
|
|
bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
|
698 |
|
|
*Description*
|
699 |
|
|
Make VMA the entry point of output BFD ABFD.
|
700 |
|
|
|
701 |
|
|
*Returns*
|
702 |
|
|
Returns `TRUE' on success, `FALSE' otherwise.
|
703 |
|
|
|
704 |
|
|
2.3.1.8 `bfd_get_gp_size'
|
705 |
|
|
.........................
|
706 |
|
|
|
707 |
|
|
*Synopsis*
|
708 |
|
|
unsigned int bfd_get_gp_size (bfd *abfd);
|
709 |
|
|
*Description*
|
710 |
|
|
Return the maximum size of objects to be optimized using the GP
|
711 |
|
|
register under MIPS ECOFF. This is typically set by the `-G' argument
|
712 |
|
|
to the compiler, assembler or linker.
|
713 |
|
|
|
714 |
|
|
2.3.1.9 `bfd_set_gp_size'
|
715 |
|
|
.........................
|
716 |
|
|
|
717 |
|
|
*Synopsis*
|
718 |
|
|
void bfd_set_gp_size (bfd *abfd, unsigned int i);
|
719 |
|
|
*Description*
|
720 |
|
|
Set the maximum size of objects to be optimized using the GP register
|
721 |
|
|
under ECOFF or MIPS ELF. This is typically set by the `-G' argument to
|
722 |
|
|
the compiler, assembler or linker.
|
723 |
|
|
|
724 |
|
|
2.3.1.10 `bfd_scan_vma'
|
725 |
|
|
.......................
|
726 |
|
|
|
727 |
|
|
*Synopsis*
|
728 |
|
|
bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
|
729 |
|
|
*Description*
|
730 |
|
|
Convert, like `strtoul', a numerical expression STRING into a `bfd_vma'
|
731 |
|
|
integer, and return that integer. (Though without as many bells and
|
732 |
|
|
whistles as `strtoul'.) The expression is assumed to be unsigned
|
733 |
|
|
(i.e., positive). If given a BASE, it is used as the base for
|
734 |
|
|
conversion. A base of 0 causes the function to interpret the string in
|
735 |
|
|
hex if a leading "0x" or "0X" is found, otherwise in octal if a leading
|
736 |
|
|
zero is found, otherwise in decimal.
|
737 |
|
|
|
738 |
|
|
If the value would overflow, the maximum `bfd_vma' value is returned.
|
739 |
|
|
|
740 |
|
|
2.3.1.11 `bfd_copy_private_header_data'
|
741 |
|
|
.......................................
|
742 |
|
|
|
743 |
|
|
*Synopsis*
|
744 |
|
|
bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
|
745 |
|
|
*Description*
|
746 |
|
|
Copy private BFD header information from the BFD IBFD to the the BFD
|
747 |
|
|
OBFD. This copies information that may require sections to exist, but
|
748 |
|
|
does not require symbol tables. Return `true' on success, `false' on
|
749 |
|
|
error. Possible error returns are:
|
750 |
|
|
|
751 |
|
|
* `bfd_error_no_memory' - Not enough memory exists to create private
|
752 |
|
|
data for OBFD.
|
753 |
|
|
|
754 |
|
|
#define bfd_copy_private_header_data(ibfd, obfd) \
|
755 |
|
|
BFD_SEND (obfd, _bfd_copy_private_header_data, \
|
756 |
|
|
(ibfd, obfd))
|
757 |
|
|
|
758 |
|
|
2.3.1.12 `bfd_copy_private_bfd_data'
|
759 |
|
|
....................................
|
760 |
|
|
|
761 |
|
|
*Synopsis*
|
762 |
|
|
bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
|
763 |
|
|
*Description*
|
764 |
|
|
Copy private BFD information from the BFD IBFD to the the BFD OBFD.
|
765 |
|
|
Return `TRUE' on success, `FALSE' on error. Possible error returns are:
|
766 |
|
|
|
767 |
|
|
* `bfd_error_no_memory' - Not enough memory exists to create private
|
768 |
|
|
data for OBFD.
|
769 |
|
|
|
770 |
|
|
#define bfd_copy_private_bfd_data(ibfd, obfd) \
|
771 |
|
|
BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
|
772 |
|
|
(ibfd, obfd))
|
773 |
|
|
|
774 |
|
|
2.3.1.13 `bfd_merge_private_bfd_data'
|
775 |
|
|
.....................................
|
776 |
|
|
|
777 |
|
|
*Synopsis*
|
778 |
|
|
bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
|
779 |
|
|
*Description*
|
780 |
|
|
Merge private BFD information from the BFD IBFD to the the output file
|
781 |
|
|
BFD OBFD when linking. Return `TRUE' on success, `FALSE' on error.
|
782 |
|
|
Possible error returns are:
|
783 |
|
|
|
784 |
|
|
* `bfd_error_no_memory' - Not enough memory exists to create private
|
785 |
|
|
data for OBFD.
|
786 |
|
|
|
787 |
|
|
#define bfd_merge_private_bfd_data(ibfd, obfd) \
|
788 |
|
|
BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
|
789 |
|
|
(ibfd, obfd))
|
790 |
|
|
|
791 |
|
|
2.3.1.14 `bfd_set_private_flags'
|
792 |
|
|
................................
|
793 |
|
|
|
794 |
|
|
*Synopsis*
|
795 |
|
|
bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
|
796 |
|
|
*Description*
|
797 |
|
|
Set private BFD flag information in the BFD ABFD. Return `TRUE' on
|
798 |
|
|
success, `FALSE' on error. Possible error returns are:
|
799 |
|
|
|
800 |
|
|
* `bfd_error_no_memory' - Not enough memory exists to create private
|
801 |
|
|
data for OBFD.
|
802 |
|
|
|
803 |
|
|
#define bfd_set_private_flags(abfd, flags) \
|
804 |
|
|
BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
|
805 |
|
|
|
806 |
|
|
2.3.1.15 `Other functions'
|
807 |
|
|
..........................
|
808 |
|
|
|
809 |
|
|
*Description*
|
810 |
|
|
The following functions exist but have not yet been documented.
|
811 |
|
|
#define bfd_sizeof_headers(abfd, info) \
|
812 |
|
|
BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
|
813 |
|
|
|
814 |
|
|
#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
|
815 |
|
|
BFD_SEND (abfd, _bfd_find_nearest_line, \
|
816 |
|
|
(abfd, sec, syms, off, file, func, line))
|
817 |
|
|
|
818 |
|
|
#define bfd_find_line(abfd, syms, sym, file, line) \
|
819 |
|
|
BFD_SEND (abfd, _bfd_find_line, \
|
820 |
|
|
(abfd, syms, sym, file, line))
|
821 |
|
|
|
822 |
|
|
#define bfd_find_inliner_info(abfd, file, func, line) \
|
823 |
|
|
BFD_SEND (abfd, _bfd_find_inliner_info, \
|
824 |
|
|
(abfd, file, func, line))
|
825 |
|
|
|
826 |
|
|
#define bfd_debug_info_start(abfd) \
|
827 |
|
|
BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
|
828 |
|
|
|
829 |
|
|
#define bfd_debug_info_end(abfd) \
|
830 |
|
|
BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
|
831 |
|
|
|
832 |
|
|
#define bfd_debug_info_accumulate(abfd, section) \
|
833 |
|
|
BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
|
834 |
|
|
|
835 |
|
|
#define bfd_stat_arch_elt(abfd, stat) \
|
836 |
|
|
BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
|
837 |
|
|
|
838 |
|
|
#define bfd_update_armap_timestamp(abfd) \
|
839 |
|
|
BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
|
840 |
|
|
|
841 |
|
|
#define bfd_set_arch_mach(abfd, arch, mach)\
|
842 |
|
|
BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
|
843 |
|
|
|
844 |
|
|
#define bfd_relax_section(abfd, section, link_info, again) \
|
845 |
|
|
BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
|
846 |
|
|
|
847 |
|
|
#define bfd_gc_sections(abfd, link_info) \
|
848 |
|
|
BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
|
849 |
|
|
|
850 |
|
|
#define bfd_merge_sections(abfd, link_info) \
|
851 |
|
|
BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
|
852 |
|
|
|
853 |
|
|
#define bfd_is_group_section(abfd, sec) \
|
854 |
|
|
BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
|
855 |
|
|
|
856 |
|
|
#define bfd_discard_group(abfd, sec) \
|
857 |
|
|
BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
|
858 |
|
|
|
859 |
|
|
#define bfd_link_hash_table_create(abfd) \
|
860 |
|
|
BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
|
861 |
|
|
|
862 |
|
|
#define bfd_link_hash_table_free(abfd, hash) \
|
863 |
|
|
BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
|
864 |
|
|
|
865 |
|
|
#define bfd_link_add_symbols(abfd, info) \
|
866 |
|
|
BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
|
867 |
|
|
|
868 |
|
|
#define bfd_link_just_syms(abfd, sec, info) \
|
869 |
|
|
BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
|
870 |
|
|
|
871 |
|
|
#define bfd_final_link(abfd, info) \
|
872 |
|
|
BFD_SEND (abfd, _bfd_final_link, (abfd, info))
|
873 |
|
|
|
874 |
|
|
#define bfd_free_cached_info(abfd) \
|
875 |
|
|
BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
|
876 |
|
|
|
877 |
|
|
#define bfd_get_dynamic_symtab_upper_bound(abfd) \
|
878 |
|
|
BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
|
879 |
|
|
|
880 |
|
|
#define bfd_print_private_bfd_data(abfd, file)\
|
881 |
|
|
BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
|
882 |
|
|
|
883 |
|
|
#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
|
884 |
|
|
BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
|
885 |
|
|
|
886 |
|
|
#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
|
887 |
|
|
BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
|
888 |
|
|
dyncount, dynsyms, ret))
|
889 |
|
|
|
890 |
|
|
#define bfd_get_dynamic_reloc_upper_bound(abfd) \
|
891 |
|
|
BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
|
892 |
|
|
|
893 |
|
|
#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
|
894 |
|
|
BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
|
895 |
|
|
|
896 |
|
|
extern bfd_byte *bfd_get_relocated_section_contents
|
897 |
|
|
(bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
|
898 |
|
|
bfd_boolean, asymbol **);
|
899 |
|
|
|
900 |
|
|
2.3.1.16 `bfd_alt_mach_code'
|
901 |
|
|
............................
|
902 |
|
|
|
903 |
|
|
*Synopsis*
|
904 |
|
|
bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
|
905 |
|
|
*Description*
|
906 |
|
|
When more than one machine code number is available for the same
|
907 |
|
|
machine type, this function can be used to switch between the preferred
|
908 |
|
|
one (alternative == 0) and any others. Currently, only ELF supports
|
909 |
|
|
this feature, with up to two alternate machine codes.
|
910 |
|
|
|
911 |
|
|
struct bfd_preserve
|
912 |
|
|
{
|
913 |
|
|
void *marker;
|
914 |
|
|
void *tdata;
|
915 |
|
|
flagword flags;
|
916 |
|
|
const struct bfd_arch_info *arch_info;
|
917 |
|
|
struct bfd_section *sections;
|
918 |
|
|
struct bfd_section *section_last;
|
919 |
|
|
unsigned int section_count;
|
920 |
|
|
struct bfd_hash_table section_htab;
|
921 |
|
|
};
|
922 |
|
|
|
923 |
|
|
2.3.1.17 `bfd_preserve_save'
|
924 |
|
|
............................
|
925 |
|
|
|
926 |
|
|
*Synopsis*
|
927 |
|
|
bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
|
928 |
|
|
*Description*
|
929 |
|
|
When testing an object for compatibility with a particular target
|
930 |
|
|
back-end, the back-end object_p function needs to set up certain fields
|
931 |
|
|
in the bfd on successfully recognizing the object. This typically
|
932 |
|
|
happens in a piecemeal fashion, with failures possible at many points.
|
933 |
|
|
On failure, the bfd is supposed to be restored to its initial state,
|
934 |
|
|
which is virtually impossible. However, restoring a subset of the bfd
|
935 |
|
|
state works in practice. This function stores the subset and
|
936 |
|
|
reinitializes the bfd.
|
937 |
|
|
|
938 |
|
|
2.3.1.18 `bfd_preserve_restore'
|
939 |
|
|
...............................
|
940 |
|
|
|
941 |
|
|
*Synopsis*
|
942 |
|
|
void bfd_preserve_restore (bfd *, struct bfd_preserve *);
|
943 |
|
|
*Description*
|
944 |
|
|
This function restores bfd state saved by bfd_preserve_save. If MARKER
|
945 |
|
|
is non-NULL in struct bfd_preserve then that block and all subsequently
|
946 |
|
|
bfd_alloc'd memory is freed.
|
947 |
|
|
|
948 |
|
|
2.3.1.19 `bfd_preserve_finish'
|
949 |
|
|
..............................
|
950 |
|
|
|
951 |
|
|
*Synopsis*
|
952 |
|
|
void bfd_preserve_finish (bfd *, struct bfd_preserve *);
|
953 |
|
|
*Description*
|
954 |
|
|
This function should be called when the bfd state saved by
|
955 |
|
|
bfd_preserve_save is no longer needed. ie. when the back-end object_p
|
956 |
|
|
function returns with success.
|
957 |
|
|
|
958 |
|
|
2.3.1.20 `bfd_emul_get_maxpagesize'
|
959 |
|
|
...................................
|
960 |
|
|
|
961 |
|
|
*Synopsis*
|
962 |
|
|
bfd_vma bfd_emul_get_maxpagesize (const char *);
|
963 |
|
|
*Description*
|
964 |
|
|
Returns the maximum page size, in bytes, as determined by emulation.
|
965 |
|
|
|
966 |
|
|
*Returns*
|
967 |
|
|
Returns the maximum page size in bytes for ELF, abort otherwise.
|
968 |
|
|
|
969 |
|
|
2.3.1.21 `bfd_emul_set_maxpagesize'
|
970 |
|
|
...................................
|
971 |
|
|
|
972 |
|
|
*Synopsis*
|
973 |
|
|
void bfd_emul_set_maxpagesize (const char *, bfd_vma);
|
974 |
|
|
*Description*
|
975 |
|
|
For ELF, set the maximum page size for the emulation. It is a no-op
|
976 |
|
|
for other formats.
|
977 |
|
|
|
978 |
|
|
2.3.1.22 `bfd_emul_get_commonpagesize'
|
979 |
|
|
......................................
|
980 |
|
|
|
981 |
|
|
*Synopsis*
|
982 |
|
|
bfd_vma bfd_emul_get_commonpagesize (const char *);
|
983 |
|
|
*Description*
|
984 |
|
|
Returns the common page size, in bytes, as determined by emulation.
|
985 |
|
|
|
986 |
|
|
*Returns*
|
987 |
|
|
Returns the common page size in bytes for ELF, abort otherwise.
|
988 |
|
|
|
989 |
|
|
2.3.1.23 `bfd_emul_set_commonpagesize'
|
990 |
|
|
......................................
|
991 |
|
|
|
992 |
|
|
*Synopsis*
|
993 |
|
|
void bfd_emul_set_commonpagesize (const char *, bfd_vma);
|
994 |
|
|
*Description*
|
995 |
|
|
For ELF, set the common page size for the emulation. It is a no-op for
|
996 |
|
|
other formats.
|
997 |
|
|
|
998 |
|
|
2.3.1.24 `bfd_demangle'
|
999 |
|
|
.......................
|
1000 |
|
|
|
1001 |
|
|
*Synopsis*
|
1002 |
|
|
char *bfd_demangle (bfd *, const char *, int);
|
1003 |
|
|
*Description*
|
1004 |
|
|
Wrapper around cplus_demangle. Strips leading underscores and other
|
1005 |
|
|
such chars that would otherwise confuse the demangler. If passed a g++
|
1006 |
|
|
v3 ABI mangled name, returns a buffer allocated with malloc holding the
|
1007 |
|
|
demangled name. Returns NULL otherwise and on memory alloc failure.
|
1008 |
|
|
|
1009 |
|
|
2.3.1.25 `struct bfd_iovec'
|
1010 |
|
|
...........................
|
1011 |
|
|
|
1012 |
|
|
*Description*
|
1013 |
|
|
The `struct bfd_iovec' contains the internal file I/O class. Each
|
1014 |
|
|
`BFD' has an instance of this class and all file I/O is routed through
|
1015 |
|
|
it (it is assumed that the instance implements all methods listed
|
1016 |
|
|
below).
|
1017 |
|
|
struct bfd_iovec
|
1018 |
|
|
{
|
1019 |
|
|
/* To avoid problems with macros, a "b" rather than "f"
|
1020 |
|
|
prefix is prepended to each method name. */
|
1021 |
|
|
/* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
|
1022 |
|
|
bytes starting at PTR. Return the number of bytes actually
|
1023 |
|
|
transfered (a read past end-of-file returns less than NBYTES),
|
1024 |
|
|
or -1 (setting `bfd_error') if an error occurs. */
|
1025 |
|
|
file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
|
1026 |
|
|
file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
|
1027 |
|
|
file_ptr nbytes);
|
1028 |
|
|
/* Return the current IOSTREAM file offset, or -1 (setting `bfd_error'
|
1029 |
|
|
if an error occurs. */
|
1030 |
|
|
file_ptr (*btell) (struct bfd *abfd);
|
1031 |
|
|
/* For the following, on successful completion a value of 0 is returned.
|
1032 |
|
|
Otherwise, a value of -1 is returned (and `bfd_error' is set). */
|
1033 |
|
|
int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
|
1034 |
|
|
int (*bclose) (struct bfd *abfd);
|
1035 |
|
|
int (*bflush) (struct bfd *abfd);
|
1036 |
|
|
int (*bstat) (struct bfd *abfd, struct stat *sb);
|
1037 |
|
|
};
|
1038 |
|
|
|
1039 |
|
|
2.3.1.26 `bfd_get_mtime'
|
1040 |
|
|
........................
|
1041 |
|
|
|
1042 |
|
|
*Synopsis*
|
1043 |
|
|
long bfd_get_mtime (bfd *abfd);
|
1044 |
|
|
*Description*
|
1045 |
|
|
Return the file modification time (as read from the file system, or
|
1046 |
|
|
from the archive header for archive members).
|
1047 |
|
|
|
1048 |
|
|
2.3.1.27 `bfd_get_size'
|
1049 |
|
|
.......................
|
1050 |
|
|
|
1051 |
|
|
*Synopsis*
|
1052 |
|
|
file_ptr bfd_get_size (bfd *abfd);
|
1053 |
|
|
*Description*
|
1054 |
|
|
Return the file size (as read from file system) for the file associated
|
1055 |
|
|
with BFD ABFD.
|
1056 |
|
|
|
1057 |
|
|
The initial motivation for, and use of, this routine is not so we
|
1058 |
|
|
can get the exact size of the object the BFD applies to, since that
|
1059 |
|
|
might not be generally possible (archive members for example). It
|
1060 |
|
|
would be ideal if someone could eventually modify it so that such
|
1061 |
|
|
results were guaranteed.
|
1062 |
|
|
|
1063 |
|
|
Instead, we want to ask questions like "is this NNN byte sized
|
1064 |
|
|
object I'm about to try read from file offset YYY reasonable?" As as
|
1065 |
|
|
example of where we might do this, some object formats use string
|
1066 |
|
|
tables for which the first `sizeof (long)' bytes of the table contain
|
1067 |
|
|
the size of the table itself, including the size bytes. If an
|
1068 |
|
|
application tries to read what it thinks is one of these string tables,
|
1069 |
|
|
without some way to validate the size, and for some reason the size is
|
1070 |
|
|
wrong (byte swapping error, wrong location for the string table, etc.),
|
1071 |
|
|
the only clue is likely to be a read error when it tries to read the
|
1072 |
|
|
table, or a "virtual memory exhausted" error when it tries to allocate
|
1073 |
|
|
15 bazillon bytes of space for the 15 bazillon byte table it is about
|
1074 |
|
|
to read. This function at least allows us to answer the question, "is
|
1075 |
|
|
the size reasonable?".
|
1076 |
|
|
|
1077 |
|
|
* Menu:
|
1078 |
|
|
|
1079 |
|
|
* Memory Usage::
|
1080 |
|
|
* Initialization::
|
1081 |
|
|
* Sections::
|
1082 |
|
|
* Symbols::
|
1083 |
|
|
* Archives::
|
1084 |
|
|
* Formats::
|
1085 |
|
|
* Relocations::
|
1086 |
|
|
* Core Files::
|
1087 |
|
|
* Targets::
|
1088 |
|
|
* Architectures::
|
1089 |
|
|
* Opening and Closing::
|
1090 |
|
|
* Internal::
|
1091 |
|
|
* File Caching::
|
1092 |
|
|
* Linker Functions::
|
1093 |
|
|
* Hash Tables::
|
1094 |
|
|
|
1095 |
|
|
|
1096 |
|
|
File: bfd.info, Node: Memory Usage, Next: Initialization, Prev: BFD front end, Up: BFD front end
|
1097 |
|
|
|
1098 |
|
|
2.4 Memory Usage
|
1099 |
|
|
================
|
1100 |
|
|
|
1101 |
|
|
BFD keeps all of its internal structures in obstacks. There is one
|
1102 |
|
|
obstack per open BFD file, into which the current state is stored. When
|
1103 |
|
|
a BFD is closed, the obstack is deleted, and so everything which has
|
1104 |
|
|
been allocated by BFD for the closing file is thrown away.
|
1105 |
|
|
|
1106 |
|
|
BFD does not free anything created by an application, but pointers
|
1107 |
|
|
into `bfd' structures become invalid on a `bfd_close'; for example,
|
1108 |
|
|
after a `bfd_close' the vector passed to `bfd_canonicalize_symtab' is
|
1109 |
|
|
still around, since it has been allocated by the application, but the
|
1110 |
|
|
data that it pointed to are lost.
|
1111 |
|
|
|
1112 |
|
|
The general rule is to not close a BFD until all operations dependent
|
1113 |
|
|
upon data from the BFD have been completed, or all the data from within
|
1114 |
|
|
the file has been copied. To help with the management of memory, there
|
1115 |
|
|
is a function (`bfd_alloc_size') which returns the number of bytes in
|
1116 |
|
|
obstacks associated with the supplied BFD. This could be used to select
|
1117 |
|
|
the greediest open BFD, close it to reclaim the memory, perform some
|
1118 |
|
|
operation and reopen the BFD again, to get a fresh copy of the data
|
1119 |
|
|
structures.
|
1120 |
|
|
|
1121 |
|
|
|
1122 |
|
|
File: bfd.info, Node: Initialization, Next: Sections, Prev: Memory Usage, Up: BFD front end
|
1123 |
|
|
|
1124 |
|
|
2.5 Initialization
|
1125 |
|
|
==================
|
1126 |
|
|
|
1127 |
|
|
2.5.1 Initialization functions
|
1128 |
|
|
------------------------------
|
1129 |
|
|
|
1130 |
|
|
These are the functions that handle initializing a BFD.
|
1131 |
|
|
|
1132 |
|
|
2.5.1.1 `bfd_init'
|
1133 |
|
|
..................
|
1134 |
|
|
|
1135 |
|
|
*Synopsis*
|
1136 |
|
|
void bfd_init (void);
|
1137 |
|
|
*Description*
|
1138 |
|
|
This routine must be called before any other BFD function to initialize
|
1139 |
|
|
magical internal data structures.
|
1140 |
|
|
|
1141 |
|
|
|
1142 |
|
|
File: bfd.info, Node: Sections, Next: Symbols, Prev: Initialization, Up: BFD front end
|
1143 |
|
|
|
1144 |
|
|
2.6 Sections
|
1145 |
|
|
============
|
1146 |
|
|
|
1147 |
|
|
The raw data contained within a BFD is maintained through the section
|
1148 |
|
|
abstraction. A single BFD may have any number of sections. It keeps
|
1149 |
|
|
hold of them by pointing to the first; each one points to the next in
|
1150 |
|
|
the list.
|
1151 |
|
|
|
1152 |
|
|
Sections are supported in BFD in `section.c'.
|
1153 |
|
|
|
1154 |
|
|
* Menu:
|
1155 |
|
|
|
1156 |
|
|
* Section Input::
|
1157 |
|
|
* Section Output::
|
1158 |
|
|
* typedef asection::
|
1159 |
|
|
* section prototypes::
|
1160 |
|
|
|
1161 |
|
|
|
1162 |
|
|
File: bfd.info, Node: Section Input, Next: Section Output, Prev: Sections, Up: Sections
|
1163 |
|
|
|
1164 |
|
|
2.6.1 Section input
|
1165 |
|
|
-------------------
|
1166 |
|
|
|
1167 |
|
|
When a BFD is opened for reading, the section structures are created
|
1168 |
|
|
and attached to the BFD.
|
1169 |
|
|
|
1170 |
|
|
Each section has a name which describes the section in the outside
|
1171 |
|
|
world--for example, `a.out' would contain at least three sections,
|
1172 |
|
|
called `.text', `.data' and `.bss'.
|
1173 |
|
|
|
1174 |
|
|
Names need not be unique; for example a COFF file may have several
|
1175 |
|
|
sections named `.data'.
|
1176 |
|
|
|
1177 |
|
|
Sometimes a BFD will contain more than the "natural" number of
|
1178 |
|
|
sections. A back end may attach other sections containing constructor
|
1179 |
|
|
data, or an application may add a section (using `bfd_make_section') to
|
1180 |
|
|
the sections attached to an already open BFD. For example, the linker
|
1181 |
|
|
creates an extra section `COMMON' for each input file's BFD to hold
|
1182 |
|
|
information about common storage.
|
1183 |
|
|
|
1184 |
|
|
The raw data is not necessarily read in when the section descriptor
|
1185 |
|
|
is created. Some targets may leave the data in place until a
|
1186 |
|
|
`bfd_get_section_contents' call is made. Other back ends may read in
|
1187 |
|
|
all the data at once. For example, an S-record file has to be read
|
1188 |
|
|
once to determine the size of the data. An IEEE-695 file doesn't
|
1189 |
|
|
contain raw data in sections, but data and relocation expressions
|
1190 |
|
|
intermixed, so the data area has to be parsed to get out the data and
|
1191 |
|
|
relocations.
|
1192 |
|
|
|
1193 |
|
|
|
1194 |
|
|
File: bfd.info, Node: Section Output, Next: typedef asection, Prev: Section Input, Up: Sections
|
1195 |
|
|
|
1196 |
|
|
2.6.2 Section output
|
1197 |
|
|
--------------------
|
1198 |
|
|
|
1199 |
|
|
To write a new object style BFD, the various sections to be written
|
1200 |
|
|
have to be created. They are attached to the BFD in the same way as
|
1201 |
|
|
input sections; data is written to the sections using
|
1202 |
|
|
`bfd_set_section_contents'.
|
1203 |
|
|
|
1204 |
|
|
Any program that creates or combines sections (e.g., the assembler
|
1205 |
|
|
and linker) must use the `asection' fields `output_section' and
|
1206 |
|
|
`output_offset' to indicate the file sections to which each section
|
1207 |
|
|
must be written. (If the section is being created from scratch,
|
1208 |
|
|
`output_section' should probably point to the section itself and
|
1209 |
|
|
`output_offset' should probably be zero.)
|
1210 |
|
|
|
1211 |
|
|
The data to be written comes from input sections attached (via
|
1212 |
|
|
`output_section' pointers) to the output sections. The output section
|
1213 |
|
|
structure can be considered a filter for the input section: the output
|
1214 |
|
|
section determines the vma of the output data and the name, but the
|
1215 |
|
|
input section determines the offset into the output section of the data
|
1216 |
|
|
to be written.
|
1217 |
|
|
|
1218 |
|
|
E.g., to create a section "O", starting at 0x100, 0x123 long,
|
1219 |
|
|
containing two subsections, "A" at offset 0x0 (i.e., at vma 0x100) and
|
1220 |
|
|
"B" at offset 0x20 (i.e., at vma 0x120) the `asection' structures would
|
1221 |
|
|
look like:
|
1222 |
|
|
|
1223 |
|
|
section name "A"
|
1224 |
|
|
output_offset 0x00
|
1225 |
|
|
size 0x20
|
1226 |
|
|
output_section -----------> section name "O"
|
1227 |
|
|
| vma 0x100
|
1228 |
|
|
section name "B" | size 0x123
|
1229 |
|
|
output_offset 0x20 |
|
1230 |
|
|
size 0x103 |
|
1231 |
|
|
output_section --------|
|
1232 |
|
|
|
1233 |
|
|
2.6.3 Link orders
|
1234 |
|
|
-----------------
|
1235 |
|
|
|
1236 |
|
|
The data within a section is stored in a "link_order". These are much
|
1237 |
|
|
like the fixups in `gas'. The link_order abstraction allows a section
|
1238 |
|
|
to grow and shrink within itself.
|
1239 |
|
|
|
1240 |
|
|
A link_order knows how big it is, and which is the next link_order
|
1241 |
|
|
and where the raw data for it is; it also points to a list of
|
1242 |
|
|
relocations which apply to it.
|
1243 |
|
|
|
1244 |
|
|
The link_order is used by the linker to perform relaxing on final
|
1245 |
|
|
code. The compiler creates code which is as big as necessary to make
|
1246 |
|
|
it work without relaxing, and the user can select whether to relax.
|
1247 |
|
|
Sometimes relaxing takes a lot of time. The linker runs around the
|
1248 |
|
|
relocations to see if any are attached to data which can be shrunk, if
|
1249 |
|
|
so it does it on a link_order by link_order basis.
|
1250 |
|
|
|
1251 |
|
|
|
1252 |
|
|
File: bfd.info, Node: typedef asection, Next: section prototypes, Prev: Section Output, Up: Sections
|
1253 |
|
|
|
1254 |
|
|
2.6.4 typedef asection
|
1255 |
|
|
----------------------
|
1256 |
|
|
|
1257 |
|
|
Here is the section structure:
|
1258 |
|
|
|
1259 |
|
|
|
1260 |
|
|
typedef struct bfd_section
|
1261 |
|
|
{
|
1262 |
|
|
/* The name of the section; the name isn't a copy, the pointer is
|
1263 |
|
|
the same as that passed to bfd_make_section. */
|
1264 |
|
|
const char *name;
|
1265 |
|
|
|
1266 |
|
|
/* A unique sequence number. */
|
1267 |
|
|
int id;
|
1268 |
|
|
|
1269 |
|
|
/* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
|
1270 |
|
|
int index;
|
1271 |
|
|
|
1272 |
|
|
/* The next section in the list belonging to the BFD, or NULL. */
|
1273 |
|
|
struct bfd_section *next;
|
1274 |
|
|
|
1275 |
|
|
/* The previous section in the list belonging to the BFD, or NULL. */
|
1276 |
|
|
struct bfd_section *prev;
|
1277 |
|
|
|
1278 |
|
|
/* The field flags contains attributes of the section. Some
|
1279 |
|
|
flags are read in from the object file, and some are
|
1280 |
|
|
synthesized from other information. */
|
1281 |
|
|
flagword flags;
|
1282 |
|
|
|
1283 |
|
|
#define SEC_NO_FLAGS 0x000
|
1284 |
|
|
|
1285 |
|
|
/* Tells the OS to allocate space for this section when loading.
|
1286 |
|
|
This is clear for a section containing debug information only. */
|
1287 |
|
|
#define SEC_ALLOC 0x001
|
1288 |
|
|
|
1289 |
|
|
/* Tells the OS to load the section from the file when loading.
|
1290 |
|
|
This is clear for a .bss section. */
|
1291 |
|
|
#define SEC_LOAD 0x002
|
1292 |
|
|
|
1293 |
|
|
/* The section contains data still to be relocated, so there is
|
1294 |
|
|
some relocation information too. */
|
1295 |
|
|
#define SEC_RELOC 0x004
|
1296 |
|
|
|
1297 |
|
|
/* A signal to the OS that the section contains read only data. */
|
1298 |
|
|
#define SEC_READONLY 0x008
|
1299 |
|
|
|
1300 |
|
|
/* The section contains code only. */
|
1301 |
|
|
#define SEC_CODE 0x010
|
1302 |
|
|
|
1303 |
|
|
/* The section contains data only. */
|
1304 |
|
|
#define SEC_DATA 0x020
|
1305 |
|
|
|
1306 |
|
|
/* The section will reside in ROM. */
|
1307 |
|
|
#define SEC_ROM 0x040
|
1308 |
|
|
|
1309 |
|
|
/* The section contains constructor information. This section
|
1310 |
|
|
type is used by the linker to create lists of constructors and
|
1311 |
|
|
destructors used by `g++'. When a back end sees a symbol
|
1312 |
|
|
which should be used in a constructor list, it creates a new
|
1313 |
|
|
section for the type of name (e.g., `__CTOR_LIST__'), attaches
|
1314 |
|
|
the symbol to it, and builds a relocation. To build the lists
|
1315 |
|
|
of constructors, all the linker has to do is catenate all the
|
1316 |
|
|
sections called `__CTOR_LIST__' and relocate the data
|
1317 |
|
|
contained within - exactly the operations it would peform on
|
1318 |
|
|
standard data. */
|
1319 |
|
|
#define SEC_CONSTRUCTOR 0x080
|
1320 |
|
|
|
1321 |
|
|
/* The section has contents - a data section could be
|
1322 |
|
|
`SEC_ALLOC' | `SEC_HAS_CONTENTS'; a debug section could be
|
1323 |
|
|
`SEC_HAS_CONTENTS' */
|
1324 |
|
|
#define SEC_HAS_CONTENTS 0x100
|
1325 |
|
|
|
1326 |
|
|
/* An instruction to the linker to not output the section
|
1327 |
|
|
even if it has information which would normally be written. */
|
1328 |
|
|
#define SEC_NEVER_LOAD 0x200
|
1329 |
|
|
|
1330 |
|
|
/* The section contains thread local data. */
|
1331 |
|
|
#define SEC_THREAD_LOCAL 0x400
|
1332 |
|
|
|
1333 |
|
|
/* The section has GOT references. This flag is only for the
|
1334 |
|
|
linker, and is currently only used by the elf32-hppa back end.
|
1335 |
|
|
It will be set if global offset table references were detected
|
1336 |
|
|
in this section, which indicate to the linker that the section
|
1337 |
|
|
contains PIC code, and must be handled specially when doing a
|
1338 |
|
|
static link. */
|
1339 |
|
|
#define SEC_HAS_GOT_REF 0x800
|
1340 |
|
|
|
1341 |
|
|
/* The section contains common symbols (symbols may be defined
|
1342 |
|
|
multiple times, the value of a symbol is the amount of
|
1343 |
|
|
space it requires, and the largest symbol value is the one
|
1344 |
|
|
used). Most targets have exactly one of these (which we
|
1345 |
|
|
translate to bfd_com_section_ptr), but ECOFF has two. */
|
1346 |
|
|
#define SEC_IS_COMMON 0x1000
|
1347 |
|
|
|
1348 |
|
|
/* The section contains only debugging information. For
|
1349 |
|
|
example, this is set for ELF .debug and .stab sections.
|
1350 |
|
|
strip tests this flag to see if a section can be
|
1351 |
|
|
discarded. */
|
1352 |
|
|
#define SEC_DEBUGGING 0x2000
|
1353 |
|
|
|
1354 |
|
|
/* The contents of this section are held in memory pointed to
|
1355 |
|
|
by the contents field. This is checked by bfd_get_section_contents,
|
1356 |
|
|
and the data is retrieved from memory if appropriate. */
|
1357 |
|
|
#define SEC_IN_MEMORY 0x4000
|
1358 |
|
|
|
1359 |
|
|
/* The contents of this section are to be excluded by the
|
1360 |
|
|
linker for executable and shared objects unless those
|
1361 |
|
|
objects are to be further relocated. */
|
1362 |
|
|
#define SEC_EXCLUDE 0x8000
|
1363 |
|
|
|
1364 |
|
|
/* The contents of this section are to be sorted based on the sum of
|
1365 |
|
|
the symbol and addend values specified by the associated relocation
|
1366 |
|
|
entries. Entries without associated relocation entries will be
|
1367 |
|
|
appended to the end of the section in an unspecified order. */
|
1368 |
|
|
#define SEC_SORT_ENTRIES 0x10000
|
1369 |
|
|
|
1370 |
|
|
/* When linking, duplicate sections of the same name should be
|
1371 |
|
|
discarded, rather than being combined into a single section as
|
1372 |
|
|
is usually done. This is similar to how common symbols are
|
1373 |
|
|
handled. See SEC_LINK_DUPLICATES below. */
|
1374 |
|
|
#define SEC_LINK_ONCE 0x20000
|
1375 |
|
|
|
1376 |
|
|
/* If SEC_LINK_ONCE is set, this bitfield describes how the linker
|
1377 |
|
|
should handle duplicate sections. */
|
1378 |
|
|
#define SEC_LINK_DUPLICATES 0xc0000
|
1379 |
|
|
|
1380 |
|
|
/* This value for SEC_LINK_DUPLICATES means that duplicate
|
1381 |
|
|
sections with the same name should simply be discarded. */
|
1382 |
|
|
#define SEC_LINK_DUPLICATES_DISCARD 0x0
|
1383 |
|
|
|
1384 |
|
|
/* This value for SEC_LINK_DUPLICATES means that the linker
|
1385 |
|
|
should warn if there are any duplicate sections, although
|
1386 |
|
|
it should still only link one copy. */
|
1387 |
|
|
#define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000
|
1388 |
|
|
|
1389 |
|
|
/* This value for SEC_LINK_DUPLICATES means that the linker
|
1390 |
|
|
should warn if any duplicate sections are a different size. */
|
1391 |
|
|
#define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000
|
1392 |
|
|
|
1393 |
|
|
/* This value for SEC_LINK_DUPLICATES means that the linker
|
1394 |
|
|
should warn if any duplicate sections contain different
|
1395 |
|
|
contents. */
|
1396 |
|
|
#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
|
1397 |
|
|
(SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
|
1398 |
|
|
|
1399 |
|
|
/* This section was created by the linker as part of dynamic
|
1400 |
|
|
relocation or other arcane processing. It is skipped when
|
1401 |
|
|
going through the first-pass output, trusting that someone
|
1402 |
|
|
else up the line will take care of it later. */
|
1403 |
|
|
#define SEC_LINKER_CREATED 0x100000
|
1404 |
|
|
|
1405 |
|
|
/* This section should not be subject to garbage collection.
|
1406 |
|
|
Also set to inform the linker that this section should not be
|
1407 |
|
|
listed in the link map as discarded. */
|
1408 |
|
|
#define SEC_KEEP 0x200000
|
1409 |
|
|
|
1410 |
|
|
/* This section contains "short" data, and should be placed
|
1411 |
|
|
"near" the GP. */
|
1412 |
|
|
#define SEC_SMALL_DATA 0x400000
|
1413 |
|
|
|
1414 |
|
|
/* Attempt to merge identical entities in the section.
|
1415 |
|
|
Entity size is given in the entsize field. */
|
1416 |
|
|
#define SEC_MERGE 0x800000
|
1417 |
|
|
|
1418 |
|
|
/* If given with SEC_MERGE, entities to merge are zero terminated
|
1419 |
|
|
strings where entsize specifies character size instead of fixed
|
1420 |
|
|
size entries. */
|
1421 |
|
|
#define SEC_STRINGS 0x1000000
|
1422 |
|
|
|
1423 |
|
|
/* This section contains data about section groups. */
|
1424 |
|
|
#define SEC_GROUP 0x2000000
|
1425 |
|
|
|
1426 |
|
|
/* The section is a COFF shared library section. This flag is
|
1427 |
|
|
only for the linker. If this type of section appears in
|
1428 |
|
|
the input file, the linker must copy it to the output file
|
1429 |
|
|
without changing the vma or size. FIXME: Although this
|
1430 |
|
|
was originally intended to be general, it really is COFF
|
1431 |
|
|
specific (and the flag was renamed to indicate this). It
|
1432 |
|
|
might be cleaner to have some more general mechanism to
|
1433 |
|
|
allow the back end to control what the linker does with
|
1434 |
|
|
sections. */
|
1435 |
|
|
#define SEC_COFF_SHARED_LIBRARY 0x4000000
|
1436 |
|
|
|
1437 |
|
|
/* This section contains data which may be shared with other
|
1438 |
|
|
executables or shared objects. This is for COFF only. */
|
1439 |
|
|
#define SEC_COFF_SHARED 0x8000000
|
1440 |
|
|
|
1441 |
|
|
/* When a section with this flag is being linked, then if the size of
|
1442 |
|
|
the input section is less than a page, it should not cross a page
|
1443 |
|
|
boundary. If the size of the input section is one page or more,
|
1444 |
|
|
it should be aligned on a page boundary. This is for TI
|
1445 |
|
|
TMS320C54X only. */
|
1446 |
|
|
#define SEC_TIC54X_BLOCK 0x10000000
|
1447 |
|
|
|
1448 |
|
|
/* Conditionally link this section; do not link if there are no
|
1449 |
|
|
references found to any symbol in the section. This is for TI
|
1450 |
|
|
TMS320C54X only. */
|
1451 |
|
|
#define SEC_TIC54X_CLINK 0x20000000
|
1452 |
|
|
|
1453 |
|
|
/* End of section flags. */
|
1454 |
|
|
|
1455 |
|
|
/* Some internal packed boolean fields. */
|
1456 |
|
|
|
1457 |
|
|
/* See the vma field. */
|
1458 |
|
|
unsigned int user_set_vma : 1;
|
1459 |
|
|
|
1460 |
|
|
/* A mark flag used by some of the linker backends. */
|
1461 |
|
|
unsigned int linker_mark : 1;
|
1462 |
|
|
|
1463 |
|
|
/* Another mark flag used by some of the linker backends. Set for
|
1464 |
|
|
output sections that have an input section. */
|
1465 |
|
|
unsigned int linker_has_input : 1;
|
1466 |
|
|
|
1467 |
|
|
/* Mark flag used by some linker backends for garbage collection. */
|
1468 |
|
|
unsigned int gc_mark : 1;
|
1469 |
|
|
|
1470 |
|
|
/* The following flags are used by the ELF linker. */
|
1471 |
|
|
|
1472 |
|
|
/* Mark sections which have been allocated to segments. */
|
1473 |
|
|
unsigned int segment_mark : 1;
|
1474 |
|
|
|
1475 |
|
|
/* Type of sec_info information. */
|
1476 |
|
|
unsigned int sec_info_type:3;
|
1477 |
|
|
#define ELF_INFO_TYPE_NONE 0
|
1478 |
|
|
#define ELF_INFO_TYPE_STABS 1
|
1479 |
|
|
#define ELF_INFO_TYPE_MERGE 2
|
1480 |
|
|
#define ELF_INFO_TYPE_EH_FRAME 3
|
1481 |
|
|
#define ELF_INFO_TYPE_JUST_SYMS 4
|
1482 |
|
|
|
1483 |
|
|
/* Nonzero if this section uses RELA relocations, rather than REL. */
|
1484 |
|
|
unsigned int use_rela_p:1;
|
1485 |
|
|
|
1486 |
|
|
/* Bits used by various backends. The generic code doesn't touch
|
1487 |
|
|
these fields. */
|
1488 |
|
|
|
1489 |
|
|
/* Nonzero if this section has TLS related relocations. */
|
1490 |
|
|
unsigned int has_tls_reloc:1;
|
1491 |
|
|
|
1492 |
|
|
/* Nonzero if this section has a gp reloc. */
|
1493 |
|
|
unsigned int has_gp_reloc:1;
|
1494 |
|
|
|
1495 |
|
|
/* Nonzero if this section needs the relax finalize pass. */
|
1496 |
|
|
unsigned int need_finalize_relax:1;
|
1497 |
|
|
|
1498 |
|
|
/* Whether relocations have been processed. */
|
1499 |
|
|
unsigned int reloc_done : 1;
|
1500 |
|
|
|
1501 |
|
|
/* End of internal packed boolean fields. */
|
1502 |
|
|
|
1503 |
|
|
/* The virtual memory address of the section - where it will be
|
1504 |
|
|
at run time. The symbols are relocated against this. The
|
1505 |
|
|
user_set_vma flag is maintained by bfd; if it's not set, the
|
1506 |
|
|
backend can assign addresses (for example, in `a.out', where
|
1507 |
|
|
the default address for `.data' is dependent on the specific
|
1508 |
|
|
target and various flags). */
|
1509 |
|
|
bfd_vma vma;
|
1510 |
|
|
|
1511 |
|
|
/* The load address of the section - where it would be in a
|
1512 |
|
|
rom image; really only used for writing section header
|
1513 |
|
|
information. */
|
1514 |
|
|
bfd_vma lma;
|
1515 |
|
|
|
1516 |
|
|
/* The size of the section in octets, as it will be output.
|
1517 |
|
|
Contains a value even if the section has no contents (e.g., the
|
1518 |
|
|
size of `.bss'). */
|
1519 |
|
|
bfd_size_type size;
|
1520 |
|
|
|
1521 |
|
|
/* For input sections, the original size on disk of the section, in
|
1522 |
|
|
octets. This field should be set for any section whose size is
|
1523 |
|
|
changed by linker relaxation. It is required for sections where
|
1524 |
|
|
the linker relaxation scheme doesn't cache altered section and
|
1525 |
|
|
reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
|
1526 |
|
|
targets), and thus the original size needs to be kept to read the
|
1527 |
|
|
section multiple times. For output sections, rawsize holds the
|
1528 |
|
|
section size calculated on a previous linker relaxation pass. */
|
1529 |
|
|
bfd_size_type rawsize;
|
1530 |
|
|
|
1531 |
|
|
/* If this section is going to be output, then this value is the
|
1532 |
|
|
offset in *bytes* into the output section of the first byte in the
|
1533 |
|
|
input section (byte ==> smallest addressable unit on the
|
1534 |
|
|
target). In most cases, if this was going to start at the
|
1535 |
|
|
100th octet (8-bit quantity) in the output section, this value
|
1536 |
|
|
would be 100. However, if the target byte size is 16 bits
|
1537 |
|
|
(bfd_octets_per_byte is "2"), this value would be 50. */
|
1538 |
|
|
bfd_vma output_offset;
|
1539 |
|
|
|
1540 |
|
|
/* The output section through which to map on output. */
|
1541 |
|
|
struct bfd_section *output_section;
|
1542 |
|
|
|
1543 |
|
|
/* The alignment requirement of the section, as an exponent of 2 -
|
1544 |
|
|
e.g., 3 aligns to 2^3 (or 8). */
|
1545 |
|
|
unsigned int alignment_power;
|
1546 |
|
|
|
1547 |
|
|
/* If an input section, a pointer to a vector of relocation
|
1548 |
|
|
records for the data in this section. */
|
1549 |
|
|
struct reloc_cache_entry *relocation;
|
1550 |
|
|
|
1551 |
|
|
/* If an output section, a pointer to a vector of pointers to
|
1552 |
|
|
relocation records for the data in this section. */
|
1553 |
|
|
struct reloc_cache_entry **orelocation;
|
1554 |
|
|
|
1555 |
|
|
/* The number of relocation records in one of the above. */
|
1556 |
|
|
unsigned reloc_count;
|
1557 |
|
|
|
1558 |
|
|
/* Information below is back end specific - and not always used
|
1559 |
|
|
or updated. */
|
1560 |
|
|
|
1561 |
|
|
/* File position of section data. */
|
1562 |
|
|
file_ptr filepos;
|
1563 |
|
|
|
1564 |
|
|
/* File position of relocation info. */
|
1565 |
|
|
file_ptr rel_filepos;
|
1566 |
|
|
|
1567 |
|
|
/* File position of line data. */
|
1568 |
|
|
file_ptr line_filepos;
|
1569 |
|
|
|
1570 |
|
|
/* Pointer to data for applications. */
|
1571 |
|
|
void *userdata;
|
1572 |
|
|
|
1573 |
|
|
/* If the SEC_IN_MEMORY flag is set, this points to the actual
|
1574 |
|
|
contents. */
|
1575 |
|
|
unsigned char *contents;
|
1576 |
|
|
|
1577 |
|
|
/* Attached line number information. */
|
1578 |
|
|
alent *lineno;
|
1579 |
|
|
|
1580 |
|
|
/* Number of line number records. */
|
1581 |
|
|
unsigned int lineno_count;
|
1582 |
|
|
|
1583 |
|
|
/* Entity size for merging purposes. */
|
1584 |
|
|
unsigned int entsize;
|
1585 |
|
|
|
1586 |
|
|
/* Points to the kept section if this section is a link-once section,
|
1587 |
|
|
and is discarded. */
|
1588 |
|
|
struct bfd_section *kept_section;
|
1589 |
|
|
|
1590 |
|
|
/* When a section is being output, this value changes as more
|
1591 |
|
|
linenumbers are written out. */
|
1592 |
|
|
file_ptr moving_line_filepos;
|
1593 |
|
|
|
1594 |
|
|
/* What the section number is in the target world. */
|
1595 |
|
|
int target_index;
|
1596 |
|
|
|
1597 |
|
|
void *used_by_bfd;
|
1598 |
|
|
|
1599 |
|
|
/* If this is a constructor section then here is a list of the
|
1600 |
|
|
relocations created to relocate items within it. */
|
1601 |
|
|
struct relent_chain *constructor_chain;
|
1602 |
|
|
|
1603 |
|
|
/* The BFD which owns the section. */
|
1604 |
|
|
bfd *owner;
|
1605 |
|
|
|
1606 |
|
|
/* A symbol which points at this section only. */
|
1607 |
|
|
struct bfd_symbol *symbol;
|
1608 |
|
|
struct bfd_symbol **symbol_ptr_ptr;
|
1609 |
|
|
|
1610 |
|
|
/* Early in the link process, map_head and map_tail are used to build
|
1611 |
|
|
a list of input sections attached to an output section. Later,
|
1612 |
|
|
output sections use these fields for a list of bfd_link_order
|
1613 |
|
|
structs. */
|
1614 |
|
|
union {
|
1615 |
|
|
struct bfd_link_order *link_order;
|
1616 |
|
|
struct bfd_section *s;
|
1617 |
|
|
} map_head, map_tail;
|
1618 |
|
|
} asection;
|
1619 |
|
|
|
1620 |
|
|
/* These sections are global, and are managed by BFD. The application
|
1621 |
|
|
and target back end are not permitted to change the values in
|
1622 |
|
|
these sections. New code should use the section_ptr macros rather
|
1623 |
|
|
than referring directly to the const sections. The const sections
|
1624 |
|
|
may eventually vanish. */
|
1625 |
|
|
#define BFD_ABS_SECTION_NAME "*ABS*"
|
1626 |
|
|
#define BFD_UND_SECTION_NAME "*UND*"
|
1627 |
|
|
#define BFD_COM_SECTION_NAME "*COM*"
|
1628 |
|
|
#define BFD_IND_SECTION_NAME "*IND*"
|
1629 |
|
|
|
1630 |
|
|
/* The absolute section. */
|
1631 |
|
|
extern asection bfd_abs_section;
|
1632 |
|
|
#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
|
1633 |
|
|
#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
|
1634 |
|
|
/* Pointer to the undefined section. */
|
1635 |
|
|
extern asection bfd_und_section;
|
1636 |
|
|
#define bfd_und_section_ptr ((asection *) &bfd_und_section)
|
1637 |
|
|
#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
|
1638 |
|
|
/* Pointer to the common section. */
|
1639 |
|
|
extern asection bfd_com_section;
|
1640 |
|
|
#define bfd_com_section_ptr ((asection *) &bfd_com_section)
|
1641 |
|
|
/* Pointer to the indirect section. */
|
1642 |
|
|
extern asection bfd_ind_section;
|
1643 |
|
|
#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
|
1644 |
|
|
#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
|
1645 |
|
|
|
1646 |
|
|
#define bfd_is_const_section(SEC) \
|
1647 |
|
|
( ((SEC) == bfd_abs_section_ptr) \
|
1648 |
|
|
|| ((SEC) == bfd_und_section_ptr) \
|
1649 |
|
|
|| ((SEC) == bfd_com_section_ptr) \
|
1650 |
|
|
|| ((SEC) == bfd_ind_section_ptr))
|
1651 |
|
|
|
1652 |
|
|
/* Macros to handle insertion and deletion of a bfd's sections. These
|
1653 |
|
|
only handle the list pointers, ie. do not adjust section_count,
|
1654 |
|
|
target_index etc. */
|
1655 |
|
|
#define bfd_section_list_remove(ABFD, S) \
|
1656 |
|
|
do \
|
1657 |
|
|
{ \
|
1658 |
|
|
asection *_s = S; \
|
1659 |
|
|
asection *_next = _s->next; \
|
1660 |
|
|
asection *_prev = _s->prev; \
|
1661 |
|
|
if (_prev) \
|
1662 |
|
|
_prev->next = _next; \
|
1663 |
|
|
else \
|
1664 |
|
|
(ABFD)->sections = _next; \
|
1665 |
|
|
if (_next) \
|
1666 |
|
|
_next->prev = _prev; \
|
1667 |
|
|
else \
|
1668 |
|
|
(ABFD)->section_last = _prev; \
|
1669 |
|
|
} \
|
1670 |
|
|
while (0)
|
1671 |
|
|
#define bfd_section_list_append(ABFD, S) \
|
1672 |
|
|
do \
|
1673 |
|
|
{ \
|
1674 |
|
|
asection *_s = S; \
|
1675 |
|
|
bfd *_abfd = ABFD; \
|
1676 |
|
|
_s->next = NULL; \
|
1677 |
|
|
if (_abfd->section_last) \
|
1678 |
|
|
{ \
|
1679 |
|
|
_s->prev = _abfd->section_last; \
|
1680 |
|
|
_abfd->section_last->next = _s; \
|
1681 |
|
|
} \
|
1682 |
|
|
else \
|
1683 |
|
|
{ \
|
1684 |
|
|
_s->prev = NULL; \
|
1685 |
|
|
_abfd->sections = _s; \
|
1686 |
|
|
} \
|
1687 |
|
|
_abfd->section_last = _s; \
|
1688 |
|
|
} \
|
1689 |
|
|
while (0)
|
1690 |
|
|
#define bfd_section_list_prepend(ABFD, S) \
|
1691 |
|
|
do \
|
1692 |
|
|
{ \
|
1693 |
|
|
asection *_s = S; \
|
1694 |
|
|
bfd *_abfd = ABFD; \
|
1695 |
|
|
_s->prev = NULL; \
|
1696 |
|
|
if (_abfd->sections) \
|
1697 |
|
|
{ \
|
1698 |
|
|
_s->next = _abfd->sections; \
|
1699 |
|
|
_abfd->sections->prev = _s; \
|
1700 |
|
|
} \
|
1701 |
|
|
else \
|
1702 |
|
|
{ \
|
1703 |
|
|
_s->next = NULL; \
|
1704 |
|
|
_abfd->section_last = _s; \
|
1705 |
|
|
} \
|
1706 |
|
|
_abfd->sections = _s; \
|
1707 |
|
|
} \
|
1708 |
|
|
while (0)
|
1709 |
|
|
#define bfd_section_list_insert_after(ABFD, A, S) \
|
1710 |
|
|
do \
|
1711 |
|
|
{ \
|
1712 |
|
|
asection *_a = A; \
|
1713 |
|
|
asection *_s = S; \
|
1714 |
|
|
asection *_next = _a->next; \
|
1715 |
|
|
_s->next = _next; \
|
1716 |
|
|
_s->prev = _a; \
|
1717 |
|
|
_a->next = _s; \
|
1718 |
|
|
if (_next) \
|
1719 |
|
|
_next->prev = _s; \
|
1720 |
|
|
else \
|
1721 |
|
|
(ABFD)->section_last = _s; \
|
1722 |
|
|
} \
|
1723 |
|
|
while (0)
|
1724 |
|
|
#define bfd_section_list_insert_before(ABFD, B, S) \
|
1725 |
|
|
do \
|
1726 |
|
|
{ \
|
1727 |
|
|
asection *_b = B; \
|
1728 |
|
|
asection *_s = S; \
|
1729 |
|
|
asection *_prev = _b->prev; \
|
1730 |
|
|
_s->prev = _prev; \
|
1731 |
|
|
_s->next = _b; \
|
1732 |
|
|
_b->prev = _s; \
|
1733 |
|
|
if (_prev) \
|
1734 |
|
|
_prev->next = _s; \
|
1735 |
|
|
else \
|
1736 |
|
|
(ABFD)->sections = _s; \
|
1737 |
|
|
} \
|
1738 |
|
|
while (0)
|
1739 |
|
|
#define bfd_section_removed_from_list(ABFD, S) \
|
1740 |
|
|
((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
|
1741 |
|
|
|
1742 |
|
|
#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
|
1743 |
|
|
/* name, id, index, next, prev, flags, user_set_vma, */ \
|
1744 |
|
|
{ NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
|
1745 |
|
|
\
|
1746 |
|
|
/* linker_mark, linker_has_input, gc_mark, */ \
|
1747 |
|
|
0, 0, 1, \
|
1748 |
|
|
\
|
1749 |
|
|
/* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
|
1750 |
|
|
0, 0, 0, 0, \
|
1751 |
|
|
\
|
1752 |
|
|
/* has_gp_reloc, need_finalize_relax, reloc_done, */ \
|
1753 |
|
|
0, 0, 0, \
|
1754 |
|
|
\
|
1755 |
|
|
/* vma, lma, size, rawsize */ \
|
1756 |
|
|
0, 0, 0, 0, \
|
1757 |
|
|
\
|
1758 |
|
|
/* output_offset, output_section, alignment_power, */ \
|
1759 |
|
|
0, (struct bfd_section *) &SEC, 0, \
|
1760 |
|
|
\
|
1761 |
|
|
/* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
|
1762 |
|
|
NULL, NULL, 0, 0, 0, \
|
1763 |
|
|
\
|
1764 |
|
|
/* line_filepos, userdata, contents, lineno, lineno_count, */ \
|
1765 |
|
|
0, NULL, NULL, NULL, 0, \
|
1766 |
|
|
\
|
1767 |
|
|
/* entsize, kept_section, moving_line_filepos, */ \
|
1768 |
|
|
0, NULL, 0, \
|
1769 |
|
|
\
|
1770 |
|
|
/* target_index, used_by_bfd, constructor_chain, owner, */ \
|
1771 |
|
|
0, NULL, NULL, NULL, \
|
1772 |
|
|
\
|
1773 |
|
|
/* symbol, symbol_ptr_ptr, */ \
|
1774 |
|
|
(struct bfd_symbol *) SYM, &SEC.symbol, \
|
1775 |
|
|
\
|
1776 |
|
|
/* map_head, map_tail */ \
|
1777 |
|
|
{ NULL }, { NULL } \
|
1778 |
|
|
}
|
1779 |
|
|
|
1780 |
|
|
|
1781 |
|
|
File: bfd.info, Node: section prototypes, Prev: typedef asection, Up: Sections
|
1782 |
|
|
|
1783 |
|
|
2.6.5 Section prototypes
|
1784 |
|
|
------------------------
|
1785 |
|
|
|
1786 |
|
|
These are the functions exported by the section handling part of BFD.
|
1787 |
|
|
|
1788 |
|
|
2.6.5.1 `bfd_section_list_clear'
|
1789 |
|
|
................................
|
1790 |
|
|
|
1791 |
|
|
*Synopsis*
|
1792 |
|
|
void bfd_section_list_clear (bfd *);
|
1793 |
|
|
*Description*
|
1794 |
|
|
Clears the section list, and also resets the section count and hash
|
1795 |
|
|
table entries.
|
1796 |
|
|
|
1797 |
|
|
2.6.5.2 `bfd_get_section_by_name'
|
1798 |
|
|
.................................
|
1799 |
|
|
|
1800 |
|
|
*Synopsis*
|
1801 |
|
|
asection *bfd_get_section_by_name (bfd *abfd, const char *name);
|
1802 |
|
|
*Description*
|
1803 |
|
|
Run through ABFD and return the one of the `asection's whose name
|
1804 |
|
|
matches NAME, otherwise `NULL'. *Note Sections::, for more information.
|
1805 |
|
|
|
1806 |
|
|
This should only be used in special cases; the normal way to process
|
1807 |
|
|
all sections of a given name is to use `bfd_map_over_sections' and
|
1808 |
|
|
`strcmp' on the name (or better yet, base it on the section flags or
|
1809 |
|
|
something else) for each section.
|
1810 |
|
|
|
1811 |
|
|
2.6.5.3 `bfd_get_section_by_name_if'
|
1812 |
|
|
....................................
|
1813 |
|
|
|
1814 |
|
|
*Synopsis*
|
1815 |
|
|
asection *bfd_get_section_by_name_if
|
1816 |
|
|
(bfd *abfd,
|
1817 |
|
|
const char *name,
|
1818 |
|
|
bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
|
1819 |
|
|
void *obj);
|
1820 |
|
|
*Description*
|
1821 |
|
|
Call the provided function FUNC for each section attached to the BFD
|
1822 |
|
|
ABFD whose name matches NAME, passing OBJ as an argument. The function
|
1823 |
|
|
will be called as if by
|
1824 |
|
|
|
1825 |
|
|
func (abfd, the_section, obj);
|
1826 |
|
|
|
1827 |
|
|
It returns the first section for which FUNC returns true, otherwise
|
1828 |
|
|
`NULL'.
|
1829 |
|
|
|
1830 |
|
|
2.6.5.4 `bfd_get_unique_section_name'
|
1831 |
|
|
.....................................
|
1832 |
|
|
|
1833 |
|
|
*Synopsis*
|
1834 |
|
|
char *bfd_get_unique_section_name
|
1835 |
|
|
(bfd *abfd, const char *templat, int *count);
|
1836 |
|
|
*Description*
|
1837 |
|
|
Invent a section name that is unique in ABFD by tacking a dot and a
|
1838 |
|
|
digit suffix onto the original TEMPLAT. If COUNT is non-NULL, then it
|
1839 |
|
|
specifies the first number tried as a suffix to generate a unique name.
|
1840 |
|
|
The value pointed to by COUNT will be incremented in this case.
|
1841 |
|
|
|
1842 |
|
|
2.6.5.5 `bfd_make_section_old_way'
|
1843 |
|
|
..................................
|
1844 |
|
|
|
1845 |
|
|
*Synopsis*
|
1846 |
|
|
asection *bfd_make_section_old_way (bfd *abfd, const char *name);
|
1847 |
|
|
*Description*
|
1848 |
|
|
Create a new empty section called NAME and attach it to the end of the
|
1849 |
|
|
chain of sections for the BFD ABFD. An attempt to create a section with
|
1850 |
|
|
a name which is already in use returns its pointer without changing the
|
1851 |
|
|
section chain.
|
1852 |
|
|
|
1853 |
|
|
It has the funny name since this is the way it used to be before it
|
1854 |
|
|
was rewritten....
|
1855 |
|
|
|
1856 |
|
|
Possible errors are:
|
1857 |
|
|
* `bfd_error_invalid_operation' - If output has already started for
|
1858 |
|
|
this BFD.
|
1859 |
|
|
|
1860 |
|
|
* `bfd_error_no_memory' - If memory allocation fails.
|
1861 |
|
|
|
1862 |
|
|
2.6.5.6 `bfd_make_section_anyway_with_flags'
|
1863 |
|
|
............................................
|
1864 |
|
|
|
1865 |
|
|
*Synopsis*
|
1866 |
|
|
asection *bfd_make_section_anyway_with_flags
|
1867 |
|
|
(bfd *abfd, const char *name, flagword flags);
|
1868 |
|
|
*Description*
|
1869 |
|
|
Create a new empty section called NAME and attach it to the end of the
|
1870 |
|
|
chain of sections for ABFD. Create a new section even if there is
|
1871 |
|
|
already a section with that name. Also set the attributes of the new
|
1872 |
|
|
section to the value FLAGS.
|
1873 |
|
|
|
1874 |
|
|
Return `NULL' and set `bfd_error' on error; possible errors are:
|
1875 |
|
|
* `bfd_error_invalid_operation' - If output has already started for
|
1876 |
|
|
ABFD.
|
1877 |
|
|
|
1878 |
|
|
* `bfd_error_no_memory' - If memory allocation fails.
|
1879 |
|
|
|
1880 |
|
|
2.6.5.7 `bfd_make_section_anyway'
|
1881 |
|
|
.................................
|
1882 |
|
|
|
1883 |
|
|
*Synopsis*
|
1884 |
|
|
asection *bfd_make_section_anyway (bfd *abfd, const char *name);
|
1885 |
|
|
*Description*
|
1886 |
|
|
Create a new empty section called NAME and attach it to the end of the
|
1887 |
|
|
chain of sections for ABFD. Create a new section even if there is
|
1888 |
|
|
already a section with that name.
|
1889 |
|
|
|
1890 |
|
|
Return `NULL' and set `bfd_error' on error; possible errors are:
|
1891 |
|
|
* `bfd_error_invalid_operation' - If output has already started for
|
1892 |
|
|
ABFD.
|
1893 |
|
|
|
1894 |
|
|
* `bfd_error_no_memory' - If memory allocation fails.
|
1895 |
|
|
|
1896 |
|
|
2.6.5.8 `bfd_make_section_with_flags'
|
1897 |
|
|
.....................................
|
1898 |
|
|
|
1899 |
|
|
*Synopsis*
|
1900 |
|
|
asection *bfd_make_section_with_flags
|
1901 |
|
|
(bfd *, const char *name, flagword flags);
|
1902 |
|
|
*Description*
|
1903 |
|
|
Like `bfd_make_section_anyway', but return `NULL' (without calling
|
1904 |
|
|
bfd_set_error ()) without changing the section chain if there is
|
1905 |
|
|
already a section named NAME. Also set the attributes of the new
|
1906 |
|
|
section to the value FLAGS. If there is an error, return `NULL' and set
|
1907 |
|
|
`bfd_error'.
|
1908 |
|
|
|
1909 |
|
|
2.6.5.9 `bfd_make_section'
|
1910 |
|
|
..........................
|
1911 |
|
|
|
1912 |
|
|
*Synopsis*
|
1913 |
|
|
asection *bfd_make_section (bfd *, const char *name);
|
1914 |
|
|
*Description*
|
1915 |
|
|
Like `bfd_make_section_anyway', but return `NULL' (without calling
|
1916 |
|
|
bfd_set_error ()) without changing the section chain if there is
|
1917 |
|
|
already a section named NAME. If there is an error, return `NULL' and
|
1918 |
|
|
set `bfd_error'.
|
1919 |
|
|
|
1920 |
|
|
2.6.5.10 `bfd_set_section_flags'
|
1921 |
|
|
................................
|
1922 |
|
|
|
1923 |
|
|
*Synopsis*
|
1924 |
|
|
bfd_boolean bfd_set_section_flags
|
1925 |
|
|
(bfd *abfd, asection *sec, flagword flags);
|
1926 |
|
|
*Description*
|
1927 |
|
|
Set the attributes of the section SEC in the BFD ABFD to the value
|
1928 |
|
|
FLAGS. Return `TRUE' on success, `FALSE' on error. Possible error
|
1929 |
|
|
returns are:
|
1930 |
|
|
|
1931 |
|
|
* `bfd_error_invalid_operation' - The section cannot have one or
|
1932 |
|
|
more of the attributes requested. For example, a .bss section in
|
1933 |
|
|
`a.out' may not have the `SEC_HAS_CONTENTS' field set.
|
1934 |
|
|
|
1935 |
|
|
2.6.5.11 `bfd_map_over_sections'
|
1936 |
|
|
................................
|
1937 |
|
|
|
1938 |
|
|
*Synopsis*
|
1939 |
|
|
void bfd_map_over_sections
|
1940 |
|
|
(bfd *abfd,
|
1941 |
|
|
void (*func) (bfd *abfd, asection *sect, void *obj),
|
1942 |
|
|
void *obj);
|
1943 |
|
|
*Description*
|
1944 |
|
|
Call the provided function FUNC for each section attached to the BFD
|
1945 |
|
|
ABFD, passing OBJ as an argument. The function will be called as if by
|
1946 |
|
|
|
1947 |
|
|
func (abfd, the_section, obj);
|
1948 |
|
|
|
1949 |
|
|
This is the preferred method for iterating over sections; an
|
1950 |
|
|
alternative would be to use a loop:
|
1951 |
|
|
|
1952 |
|
|
section *p;
|
1953 |
|
|
for (p = abfd->sections; p != NULL; p = p->next)
|
1954 |
|
|
func (abfd, p, ...)
|
1955 |
|
|
|
1956 |
|
|
2.6.5.12 `bfd_sections_find_if'
|
1957 |
|
|
...............................
|
1958 |
|
|
|
1959 |
|
|
*Synopsis*
|
1960 |
|
|
asection *bfd_sections_find_if
|
1961 |
|
|
(bfd *abfd,
|
1962 |
|
|
bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
|
1963 |
|
|
void *obj);
|
1964 |
|
|
*Description*
|
1965 |
|
|
Call the provided function OPERATION for each section attached to the
|
1966 |
|
|
BFD ABFD, passing OBJ as an argument. The function will be called as if
|
1967 |
|
|
by
|
1968 |
|
|
|
1969 |
|
|
operation (abfd, the_section, obj);
|
1970 |
|
|
|
1971 |
|
|
It returns the first section for which OPERATION returns true.
|
1972 |
|
|
|
1973 |
|
|
2.6.5.13 `bfd_set_section_size'
|
1974 |
|
|
...............................
|
1975 |
|
|
|
1976 |
|
|
*Synopsis*
|
1977 |
|
|
bfd_boolean bfd_set_section_size
|
1978 |
|
|
(bfd *abfd, asection *sec, bfd_size_type val);
|
1979 |
|
|
*Description*
|
1980 |
|
|
Set SEC to the size VAL. If the operation is ok, then `TRUE' is
|
1981 |
|
|
returned, else `FALSE'.
|
1982 |
|
|
|
1983 |
|
|
Possible error returns:
|
1984 |
|
|
* `bfd_error_invalid_operation' - Writing has started to the BFD, so
|
1985 |
|
|
setting the size is invalid.
|
1986 |
|
|
|
1987 |
|
|
2.6.5.14 `bfd_set_section_contents'
|
1988 |
|
|
...................................
|
1989 |
|
|
|
1990 |
|
|
*Synopsis*
|
1991 |
|
|
bfd_boolean bfd_set_section_contents
|
1992 |
|
|
(bfd *abfd, asection *section, const void *data,
|
1993 |
|
|
file_ptr offset, bfd_size_type count);
|
1994 |
|
|
*Description*
|
1995 |
|
|
Sets the contents of the section SECTION in BFD ABFD to the data
|
1996 |
|
|
starting in memory at DATA. The data is written to the output section
|
1997 |
|
|
starting at offset OFFSET for COUNT octets.
|
1998 |
|
|
|
1999 |
|
|
Normally `TRUE' is returned, else `FALSE'. Possible error returns
|
2000 |
|
|
are:
|
2001 |
|
|
* `bfd_error_no_contents' - The output section does not have the
|
2002 |
|
|
`SEC_HAS_CONTENTS' attribute, so nothing can be written to it.
|
2003 |
|
|
|
2004 |
|
|
* and some more too
|
2005 |
|
|
This routine is front end to the back end function
|
2006 |
|
|
`_bfd_set_section_contents'.
|
2007 |
|
|
|
2008 |
|
|
2.6.5.15 `bfd_get_section_contents'
|
2009 |
|
|
...................................
|
2010 |
|
|
|
2011 |
|
|
*Synopsis*
|
2012 |
|
|
bfd_boolean bfd_get_section_contents
|
2013 |
|
|
(bfd *abfd, asection *section, void *location, file_ptr offset,
|
2014 |
|
|
bfd_size_type count);
|
2015 |
|
|
*Description*
|
2016 |
|
|
Read data from SECTION in BFD ABFD into memory starting at LOCATION.
|
2017 |
|
|
The data is read at an offset of OFFSET from the start of the input
|
2018 |
|
|
section, and is read for COUNT bytes.
|
2019 |
|
|
|
2020 |
|
|
If the contents of a constructor with the `SEC_CONSTRUCTOR' flag set
|
2021 |
|
|
are requested or if the section does not have the `SEC_HAS_CONTENTS'
|
2022 |
|
|
flag set, then the LOCATION is filled with zeroes. If no errors occur,
|
2023 |
|
|
`TRUE' is returned, else `FALSE'.
|
2024 |
|
|
|
2025 |
|
|
2.6.5.16 `bfd_malloc_and_get_section'
|
2026 |
|
|
.....................................
|
2027 |
|
|
|
2028 |
|
|
*Synopsis*
|
2029 |
|
|
bfd_boolean bfd_malloc_and_get_section
|
2030 |
|
|
(bfd *abfd, asection *section, bfd_byte **buf);
|
2031 |
|
|
*Description*
|
2032 |
|
|
Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by
|
2033 |
|
|
this function.
|
2034 |
|
|
|
2035 |
|
|
2.6.5.17 `bfd_copy_private_section_data'
|
2036 |
|
|
........................................
|
2037 |
|
|
|
2038 |
|
|
*Synopsis*
|
2039 |
|
|
bfd_boolean bfd_copy_private_section_data
|
2040 |
|
|
(bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
|
2041 |
|
|
*Description*
|
2042 |
|
|
Copy private section information from ISEC in the BFD IBFD to the
|
2043 |
|
|
section OSEC in the BFD OBFD. Return `TRUE' on success, `FALSE' on
|
2044 |
|
|
error. Possible error returns are:
|
2045 |
|
|
|
2046 |
|
|
* `bfd_error_no_memory' - Not enough memory exists to create private
|
2047 |
|
|
data for OSEC.
|
2048 |
|
|
|
2049 |
|
|
#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
|
2050 |
|
|
BFD_SEND (obfd, _bfd_copy_private_section_data, \
|
2051 |
|
|
(ibfd, isection, obfd, osection))
|
2052 |
|
|
|
2053 |
|
|
2.6.5.18 `bfd_generic_is_group_section'
|
2054 |
|
|
.......................................
|
2055 |
|
|
|
2056 |
|
|
*Synopsis*
|
2057 |
|
|
bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
|
2058 |
|
|
*Description*
|
2059 |
|
|
Returns TRUE if SEC is a member of a group.
|
2060 |
|
|
|
2061 |
|
|
2.6.5.19 `bfd_generic_discard_group'
|
2062 |
|
|
....................................
|
2063 |
|
|
|
2064 |
|
|
*Synopsis*
|
2065 |
|
|
bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
|
2066 |
|
|
*Description*
|
2067 |
|
|
Remove all members of GROUP from the output.
|
2068 |
|
|
|
2069 |
|
|
|
2070 |
|
|
File: bfd.info, Node: Symbols, Next: Archives, Prev: Sections, Up: BFD front end
|
2071 |
|
|
|
2072 |
|
|
2.7 Symbols
|
2073 |
|
|
===========
|
2074 |
|
|
|
2075 |
|
|
BFD tries to maintain as much symbol information as it can when it
|
2076 |
|
|
moves information from file to file. BFD passes information to
|
2077 |
|
|
applications though the `asymbol' structure. When the application
|
2078 |
|
|
requests the symbol table, BFD reads the table in the native form and
|
2079 |
|
|
translates parts of it into the internal format. To maintain more than
|
2080 |
|
|
the information passed to applications, some targets keep some
|
2081 |
|
|
information "behind the scenes" in a structure only the particular back
|
2082 |
|
|
end knows about. For example, the coff back end keeps the original
|
2083 |
|
|
symbol table structure as well as the canonical structure when a BFD is
|
2084 |
|
|
read in. On output, the coff back end can reconstruct the output symbol
|
2085 |
|
|
table so that no information is lost, even information unique to coff
|
2086 |
|
|
which BFD doesn't know or understand. If a coff symbol table were read,
|
2087 |
|
|
but were written through an a.out back end, all the coff specific
|
2088 |
|
|
information would be lost. The symbol table of a BFD is not necessarily
|
2089 |
|
|
read in until a canonicalize request is made. Then the BFD back end
|
2090 |
|
|
fills in a table provided by the application with pointers to the
|
2091 |
|
|
canonical information. To output symbols, the application provides BFD
|
2092 |
|
|
with a table of pointers to pointers to `asymbol's. This allows
|
2093 |
|
|
applications like the linker to output a symbol as it was read, since
|
2094 |
|
|
the "behind the scenes" information will be still available.
|
2095 |
|
|
|
2096 |
|
|
* Menu:
|
2097 |
|
|
|
2098 |
|
|
* Reading Symbols::
|
2099 |
|
|
* Writing Symbols::
|
2100 |
|
|
* Mini Symbols::
|
2101 |
|
|
* typedef asymbol::
|
2102 |
|
|
* symbol handling functions::
|
2103 |
|
|
|
2104 |
|
|
|
2105 |
|
|
File: bfd.info, Node: Reading Symbols, Next: Writing Symbols, Prev: Symbols, Up: Symbols
|
2106 |
|
|
|
2107 |
|
|
2.7.1 Reading symbols
|
2108 |
|
|
---------------------
|
2109 |
|
|
|
2110 |
|
|
There are two stages to reading a symbol table from a BFD: allocating
|
2111 |
|
|
storage, and the actual reading process. This is an excerpt from an
|
2112 |
|
|
application which reads the symbol table:
|
2113 |
|
|
|
2114 |
|
|
long storage_needed;
|
2115 |
|
|
asymbol **symbol_table;
|
2116 |
|
|
long number_of_symbols;
|
2117 |
|
|
long i;
|
2118 |
|
|
|
2119 |
|
|
storage_needed = bfd_get_symtab_upper_bound (abfd);
|
2120 |
|
|
|
2121 |
|
|
if (storage_needed < 0)
|
2122 |
|
|
FAIL
|
2123 |
|
|
|
2124 |
|
|
if (storage_needed == 0)
|
2125 |
|
|
return;
|
2126 |
|
|
|
2127 |
|
|
symbol_table = xmalloc (storage_needed);
|
2128 |
|
|
...
|
2129 |
|
|
number_of_symbols =
|
2130 |
|
|
bfd_canonicalize_symtab (abfd, symbol_table);
|
2131 |
|
|
|
2132 |
|
|
if (number_of_symbols < 0)
|
2133 |
|
|
FAIL
|
2134 |
|
|
|
2135 |
|
|
for (i = 0; i < number_of_symbols; i++)
|
2136 |
|
|
process_symbol (symbol_table[i]);
|
2137 |
|
|
|
2138 |
|
|
All storage for the symbols themselves is in an objalloc connected
|
2139 |
|
|
to the BFD; it is freed when the BFD is closed.
|
2140 |
|
|
|
2141 |
|
|
|
2142 |
|
|
File: bfd.info, Node: Writing Symbols, Next: Mini Symbols, Prev: Reading Symbols, Up: Symbols
|
2143 |
|
|
|
2144 |
|
|
2.7.2 Writing symbols
|
2145 |
|
|
---------------------
|
2146 |
|
|
|
2147 |
|
|
Writing of a symbol table is automatic when a BFD open for writing is
|
2148 |
|
|
closed. The application attaches a vector of pointers to pointers to
|
2149 |
|
|
symbols to the BFD being written, and fills in the symbol count. The
|
2150 |
|
|
close and cleanup code reads through the table provided and performs
|
2151 |
|
|
all the necessary operations. The BFD output code must always be
|
2152 |
|
|
provided with an "owned" symbol: one which has come from another BFD,
|
2153 |
|
|
or one which has been created using `bfd_make_empty_symbol'. Here is an
|
2154 |
|
|
example showing the creation of a symbol table with only one element:
|
2155 |
|
|
|
2156 |
|
|
#include "bfd.h"
|
2157 |
|
|
int main (void)
|
2158 |
|
|
{
|
2159 |
|
|
bfd *abfd;
|
2160 |
|
|
asymbol *ptrs[2];
|
2161 |
|
|
asymbol *new;
|
2162 |
|
|
|
2163 |
|
|
abfd = bfd_openw ("foo","a.out-sunos-big");
|
2164 |
|
|
bfd_set_format (abfd, bfd_object);
|
2165 |
|
|
new = bfd_make_empty_symbol (abfd);
|
2166 |
|
|
new->name = "dummy_symbol";
|
2167 |
|
|
new->section = bfd_make_section_old_way (abfd, ".text");
|
2168 |
|
|
new->flags = BSF_GLOBAL;
|
2169 |
|
|
new->value = 0x12345;
|
2170 |
|
|
|
2171 |
|
|
ptrs[0] = new;
|
2172 |
|
|
ptrs[1] = 0;
|
2173 |
|
|
|
2174 |
|
|
bfd_set_symtab (abfd, ptrs, 1);
|
2175 |
|
|
bfd_close (abfd);
|
2176 |
|
|
return 0;
|
2177 |
|
|
}
|
2178 |
|
|
|
2179 |
|
|
./makesym
|
2180 |
|
|
nm foo
|
2181 |
|
|
00012345 A dummy_symbol
|
2182 |
|
|
|
2183 |
|
|
Many formats cannot represent arbitrary symbol information; for
|
2184 |
|
|
instance, the `a.out' object format does not allow an arbitrary number
|
2185 |
|
|
of sections. A symbol pointing to a section which is not one of
|
2186 |
|
|
`.text', `.data' or `.bss' cannot be described.
|
2187 |
|
|
|
2188 |
|
|
|
2189 |
|
|
File: bfd.info, Node: Mini Symbols, Next: typedef asymbol, Prev: Writing Symbols, Up: Symbols
|
2190 |
|
|
|
2191 |
|
|
2.7.3 Mini Symbols
|
2192 |
|
|
------------------
|
2193 |
|
|
|
2194 |
|
|
Mini symbols provide read-only access to the symbol table. They use
|
2195 |
|
|
less memory space, but require more time to access. They can be useful
|
2196 |
|
|
for tools like nm or objdump, which may have to handle symbol tables of
|
2197 |
|
|
extremely large executables.
|
2198 |
|
|
|
2199 |
|
|
The `bfd_read_minisymbols' function will read the symbols into
|
2200 |
|
|
memory in an internal form. It will return a `void *' pointer to a
|
2201 |
|
|
block of memory, a symbol count, and the size of each symbol. The
|
2202 |
|
|
pointer is allocated using `malloc', and should be freed by the caller
|
2203 |
|
|
when it is no longer needed.
|
2204 |
|
|
|
2205 |
|
|
The function `bfd_minisymbol_to_symbol' will take a pointer to a
|
2206 |
|
|
minisymbol, and a pointer to a structure returned by
|
2207 |
|
|
`bfd_make_empty_symbol', and return a `asymbol' structure. The return
|
2208 |
|
|
value may or may not be the same as the value from
|
2209 |
|
|
`bfd_make_empty_symbol' which was passed in.
|
2210 |
|
|
|
2211 |
|
|
|
2212 |
|
|
File: bfd.info, Node: typedef asymbol, Next: symbol handling functions, Prev: Mini Symbols, Up: Symbols
|
2213 |
|
|
|
2214 |
|
|
2.7.4 typedef asymbol
|
2215 |
|
|
---------------------
|
2216 |
|
|
|
2217 |
|
|
An `asymbol' has the form:
|
2218 |
|
|
|
2219 |
|
|
|
2220 |
|
|
typedef struct bfd_symbol
|
2221 |
|
|
{
|
2222 |
|
|
/* A pointer to the BFD which owns the symbol. This information
|
2223 |
|
|
is necessary so that a back end can work out what additional
|
2224 |
|
|
information (invisible to the application writer) is carried
|
2225 |
|
|
with the symbol.
|
2226 |
|
|
|
2227 |
|
|
This field is *almost* redundant, since you can use section->owner
|
2228 |
|
|
instead, except that some symbols point to the global sections
|
2229 |
|
|
bfd_{abs,com,und}_section. This could be fixed by making
|
2230 |
|
|
these globals be per-bfd (or per-target-flavor). FIXME. */
|
2231 |
|
|
struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
|
2232 |
|
|
|
2233 |
|
|
/* The text of the symbol. The name is left alone, and not copied; the
|
2234 |
|
|
application may not alter it. */
|
2235 |
|
|
const char *name;
|
2236 |
|
|
|
2237 |
|
|
/* The value of the symbol. This really should be a union of a
|
2238 |
|
|
numeric value with a pointer, since some flags indicate that
|
2239 |
|
|
a pointer to another symbol is stored here. */
|
2240 |
|
|
symvalue value;
|
2241 |
|
|
|
2242 |
|
|
/* Attributes of a symbol. */
|
2243 |
|
|
#define BSF_NO_FLAGS 0x00
|
2244 |
|
|
|
2245 |
|
|
/* The symbol has local scope; `static' in `C'. The value
|
2246 |
|
|
is the offset into the section of the data. */
|
2247 |
|
|
#define BSF_LOCAL 0x01
|
2248 |
|
|
|
2249 |
|
|
/* The symbol has global scope; initialized data in `C'. The
|
2250 |
|
|
value is the offset into the section of the data. */
|
2251 |
|
|
#define BSF_GLOBAL 0x02
|
2252 |
|
|
|
2253 |
|
|
/* The symbol has global scope and is exported. The value is
|
2254 |
|
|
the offset into the section of the data. */
|
2255 |
|
|
#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
|
2256 |
|
|
|
2257 |
|
|
/* A normal C symbol would be one of:
|
2258 |
|
|
`BSF_LOCAL', `BSF_FORT_COMM', `BSF_UNDEFINED' or
|
2259 |
|
|
`BSF_GLOBAL'. */
|
2260 |
|
|
|
2261 |
|
|
/* The symbol is a debugging record. The value has an arbitrary
|
2262 |
|
|
meaning, unless BSF_DEBUGGING_RELOC is also set. */
|
2263 |
|
|
#define BSF_DEBUGGING 0x08
|
2264 |
|
|
|
2265 |
|
|
/* The symbol denotes a function entry point. Used in ELF,
|
2266 |
|
|
perhaps others someday. */
|
2267 |
|
|
#define BSF_FUNCTION 0x10
|
2268 |
|
|
|
2269 |
|
|
/* Used by the linker. */
|
2270 |
|
|
#define BSF_KEEP 0x20
|
2271 |
|
|
#define BSF_KEEP_G 0x40
|
2272 |
|
|
|
2273 |
|
|
/* A weak global symbol, overridable without warnings by
|
2274 |
|
|
a regular global symbol of the same name. */
|
2275 |
|
|
#define BSF_WEAK 0x80
|
2276 |
|
|
|
2277 |
|
|
/* This symbol was created to point to a section, e.g. ELF's
|
2278 |
|
|
STT_SECTION symbols. */
|
2279 |
|
|
#define BSF_SECTION_SYM 0x100
|
2280 |
|
|
|
2281 |
|
|
/* The symbol used to be a common symbol, but now it is
|
2282 |
|
|
allocated. */
|
2283 |
|
|
#define BSF_OLD_COMMON 0x200
|
2284 |
|
|
|
2285 |
|
|
/* The default value for common data. */
|
2286 |
|
|
#define BFD_FORT_COMM_DEFAULT_VALUE 0
|
2287 |
|
|
|
2288 |
|
|
/* In some files the type of a symbol sometimes alters its
|
2289 |
|
|
location in an output file - ie in coff a `ISFCN' symbol
|
2290 |
|
|
which is also `C_EXT' symbol appears where it was
|
2291 |
|
|
declared and not at the end of a section. This bit is set
|
2292 |
|
|
by the target BFD part to convey this information. */
|
2293 |
|
|
#define BSF_NOT_AT_END 0x400
|
2294 |
|
|
|
2295 |
|
|
/* Signal that the symbol is the label of constructor section. */
|
2296 |
|
|
#define BSF_CONSTRUCTOR 0x800
|
2297 |
|
|
|
2298 |
|
|
/* Signal that the symbol is a warning symbol. The name is a
|
2299 |
|
|
warning. The name of the next symbol is the one to warn about;
|
2300 |
|
|
if a reference is made to a symbol with the same name as the next
|
2301 |
|
|
symbol, a warning is issued by the linker. */
|
2302 |
|
|
#define BSF_WARNING 0x1000
|
2303 |
|
|
|
2304 |
|
|
/* Signal that the symbol is indirect. This symbol is an indirect
|
2305 |
|
|
pointer to the symbol with the same name as the next symbol. */
|
2306 |
|
|
#define BSF_INDIRECT 0x2000
|
2307 |
|
|
|
2308 |
|
|
/* BSF_FILE marks symbols that contain a file name. This is used
|
2309 |
|
|
for ELF STT_FILE symbols. */
|
2310 |
|
|
#define BSF_FILE 0x4000
|
2311 |
|
|
|
2312 |
|
|
/* Symbol is from dynamic linking information. */
|
2313 |
|
|
#define BSF_DYNAMIC 0x8000
|
2314 |
|
|
|
2315 |
|
|
/* The symbol denotes a data object. Used in ELF, and perhaps
|
2316 |
|
|
others someday. */
|
2317 |
|
|
#define BSF_OBJECT 0x10000
|
2318 |
|
|
|
2319 |
|
|
/* This symbol is a debugging symbol. The value is the offset
|
2320 |
|
|
into the section of the data. BSF_DEBUGGING should be set
|
2321 |
|
|
as well. */
|
2322 |
|
|
#define BSF_DEBUGGING_RELOC 0x20000
|
2323 |
|
|
|
2324 |
|
|
/* This symbol is thread local. Used in ELF. */
|
2325 |
|
|
#define BSF_THREAD_LOCAL 0x40000
|
2326 |
|
|
|
2327 |
|
|
/* This symbol represents a complex relocation expression,
|
2328 |
|
|
with the expression tree serialized in the symbol name. */
|
2329 |
|
|
#define BSF_RELC 0x80000
|
2330 |
|
|
|
2331 |
|
|
/* This symbol represents a signed complex relocation expression,
|
2332 |
|
|
with the expression tree serialized in the symbol name. */
|
2333 |
|
|
#define BSF_SRELC 0x100000
|
2334 |
|
|
|
2335 |
|
|
flagword flags;
|
2336 |
|
|
|
2337 |
|
|
/* A pointer to the section to which this symbol is
|
2338 |
|
|
relative. This will always be non NULL, there are special
|
2339 |
|
|
sections for undefined and absolute symbols. */
|
2340 |
|
|
struct bfd_section *section;
|
2341 |
|
|
|
2342 |
|
|
/* Back end special data. */
|
2343 |
|
|
union
|
2344 |
|
|
{
|
2345 |
|
|
void *p;
|
2346 |
|
|
bfd_vma i;
|
2347 |
|
|
}
|
2348 |
|
|
udata;
|
2349 |
|
|
}
|
2350 |
|
|
asymbol;
|
2351 |
|
|
|
2352 |
|
|
|
2353 |
|
|
File: bfd.info, Node: symbol handling functions, Prev: typedef asymbol, Up: Symbols
|
2354 |
|
|
|
2355 |
|
|
2.7.5 Symbol handling functions
|
2356 |
|
|
-------------------------------
|
2357 |
|
|
|
2358 |
|
|
2.7.5.1 `bfd_get_symtab_upper_bound'
|
2359 |
|
|
....................................
|
2360 |
|
|
|
2361 |
|
|
*Description*
|
2362 |
|
|
Return the number of bytes required to store a vector of pointers to
|
2363 |
|
|
`asymbols' for all the symbols in the BFD ABFD, including a terminal
|
2364 |
|
|
NULL pointer. If there are no symbols in the BFD, then return 0. If an
|
2365 |
|
|
error occurs, return -1.
|
2366 |
|
|
#define bfd_get_symtab_upper_bound(abfd) \
|
2367 |
|
|
BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
|
2368 |
|
|
|
2369 |
|
|
2.7.5.2 `bfd_is_local_label'
|
2370 |
|
|
............................
|
2371 |
|
|
|
2372 |
|
|
*Synopsis*
|
2373 |
|
|
bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
|
2374 |
|
|
*Description*
|
2375 |
|
|
Return TRUE if the given symbol SYM in the BFD ABFD is a compiler
|
2376 |
|
|
generated local label, else return FALSE.
|
2377 |
|
|
|
2378 |
|
|
2.7.5.3 `bfd_is_local_label_name'
|
2379 |
|
|
.................................
|
2380 |
|
|
|
2381 |
|
|
*Synopsis*
|
2382 |
|
|
bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
|
2383 |
|
|
*Description*
|
2384 |
|
|
Return TRUE if a symbol with the name NAME in the BFD ABFD is a
|
2385 |
|
|
compiler generated local label, else return FALSE. This just checks
|
2386 |
|
|
whether the name has the form of a local label.
|
2387 |
|
|
#define bfd_is_local_label_name(abfd, name) \
|
2388 |
|
|
BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
|
2389 |
|
|
|
2390 |
|
|
2.7.5.4 `bfd_is_target_special_symbol'
|
2391 |
|
|
......................................
|
2392 |
|
|
|
2393 |
|
|
*Synopsis*
|
2394 |
|
|
bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
|
2395 |
|
|
*Description*
|
2396 |
|
|
Return TRUE iff a symbol SYM in the BFD ABFD is something special to
|
2397 |
|
|
the particular target represented by the BFD. Such symbols should
|
2398 |
|
|
normally not be mentioned to the user.
|
2399 |
|
|
#define bfd_is_target_special_symbol(abfd, sym) \
|
2400 |
|
|
BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
|
2401 |
|
|
|
2402 |
|
|
2.7.5.5 `bfd_canonicalize_symtab'
|
2403 |
|
|
.................................
|
2404 |
|
|
|
2405 |
|
|
*Description*
|
2406 |
|
|
Read the symbols from the BFD ABFD, and fills in the vector LOCATION
|
2407 |
|
|
with pointers to the symbols and a trailing NULL. Return the actual
|
2408 |
|
|
number of symbol pointers, not including the NULL.
|
2409 |
|
|
#define bfd_canonicalize_symtab(abfd, location) \
|
2410 |
|
|
BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
|
2411 |
|
|
|
2412 |
|
|
2.7.5.6 `bfd_set_symtab'
|
2413 |
|
|
........................
|
2414 |
|
|
|
2415 |
|
|
*Synopsis*
|
2416 |
|
|
bfd_boolean bfd_set_symtab
|
2417 |
|
|
(bfd *abfd, asymbol **location, unsigned int count);
|
2418 |
|
|
*Description*
|
2419 |
|
|
Arrange that when the output BFD ABFD is closed, the table LOCATION of
|
2420 |
|
|
COUNT pointers to symbols will be written.
|
2421 |
|
|
|
2422 |
|
|
2.7.5.7 `bfd_print_symbol_vandf'
|
2423 |
|
|
................................
|
2424 |
|
|
|
2425 |
|
|
*Synopsis*
|
2426 |
|
|
void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
|
2427 |
|
|
*Description*
|
2428 |
|
|
Print the value and flags of the SYMBOL supplied to the stream FILE.
|
2429 |
|
|
|
2430 |
|
|
2.7.5.8 `bfd_make_empty_symbol'
|
2431 |
|
|
...............................
|
2432 |
|
|
|
2433 |
|
|
*Description*
|
2434 |
|
|
Create a new `asymbol' structure for the BFD ABFD and return a pointer
|
2435 |
|
|
to it.
|
2436 |
|
|
|
2437 |
|
|
This routine is necessary because each back end has private
|
2438 |
|
|
information surrounding the `asymbol'. Building your own `asymbol' and
|
2439 |
|
|
pointing to it will not create the private information, and will cause
|
2440 |
|
|
problems later on.
|
2441 |
|
|
#define bfd_make_empty_symbol(abfd) \
|
2442 |
|
|
BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
|
2443 |
|
|
|
2444 |
|
|
2.7.5.9 `_bfd_generic_make_empty_symbol'
|
2445 |
|
|
........................................
|
2446 |
|
|
|
2447 |
|
|
*Synopsis*
|
2448 |
|
|
asymbol *_bfd_generic_make_empty_symbol (bfd *);
|
2449 |
|
|
*Description*
|
2450 |
|
|
Create a new `asymbol' structure for the BFD ABFD and return a pointer
|
2451 |
|
|
to it. Used by core file routines, binary back-end and anywhere else
|
2452 |
|
|
where no private info is needed.
|
2453 |
|
|
|
2454 |
|
|
2.7.5.10 `bfd_make_debug_symbol'
|
2455 |
|
|
................................
|
2456 |
|
|
|
2457 |
|
|
*Description*
|
2458 |
|
|
Create a new `asymbol' structure for the BFD ABFD, to be used as a
|
2459 |
|
|
debugging symbol. Further details of its use have yet to be worked out.
|
2460 |
|
|
#define bfd_make_debug_symbol(abfd,ptr,size) \
|
2461 |
|
|
BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
|
2462 |
|
|
|
2463 |
|
|
2.7.5.11 `bfd_decode_symclass'
|
2464 |
|
|
..............................
|
2465 |
|
|
|
2466 |
|
|
*Description*
|
2467 |
|
|
Return a character corresponding to the symbol class of SYMBOL, or '?'
|
2468 |
|
|
for an unknown class.
|
2469 |
|
|
|
2470 |
|
|
*Synopsis*
|
2471 |
|
|
int bfd_decode_symclass (asymbol *symbol);
|
2472 |
|
|
|
2473 |
|
|
2.7.5.12 `bfd_is_undefined_symclass'
|
2474 |
|
|
....................................
|
2475 |
|
|
|
2476 |
|
|
*Description*
|
2477 |
|
|
Returns non-zero if the class symbol returned by bfd_decode_symclass
|
2478 |
|
|
represents an undefined symbol. Returns zero otherwise.
|
2479 |
|
|
|
2480 |
|
|
*Synopsis*
|
2481 |
|
|
bfd_boolean bfd_is_undefined_symclass (int symclass);
|
2482 |
|
|
|
2483 |
|
|
2.7.5.13 `bfd_symbol_info'
|
2484 |
|
|
..........................
|
2485 |
|
|
|
2486 |
|
|
*Description*
|
2487 |
|
|
Fill in the basic info about symbol that nm needs. Additional info may
|
2488 |
|
|
be added by the back-ends after calling this function.
|
2489 |
|
|
|
2490 |
|
|
*Synopsis*
|
2491 |
|
|
void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
|
2492 |
|
|
|
2493 |
|
|
2.7.5.14 `bfd_copy_private_symbol_data'
|
2494 |
|
|
.......................................
|
2495 |
|
|
|
2496 |
|
|
*Synopsis*
|
2497 |
|
|
bfd_boolean bfd_copy_private_symbol_data
|
2498 |
|
|
(bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
|
2499 |
|
|
*Description*
|
2500 |
|
|
Copy private symbol information from ISYM in the BFD IBFD to the symbol
|
2501 |
|
|
OSYM in the BFD OBFD. Return `TRUE' on success, `FALSE' on error.
|
2502 |
|
|
Possible error returns are:
|
2503 |
|
|
|
2504 |
|
|
* `bfd_error_no_memory' - Not enough memory exists to create private
|
2505 |
|
|
data for OSEC.
|
2506 |
|
|
|
2507 |
|
|
#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
|
2508 |
|
|
BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
|
2509 |
|
|
(ibfd, isymbol, obfd, osymbol))
|
2510 |
|
|
|
2511 |
|
|
|
2512 |
|
|
File: bfd.info, Node: Archives, Next: Formats, Prev: Symbols, Up: BFD front end
|
2513 |
|
|
|
2514 |
|
|
2.8 Archives
|
2515 |
|
|
============
|
2516 |
|
|
|
2517 |
|
|
*Description*
|
2518 |
|
|
An archive (or library) is just another BFD. It has a symbol table,
|
2519 |
|
|
although there's not much a user program will do with it.
|
2520 |
|
|
|
2521 |
|
|
The big difference between an archive BFD and an ordinary BFD is
|
2522 |
|
|
that the archive doesn't have sections. Instead it has a chain of BFDs
|
2523 |
|
|
that are considered its contents. These BFDs can be manipulated like
|
2524 |
|
|
any other. The BFDs contained in an archive opened for reading will
|
2525 |
|
|
all be opened for reading. You may put either input or output BFDs
|
2526 |
|
|
into an archive opened for output; they will be handled correctly when
|
2527 |
|
|
the archive is closed.
|
2528 |
|
|
|
2529 |
|
|
Use `bfd_openr_next_archived_file' to step through the contents of
|
2530 |
|
|
an archive opened for input. You don't have to read the entire archive
|
2531 |
|
|
if you don't want to! Read it until you find what you want.
|
2532 |
|
|
|
2533 |
|
|
Archive contents of output BFDs are chained through the `next'
|
2534 |
|
|
pointer in a BFD. The first one is findable through the `archive_head'
|
2535 |
|
|
slot of the archive. Set it with `bfd_set_archive_head' (q.v.). A
|
2536 |
|
|
given BFD may be in only one open output archive at a time.
|
2537 |
|
|
|
2538 |
|
|
As expected, the BFD archive code is more general than the archive
|
2539 |
|
|
code of any given environment. BFD archives may contain files of
|
2540 |
|
|
different formats (e.g., a.out and coff) and even different
|
2541 |
|
|
architectures. You may even place archives recursively into archives!
|
2542 |
|
|
|
2543 |
|
|
This can cause unexpected confusion, since some archive formats are
|
2544 |
|
|
more expressive than others. For instance, Intel COFF archives can
|
2545 |
|
|
preserve long filenames; SunOS a.out archives cannot. If you move a
|
2546 |
|
|
file from the first to the second format and back again, the filename
|
2547 |
|
|
may be truncated. Likewise, different a.out environments have different
|
2548 |
|
|
conventions as to how they truncate filenames, whether they preserve
|
2549 |
|
|
directory names in filenames, etc. When interoperating with native
|
2550 |
|
|
tools, be sure your files are homogeneous.
|
2551 |
|
|
|
2552 |
|
|
Beware: most of these formats do not react well to the presence of
|
2553 |
|
|
spaces in filenames. We do the best we can, but can't always handle
|
2554 |
|
|
this case due to restrictions in the format of archives. Many Unix
|
2555 |
|
|
utilities are braindead in regards to spaces and such in filenames
|
2556 |
|
|
anyway, so this shouldn't be much of a restriction.
|
2557 |
|
|
|
2558 |
|
|
Archives are supported in BFD in `archive.c'.
|
2559 |
|
|
|
2560 |
|
|
2.8.1 Archive functions
|
2561 |
|
|
-----------------------
|
2562 |
|
|
|
2563 |
|
|
2.8.1.1 `bfd_get_next_mapent'
|
2564 |
|
|
.............................
|
2565 |
|
|
|
2566 |
|
|
*Synopsis*
|
2567 |
|
|
symindex bfd_get_next_mapent
|
2568 |
|
|
(bfd *abfd, symindex previous, carsym **sym);
|
2569 |
|
|
*Description*
|
2570 |
|
|
Step through archive ABFD's symbol table (if it has one). Successively
|
2571 |
|
|
update SYM with the next symbol's information, returning that symbol's
|
2572 |
|
|
(internal) index into the symbol table.
|
2573 |
|
|
|
2574 |
|
|
Supply `BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first
|
2575 |
|
|
one; returns `BFD_NO_MORE_SYMBOLS' when you've already got the last one.
|
2576 |
|
|
|
2577 |
|
|
A `carsym' is a canonical archive symbol. The only user-visible
|
2578 |
|
|
element is its name, a null-terminated string.
|
2579 |
|
|
|
2580 |
|
|
2.8.1.2 `bfd_set_archive_head'
|
2581 |
|
|
..............................
|
2582 |
|
|
|
2583 |
|
|
*Synopsis*
|
2584 |
|
|
bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
|
2585 |
|
|
*Description*
|
2586 |
|
|
Set the head of the chain of BFDs contained in the archive OUTPUT to
|
2587 |
|
|
NEW_HEAD.
|
2588 |
|
|
|
2589 |
|
|
2.8.1.3 `bfd_openr_next_archived_file'
|
2590 |
|
|
......................................
|
2591 |
|
|
|
2592 |
|
|
*Synopsis*
|
2593 |
|
|
bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
|
2594 |
|
|
*Description*
|
2595 |
|
|
Provided a BFD, ARCHIVE, containing an archive and NULL, open an input
|
2596 |
|
|
BFD on the first contained element and returns that. Subsequent calls
|
2597 |
|
|
should pass the archive and the previous return value to return a
|
2598 |
|
|
created BFD to the next contained element. NULL is returned when there
|
2599 |
|
|
are no more.
|
2600 |
|
|
|
2601 |
|
|
|
2602 |
|
|
File: bfd.info, Node: Formats, Next: Relocations, Prev: Archives, Up: BFD front end
|
2603 |
|
|
|
2604 |
|
|
2.9 File formats
|
2605 |
|
|
================
|
2606 |
|
|
|
2607 |
|
|
A format is a BFD concept of high level file contents type. The formats
|
2608 |
|
|
supported by BFD are:
|
2609 |
|
|
|
2610 |
|
|
* `bfd_object'
|
2611 |
|
|
The BFD may contain data, symbols, relocations and debug info.
|
2612 |
|
|
|
2613 |
|
|
* `bfd_archive'
|
2614 |
|
|
The BFD contains other BFDs and an optional index.
|
2615 |
|
|
|
2616 |
|
|
* `bfd_core'
|
2617 |
|
|
The BFD contains the result of an executable core dump.
|
2618 |
|
|
|
2619 |
|
|
2.9.1 File format functions
|
2620 |
|
|
---------------------------
|
2621 |
|
|
|
2622 |
|
|
2.9.1.1 `bfd_check_format'
|
2623 |
|
|
..........................
|
2624 |
|
|
|
2625 |
|
|
*Synopsis*
|
2626 |
|
|
bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
|
2627 |
|
|
*Description*
|
2628 |
|
|
Verify if the file attached to the BFD ABFD is compatible with the
|
2629 |
|
|
format FORMAT (i.e., one of `bfd_object', `bfd_archive' or `bfd_core').
|
2630 |
|
|
|
2631 |
|
|
If the BFD has been set to a specific target before the call, only
|
2632 |
|
|
the named target and format combination is checked. If the target has
|
2633 |
|
|
not been set, or has been set to `default', then all the known target
|
2634 |
|
|
backends is interrogated to determine a match. If the default target
|
2635 |
|
|
matches, it is used. If not, exactly one target must recognize the
|
2636 |
|
|
file, or an error results.
|
2637 |
|
|
|
2638 |
|
|
The function returns `TRUE' on success, otherwise `FALSE' with one
|
2639 |
|
|
of the following error codes:
|
2640 |
|
|
|
2641 |
|
|
* `bfd_error_invalid_operation' - if `format' is not one of
|
2642 |
|
|
`bfd_object', `bfd_archive' or `bfd_core'.
|
2643 |
|
|
|
2644 |
|
|
* `bfd_error_system_call' - if an error occured during a read - even
|
2645 |
|
|
some file mismatches can cause bfd_error_system_calls.
|
2646 |
|
|
|
2647 |
|
|
* `file_not_recognised' - none of the backends recognised the file
|
2648 |
|
|
format.
|
2649 |
|
|
|
2650 |
|
|
* `bfd_error_file_ambiguously_recognized' - more than one backend
|
2651 |
|
|
recognised the file format.
|
2652 |
|
|
|
2653 |
|
|
2.9.1.2 `bfd_check_format_matches'
|
2654 |
|
|
..................................
|
2655 |
|
|
|
2656 |
|
|
*Synopsis*
|
2657 |
|
|
bfd_boolean bfd_check_format_matches
|
2658 |
|
|
(bfd *abfd, bfd_format format, char ***matching);
|
2659 |
|
|
*Description*
|
2660 |
|
|
Like `bfd_check_format', except when it returns FALSE with `bfd_errno'
|
2661 |
|
|
set to `bfd_error_file_ambiguously_recognized'. In that case, if
|
2662 |
|
|
MATCHING is not NULL, it will be filled in with a NULL-terminated list
|
2663 |
|
|
of the names of the formats that matched, allocated with `malloc'.
|
2664 |
|
|
Then the user may choose a format and try again.
|
2665 |
|
|
|
2666 |
|
|
When done with the list that MATCHING points to, the caller should
|
2667 |
|
|
free it.
|
2668 |
|
|
|
2669 |
|
|
2.9.1.3 `bfd_set_format'
|
2670 |
|
|
........................
|
2671 |
|
|
|
2672 |
|
|
*Synopsis*
|
2673 |
|
|
bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
|
2674 |
|
|
*Description*
|
2675 |
|
|
This function sets the file format of the BFD ABFD to the format
|
2676 |
|
|
FORMAT. If the target set in the BFD does not support the format
|
2677 |
|
|
requested, the format is invalid, or the BFD is not open for writing,
|
2678 |
|
|
then an error occurs.
|
2679 |
|
|
|
2680 |
|
|
2.9.1.4 `bfd_format_string'
|
2681 |
|
|
...........................
|
2682 |
|
|
|
2683 |
|
|
*Synopsis*
|
2684 |
|
|
const char *bfd_format_string (bfd_format format);
|
2685 |
|
|
*Description*
|
2686 |
|
|
Return a pointer to a const string `invalid', `object', `archive',
|
2687 |
|
|
`core', or `unknown', depending upon the value of FORMAT.
|
2688 |
|
|
|
2689 |
|
|
|
2690 |
|
|
File: bfd.info, Node: Relocations, Next: Core Files, Prev: Formats, Up: BFD front end
|
2691 |
|
|
|
2692 |
|
|
2.10 Relocations
|
2693 |
|
|
================
|
2694 |
|
|
|
2695 |
|
|
BFD maintains relocations in much the same way it maintains symbols:
|
2696 |
|
|
they are left alone until required, then read in en-masse and
|
2697 |
|
|
translated into an internal form. A common routine
|
2698 |
|
|
`bfd_perform_relocation' acts upon the canonical form to do the fixup.
|
2699 |
|
|
|
2700 |
|
|
Relocations are maintained on a per section basis, while symbols are
|
2701 |
|
|
maintained on a per BFD basis.
|
2702 |
|
|
|
2703 |
|
|
All that a back end has to do to fit the BFD interface is to create
|
2704 |
|
|
a `struct reloc_cache_entry' for each relocation in a particular
|
2705 |
|
|
section, and fill in the right bits of the structures.
|
2706 |
|
|
|
2707 |
|
|
* Menu:
|
2708 |
|
|
|
2709 |
|
|
* typedef arelent::
|
2710 |
|
|
* howto manager::
|
2711 |
|
|
|
2712 |
|
|
|
2713 |
|
|
File: bfd.info, Node: typedef arelent, Next: howto manager, Prev: Relocations, Up: Relocations
|
2714 |
|
|
|
2715 |
|
|
2.10.1 typedef arelent
|
2716 |
|
|
----------------------
|
2717 |
|
|
|
2718 |
|
|
This is the structure of a relocation entry:
|
2719 |
|
|
|
2720 |
|
|
|
2721 |
|
|
typedef enum bfd_reloc_status
|
2722 |
|
|
{
|
2723 |
|
|
/* No errors detected. */
|
2724 |
|
|
bfd_reloc_ok,
|
2725 |
|
|
|
2726 |
|
|
/* The relocation was performed, but there was an overflow. */
|
2727 |
|
|
bfd_reloc_overflow,
|
2728 |
|
|
|
2729 |
|
|
/* The address to relocate was not within the section supplied. */
|
2730 |
|
|
bfd_reloc_outofrange,
|
2731 |
|
|
|
2732 |
|
|
/* Used by special functions. */
|
2733 |
|
|
bfd_reloc_continue,
|
2734 |
|
|
|
2735 |
|
|
/* Unsupported relocation size requested. */
|
2736 |
|
|
bfd_reloc_notsupported,
|
2737 |
|
|
|
2738 |
|
|
/* Unused. */
|
2739 |
|
|
bfd_reloc_other,
|
2740 |
|
|
|
2741 |
|
|
/* The symbol to relocate against was undefined. */
|
2742 |
|
|
bfd_reloc_undefined,
|
2743 |
|
|
|
2744 |
|
|
/* The relocation was performed, but may not be ok - presently
|
2745 |
|
|
generated only when linking i960 coff files with i960 b.out
|
2746 |
|
|
symbols. If this type is returned, the error_message argument
|
2747 |
|
|
to bfd_perform_relocation will be set. */
|
2748 |
|
|
bfd_reloc_dangerous
|
2749 |
|
|
}
|
2750 |
|
|
bfd_reloc_status_type;
|
2751 |
|
|
|
2752 |
|
|
|
2753 |
|
|
typedef struct reloc_cache_entry
|
2754 |
|
|
{
|
2755 |
|
|
/* A pointer into the canonical table of pointers. */
|
2756 |
|
|
struct bfd_symbol **sym_ptr_ptr;
|
2757 |
|
|
|
2758 |
|
|
/* offset in section. */
|
2759 |
|
|
bfd_size_type address;
|
2760 |
|
|
|
2761 |
|
|
/* addend for relocation value. */
|
2762 |
|
|
bfd_vma addend;
|
2763 |
|
|
|
2764 |
|
|
/* Pointer to how to perform the required relocation. */
|
2765 |
|
|
reloc_howto_type *howto;
|
2766 |
|
|
|
2767 |
|
|
}
|
2768 |
|
|
arelent;
|
2769 |
|
|
*Description*
|
2770 |
|
|
Here is a description of each of the fields within an `arelent':
|
2771 |
|
|
|
2772 |
|
|
* `sym_ptr_ptr'
|
2773 |
|
|
The symbol table pointer points to a pointer to the symbol
|
2774 |
|
|
associated with the relocation request. It is the pointer into the
|
2775 |
|
|
table returned by the back end's `canonicalize_symtab' action. *Note
|
2776 |
|
|
Symbols::. The symbol is referenced through a pointer to a pointer so
|
2777 |
|
|
that tools like the linker can fix up all the symbols of the same name
|
2778 |
|
|
by modifying only one pointer. The relocation routine looks in the
|
2779 |
|
|
symbol and uses the base of the section the symbol is attached to and
|
2780 |
|
|
the value of the symbol as the initial relocation offset. If the symbol
|
2781 |
|
|
pointer is zero, then the section provided is looked up.
|
2782 |
|
|
|
2783 |
|
|
* `address'
|
2784 |
|
|
The `address' field gives the offset in bytes from the base of the
|
2785 |
|
|
section data which owns the relocation record to the first byte of
|
2786 |
|
|
relocatable information. The actual data relocated will be relative to
|
2787 |
|
|
this point; for example, a relocation type which modifies the bottom
|
2788 |
|
|
two bytes of a four byte word would not touch the first byte pointed to
|
2789 |
|
|
in a big endian world.
|
2790 |
|
|
|
2791 |
|
|
* `addend'
|
2792 |
|
|
The `addend' is a value provided by the back end to be added (!) to
|
2793 |
|
|
the relocation offset. Its interpretation is dependent upon the howto.
|
2794 |
|
|
For example, on the 68k the code:
|
2795 |
|
|
|
2796 |
|
|
char foo[];
|
2797 |
|
|
main()
|
2798 |
|
|
{
|
2799 |
|
|
return foo[0x12345678];
|
2800 |
|
|
}
|
2801 |
|
|
|
2802 |
|
|
Could be compiled into:
|
2803 |
|
|
|
2804 |
|
|
linkw fp,#-4
|
2805 |
|
|
moveb @#12345678,d0
|
2806 |
|
|
extbl d0
|
2807 |
|
|
unlk fp
|
2808 |
|
|
rts
|
2809 |
|
|
|
2810 |
|
|
This could create a reloc pointing to `foo', but leave the offset in
|
2811 |
|
|
the data, something like:
|
2812 |
|
|
|
2813 |
|
|
RELOCATION RECORDS FOR [.text]:
|
2814 |
|
|
offset type value
|
2815 |
|
|
00000006 32 _foo
|
2816 |
|
|
|
2817 |
|
|
00000000 4e56 fffc ; linkw fp,#-4
|
2818 |
|
|
00000004 1039 1234 5678 ; moveb @#12345678,d0
|
2819 |
|
|
0000000a 49c0 ; extbl d0
|
2820 |
|
|
0000000c 4e5e ; unlk fp
|
2821 |
|
|
0000000e 4e75 ; rts
|
2822 |
|
|
|
2823 |
|
|
Using coff and an 88k, some instructions don't have enough space in
|
2824 |
|
|
them to represent the full address range, and pointers have to be
|
2825 |
|
|
loaded in two parts. So you'd get something like:
|
2826 |
|
|
|
2827 |
|
|
or.u r13,r0,hi16(_foo+0x12345678)
|
2828 |
|
|
ld.b r2,r13,lo16(_foo+0x12345678)
|
2829 |
|
|
jmp r1
|
2830 |
|
|
|
2831 |
|
|
This should create two relocs, both pointing to `_foo', and with
|
2832 |
|
|
0x12340000 in their addend field. The data would consist of:
|
2833 |
|
|
|
2834 |
|
|
RELOCATION RECORDS FOR [.text]:
|
2835 |
|
|
offset type value
|
2836 |
|
|
00000002 HVRT16 _foo+0x12340000
|
2837 |
|
|
00000006 LVRT16 _foo+0x12340000
|
2838 |
|
|
|
2839 |
|
|
00000000 5da05678 ; or.u r13,r0,0x5678
|
2840 |
|
|
00000004 1c4d5678 ; ld.b r2,r13,0x5678
|
2841 |
|
|
00000008 f400c001 ; jmp r1
|
2842 |
|
|
|
2843 |
|
|
The relocation routine digs out the value from the data, adds it to
|
2844 |
|
|
the addend to get the original offset, and then adds the value of
|
2845 |
|
|
`_foo'. Note that all 32 bits have to be kept around somewhere, to cope
|
2846 |
|
|
with carry from bit 15 to bit 16.
|
2847 |
|
|
|
2848 |
|
|
One further example is the sparc and the a.out format. The sparc has
|
2849 |
|
|
a similar problem to the 88k, in that some instructions don't have room
|
2850 |
|
|
for an entire offset, but on the sparc the parts are created in odd
|
2851 |
|
|
sized lumps. The designers of the a.out format chose to not use the
|
2852 |
|
|
data within the section for storing part of the offset; all the offset
|
2853 |
|
|
is kept within the reloc. Anything in the data should be ignored.
|
2854 |
|
|
|
2855 |
|
|
save %sp,-112,%sp
|
2856 |
|
|
sethi %hi(_foo+0x12345678),%g2
|
2857 |
|
|
ldsb [%g2+%lo(_foo+0x12345678)],%i0
|
2858 |
|
|
ret
|
2859 |
|
|
restore
|
2860 |
|
|
|
2861 |
|
|
Both relocs contain a pointer to `foo', and the offsets contain junk.
|
2862 |
|
|
|
2863 |
|
|
RELOCATION RECORDS FOR [.text]:
|
2864 |
|
|
offset type value
|
2865 |
|
|
00000004 HI22 _foo+0x12345678
|
2866 |
|
|
00000008 LO10 _foo+0x12345678
|
2867 |
|
|
|
2868 |
|
|
00000000 9de3bf90 ; save %sp,-112,%sp
|
2869 |
|
|
00000004 05000000 ; sethi %hi(_foo+0),%g2
|
2870 |
|
|
00000008 f048a000 ; ldsb [%g2+%lo(_foo+0)],%i0
|
2871 |
|
|
0000000c 81c7e008 ; ret
|
2872 |
|
|
00000010 81e80000 ; restore
|
2873 |
|
|
|
2874 |
|
|
* `howto'
|
2875 |
|
|
The `howto' field can be imagined as a relocation instruction. It is
|
2876 |
|
|
a pointer to a structure which contains information on what to do with
|
2877 |
|
|
all of the other information in the reloc record and data section. A
|
2878 |
|
|
back end would normally have a relocation instruction set and turn
|
2879 |
|
|
relocations into pointers to the correct structure on input - but it
|
2880 |
|
|
would be possible to create each howto field on demand.
|
2881 |
|
|
|
2882 |
|
|
2.10.1.1 `enum complain_overflow'
|
2883 |
|
|
.................................
|
2884 |
|
|
|
2885 |
|
|
Indicates what sort of overflow checking should be done when performing
|
2886 |
|
|
a relocation.
|
2887 |
|
|
|
2888 |
|
|
|
2889 |
|
|
enum complain_overflow
|
2890 |
|
|
{
|
2891 |
|
|
/* Do not complain on overflow. */
|
2892 |
|
|
complain_overflow_dont,
|
2893 |
|
|
|
2894 |
|
|
/* Complain if the value overflows when considered as a signed
|
2895 |
|
|
number one bit larger than the field. ie. A bitfield of N bits
|
2896 |
|
|
is allowed to represent -2**n to 2**n-1. */
|
2897 |
|
|
complain_overflow_bitfield,
|
2898 |
|
|
|
2899 |
|
|
/* Complain if the value overflows when considered as a signed
|
2900 |
|
|
number. */
|
2901 |
|
|
complain_overflow_signed,
|
2902 |
|
|
|
2903 |
|
|
/* Complain if the value overflows when considered as an
|
2904 |
|
|
unsigned number. */
|
2905 |
|
|
complain_overflow_unsigned
|
2906 |
|
|
};
|
2907 |
|
|
|
2908 |
|
|
2.10.1.2 `reloc_howto_type'
|
2909 |
|
|
...........................
|
2910 |
|
|
|
2911 |
|
|
The `reloc_howto_type' is a structure which contains all the
|
2912 |
|
|
information that libbfd needs to know to tie up a back end's data.
|
2913 |
|
|
|
2914 |
|
|
struct bfd_symbol; /* Forward declaration. */
|
2915 |
|
|
|
2916 |
|
|
struct reloc_howto_struct
|
2917 |
|
|
{
|
2918 |
|
|
/* The type field has mainly a documentary use - the back end can
|
2919 |
|
|
do what it wants with it, though normally the back end's
|
2920 |
|
|
external idea of what a reloc number is stored
|
2921 |
|
|
in this field. For example, a PC relative word relocation
|
2922 |
|
|
in a coff environment has the type 023 - because that's
|
2923 |
|
|
what the outside world calls a R_PCRWORD reloc. */
|
2924 |
|
|
unsigned int type;
|
2925 |
|
|
|
2926 |
|
|
/* The value the final relocation is shifted right by. This drops
|
2927 |
|
|
unwanted data from the relocation. */
|
2928 |
|
|
unsigned int rightshift;
|
2929 |
|
|
|
2930 |
|
|
/* The size of the item to be relocated. This is *not* a
|
2931 |
|
|
power-of-two measure. To get the number of bytes operated
|
2932 |
|
|
on by a type of relocation, use bfd_get_reloc_size. */
|
2933 |
|
|
int size;
|
2934 |
|
|
|
2935 |
|
|
/* The number of bits in the item to be relocated. This is used
|
2936 |
|
|
when doing overflow checking. */
|
2937 |
|
|
unsigned int bitsize;
|
2938 |
|
|
|
2939 |
|
|
/* Notes that the relocation is relative to the location in the
|
2940 |
|
|
data section of the addend. The relocation function will
|
2941 |
|
|
subtract from the relocation value the address of the location
|
2942 |
|
|
being relocated. */
|
2943 |
|
|
bfd_boolean pc_relative;
|
2944 |
|
|
|
2945 |
|
|
/* The bit position of the reloc value in the destination.
|
2946 |
|
|
The relocated value is left shifted by this amount. */
|
2947 |
|
|
unsigned int bitpos;
|
2948 |
|
|
|
2949 |
|
|
/* What type of overflow error should be checked for when
|
2950 |
|
|
relocating. */
|
2951 |
|
|
enum complain_overflow complain_on_overflow;
|
2952 |
|
|
|
2953 |
|
|
/* If this field is non null, then the supplied function is
|
2954 |
|
|
called rather than the normal function. This allows really
|
2955 |
|
|
strange relocation methods to be accommodated (e.g., i960 callj
|
2956 |
|
|
instructions). */
|
2957 |
|
|
bfd_reloc_status_type (*special_function)
|
2958 |
|
|
(bfd *, arelent *, struct bfd_symbol *, void *, asection *,
|
2959 |
|
|
bfd *, char **);
|
2960 |
|
|
|
2961 |
|
|
/* The textual name of the relocation type. */
|
2962 |
|
|
char *name;
|
2963 |
|
|
|
2964 |
|
|
/* Some formats record a relocation addend in the section contents
|
2965 |
|
|
rather than with the relocation. For ELF formats this is the
|
2966 |
|
|
distinction between USE_REL and USE_RELA (though the code checks
|
2967 |
|
|
for USE_REL == 1/0). The value of this field is TRUE if the
|
2968 |
|
|
addend is recorded with the section contents; when performing a
|
2969 |
|
|
partial link (ld -r) the section contents (the data) will be
|
2970 |
|
|
modified. The value of this field is FALSE if addends are
|
2971 |
|
|
recorded with the relocation (in arelent.addend); when performing
|
2972 |
|
|
a partial link the relocation will be modified.
|
2973 |
|
|
All relocations for all ELF USE_RELA targets should set this field
|
2974 |
|
|
to FALSE (values of TRUE should be looked on with suspicion).
|
2975 |
|
|
However, the converse is not true: not all relocations of all ELF
|
2976 |
|
|
USE_REL targets set this field to TRUE. Why this is so is peculiar
|
2977 |
|
|
to each particular target. For relocs that aren't used in partial
|
2978 |
|
|
links (e.g. GOT stuff) it doesn't matter what this is set to. */
|
2979 |
|
|
bfd_boolean partial_inplace;
|
2980 |
|
|
|
2981 |
|
|
/* src_mask selects the part of the instruction (or data) to be used
|
2982 |
|
|
in the relocation sum. If the target relocations don't have an
|
2983 |
|
|
addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
|
2984 |
|
|
dst_mask to extract the addend from the section contents. If
|
2985 |
|
|
relocations do have an addend in the reloc, eg. ELF USE_RELA, this
|
2986 |
|
|
field should be zero. Non-zero values for ELF USE_RELA targets are
|
2987 |
|
|
bogus as in those cases the value in the dst_mask part of the
|
2988 |
|
|
section contents should be treated as garbage. */
|
2989 |
|
|
bfd_vma src_mask;
|
2990 |
|
|
|
2991 |
|
|
/* dst_mask selects which parts of the instruction (or data) are
|
2992 |
|
|
replaced with a relocated value. */
|
2993 |
|
|
bfd_vma dst_mask;
|
2994 |
|
|
|
2995 |
|
|
/* When some formats create PC relative instructions, they leave
|
2996 |
|
|
the value of the pc of the place being relocated in the offset
|
2997 |
|
|
slot of the instruction, so that a PC relative relocation can
|
2998 |
|
|
be made just by adding in an ordinary offset (e.g., sun3 a.out).
|
2999 |
|
|
Some formats leave the displacement part of an instruction
|
3000 |
|
|
empty (e.g., m88k bcs); this flag signals the fact. */
|
3001 |
|
|
bfd_boolean pcrel_offset;
|
3002 |
|
|
};
|
3003 |
|
|
|
3004 |
|
|
2.10.1.3 `The HOWTO Macro'
|
3005 |
|
|
..........................
|
3006 |
|
|
|
3007 |
|
|
*Description*
|
3008 |
|
|
The HOWTO define is horrible and will go away.
|
3009 |
|
|
#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
|
3010 |
|
|
{ (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
|
3011 |
|
|
|
3012 |
|
|
*Description*
|
3013 |
|
|
And will be replaced with the totally magic way. But for the moment, we
|
3014 |
|
|
are compatible, so do it this way.
|
3015 |
|
|
#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
|
3016 |
|
|
HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
|
3017 |
|
|
NAME, FALSE, 0, 0, IN)
|
3018 |
|
|
|
3019 |
|
|
*Description*
|
3020 |
|
|
This is used to fill in an empty howto entry in an array.
|
3021 |
|
|
#define EMPTY_HOWTO(C) \
|
3022 |
|
|
HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
|
3023 |
|
|
NULL, FALSE, 0, 0, FALSE)
|
3024 |
|
|
|
3025 |
|
|
*Description*
|
3026 |
|
|
Helper routine to turn a symbol into a relocation value.
|
3027 |
|
|
#define HOWTO_PREPARE(relocation, symbol) \
|
3028 |
|
|
{ \
|
3029 |
|
|
if (symbol != NULL) \
|
3030 |
|
|
{ \
|
3031 |
|
|
if (bfd_is_com_section (symbol->section)) \
|
3032 |
|
|
{ \
|
3033 |
|
|
relocation = 0; \
|
3034 |
|
|
} \
|
3035 |
|
|
else \
|
3036 |
|
|
{ \
|
3037 |
|
|
relocation = symbol->value; \
|
3038 |
|
|
} \
|
3039 |
|
|
} \
|
3040 |
|
|
}
|
3041 |
|
|
|
3042 |
|
|
2.10.1.4 `bfd_get_reloc_size'
|
3043 |
|
|
.............................
|
3044 |
|
|
|
3045 |
|
|
*Synopsis*
|
3046 |
|
|
unsigned int bfd_get_reloc_size (reloc_howto_type *);
|
3047 |
|
|
*Description*
|
3048 |
|
|
For a reloc_howto_type that operates on a fixed number of bytes, this
|
3049 |
|
|
returns the number of bytes operated on.
|
3050 |
|
|
|
3051 |
|
|
2.10.1.5 `arelent_chain'
|
3052 |
|
|
........................
|
3053 |
|
|
|
3054 |
|
|
*Description*
|
3055 |
|
|
How relocs are tied together in an `asection':
|
3056 |
|
|
typedef struct relent_chain
|
3057 |
|
|
{
|
3058 |
|
|
arelent relent;
|
3059 |
|
|
struct relent_chain *next;
|
3060 |
|
|
}
|
3061 |
|
|
arelent_chain;
|
3062 |
|
|
|
3063 |
|
|
2.10.1.6 `bfd_check_overflow'
|
3064 |
|
|
.............................
|
3065 |
|
|
|
3066 |
|
|
*Synopsis*
|
3067 |
|
|
bfd_reloc_status_type bfd_check_overflow
|
3068 |
|
|
(enum complain_overflow how,
|
3069 |
|
|
unsigned int bitsize,
|
3070 |
|
|
unsigned int rightshift,
|
3071 |
|
|
unsigned int addrsize,
|
3072 |
|
|
bfd_vma relocation);
|
3073 |
|
|
*Description*
|
3074 |
|
|
Perform overflow checking on RELOCATION which has BITSIZE significant
|
3075 |
|
|
bits and will be shifted right by RIGHTSHIFT bits, on a machine with
|
3076 |
|
|
addresses containing ADDRSIZE significant bits. The result is either of
|
3077 |
|
|
`bfd_reloc_ok' or `bfd_reloc_overflow'.
|
3078 |
|
|
|
3079 |
|
|
2.10.1.7 `bfd_perform_relocation'
|
3080 |
|
|
.................................
|
3081 |
|
|
|
3082 |
|
|
*Synopsis*
|
3083 |
|
|
bfd_reloc_status_type bfd_perform_relocation
|
3084 |
|
|
(bfd *abfd,
|
3085 |
|
|
arelent *reloc_entry,
|
3086 |
|
|
void *data,
|
3087 |
|
|
asection *input_section,
|
3088 |
|
|
bfd *output_bfd,
|
3089 |
|
|
char **error_message);
|
3090 |
|
|
*Description*
|
3091 |
|
|
If OUTPUT_BFD is supplied to this function, the generated image will be
|
3092 |
|
|
relocatable; the relocations are copied to the output file after they
|
3093 |
|
|
have been changed to reflect the new state of the world. There are two
|
3094 |
|
|
ways of reflecting the results of partial linkage in an output file: by
|
3095 |
|
|
modifying the output data in place, and by modifying the relocation
|
3096 |
|
|
record. Some native formats (e.g., basic a.out and basic coff) have no
|
3097 |
|
|
way of specifying an addend in the relocation type, so the addend has
|
3098 |
|
|
to go in the output data. This is no big deal since in these formats
|
3099 |
|
|
the output data slot will always be big enough for the addend. Complex
|
3100 |
|
|
reloc types with addends were invented to solve just this problem. The
|
3101 |
|
|
ERROR_MESSAGE argument is set to an error message if this return
|
3102 |
|
|
`bfd_reloc_dangerous'.
|
3103 |
|
|
|
3104 |
|
|
2.10.1.8 `bfd_install_relocation'
|
3105 |
|
|
.................................
|
3106 |
|
|
|
3107 |
|
|
*Synopsis*
|
3108 |
|
|
bfd_reloc_status_type bfd_install_relocation
|
3109 |
|
|
(bfd *abfd,
|
3110 |
|
|
arelent *reloc_entry,
|
3111 |
|
|
void *data, bfd_vma data_start,
|
3112 |
|
|
asection *input_section,
|
3113 |
|
|
char **error_message);
|
3114 |
|
|
*Description*
|
3115 |
|
|
This looks remarkably like `bfd_perform_relocation', except it does not
|
3116 |
|
|
expect that the section contents have been filled in. I.e., it's
|
3117 |
|
|
suitable for use when creating, rather than applying a relocation.
|
3118 |
|
|
|
3119 |
|
|
For now, this function should be considered reserved for the
|
3120 |
|
|
assembler.
|
3121 |
|
|
|
3122 |
|
|
|
3123 |
|
|
File: bfd.info, Node: howto manager, Prev: typedef arelent, Up: Relocations
|
3124 |
|
|
|
3125 |
|
|
2.10.2 The howto manager
|
3126 |
|
|
------------------------
|
3127 |
|
|
|
3128 |
|
|
When an application wants to create a relocation, but doesn't know what
|
3129 |
|
|
the target machine might call it, it can find out by using this bit of
|
3130 |
|
|
code.
|
3131 |
|
|
|
3132 |
|
|
2.10.2.1 `bfd_reloc_code_type'
|
3133 |
|
|
..............................
|
3134 |
|
|
|
3135 |
|
|
*Description*
|
3136 |
|
|
The insides of a reloc code. The idea is that, eventually, there will
|
3137 |
|
|
be one enumerator for every type of relocation we ever do. Pass one of
|
3138 |
|
|
these values to `bfd_reloc_type_lookup', and it'll return a howto
|
3139 |
|
|
pointer.
|
3140 |
|
|
|
3141 |
|
|
This does mean that the application must determine the correct
|
3142 |
|
|
enumerator value; you can't get a howto pointer from a random set of
|
3143 |
|
|
attributes.
|
3144 |
|
|
|
3145 |
|
|
Here are the possible values for `enum bfd_reloc_code_real':
|
3146 |
|
|
|
3147 |
|
|
-- : BFD_RELOC_64
|
3148 |
|
|
-- : BFD_RELOC_32
|
3149 |
|
|
-- : BFD_RELOC_26
|
3150 |
|
|
-- : BFD_RELOC_24
|
3151 |
|
|
-- : BFD_RELOC_16
|
3152 |
|
|
-- : BFD_RELOC_14
|
3153 |
|
|
-- : BFD_RELOC_8
|
3154 |
|
|
Basic absolute relocations of N bits.
|
3155 |
|
|
|
3156 |
|
|
-- : BFD_RELOC_64_PCREL
|
3157 |
|
|
-- : BFD_RELOC_32_PCREL
|
3158 |
|
|
-- : BFD_RELOC_24_PCREL
|
3159 |
|
|
-- : BFD_RELOC_16_PCREL
|
3160 |
|
|
-- : BFD_RELOC_12_PCREL
|
3161 |
|
|
-- : BFD_RELOC_8_PCREL
|
3162 |
|
|
PC-relative relocations. Sometimes these are relative to the
|
3163 |
|
|
address of the relocation itself; sometimes they are relative to
|
3164 |
|
|
the start of the section containing the relocation. It depends on
|
3165 |
|
|
the specific target.
|
3166 |
|
|
|
3167 |
|
|
The 24-bit relocation is used in some Intel 960 configurations.
|
3168 |
|
|
|
3169 |
|
|
-- : BFD_RELOC_32_SECREL
|
3170 |
|
|
Section relative relocations. Some targets need this for DWARF2.
|
3171 |
|
|
|
3172 |
|
|
-- : BFD_RELOC_32_GOT_PCREL
|
3173 |
|
|
-- : BFD_RELOC_16_GOT_PCREL
|
3174 |
|
|
-- : BFD_RELOC_8_GOT_PCREL
|
3175 |
|
|
-- : BFD_RELOC_32_GOTOFF
|
3176 |
|
|
-- : BFD_RELOC_16_GOTOFF
|
3177 |
|
|
-- : BFD_RELOC_LO16_GOTOFF
|
3178 |
|
|
-- : BFD_RELOC_HI16_GOTOFF
|
3179 |
|
|
-- : BFD_RELOC_HI16_S_GOTOFF
|
3180 |
|
|
-- : BFD_RELOC_8_GOTOFF
|
3181 |
|
|
-- : BFD_RELOC_64_PLT_PCREL
|
3182 |
|
|
-- : BFD_RELOC_32_PLT_PCREL
|
3183 |
|
|
-- : BFD_RELOC_24_PLT_PCREL
|
3184 |
|
|
-- : BFD_RELOC_16_PLT_PCREL
|
3185 |
|
|
-- : BFD_RELOC_8_PLT_PCREL
|
3186 |
|
|
-- : BFD_RELOC_64_PLTOFF
|
3187 |
|
|
-- : BFD_RELOC_32_PLTOFF
|
3188 |
|
|
-- : BFD_RELOC_16_PLTOFF
|
3189 |
|
|
-- : BFD_RELOC_LO16_PLTOFF
|
3190 |
|
|
-- : BFD_RELOC_HI16_PLTOFF
|
3191 |
|
|
-- : BFD_RELOC_HI16_S_PLTOFF
|
3192 |
|
|
-- : BFD_RELOC_8_PLTOFF
|
3193 |
|
|
For ELF.
|
3194 |
|
|
|
3195 |
|
|
-- : BFD_RELOC_68K_GLOB_DAT
|
3196 |
|
|
-- : BFD_RELOC_68K_JMP_SLOT
|
3197 |
|
|
-- : BFD_RELOC_68K_RELATIVE
|
3198 |
|
|
Relocations used by 68K ELF.
|
3199 |
|
|
|
3200 |
|
|
-- : BFD_RELOC_32_BASEREL
|
3201 |
|
|
-- : BFD_RELOC_16_BASEREL
|
3202 |
|
|
-- : BFD_RELOC_LO16_BASEREL
|
3203 |
|
|
-- : BFD_RELOC_HI16_BASEREL
|
3204 |
|
|
-- : BFD_RELOC_HI16_S_BASEREL
|
3205 |
|
|
-- : BFD_RELOC_8_BASEREL
|
3206 |
|
|
-- : BFD_RELOC_RVA
|
3207 |
|
|
Linkage-table relative.
|
3208 |
|
|
|
3209 |
|
|
-- : BFD_RELOC_8_FFnn
|
3210 |
|
|
Absolute 8-bit relocation, but used to form an address like 0xFFnn.
|
3211 |
|
|
|
3212 |
|
|
-- : BFD_RELOC_32_PCREL_S2
|
3213 |
|
|
-- : BFD_RELOC_16_PCREL_S2
|
3214 |
|
|
-- : BFD_RELOC_23_PCREL_S2
|
3215 |
|
|
These PC-relative relocations are stored as word displacements -
|
3216 |
|
|
i.e., byte displacements shifted right two bits. The 30-bit word
|
3217 |
|
|
displacement (<<32_PCREL_S2>> - 32 bits, shifted 2) is used on the
|
3218 |
|
|
SPARC. (SPARC tools generally refer to this as <>.) The
|
3219 |
|
|
signed 16-bit displacement is used on the MIPS, and the 23-bit
|
3220 |
|
|
displacement is used on the Alpha.
|
3221 |
|
|
|
3222 |
|
|
-- : BFD_RELOC_HI22
|
3223 |
|
|
-- : BFD_RELOC_LO10
|
3224 |
|
|
High 22 bits and low 10 bits of 32-bit value, placed into lower
|
3225 |
|
|
bits of the target word. These are used on the SPARC.
|
3226 |
|
|
|
3227 |
|
|
-- : BFD_RELOC_GPREL16
|
3228 |
|
|
-- : BFD_RELOC_GPREL32
|
3229 |
|
|
For systems that allocate a Global Pointer register, these are
|
3230 |
|
|
displacements off that register. These relocation types are
|
3231 |
|
|
handled specially, because the value the register will have is
|
3232 |
|
|
decided relatively late.
|
3233 |
|
|
|
3234 |
|
|
-- : BFD_RELOC_I960_CALLJ
|
3235 |
|
|
Reloc types used for i960/b.out.
|
3236 |
|
|
|
3237 |
|
|
-- : BFD_RELOC_NONE
|
3238 |
|
|
-- : BFD_RELOC_SPARC_WDISP22
|
3239 |
|
|
-- : BFD_RELOC_SPARC22
|
3240 |
|
|
-- : BFD_RELOC_SPARC13
|
3241 |
|
|
-- : BFD_RELOC_SPARC_GOT10
|
3242 |
|
|
-- : BFD_RELOC_SPARC_GOT13
|
3243 |
|
|
-- : BFD_RELOC_SPARC_GOT22
|
3244 |
|
|
-- : BFD_RELOC_SPARC_PC10
|
3245 |
|
|
-- : BFD_RELOC_SPARC_PC22
|
3246 |
|
|
-- : BFD_RELOC_SPARC_WPLT30
|
3247 |
|
|
-- : BFD_RELOC_SPARC_COPY
|
3248 |
|
|
-- : BFD_RELOC_SPARC_GLOB_DAT
|
3249 |
|
|
-- : BFD_RELOC_SPARC_JMP_SLOT
|
3250 |
|
|
-- : BFD_RELOC_SPARC_RELATIVE
|
3251 |
|
|
-- : BFD_RELOC_SPARC_UA16
|
3252 |
|
|
-- : BFD_RELOC_SPARC_UA32
|
3253 |
|
|
-- : BFD_RELOC_SPARC_UA64
|
3254 |
|
|
SPARC ELF relocations. There is probably some overlap with other
|
3255 |
|
|
relocation types already defined.
|
3256 |
|
|
|
3257 |
|
|
-- : BFD_RELOC_SPARC_BASE13
|
3258 |
|
|
-- : BFD_RELOC_SPARC_BASE22
|
3259 |
|
|
I think these are specific to SPARC a.out (e.g., Sun 4).
|
3260 |
|
|
|
3261 |
|
|
-- : BFD_RELOC_SPARC_64
|
3262 |
|
|
-- : BFD_RELOC_SPARC_10
|
3263 |
|
|
-- : BFD_RELOC_SPARC_11
|
3264 |
|
|
-- : BFD_RELOC_SPARC_OLO10
|
3265 |
|
|
-- : BFD_RELOC_SPARC_HH22
|
3266 |
|
|
-- : BFD_RELOC_SPARC_HM10
|
3267 |
|
|
-- : BFD_RELOC_SPARC_LM22
|
3268 |
|
|
-- : BFD_RELOC_SPARC_PC_HH22
|
3269 |
|
|
-- : BFD_RELOC_SPARC_PC_HM10
|
3270 |
|
|
-- : BFD_RELOC_SPARC_PC_LM22
|
3271 |
|
|
-- : BFD_RELOC_SPARC_WDISP16
|
3272 |
|
|
-- : BFD_RELOC_SPARC_WDISP19
|
3273 |
|
|
-- : BFD_RELOC_SPARC_7
|
3274 |
|
|
-- : BFD_RELOC_SPARC_6
|
3275 |
|
|
-- : BFD_RELOC_SPARC_5
|
3276 |
|
|
-- : BFD_RELOC_SPARC_DISP64
|
3277 |
|
|
-- : BFD_RELOC_SPARC_PLT32
|
3278 |
|
|
-- : BFD_RELOC_SPARC_PLT64
|
3279 |
|
|
-- : BFD_RELOC_SPARC_HIX22
|
3280 |
|
|
-- : BFD_RELOC_SPARC_LOX10
|
3281 |
|
|
-- : BFD_RELOC_SPARC_H44
|
3282 |
|
|
-- : BFD_RELOC_SPARC_M44
|
3283 |
|
|
-- : BFD_RELOC_SPARC_L44
|
3284 |
|
|
-- : BFD_RELOC_SPARC_REGISTER
|
3285 |
|
|
SPARC64 relocations
|
3286 |
|
|
|
3287 |
|
|
-- : BFD_RELOC_SPARC_REV32
|
3288 |
|
|
SPARC little endian relocation
|
3289 |
|
|
|
3290 |
|
|
-- : BFD_RELOC_SPARC_TLS_GD_HI22
|
3291 |
|
|
-- : BFD_RELOC_SPARC_TLS_GD_LO10
|
3292 |
|
|
-- : BFD_RELOC_SPARC_TLS_GD_ADD
|
3293 |
|
|
-- : BFD_RELOC_SPARC_TLS_GD_CALL
|
3294 |
|
|
-- : BFD_RELOC_SPARC_TLS_LDM_HI22
|
3295 |
|
|
-- : BFD_RELOC_SPARC_TLS_LDM_LO10
|
3296 |
|
|
-- : BFD_RELOC_SPARC_TLS_LDM_ADD
|
3297 |
|
|
-- : BFD_RELOC_SPARC_TLS_LDM_CALL
|
3298 |
|
|
-- : BFD_RELOC_SPARC_TLS_LDO_HIX22
|
3299 |
|
|
-- : BFD_RELOC_SPARC_TLS_LDO_LOX10
|
3300 |
|
|
-- : BFD_RELOC_SPARC_TLS_LDO_ADD
|
3301 |
|
|
-- : BFD_RELOC_SPARC_TLS_IE_HI22
|
3302 |
|
|
-- : BFD_RELOC_SPARC_TLS_IE_LO10
|
3303 |
|
|
-- : BFD_RELOC_SPARC_TLS_IE_LD
|
3304 |
|
|
-- : BFD_RELOC_SPARC_TLS_IE_LDX
|
3305 |
|
|
-- : BFD_RELOC_SPARC_TLS_IE_ADD
|
3306 |
|
|
-- : BFD_RELOC_SPARC_TLS_LE_HIX22
|
3307 |
|
|
-- : BFD_RELOC_SPARC_TLS_LE_LOX10
|
3308 |
|
|
-- : BFD_RELOC_SPARC_TLS_DTPMOD32
|
3309 |
|
|
-- : BFD_RELOC_SPARC_TLS_DTPMOD64
|
3310 |
|
|
-- : BFD_RELOC_SPARC_TLS_DTPOFF32
|
3311 |
|
|
-- : BFD_RELOC_SPARC_TLS_DTPOFF64
|
3312 |
|
|
-- : BFD_RELOC_SPARC_TLS_TPOFF32
|
3313 |
|
|
-- : BFD_RELOC_SPARC_TLS_TPOFF64
|
3314 |
|
|
SPARC TLS relocations
|
3315 |
|
|
|
3316 |
|
|
-- : BFD_RELOC_SPU_IMM7
|
3317 |
|
|
-- : BFD_RELOC_SPU_IMM8
|
3318 |
|
|
-- : BFD_RELOC_SPU_IMM10
|
3319 |
|
|
-- : BFD_RELOC_SPU_IMM10W
|
3320 |
|
|
-- : BFD_RELOC_SPU_IMM16
|
3321 |
|
|
-- : BFD_RELOC_SPU_IMM16W
|
3322 |
|
|
-- : BFD_RELOC_SPU_IMM18
|
3323 |
|
|
-- : BFD_RELOC_SPU_PCREL9a
|
3324 |
|
|
-- : BFD_RELOC_SPU_PCREL9b
|
3325 |
|
|
-- : BFD_RELOC_SPU_PCREL16
|
3326 |
|
|
-- : BFD_RELOC_SPU_LO16
|
3327 |
|
|
-- : BFD_RELOC_SPU_HI16
|
3328 |
|
|
-- : BFD_RELOC_SPU_PPU32
|
3329 |
|
|
-- : BFD_RELOC_SPU_PPU64
|
3330 |
|
|
SPU Relocations.
|
3331 |
|
|
|
3332 |
|
|
-- : BFD_RELOC_ALPHA_GPDISP_HI16
|
3333 |
|
|
Alpha ECOFF and ELF relocations. Some of these treat the symbol or
|
3334 |
|
|
"addend" in some special way. For GPDISP_HI16 ("gpdisp")
|
3335 |
|
|
relocations, the symbol is ignored when writing; when reading, it
|
3336 |
|
|
will be the absolute section symbol. The addend is the
|
3337 |
|
|
displacement in bytes of the "lda" instruction from the "ldah"
|
3338 |
|
|
instruction (which is at the address of this reloc).
|
3339 |
|
|
|
3340 |
|
|
-- : BFD_RELOC_ALPHA_GPDISP_LO16
|
3341 |
|
|
For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
|
3342 |
|
|
with GPDISP_HI16 relocs. The addend is ignored when writing the
|
3343 |
|
|
relocations out, and is filled in with the file's GP value on
|
3344 |
|
|
reading, for convenience.
|
3345 |
|
|
|
3346 |
|
|
-- : BFD_RELOC_ALPHA_GPDISP
|
3347 |
|
|
The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
|
3348 |
|
|
relocation except that there is no accompanying GPDISP_LO16
|
3349 |
|
|
relocation.
|
3350 |
|
|
|
3351 |
|
|
-- : BFD_RELOC_ALPHA_LITERAL
|
3352 |
|
|
-- : BFD_RELOC_ALPHA_ELF_LITERAL
|
3353 |
|
|
-- : BFD_RELOC_ALPHA_LITUSE
|
3354 |
|
|
The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
|
3355 |
|
|
the assembler turns it into a LDQ instruction to load the address
|
3356 |
|
|
of the symbol, and then fills in a register in the real
|
3357 |
|
|
instruction.
|
3358 |
|
|
|
3359 |
|
|
The LITERAL reloc, at the LDQ instruction, refers to the .lita
|
3360 |
|
|
section symbol. The addend is ignored when writing, but is filled
|
3361 |
|
|
in with the file's GP value on reading, for convenience, as with
|
3362 |
|
|
the GPDISP_LO16 reloc.
|
3363 |
|
|
|
3364 |
|
|
The ELF_LITERAL reloc is somewhere between 16_GOTOFF and
|
3365 |
|
|
GPDISP_LO16. It should refer to the symbol to be referenced, as
|
3366 |
|
|
with 16_GOTOFF, but it generates output not based on the position
|
3367 |
|
|
within the .got section, but relative to the GP value chosen for
|
3368 |
|
|
the file during the final link stage.
|
3369 |
|
|
|
3370 |
|
|
The LITUSE reloc, on the instruction using the loaded address,
|
3371 |
|
|
gives information to the linker that it might be able to use to
|
3372 |
|
|
optimize away some literal section references. The symbol is
|
3373 |
|
|
ignored (read as the absolute section symbol), and the "addend"
|
3374 |
|
|
indicates the type of instruction using the register: 1 - "memory"
|
3375 |
|
|
fmt insn 2 - byte-manipulation (byte offset reg) 3 - jsr (target
|
3376 |
|
|
of branch)
|
3377 |
|
|
|
3378 |
|
|
-- : BFD_RELOC_ALPHA_HINT
|
3379 |
|
|
The HINT relocation indicates a value that should be filled into
|
3380 |
|
|
the "hint" field of a jmp/jsr/ret instruction, for possible branch-
|
3381 |
|
|
prediction logic which may be provided on some processors.
|
3382 |
|
|
|
3383 |
|
|
-- : BFD_RELOC_ALPHA_LINKAGE
|
3384 |
|
|
The LINKAGE relocation outputs a linkage pair in the object file,
|
3385 |
|
|
which is filled by the linker.
|
3386 |
|
|
|
3387 |
|
|
-- : BFD_RELOC_ALPHA_CODEADDR
|
3388 |
|
|
The CODEADDR relocation outputs a STO_CA in the object file, which
|
3389 |
|
|
is filled by the linker.
|
3390 |
|
|
|
3391 |
|
|
-- : BFD_RELOC_ALPHA_GPREL_HI16
|
3392 |
|
|
-- : BFD_RELOC_ALPHA_GPREL_LO16
|
3393 |
|
|
The GPREL_HI/LO relocations together form a 32-bit offset from the
|
3394 |
|
|
GP register.
|
3395 |
|
|
|
3396 |
|
|
-- : BFD_RELOC_ALPHA_BRSGP
|
3397 |
|
|
Like BFD_RELOC_23_PCREL_S2, except that the source and target must
|
3398 |
|
|
share a common GP, and the target address is adjusted for
|
3399 |
|
|
STO_ALPHA_STD_GPLOAD.
|
3400 |
|
|
|
3401 |
|
|
-- : BFD_RELOC_ALPHA_TLSGD
|
3402 |
|
|
-- : BFD_RELOC_ALPHA_TLSLDM
|
3403 |
|
|
-- : BFD_RELOC_ALPHA_DTPMOD64
|
3404 |
|
|
-- : BFD_RELOC_ALPHA_GOTDTPREL16
|
3405 |
|
|
-- : BFD_RELOC_ALPHA_DTPREL64
|
3406 |
|
|
-- : BFD_RELOC_ALPHA_DTPREL_HI16
|
3407 |
|
|
-- : BFD_RELOC_ALPHA_DTPREL_LO16
|
3408 |
|
|
-- : BFD_RELOC_ALPHA_DTPREL16
|
3409 |
|
|
-- : BFD_RELOC_ALPHA_GOTTPREL16
|
3410 |
|
|
-- : BFD_RELOC_ALPHA_TPREL64
|
3411 |
|
|
-- : BFD_RELOC_ALPHA_TPREL_HI16
|
3412 |
|
|
-- : BFD_RELOC_ALPHA_TPREL_LO16
|
3413 |
|
|
-- : BFD_RELOC_ALPHA_TPREL16
|
3414 |
|
|
Alpha thread-local storage relocations.
|
3415 |
|
|
|
3416 |
|
|
-- : BFD_RELOC_MIPS_JMP
|
3417 |
|
|
Bits 27..2 of the relocation address shifted right 2 bits; simple
|
3418 |
|
|
reloc otherwise.
|
3419 |
|
|
|
3420 |
|
|
-- : BFD_RELOC_MIPS16_JMP
|
3421 |
|
|
The MIPS16 jump instruction.
|
3422 |
|
|
|
3423 |
|
|
-- : BFD_RELOC_MIPS16_GPREL
|
3424 |
|
|
MIPS16 GP relative reloc.
|
3425 |
|
|
|
3426 |
|
|
-- : BFD_RELOC_HI16
|
3427 |
|
|
High 16 bits of 32-bit value; simple reloc.
|
3428 |
|
|
|
3429 |
|
|
-- : BFD_RELOC_HI16_S
|
3430 |
|
|
High 16 bits of 32-bit value but the low 16 bits will be sign
|
3431 |
|
|
extended and added to form the final result. If the low 16 bits
|
3432 |
|
|
form a negative number, we need to add one to the high value to
|
3433 |
|
|
compensate for the borrow when the low bits are added.
|
3434 |
|
|
|
3435 |
|
|
-- : BFD_RELOC_LO16
|
3436 |
|
|
Low 16 bits.
|
3437 |
|
|
|
3438 |
|
|
-- : BFD_RELOC_HI16_PCREL
|
3439 |
|
|
High 16 bits of 32-bit pc-relative value
|
3440 |
|
|
|
3441 |
|
|
-- : BFD_RELOC_HI16_S_PCREL
|
3442 |
|
|
High 16 bits of 32-bit pc-relative value, adjusted
|
3443 |
|
|
|
3444 |
|
|
-- : BFD_RELOC_LO16_PCREL
|
3445 |
|
|
Low 16 bits of pc-relative value
|
3446 |
|
|
|
3447 |
|
|
-- : BFD_RELOC_MIPS16_HI16
|
3448 |
|
|
MIPS16 high 16 bits of 32-bit value.
|
3449 |
|
|
|
3450 |
|
|
-- : BFD_RELOC_MIPS16_HI16_S
|
3451 |
|
|
MIPS16 high 16 bits of 32-bit value but the low 16 bits will be
|
3452 |
|
|
sign extended and added to form the final result. If the low 16
|
3453 |
|
|
bits form a negative number, we need to add one to the high value
|
3454 |
|
|
to compensate for the borrow when the low bits are added.
|
3455 |
|
|
|
3456 |
|
|
-- : BFD_RELOC_MIPS16_LO16
|
3457 |
|
|
MIPS16 low 16 bits.
|
3458 |
|
|
|
3459 |
|
|
-- : BFD_RELOC_MIPS_LITERAL
|
3460 |
|
|
Relocation against a MIPS literal section.
|
3461 |
|
|
|
3462 |
|
|
-- : BFD_RELOC_MIPS_GOT16
|
3463 |
|
|
-- : BFD_RELOC_MIPS_CALL16
|
3464 |
|
|
-- : BFD_RELOC_MIPS_GOT_HI16
|
3465 |
|
|
-- : BFD_RELOC_MIPS_GOT_LO16
|
3466 |
|
|
-- : BFD_RELOC_MIPS_CALL_HI16
|
3467 |
|
|
-- : BFD_RELOC_MIPS_CALL_LO16
|
3468 |
|
|
-- : BFD_RELOC_MIPS_SUB
|
3469 |
|
|
-- : BFD_RELOC_MIPS_GOT_PAGE
|
3470 |
|
|
-- : BFD_RELOC_MIPS_GOT_OFST
|
3471 |
|
|
-- : BFD_RELOC_MIPS_GOT_DISP
|
3472 |
|
|
-- : BFD_RELOC_MIPS_SHIFT5
|
3473 |
|
|
-- : BFD_RELOC_MIPS_SHIFT6
|
3474 |
|
|
-- : BFD_RELOC_MIPS_INSERT_A
|
3475 |
|
|
-- : BFD_RELOC_MIPS_INSERT_B
|
3476 |
|
|
-- : BFD_RELOC_MIPS_DELETE
|
3477 |
|
|
-- : BFD_RELOC_MIPS_HIGHEST
|
3478 |
|
|
-- : BFD_RELOC_MIPS_HIGHER
|
3479 |
|
|
-- : BFD_RELOC_MIPS_SCN_DISP
|
3480 |
|
|
-- : BFD_RELOC_MIPS_REL16
|
3481 |
|
|
-- : BFD_RELOC_MIPS_RELGOT
|
3482 |
|
|
-- : BFD_RELOC_MIPS_JALR
|
3483 |
|
|
-- : BFD_RELOC_MIPS_TLS_DTPMOD32
|
3484 |
|
|
-- : BFD_RELOC_MIPS_TLS_DTPREL32
|
3485 |
|
|
-- : BFD_RELOC_MIPS_TLS_DTPMOD64
|
3486 |
|
|
-- : BFD_RELOC_MIPS_TLS_DTPREL64
|
3487 |
|
|
-- : BFD_RELOC_MIPS_TLS_GD
|
3488 |
|
|
-- : BFD_RELOC_MIPS_TLS_LDM
|
3489 |
|
|
-- : BFD_RELOC_MIPS_TLS_DTPREL_HI16
|
3490 |
|
|
-- : BFD_RELOC_MIPS_TLS_DTPREL_LO16
|
3491 |
|
|
-- : BFD_RELOC_MIPS_TLS_GOTTPREL
|
3492 |
|
|
-- : BFD_RELOC_MIPS_TLS_TPREL32
|
3493 |
|
|
-- : BFD_RELOC_MIPS_TLS_TPREL64
|
3494 |
|
|
-- : BFD_RELOC_MIPS_TLS_TPREL_HI16
|
3495 |
|
|
-- : BFD_RELOC_MIPS_TLS_TPREL_LO16
|
3496 |
|
|
MIPS ELF relocations.
|
3497 |
|
|
|
3498 |
|
|
-- : BFD_RELOC_MIPS_COPY
|
3499 |
|
|
-- : BFD_RELOC_MIPS_JUMP_SLOT
|
3500 |
|
|
MIPS ELF relocations (VxWorks extensions).
|
3501 |
|
|
|
3502 |
|
|
-- : BFD_RELOC_FRV_LABEL16
|
3503 |
|
|
-- : BFD_RELOC_FRV_LABEL24
|
3504 |
|
|
-- : BFD_RELOC_FRV_LO16
|
3505 |
|
|
-- : BFD_RELOC_FRV_HI16
|
3506 |
|
|
-- : BFD_RELOC_FRV_GPREL12
|
3507 |
|
|
-- : BFD_RELOC_FRV_GPRELU12
|
3508 |
|
|
-- : BFD_RELOC_FRV_GPREL32
|
3509 |
|
|
-- : BFD_RELOC_FRV_GPRELHI
|
3510 |
|
|
-- : BFD_RELOC_FRV_GPRELLO
|
3511 |
|
|
-- : BFD_RELOC_FRV_GOT12
|
3512 |
|
|
-- : BFD_RELOC_FRV_GOTHI
|
3513 |
|
|
-- : BFD_RELOC_FRV_GOTLO
|
3514 |
|
|
-- : BFD_RELOC_FRV_FUNCDESC
|
3515 |
|
|
-- : BFD_RELOC_FRV_FUNCDESC_GOT12
|
3516 |
|
|
-- : BFD_RELOC_FRV_FUNCDESC_GOTHI
|
3517 |
|
|
-- : BFD_RELOC_FRV_FUNCDESC_GOTLO
|
3518 |
|
|
-- : BFD_RELOC_FRV_FUNCDESC_VALUE
|
3519 |
|
|
-- : BFD_RELOC_FRV_FUNCDESC_GOTOFF12
|
3520 |
|
|
-- : BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
|
3521 |
|
|
-- : BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
|
3522 |
|
|
-- : BFD_RELOC_FRV_GOTOFF12
|
3523 |
|
|
-- : BFD_RELOC_FRV_GOTOFFHI
|
3524 |
|
|
-- : BFD_RELOC_FRV_GOTOFFLO
|
3525 |
|
|
-- : BFD_RELOC_FRV_GETTLSOFF
|
3526 |
|
|
-- : BFD_RELOC_FRV_TLSDESC_VALUE
|
3527 |
|
|
-- : BFD_RELOC_FRV_GOTTLSDESC12
|
3528 |
|
|
-- : BFD_RELOC_FRV_GOTTLSDESCHI
|
3529 |
|
|
-- : BFD_RELOC_FRV_GOTTLSDESCLO
|
3530 |
|
|
-- : BFD_RELOC_FRV_TLSMOFF12
|
3531 |
|
|
-- : BFD_RELOC_FRV_TLSMOFFHI
|
3532 |
|
|
-- : BFD_RELOC_FRV_TLSMOFFLO
|
3533 |
|
|
-- : BFD_RELOC_FRV_GOTTLSOFF12
|
3534 |
|
|
-- : BFD_RELOC_FRV_GOTTLSOFFHI
|
3535 |
|
|
-- : BFD_RELOC_FRV_GOTTLSOFFLO
|
3536 |
|
|
-- : BFD_RELOC_FRV_TLSOFF
|
3537 |
|
|
-- : BFD_RELOC_FRV_TLSDESC_RELAX
|
3538 |
|
|
-- : BFD_RELOC_FRV_GETTLSOFF_RELAX
|
3539 |
|
|
-- : BFD_RELOC_FRV_TLSOFF_RELAX
|
3540 |
|
|
-- : BFD_RELOC_FRV_TLSMOFF
|
3541 |
|
|
Fujitsu Frv Relocations.
|
3542 |
|
|
|
3543 |
|
|
-- : BFD_RELOC_MN10300_GOTOFF24
|
3544 |
|
|
This is a 24bit GOT-relative reloc for the mn10300.
|
3545 |
|
|
|
3546 |
|
|
-- : BFD_RELOC_MN10300_GOT32
|
3547 |
|
|
This is a 32bit GOT-relative reloc for the mn10300, offset by two
|
3548 |
|
|
bytes in the instruction.
|
3549 |
|
|
|
3550 |
|
|
-- : BFD_RELOC_MN10300_GOT24
|
3551 |
|
|
This is a 24bit GOT-relative reloc for the mn10300, offset by two
|
3552 |
|
|
bytes in the instruction.
|
3553 |
|
|
|
3554 |
|
|
-- : BFD_RELOC_MN10300_GOT16
|
3555 |
|
|
This is a 16bit GOT-relative reloc for the mn10300, offset by two
|
3556 |
|
|
bytes in the instruction.
|
3557 |
|
|
|
3558 |
|
|
-- : BFD_RELOC_MN10300_COPY
|
3559 |
|
|
Copy symbol at runtime.
|
3560 |
|
|
|
3561 |
|
|
-- : BFD_RELOC_MN10300_GLOB_DAT
|
3562 |
|
|
Create GOT entry.
|
3563 |
|
|
|
3564 |
|
|
-- : BFD_RELOC_MN10300_JMP_SLOT
|
3565 |
|
|
Create PLT entry.
|
3566 |
|
|
|
3567 |
|
|
-- : BFD_RELOC_MN10300_RELATIVE
|
3568 |
|
|
Adjust by program base.
|
3569 |
|
|
|
3570 |
|
|
-- : BFD_RELOC_MN10300_SYM_DIFF
|
3571 |
|
|
Together with another reloc targeted at the same location, allows
|
3572 |
|
|
for a value that is the difference of two symbols in the same
|
3573 |
|
|
section.
|
3574 |
|
|
|
3575 |
|
|
-- : BFD_RELOC_MN10300_ALIGN
|
3576 |
|
|
The addend of this reloc is an alignment power that must be
|
3577 |
|
|
honoured at the offset's location, regardless of linker relaxation.
|
3578 |
|
|
|
3579 |
|
|
-- : BFD_RELOC_386_GOT32
|
3580 |
|
|
-- : BFD_RELOC_386_PLT32
|
3581 |
|
|
-- : BFD_RELOC_386_COPY
|
3582 |
|
|
-- : BFD_RELOC_386_GLOB_DAT
|
3583 |
|
|
-- : BFD_RELOC_386_JUMP_SLOT
|
3584 |
|
|
-- : BFD_RELOC_386_RELATIVE
|
3585 |
|
|
-- : BFD_RELOC_386_GOTOFF
|
3586 |
|
|
-- : BFD_RELOC_386_GOTPC
|
3587 |
|
|
-- : BFD_RELOC_386_TLS_TPOFF
|
3588 |
|
|
-- : BFD_RELOC_386_TLS_IE
|
3589 |
|
|
-- : BFD_RELOC_386_TLS_GOTIE
|
3590 |
|
|
-- : BFD_RELOC_386_TLS_LE
|
3591 |
|
|
-- : BFD_RELOC_386_TLS_GD
|
3592 |
|
|
-- : BFD_RELOC_386_TLS_LDM
|
3593 |
|
|
-- : BFD_RELOC_386_TLS_LDO_32
|
3594 |
|
|
-- : BFD_RELOC_386_TLS_IE_32
|
3595 |
|
|
-- : BFD_RELOC_386_TLS_LE_32
|
3596 |
|
|
-- : BFD_RELOC_386_TLS_DTPMOD32
|
3597 |
|
|
-- : BFD_RELOC_386_TLS_DTPOFF32
|
3598 |
|
|
-- : BFD_RELOC_386_TLS_TPOFF32
|
3599 |
|
|
-- : BFD_RELOC_386_TLS_GOTDESC
|
3600 |
|
|
-- : BFD_RELOC_386_TLS_DESC_CALL
|
3601 |
|
|
-- : BFD_RELOC_386_TLS_DESC
|
3602 |
|
|
i386/elf relocations
|
3603 |
|
|
|
3604 |
|
|
-- : BFD_RELOC_X86_64_GOT32
|
3605 |
|
|
-- : BFD_RELOC_X86_64_PLT32
|
3606 |
|
|
-- : BFD_RELOC_X86_64_COPY
|
3607 |
|
|
-- : BFD_RELOC_X86_64_GLOB_DAT
|
3608 |
|
|
-- : BFD_RELOC_X86_64_JUMP_SLOT
|
3609 |
|
|
-- : BFD_RELOC_X86_64_RELATIVE
|
3610 |
|
|
-- : BFD_RELOC_X86_64_GOTPCREL
|
3611 |
|
|
-- : BFD_RELOC_X86_64_32S
|
3612 |
|
|
-- : BFD_RELOC_X86_64_DTPMOD64
|
3613 |
|
|
-- : BFD_RELOC_X86_64_DTPOFF64
|
3614 |
|
|
-- : BFD_RELOC_X86_64_TPOFF64
|
3615 |
|
|
-- : BFD_RELOC_X86_64_TLSGD
|
3616 |
|
|
-- : BFD_RELOC_X86_64_TLSLD
|
3617 |
|
|
-- : BFD_RELOC_X86_64_DTPOFF32
|
3618 |
|
|
-- : BFD_RELOC_X86_64_GOTTPOFF
|
3619 |
|
|
-- : BFD_RELOC_X86_64_TPOFF32
|
3620 |
|
|
-- : BFD_RELOC_X86_64_GOTOFF64
|
3621 |
|
|
-- : BFD_RELOC_X86_64_GOTPC32
|
3622 |
|
|
-- : BFD_RELOC_X86_64_GOT64
|
3623 |
|
|
-- : BFD_RELOC_X86_64_GOTPCREL64
|
3624 |
|
|
-- : BFD_RELOC_X86_64_GOTPC64
|
3625 |
|
|
-- : BFD_RELOC_X86_64_GOTPLT64
|
3626 |
|
|
-- : BFD_RELOC_X86_64_PLTOFF64
|
3627 |
|
|
-- : BFD_RELOC_X86_64_GOTPC32_TLSDESC
|
3628 |
|
|
-- : BFD_RELOC_X86_64_TLSDESC_CALL
|
3629 |
|
|
-- : BFD_RELOC_X86_64_TLSDESC
|
3630 |
|
|
x86-64/elf relocations
|
3631 |
|
|
|
3632 |
|
|
-- : BFD_RELOC_NS32K_IMM_8
|
3633 |
|
|
-- : BFD_RELOC_NS32K_IMM_16
|
3634 |
|
|
-- : BFD_RELOC_NS32K_IMM_32
|
3635 |
|
|
-- : BFD_RELOC_NS32K_IMM_8_PCREL
|
3636 |
|
|
-- : BFD_RELOC_NS32K_IMM_16_PCREL
|
3637 |
|
|
-- : BFD_RELOC_NS32K_IMM_32_PCREL
|
3638 |
|
|
-- : BFD_RELOC_NS32K_DISP_8
|
3639 |
|
|
-- : BFD_RELOC_NS32K_DISP_16
|
3640 |
|
|
-- : BFD_RELOC_NS32K_DISP_32
|
3641 |
|
|
-- : BFD_RELOC_NS32K_DISP_8_PCREL
|
3642 |
|
|
-- : BFD_RELOC_NS32K_DISP_16_PCREL
|
3643 |
|
|
-- : BFD_RELOC_NS32K_DISP_32_PCREL
|
3644 |
|
|
ns32k relocations
|
3645 |
|
|
|
3646 |
|
|
-- : BFD_RELOC_PDP11_DISP_8_PCREL
|
3647 |
|
|
-- : BFD_RELOC_PDP11_DISP_6_PCREL
|
3648 |
|
|
PDP11 relocations
|
3649 |
|
|
|
3650 |
|
|
-- : BFD_RELOC_PJ_CODE_HI16
|
3651 |
|
|
-- : BFD_RELOC_PJ_CODE_LO16
|
3652 |
|
|
-- : BFD_RELOC_PJ_CODE_DIR16
|
3653 |
|
|
-- : BFD_RELOC_PJ_CODE_DIR32
|
3654 |
|
|
-- : BFD_RELOC_PJ_CODE_REL16
|
3655 |
|
|
-- : BFD_RELOC_PJ_CODE_REL32
|
3656 |
|
|
Picojava relocs. Not all of these appear in object files.
|
3657 |
|
|
|
3658 |
|
|
-- : BFD_RELOC_PPC_B26
|
3659 |
|
|
-- : BFD_RELOC_PPC_BA26
|
3660 |
|
|
-- : BFD_RELOC_PPC_TOC16
|
3661 |
|
|
-- : BFD_RELOC_PPC_B16
|
3662 |
|
|
-- : BFD_RELOC_PPC_B16_BRTAKEN
|
3663 |
|
|
-- : BFD_RELOC_PPC_B16_BRNTAKEN
|
3664 |
|
|
-- : BFD_RELOC_PPC_BA16
|
3665 |
|
|
-- : BFD_RELOC_PPC_BA16_BRTAKEN
|
3666 |
|
|
-- : BFD_RELOC_PPC_BA16_BRNTAKEN
|
3667 |
|
|
-- : BFD_RELOC_PPC_COPY
|
3668 |
|
|
-- : BFD_RELOC_PPC_GLOB_DAT
|
3669 |
|
|
-- : BFD_RELOC_PPC_JMP_SLOT
|
3670 |
|
|
-- : BFD_RELOC_PPC_RELATIVE
|
3671 |
|
|
-- : BFD_RELOC_PPC_LOCAL24PC
|
3672 |
|
|
-- : BFD_RELOC_PPC_EMB_NADDR32
|
3673 |
|
|
-- : BFD_RELOC_PPC_EMB_NADDR16
|
3674 |
|
|
-- : BFD_RELOC_PPC_EMB_NADDR16_LO
|
3675 |
|
|
-- : BFD_RELOC_PPC_EMB_NADDR16_HI
|
3676 |
|
|
-- : BFD_RELOC_PPC_EMB_NADDR16_HA
|
3677 |
|
|
-- : BFD_RELOC_PPC_EMB_SDAI16
|
3678 |
|
|
-- : BFD_RELOC_PPC_EMB_SDA2I16
|
3679 |
|
|
-- : BFD_RELOC_PPC_EMB_SDA2REL
|
3680 |
|
|
-- : BFD_RELOC_PPC_EMB_SDA21
|
3681 |
|
|
-- : BFD_RELOC_PPC_EMB_MRKREF
|
3682 |
|
|
-- : BFD_RELOC_PPC_EMB_RELSEC16
|
3683 |
|
|
-- : BFD_RELOC_PPC_EMB_RELST_LO
|
3684 |
|
|
-- : BFD_RELOC_PPC_EMB_RELST_HI
|
3685 |
|
|
-- : BFD_RELOC_PPC_EMB_RELST_HA
|
3686 |
|
|
-- : BFD_RELOC_PPC_EMB_BIT_FLD
|
3687 |
|
|
-- : BFD_RELOC_PPC_EMB_RELSDA
|
3688 |
|
|
-- : BFD_RELOC_PPC64_HIGHER
|
3689 |
|
|
-- : BFD_RELOC_PPC64_HIGHER_S
|
3690 |
|
|
-- : BFD_RELOC_PPC64_HIGHEST
|
3691 |
|
|
-- : BFD_RELOC_PPC64_HIGHEST_S
|
3692 |
|
|
-- : BFD_RELOC_PPC64_TOC16_LO
|
3693 |
|
|
-- : BFD_RELOC_PPC64_TOC16_HI
|
3694 |
|
|
-- : BFD_RELOC_PPC64_TOC16_HA
|
3695 |
|
|
-- : BFD_RELOC_PPC64_TOC
|
3696 |
|
|
-- : BFD_RELOC_PPC64_PLTGOT16
|
3697 |
|
|
-- : BFD_RELOC_PPC64_PLTGOT16_LO
|
3698 |
|
|
-- : BFD_RELOC_PPC64_PLTGOT16_HI
|
3699 |
|
|
-- : BFD_RELOC_PPC64_PLTGOT16_HA
|
3700 |
|
|
-- : BFD_RELOC_PPC64_ADDR16_DS
|
3701 |
|
|
-- : BFD_RELOC_PPC64_ADDR16_LO_DS
|
3702 |
|
|
-- : BFD_RELOC_PPC64_GOT16_DS
|
3703 |
|
|
-- : BFD_RELOC_PPC64_GOT16_LO_DS
|
3704 |
|
|
-- : BFD_RELOC_PPC64_PLT16_LO_DS
|
3705 |
|
|
-- : BFD_RELOC_PPC64_SECTOFF_DS
|
3706 |
|
|
-- : BFD_RELOC_PPC64_SECTOFF_LO_DS
|
3707 |
|
|
-- : BFD_RELOC_PPC64_TOC16_DS
|
3708 |
|
|
-- : BFD_RELOC_PPC64_TOC16_LO_DS
|
3709 |
|
|
-- : BFD_RELOC_PPC64_PLTGOT16_DS
|
3710 |
|
|
-- : BFD_RELOC_PPC64_PLTGOT16_LO_DS
|
3711 |
|
|
Power(rs6000) and PowerPC relocations.
|
3712 |
|
|
|
3713 |
|
|
-- : BFD_RELOC_PPC_TLS
|
3714 |
|
|
-- : BFD_RELOC_PPC_DTPMOD
|
3715 |
|
|
-- : BFD_RELOC_PPC_TPREL16
|
3716 |
|
|
-- : BFD_RELOC_PPC_TPREL16_LO
|
3717 |
|
|
-- : BFD_RELOC_PPC_TPREL16_HI
|
3718 |
|
|
-- : BFD_RELOC_PPC_TPREL16_HA
|
3719 |
|
|
-- : BFD_RELOC_PPC_TPREL
|
3720 |
|
|
-- : BFD_RELOC_PPC_DTPREL16
|
3721 |
|
|
-- : BFD_RELOC_PPC_DTPREL16_LO
|
3722 |
|
|
-- : BFD_RELOC_PPC_DTPREL16_HI
|
3723 |
|
|
-- : BFD_RELOC_PPC_DTPREL16_HA
|
3724 |
|
|
-- : BFD_RELOC_PPC_DTPREL
|
3725 |
|
|
-- : BFD_RELOC_PPC_GOT_TLSGD16
|
3726 |
|
|
-- : BFD_RELOC_PPC_GOT_TLSGD16_LO
|
3727 |
|
|
-- : BFD_RELOC_PPC_GOT_TLSGD16_HI
|
3728 |
|
|
-- : BFD_RELOC_PPC_GOT_TLSGD16_HA
|
3729 |
|
|
-- : BFD_RELOC_PPC_GOT_TLSLD16
|
3730 |
|
|
-- : BFD_RELOC_PPC_GOT_TLSLD16_LO
|
3731 |
|
|
-- : BFD_RELOC_PPC_GOT_TLSLD16_HI
|
3732 |
|
|
-- : BFD_RELOC_PPC_GOT_TLSLD16_HA
|
3733 |
|
|
-- : BFD_RELOC_PPC_GOT_TPREL16
|
3734 |
|
|
-- : BFD_RELOC_PPC_GOT_TPREL16_LO
|
3735 |
|
|
-- : BFD_RELOC_PPC_GOT_TPREL16_HI
|
3736 |
|
|
-- : BFD_RELOC_PPC_GOT_TPREL16_HA
|
3737 |
|
|
-- : BFD_RELOC_PPC_GOT_DTPREL16
|
3738 |
|
|
-- : BFD_RELOC_PPC_GOT_DTPREL16_LO
|
3739 |
|
|
-- : BFD_RELOC_PPC_GOT_DTPREL16_HI
|
3740 |
|
|
-- : BFD_RELOC_PPC_GOT_DTPREL16_HA
|
3741 |
|
|
-- : BFD_RELOC_PPC64_TPREL16_DS
|
3742 |
|
|
-- : BFD_RELOC_PPC64_TPREL16_LO_DS
|
3743 |
|
|
-- : BFD_RELOC_PPC64_TPREL16_HIGHER
|
3744 |
|
|
-- : BFD_RELOC_PPC64_TPREL16_HIGHERA
|
3745 |
|
|
-- : BFD_RELOC_PPC64_TPREL16_HIGHEST
|
3746 |
|
|
-- : BFD_RELOC_PPC64_TPREL16_HIGHESTA
|
3747 |
|
|
-- : BFD_RELOC_PPC64_DTPREL16_DS
|
3748 |
|
|
-- : BFD_RELOC_PPC64_DTPREL16_LO_DS
|
3749 |
|
|
-- : BFD_RELOC_PPC64_DTPREL16_HIGHER
|
3750 |
|
|
-- : BFD_RELOC_PPC64_DTPREL16_HIGHERA
|
3751 |
|
|
-- : BFD_RELOC_PPC64_DTPREL16_HIGHEST
|
3752 |
|
|
-- : BFD_RELOC_PPC64_DTPREL16_HIGHESTA
|
3753 |
|
|
PowerPC and PowerPC64 thread-local storage relocations.
|
3754 |
|
|
|
3755 |
|
|
-- : BFD_RELOC_I370_D12
|
3756 |
|
|
IBM 370/390 relocations
|
3757 |
|
|
|
3758 |
|
|
-- : BFD_RELOC_CTOR
|
3759 |
|
|
The type of reloc used to build a constructor table - at the moment
|
3760 |
|
|
probably a 32 bit wide absolute relocation, but the target can
|
3761 |
|
|
choose. It generally does map to one of the other relocation
|
3762 |
|
|
types.
|
3763 |
|
|
|
3764 |
|
|
-- : BFD_RELOC_ARM_PCREL_BRANCH
|
3765 |
|
|
ARM 26 bit pc-relative branch. The lowest two bits must be zero
|
3766 |
|
|
and are not stored in the instruction.
|
3767 |
|
|
|
3768 |
|
|
-- : BFD_RELOC_ARM_PCREL_BLX
|
3769 |
|
|
ARM 26 bit pc-relative branch. The lowest bit must be zero and is
|
3770 |
|
|
not stored in the instruction. The 2nd lowest bit comes from a 1
|
3771 |
|
|
bit field in the instruction.
|
3772 |
|
|
|
3773 |
|
|
-- : BFD_RELOC_THUMB_PCREL_BLX
|
3774 |
|
|
Thumb 22 bit pc-relative branch. The lowest bit must be zero and
|
3775 |
|
|
is not stored in the instruction. The 2nd lowest bit comes from a
|
3776 |
|
|
1 bit field in the instruction.
|
3777 |
|
|
|
3778 |
|
|
-- : BFD_RELOC_ARM_PCREL_CALL
|
3779 |
|
|
ARM 26-bit pc-relative branch for an unconditional BL or BLX
|
3780 |
|
|
instruction.
|
3781 |
|
|
|
3782 |
|
|
-- : BFD_RELOC_ARM_PCREL_JUMP
|
3783 |
|
|
ARM 26-bit pc-relative branch for B or conditional BL instruction.
|
3784 |
|
|
|
3785 |
|
|
-- : BFD_RELOC_THUMB_PCREL_BRANCH7
|
3786 |
|
|
-- : BFD_RELOC_THUMB_PCREL_BRANCH9
|
3787 |
|
|
-- : BFD_RELOC_THUMB_PCREL_BRANCH12
|
3788 |
|
|
-- : BFD_RELOC_THUMB_PCREL_BRANCH20
|
3789 |
|
|
-- : BFD_RELOC_THUMB_PCREL_BRANCH23
|
3790 |
|
|
-- : BFD_RELOC_THUMB_PCREL_BRANCH25
|
3791 |
|
|
Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches. The
|
3792 |
|
|
lowest bit must be zero and is not stored in the instruction.
|
3793 |
|
|
Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
|
3794 |
|
|
"nn" one smaller in all cases. Note further that BRANCH23
|
3795 |
|
|
corresponds to R_ARM_THM_CALL.
|
3796 |
|
|
|
3797 |
|
|
-- : BFD_RELOC_ARM_OFFSET_IMM
|
3798 |
|
|
12-bit immediate offset, used in ARM-format ldr and str
|
3799 |
|
|
instructions.
|
3800 |
|
|
|
3801 |
|
|
-- : BFD_RELOC_ARM_THUMB_OFFSET
|
3802 |
|
|
5-bit immediate offset, used in Thumb-format ldr and str
|
3803 |
|
|
instructions.
|
3804 |
|
|
|
3805 |
|
|
-- : BFD_RELOC_ARM_TARGET1
|
3806 |
|
|
Pc-relative or absolute relocation depending on target. Used for
|
3807 |
|
|
entries in .init_array sections.
|
3808 |
|
|
|
3809 |
|
|
-- : BFD_RELOC_ARM_ROSEGREL32
|
3810 |
|
|
Read-only segment base relative address.
|
3811 |
|
|
|
3812 |
|
|
-- : BFD_RELOC_ARM_SBREL32
|
3813 |
|
|
Data segment base relative address.
|
3814 |
|
|
|
3815 |
|
|
-- : BFD_RELOC_ARM_TARGET2
|
3816 |
|
|
This reloc is used for references to RTTI data from exception
|
3817 |
|
|
handling tables. The actual definition depends on the target. It
|
3818 |
|
|
may be a pc-relative or some form of GOT-indirect relocation.
|
3819 |
|
|
|
3820 |
|
|
-- : BFD_RELOC_ARM_PREL31
|
3821 |
|
|
31-bit PC relative address.
|
3822 |
|
|
|
3823 |
|
|
-- : BFD_RELOC_ARM_MOVW
|
3824 |
|
|
-- : BFD_RELOC_ARM_MOVT
|
3825 |
|
|
-- : BFD_RELOC_ARM_MOVW_PCREL
|
3826 |
|
|
-- : BFD_RELOC_ARM_MOVT_PCREL
|
3827 |
|
|
-- : BFD_RELOC_ARM_THUMB_MOVW
|
3828 |
|
|
-- : BFD_RELOC_ARM_THUMB_MOVT
|
3829 |
|
|
-- : BFD_RELOC_ARM_THUMB_MOVW_PCREL
|
3830 |
|
|
-- : BFD_RELOC_ARM_THUMB_MOVT_PCREL
|
3831 |
|
|
Low and High halfword relocations for MOVW and MOVT instructions.
|
3832 |
|
|
|
3833 |
|
|
-- : BFD_RELOC_ARM_JUMP_SLOT
|
3834 |
|
|
-- : BFD_RELOC_ARM_GLOB_DAT
|
3835 |
|
|
-- : BFD_RELOC_ARM_GOT32
|
3836 |
|
|
-- : BFD_RELOC_ARM_PLT32
|
3837 |
|
|
-- : BFD_RELOC_ARM_RELATIVE
|
3838 |
|
|
-- : BFD_RELOC_ARM_GOTOFF
|
3839 |
|
|
-- : BFD_RELOC_ARM_GOTPC
|
3840 |
|
|
Relocations for setting up GOTs and PLTs for shared libraries.
|
3841 |
|
|
|
3842 |
|
|
-- : BFD_RELOC_ARM_TLS_GD32
|
3843 |
|
|
-- : BFD_RELOC_ARM_TLS_LDO32
|
3844 |
|
|
-- : BFD_RELOC_ARM_TLS_LDM32
|
3845 |
|
|
-- : BFD_RELOC_ARM_TLS_DTPOFF32
|
3846 |
|
|
-- : BFD_RELOC_ARM_TLS_DTPMOD32
|
3847 |
|
|
-- : BFD_RELOC_ARM_TLS_TPOFF32
|
3848 |
|
|
-- : BFD_RELOC_ARM_TLS_IE32
|
3849 |
|
|
-- : BFD_RELOC_ARM_TLS_LE32
|
3850 |
|
|
ARM thread-local storage relocations.
|
3851 |
|
|
|
3852 |
|
|
-- : BFD_RELOC_ARM_ALU_PC_G0_NC
|
3853 |
|
|
-- : BFD_RELOC_ARM_ALU_PC_G0
|
3854 |
|
|
-- : BFD_RELOC_ARM_ALU_PC_G1_NC
|
3855 |
|
|
-- : BFD_RELOC_ARM_ALU_PC_G1
|
3856 |
|
|
-- : BFD_RELOC_ARM_ALU_PC_G2
|
3857 |
|
|
-- : BFD_RELOC_ARM_LDR_PC_G0
|
3858 |
|
|
-- : BFD_RELOC_ARM_LDR_PC_G1
|
3859 |
|
|
-- : BFD_RELOC_ARM_LDR_PC_G2
|
3860 |
|
|
-- : BFD_RELOC_ARM_LDRS_PC_G0
|
3861 |
|
|
-- : BFD_RELOC_ARM_LDRS_PC_G1
|
3862 |
|
|
-- : BFD_RELOC_ARM_LDRS_PC_G2
|
3863 |
|
|
-- : BFD_RELOC_ARM_LDC_PC_G0
|
3864 |
|
|
-- : BFD_RELOC_ARM_LDC_PC_G1
|
3865 |
|
|
-- : BFD_RELOC_ARM_LDC_PC_G2
|
3866 |
|
|
-- : BFD_RELOC_ARM_ALU_SB_G0_NC
|
3867 |
|
|
-- : BFD_RELOC_ARM_ALU_SB_G0
|
3868 |
|
|
-- : BFD_RELOC_ARM_ALU_SB_G1_NC
|
3869 |
|
|
-- : BFD_RELOC_ARM_ALU_SB_G1
|
3870 |
|
|
-- : BFD_RELOC_ARM_ALU_SB_G2
|
3871 |
|
|
-- : BFD_RELOC_ARM_LDR_SB_G0
|
3872 |
|
|
-- : BFD_RELOC_ARM_LDR_SB_G1
|
3873 |
|
|
-- : BFD_RELOC_ARM_LDR_SB_G2
|
3874 |
|
|
-- : BFD_RELOC_ARM_LDRS_SB_G0
|
3875 |
|
|
-- : BFD_RELOC_ARM_LDRS_SB_G1
|
3876 |
|
|
-- : BFD_RELOC_ARM_LDRS_SB_G2
|
3877 |
|
|
-- : BFD_RELOC_ARM_LDC_SB_G0
|
3878 |
|
|
-- : BFD_RELOC_ARM_LDC_SB_G1
|
3879 |
|
|
-- : BFD_RELOC_ARM_LDC_SB_G2
|
3880 |
|
|
ARM group relocations.
|
3881 |
|
|
|
3882 |
|
|
-- : BFD_RELOC_ARM_V4BX
|
3883 |
|
|
Annotation of BX instructions.
|
3884 |
|
|
|
3885 |
|
|
-- : BFD_RELOC_ARM_IMMEDIATE
|
3886 |
|
|
-- : BFD_RELOC_ARM_ADRL_IMMEDIATE
|
3887 |
|
|
-- : BFD_RELOC_ARM_T32_IMMEDIATE
|
3888 |
|
|
-- : BFD_RELOC_ARM_T32_ADD_IMM
|
3889 |
|
|
-- : BFD_RELOC_ARM_T32_IMM12
|
3890 |
|
|
-- : BFD_RELOC_ARM_T32_ADD_PC12
|
3891 |
|
|
-- : BFD_RELOC_ARM_SHIFT_IMM
|
3892 |
|
|
-- : BFD_RELOC_ARM_SMC
|
3893 |
|
|
-- : BFD_RELOC_ARM_SWI
|
3894 |
|
|
-- : BFD_RELOC_ARM_MULTI
|
3895 |
|
|
-- : BFD_RELOC_ARM_CP_OFF_IMM
|
3896 |
|
|
-- : BFD_RELOC_ARM_CP_OFF_IMM_S2
|
3897 |
|
|
-- : BFD_RELOC_ARM_T32_CP_OFF_IMM
|
3898 |
|
|
-- : BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
|
3899 |
|
|
-- : BFD_RELOC_ARM_ADR_IMM
|
3900 |
|
|
-- : BFD_RELOC_ARM_LDR_IMM
|
3901 |
|
|
-- : BFD_RELOC_ARM_LITERAL
|
3902 |
|
|
-- : BFD_RELOC_ARM_IN_POOL
|
3903 |
|
|
-- : BFD_RELOC_ARM_OFFSET_IMM8
|
3904 |
|
|
-- : BFD_RELOC_ARM_T32_OFFSET_U8
|
3905 |
|
|
-- : BFD_RELOC_ARM_T32_OFFSET_IMM
|
3906 |
|
|
-- : BFD_RELOC_ARM_HWLITERAL
|
3907 |
|
|
-- : BFD_RELOC_ARM_THUMB_ADD
|
3908 |
|
|
-- : BFD_RELOC_ARM_THUMB_IMM
|
3909 |
|
|
-- : BFD_RELOC_ARM_THUMB_SHIFT
|
3910 |
|
|
These relocs are only used within the ARM assembler. They are not
|
3911 |
|
|
(at present) written to any object files.
|
3912 |
|
|
|
3913 |
|
|
-- : BFD_RELOC_SH_PCDISP8BY2
|
3914 |
|
|
-- : BFD_RELOC_SH_PCDISP12BY2
|
3915 |
|
|
-- : BFD_RELOC_SH_IMM3
|
3916 |
|
|
-- : BFD_RELOC_SH_IMM3U
|
3917 |
|
|
-- : BFD_RELOC_SH_DISP12
|
3918 |
|
|
-- : BFD_RELOC_SH_DISP12BY2
|
3919 |
|
|
-- : BFD_RELOC_SH_DISP12BY4
|
3920 |
|
|
-- : BFD_RELOC_SH_DISP12BY8
|
3921 |
|
|
-- : BFD_RELOC_SH_DISP20
|
3922 |
|
|
-- : BFD_RELOC_SH_DISP20BY8
|
3923 |
|
|
-- : BFD_RELOC_SH_IMM4
|
3924 |
|
|
-- : BFD_RELOC_SH_IMM4BY2
|
3925 |
|
|
-- : BFD_RELOC_SH_IMM4BY4
|
3926 |
|
|
-- : BFD_RELOC_SH_IMM8
|
3927 |
|
|
-- : BFD_RELOC_SH_IMM8BY2
|
3928 |
|
|
-- : BFD_RELOC_SH_IMM8BY4
|
3929 |
|
|
-- : BFD_RELOC_SH_PCRELIMM8BY2
|
3930 |
|
|
-- : BFD_RELOC_SH_PCRELIMM8BY4
|
3931 |
|
|
-- : BFD_RELOC_SH_SWITCH16
|
3932 |
|
|
-- : BFD_RELOC_SH_SWITCH32
|
3933 |
|
|
-- : BFD_RELOC_SH_USES
|
3934 |
|
|
-- : BFD_RELOC_SH_COUNT
|
3935 |
|
|
-- : BFD_RELOC_SH_ALIGN
|
3936 |
|
|
-- : BFD_RELOC_SH_CODE
|
3937 |
|
|
-- : BFD_RELOC_SH_DATA
|
3938 |
|
|
-- : BFD_RELOC_SH_LABEL
|
3939 |
|
|
-- : BFD_RELOC_SH_LOOP_START
|
3940 |
|
|
-- : BFD_RELOC_SH_LOOP_END
|
3941 |
|
|
-- : BFD_RELOC_SH_COPY
|
3942 |
|
|
-- : BFD_RELOC_SH_GLOB_DAT
|
3943 |
|
|
-- : BFD_RELOC_SH_JMP_SLOT
|
3944 |
|
|
-- : BFD_RELOC_SH_RELATIVE
|
3945 |
|
|
-- : BFD_RELOC_SH_GOTPC
|
3946 |
|
|
-- : BFD_RELOC_SH_GOT_LOW16
|
3947 |
|
|
-- : BFD_RELOC_SH_GOT_MEDLOW16
|
3948 |
|
|
-- : BFD_RELOC_SH_GOT_MEDHI16
|
3949 |
|
|
-- : BFD_RELOC_SH_GOT_HI16
|
3950 |
|
|
-- : BFD_RELOC_SH_GOTPLT_LOW16
|
3951 |
|
|
-- : BFD_RELOC_SH_GOTPLT_MEDLOW16
|
3952 |
|
|
-- : BFD_RELOC_SH_GOTPLT_MEDHI16
|
3953 |
|
|
-- : BFD_RELOC_SH_GOTPLT_HI16
|
3954 |
|
|
-- : BFD_RELOC_SH_PLT_LOW16
|
3955 |
|
|
-- : BFD_RELOC_SH_PLT_MEDLOW16
|
3956 |
|
|
-- : BFD_RELOC_SH_PLT_MEDHI16
|
3957 |
|
|
-- : BFD_RELOC_SH_PLT_HI16
|
3958 |
|
|
-- : BFD_RELOC_SH_GOTOFF_LOW16
|
3959 |
|
|
-- : BFD_RELOC_SH_GOTOFF_MEDLOW16
|
3960 |
|
|
-- : BFD_RELOC_SH_GOTOFF_MEDHI16
|
3961 |
|
|
-- : BFD_RELOC_SH_GOTOFF_HI16
|
3962 |
|
|
-- : BFD_RELOC_SH_GOTPC_LOW16
|
3963 |
|
|
-- : BFD_RELOC_SH_GOTPC_MEDLOW16
|
3964 |
|
|
-- : BFD_RELOC_SH_GOTPC_MEDHI16
|
3965 |
|
|
-- : BFD_RELOC_SH_GOTPC_HI16
|
3966 |
|
|
-- : BFD_RELOC_SH_COPY64
|
3967 |
|
|
-- : BFD_RELOC_SH_GLOB_DAT64
|
3968 |
|
|
-- : BFD_RELOC_SH_JMP_SLOT64
|
3969 |
|
|
-- : BFD_RELOC_SH_RELATIVE64
|
3970 |
|
|
-- : BFD_RELOC_SH_GOT10BY4
|
3971 |
|
|
-- : BFD_RELOC_SH_GOT10BY8
|
3972 |
|
|
-- : BFD_RELOC_SH_GOTPLT10BY4
|
3973 |
|
|
-- : BFD_RELOC_SH_GOTPLT10BY8
|
3974 |
|
|
-- : BFD_RELOC_SH_GOTPLT32
|
3975 |
|
|
-- : BFD_RELOC_SH_SHMEDIA_CODE
|
3976 |
|
|
-- : BFD_RELOC_SH_IMMU5
|
3977 |
|
|
-- : BFD_RELOC_SH_IMMS6
|
3978 |
|
|
-- : BFD_RELOC_SH_IMMS6BY32
|
3979 |
|
|
-- : BFD_RELOC_SH_IMMU6
|
3980 |
|
|
-- : BFD_RELOC_SH_IMMS10
|
3981 |
|
|
-- : BFD_RELOC_SH_IMMS10BY2
|
3982 |
|
|
-- : BFD_RELOC_SH_IMMS10BY4
|
3983 |
|
|
-- : BFD_RELOC_SH_IMMS10BY8
|
3984 |
|
|
-- : BFD_RELOC_SH_IMMS16
|
3985 |
|
|
-- : BFD_RELOC_SH_IMMU16
|
3986 |
|
|
-- : BFD_RELOC_SH_IMM_LOW16
|
3987 |
|
|
-- : BFD_RELOC_SH_IMM_LOW16_PCREL
|
3988 |
|
|
-- : BFD_RELOC_SH_IMM_MEDLOW16
|
3989 |
|
|
-- : BFD_RELOC_SH_IMM_MEDLOW16_PCREL
|
3990 |
|
|
-- : BFD_RELOC_SH_IMM_MEDHI16
|
3991 |
|
|
-- : BFD_RELOC_SH_IMM_MEDHI16_PCREL
|
3992 |
|
|
-- : BFD_RELOC_SH_IMM_HI16
|
3993 |
|
|
-- : BFD_RELOC_SH_IMM_HI16_PCREL
|
3994 |
|
|
-- : BFD_RELOC_SH_PT_16
|
3995 |
|
|
-- : BFD_RELOC_SH_TLS_GD_32
|
3996 |
|
|
-- : BFD_RELOC_SH_TLS_LD_32
|
3997 |
|
|
-- : BFD_RELOC_SH_TLS_LDO_32
|
3998 |
|
|
-- : BFD_RELOC_SH_TLS_IE_32
|
3999 |
|
|
-- : BFD_RELOC_SH_TLS_LE_32
|
4000 |
|
|
-- : BFD_RELOC_SH_TLS_DTPMOD32
|
4001 |
|
|
-- : BFD_RELOC_SH_TLS_DTPOFF32
|
4002 |
|
|
-- : BFD_RELOC_SH_TLS_TPOFF32
|
4003 |
|
|
Renesas / SuperH SH relocs. Not all of these appear in object
|
4004 |
|
|
files.
|
4005 |
|
|
|
4006 |
|
|
-- : BFD_RELOC_ARC_B22_PCREL
|
4007 |
|
|
ARC Cores relocs. ARC 22 bit pc-relative branch. The lowest two
|
4008 |
|
|
bits must be zero and are not stored in the instruction. The high
|
4009 |
|
|
20 bits are installed in bits 26 through 7 of the instruction.
|
4010 |
|
|
|
4011 |
|
|
-- : BFD_RELOC_ARC_B26
|
4012 |
|
|
ARC 26 bit absolute branch. The lowest two bits must be zero and
|
4013 |
|
|
are not stored in the instruction. The high 24 bits are installed
|
4014 |
|
|
in bits 23 through 0.
|
4015 |
|
|
|
4016 |
|
|
-- : BFD_RELOC_BFIN_16_IMM
|
4017 |
|
|
ADI Blackfin 16 bit immediate absolute reloc.
|
4018 |
|
|
|
4019 |
|
|
-- : BFD_RELOC_BFIN_16_HIGH
|
4020 |
|
|
ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
|
4021 |
|
|
|
4022 |
|
|
-- : BFD_RELOC_BFIN_4_PCREL
|
4023 |
|
|
ADI Blackfin 'a' part of LSETUP.
|
4024 |
|
|
|
4025 |
|
|
-- : BFD_RELOC_BFIN_5_PCREL
|
4026 |
|
|
ADI Blackfin.
|
4027 |
|
|
|
4028 |
|
|
-- : BFD_RELOC_BFIN_16_LOW
|
4029 |
|
|
ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
|
4030 |
|
|
|
4031 |
|
|
-- : BFD_RELOC_BFIN_10_PCREL
|
4032 |
|
|
ADI Blackfin.
|
4033 |
|
|
|
4034 |
|
|
-- : BFD_RELOC_BFIN_11_PCREL
|
4035 |
|
|
ADI Blackfin 'b' part of LSETUP.
|
4036 |
|
|
|
4037 |
|
|
-- : BFD_RELOC_BFIN_12_PCREL_JUMP
|
4038 |
|
|
ADI Blackfin.
|
4039 |
|
|
|
4040 |
|
|
-- : BFD_RELOC_BFIN_12_PCREL_JUMP_S
|
4041 |
|
|
ADI Blackfin Short jump, pcrel.
|
4042 |
|
|
|
4043 |
|
|
-- : BFD_RELOC_BFIN_24_PCREL_CALL_X
|
4044 |
|
|
ADI Blackfin Call.x not implemented.
|
4045 |
|
|
|
4046 |
|
|
-- : BFD_RELOC_BFIN_24_PCREL_JUMP_L
|
4047 |
|
|
ADI Blackfin Long Jump pcrel.
|
4048 |
|
|
|
4049 |
|
|
-- : BFD_RELOC_BFIN_GOT17M4
|
4050 |
|
|
-- : BFD_RELOC_BFIN_GOTHI
|
4051 |
|
|
-- : BFD_RELOC_BFIN_GOTLO
|
4052 |
|
|
-- : BFD_RELOC_BFIN_FUNCDESC
|
4053 |
|
|
-- : BFD_RELOC_BFIN_FUNCDESC_GOT17M4
|
4054 |
|
|
-- : BFD_RELOC_BFIN_FUNCDESC_GOTHI
|
4055 |
|
|
-- : BFD_RELOC_BFIN_FUNCDESC_GOTLO
|
4056 |
|
|
-- : BFD_RELOC_BFIN_FUNCDESC_VALUE
|
4057 |
|
|
-- : BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
|
4058 |
|
|
-- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
|
4059 |
|
|
-- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
|
4060 |
|
|
-- : BFD_RELOC_BFIN_GOTOFF17M4
|
4061 |
|
|
-- : BFD_RELOC_BFIN_GOTOFFHI
|
4062 |
|
|
-- : BFD_RELOC_BFIN_GOTOFFLO
|
4063 |
|
|
ADI Blackfin FD-PIC relocations.
|
4064 |
|
|
|
4065 |
|
|
-- : BFD_RELOC_BFIN_GOT
|
4066 |
|
|
ADI Blackfin GOT relocation.
|
4067 |
|
|
|
4068 |
|
|
-- : BFD_RELOC_BFIN_PLTPC
|
4069 |
|
|
ADI Blackfin PLTPC relocation.
|
4070 |
|
|
|
4071 |
|
|
-- : BFD_ARELOC_BFIN_PUSH
|
4072 |
|
|
ADI Blackfin arithmetic relocation.
|
4073 |
|
|
|
4074 |
|
|
-- : BFD_ARELOC_BFIN_CONST
|
4075 |
|
|
ADI Blackfin arithmetic relocation.
|
4076 |
|
|
|
4077 |
|
|
-- : BFD_ARELOC_BFIN_ADD
|
4078 |
|
|
ADI Blackfin arithmetic relocation.
|
4079 |
|
|
|
4080 |
|
|
-- : BFD_ARELOC_BFIN_SUB
|
4081 |
|
|
ADI Blackfin arithmetic relocation.
|
4082 |
|
|
|
4083 |
|
|
-- : BFD_ARELOC_BFIN_MULT
|
4084 |
|
|
ADI Blackfin arithmetic relocation.
|
4085 |
|
|
|
4086 |
|
|
-- : BFD_ARELOC_BFIN_DIV
|
4087 |
|
|
ADI Blackfin arithmetic relocation.
|
4088 |
|
|
|
4089 |
|
|
-- : BFD_ARELOC_BFIN_MOD
|
4090 |
|
|
ADI Blackfin arithmetic relocation.
|
4091 |
|
|
|
4092 |
|
|
-- : BFD_ARELOC_BFIN_LSHIFT
|
4093 |
|
|
ADI Blackfin arithmetic relocation.
|
4094 |
|
|
|
4095 |
|
|
-- : BFD_ARELOC_BFIN_RSHIFT
|
4096 |
|
|
ADI Blackfin arithmetic relocation.
|
4097 |
|
|
|
4098 |
|
|
-- : BFD_ARELOC_BFIN_AND
|
4099 |
|
|
ADI Blackfin arithmetic relocation.
|
4100 |
|
|
|
4101 |
|
|
-- : BFD_ARELOC_BFIN_OR
|
4102 |
|
|
ADI Blackfin arithmetic relocation.
|
4103 |
|
|
|
4104 |
|
|
-- : BFD_ARELOC_BFIN_XOR
|
4105 |
|
|
ADI Blackfin arithmetic relocation.
|
4106 |
|
|
|
4107 |
|
|
-- : BFD_ARELOC_BFIN_LAND
|
4108 |
|
|
ADI Blackfin arithmetic relocation.
|
4109 |
|
|
|
4110 |
|
|
-- : BFD_ARELOC_BFIN_LOR
|
4111 |
|
|
ADI Blackfin arithmetic relocation.
|
4112 |
|
|
|
4113 |
|
|
-- : BFD_ARELOC_BFIN_LEN
|
4114 |
|
|
ADI Blackfin arithmetic relocation.
|
4115 |
|
|
|
4116 |
|
|
-- : BFD_ARELOC_BFIN_NEG
|
4117 |
|
|
ADI Blackfin arithmetic relocation.
|
4118 |
|
|
|
4119 |
|
|
-- : BFD_ARELOC_BFIN_COMP
|
4120 |
|
|
ADI Blackfin arithmetic relocation.
|
4121 |
|
|
|
4122 |
|
|
-- : BFD_ARELOC_BFIN_PAGE
|
4123 |
|
|
ADI Blackfin arithmetic relocation.
|
4124 |
|
|
|
4125 |
|
|
-- : BFD_ARELOC_BFIN_HWPAGE
|
4126 |
|
|
ADI Blackfin arithmetic relocation.
|
4127 |
|
|
|
4128 |
|
|
-- : BFD_ARELOC_BFIN_ADDR
|
4129 |
|
|
ADI Blackfin arithmetic relocation.
|
4130 |
|
|
|
4131 |
|
|
-- : BFD_RELOC_D10V_10_PCREL_R
|
4132 |
|
|
Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2
|
4133 |
|
|
bits assumed to be 0.
|
4134 |
|
|
|
4135 |
|
|
-- : BFD_RELOC_D10V_10_PCREL_L
|
4136 |
|
|
Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2
|
4137 |
|
|
bits assumed to be 0. This is the same as the previous reloc
|
4138 |
|
|
except it is in the left container, i.e., shifted left 15 bits.
|
4139 |
|
|
|
4140 |
|
|
-- : BFD_RELOC_D10V_18
|
4141 |
|
|
This is an 18-bit reloc with the right 2 bits assumed to be 0.
|
4142 |
|
|
|
4143 |
|
|
-- : BFD_RELOC_D10V_18_PCREL
|
4144 |
|
|
This is an 18-bit reloc with the right 2 bits assumed to be 0.
|
4145 |
|
|
|
4146 |
|
|
-- : BFD_RELOC_D30V_6
|
4147 |
|
|
Mitsubishi D30V relocs. This is a 6-bit absolute reloc.
|
4148 |
|
|
|
4149 |
|
|
-- : BFD_RELOC_D30V_9_PCREL
|
4150 |
|
|
This is a 6-bit pc-relative reloc with the right 3 bits assumed to
|
4151 |
|
|
be 0.
|
4152 |
|
|
|
4153 |
|
|
-- : BFD_RELOC_D30V_9_PCREL_R
|
4154 |
|
|
This is a 6-bit pc-relative reloc with the right 3 bits assumed to
|
4155 |
|
|
be 0. Same as the previous reloc but on the right side of the
|
4156 |
|
|
container.
|
4157 |
|
|
|
4158 |
|
|
-- : BFD_RELOC_D30V_15
|
4159 |
|
|
This is a 12-bit absolute reloc with the right 3 bitsassumed to be
|
4160 |
|
|
0.
|
4161 |
|
|
|
4162 |
|
|
-- : BFD_RELOC_D30V_15_PCREL
|
4163 |
|
|
This is a 12-bit pc-relative reloc with the right 3 bits assumed
|
4164 |
|
|
to be 0.
|
4165 |
|
|
|
4166 |
|
|
-- : BFD_RELOC_D30V_15_PCREL_R
|
4167 |
|
|
This is a 12-bit pc-relative reloc with the right 3 bits assumed
|
4168 |
|
|
to be 0. Same as the previous reloc but on the right side of the
|
4169 |
|
|
container.
|
4170 |
|
|
|
4171 |
|
|
-- : BFD_RELOC_D30V_21
|
4172 |
|
|
This is an 18-bit absolute reloc with the right 3 bits assumed to
|
4173 |
|
|
be 0.
|
4174 |
|
|
|
4175 |
|
|
-- : BFD_RELOC_D30V_21_PCREL
|
4176 |
|
|
This is an 18-bit pc-relative reloc with the right 3 bits assumed
|
4177 |
|
|
to be 0.
|
4178 |
|
|
|
4179 |
|
|
-- : BFD_RELOC_D30V_21_PCREL_R
|
4180 |
|
|
This is an 18-bit pc-relative reloc with the right 3 bits assumed
|
4181 |
|
|
to be 0. Same as the previous reloc but on the right side of the
|
4182 |
|
|
container.
|
4183 |
|
|
|
4184 |
|
|
-- : BFD_RELOC_D30V_32
|
4185 |
|
|
This is a 32-bit absolute reloc.
|
4186 |
|
|
|
4187 |
|
|
-- : BFD_RELOC_D30V_32_PCREL
|
4188 |
|
|
This is a 32-bit pc-relative reloc.
|
4189 |
|
|
|
4190 |
|
|
-- : BFD_RELOC_DLX_HI16_S
|
4191 |
|
|
DLX relocs
|
4192 |
|
|
|
4193 |
|
|
-- : BFD_RELOC_DLX_LO16
|
4194 |
|
|
DLX relocs
|
4195 |
|
|
|
4196 |
|
|
-- : BFD_RELOC_DLX_JMP26
|
4197 |
|
|
DLX relocs
|
4198 |
|
|
|
4199 |
|
|
-- : BFD_RELOC_M32C_HI8
|
4200 |
|
|
-- : BFD_RELOC_M32C_RL_JUMP
|
4201 |
|
|
-- : BFD_RELOC_M32C_RL_1ADDR
|
4202 |
|
|
-- : BFD_RELOC_M32C_RL_2ADDR
|
4203 |
|
|
Renesas M16C/M32C Relocations.
|
4204 |
|
|
|
4205 |
|
|
-- : BFD_RELOC_M32R_24
|
4206 |
|
|
Renesas M32R (formerly Mitsubishi M32R) relocs. This is a 24 bit
|
4207 |
|
|
absolute address.
|
4208 |
|
|
|
4209 |
|
|
-- : BFD_RELOC_M32R_10_PCREL
|
4210 |
|
|
This is a 10-bit pc-relative reloc with the right 2 bits assumed
|
4211 |
|
|
to be 0.
|
4212 |
|
|
|
4213 |
|
|
-- : BFD_RELOC_M32R_18_PCREL
|
4214 |
|
|
This is an 18-bit reloc with the right 2 bits assumed to be 0.
|
4215 |
|
|
|
4216 |
|
|
-- : BFD_RELOC_M32R_26_PCREL
|
4217 |
|
|
This is a 26-bit reloc with the right 2 bits assumed to be 0.
|
4218 |
|
|
|
4219 |
|
|
-- : BFD_RELOC_M32R_HI16_ULO
|
4220 |
|
|
This is a 16-bit reloc containing the high 16 bits of an address
|
4221 |
|
|
used when the lower 16 bits are treated as unsigned.
|
4222 |
|
|
|
4223 |
|
|
-- : BFD_RELOC_M32R_HI16_SLO
|
4224 |
|
|
This is a 16-bit reloc containing the high 16 bits of an address
|
4225 |
|
|
used when the lower 16 bits are treated as signed.
|
4226 |
|
|
|
4227 |
|
|
-- : BFD_RELOC_M32R_LO16
|
4228 |
|
|
This is a 16-bit reloc containing the lower 16 bits of an address.
|
4229 |
|
|
|
4230 |
|
|
-- : BFD_RELOC_M32R_SDA16
|
4231 |
|
|
This is a 16-bit reloc containing the small data area offset for
|
4232 |
|
|
use in add3, load, and store instructions.
|
4233 |
|
|
|
4234 |
|
|
-- : BFD_RELOC_M32R_GOT24
|
4235 |
|
|
-- : BFD_RELOC_M32R_26_PLTREL
|
4236 |
|
|
-- : BFD_RELOC_M32R_COPY
|
4237 |
|
|
-- : BFD_RELOC_M32R_GLOB_DAT
|
4238 |
|
|
-- : BFD_RELOC_M32R_JMP_SLOT
|
4239 |
|
|
-- : BFD_RELOC_M32R_RELATIVE
|
4240 |
|
|
-- : BFD_RELOC_M32R_GOTOFF
|
4241 |
|
|
-- : BFD_RELOC_M32R_GOTOFF_HI_ULO
|
4242 |
|
|
-- : BFD_RELOC_M32R_GOTOFF_HI_SLO
|
4243 |
|
|
-- : BFD_RELOC_M32R_GOTOFF_LO
|
4244 |
|
|
-- : BFD_RELOC_M32R_GOTPC24
|
4245 |
|
|
-- : BFD_RELOC_M32R_GOT16_HI_ULO
|
4246 |
|
|
-- : BFD_RELOC_M32R_GOT16_HI_SLO
|
4247 |
|
|
-- : BFD_RELOC_M32R_GOT16_LO
|
4248 |
|
|
-- : BFD_RELOC_M32R_GOTPC_HI_ULO
|
4249 |
|
|
-- : BFD_RELOC_M32R_GOTPC_HI_SLO
|
4250 |
|
|
-- : BFD_RELOC_M32R_GOTPC_LO
|
4251 |
|
|
For PIC.
|
4252 |
|
|
|
4253 |
|
|
-- : BFD_RELOC_V850_9_PCREL
|
4254 |
|
|
This is a 9-bit reloc
|
4255 |
|
|
|
4256 |
|
|
-- : BFD_RELOC_V850_22_PCREL
|
4257 |
|
|
This is a 22-bit reloc
|
4258 |
|
|
|
4259 |
|
|
-- : BFD_RELOC_V850_SDA_16_16_OFFSET
|
4260 |
|
|
This is a 16 bit offset from the short data area pointer.
|
4261 |
|
|
|
4262 |
|
|
-- : BFD_RELOC_V850_SDA_15_16_OFFSET
|
4263 |
|
|
This is a 16 bit offset (of which only 15 bits are used) from the
|
4264 |
|
|
short data area pointer.
|
4265 |
|
|
|
4266 |
|
|
-- : BFD_RELOC_V850_ZDA_16_16_OFFSET
|
4267 |
|
|
This is a 16 bit offset from the zero data area pointer.
|
4268 |
|
|
|
4269 |
|
|
-- : BFD_RELOC_V850_ZDA_15_16_OFFSET
|
4270 |
|
|
This is a 16 bit offset (of which only 15 bits are used) from the
|
4271 |
|
|
zero data area pointer.
|
4272 |
|
|
|
4273 |
|
|
-- : BFD_RELOC_V850_TDA_6_8_OFFSET
|
4274 |
|
|
This is an 8 bit offset (of which only 6 bits are used) from the
|
4275 |
|
|
tiny data area pointer.
|
4276 |
|
|
|
4277 |
|
|
-- : BFD_RELOC_V850_TDA_7_8_OFFSET
|
4278 |
|
|
This is an 8bit offset (of which only 7 bits are used) from the
|
4279 |
|
|
tiny data area pointer.
|
4280 |
|
|
|
4281 |
|
|
-- : BFD_RELOC_V850_TDA_7_7_OFFSET
|
4282 |
|
|
This is a 7 bit offset from the tiny data area pointer.
|
4283 |
|
|
|
4284 |
|
|
-- : BFD_RELOC_V850_TDA_16_16_OFFSET
|
4285 |
|
|
This is a 16 bit offset from the tiny data area pointer.
|
4286 |
|
|
|
4287 |
|
|
-- : BFD_RELOC_V850_TDA_4_5_OFFSET
|
4288 |
|
|
This is a 5 bit offset (of which only 4 bits are used) from the
|
4289 |
|
|
tiny data area pointer.
|
4290 |
|
|
|
4291 |
|
|
-- : BFD_RELOC_V850_TDA_4_4_OFFSET
|
4292 |
|
|
This is a 4 bit offset from the tiny data area pointer.
|
4293 |
|
|
|
4294 |
|
|
-- : BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
|
4295 |
|
|
This is a 16 bit offset from the short data area pointer, with the
|
4296 |
|
|
bits placed non-contiguously in the instruction.
|
4297 |
|
|
|
4298 |
|
|
-- : BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
|
4299 |
|
|
This is a 16 bit offset from the zero data area pointer, with the
|
4300 |
|
|
bits placed non-contiguously in the instruction.
|
4301 |
|
|
|
4302 |
|
|
-- : BFD_RELOC_V850_CALLT_6_7_OFFSET
|
4303 |
|
|
This is a 6 bit offset from the call table base pointer.
|
4304 |
|
|
|
4305 |
|
|
-- : BFD_RELOC_V850_CALLT_16_16_OFFSET
|
4306 |
|
|
This is a 16 bit offset from the call table base pointer.
|
4307 |
|
|
|
4308 |
|
|
-- : BFD_RELOC_V850_LONGCALL
|
4309 |
|
|
Used for relaxing indirect function calls.
|
4310 |
|
|
|
4311 |
|
|
-- : BFD_RELOC_V850_LONGJUMP
|
4312 |
|
|
Used for relaxing indirect jumps.
|
4313 |
|
|
|
4314 |
|
|
-- : BFD_RELOC_V850_ALIGN
|
4315 |
|
|
Used to maintain alignment whilst relaxing.
|
4316 |
|
|
|
4317 |
|
|
-- : BFD_RELOC_V850_LO16_SPLIT_OFFSET
|
4318 |
|
|
This is a variation of BFD_RELOC_LO16 that can be used in v850e
|
4319 |
|
|
ld.bu instructions.
|
4320 |
|
|
|
4321 |
|
|
-- : BFD_RELOC_MN10300_32_PCREL
|
4322 |
|
|
This is a 32bit pcrel reloc for the mn10300, offset by two bytes
|
4323 |
|
|
in the instruction.
|
4324 |
|
|
|
4325 |
|
|
-- : BFD_RELOC_MN10300_16_PCREL
|
4326 |
|
|
This is a 16bit pcrel reloc for the mn10300, offset by two bytes
|
4327 |
|
|
in the instruction.
|
4328 |
|
|
|
4329 |
|
|
-- : BFD_RELOC_TIC30_LDP
|
4330 |
|
|
This is a 8bit DP reloc for the tms320c30, where the most
|
4331 |
|
|
significant 8 bits of a 24 bit word are placed into the least
|
4332 |
|
|
significant 8 bits of the opcode.
|
4333 |
|
|
|
4334 |
|
|
-- : BFD_RELOC_TIC54X_PARTLS7
|
4335 |
|
|
This is a 7bit reloc for the tms320c54x, where the least
|
4336 |
|
|
significant 7 bits of a 16 bit word are placed into the least
|
4337 |
|
|
significant 7 bits of the opcode.
|
4338 |
|
|
|
4339 |
|
|
-- : BFD_RELOC_TIC54X_PARTMS9
|
4340 |
|
|
This is a 9bit DP reloc for the tms320c54x, where the most
|
4341 |
|
|
significant 9 bits of a 16 bit word are placed into the least
|
4342 |
|
|
significant 9 bits of the opcode.
|
4343 |
|
|
|
4344 |
|
|
-- : BFD_RELOC_TIC54X_23
|
4345 |
|
|
This is an extended address 23-bit reloc for the tms320c54x.
|
4346 |
|
|
|
4347 |
|
|
-- : BFD_RELOC_TIC54X_16_OF_23
|
4348 |
|
|
This is a 16-bit reloc for the tms320c54x, where the least
|
4349 |
|
|
significant 16 bits of a 23-bit extended address are placed into
|
4350 |
|
|
the opcode.
|
4351 |
|
|
|
4352 |
|
|
-- : BFD_RELOC_TIC54X_MS7_OF_23
|
4353 |
|
|
This is a reloc for the tms320c54x, where the most significant 7
|
4354 |
|
|
bits of a 23-bit extended address are placed into the opcode.
|
4355 |
|
|
|
4356 |
|
|
-- : BFD_RELOC_FR30_48
|
4357 |
|
|
This is a 48 bit reloc for the FR30 that stores 32 bits.
|
4358 |
|
|
|
4359 |
|
|
-- : BFD_RELOC_FR30_20
|
4360 |
|
|
This is a 32 bit reloc for the FR30 that stores 20 bits split up
|
4361 |
|
|
into two sections.
|
4362 |
|
|
|
4363 |
|
|
-- : BFD_RELOC_FR30_6_IN_4
|
4364 |
|
|
This is a 16 bit reloc for the FR30 that stores a 6 bit word
|
4365 |
|
|
offset in 4 bits.
|
4366 |
|
|
|
4367 |
|
|
-- : BFD_RELOC_FR30_8_IN_8
|
4368 |
|
|
This is a 16 bit reloc for the FR30 that stores an 8 bit byte
|
4369 |
|
|
offset into 8 bits.
|
4370 |
|
|
|
4371 |
|
|
-- : BFD_RELOC_FR30_9_IN_8
|
4372 |
|
|
This is a 16 bit reloc for the FR30 that stores a 9 bit short
|
4373 |
|
|
offset into 8 bits.
|
4374 |
|
|
|
4375 |
|
|
-- : BFD_RELOC_FR30_10_IN_8
|
4376 |
|
|
This is a 16 bit reloc for the FR30 that stores a 10 bit word
|
4377 |
|
|
offset into 8 bits.
|
4378 |
|
|
|
4379 |
|
|
-- : BFD_RELOC_FR30_9_PCREL
|
4380 |
|
|
This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
|
4381 |
|
|
short offset into 8 bits.
|
4382 |
|
|
|
4383 |
|
|
-- : BFD_RELOC_FR30_12_PCREL
|
4384 |
|
|
This is a 16 bit reloc for the FR30 that stores a 12 bit pc
|
4385 |
|
|
relative short offset into 11 bits.
|
4386 |
|
|
|
4387 |
|
|
-- : BFD_RELOC_MCORE_PCREL_IMM8BY4
|
4388 |
|
|
-- : BFD_RELOC_MCORE_PCREL_IMM11BY2
|
4389 |
|
|
-- : BFD_RELOC_MCORE_PCREL_IMM4BY2
|
4390 |
|
|
-- : BFD_RELOC_MCORE_PCREL_32
|
4391 |
|
|
-- : BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
|
4392 |
|
|
-- : BFD_RELOC_MCORE_RVA
|
4393 |
|
|
Motorola Mcore relocations.
|
4394 |
|
|
|
4395 |
|
|
-- : BFD_RELOC_MEP_8
|
4396 |
|
|
-- : BFD_RELOC_MEP_16
|
4397 |
|
|
-- : BFD_RELOC_MEP_32
|
4398 |
|
|
-- : BFD_RELOC_MEP_PCREL8A2
|
4399 |
|
|
-- : BFD_RELOC_MEP_PCREL12A2
|
4400 |
|
|
-- : BFD_RELOC_MEP_PCREL17A2
|
4401 |
|
|
-- : BFD_RELOC_MEP_PCREL24A2
|
4402 |
|
|
-- : BFD_RELOC_MEP_PCABS24A2
|
4403 |
|
|
-- : BFD_RELOC_MEP_LOW16
|
4404 |
|
|
-- : BFD_RELOC_MEP_HI16U
|
4405 |
|
|
-- : BFD_RELOC_MEP_HI16S
|
4406 |
|
|
-- : BFD_RELOC_MEP_GPREL
|
4407 |
|
|
-- : BFD_RELOC_MEP_TPREL
|
4408 |
|
|
-- : BFD_RELOC_MEP_TPREL7
|
4409 |
|
|
-- : BFD_RELOC_MEP_TPREL7A2
|
4410 |
|
|
-- : BFD_RELOC_MEP_TPREL7A4
|
4411 |
|
|
-- : BFD_RELOC_MEP_UIMM24
|
4412 |
|
|
-- : BFD_RELOC_MEP_ADDR24A4
|
4413 |
|
|
-- : BFD_RELOC_MEP_GNU_VTINHERIT
|
4414 |
|
|
-- : BFD_RELOC_MEP_GNU_VTENTRY
|
4415 |
|
|
Toshiba Media Processor Relocations.
|
4416 |
|
|
|
4417 |
|
|
-- : BFD_RELOC_MMIX_GETA
|
4418 |
|
|
-- : BFD_RELOC_MMIX_GETA_1
|
4419 |
|
|
-- : BFD_RELOC_MMIX_GETA_2
|
4420 |
|
|
-- : BFD_RELOC_MMIX_GETA_3
|
4421 |
|
|
These are relocations for the GETA instruction.
|
4422 |
|
|
|
4423 |
|
|
-- : BFD_RELOC_MMIX_CBRANCH
|
4424 |
|
|
-- : BFD_RELOC_MMIX_CBRANCH_J
|
4425 |
|
|
-- : BFD_RELOC_MMIX_CBRANCH_1
|
4426 |
|
|
-- : BFD_RELOC_MMIX_CBRANCH_2
|
4427 |
|
|
-- : BFD_RELOC_MMIX_CBRANCH_3
|
4428 |
|
|
These are relocations for a conditional branch instruction.
|
4429 |
|
|
|
4430 |
|
|
-- : BFD_RELOC_MMIX_PUSHJ
|
4431 |
|
|
-- : BFD_RELOC_MMIX_PUSHJ_1
|
4432 |
|
|
-- : BFD_RELOC_MMIX_PUSHJ_2
|
4433 |
|
|
-- : BFD_RELOC_MMIX_PUSHJ_3
|
4434 |
|
|
-- : BFD_RELOC_MMIX_PUSHJ_STUBBABLE
|
4435 |
|
|
These are relocations for the PUSHJ instruction.
|
4436 |
|
|
|
4437 |
|
|
-- : BFD_RELOC_MMIX_JMP
|
4438 |
|
|
-- : BFD_RELOC_MMIX_JMP_1
|
4439 |
|
|
-- : BFD_RELOC_MMIX_JMP_2
|
4440 |
|
|
-- : BFD_RELOC_MMIX_JMP_3
|
4441 |
|
|
These are relocations for the JMP instruction.
|
4442 |
|
|
|
4443 |
|
|
-- : BFD_RELOC_MMIX_ADDR19
|
4444 |
|
|
This is a relocation for a relative address as in a GETA
|
4445 |
|
|
instruction or a branch.
|
4446 |
|
|
|
4447 |
|
|
-- : BFD_RELOC_MMIX_ADDR27
|
4448 |
|
|
This is a relocation for a relative address as in a JMP
|
4449 |
|
|
instruction.
|
4450 |
|
|
|
4451 |
|
|
-- : BFD_RELOC_MMIX_REG_OR_BYTE
|
4452 |
|
|
This is a relocation for an instruction field that may be a general
|
4453 |
|
|
register or a value 0..255.
|
4454 |
|
|
|
4455 |
|
|
-- : BFD_RELOC_MMIX_REG
|
4456 |
|
|
This is a relocation for an instruction field that may be a general
|
4457 |
|
|
register.
|
4458 |
|
|
|
4459 |
|
|
-- : BFD_RELOC_MMIX_BASE_PLUS_OFFSET
|
4460 |
|
|
This is a relocation for two instruction fields holding a register
|
4461 |
|
|
and an offset, the equivalent of the relocation.
|
4462 |
|
|
|
4463 |
|
|
-- : BFD_RELOC_MMIX_LOCAL
|
4464 |
|
|
This relocation is an assertion that the expression is not
|
4465 |
|
|
allocated as a global register. It does not modify contents.
|
4466 |
|
|
|
4467 |
|
|
-- : BFD_RELOC_AVR_7_PCREL
|
4468 |
|
|
This is a 16 bit reloc for the AVR that stores 8 bit pc relative
|
4469 |
|
|
short offset into 7 bits.
|
4470 |
|
|
|
4471 |
|
|
-- : BFD_RELOC_AVR_13_PCREL
|
4472 |
|
|
This is a 16 bit reloc for the AVR that stores 13 bit pc relative
|
4473 |
|
|
short offset into 12 bits.
|
4474 |
|
|
|
4475 |
|
|
-- : BFD_RELOC_AVR_16_PM
|
4476 |
|
|
This is a 16 bit reloc for the AVR that stores 17 bit value
|
4477 |
|
|
(usually program memory address) into 16 bits.
|
4478 |
|
|
|
4479 |
|
|
-- : BFD_RELOC_AVR_LO8_LDI
|
4480 |
|
|
This is a 16 bit reloc for the AVR that stores 8 bit value (usually
|
4481 |
|
|
data memory address) into 8 bit immediate value of LDI insn.
|
4482 |
|
|
|
4483 |
|
|
-- : BFD_RELOC_AVR_HI8_LDI
|
4484 |
|
|
This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
|
4485 |
|
|
bit of data memory address) into 8 bit immediate value of LDI insn.
|
4486 |
|
|
|
4487 |
|
|
-- : BFD_RELOC_AVR_HH8_LDI
|
4488 |
|
|
This is a 16 bit reloc for the AVR that stores 8 bit value (most
|
4489 |
|
|
high 8 bit of program memory address) into 8 bit immediate value
|
4490 |
|
|
of LDI insn.
|
4491 |
|
|
|
4492 |
|
|
-- : BFD_RELOC_AVR_MS8_LDI
|
4493 |
|
|
This is a 16 bit reloc for the AVR that stores 8 bit value (most
|
4494 |
|
|
high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.
|
4495 |
|
|
|
4496 |
|
|
-- : BFD_RELOC_AVR_LO8_LDI_NEG
|
4497 |
|
|
This is a 16 bit reloc for the AVR that stores negated 8 bit value
|
4498 |
|
|
(usually data memory address) into 8 bit immediate value of SUBI
|
4499 |
|
|
insn.
|
4500 |
|
|
|
4501 |
|
|
-- : BFD_RELOC_AVR_HI8_LDI_NEG
|
4502 |
|
|
This is a 16 bit reloc for the AVR that stores negated 8 bit value
|
4503 |
|
|
(high 8 bit of data memory address) into 8 bit immediate value of
|
4504 |
|
|
SUBI insn.
|
4505 |
|
|
|
4506 |
|
|
-- : BFD_RELOC_AVR_HH8_LDI_NEG
|
4507 |
|
|
This is a 16 bit reloc for the AVR that stores negated 8 bit value
|
4508 |
|
|
(most high 8 bit of program memory address) into 8 bit immediate
|
4509 |
|
|
value of LDI or SUBI insn.
|
4510 |
|
|
|
4511 |
|
|
-- : BFD_RELOC_AVR_MS8_LDI_NEG
|
4512 |
|
|
This is a 16 bit reloc for the AVR that stores negated 8 bit value
|
4513 |
|
|
(msb of 32 bit value) into 8 bit immediate value of LDI insn.
|
4514 |
|
|
|
4515 |
|
|
-- : BFD_RELOC_AVR_LO8_LDI_PM
|
4516 |
|
|
This is a 16 bit reloc for the AVR that stores 8 bit value (usually
|
4517 |
|
|
command address) into 8 bit immediate value of LDI insn.
|
4518 |
|
|
|
4519 |
|
|
-- : BFD_RELOC_AVR_LO8_LDI_GS
|
4520 |
|
|
This is a 16 bit reloc for the AVR that stores 8 bit value
|
4521 |
|
|
(command address) into 8 bit immediate value of LDI insn. If the
|
4522 |
|
|
address is beyond the 128k boundary, the linker inserts a jump
|
4523 |
|
|
stub for this reloc in the lower 128k.
|
4524 |
|
|
|
4525 |
|
|
-- : BFD_RELOC_AVR_HI8_LDI_PM
|
4526 |
|
|
This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
|
4527 |
|
|
bit of command address) into 8 bit immediate value of LDI insn.
|
4528 |
|
|
|
4529 |
|
|
-- : BFD_RELOC_AVR_HI8_LDI_GS
|
4530 |
|
|
This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
|
4531 |
|
|
bit of command address) into 8 bit immediate value of LDI insn.
|
4532 |
|
|
If the address is beyond the 128k boundary, the linker inserts a
|
4533 |
|
|
jump stub for this reloc below 128k.
|
4534 |
|
|
|
4535 |
|
|
-- : BFD_RELOC_AVR_HH8_LDI_PM
|
4536 |
|
|
This is a 16 bit reloc for the AVR that stores 8 bit value (most
|
4537 |
|
|
high 8 bit of command address) into 8 bit immediate value of LDI
|
4538 |
|
|
insn.
|
4539 |
|
|
|
4540 |
|
|
-- : BFD_RELOC_AVR_LO8_LDI_PM_NEG
|
4541 |
|
|
This is a 16 bit reloc for the AVR that stores negated 8 bit value
|
4542 |
|
|
(usually command address) into 8 bit immediate value of SUBI insn.
|
4543 |
|
|
|
4544 |
|
|
-- : BFD_RELOC_AVR_HI8_LDI_PM_NEG
|
4545 |
|
|
This is a 16 bit reloc for the AVR that stores negated 8 bit value
|
4546 |
|
|
(high 8 bit of 16 bit command address) into 8 bit immediate value
|
4547 |
|
|
of SUBI insn.
|
4548 |
|
|
|
4549 |
|
|
-- : BFD_RELOC_AVR_HH8_LDI_PM_NEG
|
4550 |
|
|
This is a 16 bit reloc for the AVR that stores negated 8 bit value
|
4551 |
|
|
(high 6 bit of 22 bit command address) into 8 bit immediate value
|
4552 |
|
|
of SUBI insn.
|
4553 |
|
|
|
4554 |
|
|
-- : BFD_RELOC_AVR_CALL
|
4555 |
|
|
This is a 32 bit reloc for the AVR that stores 23 bit value into
|
4556 |
|
|
22 bits.
|
4557 |
|
|
|
4558 |
|
|
-- : BFD_RELOC_AVR_LDI
|
4559 |
|
|
This is a 16 bit reloc for the AVR that stores all needed bits for
|
4560 |
|
|
absolute addressing with ldi with overflow check to linktime
|
4561 |
|
|
|
4562 |
|
|
-- : BFD_RELOC_AVR_6
|
4563 |
|
|
This is a 6 bit reloc for the AVR that stores offset for ldd/std
|
4564 |
|
|
instructions
|
4565 |
|
|
|
4566 |
|
|
-- : BFD_RELOC_AVR_6_ADIW
|
4567 |
|
|
This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
|
4568 |
|
|
instructions
|
4569 |
|
|
|
4570 |
|
|
-- : BFD_RELOC_390_12
|
4571 |
|
|
Direct 12 bit.
|
4572 |
|
|
|
4573 |
|
|
-- : BFD_RELOC_390_GOT12
|
4574 |
|
|
12 bit GOT offset.
|
4575 |
|
|
|
4576 |
|
|
-- : BFD_RELOC_390_PLT32
|
4577 |
|
|
32 bit PC relative PLT address.
|
4578 |
|
|
|
4579 |
|
|
-- : BFD_RELOC_390_COPY
|
4580 |
|
|
Copy symbol at runtime.
|
4581 |
|
|
|
4582 |
|
|
-- : BFD_RELOC_390_GLOB_DAT
|
4583 |
|
|
Create GOT entry.
|
4584 |
|
|
|
4585 |
|
|
-- : BFD_RELOC_390_JMP_SLOT
|
4586 |
|
|
Create PLT entry.
|
4587 |
|
|
|
4588 |
|
|
-- : BFD_RELOC_390_RELATIVE
|
4589 |
|
|
Adjust by program base.
|
4590 |
|
|
|
4591 |
|
|
-- : BFD_RELOC_390_GOTPC
|
4592 |
|
|
32 bit PC relative offset to GOT.
|
4593 |
|
|
|
4594 |
|
|
-- : BFD_RELOC_390_GOT16
|
4595 |
|
|
16 bit GOT offset.
|
4596 |
|
|
|
4597 |
|
|
-- : BFD_RELOC_390_PC16DBL
|
4598 |
|
|
PC relative 16 bit shifted by 1.
|
4599 |
|
|
|
4600 |
|
|
-- : BFD_RELOC_390_PLT16DBL
|
4601 |
|
|
16 bit PC rel. PLT shifted by 1.
|
4602 |
|
|
|
4603 |
|
|
-- : BFD_RELOC_390_PC32DBL
|
4604 |
|
|
PC relative 32 bit shifted by 1.
|
4605 |
|
|
|
4606 |
|
|
-- : BFD_RELOC_390_PLT32DBL
|
4607 |
|
|
32 bit PC rel. PLT shifted by 1.
|
4608 |
|
|
|
4609 |
|
|
-- : BFD_RELOC_390_GOTPCDBL
|
4610 |
|
|
32 bit PC rel. GOT shifted by 1.
|
4611 |
|
|
|
4612 |
|
|
-- : BFD_RELOC_390_GOT64
|
4613 |
|
|
64 bit GOT offset.
|
4614 |
|
|
|
4615 |
|
|
-- : BFD_RELOC_390_PLT64
|
4616 |
|
|
64 bit PC relative PLT address.
|
4617 |
|
|
|
4618 |
|
|
-- : BFD_RELOC_390_GOTENT
|
4619 |
|
|
32 bit rel. offset to GOT entry.
|
4620 |
|
|
|
4621 |
|
|
-- : BFD_RELOC_390_GOTOFF64
|
4622 |
|
|
64 bit offset to GOT.
|
4623 |
|
|
|
4624 |
|
|
-- : BFD_RELOC_390_GOTPLT12
|
4625 |
|
|
12-bit offset to symbol-entry within GOT, with PLT handling.
|
4626 |
|
|
|
4627 |
|
|
-- : BFD_RELOC_390_GOTPLT16
|
4628 |
|
|
16-bit offset to symbol-entry within GOT, with PLT handling.
|
4629 |
|
|
|
4630 |
|
|
-- : BFD_RELOC_390_GOTPLT32
|
4631 |
|
|
32-bit offset to symbol-entry within GOT, with PLT handling.
|
4632 |
|
|
|
4633 |
|
|
-- : BFD_RELOC_390_GOTPLT64
|
4634 |
|
|
64-bit offset to symbol-entry within GOT, with PLT handling.
|
4635 |
|
|
|
4636 |
|
|
-- : BFD_RELOC_390_GOTPLTENT
|
4637 |
|
|
32-bit rel. offset to symbol-entry within GOT, with PLT handling.
|
4638 |
|
|
|
4639 |
|
|
-- : BFD_RELOC_390_PLTOFF16
|
4640 |
|
|
16-bit rel. offset from the GOT to a PLT entry.
|
4641 |
|
|
|
4642 |
|
|
-- : BFD_RELOC_390_PLTOFF32
|
4643 |
|
|
32-bit rel. offset from the GOT to a PLT entry.
|
4644 |
|
|
|
4645 |
|
|
-- : BFD_RELOC_390_PLTOFF64
|
4646 |
|
|
64-bit rel. offset from the GOT to a PLT entry.
|
4647 |
|
|
|
4648 |
|
|
-- : BFD_RELOC_390_TLS_LOAD
|
4649 |
|
|
-- : BFD_RELOC_390_TLS_GDCALL
|
4650 |
|
|
-- : BFD_RELOC_390_TLS_LDCALL
|
4651 |
|
|
-- : BFD_RELOC_390_TLS_GD32
|
4652 |
|
|
-- : BFD_RELOC_390_TLS_GD64
|
4653 |
|
|
-- : BFD_RELOC_390_TLS_GOTIE12
|
4654 |
|
|
-- : BFD_RELOC_390_TLS_GOTIE32
|
4655 |
|
|
-- : BFD_RELOC_390_TLS_GOTIE64
|
4656 |
|
|
-- : BFD_RELOC_390_TLS_LDM32
|
4657 |
|
|
-- : BFD_RELOC_390_TLS_LDM64
|
4658 |
|
|
-- : BFD_RELOC_390_TLS_IE32
|
4659 |
|
|
-- : BFD_RELOC_390_TLS_IE64
|
4660 |
|
|
-- : BFD_RELOC_390_TLS_IEENT
|
4661 |
|
|
-- : BFD_RELOC_390_TLS_LE32
|
4662 |
|
|
-- : BFD_RELOC_390_TLS_LE64
|
4663 |
|
|
-- : BFD_RELOC_390_TLS_LDO32
|
4664 |
|
|
-- : BFD_RELOC_390_TLS_LDO64
|
4665 |
|
|
-- : BFD_RELOC_390_TLS_DTPMOD
|
4666 |
|
|
-- : BFD_RELOC_390_TLS_DTPOFF
|
4667 |
|
|
-- : BFD_RELOC_390_TLS_TPOFF
|
4668 |
|
|
s390 tls relocations.
|
4669 |
|
|
|
4670 |
|
|
-- : BFD_RELOC_390_20
|
4671 |
|
|
-- : BFD_RELOC_390_GOT20
|
4672 |
|
|
-- : BFD_RELOC_390_GOTPLT20
|
4673 |
|
|
-- : BFD_RELOC_390_TLS_GOTIE20
|
4674 |
|
|
Long displacement extension.
|
4675 |
|
|
|
4676 |
|
|
-- : BFD_RELOC_SCORE_DUMMY1
|
4677 |
|
|
Score relocations
|
4678 |
|
|
|
4679 |
|
|
-- : BFD_RELOC_SCORE_GPREL15
|
4680 |
|
|
Low 16 bit for load/store
|
4681 |
|
|
|
4682 |
|
|
-- : BFD_RELOC_SCORE_DUMMY2
|
4683 |
|
|
-- : BFD_RELOC_SCORE_JMP
|
4684 |
|
|
This is a 24-bit reloc with the right 1 bit assumed to be 0
|
4685 |
|
|
|
4686 |
|
|
-- : BFD_RELOC_SCORE_BRANCH
|
4687 |
|
|
This is a 19-bit reloc with the right 1 bit assumed to be 0
|
4688 |
|
|
|
4689 |
|
|
-- : BFD_RELOC_SCORE16_JMP
|
4690 |
|
|
This is a 11-bit reloc with the right 1 bit assumed to be 0
|
4691 |
|
|
|
4692 |
|
|
-- : BFD_RELOC_SCORE16_BRANCH
|
4693 |
|
|
This is a 8-bit reloc with the right 1 bit assumed to be 0
|
4694 |
|
|
|
4695 |
|
|
-- : BFD_RELOC_SCORE_GOT15
|
4696 |
|
|
-- : BFD_RELOC_SCORE_GOT_LO16
|
4697 |
|
|
-- : BFD_RELOC_SCORE_CALL15
|
4698 |
|
|
-- : BFD_RELOC_SCORE_DUMMY_HI16
|
4699 |
|
|
Undocumented Score relocs
|
4700 |
|
|
|
4701 |
|
|
-- : BFD_RELOC_IP2K_FR9
|
4702 |
|
|
Scenix IP2K - 9-bit register number / data address
|
4703 |
|
|
|
4704 |
|
|
-- : BFD_RELOC_IP2K_BANK
|
4705 |
|
|
Scenix IP2K - 4-bit register/data bank number
|
4706 |
|
|
|
4707 |
|
|
-- : BFD_RELOC_IP2K_ADDR16CJP
|
4708 |
|
|
Scenix IP2K - low 13 bits of instruction word address
|
4709 |
|
|
|
4710 |
|
|
-- : BFD_RELOC_IP2K_PAGE3
|
4711 |
|
|
Scenix IP2K - high 3 bits of instruction word address
|
4712 |
|
|
|
4713 |
|
|
-- : BFD_RELOC_IP2K_LO8DATA
|
4714 |
|
|
-- : BFD_RELOC_IP2K_HI8DATA
|
4715 |
|
|
-- : BFD_RELOC_IP2K_EX8DATA
|
4716 |
|
|
Scenix IP2K - ext/low/high 8 bits of data address
|
4717 |
|
|
|
4718 |
|
|
-- : BFD_RELOC_IP2K_LO8INSN
|
4719 |
|
|
-- : BFD_RELOC_IP2K_HI8INSN
|
4720 |
|
|
Scenix IP2K - low/high 8 bits of instruction word address
|
4721 |
|
|
|
4722 |
|
|
-- : BFD_RELOC_IP2K_PC_SKIP
|
4723 |
|
|
Scenix IP2K - even/odd PC modifier to modify snb pcl.0
|
4724 |
|
|
|
4725 |
|
|
-- : BFD_RELOC_IP2K_TEXT
|
4726 |
|
|
Scenix IP2K - 16 bit word address in text section.
|
4727 |
|
|
|
4728 |
|
|
-- : BFD_RELOC_IP2K_FR_OFFSET
|
4729 |
|
|
Scenix IP2K - 7-bit sp or dp offset
|
4730 |
|
|
|
4731 |
|
|
-- : BFD_RELOC_VPE4KMATH_DATA
|
4732 |
|
|
-- : BFD_RELOC_VPE4KMATH_INSN
|
4733 |
|
|
Scenix VPE4K coprocessor - data/insn-space addressing
|
4734 |
|
|
|
4735 |
|
|
-- : BFD_RELOC_VTABLE_INHERIT
|
4736 |
|
|
-- : BFD_RELOC_VTABLE_ENTRY
|
4737 |
|
|
These two relocations are used by the linker to determine which of
|
4738 |
|
|
the entries in a C++ virtual function table are actually used.
|
4739 |
|
|
When the -gc-sections option is given, the linker will zero out
|
4740 |
|
|
the entries that are not used, so that the code for those
|
4741 |
|
|
functions need not be included in the output.
|
4742 |
|
|
|
4743 |
|
|
VTABLE_INHERIT is a zero-space relocation used to describe to the
|
4744 |
|
|
linker the inheritance tree of a C++ virtual function table. The
|
4745 |
|
|
relocation's symbol should be the parent class' vtable, and the
|
4746 |
|
|
relocation should be located at the child vtable.
|
4747 |
|
|
|
4748 |
|
|
VTABLE_ENTRY is a zero-space relocation that describes the use of a
|
4749 |
|
|
virtual function table entry. The reloc's symbol should refer to
|
4750 |
|
|
the table of the class mentioned in the code. Off of that base,
|
4751 |
|
|
an offset describes the entry that is being used. For Rela hosts,
|
4752 |
|
|
this offset is stored in the reloc's addend. For Rel hosts, we
|
4753 |
|
|
are forced to put this offset in the reloc's section offset.
|
4754 |
|
|
|
4755 |
|
|
-- : BFD_RELOC_IA64_IMM14
|
4756 |
|
|
-- : BFD_RELOC_IA64_IMM22
|
4757 |
|
|
-- : BFD_RELOC_IA64_IMM64
|
4758 |
|
|
-- : BFD_RELOC_IA64_DIR32MSB
|
4759 |
|
|
-- : BFD_RELOC_IA64_DIR32LSB
|
4760 |
|
|
-- : BFD_RELOC_IA64_DIR64MSB
|
4761 |
|
|
-- : BFD_RELOC_IA64_DIR64LSB
|
4762 |
|
|
-- : BFD_RELOC_IA64_GPREL22
|
4763 |
|
|
-- : BFD_RELOC_IA64_GPREL64I
|
4764 |
|
|
-- : BFD_RELOC_IA64_GPREL32MSB
|
4765 |
|
|
-- : BFD_RELOC_IA64_GPREL32LSB
|
4766 |
|
|
-- : BFD_RELOC_IA64_GPREL64MSB
|
4767 |
|
|
-- : BFD_RELOC_IA64_GPREL64LSB
|
4768 |
|
|
-- : BFD_RELOC_IA64_LTOFF22
|
4769 |
|
|
-- : BFD_RELOC_IA64_LTOFF64I
|
4770 |
|
|
-- : BFD_RELOC_IA64_PLTOFF22
|
4771 |
|
|
-- : BFD_RELOC_IA64_PLTOFF64I
|
4772 |
|
|
-- : BFD_RELOC_IA64_PLTOFF64MSB
|
4773 |
|
|
-- : BFD_RELOC_IA64_PLTOFF64LSB
|
4774 |
|
|
-- : BFD_RELOC_IA64_FPTR64I
|
4775 |
|
|
-- : BFD_RELOC_IA64_FPTR32MSB
|
4776 |
|
|
-- : BFD_RELOC_IA64_FPTR32LSB
|
4777 |
|
|
-- : BFD_RELOC_IA64_FPTR64MSB
|
4778 |
|
|
-- : BFD_RELOC_IA64_FPTR64LSB
|
4779 |
|
|
-- : BFD_RELOC_IA64_PCREL21B
|
4780 |
|
|
-- : BFD_RELOC_IA64_PCREL21BI
|
4781 |
|
|
-- : BFD_RELOC_IA64_PCREL21M
|
4782 |
|
|
-- : BFD_RELOC_IA64_PCREL21F
|
4783 |
|
|
-- : BFD_RELOC_IA64_PCREL22
|
4784 |
|
|
-- : BFD_RELOC_IA64_PCREL60B
|
4785 |
|
|
-- : BFD_RELOC_IA64_PCREL64I
|
4786 |
|
|
-- : BFD_RELOC_IA64_PCREL32MSB
|
4787 |
|
|
-- : BFD_RELOC_IA64_PCREL32LSB
|
4788 |
|
|
-- : BFD_RELOC_IA64_PCREL64MSB
|
4789 |
|
|
-- : BFD_RELOC_IA64_PCREL64LSB
|
4790 |
|
|
-- : BFD_RELOC_IA64_LTOFF_FPTR22
|
4791 |
|
|
-- : BFD_RELOC_IA64_LTOFF_FPTR64I
|
4792 |
|
|
-- : BFD_RELOC_IA64_LTOFF_FPTR32MSB
|
4793 |
|
|
-- : BFD_RELOC_IA64_LTOFF_FPTR32LSB
|
4794 |
|
|
-- : BFD_RELOC_IA64_LTOFF_FPTR64MSB
|
4795 |
|
|
-- : BFD_RELOC_IA64_LTOFF_FPTR64LSB
|
4796 |
|
|
-- : BFD_RELOC_IA64_SEGREL32MSB
|
4797 |
|
|
-- : BFD_RELOC_IA64_SEGREL32LSB
|
4798 |
|
|
-- : BFD_RELOC_IA64_SEGREL64MSB
|
4799 |
|
|
-- : BFD_RELOC_IA64_SEGREL64LSB
|
4800 |
|
|
-- : BFD_RELOC_IA64_SECREL32MSB
|
4801 |
|
|
-- : BFD_RELOC_IA64_SECREL32LSB
|
4802 |
|
|
-- : BFD_RELOC_IA64_SECREL64MSB
|
4803 |
|
|
-- : BFD_RELOC_IA64_SECREL64LSB
|
4804 |
|
|
-- : BFD_RELOC_IA64_REL32MSB
|
4805 |
|
|
-- : BFD_RELOC_IA64_REL32LSB
|
4806 |
|
|
-- : BFD_RELOC_IA64_REL64MSB
|
4807 |
|
|
-- : BFD_RELOC_IA64_REL64LSB
|
4808 |
|
|
-- : BFD_RELOC_IA64_LTV32MSB
|
4809 |
|
|
-- : BFD_RELOC_IA64_LTV32LSB
|
4810 |
|
|
-- : BFD_RELOC_IA64_LTV64MSB
|
4811 |
|
|
-- : BFD_RELOC_IA64_LTV64LSB
|
4812 |
|
|
-- : BFD_RELOC_IA64_IPLTMSB
|
4813 |
|
|
-- : BFD_RELOC_IA64_IPLTLSB
|
4814 |
|
|
-- : BFD_RELOC_IA64_COPY
|
4815 |
|
|
-- : BFD_RELOC_IA64_LTOFF22X
|
4816 |
|
|
-- : BFD_RELOC_IA64_LDXMOV
|
4817 |
|
|
-- : BFD_RELOC_IA64_TPREL14
|
4818 |
|
|
-- : BFD_RELOC_IA64_TPREL22
|
4819 |
|
|
-- : BFD_RELOC_IA64_TPREL64I
|
4820 |
|
|
-- : BFD_RELOC_IA64_TPREL64MSB
|
4821 |
|
|
-- : BFD_RELOC_IA64_TPREL64LSB
|
4822 |
|
|
-- : BFD_RELOC_IA64_LTOFF_TPREL22
|
4823 |
|
|
-- : BFD_RELOC_IA64_DTPMOD64MSB
|
4824 |
|
|
-- : BFD_RELOC_IA64_DTPMOD64LSB
|
4825 |
|
|
-- : BFD_RELOC_IA64_LTOFF_DTPMOD22
|
4826 |
|
|
-- : BFD_RELOC_IA64_DTPREL14
|
4827 |
|
|
-- : BFD_RELOC_IA64_DTPREL22
|
4828 |
|
|
-- : BFD_RELOC_IA64_DTPREL64I
|
4829 |
|
|
-- : BFD_RELOC_IA64_DTPREL32MSB
|
4830 |
|
|
-- : BFD_RELOC_IA64_DTPREL32LSB
|
4831 |
|
|
-- : BFD_RELOC_IA64_DTPREL64MSB
|
4832 |
|
|
-- : BFD_RELOC_IA64_DTPREL64LSB
|
4833 |
|
|
-- : BFD_RELOC_IA64_LTOFF_DTPREL22
|
4834 |
|
|
Intel IA64 Relocations.
|
4835 |
|
|
|
4836 |
|
|
-- : BFD_RELOC_M68HC11_HI8
|
4837 |
|
|
Motorola 68HC11 reloc. This is the 8 bit high part of an absolute
|
4838 |
|
|
address.
|
4839 |
|
|
|
4840 |
|
|
-- : BFD_RELOC_M68HC11_LO8
|
4841 |
|
|
Motorola 68HC11 reloc. This is the 8 bit low part of an absolute
|
4842 |
|
|
address.
|
4843 |
|
|
|
4844 |
|
|
-- : BFD_RELOC_M68HC11_3B
|
4845 |
|
|
Motorola 68HC11 reloc. This is the 3 bit of a value.
|
4846 |
|
|
|
4847 |
|
|
-- : BFD_RELOC_M68HC11_RL_JUMP
|
4848 |
|
|
Motorola 68HC11 reloc. This reloc marks the beginning of a
|
4849 |
|
|
jump/call instruction. It is used for linker relaxation to
|
4850 |
|
|
correctly identify beginning of instruction and change some
|
4851 |
|
|
branches to use PC-relative addressing mode.
|
4852 |
|
|
|
4853 |
|
|
-- : BFD_RELOC_M68HC11_RL_GROUP
|
4854 |
|
|
Motorola 68HC11 reloc. This reloc marks a group of several
|
4855 |
|
|
instructions that gcc generates and for which the linker
|
4856 |
|
|
relaxation pass can modify and/or remove some of them.
|
4857 |
|
|
|
4858 |
|
|
-- : BFD_RELOC_M68HC11_LO16
|
4859 |
|
|
Motorola 68HC11 reloc. This is the 16-bit lower part of an
|
4860 |
|
|
address. It is used for 'call' instruction to specify the symbol
|
4861 |
|
|
address without any special transformation (due to memory bank
|
4862 |
|
|
window).
|
4863 |
|
|
|
4864 |
|
|
-- : BFD_RELOC_M68HC11_PAGE
|
4865 |
|
|
Motorola 68HC11 reloc. This is a 8-bit reloc that specifies the
|
4866 |
|
|
page number of an address. It is used by 'call' instruction to
|
4867 |
|
|
specify the page number of the symbol.
|
4868 |
|
|
|
4869 |
|
|
-- : BFD_RELOC_M68HC11_24
|
4870 |
|
|
Motorola 68HC11 reloc. This is a 24-bit reloc that represents the
|
4871 |
|
|
address with a 16-bit value and a 8-bit page number. The symbol
|
4872 |
|
|
address is transformed to follow the 16K memory bank of 68HC12
|
4873 |
|
|
(seen as mapped in the window).
|
4874 |
|
|
|
4875 |
|
|
-- : BFD_RELOC_M68HC12_5B
|
4876 |
|
|
Motorola 68HC12 reloc. This is the 5 bits of a value.
|
4877 |
|
|
|
4878 |
|
|
-- : BFD_RELOC_16C_NUM08
|
4879 |
|
|
-- : BFD_RELOC_16C_NUM08_C
|
4880 |
|
|
-- : BFD_RELOC_16C_NUM16
|
4881 |
|
|
-- : BFD_RELOC_16C_NUM16_C
|
4882 |
|
|
-- : BFD_RELOC_16C_NUM32
|
4883 |
|
|
-- : BFD_RELOC_16C_NUM32_C
|
4884 |
|
|
-- : BFD_RELOC_16C_DISP04
|
4885 |
|
|
-- : BFD_RELOC_16C_DISP04_C
|
4886 |
|
|
-- : BFD_RELOC_16C_DISP08
|
4887 |
|
|
-- : BFD_RELOC_16C_DISP08_C
|
4888 |
|
|
-- : BFD_RELOC_16C_DISP16
|
4889 |
|
|
-- : BFD_RELOC_16C_DISP16_C
|
4890 |
|
|
-- : BFD_RELOC_16C_DISP24
|
4891 |
|
|
-- : BFD_RELOC_16C_DISP24_C
|
4892 |
|
|
-- : BFD_RELOC_16C_DISP24a
|
4893 |
|
|
-- : BFD_RELOC_16C_DISP24a_C
|
4894 |
|
|
-- : BFD_RELOC_16C_REG04
|
4895 |
|
|
-- : BFD_RELOC_16C_REG04_C
|
4896 |
|
|
-- : BFD_RELOC_16C_REG04a
|
4897 |
|
|
-- : BFD_RELOC_16C_REG04a_C
|
4898 |
|
|
-- : BFD_RELOC_16C_REG14
|
4899 |
|
|
-- : BFD_RELOC_16C_REG14_C
|
4900 |
|
|
-- : BFD_RELOC_16C_REG16
|
4901 |
|
|
-- : BFD_RELOC_16C_REG16_C
|
4902 |
|
|
-- : BFD_RELOC_16C_REG20
|
4903 |
|
|
-- : BFD_RELOC_16C_REG20_C
|
4904 |
|
|
-- : BFD_RELOC_16C_ABS20
|
4905 |
|
|
-- : BFD_RELOC_16C_ABS20_C
|
4906 |
|
|
-- : BFD_RELOC_16C_ABS24
|
4907 |
|
|
-- : BFD_RELOC_16C_ABS24_C
|
4908 |
|
|
-- : BFD_RELOC_16C_IMM04
|
4909 |
|
|
-- : BFD_RELOC_16C_IMM04_C
|
4910 |
|
|
-- : BFD_RELOC_16C_IMM16
|
4911 |
|
|
-- : BFD_RELOC_16C_IMM16_C
|
4912 |
|
|
-- : BFD_RELOC_16C_IMM20
|
4913 |
|
|
-- : BFD_RELOC_16C_IMM20_C
|
4914 |
|
|
-- : BFD_RELOC_16C_IMM24
|
4915 |
|
|
-- : BFD_RELOC_16C_IMM24_C
|
4916 |
|
|
-- : BFD_RELOC_16C_IMM32
|
4917 |
|
|
-- : BFD_RELOC_16C_IMM32_C
|
4918 |
|
|
NS CR16C Relocations.
|
4919 |
|
|
|
4920 |
|
|
-- : BFD_RELOC_CR16_NUM8
|
4921 |
|
|
-- : BFD_RELOC_CR16_NUM16
|
4922 |
|
|
-- : BFD_RELOC_CR16_NUM32
|
4923 |
|
|
-- : BFD_RELOC_CR16_NUM32a
|
4924 |
|
|
-- : BFD_RELOC_CR16_REGREL0
|
4925 |
|
|
-- : BFD_RELOC_CR16_REGREL4
|
4926 |
|
|
-- : BFD_RELOC_CR16_REGREL4a
|
4927 |
|
|
-- : BFD_RELOC_CR16_REGREL14
|
4928 |
|
|
-- : BFD_RELOC_CR16_REGREL14a
|
4929 |
|
|
-- : BFD_RELOC_CR16_REGREL16
|
4930 |
|
|
-- : BFD_RELOC_CR16_REGREL20
|
4931 |
|
|
-- : BFD_RELOC_CR16_REGREL20a
|
4932 |
|
|
-- : BFD_RELOC_CR16_ABS20
|
4933 |
|
|
-- : BFD_RELOC_CR16_ABS24
|
4934 |
|
|
-- : BFD_RELOC_CR16_IMM4
|
4935 |
|
|
-- : BFD_RELOC_CR16_IMM8
|
4936 |
|
|
-- : BFD_RELOC_CR16_IMM16
|
4937 |
|
|
-- : BFD_RELOC_CR16_IMM20
|
4938 |
|
|
-- : BFD_RELOC_CR16_IMM24
|
4939 |
|
|
-- : BFD_RELOC_CR16_IMM32
|
4940 |
|
|
-- : BFD_RELOC_CR16_IMM32a
|
4941 |
|
|
-- : BFD_RELOC_CR16_DISP4
|
4942 |
|
|
-- : BFD_RELOC_CR16_DISP8
|
4943 |
|
|
-- : BFD_RELOC_CR16_DISP16
|
4944 |
|
|
-- : BFD_RELOC_CR16_DISP20
|
4945 |
|
|
-- : BFD_RELOC_CR16_DISP24
|
4946 |
|
|
-- : BFD_RELOC_CR16_DISP24a
|
4947 |
|
|
-- : BFD_RELOC_CR16_SWITCH8
|
4948 |
|
|
-- : BFD_RELOC_CR16_SWITCH16
|
4949 |
|
|
-- : BFD_RELOC_CR16_SWITCH32
|
4950 |
|
|
NS CR16 Relocations.
|
4951 |
|
|
|
4952 |
|
|
-- : BFD_RELOC_CRX_REL4
|
4953 |
|
|
-- : BFD_RELOC_CRX_REL8
|
4954 |
|
|
-- : BFD_RELOC_CRX_REL8_CMP
|
4955 |
|
|
-- : BFD_RELOC_CRX_REL16
|
4956 |
|
|
-- : BFD_RELOC_CRX_REL24
|
4957 |
|
|
-- : BFD_RELOC_CRX_REL32
|
4958 |
|
|
-- : BFD_RELOC_CRX_REGREL12
|
4959 |
|
|
-- : BFD_RELOC_CRX_REGREL22
|
4960 |
|
|
-- : BFD_RELOC_CRX_REGREL28
|
4961 |
|
|
-- : BFD_RELOC_CRX_REGREL32
|
4962 |
|
|
-- : BFD_RELOC_CRX_ABS16
|
4963 |
|
|
-- : BFD_RELOC_CRX_ABS32
|
4964 |
|
|
-- : BFD_RELOC_CRX_NUM8
|
4965 |
|
|
-- : BFD_RELOC_CRX_NUM16
|
4966 |
|
|
-- : BFD_RELOC_CRX_NUM32
|
4967 |
|
|
-- : BFD_RELOC_CRX_IMM16
|
4968 |
|
|
-- : BFD_RELOC_CRX_IMM32
|
4969 |
|
|
-- : BFD_RELOC_CRX_SWITCH8
|
4970 |
|
|
-- : BFD_RELOC_CRX_SWITCH16
|
4971 |
|
|
-- : BFD_RELOC_CRX_SWITCH32
|
4972 |
|
|
NS CRX Relocations.
|
4973 |
|
|
|
4974 |
|
|
-- : BFD_RELOC_CRIS_BDISP8
|
4975 |
|
|
-- : BFD_RELOC_CRIS_UNSIGNED_5
|
4976 |
|
|
-- : BFD_RELOC_CRIS_SIGNED_6
|
4977 |
|
|
-- : BFD_RELOC_CRIS_UNSIGNED_6
|
4978 |
|
|
-- : BFD_RELOC_CRIS_SIGNED_8
|
4979 |
|
|
-- : BFD_RELOC_CRIS_UNSIGNED_8
|
4980 |
|
|
-- : BFD_RELOC_CRIS_SIGNED_16
|
4981 |
|
|
-- : BFD_RELOC_CRIS_UNSIGNED_16
|
4982 |
|
|
-- : BFD_RELOC_CRIS_LAPCQ_OFFSET
|
4983 |
|
|
-- : BFD_RELOC_CRIS_UNSIGNED_4
|
4984 |
|
|
These relocs are only used within the CRIS assembler. They are not
|
4985 |
|
|
(at present) written to any object files.
|
4986 |
|
|
|
4987 |
|
|
-- : BFD_RELOC_CRIS_COPY
|
4988 |
|
|
-- : BFD_RELOC_CRIS_GLOB_DAT
|
4989 |
|
|
-- : BFD_RELOC_CRIS_JUMP_SLOT
|
4990 |
|
|
-- : BFD_RELOC_CRIS_RELATIVE
|
4991 |
|
|
Relocs used in ELF shared libraries for CRIS.
|
4992 |
|
|
|
4993 |
|
|
-- : BFD_RELOC_CRIS_32_GOT
|
4994 |
|
|
32-bit offset to symbol-entry within GOT.
|
4995 |
|
|
|
4996 |
|
|
-- : BFD_RELOC_CRIS_16_GOT
|
4997 |
|
|
16-bit offset to symbol-entry within GOT.
|
4998 |
|
|
|
4999 |
|
|
-- : BFD_RELOC_CRIS_32_GOTPLT
|
5000 |
|
|
32-bit offset to symbol-entry within GOT, with PLT handling.
|
5001 |
|
|
|
5002 |
|
|
-- : BFD_RELOC_CRIS_16_GOTPLT
|
5003 |
|
|
16-bit offset to symbol-entry within GOT, with PLT handling.
|
5004 |
|
|
|
5005 |
|
|
-- : BFD_RELOC_CRIS_32_GOTREL
|
5006 |
|
|
32-bit offset to symbol, relative to GOT.
|
5007 |
|
|
|
5008 |
|
|
-- : BFD_RELOC_CRIS_32_PLT_GOTREL
|
5009 |
|
|
32-bit offset to symbol with PLT entry, relative to GOT.
|
5010 |
|
|
|
5011 |
|
|
-- : BFD_RELOC_CRIS_32_PLT_PCREL
|
5012 |
|
|
32-bit offset to symbol with PLT entry, relative to this
|
5013 |
|
|
relocation.
|
5014 |
|
|
|
5015 |
|
|
-- : BFD_RELOC_860_COPY
|
5016 |
|
|
-- : BFD_RELOC_860_GLOB_DAT
|
5017 |
|
|
-- : BFD_RELOC_860_JUMP_SLOT
|
5018 |
|
|
-- : BFD_RELOC_860_RELATIVE
|
5019 |
|
|
-- : BFD_RELOC_860_PC26
|
5020 |
|
|
-- : BFD_RELOC_860_PLT26
|
5021 |
|
|
-- : BFD_RELOC_860_PC16
|
5022 |
|
|
-- : BFD_RELOC_860_LOW0
|
5023 |
|
|
-- : BFD_RELOC_860_SPLIT0
|
5024 |
|
|
-- : BFD_RELOC_860_LOW1
|
5025 |
|
|
-- : BFD_RELOC_860_SPLIT1
|
5026 |
|
|
-- : BFD_RELOC_860_LOW2
|
5027 |
|
|
-- : BFD_RELOC_860_SPLIT2
|
5028 |
|
|
-- : BFD_RELOC_860_LOW3
|
5029 |
|
|
-- : BFD_RELOC_860_LOGOT0
|
5030 |
|
|
-- : BFD_RELOC_860_SPGOT0
|
5031 |
|
|
-- : BFD_RELOC_860_LOGOT1
|
5032 |
|
|
-- : BFD_RELOC_860_SPGOT1
|
5033 |
|
|
-- : BFD_RELOC_860_LOGOTOFF0
|
5034 |
|
|
-- : BFD_RELOC_860_SPGOTOFF0
|
5035 |
|
|
-- : BFD_RELOC_860_LOGOTOFF1
|
5036 |
|
|
-- : BFD_RELOC_860_SPGOTOFF1
|
5037 |
|
|
-- : BFD_RELOC_860_LOGOTOFF2
|
5038 |
|
|
-- : BFD_RELOC_860_LOGOTOFF3
|
5039 |
|
|
-- : BFD_RELOC_860_LOPC
|
5040 |
|
|
-- : BFD_RELOC_860_HIGHADJ
|
5041 |
|
|
-- : BFD_RELOC_860_HAGOT
|
5042 |
|
|
-- : BFD_RELOC_860_HAGOTOFF
|
5043 |
|
|
-- : BFD_RELOC_860_HAPC
|
5044 |
|
|
-- : BFD_RELOC_860_HIGH
|
5045 |
|
|
-- : BFD_RELOC_860_HIGOT
|
5046 |
|
|
-- : BFD_RELOC_860_HIGOTOFF
|
5047 |
|
|
Intel i860 Relocations.
|
5048 |
|
|
|
5049 |
|
|
-- : BFD_RELOC_OPENRISC_ABS_26
|
5050 |
|
|
-- : BFD_RELOC_OPENRISC_REL_26
|
5051 |
|
|
OpenRISC Relocations.
|
5052 |
|
|
|
5053 |
|
|
-- : BFD_RELOC_H8_DIR16A8
|
5054 |
|
|
-- : BFD_RELOC_H8_DIR16R8
|
5055 |
|
|
-- : BFD_RELOC_H8_DIR24A8
|
5056 |
|
|
-- : BFD_RELOC_H8_DIR24R8
|
5057 |
|
|
-- : BFD_RELOC_H8_DIR32A16
|
5058 |
|
|
H8 elf Relocations.
|
5059 |
|
|
|
5060 |
|
|
-- : BFD_RELOC_XSTORMY16_REL_12
|
5061 |
|
|
-- : BFD_RELOC_XSTORMY16_12
|
5062 |
|
|
-- : BFD_RELOC_XSTORMY16_24
|
5063 |
|
|
-- : BFD_RELOC_XSTORMY16_FPTR16
|
5064 |
|
|
Sony Xstormy16 Relocations.
|
5065 |
|
|
|
5066 |
|
|
-- : BFD_RELOC_RELC
|
5067 |
|
|
Self-describing complex relocations.
|
5068 |
|
|
|
5069 |
|
|
-- : BFD_RELOC_XC16X_PAG
|
5070 |
|
|
-- : BFD_RELOC_XC16X_POF
|
5071 |
|
|
-- : BFD_RELOC_XC16X_SEG
|
5072 |
|
|
-- : BFD_RELOC_XC16X_SOF
|
5073 |
|
|
Infineon Relocations.
|
5074 |
|
|
|
5075 |
|
|
-- : BFD_RELOC_VAX_GLOB_DAT
|
5076 |
|
|
-- : BFD_RELOC_VAX_JMP_SLOT
|
5077 |
|
|
-- : BFD_RELOC_VAX_RELATIVE
|
5078 |
|
|
Relocations used by VAX ELF.
|
5079 |
|
|
|
5080 |
|
|
-- : BFD_RELOC_MT_PC16
|
5081 |
|
|
Morpho MT - 16 bit immediate relocation.
|
5082 |
|
|
|
5083 |
|
|
-- : BFD_RELOC_MT_HI16
|
5084 |
|
|
Morpho MT - Hi 16 bits of an address.
|
5085 |
|
|
|
5086 |
|
|
-- : BFD_RELOC_MT_LO16
|
5087 |
|
|
Morpho MT - Low 16 bits of an address.
|
5088 |
|
|
|
5089 |
|
|
-- : BFD_RELOC_MT_GNU_VTINHERIT
|
5090 |
|
|
Morpho MT - Used to tell the linker which vtable entries are used.
|
5091 |
|
|
|
5092 |
|
|
-- : BFD_RELOC_MT_GNU_VTENTRY
|
5093 |
|
|
Morpho MT - Used to tell the linker which vtable entries are used.
|
5094 |
|
|
|
5095 |
|
|
-- : BFD_RELOC_MT_PCINSN8
|
5096 |
|
|
Morpho MT - 8 bit immediate relocation.
|
5097 |
|
|
|
5098 |
|
|
-- : BFD_RELOC_MSP430_10_PCREL
|
5099 |
|
|
-- : BFD_RELOC_MSP430_16_PCREL
|
5100 |
|
|
-- : BFD_RELOC_MSP430_16
|
5101 |
|
|
-- : BFD_RELOC_MSP430_16_PCREL_BYTE
|
5102 |
|
|
-- : BFD_RELOC_MSP430_16_BYTE
|
5103 |
|
|
-- : BFD_RELOC_MSP430_2X_PCREL
|
5104 |
|
|
-- : BFD_RELOC_MSP430_RL_PCREL
|
5105 |
|
|
msp430 specific relocation codes
|
5106 |
|
|
|
5107 |
|
|
-- : BFD_RELOC_IQ2000_OFFSET_16
|
5108 |
|
|
-- : BFD_RELOC_IQ2000_OFFSET_21
|
5109 |
|
|
-- : BFD_RELOC_IQ2000_UHI16
|
5110 |
|
|
IQ2000 Relocations.
|
5111 |
|
|
|
5112 |
|
|
-- : BFD_RELOC_XTENSA_RTLD
|
5113 |
|
|
Special Xtensa relocation used only by PLT entries in ELF shared
|
5114 |
|
|
objects to indicate that the runtime linker should set the value
|
5115 |
|
|
to one of its own internal functions or data structures.
|
5116 |
|
|
|
5117 |
|
|
-- : BFD_RELOC_XTENSA_GLOB_DAT
|
5118 |
|
|
-- : BFD_RELOC_XTENSA_JMP_SLOT
|
5119 |
|
|
-- : BFD_RELOC_XTENSA_RELATIVE
|
5120 |
|
|
Xtensa relocations for ELF shared objects.
|
5121 |
|
|
|
5122 |
|
|
-- : BFD_RELOC_XTENSA_PLT
|
5123 |
|
|
Xtensa relocation used in ELF object files for symbols that may
|
5124 |
|
|
require PLT entries. Otherwise, this is just a generic 32-bit
|
5125 |
|
|
relocation.
|
5126 |
|
|
|
5127 |
|
|
-- : BFD_RELOC_XTENSA_DIFF8
|
5128 |
|
|
-- : BFD_RELOC_XTENSA_DIFF16
|
5129 |
|
|
-- : BFD_RELOC_XTENSA_DIFF32
|
5130 |
|
|
Xtensa relocations to mark the difference of two local symbols.
|
5131 |
|
|
These are only needed to support linker relaxation and can be
|
5132 |
|
|
ignored when not relaxing. The field is set to the value of the
|
5133 |
|
|
difference assuming no relaxation. The relocation encodes the
|
5134 |
|
|
position of the first symbol so the linker can determine whether
|
5135 |
|
|
to adjust the field value.
|
5136 |
|
|
|
5137 |
|
|
-- : BFD_RELOC_XTENSA_SLOT0_OP
|
5138 |
|
|
-- : BFD_RELOC_XTENSA_SLOT1_OP
|
5139 |
|
|
-- : BFD_RELOC_XTENSA_SLOT2_OP
|
5140 |
|
|
-- : BFD_RELOC_XTENSA_SLOT3_OP
|
5141 |
|
|
-- : BFD_RELOC_XTENSA_SLOT4_OP
|
5142 |
|
|
-- : BFD_RELOC_XTENSA_SLOT5_OP
|
5143 |
|
|
-- : BFD_RELOC_XTENSA_SLOT6_OP
|
5144 |
|
|
-- : BFD_RELOC_XTENSA_SLOT7_OP
|
5145 |
|
|
-- : BFD_RELOC_XTENSA_SLOT8_OP
|
5146 |
|
|
-- : BFD_RELOC_XTENSA_SLOT9_OP
|
5147 |
|
|
-- : BFD_RELOC_XTENSA_SLOT10_OP
|
5148 |
|
|
-- : BFD_RELOC_XTENSA_SLOT11_OP
|
5149 |
|
|
-- : BFD_RELOC_XTENSA_SLOT12_OP
|
5150 |
|
|
-- : BFD_RELOC_XTENSA_SLOT13_OP
|
5151 |
|
|
-- : BFD_RELOC_XTENSA_SLOT14_OP
|
5152 |
|
|
Generic Xtensa relocations for instruction operands. Only the slot
|
5153 |
|
|
number is encoded in the relocation. The relocation applies to the
|
5154 |
|
|
last PC-relative immediate operand, or if there are no PC-relative
|
5155 |
|
|
immediates, to the last immediate operand.
|
5156 |
|
|
|
5157 |
|
|
-- : BFD_RELOC_XTENSA_SLOT0_ALT
|
5158 |
|
|
-- : BFD_RELOC_XTENSA_SLOT1_ALT
|
5159 |
|
|
-- : BFD_RELOC_XTENSA_SLOT2_ALT
|
5160 |
|
|
-- : BFD_RELOC_XTENSA_SLOT3_ALT
|
5161 |
|
|
-- : BFD_RELOC_XTENSA_SLOT4_ALT
|
5162 |
|
|
-- : BFD_RELOC_XTENSA_SLOT5_ALT
|
5163 |
|
|
-- : BFD_RELOC_XTENSA_SLOT6_ALT
|
5164 |
|
|
-- : BFD_RELOC_XTENSA_SLOT7_ALT
|
5165 |
|
|
-- : BFD_RELOC_XTENSA_SLOT8_ALT
|
5166 |
|
|
-- : BFD_RELOC_XTENSA_SLOT9_ALT
|
5167 |
|
|
-- : BFD_RELOC_XTENSA_SLOT10_ALT
|
5168 |
|
|
-- : BFD_RELOC_XTENSA_SLOT11_ALT
|
5169 |
|
|
-- : BFD_RELOC_XTENSA_SLOT12_ALT
|
5170 |
|
|
-- : BFD_RELOC_XTENSA_SLOT13_ALT
|
5171 |
|
|
-- : BFD_RELOC_XTENSA_SLOT14_ALT
|
5172 |
|
|
Alternate Xtensa relocations. Only the slot is encoded in the
|
5173 |
|
|
relocation. The meaning of these relocations is opcode-specific.
|
5174 |
|
|
|
5175 |
|
|
-- : BFD_RELOC_XTENSA_OP0
|
5176 |
|
|
-- : BFD_RELOC_XTENSA_OP1
|
5177 |
|
|
-- : BFD_RELOC_XTENSA_OP2
|
5178 |
|
|
Xtensa relocations for backward compatibility. These have all been
|
5179 |
|
|
replaced by BFD_RELOC_XTENSA_SLOT0_OP.
|
5180 |
|
|
|
5181 |
|
|
-- : BFD_RELOC_XTENSA_ASM_EXPAND
|
5182 |
|
|
Xtensa relocation to mark that the assembler expanded the
|
5183 |
|
|
instructions from an original target. The expansion size is
|
5184 |
|
|
encoded in the reloc size.
|
5185 |
|
|
|
5186 |
|
|
-- : BFD_RELOC_XTENSA_ASM_SIMPLIFY
|
5187 |
|
|
Xtensa relocation to mark that the linker should simplify
|
5188 |
|
|
assembler-expanded instructions. This is commonly used internally
|
5189 |
|
|
by the linker after analysis of a BFD_RELOC_XTENSA_ASM_EXPAND.
|
5190 |
|
|
|
5191 |
|
|
-- : BFD_RELOC_Z80_DISP8
|
5192 |
|
|
8 bit signed offset in (ix+d) or (iy+d).
|
5193 |
|
|
|
5194 |
|
|
-- : BFD_RELOC_Z8K_DISP7
|
5195 |
|
|
DJNZ offset.
|
5196 |
|
|
|
5197 |
|
|
-- : BFD_RELOC_Z8K_CALLR
|
5198 |
|
|
CALR offset.
|
5199 |
|
|
|
5200 |
|
|
-- : BFD_RELOC_Z8K_IMM4L
|
5201 |
|
|
4 bit value.
|
5202 |
|
|
|
5203 |
|
|
|
5204 |
|
|
typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
|
5205 |
|
|
|
5206 |
|
|
2.10.2.2 `bfd_reloc_type_lookup'
|
5207 |
|
|
................................
|
5208 |
|
|
|
5209 |
|
|
*Synopsis*
|
5210 |
|
|
reloc_howto_type *bfd_reloc_type_lookup
|
5211 |
|
|
(bfd *abfd, bfd_reloc_code_real_type code);
|
5212 |
|
|
reloc_howto_type *bfd_reloc_name_lookup
|
5213 |
|
|
(bfd *abfd, const char *reloc_name);
|
5214 |
|
|
*Description*
|
5215 |
|
|
Return a pointer to a howto structure which, when invoked, will perform
|
5216 |
|
|
the relocation CODE on data from the architecture noted.
|
5217 |
|
|
|
5218 |
|
|
2.10.2.3 `bfd_default_reloc_type_lookup'
|
5219 |
|
|
........................................
|
5220 |
|
|
|
5221 |
|
|
*Synopsis*
|
5222 |
|
|
reloc_howto_type *bfd_default_reloc_type_lookup
|
5223 |
|
|
(bfd *abfd, bfd_reloc_code_real_type code);
|
5224 |
|
|
*Description*
|
5225 |
|
|
Provides a default relocation lookup routine for any architecture.
|
5226 |
|
|
|
5227 |
|
|
2.10.2.4 `bfd_get_reloc_code_name'
|
5228 |
|
|
..................................
|
5229 |
|
|
|
5230 |
|
|
*Synopsis*
|
5231 |
|
|
const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
|
5232 |
|
|
*Description*
|
5233 |
|
|
Provides a printable name for the supplied relocation code. Useful
|
5234 |
|
|
mainly for printing error messages.
|
5235 |
|
|
|
5236 |
|
|
2.10.2.5 `bfd_generic_relax_section'
|
5237 |
|
|
....................................
|
5238 |
|
|
|
5239 |
|
|
*Synopsis*
|
5240 |
|
|
bfd_boolean bfd_generic_relax_section
|
5241 |
|
|
(bfd *abfd,
|
5242 |
|
|
asection *section,
|
5243 |
|
|
struct bfd_link_info *,
|
5244 |
|
|
bfd_boolean *);
|
5245 |
|
|
*Description*
|
5246 |
|
|
Provides default handling for relaxing for back ends which don't do
|
5247 |
|
|
relaxing.
|
5248 |
|
|
|
5249 |
|
|
2.10.2.6 `bfd_generic_gc_sections'
|
5250 |
|
|
..................................
|
5251 |
|
|
|
5252 |
|
|
*Synopsis*
|
5253 |
|
|
bfd_boolean bfd_generic_gc_sections
|
5254 |
|
|
(bfd *, struct bfd_link_info *);
|
5255 |
|
|
*Description*
|
5256 |
|
|
Provides default handling for relaxing for back ends which don't do
|
5257 |
|
|
section gc - i.e., does nothing.
|
5258 |
|
|
|
5259 |
|
|
2.10.2.7 `bfd_generic_merge_sections'
|
5260 |
|
|
.....................................
|
5261 |
|
|
|
5262 |
|
|
*Synopsis*
|
5263 |
|
|
bfd_boolean bfd_generic_merge_sections
|
5264 |
|
|
(bfd *, struct bfd_link_info *);
|
5265 |
|
|
*Description*
|
5266 |
|
|
Provides default handling for SEC_MERGE section merging for back ends
|
5267 |
|
|
which don't have SEC_MERGE support - i.e., does nothing.
|
5268 |
|
|
|
5269 |
|
|
2.10.2.8 `bfd_generic_get_relocated_section_contents'
|
5270 |
|
|
.....................................................
|
5271 |
|
|
|
5272 |
|
|
*Synopsis*
|
5273 |
|
|
bfd_byte *bfd_generic_get_relocated_section_contents
|
5274 |
|
|
(bfd *abfd,
|
5275 |
|
|
struct bfd_link_info *link_info,
|
5276 |
|
|
struct bfd_link_order *link_order,
|
5277 |
|
|
bfd_byte *data,
|
5278 |
|
|
bfd_boolean relocatable,
|
5279 |
|
|
asymbol **symbols);
|
5280 |
|
|
*Description*
|
5281 |
|
|
Provides default handling of relocation effort for back ends which
|
5282 |
|
|
can't be bothered to do it efficiently.
|
5283 |
|
|
|
5284 |
|
|
|
5285 |
|
|
File: bfd.info, Node: Core Files, Next: Targets, Prev: Relocations, Up: BFD front end
|
5286 |
|
|
|
5287 |
|
|
2.11 Core files
|
5288 |
|
|
===============
|
5289 |
|
|
|
5290 |
|
|
2.11.1 Core file functions
|
5291 |
|
|
--------------------------
|
5292 |
|
|
|
5293 |
|
|
*Description*
|
5294 |
|
|
These are functions pertaining to core files.
|
5295 |
|
|
|
5296 |
|
|
2.11.1.1 `bfd_core_file_failing_command'
|
5297 |
|
|
........................................
|
5298 |
|
|
|
5299 |
|
|
*Synopsis*
|
5300 |
|
|
const char *bfd_core_file_failing_command (bfd *abfd);
|
5301 |
|
|
*Description*
|
5302 |
|
|
Return a read-only string explaining which program was running when it
|
5303 |
|
|
failed and produced the core file ABFD.
|
5304 |
|
|
|
5305 |
|
|
2.11.1.2 `bfd_core_file_failing_signal'
|
5306 |
|
|
.......................................
|
5307 |
|
|
|
5308 |
|
|
*Synopsis*
|
5309 |
|
|
int bfd_core_file_failing_signal (bfd *abfd);
|
5310 |
|
|
*Description*
|
5311 |
|
|
Returns the signal number which caused the core dump which generated
|
5312 |
|
|
the file the BFD ABFD is attached to.
|
5313 |
|
|
|
5314 |
|
|
2.11.1.3 `core_file_matches_executable_p'
|
5315 |
|
|
.........................................
|
5316 |
|
|
|
5317 |
|
|
*Synopsis*
|
5318 |
|
|
bfd_boolean core_file_matches_executable_p
|
5319 |
|
|
(bfd *core_bfd, bfd *exec_bfd);
|
5320 |
|
|
*Description*
|
5321 |
|
|
Return `TRUE' if the core file attached to CORE_BFD was generated by a
|
5322 |
|
|
run of the executable file attached to EXEC_BFD, `FALSE' otherwise.
|
5323 |
|
|
|
5324 |
|
|
2.11.1.4 `generic_core_file_matches_executable_p'
|
5325 |
|
|
.................................................
|
5326 |
|
|
|
5327 |
|
|
*Synopsis*
|
5328 |
|
|
bfd_boolean generic_core_file_matches_executable_p
|
5329 |
|
|
(bfd *core_bfd, bfd *exec_bfd);
|
5330 |
|
|
*Description*
|
5331 |
|
|
Return TRUE if the core file attached to CORE_BFD was generated by a
|
5332 |
|
|
run of the executable file attached to EXEC_BFD. The match is based on
|
5333 |
|
|
executable basenames only.
|
5334 |
|
|
|
5335 |
|
|
Note: When not able to determine the core file failing command or
|
5336 |
|
|
the executable name, we still return TRUE even though we're not sure
|
5337 |
|
|
that core file and executable match. This is to avoid generating a
|
5338 |
|
|
false warning in situations where we really don't know whether they
|
5339 |
|
|
match or not.
|
5340 |
|
|
|
5341 |
|
|
|
5342 |
|
|
File: bfd.info, Node: Targets, Next: Architectures, Prev: Core Files, Up: BFD front end
|
5343 |
|
|
|
5344 |
|
|
2.12 Targets
|
5345 |
|
|
============
|
5346 |
|
|
|
5347 |
|
|
*Description*
|
5348 |
|
|
Each port of BFD to a different machine requires the creation of a
|
5349 |
|
|
target back end. All the back end provides to the root part of BFD is a
|
5350 |
|
|
structure containing pointers to functions which perform certain low
|
5351 |
|
|
level operations on files. BFD translates the applications's requests
|
5352 |
|
|
through a pointer into calls to the back end routines.
|
5353 |
|
|
|
5354 |
|
|
When a file is opened with `bfd_openr', its format and target are
|
5355 |
|
|
unknown. BFD uses various mechanisms to determine how to interpret the
|
5356 |
|
|
file. The operations performed are:
|
5357 |
|
|
|
5358 |
|
|
* Create a BFD by calling the internal routine `_bfd_new_bfd', then
|
5359 |
|
|
call `bfd_find_target' with the target string supplied to
|
5360 |
|
|
`bfd_openr' and the new BFD pointer.
|
5361 |
|
|
|
5362 |
|
|
* If a null target string was provided to `bfd_find_target', look up
|
5363 |
|
|
the environment variable `GNUTARGET' and use that as the target
|
5364 |
|
|
string.
|
5365 |
|
|
|
5366 |
|
|
* If the target string is still `NULL', or the target string is
|
5367 |
|
|
`default', then use the first item in the target vector as the
|
5368 |
|
|
target type, and set `target_defaulted' in the BFD to cause
|
5369 |
|
|
`bfd_check_format' to loop through all the targets. *Note
|
5370 |
|
|
bfd_target::. *Note Formats::.
|
5371 |
|
|
|
5372 |
|
|
* Otherwise, inspect the elements in the target vector one by one,
|
5373 |
|
|
until a match on target name is found. When found, use it.
|
5374 |
|
|
|
5375 |
|
|
* Otherwise return the error `bfd_error_invalid_target' to
|
5376 |
|
|
`bfd_openr'.
|
5377 |
|
|
|
5378 |
|
|
* `bfd_openr' attempts to open the file using `bfd_open_file', and
|
5379 |
|
|
returns the BFD.
|
5380 |
|
|
Once the BFD has been opened and the target selected, the file
|
5381 |
|
|
format may be determined. This is done by calling `bfd_check_format' on
|
5382 |
|
|
the BFD with a suggested format. If `target_defaulted' has been set,
|
5383 |
|
|
each possible target type is tried to see if it recognizes the
|
5384 |
|
|
specified format. `bfd_check_format' returns `TRUE' when the caller
|
5385 |
|
|
guesses right.
|
5386 |
|
|
|
5387 |
|
|
* Menu:
|
5388 |
|
|
|
5389 |
|
|
* bfd_target::
|
5390 |
|
|
|
5391 |
|
|
|
5392 |
|
|
File: bfd.info, Node: bfd_target, Prev: Targets, Up: Targets
|
5393 |
|
|
|
5394 |
|
|
2.12.1 bfd_target
|
5395 |
|
|
-----------------
|
5396 |
|
|
|
5397 |
|
|
*Description*
|
5398 |
|
|
This structure contains everything that BFD knows about a target. It
|
5399 |
|
|
includes things like its byte order, name, and which routines to call
|
5400 |
|
|
to do various operations.
|
5401 |
|
|
|
5402 |
|
|
Every BFD points to a target structure with its `xvec' member.
|
5403 |
|
|
|
5404 |
|
|
The macros below are used to dispatch to functions through the
|
5405 |
|
|
`bfd_target' vector. They are used in a number of macros further down
|
5406 |
|
|
in `bfd.h', and are also used when calling various routines by hand
|
5407 |
|
|
inside the BFD implementation. The ARGLIST argument must be
|
5408 |
|
|
parenthesized; it contains all the arguments to the called function.
|
5409 |
|
|
|
5410 |
|
|
They make the documentation (more) unpleasant to read, so if someone
|
5411 |
|
|
wants to fix this and not break the above, please do.
|
5412 |
|
|
#define BFD_SEND(bfd, message, arglist) \
|
5413 |
|
|
((*((bfd)->xvec->message)) arglist)
|
5414 |
|
|
|
5415 |
|
|
#ifdef DEBUG_BFD_SEND
|
5416 |
|
|
#undef BFD_SEND
|
5417 |
|
|
#define BFD_SEND(bfd, message, arglist) \
|
5418 |
|
|
(((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
|
5419 |
|
|
((*((bfd)->xvec->message)) arglist) : \
|
5420 |
|
|
(bfd_assert (__FILE__,__LINE__), NULL))
|
5421 |
|
|
#endif
|
5422 |
|
|
For operations which index on the BFD format:
|
5423 |
|
|
#define BFD_SEND_FMT(bfd, message, arglist) \
|
5424 |
|
|
(((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
|
5425 |
|
|
|
5426 |
|
|
#ifdef DEBUG_BFD_SEND
|
5427 |
|
|
#undef BFD_SEND_FMT
|
5428 |
|
|
#define BFD_SEND_FMT(bfd, message, arglist) \
|
5429 |
|
|
(((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
|
5430 |
|
|
(((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
|
5431 |
|
|
(bfd_assert (__FILE__,__LINE__), NULL))
|
5432 |
|
|
#endif
|
5433 |
|
|
This is the structure which defines the type of BFD this is. The
|
5434 |
|
|
`xvec' member of the struct `bfd' itself points here. Each module that
|
5435 |
|
|
implements access to a different target under BFD, defines one of these.
|
5436 |
|
|
|
5437 |
|
|
FIXME, these names should be rationalised with the names of the
|
5438 |
|
|
entry points which call them. Too bad we can't have one macro to define
|
5439 |
|
|
them both!
|
5440 |
|
|
enum bfd_flavour
|
5441 |
|
|
{
|
5442 |
|
|
bfd_target_unknown_flavour,
|
5443 |
|
|
bfd_target_aout_flavour,
|
5444 |
|
|
bfd_target_coff_flavour,
|
5445 |
|
|
bfd_target_ecoff_flavour,
|
5446 |
|
|
bfd_target_xcoff_flavour,
|
5447 |
|
|
bfd_target_elf_flavour,
|
5448 |
|
|
bfd_target_ieee_flavour,
|
5449 |
|
|
bfd_target_nlm_flavour,
|
5450 |
|
|
bfd_target_oasys_flavour,
|
5451 |
|
|
bfd_target_tekhex_flavour,
|
5452 |
|
|
bfd_target_srec_flavour,
|
5453 |
|
|
bfd_target_ihex_flavour,
|
5454 |
|
|
bfd_target_som_flavour,
|
5455 |
|
|
bfd_target_os9k_flavour,
|
5456 |
|
|
bfd_target_versados_flavour,
|
5457 |
|
|
bfd_target_msdos_flavour,
|
5458 |
|
|
bfd_target_ovax_flavour,
|
5459 |
|
|
bfd_target_evax_flavour,
|
5460 |
|
|
bfd_target_mmo_flavour,
|
5461 |
|
|
bfd_target_mach_o_flavour,
|
5462 |
|
|
bfd_target_pef_flavour,
|
5463 |
|
|
bfd_target_pef_xlib_flavour,
|
5464 |
|
|
bfd_target_sym_flavour
|
5465 |
|
|
};
|
5466 |
|
|
|
5467 |
|
|
enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
|
5468 |
|
|
|
5469 |
|
|
/* Forward declaration. */
|
5470 |
|
|
typedef struct bfd_link_info _bfd_link_info;
|
5471 |
|
|
|
5472 |
|
|
typedef struct bfd_target
|
5473 |
|
|
{
|
5474 |
|
|
/* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
|
5475 |
|
|
char *name;
|
5476 |
|
|
|
5477 |
|
|
/* The "flavour" of a back end is a general indication about
|
5478 |
|
|
the contents of a file. */
|
5479 |
|
|
enum bfd_flavour flavour;
|
5480 |
|
|
|
5481 |
|
|
/* The order of bytes within the data area of a file. */
|
5482 |
|
|
enum bfd_endian byteorder;
|
5483 |
|
|
|
5484 |
|
|
/* The order of bytes within the header parts of a file. */
|
5485 |
|
|
enum bfd_endian header_byteorder;
|
5486 |
|
|
|
5487 |
|
|
/* A mask of all the flags which an executable may have set -
|
5488 |
|
|
from the set `BFD_NO_FLAGS', `HAS_RELOC', ...`D_PAGED'. */
|
5489 |
|
|
flagword object_flags;
|
5490 |
|
|
|
5491 |
|
|
/* A mask of all the flags which a section may have set - from
|
5492 |
|
|
the set `SEC_NO_FLAGS', `SEC_ALLOC', ...`SET_NEVER_LOAD'. */
|
5493 |
|
|
flagword section_flags;
|
5494 |
|
|
|
5495 |
|
|
/* The character normally found at the front of a symbol.
|
5496 |
|
|
(if any), perhaps `_'. */
|
5497 |
|
|
char symbol_leading_char;
|
5498 |
|
|
|
5499 |
|
|
/* The pad character for file names within an archive header. */
|
5500 |
|
|
char ar_pad_char;
|
5501 |
|
|
|
5502 |
|
|
/* The maximum number of characters in an archive header. */
|
5503 |
|
|
unsigned short ar_max_namelen;
|
5504 |
|
|
|
5505 |
|
|
/* Entries for byte swapping for data. These are different from the
|
5506 |
|
|
other entry points, since they don't take a BFD as the first argument.
|
5507 |
|
|
Certain other handlers could do the same. */
|
5508 |
|
|
bfd_uint64_t (*bfd_getx64) (const void *);
|
5509 |
|
|
bfd_int64_t (*bfd_getx_signed_64) (const void *);
|
5510 |
|
|
void (*bfd_putx64) (bfd_uint64_t, void *);
|
5511 |
|
|
bfd_vma (*bfd_getx32) (const void *);
|
5512 |
|
|
bfd_signed_vma (*bfd_getx_signed_32) (const void *);
|
5513 |
|
|
void (*bfd_putx32) (bfd_vma, void *);
|
5514 |
|
|
bfd_vma (*bfd_getx16) (const void *);
|
5515 |
|
|
bfd_signed_vma (*bfd_getx_signed_16) (const void *);
|
5516 |
|
|
void (*bfd_putx16) (bfd_vma, void *);
|
5517 |
|
|
|
5518 |
|
|
/* Byte swapping for the headers. */
|
5519 |
|
|
bfd_uint64_t (*bfd_h_getx64) (const void *);
|
5520 |
|
|
bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
|
5521 |
|
|
void (*bfd_h_putx64) (bfd_uint64_t, void *);
|
5522 |
|
|
bfd_vma (*bfd_h_getx32) (const void *);
|
5523 |
|
|
bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
|
5524 |
|
|
void (*bfd_h_putx32) (bfd_vma, void *);
|
5525 |
|
|
bfd_vma (*bfd_h_getx16) (const void *);
|
5526 |
|
|
bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
|
5527 |
|
|
void (*bfd_h_putx16) (bfd_vma, void *);
|
5528 |
|
|
|
5529 |
|
|
/* Format dependent routines: these are vectors of entry points
|
5530 |
|
|
within the target vector structure, one for each format to check. */
|
5531 |
|
|
|
5532 |
|
|
/* Check the format of a file being read. Return a `bfd_target *' or zero. */
|
5533 |
|
|
const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
|
5534 |
|
|
|
5535 |
|
|
/* Set the format of a file being written. */
|
5536 |
|
|
bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
|
5537 |
|
|
|
5538 |
|
|
/* Write cached information into a file being written, at `bfd_close'. */
|
5539 |
|
|
bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
|
5540 |
|
|
The general target vector. These vectors are initialized using the
|
5541 |
|
|
BFD_JUMP_TABLE macros.
|
5542 |
|
|
|
5543 |
|
|
/* Generic entry points. */
|
5544 |
|
|
#define BFD_JUMP_TABLE_GENERIC(NAME) \
|
5545 |
|
|
NAME##_close_and_cleanup, \
|
5546 |
|
|
NAME##_bfd_free_cached_info, \
|
5547 |
|
|
NAME##_new_section_hook, \
|
5548 |
|
|
NAME##_get_section_contents, \
|
5549 |
|
|
NAME##_get_section_contents_in_window
|
5550 |
|
|
|
5551 |
|
|
/* Called when the BFD is being closed to do any necessary cleanup. */
|
5552 |
|
|
bfd_boolean (*_close_and_cleanup) (bfd *);
|
5553 |
|
|
/* Ask the BFD to free all cached information. */
|
5554 |
|
|
bfd_boolean (*_bfd_free_cached_info) (bfd *);
|
5555 |
|
|
/* Called when a new section is created. */
|
5556 |
|
|
bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
|
5557 |
|
|
/* Read the contents of a section. */
|
5558 |
|
|
bfd_boolean (*_bfd_get_section_contents)
|
5559 |
|
|
(bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
|
5560 |
|
|
bfd_boolean (*_bfd_get_section_contents_in_window)
|
5561 |
|
|
(bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
|
5562 |
|
|
|
5563 |
|
|
/* Entry points to copy private data. */
|
5564 |
|
|
#define BFD_JUMP_TABLE_COPY(NAME) \
|
5565 |
|
|
NAME##_bfd_copy_private_bfd_data, \
|
5566 |
|
|
NAME##_bfd_merge_private_bfd_data, \
|
5567 |
|
|
_bfd_generic_init_private_section_data, \
|
5568 |
|
|
NAME##_bfd_copy_private_section_data, \
|
5569 |
|
|
NAME##_bfd_copy_private_symbol_data, \
|
5570 |
|
|
NAME##_bfd_copy_private_header_data, \
|
5571 |
|
|
NAME##_bfd_set_private_flags, \
|
5572 |
|
|
NAME##_bfd_print_private_bfd_data
|
5573 |
|
|
|
5574 |
|
|
/* Called to copy BFD general private data from one object file
|
5575 |
|
|
to another. */
|
5576 |
|
|
bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
|
5577 |
|
|
/* Called to merge BFD general private data from one object file
|
5578 |
|
|
to a common output file when linking. */
|
5579 |
|
|
bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
|
5580 |
|
|
/* Called to initialize BFD private section data from one object file
|
5581 |
|
|
to another. */
|
5582 |
|
|
#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
|
5583 |
|
|
BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
|
5584 |
|
|
bfd_boolean (*_bfd_init_private_section_data)
|
5585 |
|
|
(bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
|
5586 |
|
|
/* Called to copy BFD private section data from one object file
|
5587 |
|
|
to another. */
|
5588 |
|
|
bfd_boolean (*_bfd_copy_private_section_data)
|
5589 |
|
|
(bfd *, sec_ptr, bfd *, sec_ptr);
|
5590 |
|
|
/* Called to copy BFD private symbol data from one symbol
|
5591 |
|
|
to another. */
|
5592 |
|
|
bfd_boolean (*_bfd_copy_private_symbol_data)
|
5593 |
|
|
(bfd *, asymbol *, bfd *, asymbol *);
|
5594 |
|
|
/* Called to copy BFD private header data from one object file
|
5595 |
|
|
to another. */
|
5596 |
|
|
bfd_boolean (*_bfd_copy_private_header_data)
|
5597 |
|
|
(bfd *, bfd *);
|
5598 |
|
|
/* Called to set private backend flags. */
|
5599 |
|
|
bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
|
5600 |
|
|
|
5601 |
|
|
/* Called to print private BFD data. */
|
5602 |
|
|
bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
|
5603 |
|
|
|
5604 |
|
|
/* Core file entry points. */
|
5605 |
|
|
#define BFD_JUMP_TABLE_CORE(NAME) \
|
5606 |
|
|
NAME##_core_file_failing_command, \
|
5607 |
|
|
NAME##_core_file_failing_signal, \
|
5608 |
|
|
NAME##_core_file_matches_executable_p
|
5609 |
|
|
|
5610 |
|
|
char * (*_core_file_failing_command) (bfd *);
|
5611 |
|
|
int (*_core_file_failing_signal) (bfd *);
|
5612 |
|
|
bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
|
5613 |
|
|
|
5614 |
|
|
/* Archive entry points. */
|
5615 |
|
|
#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
|
5616 |
|
|
NAME##_slurp_armap, \
|
5617 |
|
|
NAME##_slurp_extended_name_table, \
|
5618 |
|
|
NAME##_construct_extended_name_table, \
|
5619 |
|
|
NAME##_truncate_arname, \
|
5620 |
|
|
NAME##_write_armap, \
|
5621 |
|
|
NAME##_read_ar_hdr, \
|
5622 |
|
|
NAME##_openr_next_archived_file, \
|
5623 |
|
|
NAME##_get_elt_at_index, \
|
5624 |
|
|
NAME##_generic_stat_arch_elt, \
|
5625 |
|
|
NAME##_update_armap_timestamp
|
5626 |
|
|
|
5627 |
|
|
bfd_boolean (*_bfd_slurp_armap) (bfd *);
|
5628 |
|
|
bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
|
5629 |
|
|
bfd_boolean (*_bfd_construct_extended_name_table)
|
5630 |
|
|
(bfd *, char **, bfd_size_type *, const char **);
|
5631 |
|
|
void (*_bfd_truncate_arname) (bfd *, const char *, char *);
|
5632 |
|
|
bfd_boolean (*write_armap)
|
5633 |
|
|
(bfd *, unsigned int, struct orl *, unsigned int, int);
|
5634 |
|
|
void * (*_bfd_read_ar_hdr_fn) (bfd *);
|
5635 |
|
|
bfd * (*openr_next_archived_file) (bfd *, bfd *);
|
5636 |
|
|
#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
|
5637 |
|
|
bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
|
5638 |
|
|
int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
|
5639 |
|
|
bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
|
5640 |
|
|
|
5641 |
|
|
/* Entry points used for symbols. */
|
5642 |
|
|
#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
|
5643 |
|
|
NAME##_get_symtab_upper_bound, \
|
5644 |
|
|
NAME##_canonicalize_symtab, \
|
5645 |
|
|
NAME##_make_empty_symbol, \
|
5646 |
|
|
NAME##_print_symbol, \
|
5647 |
|
|
NAME##_get_symbol_info, \
|
5648 |
|
|
NAME##_bfd_is_local_label_name, \
|
5649 |
|
|
NAME##_bfd_is_target_special_symbol, \
|
5650 |
|
|
NAME##_get_lineno, \
|
5651 |
|
|
NAME##_find_nearest_line, \
|
5652 |
|
|
_bfd_generic_find_line, \
|
5653 |
|
|
NAME##_find_inliner_info, \
|
5654 |
|
|
NAME##_bfd_make_debug_symbol, \
|
5655 |
|
|
NAME##_read_minisymbols, \
|
5656 |
|
|
NAME##_minisymbol_to_symbol
|
5657 |
|
|
|
5658 |
|
|
long (*_bfd_get_symtab_upper_bound) (bfd *);
|
5659 |
|
|
long (*_bfd_canonicalize_symtab)
|
5660 |
|
|
(bfd *, struct bfd_symbol **);
|
5661 |
|
|
struct bfd_symbol *
|
5662 |
|
|
(*_bfd_make_empty_symbol) (bfd *);
|
5663 |
|
|
void (*_bfd_print_symbol)
|
5664 |
|
|
(bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
|
5665 |
|
|
#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
|
5666 |
|
|
void (*_bfd_get_symbol_info)
|
5667 |
|
|
(bfd *, struct bfd_symbol *, symbol_info *);
|
5668 |
|
|
#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
|
5669 |
|
|
bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
|
5670 |
|
|
bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
|
5671 |
|
|
alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
|
5672 |
|
|
bfd_boolean (*_bfd_find_nearest_line)
|
5673 |
|
|
(bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
|
5674 |
|
|
const char **, const char **, unsigned int *);
|
5675 |
|
|
bfd_boolean (*_bfd_find_line)
|
5676 |
|
|
(bfd *, struct bfd_symbol **, struct bfd_symbol *,
|
5677 |
|
|
const char **, unsigned int *);
|
5678 |
|
|
bfd_boolean (*_bfd_find_inliner_info)
|
5679 |
|
|
(bfd *, const char **, const char **, unsigned int *);
|
5680 |
|
|
/* Back-door to allow format-aware applications to create debug symbols
|
5681 |
|
|
while using BFD for everything else. Currently used by the assembler
|
5682 |
|
|
when creating COFF files. */
|
5683 |
|
|
asymbol * (*_bfd_make_debug_symbol)
|
5684 |
|
|
(bfd *, void *, unsigned long size);
|
5685 |
|
|
#define bfd_read_minisymbols(b, d, m, s) \
|
5686 |
|
|
BFD_SEND (b, _read_minisymbols, (b, d, m, s))
|
5687 |
|
|
long (*_read_minisymbols)
|
5688 |
|
|
(bfd *, bfd_boolean, void **, unsigned int *);
|
5689 |
|
|
#define bfd_minisymbol_to_symbol(b, d, m, f) \
|
5690 |
|
|
BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
|
5691 |
|
|
asymbol * (*_minisymbol_to_symbol)
|
5692 |
|
|
(bfd *, bfd_boolean, const void *, asymbol *);
|
5693 |
|
|
|
5694 |
|
|
/* Routines for relocs. */
|
5695 |
|
|
#define BFD_JUMP_TABLE_RELOCS(NAME) \
|
5696 |
|
|
NAME##_get_reloc_upper_bound, \
|
5697 |
|
|
NAME##_canonicalize_reloc, \
|
5698 |
|
|
NAME##_bfd_reloc_type_lookup, \
|
5699 |
|
|
NAME##_bfd_reloc_name_lookup
|
5700 |
|
|
|
5701 |
|
|
long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
|
5702 |
|
|
long (*_bfd_canonicalize_reloc)
|
5703 |
|
|
(bfd *, sec_ptr, arelent **, struct bfd_symbol **);
|
5704 |
|
|
/* See documentation on reloc types. */
|
5705 |
|
|
reloc_howto_type *
|
5706 |
|
|
(*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
|
5707 |
|
|
reloc_howto_type *
|
5708 |
|
|
(*reloc_name_lookup) (bfd *, const char *);
|
5709 |
|
|
|
5710 |
|
|
|
5711 |
|
|
/* Routines used when writing an object file. */
|
5712 |
|
|
#define BFD_JUMP_TABLE_WRITE(NAME) \
|
5713 |
|
|
NAME##_set_arch_mach, \
|
5714 |
|
|
NAME##_set_section_contents
|
5715 |
|
|
|
5716 |
|
|
bfd_boolean (*_bfd_set_arch_mach)
|
5717 |
|
|
(bfd *, enum bfd_architecture, unsigned long);
|
5718 |
|
|
bfd_boolean (*_bfd_set_section_contents)
|
5719 |
|
|
(bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
|
5720 |
|
|
|
5721 |
|
|
/* Routines used by the linker. */
|
5722 |
|
|
#define BFD_JUMP_TABLE_LINK(NAME) \
|
5723 |
|
|
NAME##_sizeof_headers, \
|
5724 |
|
|
NAME##_bfd_get_relocated_section_contents, \
|
5725 |
|
|
NAME##_bfd_relax_section, \
|
5726 |
|
|
NAME##_bfd_link_hash_table_create, \
|
5727 |
|
|
NAME##_bfd_link_hash_table_free, \
|
5728 |
|
|
NAME##_bfd_link_add_symbols, \
|
5729 |
|
|
NAME##_bfd_link_just_syms, \
|
5730 |
|
|
NAME##_bfd_final_link, \
|
5731 |
|
|
NAME##_bfd_link_split_section, \
|
5732 |
|
|
NAME##_bfd_gc_sections, \
|
5733 |
|
|
NAME##_bfd_merge_sections, \
|
5734 |
|
|
NAME##_bfd_is_group_section, \
|
5735 |
|
|
NAME##_bfd_discard_group, \
|
5736 |
|
|
NAME##_section_already_linked \
|
5737 |
|
|
|
5738 |
|
|
int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
|
5739 |
|
|
bfd_byte * (*_bfd_get_relocated_section_contents)
|
5740 |
|
|
(bfd *, struct bfd_link_info *, struct bfd_link_order *,
|
5741 |
|
|
bfd_byte *, bfd_boolean, struct bfd_symbol **);
|
5742 |
|
|
|
5743 |
|
|
bfd_boolean (*_bfd_relax_section)
|
5744 |
|
|
(bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
|
5745 |
|
|
|
5746 |
|
|
/* Create a hash table for the linker. Different backends store
|
5747 |
|
|
different information in this table. */
|
5748 |
|
|
struct bfd_link_hash_table *
|
5749 |
|
|
(*_bfd_link_hash_table_create) (bfd *);
|
5750 |
|
|
|
5751 |
|
|
/* Release the memory associated with the linker hash table. */
|
5752 |
|
|
void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
|
5753 |
|
|
|
5754 |
|
|
/* Add symbols from this object file into the hash table. */
|
5755 |
|
|
bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
|
5756 |
|
|
|
5757 |
|
|
/* Indicate that we are only retrieving symbol values from this section. */
|
5758 |
|
|
void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
|
5759 |
|
|
|
5760 |
|
|
/* Do a link based on the link_order structures attached to each
|
5761 |
|
|
section of the BFD. */
|
5762 |
|
|
bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
|
5763 |
|
|
|
5764 |
|
|
/* Should this section be split up into smaller pieces during linking. */
|
5765 |
|
|
bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
|
5766 |
|
|
|
5767 |
|
|
/* Remove sections that are not referenced from the output. */
|
5768 |
|
|
bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
|
5769 |
|
|
|
5770 |
|
|
/* Attempt to merge SEC_MERGE sections. */
|
5771 |
|
|
bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
|
5772 |
|
|
|
5773 |
|
|
/* Is this section a member of a group? */
|
5774 |
|
|
bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
|
5775 |
|
|
|
5776 |
|
|
/* Discard members of a group. */
|
5777 |
|
|
bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
|
5778 |
|
|
|
5779 |
|
|
/* Check if SEC has been already linked during a reloceatable or
|
5780 |
|
|
final link. */
|
5781 |
|
|
void (*_section_already_linked) (bfd *, struct bfd_section *,
|
5782 |
|
|
struct bfd_link_info *);
|
5783 |
|
|
|
5784 |
|
|
/* Routines to handle dynamic symbols and relocs. */
|
5785 |
|
|
#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
|
5786 |
|
|
NAME##_get_dynamic_symtab_upper_bound, \
|
5787 |
|
|
NAME##_canonicalize_dynamic_symtab, \
|
5788 |
|
|
NAME##_get_synthetic_symtab, \
|
5789 |
|
|
NAME##_get_dynamic_reloc_upper_bound, \
|
5790 |
|
|
NAME##_canonicalize_dynamic_reloc
|
5791 |
|
|
|
5792 |
|
|
/* Get the amount of memory required to hold the dynamic symbols. */
|
5793 |
|
|
long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
|
5794 |
|
|
/* Read in the dynamic symbols. */
|
5795 |
|
|
long (*_bfd_canonicalize_dynamic_symtab)
|
5796 |
|
|
(bfd *, struct bfd_symbol **);
|
5797 |
|
|
/* Create synthetized symbols. */
|
5798 |
|
|
long (*_bfd_get_synthetic_symtab)
|
5799 |
|
|
(bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
|
5800 |
|
|
struct bfd_symbol **);
|
5801 |
|
|
/* Get the amount of memory required to hold the dynamic relocs. */
|
5802 |
|
|
long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
|
5803 |
|
|
/* Read in the dynamic relocs. */
|
5804 |
|
|
long (*_bfd_canonicalize_dynamic_reloc)
|
5805 |
|
|
(bfd *, arelent **, struct bfd_symbol **);
|
5806 |
|
|
A pointer to an alternative bfd_target in case the current one is not
|
5807 |
|
|
satisfactory. This can happen when the target cpu supports both big
|
5808 |
|
|
and little endian code, and target chosen by the linker has the wrong
|
5809 |
|
|
endianness. The function open_output() in ld/ldlang.c uses this field
|
5810 |
|
|
to find an alternative output format that is suitable.
|
5811 |
|
|
/* Opposite endian version of this target. */
|
5812 |
|
|
const struct bfd_target * alternative_target;
|
5813 |
|
|
|
5814 |
|
|
/* Data for use by back-end routines, which isn't
|
5815 |
|
|
generic enough to belong in this structure. */
|
5816 |
|
|
const void *backend_data;
|
5817 |
|
|
|
5818 |
|
|
} bfd_target;
|
5819 |
|
|
|
5820 |
|
|
2.12.1.1 `bfd_set_default_target'
|
5821 |
|
|
.................................
|
5822 |
|
|
|
5823 |
|
|
*Synopsis*
|
5824 |
|
|
bfd_boolean bfd_set_default_target (const char *name);
|
5825 |
|
|
*Description*
|
5826 |
|
|
Set the default target vector to use when recognizing a BFD. This
|
5827 |
|
|
takes the name of the target, which may be a BFD target name or a
|
5828 |
|
|
configuration triplet.
|
5829 |
|
|
|
5830 |
|
|
2.12.1.2 `bfd_find_target'
|
5831 |
|
|
..........................
|
5832 |
|
|
|
5833 |
|
|
*Synopsis*
|
5834 |
|
|
const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
|
5835 |
|
|
*Description*
|
5836 |
|
|
Return a pointer to the transfer vector for the object target named
|
5837 |
|
|
TARGET_NAME. If TARGET_NAME is `NULL', choose the one in the
|
5838 |
|
|
environment variable `GNUTARGET'; if that is null or not defined, then
|
5839 |
|
|
choose the first entry in the target list. Passing in the string
|
5840 |
|
|
"default" or setting the environment variable to "default" will cause
|
5841 |
|
|
the first entry in the target list to be returned, and
|
5842 |
|
|
"target_defaulted" will be set in the BFD if ABFD isn't `NULL'. This
|
5843 |
|
|
causes `bfd_check_format' to loop over all the targets to find the one
|
5844 |
|
|
that matches the file being read.
|
5845 |
|
|
|
5846 |
|
|
2.12.1.3 `bfd_target_list'
|
5847 |
|
|
..........................
|
5848 |
|
|
|
5849 |
|
|
*Synopsis*
|
5850 |
|
|
const char ** bfd_target_list (void);
|
5851 |
|
|
*Description*
|
5852 |
|
|
Return a freshly malloced NULL-terminated vector of the names of all
|
5853 |
|
|
the valid BFD targets. Do not modify the names.
|
5854 |
|
|
|
5855 |
|
|
2.12.1.4 `bfd_seach_for_target'
|
5856 |
|
|
...............................
|
5857 |
|
|
|
5858 |
|
|
*Synopsis*
|
5859 |
|
|
const bfd_target *bfd_search_for_target
|
5860 |
|
|
(int (*search_func) (const bfd_target *, void *),
|
5861 |
|
|
void *);
|
5862 |
|
|
*Description*
|
5863 |
|
|
Return a pointer to the first transfer vector in the list of transfer
|
5864 |
|
|
vectors maintained by BFD that produces a non-zero result when passed
|
5865 |
|
|
to the function SEARCH_FUNC. The parameter DATA is passed, unexamined,
|
5866 |
|
|
to the search function.
|
5867 |
|
|
|
5868 |
|
|
|
5869 |
|
|
File: bfd.info, Node: Architectures, Next: Opening and Closing, Prev: Targets, Up: BFD front end
|
5870 |
|
|
|
5871 |
|
|
2.13 Architectures
|
5872 |
|
|
==================
|
5873 |
|
|
|
5874 |
|
|
BFD keeps one atom in a BFD describing the architecture of the data
|
5875 |
|
|
attached to the BFD: a pointer to a `bfd_arch_info_type'.
|
5876 |
|
|
|
5877 |
|
|
Pointers to structures can be requested independently of a BFD so
|
5878 |
|
|
that an architecture's information can be interrogated without access
|
5879 |
|
|
to an open BFD.
|
5880 |
|
|
|
5881 |
|
|
The architecture information is provided by each architecture
|
5882 |
|
|
package. The set of default architectures is selected by the macro
|
5883 |
|
|
`SELECT_ARCHITECTURES'. This is normally set up in the
|
5884 |
|
|
`config/TARGET.mt' file of your choice. If the name is not defined,
|
5885 |
|
|
then all the architectures supported are included.
|
5886 |
|
|
|
5887 |
|
|
When BFD starts up, all the architectures are called with an
|
5888 |
|
|
initialize method. It is up to the architecture back end to insert as
|
5889 |
|
|
many items into the list of architectures as it wants to; generally
|
5890 |
|
|
this would be one for each machine and one for the default case (an
|
5891 |
|
|
item with a machine field of 0).
|
5892 |
|
|
|
5893 |
|
|
BFD's idea of an architecture is implemented in `archures.c'.
|
5894 |
|
|
|
5895 |
|
|
2.13.1 bfd_architecture
|
5896 |
|
|
-----------------------
|
5897 |
|
|
|
5898 |
|
|
*Description*
|
5899 |
|
|
This enum gives the object file's CPU architecture, in a global
|
5900 |
|
|
sense--i.e., what processor family does it belong to? Another field
|
5901 |
|
|
indicates which processor within the family is in use. The machine
|
5902 |
|
|
gives a number which distinguishes different versions of the
|
5903 |
|
|
architecture, containing, for example, 2 and 3 for Intel i960 KA and
|
5904 |
|
|
i960 KB, and 68020 and 68030 for Motorola 68020 and 68030.
|
5905 |
|
|
enum bfd_architecture
|
5906 |
|
|
{
|
5907 |
|
|
bfd_arch_unknown, /* File arch not known. */
|
5908 |
|
|
bfd_arch_obscure, /* Arch known, not one of these. */
|
5909 |
|
|
bfd_arch_m68k, /* Motorola 68xxx */
|
5910 |
|
|
#define bfd_mach_m68000 1
|
5911 |
|
|
#define bfd_mach_m68008 2
|
5912 |
|
|
#define bfd_mach_m68010 3
|
5913 |
|
|
#define bfd_mach_m68020 4
|
5914 |
|
|
#define bfd_mach_m68030 5
|
5915 |
|
|
#define bfd_mach_m68040 6
|
5916 |
|
|
#define bfd_mach_m68060 7
|
5917 |
|
|
#define bfd_mach_cpu32 8
|
5918 |
|
|
#define bfd_mach_fido 9
|
5919 |
|
|
#define bfd_mach_mcf_isa_a_nodiv 10
|
5920 |
|
|
#define bfd_mach_mcf_isa_a 11
|
5921 |
|
|
#define bfd_mach_mcf_isa_a_mac 12
|
5922 |
|
|
#define bfd_mach_mcf_isa_a_emac 13
|
5923 |
|
|
#define bfd_mach_mcf_isa_aplus 14
|
5924 |
|
|
#define bfd_mach_mcf_isa_aplus_mac 15
|
5925 |
|
|
#define bfd_mach_mcf_isa_aplus_emac 16
|
5926 |
|
|
#define bfd_mach_mcf_isa_b_nousp 17
|
5927 |
|
|
#define bfd_mach_mcf_isa_b_nousp_mac 18
|
5928 |
|
|
#define bfd_mach_mcf_isa_b_nousp_emac 19
|
5929 |
|
|
#define bfd_mach_mcf_isa_b 20
|
5930 |
|
|
#define bfd_mach_mcf_isa_b_mac 21
|
5931 |
|
|
#define bfd_mach_mcf_isa_b_emac 22
|
5932 |
|
|
#define bfd_mach_mcf_isa_b_float 23
|
5933 |
|
|
#define bfd_mach_mcf_isa_b_float_mac 24
|
5934 |
|
|
#define bfd_mach_mcf_isa_b_float_emac 25
|
5935 |
|
|
#define bfd_mach_mcf_isa_c 26
|
5936 |
|
|
#define bfd_mach_mcf_isa_c_mac 27
|
5937 |
|
|
#define bfd_mach_mcf_isa_c_emac 28
|
5938 |
|
|
#define bfd_mach_mcf_isa_c_nodiv 29
|
5939 |
|
|
#define bfd_mach_mcf_isa_c_nodiv_mac 30
|
5940 |
|
|
#define bfd_mach_mcf_isa_c_nodiv_emac 31
|
5941 |
|
|
bfd_arch_vax, /* DEC Vax */
|
5942 |
|
|
bfd_arch_i960, /* Intel 960 */
|
5943 |
|
|
/* The order of the following is important.
|
5944 |
|
|
lower number indicates a machine type that
|
5945 |
|
|
only accepts a subset of the instructions
|
5946 |
|
|
available to machines with higher numbers.
|
5947 |
|
|
The exception is the "ca", which is
|
5948 |
|
|
incompatible with all other machines except
|
5949 |
|
|
"core". */
|
5950 |
|
|
|
5951 |
|
|
#define bfd_mach_i960_core 1
|
5952 |
|
|
#define bfd_mach_i960_ka_sa 2
|
5953 |
|
|
#define bfd_mach_i960_kb_sb 3
|
5954 |
|
|
#define bfd_mach_i960_mc 4
|
5955 |
|
|
#define bfd_mach_i960_xa 5
|
5956 |
|
|
#define bfd_mach_i960_ca 6
|
5957 |
|
|
#define bfd_mach_i960_jx 7
|
5958 |
|
|
#define bfd_mach_i960_hx 8
|
5959 |
|
|
|
5960 |
|
|
bfd_arch_or32, /* OpenRISC 32 */
|
5961 |
|
|
|
5962 |
|
|
bfd_arch_sparc, /* SPARC */
|
5963 |
|
|
#define bfd_mach_sparc 1
|
5964 |
|
|
/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
|
5965 |
|
|
#define bfd_mach_sparc_sparclet 2
|
5966 |
|
|
#define bfd_mach_sparc_sparclite 3
|
5967 |
|
|
#define bfd_mach_sparc_v8plus 4
|
5968 |
|
|
#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
|
5969 |
|
|
#define bfd_mach_sparc_sparclite_le 6
|
5970 |
|
|
#define bfd_mach_sparc_v9 7
|
5971 |
|
|
#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
|
5972 |
|
|
#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
|
5973 |
|
|
#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
|
5974 |
|
|
/* Nonzero if MACH has the v9 instruction set. */
|
5975 |
|
|
#define bfd_mach_sparc_v9_p(mach) \
|
5976 |
|
|
((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
|
5977 |
|
|
&& (mach) != bfd_mach_sparc_sparclite_le)
|
5978 |
|
|
/* Nonzero if MACH is a 64 bit sparc architecture. */
|
5979 |
|
|
#define bfd_mach_sparc_64bit_p(mach) \
|
5980 |
|
|
((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
|
5981 |
|
|
bfd_arch_spu, /* PowerPC SPU */
|
5982 |
|
|
#define bfd_mach_spu 256
|
5983 |
|
|
bfd_arch_mips, /* MIPS Rxxxx */
|
5984 |
|
|
#define bfd_mach_mips3000 3000
|
5985 |
|
|
#define bfd_mach_mips3900 3900
|
5986 |
|
|
#define bfd_mach_mips4000 4000
|
5987 |
|
|
#define bfd_mach_mips4010 4010
|
5988 |
|
|
#define bfd_mach_mips4100 4100
|
5989 |
|
|
#define bfd_mach_mips4111 4111
|
5990 |
|
|
#define bfd_mach_mips4120 4120
|
5991 |
|
|
#define bfd_mach_mips4300 4300
|
5992 |
|
|
#define bfd_mach_mips4400 4400
|
5993 |
|
|
#define bfd_mach_mips4600 4600
|
5994 |
|
|
#define bfd_mach_mips4650 4650
|
5995 |
|
|
#define bfd_mach_mips5000 5000
|
5996 |
|
|
#define bfd_mach_mips5400 5400
|
5997 |
|
|
#define bfd_mach_mips5500 5500
|
5998 |
|
|
#define bfd_mach_mips6000 6000
|
5999 |
|
|
#define bfd_mach_mips7000 7000
|
6000 |
|
|
#define bfd_mach_mips8000 8000
|
6001 |
|
|
#define bfd_mach_mips9000 9000
|
6002 |
|
|
#define bfd_mach_mips10000 10000
|
6003 |
|
|
#define bfd_mach_mips12000 12000
|
6004 |
|
|
#define bfd_mach_mips16 16
|
6005 |
|
|
#define bfd_mach_mips5 5
|
6006 |
|
|
#define bfd_mach_mips_loongson_2e 3001
|
6007 |
|
|
#define bfd_mach_mips_loongson_2f 3002
|
6008 |
|
|
#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
|
6009 |
|
|
#define bfd_mach_mips_octeon 6501
|
6010 |
|
|
#define bfd_mach_mipsisa32 32
|
6011 |
|
|
#define bfd_mach_mipsisa32r2 33
|
6012 |
|
|
#define bfd_mach_mipsisa64 64
|
6013 |
|
|
#define bfd_mach_mipsisa64r2 65
|
6014 |
|
|
bfd_arch_i386, /* Intel 386 */
|
6015 |
|
|
#define bfd_mach_i386_i386 1
|
6016 |
|
|
#define bfd_mach_i386_i8086 2
|
6017 |
|
|
#define bfd_mach_i386_i386_intel_syntax 3
|
6018 |
|
|
#define bfd_mach_x86_64 64
|
6019 |
|
|
#define bfd_mach_x86_64_intel_syntax 65
|
6020 |
|
|
bfd_arch_we32k, /* AT&T WE32xxx */
|
6021 |
|
|
bfd_arch_tahoe, /* CCI/Harris Tahoe */
|
6022 |
|
|
bfd_arch_i860, /* Intel 860 */
|
6023 |
|
|
bfd_arch_i370, /* IBM 360/370 Mainframes */
|
6024 |
|
|
bfd_arch_romp, /* IBM ROMP PC/RT */
|
6025 |
|
|
bfd_arch_convex, /* Convex */
|
6026 |
|
|
bfd_arch_m88k, /* Motorola 88xxx */
|
6027 |
|
|
bfd_arch_m98k, /* Motorola 98xxx */
|
6028 |
|
|
bfd_arch_pyramid, /* Pyramid Technology */
|
6029 |
|
|
bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
|
6030 |
|
|
#define bfd_mach_h8300 1
|
6031 |
|
|
#define bfd_mach_h8300h 2
|
6032 |
|
|
#define bfd_mach_h8300s 3
|
6033 |
|
|
#define bfd_mach_h8300hn 4
|
6034 |
|
|
#define bfd_mach_h8300sn 5
|
6035 |
|
|
#define bfd_mach_h8300sx 6
|
6036 |
|
|
#define bfd_mach_h8300sxn 7
|
6037 |
|
|
bfd_arch_pdp11, /* DEC PDP-11 */
|
6038 |
|
|
bfd_arch_powerpc, /* PowerPC */
|
6039 |
|
|
#define bfd_mach_ppc 32
|
6040 |
|
|
#define bfd_mach_ppc64 64
|
6041 |
|
|
#define bfd_mach_ppc_403 403
|
6042 |
|
|
#define bfd_mach_ppc_403gc 4030
|
6043 |
|
|
#define bfd_mach_ppc_505 505
|
6044 |
|
|
#define bfd_mach_ppc_601 601
|
6045 |
|
|
#define bfd_mach_ppc_602 602
|
6046 |
|
|
#define bfd_mach_ppc_603 603
|
6047 |
|
|
#define bfd_mach_ppc_ec603e 6031
|
6048 |
|
|
#define bfd_mach_ppc_604 604
|
6049 |
|
|
#define bfd_mach_ppc_620 620
|
6050 |
|
|
#define bfd_mach_ppc_630 630
|
6051 |
|
|
#define bfd_mach_ppc_750 750
|
6052 |
|
|
#define bfd_mach_ppc_860 860
|
6053 |
|
|
#define bfd_mach_ppc_a35 35
|
6054 |
|
|
#define bfd_mach_ppc_rs64ii 642
|
6055 |
|
|
#define bfd_mach_ppc_rs64iii 643
|
6056 |
|
|
#define bfd_mach_ppc_7400 7400
|
6057 |
|
|
#define bfd_mach_ppc_e500 500
|
6058 |
|
|
bfd_arch_rs6000, /* IBM RS/6000 */
|
6059 |
|
|
#define bfd_mach_rs6k 6000
|
6060 |
|
|
#define bfd_mach_rs6k_rs1 6001
|
6061 |
|
|
#define bfd_mach_rs6k_rsc 6003
|
6062 |
|
|
#define bfd_mach_rs6k_rs2 6002
|
6063 |
|
|
bfd_arch_hppa, /* HP PA RISC */
|
6064 |
|
|
#define bfd_mach_hppa10 10
|
6065 |
|
|
#define bfd_mach_hppa11 11
|
6066 |
|
|
#define bfd_mach_hppa20 20
|
6067 |
|
|
#define bfd_mach_hppa20w 25
|
6068 |
|
|
bfd_arch_d10v, /* Mitsubishi D10V */
|
6069 |
|
|
#define bfd_mach_d10v 1
|
6070 |
|
|
#define bfd_mach_d10v_ts2 2
|
6071 |
|
|
#define bfd_mach_d10v_ts3 3
|
6072 |
|
|
bfd_arch_d30v, /* Mitsubishi D30V */
|
6073 |
|
|
bfd_arch_dlx, /* DLX */
|
6074 |
|
|
bfd_arch_m68hc11, /* Motorola 68HC11 */
|
6075 |
|
|
bfd_arch_m68hc12, /* Motorola 68HC12 */
|
6076 |
|
|
#define bfd_mach_m6812_default 0
|
6077 |
|
|
#define bfd_mach_m6812 1
|
6078 |
|
|
#define bfd_mach_m6812s 2
|
6079 |
|
|
bfd_arch_z8k, /* Zilog Z8000 */
|
6080 |
|
|
#define bfd_mach_z8001 1
|
6081 |
|
|
#define bfd_mach_z8002 2
|
6082 |
|
|
bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
|
6083 |
|
|
bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
|
6084 |
|
|
#define bfd_mach_sh 1
|
6085 |
|
|
#define bfd_mach_sh2 0x20
|
6086 |
|
|
#define bfd_mach_sh_dsp 0x2d
|
6087 |
|
|
#define bfd_mach_sh2a 0x2a
|
6088 |
|
|
#define bfd_mach_sh2a_nofpu 0x2b
|
6089 |
|
|
#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
|
6090 |
|
|
#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
|
6091 |
|
|
#define bfd_mach_sh2a_or_sh4 0x2a3
|
6092 |
|
|
#define bfd_mach_sh2a_or_sh3e 0x2a4
|
6093 |
|
|
#define bfd_mach_sh2e 0x2e
|
6094 |
|
|
#define bfd_mach_sh3 0x30
|
6095 |
|
|
#define bfd_mach_sh3_nommu 0x31
|
6096 |
|
|
#define bfd_mach_sh3_dsp 0x3d
|
6097 |
|
|
#define bfd_mach_sh3e 0x3e
|
6098 |
|
|
#define bfd_mach_sh4 0x40
|
6099 |
|
|
#define bfd_mach_sh4_nofpu 0x41
|
6100 |
|
|
#define bfd_mach_sh4_nommu_nofpu 0x42
|
6101 |
|
|
#define bfd_mach_sh4a 0x4a
|
6102 |
|
|
#define bfd_mach_sh4a_nofpu 0x4b
|
6103 |
|
|
#define bfd_mach_sh4al_dsp 0x4d
|
6104 |
|
|
#define bfd_mach_sh5 0x50
|
6105 |
|
|
bfd_arch_alpha, /* Dec Alpha */
|
6106 |
|
|
#define bfd_mach_alpha_ev4 0x10
|
6107 |
|
|
#define bfd_mach_alpha_ev5 0x20
|
6108 |
|
|
#define bfd_mach_alpha_ev6 0x30
|
6109 |
|
|
bfd_arch_arm, /* Advanced Risc Machines ARM. */
|
6110 |
|
|
#define bfd_mach_arm_unknown 0
|
6111 |
|
|
#define bfd_mach_arm_2 1
|
6112 |
|
|
#define bfd_mach_arm_2a 2
|
6113 |
|
|
#define bfd_mach_arm_3 3
|
6114 |
|
|
#define bfd_mach_arm_3M 4
|
6115 |
|
|
#define bfd_mach_arm_4 5
|
6116 |
|
|
#define bfd_mach_arm_4T 6
|
6117 |
|
|
#define bfd_mach_arm_5 7
|
6118 |
|
|
#define bfd_mach_arm_5T 8
|
6119 |
|
|
#define bfd_mach_arm_5TE 9
|
6120 |
|
|
#define bfd_mach_arm_XScale 10
|
6121 |
|
|
#define bfd_mach_arm_ep9312 11
|
6122 |
|
|
#define bfd_mach_arm_iWMMXt 12
|
6123 |
|
|
#define bfd_mach_arm_iWMMXt2 13
|
6124 |
|
|
bfd_arch_ns32k, /* National Semiconductors ns32000 */
|
6125 |
|
|
bfd_arch_w65, /* WDC 65816 */
|
6126 |
|
|
bfd_arch_tic30, /* Texas Instruments TMS320C30 */
|
6127 |
|
|
bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
|
6128 |
|
|
#define bfd_mach_tic3x 30
|
6129 |
|
|
#define bfd_mach_tic4x 40
|
6130 |
|
|
bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
|
6131 |
|
|
bfd_arch_tic80, /* TI TMS320c80 (MVP) */
|
6132 |
|
|
bfd_arch_v850, /* NEC V850 */
|
6133 |
|
|
#define bfd_mach_v850 1
|
6134 |
|
|
#define bfd_mach_v850e 'E'
|
6135 |
|
|
#define bfd_mach_v850e1 '1'
|
6136 |
|
|
bfd_arch_arc, /* ARC Cores */
|
6137 |
|
|
#define bfd_mach_arc_5 5
|
6138 |
|
|
#define bfd_mach_arc_6 6
|
6139 |
|
|
#define bfd_mach_arc_7 7
|
6140 |
|
|
#define bfd_mach_arc_8 8
|
6141 |
|
|
bfd_arch_m32c, /* Renesas M16C/M32C. */
|
6142 |
|
|
#define bfd_mach_m16c 0x75
|
6143 |
|
|
#define bfd_mach_m32c 0x78
|
6144 |
|
|
bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
|
6145 |
|
|
#define bfd_mach_m32r 1 /* For backwards compatibility. */
|
6146 |
|
|
#define bfd_mach_m32rx 'x'
|
6147 |
|
|
#define bfd_mach_m32r2 '2'
|
6148 |
|
|
bfd_arch_mn10200, /* Matsushita MN10200 */
|
6149 |
|
|
bfd_arch_mn10300, /* Matsushita MN10300 */
|
6150 |
|
|
#define bfd_mach_mn10300 300
|
6151 |
|
|
#define bfd_mach_am33 330
|
6152 |
|
|
#define bfd_mach_am33_2 332
|
6153 |
|
|
bfd_arch_fr30,
|
6154 |
|
|
#define bfd_mach_fr30 0x46523330
|
6155 |
|
|
bfd_arch_frv,
|
6156 |
|
|
#define bfd_mach_frv 1
|
6157 |
|
|
#define bfd_mach_frvsimple 2
|
6158 |
|
|
#define bfd_mach_fr300 300
|
6159 |
|
|
#define bfd_mach_fr400 400
|
6160 |
|
|
#define bfd_mach_fr450 450
|
6161 |
|
|
#define bfd_mach_frvtomcat 499 /* fr500 prototype */
|
6162 |
|
|
#define bfd_mach_fr500 500
|
6163 |
|
|
#define bfd_mach_fr550 550
|
6164 |
|
|
bfd_arch_mcore,
|
6165 |
|
|
bfd_arch_mep,
|
6166 |
|
|
#define bfd_mach_mep 1
|
6167 |
|
|
#define bfd_mach_mep_h1 0x6831
|
6168 |
|
|
bfd_arch_ia64, /* HP/Intel ia64 */
|
6169 |
|
|
#define bfd_mach_ia64_elf64 64
|
6170 |
|
|
#define bfd_mach_ia64_elf32 32
|
6171 |
|
|
bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
|
6172 |
|
|
#define bfd_mach_ip2022 1
|
6173 |
|
|
#define bfd_mach_ip2022ext 2
|
6174 |
|
|
bfd_arch_iq2000, /* Vitesse IQ2000. */
|
6175 |
|
|
#define bfd_mach_iq2000 1
|
6176 |
|
|
#define bfd_mach_iq10 2
|
6177 |
|
|
bfd_arch_mt,
|
6178 |
|
|
#define bfd_mach_ms1 1
|
6179 |
|
|
#define bfd_mach_mrisc2 2
|
6180 |
|
|
#define bfd_mach_ms2 3
|
6181 |
|
|
bfd_arch_pj,
|
6182 |
|
|
bfd_arch_avr, /* Atmel AVR microcontrollers. */
|
6183 |
|
|
#define bfd_mach_avr1 1
|
6184 |
|
|
#define bfd_mach_avr2 2
|
6185 |
|
|
#define bfd_mach_avr3 3
|
6186 |
|
|
#define bfd_mach_avr4 4
|
6187 |
|
|
#define bfd_mach_avr5 5
|
6188 |
|
|
#define bfd_mach_avr6 6
|
6189 |
|
|
bfd_arch_bfin, /* ADI Blackfin */
|
6190 |
|
|
#define bfd_mach_bfin 1
|
6191 |
|
|
bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
|
6192 |
|
|
#define bfd_mach_cr16 1
|
6193 |
|
|
bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
|
6194 |
|
|
#define bfd_mach_cr16c 1
|
6195 |
|
|
bfd_arch_crx, /* National Semiconductor CRX. */
|
6196 |
|
|
#define bfd_mach_crx 1
|
6197 |
|
|
bfd_arch_cris, /* Axis CRIS */
|
6198 |
|
|
#define bfd_mach_cris_v0_v10 255
|
6199 |
|
|
#define bfd_mach_cris_v32 32
|
6200 |
|
|
#define bfd_mach_cris_v10_v32 1032
|
6201 |
|
|
bfd_arch_s390, /* IBM s390 */
|
6202 |
|
|
#define bfd_mach_s390_31 31
|
6203 |
|
|
#define bfd_mach_s390_64 64
|
6204 |
|
|
bfd_arch_score, /* Sunplus score */
|
6205 |
|
|
bfd_arch_openrisc, /* OpenRISC */
|
6206 |
|
|
bfd_arch_mmix, /* Donald Knuth's educational processor. */
|
6207 |
|
|
bfd_arch_xstormy16,
|
6208 |
|
|
#define bfd_mach_xstormy16 1
|
6209 |
|
|
bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
|
6210 |
|
|
#define bfd_mach_msp11 11
|
6211 |
|
|
#define bfd_mach_msp110 110
|
6212 |
|
|
#define bfd_mach_msp12 12
|
6213 |
|
|
#define bfd_mach_msp13 13
|
6214 |
|
|
#define bfd_mach_msp14 14
|
6215 |
|
|
#define bfd_mach_msp15 15
|
6216 |
|
|
#define bfd_mach_msp16 16
|
6217 |
|
|
#define bfd_mach_msp21 21
|
6218 |
|
|
#define bfd_mach_msp31 31
|
6219 |
|
|
#define bfd_mach_msp32 32
|
6220 |
|
|
#define bfd_mach_msp33 33
|
6221 |
|
|
#define bfd_mach_msp41 41
|
6222 |
|
|
#define bfd_mach_msp42 42
|
6223 |
|
|
#define bfd_mach_msp43 43
|
6224 |
|
|
#define bfd_mach_msp44 44
|
6225 |
|
|
bfd_arch_xc16x, /* Infineon's XC16X Series. */
|
6226 |
|
|
#define bfd_mach_xc16x 1
|
6227 |
|
|
#define bfd_mach_xc16xl 2
|
6228 |
|
|
#define bfd_mach_xc16xs 3
|
6229 |
|
|
bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
|
6230 |
|
|
#define bfd_mach_xtensa 1
|
6231 |
|
|
bfd_arch_maxq, /* Dallas MAXQ 10/20 */
|
6232 |
|
|
#define bfd_mach_maxq10 10
|
6233 |
|
|
#define bfd_mach_maxq20 20
|
6234 |
|
|
bfd_arch_z80,
|
6235 |
|
|
#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
|
6236 |
|
|
#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
|
6237 |
|
|
#define bfd_mach_z80full 7 /* All undocumented instructions. */
|
6238 |
|
|
#define bfd_mach_r800 11 /* R800: successor with multiplication. */
|
6239 |
|
|
bfd_arch_last
|
6240 |
|
|
};
|
6241 |
|
|
|
6242 |
|
|
2.13.2 bfd_arch_info
|
6243 |
|
|
--------------------
|
6244 |
|
|
|
6245 |
|
|
*Description*
|
6246 |
|
|
This structure contains information on architectures for use within BFD.
|
6247 |
|
|
|
6248 |
|
|
typedef struct bfd_arch_info
|
6249 |
|
|
{
|
6250 |
|
|
int bits_per_word;
|
6251 |
|
|
int bits_per_address;
|
6252 |
|
|
int bits_per_byte;
|
6253 |
|
|
enum bfd_architecture arch;
|
6254 |
|
|
unsigned long mach;
|
6255 |
|
|
const char *arch_name;
|
6256 |
|
|
const char *printable_name;
|
6257 |
|
|
unsigned int section_align_power;
|
6258 |
|
|
/* TRUE if this is the default machine for the architecture.
|
6259 |
|
|
The default arch should be the first entry for an arch so that
|
6260 |
|
|
all the entries for that arch can be accessed via `next'. */
|
6261 |
|
|
bfd_boolean the_default;
|
6262 |
|
|
const struct bfd_arch_info * (*compatible)
|
6263 |
|
|
(const struct bfd_arch_info *a, const struct bfd_arch_info *b);
|
6264 |
|
|
|
6265 |
|
|
bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
|
6266 |
|
|
|
6267 |
|
|
const struct bfd_arch_info *next;
|
6268 |
|
|
}
|
6269 |
|
|
bfd_arch_info_type;
|
6270 |
|
|
|
6271 |
|
|
2.13.2.1 `bfd_printable_name'
|
6272 |
|
|
.............................
|
6273 |
|
|
|
6274 |
|
|
*Synopsis*
|
6275 |
|
|
const char *bfd_printable_name (bfd *abfd);
|
6276 |
|
|
*Description*
|
6277 |
|
|
Return a printable string representing the architecture and machine
|
6278 |
|
|
from the pointer to the architecture info structure.
|
6279 |
|
|
|
6280 |
|
|
2.13.2.2 `bfd_scan_arch'
|
6281 |
|
|
........................
|
6282 |
|
|
|
6283 |
|
|
*Synopsis*
|
6284 |
|
|
const bfd_arch_info_type *bfd_scan_arch (const char *string);
|
6285 |
|
|
*Description*
|
6286 |
|
|
Figure out if BFD supports any cpu which could be described with the
|
6287 |
|
|
name STRING. Return a pointer to an `arch_info' structure if a machine
|
6288 |
|
|
is found, otherwise NULL.
|
6289 |
|
|
|
6290 |
|
|
2.13.2.3 `bfd_arch_list'
|
6291 |
|
|
........................
|
6292 |
|
|
|
6293 |
|
|
*Synopsis*
|
6294 |
|
|
const char **bfd_arch_list (void);
|
6295 |
|
|
*Description*
|
6296 |
|
|
Return a freshly malloced NULL-terminated vector of the names of all
|
6297 |
|
|
the valid BFD architectures. Do not modify the names.
|
6298 |
|
|
|
6299 |
|
|
2.13.2.4 `bfd_arch_get_compatible'
|
6300 |
|
|
..................................
|
6301 |
|
|
|
6302 |
|
|
*Synopsis*
|
6303 |
|
|
const bfd_arch_info_type *bfd_arch_get_compatible
|
6304 |
|
|
(const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
|
6305 |
|
|
*Description*
|
6306 |
|
|
Determine whether two BFDs' architectures and machine types are
|
6307 |
|
|
compatible. Calculates the lowest common denominator between the two
|
6308 |
|
|
architectures and machine types implied by the BFDs and returns a
|
6309 |
|
|
pointer to an `arch_info' structure describing the compatible machine.
|
6310 |
|
|
|
6311 |
|
|
2.13.2.5 `bfd_default_arch_struct'
|
6312 |
|
|
..................................
|
6313 |
|
|
|
6314 |
|
|
*Description*
|
6315 |
|
|
The `bfd_default_arch_struct' is an item of `bfd_arch_info_type' which
|
6316 |
|
|
has been initialized to a fairly generic state. A BFD starts life by
|
6317 |
|
|
pointing to this structure, until the correct back end has determined
|
6318 |
|
|
the real architecture of the file.
|
6319 |
|
|
extern const bfd_arch_info_type bfd_default_arch_struct;
|
6320 |
|
|
|
6321 |
|
|
2.13.2.6 `bfd_set_arch_info'
|
6322 |
|
|
............................
|
6323 |
|
|
|
6324 |
|
|
*Synopsis*
|
6325 |
|
|
void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
|
6326 |
|
|
*Description*
|
6327 |
|
|
Set the architecture info of ABFD to ARG.
|
6328 |
|
|
|
6329 |
|
|
2.13.2.7 `bfd_default_set_arch_mach'
|
6330 |
|
|
....................................
|
6331 |
|
|
|
6332 |
|
|
*Synopsis*
|
6333 |
|
|
bfd_boolean bfd_default_set_arch_mach
|
6334 |
|
|
(bfd *abfd, enum bfd_architecture arch, unsigned long mach);
|
6335 |
|
|
*Description*
|
6336 |
|
|
Set the architecture and machine type in BFD ABFD to ARCH and MACH.
|
6337 |
|
|
Find the correct pointer to a structure and insert it into the
|
6338 |
|
|
`arch_info' pointer.
|
6339 |
|
|
|
6340 |
|
|
2.13.2.8 `bfd_get_arch'
|
6341 |
|
|
.......................
|
6342 |
|
|
|
6343 |
|
|
*Synopsis*
|
6344 |
|
|
enum bfd_architecture bfd_get_arch (bfd *abfd);
|
6345 |
|
|
*Description*
|
6346 |
|
|
Return the enumerated type which describes the BFD ABFD's architecture.
|
6347 |
|
|
|
6348 |
|
|
2.13.2.9 `bfd_get_mach'
|
6349 |
|
|
.......................
|
6350 |
|
|
|
6351 |
|
|
*Synopsis*
|
6352 |
|
|
unsigned long bfd_get_mach (bfd *abfd);
|
6353 |
|
|
*Description*
|
6354 |
|
|
Return the long type which describes the BFD ABFD's machine.
|
6355 |
|
|
|
6356 |
|
|
2.13.2.10 `bfd_arch_bits_per_byte'
|
6357 |
|
|
..................................
|
6358 |
|
|
|
6359 |
|
|
*Synopsis*
|
6360 |
|
|
unsigned int bfd_arch_bits_per_byte (bfd *abfd);
|
6361 |
|
|
*Description*
|
6362 |
|
|
Return the number of bits in one of the BFD ABFD's architecture's bytes.
|
6363 |
|
|
|
6364 |
|
|
2.13.2.11 `bfd_arch_bits_per_address'
|
6365 |
|
|
.....................................
|
6366 |
|
|
|
6367 |
|
|
*Synopsis*
|
6368 |
|
|
unsigned int bfd_arch_bits_per_address (bfd *abfd);
|
6369 |
|
|
*Description*
|
6370 |
|
|
Return the number of bits in one of the BFD ABFD's architecture's
|
6371 |
|
|
addresses.
|
6372 |
|
|
|
6373 |
|
|
2.13.2.12 `bfd_default_compatible'
|
6374 |
|
|
..................................
|
6375 |
|
|
|
6376 |
|
|
*Synopsis*
|
6377 |
|
|
const bfd_arch_info_type *bfd_default_compatible
|
6378 |
|
|
(const bfd_arch_info_type *a, const bfd_arch_info_type *b);
|
6379 |
|
|
*Description*
|
6380 |
|
|
The default function for testing for compatibility.
|
6381 |
|
|
|
6382 |
|
|
2.13.2.13 `bfd_default_scan'
|
6383 |
|
|
............................
|
6384 |
|
|
|
6385 |
|
|
*Synopsis*
|
6386 |
|
|
bfd_boolean bfd_default_scan
|
6387 |
|
|
(const struct bfd_arch_info *info, const char *string);
|
6388 |
|
|
*Description*
|
6389 |
|
|
The default function for working out whether this is an architecture
|
6390 |
|
|
hit and a machine hit.
|
6391 |
|
|
|
6392 |
|
|
2.13.2.14 `bfd_get_arch_info'
|
6393 |
|
|
.............................
|
6394 |
|
|
|
6395 |
|
|
*Synopsis*
|
6396 |
|
|
const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
|
6397 |
|
|
*Description*
|
6398 |
|
|
Return the architecture info struct in ABFD.
|
6399 |
|
|
|
6400 |
|
|
2.13.2.15 `bfd_lookup_arch'
|
6401 |
|
|
...........................
|
6402 |
|
|
|
6403 |
|
|
*Synopsis*
|
6404 |
|
|
const bfd_arch_info_type *bfd_lookup_arch
|
6405 |
|
|
(enum bfd_architecture arch, unsigned long machine);
|
6406 |
|
|
*Description*
|
6407 |
|
|
Look for the architecture info structure which matches the arguments
|
6408 |
|
|
ARCH and MACHINE. A machine of 0 matches the machine/architecture
|
6409 |
|
|
structure which marks itself as the default.
|
6410 |
|
|
|
6411 |
|
|
2.13.2.16 `bfd_printable_arch_mach'
|
6412 |
|
|
...................................
|
6413 |
|
|
|
6414 |
|
|
*Synopsis*
|
6415 |
|
|
const char *bfd_printable_arch_mach
|
6416 |
|
|
(enum bfd_architecture arch, unsigned long machine);
|
6417 |
|
|
*Description*
|
6418 |
|
|
Return a printable string representing the architecture and machine
|
6419 |
|
|
type.
|
6420 |
|
|
|
6421 |
|
|
This routine is depreciated.
|
6422 |
|
|
|
6423 |
|
|
2.13.2.17 `bfd_octets_per_byte'
|
6424 |
|
|
...............................
|
6425 |
|
|
|
6426 |
|
|
*Synopsis*
|
6427 |
|
|
unsigned int bfd_octets_per_byte (bfd *abfd);
|
6428 |
|
|
*Description*
|
6429 |
|
|
Return the number of octets (8-bit quantities) per target byte (minimum
|
6430 |
|
|
addressable unit). In most cases, this will be one, but some DSP
|
6431 |
|
|
targets have 16, 32, or even 48 bits per byte.
|
6432 |
|
|
|
6433 |
|
|
2.13.2.18 `bfd_arch_mach_octets_per_byte'
|
6434 |
|
|
.........................................
|
6435 |
|
|
|
6436 |
|
|
*Synopsis*
|
6437 |
|
|
unsigned int bfd_arch_mach_octets_per_byte
|
6438 |
|
|
(enum bfd_architecture arch, unsigned long machine);
|
6439 |
|
|
*Description*
|
6440 |
|
|
See bfd_octets_per_byte.
|
6441 |
|
|
|
6442 |
|
|
This routine is provided for those cases where a bfd * is not
|
6443 |
|
|
available
|
6444 |
|
|
|
6445 |
|
|
|
6446 |
|
|
File: bfd.info, Node: Opening and Closing, Next: Internal, Prev: Architectures, Up: BFD front end
|
6447 |
|
|
|
6448 |
|
|
2.14 Opening and closing BFDs
|
6449 |
|
|
=============================
|
6450 |
|
|
|
6451 |
|
|
2.14.1 Functions for opening and closing
|
6452 |
|
|
----------------------------------------
|
6453 |
|
|
|
6454 |
|
|
2.14.1.1 `bfd_fopen'
|
6455 |
|
|
....................
|
6456 |
|
|
|
6457 |
|
|
*Synopsis*
|
6458 |
|
|
bfd *bfd_fopen (const char *filename, const char *target,
|
6459 |
|
|
const char *mode, int fd);
|
6460 |
|
|
*Description*
|
6461 |
|
|
Open the file FILENAME with the target TARGET. Return a pointer to the
|
6462 |
|
|
created BFD. If FD is not -1, then `fdopen' is used to open the file;
|
6463 |
|
|
otherwise, `fopen' is used. MODE is passed directly to `fopen' or
|
6464 |
|
|
`fdopen'.
|
6465 |
|
|
|
6466 |
|
|
Calls `bfd_find_target', so TARGET is interpreted as by that
|
6467 |
|
|
function.
|
6468 |
|
|
|
6469 |
|
|
The new BFD is marked as cacheable iff FD is -1.
|
6470 |
|
|
|
6471 |
|
|
If `NULL' is returned then an error has occured. Possible errors
|
6472 |
|
|
are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call'
|
6473 |
|
|
error.
|
6474 |
|
|
|
6475 |
|
|
2.14.1.2 `bfd_openr'
|
6476 |
|
|
....................
|
6477 |
|
|
|
6478 |
|
|
*Synopsis*
|
6479 |
|
|
bfd *bfd_openr (const char *filename, const char *target);
|
6480 |
|
|
*Description*
|
6481 |
|
|
Open the file FILENAME (using `fopen') with the target TARGET. Return
|
6482 |
|
|
a pointer to the created BFD.
|
6483 |
|
|
|
6484 |
|
|
Calls `bfd_find_target', so TARGET is interpreted as by that
|
6485 |
|
|
function.
|
6486 |
|
|
|
6487 |
|
|
If `NULL' is returned then an error has occured. Possible errors
|
6488 |
|
|
are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call'
|
6489 |
|
|
error.
|
6490 |
|
|
|
6491 |
|
|
2.14.1.3 `bfd_fdopenr'
|
6492 |
|
|
......................
|
6493 |
|
|
|
6494 |
|
|
*Synopsis*
|
6495 |
|
|
bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
|
6496 |
|
|
*Description*
|
6497 |
|
|
`bfd_fdopenr' is to `bfd_fopenr' much like `fdopen' is to `fopen'. It
|
6498 |
|
|
opens a BFD on a file already described by the FD supplied.
|
6499 |
|
|
|
6500 |
|
|
When the file is later `bfd_close'd, the file descriptor will be
|
6501 |
|
|
closed. If the caller desires that this file descriptor be cached by
|
6502 |
|
|
BFD (opened as needed, closed as needed to free descriptors for other
|
6503 |
|
|
opens), with the supplied FD used as an initial file descriptor (but
|
6504 |
|
|
subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the
|
6505 |
|
|
returned BFD. The default is to assume no caching; the file descriptor
|
6506 |
|
|
will remain open until `bfd_close', and will not be affected by BFD
|
6507 |
|
|
operations on other files.
|
6508 |
|
|
|
6509 |
|
|
Possible errors are `bfd_error_no_memory',
|
6510 |
|
|
`bfd_error_invalid_target' and `bfd_error_system_call'.
|
6511 |
|
|
|
6512 |
|
|
2.14.1.4 `bfd_openstreamr'
|
6513 |
|
|
..........................
|
6514 |
|
|
|
6515 |
|
|
*Synopsis*
|
6516 |
|
|
bfd *bfd_openstreamr (const char *, const char *, void *);
|
6517 |
|
|
*Description*
|
6518 |
|
|
Open a BFD for read access on an existing stdio stream. When the BFD
|
6519 |
|
|
is passed to `bfd_close', the stream will be closed.
|
6520 |
|
|
|
6521 |
|
|
2.14.1.5 `bfd_openr_iovec'
|
6522 |
|
|
..........................
|
6523 |
|
|
|
6524 |
|
|
*Synopsis*
|
6525 |
|
|
bfd *bfd_openr_iovec (const char *filename, const char *target,
|
6526 |
|
|
void *(*open) (struct bfd *nbfd,
|
6527 |
|
|
void *open_closure),
|
6528 |
|
|
void *open_closure,
|
6529 |
|
|
file_ptr (*pread) (struct bfd *nbfd,
|
6530 |
|
|
void *stream,
|
6531 |
|
|
void *buf,
|
6532 |
|
|
file_ptr nbytes,
|
6533 |
|
|
file_ptr offset),
|
6534 |
|
|
int (*close) (struct bfd *nbfd,
|
6535 |
|
|
void *stream),
|
6536 |
|
|
int (*stat) (struct bfd *abfd,
|
6537 |
|
|
void *stream,
|
6538 |
|
|
struct stat *sb));
|
6539 |
|
|
*Description*
|
6540 |
|
|
Create and return a BFD backed by a read-only STREAM. The STREAM is
|
6541 |
|
|
created using OPEN, accessed using PREAD and destroyed using CLOSE.
|
6542 |
|
|
|
6543 |
|
|
Calls `bfd_find_target', so TARGET is interpreted as by that
|
6544 |
|
|
function.
|
6545 |
|
|
|
6546 |
|
|
Calls OPEN (which can call `bfd_zalloc' and `bfd_get_filename') to
|
6547 |
|
|
obtain the read-only stream backing the BFD. OPEN either succeeds
|
6548 |
|
|
returning the non-`NULL' STREAM, or fails returning `NULL' (setting
|
6549 |
|
|
`bfd_error').
|
6550 |
|
|
|
6551 |
|
|
Calls PREAD to request NBYTES of data from STREAM starting at OFFSET
|
6552 |
|
|
(e.g., via a call to `bfd_read'). PREAD either succeeds returning the
|
6553 |
|
|
number of bytes read (which can be less than NBYTES when end-of-file),
|
6554 |
|
|
or fails returning -1 (setting `bfd_error').
|
6555 |
|
|
|
6556 |
|
|
Calls CLOSE when the BFD is later closed using `bfd_close'. CLOSE
|
6557 |
|
|
either succeeds returning 0, or fails returning -1 (setting
|
6558 |
|
|
`bfd_error').
|
6559 |
|
|
|
6560 |
|
|
Calls STAT to fill in a stat structure for bfd_stat, bfd_get_size,
|
6561 |
|
|
and bfd_get_mtime calls. STAT returns 0 on success, or returns -1 on
|
6562 |
|
|
failure (setting `bfd_error').
|
6563 |
|
|
|
6564 |
|
|
If `bfd_openr_iovec' returns `NULL' then an error has occurred.
|
6565 |
|
|
Possible errors are `bfd_error_no_memory', `bfd_error_invalid_target'
|
6566 |
|
|
and `bfd_error_system_call'.
|
6567 |
|
|
|
6568 |
|
|
2.14.1.6 `bfd_openw'
|
6569 |
|
|
....................
|
6570 |
|
|
|
6571 |
|
|
*Synopsis*
|
6572 |
|
|
bfd *bfd_openw (const char *filename, const char *target);
|
6573 |
|
|
*Description*
|
6574 |
|
|
Create a BFD, associated with file FILENAME, using the file format
|
6575 |
|
|
TARGET, and return a pointer to it.
|
6576 |
|
|
|
6577 |
|
|
Possible errors are `bfd_error_system_call', `bfd_error_no_memory',
|
6578 |
|
|
`bfd_error_invalid_target'.
|
6579 |
|
|
|
6580 |
|
|
2.14.1.7 `bfd_close'
|
6581 |
|
|
....................
|
6582 |
|
|
|
6583 |
|
|
*Synopsis*
|
6584 |
|
|
bfd_boolean bfd_close (bfd *abfd);
|
6585 |
|
|
*Description*
|
6586 |
|
|
Close a BFD. If the BFD was open for writing, then pending operations
|
6587 |
|
|
are completed and the file written out and closed. If the created file
|
6588 |
|
|
is executable, then `chmod' is called to mark it as such.
|
6589 |
|
|
|
6590 |
|
|
All memory attached to the BFD is released.
|
6591 |
|
|
|
6592 |
|
|
The file descriptor associated with the BFD is closed (even if it
|
6593 |
|
|
was passed in to BFD by `bfd_fdopenr').
|
6594 |
|
|
|
6595 |
|
|
*Returns*
|
6596 |
|
|
`TRUE' is returned if all is ok, otherwise `FALSE'.
|
6597 |
|
|
|
6598 |
|
|
2.14.1.8 `bfd_close_all_done'
|
6599 |
|
|
.............................
|
6600 |
|
|
|
6601 |
|
|
*Synopsis*
|
6602 |
|
|
bfd_boolean bfd_close_all_done (bfd *);
|
6603 |
|
|
*Description*
|
6604 |
|
|
Close a BFD. Differs from `bfd_close' since it does not complete any
|
6605 |
|
|
pending operations. This routine would be used if the application had
|
6606 |
|
|
just used BFD for swapping and didn't want to use any of the writing
|
6607 |
|
|
code.
|
6608 |
|
|
|
6609 |
|
|
If the created file is executable, then `chmod' is called to mark it
|
6610 |
|
|
as such.
|
6611 |
|
|
|
6612 |
|
|
All memory attached to the BFD is released.
|
6613 |
|
|
|
6614 |
|
|
*Returns*
|
6615 |
|
|
`TRUE' is returned if all is ok, otherwise `FALSE'.
|
6616 |
|
|
|
6617 |
|
|
2.14.1.9 `bfd_create'
|
6618 |
|
|
.....................
|
6619 |
|
|
|
6620 |
|
|
*Synopsis*
|
6621 |
|
|
bfd *bfd_create (const char *filename, bfd *templ);
|
6622 |
|
|
*Description*
|
6623 |
|
|
Create a new BFD in the manner of `bfd_openw', but without opening a
|
6624 |
|
|
file. The new BFD takes the target from the target used by TEMPLATE.
|
6625 |
|
|
The format is always set to `bfd_object'.
|
6626 |
|
|
|
6627 |
|
|
2.14.1.10 `bfd_make_writable'
|
6628 |
|
|
.............................
|
6629 |
|
|
|
6630 |
|
|
*Synopsis*
|
6631 |
|
|
bfd_boolean bfd_make_writable (bfd *abfd);
|
6632 |
|
|
*Description*
|
6633 |
|
|
Takes a BFD as created by `bfd_create' and converts it into one like as
|
6634 |
|
|
returned by `bfd_openw'. It does this by converting the BFD to
|
6635 |
|
|
BFD_IN_MEMORY. It's assumed that you will call `bfd_make_readable' on
|
6636 |
|
|
this bfd later.
|
6637 |
|
|
|
6638 |
|
|
*Returns*
|
6639 |
|
|
`TRUE' is returned if all is ok, otherwise `FALSE'.
|
6640 |
|
|
|
6641 |
|
|
2.14.1.11 `bfd_make_readable'
|
6642 |
|
|
.............................
|
6643 |
|
|
|
6644 |
|
|
*Synopsis*
|
6645 |
|
|
bfd_boolean bfd_make_readable (bfd *abfd);
|
6646 |
|
|
*Description*
|
6647 |
|
|
Takes a BFD as created by `bfd_create' and `bfd_make_writable' and
|
6648 |
|
|
converts it into one like as returned by `bfd_openr'. It does this by
|
6649 |
|
|
writing the contents out to the memory buffer, then reversing the
|
6650 |
|
|
direction.
|
6651 |
|
|
|
6652 |
|
|
*Returns*
|
6653 |
|
|
`TRUE' is returned if all is ok, otherwise `FALSE'.
|
6654 |
|
|
|
6655 |
|
|
2.14.1.12 `bfd_alloc'
|
6656 |
|
|
.....................
|
6657 |
|
|
|
6658 |
|
|
*Synopsis*
|
6659 |
|
|
void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
|
6660 |
|
|
*Description*
|
6661 |
|
|
Allocate a block of WANTED bytes of memory attached to `abfd' and
|
6662 |
|
|
return a pointer to it.
|
6663 |
|
|
|
6664 |
|
|
2.14.1.13 `bfd_alloc2'
|
6665 |
|
|
......................
|
6666 |
|
|
|
6667 |
|
|
*Synopsis*
|
6668 |
|
|
void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
|
6669 |
|
|
*Description*
|
6670 |
|
|
Allocate a block of NMEMB elements of SIZE bytes each of memory
|
6671 |
|
|
attached to `abfd' and return a pointer to it.
|
6672 |
|
|
|
6673 |
|
|
2.14.1.14 `bfd_zalloc'
|
6674 |
|
|
......................
|
6675 |
|
|
|
6676 |
|
|
*Synopsis*
|
6677 |
|
|
void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
|
6678 |
|
|
*Description*
|
6679 |
|
|
Allocate a block of WANTED bytes of zeroed memory attached to `abfd'
|
6680 |
|
|
and return a pointer to it.
|
6681 |
|
|
|
6682 |
|
|
2.14.1.15 `bfd_zalloc2'
|
6683 |
|
|
.......................
|
6684 |
|
|
|
6685 |
|
|
*Synopsis*
|
6686 |
|
|
void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
|
6687 |
|
|
*Description*
|
6688 |
|
|
Allocate a block of NMEMB elements of SIZE bytes each of zeroed memory
|
6689 |
|
|
attached to `abfd' and return a pointer to it.
|
6690 |
|
|
|
6691 |
|
|
2.14.1.16 `bfd_calc_gnu_debuglink_crc32'
|
6692 |
|
|
........................................
|
6693 |
|
|
|
6694 |
|
|
*Synopsis*
|
6695 |
|
|
unsigned long bfd_calc_gnu_debuglink_crc32
|
6696 |
|
|
(unsigned long crc, const unsigned char *buf, bfd_size_type len);
|
6697 |
|
|
*Description*
|
6698 |
|
|
Computes a CRC value as used in the .gnu_debuglink section. Advances
|
6699 |
|
|
the previously computed CRC value by computing and adding in the crc32
|
6700 |
|
|
for LEN bytes of BUF.
|
6701 |
|
|
|
6702 |
|
|
*Returns*
|
6703 |
|
|
Return the updated CRC32 value.
|
6704 |
|
|
|
6705 |
|
|
2.14.1.17 `get_debug_link_info'
|
6706 |
|
|
...............................
|
6707 |
|
|
|
6708 |
|
|
*Synopsis*
|
6709 |
|
|
char *get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
|
6710 |
|
|
*Description*
|
6711 |
|
|
fetch the filename and CRC32 value for any separate debuginfo
|
6712 |
|
|
associated with ABFD. Return NULL if no such info found, otherwise
|
6713 |
|
|
return filename and update CRC32_OUT.
|
6714 |
|
|
|
6715 |
|
|
2.14.1.18 `separate_debug_file_exists'
|
6716 |
|
|
......................................
|
6717 |
|
|
|
6718 |
|
|
*Synopsis*
|
6719 |
|
|
bfd_boolean separate_debug_file_exists
|
6720 |
|
|
(char *name, unsigned long crc32);
|
6721 |
|
|
*Description*
|
6722 |
|
|
Checks to see if NAME is a file and if its contents match CRC32.
|
6723 |
|
|
|
6724 |
|
|
2.14.1.19 `find_separate_debug_file'
|
6725 |
|
|
....................................
|
6726 |
|
|
|
6727 |
|
|
*Synopsis*
|
6728 |
|
|
char *find_separate_debug_file (bfd *abfd);
|
6729 |
|
|
*Description*
|
6730 |
|
|
Searches ABFD for a reference to separate debugging information, scans
|
6731 |
|
|
various locations in the filesystem, including the file tree rooted at
|
6732 |
|
|
DEBUG_FILE_DIRECTORY, and returns a filename of such debugging
|
6733 |
|
|
information if the file is found and has matching CRC32. Returns NULL
|
6734 |
|
|
if no reference to debugging file exists, or file cannot be found.
|
6735 |
|
|
|
6736 |
|
|
2.14.1.20 `bfd_follow_gnu_debuglink'
|
6737 |
|
|
....................................
|
6738 |
|
|
|
6739 |
|
|
*Synopsis*
|
6740 |
|
|
char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
|
6741 |
|
|
*Description*
|
6742 |
|
|
Takes a BFD and searches it for a .gnu_debuglink section. If this
|
6743 |
|
|
section is found, it examines the section for the name and checksum of
|
6744 |
|
|
a '.debug' file containing auxiliary debugging information. It then
|
6745 |
|
|
searches the filesystem for this .debug file in some standard
|
6746 |
|
|
locations, including the directory tree rooted at DIR, and if found
|
6747 |
|
|
returns the full filename.
|
6748 |
|
|
|
6749 |
|
|
If DIR is NULL, it will search a default path configured into libbfd
|
6750 |
|
|
at build time. [XXX this feature is not currently implemented].
|
6751 |
|
|
|
6752 |
|
|
*Returns*
|
6753 |
|
|
`NULL' on any errors or failure to locate the .debug file, otherwise a
|
6754 |
|
|
pointer to a heap-allocated string containing the filename. The caller
|
6755 |
|
|
is responsible for freeing this string.
|
6756 |
|
|
|
6757 |
|
|
2.14.1.21 `bfd_create_gnu_debuglink_section'
|
6758 |
|
|
............................................
|
6759 |
|
|
|
6760 |
|
|
*Synopsis*
|
6761 |
|
|
struct bfd_section *bfd_create_gnu_debuglink_section
|
6762 |
|
|
(bfd *abfd, const char *filename);
|
6763 |
|
|
*Description*
|
6764 |
|
|
Takes a BFD and adds a .gnu_debuglink section to it. The section is
|
6765 |
|
|
sized to be big enough to contain a link to the specified FILENAME.
|
6766 |
|
|
|
6767 |
|
|
*Returns*
|
6768 |
|
|
A pointer to the new section is returned if all is ok. Otherwise
|
6769 |
|
|
`NULL' is returned and bfd_error is set.
|
6770 |
|
|
|
6771 |
|
|
2.14.1.22 `bfd_fill_in_gnu_debuglink_section'
|
6772 |
|
|
.............................................
|
6773 |
|
|
|
6774 |
|
|
*Synopsis*
|
6775 |
|
|
bfd_boolean bfd_fill_in_gnu_debuglink_section
|
6776 |
|
|
(bfd *abfd, struct bfd_section *sect, const char *filename);
|
6777 |
|
|
*Description*
|
6778 |
|
|
Takes a BFD and containing a .gnu_debuglink section SECT and fills in
|
6779 |
|
|
the contents of the section to contain a link to the specified
|
6780 |
|
|
FILENAME. The filename should be relative to the current directory.
|
6781 |
|
|
|
6782 |
|
|
*Returns*
|
6783 |
|
|
`TRUE' is returned if all is ok. Otherwise `FALSE' is returned and
|
6784 |
|
|
bfd_error is set.
|
6785 |
|
|
|
6786 |
|
|
|
6787 |
|
|
File: bfd.info, Node: Internal, Next: File Caching, Prev: Opening and Closing, Up: BFD front end
|
6788 |
|
|
|
6789 |
|
|
2.15 Implementation details
|
6790 |
|
|
===========================
|
6791 |
|
|
|
6792 |
|
|
2.15.1 Internal functions
|
6793 |
|
|
-------------------------
|
6794 |
|
|
|
6795 |
|
|
*Description*
|
6796 |
|
|
These routines are used within BFD. They are not intended for export,
|
6797 |
|
|
but are documented here for completeness.
|
6798 |
|
|
|
6799 |
|
|
2.15.1.1 `bfd_write_bigendian_4byte_int'
|
6800 |
|
|
........................................
|
6801 |
|
|
|
6802 |
|
|
*Synopsis*
|
6803 |
|
|
bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
|
6804 |
|
|
*Description*
|
6805 |
|
|
Write a 4 byte integer I to the output BFD ABFD, in big endian order
|
6806 |
|
|
regardless of what else is going on. This is useful in archives.
|
6807 |
|
|
|
6808 |
|
|
2.15.1.2 `bfd_put_size'
|
6809 |
|
|
.......................
|
6810 |
|
|
|
6811 |
|
|
2.15.1.3 `bfd_get_size'
|
6812 |
|
|
.......................
|
6813 |
|
|
|
6814 |
|
|
*Description*
|
6815 |
|
|
These macros as used for reading and writing raw data in sections; each
|
6816 |
|
|
access (except for bytes) is vectored through the target format of the
|
6817 |
|
|
BFD and mangled accordingly. The mangling performs any necessary endian
|
6818 |
|
|
translations and removes alignment restrictions. Note that types
|
6819 |
|
|
accepted and returned by these macros are identical so they can be
|
6820 |
|
|
swapped around in macros--for example, `libaout.h' defines `GET_WORD'
|
6821 |
|
|
to either `bfd_get_32' or `bfd_get_64'.
|
6822 |
|
|
|
6823 |
|
|
In the put routines, VAL must be a `bfd_vma'. If we are on a system
|
6824 |
|
|
without prototypes, the caller is responsible for making sure that is
|
6825 |
|
|
true, with a cast if necessary. We don't cast them in the macro
|
6826 |
|
|
definitions because that would prevent `lint' or `gcc -Wall' from
|
6827 |
|
|
detecting sins such as passing a pointer. To detect calling these with
|
6828 |
|
|
less than a `bfd_vma', use `gcc -Wconversion' on a host with 64 bit
|
6829 |
|
|
`bfd_vma''s.
|
6830 |
|
|
|
6831 |
|
|
/* Byte swapping macros for user section data. */
|
6832 |
|
|
|
6833 |
|
|
#define bfd_put_8(abfd, val, ptr) \
|
6834 |
|
|
((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
|
6835 |
|
|
#define bfd_put_signed_8 \
|
6836 |
|
|
bfd_put_8
|
6837 |
|
|
#define bfd_get_8(abfd, ptr) \
|
6838 |
|
|
(*(unsigned char *) (ptr) & 0xff)
|
6839 |
|
|
#define bfd_get_signed_8(abfd, ptr) \
|
6840 |
|
|
(((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
|
6841 |
|
|
|
6842 |
|
|
#define bfd_put_16(abfd, val, ptr) \
|
6843 |
|
|
BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
|
6844 |
|
|
#define bfd_put_signed_16 \
|
6845 |
|
|
bfd_put_16
|
6846 |
|
|
#define bfd_get_16(abfd, ptr) \
|
6847 |
|
|
BFD_SEND (abfd, bfd_getx16, (ptr))
|
6848 |
|
|
#define bfd_get_signed_16(abfd, ptr) \
|
6849 |
|
|
BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
|
6850 |
|
|
|
6851 |
|
|
#define bfd_put_32(abfd, val, ptr) \
|
6852 |
|
|
BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
|
6853 |
|
|
#define bfd_put_signed_32 \
|
6854 |
|
|
bfd_put_32
|
6855 |
|
|
#define bfd_get_32(abfd, ptr) \
|
6856 |
|
|
BFD_SEND (abfd, bfd_getx32, (ptr))
|
6857 |
|
|
#define bfd_get_signed_32(abfd, ptr) \
|
6858 |
|
|
BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
|
6859 |
|
|
|
6860 |
|
|
#define bfd_put_64(abfd, val, ptr) \
|
6861 |
|
|
BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
|
6862 |
|
|
#define bfd_put_signed_64 \
|
6863 |
|
|
bfd_put_64
|
6864 |
|
|
#define bfd_get_64(abfd, ptr) \
|
6865 |
|
|
BFD_SEND (abfd, bfd_getx64, (ptr))
|
6866 |
|
|
#define bfd_get_signed_64(abfd, ptr) \
|
6867 |
|
|
BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
|
6868 |
|
|
|
6869 |
|
|
#define bfd_get(bits, abfd, ptr) \
|
6870 |
|
|
((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
|
6871 |
|
|
: (bits) == 16 ? bfd_get_16 (abfd, ptr) \
|
6872 |
|
|
: (bits) == 32 ? bfd_get_32 (abfd, ptr) \
|
6873 |
|
|
: (bits) == 64 ? bfd_get_64 (abfd, ptr) \
|
6874 |
|
|
: (abort (), (bfd_vma) - 1))
|
6875 |
|
|
|
6876 |
|
|
#define bfd_put(bits, abfd, val, ptr) \
|
6877 |
|
|
((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
|
6878 |
|
|
: (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
|
6879 |
|
|
: (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
|
6880 |
|
|
: (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
|
6881 |
|
|
: (abort (), (void) 0))
|
6882 |
|
|
|
6883 |
|
|
2.15.1.4 `bfd_h_put_size'
|
6884 |
|
|
.........................
|
6885 |
|
|
|
6886 |
|
|
*Description*
|
6887 |
|
|
These macros have the same function as their `bfd_get_x' brethren,
|
6888 |
|
|
except that they are used for removing information for the header
|
6889 |
|
|
records of object files. Believe it or not, some object files keep
|
6890 |
|
|
their header records in big endian order and their data in little
|
6891 |
|
|
endian order.
|
6892 |
|
|
|
6893 |
|
|
/* Byte swapping macros for file header data. */
|
6894 |
|
|
|
6895 |
|
|
#define bfd_h_put_8(abfd, val, ptr) \
|
6896 |
|
|
bfd_put_8 (abfd, val, ptr)
|
6897 |
|
|
#define bfd_h_put_signed_8(abfd, val, ptr) \
|
6898 |
|
|
bfd_put_8 (abfd, val, ptr)
|
6899 |
|
|
#define bfd_h_get_8(abfd, ptr) \
|
6900 |
|
|
bfd_get_8 (abfd, ptr)
|
6901 |
|
|
#define bfd_h_get_signed_8(abfd, ptr) \
|
6902 |
|
|
bfd_get_signed_8 (abfd, ptr)
|
6903 |
|
|
|
6904 |
|
|
#define bfd_h_put_16(abfd, val, ptr) \
|
6905 |
|
|
BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
|
6906 |
|
|
#define bfd_h_put_signed_16 \
|
6907 |
|
|
bfd_h_put_16
|
6908 |
|
|
#define bfd_h_get_16(abfd, ptr) \
|
6909 |
|
|
BFD_SEND (abfd, bfd_h_getx16, (ptr))
|
6910 |
|
|
#define bfd_h_get_signed_16(abfd, ptr) \
|
6911 |
|
|
BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
|
6912 |
|
|
|
6913 |
|
|
#define bfd_h_put_32(abfd, val, ptr) \
|
6914 |
|
|
BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
|
6915 |
|
|
#define bfd_h_put_signed_32 \
|
6916 |
|
|
bfd_h_put_32
|
6917 |
|
|
#define bfd_h_get_32(abfd, ptr) \
|
6918 |
|
|
BFD_SEND (abfd, bfd_h_getx32, (ptr))
|
6919 |
|
|
#define bfd_h_get_signed_32(abfd, ptr) \
|
6920 |
|
|
BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
|
6921 |
|
|
|
6922 |
|
|
#define bfd_h_put_64(abfd, val, ptr) \
|
6923 |
|
|
BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
|
6924 |
|
|
#define bfd_h_put_signed_64 \
|
6925 |
|
|
bfd_h_put_64
|
6926 |
|
|
#define bfd_h_get_64(abfd, ptr) \
|
6927 |
|
|
BFD_SEND (abfd, bfd_h_getx64, (ptr))
|
6928 |
|
|
#define bfd_h_get_signed_64(abfd, ptr) \
|
6929 |
|
|
BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
|
6930 |
|
|
|
6931 |
|
|
/* Aliases for the above, which should eventually go away. */
|
6932 |
|
|
|
6933 |
|
|
#define H_PUT_64 bfd_h_put_64
|
6934 |
|
|
#define H_PUT_32 bfd_h_put_32
|
6935 |
|
|
#define H_PUT_16 bfd_h_put_16
|
6936 |
|
|
#define H_PUT_8 bfd_h_put_8
|
6937 |
|
|
#define H_PUT_S64 bfd_h_put_signed_64
|
6938 |
|
|
#define H_PUT_S32 bfd_h_put_signed_32
|
6939 |
|
|
#define H_PUT_S16 bfd_h_put_signed_16
|
6940 |
|
|
#define H_PUT_S8 bfd_h_put_signed_8
|
6941 |
|
|
#define H_GET_64 bfd_h_get_64
|
6942 |
|
|
#define H_GET_32 bfd_h_get_32
|
6943 |
|
|
#define H_GET_16 bfd_h_get_16
|
6944 |
|
|
#define H_GET_8 bfd_h_get_8
|
6945 |
|
|
#define H_GET_S64 bfd_h_get_signed_64
|
6946 |
|
|
#define H_GET_S32 bfd_h_get_signed_32
|
6947 |
|
|
#define H_GET_S16 bfd_h_get_signed_16
|
6948 |
|
|
#define H_GET_S8 bfd_h_get_signed_8
|
6949 |
|
|
|
6950 |
|
|
2.15.1.5 `bfd_log2'
|
6951 |
|
|
...................
|
6952 |
|
|
|
6953 |
|
|
*Synopsis*
|
6954 |
|
|
unsigned int bfd_log2 (bfd_vma x);
|
6955 |
|
|
*Description*
|
6956 |
|
|
Return the log base 2 of the value supplied, rounded up. E.g., an X of
|
6957 |
|
|
1025 returns 11. A X of 0 returns 0.
|
6958 |
|
|
|
6959 |
|
|
|
6960 |
|
|
File: bfd.info, Node: File Caching, Next: Linker Functions, Prev: Internal, Up: BFD front end
|
6961 |
|
|
|
6962 |
|
|
2.16 File caching
|
6963 |
|
|
=================
|
6964 |
|
|
|
6965 |
|
|
The file caching mechanism is embedded within BFD and allows the
|
6966 |
|
|
application to open as many BFDs as it wants without regard to the
|
6967 |
|
|
underlying operating system's file descriptor limit (often as low as 20
|
6968 |
|
|
open files). The module in `cache.c' maintains a least recently used
|
6969 |
|
|
list of `BFD_CACHE_MAX_OPEN' files, and exports the name
|
6970 |
|
|
`bfd_cache_lookup', which runs around and makes sure that the required
|
6971 |
|
|
BFD is open. If not, then it chooses a file to close, closes it and
|
6972 |
|
|
opens the one wanted, returning its file handle.
|
6973 |
|
|
|
6974 |
|
|
2.16.1 Caching functions
|
6975 |
|
|
------------------------
|
6976 |
|
|
|
6977 |
|
|
2.16.1.1 `bfd_cache_init'
|
6978 |
|
|
.........................
|
6979 |
|
|
|
6980 |
|
|
*Synopsis*
|
6981 |
|
|
bfd_boolean bfd_cache_init (bfd *abfd);
|
6982 |
|
|
*Description*
|
6983 |
|
|
Add a newly opened BFD to the cache.
|
6984 |
|
|
|
6985 |
|
|
2.16.1.2 `bfd_cache_close'
|
6986 |
|
|
..........................
|
6987 |
|
|
|
6988 |
|
|
*Synopsis*
|
6989 |
|
|
bfd_boolean bfd_cache_close (bfd *abfd);
|
6990 |
|
|
*Description*
|
6991 |
|
|
Remove the BFD ABFD from the cache. If the attached file is open, then
|
6992 |
|
|
close it too.
|
6993 |
|
|
|
6994 |
|
|
*Returns*
|
6995 |
|
|
`FALSE' is returned if closing the file fails, `TRUE' is returned if
|
6996 |
|
|
all is well.
|
6997 |
|
|
|
6998 |
|
|
2.16.1.3 `bfd_cache_close_all'
|
6999 |
|
|
..............................
|
7000 |
|
|
|
7001 |
|
|
*Synopsis*
|
7002 |
|
|
bfd_boolean bfd_cache_close_all (void);
|
7003 |
|
|
*Description*
|
7004 |
|
|
Remove all BFDs from the cache. If the attached file is open, then
|
7005 |
|
|
close it too.
|
7006 |
|
|
|
7007 |
|
|
*Returns*
|
7008 |
|
|
`FALSE' is returned if closing one of the file fails, `TRUE' is
|
7009 |
|
|
returned if all is well.
|
7010 |
|
|
|
7011 |
|
|
2.16.1.4 `bfd_open_file'
|
7012 |
|
|
........................
|
7013 |
|
|
|
7014 |
|
|
*Synopsis*
|
7015 |
|
|
FILE* bfd_open_file (bfd *abfd);
|
7016 |
|
|
*Description*
|
7017 |
|
|
Call the OS to open a file for ABFD. Return the `FILE *' (possibly
|
7018 |
|
|
`NULL') that results from this operation. Set up the BFD so that
|
7019 |
|
|
future accesses know the file is open. If the `FILE *' returned is
|
7020 |
|
|
`NULL', then it won't have been put in the cache, so it won't have to
|
7021 |
|
|
be removed from it.
|
7022 |
|
|
|
7023 |
|
|
|
7024 |
|
|
File: bfd.info, Node: Linker Functions, Next: Hash Tables, Prev: File Caching, Up: BFD front end
|
7025 |
|
|
|
7026 |
|
|
2.17 Linker Functions
|
7027 |
|
|
=====================
|
7028 |
|
|
|
7029 |
|
|
The linker uses three special entry points in the BFD target vector.
|
7030 |
|
|
It is not necessary to write special routines for these entry points
|
7031 |
|
|
when creating a new BFD back end, since generic versions are provided.
|
7032 |
|
|
However, writing them can speed up linking and make it use
|
7033 |
|
|
significantly less runtime memory.
|
7034 |
|
|
|
7035 |
|
|
The first routine creates a hash table used by the other routines.
|
7036 |
|
|
The second routine adds the symbols from an object file to the hash
|
7037 |
|
|
table. The third routine takes all the object files and links them
|
7038 |
|
|
together to create the output file. These routines are designed so
|
7039 |
|
|
that the linker proper does not need to know anything about the symbols
|
7040 |
|
|
in the object files that it is linking. The linker merely arranges the
|
7041 |
|
|
sections as directed by the linker script and lets BFD handle the
|
7042 |
|
|
details of symbols and relocs.
|
7043 |
|
|
|
7044 |
|
|
The second routine and third routines are passed a pointer to a
|
7045 |
|
|
`struct bfd_link_info' structure (defined in `bfdlink.h') which holds
|
7046 |
|
|
information relevant to the link, including the linker hash table
|
7047 |
|
|
(which was created by the first routine) and a set of callback
|
7048 |
|
|
functions to the linker proper.
|
7049 |
|
|
|
7050 |
|
|
The generic linker routines are in `linker.c', and use the header
|
7051 |
|
|
file `genlink.h'. As of this writing, the only back ends which have
|
7052 |
|
|
implemented versions of these routines are a.out (in `aoutx.h') and
|
7053 |
|
|
ECOFF (in `ecoff.c'). The a.out routines are used as examples
|
7054 |
|
|
throughout this section.
|
7055 |
|
|
|
7056 |
|
|
* Menu:
|
7057 |
|
|
|
7058 |
|
|
* Creating a Linker Hash Table::
|
7059 |
|
|
* Adding Symbols to the Hash Table::
|
7060 |
|
|
* Performing the Final Link::
|
7061 |
|
|
|
7062 |
|
|
|
7063 |
|
|
File: bfd.info, Node: Creating a Linker Hash Table, Next: Adding Symbols to the Hash Table, Prev: Linker Functions, Up: Linker Functions
|
7064 |
|
|
|
7065 |
|
|
2.17.1 Creating a linker hash table
|
7066 |
|
|
-----------------------------------
|
7067 |
|
|
|
7068 |
|
|
The linker routines must create a hash table, which must be derived
|
7069 |
|
|
from `struct bfd_link_hash_table' described in `bfdlink.c'. *Note Hash
|
7070 |
|
|
Tables::, for information on how to create a derived hash table. This
|
7071 |
|
|
entry point is called using the target vector of the linker output file.
|
7072 |
|
|
|
7073 |
|
|
The `_bfd_link_hash_table_create' entry point must allocate and
|
7074 |
|
|
initialize an instance of the desired hash table. If the back end does
|
7075 |
|
|
not require any additional information to be stored with the entries in
|
7076 |
|
|
the hash table, the entry point may simply create a `struct
|
7077 |
|
|
bfd_link_hash_table'. Most likely, however, some additional
|
7078 |
|
|
information will be needed.
|
7079 |
|
|
|
7080 |
|
|
For example, with each entry in the hash table the a.out linker
|
7081 |
|
|
keeps the index the symbol has in the final output file (this index
|
7082 |
|
|
number is used so that when doing a relocatable link the symbol index
|
7083 |
|
|
used in the output file can be quickly filled in when copying over a
|
7084 |
|
|
reloc). The a.out linker code defines the required structures and
|
7085 |
|
|
functions for a hash table derived from `struct bfd_link_hash_table'.
|
7086 |
|
|
The a.out linker hash table is created by the function
|
7087 |
|
|
`NAME(aout,link_hash_table_create)'; it simply allocates space for the
|
7088 |
|
|
hash table, initializes it, and returns a pointer to it.
|
7089 |
|
|
|
7090 |
|
|
When writing the linker routines for a new back end, you will
|
7091 |
|
|
generally not know exactly which fields will be required until you have
|
7092 |
|
|
finished. You should simply create a new hash table which defines no
|
7093 |
|
|
additional fields, and then simply add fields as they become necessary.
|
7094 |
|
|
|
7095 |
|
|
|
7096 |
|
|
File: bfd.info, Node: Adding Symbols to the Hash Table, Next: Performing the Final Link, Prev: Creating a Linker Hash Table, Up: Linker Functions
|
7097 |
|
|
|
7098 |
|
|
2.17.2 Adding symbols to the hash table
|
7099 |
|
|
---------------------------------------
|
7100 |
|
|
|
7101 |
|
|
The linker proper will call the `_bfd_link_add_symbols' entry point for
|
7102 |
|
|
each object file or archive which is to be linked (typically these are
|
7103 |
|
|
the files named on the command line, but some may also come from the
|
7104 |
|
|
linker script). The entry point is responsible for examining the file.
|
7105 |
|
|
For an object file, BFD must add any relevant symbol information to
|
7106 |
|
|
the hash table. For an archive, BFD must determine which elements of
|
7107 |
|
|
the archive should be used and adding them to the link.
|
7108 |
|
|
|
7109 |
|
|
The a.out version of this entry point is
|
7110 |
|
|
`NAME(aout,link_add_symbols)'.
|
7111 |
|
|
|
7112 |
|
|
* Menu:
|
7113 |
|
|
|
7114 |
|
|
* Differing file formats::
|
7115 |
|
|
* Adding symbols from an object file::
|
7116 |
|
|
* Adding symbols from an archive::
|
7117 |
|
|
|
7118 |
|
|
|
7119 |
|
|
File: bfd.info, Node: Differing file formats, Next: Adding symbols from an object file, Prev: Adding Symbols to the Hash Table, Up: Adding Symbols to the Hash Table
|
7120 |
|
|
|
7121 |
|
|
2.17.2.1 Differing file formats
|
7122 |
|
|
...............................
|
7123 |
|
|
|
7124 |
|
|
Normally all the files involved in a link will be of the same format,
|
7125 |
|
|
but it is also possible to link together different format object files,
|
7126 |
|
|
and the back end must support that. The `_bfd_link_add_symbols' entry
|
7127 |
|
|
point is called via the target vector of the file to be added. This
|
7128 |
|
|
has an important consequence: the function may not assume that the hash
|
7129 |
|
|
table is the type created by the corresponding
|
7130 |
|
|
`_bfd_link_hash_table_create' vector. All the `_bfd_link_add_symbols'
|
7131 |
|
|
function can assume about the hash table is that it is derived from
|
7132 |
|
|
`struct bfd_link_hash_table'.
|
7133 |
|
|
|
7134 |
|
|
Sometimes the `_bfd_link_add_symbols' function must store some
|
7135 |
|
|
information in the hash table entry to be used by the `_bfd_final_link'
|
7136 |
|
|
function. In such a case the output bfd xvec must be checked to make
|
7137 |
|
|
sure that the hash table was created by an object file of the same
|
7138 |
|
|
format.
|
7139 |
|
|
|
7140 |
|
|
The `_bfd_final_link' routine must be prepared to handle a hash
|
7141 |
|
|
entry without any extra information added by the
|
7142 |
|
|
`_bfd_link_add_symbols' function. A hash entry without extra
|
7143 |
|
|
information will also occur when the linker script directs the linker
|
7144 |
|
|
to create a symbol. Note that, regardless of how a hash table entry is
|
7145 |
|
|
added, all the fields will be initialized to some sort of null value by
|
7146 |
|
|
the hash table entry initialization function.
|
7147 |
|
|
|
7148 |
|
|
See `ecoff_link_add_externals' for an example of how to check the
|
7149 |
|
|
output bfd before saving information (in this case, the ECOFF external
|
7150 |
|
|
symbol debugging information) in a hash table entry.
|
7151 |
|
|
|
7152 |
|
|
|
7153 |
|
|
File: bfd.info, Node: Adding symbols from an object file, Next: Adding symbols from an archive, Prev: Differing file formats, Up: Adding Symbols to the Hash Table
|
7154 |
|
|
|
7155 |
|
|
2.17.2.2 Adding symbols from an object file
|
7156 |
|
|
...........................................
|
7157 |
|
|
|
7158 |
|
|
When the `_bfd_link_add_symbols' routine is passed an object file, it
|
7159 |
|
|
must add all externally visible symbols in that object file to the hash
|
7160 |
|
|
table. The actual work of adding the symbol to the hash table is
|
7161 |
|
|
normally handled by the function `_bfd_generic_link_add_one_symbol'.
|
7162 |
|
|
The `_bfd_link_add_symbols' routine is responsible for reading all the
|
7163 |
|
|
symbols from the object file and passing the correct information to
|
7164 |
|
|
`_bfd_generic_link_add_one_symbol'.
|
7165 |
|
|
|
7166 |
|
|
The `_bfd_link_add_symbols' routine should not use
|
7167 |
|
|
`bfd_canonicalize_symtab' to read the symbols. The point of providing
|
7168 |
|
|
this routine is to avoid the overhead of converting the symbols into
|
7169 |
|
|
generic `asymbol' structures.
|
7170 |
|
|
|
7171 |
|
|
`_bfd_generic_link_add_one_symbol' handles the details of combining
|
7172 |
|
|
common symbols, warning about multiple definitions, and so forth. It
|
7173 |
|
|
takes arguments which describe the symbol to add, notably symbol flags,
|
7174 |
|
|
a section, and an offset. The symbol flags include such things as
|
7175 |
|
|
`BSF_WEAK' or `BSF_INDIRECT'. The section is a section in the object
|
7176 |
|
|
file, or something like `bfd_und_section_ptr' for an undefined symbol
|
7177 |
|
|
or `bfd_com_section_ptr' for a common symbol.
|
7178 |
|
|
|
7179 |
|
|
If the `_bfd_final_link' routine is also going to need to read the
|
7180 |
|
|
symbol information, the `_bfd_link_add_symbols' routine should save it
|
7181 |
|
|
somewhere attached to the object file BFD. However, the information
|
7182 |
|
|
should only be saved if the `keep_memory' field of the `info' argument
|
7183 |
|
|
is TRUE, so that the `-no-keep-memory' linker switch is effective.
|
7184 |
|
|
|
7185 |
|
|
The a.out function which adds symbols from an object file is
|
7186 |
|
|
`aout_link_add_object_symbols', and most of the interesting work is in
|
7187 |
|
|
`aout_link_add_symbols'. The latter saves pointers to the hash tables
|
7188 |
|
|
entries created by `_bfd_generic_link_add_one_symbol' indexed by symbol
|
7189 |
|
|
number, so that the `_bfd_final_link' routine does not have to call the
|
7190 |
|
|
hash table lookup routine to locate the entry.
|
7191 |
|
|
|
7192 |
|
|
|
7193 |
|
|
File: bfd.info, Node: Adding symbols from an archive, Prev: Adding symbols from an object file, Up: Adding Symbols to the Hash Table
|
7194 |
|
|
|
7195 |
|
|
2.17.2.3 Adding symbols from an archive
|
7196 |
|
|
.......................................
|
7197 |
|
|
|
7198 |
|
|
When the `_bfd_link_add_symbols' routine is passed an archive, it must
|
7199 |
|
|
look through the symbols defined by the archive and decide which
|
7200 |
|
|
elements of the archive should be included in the link. For each such
|
7201 |
|
|
element it must call the `add_archive_element' linker callback, and it
|
7202 |
|
|
must add the symbols from the object file to the linker hash table.
|
7203 |
|
|
|
7204 |
|
|
In most cases the work of looking through the symbols in the archive
|
7205 |
|
|
should be done by the `_bfd_generic_link_add_archive_symbols' function.
|
7206 |
|
|
This function builds a hash table from the archive symbol table and
|
7207 |
|
|
looks through the list of undefined symbols to see which elements
|
7208 |
|
|
should be included. `_bfd_generic_link_add_archive_symbols' is passed
|
7209 |
|
|
a function to call to make the final decision about adding an archive
|
7210 |
|
|
element to the link and to do the actual work of adding the symbols to
|
7211 |
|
|
the linker hash table.
|
7212 |
|
|
|
7213 |
|
|
The function passed to `_bfd_generic_link_add_archive_symbols' must
|
7214 |
|
|
read the symbols of the archive element and decide whether the archive
|
7215 |
|
|
element should be included in the link. If the element is to be
|
7216 |
|
|
included, the `add_archive_element' linker callback routine must be
|
7217 |
|
|
called with the element as an argument, and the elements symbols must
|
7218 |
|
|
be added to the linker hash table just as though the element had itself
|
7219 |
|
|
been passed to the `_bfd_link_add_symbols' function.
|
7220 |
|
|
|
7221 |
|
|
When the a.out `_bfd_link_add_symbols' function receives an archive,
|
7222 |
|
|
it calls `_bfd_generic_link_add_archive_symbols' passing
|
7223 |
|
|
`aout_link_check_archive_element' as the function argument.
|
7224 |
|
|
`aout_link_check_archive_element' calls `aout_link_check_ar_symbols'.
|
7225 |
|
|
If the latter decides to add the element (an element is only added if
|
7226 |
|
|
it provides a real, non-common, definition for a previously undefined
|
7227 |
|
|
or common symbol) it calls the `add_archive_element' callback and then
|
7228 |
|
|
`aout_link_check_archive_element' calls `aout_link_add_symbols' to
|
7229 |
|
|
actually add the symbols to the linker hash table.
|
7230 |
|
|
|
7231 |
|
|
The ECOFF back end is unusual in that it does not normally call
|
7232 |
|
|
`_bfd_generic_link_add_archive_symbols', because ECOFF archives already
|
7233 |
|
|
contain a hash table of symbols. The ECOFF back end searches the
|
7234 |
|
|
archive itself to avoid the overhead of creating a new hash table.
|
7235 |
|
|
|
7236 |
|
|
|
7237 |
|
|
File: bfd.info, Node: Performing the Final Link, Prev: Adding Symbols to the Hash Table, Up: Linker Functions
|
7238 |
|
|
|
7239 |
|
|
2.17.3 Performing the final link
|
7240 |
|
|
--------------------------------
|
7241 |
|
|
|
7242 |
|
|
When all the input files have been processed, the linker calls the
|
7243 |
|
|
`_bfd_final_link' entry point of the output BFD. This routine is
|
7244 |
|
|
responsible for producing the final output file, which has several
|
7245 |
|
|
aspects. It must relocate the contents of the input sections and copy
|
7246 |
|
|
the data into the output sections. It must build an output symbol
|
7247 |
|
|
table including any local symbols from the input files and the global
|
7248 |
|
|
symbols from the hash table. When producing relocatable output, it must
|
7249 |
|
|
modify the input relocs and write them into the output file. There may
|
7250 |
|
|
also be object format dependent work to be done.
|
7251 |
|
|
|
7252 |
|
|
The linker will also call the `write_object_contents' entry point
|
7253 |
|
|
when the BFD is closed. The two entry points must work together in
|
7254 |
|
|
order to produce the correct output file.
|
7255 |
|
|
|
7256 |
|
|
The details of how this works are inevitably dependent upon the
|
7257 |
|
|
specific object file format. The a.out `_bfd_final_link' routine is
|
7258 |
|
|
`NAME(aout,final_link)'.
|
7259 |
|
|
|
7260 |
|
|
* Menu:
|
7261 |
|
|
|
7262 |
|
|
* Information provided by the linker::
|
7263 |
|
|
* Relocating the section contents::
|
7264 |
|
|
* Writing the symbol table::
|
7265 |
|
|
|
7266 |
|
|
|
7267 |
|
|
File: bfd.info, Node: Information provided by the linker, Next: Relocating the section contents, Prev: Performing the Final Link, Up: Performing the Final Link
|
7268 |
|
|
|
7269 |
|
|
2.17.3.1 Information provided by the linker
|
7270 |
|
|
...........................................
|
7271 |
|
|
|
7272 |
|
|
Before the linker calls the `_bfd_final_link' entry point, it sets up
|
7273 |
|
|
some data structures for the function to use.
|
7274 |
|
|
|
7275 |
|
|
The `input_bfds' field of the `bfd_link_info' structure will point
|
7276 |
|
|
to a list of all the input files included in the link. These files are
|
7277 |
|
|
linked through the `link_next' field of the `bfd' structure.
|
7278 |
|
|
|
7279 |
|
|
Each section in the output file will have a list of `link_order'
|
7280 |
|
|
structures attached to the `map_head.link_order' field (the
|
7281 |
|
|
`link_order' structure is defined in `bfdlink.h'). These structures
|
7282 |
|
|
describe how to create the contents of the output section in terms of
|
7283 |
|
|
the contents of various input sections, fill constants, and,
|
7284 |
|
|
eventually, other types of information. They also describe relocs that
|
7285 |
|
|
must be created by the BFD backend, but do not correspond to any input
|
7286 |
|
|
file; this is used to support -Ur, which builds constructors while
|
7287 |
|
|
generating a relocatable object file.
|
7288 |
|
|
|
7289 |
|
|
|
7290 |
|
|
File: bfd.info, Node: Relocating the section contents, Next: Writing the symbol table, Prev: Information provided by the linker, Up: Performing the Final Link
|
7291 |
|
|
|
7292 |
|
|
2.17.3.2 Relocating the section contents
|
7293 |
|
|
........................................
|
7294 |
|
|
|
7295 |
|
|
The `_bfd_final_link' function should look through the `link_order'
|
7296 |
|
|
structures attached to each section of the output file. Each
|
7297 |
|
|
`link_order' structure should either be handled specially, or it should
|
7298 |
|
|
be passed to the function `_bfd_default_link_order' which will do the
|
7299 |
|
|
right thing (`_bfd_default_link_order' is defined in `linker.c').
|
7300 |
|
|
|
7301 |
|
|
For efficiency, a `link_order' of type `bfd_indirect_link_order'
|
7302 |
|
|
whose associated section belongs to a BFD of the same format as the
|
7303 |
|
|
output BFD must be handled specially. This type of `link_order'
|
7304 |
|
|
describes part of an output section in terms of a section belonging to
|
7305 |
|
|
one of the input files. The `_bfd_final_link' function should read the
|
7306 |
|
|
contents of the section and any associated relocs, apply the relocs to
|
7307 |
|
|
the section contents, and write out the modified section contents. If
|
7308 |
|
|
performing a relocatable link, the relocs themselves must also be
|
7309 |
|
|
modified and written out.
|
7310 |
|
|
|
7311 |
|
|
The functions `_bfd_relocate_contents' and
|
7312 |
|
|
`_bfd_final_link_relocate' provide some general support for performing
|
7313 |
|
|
the actual relocations, notably overflow checking. Their arguments
|
7314 |
|
|
include information about the symbol the relocation is against and a
|
7315 |
|
|
`reloc_howto_type' argument which describes the relocation to perform.
|
7316 |
|
|
These functions are defined in `reloc.c'.
|
7317 |
|
|
|
7318 |
|
|
The a.out function which handles reading, relocating, and writing
|
7319 |
|
|
section contents is `aout_link_input_section'. The actual relocation
|
7320 |
|
|
is done in `aout_link_input_section_std' and
|
7321 |
|
|
`aout_link_input_section_ext'.
|
7322 |
|
|
|
7323 |
|
|
|
7324 |
|
|
File: bfd.info, Node: Writing the symbol table, Prev: Relocating the section contents, Up: Performing the Final Link
|
7325 |
|
|
|
7326 |
|
|
2.17.3.3 Writing the symbol table
|
7327 |
|
|
.................................
|
7328 |
|
|
|
7329 |
|
|
The `_bfd_final_link' function must gather all the symbols in the input
|
7330 |
|
|
files and write them out. It must also write out all the symbols in
|
7331 |
|
|
the global hash table. This must be controlled by the `strip' and
|
7332 |
|
|
`discard' fields of the `bfd_link_info' structure.
|
7333 |
|
|
|
7334 |
|
|
The local symbols of the input files will not have been entered into
|
7335 |
|
|
the linker hash table. The `_bfd_final_link' routine must consider
|
7336 |
|
|
each input file and include the symbols in the output file. It may be
|
7337 |
|
|
convenient to do this when looking through the `link_order' structures,
|
7338 |
|
|
or it may be done by stepping through the `input_bfds' list.
|
7339 |
|
|
|
7340 |
|
|
The `_bfd_final_link' routine must also traverse the global hash
|
7341 |
|
|
table to gather all the externally visible symbols. It is possible
|
7342 |
|
|
that most of the externally visible symbols may be written out when
|
7343 |
|
|
considering the symbols of each input file, but it is still necessary
|
7344 |
|
|
to traverse the hash table since the linker script may have defined
|
7345 |
|
|
some symbols that are not in any of the input files.
|
7346 |
|
|
|
7347 |
|
|
The `strip' field of the `bfd_link_info' structure controls which
|
7348 |
|
|
symbols are written out. The possible values are listed in
|
7349 |
|
|
`bfdlink.h'. If the value is `strip_some', then the `keep_hash' field
|
7350 |
|
|
of the `bfd_link_info' structure is a hash table of symbols to keep;
|
7351 |
|
|
each symbol should be looked up in this hash table, and only symbols
|
7352 |
|
|
which are present should be included in the output file.
|
7353 |
|
|
|
7354 |
|
|
If the `strip' field of the `bfd_link_info' structure permits local
|
7355 |
|
|
symbols to be written out, the `discard' field is used to further
|
7356 |
|
|
controls which local symbols are included in the output file. If the
|
7357 |
|
|
value is `discard_l', then all local symbols which begin with a certain
|
7358 |
|
|
prefix are discarded; this is controlled by the
|
7359 |
|
|
`bfd_is_local_label_name' entry point.
|
7360 |
|
|
|
7361 |
|
|
The a.out backend handles symbols by calling
|
7362 |
|
|
`aout_link_write_symbols' on each input BFD and then traversing the
|
7363 |
|
|
global hash table with the function `aout_link_write_other_symbol'. It
|
7364 |
|
|
builds a string table while writing out the symbols, which is written
|
7365 |
|
|
to the output file at the end of `NAME(aout,final_link)'.
|
7366 |
|
|
|
7367 |
|
|
2.17.3.4 `bfd_link_split_section'
|
7368 |
|
|
.................................
|
7369 |
|
|
|
7370 |
|
|
*Synopsis*
|
7371 |
|
|
bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
|
7372 |
|
|
*Description*
|
7373 |
|
|
Return nonzero if SEC should be split during a reloceatable or final
|
7374 |
|
|
link.
|
7375 |
|
|
#define bfd_link_split_section(abfd, sec) \
|
7376 |
|
|
BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
|
7377 |
|
|
|
7378 |
|
|
2.17.3.5 `bfd_section_already_linked'
|
7379 |
|
|
.....................................
|
7380 |
|
|
|
7381 |
|
|
*Synopsis*
|
7382 |
|
|
void bfd_section_already_linked (bfd *abfd, asection *sec,
|
7383 |
|
|
struct bfd_link_info *info);
|
7384 |
|
|
*Description*
|
7385 |
|
|
Check if SEC has been already linked during a reloceatable or final
|
7386 |
|
|
link.
|
7387 |
|
|
#define bfd_section_already_linked(abfd, sec, info) \
|
7388 |
|
|
BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
|
7389 |
|
|
|
7390 |
|
|
|
7391 |
|
|
File: bfd.info, Node: Hash Tables, Prev: Linker Functions, Up: BFD front end
|
7392 |
|
|
|
7393 |
|
|
2.18 Hash Tables
|
7394 |
|
|
================
|
7395 |
|
|
|
7396 |
|
|
BFD provides a simple set of hash table functions. Routines are
|
7397 |
|
|
provided to initialize a hash table, to free a hash table, to look up a
|
7398 |
|
|
string in a hash table and optionally create an entry for it, and to
|
7399 |
|
|
traverse a hash table. There is currently no routine to delete an
|
7400 |
|
|
string from a hash table.
|
7401 |
|
|
|
7402 |
|
|
The basic hash table does not permit any data to be stored with a
|
7403 |
|
|
string. However, a hash table is designed to present a base class from
|
7404 |
|
|
which other types of hash tables may be derived. These derived types
|
7405 |
|
|
may store additional information with the string. Hash tables were
|
7406 |
|
|
implemented in this way, rather than simply providing a data pointer in
|
7407 |
|
|
a hash table entry, because they were designed for use by the linker
|
7408 |
|
|
back ends. The linker may create thousands of hash table entries, and
|
7409 |
|
|
the overhead of allocating private data and storing and following
|
7410 |
|
|
pointers becomes noticeable.
|
7411 |
|
|
|
7412 |
|
|
The basic hash table code is in `hash.c'.
|
7413 |
|
|
|
7414 |
|
|
* Menu:
|
7415 |
|
|
|
7416 |
|
|
* Creating and Freeing a Hash Table::
|
7417 |
|
|
* Looking Up or Entering a String::
|
7418 |
|
|
* Traversing a Hash Table::
|
7419 |
|
|
* Deriving a New Hash Table Type::
|
7420 |
|
|
|
7421 |
|
|
|
7422 |
|
|
File: bfd.info, Node: Creating and Freeing a Hash Table, Next: Looking Up or Entering a String, Prev: Hash Tables, Up: Hash Tables
|
7423 |
|
|
|
7424 |
|
|
2.18.1 Creating and freeing a hash table
|
7425 |
|
|
----------------------------------------
|
7426 |
|
|
|
7427 |
|
|
To create a hash table, create an instance of a `struct bfd_hash_table'
|
7428 |
|
|
(defined in `bfd.h') and call `bfd_hash_table_init' (if you know
|
7429 |
|
|
approximately how many entries you will need, the function
|
7430 |
|
|
`bfd_hash_table_init_n', which takes a SIZE argument, may be used).
|
7431 |
|
|
`bfd_hash_table_init' returns `FALSE' if some sort of error occurs.
|
7432 |
|
|
|
7433 |
|
|
The function `bfd_hash_table_init' take as an argument a function to
|
7434 |
|
|
use to create new entries. For a basic hash table, use the function
|
7435 |
|
|
`bfd_hash_newfunc'. *Note Deriving a New Hash Table Type::, for why
|
7436 |
|
|
you would want to use a different value for this argument.
|
7437 |
|
|
|
7438 |
|
|
`bfd_hash_table_init' will create an objalloc which will be used to
|
7439 |
|
|
allocate new entries. You may allocate memory on this objalloc using
|
7440 |
|
|
`bfd_hash_allocate'.
|
7441 |
|
|
|
7442 |
|
|
Use `bfd_hash_table_free' to free up all the memory that has been
|
7443 |
|
|
allocated for a hash table. This will not free up the `struct
|
7444 |
|
|
bfd_hash_table' itself, which you must provide.
|
7445 |
|
|
|
7446 |
|
|
Use `bfd_hash_set_default_size' to set the default size of hash
|
7447 |
|
|
table to use.
|
7448 |
|
|
|
7449 |
|
|
|
7450 |
|
|
File: bfd.info, Node: Looking Up or Entering a String, Next: Traversing a Hash Table, Prev: Creating and Freeing a Hash Table, Up: Hash Tables
|
7451 |
|
|
|
7452 |
|
|
2.18.2 Looking up or entering a string
|
7453 |
|
|
--------------------------------------
|
7454 |
|
|
|
7455 |
|
|
The function `bfd_hash_lookup' is used both to look up a string in the
|
7456 |
|
|
hash table and to create a new entry.
|
7457 |
|
|
|
7458 |
|
|
If the CREATE argument is `FALSE', `bfd_hash_lookup' will look up a
|
7459 |
|
|
string. If the string is found, it will returns a pointer to a `struct
|
7460 |
|
|
bfd_hash_entry'. If the string is not found in the table
|
7461 |
|
|
`bfd_hash_lookup' will return `NULL'. You should not modify any of the
|
7462 |
|
|
fields in the returns `struct bfd_hash_entry'.
|
7463 |
|
|
|
7464 |
|
|
If the CREATE argument is `TRUE', the string will be entered into
|
7465 |
|
|
the hash table if it is not already there. Either way a pointer to a
|
7466 |
|
|
`struct bfd_hash_entry' will be returned, either to the existing
|
7467 |
|
|
structure or to a newly created one. In this case, a `NULL' return
|
7468 |
|
|
means that an error occurred.
|
7469 |
|
|
|
7470 |
|
|
If the CREATE argument is `TRUE', and a new entry is created, the
|
7471 |
|
|
COPY argument is used to decide whether to copy the string onto the
|
7472 |
|
|
hash table objalloc or not. If COPY is passed as `FALSE', you must be
|
7473 |
|
|
careful not to deallocate or modify the string as long as the hash table
|
7474 |
|
|
exists.
|
7475 |
|
|
|
7476 |
|
|
|
7477 |
|
|
File: bfd.info, Node: Traversing a Hash Table, Next: Deriving a New Hash Table Type, Prev: Looking Up or Entering a String, Up: Hash Tables
|
7478 |
|
|
|
7479 |
|
|
2.18.3 Traversing a hash table
|
7480 |
|
|
------------------------------
|
7481 |
|
|
|
7482 |
|
|
The function `bfd_hash_traverse' may be used to traverse a hash table,
|
7483 |
|
|
calling a function on each element. The traversal is done in a random
|
7484 |
|
|
order.
|
7485 |
|
|
|
7486 |
|
|
`bfd_hash_traverse' takes as arguments a function and a generic
|
7487 |
|
|
`void *' pointer. The function is called with a hash table entry (a
|
7488 |
|
|
`struct bfd_hash_entry *') and the generic pointer passed to
|
7489 |
|
|
`bfd_hash_traverse'. The function must return a `boolean' value, which
|
7490 |
|
|
indicates whether to continue traversing the hash table. If the
|
7491 |
|
|
function returns `FALSE', `bfd_hash_traverse' will stop the traversal
|
7492 |
|
|
and return immediately.
|
7493 |
|
|
|
7494 |
|
|
|
7495 |
|
|
File: bfd.info, Node: Deriving a New Hash Table Type, Prev: Traversing a Hash Table, Up: Hash Tables
|
7496 |
|
|
|
7497 |
|
|
2.18.4 Deriving a new hash table type
|
7498 |
|
|
-------------------------------------
|
7499 |
|
|
|
7500 |
|
|
Many uses of hash tables want to store additional information which
|
7501 |
|
|
each entry in the hash table. Some also find it convenient to store
|
7502 |
|
|
additional information with the hash table itself. This may be done
|
7503 |
|
|
using a derived hash table.
|
7504 |
|
|
|
7505 |
|
|
Since C is not an object oriented language, creating a derived hash
|
7506 |
|
|
table requires sticking together some boilerplate routines with a few
|
7507 |
|
|
differences specific to the type of hash table you want to create.
|
7508 |
|
|
|
7509 |
|
|
An example of a derived hash table is the linker hash table. The
|
7510 |
|
|
structures for this are defined in `bfdlink.h'. The functions are in
|
7511 |
|
|
`linker.c'.
|
7512 |
|
|
|
7513 |
|
|
You may also derive a hash table from an already derived hash table.
|
7514 |
|
|
For example, the a.out linker backend code uses a hash table derived
|
7515 |
|
|
from the linker hash table.
|
7516 |
|
|
|
7517 |
|
|
* Menu:
|
7518 |
|
|
|
7519 |
|
|
* Define the Derived Structures::
|
7520 |
|
|
* Write the Derived Creation Routine::
|
7521 |
|
|
* Write Other Derived Routines::
|
7522 |
|
|
|
7523 |
|
|
|
7524 |
|
|
File: bfd.info, Node: Define the Derived Structures, Next: Write the Derived Creation Routine, Prev: Deriving a New Hash Table Type, Up: Deriving a New Hash Table Type
|
7525 |
|
|
|
7526 |
|
|
2.18.4.1 Define the derived structures
|
7527 |
|
|
......................................
|
7528 |
|
|
|
7529 |
|
|
You must define a structure for an entry in the hash table, and a
|
7530 |
|
|
structure for the hash table itself.
|
7531 |
|
|
|
7532 |
|
|
The first field in the structure for an entry in the hash table must
|
7533 |
|
|
be of the type used for an entry in the hash table you are deriving
|
7534 |
|
|
from. If you are deriving from a basic hash table this is `struct
|
7535 |
|
|
bfd_hash_entry', which is defined in `bfd.h'. The first field in the
|
7536 |
|
|
structure for the hash table itself must be of the type of the hash
|
7537 |
|
|
table you are deriving from itself. If you are deriving from a basic
|
7538 |
|
|
hash table, this is `struct bfd_hash_table'.
|
7539 |
|
|
|
7540 |
|
|
For example, the linker hash table defines `struct
|
7541 |
|
|
bfd_link_hash_entry' (in `bfdlink.h'). The first field, `root', is of
|
7542 |
|
|
type `struct bfd_hash_entry'. Similarly, the first field in `struct
|
7543 |
|
|
bfd_link_hash_table', `table', is of type `struct bfd_hash_table'.
|
7544 |
|
|
|
7545 |
|
|
|
7546 |
|
|
File: bfd.info, Node: Write the Derived Creation Routine, Next: Write Other Derived Routines, Prev: Define the Derived Structures, Up: Deriving a New Hash Table Type
|
7547 |
|
|
|
7548 |
|
|
2.18.4.2 Write the derived creation routine
|
7549 |
|
|
...........................................
|
7550 |
|
|
|
7551 |
|
|
You must write a routine which will create and initialize an entry in
|
7552 |
|
|
the hash table. This routine is passed as the function argument to
|
7553 |
|
|
`bfd_hash_table_init'.
|
7554 |
|
|
|
7555 |
|
|
In order to permit other hash tables to be derived from the hash
|
7556 |
|
|
table you are creating, this routine must be written in a standard way.
|
7557 |
|
|
|
7558 |
|
|
The first argument to the creation routine is a pointer to a hash
|
7559 |
|
|
table entry. This may be `NULL', in which case the routine should
|
7560 |
|
|
allocate the right amount of space. Otherwise the space has already
|
7561 |
|
|
been allocated by a hash table type derived from this one.
|
7562 |
|
|
|
7563 |
|
|
After allocating space, the creation routine must call the creation
|
7564 |
|
|
routine of the hash table type it is derived from, passing in a pointer
|
7565 |
|
|
to the space it just allocated. This will initialize any fields used
|
7566 |
|
|
by the base hash table.
|
7567 |
|
|
|
7568 |
|
|
Finally the creation routine must initialize any local fields for
|
7569 |
|
|
the new hash table type.
|
7570 |
|
|
|
7571 |
|
|
Here is a boilerplate example of a creation routine. FUNCTION_NAME
|
7572 |
|
|
is the name of the routine. ENTRY_TYPE is the type of an entry in the
|
7573 |
|
|
hash table you are creating. BASE_NEWFUNC is the name of the creation
|
7574 |
|
|
routine of the hash table type your hash table is derived from.
|
7575 |
|
|
|
7576 |
|
|
struct bfd_hash_entry *
|
7577 |
|
|
FUNCTION_NAME (struct bfd_hash_entry *entry,
|
7578 |
|
|
struct bfd_hash_table *table,
|
7579 |
|
|
const char *string)
|
7580 |
|
|
{
|
7581 |
|
|
struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry;
|
7582 |
|
|
|
7583 |
|
|
/* Allocate the structure if it has not already been allocated by a
|
7584 |
|
|
derived class. */
|
7585 |
|
|
if (ret == NULL)
|
7586 |
|
|
{
|
7587 |
|
|
ret = bfd_hash_allocate (table, sizeof (* ret));
|
7588 |
|
|
if (ret == NULL)
|
7589 |
|
|
return NULL;
|
7590 |
|
|
}
|
7591 |
|
|
|
7592 |
|
|
/* Call the allocation method of the base class. */
|
7593 |
|
|
ret = ((ENTRY_TYPE *)
|
7594 |
|
|
BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string));
|
7595 |
|
|
|
7596 |
|
|
/* Initialize the local fields here. */
|
7597 |
|
|
|
7598 |
|
|
return (struct bfd_hash_entry *) ret;
|
7599 |
|
|
}
|
7600 |
|
|
*Description*
|
7601 |
|
|
The creation routine for the linker hash table, which is in `linker.c',
|
7602 |
|
|
looks just like this example. FUNCTION_NAME is
|
7603 |
|
|
`_bfd_link_hash_newfunc'. ENTRY_TYPE is `struct bfd_link_hash_entry'.
|
7604 |
|
|
BASE_NEWFUNC is `bfd_hash_newfunc', the creation routine for a basic
|
7605 |
|
|
hash table.
|
7606 |
|
|
|
7607 |
|
|
`_bfd_link_hash_newfunc' also initializes the local fields in a
|
7608 |
|
|
linker hash table entry: `type', `written' and `next'.
|
7609 |
|
|
|
7610 |
|
|
|
7611 |
|
|
File: bfd.info, Node: Write Other Derived Routines, Prev: Write the Derived Creation Routine, Up: Deriving a New Hash Table Type
|
7612 |
|
|
|
7613 |
|
|
2.18.4.3 Write other derived routines
|
7614 |
|
|
.....................................
|
7615 |
|
|
|
7616 |
|
|
You will want to write other routines for your new hash table, as well.
|
7617 |
|
|
|
7618 |
|
|
You will want an initialization routine which calls the
|
7619 |
|
|
initialization routine of the hash table you are deriving from and
|
7620 |
|
|
initializes any other local fields. For the linker hash table, this is
|
7621 |
|
|
`_bfd_link_hash_table_init' in `linker.c'.
|
7622 |
|
|
|
7623 |
|
|
You will want a lookup routine which calls the lookup routine of the
|
7624 |
|
|
hash table you are deriving from and casts the result. The linker hash
|
7625 |
|
|
table uses `bfd_link_hash_lookup' in `linker.c' (this actually takes an
|
7626 |
|
|
additional argument which it uses to decide how to return the looked up
|
7627 |
|
|
value).
|
7628 |
|
|
|
7629 |
|
|
You may want a traversal routine. This should just call the
|
7630 |
|
|
traversal routine of the hash table you are deriving from with
|
7631 |
|
|
appropriate casts. The linker hash table uses `bfd_link_hash_traverse'
|
7632 |
|
|
in `linker.c'.
|
7633 |
|
|
|
7634 |
|
|
These routines may simply be defined as macros. For example, the
|
7635 |
|
|
a.out backend linker hash table, which is derived from the linker hash
|
7636 |
|
|
table, uses macros for the lookup and traversal routines. These are
|
7637 |
|
|
`aout_link_hash_lookup' and `aout_link_hash_traverse' in aoutx.h.
|
7638 |
|
|
|
7639 |
|
|
|
7640 |
|
|
File: bfd.info, Node: BFD back ends, Next: GNU Free Documentation License, Prev: BFD front end, Up: Top
|
7641 |
|
|
|
7642 |
|
|
3 BFD back ends
|
7643 |
|
|
***************
|
7644 |
|
|
|
7645 |
|
|
* Menu:
|
7646 |
|
|
|
7647 |
|
|
* What to Put Where::
|
7648 |
|
|
* aout :: a.out backends
|
7649 |
|
|
* coff :: coff backends
|
7650 |
|
|
* elf :: elf backends
|
7651 |
|
|
* mmo :: mmo backend
|
7652 |
|
|
|
7653 |
|
|
|
7654 |
|
|
File: bfd.info, Node: What to Put Where, Next: aout, Prev: BFD back ends, Up: BFD back ends
|
7655 |
|
|
|
7656 |
|
|
3.1 What to Put Where
|
7657 |
|
|
=====================
|
7658 |
|
|
|
7659 |
|
|
All of BFD lives in one directory.
|
7660 |
|
|
|
7661 |
|
|
|
7662 |
|
|
File: bfd.info, Node: aout, Next: coff, Prev: What to Put Where, Up: BFD back ends
|
7663 |
|
|
|
7664 |
|
|
3.2 a.out backends
|
7665 |
|
|
==================
|
7666 |
|
|
|
7667 |
|
|
*Description*
|
7668 |
|
|
BFD supports a number of different flavours of a.out format, though the
|
7669 |
|
|
major differences are only the sizes of the structures on disk, and the
|
7670 |
|
|
shape of the relocation information.
|
7671 |
|
|
|
7672 |
|
|
The support is split into a basic support file `aoutx.h' and other
|
7673 |
|
|
files which derive functions from the base. One derivation file is
|
7674 |
|
|
`aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions
|
7675 |
|
|
support for sun3, sun4, 386 and 29k a.out files, to create a target
|
7676 |
|
|
jump vector for a specific target.
|
7677 |
|
|
|
7678 |
|
|
This information is further split out into more specific files for
|
7679 |
|
|
each machine, including `sunos.c' for sun3 and sun4, `newsos3.c' for
|
7680 |
|
|
the Sony NEWS, and `demo64.c' for a demonstration of a 64 bit a.out
|
7681 |
|
|
format.
|
7682 |
|
|
|
7683 |
|
|
The base file `aoutx.h' defines general mechanisms for reading and
|
7684 |
|
|
writing records to and from disk and various other methods which BFD
|
7685 |
|
|
requires. It is included by `aout32.c' and `aout64.c' to form the names
|
7686 |
|
|
`aout_32_swap_exec_header_in', `aout_64_swap_exec_header_in', etc.
|
7687 |
|
|
|
7688 |
|
|
As an example, this is what goes on to make the back end for a sun4,
|
7689 |
|
|
from `aout32.c':
|
7690 |
|
|
|
7691 |
|
|
#define ARCH_SIZE 32
|
7692 |
|
|
#include "aoutx.h"
|
7693 |
|
|
|
7694 |
|
|
Which exports names:
|
7695 |
|
|
|
7696 |
|
|
...
|
7697 |
|
|
aout_32_canonicalize_reloc
|
7698 |
|
|
aout_32_find_nearest_line
|
7699 |
|
|
aout_32_get_lineno
|
7700 |
|
|
aout_32_get_reloc_upper_bound
|
7701 |
|
|
...
|
7702 |
|
|
|
7703 |
|
|
from `sunos.c':
|
7704 |
|
|
|
7705 |
|
|
#define TARGET_NAME "a.out-sunos-big"
|
7706 |
|
|
#define VECNAME sunos_big_vec
|
7707 |
|
|
#include "aoutf1.h"
|
7708 |
|
|
|
7709 |
|
|
requires all the names from `aout32.c', and produces the jump vector
|
7710 |
|
|
|
7711 |
|
|
sunos_big_vec
|
7712 |
|
|
|
7713 |
|
|
The file `host-aout.c' is a special case. It is for a large set of
|
7714 |
|
|
hosts that use "more or less standard" a.out files, and for which
|
7715 |
|
|
cross-debugging is not interesting. It uses the standard 32-bit a.out
|
7716 |
|
|
support routines, but determines the file offsets and addresses of the
|
7717 |
|
|
text, data, and BSS sections, the machine architecture and machine
|
7718 |
|
|
type, and the entry point address, in a host-dependent manner. Once
|
7719 |
|
|
these values have been determined, generic code is used to handle the
|
7720 |
|
|
object file.
|
7721 |
|
|
|
7722 |
|
|
When porting it to run on a new system, you must supply:
|
7723 |
|
|
|
7724 |
|
|
HOST_PAGE_SIZE
|
7725 |
|
|
HOST_SEGMENT_SIZE
|
7726 |
|
|
HOST_MACHINE_ARCH (optional)
|
7727 |
|
|
HOST_MACHINE_MACHINE (optional)
|
7728 |
|
|
HOST_TEXT_START_ADDR
|
7729 |
|
|
HOST_STACK_END_ADDR
|
7730 |
|
|
|
7731 |
|
|
in the file `../include/sys/h-XXX.h' (for your host). These values,
|
7732 |
|
|
plus the structures and macros defined in `a.out.h' on your host
|
7733 |
|
|
system, will produce a BFD target that will access ordinary a.out files
|
7734 |
|
|
on your host. To configure a new machine to use `host-aout.c', specify:
|
7735 |
|
|
|
7736 |
|
|
TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
|
7737 |
|
|
TDEPFILES= host-aout.o trad-core.o
|
7738 |
|
|
|
7739 |
|
|
in the `config/XXX.mt' file, and modify `configure.in' to use the
|
7740 |
|
|
`XXX.mt' file (by setting "`bfd_target=XXX'") when your configuration
|
7741 |
|
|
is selected.
|
7742 |
|
|
|
7743 |
|
|
3.2.1 Relocations
|
7744 |
|
|
-----------------
|
7745 |
|
|
|
7746 |
|
|
*Description*
|
7747 |
|
|
The file `aoutx.h' provides for both the _standard_ and _extended_
|
7748 |
|
|
forms of a.out relocation records.
|
7749 |
|
|
|
7750 |
|
|
The standard records contain only an address, a symbol index, and a
|
7751 |
|
|
type field. The extended records (used on 29ks and sparcs) also have a
|
7752 |
|
|
full integer for an addend.
|
7753 |
|
|
|
7754 |
|
|
3.2.2 Internal entry points
|
7755 |
|
|
---------------------------
|
7756 |
|
|
|
7757 |
|
|
*Description*
|
7758 |
|
|
`aoutx.h' exports several routines for accessing the contents of an
|
7759 |
|
|
a.out file, which are gathered and exported in turn by various format
|
7760 |
|
|
specific files (eg sunos.c).
|
7761 |
|
|
|
7762 |
|
|
3.2.2.1 `aout_SIZE_swap_exec_header_in'
|
7763 |
|
|
.......................................
|
7764 |
|
|
|
7765 |
|
|
*Synopsis*
|
7766 |
|
|
void aout_SIZE_swap_exec_header_in,
|
7767 |
|
|
(bfd *abfd,
|
7768 |
|
|
struct external_exec *bytes,
|
7769 |
|
|
struct internal_exec *execp);
|
7770 |
|
|
*Description*
|
7771 |
|
|
Swap the information in an executable header RAW_BYTES taken from a raw
|
7772 |
|
|
byte stream memory image into the internal exec header structure EXECP.
|
7773 |
|
|
|
7774 |
|
|
3.2.2.2 `aout_SIZE_swap_exec_header_out'
|
7775 |
|
|
........................................
|
7776 |
|
|
|
7777 |
|
|
*Synopsis*
|
7778 |
|
|
void aout_SIZE_swap_exec_header_out
|
7779 |
|
|
(bfd *abfd,
|
7780 |
|
|
struct internal_exec *execp,
|
7781 |
|
|
struct external_exec *raw_bytes);
|
7782 |
|
|
*Description*
|
7783 |
|
|
Swap the information in an internal exec header structure EXECP into
|
7784 |
|
|
the buffer RAW_BYTES ready for writing to disk.
|
7785 |
|
|
|
7786 |
|
|
3.2.2.3 `aout_SIZE_some_aout_object_p'
|
7787 |
|
|
......................................
|
7788 |
|
|
|
7789 |
|
|
*Synopsis*
|
7790 |
|
|
const bfd_target *aout_SIZE_some_aout_object_p
|
7791 |
|
|
(bfd *abfd,
|
7792 |
|
|
struct internal_exec *execp,
|
7793 |
|
|
const bfd_target *(*callback_to_real_object_p) (bfd *));
|
7794 |
|
|
*Description*
|
7795 |
|
|
Some a.out variant thinks that the file open in ABFD checking is an
|
7796 |
|
|
a.out file. Do some more checking, and set up for access if it really
|
7797 |
|
|
is. Call back to the calling environment's "finish up" function just
|
7798 |
|
|
before returning, to handle any last-minute setup.
|
7799 |
|
|
|
7800 |
|
|
3.2.2.4 `aout_SIZE_mkobject'
|
7801 |
|
|
............................
|
7802 |
|
|
|
7803 |
|
|
*Synopsis*
|
7804 |
|
|
bfd_boolean aout_SIZE_mkobject, (bfd *abfd);
|
7805 |
|
|
*Description*
|
7806 |
|
|
Initialize BFD ABFD for use with a.out files.
|
7807 |
|
|
|
7808 |
|
|
3.2.2.5 `aout_SIZE_machine_type'
|
7809 |
|
|
................................
|
7810 |
|
|
|
7811 |
|
|
*Synopsis*
|
7812 |
|
|
enum machine_type aout_SIZE_machine_type
|
7813 |
|
|
(enum bfd_architecture arch,
|
7814 |
|
|
unsigned long machine,
|
7815 |
|
|
bfd_boolean *unknown);
|
7816 |
|
|
*Description*
|
7817 |
|
|
Keep track of machine architecture and machine type for a.out's. Return
|
7818 |
|
|
the `machine_type' for a particular architecture and machine, or
|
7819 |
|
|
`M_UNKNOWN' if that exact architecture and machine can't be represented
|
7820 |
|
|
in a.out format.
|
7821 |
|
|
|
7822 |
|
|
If the architecture is understood, machine type 0 (default) is
|
7823 |
|
|
always understood.
|
7824 |
|
|
|
7825 |
|
|
3.2.2.6 `aout_SIZE_set_arch_mach'
|
7826 |
|
|
.................................
|
7827 |
|
|
|
7828 |
|
|
*Synopsis*
|
7829 |
|
|
bfd_boolean aout_SIZE_set_arch_mach,
|
7830 |
|
|
(bfd *,
|
7831 |
|
|
enum bfd_architecture arch,
|
7832 |
|
|
unsigned long machine);
|
7833 |
|
|
*Description*
|
7834 |
|
|
Set the architecture and the machine of the BFD ABFD to the values ARCH
|
7835 |
|
|
and MACHINE. Verify that ABFD's format can support the architecture
|
7836 |
|
|
required.
|
7837 |
|
|
|
7838 |
|
|
3.2.2.7 `aout_SIZE_new_section_hook'
|
7839 |
|
|
....................................
|
7840 |
|
|
|
7841 |
|
|
*Synopsis*
|
7842 |
|
|
bfd_boolean aout_SIZE_new_section_hook,
|
7843 |
|
|
(bfd *abfd,
|
7844 |
|
|
asection *newsect);
|
7845 |
|
|
*Description*
|
7846 |
|
|
Called by the BFD in response to a `bfd_make_section' request.
|
7847 |
|
|
|
7848 |
|
|
|
7849 |
|
|
File: bfd.info, Node: coff, Next: elf, Prev: aout, Up: BFD back ends
|
7850 |
|
|
|
7851 |
|
|
3.3 coff backends
|
7852 |
|
|
=================
|
7853 |
|
|
|
7854 |
|
|
BFD supports a number of different flavours of coff format. The major
|
7855 |
|
|
differences between formats are the sizes and alignments of fields in
|
7856 |
|
|
structures on disk, and the occasional extra field.
|
7857 |
|
|
|
7858 |
|
|
Coff in all its varieties is implemented with a few common files and
|
7859 |
|
|
a number of implementation specific files. For example, The 88k bcs
|
7860 |
|
|
coff format is implemented in the file `coff-m88k.c'. This file
|
7861 |
|
|
`#include's `coff/m88k.h' which defines the external structure of the
|
7862 |
|
|
coff format for the 88k, and `coff/internal.h' which defines the
|
7863 |
|
|
internal structure. `coff-m88k.c' also defines the relocations used by
|
7864 |
|
|
the 88k format *Note Relocations::.
|
7865 |
|
|
|
7866 |
|
|
The Intel i960 processor version of coff is implemented in
|
7867 |
|
|
`coff-i960.c'. This file has the same structure as `coff-m88k.c',
|
7868 |
|
|
except that it includes `coff/i960.h' rather than `coff-m88k.h'.
|
7869 |
|
|
|
7870 |
|
|
3.3.1 Porting to a new version of coff
|
7871 |
|
|
--------------------------------------
|
7872 |
|
|
|
7873 |
|
|
The recommended method is to select from the existing implementations
|
7874 |
|
|
the version of coff which is most like the one you want to use. For
|
7875 |
|
|
example, we'll say that i386 coff is the one you select, and that your
|
7876 |
|
|
coff flavour is called foo. Copy `i386coff.c' to `foocoff.c', copy
|
7877 |
|
|
`../include/coff/i386.h' to `../include/coff/foo.h', and add the lines
|
7878 |
|
|
to `targets.c' and `Makefile.in' so that your new back end is used.
|
7879 |
|
|
Alter the shapes of the structures in `../include/coff/foo.h' so that
|
7880 |
|
|
they match what you need. You will probably also have to add `#ifdef's
|
7881 |
|
|
to the code in `coff/internal.h' and `coffcode.h' if your version of
|
7882 |
|
|
coff is too wild.
|
7883 |
|
|
|
7884 |
|
|
You can verify that your new BFD backend works quite simply by
|
7885 |
|
|
building `objdump' from the `binutils' directory, and making sure that
|
7886 |
|
|
its version of what's going on and your host system's idea (assuming it
|
7887 |
|
|
has the pretty standard coff dump utility, usually called `att-dump' or
|
7888 |
|
|
just `dump') are the same. Then clean up your code, and send what
|
7889 |
|
|
you've done to Cygnus. Then your stuff will be in the next release, and
|
7890 |
|
|
you won't have to keep integrating it.
|
7891 |
|
|
|
7892 |
|
|
3.3.2 How the coff backend works
|
7893 |
|
|
--------------------------------
|
7894 |
|
|
|
7895 |
|
|
3.3.2.1 File layout
|
7896 |
|
|
...................
|
7897 |
|
|
|
7898 |
|
|
The Coff backend is split into generic routines that are applicable to
|
7899 |
|
|
any Coff target and routines that are specific to a particular target.
|
7900 |
|
|
The target-specific routines are further split into ones which are
|
7901 |
|
|
basically the same for all Coff targets except that they use the
|
7902 |
|
|
external symbol format or use different values for certain constants.
|
7903 |
|
|
|
7904 |
|
|
The generic routines are in `coffgen.c'. These routines work for
|
7905 |
|
|
any Coff target. They use some hooks into the target specific code;
|
7906 |
|
|
the hooks are in a `bfd_coff_backend_data' structure, one of which
|
7907 |
|
|
exists for each target.
|
7908 |
|
|
|
7909 |
|
|
The essentially similar target-specific routines are in
|
7910 |
|
|
`coffcode.h'. This header file includes executable C code. The
|
7911 |
|
|
various Coff targets first include the appropriate Coff header file,
|
7912 |
|
|
make any special defines that are needed, and then include `coffcode.h'.
|
7913 |
|
|
|
7914 |
|
|
Some of the Coff targets then also have additional routines in the
|
7915 |
|
|
target source file itself.
|
7916 |
|
|
|
7917 |
|
|
For example, `coff-i960.c' includes `coff/internal.h' and
|
7918 |
|
|
`coff/i960.h'. It then defines a few constants, such as `I960', and
|
7919 |
|
|
includes `coffcode.h'. Since the i960 has complex relocation types,
|
7920 |
|
|
`coff-i960.c' also includes some code to manipulate the i960 relocs.
|
7921 |
|
|
This code is not in `coffcode.h' because it would not be used by any
|
7922 |
|
|
other target.
|
7923 |
|
|
|
7924 |
|
|
3.3.2.2 Bit twiddling
|
7925 |
|
|
.....................
|
7926 |
|
|
|
7927 |
|
|
Each flavour of coff supported in BFD has its own header file
|
7928 |
|
|
describing the external layout of the structures. There is also an
|
7929 |
|
|
internal description of the coff layout, in `coff/internal.h'. A major
|
7930 |
|
|
function of the coff backend is swapping the bytes and twiddling the
|
7931 |
|
|
bits to translate the external form of the structures into the normal
|
7932 |
|
|
internal form. This is all performed in the `bfd_swap'_thing_direction
|
7933 |
|
|
routines. Some elements are different sizes between different versions
|
7934 |
|
|
of coff; it is the duty of the coff version specific include file to
|
7935 |
|
|
override the definitions of various packing routines in `coffcode.h'.
|
7936 |
|
|
E.g., the size of line number entry in coff is sometimes 16 bits, and
|
7937 |
|
|
sometimes 32 bits. `#define'ing `PUT_LNSZ_LNNO' and `GET_LNSZ_LNNO'
|
7938 |
|
|
will select the correct one. No doubt, some day someone will find a
|
7939 |
|
|
version of coff which has a varying field size not catered to at the
|
7940 |
|
|
moment. To port BFD, that person will have to add more `#defines'.
|
7941 |
|
|
Three of the bit twiddling routines are exported to `gdb';
|
7942 |
|
|
`coff_swap_aux_in', `coff_swap_sym_in' and `coff_swap_lineno_in'. `GDB'
|
7943 |
|
|
reads the symbol table on its own, but uses BFD to fix things up. More
|
7944 |
|
|
of the bit twiddlers are exported for `gas'; `coff_swap_aux_out',
|
7945 |
|
|
`coff_swap_sym_out', `coff_swap_lineno_out', `coff_swap_reloc_out',
|
7946 |
|
|
`coff_swap_filehdr_out', `coff_swap_aouthdr_out',
|
7947 |
|
|
`coff_swap_scnhdr_out'. `Gas' currently keeps track of all the symbol
|
7948 |
|
|
table and reloc drudgery itself, thereby saving the internal BFD
|
7949 |
|
|
overhead, but uses BFD to swap things on the way out, making cross
|
7950 |
|
|
ports much safer. Doing so also allows BFD (and thus the linker) to
|
7951 |
|
|
use the same header files as `gas', which makes one avenue to disaster
|
7952 |
|
|
disappear.
|
7953 |
|
|
|
7954 |
|
|
3.3.2.3 Symbol reading
|
7955 |
|
|
......................
|
7956 |
|
|
|
7957 |
|
|
The simple canonical form for symbols used by BFD is not rich enough to
|
7958 |
|
|
keep all the information available in a coff symbol table. The back end
|
7959 |
|
|
gets around this problem by keeping the original symbol table around,
|
7960 |
|
|
"behind the scenes".
|
7961 |
|
|
|
7962 |
|
|
When a symbol table is requested (through a call to
|
7963 |
|
|
`bfd_canonicalize_symtab'), a request gets through to
|
7964 |
|
|
`coff_get_normalized_symtab'. This reads the symbol table from the coff
|
7965 |
|
|
file and swaps all the structures inside into the internal form. It
|
7966 |
|
|
also fixes up all the pointers in the table (represented in the file by
|
7967 |
|
|
offsets from the first symbol in the table) into physical pointers to
|
7968 |
|
|
elements in the new internal table. This involves some work since the
|
7969 |
|
|
meanings of fields change depending upon context: a field that is a
|
7970 |
|
|
pointer to another structure in the symbol table at one moment may be
|
7971 |
|
|
the size in bytes of a structure at the next. Another pass is made
|
7972 |
|
|
over the table. All symbols which mark file names (`C_FILE' symbols)
|
7973 |
|
|
are modified so that the internal string points to the value in the
|
7974 |
|
|
auxent (the real filename) rather than the normal text associated with
|
7975 |
|
|
the symbol (`".file"').
|
7976 |
|
|
|
7977 |
|
|
At this time the symbol names are moved around. Coff stores all
|
7978 |
|
|
symbols less than nine characters long physically within the symbol
|
7979 |
|
|
table; longer strings are kept at the end of the file in the string
|
7980 |
|
|
table. This pass moves all strings into memory and replaces them with
|
7981 |
|
|
pointers to the strings.
|
7982 |
|
|
|
7983 |
|
|
The symbol table is massaged once again, this time to create the
|
7984 |
|
|
canonical table used by the BFD application. Each symbol is inspected
|
7985 |
|
|
in turn, and a decision made (using the `sclass' field) about the
|
7986 |
|
|
various flags to set in the `asymbol'. *Note Symbols::. The generated
|
7987 |
|
|
canonical table shares strings with the hidden internal symbol table.
|
7988 |
|
|
|
7989 |
|
|
Any linenumbers are read from the coff file too, and attached to the
|
7990 |
|
|
symbols which own the functions the linenumbers belong to.
|
7991 |
|
|
|
7992 |
|
|
3.3.2.4 Symbol writing
|
7993 |
|
|
......................
|
7994 |
|
|
|
7995 |
|
|
Writing a symbol to a coff file which didn't come from a coff file will
|
7996 |
|
|
lose any debugging information. The `asymbol' structure remembers the
|
7997 |
|
|
BFD from which the symbol was taken, and on output the back end makes
|
7998 |
|
|
sure that the same destination target as source target is present.
|
7999 |
|
|
|
8000 |
|
|
When the symbols have come from a coff file then all the debugging
|
8001 |
|
|
information is preserved.
|
8002 |
|
|
|
8003 |
|
|
Symbol tables are provided for writing to the back end in a vector
|
8004 |
|
|
of pointers to pointers. This allows applications like the linker to
|
8005 |
|
|
accumulate and output large symbol tables without having to do too much
|
8006 |
|
|
byte copying.
|
8007 |
|
|
|
8008 |
|
|
This function runs through the provided symbol table and patches
|
8009 |
|
|
each symbol marked as a file place holder (`C_FILE') to point to the
|
8010 |
|
|
next file place holder in the list. It also marks each `offset' field
|
8011 |
|
|
in the list with the offset from the first symbol of the current symbol.
|
8012 |
|
|
|
8013 |
|
|
Another function of this procedure is to turn the canonical value
|
8014 |
|
|
form of BFD into the form used by coff. Internally, BFD expects symbol
|
8015 |
|
|
values to be offsets from a section base; so a symbol physically at
|
8016 |
|
|
0x120, but in a section starting at 0x100, would have the value 0x20.
|
8017 |
|
|
Coff expects symbols to contain their final value, so symbols have
|
8018 |
|
|
their values changed at this point to reflect their sum with their
|
8019 |
|
|
owning section. This transformation uses the `output_section' field of
|
8020 |
|
|
the `asymbol''s `asection' *Note Sections::.
|
8021 |
|
|
|
8022 |
|
|
* `coff_mangle_symbols'
|
8023 |
|
|
This routine runs though the provided symbol table and uses the
|
8024 |
|
|
offsets generated by the previous pass and the pointers generated when
|
8025 |
|
|
the symbol table was read in to create the structured hierarchy
|
8026 |
|
|
required by coff. It changes each pointer to a symbol into the index
|
8027 |
|
|
into the symbol table of the asymbol.
|
8028 |
|
|
|
8029 |
|
|
* `coff_write_symbols'
|
8030 |
|
|
This routine runs through the symbol table and patches up the
|
8031 |
|
|
symbols from their internal form into the coff way, calls the bit
|
8032 |
|
|
twiddlers, and writes out the table to the file.
|
8033 |
|
|
|
8034 |
|
|
3.3.2.5 `coff_symbol_type'
|
8035 |
|
|
..........................
|
8036 |
|
|
|
8037 |
|
|
*Description*
|
8038 |
|
|
The hidden information for an `asymbol' is described in a
|
8039 |
|
|
`combined_entry_type':
|
8040 |
|
|
|
8041 |
|
|
|
8042 |
|
|
typedef struct coff_ptr_struct
|
8043 |
|
|
{
|
8044 |
|
|
/* Remembers the offset from the first symbol in the file for
|
8045 |
|
|
this symbol. Generated by coff_renumber_symbols. */
|
8046 |
|
|
unsigned int offset;
|
8047 |
|
|
|
8048 |
|
|
/* Should the value of this symbol be renumbered. Used for
|
8049 |
|
|
XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */
|
8050 |
|
|
unsigned int fix_value : 1;
|
8051 |
|
|
|
8052 |
|
|
/* Should the tag field of this symbol be renumbered.
|
8053 |
|
|
Created by coff_pointerize_aux. */
|
8054 |
|
|
unsigned int fix_tag : 1;
|
8055 |
|
|
|
8056 |
|
|
/* Should the endidx field of this symbol be renumbered.
|
8057 |
|
|
Created by coff_pointerize_aux. */
|
8058 |
|
|
unsigned int fix_end : 1;
|
8059 |
|
|
|
8060 |
|
|
/* Should the x_csect.x_scnlen field be renumbered.
|
8061 |
|
|
Created by coff_pointerize_aux. */
|
8062 |
|
|
unsigned int fix_scnlen : 1;
|
8063 |
|
|
|
8064 |
|
|
/* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the
|
8065 |
|
|
index into the line number entries. Set by coff_slurp_symbol_table. */
|
8066 |
|
|
unsigned int fix_line : 1;
|
8067 |
|
|
|
8068 |
|
|
/* The container for the symbol structure as read and translated
|
8069 |
|
|
from the file. */
|
8070 |
|
|
union
|
8071 |
|
|
{
|
8072 |
|
|
union internal_auxent auxent;
|
8073 |
|
|
struct internal_syment syment;
|
8074 |
|
|
} u;
|
8075 |
|
|
} combined_entry_type;
|
8076 |
|
|
|
8077 |
|
|
|
8078 |
|
|
/* Each canonical asymbol really looks like this: */
|
8079 |
|
|
|
8080 |
|
|
typedef struct coff_symbol_struct
|
8081 |
|
|
{
|
8082 |
|
|
/* The actual symbol which the rest of BFD works with */
|
8083 |
|
|
asymbol symbol;
|
8084 |
|
|
|
8085 |
|
|
/* A pointer to the hidden information for this symbol */
|
8086 |
|
|
combined_entry_type *native;
|
8087 |
|
|
|
8088 |
|
|
/* A pointer to the linenumber information for this symbol */
|
8089 |
|
|
struct lineno_cache_entry *lineno;
|
8090 |
|
|
|
8091 |
|
|
/* Have the line numbers been relocated yet ? */
|
8092 |
|
|
bfd_boolean done_lineno;
|
8093 |
|
|
} coff_symbol_type;
|
8094 |
|
|
|
8095 |
|
|
3.3.2.6 `bfd_coff_backend_data'
|
8096 |
|
|
...............................
|
8097 |
|
|
|
8098 |
|
|
/* COFF symbol classifications. */
|
8099 |
|
|
|
8100 |
|
|
enum coff_symbol_classification
|
8101 |
|
|
{
|
8102 |
|
|
/* Global symbol. */
|
8103 |
|
|
COFF_SYMBOL_GLOBAL,
|
8104 |
|
|
/* Common symbol. */
|
8105 |
|
|
COFF_SYMBOL_COMMON,
|
8106 |
|
|
/* Undefined symbol. */
|
8107 |
|
|
COFF_SYMBOL_UNDEFINED,
|
8108 |
|
|
/* Local symbol. */
|
8109 |
|
|
COFF_SYMBOL_LOCAL,
|
8110 |
|
|
/* PE section symbol. */
|
8111 |
|
|
COFF_SYMBOL_PE_SECTION
|
8112 |
|
|
};
|
8113 |
|
|
Special entry points for gdb to swap in coff symbol table parts:
|
8114 |
|
|
typedef struct
|
8115 |
|
|
{
|
8116 |
|
|
void (*_bfd_coff_swap_aux_in)
|
8117 |
|
|
(bfd *, void *, int, int, int, int, void *);
|
8118 |
|
|
|
8119 |
|
|
void (*_bfd_coff_swap_sym_in)
|
8120 |
|
|
(bfd *, void *, void *);
|
8121 |
|
|
|
8122 |
|
|
void (*_bfd_coff_swap_lineno_in)
|
8123 |
|
|
(bfd *, void *, void *);
|
8124 |
|
|
|
8125 |
|
|
unsigned int (*_bfd_coff_swap_aux_out)
|
8126 |
|
|
(bfd *, void *, int, int, int, int, void *);
|
8127 |
|
|
|
8128 |
|
|
unsigned int (*_bfd_coff_swap_sym_out)
|
8129 |
|
|
(bfd *, void *, void *);
|
8130 |
|
|
|
8131 |
|
|
unsigned int (*_bfd_coff_swap_lineno_out)
|
8132 |
|
|
(bfd *, void *, void *);
|
8133 |
|
|
|
8134 |
|
|
unsigned int (*_bfd_coff_swap_reloc_out)
|
8135 |
|
|
(bfd *, void *, void *);
|
8136 |
|
|
|
8137 |
|
|
unsigned int (*_bfd_coff_swap_filehdr_out)
|
8138 |
|
|
(bfd *, void *, void *);
|
8139 |
|
|
|
8140 |
|
|
unsigned int (*_bfd_coff_swap_aouthdr_out)
|
8141 |
|
|
(bfd *, void *, void *);
|
8142 |
|
|
|
8143 |
|
|
unsigned int (*_bfd_coff_swap_scnhdr_out)
|
8144 |
|
|
(bfd *, void *, void *);
|
8145 |
|
|
|
8146 |
|
|
unsigned int _bfd_filhsz;
|
8147 |
|
|
unsigned int _bfd_aoutsz;
|
8148 |
|
|
unsigned int _bfd_scnhsz;
|
8149 |
|
|
unsigned int _bfd_symesz;
|
8150 |
|
|
unsigned int _bfd_auxesz;
|
8151 |
|
|
unsigned int _bfd_relsz;
|
8152 |
|
|
unsigned int _bfd_linesz;
|
8153 |
|
|
unsigned int _bfd_filnmlen;
|
8154 |
|
|
bfd_boolean _bfd_coff_long_filenames;
|
8155 |
|
|
bfd_boolean _bfd_coff_long_section_names;
|
8156 |
|
|
unsigned int _bfd_coff_default_section_alignment_power;
|
8157 |
|
|
bfd_boolean _bfd_coff_force_symnames_in_strings;
|
8158 |
|
|
unsigned int _bfd_coff_debug_string_prefix_length;
|
8159 |
|
|
|
8160 |
|
|
void (*_bfd_coff_swap_filehdr_in)
|
8161 |
|
|
(bfd *, void *, void *);
|
8162 |
|
|
|
8163 |
|
|
void (*_bfd_coff_swap_aouthdr_in)
|
8164 |
|
|
(bfd *, void *, void *);
|
8165 |
|
|
|
8166 |
|
|
void (*_bfd_coff_swap_scnhdr_in)
|
8167 |
|
|
(bfd *, void *, void *);
|
8168 |
|
|
|
8169 |
|
|
void (*_bfd_coff_swap_reloc_in)
|
8170 |
|
|
(bfd *abfd, void *, void *);
|
8171 |
|
|
|
8172 |
|
|
bfd_boolean (*_bfd_coff_bad_format_hook)
|
8173 |
|
|
(bfd *, void *);
|
8174 |
|
|
|
8175 |
|
|
bfd_boolean (*_bfd_coff_set_arch_mach_hook)
|
8176 |
|
|
(bfd *, void *);
|
8177 |
|
|
|
8178 |
|
|
void * (*_bfd_coff_mkobject_hook)
|
8179 |
|
|
(bfd *, void *, void *);
|
8180 |
|
|
|
8181 |
|
|
bfd_boolean (*_bfd_styp_to_sec_flags_hook)
|
8182 |
|
|
(bfd *, void *, const char *, asection *, flagword *);
|
8183 |
|
|
|
8184 |
|
|
void (*_bfd_set_alignment_hook)
|
8185 |
|
|
(bfd *, asection *, void *);
|
8186 |
|
|
|
8187 |
|
|
bfd_boolean (*_bfd_coff_slurp_symbol_table)
|
8188 |
|
|
(bfd *);
|
8189 |
|
|
|
8190 |
|
|
bfd_boolean (*_bfd_coff_symname_in_debug)
|
8191 |
|
|
(bfd *, struct internal_syment *);
|
8192 |
|
|
|
8193 |
|
|
bfd_boolean (*_bfd_coff_pointerize_aux_hook)
|
8194 |
|
|
(bfd *, combined_entry_type *, combined_entry_type *,
|
8195 |
|
|
unsigned int, combined_entry_type *);
|
8196 |
|
|
|
8197 |
|
|
bfd_boolean (*_bfd_coff_print_aux)
|
8198 |
|
|
(bfd *, FILE *, combined_entry_type *, combined_entry_type *,
|
8199 |
|
|
combined_entry_type *, unsigned int);
|
8200 |
|
|
|
8201 |
|
|
void (*_bfd_coff_reloc16_extra_cases)
|
8202 |
|
|
(bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
|
8203 |
|
|
bfd_byte *, unsigned int *, unsigned int *);
|
8204 |
|
|
|
8205 |
|
|
int (*_bfd_coff_reloc16_estimate)
|
8206 |
|
|
(bfd *, asection *, arelent *, unsigned int,
|
8207 |
|
|
struct bfd_link_info *);
|
8208 |
|
|
|
8209 |
|
|
enum coff_symbol_classification (*_bfd_coff_classify_symbol)
|
8210 |
|
|
(bfd *, struct internal_syment *);
|
8211 |
|
|
|
8212 |
|
|
bfd_boolean (*_bfd_coff_compute_section_file_positions)
|
8213 |
|
|
(bfd *);
|
8214 |
|
|
|
8215 |
|
|
bfd_boolean (*_bfd_coff_start_final_link)
|
8216 |
|
|
(bfd *, struct bfd_link_info *);
|
8217 |
|
|
|
8218 |
|
|
bfd_boolean (*_bfd_coff_relocate_section)
|
8219 |
|
|
(bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
|
8220 |
|
|
struct internal_reloc *, struct internal_syment *, asection **);
|
8221 |
|
|
|
8222 |
|
|
reloc_howto_type *(*_bfd_coff_rtype_to_howto)
|
8223 |
|
|
(bfd *, asection *, struct internal_reloc *,
|
8224 |
|
|
struct coff_link_hash_entry *, struct internal_syment *,
|
8225 |
|
|
bfd_vma *);
|
8226 |
|
|
|
8227 |
|
|
bfd_boolean (*_bfd_coff_adjust_symndx)
|
8228 |
|
|
(bfd *, struct bfd_link_info *, bfd *, asection *,
|
8229 |
|
|
struct internal_reloc *, bfd_boolean *);
|
8230 |
|
|
|
8231 |
|
|
bfd_boolean (*_bfd_coff_link_add_one_symbol)
|
8232 |
|
|
(struct bfd_link_info *, bfd *, const char *, flagword,
|
8233 |
|
|
asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
|
8234 |
|
|
struct bfd_link_hash_entry **);
|
8235 |
|
|
|
8236 |
|
|
bfd_boolean (*_bfd_coff_link_output_has_begun)
|
8237 |
|
|
(bfd *, struct coff_final_link_info *);
|
8238 |
|
|
|
8239 |
|
|
bfd_boolean (*_bfd_coff_final_link_postscript)
|
8240 |
|
|
(bfd *, struct coff_final_link_info *);
|
8241 |
|
|
|
8242 |
|
|
} bfd_coff_backend_data;
|
8243 |
|
|
|
8244 |
|
|
#define coff_backend_info(abfd) \
|
8245 |
|
|
((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
|
8246 |
|
|
|
8247 |
|
|
#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
|
8248 |
|
|
((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
|
8249 |
|
|
|
8250 |
|
|
#define bfd_coff_swap_sym_in(a,e,i) \
|
8251 |
|
|
((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
|
8252 |
|
|
|
8253 |
|
|
#define bfd_coff_swap_lineno_in(a,e,i) \
|
8254 |
|
|
((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
|
8255 |
|
|
|
8256 |
|
|
#define bfd_coff_swap_reloc_out(abfd, i, o) \
|
8257 |
|
|
((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
|
8258 |
|
|
|
8259 |
|
|
#define bfd_coff_swap_lineno_out(abfd, i, o) \
|
8260 |
|
|
((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
|
8261 |
|
|
|
8262 |
|
|
#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
|
8263 |
|
|
((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
|
8264 |
|
|
|
8265 |
|
|
#define bfd_coff_swap_sym_out(abfd, i,o) \
|
8266 |
|
|
((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
|
8267 |
|
|
|
8268 |
|
|
#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
|
8269 |
|
|
((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
|
8270 |
|
|
|
8271 |
|
|
#define bfd_coff_swap_filehdr_out(abfd, i,o) \
|
8272 |
|
|
((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
|
8273 |
|
|
|
8274 |
|
|
#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
|
8275 |
|
|
((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
|
8276 |
|
|
|
8277 |
|
|
#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
|
8278 |
|
|
#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
|
8279 |
|
|
#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
|
8280 |
|
|
#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
|
8281 |
|
|
#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
|
8282 |
|
|
#define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz)
|
8283 |
|
|
#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
|
8284 |
|
|
#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
|
8285 |
|
|
#define bfd_coff_long_filenames(abfd) \
|
8286 |
|
|
(coff_backend_info (abfd)->_bfd_coff_long_filenames)
|
8287 |
|
|
#define bfd_coff_long_section_names(abfd) \
|
8288 |
|
|
(coff_backend_info (abfd)->_bfd_coff_long_section_names)
|
8289 |
|
|
#define bfd_coff_default_section_alignment_power(abfd) \
|
8290 |
|
|
(coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
|
8291 |
|
|
#define bfd_coff_swap_filehdr_in(abfd, i,o) \
|
8292 |
|
|
((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
|
8293 |
|
|
|
8294 |
|
|
#define bfd_coff_swap_aouthdr_in(abfd, i,o) \
|
8295 |
|
|
((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
|
8296 |
|
|
|
8297 |
|
|
#define bfd_coff_swap_scnhdr_in(abfd, i,o) \
|
8298 |
|
|
((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
|
8299 |
|
|
|
8300 |
|
|
#define bfd_coff_swap_reloc_in(abfd, i, o) \
|
8301 |
|
|
((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
|
8302 |
|
|
|
8303 |
|
|
#define bfd_coff_bad_format_hook(abfd, filehdr) \
|
8304 |
|
|
((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
|
8305 |
|
|
|
8306 |
|
|
#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
|
8307 |
|
|
((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
|
8308 |
|
|
#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
|
8309 |
|
|
((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
|
8310 |
|
|
(abfd, filehdr, aouthdr))
|
8311 |
|
|
|
8312 |
|
|
#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
|
8313 |
|
|
((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
|
8314 |
|
|
(abfd, scnhdr, name, section, flags_ptr))
|
8315 |
|
|
|
8316 |
|
|
#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
|
8317 |
|
|
((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
|
8318 |
|
|
|
8319 |
|
|
#define bfd_coff_slurp_symbol_table(abfd)\
|
8320 |
|
|
((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
|
8321 |
|
|
|
8322 |
|
|
#define bfd_coff_symname_in_debug(abfd, sym)\
|
8323 |
|
|
((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
|
8324 |
|
|
|
8325 |
|
|
#define bfd_coff_force_symnames_in_strings(abfd)\
|
8326 |
|
|
(coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
|
8327 |
|
|
|
8328 |
|
|
#define bfd_coff_debug_string_prefix_length(abfd)\
|
8329 |
|
|
(coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
|
8330 |
|
|
|
8331 |
|
|
#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
|
8332 |
|
|
((coff_backend_info (abfd)->_bfd_coff_print_aux)\
|
8333 |
|
|
(abfd, file, base, symbol, aux, indaux))
|
8334 |
|
|
|
8335 |
|
|
#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
|
8336 |
|
|
reloc, data, src_ptr, dst_ptr)\
|
8337 |
|
|
((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
|
8338 |
|
|
(abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
|
8339 |
|
|
|
8340 |
|
|
#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
|
8341 |
|
|
((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
|
8342 |
|
|
(abfd, section, reloc, shrink, link_info))
|
8343 |
|
|
|
8344 |
|
|
#define bfd_coff_classify_symbol(abfd, sym)\
|
8345 |
|
|
((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
|
8346 |
|
|
(abfd, sym))
|
8347 |
|
|
|
8348 |
|
|
#define bfd_coff_compute_section_file_positions(abfd)\
|
8349 |
|
|
((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
|
8350 |
|
|
(abfd))
|
8351 |
|
|
|
8352 |
|
|
#define bfd_coff_start_final_link(obfd, info)\
|
8353 |
|
|
((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
|
8354 |
|
|
(obfd, info))
|
8355 |
|
|
#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
|
8356 |
|
|
((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
|
8357 |
|
|
(obfd, info, ibfd, o, con, rel, isyms, secs))
|
8358 |
|
|
#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
|
8359 |
|
|
((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
|
8360 |
|
|
(abfd, sec, rel, h, sym, addendp))
|
8361 |
|
|
#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
|
8362 |
|
|
((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
|
8363 |
|
|
(obfd, info, ibfd, sec, rel, adjustedp))
|
8364 |
|
|
#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
|
8365 |
|
|
value, string, cp, coll, hashp)\
|
8366 |
|
|
((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
|
8367 |
|
|
(info, abfd, name, flags, section, value, string, cp, coll, hashp))
|
8368 |
|
|
|
8369 |
|
|
#define bfd_coff_link_output_has_begun(a,p) \
|
8370 |
|
|
((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
|
8371 |
|
|
#define bfd_coff_final_link_postscript(a,p) \
|
8372 |
|
|
((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
|
8373 |
|
|
|
8374 |
|
|
3.3.2.7 Writing relocations
|
8375 |
|
|
...........................
|
8376 |
|
|
|
8377 |
|
|
To write relocations, the back end steps though the canonical
|
8378 |
|
|
relocation table and create an `internal_reloc'. The symbol index to
|
8379 |
|
|
use is removed from the `offset' field in the symbol table supplied.
|
8380 |
|
|
The address comes directly from the sum of the section base address and
|
8381 |
|
|
the relocation offset; the type is dug directly from the howto field.
|
8382 |
|
|
Then the `internal_reloc' is swapped into the shape of an
|
8383 |
|
|
`external_reloc' and written out to disk.
|
8384 |
|
|
|
8385 |
|
|
3.3.2.8 Reading linenumbers
|
8386 |
|
|
...........................
|
8387 |
|
|
|
8388 |
|
|
Creating the linenumber table is done by reading in the entire coff
|
8389 |
|
|
linenumber table, and creating another table for internal use.
|
8390 |
|
|
|
8391 |
|
|
A coff linenumber table is structured so that each function is
|
8392 |
|
|
marked as having a line number of 0. Each line within the function is
|
8393 |
|
|
an offset from the first line in the function. The base of the line
|
8394 |
|
|
number information for the table is stored in the symbol associated
|
8395 |
|
|
with the function.
|
8396 |
|
|
|
8397 |
|
|
Note: The PE format uses line number 0 for a flag indicating a new
|
8398 |
|
|
source file.
|
8399 |
|
|
|
8400 |
|
|
The information is copied from the external to the internal table,
|
8401 |
|
|
and each symbol which marks a function is marked by pointing its...
|
8402 |
|
|
|
8403 |
|
|
How does this work ?
|
8404 |
|
|
|
8405 |
|
|
3.3.2.9 Reading relocations
|
8406 |
|
|
...........................
|
8407 |
|
|
|
8408 |
|
|
Coff relocations are easily transformed into the internal BFD form
|
8409 |
|
|
(`arelent').
|
8410 |
|
|
|
8411 |
|
|
Reading a coff relocation table is done in the following stages:
|
8412 |
|
|
|
8413 |
|
|
* Read the entire coff relocation table into memory.
|
8414 |
|
|
|
8415 |
|
|
* Process each relocation in turn; first swap it from the external
|
8416 |
|
|
to the internal form.
|
8417 |
|
|
|
8418 |
|
|
* Turn the symbol referenced in the relocation's symbol index into a
|
8419 |
|
|
pointer into the canonical symbol table. This table is the same
|
8420 |
|
|
as the one returned by a call to `bfd_canonicalize_symtab'. The
|
8421 |
|
|
back end will call that routine and save the result if a
|
8422 |
|
|
canonicalization hasn't been done.
|
8423 |
|
|
|
8424 |
|
|
* The reloc index is turned into a pointer to a howto structure, in
|
8425 |
|
|
a back end specific way. For instance, the 386 and 960 use the
|
8426 |
|
|
`r_type' to directly produce an index into a howto table vector;
|
8427 |
|
|
the 88k subtracts a number from the `r_type' field and creates an
|
8428 |
|
|
addend field.
|
8429 |
|
|
|
8430 |
|
|
|
8431 |
|
|
File: bfd.info, Node: elf, Next: mmo, Prev: coff, Up: BFD back ends
|
8432 |
|
|
|
8433 |
|
|
3.4 ELF backends
|
8434 |
|
|
================
|
8435 |
|
|
|
8436 |
|
|
BFD support for ELF formats is being worked on. Currently, the best
|
8437 |
|
|
supported back ends are for sparc and i386 (running svr4 or Solaris 2).
|
8438 |
|
|
|
8439 |
|
|
Documentation of the internals of the support code still needs to be
|
8440 |
|
|
written. The code is changing quickly enough that we haven't bothered
|
8441 |
|
|
yet.
|
8442 |
|
|
|
8443 |
|
|
3.4.0.1 `bfd_elf_find_section'
|
8444 |
|
|
..............................
|
8445 |
|
|
|
8446 |
|
|
*Synopsis*
|
8447 |
|
|
struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
|
8448 |
|
|
*Description*
|
8449 |
|
|
Helper functions for GDB to locate the string tables. Since BFD hides
|
8450 |
|
|
string tables from callers, GDB needs to use an internal hook to find
|
8451 |
|
|
them. Sun's .stabstr, in particular, isn't even pointed to by the
|
8452 |
|
|
.stab section, so ordinary mechanisms wouldn't work to find it, even if
|
8453 |
|
|
we had some.
|
8454 |
|
|
|
8455 |
|
|
|
8456 |
|
|
File: bfd.info, Node: mmo, Prev: elf, Up: BFD back ends
|
8457 |
|
|
|
8458 |
|
|
3.5 mmo backend
|
8459 |
|
|
===============
|
8460 |
|
|
|
8461 |
|
|
The mmo object format is used exclusively together with Professor
|
8462 |
|
|
Donald E. Knuth's educational 64-bit processor MMIX. The simulator
|
8463 |
|
|
`mmix' which is available at
|
8464 |
|
|
`http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'
|
8465 |
|
|
understands this format. That package also includes a combined
|
8466 |
|
|
assembler and linker called `mmixal'. The mmo format has no advantages
|
8467 |
|
|
feature-wise compared to e.g. ELF. It is a simple non-relocatable
|
8468 |
|
|
object format with no support for archives or debugging information,
|
8469 |
|
|
except for symbol value information and line numbers (which is not yet
|
8470 |
|
|
implemented in BFD). See
|
8471 |
|
|
`http://www-cs-faculty.stanford.edu/~knuth/mmix.html' for more
|
8472 |
|
|
information about MMIX. The ELF format is used for intermediate object
|
8473 |
|
|
files in the BFD implementation.
|
8474 |
|
|
|
8475 |
|
|
* Menu:
|
8476 |
|
|
|
8477 |
|
|
* File layout::
|
8478 |
|
|
* Symbol-table::
|
8479 |
|
|
* mmo section mapping::
|
8480 |
|
|
|
8481 |
|
|
|
8482 |
|
|
File: bfd.info, Node: File layout, Next: Symbol-table, Prev: mmo, Up: mmo
|
8483 |
|
|
|
8484 |
|
|
3.5.1 File layout
|
8485 |
|
|
-----------------
|
8486 |
|
|
|
8487 |
|
|
The mmo file contents is not partitioned into named sections as with
|
8488 |
|
|
e.g. ELF. Memory areas is formed by specifying the location of the
|
8489 |
|
|
data that follows. Only the memory area `0x0000...00' to `0x01ff...ff'
|
8490 |
|
|
is executable, so it is used for code (and constants) and the area
|
8491 |
|
|
`0x2000...00' to `0x20ff...ff' is used for writable data. *Note mmo
|
8492 |
|
|
section mapping::.
|
8493 |
|
|
|
8494 |
|
|
There is provision for specifying "special data" of 65536 different
|
8495 |
|
|
types. We use type 80 (decimal), arbitrarily chosen the same as the
|
8496 |
|
|
ELF `e_machine' number for MMIX, filling it with section information
|
8497 |
|
|
normally found in ELF objects. *Note mmo section mapping::.
|
8498 |
|
|
|
8499 |
|
|
Contents is entered as 32-bit words, xor:ed over previous contents,
|
8500 |
|
|
always zero-initialized. A word that starts with the byte `0x98' forms
|
8501 |
|
|
a command called a `lopcode', where the next byte distinguished between
|
8502 |
|
|
the thirteen lopcodes. The two remaining bytes, called the `Y' and `Z'
|
8503 |
|
|
fields, or the `YZ' field (a 16-bit big-endian number), are used for
|
8504 |
|
|
various purposes different for each lopcode. As documented in
|
8505 |
|
|
`http://www-cs-faculty.stanford.edu/~knuth/mmixal-intro.ps.gz', the
|
8506 |
|
|
lopcodes are:
|
8507 |
|
|
|
8508 |
|
|
`lop_quote'
|
8509 |
|
|
0x98000001. The next word is contents, regardless of whether it
|
8510 |
|
|
starts with 0x98 or not.
|
8511 |
|
|
|
8512 |
|
|
`lop_loc'
|
8513 |
|
|
0x9801YYZZ, where `Z' is 1 or 2. This is a location directive,
|
8514 |
|
|
setting the location for the next data to the next 32-bit word
|
8515 |
|
|
(for Z = 1) or 64-bit word (for Z = 2), plus Y * 2^56. Normally
|
8516 |
|
|
`Y' is 0 for the text segment and 2 for the data segment.
|
8517 |
|
|
|
8518 |
|
|
`lop_skip'
|
8519 |
|
|
0x9802YYZZ. Increase the current location by `YZ' bytes.
|
8520 |
|
|
|
8521 |
|
|
`lop_fixo'
|
8522 |
|
|
0x9803YYZZ, where `Z' is 1 or 2. Store the current location as 64
|
8523 |
|
|
bits into the location pointed to by the next 32-bit (Z = 1) or
|
8524 |
|
|
64-bit (Z = 2) word, plus Y * 2^56.
|
8525 |
|
|
|
8526 |
|
|
`lop_fixr'
|
8527 |
|
|
0x9804YYZZ. `YZ' is stored into the current location plus 2 - 4 *
|
8528 |
|
|
YZ.
|
8529 |
|
|
|
8530 |
|
|
`lop_fixrx'
|
8531 |
|
|
0x980500ZZ. `Z' is 16 or 24. A value `L' derived from the
|
8532 |
|
|
following 32-bit word are used in a manner similar to `YZ' in
|
8533 |
|
|
lop_fixr: it is xor:ed into the current location minus 4 * L. The
|
8534 |
|
|
first byte of the word is 0 or 1. If it is 1, then L = (LOWEST 24
|
8535 |
|
|
BITS OF WORD) - 2^Z, if 0, then L = (LOWEST 24 BITS OF WORD).
|
8536 |
|
|
|
8537 |
|
|
`lop_file'
|
8538 |
|
|
0x9806YYZZ. `Y' is the file number, `Z' is count of 32-bit words.
|
8539 |
|
|
Set the file number to `Y' and the line counter to 0. The next Z
|
8540 |
|
|
* 4 bytes contain the file name, padded with zeros if the count is
|
8541 |
|
|
not a multiple of four. The same `Y' may occur multiple times,
|
8542 |
|
|
but `Z' must be 0 for all but the first occurrence.
|
8543 |
|
|
|
8544 |
|
|
`lop_line'
|
8545 |
|
|
0x9807YYZZ. `YZ' is the line number. Together with lop_file, it
|
8546 |
|
|
forms the source location for the next 32-bit word. Note that for
|
8547 |
|
|
each non-lopcode 32-bit word, line numbers are assumed incremented
|
8548 |
|
|
by one.
|
8549 |
|
|
|
8550 |
|
|
`lop_spec'
|
8551 |
|
|
0x9808YYZZ. `YZ' is the type number. Data until the next lopcode
|
8552 |
|
|
other than lop_quote forms special data of type `YZ'. *Note mmo
|
8553 |
|
|
section mapping::.
|
8554 |
|
|
|
8555 |
|
|
Other types than 80, (or type 80 with a content that does not
|
8556 |
|
|
parse) is stored in sections named `.MMIX.spec_data.N' where N is
|
8557 |
|
|
the `YZ'-type. The flags for such a sections say not to allocate
|
8558 |
|
|
or load the data. The vma is 0. Contents of multiple occurrences
|
8559 |
|
|
of special data N is concatenated to the data of the previous
|
8560 |
|
|
lop_spec Ns. The location in data or code at which the lop_spec
|
8561 |
|
|
occurred is lost.
|
8562 |
|
|
|
8563 |
|
|
`lop_pre'
|
8564 |
|
|
0x980901ZZ. The first lopcode in a file. The `Z' field forms the
|
8565 |
|
|
length of header information in 32-bit words, where the first word
|
8566 |
|
|
tells the time in seconds since `00:00:00 GMT Jan 1 1970'.
|
8567 |
|
|
|
8568 |
|
|
`lop_post'
|
8569 |
|
|
0x980a00ZZ. Z > 32. This lopcode follows after all
|
8570 |
|
|
content-generating lopcodes in a program. The `Z' field denotes
|
8571 |
|
|
the value of `rG' at the beginning of the program. The following
|
8572 |
|
|
256 - Z big-endian 64-bit words are loaded into global registers
|
8573 |
|
|
`$G' ... `$255'.
|
8574 |
|
|
|
8575 |
|
|
`lop_stab'
|
8576 |
|
|
0x980b0000. The next-to-last lopcode in a program. Must follow
|
8577 |
|
|
immediately after the lop_post lopcode and its data. After this
|
8578 |
|
|
lopcode follows all symbols in a compressed format (*note
|
8579 |
|
|
Symbol-table::).
|
8580 |
|
|
|
8581 |
|
|
`lop_end'
|
8582 |
|
|
0x980cYYZZ. The last lopcode in a program. It must follow the
|
8583 |
|
|
lop_stab lopcode and its data. The `YZ' field contains the number
|
8584 |
|
|
of 32-bit words of symbol table information after the preceding
|
8585 |
|
|
lop_stab lopcode.
|
8586 |
|
|
|
8587 |
|
|
Note that the lopcode "fixups"; `lop_fixr', `lop_fixrx' and
|
8588 |
|
|
`lop_fixo' are not generated by BFD, but are handled. They are
|
8589 |
|
|
generated by `mmixal'.
|
8590 |
|
|
|
8591 |
|
|
This trivial one-label, one-instruction file:
|
8592 |
|
|
|
8593 |
|
|
:Main TRAP 1,2,3
|
8594 |
|
|
|
8595 |
|
|
can be represented this way in mmo:
|
8596 |
|
|
|
8597 |
|
|
0x98090101 - lop_pre, one 32-bit word with timestamp.
|
8598 |
|
|
|
8599 |
|
|
0x98010002 - lop_loc, text segment, using a 64-bit address.
|
8600 |
|
|
Note that mmixal does not emit this for the file above.
|
8601 |
|
|
0x00000000 - Address, high 32 bits.
|
8602 |
|
|
0x00000000 - Address, low 32 bits.
|
8603 |
|
|
0x98060002 - lop_file, 2 32-bit words for file-name.
|
8604 |
|
|
0x74657374 - "test"
|
8605 |
|
|
0x2e730000 - ".s\0\0"
|
8606 |
|
|
0x98070001 - lop_line, line 1.
|
8607 |
|
|
0x00010203 - TRAP 1,2,3
|
8608 |
|
|
0x980a00ff - lop_post, setting $255 to 0.
|
8609 |
|
|
0x00000000
|
8610 |
|
|
0x00000000
|
8611 |
|
|
0x980b0000 - lop_stab for ":Main" = 0, serial 1.
|
8612 |
|
|
0x203a4040 *Note Symbol-table::.
|
8613 |
|
|
0x10404020
|
8614 |
|
|
0x4d206120
|
8615 |
|
|
0x69016e00
|
8616 |
|
|
0x81000000
|
8617 |
|
|
0x980c0005 - lop_end; symbol table contained five 32-bit words.
|
8618 |
|
|
|
8619 |
|
|
|
8620 |
|
|
File: bfd.info, Node: Symbol-table, Next: mmo section mapping, Prev: File layout, Up: mmo
|
8621 |
|
|
|
8622 |
|
|
3.5.2 Symbol table format
|
8623 |
|
|
-------------------------
|
8624 |
|
|
|
8625 |
|
|
From mmixal.w (or really, the generated mmixal.tex) in
|
8626 |
|
|
`http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'):
|
8627 |
|
|
"Symbols are stored and retrieved by means of a `ternary search trie',
|
8628 |
|
|
following ideas of Bentley and Sedgewick. (See ACM-SIAM Symp. on
|
8629 |
|
|
Discrete Algorithms `8' (1997), 360-369; R.Sedgewick, `Algorithms in C'
|
8630 |
|
|
(Reading, Mass. Addison-Wesley, 1998), `15.4'.) Each trie node stores
|
8631 |
|
|
a character, and there are branches to subtries for the cases where a
|
8632 |
|
|
given character is less than, equal to, or greater than the character
|
8633 |
|
|
in the trie. There also is a pointer to a symbol table entry if a
|
8634 |
|
|
symbol ends at the current node."
|
8635 |
|
|
|
8636 |
|
|
So it's a tree encoded as a stream of bytes. The stream of bytes
|
8637 |
|
|
acts on a single virtual global symbol, adding and removing characters
|
8638 |
|
|
and signalling complete symbol points. Here, we read the stream and
|
8639 |
|
|
create symbols at the completion points.
|
8640 |
|
|
|
8641 |
|
|
First, there's a control byte `m'. If any of the listed bits in `m'
|
8642 |
|
|
is nonzero, we execute what stands at the right, in the listed order:
|
8643 |
|
|
|
8644 |
|
|
(MMO3_LEFT)
|
8645 |
|
|
0x40 - Traverse left trie.
|
8646 |
|
|
(Read a new command byte and recurse.)
|
8647 |
|
|
|
8648 |
|
|
(MMO3_SYMBITS)
|
8649 |
|
|
0x2f - Read the next byte as a character and store it in the
|
8650 |
|
|
current character position; increment character position.
|
8651 |
|
|
Test the bits of `m':
|
8652 |
|
|
|
8653 |
|
|
(MMO3_WCHAR)
|
8654 |
|
|
0x80 - The character is 16-bit (so read another byte,
|
8655 |
|
|
merge into current character.
|
8656 |
|
|
|
8657 |
|
|
(MMO3_TYPEBITS)
|
8658 |
|
|
0xf - We have a complete symbol; parse the type, value
|
8659 |
|
|
and serial number and do what should be done
|
8660 |
|
|
with a symbol. The type and length information
|
8661 |
|
|
is in j = (m & 0xf).
|
8662 |
|
|
|
8663 |
|
|
(MMO3_REGQUAL_BITS)
|
8664 |
|
|
j == 0xf: A register variable. The following
|
8665 |
|
|
byte tells which register.
|
8666 |
|
|
j <= 8: An absolute symbol. Read j bytes as the
|
8667 |
|
|
big-endian number the symbol equals.
|
8668 |
|
|
A j = 2 with two zero bytes denotes an
|
8669 |
|
|
unknown symbol.
|
8670 |
|
|
j > 8: As with j <= 8, but add (0x20 << 56)
|
8671 |
|
|
to the value in the following j - 8
|
8672 |
|
|
bytes.
|
8673 |
|
|
|
8674 |
|
|
Then comes the serial number, as a variant of
|
8675 |
|
|
uleb128, but better named ubeb128:
|
8676 |
|
|
Read bytes and shift the previous value left 7
|
8677 |
|
|
(multiply by 128). Add in the new byte, repeat
|
8678 |
|
|
until a byte has bit 7 set. The serial number
|
8679 |
|
|
is the computed value minus 128.
|
8680 |
|
|
|
8681 |
|
|
(MMO3_MIDDLE)
|
8682 |
|
|
0x20 - Traverse middle trie. (Read a new command byte
|
8683 |
|
|
and recurse.) Decrement character position.
|
8684 |
|
|
|
8685 |
|
|
(MMO3_RIGHT)
|
8686 |
|
|
0x10 - Traverse right trie. (Read a new command byte and
|
8687 |
|
|
recurse.)
|
8688 |
|
|
|
8689 |
|
|
Let's look again at the `lop_stab' for the trivial file (*note File
|
8690 |
|
|
layout::).
|
8691 |
|
|
|
8692 |
|
|
0x980b0000 - lop_stab for ":Main" = 0, serial 1.
|
8693 |
|
|
0x203a4040
|
8694 |
|
|
0x10404020
|
8695 |
|
|
0x4d206120
|
8696 |
|
|
0x69016e00
|
8697 |
|
|
0x81000000
|
8698 |
|
|
|
8699 |
|
|
This forms the trivial trie (note that the path between ":" and "M"
|
8700 |
|
|
is redundant):
|
8701 |
|
|
|
8702 |
|
|
203a ":"
|
8703 |
|
|
40 /
|
8704 |
|
|
40 /
|
8705 |
|
|
10 \
|
8706 |
|
|
40 /
|
8707 |
|
|
40 /
|
8708 |
|
|
204d "M"
|
8709 |
|
|
2061 "a"
|
8710 |
|
|
2069 "i"
|
8711 |
|
|
016e "n" is the last character in a full symbol, and
|
8712 |
|
|
with a value represented in one byte.
|
8713 |
|
|
00 The value is 0.
|
8714 |
|
|
81 The serial number is 1.
|
8715 |
|
|
|
8716 |
|
|
|
8717 |
|
|
File: bfd.info, Node: mmo section mapping, Prev: Symbol-table, Up: mmo
|
8718 |
|
|
|
8719 |
|
|
3.5.3 mmo section mapping
|
8720 |
|
|
-------------------------
|
8721 |
|
|
|
8722 |
|
|
The implementation in BFD uses special data type 80 (decimal) to
|
8723 |
|
|
encapsulate and describe named sections, containing e.g. debug
|
8724 |
|
|
information. If needed, any datum in the encapsulation will be quoted
|
8725 |
|
|
using lop_quote. First comes a 32-bit word holding the number of
|
8726 |
|
|
32-bit words containing the zero-terminated zero-padded segment name.
|
8727 |
|
|
After the name there's a 32-bit word holding flags describing the
|
8728 |
|
|
section type. Then comes a 64-bit big-endian word with the section
|
8729 |
|
|
length (in bytes), then another with the section start address.
|
8730 |
|
|
Depending on the type of section, the contents might follow,
|
8731 |
|
|
zero-padded to 32-bit boundary. For a loadable section (such as data
|
8732 |
|
|
or code), the contents might follow at some later point, not
|
8733 |
|
|
necessarily immediately, as a lop_loc with the same start address as in
|
8734 |
|
|
the section description, followed by the contents. This in effect
|
8735 |
|
|
forms a descriptor that must be emitted before the actual contents.
|
8736 |
|
|
Sections described this way must not overlap.
|
8737 |
|
|
|
8738 |
|
|
For areas that don't have such descriptors, synthetic sections are
|
8739 |
|
|
formed by BFD. Consecutive contents in the two memory areas
|
8740 |
|
|
`0x0000...00' to `0x01ff...ff' and `0x2000...00' to `0x20ff...ff' are
|
8741 |
|
|
entered in sections named `.text' and `.data' respectively. If an area
|
8742 |
|
|
is not otherwise described, but would together with a neighboring lower
|
8743 |
|
|
area be less than `0x40000000' bytes long, it is joined with the lower
|
8744 |
|
|
area and the gap is zero-filled. For other cases, a new section is
|
8745 |
|
|
formed, named `.MMIX.sec.N'. Here, N is a number, a running count
|
8746 |
|
|
through the mmo file, starting at 0.
|
8747 |
|
|
|
8748 |
|
|
A loadable section specified as:
|
8749 |
|
|
|
8750 |
|
|
.section secname,"ax"
|
8751 |
|
|
TETRA 1,2,3,4,-1,-2009
|
8752 |
|
|
BYTE 80
|
8753 |
|
|
|
8754 |
|
|
and linked to address `0x4', is represented by the sequence:
|
8755 |
|
|
|
8756 |
|
|
0x98080050 - lop_spec 80
|
8757 |
|
|
0x00000002 - two 32-bit words for the section name
|
8758 |
|
|
0x7365636e - "secn"
|
8759 |
|
|
0x616d6500 - "ame\0"
|
8760 |
|
|
0x00000033 - flags CODE, READONLY, LOAD, ALLOC
|
8761 |
|
|
0x00000000 - high 32 bits of section length
|
8762 |
|
|
0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits
|
8763 |
|
|
0x00000000 - high 32 bits of section address
|
8764 |
|
|
0x00000004 - section address is 4
|
8765 |
|
|
0x98010002 - 64 bits with address of following data
|
8766 |
|
|
0x00000000 - high 32 bits of address
|
8767 |
|
|
0x00000004 - low 32 bits: data starts at address 4
|
8768 |
|
|
0x00000001 - 1
|
8769 |
|
|
0x00000002 - 2
|
8770 |
|
|
0x00000003 - 3
|
8771 |
|
|
0x00000004 - 4
|
8772 |
|
|
0xffffffff - -1
|
8773 |
|
|
0xfffff827 - -2009
|
8774 |
|
|
0x50000000 - 80 as a byte, padded with zeros.
|
8775 |
|
|
|
8776 |
|
|
Note that the lop_spec wrapping does not include the section
|
8777 |
|
|
contents. Compare this to a non-loaded section specified as:
|
8778 |
|
|
|
8779 |
|
|
.section thirdsec
|
8780 |
|
|
TETRA 200001,100002
|
8781 |
|
|
BYTE 38,40
|
8782 |
|
|
|
8783 |
|
|
This, when linked to address `0x200000000000001c', is represented by:
|
8784 |
|
|
|
8785 |
|
|
0x98080050 - lop_spec 80
|
8786 |
|
|
0x00000002 - two 32-bit words for the section name
|
8787 |
|
|
0x7365636e - "thir"
|
8788 |
|
|
0x616d6500 - "dsec"
|
8789 |
|
|
0x00000010 - flag READONLY
|
8790 |
|
|
0x00000000 - high 32 bits of section length
|
8791 |
|
|
0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits
|
8792 |
|
|
0x20000000 - high 32 bits of address
|
8793 |
|
|
0x0000001c - low 32 bits of address 0x200000000000001c
|
8794 |
|
|
0x00030d41 - 200001
|
8795 |
|
|
0x000186a2 - 100002
|
8796 |
|
|
0x26280000 - 38, 40 as bytes, padded with zeros
|
8797 |
|
|
|
8798 |
|
|
For the latter example, the section contents must not be loaded in
|
8799 |
|
|
memory, and is therefore specified as part of the special data. The
|
8800 |
|
|
address is usually unimportant but might provide information for e.g.
|
8801 |
|
|
the DWARF 2 debugging format.
|
8802 |
|
|
|
8803 |
|
|
|
8804 |
|
|
File: bfd.info, Node: GNU Free Documentation License, Next: BFD Index, Prev: BFD back ends, Up: Top
|
8805 |
|
|
|
8806 |
|
|
Appendix A GNU Free Documentation License
|
8807 |
|
|
*****************************************
|
8808 |
|
|
|
8809 |
|
|
Version 1.1, March 2000
|
8810 |
|
|
|
8811 |
|
|
Copyright (C) 2000, 2003 Free Software Foundation, Inc.
|
8812 |
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
8813 |
|
|
|
8814 |
|
|
Everyone is permitted to copy and distribute verbatim copies
|
8815 |
|
|
of this license document, but changing it is not allowed.
|
8816 |
|
|
|
8817 |
|
|
|
8818 |
|
|
0. PREAMBLE
|
8819 |
|
|
|
8820 |
|
|
The purpose of this License is to make a manual, textbook, or other
|
8821 |
|
|
written document "free" in the sense of freedom: to assure everyone
|
8822 |
|
|
the effective freedom to copy and redistribute it, with or without
|
8823 |
|
|
modifying it, either commercially or noncommercially. Secondarily,
|
8824 |
|
|
this License preserves for the author and publisher a way to get
|
8825 |
|
|
credit for their work, while not being considered responsible for
|
8826 |
|
|
modifications made by others.
|
8827 |
|
|
|
8828 |
|
|
This License is a kind of "copyleft", which means that derivative
|
8829 |
|
|
works of the document must themselves be free in the same sense.
|
8830 |
|
|
It complements the GNU General Public License, which is a copyleft
|
8831 |
|
|
license designed for free software.
|
8832 |
|
|
|
8833 |
|
|
We have designed this License in order to use it for manuals for
|
8834 |
|
|
free software, because free software needs free documentation: a
|
8835 |
|
|
free program should come with manuals providing the same freedoms
|
8836 |
|
|
that the software does. But this License is not limited to
|
8837 |
|
|
software manuals; it can be used for any textual work, regardless
|
8838 |
|
|
of subject matter or whether it is published as a printed book.
|
8839 |
|
|
We recommend this License principally for works whose purpose is
|
8840 |
|
|
instruction or reference.
|
8841 |
|
|
|
8842 |
|
|
|
8843 |
|
|
1. APPLICABILITY AND DEFINITIONS
|
8844 |
|
|
|
8845 |
|
|
This License applies to any manual or other work that contains a
|
8846 |
|
|
notice placed by the copyright holder saying it can be distributed
|
8847 |
|
|
under the terms of this License. The "Document", below, refers to
|
8848 |
|
|
any such manual or work. Any member of the public is a licensee,
|
8849 |
|
|
and is addressed as "you."
|
8850 |
|
|
|
8851 |
|
|
A "Modified Version" of the Document means any work containing the
|
8852 |
|
|
Document or a portion of it, either copied verbatim, or with
|
8853 |
|
|
modifications and/or translated into another language.
|
8854 |
|
|
|
8855 |
|
|
A "Secondary Section" is a named appendix or a front-matter
|
8856 |
|
|
section of the Document that deals exclusively with the
|
8857 |
|
|
relationship of the publishers or authors of the Document to the
|
8858 |
|
|
Document's overall subject (or to related matters) and contains
|
8859 |
|
|
nothing that could fall directly within that overall subject.
|
8860 |
|
|
(For example, if the Document is in part a textbook of
|
8861 |
|
|
mathematics, a Secondary Section may not explain any mathematics.)
|
8862 |
|
|
The relationship could be a matter of historical connection with
|
8863 |
|
|
the subject or with related matters, or of legal, commercial,
|
8864 |
|
|
philosophical, ethical or political position regarding them.
|
8865 |
|
|
|
8866 |
|
|
The "Invariant Sections" are certain Secondary Sections whose
|
8867 |
|
|
titles are designated, as being those of Invariant Sections, in
|
8868 |
|
|
the notice that says that the Document is released under this
|
8869 |
|
|
License.
|
8870 |
|
|
|
8871 |
|
|
The "Cover Texts" are certain short passages of text that are
|
8872 |
|
|
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
|
8873 |
|
|
that says that the Document is released under this License.
|
8874 |
|
|
|
8875 |
|
|
A "Transparent" copy of the Document means a machine-readable copy,
|
8876 |
|
|
represented in a format whose specification is available to the
|
8877 |
|
|
general public, whose contents can be viewed and edited directly
|
8878 |
|
|
and straightforwardly with generic text editors or (for images
|
8879 |
|
|
composed of pixels) generic paint programs or (for drawings) some
|
8880 |
|
|
widely available drawing editor, and that is suitable for input to
|
8881 |
|
|
text formatters or for automatic translation to a variety of
|
8882 |
|
|
formats suitable for input to text formatters. A copy made in an
|
8883 |
|
|
otherwise Transparent file format whose markup has been designed
|
8884 |
|
|
to thwart or discourage subsequent modification by readers is not
|
8885 |
|
|
Transparent. A copy that is not "Transparent" is called "Opaque."
|
8886 |
|
|
|
8887 |
|
|
Examples of suitable formats for Transparent copies include plain
|
8888 |
|
|
ASCII without markup, Texinfo input format, LaTeX input format,
|
8889 |
|
|
SGML or XML using a publicly available DTD, and
|
8890 |
|
|
standard-conforming simple HTML designed for human modification.
|
8891 |
|
|
Opaque formats include PostScript, PDF, proprietary formats that
|
8892 |
|
|
can be read and edited only by proprietary word processors, SGML
|
8893 |
|
|
or XML for which the DTD and/or processing tools are not generally
|
8894 |
|
|
available, and the machine-generated HTML produced by some word
|
8895 |
|
|
processors for output purposes only.
|
8896 |
|
|
|
8897 |
|
|
The "Title Page" means, for a printed book, the title page itself,
|
8898 |
|
|
plus such following pages as are needed to hold, legibly, the
|
8899 |
|
|
material this License requires to appear in the title page. For
|
8900 |
|
|
works in formats which do not have any title page as such, "Title
|
8901 |
|
|
Page" means the text near the most prominent appearance of the
|
8902 |
|
|
work's title, preceding the beginning of the body of the text.
|
8903 |
|
|
|
8904 |
|
|
2. VERBATIM COPYING
|
8905 |
|
|
|
8906 |
|
|
You may copy and distribute the Document in any medium, either
|
8907 |
|
|
commercially or noncommercially, provided that this License, the
|
8908 |
|
|
copyright notices, and the license notice saying this License
|
8909 |
|
|
applies to the Document are reproduced in all copies, and that you
|
8910 |
|
|
add no other conditions whatsoever to those of this License. You
|
8911 |
|
|
may not use technical measures to obstruct or control the reading
|
8912 |
|
|
or further copying of the copies you make or distribute. However,
|
8913 |
|
|
you may accept compensation in exchange for copies. If you
|
8914 |
|
|
distribute a large enough number of copies you must also follow
|
8915 |
|
|
the conditions in section 3.
|
8916 |
|
|
|
8917 |
|
|
You may also lend copies, under the same conditions stated above,
|
8918 |
|
|
and you may publicly display copies.
|
8919 |
|
|
|
8920 |
|
|
3. COPYING IN QUANTITY
|
8921 |
|
|
|
8922 |
|
|
If you publish printed copies of the Document numbering more than
|
8923 |
|
|
100, and the Document's license notice requires Cover Texts, you
|
8924 |
|
|
must enclose the copies in covers that carry, clearly and legibly,
|
8925 |
|
|
all these Cover Texts: Front-Cover Texts on the front cover, and
|
8926 |
|
|
Back-Cover Texts on the back cover. Both covers must also clearly
|
8927 |
|
|
and legibly identify you as the publisher of these copies. The
|
8928 |
|
|
front cover must present the full title with all words of the
|
8929 |
|
|
title equally prominent and visible. You may add other material
|
8930 |
|
|
on the covers in addition. Copying with changes limited to the
|
8931 |
|
|
covers, as long as they preserve the title of the Document and
|
8932 |
|
|
satisfy these conditions, can be treated as verbatim copying in
|
8933 |
|
|
other respects.
|
8934 |
|
|
|
8935 |
|
|
If the required texts for either cover are too voluminous to fit
|
8936 |
|
|
legibly, you should put the first ones listed (as many as fit
|
8937 |
|
|
reasonably) on the actual cover, and continue the rest onto
|
8938 |
|
|
adjacent pages.
|
8939 |
|
|
|
8940 |
|
|
If you publish or distribute Opaque copies of the Document
|
8941 |
|
|
numbering more than 100, you must either include a
|
8942 |
|
|
machine-readable Transparent copy along with each Opaque copy, or
|
8943 |
|
|
state in or with each Opaque copy a publicly-accessible
|
8944 |
|
|
computer-network location containing a complete Transparent copy
|
8945 |
|
|
of the Document, free of added material, which the general
|
8946 |
|
|
network-using public has access to download anonymously at no
|
8947 |
|
|
charge using public-standard network protocols. If you use the
|
8948 |
|
|
latter option, you must take reasonably prudent steps, when you
|
8949 |
|
|
begin distribution of Opaque copies in quantity, to ensure that
|
8950 |
|
|
this Transparent copy will remain thus accessible at the stated
|
8951 |
|
|
location until at least one year after the last time you
|
8952 |
|
|
distribute an Opaque copy (directly or through your agents or
|
8953 |
|
|
retailers) of that edition to the public.
|
8954 |
|
|
|
8955 |
|
|
It is requested, but not required, that you contact the authors of
|
8956 |
|
|
the Document well before redistributing any large number of
|
8957 |
|
|
copies, to give them a chance to provide you with an updated
|
8958 |
|
|
version of the Document.
|
8959 |
|
|
|
8960 |
|
|
4. MODIFICATIONS
|
8961 |
|
|
|
8962 |
|
|
You may copy and distribute a Modified Version of the Document
|
8963 |
|
|
under the conditions of sections 2 and 3 above, provided that you
|
8964 |
|
|
release the Modified Version under precisely this License, with
|
8965 |
|
|
the Modified Version filling the role of the Document, thus
|
8966 |
|
|
licensing distribution and modification of the Modified Version to
|
8967 |
|
|
whoever possesses a copy of it. In addition, you must do these
|
8968 |
|
|
things in the Modified Version:
|
8969 |
|
|
|
8970 |
|
|
A. Use in the Title Page (and on the covers, if any) a title
|
8971 |
|
|
distinct from that of the Document, and from those of previous
|
8972 |
|
|
versions (which should, if there were any, be listed in the
|
8973 |
|
|
History section of the Document). You may use the same title
|
8974 |
|
|
as a previous version if the original publisher of that version
|
8975 |
|
|
gives permission.
|
8976 |
|
|
B. List on the Title Page, as authors, one or more persons or
|
8977 |
|
|
entities responsible for authorship of the modifications in the
|
8978 |
|
|
Modified Version, together with at least five of the principal
|
8979 |
|
|
authors of the Document (all of its principal authors, if it
|
8980 |
|
|
has less than five).
|
8981 |
|
|
C. State on the Title page the name of the publisher of the
|
8982 |
|
|
Modified Version, as the publisher.
|
8983 |
|
|
D. Preserve all the copyright notices of the Document.
|
8984 |
|
|
E. Add an appropriate copyright notice for your modifications
|
8985 |
|
|
adjacent to the other copyright notices.
|
8986 |
|
|
F. Include, immediately after the copyright notices, a license
|
8987 |
|
|
notice giving the public permission to use the Modified Version
|
8988 |
|
|
under the terms of this License, in the form shown in the
|
8989 |
|
|
Addendum below.
|
8990 |
|
|
G. Preserve in that license notice the full lists of Invariant
|
8991 |
|
|
Sections and required Cover Texts given in the Document's
|
8992 |
|
|
license notice.
|
8993 |
|
|
H. Include an unaltered copy of this License.
|
8994 |
|
|
I. Preserve the section entitled "History", and its title, and add
|
8995 |
|
|
to it an item stating at least the title, year, new authors, and
|
8996 |
|
|
publisher of the Modified Version as given on the Title Page.
|
8997 |
|
|
If there is no section entitled "History" in the Document,
|
8998 |
|
|
create one stating the title, year, authors, and publisher of
|
8999 |
|
|
the Document as given on its Title Page, then add an item
|
9000 |
|
|
describing the Modified Version as stated in the previous
|
9001 |
|
|
sentence.
|
9002 |
|
|
J. Preserve the network location, if any, given in the Document for
|
9003 |
|
|
public access to a Transparent copy of the Document, and
|
9004 |
|
|
likewise the network locations given in the Document for
|
9005 |
|
|
previous versions it was based on. These may be placed in the
|
9006 |
|
|
"History" section. You may omit a network location for a work
|
9007 |
|
|
that was published at least four years before the Document
|
9008 |
|
|
itself, or if the original publisher of the version it refers
|
9009 |
|
|
to gives permission.
|
9010 |
|
|
K. In any section entitled "Acknowledgements" or "Dedications",
|
9011 |
|
|
preserve the section's title, and preserve in the section all the
|
9012 |
|
|
substance and tone of each of the contributor acknowledgements
|
9013 |
|
|
and/or dedications given therein.
|
9014 |
|
|
L. Preserve all the Invariant Sections of the Document,
|
9015 |
|
|
unaltered in their text and in their titles. Section numbers
|
9016 |
|
|
or the equivalent are not considered part of the section titles.
|
9017 |
|
|
M. Delete any section entitled "Endorsements." Such a section
|
9018 |
|
|
may not be included in the Modified Version.
|
9019 |
|
|
N. Do not retitle any existing section as "Endorsements" or to
|
9020 |
|
|
conflict in title with any Invariant Section.
|
9021 |
|
|
|
9022 |
|
|
If the Modified Version includes new front-matter sections or
|
9023 |
|
|
appendices that qualify as Secondary Sections and contain no
|
9024 |
|
|
material copied from the Document, you may at your option
|
9025 |
|
|
designate some or all of these sections as invariant. To do this,
|
9026 |
|
|
add their titles to the list of Invariant Sections in the Modified
|
9027 |
|
|
Version's license notice. These titles must be distinct from any
|
9028 |
|
|
other section titles.
|
9029 |
|
|
|
9030 |
|
|
You may add a section entitled "Endorsements", provided it contains
|
9031 |
|
|
nothing but endorsements of your Modified Version by various
|
9032 |
|
|
parties-for example, statements of peer review or that the text has
|
9033 |
|
|
been approved by an organization as the authoritative definition
|
9034 |
|
|
of a standard.
|
9035 |
|
|
|
9036 |
|
|
You may add a passage of up to five words as a Front-Cover Text,
|
9037 |
|
|
and a passage of up to 25 words as a Back-Cover Text, to the end
|
9038 |
|
|
of the list of Cover Texts in the Modified Version. Only one
|
9039 |
|
|
passage of Front-Cover Text and one of Back-Cover Text may be
|
9040 |
|
|
added by (or through arrangements made by) any one entity. If the
|
9041 |
|
|
Document already includes a cover text for the same cover,
|
9042 |
|
|
previously added by you or by arrangement made by the same entity
|
9043 |
|
|
you are acting on behalf of, you may not add another; but you may
|
9044 |
|
|
replace the old one, on explicit permission from the previous
|
9045 |
|
|
publisher that added the old one.
|
9046 |
|
|
|
9047 |
|
|
The author(s) and publisher(s) of the Document do not by this
|
9048 |
|
|
License give permission to use their names for publicity for or to
|
9049 |
|
|
assert or imply endorsement of any Modified Version.
|
9050 |
|
|
|
9051 |
|
|
5. COMBINING DOCUMENTS
|
9052 |
|
|
|
9053 |
|
|
You may combine the Document with other documents released under
|
9054 |
|
|
this License, under the terms defined in section 4 above for
|
9055 |
|
|
modified versions, provided that you include in the combination
|
9056 |
|
|
all of the Invariant Sections of all of the original documents,
|
9057 |
|
|
unmodified, and list them all as Invariant Sections of your
|
9058 |
|
|
combined work in its license notice.
|
9059 |
|
|
|
9060 |
|
|
The combined work need only contain one copy of this License, and
|
9061 |
|
|
multiple identical Invariant Sections may be replaced with a single
|
9062 |
|
|
copy. If there are multiple Invariant Sections with the same name
|
9063 |
|
|
but different contents, make the title of each such section unique
|
9064 |
|
|
by adding at the end of it, in parentheses, the name of the
|
9065 |
|
|
original author or publisher of that section if known, or else a
|
9066 |
|
|
unique number. Make the same adjustment to the section titles in
|
9067 |
|
|
the list of Invariant Sections in the license notice of the
|
9068 |
|
|
combined work.
|
9069 |
|
|
|
9070 |
|
|
In the combination, you must combine any sections entitled
|
9071 |
|
|
"History" in the various original documents, forming one section
|
9072 |
|
|
entitled "History"; likewise combine any sections entitled
|
9073 |
|
|
"Acknowledgements", and any sections entitled "Dedications." You
|
9074 |
|
|
must delete all sections entitled "Endorsements."
|
9075 |
|
|
|
9076 |
|
|
6. COLLECTIONS OF DOCUMENTS
|
9077 |
|
|
|
9078 |
|
|
You may make a collection consisting of the Document and other
|
9079 |
|
|
documents released under this License, and replace the individual
|
9080 |
|
|
copies of this License in the various documents with a single copy
|
9081 |
|
|
that is included in the collection, provided that you follow the
|
9082 |
|
|
rules of this License for verbatim copying of each of the
|
9083 |
|
|
documents in all other respects.
|
9084 |
|
|
|
9085 |
|
|
You may extract a single document from such a collection, and
|
9086 |
|
|
distribute it individually under this License, provided you insert
|
9087 |
|
|
a copy of this License into the extracted document, and follow
|
9088 |
|
|
this License in all other respects regarding verbatim copying of
|
9089 |
|
|
that document.
|
9090 |
|
|
|
9091 |
|
|
7. AGGREGATION WITH INDEPENDENT WORKS
|
9092 |
|
|
|
9093 |
|
|
A compilation of the Document or its derivatives with other
|
9094 |
|
|
separate and independent documents or works, in or on a volume of
|
9095 |
|
|
a storage or distribution medium, does not as a whole count as a
|
9096 |
|
|
Modified Version of the Document, provided no compilation
|
9097 |
|
|
copyright is claimed for the compilation. Such a compilation is
|
9098 |
|
|
called an "aggregate", and this License does not apply to the
|
9099 |
|
|
other self-contained works thus compiled with the Document, on
|
9100 |
|
|
account of their being thus compiled, if they are not themselves
|
9101 |
|
|
derivative works of the Document.
|
9102 |
|
|
|
9103 |
|
|
If the Cover Text requirement of section 3 is applicable to these
|
9104 |
|
|
copies of the Document, then if the Document is less than one
|
9105 |
|
|
quarter of the entire aggregate, the Document's Cover Texts may be
|
9106 |
|
|
placed on covers that surround only the Document within the
|
9107 |
|
|
aggregate. Otherwise they must appear on covers around the whole
|
9108 |
|
|
aggregate.
|
9109 |
|
|
|
9110 |
|
|
8. TRANSLATION
|
9111 |
|
|
|
9112 |
|
|
Translation is considered a kind of modification, so you may
|
9113 |
|
|
distribute translations of the Document under the terms of section
|
9114 |
|
|
4. Replacing Invariant Sections with translations requires special
|
9115 |
|
|
permission from their copyright holders, but you may include
|
9116 |
|
|
translations of some or all Invariant Sections in addition to the
|
9117 |
|
|
original versions of these Invariant Sections. You may include a
|
9118 |
|
|
translation of this License provided that you also include the
|
9119 |
|
|
original English version of this License. In case of a
|
9120 |
|
|
disagreement between the translation and the original English
|
9121 |
|
|
version of this License, the original English version will prevail.
|
9122 |
|
|
|
9123 |
|
|
9. TERMINATION
|
9124 |
|
|
|
9125 |
|
|
You may not copy, modify, sublicense, or distribute the Document
|
9126 |
|
|
except as expressly provided for under this License. Any other
|
9127 |
|
|
attempt to copy, modify, sublicense or distribute the Document is
|
9128 |
|
|
void, and will automatically terminate your rights under this
|
9129 |
|
|
License. However, parties who have received copies, or rights,
|
9130 |
|
|
from you under this License will not have their licenses
|
9131 |
|
|
terminated so long as such parties remain in full compliance.
|
9132 |
|
|
|
9133 |
|
|
10. FUTURE REVISIONS OF THIS LICENSE
|
9134 |
|
|
|
9135 |
|
|
The Free Software Foundation may publish new, revised versions of
|
9136 |
|
|
the GNU Free Documentation License from time to time. Such new
|
9137 |
|
|
versions will be similar in spirit to the present version, but may
|
9138 |
|
|
differ in detail to address new problems or concerns. See
|
9139 |
|
|
http://www.gnu.org/copyleft/.
|
9140 |
|
|
|
9141 |
|
|
Each version of the License is given a distinguishing version
|
9142 |
|
|
number. If the Document specifies that a particular numbered
|
9143 |
|
|
version of this License "or any later version" applies to it, you
|
9144 |
|
|
have the option of following the terms and conditions either of
|
9145 |
|
|
that specified version or of any later version that has been
|
9146 |
|
|
published (not as a draft) by the Free Software Foundation. If
|
9147 |
|
|
the Document does not specify a version number of this License,
|
9148 |
|
|
you may choose any version ever published (not as a draft) by the
|
9149 |
|
|
Free Software Foundation.
|
9150 |
|
|
|
9151 |
|
|
|
9152 |
|
|
ADDENDUM: How to use this License for your documents
|
9153 |
|
|
====================================================
|
9154 |
|
|
|
9155 |
|
|
To use this License in a document you have written, include a copy of
|
9156 |
|
|
the License in the document and put the following copyright and license
|
9157 |
|
|
notices just after the title page:
|
9158 |
|
|
|
9159 |
|
|
Copyright (C) YEAR YOUR NAME.
|
9160 |
|
|
Permission is granted to copy, distribute and/or modify this document
|
9161 |
|
|
under the terms of the GNU Free Documentation License, Version 1.1
|
9162 |
|
|
or any later version published by the Free Software Foundation;
|
9163 |
|
|
with the Invariant Sections being LIST THEIR TITLES, with the
|
9164 |
|
|
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
9165 |
|
|
A copy of the license is included in the section entitled "GNU
|
9166 |
|
|
Free Documentation License."
|
9167 |
|
|
|
9168 |
|
|
If you have no Invariant Sections, write "with no Invariant Sections"
|
9169 |
|
|
instead of saying which ones are invariant. If you have no Front-Cover
|
9170 |
|
|
Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
|
9171 |
|
|
LIST"; likewise for Back-Cover Texts.
|
9172 |
|
|
|
9173 |
|
|
If your document contains nontrivial examples of program code, we
|
9174 |
|
|
recommend releasing these examples in parallel under your choice of
|
9175 |
|
|
free software license, such as the GNU General Public License, to
|
9176 |
|
|
permit their use in free software.
|
9177 |
|
|
|
9178 |
|
|
|
9179 |
|
|
File: bfd.info, Node: BFD Index, Prev: GNU Free Documentation License, Up: Top
|
9180 |
|
|
|
9181 |
|
|
BFD Index
|
9182 |
|
|
*********
|
9183 |
|
|
|
9184 |
|
|
|
9185 |
|
|
* Menu:
|
9186 |
|
|
|
9187 |
|
|
* _bfd_final_link_relocate: Relocating the section contents.
|
9188 |
|
|
(line 22)
|
9189 |
|
|
* _bfd_generic_link_add_archive_symbols: Adding symbols from an archive.
|
9190 |
|
|
(line 12)
|
9191 |
|
|
* _bfd_generic_link_add_one_symbol: Adding symbols from an object file.
|
9192 |
|
|
(line 19)
|
9193 |
|
|
* _bfd_generic_make_empty_symbol: symbol handling functions.
|
9194 |
|
|
(line 92)
|
9195 |
|
|
* _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table.
|
9196 |
|
|
(line 6)
|
9197 |
|
|
* _bfd_link_final_link in target vector: Performing the Final Link.
|
9198 |
|
|
(line 6)
|
9199 |
|
|
* _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table.
|
9200 |
|
|
(line 6)
|
9201 |
|
|
* _bfd_relocate_contents: Relocating the section contents.
|
9202 |
|
|
(line 22)
|
9203 |
|
|
* aout_SIZE_machine_type: aout. (line 147)
|
9204 |
|
|
* aout_SIZE_mkobject: aout. (line 139)
|
9205 |
|
|
* aout_SIZE_new_section_hook: aout. (line 177)
|
9206 |
|
|
* aout_SIZE_set_arch_mach: aout. (line 164)
|
9207 |
|
|
* aout_SIZE_some_aout_object_p: aout. (line 125)
|
9208 |
|
|
* aout_SIZE_swap_exec_header_in: aout. (line 101)
|
9209 |
|
|
* aout_SIZE_swap_exec_header_out: aout. (line 113)
|
9210 |
|
|
* arelent_chain: typedef arelent. (line 339)
|
9211 |
|
|
* BFD: Overview. (line 6)
|
9212 |
|
|
* BFD canonical format: Canonical format. (line 11)
|
9213 |
|
|
* bfd_alloc: Opening and Closing.
|
9214 |
|
|
(line 210)
|
9215 |
|
|
* bfd_alloc2: Opening and Closing.
|
9216 |
|
|
(line 219)
|
9217 |
|
|
* bfd_alt_mach_code: BFD front end. (line 602)
|
9218 |
|
|
* bfd_arch_bits_per_address: Architectures. (line 496)
|
9219 |
|
|
* bfd_arch_bits_per_byte: Architectures. (line 488)
|
9220 |
|
|
* bfd_arch_get_compatible: Architectures. (line 431)
|
9221 |
|
|
* bfd_arch_list: Architectures. (line 422)
|
9222 |
|
|
* bfd_arch_mach_octets_per_byte: Architectures. (line 565)
|
9223 |
|
|
* BFD_ARELOC_BFIN_ADD: howto manager. (line 956)
|
9224 |
|
|
* BFD_ARELOC_BFIN_ADDR: howto manager. (line 1007)
|
9225 |
|
|
* BFD_ARELOC_BFIN_AND: howto manager. (line 977)
|
9226 |
|
|
* BFD_ARELOC_BFIN_COMP: howto manager. (line 998)
|
9227 |
|
|
* BFD_ARELOC_BFIN_CONST: howto manager. (line 953)
|
9228 |
|
|
* BFD_ARELOC_BFIN_DIV: howto manager. (line 965)
|
9229 |
|
|
* BFD_ARELOC_BFIN_HWPAGE: howto manager. (line 1004)
|
9230 |
|
|
* BFD_ARELOC_BFIN_LAND: howto manager. (line 986)
|
9231 |
|
|
* BFD_ARELOC_BFIN_LEN: howto manager. (line 992)
|
9232 |
|
|
* BFD_ARELOC_BFIN_LOR: howto manager. (line 989)
|
9233 |
|
|
* BFD_ARELOC_BFIN_LSHIFT: howto manager. (line 971)
|
9234 |
|
|
* BFD_ARELOC_BFIN_MOD: howto manager. (line 968)
|
9235 |
|
|
* BFD_ARELOC_BFIN_MULT: howto manager. (line 962)
|
9236 |
|
|
* BFD_ARELOC_BFIN_NEG: howto manager. (line 995)
|
9237 |
|
|
* BFD_ARELOC_BFIN_OR: howto manager. (line 980)
|
9238 |
|
|
* BFD_ARELOC_BFIN_PAGE: howto manager. (line 1001)
|
9239 |
|
|
* BFD_ARELOC_BFIN_PUSH: howto manager. (line 950)
|
9240 |
|
|
* BFD_ARELOC_BFIN_RSHIFT: howto manager. (line 974)
|
9241 |
|
|
* BFD_ARELOC_BFIN_SUB: howto manager. (line 959)
|
9242 |
|
|
* BFD_ARELOC_BFIN_XOR: howto manager. (line 983)
|
9243 |
|
|
* bfd_cache_close: File Caching. (line 26)
|
9244 |
|
|
* bfd_cache_close_all: File Caching. (line 39)
|
9245 |
|
|
* bfd_cache_init: File Caching. (line 18)
|
9246 |
|
|
* bfd_calc_gnu_debuglink_crc32: Opening and Closing.
|
9247 |
|
|
(line 246)
|
9248 |
|
|
* bfd_canonicalize_reloc: BFD front end. (line 321)
|
9249 |
|
|
* bfd_canonicalize_symtab: symbol handling functions.
|
9250 |
|
|
(line 50)
|
9251 |
|
|
* bfd_check_format: Formats. (line 21)
|
9252 |
|
|
* bfd_check_format_matches: Formats. (line 52)
|
9253 |
|
|
* bfd_check_overflow: typedef arelent. (line 351)
|
9254 |
|
|
* bfd_close: Opening and Closing.
|
9255 |
|
|
(line 135)
|
9256 |
|
|
* bfd_close_all_done: Opening and Closing.
|
9257 |
|
|
(line 153)
|
9258 |
|
|
* bfd_coff_backend_data: coff. (line 246)
|
9259 |
|
|
* bfd_copy_private_bfd_data: BFD front end. (line 460)
|
9260 |
|
|
* bfd_copy_private_header_data: BFD front end. (line 442)
|
9261 |
|
|
* bfd_copy_private_section_data: section prototypes. (line 255)
|
9262 |
|
|
* bfd_copy_private_symbol_data: symbol handling functions.
|
9263 |
|
|
(line 140)
|
9264 |
|
|
* bfd_core_file_failing_command: Core Files. (line 12)
|
9265 |
|
|
* bfd_core_file_failing_signal: Core Files. (line 21)
|
9266 |
|
|
* bfd_create: Opening and Closing.
|
9267 |
|
|
(line 172)
|
9268 |
|
|
* bfd_create_gnu_debuglink_section: Opening and Closing.
|
9269 |
|
|
(line 312)
|
9270 |
|
|
* bfd_decode_symclass: symbol handling functions.
|
9271 |
|
|
(line 111)
|
9272 |
|
|
* bfd_default_arch_struct: Architectures. (line 443)
|
9273 |
|
|
* bfd_default_compatible: Architectures. (line 505)
|
9274 |
|
|
* bfd_default_reloc_type_lookup: howto manager. (line 2096)
|
9275 |
|
|
* bfd_default_scan: Architectures. (line 514)
|
9276 |
|
|
* bfd_default_set_arch_mach: Architectures. (line 461)
|
9277 |
|
|
* bfd_demangle: BFD front end. (line 700)
|
9278 |
|
|
* bfd_elf_find_section: elf. (line 13)
|
9279 |
|
|
* bfd_emul_get_commonpagesize: BFD front end. (line 680)
|
9280 |
|
|
* bfd_emul_get_maxpagesize: BFD front end. (line 660)
|
9281 |
|
|
* bfd_emul_set_commonpagesize: BFD front end. (line 691)
|
9282 |
|
|
* bfd_emul_set_maxpagesize: BFD front end. (line 671)
|
9283 |
|
|
* bfd_errmsg: BFD front end. (line 246)
|
9284 |
|
|
* bfd_fdopenr: Opening and Closing.
|
9285 |
|
|
(line 46)
|
9286 |
|
|
* bfd_fill_in_gnu_debuglink_section: Opening and Closing.
|
9287 |
|
|
(line 326)
|
9288 |
|
|
* bfd_find_target: bfd_target. (line 439)
|
9289 |
|
|
* bfd_follow_gnu_debuglink: Opening and Closing.
|
9290 |
|
|
(line 291)
|
9291 |
|
|
* bfd_fopen: Opening and Closing.
|
9292 |
|
|
(line 9)
|
9293 |
|
|
* bfd_format_string: Formats. (line 79)
|
9294 |
|
|
* bfd_generic_discard_group: section prototypes. (line 281)
|
9295 |
|
|
* bfd_generic_gc_sections: howto manager. (line 2127)
|
9296 |
|
|
* bfd_generic_get_relocated_section_contents: howto manager. (line 2147)
|
9297 |
|
|
* bfd_generic_is_group_section: section prototypes. (line 273)
|
9298 |
|
|
* bfd_generic_merge_sections: howto manager. (line 2137)
|
9299 |
|
|
* bfd_generic_relax_section: howto manager. (line 2114)
|
9300 |
|
|
* bfd_get_arch: Architectures. (line 472)
|
9301 |
|
|
* bfd_get_arch_info: Architectures. (line 524)
|
9302 |
|
|
* bfd_get_arch_size: BFD front end. (line 365)
|
9303 |
|
|
* bfd_get_error: BFD front end. (line 227)
|
9304 |
|
|
* bfd_get_error_handler: BFD front end. (line 297)
|
9305 |
|
|
* bfd_get_gp_size: BFD front end. (line 406)
|
9306 |
|
|
* bfd_get_mach: Architectures. (line 480)
|
9307 |
|
|
* bfd_get_mtime: BFD front end. (line 741)
|
9308 |
|
|
* bfd_get_next_mapent: Archives. (line 52)
|
9309 |
|
|
* bfd_get_reloc_code_name: howto manager. (line 2105)
|
9310 |
|
|
* bfd_get_reloc_size: typedef arelent. (line 330)
|
9311 |
|
|
* bfd_get_reloc_upper_bound: BFD front end. (line 311)
|
9312 |
|
|
* bfd_get_section_by_name: section prototypes. (line 17)
|
9313 |
|
|
* bfd_get_section_by_name_if: section prototypes. (line 31)
|
9314 |
|
|
* bfd_get_section_contents: section prototypes. (line 228)
|
9315 |
|
|
* bfd_get_sign_extend_vma: BFD front end. (line 378)
|
9316 |
|
|
* bfd_get_size <1>: Internal. (line 25)
|
9317 |
|
|
* bfd_get_size: BFD front end. (line 750)
|
9318 |
|
|
* bfd_get_symtab_upper_bound: symbol handling functions.
|
9319 |
|
|
(line 6)
|
9320 |
|
|
* bfd_get_unique_section_name: section prototypes. (line 50)
|
9321 |
|
|
* bfd_h_put_size: Internal. (line 97)
|
9322 |
|
|
* bfd_hash_allocate: Creating and Freeing a Hash Table.
|
9323 |
|
|
(line 17)
|
9324 |
|
|
* bfd_hash_lookup: Looking Up or Entering a String.
|
9325 |
|
|
(line 6)
|
9326 |
|
|
* bfd_hash_newfunc: Creating and Freeing a Hash Table.
|
9327 |
|
|
(line 12)
|
9328 |
|
|
* bfd_hash_set_default_size: Creating and Freeing a Hash Table.
|
9329 |
|
|
(line 25)
|
9330 |
|
|
* bfd_hash_table_free: Creating and Freeing a Hash Table.
|
9331 |
|
|
(line 21)
|
9332 |
|
|
* bfd_hash_table_init: Creating and Freeing a Hash Table.
|
9333 |
|
|
(line 6)
|
9334 |
|
|
* bfd_hash_table_init_n: Creating and Freeing a Hash Table.
|
9335 |
|
|
(line 6)
|
9336 |
|
|
* bfd_hash_traverse: Traversing a Hash Table.
|
9337 |
|
|
(line 6)
|
9338 |
|
|
* bfd_init: Initialization. (line 11)
|
9339 |
|
|
* bfd_install_relocation: typedef arelent. (line 392)
|
9340 |
|
|
* bfd_is_local_label: symbol handling functions.
|
9341 |
|
|
(line 17)
|
9342 |
|
|
* bfd_is_local_label_name: symbol handling functions.
|
9343 |
|
|
(line 26)
|
9344 |
|
|
* bfd_is_target_special_symbol: symbol handling functions.
|
9345 |
|
|
(line 38)
|
9346 |
|
|
* bfd_is_undefined_symclass: symbol handling functions.
|
9347 |
|
|
(line 120)
|
9348 |
|
|
* bfd_link_split_section: Writing the symbol table.
|
9349 |
|
|
(line 44)
|
9350 |
|
|
* bfd_log2: Internal. (line 164)
|
9351 |
|
|
* bfd_lookup_arch: Architectures. (line 532)
|
9352 |
|
|
* bfd_make_debug_symbol: symbol handling functions.
|
9353 |
|
|
(line 102)
|
9354 |
|
|
* bfd_make_empty_symbol: symbol handling functions.
|
9355 |
|
|
(line 78)
|
9356 |
|
|
* bfd_make_readable: Opening and Closing.
|
9357 |
|
|
(line 196)
|
9358 |
|
|
* bfd_make_section: section prototypes. (line 129)
|
9359 |
|
|
* bfd_make_section_anyway: section prototypes. (line 100)
|
9360 |
|
|
* bfd_make_section_anyway_with_flags: section prototypes. (line 82)
|
9361 |
|
|
* bfd_make_section_old_way: section prototypes. (line 62)
|
9362 |
|
|
* bfd_make_section_with_flags: section prototypes. (line 116)
|
9363 |
|
|
* bfd_make_writable: Opening and Closing.
|
9364 |
|
|
(line 182)
|
9365 |
|
|
* bfd_malloc_and_get_section: section prototypes. (line 245)
|
9366 |
|
|
* bfd_map_over_sections: section prototypes. (line 155)
|
9367 |
|
|
* bfd_merge_private_bfd_data: BFD front end. (line 476)
|
9368 |
|
|
* bfd_octets_per_byte: Architectures. (line 555)
|
9369 |
|
|
* bfd_open_file: File Caching. (line 52)
|
9370 |
|
|
* bfd_openr: Opening and Closing.
|
9371 |
|
|
(line 30)
|
9372 |
|
|
* bfd_openr_iovec: Opening and Closing.
|
9373 |
|
|
(line 76)
|
9374 |
|
|
* bfd_openr_next_archived_file: Archives. (line 78)
|
9375 |
|
|
* bfd_openstreamr: Opening and Closing.
|
9376 |
|
|
(line 67)
|
9377 |
|
|
* bfd_openw: Opening and Closing.
|
9378 |
|
|
(line 123)
|
9379 |
|
|
* bfd_perform_relocation: typedef arelent. (line 367)
|
9380 |
|
|
* bfd_perror: BFD front end. (line 255)
|
9381 |
|
|
* bfd_preserve_finish: BFD front end. (line 650)
|
9382 |
|
|
* bfd_preserve_restore: BFD front end. (line 640)
|
9383 |
|
|
* bfd_preserve_save: BFD front end. (line 624)
|
9384 |
|
|
* bfd_print_symbol_vandf: symbol handling functions.
|
9385 |
|
|
(line 70)
|
9386 |
|
|
* bfd_printable_arch_mach: Architectures. (line 543)
|
9387 |
|
|
* bfd_printable_name: Architectures. (line 403)
|
9388 |
|
|
* bfd_put_size: Internal. (line 22)
|
9389 |
|
|
* BFD_RELOC_12_PCREL: howto manager. (line 39)
|
9390 |
|
|
* BFD_RELOC_14: howto manager. (line 31)
|
9391 |
|
|
* BFD_RELOC_16: howto manager. (line 30)
|
9392 |
|
|
* BFD_RELOC_16_BASEREL: howto manager. (line 80)
|
9393 |
|
|
* BFD_RELOC_16_GOT_PCREL: howto manager. (line 52)
|
9394 |
|
|
* BFD_RELOC_16_GOTOFF: howto manager. (line 55)
|
9395 |
|
|
* BFD_RELOC_16_PCREL: howto manager. (line 38)
|
9396 |
|
|
* BFD_RELOC_16_PCREL_S2: howto manager. (line 92)
|
9397 |
|
|
* BFD_RELOC_16_PLT_PCREL: howto manager. (line 63)
|
9398 |
|
|
* BFD_RELOC_16_PLTOFF: howto manager. (line 67)
|
9399 |
|
|
* BFD_RELOC_16C_ABS20: howto manager. (line 1783)
|
9400 |
|
|
* BFD_RELOC_16C_ABS20_C: howto manager. (line 1784)
|
9401 |
|
|
* BFD_RELOC_16C_ABS24: howto manager. (line 1785)
|
9402 |
|
|
* BFD_RELOC_16C_ABS24_C: howto manager. (line 1786)
|
9403 |
|
|
* BFD_RELOC_16C_DISP04: howto manager. (line 1763)
|
9404 |
|
|
* BFD_RELOC_16C_DISP04_C: howto manager. (line 1764)
|
9405 |
|
|
* BFD_RELOC_16C_DISP08: howto manager. (line 1765)
|
9406 |
|
|
* BFD_RELOC_16C_DISP08_C: howto manager. (line 1766)
|
9407 |
|
|
* BFD_RELOC_16C_DISP16: howto manager. (line 1767)
|
9408 |
|
|
* BFD_RELOC_16C_DISP16_C: howto manager. (line 1768)
|
9409 |
|
|
* BFD_RELOC_16C_DISP24: howto manager. (line 1769)
|
9410 |
|
|
* BFD_RELOC_16C_DISP24_C: howto manager. (line 1770)
|
9411 |
|
|
* BFD_RELOC_16C_DISP24a: howto manager. (line 1771)
|
9412 |
|
|
* BFD_RELOC_16C_DISP24a_C: howto manager. (line 1772)
|
9413 |
|
|
* BFD_RELOC_16C_IMM04: howto manager. (line 1787)
|
9414 |
|
|
* BFD_RELOC_16C_IMM04_C: howto manager. (line 1788)
|
9415 |
|
|
* BFD_RELOC_16C_IMM16: howto manager. (line 1789)
|
9416 |
|
|
* BFD_RELOC_16C_IMM16_C: howto manager. (line 1790)
|
9417 |
|
|
* BFD_RELOC_16C_IMM20: howto manager. (line 1791)
|
9418 |
|
|
* BFD_RELOC_16C_IMM20_C: howto manager. (line 1792)
|
9419 |
|
|
* BFD_RELOC_16C_IMM24: howto manager. (line 1793)
|
9420 |
|
|
* BFD_RELOC_16C_IMM24_C: howto manager. (line 1794)
|
9421 |
|
|
* BFD_RELOC_16C_IMM32: howto manager. (line 1795)
|
9422 |
|
|
* BFD_RELOC_16C_IMM32_C: howto manager. (line 1796)
|
9423 |
|
|
* BFD_RELOC_16C_NUM08: howto manager. (line 1757)
|
9424 |
|
|
* BFD_RELOC_16C_NUM08_C: howto manager. (line 1758)
|
9425 |
|
|
* BFD_RELOC_16C_NUM16: howto manager. (line 1759)
|
9426 |
|
|
* BFD_RELOC_16C_NUM16_C: howto manager. (line 1760)
|
9427 |
|
|
* BFD_RELOC_16C_NUM32: howto manager. (line 1761)
|
9428 |
|
|
* BFD_RELOC_16C_NUM32_C: howto manager. (line 1762)
|
9429 |
|
|
* BFD_RELOC_16C_REG04: howto manager. (line 1773)
|
9430 |
|
|
* BFD_RELOC_16C_REG04_C: howto manager. (line 1774)
|
9431 |
|
|
* BFD_RELOC_16C_REG04a: howto manager. (line 1775)
|
9432 |
|
|
* BFD_RELOC_16C_REG04a_C: howto manager. (line 1776)
|
9433 |
|
|
* BFD_RELOC_16C_REG14: howto manager. (line 1777)
|
9434 |
|
|
* BFD_RELOC_16C_REG14_C: howto manager. (line 1778)
|
9435 |
|
|
* BFD_RELOC_16C_REG16: howto manager. (line 1779)
|
9436 |
|
|
* BFD_RELOC_16C_REG16_C: howto manager. (line 1780)
|
9437 |
|
|
* BFD_RELOC_16C_REG20: howto manager. (line 1781)
|
9438 |
|
|
* BFD_RELOC_16C_REG20_C: howto manager. (line 1782)
|
9439 |
|
|
* BFD_RELOC_23_PCREL_S2: howto manager. (line 93)
|
9440 |
|
|
* BFD_RELOC_24: howto manager. (line 29)
|
9441 |
|
|
* BFD_RELOC_24_PCREL: howto manager. (line 37)
|
9442 |
|
|
* BFD_RELOC_24_PLT_PCREL: howto manager. (line 62)
|
9443 |
|
|
* BFD_RELOC_26: howto manager. (line 28)
|
9444 |
|
|
* BFD_RELOC_32: howto manager. (line 27)
|
9445 |
|
|
* BFD_RELOC_32_BASEREL: howto manager. (line 79)
|
9446 |
|
|
* BFD_RELOC_32_GOT_PCREL: howto manager. (line 51)
|
9447 |
|
|
* BFD_RELOC_32_GOTOFF: howto manager. (line 54)
|
9448 |
|
|
* BFD_RELOC_32_PCREL: howto manager. (line 36)
|
9449 |
|
|
* BFD_RELOC_32_PCREL_S2: howto manager. (line 91)
|
9450 |
|
|
* BFD_RELOC_32_PLT_PCREL: howto manager. (line 61)
|
9451 |
|
|
* BFD_RELOC_32_PLTOFF: howto manager. (line 66)
|
9452 |
|
|
* BFD_RELOC_32_SECREL: howto manager. (line 48)
|
9453 |
|
|
* BFD_RELOC_386_COPY: howto manager. (line 460)
|
9454 |
|
|
* BFD_RELOC_386_GLOB_DAT: howto manager. (line 461)
|
9455 |
|
|
* BFD_RELOC_386_GOT32: howto manager. (line 458)
|
9456 |
|
|
* BFD_RELOC_386_GOTOFF: howto manager. (line 464)
|
9457 |
|
|
* BFD_RELOC_386_GOTPC: howto manager. (line 465)
|
9458 |
|
|
* BFD_RELOC_386_JUMP_SLOT: howto manager. (line 462)
|
9459 |
|
|
* BFD_RELOC_386_PLT32: howto manager. (line 459)
|
9460 |
|
|
* BFD_RELOC_386_RELATIVE: howto manager. (line 463)
|
9461 |
|
|
* BFD_RELOC_386_TLS_DESC: howto manager. (line 480)
|
9462 |
|
|
* BFD_RELOC_386_TLS_DESC_CALL: howto manager. (line 479)
|
9463 |
|
|
* BFD_RELOC_386_TLS_DTPMOD32: howto manager. (line 475)
|
9464 |
|
|
* BFD_RELOC_386_TLS_DTPOFF32: howto manager. (line 476)
|
9465 |
|
|
* BFD_RELOC_386_TLS_GD: howto manager. (line 470)
|
9466 |
|
|
* BFD_RELOC_386_TLS_GOTDESC: howto manager. (line 478)
|
9467 |
|
|
* BFD_RELOC_386_TLS_GOTIE: howto manager. (line 468)
|
9468 |
|
|
* BFD_RELOC_386_TLS_IE: howto manager. (line 467)
|
9469 |
|
|
* BFD_RELOC_386_TLS_IE_32: howto manager. (line 473)
|
9470 |
|
|
* BFD_RELOC_386_TLS_LDM: howto manager. (line 471)
|
9471 |
|
|
* BFD_RELOC_386_TLS_LDO_32: howto manager. (line 472)
|
9472 |
|
|
* BFD_RELOC_386_TLS_LE: howto manager. (line 469)
|
9473 |
|
|
* BFD_RELOC_386_TLS_LE_32: howto manager. (line 474)
|
9474 |
|
|
* BFD_RELOC_386_TLS_TPOFF: howto manager. (line 466)
|
9475 |
|
|
* BFD_RELOC_386_TLS_TPOFF32: howto manager. (line 477)
|
9476 |
|
|
* BFD_RELOC_390_12: howto manager. (line 1449)
|
9477 |
|
|
* BFD_RELOC_390_20: howto manager. (line 1549)
|
9478 |
|
|
* BFD_RELOC_390_COPY: howto manager. (line 1458)
|
9479 |
|
|
* BFD_RELOC_390_GLOB_DAT: howto manager. (line 1461)
|
9480 |
|
|
* BFD_RELOC_390_GOT12: howto manager. (line 1452)
|
9481 |
|
|
* BFD_RELOC_390_GOT16: howto manager. (line 1473)
|
9482 |
|
|
* BFD_RELOC_390_GOT20: howto manager. (line 1550)
|
9483 |
|
|
* BFD_RELOC_390_GOT64: howto manager. (line 1491)
|
9484 |
|
|
* BFD_RELOC_390_GOTENT: howto manager. (line 1497)
|
9485 |
|
|
* BFD_RELOC_390_GOTOFF64: howto manager. (line 1500)
|
9486 |
|
|
* BFD_RELOC_390_GOTPC: howto manager. (line 1470)
|
9487 |
|
|
* BFD_RELOC_390_GOTPCDBL: howto manager. (line 1488)
|
9488 |
|
|
* BFD_RELOC_390_GOTPLT12: howto manager. (line 1503)
|
9489 |
|
|
* BFD_RELOC_390_GOTPLT16: howto manager. (line 1506)
|
9490 |
|
|
* BFD_RELOC_390_GOTPLT20: howto manager. (line 1551)
|
9491 |
|
|
* BFD_RELOC_390_GOTPLT32: howto manager. (line 1509)
|
9492 |
|
|
* BFD_RELOC_390_GOTPLT64: howto manager. (line 1512)
|
9493 |
|
|
* BFD_RELOC_390_GOTPLTENT: howto manager. (line 1515)
|
9494 |
|
|
* BFD_RELOC_390_JMP_SLOT: howto manager. (line 1464)
|
9495 |
|
|
* BFD_RELOC_390_PC16DBL: howto manager. (line 1476)
|
9496 |
|
|
* BFD_RELOC_390_PC32DBL: howto manager. (line 1482)
|
9497 |
|
|
* BFD_RELOC_390_PLT16DBL: howto manager. (line 1479)
|
9498 |
|
|
* BFD_RELOC_390_PLT32: howto manager. (line 1455)
|
9499 |
|
|
* BFD_RELOC_390_PLT32DBL: howto manager. (line 1485)
|
9500 |
|
|
* BFD_RELOC_390_PLT64: howto manager. (line 1494)
|
9501 |
|
|
* BFD_RELOC_390_PLTOFF16: howto manager. (line 1518)
|
9502 |
|
|
* BFD_RELOC_390_PLTOFF32: howto manager. (line 1521)
|
9503 |
|
|
* BFD_RELOC_390_PLTOFF64: howto manager. (line 1524)
|
9504 |
|
|
* BFD_RELOC_390_RELATIVE: howto manager. (line 1467)
|
9505 |
|
|
* BFD_RELOC_390_TLS_DTPMOD: howto manager. (line 1544)
|
9506 |
|
|
* BFD_RELOC_390_TLS_DTPOFF: howto manager. (line 1545)
|
9507 |
|
|
* BFD_RELOC_390_TLS_GD32: howto manager. (line 1530)
|
9508 |
|
|
* BFD_RELOC_390_TLS_GD64: howto manager. (line 1531)
|
9509 |
|
|
* BFD_RELOC_390_TLS_GDCALL: howto manager. (line 1528)
|
9510 |
|
|
* BFD_RELOC_390_TLS_GOTIE12: howto manager. (line 1532)
|
9511 |
|
|
* BFD_RELOC_390_TLS_GOTIE20: howto manager. (line 1552)
|
9512 |
|
|
* BFD_RELOC_390_TLS_GOTIE32: howto manager. (line 1533)
|
9513 |
|
|
* BFD_RELOC_390_TLS_GOTIE64: howto manager. (line 1534)
|
9514 |
|
|
* BFD_RELOC_390_TLS_IE32: howto manager. (line 1537)
|
9515 |
|
|
* BFD_RELOC_390_TLS_IE64: howto manager. (line 1538)
|
9516 |
|
|
* BFD_RELOC_390_TLS_IEENT: howto manager. (line 1539)
|
9517 |
|
|
* BFD_RELOC_390_TLS_LDCALL: howto manager. (line 1529)
|
9518 |
|
|
* BFD_RELOC_390_TLS_LDM32: howto manager. (line 1535)
|
9519 |
|
|
* BFD_RELOC_390_TLS_LDM64: howto manager. (line 1536)
|
9520 |
|
|
* BFD_RELOC_390_TLS_LDO32: howto manager. (line 1542)
|
9521 |
|
|
* BFD_RELOC_390_TLS_LDO64: howto manager. (line 1543)
|
9522 |
|
|
* BFD_RELOC_390_TLS_LE32: howto manager. (line 1540)
|
9523 |
|
|
* BFD_RELOC_390_TLS_LE64: howto manager. (line 1541)
|
9524 |
|
|
* BFD_RELOC_390_TLS_LOAD: howto manager. (line 1527)
|
9525 |
|
|
* BFD_RELOC_390_TLS_TPOFF: howto manager. (line 1546)
|
9526 |
|
|
* BFD_RELOC_64: howto manager. (line 26)
|
9527 |
|
|
* BFD_RELOC_64_PCREL: howto manager. (line 35)
|
9528 |
|
|
* BFD_RELOC_64_PLT_PCREL: howto manager. (line 60)
|
9529 |
|
|
* BFD_RELOC_64_PLTOFF: howto manager. (line 65)
|
9530 |
|
|
* BFD_RELOC_68K_GLOB_DAT: howto manager. (line 74)
|
9531 |
|
|
* BFD_RELOC_68K_JMP_SLOT: howto manager. (line 75)
|
9532 |
|
|
* BFD_RELOC_68K_RELATIVE: howto manager. (line 76)
|
9533 |
|
|
* BFD_RELOC_8: howto manager. (line 32)
|
9534 |
|
|
* BFD_RELOC_860_COPY: howto manager. (line 1894)
|
9535 |
|
|
* BFD_RELOC_860_GLOB_DAT: howto manager. (line 1895)
|
9536 |
|
|
* BFD_RELOC_860_HAGOT: howto manager. (line 1920)
|
9537 |
|
|
* BFD_RELOC_860_HAGOTOFF: howto manager. (line 1921)
|
9538 |
|
|
* BFD_RELOC_860_HAPC: howto manager. (line 1922)
|
9539 |
|
|
* BFD_RELOC_860_HIGH: howto manager. (line 1923)
|
9540 |
|
|
* BFD_RELOC_860_HIGHADJ: howto manager. (line 1919)
|
9541 |
|
|
* BFD_RELOC_860_HIGOT: howto manager. (line 1924)
|
9542 |
|
|
* BFD_RELOC_860_HIGOTOFF: howto manager. (line 1925)
|
9543 |
|
|
* BFD_RELOC_860_JUMP_SLOT: howto manager. (line 1896)
|
9544 |
|
|
* BFD_RELOC_860_LOGOT0: howto manager. (line 1908)
|
9545 |
|
|
* BFD_RELOC_860_LOGOT1: howto manager. (line 1910)
|
9546 |
|
|
* BFD_RELOC_860_LOGOTOFF0: howto manager. (line 1912)
|
9547 |
|
|
* BFD_RELOC_860_LOGOTOFF1: howto manager. (line 1914)
|
9548 |
|
|
* BFD_RELOC_860_LOGOTOFF2: howto manager. (line 1916)
|
9549 |
|
|
* BFD_RELOC_860_LOGOTOFF3: howto manager. (line 1917)
|
9550 |
|
|
* BFD_RELOC_860_LOPC: howto manager. (line 1918)
|
9551 |
|
|
* BFD_RELOC_860_LOW0: howto manager. (line 1901)
|
9552 |
|
|
* BFD_RELOC_860_LOW1: howto manager. (line 1903)
|
9553 |
|
|
* BFD_RELOC_860_LOW2: howto manager. (line 1905)
|
9554 |
|
|
* BFD_RELOC_860_LOW3: howto manager. (line 1907)
|
9555 |
|
|
* BFD_RELOC_860_PC16: howto manager. (line 1900)
|
9556 |
|
|
* BFD_RELOC_860_PC26: howto manager. (line 1898)
|
9557 |
|
|
* BFD_RELOC_860_PLT26: howto manager. (line 1899)
|
9558 |
|
|
* BFD_RELOC_860_RELATIVE: howto manager. (line 1897)
|
9559 |
|
|
* BFD_RELOC_860_SPGOT0: howto manager. (line 1909)
|
9560 |
|
|
* BFD_RELOC_860_SPGOT1: howto manager. (line 1911)
|
9561 |
|
|
* BFD_RELOC_860_SPGOTOFF0: howto manager. (line 1913)
|
9562 |
|
|
* BFD_RELOC_860_SPGOTOFF1: howto manager. (line 1915)
|
9563 |
|
|
* BFD_RELOC_860_SPLIT0: howto manager. (line 1902)
|
9564 |
|
|
* BFD_RELOC_860_SPLIT1: howto manager. (line 1904)
|
9565 |
|
|
* BFD_RELOC_860_SPLIT2: howto manager. (line 1906)
|
9566 |
|
|
* BFD_RELOC_8_BASEREL: howto manager. (line 84)
|
9567 |
|
|
* BFD_RELOC_8_FFnn: howto manager. (line 88)
|
9568 |
|
|
* BFD_RELOC_8_GOT_PCREL: howto manager. (line 53)
|
9569 |
|
|
* BFD_RELOC_8_GOTOFF: howto manager. (line 59)
|
9570 |
|
|
* BFD_RELOC_8_PCREL: howto manager. (line 40)
|
9571 |
|
|
* BFD_RELOC_8_PLT_PCREL: howto manager. (line 64)
|
9572 |
|
|
* BFD_RELOC_8_PLTOFF: howto manager. (line 71)
|
9573 |
|
|
* BFD_RELOC_ALPHA_BRSGP: howto manager. (line 275)
|
9574 |
|
|
* BFD_RELOC_ALPHA_CODEADDR: howto manager. (line 266)
|
9575 |
|
|
* BFD_RELOC_ALPHA_DTPMOD64: howto manager. (line 282)
|
9576 |
|
|
* BFD_RELOC_ALPHA_DTPREL16: howto manager. (line 287)
|
9577 |
|
|
* BFD_RELOC_ALPHA_DTPREL64: howto manager. (line 284)
|
9578 |
|
|
* BFD_RELOC_ALPHA_DTPREL_HI16: howto manager. (line 285)
|
9579 |
|
|
* BFD_RELOC_ALPHA_DTPREL_LO16: howto manager. (line 286)
|
9580 |
|
|
* BFD_RELOC_ALPHA_ELF_LITERAL: howto manager. (line 231)
|
9581 |
|
|
* BFD_RELOC_ALPHA_GOTDTPREL16: howto manager. (line 283)
|
9582 |
|
|
* BFD_RELOC_ALPHA_GOTTPREL16: howto manager. (line 288)
|
9583 |
|
|
* BFD_RELOC_ALPHA_GPDISP: howto manager. (line 225)
|
9584 |
|
|
* BFD_RELOC_ALPHA_GPDISP_HI16: howto manager. (line 211)
|
9585 |
|
|
* BFD_RELOC_ALPHA_GPDISP_LO16: howto manager. (line 219)
|
9586 |
|
|
* BFD_RELOC_ALPHA_GPREL_HI16: howto manager. (line 270)
|
9587 |
|
|
* BFD_RELOC_ALPHA_GPREL_LO16: howto manager. (line 271)
|
9588 |
|
|
* BFD_RELOC_ALPHA_HINT: howto manager. (line 257)
|
9589 |
|
|
* BFD_RELOC_ALPHA_LINKAGE: howto manager. (line 262)
|
9590 |
|
|
* BFD_RELOC_ALPHA_LITERAL: howto manager. (line 230)
|
9591 |
|
|
* BFD_RELOC_ALPHA_LITUSE: howto manager. (line 232)
|
9592 |
|
|
* BFD_RELOC_ALPHA_TLSGD: howto manager. (line 280)
|
9593 |
|
|
* BFD_RELOC_ALPHA_TLSLDM: howto manager. (line 281)
|
9594 |
|
|
* BFD_RELOC_ALPHA_TPREL16: howto manager. (line 292)
|
9595 |
|
|
* BFD_RELOC_ALPHA_TPREL64: howto manager. (line 289)
|
9596 |
|
|
* BFD_RELOC_ALPHA_TPREL_HI16: howto manager. (line 290)
|
9597 |
|
|
* BFD_RELOC_ALPHA_TPREL_LO16: howto manager. (line 291)
|
9598 |
|
|
* BFD_RELOC_ARC_B22_PCREL: howto manager. (line 885)
|
9599 |
|
|
* BFD_RELOC_ARC_B26: howto manager. (line 890)
|
9600 |
|
|
* BFD_RELOC_ARM_ADR_IMM: howto manager. (line 778)
|
9601 |
|
|
* BFD_RELOC_ARM_ADRL_IMMEDIATE: howto manager. (line 765)
|
9602 |
|
|
* BFD_RELOC_ARM_ALU_PC_G0: howto manager. (line 732)
|
9603 |
|
|
* BFD_RELOC_ARM_ALU_PC_G0_NC: howto manager. (line 731)
|
9604 |
|
|
* BFD_RELOC_ARM_ALU_PC_G1: howto manager. (line 734)
|
9605 |
|
|
* BFD_RELOC_ARM_ALU_PC_G1_NC: howto manager. (line 733)
|
9606 |
|
|
* BFD_RELOC_ARM_ALU_PC_G2: howto manager. (line 735)
|
9607 |
|
|
* BFD_RELOC_ARM_ALU_SB_G0: howto manager. (line 746)
|
9608 |
|
|
* BFD_RELOC_ARM_ALU_SB_G0_NC: howto manager. (line 745)
|
9609 |
|
|
* BFD_RELOC_ARM_ALU_SB_G1: howto manager. (line 748)
|
9610 |
|
|
* BFD_RELOC_ARM_ALU_SB_G1_NC: howto manager. (line 747)
|
9611 |
|
|
* BFD_RELOC_ARM_ALU_SB_G2: howto manager. (line 749)
|
9612 |
|
|
* BFD_RELOC_ARM_CP_OFF_IMM: howto manager. (line 774)
|
9613 |
|
|
* BFD_RELOC_ARM_CP_OFF_IMM_S2: howto manager. (line 775)
|
9614 |
|
|
* BFD_RELOC_ARM_GLOB_DAT: howto manager. (line 713)
|
9615 |
|
|
* BFD_RELOC_ARM_GOT32: howto manager. (line 714)
|
9616 |
|
|
* BFD_RELOC_ARM_GOTOFF: howto manager. (line 717)
|
9617 |
|
|
* BFD_RELOC_ARM_GOTPC: howto manager. (line 718)
|
9618 |
|
|
* BFD_RELOC_ARM_HWLITERAL: howto manager. (line 785)
|
9619 |
|
|
* BFD_RELOC_ARM_IMMEDIATE: howto manager. (line 764)
|
9620 |
|
|
* BFD_RELOC_ARM_IN_POOL: howto manager. (line 781)
|
9621 |
|
|
* BFD_RELOC_ARM_JUMP_SLOT: howto manager. (line 712)
|
9622 |
|
|
* BFD_RELOC_ARM_LDC_PC_G0: howto manager. (line 742)
|
9623 |
|
|
* BFD_RELOC_ARM_LDC_PC_G1: howto manager. (line 743)
|
9624 |
|
|
* BFD_RELOC_ARM_LDC_PC_G2: howto manager. (line 744)
|
9625 |
|
|
* BFD_RELOC_ARM_LDC_SB_G0: howto manager. (line 756)
|
9626 |
|
|
* BFD_RELOC_ARM_LDC_SB_G1: howto manager. (line 757)
|
9627 |
|
|
* BFD_RELOC_ARM_LDC_SB_G2: howto manager. (line 758)
|
9628 |
|
|
* BFD_RELOC_ARM_LDR_IMM: howto manager. (line 779)
|
9629 |
|
|
* BFD_RELOC_ARM_LDR_PC_G0: howto manager. (line 736)
|
9630 |
|
|
* BFD_RELOC_ARM_LDR_PC_G1: howto manager. (line 737)
|
9631 |
|
|
* BFD_RELOC_ARM_LDR_PC_G2: howto manager. (line 738)
|
9632 |
|
|
* BFD_RELOC_ARM_LDR_SB_G0: howto manager. (line 750)
|
9633 |
|
|
* BFD_RELOC_ARM_LDR_SB_G1: howto manager. (line 751)
|
9634 |
|
|
* BFD_RELOC_ARM_LDR_SB_G2: howto manager. (line 752)
|
9635 |
|
|
* BFD_RELOC_ARM_LDRS_PC_G0: howto manager. (line 739)
|
9636 |
|
|
* BFD_RELOC_ARM_LDRS_PC_G1: howto manager. (line 740)
|
9637 |
|
|
* BFD_RELOC_ARM_LDRS_PC_G2: howto manager. (line 741)
|
9638 |
|
|
* BFD_RELOC_ARM_LDRS_SB_G0: howto manager. (line 753)
|
9639 |
|
|
* BFD_RELOC_ARM_LDRS_SB_G1: howto manager. (line 754)
|
9640 |
|
|
* BFD_RELOC_ARM_LDRS_SB_G2: howto manager. (line 755)
|
9641 |
|
|
* BFD_RELOC_ARM_LITERAL: howto manager. (line 780)
|
9642 |
|
|
* BFD_RELOC_ARM_MOVT: howto manager. (line 703)
|
9643 |
|
|
* BFD_RELOC_ARM_MOVT_PCREL: howto manager. (line 705)
|
9644 |
|
|
* BFD_RELOC_ARM_MOVW: howto manager. (line 702)
|
9645 |
|
|
* BFD_RELOC_ARM_MOVW_PCREL: howto manager. (line 704)
|
9646 |
|
|
* BFD_RELOC_ARM_MULTI: howto manager. (line 773)
|
9647 |
|
|
* BFD_RELOC_ARM_OFFSET_IMM: howto manager. (line 676)
|
9648 |
|
|
* BFD_RELOC_ARM_OFFSET_IMM8: howto manager. (line 782)
|
9649 |
|
|
* BFD_RELOC_ARM_PCREL_BLX: howto manager. (line 647)
|
9650 |
|
|
* BFD_RELOC_ARM_PCREL_BRANCH: howto manager. (line 643)
|
9651 |
|
|
* BFD_RELOC_ARM_PCREL_CALL: howto manager. (line 657)
|
9652 |
|
|
* BFD_RELOC_ARM_PCREL_JUMP: howto manager. (line 661)
|
9653 |
|
|
* BFD_RELOC_ARM_PLT32: howto manager. (line 715)
|
9654 |
|
|
* BFD_RELOC_ARM_PREL31: howto manager. (line 699)
|
9655 |
|
|
* BFD_RELOC_ARM_RELATIVE: howto manager. (line 716)
|
9656 |
|
|
* BFD_RELOC_ARM_ROSEGREL32: howto manager. (line 688)
|
9657 |
|
|
* BFD_RELOC_ARM_SBREL32: howto manager. (line 691)
|
9658 |
|
|
* BFD_RELOC_ARM_SHIFT_IMM: howto manager. (line 770)
|
9659 |
|
|
* BFD_RELOC_ARM_SMC: howto manager. (line 771)
|
9660 |
|
|
* BFD_RELOC_ARM_SWI: howto manager. (line 772)
|
9661 |
|
|
* BFD_RELOC_ARM_T32_ADD_IMM: howto manager. (line 767)
|
9662 |
|
|
* BFD_RELOC_ARM_T32_ADD_PC12: howto manager. (line 769)
|
9663 |
|
|
* BFD_RELOC_ARM_T32_CP_OFF_IMM: howto manager. (line 776)
|
9664 |
|
|
* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2: howto manager. (line 777)
|
9665 |
|
|
* BFD_RELOC_ARM_T32_IMM12: howto manager. (line 768)
|
9666 |
|
|
* BFD_RELOC_ARM_T32_IMMEDIATE: howto manager. (line 766)
|
9667 |
|
|
* BFD_RELOC_ARM_T32_OFFSET_IMM: howto manager. (line 784)
|
9668 |
|
|
* BFD_RELOC_ARM_T32_OFFSET_U8: howto manager. (line 783)
|
9669 |
|
|
* BFD_RELOC_ARM_TARGET1: howto manager. (line 684)
|
9670 |
|
|
* BFD_RELOC_ARM_TARGET2: howto manager. (line 694)
|
9671 |
|
|
* BFD_RELOC_ARM_THUMB_ADD: howto manager. (line 786)
|
9672 |
|
|
* BFD_RELOC_ARM_THUMB_IMM: howto manager. (line 787)
|
9673 |
|
|
* BFD_RELOC_ARM_THUMB_MOVT: howto manager. (line 707)
|
9674 |
|
|
* BFD_RELOC_ARM_THUMB_MOVT_PCREL: howto manager. (line 709)
|
9675 |
|
|
* BFD_RELOC_ARM_THUMB_MOVW: howto manager. (line 706)
|
9676 |
|
|
* BFD_RELOC_ARM_THUMB_MOVW_PCREL: howto manager. (line 708)
|
9677 |
|
|
* BFD_RELOC_ARM_THUMB_OFFSET: howto manager. (line 680)
|
9678 |
|
|
* BFD_RELOC_ARM_THUMB_SHIFT: howto manager. (line 788)
|
9679 |
|
|
* BFD_RELOC_ARM_TLS_DTPMOD32: howto manager. (line 725)
|
9680 |
|
|
* BFD_RELOC_ARM_TLS_DTPOFF32: howto manager. (line 724)
|
9681 |
|
|
* BFD_RELOC_ARM_TLS_GD32: howto manager. (line 721)
|
9682 |
|
|
* BFD_RELOC_ARM_TLS_IE32: howto manager. (line 727)
|
9683 |
|
|
* BFD_RELOC_ARM_TLS_LDM32: howto manager. (line 723)
|
9684 |
|
|
* BFD_RELOC_ARM_TLS_LDO32: howto manager. (line 722)
|
9685 |
|
|
* BFD_RELOC_ARM_TLS_LE32: howto manager. (line 728)
|
9686 |
|
|
* BFD_RELOC_ARM_TLS_TPOFF32: howto manager. (line 726)
|
9687 |
|
|
* BFD_RELOC_ARM_V4BX: howto manager. (line 761)
|
9688 |
|
|
* BFD_RELOC_AVR_13_PCREL: howto manager. (line 1350)
|
9689 |
|
|
* BFD_RELOC_AVR_16_PM: howto manager. (line 1354)
|
9690 |
|
|
* BFD_RELOC_AVR_6: howto manager. (line 1441)
|
9691 |
|
|
* BFD_RELOC_AVR_6_ADIW: howto manager. (line 1445)
|
9692 |
|
|
* BFD_RELOC_AVR_7_PCREL: howto manager. (line 1346)
|
9693 |
|
|
* BFD_RELOC_AVR_CALL: howto manager. (line 1433)
|
9694 |
|
|
* BFD_RELOC_AVR_HH8_LDI: howto manager. (line 1366)
|
9695 |
|
|
* BFD_RELOC_AVR_HH8_LDI_NEG: howto manager. (line 1385)
|
9696 |
|
|
* BFD_RELOC_AVR_HH8_LDI_PM: howto manager. (line 1414)
|
9697 |
|
|
* BFD_RELOC_AVR_HH8_LDI_PM_NEG: howto manager. (line 1428)
|
9698 |
|
|
* BFD_RELOC_AVR_HI8_LDI: howto manager. (line 1362)
|
9699 |
|
|
* BFD_RELOC_AVR_HI8_LDI_GS: howto manager. (line 1408)
|
9700 |
|
|
* BFD_RELOC_AVR_HI8_LDI_NEG: howto manager. (line 1380)
|
9701 |
|
|
* BFD_RELOC_AVR_HI8_LDI_PM: howto manager. (line 1404)
|
9702 |
|
|
* BFD_RELOC_AVR_HI8_LDI_PM_NEG: howto manager. (line 1423)
|
9703 |
|
|
* BFD_RELOC_AVR_LDI: howto manager. (line 1437)
|
9704 |
|
|
* BFD_RELOC_AVR_LO8_LDI: howto manager. (line 1358)
|
9705 |
|
|
* BFD_RELOC_AVR_LO8_LDI_GS: howto manager. (line 1398)
|
9706 |
|
|
* BFD_RELOC_AVR_LO8_LDI_NEG: howto manager. (line 1375)
|
9707 |
|
|
* BFD_RELOC_AVR_LO8_LDI_PM: howto manager. (line 1394)
|
9708 |
|
|
* BFD_RELOC_AVR_LO8_LDI_PM_NEG: howto manager. (line 1419)
|
9709 |
|
|
* BFD_RELOC_AVR_MS8_LDI: howto manager. (line 1371)
|
9710 |
|
|
* BFD_RELOC_AVR_MS8_LDI_NEG: howto manager. (line 1390)
|
9711 |
|
|
* BFD_RELOC_BFIN_10_PCREL: howto manager. (line 910)
|
9712 |
|
|
* BFD_RELOC_BFIN_11_PCREL: howto manager. (line 913)
|
9713 |
|
|
* BFD_RELOC_BFIN_12_PCREL_JUMP: howto manager. (line 916)
|
9714 |
|
|
* BFD_RELOC_BFIN_12_PCREL_JUMP_S: howto manager. (line 919)
|
9715 |
|
|
* BFD_RELOC_BFIN_16_HIGH: howto manager. (line 898)
|
9716 |
|
|
* BFD_RELOC_BFIN_16_IMM: howto manager. (line 895)
|
9717 |
|
|
* BFD_RELOC_BFIN_16_LOW: howto manager. (line 907)
|
9718 |
|
|
* BFD_RELOC_BFIN_24_PCREL_CALL_X: howto manager. (line 922)
|
9719 |
|
|
* BFD_RELOC_BFIN_24_PCREL_JUMP_L: howto manager. (line 925)
|
9720 |
|
|
* BFD_RELOC_BFIN_4_PCREL: howto manager. (line 901)
|
9721 |
|
|
* BFD_RELOC_BFIN_5_PCREL: howto manager. (line 904)
|
9722 |
|
|
* BFD_RELOC_BFIN_FUNCDESC: howto manager. (line 931)
|
9723 |
|
|
* BFD_RELOC_BFIN_FUNCDESC_GOT17M4: howto manager. (line 932)
|
9724 |
|
|
* BFD_RELOC_BFIN_FUNCDESC_GOTHI: howto manager. (line 933)
|
9725 |
|
|
* BFD_RELOC_BFIN_FUNCDESC_GOTLO: howto manager. (line 934)
|
9726 |
|
|
* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4: howto manager. (line 936)
|
9727 |
|
|
* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI: howto manager. (line 937)
|
9728 |
|
|
* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO: howto manager. (line 938)
|
9729 |
|
|
* BFD_RELOC_BFIN_FUNCDESC_VALUE: howto manager. (line 935)
|
9730 |
|
|
* BFD_RELOC_BFIN_GOT: howto manager. (line 944)
|
9731 |
|
|
* BFD_RELOC_BFIN_GOT17M4: howto manager. (line 928)
|
9732 |
|
|
* BFD_RELOC_BFIN_GOTHI: howto manager. (line 929)
|
9733 |
|
|
* BFD_RELOC_BFIN_GOTLO: howto manager. (line 930)
|
9734 |
|
|
* BFD_RELOC_BFIN_GOTOFF17M4: howto manager. (line 939)
|
9735 |
|
|
* BFD_RELOC_BFIN_GOTOFFHI: howto manager. (line 940)
|
9736 |
|
|
* BFD_RELOC_BFIN_GOTOFFLO: howto manager. (line 941)
|
9737 |
|
|
* BFD_RELOC_BFIN_PLTPC: howto manager. (line 947)
|
9738 |
|
|
* bfd_reloc_code_type: howto manager. (line 10)
|
9739 |
|
|
* BFD_RELOC_CR16_ABS20: howto manager. (line 1811)
|
9740 |
|
|
* BFD_RELOC_CR16_ABS24: howto manager. (line 1812)
|
9741 |
|
|
* BFD_RELOC_CR16_DISP16: howto manager. (line 1822)
|
9742 |
|
|
* BFD_RELOC_CR16_DISP20: howto manager. (line 1823)
|
9743 |
|
|
* BFD_RELOC_CR16_DISP24: howto manager. (line 1824)
|
9744 |
|
|
* BFD_RELOC_CR16_DISP24a: howto manager. (line 1825)
|
9745 |
|
|
* BFD_RELOC_CR16_DISP4: howto manager. (line 1820)
|
9746 |
|
|
* BFD_RELOC_CR16_DISP8: howto manager. (line 1821)
|
9747 |
|
|
* BFD_RELOC_CR16_IMM16: howto manager. (line 1815)
|
9748 |
|
|
* BFD_RELOC_CR16_IMM20: howto manager. (line 1816)
|
9749 |
|
|
* BFD_RELOC_CR16_IMM24: howto manager. (line 1817)
|
9750 |
|
|
* BFD_RELOC_CR16_IMM32: howto manager. (line 1818)
|
9751 |
|
|
* BFD_RELOC_CR16_IMM32a: howto manager. (line 1819)
|
9752 |
|
|
* BFD_RELOC_CR16_IMM4: howto manager. (line 1813)
|
9753 |
|
|
* BFD_RELOC_CR16_IMM8: howto manager. (line 1814)
|
9754 |
|
|
* BFD_RELOC_CR16_NUM16: howto manager. (line 1800)
|
9755 |
|
|
* BFD_RELOC_CR16_NUM32: howto manager. (line 1801)
|
9756 |
|
|
* BFD_RELOC_CR16_NUM32a: howto manager. (line 1802)
|
9757 |
|
|
* BFD_RELOC_CR16_NUM8: howto manager. (line 1799)
|
9758 |
|
|
* BFD_RELOC_CR16_REGREL0: howto manager. (line 1803)
|
9759 |
|
|
* BFD_RELOC_CR16_REGREL14: howto manager. (line 1806)
|
9760 |
|
|
* BFD_RELOC_CR16_REGREL14a: howto manager. (line 1807)
|
9761 |
|
|
* BFD_RELOC_CR16_REGREL16: howto manager. (line 1808)
|
9762 |
|
|
* BFD_RELOC_CR16_REGREL20: howto manager. (line 1809)
|
9763 |
|
|
* BFD_RELOC_CR16_REGREL20a: howto manager. (line 1810)
|
9764 |
|
|
* BFD_RELOC_CR16_REGREL4: howto manager. (line 1804)
|
9765 |
|
|
* BFD_RELOC_CR16_REGREL4a: howto manager. (line 1805)
|
9766 |
|
|
* BFD_RELOC_CR16_SWITCH16: howto manager. (line 1827)
|
9767 |
|
|
* BFD_RELOC_CR16_SWITCH32: howto manager. (line 1828)
|
9768 |
|
|
* BFD_RELOC_CR16_SWITCH8: howto manager. (line 1826)
|
9769 |
|
|
* BFD_RELOC_CRIS_16_GOT: howto manager. (line 1875)
|
9770 |
|
|
* BFD_RELOC_CRIS_16_GOTPLT: howto manager. (line 1881)
|
9771 |
|
|
* BFD_RELOC_CRIS_32_GOT: howto manager. (line 1872)
|
9772 |
|
|
* BFD_RELOC_CRIS_32_GOTPLT: howto manager. (line 1878)
|
9773 |
|
|
* BFD_RELOC_CRIS_32_GOTREL: howto manager. (line 1884)
|
9774 |
|
|
* BFD_RELOC_CRIS_32_PLT_GOTREL: howto manager. (line 1887)
|
9775 |
|
|
* BFD_RELOC_CRIS_32_PLT_PCREL: howto manager. (line 1890)
|
9776 |
|
|
* BFD_RELOC_CRIS_BDISP8: howto manager. (line 1853)
|
9777 |
|
|
* BFD_RELOC_CRIS_COPY: howto manager. (line 1866)
|
9778 |
|
|
* BFD_RELOC_CRIS_GLOB_DAT: howto manager. (line 1867)
|
9779 |
|
|
* BFD_RELOC_CRIS_JUMP_SLOT: howto manager. (line 1868)
|
9780 |
|
|
* BFD_RELOC_CRIS_LAPCQ_OFFSET: howto manager. (line 1861)
|
9781 |
|
|
* BFD_RELOC_CRIS_RELATIVE: howto manager. (line 1869)
|
9782 |
|
|
* BFD_RELOC_CRIS_SIGNED_16: howto manager. (line 1859)
|
9783 |
|
|
* BFD_RELOC_CRIS_SIGNED_6: howto manager. (line 1855)
|
9784 |
|
|
* BFD_RELOC_CRIS_SIGNED_8: howto manager. (line 1857)
|
9785 |
|
|
* BFD_RELOC_CRIS_UNSIGNED_16: howto manager. (line 1860)
|
9786 |
|
|
* BFD_RELOC_CRIS_UNSIGNED_4: howto manager. (line 1862)
|
9787 |
|
|
* BFD_RELOC_CRIS_UNSIGNED_5: howto manager. (line 1854)
|
9788 |
|
|
* BFD_RELOC_CRIS_UNSIGNED_6: howto manager. (line 1856)
|
9789 |
|
|
* BFD_RELOC_CRIS_UNSIGNED_8: howto manager. (line 1858)
|
9790 |
|
|
* BFD_RELOC_CRX_ABS16: howto manager. (line 1841)
|
9791 |
|
|
* BFD_RELOC_CRX_ABS32: howto manager. (line 1842)
|
9792 |
|
|
* BFD_RELOC_CRX_IMM16: howto manager. (line 1846)
|
9793 |
|
|
* BFD_RELOC_CRX_IMM32: howto manager. (line 1847)
|
9794 |
|
|
* BFD_RELOC_CRX_NUM16: howto manager. (line 1844)
|
9795 |
|
|
* BFD_RELOC_CRX_NUM32: howto manager. (line 1845)
|
9796 |
|
|
* BFD_RELOC_CRX_NUM8: howto manager. (line 1843)
|
9797 |
|
|
* BFD_RELOC_CRX_REGREL12: howto manager. (line 1837)
|
9798 |
|
|
* BFD_RELOC_CRX_REGREL22: howto manager. (line 1838)
|
9799 |
|
|
* BFD_RELOC_CRX_REGREL28: howto manager. (line 1839)
|
9800 |
|
|
* BFD_RELOC_CRX_REGREL32: howto manager. (line 1840)
|
9801 |
|
|
* BFD_RELOC_CRX_REL16: howto manager. (line 1834)
|
9802 |
|
|
* BFD_RELOC_CRX_REL24: howto manager. (line 1835)
|
9803 |
|
|
* BFD_RELOC_CRX_REL32: howto manager. (line 1836)
|
9804 |
|
|
* BFD_RELOC_CRX_REL4: howto manager. (line 1831)
|
9805 |
|
|
* BFD_RELOC_CRX_REL8: howto manager. (line 1832)
|
9806 |
|
|
* BFD_RELOC_CRX_REL8_CMP: howto manager. (line 1833)
|
9807 |
|
|
* BFD_RELOC_CRX_SWITCH16: howto manager. (line 1849)
|
9808 |
|
|
* BFD_RELOC_CRX_SWITCH32: howto manager. (line 1850)
|
9809 |
|
|
* BFD_RELOC_CRX_SWITCH8: howto manager. (line 1848)
|
9810 |
|
|
* BFD_RELOC_CTOR: howto manager. (line 637)
|
9811 |
|
|
* BFD_RELOC_D10V_10_PCREL_L: howto manager. (line 1014)
|
9812 |
|
|
* BFD_RELOC_D10V_10_PCREL_R: howto manager. (line 1010)
|
9813 |
|
|
* BFD_RELOC_D10V_18: howto manager. (line 1019)
|
9814 |
|
|
* BFD_RELOC_D10V_18_PCREL: howto manager. (line 1022)
|
9815 |
|
|
* BFD_RELOC_D30V_15: howto manager. (line 1037)
|
9816 |
|
|
* BFD_RELOC_D30V_15_PCREL: howto manager. (line 1041)
|
9817 |
|
|
* BFD_RELOC_D30V_15_PCREL_R: howto manager. (line 1045)
|
9818 |
|
|
* BFD_RELOC_D30V_21: howto manager. (line 1050)
|
9819 |
|
|
* BFD_RELOC_D30V_21_PCREL: howto manager. (line 1054)
|
9820 |
|
|
* BFD_RELOC_D30V_21_PCREL_R: howto manager. (line 1058)
|
9821 |
|
|
* BFD_RELOC_D30V_32: howto manager. (line 1063)
|
9822 |
|
|
* BFD_RELOC_D30V_32_PCREL: howto manager. (line 1066)
|
9823 |
|
|
* BFD_RELOC_D30V_6: howto manager. (line 1025)
|
9824 |
|
|
* BFD_RELOC_D30V_9_PCREL: howto manager. (line 1028)
|
9825 |
|
|
* BFD_RELOC_D30V_9_PCREL_R: howto manager. (line 1032)
|
9826 |
|
|
* BFD_RELOC_DLX_HI16_S: howto manager. (line 1069)
|
9827 |
|
|
* BFD_RELOC_DLX_JMP26: howto manager. (line 1075)
|
9828 |
|
|
* BFD_RELOC_DLX_LO16: howto manager. (line 1072)
|
9829 |
|
|
* BFD_RELOC_FR30_10_IN_8: howto manager. (line 1254)
|
9830 |
|
|
* BFD_RELOC_FR30_12_PCREL: howto manager. (line 1262)
|
9831 |
|
|
* BFD_RELOC_FR30_20: howto manager. (line 1238)
|
9832 |
|
|
* BFD_RELOC_FR30_48: howto manager. (line 1235)
|
9833 |
|
|
* BFD_RELOC_FR30_6_IN_4: howto manager. (line 1242)
|
9834 |
|
|
* BFD_RELOC_FR30_8_IN_8: howto manager. (line 1246)
|
9835 |
|
|
* BFD_RELOC_FR30_9_IN_8: howto manager. (line 1250)
|
9836 |
|
|
* BFD_RELOC_FR30_9_PCREL: howto manager. (line 1258)
|
9837 |
|
|
* BFD_RELOC_FRV_FUNCDESC: howto manager. (line 393)
|
9838 |
|
|
* BFD_RELOC_FRV_FUNCDESC_GOT12: howto manager. (line 394)
|
9839 |
|
|
* BFD_RELOC_FRV_FUNCDESC_GOTHI: howto manager. (line 395)
|
9840 |
|
|
* BFD_RELOC_FRV_FUNCDESC_GOTLO: howto manager. (line 396)
|
9841 |
|
|
* BFD_RELOC_FRV_FUNCDESC_GOTOFF12: howto manager. (line 398)
|
9842 |
|
|
* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: howto manager. (line 399)
|
9843 |
|
|
* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: howto manager. (line 400)
|
9844 |
|
|
* BFD_RELOC_FRV_FUNCDESC_VALUE: howto manager. (line 397)
|
9845 |
|
|
* BFD_RELOC_FRV_GETTLSOFF: howto manager. (line 404)
|
9846 |
|
|
* BFD_RELOC_FRV_GETTLSOFF_RELAX: howto manager. (line 417)
|
9847 |
|
|
* BFD_RELOC_FRV_GOT12: howto manager. (line 390)
|
9848 |
|
|
* BFD_RELOC_FRV_GOTHI: howto manager. (line 391)
|
9849 |
|
|
* BFD_RELOC_FRV_GOTLO: howto manager. (line 392)
|
9850 |
|
|
* BFD_RELOC_FRV_GOTOFF12: howto manager. (line 401)
|
9851 |
|
|
* BFD_RELOC_FRV_GOTOFFHI: howto manager. (line 402)
|
9852 |
|
|
* BFD_RELOC_FRV_GOTOFFLO: howto manager. (line 403)
|
9853 |
|
|
* BFD_RELOC_FRV_GOTTLSDESC12: howto manager. (line 406)
|
9854 |
|
|
* BFD_RELOC_FRV_GOTTLSDESCHI: howto manager. (line 407)
|
9855 |
|
|
* BFD_RELOC_FRV_GOTTLSDESCLO: howto manager. (line 408)
|
9856 |
|
|
* BFD_RELOC_FRV_GOTTLSOFF12: howto manager. (line 412)
|
9857 |
|
|
* BFD_RELOC_FRV_GOTTLSOFFHI: howto manager. (line 413)
|
9858 |
|
|
* BFD_RELOC_FRV_GOTTLSOFFLO: howto manager. (line 414)
|
9859 |
|
|
* BFD_RELOC_FRV_GPREL12: howto manager. (line 385)
|
9860 |
|
|
* BFD_RELOC_FRV_GPREL32: howto manager. (line 387)
|
9861 |
|
|
* BFD_RELOC_FRV_GPRELHI: howto manager. (line 388)
|
9862 |
|
|
* BFD_RELOC_FRV_GPRELLO: howto manager. (line 389)
|
9863 |
|
|
* BFD_RELOC_FRV_GPRELU12: howto manager. (line 386)
|
9864 |
|
|
* BFD_RELOC_FRV_HI16: howto manager. (line 384)
|
9865 |
|
|
* BFD_RELOC_FRV_LABEL16: howto manager. (line 381)
|
9866 |
|
|
* BFD_RELOC_FRV_LABEL24: howto manager. (line 382)
|
9867 |
|
|
* BFD_RELOC_FRV_LO16: howto manager. (line 383)
|
9868 |
|
|
* BFD_RELOC_FRV_TLSDESC_RELAX: howto manager. (line 416)
|
9869 |
|
|
* BFD_RELOC_FRV_TLSDESC_VALUE: howto manager. (line 405)
|
9870 |
|
|
* BFD_RELOC_FRV_TLSMOFF: howto manager. (line 419)
|
9871 |
|
|
* BFD_RELOC_FRV_TLSMOFF12: howto manager. (line 409)
|
9872 |
|
|
* BFD_RELOC_FRV_TLSMOFFHI: howto manager. (line 410)
|
9873 |
|
|
* BFD_RELOC_FRV_TLSMOFFLO: howto manager. (line 411)
|
9874 |
|
|
* BFD_RELOC_FRV_TLSOFF: howto manager. (line 415)
|
9875 |
|
|
* BFD_RELOC_FRV_TLSOFF_RELAX: howto manager. (line 418)
|
9876 |
|
|
* BFD_RELOC_GPREL16: howto manager. (line 106)
|
9877 |
|
|
* BFD_RELOC_GPREL32: howto manager. (line 107)
|
9878 |
|
|
* BFD_RELOC_H8_DIR16A8: howto manager. (line 1932)
|
9879 |
|
|
* BFD_RELOC_H8_DIR16R8: howto manager. (line 1933)
|
9880 |
|
|
* BFD_RELOC_H8_DIR24A8: howto manager. (line 1934)
|
9881 |
|
|
* BFD_RELOC_H8_DIR24R8: howto manager. (line 1935)
|
9882 |
|
|
* BFD_RELOC_H8_DIR32A16: howto manager. (line 1936)
|
9883 |
|
|
* BFD_RELOC_HI16: howto manager. (line 305)
|
9884 |
|
|
* BFD_RELOC_HI16_BASEREL: howto manager. (line 82)
|
9885 |
|
|
* BFD_RELOC_HI16_GOTOFF: howto manager. (line 57)
|
9886 |
|
|
* BFD_RELOC_HI16_PCREL: howto manager. (line 317)
|
9887 |
|
|
* BFD_RELOC_HI16_PLTOFF: howto manager. (line 69)
|
9888 |
|
|
* BFD_RELOC_HI16_S: howto manager. (line 308)
|
9889 |
|
|
* BFD_RELOC_HI16_S_BASEREL: howto manager. (line 83)
|
9890 |
|
|
* BFD_RELOC_HI16_S_GOTOFF: howto manager. (line 58)
|
9891 |
|
|
* BFD_RELOC_HI16_S_PCREL: howto manager. (line 320)
|
9892 |
|
|
* BFD_RELOC_HI16_S_PLTOFF: howto manager. (line 70)
|
9893 |
|
|
* BFD_RELOC_HI22: howto manager. (line 101)
|
9894 |
|
|
* BFD_RELOC_I370_D12: howto manager. (line 634)
|
9895 |
|
|
* BFD_RELOC_I960_CALLJ: howto manager. (line 113)
|
9896 |
|
|
* BFD_RELOC_IA64_COPY: howto manager. (line 1693)
|
9897 |
|
|
* BFD_RELOC_IA64_DIR32LSB: howto manager. (line 1638)
|
9898 |
|
|
* BFD_RELOC_IA64_DIR32MSB: howto manager. (line 1637)
|
9899 |
|
|
* BFD_RELOC_IA64_DIR64LSB: howto manager. (line 1640)
|
9900 |
|
|
* BFD_RELOC_IA64_DIR64MSB: howto manager. (line 1639)
|
9901 |
|
|
* BFD_RELOC_IA64_DTPMOD64LSB: howto manager. (line 1703)
|
9902 |
|
|
* BFD_RELOC_IA64_DTPMOD64MSB: howto manager. (line 1702)
|
9903 |
|
|
* BFD_RELOC_IA64_DTPREL14: howto manager. (line 1705)
|
9904 |
|
|
* BFD_RELOC_IA64_DTPREL22: howto manager. (line 1706)
|
9905 |
|
|
* BFD_RELOC_IA64_DTPREL32LSB: howto manager. (line 1709)
|
9906 |
|
|
* BFD_RELOC_IA64_DTPREL32MSB: howto manager. (line 1708)
|
9907 |
|
|
* BFD_RELOC_IA64_DTPREL64I: howto manager. (line 1707)
|
9908 |
|
|
* BFD_RELOC_IA64_DTPREL64LSB: howto manager. (line 1711)
|
9909 |
|
|
* BFD_RELOC_IA64_DTPREL64MSB: howto manager. (line 1710)
|
9910 |
|
|
* BFD_RELOC_IA64_FPTR32LSB: howto manager. (line 1655)
|
9911 |
|
|
* BFD_RELOC_IA64_FPTR32MSB: howto manager. (line 1654)
|
9912 |
|
|
* BFD_RELOC_IA64_FPTR64I: howto manager. (line 1653)
|
9913 |
|
|
* BFD_RELOC_IA64_FPTR64LSB: howto manager. (line 1657)
|
9914 |
|
|
* BFD_RELOC_IA64_FPTR64MSB: howto manager. (line 1656)
|
9915 |
|
|
* BFD_RELOC_IA64_GPREL22: howto manager. (line 1641)
|
9916 |
|
|
* BFD_RELOC_IA64_GPREL32LSB: howto manager. (line 1644)
|
9917 |
|
|
* BFD_RELOC_IA64_GPREL32MSB: howto manager. (line 1643)
|
9918 |
|
|
* BFD_RELOC_IA64_GPREL64I: howto manager. (line 1642)
|
9919 |
|
|
* BFD_RELOC_IA64_GPREL64LSB: howto manager. (line 1646)
|
9920 |
|
|
* BFD_RELOC_IA64_GPREL64MSB: howto manager. (line 1645)
|
9921 |
|
|
* BFD_RELOC_IA64_IMM14: howto manager. (line 1634)
|
9922 |
|
|
* BFD_RELOC_IA64_IMM22: howto manager. (line 1635)
|
9923 |
|
|
* BFD_RELOC_IA64_IMM64: howto manager. (line 1636)
|
9924 |
|
|
* BFD_RELOC_IA64_IPLTLSB: howto manager. (line 1692)
|
9925 |
|
|
* BFD_RELOC_IA64_IPLTMSB: howto manager. (line 1691)
|
9926 |
|
|
* BFD_RELOC_IA64_LDXMOV: howto manager. (line 1695)
|
9927 |
|
|
* BFD_RELOC_IA64_LTOFF22: howto manager. (line 1647)
|
9928 |
|
|
* BFD_RELOC_IA64_LTOFF22X: howto manager. (line 1694)
|
9929 |
|
|
* BFD_RELOC_IA64_LTOFF64I: howto manager. (line 1648)
|
9930 |
|
|
* BFD_RELOC_IA64_LTOFF_DTPMOD22: howto manager. (line 1704)
|
9931 |
|
|
* BFD_RELOC_IA64_LTOFF_DTPREL22: howto manager. (line 1712)
|
9932 |
|
|
* BFD_RELOC_IA64_LTOFF_FPTR22: howto manager. (line 1669)
|
9933 |
|
|
* BFD_RELOC_IA64_LTOFF_FPTR32LSB: howto manager. (line 1672)
|
9934 |
|
|
* BFD_RELOC_IA64_LTOFF_FPTR32MSB: howto manager. (line 1671)
|
9935 |
|
|
* BFD_RELOC_IA64_LTOFF_FPTR64I: howto manager. (line 1670)
|
9936 |
|
|
* BFD_RELOC_IA64_LTOFF_FPTR64LSB: howto manager. (line 1674)
|
9937 |
|
|
* BFD_RELOC_IA64_LTOFF_FPTR64MSB: howto manager. (line 1673)
|
9938 |
|
|
* BFD_RELOC_IA64_LTOFF_TPREL22: howto manager. (line 1701)
|
9939 |
|
|
* BFD_RELOC_IA64_LTV32LSB: howto manager. (line 1688)
|
9940 |
|
|
* BFD_RELOC_IA64_LTV32MSB: howto manager. (line 1687)
|
9941 |
|
|
* BFD_RELOC_IA64_LTV64LSB: howto manager. (line 1690)
|
9942 |
|
|
* BFD_RELOC_IA64_LTV64MSB: howto manager. (line 1689)
|
9943 |
|
|
* BFD_RELOC_IA64_PCREL21B: howto manager. (line 1658)
|
9944 |
|
|
* BFD_RELOC_IA64_PCREL21BI: howto manager. (line 1659)
|
9945 |
|
|
* BFD_RELOC_IA64_PCREL21F: howto manager. (line 1661)
|
9946 |
|
|
* BFD_RELOC_IA64_PCREL21M: howto manager. (line 1660)
|
9947 |
|
|
* BFD_RELOC_IA64_PCREL22: howto manager. (line 1662)
|
9948 |
|
|
* BFD_RELOC_IA64_PCREL32LSB: howto manager. (line 1666)
|
9949 |
|
|
* BFD_RELOC_IA64_PCREL32MSB: howto manager. (line 1665)
|
9950 |
|
|
* BFD_RELOC_IA64_PCREL60B: howto manager. (line 1663)
|
9951 |
|
|
* BFD_RELOC_IA64_PCREL64I: howto manager. (line 1664)
|
9952 |
|
|
* BFD_RELOC_IA64_PCREL64LSB: howto manager. (line 1668)
|
9953 |
|
|
* BFD_RELOC_IA64_PCREL64MSB: howto manager. (line 1667)
|
9954 |
|
|
* BFD_RELOC_IA64_PLTOFF22: howto manager. (line 1649)
|
9955 |
|
|
* BFD_RELOC_IA64_PLTOFF64I: howto manager. (line 1650)
|
9956 |
|
|
* BFD_RELOC_IA64_PLTOFF64LSB: howto manager. (line 1652)
|
9957 |
|
|
* BFD_RELOC_IA64_PLTOFF64MSB: howto manager. (line 1651)
|
9958 |
|
|
* BFD_RELOC_IA64_REL32LSB: howto manager. (line 1684)
|
9959 |
|
|
* BFD_RELOC_IA64_REL32MSB: howto manager. (line 1683)
|
9960 |
|
|
* BFD_RELOC_IA64_REL64LSB: howto manager. (line 1686)
|
9961 |
|
|
* BFD_RELOC_IA64_REL64MSB: howto manager. (line 1685)
|
9962 |
|
|
* BFD_RELOC_IA64_SECREL32LSB: howto manager. (line 1680)
|
9963 |
|
|
* BFD_RELOC_IA64_SECREL32MSB: howto manager. (line 1679)
|
9964 |
|
|
* BFD_RELOC_IA64_SECREL64LSB: howto manager. (line 1682)
|
9965 |
|
|
* BFD_RELOC_IA64_SECREL64MSB: howto manager. (line 1681)
|
9966 |
|
|
* BFD_RELOC_IA64_SEGREL32LSB: howto manager. (line 1676)
|
9967 |
|
|
* BFD_RELOC_IA64_SEGREL32MSB: howto manager. (line 1675)
|
9968 |
|
|
* BFD_RELOC_IA64_SEGREL64LSB: howto manager. (line 1678)
|
9969 |
|
|
* BFD_RELOC_IA64_SEGREL64MSB: howto manager. (line 1677)
|
9970 |
|
|
* BFD_RELOC_IA64_TPREL14: howto manager. (line 1696)
|
9971 |
|
|
* BFD_RELOC_IA64_TPREL22: howto manager. (line 1697)
|
9972 |
|
|
* BFD_RELOC_IA64_TPREL64I: howto manager. (line 1698)
|
9973 |
|
|
* BFD_RELOC_IA64_TPREL64LSB: howto manager. (line 1700)
|
9974 |
|
|
* BFD_RELOC_IA64_TPREL64MSB: howto manager. (line 1699)
|
9975 |
|
|
* BFD_RELOC_IP2K_ADDR16CJP: howto manager. (line 1586)
|
9976 |
|
|
* BFD_RELOC_IP2K_BANK: howto manager. (line 1583)
|
9977 |
|
|
* BFD_RELOC_IP2K_EX8DATA: howto manager. (line 1594)
|
9978 |
|
|
* BFD_RELOC_IP2K_FR9: howto manager. (line 1580)
|
9979 |
|
|
* BFD_RELOC_IP2K_FR_OFFSET: howto manager. (line 1607)
|
9980 |
|
|
* BFD_RELOC_IP2K_HI8DATA: howto manager. (line 1593)
|
9981 |
|
|
* BFD_RELOC_IP2K_HI8INSN: howto manager. (line 1598)
|
9982 |
|
|
* BFD_RELOC_IP2K_LO8DATA: howto manager. (line 1592)
|
9983 |
|
|
* BFD_RELOC_IP2K_LO8INSN: howto manager. (line 1597)
|
9984 |
|
|
* BFD_RELOC_IP2K_PAGE3: howto manager. (line 1589)
|
9985 |
|
|
* BFD_RELOC_IP2K_PC_SKIP: howto manager. (line 1601)
|
9986 |
|
|
* BFD_RELOC_IP2K_TEXT: howto manager. (line 1604)
|
9987 |
|
|
* BFD_RELOC_IQ2000_OFFSET_16: howto manager. (line 1986)
|
9988 |
|
|
* BFD_RELOC_IQ2000_OFFSET_21: howto manager. (line 1987)
|
9989 |
|
|
* BFD_RELOC_IQ2000_UHI16: howto manager. (line 1988)
|
9990 |
|
|
* BFD_RELOC_LO10: howto manager. (line 102)
|
9991 |
|
|
* BFD_RELOC_LO16: howto manager. (line 314)
|
9992 |
|
|
* BFD_RELOC_LO16_BASEREL: howto manager. (line 81)
|
9993 |
|
|
* BFD_RELOC_LO16_GOTOFF: howto manager. (line 56)
|
9994 |
|
|
* BFD_RELOC_LO16_PCREL: howto manager. (line 323)
|
9995 |
|
|
* BFD_RELOC_LO16_PLTOFF: howto manager. (line 68)
|
9996 |
|
|
* BFD_RELOC_M32C_HI8: howto manager. (line 1078)
|
9997 |
|
|
* BFD_RELOC_M32C_RL_1ADDR: howto manager. (line 1080)
|
9998 |
|
|
* BFD_RELOC_M32C_RL_2ADDR: howto manager. (line 1081)
|
9999 |
|
|
* BFD_RELOC_M32C_RL_JUMP: howto manager. (line 1079)
|
10000 |
|
|
* BFD_RELOC_M32R_10_PCREL: howto manager. (line 1088)
|
10001 |
|
|
* BFD_RELOC_M32R_18_PCREL: howto manager. (line 1092)
|
10002 |
|
|
* BFD_RELOC_M32R_24: howto manager. (line 1084)
|
10003 |
|
|
* BFD_RELOC_M32R_26_PCREL: howto manager. (line 1095)
|
10004 |
|
|
* BFD_RELOC_M32R_26_PLTREL: howto manager. (line 1114)
|
10005 |
|
|
* BFD_RELOC_M32R_COPY: howto manager. (line 1115)
|
10006 |
|
|
* BFD_RELOC_M32R_GLOB_DAT: howto manager. (line 1116)
|
10007 |
|
|
* BFD_RELOC_M32R_GOT16_HI_SLO: howto manager. (line 1125)
|
10008 |
|
|
* BFD_RELOC_M32R_GOT16_HI_ULO: howto manager. (line 1124)
|
10009 |
|
|
* BFD_RELOC_M32R_GOT16_LO: howto manager. (line 1126)
|
10010 |
|
|
* BFD_RELOC_M32R_GOT24: howto manager. (line 1113)
|
10011 |
|
|
* BFD_RELOC_M32R_GOTOFF: howto manager. (line 1119)
|
10012 |
|
|
* BFD_RELOC_M32R_GOTOFF_HI_SLO: howto manager. (line 1121)
|
10013 |
|
|
* BFD_RELOC_M32R_GOTOFF_HI_ULO: howto manager. (line 1120)
|
10014 |
|
|
* BFD_RELOC_M32R_GOTOFF_LO: howto manager. (line 1122)
|
10015 |
|
|
* BFD_RELOC_M32R_GOTPC24: howto manager. (line 1123)
|
10016 |
|
|
* BFD_RELOC_M32R_GOTPC_HI_SLO: howto manager. (line 1128)
|
10017 |
|
|
* BFD_RELOC_M32R_GOTPC_HI_ULO: howto manager. (line 1127)
|
10018 |
|
|
* BFD_RELOC_M32R_GOTPC_LO: howto manager. (line 1129)
|
10019 |
|
|
* BFD_RELOC_M32R_HI16_SLO: howto manager. (line 1102)
|
10020 |
|
|
* BFD_RELOC_M32R_HI16_ULO: howto manager. (line 1098)
|
10021 |
|
|
* BFD_RELOC_M32R_JMP_SLOT: howto manager. (line 1117)
|
10022 |
|
|
* BFD_RELOC_M32R_LO16: howto manager. (line 1106)
|
10023 |
|
|
* BFD_RELOC_M32R_RELATIVE: howto manager. (line 1118)
|
10024 |
|
|
* BFD_RELOC_M32R_SDA16: howto manager. (line 1109)
|
10025 |
|
|
* BFD_RELOC_M68HC11_24: howto manager. (line 1748)
|
10026 |
|
|
* BFD_RELOC_M68HC11_3B: howto manager. (line 1723)
|
10027 |
|
|
* BFD_RELOC_M68HC11_HI8: howto manager. (line 1715)
|
10028 |
|
|
* BFD_RELOC_M68HC11_LO16: howto manager. (line 1737)
|
10029 |
|
|
* BFD_RELOC_M68HC11_LO8: howto manager. (line 1719)
|
10030 |
|
|
* BFD_RELOC_M68HC11_PAGE: howto manager. (line 1743)
|
10031 |
|
|
* BFD_RELOC_M68HC11_RL_GROUP: howto manager. (line 1732)
|
10032 |
|
|
* BFD_RELOC_M68HC11_RL_JUMP: howto manager. (line 1726)
|
10033 |
|
|
* BFD_RELOC_M68HC12_5B: howto manager. (line 1754)
|
10034 |
|
|
* BFD_RELOC_MCORE_PCREL_32: howto manager. (line 1269)
|
10035 |
|
|
* BFD_RELOC_MCORE_PCREL_IMM11BY2: howto manager. (line 1267)
|
10036 |
|
|
* BFD_RELOC_MCORE_PCREL_IMM4BY2: howto manager. (line 1268)
|
10037 |
|
|
* BFD_RELOC_MCORE_PCREL_IMM8BY4: howto manager. (line 1266)
|
10038 |
|
|
* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2: howto manager. (line 1270)
|
10039 |
|
|
* BFD_RELOC_MCORE_RVA: howto manager. (line 1271)
|
10040 |
|
|
* BFD_RELOC_MEP_16: howto manager. (line 1275)
|
10041 |
|
|
* BFD_RELOC_MEP_32: howto manager. (line 1276)
|
10042 |
|
|
* BFD_RELOC_MEP_8: howto manager. (line 1274)
|
10043 |
|
|
* BFD_RELOC_MEP_ADDR24A4: howto manager. (line 1291)
|
10044 |
|
|
* BFD_RELOC_MEP_GNU_VTENTRY: howto manager. (line 1293)
|
10045 |
|
|
* BFD_RELOC_MEP_GNU_VTINHERIT: howto manager. (line 1292)
|
10046 |
|
|
* BFD_RELOC_MEP_GPREL: howto manager. (line 1285)
|
10047 |
|
|
* BFD_RELOC_MEP_HI16S: howto manager. (line 1284)
|
10048 |
|
|
* BFD_RELOC_MEP_HI16U: howto manager. (line 1283)
|
10049 |
|
|
* BFD_RELOC_MEP_LOW16: howto manager. (line 1282)
|
10050 |
|
|
* BFD_RELOC_MEP_PCABS24A2: howto manager. (line 1281)
|
10051 |
|
|
* BFD_RELOC_MEP_PCREL12A2: howto manager. (line 1278)
|
10052 |
|
|
* BFD_RELOC_MEP_PCREL17A2: howto manager. (line 1279)
|
10053 |
|
|
* BFD_RELOC_MEP_PCREL24A2: howto manager. (line 1280)
|
10054 |
|
|
* BFD_RELOC_MEP_PCREL8A2: howto manager. (line 1277)
|
10055 |
|
|
* BFD_RELOC_MEP_TPREL: howto manager. (line 1286)
|
10056 |
|
|
* BFD_RELOC_MEP_TPREL7: howto manager. (line 1287)
|
10057 |
|
|
* BFD_RELOC_MEP_TPREL7A2: howto manager. (line 1288)
|
10058 |
|
|
* BFD_RELOC_MEP_TPREL7A4: howto manager. (line 1289)
|
10059 |
|
|
* BFD_RELOC_MEP_UIMM24: howto manager. (line 1290)
|
10060 |
|
|
* BFD_RELOC_MIPS16_GPREL: howto manager. (line 302)
|
10061 |
|
|
* BFD_RELOC_MIPS16_HI16: howto manager. (line 326)
|
10062 |
|
|
* BFD_RELOC_MIPS16_HI16_S: howto manager. (line 329)
|
10063 |
|
|
* BFD_RELOC_MIPS16_JMP: howto manager. (line 299)
|
10064 |
|
|
* BFD_RELOC_MIPS16_LO16: howto manager. (line 335)
|
10065 |
|
|
* BFD_RELOC_MIPS_CALL16: howto manager. (line 342)
|
10066 |
|
|
* BFD_RELOC_MIPS_CALL_HI16: howto manager. (line 345)
|
10067 |
|
|
* BFD_RELOC_MIPS_CALL_LO16: howto manager. (line 346)
|
10068 |
|
|
* BFD_RELOC_MIPS_COPY: howto manager. (line 377)
|
10069 |
|
|
* BFD_RELOC_MIPS_DELETE: howto manager. (line 355)
|
10070 |
|
|
* BFD_RELOC_MIPS_GOT16: howto manager. (line 341)
|
10071 |
|
|
* BFD_RELOC_MIPS_GOT_DISP: howto manager. (line 350)
|
10072 |
|
|
* BFD_RELOC_MIPS_GOT_HI16: howto manager. (line 343)
|
10073 |
|
|
* BFD_RELOC_MIPS_GOT_LO16: howto manager. (line 344)
|
10074 |
|
|
* BFD_RELOC_MIPS_GOT_OFST: howto manager. (line 349)
|
10075 |
|
|
* BFD_RELOC_MIPS_GOT_PAGE: howto manager. (line 348)
|
10076 |
|
|
* BFD_RELOC_MIPS_HIGHER: howto manager. (line 357)
|
10077 |
|
|
* BFD_RELOC_MIPS_HIGHEST: howto manager. (line 356)
|
10078 |
|
|
* BFD_RELOC_MIPS_INSERT_A: howto manager. (line 353)
|
10079 |
|
|
* BFD_RELOC_MIPS_INSERT_B: howto manager. (line 354)
|
10080 |
|
|
* BFD_RELOC_MIPS_JALR: howto manager. (line 361)
|
10081 |
|
|
* BFD_RELOC_MIPS_JMP: howto manager. (line 295)
|
10082 |
|
|
* BFD_RELOC_MIPS_JUMP_SLOT: howto manager. (line 378)
|
10083 |
|
|
* BFD_RELOC_MIPS_LITERAL: howto manager. (line 338)
|
10084 |
|
|
* BFD_RELOC_MIPS_REL16: howto manager. (line 359)
|
10085 |
|
|
* BFD_RELOC_MIPS_RELGOT: howto manager. (line 360)
|
10086 |
|
|
* BFD_RELOC_MIPS_SCN_DISP: howto manager. (line 358)
|
10087 |
|
|
* BFD_RELOC_MIPS_SHIFT5: howto manager. (line 351)
|
10088 |
|
|
* BFD_RELOC_MIPS_SHIFT6: howto manager. (line 352)
|
10089 |
|
|
* BFD_RELOC_MIPS_SUB: howto manager. (line 347)
|
10090 |
|
|
* BFD_RELOC_MIPS_TLS_DTPMOD32: howto manager. (line 362)
|
10091 |
|
|
* BFD_RELOC_MIPS_TLS_DTPMOD64: howto manager. (line 364)
|
10092 |
|
|
* BFD_RELOC_MIPS_TLS_DTPREL32: howto manager. (line 363)
|
10093 |
|
|
* BFD_RELOC_MIPS_TLS_DTPREL64: howto manager. (line 365)
|
10094 |
|
|
* BFD_RELOC_MIPS_TLS_DTPREL_HI16: howto manager. (line 368)
|
10095 |
|
|
* BFD_RELOC_MIPS_TLS_DTPREL_LO16: howto manager. (line 369)
|
10096 |
|
|
* BFD_RELOC_MIPS_TLS_GD: howto manager. (line 366)
|
10097 |
|
|
* BFD_RELOC_MIPS_TLS_GOTTPREL: howto manager. (line 370)
|
10098 |
|
|
* BFD_RELOC_MIPS_TLS_LDM: howto manager. (line 367)
|
10099 |
|
|
* BFD_RELOC_MIPS_TLS_TPREL32: howto manager. (line 371)
|
10100 |
|
|
* BFD_RELOC_MIPS_TLS_TPREL64: howto manager. (line 372)
|
10101 |
|
|
* BFD_RELOC_MIPS_TLS_TPREL_HI16: howto manager. (line 373)
|
10102 |
|
|
* BFD_RELOC_MIPS_TLS_TPREL_LO16: howto manager. (line 374)
|
10103 |
|
|
* BFD_RELOC_MMIX_ADDR19: howto manager. (line 1322)
|
10104 |
|
|
* BFD_RELOC_MMIX_ADDR27: howto manager. (line 1326)
|
10105 |
|
|
* BFD_RELOC_MMIX_BASE_PLUS_OFFSET: howto manager. (line 1338)
|
10106 |
|
|
* BFD_RELOC_MMIX_CBRANCH: howto manager. (line 1302)
|
10107 |
|
|
* BFD_RELOC_MMIX_CBRANCH_1: howto manager. (line 1304)
|
10108 |
|
|
* BFD_RELOC_MMIX_CBRANCH_2: howto manager. (line 1305)
|
10109 |
|
|
* BFD_RELOC_MMIX_CBRANCH_3: howto manager. (line 1306)
|
10110 |
|
|
* BFD_RELOC_MMIX_CBRANCH_J: howto manager. (line 1303)
|
10111 |
|
|
* BFD_RELOC_MMIX_GETA: howto manager. (line 1296)
|
10112 |
|
|
* BFD_RELOC_MMIX_GETA_1: howto manager. (line 1297)
|
10113 |
|
|
* BFD_RELOC_MMIX_GETA_2: howto manager. (line 1298)
|
10114 |
|
|
* BFD_RELOC_MMIX_GETA_3: howto manager. (line 1299)
|
10115 |
|
|
* BFD_RELOC_MMIX_JMP: howto manager. (line 1316)
|
10116 |
|
|
* BFD_RELOC_MMIX_JMP_1: howto manager. (line 1317)
|
10117 |
|
|
* BFD_RELOC_MMIX_JMP_2: howto manager. (line 1318)
|
10118 |
|
|
* BFD_RELOC_MMIX_JMP_3: howto manager. (line 1319)
|
10119 |
|
|
* BFD_RELOC_MMIX_LOCAL: howto manager. (line 1342)
|
10120 |
|
|
* BFD_RELOC_MMIX_PUSHJ: howto manager. (line 1309)
|
10121 |
|
|
* BFD_RELOC_MMIX_PUSHJ_1: howto manager. (line 1310)
|
10122 |
|
|
* BFD_RELOC_MMIX_PUSHJ_2: howto manager. (line 1311)
|
10123 |
|
|
* BFD_RELOC_MMIX_PUSHJ_3: howto manager. (line 1312)
|
10124 |
|
|
* BFD_RELOC_MMIX_PUSHJ_STUBBABLE: howto manager. (line 1313)
|
10125 |
|
|
* BFD_RELOC_MMIX_REG: howto manager. (line 1334)
|
10126 |
|
|
* BFD_RELOC_MMIX_REG_OR_BYTE: howto manager. (line 1330)
|
10127 |
|
|
* BFD_RELOC_MN10300_16_PCREL: howto manager. (line 1204)
|
10128 |
|
|
* BFD_RELOC_MN10300_32_PCREL: howto manager. (line 1200)
|
10129 |
|
|
* BFD_RELOC_MN10300_ALIGN: howto manager. (line 454)
|
10130 |
|
|
* BFD_RELOC_MN10300_COPY: howto manager. (line 437)
|
10131 |
|
|
* BFD_RELOC_MN10300_GLOB_DAT: howto manager. (line 440)
|
10132 |
|
|
* BFD_RELOC_MN10300_GOT16: howto manager. (line 433)
|
10133 |
|
|
* BFD_RELOC_MN10300_GOT24: howto manager. (line 429)
|
10134 |
|
|
* BFD_RELOC_MN10300_GOT32: howto manager. (line 425)
|
10135 |
|
|
* BFD_RELOC_MN10300_GOTOFF24: howto manager. (line 422)
|
10136 |
|
|
* BFD_RELOC_MN10300_JMP_SLOT: howto manager. (line 443)
|
10137 |
|
|
* BFD_RELOC_MN10300_RELATIVE: howto manager. (line 446)
|
10138 |
|
|
* BFD_RELOC_MN10300_SYM_DIFF: howto manager. (line 449)
|
10139 |
|
|
* BFD_RELOC_MSP430_10_PCREL: howto manager. (line 1977)
|
10140 |
|
|
* BFD_RELOC_MSP430_16: howto manager. (line 1979)
|
10141 |
|
|
* BFD_RELOC_MSP430_16_BYTE: howto manager. (line 1981)
|
10142 |
|
|
* BFD_RELOC_MSP430_16_PCREL: howto manager. (line 1978)
|
10143 |
|
|
* BFD_RELOC_MSP430_16_PCREL_BYTE: howto manager. (line 1980)
|
10144 |
|
|
* BFD_RELOC_MSP430_2X_PCREL: howto manager. (line 1982)
|
10145 |
|
|
* BFD_RELOC_MSP430_RL_PCREL: howto manager. (line 1983)
|
10146 |
|
|
* BFD_RELOC_MT_GNU_VTENTRY: howto manager. (line 1971)
|
10147 |
|
|
* BFD_RELOC_MT_GNU_VTINHERIT: howto manager. (line 1968)
|
10148 |
|
|
* BFD_RELOC_MT_HI16: howto manager. (line 1962)
|
10149 |
|
|
* BFD_RELOC_MT_LO16: howto manager. (line 1965)
|
10150 |
|
|
* BFD_RELOC_MT_PC16: howto manager. (line 1959)
|
10151 |
|
|
* BFD_RELOC_MT_PCINSN8: howto manager. (line 1974)
|
10152 |
|
|
* BFD_RELOC_NONE: howto manager. (line 116)
|
10153 |
|
|
* BFD_RELOC_NS32K_DISP_16: howto manager. (line 518)
|
10154 |
|
|
* BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. (line 521)
|
10155 |
|
|
* BFD_RELOC_NS32K_DISP_32: howto manager. (line 519)
|
10156 |
|
|
* BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. (line 522)
|
10157 |
|
|
* BFD_RELOC_NS32K_DISP_8: howto manager. (line 517)
|
10158 |
|
|
* BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. (line 520)
|
10159 |
|
|
* BFD_RELOC_NS32K_IMM_16: howto manager. (line 512)
|
10160 |
|
|
* BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. (line 515)
|
10161 |
|
|
* BFD_RELOC_NS32K_IMM_32: howto manager. (line 513)
|
10162 |
|
|
* BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. (line 516)
|
10163 |
|
|
* BFD_RELOC_NS32K_IMM_8: howto manager. (line 511)
|
10164 |
|
|
* BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. (line 514)
|
10165 |
|
|
* BFD_RELOC_OPENRISC_ABS_26: howto manager. (line 1928)
|
10166 |
|
|
* BFD_RELOC_OPENRISC_REL_26: howto manager. (line 1929)
|
10167 |
|
|
* BFD_RELOC_PDP11_DISP_6_PCREL: howto manager. (line 526)
|
10168 |
|
|
* BFD_RELOC_PDP11_DISP_8_PCREL: howto manager. (line 525)
|
10169 |
|
|
* BFD_RELOC_PJ_CODE_DIR16: howto manager. (line 531)
|
10170 |
|
|
* BFD_RELOC_PJ_CODE_DIR32: howto manager. (line 532)
|
10171 |
|
|
* BFD_RELOC_PJ_CODE_HI16: howto manager. (line 529)
|
10172 |
|
|
* BFD_RELOC_PJ_CODE_LO16: howto manager. (line 530)
|
10173 |
|
|
* BFD_RELOC_PJ_CODE_REL16: howto manager. (line 533)
|
10174 |
|
|
* BFD_RELOC_PJ_CODE_REL32: howto manager. (line 534)
|
10175 |
|
|
* BFD_RELOC_PPC64_ADDR16_DS: howto manager. (line 579)
|
10176 |
|
|
* BFD_RELOC_PPC64_ADDR16_LO_DS: howto manager. (line 580)
|
10177 |
|
|
* BFD_RELOC_PPC64_DTPREL16_DS: howto manager. (line 626)
|
10178 |
|
|
* BFD_RELOC_PPC64_DTPREL16_HIGHER: howto manager. (line 628)
|
10179 |
|
|
* BFD_RELOC_PPC64_DTPREL16_HIGHERA: howto manager. (line 629)
|
10180 |
|
|
* BFD_RELOC_PPC64_DTPREL16_HIGHEST: howto manager. (line 630)
|
10181 |
|
|
* BFD_RELOC_PPC64_DTPREL16_HIGHESTA: howto manager. (line 631)
|
10182 |
|
|
* BFD_RELOC_PPC64_DTPREL16_LO_DS: howto manager. (line 627)
|
10183 |
|
|
* BFD_RELOC_PPC64_GOT16_DS: howto manager. (line 581)
|
10184 |
|
|
* BFD_RELOC_PPC64_GOT16_LO_DS: howto manager. (line 582)
|
10185 |
|
|
* BFD_RELOC_PPC64_HIGHER: howto manager. (line 567)
|
10186 |
|
|
* BFD_RELOC_PPC64_HIGHER_S: howto manager. (line 568)
|
10187 |
|
|
* BFD_RELOC_PPC64_HIGHEST: howto manager. (line 569)
|
10188 |
|
|
* BFD_RELOC_PPC64_HIGHEST_S: howto manager. (line 570)
|
10189 |
|
|
* BFD_RELOC_PPC64_PLT16_LO_DS: howto manager. (line 583)
|
10190 |
|
|
* BFD_RELOC_PPC64_PLTGOT16: howto manager. (line 575)
|
10191 |
|
|
* BFD_RELOC_PPC64_PLTGOT16_DS: howto manager. (line 588)
|
10192 |
|
|
* BFD_RELOC_PPC64_PLTGOT16_HA: howto manager. (line 578)
|
10193 |
|
|
* BFD_RELOC_PPC64_PLTGOT16_HI: howto manager. (line 577)
|
10194 |
|
|
* BFD_RELOC_PPC64_PLTGOT16_LO: howto manager. (line 576)
|
10195 |
|
|
* BFD_RELOC_PPC64_PLTGOT16_LO_DS: howto manager. (line 589)
|
10196 |
|
|
* BFD_RELOC_PPC64_SECTOFF_DS: howto manager. (line 584)
|
10197 |
|
|
* BFD_RELOC_PPC64_SECTOFF_LO_DS: howto manager. (line 585)
|
10198 |
|
|
* BFD_RELOC_PPC64_TOC: howto manager. (line 574)
|
10199 |
|
|
* BFD_RELOC_PPC64_TOC16_DS: howto manager. (line 586)
|
10200 |
|
|
* BFD_RELOC_PPC64_TOC16_HA: howto manager. (line 573)
|
10201 |
|
|
* BFD_RELOC_PPC64_TOC16_HI: howto manager. (line 572)
|
10202 |
|
|
* BFD_RELOC_PPC64_TOC16_LO: howto manager. (line 571)
|
10203 |
|
|
* BFD_RELOC_PPC64_TOC16_LO_DS: howto manager. (line 587)
|
10204 |
|
|
* BFD_RELOC_PPC64_TPREL16_DS: howto manager. (line 620)
|
10205 |
|
|
* BFD_RELOC_PPC64_TPREL16_HIGHER: howto manager. (line 622)
|
10206 |
|
|
* BFD_RELOC_PPC64_TPREL16_HIGHERA: howto manager. (line 623)
|
10207 |
|
|
* BFD_RELOC_PPC64_TPREL16_HIGHEST: howto manager. (line 624)
|
10208 |
|
|
* BFD_RELOC_PPC64_TPREL16_HIGHESTA: howto manager. (line 625)
|
10209 |
|
|
* BFD_RELOC_PPC64_TPREL16_LO_DS: howto manager. (line 621)
|
10210 |
|
|
* BFD_RELOC_PPC_B16: howto manager. (line 540)
|
10211 |
|
|
* BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. (line 542)
|
10212 |
|
|
* BFD_RELOC_PPC_B16_BRTAKEN: howto manager. (line 541)
|
10213 |
|
|
* BFD_RELOC_PPC_B26: howto manager. (line 537)
|
10214 |
|
|
* BFD_RELOC_PPC_BA16: howto manager. (line 543)
|
10215 |
|
|
* BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. (line 545)
|
10216 |
|
|
* BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. (line 544)
|
10217 |
|
|
* BFD_RELOC_PPC_BA26: howto manager. (line 538)
|
10218 |
|
|
* BFD_RELOC_PPC_COPY: howto manager. (line 546)
|
10219 |
|
|
* BFD_RELOC_PPC_DTPMOD: howto manager. (line 593)
|
10220 |
|
|
* BFD_RELOC_PPC_DTPREL: howto manager. (line 603)
|
10221 |
|
|
* BFD_RELOC_PPC_DTPREL16: howto manager. (line 599)
|
10222 |
|
|
* BFD_RELOC_PPC_DTPREL16_HA: howto manager. (line 602)
|
10223 |
|
|
* BFD_RELOC_PPC_DTPREL16_HI: howto manager. (line 601)
|
10224 |
|
|
* BFD_RELOC_PPC_DTPREL16_LO: howto manager. (line 600)
|
10225 |
|
|
* BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. (line 565)
|
10226 |
|
|
* BFD_RELOC_PPC_EMB_MRKREF: howto manager. (line 560)
|
10227 |
|
|
* BFD_RELOC_PPC_EMB_NADDR16: howto manager. (line 552)
|
10228 |
|
|
* BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. (line 555)
|
10229 |
|
|
* BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. (line 554)
|
10230 |
|
|
* BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. (line 553)
|
10231 |
|
|
* BFD_RELOC_PPC_EMB_NADDR32: howto manager. (line 551)
|
10232 |
|
|
* BFD_RELOC_PPC_EMB_RELSDA: howto manager. (line 566)
|
10233 |
|
|
* BFD_RELOC_PPC_EMB_RELSEC16: howto manager. (line 561)
|
10234 |
|
|
* BFD_RELOC_PPC_EMB_RELST_HA: howto manager. (line 564)
|
10235 |
|
|
* BFD_RELOC_PPC_EMB_RELST_HI: howto manager. (line 563)
|
10236 |
|
|
* BFD_RELOC_PPC_EMB_RELST_LO: howto manager. (line 562)
|
10237 |
|
|
* BFD_RELOC_PPC_EMB_SDA21: howto manager. (line 559)
|
10238 |
|
|
* BFD_RELOC_PPC_EMB_SDA2I16: howto manager. (line 557)
|
10239 |
|
|
* BFD_RELOC_PPC_EMB_SDA2REL: howto manager. (line 558)
|
10240 |
|
|
* BFD_RELOC_PPC_EMB_SDAI16: howto manager. (line 556)
|
10241 |
|
|
* BFD_RELOC_PPC_GLOB_DAT: howto manager. (line 547)
|
10242 |
|
|
* BFD_RELOC_PPC_GOT_DTPREL16: howto manager. (line 616)
|
10243 |
|
|
* BFD_RELOC_PPC_GOT_DTPREL16_HA: howto manager. (line 619)
|
10244 |
|
|
* BFD_RELOC_PPC_GOT_DTPREL16_HI: howto manager. (line 618)
|
10245 |
|
|
* BFD_RELOC_PPC_GOT_DTPREL16_LO: howto manager. (line 617)
|
10246 |
|
|
* BFD_RELOC_PPC_GOT_TLSGD16: howto manager. (line 604)
|
10247 |
|
|
* BFD_RELOC_PPC_GOT_TLSGD16_HA: howto manager. (line 607)
|
10248 |
|
|
* BFD_RELOC_PPC_GOT_TLSGD16_HI: howto manager. (line 606)
|
10249 |
|
|
* BFD_RELOC_PPC_GOT_TLSGD16_LO: howto manager. (line 605)
|
10250 |
|
|
* BFD_RELOC_PPC_GOT_TLSLD16: howto manager. (line 608)
|
10251 |
|
|
* BFD_RELOC_PPC_GOT_TLSLD16_HA: howto manager. (line 611)
|
10252 |
|
|
* BFD_RELOC_PPC_GOT_TLSLD16_HI: howto manager. (line 610)
|
10253 |
|
|
* BFD_RELOC_PPC_GOT_TLSLD16_LO: howto manager. (line 609)
|
10254 |
|
|
* BFD_RELOC_PPC_GOT_TPREL16: howto manager. (line 612)
|
10255 |
|
|
* BFD_RELOC_PPC_GOT_TPREL16_HA: howto manager. (line 615)
|
10256 |
|
|
* BFD_RELOC_PPC_GOT_TPREL16_HI: howto manager. (line 614)
|
10257 |
|
|
* BFD_RELOC_PPC_GOT_TPREL16_LO: howto manager. (line 613)
|
10258 |
|
|
* BFD_RELOC_PPC_JMP_SLOT: howto manager. (line 548)
|
10259 |
|
|
* BFD_RELOC_PPC_LOCAL24PC: howto manager. (line 550)
|
10260 |
|
|
* BFD_RELOC_PPC_RELATIVE: howto manager. (line 549)
|
10261 |
|
|
* BFD_RELOC_PPC_TLS: howto manager. (line 592)
|
10262 |
|
|
* BFD_RELOC_PPC_TOC16: howto manager. (line 539)
|
10263 |
|
|
* BFD_RELOC_PPC_TPREL: howto manager. (line 598)
|
10264 |
|
|
* BFD_RELOC_PPC_TPREL16: howto manager. (line 594)
|
10265 |
|
|
* BFD_RELOC_PPC_TPREL16_HA: howto manager. (line 597)
|
10266 |
|
|
* BFD_RELOC_PPC_TPREL16_HI: howto manager. (line 596)
|
10267 |
|
|
* BFD_RELOC_PPC_TPREL16_LO: howto manager. (line 595)
|
10268 |
|
|
* BFD_RELOC_RELC: howto manager. (line 1945)
|
10269 |
|
|
* BFD_RELOC_RVA: howto manager. (line 85)
|
10270 |
|
|
* BFD_RELOC_SCORE16_BRANCH: howto manager. (line 1571)
|
10271 |
|
|
* BFD_RELOC_SCORE16_JMP: howto manager. (line 1568)
|
10272 |
|
|
* BFD_RELOC_SCORE_BRANCH: howto manager. (line 1565)
|
10273 |
|
|
* BFD_RELOC_SCORE_CALL15: howto manager. (line 1576)
|
10274 |
|
|
* BFD_RELOC_SCORE_DUMMY1: howto manager. (line 1555)
|
10275 |
|
|
* BFD_RELOC_SCORE_DUMMY2: howto manager. (line 1561)
|
10276 |
|
|
* BFD_RELOC_SCORE_DUMMY_HI16: howto manager. (line 1577)
|
10277 |
|
|
* BFD_RELOC_SCORE_GOT15: howto manager. (line 1574)
|
10278 |
|
|
* BFD_RELOC_SCORE_GOT_LO16: howto manager. (line 1575)
|
10279 |
|
|
* BFD_RELOC_SCORE_GPREL15: howto manager. (line 1558)
|
10280 |
|
|
* BFD_RELOC_SCORE_JMP: howto manager. (line 1562)
|
10281 |
|
|
* BFD_RELOC_SH_ALIGN: howto manager. (line 814)
|
10282 |
|
|
* BFD_RELOC_SH_CODE: howto manager. (line 815)
|
10283 |
|
|
* BFD_RELOC_SH_COPY: howto manager. (line 820)
|
10284 |
|
|
* BFD_RELOC_SH_COPY64: howto manager. (line 845)
|
10285 |
|
|
* BFD_RELOC_SH_COUNT: howto manager. (line 813)
|
10286 |
|
|
* BFD_RELOC_SH_DATA: howto manager. (line 816)
|
10287 |
|
|
* BFD_RELOC_SH_DISP12: howto manager. (line 796)
|
10288 |
|
|
* BFD_RELOC_SH_DISP12BY2: howto manager. (line 797)
|
10289 |
|
|
* BFD_RELOC_SH_DISP12BY4: howto manager. (line 798)
|
10290 |
|
|
* BFD_RELOC_SH_DISP12BY8: howto manager. (line 799)
|
10291 |
|
|
* BFD_RELOC_SH_DISP20: howto manager. (line 800)
|
10292 |
|
|
* BFD_RELOC_SH_DISP20BY8: howto manager. (line 801)
|
10293 |
|
|
* BFD_RELOC_SH_GLOB_DAT: howto manager. (line 821)
|
10294 |
|
|
* BFD_RELOC_SH_GLOB_DAT64: howto manager. (line 846)
|
10295 |
|
|
* BFD_RELOC_SH_GOT10BY4: howto manager. (line 849)
|
10296 |
|
|
* BFD_RELOC_SH_GOT10BY8: howto manager. (line 850)
|
10297 |
|
|
* BFD_RELOC_SH_GOT_HI16: howto manager. (line 828)
|
10298 |
|
|
* BFD_RELOC_SH_GOT_LOW16: howto manager. (line 825)
|
10299 |
|
|
* BFD_RELOC_SH_GOT_MEDHI16: howto manager. (line 827)
|
10300 |
|
|
* BFD_RELOC_SH_GOT_MEDLOW16: howto manager. (line 826)
|
10301 |
|
|
* BFD_RELOC_SH_GOTOFF_HI16: howto manager. (line 840)
|
10302 |
|
|
* BFD_RELOC_SH_GOTOFF_LOW16: howto manager. (line 837)
|
10303 |
|
|
* BFD_RELOC_SH_GOTOFF_MEDHI16: howto manager. (line 839)
|
10304 |
|
|
* BFD_RELOC_SH_GOTOFF_MEDLOW16: howto manager. (line 838)
|
10305 |
|
|
* BFD_RELOC_SH_GOTPC: howto manager. (line 824)
|
10306 |
|
|
* BFD_RELOC_SH_GOTPC_HI16: howto manager. (line 844)
|
10307 |
|
|
* BFD_RELOC_SH_GOTPC_LOW16: howto manager. (line 841)
|
10308 |
|
|
* BFD_RELOC_SH_GOTPC_MEDHI16: howto manager. (line 843)
|
10309 |
|
|
* BFD_RELOC_SH_GOTPC_MEDLOW16: howto manager. (line 842)
|
10310 |
|
|
* BFD_RELOC_SH_GOTPLT10BY4: howto manager. (line 851)
|
10311 |
|
|
* BFD_RELOC_SH_GOTPLT10BY8: howto manager. (line 852)
|
10312 |
|
|
* BFD_RELOC_SH_GOTPLT32: howto manager. (line 853)
|
10313 |
|
|
* BFD_RELOC_SH_GOTPLT_HI16: howto manager. (line 832)
|
10314 |
|
|
* BFD_RELOC_SH_GOTPLT_LOW16: howto manager. (line 829)
|
10315 |
|
|
* BFD_RELOC_SH_GOTPLT_MEDHI16: howto manager. (line 831)
|
10316 |
|
|
* BFD_RELOC_SH_GOTPLT_MEDLOW16: howto manager. (line 830)
|
10317 |
|
|
* BFD_RELOC_SH_IMM3: howto manager. (line 794)
|
10318 |
|
|
* BFD_RELOC_SH_IMM3U: howto manager. (line 795)
|
10319 |
|
|
* BFD_RELOC_SH_IMM4: howto manager. (line 802)
|
10320 |
|
|
* BFD_RELOC_SH_IMM4BY2: howto manager. (line 803)
|
10321 |
|
|
* BFD_RELOC_SH_IMM4BY4: howto manager. (line 804)
|
10322 |
|
|
* BFD_RELOC_SH_IMM8: howto manager. (line 805)
|
10323 |
|
|
* BFD_RELOC_SH_IMM8BY2: howto manager. (line 806)
|
10324 |
|
|
* BFD_RELOC_SH_IMM8BY4: howto manager. (line 807)
|
10325 |
|
|
* BFD_RELOC_SH_IMM_HI16: howto manager. (line 871)
|
10326 |
|
|
* BFD_RELOC_SH_IMM_HI16_PCREL: howto manager. (line 872)
|
10327 |
|
|
* BFD_RELOC_SH_IMM_LOW16: howto manager. (line 865)
|
10328 |
|
|
* BFD_RELOC_SH_IMM_LOW16_PCREL: howto manager. (line 866)
|
10329 |
|
|
* BFD_RELOC_SH_IMM_MEDHI16: howto manager. (line 869)
|
10330 |
|
|
* BFD_RELOC_SH_IMM_MEDHI16_PCREL: howto manager. (line 870)
|
10331 |
|
|
* BFD_RELOC_SH_IMM_MEDLOW16: howto manager. (line 867)
|
10332 |
|
|
* BFD_RELOC_SH_IMM_MEDLOW16_PCREL: howto manager. (line 868)
|
10333 |
|
|
* BFD_RELOC_SH_IMMS10: howto manager. (line 859)
|
10334 |
|
|
* BFD_RELOC_SH_IMMS10BY2: howto manager. (line 860)
|
10335 |
|
|
* BFD_RELOC_SH_IMMS10BY4: howto manager. (line 861)
|
10336 |
|
|
* BFD_RELOC_SH_IMMS10BY8: howto manager. (line 862)
|
10337 |
|
|
* BFD_RELOC_SH_IMMS16: howto manager. (line 863)
|
10338 |
|
|
* BFD_RELOC_SH_IMMS6: howto manager. (line 856)
|
10339 |
|
|
* BFD_RELOC_SH_IMMS6BY32: howto manager. (line 857)
|
10340 |
|
|
* BFD_RELOC_SH_IMMU16: howto manager. (line 864)
|
10341 |
|
|
* BFD_RELOC_SH_IMMU5: howto manager. (line 855)
|
10342 |
|
|
* BFD_RELOC_SH_IMMU6: howto manager. (line 858)
|
10343 |
|
|
* BFD_RELOC_SH_JMP_SLOT: howto manager. (line 822)
|
10344 |
|
|
* BFD_RELOC_SH_JMP_SLOT64: howto manager. (line 847)
|
10345 |
|
|
* BFD_RELOC_SH_LABEL: howto manager. (line 817)
|
10346 |
|
|
* BFD_RELOC_SH_LOOP_END: howto manager. (line 819)
|
10347 |
|
|
* BFD_RELOC_SH_LOOP_START: howto manager. (line 818)
|
10348 |
|
|
* BFD_RELOC_SH_PCDISP12BY2: howto manager. (line 793)
|
10349 |
|
|
* BFD_RELOC_SH_PCDISP8BY2: howto manager. (line 792)
|
10350 |
|
|
* BFD_RELOC_SH_PCRELIMM8BY2: howto manager. (line 808)
|
10351 |
|
|
* BFD_RELOC_SH_PCRELIMM8BY4: howto manager. (line 809)
|
10352 |
|
|
* BFD_RELOC_SH_PLT_HI16: howto manager. (line 836)
|
10353 |
|
|
* BFD_RELOC_SH_PLT_LOW16: howto manager. (line 833)
|
10354 |
|
|
* BFD_RELOC_SH_PLT_MEDHI16: howto manager. (line 835)
|
10355 |
|
|
* BFD_RELOC_SH_PLT_MEDLOW16: howto manager. (line 834)
|
10356 |
|
|
* BFD_RELOC_SH_PT_16: howto manager. (line 873)
|
10357 |
|
|
* BFD_RELOC_SH_RELATIVE: howto manager. (line 823)
|
10358 |
|
|
* BFD_RELOC_SH_RELATIVE64: howto manager. (line 848)
|
10359 |
|
|
* BFD_RELOC_SH_SHMEDIA_CODE: howto manager. (line 854)
|
10360 |
|
|
* BFD_RELOC_SH_SWITCH16: howto manager. (line 810)
|
10361 |
|
|
* BFD_RELOC_SH_SWITCH32: howto manager. (line 811)
|
10362 |
|
|
* BFD_RELOC_SH_TLS_DTPMOD32: howto manager. (line 879)
|
10363 |
|
|
* BFD_RELOC_SH_TLS_DTPOFF32: howto manager. (line 880)
|
10364 |
|
|
* BFD_RELOC_SH_TLS_GD_32: howto manager. (line 874)
|
10365 |
|
|
* BFD_RELOC_SH_TLS_IE_32: howto manager. (line 877)
|
10366 |
|
|
* BFD_RELOC_SH_TLS_LD_32: howto manager. (line 875)
|
10367 |
|
|
* BFD_RELOC_SH_TLS_LDO_32: howto manager. (line 876)
|
10368 |
|
|
* BFD_RELOC_SH_TLS_LE_32: howto manager. (line 878)
|
10369 |
|
|
* BFD_RELOC_SH_TLS_TPOFF32: howto manager. (line 881)
|
10370 |
|
|
* BFD_RELOC_SH_USES: howto manager. (line 812)
|
10371 |
|
|
* BFD_RELOC_SPARC13: howto manager. (line 119)
|
10372 |
|
|
* BFD_RELOC_SPARC22: howto manager. (line 118)
|
10373 |
|
|
* BFD_RELOC_SPARC_10: howto manager. (line 141)
|
10374 |
|
|
* BFD_RELOC_SPARC_11: howto manager. (line 142)
|
10375 |
|
|
* BFD_RELOC_SPARC_5: howto manager. (line 154)
|
10376 |
|
|
* BFD_RELOC_SPARC_6: howto manager. (line 153)
|
10377 |
|
|
* BFD_RELOC_SPARC_64: howto manager. (line 140)
|
10378 |
|
|
* BFD_RELOC_SPARC_7: howto manager. (line 152)
|
10379 |
|
|
* BFD_RELOC_SPARC_BASE13: howto manager. (line 136)
|
10380 |
|
|
* BFD_RELOC_SPARC_BASE22: howto manager. (line 137)
|
10381 |
|
|
* BFD_RELOC_SPARC_COPY: howto manager. (line 126)
|
10382 |
|
|
* BFD_RELOC_SPARC_DISP64: howto manager. (line 155)
|
10383 |
|
|
* BFD_RELOC_SPARC_GLOB_DAT: howto manager. (line 127)
|
10384 |
|
|
* BFD_RELOC_SPARC_GOT10: howto manager. (line 120)
|
10385 |
|
|
* BFD_RELOC_SPARC_GOT13: howto manager. (line 121)
|
10386 |
|
|
* BFD_RELOC_SPARC_GOT22: howto manager. (line 122)
|
10387 |
|
|
* BFD_RELOC_SPARC_H44: howto manager. (line 160)
|
10388 |
|
|
* BFD_RELOC_SPARC_HH22: howto manager. (line 144)
|
10389 |
|
|
* BFD_RELOC_SPARC_HIX22: howto manager. (line 158)
|
10390 |
|
|
* BFD_RELOC_SPARC_HM10: howto manager. (line 145)
|
10391 |
|
|
* BFD_RELOC_SPARC_JMP_SLOT: howto manager. (line 128)
|
10392 |
|
|
* BFD_RELOC_SPARC_L44: howto manager. (line 162)
|
10393 |
|
|
* BFD_RELOC_SPARC_LM22: howto manager. (line 146)
|
10394 |
|
|
* BFD_RELOC_SPARC_LOX10: howto manager. (line 159)
|
10395 |
|
|
* BFD_RELOC_SPARC_M44: howto manager. (line 161)
|
10396 |
|
|
* BFD_RELOC_SPARC_OLO10: howto manager. (line 143)
|
10397 |
|
|
* BFD_RELOC_SPARC_PC10: howto manager. (line 123)
|
10398 |
|
|
* BFD_RELOC_SPARC_PC22: howto manager. (line 124)
|
10399 |
|
|
* BFD_RELOC_SPARC_PC_HH22: howto manager. (line 147)
|
10400 |
|
|
* BFD_RELOC_SPARC_PC_HM10: howto manager. (line 148)
|
10401 |
|
|
* BFD_RELOC_SPARC_PC_LM22: howto manager. (line 149)
|
10402 |
|
|
* BFD_RELOC_SPARC_PLT32: howto manager. (line 156)
|
10403 |
|
|
* BFD_RELOC_SPARC_PLT64: howto manager. (line 157)
|
10404 |
|
|
* BFD_RELOC_SPARC_REGISTER: howto manager. (line 163)
|
10405 |
|
|
* BFD_RELOC_SPARC_RELATIVE: howto manager. (line 129)
|
10406 |
|
|
* BFD_RELOC_SPARC_REV32: howto manager. (line 166)
|
10407 |
|
|
* BFD_RELOC_SPARC_TLS_DTPMOD32: howto manager. (line 187)
|
10408 |
|
|
* BFD_RELOC_SPARC_TLS_DTPMOD64: howto manager. (line 188)
|
10409 |
|
|
* BFD_RELOC_SPARC_TLS_DTPOFF32: howto manager. (line 189)
|
10410 |
|
|
* BFD_RELOC_SPARC_TLS_DTPOFF64: howto manager. (line 190)
|
10411 |
|
|
* BFD_RELOC_SPARC_TLS_GD_ADD: howto manager. (line 171)
|
10412 |
|
|
* BFD_RELOC_SPARC_TLS_GD_CALL: howto manager. (line 172)
|
10413 |
|
|
* BFD_RELOC_SPARC_TLS_GD_HI22: howto manager. (line 169)
|
10414 |
|
|
* BFD_RELOC_SPARC_TLS_GD_LO10: howto manager. (line 170)
|
10415 |
|
|
* BFD_RELOC_SPARC_TLS_IE_ADD: howto manager. (line 184)
|
10416 |
|
|
* BFD_RELOC_SPARC_TLS_IE_HI22: howto manager. (line 180)
|
10417 |
|
|
* BFD_RELOC_SPARC_TLS_IE_LD: howto manager. (line 182)
|
10418 |
|
|
* BFD_RELOC_SPARC_TLS_IE_LDX: howto manager. (line 183)
|
10419 |
|
|
* BFD_RELOC_SPARC_TLS_IE_LO10: howto manager. (line 181)
|
10420 |
|
|
* BFD_RELOC_SPARC_TLS_LDM_ADD: howto manager. (line 175)
|
10421 |
|
|
* BFD_RELOC_SPARC_TLS_LDM_CALL: howto manager. (line 176)
|
10422 |
|
|
* BFD_RELOC_SPARC_TLS_LDM_HI22: howto manager. (line 173)
|
10423 |
|
|
* BFD_RELOC_SPARC_TLS_LDM_LO10: howto manager. (line 174)
|
10424 |
|
|
* BFD_RELOC_SPARC_TLS_LDO_ADD: howto manager. (line 179)
|
10425 |
|
|
* BFD_RELOC_SPARC_TLS_LDO_HIX22: howto manager. (line 177)
|
10426 |
|
|
* BFD_RELOC_SPARC_TLS_LDO_LOX10: howto manager. (line 178)
|
10427 |
|
|
* BFD_RELOC_SPARC_TLS_LE_HIX22: howto manager. (line 185)
|
10428 |
|
|
* BFD_RELOC_SPARC_TLS_LE_LOX10: howto manager. (line 186)
|
10429 |
|
|
* BFD_RELOC_SPARC_TLS_TPOFF32: howto manager. (line 191)
|
10430 |
|
|
* BFD_RELOC_SPARC_TLS_TPOFF64: howto manager. (line 192)
|
10431 |
|
|
* BFD_RELOC_SPARC_UA16: howto manager. (line 130)
|
10432 |
|
|
* BFD_RELOC_SPARC_UA32: howto manager. (line 131)
|
10433 |
|
|
* BFD_RELOC_SPARC_UA64: howto manager. (line 132)
|
10434 |
|
|
* BFD_RELOC_SPARC_WDISP16: howto manager. (line 150)
|
10435 |
|
|
* BFD_RELOC_SPARC_WDISP19: howto manager. (line 151)
|
10436 |
|
|
* BFD_RELOC_SPARC_WDISP22: howto manager. (line 117)
|
10437 |
|
|
* BFD_RELOC_SPARC_WPLT30: howto manager. (line 125)
|
10438 |
|
|
* BFD_RELOC_SPU_HI16: howto manager. (line 206)
|
10439 |
|
|
* BFD_RELOC_SPU_IMM10: howto manager. (line 197)
|
10440 |
|
|
* BFD_RELOC_SPU_IMM10W: howto manager. (line 198)
|
10441 |
|
|
* BFD_RELOC_SPU_IMM16: howto manager. (line 199)
|
10442 |
|
|
* BFD_RELOC_SPU_IMM16W: howto manager. (line 200)
|
10443 |
|
|
* BFD_RELOC_SPU_IMM18: howto manager. (line 201)
|
10444 |
|
|
* BFD_RELOC_SPU_IMM7: howto manager. (line 195)
|
10445 |
|
|
* BFD_RELOC_SPU_IMM8: howto manager. (line 196)
|
10446 |
|
|
* BFD_RELOC_SPU_LO16: howto manager. (line 205)
|
10447 |
|
|
* BFD_RELOC_SPU_PCREL16: howto manager. (line 204)
|
10448 |
|
|
* BFD_RELOC_SPU_PCREL9a: howto manager. (line 202)
|
10449 |
|
|
* BFD_RELOC_SPU_PCREL9b: howto manager. (line 203)
|
10450 |
|
|
* BFD_RELOC_SPU_PPU32: howto manager. (line 207)
|
10451 |
|
|
* BFD_RELOC_SPU_PPU64: howto manager. (line 208)
|
10452 |
|
|
* BFD_RELOC_THUMB_PCREL_BLX: howto manager. (line 652)
|
10453 |
|
|
* BFD_RELOC_THUMB_PCREL_BRANCH12: howto manager. (line 666)
|
10454 |
|
|
* BFD_RELOC_THUMB_PCREL_BRANCH20: howto manager. (line 667)
|
10455 |
|
|
* BFD_RELOC_THUMB_PCREL_BRANCH23: howto manager. (line 668)
|
10456 |
|
|
* BFD_RELOC_THUMB_PCREL_BRANCH25: howto manager. (line 669)
|
10457 |
|
|
* BFD_RELOC_THUMB_PCREL_BRANCH7: howto manager. (line 664)
|
10458 |
|
|
* BFD_RELOC_THUMB_PCREL_BRANCH9: howto manager. (line 665)
|
10459 |
|
|
* BFD_RELOC_TIC30_LDP: howto manager. (line 1208)
|
10460 |
|
|
* BFD_RELOC_TIC54X_16_OF_23: howto manager. (line 1226)
|
10461 |
|
|
* BFD_RELOC_TIC54X_23: howto manager. (line 1223)
|
10462 |
|
|
* BFD_RELOC_TIC54X_MS7_OF_23: howto manager. (line 1231)
|
10463 |
|
|
* BFD_RELOC_TIC54X_PARTLS7: howto manager. (line 1213)
|
10464 |
|
|
* BFD_RELOC_TIC54X_PARTMS9: howto manager. (line 1218)
|
10465 |
|
|
* bfd_reloc_type_lookup: howto manager. (line 2083)
|
10466 |
|
|
* BFD_RELOC_V850_22_PCREL: howto manager. (line 1135)
|
10467 |
|
|
* BFD_RELOC_V850_9_PCREL: howto manager. (line 1132)
|
10468 |
|
|
* BFD_RELOC_V850_ALIGN: howto manager. (line 1193)
|
10469 |
|
|
* BFD_RELOC_V850_CALLT_16_16_OFFSET: howto manager. (line 1184)
|
10470 |
|
|
* BFD_RELOC_V850_CALLT_6_7_OFFSET: howto manager. (line 1181)
|
10471 |
|
|
* BFD_RELOC_V850_LO16_SPLIT_OFFSET: howto manager. (line 1196)
|
10472 |
|
|
* BFD_RELOC_V850_LONGCALL: howto manager. (line 1187)
|
10473 |
|
|
* BFD_RELOC_V850_LONGJUMP: howto manager. (line 1190)
|
10474 |
|
|
* BFD_RELOC_V850_SDA_15_16_OFFSET: howto manager. (line 1141)
|
10475 |
|
|
* BFD_RELOC_V850_SDA_16_16_OFFSET: howto manager. (line 1138)
|
10476 |
|
|
* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager. (line 1173)
|
10477 |
|
|
* BFD_RELOC_V850_TDA_16_16_OFFSET: howto manager. (line 1163)
|
10478 |
|
|
* BFD_RELOC_V850_TDA_4_4_OFFSET: howto manager. (line 1170)
|
10479 |
|
|
* BFD_RELOC_V850_TDA_4_5_OFFSET: howto manager. (line 1166)
|
10480 |
|
|
* BFD_RELOC_V850_TDA_6_8_OFFSET: howto manager. (line 1152)
|
10481 |
|
|
* BFD_RELOC_V850_TDA_7_7_OFFSET: howto manager. (line 1160)
|
10482 |
|
|
* BFD_RELOC_V850_TDA_7_8_OFFSET: howto manager. (line 1156)
|
10483 |
|
|
* BFD_RELOC_V850_ZDA_15_16_OFFSET: howto manager. (line 1148)
|
10484 |
|
|
* BFD_RELOC_V850_ZDA_16_16_OFFSET: howto manager. (line 1145)
|
10485 |
|
|
* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager. (line 1177)
|
10486 |
|
|
* BFD_RELOC_VAX_GLOB_DAT: howto manager. (line 1954)
|
10487 |
|
|
* BFD_RELOC_VAX_JMP_SLOT: howto manager. (line 1955)
|
10488 |
|
|
* BFD_RELOC_VAX_RELATIVE: howto manager. (line 1956)
|
10489 |
|
|
* BFD_RELOC_VPE4KMATH_DATA: howto manager. (line 1610)
|
10490 |
|
|
* BFD_RELOC_VPE4KMATH_INSN: howto manager. (line 1611)
|
10491 |
|
|
* BFD_RELOC_VTABLE_ENTRY: howto manager. (line 1615)
|
10492 |
|
|
* BFD_RELOC_VTABLE_INHERIT: howto manager. (line 1614)
|
10493 |
|
|
* BFD_RELOC_X86_64_32S: howto manager. (line 490)
|
10494 |
|
|
* BFD_RELOC_X86_64_COPY: howto manager. (line 485)
|
10495 |
|
|
* BFD_RELOC_X86_64_DTPMOD64: howto manager. (line 491)
|
10496 |
|
|
* BFD_RELOC_X86_64_DTPOFF32: howto manager. (line 496)
|
10497 |
|
|
* BFD_RELOC_X86_64_DTPOFF64: howto manager. (line 492)
|
10498 |
|
|
* BFD_RELOC_X86_64_GLOB_DAT: howto manager. (line 486)
|
10499 |
|
|
* BFD_RELOC_X86_64_GOT32: howto manager. (line 483)
|
10500 |
|
|
* BFD_RELOC_X86_64_GOT64: howto manager. (line 501)
|
10501 |
|
|
* BFD_RELOC_X86_64_GOTOFF64: howto manager. (line 499)
|
10502 |
|
|
* BFD_RELOC_X86_64_GOTPC32: howto manager. (line 500)
|
10503 |
|
|
* BFD_RELOC_X86_64_GOTPC32_TLSDESC: howto manager. (line 506)
|
10504 |
|
|
* BFD_RELOC_X86_64_GOTPC64: howto manager. (line 503)
|
10505 |
|
|
* BFD_RELOC_X86_64_GOTPCREL: howto manager. (line 489)
|
10506 |
|
|
* BFD_RELOC_X86_64_GOTPCREL64: howto manager. (line 502)
|
10507 |
|
|
* BFD_RELOC_X86_64_GOTPLT64: howto manager. (line 504)
|
10508 |
|
|
* BFD_RELOC_X86_64_GOTTPOFF: howto manager. (line 497)
|
10509 |
|
|
* BFD_RELOC_X86_64_JUMP_SLOT: howto manager. (line 487)
|
10510 |
|
|
* BFD_RELOC_X86_64_PLT32: howto manager. (line 484)
|
10511 |
|
|
* BFD_RELOC_X86_64_PLTOFF64: howto manager. (line 505)
|
10512 |
|
|
* BFD_RELOC_X86_64_RELATIVE: howto manager. (line 488)
|
10513 |
|
|
* BFD_RELOC_X86_64_TLSDESC: howto manager. (line 508)
|
10514 |
|
|
* BFD_RELOC_X86_64_TLSDESC_CALL: howto manager. (line 507)
|
10515 |
|
|
* BFD_RELOC_X86_64_TLSGD: howto manager. (line 494)
|
10516 |
|
|
* BFD_RELOC_X86_64_TLSLD: howto manager. (line 495)
|
10517 |
|
|
* BFD_RELOC_X86_64_TPOFF32: howto manager. (line 498)
|
10518 |
|
|
* BFD_RELOC_X86_64_TPOFF64: howto manager. (line 493)
|
10519 |
|
|
* BFD_RELOC_XC16X_PAG: howto manager. (line 1948)
|
10520 |
|
|
* BFD_RELOC_XC16X_POF: howto manager. (line 1949)
|
10521 |
|
|
* BFD_RELOC_XC16X_SEG: howto manager. (line 1950)
|
10522 |
|
|
* BFD_RELOC_XC16X_SOF: howto manager. (line 1951)
|
10523 |
|
|
* BFD_RELOC_XSTORMY16_12: howto manager. (line 1940)
|
10524 |
|
|
* BFD_RELOC_XSTORMY16_24: howto manager. (line 1941)
|
10525 |
|
|
* BFD_RELOC_XSTORMY16_FPTR16: howto manager. (line 1942)
|
10526 |
|
|
* BFD_RELOC_XSTORMY16_REL_12: howto manager. (line 1939)
|
10527 |
|
|
* BFD_RELOC_XTENSA_ASM_EXPAND: howto manager. (line 2060)
|
10528 |
|
|
* BFD_RELOC_XTENSA_ASM_SIMPLIFY: howto manager. (line 2065)
|
10529 |
|
|
* BFD_RELOC_XTENSA_DIFF16: howto manager. (line 2007)
|
10530 |
|
|
* BFD_RELOC_XTENSA_DIFF32: howto manager. (line 2008)
|
10531 |
|
|
* BFD_RELOC_XTENSA_DIFF8: howto manager. (line 2006)
|
10532 |
|
|
* BFD_RELOC_XTENSA_GLOB_DAT: howto manager. (line 1996)
|
10533 |
|
|
* BFD_RELOC_XTENSA_JMP_SLOT: howto manager. (line 1997)
|
10534 |
|
|
* BFD_RELOC_XTENSA_OP0: howto manager. (line 2054)
|
10535 |
|
|
* BFD_RELOC_XTENSA_OP1: howto manager. (line 2055)
|
10536 |
|
|
* BFD_RELOC_XTENSA_OP2: howto manager. (line 2056)
|
10537 |
|
|
* BFD_RELOC_XTENSA_PLT: howto manager. (line 2001)
|
10538 |
|
|
* BFD_RELOC_XTENSA_RELATIVE: howto manager. (line 1998)
|
10539 |
|
|
* BFD_RELOC_XTENSA_RTLD: howto manager. (line 1991)
|
10540 |
|
|
* BFD_RELOC_XTENSA_SLOT0_ALT: howto manager. (line 2036)
|
10541 |
|
|
* BFD_RELOC_XTENSA_SLOT0_OP: howto manager. (line 2016)
|
10542 |
|
|
* BFD_RELOC_XTENSA_SLOT10_ALT: howto manager. (line 2046)
|
10543 |
|
|
* BFD_RELOC_XTENSA_SLOT10_OP: howto manager. (line 2026)
|
10544 |
|
|
* BFD_RELOC_XTENSA_SLOT11_ALT: howto manager. (line 2047)
|
10545 |
|
|
* BFD_RELOC_XTENSA_SLOT11_OP: howto manager. (line 2027)
|
10546 |
|
|
* BFD_RELOC_XTENSA_SLOT12_ALT: howto manager. (line 2048)
|
10547 |
|
|
* BFD_RELOC_XTENSA_SLOT12_OP: howto manager. (line 2028)
|
10548 |
|
|
* BFD_RELOC_XTENSA_SLOT13_ALT: howto manager. (line 2049)
|
10549 |
|
|
* BFD_RELOC_XTENSA_SLOT13_OP: howto manager. (line 2029)
|
10550 |
|
|
* BFD_RELOC_XTENSA_SLOT14_ALT: howto manager. (line 2050)
|
10551 |
|
|
* BFD_RELOC_XTENSA_SLOT14_OP: howto manager. (line 2030)
|
10552 |
|
|
* BFD_RELOC_XTENSA_SLOT1_ALT: howto manager. (line 2037)
|
10553 |
|
|
* BFD_RELOC_XTENSA_SLOT1_OP: howto manager. (line 2017)
|
10554 |
|
|
* BFD_RELOC_XTENSA_SLOT2_ALT: howto manager. (line 2038)
|
10555 |
|
|
* BFD_RELOC_XTENSA_SLOT2_OP: howto manager. (line 2018)
|
10556 |
|
|
* BFD_RELOC_XTENSA_SLOT3_ALT: howto manager. (line 2039)
|
10557 |
|
|
* BFD_RELOC_XTENSA_SLOT3_OP: howto manager. (line 2019)
|
10558 |
|
|
* BFD_RELOC_XTENSA_SLOT4_ALT: howto manager. (line 2040)
|
10559 |
|
|
* BFD_RELOC_XTENSA_SLOT4_OP: howto manager. (line 2020)
|
10560 |
|
|
* BFD_RELOC_XTENSA_SLOT5_ALT: howto manager. (line 2041)
|
10561 |
|
|
* BFD_RELOC_XTENSA_SLOT5_OP: howto manager. (line 2021)
|
10562 |
|
|
* BFD_RELOC_XTENSA_SLOT6_ALT: howto manager. (line 2042)
|
10563 |
|
|
* BFD_RELOC_XTENSA_SLOT6_OP: howto manager. (line 2022)
|
10564 |
|
|
* BFD_RELOC_XTENSA_SLOT7_ALT: howto manager. (line 2043)
|
10565 |
|
|
* BFD_RELOC_XTENSA_SLOT7_OP: howto manager. (line 2023)
|
10566 |
|
|
* BFD_RELOC_XTENSA_SLOT8_ALT: howto manager. (line 2044)
|
10567 |
|
|
* BFD_RELOC_XTENSA_SLOT8_OP: howto manager. (line 2024)
|
10568 |
|
|
* BFD_RELOC_XTENSA_SLOT9_ALT: howto manager. (line 2045)
|
10569 |
|
|
* BFD_RELOC_XTENSA_SLOT9_OP: howto manager. (line 2025)
|
10570 |
|
|
* BFD_RELOC_Z80_DISP8: howto manager. (line 2070)
|
10571 |
|
|
* BFD_RELOC_Z8K_CALLR: howto manager. (line 2076)
|
10572 |
|
|
* BFD_RELOC_Z8K_DISP7: howto manager. (line 2073)
|
10573 |
|
|
* BFD_RELOC_Z8K_IMM4L: howto manager. (line 2079)
|
10574 |
|
|
* bfd_scan_arch: Architectures. (line 412)
|
10575 |
|
|
* bfd_scan_vma: BFD front end. (line 426)
|
10576 |
|
|
* bfd_seach_for_target: bfd_target. (line 464)
|
10577 |
|
|
* bfd_section_already_linked: Writing the symbol table.
|
10578 |
|
|
(line 55)
|
10579 |
|
|
* bfd_section_list_clear: section prototypes. (line 8)
|
10580 |
|
|
* bfd_sections_find_if: section prototypes. (line 176)
|
10581 |
|
|
* bfd_set_arch_info: Architectures. (line 453)
|
10582 |
|
|
* bfd_set_archive_head: Archives. (line 69)
|
10583 |
|
|
* bfd_set_default_target: bfd_target. (line 429)
|
10584 |
|
|
* bfd_set_error: BFD front end. (line 236)
|
10585 |
|
|
* bfd_set_error_handler: BFD front end. (line 278)
|
10586 |
|
|
* bfd_set_error_program_name: BFD front end. (line 287)
|
10587 |
|
|
* bfd_set_file_flags: BFD front end. (line 346)
|
10588 |
|
|
* bfd_set_format: Formats. (line 68)
|
10589 |
|
|
* bfd_set_gp_size: BFD front end. (line 416)
|
10590 |
|
|
* bfd_set_private_flags: BFD front end. (line 493)
|
10591 |
|
|
* bfd_set_reloc: BFD front end. (line 336)
|
10592 |
|
|
* bfd_set_section_contents: section prototypes. (line 207)
|
10593 |
|
|
* bfd_set_section_flags: section prototypes. (line 140)
|
10594 |
|
|
* bfd_set_section_size: section prototypes. (line 193)
|
10595 |
|
|
* bfd_set_start_address: BFD front end. (line 395)
|
10596 |
|
|
* bfd_set_symtab: symbol handling functions.
|
10597 |
|
|
(line 60)
|
10598 |
|
|
* bfd_symbol_info: symbol handling functions.
|
10599 |
|
|
(line 130)
|
10600 |
|
|
* bfd_target_list: bfd_target. (line 455)
|
10601 |
|
|
* bfd_write_bigendian_4byte_int: Internal. (line 13)
|
10602 |
|
|
* bfd_zalloc: Opening and Closing.
|
10603 |
|
|
(line 228)
|
10604 |
|
|
* bfd_zalloc2: Opening and Closing.
|
10605 |
|
|
(line 237)
|
10606 |
|
|
* coff_symbol_type: coff. (line 186)
|
10607 |
|
|
* core_file_matches_executable_p: Core Files. (line 30)
|
10608 |
|
|
* find_separate_debug_file: Opening and Closing.
|
10609 |
|
|
(line 279)
|
10610 |
|
|
* generic_core_file_matches_executable_p: Core Files. (line 40)
|
10611 |
|
|
* get_debug_link_info: Opening and Closing.
|
10612 |
|
|
(line 260)
|
10613 |
|
|
* Hash tables: Hash Tables. (line 6)
|
10614 |
|
|
* internal object-file format: Canonical format. (line 11)
|
10615 |
|
|
* Linker: Linker Functions. (line 6)
|
10616 |
|
|
* Other functions: BFD front end. (line 508)
|
10617 |
|
|
* separate_debug_file_exists: Opening and Closing.
|
10618 |
|
|
(line 270)
|
10619 |
|
|
* struct bfd_iovec: BFD front end. (line 711)
|
10620 |
|
|
* target vector (_bfd_final_link): Performing the Final Link.
|
10621 |
|
|
(line 6)
|
10622 |
|
|
* target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table.
|
10623 |
|
|
(line 6)
|
10624 |
|
|
* target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table.
|
10625 |
|
|
|
10626 |
|
|
|
10627 |
|
|
* what is it?: Overview. (line 6)
|
10628 |
|
|
|
10629 |
|
|
|
10630 |
|
|
|
10631 |
|
|
Tag Table:
|
10632 |
|
|
Node: Top1045
|
10633 |
|
|
Node: Overview1384
|
10634 |
|
|
Node: History2435
|
10635 |
|
|
Node: How It Works3381
|
10636 |
|
|
Node: What BFD Version 2 Can Do4924
|
10637 |
|
|
Node: BFD information loss6239
|
10638 |
|
|
Node: Canonical format8771
|
10639 |
|
|
Node: BFD front end13143
|
10640 |
|
|
Node: Memory Usage40479
|
10641 |
|
|
Node: Initialization41707
|
10642 |
|
|
Node: Sections42166
|
10643 |
|
|
Node: Section Input42649
|
10644 |
|
|
Node: Section Output44014
|
10645 |
|
|
Node: typedef asection46500
|
10646 |
|
|
Node: section prototypes71081
|
10647 |
|
|
Node: Symbols80761
|
10648 |
|
|
Node: Reading Symbols82356
|
10649 |
|
|
Node: Writing Symbols83463
|
10650 |
|
|
Node: Mini Symbols85172
|
10651 |
|
|
Node: typedef asymbol86146
|
10652 |
|
|
Node: symbol handling functions91407
|
10653 |
|
|
Node: Archives96749
|
10654 |
|
|
Node: Formats100475
|
10655 |
|
|
Node: Relocations103423
|
10656 |
|
|
Node: typedef arelent104150
|
10657 |
|
|
Node: howto manager119961
|
10658 |
|
|
Node: Core Files187149
|
10659 |
|
|
Node: Targets188966
|
10660 |
|
|
Node: bfd_target190936
|
10661 |
|
|
Node: Architectures211241
|
10662 |
|
|
Node: Opening and Closing233527
|
10663 |
|
|
Node: Internal244791
|
10664 |
|
|
Node: File Caching251124
|
10665 |
|
|
Node: Linker Functions253038
|
10666 |
|
|
Node: Creating a Linker Hash Table254711
|
10667 |
|
|
Node: Adding Symbols to the Hash Table256449
|
10668 |
|
|
Node: Differing file formats257349
|
10669 |
|
|
Node: Adding symbols from an object file259074
|
10670 |
|
|
Node: Adding symbols from an archive261225
|
10671 |
|
|
Node: Performing the Final Link263639
|
10672 |
|
|
Node: Information provided by the linker264881
|
10673 |
|
|
Node: Relocating the section contents266035
|
10674 |
|
|
Node: Writing the symbol table267786
|
10675 |
|
|
Node: Hash Tables270828
|
10676 |
|
|
Node: Creating and Freeing a Hash Table272026
|
10677 |
|
|
Node: Looking Up or Entering a String273276
|
10678 |
|
|
Node: Traversing a Hash Table274529
|
10679 |
|
|
Node: Deriving a New Hash Table Type275318
|
10680 |
|
|
Node: Define the Derived Structures276384
|
10681 |
|
|
Node: Write the Derived Creation Routine277465
|
10682 |
|
|
Node: Write Other Derived Routines280089
|
10683 |
|
|
Node: BFD back ends281404
|
10684 |
|
|
Node: What to Put Where281674
|
10685 |
|
|
Node: aout281854
|
10686 |
|
|
Node: coff288172
|
10687 |
|
|
Node: elf312649
|
10688 |
|
|
Node: mmo313512
|
10689 |
|
|
Node: File layout314440
|
10690 |
|
|
Node: Symbol-table320087
|
10691 |
|
|
Node: mmo section mapping323856
|
10692 |
|
|
Node: GNU Free Documentation License327508
|