OpenCores
URL https://opencores.org/ocsvn/altor32/altor32/trunk

Subversion Repositories altor32

[/] [altor32/] [trunk/] [gcc-x64/] [or1knd-elf/] [share/] [info/] [bfd.info] - Blame information for rev 35

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 35 ultra_embe
This is bfd.info, produced by makeinfo version 4.13 from bfd.texinfo.
2
 
3
INFO-DIR-SECTION Software development
4
START-INFO-DIR-ENTRY
5
* Bfd: (bfd).                   The Binary File Descriptor library.
6
END-INFO-DIR-ENTRY
7
 
8
   This file documents the BFD library.
9
 
10
   Copyright (C) 1991, 2000, 2001, 2003, 2006, 2007, 2008 Free Software
11
Foundation, Inc.
12
 
13
   Permission is granted to copy, distribute and/or modify this document
14
under the terms of the GNU Free Documentation License, Version 1.3 or
15
any later version published by the Free Software Foundation; with the
16
Invariant Sections being "GNU General Public License" and "Funding Free
17
Software", the Front-Cover texts being (a) (see below), and with the
18
Back-Cover Texts being (b) (see below).  A copy of the license is
19
included in the section entitled "GNU Free Documentation License".
20
 
21
   (a) The FSF's Front-Cover Text is:
22
 
23
   A GNU Manual
24
 
25
   (b) The FSF's Back-Cover Text is:
26
 
27
   You have freedom to copy and modify this GNU Manual, like GNU
28
software.  Copies published by the Free Software Foundation raise
29
funds for GNU development.
30
 
31

32
File: bfd.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
33
 
34
   This file documents the binary file descriptor library libbfd.
35
 
36
* Menu:
37
 
38
* Overview::                    Overview of BFD
39
* BFD front end::               BFD front end
40
* BFD back ends::               BFD back ends
41
* GNU Free Documentation License::  GNU Free Documentation License
42
* BFD Index::           BFD Index
43
 
44

45
File: bfd.info,  Node: Overview,  Next: BFD front end,  Prev: Top,  Up: Top
46
 
47
1 Introduction
48
**************
49
 
50
BFD is a package which allows applications to use the same routines to
51
operate on object files whatever the object file format.  A new object
52
file format can be supported simply by creating a new BFD back end and
53
adding it to the library.
54
 
55
   BFD is split into two parts: the front end, and the back ends (one
56
for each object file format).
57
   * The front end of BFD provides the interface to the user. It manages
58
     memory and various canonical data structures. The front end also
59
     decides which back end to use and when to call back end routines.
60
 
61
   * The back ends provide BFD its view of the real world. Each back
62
     end provides a set of calls which the BFD front end can use to
63
     maintain its canonical form. The back ends also may keep around
64
     information for their own use, for greater efficiency.
65
 
66
* Menu:
67
 
68
* History::                     History
69
* How It Works::                How It Works
70
* What BFD Version 2 Can Do::   What BFD Version 2 Can Do
71
 
72

73
File: bfd.info,  Node: History,  Next: How It Works,  Prev: Overview,  Up: Overview
74
 
75
1.1 History
76
===========
77
 
78
One spur behind BFD was the desire, on the part of the GNU 960 team at
79
Intel Oregon, for interoperability of applications on their COFF and
80
b.out file formats.  Cygnus was providing GNU support for the team, and
81
was contracted to provide the required functionality.
82
 
83
   The name came from a conversation David Wallace was having with
84
Richard Stallman about the library: RMS said that it would be quite
85
hard--David said "BFD".  Stallman was right, but the name stuck.
86
 
87
   At the same time, Ready Systems wanted much the same thing, but for
88
different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k
89
coff.
90
 
91
   BFD was first implemented by members of Cygnus Support; Steve
92
Chamberlain (`sac@cygnus.com'), John Gilmore (`gnu@cygnus.com'), K.
93
Richard Pixley (`rich@cygnus.com') and David Henkel-Wallace
94
(`gumby@cygnus.com').
95
 
96

97
File: bfd.info,  Node: How It Works,  Next: What BFD Version 2 Can Do,  Prev: History,  Up: Overview
98
 
99
1.2 How To Use BFD
100
==================
101
 
102
To use the library, include `bfd.h' and link with `libbfd.a'.
103
 
104
   BFD provides a common interface to the parts of an object file for a
105
calling application.
106
 
107
   When an application successfully opens a target file (object,
108
archive, or whatever), a pointer to an internal structure is returned.
109
This pointer points to a structure called `bfd', described in `bfd.h'.
110
Our convention is to call this pointer a BFD, and instances of it
111
within code `abfd'.  All operations on the target object file are
112
applied as methods to the BFD.  The mapping is defined within `bfd.h'
113
in a set of macros, all beginning with `bfd_' to reduce namespace
114
pollution.
115
 
116
   For example, this sequence does what you would probably expect:
117
return the number of sections in an object file attached to a BFD
118
`abfd'.
119
 
120
     #include "bfd.h"
121
 
122
     unsigned int number_of_sections (abfd)
123
     bfd *abfd;
124
     {
125
       return bfd_count_sections (abfd);
126
     }
127
 
128
   The abstraction used within BFD is that an object file has:
129
 
130
   * a header,
131
 
132
   * a number of sections containing raw data (*note Sections::),
133
 
134
   * a set of relocations (*note Relocations::), and
135
 
136
   * some symbol information (*note Symbols::).
137
   Also, BFDs opened for archives have the additional attribute of an
138
index and contain subordinate BFDs. This approach is fine for a.out and
139
coff, but loses efficiency when applied to formats such as S-records and
140
IEEE-695.
141
 
142

143
File: bfd.info,  Node: What BFD Version 2 Can Do,  Prev: How It Works,  Up: Overview
144
 
145
1.3 What BFD Version 2 Can Do
146
=============================
147
 
148
When an object file is opened, BFD subroutines automatically determine
149
the format of the input object file.  They then build a descriptor in
150
memory with pointers to routines that will be used to access elements of
151
the object file's data structures.
152
 
153
   As different information from the object files is required, BFD
154
reads from different sections of the file and processes them.  For
155
example, a very common operation for the linker is processing symbol
156
tables.  Each BFD back end provides a routine for converting between
157
the object file's representation of symbols and an internal canonical
158
format. When the linker asks for the symbol table of an object file, it
159
calls through a memory pointer to the routine from the relevant BFD
160
back end which reads and converts the table into a canonical form.  The
161
linker then operates upon the canonical form. When the link is finished
162
and the linker writes the output file's symbol table, another BFD back
163
end routine is called to take the newly created symbol table and
164
convert it into the chosen output format.
165
 
166
* Menu:
167
 
168
* BFD information loss::        Information Loss
169
* Canonical format::            The BFD canonical object-file format
170
 
171

172
File: bfd.info,  Node: BFD information loss,  Next: Canonical format,  Up: What BFD Version 2 Can Do
173
 
174
1.3.1 Information Loss
175
----------------------
176
 
177
_Information can be lost during output._ The output formats supported
178
by BFD do not provide identical facilities, and information which can
179
be described in one form has nowhere to go in another format. One
180
example of this is alignment information in `b.out'. There is nowhere
181
in an `a.out' format file to store alignment information on the
182
contained data, so when a file is linked from `b.out' and an `a.out'
183
image is produced, alignment information will not propagate to the
184
output file. (The linker will still use the alignment information
185
internally, so the link is performed correctly).
186
 
187
   Another example is COFF section names. COFF files may contain an
188
unlimited number of sections, each one with a textual section name. If
189
the target of the link is a format which does not have many sections
190
(e.g., `a.out') or has sections without names (e.g., the Oasys format),
191
the link cannot be done simply. You can circumvent this problem by
192
describing the desired input-to-output section mapping with the linker
193
command language.
194
 
195
   _Information can be lost during canonicalization._ The BFD internal
196
canonical form of the external formats is not exhaustive; there are
197
structures in input formats for which there is no direct representation
198
internally.  This means that the BFD back ends cannot maintain all
199
possible data richness through the transformation between external to
200
internal and back to external formats.
201
 
202
   This limitation is only a problem when an application reads one
203
format and writes another.  Each BFD back end is responsible for
204
maintaining as much data as possible, and the internal BFD canonical
205
form has structures which are opaque to the BFD core, and exported only
206
to the back ends. When a file is read in one format, the canonical form
207
is generated for BFD and the application. At the same time, the back
208
end saves away any information which may otherwise be lost. If the data
209
is then written back in the same format, the back end routine will be
210
able to use the canonical form provided by the BFD core as well as the
211
information it prepared earlier.  Since there is a great deal of
212
commonality between back ends, there is no information lost when
213
linking or copying big endian COFF to little endian COFF, or `a.out' to
214
`b.out'.  When a mixture of formats is linked, the information is only
215
lost from the files whose format differs from the destination.
216
 
217

218
File: bfd.info,  Node: Canonical format,  Prev: BFD information loss,  Up: What BFD Version 2 Can Do
219
 
220
1.3.2 The BFD canonical object-file format
221
------------------------------------------
222
 
223
The greatest potential for loss of information occurs when there is the
224
least overlap between the information provided by the source format,
225
that stored by the canonical format, and that needed by the destination
226
format. A brief description of the canonical form may help you
227
understand which kinds of data you can count on preserving across
228
conversions.
229
 
230
_files_
231
     Information stored on a per-file basis includes target machine
232
     architecture, particular implementation format type, a demand
233
     pageable bit, and a write protected bit.  Information like Unix
234
     magic numbers is not stored here--only the magic numbers' meaning,
235
     so a `ZMAGIC' file would have both the demand pageable bit and the
236
     write protected text bit set.  The byte order of the target is
237
     stored on a per-file basis, so that big- and little-endian object
238
     files may be used with one another.
239
 
240
_sections_
241
     Each section in the input file contains the name of the section,
242
     the section's original address in the object file, size and
243
     alignment information, various flags, and pointers into other BFD
244
     data structures.
245
 
246
_symbols_
247
     Each symbol contains a pointer to the information for the object
248
     file which originally defined it, its name, its value, and various
249
     flag bits.  When a BFD back end reads in a symbol table, it
250
     relocates all symbols to make them relative to the base of the
251
     section where they were defined.  Doing this ensures that each
252
     symbol points to its containing section.  Each symbol also has a
253
     varying amount of hidden private data for the BFD back end.  Since
254
     the symbol points to the original file, the private data format
255
     for that symbol is accessible.  `ld' can operate on a collection
256
     of symbols of wildly different formats without problems.
257
 
258
     Normal global and simple local symbols are maintained on output,
259
     so an output file (no matter its format) will retain symbols
260
     pointing to functions and to global, static, and common variables.
261
     Some symbol information is not worth retaining; in `a.out', type
262
     information is stored in the symbol table as long symbol names.
263
     This information would be useless to most COFF debuggers; the
264
     linker has command line switches to allow users to throw it away.
265
 
266
     There is one word of type information within the symbol, so if the
267
     format supports symbol type information within symbols (for
268
     example, COFF, IEEE, Oasys) and the type is simple enough to fit
269
     within one word (nearly everything but aggregates), the
270
     information will be preserved.
271
 
272
_relocation level_
273
     Each canonical BFD relocation record contains a pointer to the
274
     symbol to relocate to, the offset of the data to relocate, the
275
     section the data is in, and a pointer to a relocation type
276
     descriptor. Relocation is performed by passing messages through
277
     the relocation type descriptor and the symbol pointer. Therefore,
278
     relocations can be performed on output data using a relocation
279
     method that is only available in one of the input formats. For
280
     instance, Oasys provides a byte relocation format.  A relocation
281
     record requesting this relocation type would point indirectly to a
282
     routine to perform this, so the relocation may be performed on a
283
     byte being written to a 68k COFF file, even though 68k COFF has no
284
     such relocation type.
285
 
286
_line numbers_
287
     Object formats can contain, for debugging purposes, some form of
288
     mapping between symbols, source line numbers, and addresses in the
289
     output file.  These addresses have to be relocated along with the
290
     symbol information.  Each symbol with an associated list of line
291
     number records points to the first record of the list.  The head
292
     of a line number list consists of a pointer to the symbol, which
293
     allows finding out the address of the function whose line number
294
     is being described. The rest of the list is made up of pairs:
295
     offsets into the section and line numbers. Any format which can
296
     simply derive this information can pass it successfully between
297
     formats (COFF, IEEE and Oasys).
298
 
299

300
File: bfd.info,  Node: BFD front end,  Next: BFD back ends,  Prev: Overview,  Up: Top
301
 
302
2 BFD Front End
303
***************
304
 
305
2.1 `typedef bfd'
306
=================
307
 
308
A BFD has type `bfd'; objects of this type are the cornerstone of any
309
application using BFD. Using BFD consists of making references though
310
the BFD and to data in the BFD.
311
 
312
   Here is the structure that defines the type `bfd'.  It contains the
313
major data about the file and pointers to the rest of the data.
314
 
315
 
316
     enum bfd_direction
317
       {
318
         no_direction = 0,
319
         read_direction = 1,
320
         write_direction = 2,
321
         both_direction = 3
322
       };
323
 
324
     struct bfd
325
     {
326
       /* A unique identifier of the BFD  */
327
       unsigned int id;
328
 
329
       /* The filename the application opened the BFD with.  */
330
       const char *filename;
331
 
332
       /* A pointer to the target jump table.  */
333
       const struct bfd_target *xvec;
334
 
335
       /* The IOSTREAM, and corresponding IO vector that provide access
336
          to the file backing the BFD.  */
337
       void *iostream;
338
       const struct bfd_iovec *iovec;
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
       /* File modified time, if mtime_set is TRUE.  */
349
       long mtime;
350
 
351
       /* Reserved for an unimplemented file locking extension.  */
352
       int ifd;
353
 
354
       /* The format which belongs to the BFD. (object, core, etc.)  */
355
       bfd_format format;
356
 
357
       /* The direction with which the BFD was opened.  */
358
       enum bfd_direction direction;
359
 
360
       /* Format_specific flags.  */
361
       flagword flags;
362
 
363
       /* Values that may appear in the flags field of a BFD.  These also
364
          appear in the object_flags field of the bfd_target structure, where
365
          they indicate the set of flags used by that backend (not all flags
366
          are meaningful for all object file formats) (FIXME: at the moment,
367
          the object_flags values have mostly just been copied from backend
368
          to another, and are not necessarily correct).  */
369
 
370
     #define BFD_NO_FLAGS   0x00
371
 
372
       /* BFD contains relocation entries.  */
373
     #define HAS_RELOC      0x01
374
 
375
       /* BFD is directly executable.  */
376
     #define EXEC_P         0x02
377
 
378
       /* BFD has line number information (basically used for F_LNNO in a
379
          COFF header).  */
380
     #define HAS_LINENO     0x04
381
 
382
       /* BFD has debugging information.  */
383
     #define HAS_DEBUG      0x08
384
 
385
       /* BFD has symbols.  */
386
     #define HAS_SYMS       0x10
387
 
388
       /* BFD has local symbols (basically used for F_LSYMS in a COFF
389
          header).  */
390
     #define HAS_LOCALS     0x20
391
 
392
       /* BFD is a dynamic object.  */
393
     #define DYNAMIC        0x40
394
 
395
       /* Text section is write protected (if D_PAGED is not set, this is
396
          like an a.out NMAGIC file) (the linker sets this by default, but
397
          clears it for -r or -N).  */
398
     #define WP_TEXT        0x80
399
 
400
       /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
401
          linker sets this by default, but clears it for -r or -n or -N).  */
402
     #define D_PAGED        0x100
403
 
404
       /* BFD is relaxable (this means that bfd_relax_section may be able to
405
          do something) (sometimes bfd_relax_section can do something even if
406
          this is not set).  */
407
     #define BFD_IS_RELAXABLE 0x200
408
 
409
       /* This may be set before writing out a BFD to request using a
410
          traditional format.  For example, this is used to request that when
411
          writing out an a.out object the symbols not be hashed to eliminate
412
          duplicates.  */
413
     #define BFD_TRADITIONAL_FORMAT 0x400
414
 
415
       /* This flag indicates that the BFD contents are actually cached
416
          in memory.  If this is set, iostream points to a bfd_in_memory
417
          struct.  */
418
     #define BFD_IN_MEMORY 0x800
419
 
420
       /* The sections in this BFD specify a memory page.  */
421
     #define HAS_LOAD_PAGE 0x1000
422
 
423
       /* This BFD has been created by the linker and doesn't correspond
424
          to any input file.  */
425
     #define BFD_LINKER_CREATED 0x2000
426
 
427
       /* This may be set before writing out a BFD to request that it
428
          be written using values for UIDs, GIDs, timestamps, etc. that
429
          will be consistent from run to run.  */
430
     #define BFD_DETERMINISTIC_OUTPUT 0x4000
431
 
432
       /* Compress sections in this BFD.  */
433
     #define BFD_COMPRESS 0x8000
434
 
435
       /* Decompress sections in this BFD.  */
436
     #define BFD_DECOMPRESS 0x10000
437
 
438
       /* BFD is a dummy, for plugins.  */
439
     #define BFD_PLUGIN 0x20000
440
 
441
       /* Flags bits to be saved in bfd_preserve_save.  */
442
     #define BFD_FLAGS_SAVED \
443
       (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN)
444
 
445
       /* Flags bits which are for BFD use only.  */
446
     #define BFD_FLAGS_FOR_BFD_USE_MASK \
447
       (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
448
        | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT)
449
 
450
       /* Currently my_archive is tested before adding origin to
451
          anything. I believe that this can become always an add of
452
          origin, with origin set to 0 for non archive files.  */
453
       ufile_ptr origin;
454
 
455
       /* The origin in the archive of the proxy entry.  This will
456
          normally be the same as origin, except for thin archives,
457
          when it will contain the current offset of the proxy in the
458
          thin archive rather than the offset of the bfd in its actual
459
          container.  */
460
       ufile_ptr proxy_origin;
461
 
462
       /* A hash table for section names.  */
463
       struct bfd_hash_table section_htab;
464
 
465
       /* Pointer to linked list of sections.  */
466
       struct bfd_section *sections;
467
 
468
       /* The last section on the section list.  */
469
       struct bfd_section *section_last;
470
 
471
       /* The number of sections.  */
472
       unsigned int section_count;
473
 
474
       /* Stuff only useful for object files:
475
          The start address.  */
476
       bfd_vma start_address;
477
 
478
       /* Used for input and output.  */
479
       unsigned int symcount;
480
 
481
       /* Symbol table for output BFD (with symcount entries).
482
          Also used by the linker to cache input BFD symbols.  */
483
       struct bfd_symbol  **outsymbols;
484
 
485
       /* Used for slurped dynamic symbol tables.  */
486
       unsigned int dynsymcount;
487
 
488
       /* Pointer to structure which contains architecture information.  */
489
       const struct bfd_arch_info *arch_info;
490
 
491
       /* Stuff only useful for archives.  */
492
       void *arelt_data;
493
       struct bfd *my_archive;      /* The containing archive BFD.  */
494
       struct bfd *archive_next;    /* The next BFD in the archive.  */
495
       struct bfd *archive_head;    /* The first BFD in the archive.  */
496
       struct bfd *nested_archives; /* List of nested archive in a flattened
497
                                       thin archive.  */
498
 
499
       /* A chain of BFD structures involved in a link.  */
500
       struct bfd *link_next;
501
 
502
       /* A field used by _bfd_generic_link_add_archive_symbols.  This will
503
          be used only for archive elements.  */
504
       int archive_pass;
505
 
506
       /* Used by the back end to hold private data.  */
507
       union
508
         {
509
           struct aout_data_struct *aout_data;
510
           struct artdata *aout_ar_data;
511
           struct _oasys_data *oasys_obj_data;
512
           struct _oasys_ar_data *oasys_ar_data;
513
           struct coff_tdata *coff_obj_data;
514
           struct pe_tdata *pe_obj_data;
515
           struct xcoff_tdata *xcoff_obj_data;
516
           struct ecoff_tdata *ecoff_obj_data;
517
           struct ieee_data_struct *ieee_data;
518
           struct ieee_ar_data_struct *ieee_ar_data;
519
           struct srec_data_struct *srec_data;
520
           struct verilog_data_struct *verilog_data;
521
           struct ihex_data_struct *ihex_data;
522
           struct tekhex_data_struct *tekhex_data;
523
           struct elf_obj_tdata *elf_obj_data;
524
           struct nlm_obj_tdata *nlm_obj_data;
525
           struct bout_data_struct *bout_data;
526
           struct mmo_data_struct *mmo_data;
527
           struct sun_core_struct *sun_core_data;
528
           struct sco5_core_struct *sco5_core_data;
529
           struct trad_core_struct *trad_core_data;
530
           struct som_data_struct *som_data;
531
           struct hpux_core_struct *hpux_core_data;
532
           struct hppabsd_core_struct *hppabsd_core_data;
533
           struct sgi_core_struct *sgi_core_data;
534
           struct lynx_core_struct *lynx_core_data;
535
           struct osf_core_struct *osf_core_data;
536
           struct cisco_core_struct *cisco_core_data;
537
           struct versados_data_struct *versados_data;
538
           struct netbsd_core_struct *netbsd_core_data;
539
           struct mach_o_data_struct *mach_o_data;
540
           struct mach_o_fat_data_struct *mach_o_fat_data;
541
           struct plugin_data_struct *plugin_data;
542
           struct bfd_pef_data_struct *pef_data;
543
           struct bfd_pef_xlib_data_struct *pef_xlib_data;
544
           struct bfd_sym_data_struct *sym_data;
545
           void *any;
546
         }
547
       tdata;
548
 
549
       /* Used by the application to hold private data.  */
550
       void *usrdata;
551
 
552
       /* Where all the allocated stuff under this BFD goes.  This is a
553
          struct objalloc *, but we use void * to avoid requiring the inclusion
554
          of objalloc.h.  */
555
       void *memory;
556
 
557
       /* Is the file descriptor being cached?  That is, can it be closed as
558
          needed, and re-opened when accessed later?  */
559
       unsigned int cacheable : 1;
560
 
561
       /* Marks whether there was a default target specified when the
562
          BFD was opened. This is used to select which matching algorithm
563
          to use to choose the back end.  */
564
       unsigned int target_defaulted : 1;
565
 
566
       /* ... and here: (``once'' means at least once).  */
567
       unsigned int opened_once : 1;
568
 
569
       /* Set if we have a locally maintained mtime value, rather than
570
          getting it from the file each time.  */
571
       unsigned int mtime_set : 1;
572
 
573
       /* Flag set if symbols from this BFD should not be exported.  */
574
       unsigned int no_export : 1;
575
 
576
       /* Remember when output has begun, to stop strange things
577
          from happening.  */
578
       unsigned int output_has_begun : 1;
579
 
580
       /* Have archive map.  */
581
       unsigned int has_armap : 1;
582
 
583
       /* Set if this is a thin archive.  */
584
       unsigned int is_thin_archive : 1;
585
 
586
       /* Set if only required symbols should be added in the link hash table for
587
          this object.  Used by VMS linkers.  */
588
       unsigned int selective_search : 1;
589
     };
590
 
591
2.2 Error reporting
592
===================
593
 
594
Most BFD functions return nonzero on success (check their individual
595
documentation for precise semantics).  On an error, they call
596
`bfd_set_error' to set an error condition that callers can check by
597
calling `bfd_get_error'.  If that returns `bfd_error_system_call', then
598
check `errno'.
599
 
600
   The easiest way to report a BFD error to the user is to use
601
`bfd_perror'.
602
 
603
2.2.1 Type `bfd_error_type'
604
---------------------------
605
 
606
The values returned by `bfd_get_error' are defined by the enumerated
607
type `bfd_error_type'.
608
 
609
 
610
     typedef enum bfd_error
611
     {
612
       bfd_error_no_error = 0,
613
       bfd_error_system_call,
614
       bfd_error_invalid_target,
615
       bfd_error_wrong_format,
616
       bfd_error_wrong_object_format,
617
       bfd_error_invalid_operation,
618
       bfd_error_no_memory,
619
       bfd_error_no_symbols,
620
       bfd_error_no_armap,
621
       bfd_error_no_more_archived_files,
622
       bfd_error_malformed_archive,
623
       bfd_error_file_not_recognized,
624
       bfd_error_file_ambiguously_recognized,
625
       bfd_error_no_contents,
626
       bfd_error_nonrepresentable_section,
627
       bfd_error_no_debug_section,
628
       bfd_error_bad_value,
629
       bfd_error_file_truncated,
630
       bfd_error_file_too_big,
631
       bfd_error_on_input,
632
       bfd_error_invalid_error_code
633
     }
634
     bfd_error_type;
635
 
636
2.2.1.1 `bfd_get_error'
637
.......................
638
 
639
*Synopsis*
640
     bfd_error_type bfd_get_error (void);
641
   *Description*
642
Return the current BFD error condition.
643
 
644
2.2.1.2 `bfd_set_error'
645
.......................
646
 
647
*Synopsis*
648
     void bfd_set_error (bfd_error_type error_tag, ...);
649
   *Description*
650
Set the BFD error condition to be ERROR_TAG.  If ERROR_TAG is
651
bfd_error_on_input, then this function takes two more parameters, the
652
input bfd where the error occurred, and the bfd_error_type error.
653
 
654
2.2.1.3 `bfd_errmsg'
655
....................
656
 
657
*Synopsis*
658
     const char *bfd_errmsg (bfd_error_type error_tag);
659
   *Description*
660
Return a string describing the error ERROR_TAG, or the system error if
661
ERROR_TAG is `bfd_error_system_call'.
662
 
663
2.2.1.4 `bfd_perror'
664
....................
665
 
666
*Synopsis*
667
     void bfd_perror (const char *message);
668
   *Description*
669
Print to the standard error stream a string describing the last BFD
670
error that occurred, or the last system error if the last BFD error was
671
a system call failure.  If MESSAGE is non-NULL and non-empty, the error
672
string printed is preceded by MESSAGE, a colon, and a space.  It is
673
followed by a newline.
674
 
675
2.2.2 BFD error handler
676
-----------------------
677
 
678
Some BFD functions want to print messages describing the problem.  They
679
call a BFD error handler function.  This function may be overridden by
680
the program.
681
 
682
   The BFD error handler acts like printf.
683
 
684
 
685
     typedef void (*bfd_error_handler_type) (const char *, ...);
686
 
687
2.2.2.1 `bfd_set_error_handler'
688
...............................
689
 
690
*Synopsis*
691
     bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
692
   *Description*
693
Set the BFD error handler function.  Returns the previous function.
694
 
695
2.2.2.2 `bfd_set_error_program_name'
696
....................................
697
 
698
*Synopsis*
699
     void bfd_set_error_program_name (const char *);
700
   *Description*
701
Set the program name to use when printing a BFD error.  This is printed
702
before the error message followed by a colon and space.  The string
703
must not be changed after it is passed to this function.
704
 
705
2.2.2.3 `bfd_get_error_handler'
706
...............................
707
 
708
*Synopsis*
709
     bfd_error_handler_type bfd_get_error_handler (void);
710
   *Description*
711
Return the BFD error handler function.
712
 
713
2.2.3 BFD assert handler
714
------------------------
715
 
716
If BFD finds an internal inconsistency, the bfd assert handler is
717
called with information on the BFD version, BFD source file and line.
718
If this happens, most programs linked against BFD are expected to want
719
to exit with an error, or mark the current BFD operation as failed, so
720
it is recommended to override the default handler, which just calls
721
_bfd_error_handler and continues.
722
 
723
 
724
     typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
725
                                              const char *bfd_version,
726
                                              const char *bfd_file,
727
                                              int bfd_line);
728
 
729
2.2.3.1 `bfd_set_assert_handler'
730
................................
731
 
732
*Synopsis*
733
     bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
734
   *Description*
735
Set the BFD assert handler function.  Returns the previous function.
736
 
737
2.2.3.2 `bfd_get_assert_handler'
738
................................
739
 
740
*Synopsis*
741
     bfd_assert_handler_type bfd_get_assert_handler (void);
742
   *Description*
743
Return the BFD assert handler function.
744
 
745
2.3 Miscellaneous
746
=================
747
 
748
2.3.1 Miscellaneous functions
749
-----------------------------
750
 
751
2.3.1.1 `bfd_get_reloc_upper_bound'
752
...................................
753
 
754
*Synopsis*
755
     long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
756
   *Description*
757
Return the number of bytes required to store the relocation information
758
associated with section SECT attached to bfd ABFD.  If an error occurs,
759
return -1.
760
 
761
2.3.1.2 `bfd_canonicalize_reloc'
762
................................
763
 
764
*Synopsis*
765
     long bfd_canonicalize_reloc
766
        (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
767
   *Description*
768
Call the back end associated with the open BFD ABFD and translate the
769
external form of the relocation information attached to SEC into the
770
internal canonical form.  Place the table into memory at LOC, which has
771
been preallocated, usually by a call to `bfd_get_reloc_upper_bound'.
772
Returns the number of relocs, or -1 on error.
773
 
774
   The SYMS table is also needed for horrible internal magic reasons.
775
 
776
2.3.1.3 `bfd_set_reloc'
777
.......................
778
 
779
*Synopsis*
780
     void bfd_set_reloc
781
        (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
782
   *Description*
783
Set the relocation pointer and count within section SEC to the values
784
REL and COUNT.  The argument ABFD is ignored.
785
 
786
2.3.1.4 `bfd_set_file_flags'
787
............................
788
 
789
*Synopsis*
790
     bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
791
   *Description*
792
Set the flag word in the BFD ABFD to the value FLAGS.
793
 
794
   Possible errors are:
795
   * `bfd_error_wrong_format' - The target bfd was not of object format.
796
 
797
   * `bfd_error_invalid_operation' - The target bfd was open for
798
     reading.
799
 
800
   * `bfd_error_invalid_operation' - The flag word contained a bit
801
     which was not applicable to the type of file.  E.g., an attempt
802
     was made to set the `D_PAGED' bit on a BFD format which does not
803
     support demand paging.
804
 
805
2.3.1.5 `bfd_get_arch_size'
806
...........................
807
 
808
*Synopsis*
809
     int bfd_get_arch_size (bfd *abfd);
810
   *Description*
811
Returns the architecture address size, in bits, as determined by the
812
object file's format.  For ELF, this information is included in the
813
header.
814
 
815
   *Returns*
816
Returns the arch size in bits if known, `-1' otherwise.
817
 
818
2.3.1.6 `bfd_get_sign_extend_vma'
819
.................................
820
 
821
*Synopsis*
822
     int bfd_get_sign_extend_vma (bfd *abfd);
823
   *Description*
824
Indicates if the target architecture "naturally" sign extends an
825
address.  Some architectures implicitly sign extend address values when
826
they are converted to types larger than the size of an address.  For
827
instance, bfd_get_start_address() will return an address sign extended
828
to fill a bfd_vma when this is the case.
829
 
830
   *Returns*
831
Returns `1' if the target architecture is known to sign extend
832
addresses, `0' if the target architecture is known to not sign extend
833
addresses, and `-1' otherwise.
834
 
835
2.3.1.7 `bfd_set_start_address'
836
...............................
837
 
838
*Synopsis*
839
     bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
840
   *Description*
841
Make VMA the entry point of output BFD ABFD.
842
 
843
   *Returns*
844
Returns `TRUE' on success, `FALSE' otherwise.
845
 
846
2.3.1.8 `bfd_get_gp_size'
847
.........................
848
 
849
*Synopsis*
850
     unsigned int bfd_get_gp_size (bfd *abfd);
851
   *Description*
852
Return the maximum size of objects to be optimized using the GP
853
register under MIPS ECOFF.  This is typically set by the `-G' argument
854
to the compiler, assembler or linker.
855
 
856
2.3.1.9 `bfd_set_gp_size'
857
.........................
858
 
859
*Synopsis*
860
     void bfd_set_gp_size (bfd *abfd, unsigned int i);
861
   *Description*
862
Set the maximum size of objects to be optimized using the GP register
863
under ECOFF or MIPS ELF.  This is typically set by the `-G' argument to
864
the compiler, assembler or linker.
865
 
866
2.3.1.10 `bfd_scan_vma'
867
.......................
868
 
869
*Synopsis*
870
     bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
871
   *Description*
872
Convert, like `strtoul', a numerical expression STRING into a `bfd_vma'
873
integer, and return that integer.  (Though without as many bells and
874
whistles as `strtoul'.)  The expression is assumed to be unsigned
875
(i.e., positive).  If given a BASE, it is used as the base for
876
conversion.  A base of 0 causes the function to interpret the string in
877
hex if a leading "0x" or "0X" is found, otherwise in octal if a leading
878
zero is found, otherwise in decimal.
879
 
880
   If the value would overflow, the maximum `bfd_vma' value is returned.
881
 
882
2.3.1.11 `bfd_copy_private_header_data'
883
.......................................
884
 
885
*Synopsis*
886
     bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
887
   *Description*
888
Copy private BFD header information from the BFD IBFD to the the BFD
889
OBFD.  This copies information that may require sections to exist, but
890
does not require symbol tables.  Return `true' on success, `false' on
891
error.  Possible error returns are:
892
 
893
   * `bfd_error_no_memory' - Not enough memory exists to create private
894
     data for OBFD.
895
 
896
     #define bfd_copy_private_header_data(ibfd, obfd) \
897
          BFD_SEND (obfd, _bfd_copy_private_header_data, \
898
                    (ibfd, obfd))
899
 
900
2.3.1.12 `bfd_copy_private_bfd_data'
901
....................................
902
 
903
*Synopsis*
904
     bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
905
   *Description*
906
Copy private BFD information from the BFD IBFD to the the BFD OBFD.
907
Return `TRUE' on success, `FALSE' on error.  Possible error returns are:
908
 
909
   * `bfd_error_no_memory' - Not enough memory exists to create private
910
     data for OBFD.
911
 
912
     #define bfd_copy_private_bfd_data(ibfd, obfd) \
913
          BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
914
                    (ibfd, obfd))
915
 
916
2.3.1.13 `bfd_merge_private_bfd_data'
917
.....................................
918
 
919
*Synopsis*
920
     bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
921
   *Description*
922
Merge private BFD information from the BFD IBFD to the the output file
923
BFD OBFD when linking.  Return `TRUE' on success, `FALSE' on error.
924
Possible error returns are:
925
 
926
   * `bfd_error_no_memory' - Not enough memory exists to create private
927
     data for OBFD.
928
 
929
     #define bfd_merge_private_bfd_data(ibfd, obfd) \
930
          BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
931
                    (ibfd, obfd))
932
 
933
2.3.1.14 `bfd_set_private_flags'
934
................................
935
 
936
*Synopsis*
937
     bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
938
   *Description*
939
Set private BFD flag information in the BFD ABFD.  Return `TRUE' on
940
success, `FALSE' on error.  Possible error returns are:
941
 
942
   * `bfd_error_no_memory' - Not enough memory exists to create private
943
     data for OBFD.
944
 
945
     #define bfd_set_private_flags(abfd, flags) \
946
          BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
947
 
948
2.3.1.15 `Other functions'
949
..........................
950
 
951
*Description*
952
The following functions exist but have not yet been documented.
953
     #define bfd_sizeof_headers(abfd, info) \
954
            BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
955
 
956
     #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
957
            BFD_SEND (abfd, _bfd_find_nearest_line, \
958
                      (abfd, sec, syms, off, file, func, line))
959
 
960
     #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
961
                                                 line, disc) \
962
            BFD_SEND (abfd, _bfd_find_nearest_line_discriminator, \
963
                      (abfd, sec, syms, off, file, func, line, disc))
964
 
965
     #define bfd_find_line(abfd, syms, sym, file, line) \
966
            BFD_SEND (abfd, _bfd_find_line, \
967
                      (abfd, syms, sym, file, line))
968
 
969
     #define bfd_find_inliner_info(abfd, file, func, line) \
970
            BFD_SEND (abfd, _bfd_find_inliner_info, \
971
                      (abfd, file, func, line))
972
 
973
     #define bfd_debug_info_start(abfd) \
974
            BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
975
 
976
     #define bfd_debug_info_end(abfd) \
977
            BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
978
 
979
     #define bfd_debug_info_accumulate(abfd, section) \
980
            BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
981
 
982
     #define bfd_stat_arch_elt(abfd, stat) \
983
            BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
984
 
985
     #define bfd_update_armap_timestamp(abfd) \
986
            BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
987
 
988
     #define bfd_set_arch_mach(abfd, arch, mach)\
989
            BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
990
 
991
     #define bfd_relax_section(abfd, section, link_info, again) \
992
            BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
993
 
994
     #define bfd_gc_sections(abfd, link_info) \
995
            BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
996
 
997
     #define bfd_lookup_section_flags(link_info, flag_info, section) \
998
            BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
999
 
1000
     #define bfd_merge_sections(abfd, link_info) \
1001
            BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
1002
 
1003
     #define bfd_is_group_section(abfd, sec) \
1004
            BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
1005
 
1006
     #define bfd_discard_group(abfd, sec) \
1007
            BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
1008
 
1009
     #define bfd_link_hash_table_create(abfd) \
1010
            BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
1011
 
1012
     #define bfd_link_hash_table_free(abfd, hash) \
1013
            BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
1014
 
1015
     #define bfd_link_add_symbols(abfd, info) \
1016
            BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
1017
 
1018
     #define bfd_link_just_syms(abfd, sec, info) \
1019
            BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
1020
 
1021
     #define bfd_final_link(abfd, info) \
1022
            BFD_SEND (abfd, _bfd_final_link, (abfd, info))
1023
 
1024
     #define bfd_free_cached_info(abfd) \
1025
            BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
1026
 
1027
     #define bfd_get_dynamic_symtab_upper_bound(abfd) \
1028
            BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
1029
 
1030
     #define bfd_print_private_bfd_data(abfd, file)\
1031
            BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
1032
 
1033
     #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
1034
            BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
1035
 
1036
     #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
1037
            BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
1038
                                                        dyncount, dynsyms, ret))
1039
 
1040
     #define bfd_get_dynamic_reloc_upper_bound(abfd) \
1041
            BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
1042
 
1043
     #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
1044
            BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
1045
 
1046
     extern bfd_byte *bfd_get_relocated_section_contents
1047
       (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
1048
        bfd_boolean, asymbol **);
1049
 
1050
2.3.1.16 `bfd_alt_mach_code'
1051
............................
1052
 
1053
*Synopsis*
1054
     bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
1055
   *Description*
1056
When more than one machine code number is available for the same
1057
machine type, this function can be used to switch between the preferred
1058
one (alternative == 0) and any others.  Currently, only ELF supports
1059
this feature, with up to two alternate machine codes.
1060
 
1061
     struct bfd_preserve
1062
     {
1063
       void *marker;
1064
       void *tdata;
1065
       flagword flags;
1066
       const struct bfd_arch_info *arch_info;
1067
       struct bfd_section *sections;
1068
       struct bfd_section *section_last;
1069
       unsigned int section_count;
1070
       struct bfd_hash_table section_htab;
1071
     };
1072
 
1073
2.3.1.17 `bfd_preserve_save'
1074
............................
1075
 
1076
*Synopsis*
1077
     bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
1078
   *Description*
1079
When testing an object for compatibility with a particular target
1080
back-end, the back-end object_p function needs to set up certain fields
1081
in the bfd on successfully recognizing the object.  This typically
1082
happens in a piecemeal fashion, with failures possible at many points.
1083
On failure, the bfd is supposed to be restored to its initial state,
1084
which is virtually impossible.  However, restoring a subset of the bfd
1085
state works in practice.  This function stores the subset and
1086
reinitializes the bfd.
1087
 
1088
2.3.1.18 `bfd_preserve_restore'
1089
...............................
1090
 
1091
*Synopsis*
1092
     void bfd_preserve_restore (bfd *, struct bfd_preserve *);
1093
   *Description*
1094
This function restores bfd state saved by bfd_preserve_save.  If MARKER
1095
is non-NULL in struct bfd_preserve then that block and all subsequently
1096
bfd_alloc'd memory is freed.
1097
 
1098
2.3.1.19 `bfd_preserve_finish'
1099
..............................
1100
 
1101
*Synopsis*
1102
     void bfd_preserve_finish (bfd *, struct bfd_preserve *);
1103
   *Description*
1104
This function should be called when the bfd state saved by
1105
bfd_preserve_save is no longer needed.  ie. when the back-end object_p
1106
function returns with success.
1107
 
1108
2.3.1.20 `bfd_emul_get_maxpagesize'
1109
...................................
1110
 
1111
*Synopsis*
1112
     bfd_vma bfd_emul_get_maxpagesize (const char *);
1113
   *Description*
1114
Returns the maximum page size, in bytes, as determined by emulation.
1115
 
1116
   *Returns*
1117
Returns the maximum page size in bytes for ELF, 0 otherwise.
1118
 
1119
2.3.1.21 `bfd_emul_set_maxpagesize'
1120
...................................
1121
 
1122
*Synopsis*
1123
     void bfd_emul_set_maxpagesize (const char *, bfd_vma);
1124
   *Description*
1125
For ELF, set the maximum page size for the emulation.  It is a no-op
1126
for other formats.
1127
 
1128
2.3.1.22 `bfd_emul_get_commonpagesize'
1129
......................................
1130
 
1131
*Synopsis*
1132
     bfd_vma bfd_emul_get_commonpagesize (const char *);
1133
   *Description*
1134
Returns the common page size, in bytes, as determined by emulation.
1135
 
1136
   *Returns*
1137
Returns the common page size in bytes for ELF, 0 otherwise.
1138
 
1139
2.3.1.23 `bfd_emul_set_commonpagesize'
1140
......................................
1141
 
1142
*Synopsis*
1143
     void bfd_emul_set_commonpagesize (const char *, bfd_vma);
1144
   *Description*
1145
For ELF, set the common page size for the emulation.  It is a no-op for
1146
other formats.
1147
 
1148
2.3.1.24 `bfd_demangle'
1149
.......................
1150
 
1151
*Synopsis*
1152
     char *bfd_demangle (bfd *, const char *, int);
1153
   *Description*
1154
Wrapper around cplus_demangle.  Strips leading underscores and other
1155
such chars that would otherwise confuse the demangler.  If passed a g++
1156
v3 ABI mangled name, returns a buffer allocated with malloc holding the
1157
demangled name.  Returns NULL otherwise and on memory alloc failure.
1158
 
1159
2.3.1.25 `struct bfd_iovec'
1160
...........................
1161
 
1162
*Description*
1163
The `struct bfd_iovec' contains the internal file I/O class.  Each
1164
`BFD' has an instance of this class and all file I/O is routed through
1165
it (it is assumed that the instance implements all methods listed
1166
below).
1167
     struct bfd_iovec
1168
     {
1169
       /* To avoid problems with macros, a "b" rather than "f"
1170
          prefix is prepended to each method name.  */
1171
       /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
1172
          bytes starting at PTR.  Return the number of bytes actually
1173
          transfered (a read past end-of-file returns less than NBYTES),
1174
          or -1 (setting `bfd_error') if an error occurs.  */
1175
       file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
1176
       file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
1177
                           file_ptr nbytes);
1178
       /* Return the current IOSTREAM file offset, or -1 (setting `bfd_error'
1179
          if an error occurs.  */
1180
       file_ptr (*btell) (struct bfd *abfd);
1181
       /* For the following, on successful completion a value of 0 is returned.
1182
          Otherwise, a value of -1 is returned (and  `bfd_error' is set).  */
1183
       int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
1184
       bfd_boolean (*bclose) (struct bfd *abfd);
1185
       int (*bflush) (struct bfd *abfd);
1186
       int (*bstat) (struct bfd *abfd, struct stat *sb);
1187
       /* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are the usual
1188
          mmap parameter, except that LEN and OFFSET do not need to be page
1189
          aligned.  Returns (void *)-1 on failure, mmapped address on success.
1190
          Also write in MAP_ADDR the address of the page aligned buffer and in
1191
          MAP_LEN the size mapped (a page multiple).  Use unmap with MAP_ADDR and
1192
          MAP_LEN to unmap.  */
1193
       void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
1194
                       int prot, int flags, file_ptr offset,
1195
                       void **map_addr, bfd_size_type *map_len);
1196
     };
1197
     extern const struct bfd_iovec _bfd_memory_iovec;
1198
 
1199
2.3.1.26 `bfd_get_mtime'
1200
........................
1201
 
1202
*Synopsis*
1203
     long bfd_get_mtime (bfd *abfd);
1204
   *Description*
1205
Return the file modification time (as read from the file system, or
1206
from the archive header for archive members).
1207
 
1208
2.3.1.27 `bfd_get_size'
1209
.......................
1210
 
1211
*Synopsis*
1212
     file_ptr bfd_get_size (bfd *abfd);
1213
   *Description*
1214
Return the file size (as read from file system) for the file associated
1215
with BFD ABFD.
1216
 
1217
   The initial motivation for, and use of, this routine is not so we
1218
can get the exact size of the object the BFD applies to, since that
1219
might not be generally possible (archive members for example).  It
1220
would be ideal if someone could eventually modify it so that such
1221
results were guaranteed.
1222
 
1223
   Instead, we want to ask questions like "is this NNN byte sized
1224
object I'm about to try read from file offset YYY reasonable?"  As as
1225
example of where we might do this, some object formats use string
1226
tables for which the first `sizeof (long)' bytes of the table contain
1227
the size of the table itself, including the size bytes.  If an
1228
application tries to read what it thinks is one of these string tables,
1229
without some way to validate the size, and for some reason the size is
1230
wrong (byte swapping error, wrong location for the string table, etc.),
1231
the only clue is likely to be a read error when it tries to read the
1232
table, or a "virtual memory exhausted" error when it tries to allocate
1233
15 bazillon bytes of space for the 15 bazillon byte table it is about
1234
to read.  This function at least allows us to answer the question, "is
1235
the size reasonable?".
1236
 
1237
2.3.1.28 `bfd_mmap'
1238
...................
1239
 
1240
*Synopsis*
1241
     void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
1242
         int prot, int flags, file_ptr offset,
1243
         void **map_addr, bfd_size_type *map_len);
1244
   *Description*
1245
Return mmap()ed region of the file, if possible and implemented.  LEN
1246
and OFFSET do not need to be page aligned.  The page aligned address
1247
and length are written to MAP_ADDR and MAP_LEN.
1248
 
1249
* Menu:
1250
 
1251
* Memory Usage::
1252
* Initialization::
1253
* Sections::
1254
* Symbols::
1255
* Archives::
1256
* Formats::
1257
* Relocations::
1258
* Core Files::
1259
* Targets::
1260
* Architectures::
1261
* Opening and Closing::
1262
* Internal::
1263
* File Caching::
1264
* Linker Functions::
1265
* Hash Tables::
1266
 
1267

1268
File: bfd.info,  Node: Memory Usage,  Next: Initialization,  Prev: BFD front end,  Up: BFD front end
1269
 
1270
2.4 Memory Usage
1271
================
1272
 
1273
BFD keeps all of its internal structures in obstacks. There is one
1274
obstack per open BFD file, into which the current state is stored. When
1275
a BFD is closed, the obstack is deleted, and so everything which has
1276
been allocated by BFD for the closing file is thrown away.
1277
 
1278
   BFD does not free anything created by an application, but pointers
1279
into `bfd' structures become invalid on a `bfd_close'; for example,
1280
after a `bfd_close' the vector passed to `bfd_canonicalize_symtab' is
1281
still around, since it has been allocated by the application, but the
1282
data that it pointed to are lost.
1283
 
1284
   The general rule is to not close a BFD until all operations dependent
1285
upon data from the BFD have been completed, or all the data from within
1286
the file has been copied. To help with the management of memory, there
1287
is a function (`bfd_alloc_size') which returns the number of bytes in
1288
obstacks associated with the supplied BFD. This could be used to select
1289
the greediest open BFD, close it to reclaim the memory, perform some
1290
operation and reopen the BFD again, to get a fresh copy of the data
1291
structures.
1292
 
1293

1294
File: bfd.info,  Node: Initialization,  Next: Sections,  Prev: Memory Usage,  Up: BFD front end
1295
 
1296
2.5 Initialization
1297
==================
1298
 
1299
2.5.1 Initialization functions
1300
------------------------------
1301
 
1302
These are the functions that handle initializing a BFD.
1303
 
1304
2.5.1.1 `bfd_init'
1305
..................
1306
 
1307
*Synopsis*
1308
     void bfd_init (void);
1309
   *Description*
1310
This routine must be called before any other BFD function to initialize
1311
magical internal data structures.
1312
 
1313

1314
File: bfd.info,  Node: Sections,  Next: Symbols,  Prev: Initialization,  Up: BFD front end
1315
 
1316
2.6 Sections
1317
============
1318
 
1319
The raw data contained within a BFD is maintained through the section
1320
abstraction.  A single BFD may have any number of sections.  It keeps
1321
hold of them by pointing to the first; each one points to the next in
1322
the list.
1323
 
1324
   Sections are supported in BFD in `section.c'.
1325
 
1326
* Menu:
1327
 
1328
* Section Input::
1329
* Section Output::
1330
* typedef asection::
1331
* section prototypes::
1332
 
1333

1334
File: bfd.info,  Node: Section Input,  Next: Section Output,  Prev: Sections,  Up: Sections
1335
 
1336
2.6.1 Section input
1337
-------------------
1338
 
1339
When a BFD is opened for reading, the section structures are created
1340
and attached to the BFD.
1341
 
1342
   Each section has a name which describes the section in the outside
1343
world--for example, `a.out' would contain at least three sections,
1344
called `.text', `.data' and `.bss'.
1345
 
1346
   Names need not be unique; for example a COFF file may have several
1347
sections named `.data'.
1348
 
1349
   Sometimes a BFD will contain more than the "natural" number of
1350
sections. A back end may attach other sections containing constructor
1351
data, or an application may add a section (using `bfd_make_section') to
1352
the sections attached to an already open BFD. For example, the linker
1353
creates an extra section `COMMON' for each input file's BFD to hold
1354
information about common storage.
1355
 
1356
   The raw data is not necessarily read in when the section descriptor
1357
is created. Some targets may leave the data in place until a
1358
`bfd_get_section_contents' call is made. Other back ends may read in
1359
all the data at once.  For example, an S-record file has to be read
1360
once to determine the size of the data. An IEEE-695 file doesn't
1361
contain raw data in sections, but data and relocation expressions
1362
intermixed, so the data area has to be parsed to get out the data and
1363
relocations.
1364
 
1365

1366
File: bfd.info,  Node: Section Output,  Next: typedef asection,  Prev: Section Input,  Up: Sections
1367
 
1368
2.6.2 Section output
1369
--------------------
1370
 
1371
To write a new object style BFD, the various sections to be written
1372
have to be created. They are attached to the BFD in the same way as
1373
input sections; data is written to the sections using
1374
`bfd_set_section_contents'.
1375
 
1376
   Any program that creates or combines sections (e.g., the assembler
1377
and linker) must use the `asection' fields `output_section' and
1378
`output_offset' to indicate the file sections to which each section
1379
must be written.  (If the section is being created from scratch,
1380
`output_section' should probably point to the section itself and
1381
`output_offset' should probably be zero.)
1382
 
1383
   The data to be written comes from input sections attached (via
1384
`output_section' pointers) to the output sections.  The output section
1385
structure can be considered a filter for the input section: the output
1386
section determines the vma of the output data and the name, but the
1387
input section determines the offset into the output section of the data
1388
to be written.
1389
 
1390
   E.g., to create a section "O", starting at 0x100, 0x123 long,
1391
containing two subsections, "A" at offset 0x0 (i.e., at vma 0x100) and
1392
"B" at offset 0x20 (i.e., at vma 0x120) the `asection' structures would
1393
look like:
1394
 
1395
        section name          "A"
1396
          output_offset   0x00
1397
          size            0x20
1398
          output_section ----------->  section name    "O"
1399
                                  |    vma             0x100
1400
        section name          "B" |    size            0x123
1401
          output_offset   0x20    |
1402
          size            0x103   |
1403
          output_section  --------|
1404
 
1405
2.6.3 Link orders
1406
-----------------
1407
 
1408
The data within a section is stored in a "link_order".  These are much
1409
like the fixups in `gas'.  The link_order abstraction allows a section
1410
to grow and shrink within itself.
1411
 
1412
   A link_order knows how big it is, and which is the next link_order
1413
and where the raw data for it is; it also points to a list of
1414
relocations which apply to it.
1415
 
1416
   The link_order is used by the linker to perform relaxing on final
1417
code.  The compiler creates code which is as big as necessary to make
1418
it work without relaxing, and the user can select whether to relax.
1419
Sometimes relaxing takes a lot of time.  The linker runs around the
1420
relocations to see if any are attached to data which can be shrunk, if
1421
so it does it on a link_order by link_order basis.
1422
 
1423

1424
File: bfd.info,  Node: typedef asection,  Next: section prototypes,  Prev: Section Output,  Up: Sections
1425
 
1426
2.6.4 typedef asection
1427
----------------------
1428
 
1429
Here is the section structure:
1430
 
1431
 
1432
     typedef struct bfd_section
1433
     {
1434
       /* The name of the section; the name isn't a copy, the pointer is
1435
          the same as that passed to bfd_make_section.  */
1436
       const char *name;
1437
 
1438
       /* A unique sequence number.  */
1439
       int id;
1440
 
1441
       /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
1442
       int index;
1443
 
1444
       /* The next section in the list belonging to the BFD, or NULL.  */
1445
       struct bfd_section *next;
1446
 
1447
       /* The previous section in the list belonging to the BFD, or NULL.  */
1448
       struct bfd_section *prev;
1449
 
1450
       /* The field flags contains attributes of the section. Some
1451
          flags are read in from the object file, and some are
1452
          synthesized from other information.  */
1453
       flagword flags;
1454
 
1455
     #define SEC_NO_FLAGS   0x000
1456
 
1457
       /* Tells the OS to allocate space for this section when loading.
1458
          This is clear for a section containing debug information only.  */
1459
     #define SEC_ALLOC      0x001
1460
 
1461
       /* Tells the OS to load the section from the file when loading.
1462
          This is clear for a .bss section.  */
1463
     #define SEC_LOAD       0x002
1464
 
1465
       /* The section contains data still to be relocated, so there is
1466
          some relocation information too.  */
1467
     #define SEC_RELOC      0x004
1468
 
1469
       /* A signal to the OS that the section contains read only data.  */
1470
     #define SEC_READONLY   0x008
1471
 
1472
       /* The section contains code only.  */
1473
     #define SEC_CODE       0x010
1474
 
1475
       /* The section contains data only.  */
1476
     #define SEC_DATA       0x020
1477
 
1478
       /* The section will reside in ROM.  */
1479
     #define SEC_ROM        0x040
1480
 
1481
       /* The section contains constructor information. This section
1482
          type is used by the linker to create lists of constructors and
1483
          destructors used by `g++'. When a back end sees a symbol
1484
          which should be used in a constructor list, it creates a new
1485
          section for the type of name (e.g., `__CTOR_LIST__'), attaches
1486
          the symbol to it, and builds a relocation. To build the lists
1487
          of constructors, all the linker has to do is catenate all the
1488
          sections called `__CTOR_LIST__' and relocate the data
1489
          contained within - exactly the operations it would peform on
1490
          standard data.  */
1491
     #define SEC_CONSTRUCTOR 0x080
1492
 
1493
       /* The section has contents - a data section could be
1494
          `SEC_ALLOC' | `SEC_HAS_CONTENTS'; a debug section could be
1495
          `SEC_HAS_CONTENTS'  */
1496
     #define SEC_HAS_CONTENTS 0x100
1497
 
1498
       /* An instruction to the linker to not output the section
1499
          even if it has information which would normally be written.  */
1500
     #define SEC_NEVER_LOAD 0x200
1501
 
1502
       /* The section contains thread local data.  */
1503
     #define SEC_THREAD_LOCAL 0x400
1504
 
1505
       /* The section has GOT references.  This flag is only for the
1506
          linker, and is currently only used by the elf32-hppa back end.
1507
          It will be set if global offset table references were detected
1508
          in this section, which indicate to the linker that the section
1509
          contains PIC code, and must be handled specially when doing a
1510
          static link.  */
1511
     #define SEC_HAS_GOT_REF 0x800
1512
 
1513
       /* The section contains common symbols (symbols may be defined
1514
          multiple times, the value of a symbol is the amount of
1515
          space it requires, and the largest symbol value is the one
1516
          used).  Most targets have exactly one of these (which we
1517
          translate to bfd_com_section_ptr), but ECOFF has two.  */
1518
     #define SEC_IS_COMMON 0x1000
1519
 
1520
       /* The section contains only debugging information.  For
1521
          example, this is set for ELF .debug and .stab sections.
1522
          strip tests this flag to see if a section can be
1523
          discarded.  */
1524
     #define SEC_DEBUGGING 0x2000
1525
 
1526
       /* The contents of this section are held in memory pointed to
1527
          by the contents field.  This is checked by bfd_get_section_contents,
1528
          and the data is retrieved from memory if appropriate.  */
1529
     #define SEC_IN_MEMORY 0x4000
1530
 
1531
       /* The contents of this section are to be excluded by the
1532
          linker for executable and shared objects unless those
1533
          objects are to be further relocated.  */
1534
     #define SEC_EXCLUDE 0x8000
1535
 
1536
       /* The contents of this section are to be sorted based on the sum of
1537
          the symbol and addend values specified by the associated relocation
1538
          entries.  Entries without associated relocation entries will be
1539
          appended to the end of the section in an unspecified order.  */
1540
     #define SEC_SORT_ENTRIES 0x10000
1541
 
1542
       /* When linking, duplicate sections of the same name should be
1543
          discarded, rather than being combined into a single section as
1544
          is usually done.  This is similar to how common symbols are
1545
          handled.  See SEC_LINK_DUPLICATES below.  */
1546
     #define SEC_LINK_ONCE 0x20000
1547
 
1548
       /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
1549
          should handle duplicate sections.  */
1550
     #define SEC_LINK_DUPLICATES 0xc0000
1551
 
1552
       /* This value for SEC_LINK_DUPLICATES means that duplicate
1553
          sections with the same name should simply be discarded.  */
1554
     #define SEC_LINK_DUPLICATES_DISCARD 0x0
1555
 
1556
       /* This value for SEC_LINK_DUPLICATES means that the linker
1557
          should warn if there are any duplicate sections, although
1558
          it should still only link one copy.  */
1559
     #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000
1560
 
1561
       /* This value for SEC_LINK_DUPLICATES means that the linker
1562
          should warn if any duplicate sections are a different size.  */
1563
     #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000
1564
 
1565
       /* This value for SEC_LINK_DUPLICATES means that the linker
1566
          should warn if any duplicate sections contain different
1567
          contents.  */
1568
     #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
1569
       (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
1570
 
1571
       /* This section was created by the linker as part of dynamic
1572
          relocation or other arcane processing.  It is skipped when
1573
          going through the first-pass output, trusting that someone
1574
          else up the line will take care of it later.  */
1575
     #define SEC_LINKER_CREATED 0x100000
1576
 
1577
       /* This section should not be subject to garbage collection.
1578
          Also set to inform the linker that this section should not be
1579
          listed in the link map as discarded.  */
1580
     #define SEC_KEEP 0x200000
1581
 
1582
       /* This section contains "short" data, and should be placed
1583
          "near" the GP.  */
1584
     #define SEC_SMALL_DATA 0x400000
1585
 
1586
       /* Attempt to merge identical entities in the section.
1587
          Entity size is given in the entsize field.  */
1588
     #define SEC_MERGE 0x800000
1589
 
1590
       /* If given with SEC_MERGE, entities to merge are zero terminated
1591
          strings where entsize specifies character size instead of fixed
1592
          size entries.  */
1593
     #define SEC_STRINGS 0x1000000
1594
 
1595
       /* This section contains data about section groups.  */
1596
     #define SEC_GROUP 0x2000000
1597
 
1598
       /* The section is a COFF shared library section.  This flag is
1599
          only for the linker.  If this type of section appears in
1600
          the input file, the linker must copy it to the output file
1601
          without changing the vma or size.  FIXME: Although this
1602
          was originally intended to be general, it really is COFF
1603
          specific (and the flag was renamed to indicate this).  It
1604
          might be cleaner to have some more general mechanism to
1605
          allow the back end to control what the linker does with
1606
          sections.  */
1607
     #define SEC_COFF_SHARED_LIBRARY 0x4000000
1608
 
1609
       /* This input section should be copied to output in reverse order
1610
          as an array of pointers.  This is for ELF linker internal use
1611
          only.  */
1612
     #define SEC_ELF_REVERSE_COPY 0x4000000
1613
 
1614
       /* This section contains data which may be shared with other
1615
          executables or shared objects. This is for COFF only.  */
1616
     #define SEC_COFF_SHARED 0x8000000
1617
 
1618
       /* When a section with this flag is being linked, then if the size of
1619
          the input section is less than a page, it should not cross a page
1620
          boundary.  If the size of the input section is one page or more,
1621
          it should be aligned on a page boundary.  This is for TI
1622
          TMS320C54X only.  */
1623
     #define SEC_TIC54X_BLOCK 0x10000000
1624
 
1625
       /* Conditionally link this section; do not link if there are no
1626
          references found to any symbol in the section.  This is for TI
1627
          TMS320C54X only.  */
1628
     #define SEC_TIC54X_CLINK 0x20000000
1629
 
1630
       /* Indicate that section has the no read flag set. This happens
1631
          when memory read flag isn't set. */
1632
     #define SEC_COFF_NOREAD 0x40000000
1633
 
1634
       /*  End of section flags.  */
1635
 
1636
       /* Some internal packed boolean fields.  */
1637
 
1638
       /* See the vma field.  */
1639
       unsigned int user_set_vma : 1;
1640
 
1641
       /* A mark flag used by some of the linker backends.  */
1642
       unsigned int linker_mark : 1;
1643
 
1644
       /* Another mark flag used by some of the linker backends.  Set for
1645
          output sections that have an input section.  */
1646
       unsigned int linker_has_input : 1;
1647
 
1648
       /* Mark flag used by some linker backends for garbage collection.  */
1649
       unsigned int gc_mark : 1;
1650
 
1651
       /* Section compression status.  */
1652
       unsigned int compress_status : 2;
1653
     #define COMPRESS_SECTION_NONE    0
1654
     #define COMPRESS_SECTION_DONE    1
1655
     #define DECOMPRESS_SECTION_SIZED 2
1656
 
1657
       /* The following flags are used by the ELF linker. */
1658
 
1659
       /* Mark sections which have been allocated to segments.  */
1660
       unsigned int segment_mark : 1;
1661
 
1662
       /* Type of sec_info information.  */
1663
       unsigned int sec_info_type:3;
1664
     #define SEC_INFO_TYPE_NONE      0
1665
     #define SEC_INFO_TYPE_STABS     1
1666
     #define SEC_INFO_TYPE_MERGE     2
1667
     #define SEC_INFO_TYPE_EH_FRAME  3
1668
     #define SEC_INFO_TYPE_JUST_SYMS 4
1669
 
1670
       /* Nonzero if this section uses RELA relocations, rather than REL.  */
1671
       unsigned int use_rela_p:1;
1672
 
1673
       /* Bits used by various backends.  The generic code doesn't touch
1674
          these fields.  */
1675
 
1676
       unsigned int sec_flg0:1;
1677
       unsigned int sec_flg1:1;
1678
       unsigned int sec_flg2:1;
1679
       unsigned int sec_flg3:1;
1680
       unsigned int sec_flg4:1;
1681
       unsigned int sec_flg5:1;
1682
 
1683
       /* End of internal packed boolean fields.  */
1684
 
1685
       /*  The virtual memory address of the section - where it will be
1686
           at run time.  The symbols are relocated against this.  The
1687
           user_set_vma flag is maintained by bfd; if it's not set, the
1688
           backend can assign addresses (for example, in `a.out', where
1689
           the default address for `.data' is dependent on the specific
1690
           target and various flags).  */
1691
       bfd_vma vma;
1692
 
1693
       /*  The load address of the section - where it would be in a
1694
           rom image; really only used for writing section header
1695
           information.  */
1696
       bfd_vma lma;
1697
 
1698
       /* The size of the section in octets, as it will be output.
1699
          Contains a value even if the section has no contents (e.g., the
1700
          size of `.bss').  */
1701
       bfd_size_type size;
1702
 
1703
       /* For input sections, the original size on disk of the section, in
1704
          octets.  This field should be set for any section whose size is
1705
          changed by linker relaxation.  It is required for sections where
1706
          the linker relaxation scheme doesn't cache altered section and
1707
          reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
1708
          targets), and thus the original size needs to be kept to read the
1709
          section multiple times.  For output sections, rawsize holds the
1710
          section size calculated on a previous linker relaxation pass.  */
1711
       bfd_size_type rawsize;
1712
 
1713
       /* The compressed size of the section in octets.  */
1714
       bfd_size_type compressed_size;
1715
 
1716
       /* Relaxation table. */
1717
       struct relax_table *relax;
1718
 
1719
       /* Count of used relaxation table entries. */
1720
       int relax_count;
1721
 
1722
 
1723
       /* If this section is going to be output, then this value is the
1724
          offset in *bytes* into the output section of the first byte in the
1725
          input section (byte ==> smallest addressable unit on the
1726
          target).  In most cases, if this was going to start at the
1727
          100th octet (8-bit quantity) in the output section, this value
1728
          would be 100.  However, if the target byte size is 16 bits
1729
          (bfd_octets_per_byte is "2"), this value would be 50.  */
1730
       bfd_vma output_offset;
1731
 
1732
       /* The output section through which to map on output.  */
1733
       struct bfd_section *output_section;
1734
 
1735
       /* The alignment requirement of the section, as an exponent of 2 -
1736
          e.g., 3 aligns to 2^3 (or 8).  */
1737
       unsigned int alignment_power;
1738
 
1739
       /* If an input section, a pointer to a vector of relocation
1740
          records for the data in this section.  */
1741
       struct reloc_cache_entry *relocation;
1742
 
1743
       /* If an output section, a pointer to a vector of pointers to
1744
          relocation records for the data in this section.  */
1745
       struct reloc_cache_entry **orelocation;
1746
 
1747
       /* The number of relocation records in one of the above.  */
1748
       unsigned reloc_count;
1749
 
1750
       /* Information below is back end specific - and not always used
1751
          or updated.  */
1752
 
1753
       /* File position of section data.  */
1754
       file_ptr filepos;
1755
 
1756
       /* File position of relocation info.  */
1757
       file_ptr rel_filepos;
1758
 
1759
       /* File position of line data.  */
1760
       file_ptr line_filepos;
1761
 
1762
       /* Pointer to data for applications.  */
1763
       void *userdata;
1764
 
1765
       /* If the SEC_IN_MEMORY flag is set, this points to the actual
1766
          contents.  */
1767
       unsigned char *contents;
1768
 
1769
       /* Attached line number information.  */
1770
       alent *lineno;
1771
 
1772
       /* Number of line number records.  */
1773
       unsigned int lineno_count;
1774
 
1775
       /* Entity size for merging purposes.  */
1776
       unsigned int entsize;
1777
 
1778
       /* Points to the kept section if this section is a link-once section,
1779
          and is discarded.  */
1780
       struct bfd_section *kept_section;
1781
 
1782
       /* When a section is being output, this value changes as more
1783
          linenumbers are written out.  */
1784
       file_ptr moving_line_filepos;
1785
 
1786
       /* What the section number is in the target world.  */
1787
       int target_index;
1788
 
1789
       void *used_by_bfd;
1790
 
1791
       /* If this is a constructor section then here is a list of the
1792
          relocations created to relocate items within it.  */
1793
       struct relent_chain *constructor_chain;
1794
 
1795
       /* The BFD which owns the section.  */
1796
       bfd *owner;
1797
 
1798
       /* A symbol which points at this section only.  */
1799
       struct bfd_symbol *symbol;
1800
       struct bfd_symbol **symbol_ptr_ptr;
1801
 
1802
       /* Early in the link process, map_head and map_tail are used to build
1803
          a list of input sections attached to an output section.  Later,
1804
          output sections use these fields for a list of bfd_link_order
1805
          structs.  */
1806
       union {
1807
         struct bfd_link_order *link_order;
1808
         struct bfd_section *s;
1809
       } map_head, map_tail;
1810
     } asection;
1811
 
1812
     /* Relax table contains information about instructions which can
1813
        be removed by relaxation -- replacing a long address with a
1814
        short address.  */
1815
     struct relax_table {
1816
       /* Address where bytes may be deleted. */
1817
       bfd_vma addr;
1818
 
1819
       /* Number of bytes to be deleted.  */
1820
       int size;
1821
     };
1822
 
1823
     /* These sections are global, and are managed by BFD.  The application
1824
        and target back end are not permitted to change the values in
1825
        these sections.  */
1826
     extern asection std_section[4];
1827
 
1828
     #define BFD_ABS_SECTION_NAME "*ABS*"
1829
     #define BFD_UND_SECTION_NAME "*UND*"
1830
     #define BFD_COM_SECTION_NAME "*COM*"
1831
     #define BFD_IND_SECTION_NAME "*IND*"
1832
 
1833
     /* Pointer to the common section.  */
1834
     #define bfd_com_section_ptr (&std_section[0])
1835
     /* Pointer to the undefined section.  */
1836
     #define bfd_und_section_ptr (&std_section[1])
1837
     /* Pointer to the absolute section.  */
1838
     #define bfd_abs_section_ptr (&std_section[2])
1839
     /* Pointer to the indirect section.  */
1840
     #define bfd_ind_section_ptr (&std_section[3])
1841
 
1842
     #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
1843
     #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
1844
     #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
1845
 
1846
     #define bfd_is_const_section(SEC)              \
1847
      (   ((SEC) == bfd_abs_section_ptr)            \
1848
       || ((SEC) == bfd_und_section_ptr)            \
1849
       || ((SEC) == bfd_com_section_ptr)            \
1850
       || ((SEC) == bfd_ind_section_ptr))
1851
 
1852
     /* Macros to handle insertion and deletion of a bfd's sections.  These
1853
        only handle the list pointers, ie. do not adjust section_count,
1854
        target_index etc.  */
1855
     #define bfd_section_list_remove(ABFD, S) \
1856
       do                                                   \
1857
         {                                                  \
1858
           asection *_s = S;                                \
1859
           asection *_next = _s->next;                      \
1860
           asection *_prev = _s->prev;                      \
1861
           if (_prev)                                       \
1862
             _prev->next = _next;                           \
1863
           else                                             \
1864
             (ABFD)->sections = _next;                      \
1865
           if (_next)                                       \
1866
             _next->prev = _prev;                           \
1867
           else                                             \
1868
             (ABFD)->section_last = _prev;                  \
1869
         }                                                  \
1870
       while (0)
1871
     #define bfd_section_list_append(ABFD, S) \
1872
       do                                                   \
1873
         {                                                  \
1874
           asection *_s = S;                                \
1875
           bfd *_abfd = ABFD;                               \
1876
           _s->next = NULL;                                 \
1877
           if (_abfd->section_last)                         \
1878
             {                                              \
1879
               _s->prev = _abfd->section_last;              \
1880
               _abfd->section_last->next = _s;              \
1881
             }                                              \
1882
           else                                             \
1883
             {                                              \
1884
               _s->prev = NULL;                             \
1885
               _abfd->sections = _s;                        \
1886
             }                                              \
1887
           _abfd->section_last = _s;                        \
1888
         }                                                  \
1889
       while (0)
1890
     #define bfd_section_list_prepend(ABFD, S) \
1891
       do                                                   \
1892
         {                                                  \
1893
           asection *_s = S;                                \
1894
           bfd *_abfd = ABFD;                               \
1895
           _s->prev = NULL;                                 \
1896
           if (_abfd->sections)                             \
1897
             {                                              \
1898
               _s->next = _abfd->sections;                  \
1899
               _abfd->sections->prev = _s;                  \
1900
             }                                              \
1901
           else                                             \
1902
             {                                              \
1903
               _s->next = NULL;                             \
1904
               _abfd->section_last = _s;                    \
1905
             }                                              \
1906
           _abfd->sections = _s;                            \
1907
         }                                                  \
1908
       while (0)
1909
     #define bfd_section_list_insert_after(ABFD, A, S) \
1910
       do                                                   \
1911
         {                                                  \
1912
           asection *_a = A;                                \
1913
           asection *_s = S;                                \
1914
           asection *_next = _a->next;                      \
1915
           _s->next = _next;                                \
1916
           _s->prev = _a;                                   \
1917
           _a->next = _s;                                   \
1918
           if (_next)                                       \
1919
             _next->prev = _s;                              \
1920
           else                                             \
1921
             (ABFD)->section_last = _s;                     \
1922
         }                                                  \
1923
       while (0)
1924
     #define bfd_section_list_insert_before(ABFD, B, S) \
1925
       do                                                   \
1926
         {                                                  \
1927
           asection *_b = B;                                \
1928
           asection *_s = S;                                \
1929
           asection *_prev = _b->prev;                      \
1930
           _s->prev = _prev;                                \
1931
           _s->next = _b;                                   \
1932
           _b->prev = _s;                                   \
1933
           if (_prev)                                       \
1934
             _prev->next = _s;                              \
1935
           else                                             \
1936
             (ABFD)->sections = _s;                         \
1937
         }                                                  \
1938
       while (0)
1939
     #define bfd_section_removed_from_list(ABFD, S) \
1940
       ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
1941
 
1942
     #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
1943
       /* name, id,  index, next, prev, flags, user_set_vma,            */  \
1944
       { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
1945
                                                                            \
1946
       /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
1947
          0,           0,                1,       0,                        \
1948
                                                                            \
1949
       /* segment_mark, sec_info_type, use_rela_p,                      */  \
1950
          0,            0,             0,                                   \
1951
                                                                            \
1952
       /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,   */  \
1953
          0,        0,        0,        0,        0,        0,              \
1954
                                                                            \
1955
       /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */  \
1956
          0,   0,   0,    0,       0,               0,     0,               \
1957
                                                                            \
1958
       /* output_offset, output_section, alignment_power,               */  \
1959
          0,             &SEC,           0,                                 \
1960
                                                                            \
1961
       /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
1962
          NULL,       NULL,        0,           0,       0,                 \
1963
                                                                            \
1964
       /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
1965
          0,            NULL,     NULL,     NULL,   0,                      \
1966
                                                                            \
1967
       /* entsize, kept_section, moving_line_filepos,                    */ \
1968
          0,       NULL,          0,                                        \
1969
                                                                            \
1970
       /* target_index, used_by_bfd, constructor_chain, owner,          */  \
1971
          0,            NULL,        NULL,              NULL,               \
1972
                                                                            \
1973
       /* symbol,                    symbol_ptr_ptr,                    */  \
1974
          (struct bfd_symbol *) SYM, &SEC.symbol,                           \
1975
                                                                            \
1976
       /* map_head, map_tail                                            */  \
1977
          { NULL }, { NULL }                                                \
1978
         }
1979
 
1980

1981
File: bfd.info,  Node: section prototypes,  Prev: typedef asection,  Up: Sections
1982
 
1983
2.6.5 Section prototypes
1984
------------------------
1985
 
1986
These are the functions exported by the section handling part of BFD.
1987
 
1988
2.6.5.1 `bfd_section_list_clear'
1989
................................
1990
 
1991
*Synopsis*
1992
     void bfd_section_list_clear (bfd *);
1993
   *Description*
1994
Clears the section list, and also resets the section count and hash
1995
table entries.
1996
 
1997
2.6.5.2 `bfd_get_section_by_name'
1998
.................................
1999
 
2000
*Synopsis*
2001
     asection *bfd_get_section_by_name (bfd *abfd, const char *name);
2002
   *Description*
2003
Return the most recently created section attached to ABFD named NAME.
2004
Return NULL if no such section exists.
2005
 
2006
2.6.5.3 `bfd_get_next_section_by_name'
2007
......................................
2008
 
2009
*Synopsis*
2010
     asection *bfd_get_next_section_by_name (asection *sec);
2011
   *Description*
2012
Given SEC is a section returned by `bfd_get_section_by_name', return
2013
the next most recently created section attached to the same BFD with
2014
the same name.  Return NULL if no such section exists.
2015
 
2016
2.6.5.4 `bfd_get_linker_section'
2017
................................
2018
 
2019
*Synopsis*
2020
     asection *bfd_get_linker_section (bfd *abfd, const char *name);
2021
   *Description*
2022
Return the linker created section attached to ABFD named NAME.  Return
2023
NULL if no such section exists.
2024
 
2025
2.6.5.5 `bfd_get_section_by_name_if'
2026
....................................
2027
 
2028
*Synopsis*
2029
     asection *bfd_get_section_by_name_if
2030
        (bfd *abfd,
2031
         const char *name,
2032
         bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
2033
         void *obj);
2034
   *Description*
2035
Call the provided function FUNC for each section attached to the BFD
2036
ABFD whose name matches NAME, passing OBJ as an argument. The function
2037
will be called as if by
2038
 
2039
            func (abfd, the_section, obj);
2040
 
2041
   It returns the first section for which FUNC returns true, otherwise
2042
`NULL'.
2043
 
2044
2.6.5.6 `bfd_get_unique_section_name'
2045
.....................................
2046
 
2047
*Synopsis*
2048
     char *bfd_get_unique_section_name
2049
        (bfd *abfd, const char *templat, int *count);
2050
   *Description*
2051
Invent a section name that is unique in ABFD by tacking a dot and a
2052
digit suffix onto the original TEMPLAT.  If COUNT is non-NULL, then it
2053
specifies the first number tried as a suffix to generate a unique name.
2054
The value pointed to by COUNT will be incremented in this case.
2055
 
2056
2.6.5.7 `bfd_make_section_old_way'
2057
..................................
2058
 
2059
*Synopsis*
2060
     asection *bfd_make_section_old_way (bfd *abfd, const char *name);
2061
   *Description*
2062
Create a new empty section called NAME and attach it to the end of the
2063
chain of sections for the BFD ABFD. An attempt to create a section with
2064
a name which is already in use returns its pointer without changing the
2065
section chain.
2066
 
2067
   It has the funny name since this is the way it used to be before it
2068
was rewritten....
2069
 
2070
   Possible errors are:
2071
   * `bfd_error_invalid_operation' - If output has already started for
2072
     this BFD.
2073
 
2074
   * `bfd_error_no_memory' - If memory allocation fails.
2075
 
2076
2.6.5.8 `bfd_make_section_anyway_with_flags'
2077
............................................
2078
 
2079
*Synopsis*
2080
     asection *bfd_make_section_anyway_with_flags
2081
        (bfd *abfd, const char *name, flagword flags);
2082
   *Description*
2083
Create a new empty section called NAME and attach it to the end of the
2084
chain of sections for ABFD.  Create a new section even if there is
2085
already a section with that name.  Also set the attributes of the new
2086
section to the value FLAGS.
2087
 
2088
   Return `NULL' and set `bfd_error' on error; possible errors are:
2089
   * `bfd_error_invalid_operation' - If output has already started for
2090
     ABFD.
2091
 
2092
   * `bfd_error_no_memory' - If memory allocation fails.
2093
 
2094
2.6.5.9 `bfd_make_section_anyway'
2095
.................................
2096
 
2097
*Synopsis*
2098
     asection *bfd_make_section_anyway (bfd *abfd, const char *name);
2099
   *Description*
2100
Create a new empty section called NAME and attach it to the end of the
2101
chain of sections for ABFD.  Create a new section even if there is
2102
already a section with that name.
2103
 
2104
   Return `NULL' and set `bfd_error' on error; possible errors are:
2105
   * `bfd_error_invalid_operation' - If output has already started for
2106
     ABFD.
2107
 
2108
   * `bfd_error_no_memory' - If memory allocation fails.
2109
 
2110
2.6.5.10 `bfd_make_section_with_flags'
2111
......................................
2112
 
2113
*Synopsis*
2114
     asection *bfd_make_section_with_flags
2115
        (bfd *, const char *name, flagword flags);
2116
   *Description*
2117
Like `bfd_make_section_anyway', but return `NULL' (without calling
2118
bfd_set_error ()) without changing the section chain if there is
2119
already a section named NAME.  Also set the attributes of the new
2120
section to the value FLAGS.  If there is an error, return `NULL' and set
2121
`bfd_error'.
2122
 
2123
2.6.5.11 `bfd_make_section'
2124
...........................
2125
 
2126
*Synopsis*
2127
     asection *bfd_make_section (bfd *, const char *name);
2128
   *Description*
2129
Like `bfd_make_section_anyway', but return `NULL' (without calling
2130
bfd_set_error ()) without changing the section chain if there is
2131
already a section named NAME.  If there is an error, return `NULL' and
2132
set `bfd_error'.
2133
 
2134
2.6.5.12 `bfd_set_section_flags'
2135
................................
2136
 
2137
*Synopsis*
2138
     bfd_boolean bfd_set_section_flags
2139
        (bfd *abfd, asection *sec, flagword flags);
2140
   *Description*
2141
Set the attributes of the section SEC in the BFD ABFD to the value
2142
FLAGS. Return `TRUE' on success, `FALSE' on error. Possible error
2143
returns are:
2144
 
2145
   * `bfd_error_invalid_operation' - The section cannot have one or
2146
     more of the attributes requested. For example, a .bss section in
2147
     `a.out' may not have the `SEC_HAS_CONTENTS' field set.
2148
 
2149
2.6.5.13 `bfd_rename_section'
2150
.............................
2151
 
2152
*Synopsis*
2153
     void bfd_rename_section
2154
        (bfd *abfd, asection *sec, const char *newname);
2155
   *Description*
2156
Rename section SEC in ABFD to NEWNAME.
2157
 
2158
2.6.5.14 `bfd_map_over_sections'
2159
................................
2160
 
2161
*Synopsis*
2162
     void bfd_map_over_sections
2163
        (bfd *abfd,
2164
         void (*func) (bfd *abfd, asection *sect, void *obj),
2165
         void *obj);
2166
   *Description*
2167
Call the provided function FUNC for each section attached to the BFD
2168
ABFD, passing OBJ as an argument. The function will be called as if by
2169
 
2170
            func (abfd, the_section, obj);
2171
 
2172
   This is the preferred method for iterating over sections; an
2173
alternative would be to use a loop:
2174
 
2175
               asection *p;
2176
               for (p = abfd->sections; p != NULL; p = p->next)
2177
                  func (abfd, p, ...)
2178
 
2179
2.6.5.15 `bfd_sections_find_if'
2180
...............................
2181
 
2182
*Synopsis*
2183
     asection *bfd_sections_find_if
2184
        (bfd *abfd,
2185
         bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
2186
         void *obj);
2187
   *Description*
2188
Call the provided function OPERATION for each section attached to the
2189
BFD ABFD, passing OBJ as an argument. The function will be called as if
2190
by
2191
 
2192
            operation (abfd, the_section, obj);
2193
 
2194
   It returns the first section for which OPERATION returns true.
2195
 
2196
2.6.5.16 `bfd_set_section_size'
2197
...............................
2198
 
2199
*Synopsis*
2200
     bfd_boolean bfd_set_section_size
2201
        (bfd *abfd, asection *sec, bfd_size_type val);
2202
   *Description*
2203
Set SEC to the size VAL. If the operation is ok, then `TRUE' is
2204
returned, else `FALSE'.
2205
 
2206
   Possible error returns:
2207
   * `bfd_error_invalid_operation' - Writing has started to the BFD, so
2208
     setting the size is invalid.
2209
 
2210
2.6.5.17 `bfd_set_section_contents'
2211
...................................
2212
 
2213
*Synopsis*
2214
     bfd_boolean bfd_set_section_contents
2215
        (bfd *abfd, asection *section, const void *data,
2216
         file_ptr offset, bfd_size_type count);
2217
   *Description*
2218
Sets the contents of the section SECTION in BFD ABFD to the data
2219
starting in memory at DATA. The data is written to the output section
2220
starting at offset OFFSET for COUNT octets.
2221
 
2222
   Normally `TRUE' is returned, else `FALSE'. Possible error returns
2223
are:
2224
   * `bfd_error_no_contents' - The output section does not have the
2225
     `SEC_HAS_CONTENTS' attribute, so nothing can be written to it.
2226
 
2227
   * and some more too
2228
   This routine is front end to the back end function
2229
`_bfd_set_section_contents'.
2230
 
2231
2.6.5.18 `bfd_get_section_contents'
2232
...................................
2233
 
2234
*Synopsis*
2235
     bfd_boolean bfd_get_section_contents
2236
        (bfd *abfd, asection *section, void *location, file_ptr offset,
2237
         bfd_size_type count);
2238
   *Description*
2239
Read data from SECTION in BFD ABFD into memory starting at LOCATION.
2240
The data is read at an offset of OFFSET from the start of the input
2241
section, and is read for COUNT bytes.
2242
 
2243
   If the contents of a constructor with the `SEC_CONSTRUCTOR' flag set
2244
are requested or if the section does not have the `SEC_HAS_CONTENTS'
2245
flag set, then the LOCATION is filled with zeroes. If no errors occur,
2246
`TRUE' is returned, else `FALSE'.
2247
 
2248
2.6.5.19 `bfd_malloc_and_get_section'
2249
.....................................
2250
 
2251
*Synopsis*
2252
     bfd_boolean bfd_malloc_and_get_section
2253
        (bfd *abfd, asection *section, bfd_byte **buf);
2254
   *Description*
2255
Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by
2256
this function.
2257
 
2258
2.6.5.20 `bfd_copy_private_section_data'
2259
........................................
2260
 
2261
*Synopsis*
2262
     bfd_boolean bfd_copy_private_section_data
2263
        (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
2264
   *Description*
2265
Copy private section information from ISEC in the BFD IBFD to the
2266
section OSEC in the BFD OBFD.  Return `TRUE' on success, `FALSE' on
2267
error.  Possible error returns are:
2268
 
2269
   * `bfd_error_no_memory' - Not enough memory exists to create private
2270
     data for OSEC.
2271
 
2272
     #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
2273
          BFD_SEND (obfd, _bfd_copy_private_section_data, \
2274
                    (ibfd, isection, obfd, osection))
2275
 
2276
2.6.5.21 `bfd_generic_is_group_section'
2277
.......................................
2278
 
2279
*Synopsis*
2280
     bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
2281
   *Description*
2282
Returns TRUE if SEC is a member of a group.
2283
 
2284
2.6.5.22 `bfd_generic_discard_group'
2285
....................................
2286
 
2287
*Synopsis*
2288
     bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
2289
   *Description*
2290
Remove all members of GROUP from the output.
2291
 
2292

2293
File: bfd.info,  Node: Symbols,  Next: Archives,  Prev: Sections,  Up: BFD front end
2294
 
2295
2.7 Symbols
2296
===========
2297
 
2298
BFD tries to maintain as much symbol information as it can when it
2299
moves information from file to file. BFD passes information to
2300
applications though the `asymbol' structure. When the application
2301
requests the symbol table, BFD reads the table in the native form and
2302
translates parts of it into the internal format. To maintain more than
2303
the information passed to applications, some targets keep some
2304
information "behind the scenes" in a structure only the particular back
2305
end knows about. For example, the coff back end keeps the original
2306
symbol table structure as well as the canonical structure when a BFD is
2307
read in. On output, the coff back end can reconstruct the output symbol
2308
table so that no information is lost, even information unique to coff
2309
which BFD doesn't know or understand. If a coff symbol table were read,
2310
but were written through an a.out back end, all the coff specific
2311
information would be lost. The symbol table of a BFD is not necessarily
2312
read in until a canonicalize request is made. Then the BFD back end
2313
fills in a table provided by the application with pointers to the
2314
canonical information.  To output symbols, the application provides BFD
2315
with a table of pointers to pointers to `asymbol's. This allows
2316
applications like the linker to output a symbol as it was read, since
2317
the "behind the scenes" information will be still available.
2318
 
2319
* Menu:
2320
 
2321
* Reading Symbols::
2322
* Writing Symbols::
2323
* Mini Symbols::
2324
* typedef asymbol::
2325
* symbol handling functions::
2326
 
2327

2328
File: bfd.info,  Node: Reading Symbols,  Next: Writing Symbols,  Prev: Symbols,  Up: Symbols
2329
 
2330
2.7.1 Reading symbols
2331
---------------------
2332
 
2333
There are two stages to reading a symbol table from a BFD: allocating
2334
storage, and the actual reading process. This is an excerpt from an
2335
application which reads the symbol table:
2336
 
2337
              long storage_needed;
2338
              asymbol **symbol_table;
2339
              long number_of_symbols;
2340
              long i;
2341
 
2342
              storage_needed = bfd_get_symtab_upper_bound (abfd);
2343
 
2344
              if (storage_needed < 0)
2345
                FAIL
2346
 
2347
              if (storage_needed == 0)
2348
                return;
2349
 
2350
              symbol_table = xmalloc (storage_needed);
2351
                ...
2352
              number_of_symbols =
2353
                 bfd_canonicalize_symtab (abfd, symbol_table);
2354
 
2355
              if (number_of_symbols < 0)
2356
                FAIL
2357
 
2358
              for (i = 0; i < number_of_symbols; i++)
2359
                process_symbol (symbol_table[i]);
2360
 
2361
   All storage for the symbols themselves is in an objalloc connected
2362
to the BFD; it is freed when the BFD is closed.
2363
 
2364

2365
File: bfd.info,  Node: Writing Symbols,  Next: Mini Symbols,  Prev: Reading Symbols,  Up: Symbols
2366
 
2367
2.7.2 Writing symbols
2368
---------------------
2369
 
2370
Writing of a symbol table is automatic when a BFD open for writing is
2371
closed. The application attaches a vector of pointers to pointers to
2372
symbols to the BFD being written, and fills in the symbol count. The
2373
close and cleanup code reads through the table provided and performs
2374
all the necessary operations. The BFD output code must always be
2375
provided with an "owned" symbol: one which has come from another BFD,
2376
or one which has been created using `bfd_make_empty_symbol'.  Here is an
2377
example showing the creation of a symbol table with only one element:
2378
 
2379
            #include "sysdep.h"
2380
            #include "bfd.h"
2381
            int main (void)
2382
            {
2383
              bfd *abfd;
2384
              asymbol *ptrs[2];
2385
              asymbol *new;
2386
 
2387
              abfd = bfd_openw ("foo","a.out-sunos-big");
2388
              bfd_set_format (abfd, bfd_object);
2389
              new = bfd_make_empty_symbol (abfd);
2390
              new->name = "dummy_symbol";
2391
              new->section = bfd_make_section_old_way (abfd, ".text");
2392
              new->flags = BSF_GLOBAL;
2393
              new->value = 0x12345;
2394
 
2395
              ptrs[0] = new;
2396
              ptrs[1] = 0;
2397
 
2398
              bfd_set_symtab (abfd, ptrs, 1);
2399
              bfd_close (abfd);
2400
              return 0;
2401
            }
2402
 
2403
            ./makesym
2404
            nm foo
2405
            00012345 A dummy_symbol
2406
 
2407
   Many formats cannot represent arbitrary symbol information; for
2408
instance, the `a.out' object format does not allow an arbitrary number
2409
of sections. A symbol pointing to a section which is not one  of
2410
`.text', `.data' or `.bss' cannot be described.
2411
 
2412

2413
File: bfd.info,  Node: Mini Symbols,  Next: typedef asymbol,  Prev: Writing Symbols,  Up: Symbols
2414
 
2415
2.7.3 Mini Symbols
2416
------------------
2417
 
2418
Mini symbols provide read-only access to the symbol table.  They use
2419
less memory space, but require more time to access.  They can be useful
2420
for tools like nm or objdump, which may have to handle symbol tables of
2421
extremely large executables.
2422
 
2423
   The `bfd_read_minisymbols' function will read the symbols into
2424
memory in an internal form.  It will return a `void *' pointer to a
2425
block of memory, a symbol count, and the size of each symbol.  The
2426
pointer is allocated using `malloc', and should be freed by the caller
2427
when it is no longer needed.
2428
 
2429
   The function `bfd_minisymbol_to_symbol' will take a pointer to a
2430
minisymbol, and a pointer to a structure returned by
2431
`bfd_make_empty_symbol', and return a `asymbol' structure.  The return
2432
value may or may not be the same as the value from
2433
`bfd_make_empty_symbol' which was passed in.
2434
 
2435

2436
File: bfd.info,  Node: typedef asymbol,  Next: symbol handling functions,  Prev: Mini Symbols,  Up: Symbols
2437
 
2438
2.7.4 typedef asymbol
2439
---------------------
2440
 
2441
An `asymbol' has the form:
2442
 
2443
 
2444
     typedef struct bfd_symbol
2445
     {
2446
       /* A pointer to the BFD which owns the symbol. This information
2447
          is necessary so that a back end can work out what additional
2448
          information (invisible to the application writer) is carried
2449
          with the symbol.
2450
 
2451
          This field is *almost* redundant, since you can use section->owner
2452
          instead, except that some symbols point to the global sections
2453
          bfd_{abs,com,und}_section.  This could be fixed by making
2454
          these globals be per-bfd (or per-target-flavor).  FIXME.  */
2455
       struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
2456
 
2457
       /* The text of the symbol. The name is left alone, and not copied; the
2458
          application may not alter it.  */
2459
       const char *name;
2460
 
2461
       /* The value of the symbol.  This really should be a union of a
2462
          numeric value with a pointer, since some flags indicate that
2463
          a pointer to another symbol is stored here.  */
2464
       symvalue value;
2465
 
2466
       /* Attributes of a symbol.  */
2467
     #define BSF_NO_FLAGS           0x00
2468
 
2469
       /* The symbol has local scope; `static' in `C'. The value
2470
          is the offset into the section of the data.  */
2471
     #define BSF_LOCAL              (1 << 0)
2472
 
2473
       /* The symbol has global scope; initialized data in `C'. The
2474
          value is the offset into the section of the data.  */
2475
     #define BSF_GLOBAL             (1 << 1)
2476
 
2477
       /* The symbol has global scope and is exported. The value is
2478
          the offset into the section of the data.  */
2479
     #define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
2480
 
2481
       /* A normal C symbol would be one of:
2482
          `BSF_LOCAL', `BSF_COMMON',  `BSF_UNDEFINED' or
2483
          `BSF_GLOBAL'.  */
2484
 
2485
       /* The symbol is a debugging record. The value has an arbitrary
2486
          meaning, unless BSF_DEBUGGING_RELOC is also set.  */
2487
     #define BSF_DEBUGGING          (1 << 2)
2488
 
2489
       /* The symbol denotes a function entry point.  Used in ELF,
2490
          perhaps others someday.  */
2491
     #define BSF_FUNCTION           (1 << 3)
2492
 
2493
       /* Used by the linker.  */
2494
     #define BSF_KEEP               (1 << 5)
2495
     #define BSF_KEEP_G             (1 << 6)
2496
 
2497
       /* A weak global symbol, overridable without warnings by
2498
          a regular global symbol of the same name.  */
2499
     #define BSF_WEAK               (1 << 7)
2500
 
2501
       /* This symbol was created to point to a section, e.g. ELF's
2502
          STT_SECTION symbols.  */
2503
     #define BSF_SECTION_SYM        (1 << 8)
2504
 
2505
       /* The symbol used to be a common symbol, but now it is
2506
          allocated.  */
2507
     #define BSF_OLD_COMMON         (1 << 9)
2508
 
2509
       /* In some files the type of a symbol sometimes alters its
2510
          location in an output file - ie in coff a `ISFCN' symbol
2511
          which is also `C_EXT' symbol appears where it was
2512
          declared and not at the end of a section.  This bit is set
2513
          by the target BFD part to convey this information.  */
2514
     #define BSF_NOT_AT_END         (1 << 10)
2515
 
2516
       /* Signal that the symbol is the label of constructor section.  */
2517
     #define BSF_CONSTRUCTOR        (1 << 11)
2518
 
2519
       /* Signal that the symbol is a warning symbol.  The name is a
2520
          warning.  The name of the next symbol is the one to warn about;
2521
          if a reference is made to a symbol with the same name as the next
2522
          symbol, a warning is issued by the linker.  */
2523
     #define BSF_WARNING            (1 << 12)
2524
 
2525
       /* Signal that the symbol is indirect.  This symbol is an indirect
2526
          pointer to the symbol with the same name as the next symbol.  */
2527
     #define BSF_INDIRECT           (1 << 13)
2528
 
2529
       /* BSF_FILE marks symbols that contain a file name.  This is used
2530
          for ELF STT_FILE symbols.  */
2531
     #define BSF_FILE               (1 << 14)
2532
 
2533
       /* Symbol is from dynamic linking information.  */
2534
     #define BSF_DYNAMIC            (1 << 15)
2535
 
2536
       /* The symbol denotes a data object.  Used in ELF, and perhaps
2537
          others someday.  */
2538
     #define BSF_OBJECT             (1 << 16)
2539
 
2540
       /* This symbol is a debugging symbol.  The value is the offset
2541
          into the section of the data.  BSF_DEBUGGING should be set
2542
          as well.  */
2543
     #define BSF_DEBUGGING_RELOC    (1 << 17)
2544
 
2545
       /* This symbol is thread local.  Used in ELF.  */
2546
     #define BSF_THREAD_LOCAL       (1 << 18)
2547
 
2548
       /* This symbol represents a complex relocation expression,
2549
          with the expression tree serialized in the symbol name.  */
2550
     #define BSF_RELC               (1 << 19)
2551
 
2552
       /* This symbol represents a signed complex relocation expression,
2553
          with the expression tree serialized in the symbol name.  */
2554
     #define BSF_SRELC              (1 << 20)
2555
 
2556
       /* This symbol was created by bfd_get_synthetic_symtab.  */
2557
     #define BSF_SYNTHETIC          (1 << 21)
2558
 
2559
       /* This symbol is an indirect code object.  Unrelated to BSF_INDIRECT.
2560
          The dynamic linker will compute the value of this symbol by
2561
          calling the function that it points to.  BSF_FUNCTION must
2562
          also be also set.  */
2563
     #define BSF_GNU_INDIRECT_FUNCTION (1 << 22)
2564
       /* This symbol is a globally unique data object.  The dynamic linker
2565
          will make sure that in the entire process there is just one symbol
2566
          with this name and type in use.  BSF_OBJECT must also be set.  */
2567
     #define BSF_GNU_UNIQUE         (1 << 23)
2568
 
2569
       flagword flags;
2570
 
2571
       /* A pointer to the section to which this symbol is
2572
          relative.  This will always be non NULL, there are special
2573
          sections for undefined and absolute symbols.  */
2574
       struct bfd_section *section;
2575
 
2576
       /* Back end special data.  */
2577
       union
2578
         {
2579
           void *p;
2580
           bfd_vma i;
2581
         }
2582
       udata;
2583
     }
2584
     asymbol;
2585
 
2586

2587
File: bfd.info,  Node: symbol handling functions,  Prev: typedef asymbol,  Up: Symbols
2588
 
2589
2.7.5 Symbol handling functions
2590
-------------------------------
2591
 
2592
2.7.5.1 `bfd_get_symtab_upper_bound'
2593
....................................
2594
 
2595
*Description*
2596
Return the number of bytes required to store a vector of pointers to
2597
`asymbols' for all the symbols in the BFD ABFD, including a terminal
2598
NULL pointer. If there are no symbols in the BFD, then return 0.  If an
2599
error occurs, return -1.
2600
     #define bfd_get_symtab_upper_bound(abfd) \
2601
          BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
2602
 
2603
2.7.5.2 `bfd_is_local_label'
2604
............................
2605
 
2606
*Synopsis*
2607
     bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
2608
   *Description*
2609
Return TRUE if the given symbol SYM in the BFD ABFD is a compiler
2610
generated local label, else return FALSE.
2611
 
2612
2.7.5.3 `bfd_is_local_label_name'
2613
.................................
2614
 
2615
*Synopsis*
2616
     bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
2617
   *Description*
2618
Return TRUE if a symbol with the name NAME in the BFD ABFD is a
2619
compiler generated local label, else return FALSE.  This just checks
2620
whether the name has the form of a local label.
2621
     #define bfd_is_local_label_name(abfd, name) \
2622
       BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
2623
 
2624
2.7.5.4 `bfd_is_target_special_symbol'
2625
......................................
2626
 
2627
*Synopsis*
2628
     bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
2629
   *Description*
2630
Return TRUE iff a symbol SYM in the BFD ABFD is something special to
2631
the particular target represented by the BFD.  Such symbols should
2632
normally not be mentioned to the user.
2633
     #define bfd_is_target_special_symbol(abfd, sym) \
2634
       BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
2635
 
2636
2.7.5.5 `bfd_canonicalize_symtab'
2637
.................................
2638
 
2639
*Description*
2640
Read the symbols from the BFD ABFD, and fills in the vector LOCATION
2641
with pointers to the symbols and a trailing NULL.  Return the actual
2642
number of symbol pointers, not including the NULL.
2643
     #define bfd_canonicalize_symtab(abfd, location) \
2644
       BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
2645
 
2646
2.7.5.6 `bfd_set_symtab'
2647
........................
2648
 
2649
*Synopsis*
2650
     bfd_boolean bfd_set_symtab
2651
        (bfd *abfd, asymbol **location, unsigned int count);
2652
   *Description*
2653
Arrange that when the output BFD ABFD is closed, the table LOCATION of
2654
COUNT pointers to symbols will be written.
2655
 
2656
2.7.5.7 `bfd_print_symbol_vandf'
2657
................................
2658
 
2659
*Synopsis*
2660
     void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
2661
   *Description*
2662
Print the value and flags of the SYMBOL supplied to the stream FILE.
2663
 
2664
2.7.5.8 `bfd_make_empty_symbol'
2665
...............................
2666
 
2667
*Description*
2668
Create a new `asymbol' structure for the BFD ABFD and return a pointer
2669
to it.
2670
 
2671
   This routine is necessary because each back end has private
2672
information surrounding the `asymbol'. Building your own `asymbol' and
2673
pointing to it will not create the private information, and will cause
2674
problems later on.
2675
     #define bfd_make_empty_symbol(abfd) \
2676
       BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
2677
 
2678
2.7.5.9 `_bfd_generic_make_empty_symbol'
2679
........................................
2680
 
2681
*Synopsis*
2682
     asymbol *_bfd_generic_make_empty_symbol (bfd *);
2683
   *Description*
2684
Create a new `asymbol' structure for the BFD ABFD and return a pointer
2685
to it.  Used by core file routines, binary back-end and anywhere else
2686
where no private info is needed.
2687
 
2688
2.7.5.10 `bfd_make_debug_symbol'
2689
................................
2690
 
2691
*Description*
2692
Create a new `asymbol' structure for the BFD ABFD, to be used as a
2693
debugging symbol.  Further details of its use have yet to be worked out.
2694
     #define bfd_make_debug_symbol(abfd,ptr,size) \
2695
       BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
2696
 
2697
2.7.5.11 `bfd_decode_symclass'
2698
..............................
2699
 
2700
*Description*
2701
Return a character corresponding to the symbol class of SYMBOL, or '?'
2702
for an unknown class.
2703
 
2704
   *Synopsis*
2705
     int bfd_decode_symclass (asymbol *symbol);
2706
 
2707
2.7.5.12 `bfd_is_undefined_symclass'
2708
....................................
2709
 
2710
*Description*
2711
Returns non-zero if the class symbol returned by bfd_decode_symclass
2712
represents an undefined symbol.  Returns zero otherwise.
2713
 
2714
   *Synopsis*
2715
     bfd_boolean bfd_is_undefined_symclass (int symclass);
2716
 
2717
2.7.5.13 `bfd_symbol_info'
2718
..........................
2719
 
2720
*Description*
2721
Fill in the basic info about symbol that nm needs.  Additional info may
2722
be added by the back-ends after calling this function.
2723
 
2724
   *Synopsis*
2725
     void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
2726
 
2727
2.7.5.14 `bfd_copy_private_symbol_data'
2728
.......................................
2729
 
2730
*Synopsis*
2731
     bfd_boolean bfd_copy_private_symbol_data
2732
        (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
2733
   *Description*
2734
Copy private symbol information from ISYM in the BFD IBFD to the symbol
2735
OSYM in the BFD OBFD.  Return `TRUE' on success, `FALSE' on error.
2736
Possible error returns are:
2737
 
2738
   * `bfd_error_no_memory' - Not enough memory exists to create private
2739
     data for OSEC.
2740
 
2741
     #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
2742
       BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
2743
                 (ibfd, isymbol, obfd, osymbol))
2744
 
2745

2746
File: bfd.info,  Node: Archives,  Next: Formats,  Prev: Symbols,  Up: BFD front end
2747
 
2748
2.8 Archives
2749
============
2750
 
2751
*Description*
2752
An archive (or library) is just another BFD.  It has a symbol table,
2753
although there's not much a user program will do with it.
2754
 
2755
   The big difference between an archive BFD and an ordinary BFD is
2756
that the archive doesn't have sections.  Instead it has a chain of BFDs
2757
that are considered its contents.  These BFDs can be manipulated like
2758
any other.  The BFDs contained in an archive opened for reading will
2759
all be opened for reading.  You may put either input or output BFDs
2760
into an archive opened for output; they will be handled correctly when
2761
the archive is closed.
2762
 
2763
   Use `bfd_openr_next_archived_file' to step through the contents of
2764
an archive opened for input.  You don't have to read the entire archive
2765
if you don't want to!  Read it until you find what you want.
2766
 
2767
   A BFD returned by `bfd_openr_next_archived_file' can be closed
2768
manually with `bfd_close'.  If you do not close it, then a second
2769
iteration through the members of an archive may return the same BFD.
2770
If you close the archive BFD, then all the member BFDs will
2771
automatically be closed as well.
2772
 
2773
   Archive contents of output BFDs are chained through the
2774
`archive_next' pointer in a BFD.  The first one is findable through the
2775
`archive_head' slot of the archive.  Set it with `bfd_set_archive_head'
2776
(q.v.).  A given BFD may be in only one open output archive at a time.
2777
 
2778
   As expected, the BFD archive code is more general than the archive
2779
code of any given environment.  BFD archives may contain files of
2780
different formats (e.g., a.out and coff) and even different
2781
architectures.  You may even place archives recursively into archives!
2782
 
2783
   This can cause unexpected confusion, since some archive formats are
2784
more expressive than others.  For instance, Intel COFF archives can
2785
preserve long filenames; SunOS a.out archives cannot.  If you move a
2786
file from the first to the second format and back again, the filename
2787
may be truncated.  Likewise, different a.out environments have different
2788
conventions as to how they truncate filenames, whether they preserve
2789
directory names in filenames, etc.  When interoperating with native
2790
tools, be sure your files are homogeneous.
2791
 
2792
   Beware: most of these formats do not react well to the presence of
2793
spaces in filenames.  We do the best we can, but can't always handle
2794
this case due to restrictions in the format of archives.  Many Unix
2795
utilities are braindead in regards to spaces and such in filenames
2796
anyway, so this shouldn't be much of a restriction.
2797
 
2798
   Archives are supported in BFD in `archive.c'.
2799
 
2800
2.8.1 Archive functions
2801
-----------------------
2802
 
2803
2.8.1.1 `bfd_get_next_mapent'
2804
.............................
2805
 
2806
*Synopsis*
2807
     symindex bfd_get_next_mapent
2808
        (bfd *abfd, symindex previous, carsym **sym);
2809
   *Description*
2810
Step through archive ABFD's symbol table (if it has one).  Successively
2811
update SYM with the next symbol's information, returning that symbol's
2812
(internal) index into the symbol table.
2813
 
2814
   Supply `BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first
2815
one; returns `BFD_NO_MORE_SYMBOLS' when you've already got the last one.
2816
 
2817
   A `carsym' is a canonical archive symbol.  The only user-visible
2818
element is its name, a null-terminated string.
2819
 
2820
2.8.1.2 `bfd_set_archive_head'
2821
..............................
2822
 
2823
*Synopsis*
2824
     bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
2825
   *Description*
2826
Set the head of the chain of BFDs contained in the archive OUTPUT to
2827
NEW_HEAD.
2828
 
2829
2.8.1.3 `bfd_openr_next_archived_file'
2830
......................................
2831
 
2832
*Synopsis*
2833
     bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
2834
   *Description*
2835
Provided a BFD, ARCHIVE, containing an archive and NULL, open an input
2836
BFD on the first contained element and returns that.  Subsequent calls
2837
should pass the archive and the previous return value to return a
2838
created BFD to the next contained element. NULL is returned when there
2839
are no more.
2840
 
2841

2842
File: bfd.info,  Node: Formats,  Next: Relocations,  Prev: Archives,  Up: BFD front end
2843
 
2844
2.9 File formats
2845
================
2846
 
2847
A format is a BFD concept of high level file contents type. The formats
2848
supported by BFD are:
2849
 
2850
   * `bfd_object'
2851
   The BFD may contain data, symbols, relocations and debug info.
2852
 
2853
   * `bfd_archive'
2854
   The BFD contains other BFDs and an optional index.
2855
 
2856
   * `bfd_core'
2857
   The BFD contains the result of an executable core dump.
2858
 
2859
2.9.1 File format functions
2860
---------------------------
2861
 
2862
2.9.1.1 `bfd_check_format'
2863
..........................
2864
 
2865
*Synopsis*
2866
     bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
2867
   *Description*
2868
Verify if the file attached to the BFD ABFD is compatible with the
2869
format FORMAT (i.e., one of `bfd_object', `bfd_archive' or `bfd_core').
2870
 
2871
   If the BFD has been set to a specific target before the call, only
2872
the named target and format combination is checked. If the target has
2873
not been set, or has been set to `default', then all the known target
2874
backends is interrogated to determine a match.  If the default target
2875
matches, it is used.  If not, exactly one target must recognize the
2876
file, or an error results.
2877
 
2878
   The function returns `TRUE' on success, otherwise `FALSE' with one
2879
of the following error codes:
2880
 
2881
   * `bfd_error_invalid_operation' - if `format' is not one of
2882
     `bfd_object', `bfd_archive' or `bfd_core'.
2883
 
2884
   * `bfd_error_system_call' - if an error occured during a read - even
2885
     some file mismatches can cause bfd_error_system_calls.
2886
 
2887
   * `file_not_recognised' - none of the backends recognised the file
2888
     format.
2889
 
2890
   * `bfd_error_file_ambiguously_recognized' - more than one backend
2891
     recognised the file format.
2892
 
2893
2.9.1.2 `bfd_check_format_matches'
2894
..................................
2895
 
2896
*Synopsis*
2897
     bfd_boolean bfd_check_format_matches
2898
        (bfd *abfd, bfd_format format, char ***matching);
2899
   *Description*
2900
Like `bfd_check_format', except when it returns FALSE with `bfd_errno'
2901
set to `bfd_error_file_ambiguously_recognized'.  In that case, if
2902
MATCHING is not NULL, it will be filled in with a NULL-terminated list
2903
of the names of the formats that matched, allocated with `malloc'.
2904
Then the user may choose a format and try again.
2905
 
2906
   When done with the list that MATCHING points to, the caller should
2907
free it.
2908
 
2909
2.9.1.3 `bfd_set_format'
2910
........................
2911
 
2912
*Synopsis*
2913
     bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
2914
   *Description*
2915
This function sets the file format of the BFD ABFD to the format
2916
FORMAT. If the target set in the BFD does not support the format
2917
requested, the format is invalid, or the BFD is not open for writing,
2918
then an error occurs.
2919
 
2920
2.9.1.4 `bfd_format_string'
2921
...........................
2922
 
2923
*Synopsis*
2924
     const char *bfd_format_string (bfd_format format);
2925
   *Description*
2926
Return a pointer to a const string `invalid', `object', `archive',
2927
`core', or `unknown', depending upon the value of FORMAT.
2928
 
2929

2930
File: bfd.info,  Node: Relocations,  Next: Core Files,  Prev: Formats,  Up: BFD front end
2931
 
2932
2.10 Relocations
2933
================
2934
 
2935
BFD maintains relocations in much the same way it maintains symbols:
2936
they are left alone until required, then read in en-masse and
2937
translated into an internal form.  A common routine
2938
`bfd_perform_relocation' acts upon the canonical form to do the fixup.
2939
 
2940
   Relocations are maintained on a per section basis, while symbols are
2941
maintained on a per BFD basis.
2942
 
2943
   All that a back end has to do to fit the BFD interface is to create
2944
a `struct reloc_cache_entry' for each relocation in a particular
2945
section, and fill in the right bits of the structures.
2946
 
2947
* Menu:
2948
 
2949
* typedef arelent::
2950
* howto manager::
2951
 
2952

2953
File: bfd.info,  Node: typedef arelent,  Next: howto manager,  Prev: Relocations,  Up: Relocations
2954
 
2955
2.10.1 typedef arelent
2956
----------------------
2957
 
2958
This is the structure of a relocation entry:
2959
 
2960
 
2961
     typedef enum bfd_reloc_status
2962
     {
2963
       /* No errors detected.  */
2964
       bfd_reloc_ok,
2965
 
2966
       /* The relocation was performed, but there was an overflow.  */
2967
       bfd_reloc_overflow,
2968
 
2969
       /* The address to relocate was not within the section supplied.  */
2970
       bfd_reloc_outofrange,
2971
 
2972
       /* Used by special functions.  */
2973
       bfd_reloc_continue,
2974
 
2975
       /* Unsupported relocation size requested.  */
2976
       bfd_reloc_notsupported,
2977
 
2978
       /* Unused.  */
2979
       bfd_reloc_other,
2980
 
2981
       /* The symbol to relocate against was undefined.  */
2982
       bfd_reloc_undefined,
2983
 
2984
       /* The relocation was performed, but may not be ok - presently
2985
          generated only when linking i960 coff files with i960 b.out
2986
          symbols.  If this type is returned, the error_message argument
2987
          to bfd_perform_relocation will be set.  */
2988
       bfd_reloc_dangerous
2989
      }
2990
      bfd_reloc_status_type;
2991
 
2992
 
2993
     typedef struct reloc_cache_entry
2994
     {
2995
       /* A pointer into the canonical table of pointers.  */
2996
       struct bfd_symbol **sym_ptr_ptr;
2997
 
2998
       /* offset in section.  */
2999
       bfd_size_type address;
3000
 
3001
       /* addend for relocation value.  */
3002
       bfd_vma addend;
3003
 
3004
       /* Pointer to how to perform the required relocation.  */
3005
       reloc_howto_type *howto;
3006
 
3007
     }
3008
     arelent;
3009
   *Description*
3010
Here is a description of each of the fields within an `arelent':
3011
 
3012
   * `sym_ptr_ptr'
3013
   The symbol table pointer points to a pointer to the symbol
3014
associated with the relocation request.  It is the pointer into the
3015
table returned by the back end's `canonicalize_symtab' action. *Note
3016
Symbols::. The symbol is referenced through a pointer to a pointer so
3017
that tools like the linker can fix up all the symbols of the same name
3018
by modifying only one pointer. The relocation routine looks in the
3019
symbol and uses the base of the section the symbol is attached to and
3020
the value of the symbol as the initial relocation offset. If the symbol
3021
pointer is zero, then the section provided is looked up.
3022
 
3023
   * `address'
3024
   The `address' field gives the offset in bytes from the base of the
3025
section data which owns the relocation record to the first byte of
3026
relocatable information. The actual data relocated will be relative to
3027
this point; for example, a relocation type which modifies the bottom
3028
two bytes of a four byte word would not touch the first byte pointed to
3029
in a big endian world.
3030
 
3031
   * `addend'
3032
   The `addend' is a value provided by the back end to be added (!)  to
3033
the relocation offset. Its interpretation is dependent upon the howto.
3034
For example, on the 68k the code:
3035
 
3036
             char foo[];
3037
             main()
3038
                     {
3039
                     return foo[0x12345678];
3040
                     }
3041
 
3042
   Could be compiled into:
3043
 
3044
             linkw fp,#-4
3045
             moveb @#12345678,d0
3046
             extbl d0
3047
             unlk fp
3048
             rts
3049
 
3050
   This could create a reloc pointing to `foo', but leave the offset in
3051
the data, something like:
3052
 
3053
     RELOCATION RECORDS FOR [.text]:
3054
     offset   type      value
3055
     00000006 32        _foo
3056
 
3057
     00000000 4e56 fffc          ; linkw fp,#-4
3058
     00000004 1039 1234 5678     ; moveb @#12345678,d0
3059
     0000000a 49c0               ; extbl d0
3060
     0000000c 4e5e               ; unlk fp
3061
     0000000e 4e75               ; rts
3062
 
3063
   Using coff and an 88k, some instructions don't have enough space in
3064
them to represent the full address range, and pointers have to be
3065
loaded in two parts. So you'd get something like:
3066
 
3067
             or.u     r13,r0,hi16(_foo+0x12345678)
3068
             ld.b     r2,r13,lo16(_foo+0x12345678)
3069
             jmp      r1
3070
 
3071
   This should create two relocs, both pointing to `_foo', and with
3072
0x12340000 in their addend field. The data would consist of:
3073
 
3074
     RELOCATION RECORDS FOR [.text]:
3075
     offset   type      value
3076
     00000002 HVRT16    _foo+0x12340000
3077
     00000006 LVRT16    _foo+0x12340000
3078
 
3079
     00000000 5da05678           ; or.u r13,r0,0x5678
3080
     00000004 1c4d5678           ; ld.b r2,r13,0x5678
3081
     00000008 f400c001           ; jmp r1
3082
 
3083
   The relocation routine digs out the value from the data, adds it to
3084
the addend to get the original offset, and then adds the value of
3085
`_foo'. Note that all 32 bits have to be kept around somewhere, to cope
3086
with carry from bit 15 to bit 16.
3087
 
3088
   One further example is the sparc and the a.out format. The sparc has
3089
a similar problem to the 88k, in that some instructions don't have room
3090
for an entire offset, but on the sparc the parts are created in odd
3091
sized lumps. The designers of the a.out format chose to not use the
3092
data within the section for storing part of the offset; all the offset
3093
is kept within the reloc. Anything in the data should be ignored.
3094
 
3095
             save %sp,-112,%sp
3096
             sethi %hi(_foo+0x12345678),%g2
3097
             ldsb [%g2+%lo(_foo+0x12345678)],%i0
3098
             ret
3099
             restore
3100
 
3101
   Both relocs contain a pointer to `foo', and the offsets contain junk.
3102
 
3103
     RELOCATION RECORDS FOR [.text]:
3104
     offset   type      value
3105
     00000004 HI22      _foo+0x12345678
3106
     00000008 LO10      _foo+0x12345678
3107
 
3108
     00000000 9de3bf90     ; save %sp,-112,%sp
3109
     00000004 05000000     ; sethi %hi(_foo+0),%g2
3110
     00000008 f048a000     ; ldsb [%g2+%lo(_foo+0)],%i0
3111
     0000000c 81c7e008     ; ret
3112
     00000010 81e80000     ; restore
3113
 
3114
   * `howto'
3115
   The `howto' field can be imagined as a relocation instruction. It is
3116
a pointer to a structure which contains information on what to do with
3117
all of the other information in the reloc record and data section. A
3118
back end would normally have a relocation instruction set and turn
3119
relocations into pointers to the correct structure on input - but it
3120
would be possible to create each howto field on demand.
3121
 
3122
2.10.1.1 `enum complain_overflow'
3123
.................................
3124
 
3125
Indicates what sort of overflow checking should be done when performing
3126
a relocation.
3127
 
3128
 
3129
     enum complain_overflow
3130
     {
3131
       /* Do not complain on overflow.  */
3132
       complain_overflow_dont,
3133
 
3134
       /* Complain if the value overflows when considered as a signed
3135
          number one bit larger than the field.  ie. A bitfield of N bits
3136
          is allowed to represent -2**n to 2**n-1.  */
3137
       complain_overflow_bitfield,
3138
 
3139
       /* Complain if the value overflows when considered as a signed
3140
          number.  */
3141
       complain_overflow_signed,
3142
 
3143
       /* Complain if the value overflows when considered as an
3144
          unsigned number.  */
3145
       complain_overflow_unsigned
3146
     };
3147
 
3148
2.10.1.2 `reloc_howto_type'
3149
...........................
3150
 
3151
The `reloc_howto_type' is a structure which contains all the
3152
information that libbfd needs to know to tie up a back end's data.
3153
 
3154
     struct bfd_symbol;             /* Forward declaration.  */
3155
 
3156
     struct reloc_howto_struct
3157
     {
3158
       /*  The type field has mainly a documentary use - the back end can
3159
           do what it wants with it, though normally the back end's
3160
           external idea of what a reloc number is stored
3161
           in this field.  For example, a PC relative word relocation
3162
           in a coff environment has the type 023 - because that's
3163
           what the outside world calls a R_PCRWORD reloc.  */
3164
       unsigned int type;
3165
 
3166
       /*  The value the final relocation is shifted right by.  This drops
3167
           unwanted data from the relocation.  */
3168
       unsigned int rightshift;
3169
 
3170
       /*  The size of the item to be relocated.  This is *not* a
3171
           power-of-two measure.  To get the number of bytes operated
3172
           on by a type of relocation, use bfd_get_reloc_size.  */
3173
       int size;
3174
 
3175
       /*  The number of bits in the item to be relocated.  This is used
3176
           when doing overflow checking.  */
3177
       unsigned int bitsize;
3178
 
3179
       /*  The relocation is relative to the field being relocated.  */
3180
       bfd_boolean pc_relative;
3181
 
3182
       /*  The bit position of the reloc value in the destination.
3183
           The relocated value is left shifted by this amount.  */
3184
       unsigned int bitpos;
3185
 
3186
       /* What type of overflow error should be checked for when
3187
          relocating.  */
3188
       enum complain_overflow complain_on_overflow;
3189
 
3190
       /* If this field is non null, then the supplied function is
3191
          called rather than the normal function.  This allows really
3192
          strange relocation methods to be accommodated (e.g., i960 callj
3193
          instructions).  */
3194
       bfd_reloc_status_type (*special_function)
3195
         (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
3196
          bfd *, char **);
3197
 
3198
       /* The textual name of the relocation type.  */
3199
       char *name;
3200
 
3201
       /* Some formats record a relocation addend in the section contents
3202
          rather than with the relocation.  For ELF formats this is the
3203
          distinction between USE_REL and USE_RELA (though the code checks
3204
          for USE_REL == 1/0).  The value of this field is TRUE if the
3205
          addend is recorded with the section contents; when performing a
3206
          partial link (ld -r) the section contents (the data) will be
3207
          modified.  The value of this field is FALSE if addends are
3208
          recorded with the relocation (in arelent.addend); when performing
3209
          a partial link the relocation will be modified.
3210
          All relocations for all ELF USE_RELA targets should set this field
3211
          to FALSE (values of TRUE should be looked on with suspicion).
3212
          However, the converse is not true: not all relocations of all ELF
3213
          USE_REL targets set this field to TRUE.  Why this is so is peculiar
3214
          to each particular target.  For relocs that aren't used in partial
3215
          links (e.g. GOT stuff) it doesn't matter what this is set to.  */
3216
       bfd_boolean partial_inplace;
3217
 
3218
       /* src_mask selects the part of the instruction (or data) to be used
3219
          in the relocation sum.  If the target relocations don't have an
3220
          addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
3221
          dst_mask to extract the addend from the section contents.  If
3222
          relocations do have an addend in the reloc, eg. ELF USE_RELA, this
3223
          field should be zero.  Non-zero values for ELF USE_RELA targets are
3224
          bogus as in those cases the value in the dst_mask part of the
3225
          section contents should be treated as garbage.  */
3226
       bfd_vma src_mask;
3227
 
3228
       /* dst_mask selects which parts of the instruction (or data) are
3229
          replaced with a relocated value.  */
3230
       bfd_vma dst_mask;
3231
 
3232
       /* When some formats create PC relative instructions, they leave
3233
          the value of the pc of the place being relocated in the offset
3234
          slot of the instruction, so that a PC relative relocation can
3235
          be made just by adding in an ordinary offset (e.g., sun3 a.out).
3236
          Some formats leave the displacement part of an instruction
3237
          empty (e.g., m88k bcs); this flag signals the fact.  */
3238
       bfd_boolean pcrel_offset;
3239
     };
3240
 
3241
2.10.1.3 `The HOWTO Macro'
3242
..........................
3243
 
3244
*Description*
3245
The HOWTO define is horrible and will go away.
3246
     #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
3247
       { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
3248
 
3249
   *Description*
3250
And will be replaced with the totally magic way. But for the moment, we
3251
are compatible, so do it this way.
3252
     #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
3253
       HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
3254
              NAME, FALSE, 0, 0, IN)
3255
 
3256
   *Description*
3257
This is used to fill in an empty howto entry in an array.
3258
     #define EMPTY_HOWTO(C) \
3259
       HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
3260
              NULL, FALSE, 0, 0, FALSE)
3261
 
3262
   *Description*
3263
Helper routine to turn a symbol into a relocation value.
3264
     #define HOWTO_PREPARE(relocation, symbol)               \
3265
       {                                                     \
3266
         if (symbol != NULL)                                 \
3267
           {                                                 \
3268
             if (bfd_is_com_section (symbol->section))       \
3269
               {                                             \
3270
                 relocation = 0;                             \
3271
               }                                             \
3272
             else                                            \
3273
               {                                             \
3274
                 relocation = symbol->value;                 \
3275
               }                                             \
3276
           }                                                 \
3277
       }
3278
 
3279
2.10.1.4 `bfd_get_reloc_size'
3280
.............................
3281
 
3282
*Synopsis*
3283
     unsigned int bfd_get_reloc_size (reloc_howto_type *);
3284
   *Description*
3285
For a reloc_howto_type that operates on a fixed number of bytes, this
3286
returns the number of bytes operated on.
3287
 
3288
2.10.1.5 `arelent_chain'
3289
........................
3290
 
3291
*Description*
3292
How relocs are tied together in an `asection':
3293
     typedef struct relent_chain
3294
     {
3295
       arelent relent;
3296
       struct relent_chain *next;
3297
     }
3298
     arelent_chain;
3299
 
3300
2.10.1.6 `bfd_check_overflow'
3301
.............................
3302
 
3303
*Synopsis*
3304
     bfd_reloc_status_type bfd_check_overflow
3305
        (enum complain_overflow how,
3306
         unsigned int bitsize,
3307
         unsigned int rightshift,
3308
         unsigned int addrsize,
3309
         bfd_vma relocation);
3310
   *Description*
3311
Perform overflow checking on RELOCATION which has BITSIZE significant
3312
bits and will be shifted right by RIGHTSHIFT bits, on a machine with
3313
addresses containing ADDRSIZE significant bits.  The result is either of
3314
`bfd_reloc_ok' or `bfd_reloc_overflow'.
3315
 
3316
2.10.1.7 `bfd_perform_relocation'
3317
.................................
3318
 
3319
*Synopsis*
3320
     bfd_reloc_status_type bfd_perform_relocation
3321
        (bfd *abfd,
3322
         arelent *reloc_entry,
3323
         void *data,
3324
         asection *input_section,
3325
         bfd *output_bfd,
3326
         char **error_message);
3327
   *Description*
3328
If OUTPUT_BFD is supplied to this function, the generated image will be
3329
relocatable; the relocations are copied to the output file after they
3330
have been changed to reflect the new state of the world. There are two
3331
ways of reflecting the results of partial linkage in an output file: by
3332
modifying the output data in place, and by modifying the relocation
3333
record.  Some native formats (e.g., basic a.out and basic coff) have no
3334
way of specifying an addend in the relocation type, so the addend has
3335
to go in the output data.  This is no big deal since in these formats
3336
the output data slot will always be big enough for the addend. Complex
3337
reloc types with addends were invented to solve just this problem.  The
3338
ERROR_MESSAGE argument is set to an error message if this return
3339
`bfd_reloc_dangerous'.
3340
 
3341
2.10.1.8 `bfd_install_relocation'
3342
.................................
3343
 
3344
*Synopsis*
3345
     bfd_reloc_status_type bfd_install_relocation
3346
        (bfd *abfd,
3347
         arelent *reloc_entry,
3348
         void *data, bfd_vma data_start,
3349
         asection *input_section,
3350
         char **error_message);
3351
   *Description*
3352
This looks remarkably like `bfd_perform_relocation', except it does not
3353
expect that the section contents have been filled in.  I.e., it's
3354
suitable for use when creating, rather than applying a relocation.
3355
 
3356
   For now, this function should be considered reserved for the
3357
assembler.
3358
 
3359

3360
File: bfd.info,  Node: howto manager,  Prev: typedef arelent,  Up: Relocations
3361
 
3362
2.10.2 The howto manager
3363
------------------------
3364
 
3365
When an application wants to create a relocation, but doesn't know what
3366
the target machine might call it, it can find out by using this bit of
3367
code.
3368
 
3369
2.10.2.1 `bfd_reloc_code_type'
3370
..............................
3371
 
3372
*Description*
3373
The insides of a reloc code.  The idea is that, eventually, there will
3374
be one enumerator for every type of relocation we ever do.  Pass one of
3375
these values to `bfd_reloc_type_lookup', and it'll return a howto
3376
pointer.
3377
 
3378
   This does mean that the application must determine the correct
3379
enumerator value; you can't get a howto pointer from a random set of
3380
attributes.
3381
 
3382
   Here are the possible values for `enum bfd_reloc_code_real':
3383
 
3384
 -- : BFD_RELOC_64
3385
 -- : BFD_RELOC_32
3386
 -- : BFD_RELOC_26
3387
 -- : BFD_RELOC_24
3388
 -- : BFD_RELOC_16
3389
 -- : BFD_RELOC_14
3390
 -- : BFD_RELOC_8
3391
     Basic absolute relocations of N bits.
3392
 
3393
 -- : BFD_RELOC_64_PCREL
3394
 -- : BFD_RELOC_32_PCREL
3395
 -- : BFD_RELOC_24_PCREL
3396
 -- : BFD_RELOC_16_PCREL
3397
 -- : BFD_RELOC_12_PCREL
3398
 -- : BFD_RELOC_8_PCREL
3399
     PC-relative relocations.  Sometimes these are relative to the
3400
     address of the relocation itself; sometimes they are relative to
3401
     the start of the section containing the relocation.  It depends on
3402
     the specific target.
3403
 
3404
     The 24-bit relocation is used in some Intel 960 configurations.
3405
 
3406
 -- : BFD_RELOC_32_SECREL
3407
     Section relative relocations.  Some targets need this for DWARF2.
3408
 
3409
 -- : BFD_RELOC_32_GOT_PCREL
3410
 -- : BFD_RELOC_16_GOT_PCREL
3411
 -- : BFD_RELOC_8_GOT_PCREL
3412
 -- : BFD_RELOC_32_GOTOFF
3413
 -- : BFD_RELOC_16_GOTOFF
3414
 -- : BFD_RELOC_LO16_GOTOFF
3415
 -- : BFD_RELOC_HI16_GOTOFF
3416
 -- : BFD_RELOC_HI16_S_GOTOFF
3417
 -- : BFD_RELOC_8_GOTOFF
3418
 -- : BFD_RELOC_64_PLT_PCREL
3419
 -- : BFD_RELOC_32_PLT_PCREL
3420
 -- : BFD_RELOC_24_PLT_PCREL
3421
 -- : BFD_RELOC_16_PLT_PCREL
3422
 -- : BFD_RELOC_8_PLT_PCREL
3423
 -- : BFD_RELOC_64_PLTOFF
3424
 -- : BFD_RELOC_32_PLTOFF
3425
 -- : BFD_RELOC_16_PLTOFF
3426
 -- : BFD_RELOC_LO16_PLTOFF
3427
 -- : BFD_RELOC_HI16_PLTOFF
3428
 -- : BFD_RELOC_HI16_S_PLTOFF
3429
 -- : BFD_RELOC_8_PLTOFF
3430
     For ELF.
3431
 
3432
 -- : BFD_RELOC_68K_GLOB_DAT
3433
 -- : BFD_RELOC_68K_JMP_SLOT
3434
 -- : BFD_RELOC_68K_RELATIVE
3435
 -- : BFD_RELOC_68K_TLS_GD32
3436
 -- : BFD_RELOC_68K_TLS_GD16
3437
 -- : BFD_RELOC_68K_TLS_GD8
3438
 -- : BFD_RELOC_68K_TLS_LDM32
3439
 -- : BFD_RELOC_68K_TLS_LDM16
3440
 -- : BFD_RELOC_68K_TLS_LDM8
3441
 -- : BFD_RELOC_68K_TLS_LDO32
3442
 -- : BFD_RELOC_68K_TLS_LDO16
3443
 -- : BFD_RELOC_68K_TLS_LDO8
3444
 -- : BFD_RELOC_68K_TLS_IE32
3445
 -- : BFD_RELOC_68K_TLS_IE16
3446
 -- : BFD_RELOC_68K_TLS_IE8
3447
 -- : BFD_RELOC_68K_TLS_LE32
3448
 -- : BFD_RELOC_68K_TLS_LE16
3449
 -- : BFD_RELOC_68K_TLS_LE8
3450
     Relocations used by 68K ELF.
3451
 
3452
 -- : BFD_RELOC_32_BASEREL
3453
 -- : BFD_RELOC_16_BASEREL
3454
 -- : BFD_RELOC_LO16_BASEREL
3455
 -- : BFD_RELOC_HI16_BASEREL
3456
 -- : BFD_RELOC_HI16_S_BASEREL
3457
 -- : BFD_RELOC_8_BASEREL
3458
 -- : BFD_RELOC_RVA
3459
     Linkage-table relative.
3460
 
3461
 -- : BFD_RELOC_8_FFnn
3462
     Absolute 8-bit relocation, but used to form an address like 0xFFnn.
3463
 
3464
 -- : BFD_RELOC_32_PCREL_S2
3465
 -- : BFD_RELOC_16_PCREL_S2
3466
 -- : BFD_RELOC_23_PCREL_S2
3467
     These PC-relative relocations are stored as word displacements -
3468
     i.e., byte displacements shifted right two bits.  The 30-bit word
3469
     displacement (<<32_PCREL_S2>> - 32 bits, shifted 2) is used on the
3470
     SPARC.  (SPARC tools generally refer to this as <>.)  The
3471
     signed 16-bit displacement is used on the MIPS, and the 23-bit
3472
     displacement is used on the Alpha.
3473
 
3474
 -- : BFD_RELOC_HI22
3475
 -- : BFD_RELOC_LO10
3476
     High 22 bits and low 10 bits of 32-bit value, placed into lower
3477
     bits of the target word.  These are used on the SPARC.
3478
 
3479
 -- : BFD_RELOC_GPREL16
3480
 -- : BFD_RELOC_GPREL32
3481
     For systems that allocate a Global Pointer register, these are
3482
     displacements off that register.  These relocation types are
3483
     handled specially, because the value the register will have is
3484
     decided relatively late.
3485
 
3486
 -- : BFD_RELOC_I960_CALLJ
3487
     Reloc types used for i960/b.out.
3488
 
3489
 -- : BFD_RELOC_NONE
3490
 -- : BFD_RELOC_SPARC_WDISP22
3491
 -- : BFD_RELOC_SPARC22
3492
 -- : BFD_RELOC_SPARC13
3493
 -- : BFD_RELOC_SPARC_GOT10
3494
 -- : BFD_RELOC_SPARC_GOT13
3495
 -- : BFD_RELOC_SPARC_GOT22
3496
 -- : BFD_RELOC_SPARC_PC10
3497
 -- : BFD_RELOC_SPARC_PC22
3498
 -- : BFD_RELOC_SPARC_WPLT30
3499
 -- : BFD_RELOC_SPARC_COPY
3500
 -- : BFD_RELOC_SPARC_GLOB_DAT
3501
 -- : BFD_RELOC_SPARC_JMP_SLOT
3502
 -- : BFD_RELOC_SPARC_RELATIVE
3503
 -- : BFD_RELOC_SPARC_UA16
3504
 -- : BFD_RELOC_SPARC_UA32
3505
 -- : BFD_RELOC_SPARC_UA64
3506
 -- : BFD_RELOC_SPARC_GOTDATA_HIX22
3507
 -- : BFD_RELOC_SPARC_GOTDATA_LOX10
3508
 -- : BFD_RELOC_SPARC_GOTDATA_OP_HIX22
3509
 -- : BFD_RELOC_SPARC_GOTDATA_OP_LOX10
3510
 -- : BFD_RELOC_SPARC_GOTDATA_OP
3511
 -- : BFD_RELOC_SPARC_JMP_IREL
3512
 -- : BFD_RELOC_SPARC_IRELATIVE
3513
     SPARC ELF relocations.  There is probably some overlap with other
3514
     relocation types already defined.
3515
 
3516
 -- : BFD_RELOC_SPARC_BASE13
3517
 -- : BFD_RELOC_SPARC_BASE22
3518
     I think these are specific to SPARC a.out (e.g., Sun 4).
3519
 
3520
 -- : BFD_RELOC_SPARC_64
3521
 -- : BFD_RELOC_SPARC_10
3522
 -- : BFD_RELOC_SPARC_11
3523
 -- : BFD_RELOC_SPARC_OLO10
3524
 -- : BFD_RELOC_SPARC_HH22
3525
 -- : BFD_RELOC_SPARC_HM10
3526
 -- : BFD_RELOC_SPARC_LM22
3527
 -- : BFD_RELOC_SPARC_PC_HH22
3528
 -- : BFD_RELOC_SPARC_PC_HM10
3529
 -- : BFD_RELOC_SPARC_PC_LM22
3530
 -- : BFD_RELOC_SPARC_WDISP16
3531
 -- : BFD_RELOC_SPARC_WDISP19
3532
 -- : BFD_RELOC_SPARC_7
3533
 -- : BFD_RELOC_SPARC_6
3534
 -- : BFD_RELOC_SPARC_5
3535
 -- : BFD_RELOC_SPARC_DISP64
3536
 -- : BFD_RELOC_SPARC_PLT32
3537
 -- : BFD_RELOC_SPARC_PLT64
3538
 -- : BFD_RELOC_SPARC_HIX22
3539
 -- : BFD_RELOC_SPARC_LOX10
3540
 -- : BFD_RELOC_SPARC_H44
3541
 -- : BFD_RELOC_SPARC_M44
3542
 -- : BFD_RELOC_SPARC_L44
3543
 -- : BFD_RELOC_SPARC_REGISTER
3544
 -- : BFD_RELOC_SPARC_H34
3545
 -- : BFD_RELOC_SPARC_SIZE32
3546
 -- : BFD_RELOC_SPARC_SIZE64
3547
 -- : BFD_RELOC_SPARC_WDISP10
3548
     SPARC64 relocations
3549
 
3550
 -- : BFD_RELOC_SPARC_REV32
3551
     SPARC little endian relocation
3552
 
3553
 -- : BFD_RELOC_SPARC_TLS_GD_HI22
3554
 -- : BFD_RELOC_SPARC_TLS_GD_LO10
3555
 -- : BFD_RELOC_SPARC_TLS_GD_ADD
3556
 -- : BFD_RELOC_SPARC_TLS_GD_CALL
3557
 -- : BFD_RELOC_SPARC_TLS_LDM_HI22
3558
 -- : BFD_RELOC_SPARC_TLS_LDM_LO10
3559
 -- : BFD_RELOC_SPARC_TLS_LDM_ADD
3560
 -- : BFD_RELOC_SPARC_TLS_LDM_CALL
3561
 -- : BFD_RELOC_SPARC_TLS_LDO_HIX22
3562
 -- : BFD_RELOC_SPARC_TLS_LDO_LOX10
3563
 -- : BFD_RELOC_SPARC_TLS_LDO_ADD
3564
 -- : BFD_RELOC_SPARC_TLS_IE_HI22
3565
 -- : BFD_RELOC_SPARC_TLS_IE_LO10
3566
 -- : BFD_RELOC_SPARC_TLS_IE_LD
3567
 -- : BFD_RELOC_SPARC_TLS_IE_LDX
3568
 -- : BFD_RELOC_SPARC_TLS_IE_ADD
3569
 -- : BFD_RELOC_SPARC_TLS_LE_HIX22
3570
 -- : BFD_RELOC_SPARC_TLS_LE_LOX10
3571
 -- : BFD_RELOC_SPARC_TLS_DTPMOD32
3572
 -- : BFD_RELOC_SPARC_TLS_DTPMOD64
3573
 -- : BFD_RELOC_SPARC_TLS_DTPOFF32
3574
 -- : BFD_RELOC_SPARC_TLS_DTPOFF64
3575
 -- : BFD_RELOC_SPARC_TLS_TPOFF32
3576
 -- : BFD_RELOC_SPARC_TLS_TPOFF64
3577
     SPARC TLS relocations
3578
 
3579
 -- : BFD_RELOC_SPU_IMM7
3580
 -- : BFD_RELOC_SPU_IMM8
3581
 -- : BFD_RELOC_SPU_IMM10
3582
 -- : BFD_RELOC_SPU_IMM10W
3583
 -- : BFD_RELOC_SPU_IMM16
3584
 -- : BFD_RELOC_SPU_IMM16W
3585
 -- : BFD_RELOC_SPU_IMM18
3586
 -- : BFD_RELOC_SPU_PCREL9a
3587
 -- : BFD_RELOC_SPU_PCREL9b
3588
 -- : BFD_RELOC_SPU_PCREL16
3589
 -- : BFD_RELOC_SPU_LO16
3590
 -- : BFD_RELOC_SPU_HI16
3591
 -- : BFD_RELOC_SPU_PPU32
3592
 -- : BFD_RELOC_SPU_PPU64
3593
 -- : BFD_RELOC_SPU_ADD_PIC
3594
     SPU Relocations.
3595
 
3596
 -- : BFD_RELOC_ALPHA_GPDISP_HI16
3597
     Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
3598
     "addend" in some special way.  For GPDISP_HI16 ("gpdisp")
3599
     relocations, the symbol is ignored when writing; when reading, it
3600
     will be the absolute section symbol.  The addend is the
3601
     displacement in bytes of the "lda" instruction from the "ldah"
3602
     instruction (which is at the address of this reloc).
3603
 
3604
 -- : BFD_RELOC_ALPHA_GPDISP_LO16
3605
     For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
3606
     with GPDISP_HI16 relocs.  The addend is ignored when writing the
3607
     relocations out, and is filled in with the file's GP value on
3608
     reading, for convenience.
3609
 
3610
 -- : BFD_RELOC_ALPHA_GPDISP
3611
     The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
3612
     relocation except that there is no accompanying GPDISP_LO16
3613
     relocation.
3614
 
3615
 -- : BFD_RELOC_ALPHA_LITERAL
3616
 -- : BFD_RELOC_ALPHA_ELF_LITERAL
3617
 -- : BFD_RELOC_ALPHA_LITUSE
3618
     The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
3619
     the assembler turns it into a LDQ instruction to load the address
3620
     of the symbol, and then fills in a register in the real
3621
     instruction.
3622
 
3623
     The LITERAL reloc, at the LDQ instruction, refers to the .lita
3624
     section symbol.  The addend is ignored when writing, but is filled
3625
     in with the file's GP value on reading, for convenience, as with
3626
     the GPDISP_LO16 reloc.
3627
 
3628
     The ELF_LITERAL reloc is somewhere between 16_GOTOFF and
3629
     GPDISP_LO16.  It should refer to the symbol to be referenced, as
3630
     with 16_GOTOFF, but it generates output not based on the position
3631
     within the .got section, but relative to the GP value chosen for
3632
     the file during the final link stage.
3633
 
3634
     The LITUSE reloc, on the instruction using the loaded address,
3635
     gives information to the linker that it might be able to use to
3636
     optimize away some literal section references.  The symbol is
3637
     ignored (read as the absolute section symbol), and the "addend"
3638
     indicates the type of instruction using the register: 1 - "memory"
3639
     fmt insn 2 - byte-manipulation (byte offset reg) 3 - jsr (target
3640
     of branch)
3641
 
3642
 -- : BFD_RELOC_ALPHA_HINT
3643
     The HINT relocation indicates a value that should be filled into
3644
     the "hint" field of a jmp/jsr/ret instruction, for possible branch-
3645
     prediction logic which may be provided on some processors.
3646
 
3647
 -- : BFD_RELOC_ALPHA_LINKAGE
3648
     The LINKAGE relocation outputs a linkage pair in the object file,
3649
     which is filled by the linker.
3650
 
3651
 -- : BFD_RELOC_ALPHA_CODEADDR
3652
     The CODEADDR relocation outputs a STO_CA in the object file, which
3653
     is filled by the linker.
3654
 
3655
 -- : BFD_RELOC_ALPHA_GPREL_HI16
3656
 -- : BFD_RELOC_ALPHA_GPREL_LO16
3657
     The GPREL_HI/LO relocations together form a 32-bit offset from the
3658
     GP register.
3659
 
3660
 -- : BFD_RELOC_ALPHA_BRSGP
3661
     Like BFD_RELOC_23_PCREL_S2, except that the source and target must
3662
     share a common GP, and the target address is adjusted for
3663
     STO_ALPHA_STD_GPLOAD.
3664
 
3665
 -- : BFD_RELOC_ALPHA_NOP
3666
     The NOP relocation outputs a NOP if the longword displacement
3667
     between two procedure entry points is < 2^21.
3668
 
3669
 -- : BFD_RELOC_ALPHA_BSR
3670
     The BSR relocation outputs a BSR if the longword displacement
3671
     between two procedure entry points is < 2^21.
3672
 
3673
 -- : BFD_RELOC_ALPHA_LDA
3674
     The LDA relocation outputs a LDA if the longword displacement
3675
     between two procedure entry points is < 2^16.
3676
 
3677
 -- : BFD_RELOC_ALPHA_BOH
3678
     The BOH relocation outputs a BSR if the longword displacement
3679
     between two procedure entry points is < 2^21, or else a hint.
3680
 
3681
 -- : BFD_RELOC_ALPHA_TLSGD
3682
 -- : BFD_RELOC_ALPHA_TLSLDM
3683
 -- : BFD_RELOC_ALPHA_DTPMOD64
3684
 -- : BFD_RELOC_ALPHA_GOTDTPREL16
3685
 -- : BFD_RELOC_ALPHA_DTPREL64
3686
 -- : BFD_RELOC_ALPHA_DTPREL_HI16
3687
 -- : BFD_RELOC_ALPHA_DTPREL_LO16
3688
 -- : BFD_RELOC_ALPHA_DTPREL16
3689
 -- : BFD_RELOC_ALPHA_GOTTPREL16
3690
 -- : BFD_RELOC_ALPHA_TPREL64
3691
 -- : BFD_RELOC_ALPHA_TPREL_HI16
3692
 -- : BFD_RELOC_ALPHA_TPREL_LO16
3693
 -- : BFD_RELOC_ALPHA_TPREL16
3694
     Alpha thread-local storage relocations.
3695
 
3696
 -- : BFD_RELOC_MIPS_JMP
3697
 -- : BFD_RELOC_MICROMIPS_JMP
3698
     The MIPS jump instruction.
3699
 
3700
 -- : BFD_RELOC_MIPS16_JMP
3701
     The MIPS16 jump instruction.
3702
 
3703
 -- : BFD_RELOC_MIPS16_GPREL
3704
     MIPS16 GP relative reloc.
3705
 
3706
 -- : BFD_RELOC_HI16
3707
     High 16 bits of 32-bit value; simple reloc.
3708
 
3709
 -- : BFD_RELOC_HI16_S
3710
     High 16 bits of 32-bit value but the low 16 bits will be sign
3711
     extended and added to form the final result.  If the low 16 bits
3712
     form a negative number, we need to add one to the high value to
3713
     compensate for the borrow when the low bits are added.
3714
 
3715
 -- : BFD_RELOC_LO16
3716
     Low 16 bits.
3717
 
3718
 -- : BFD_RELOC_HI16_PCREL
3719
     High 16 bits of 32-bit pc-relative value
3720
 
3721
 -- : BFD_RELOC_HI16_S_PCREL
3722
     High 16 bits of 32-bit pc-relative value, adjusted
3723
 
3724
 -- : BFD_RELOC_LO16_PCREL
3725
     Low 16 bits of pc-relative value
3726
 
3727
 -- : BFD_RELOC_MIPS16_GOT16
3728
 -- : BFD_RELOC_MIPS16_CALL16
3729
     Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
3730
     16-bit immediate fields
3731
 
3732
 -- : BFD_RELOC_MIPS16_HI16
3733
     MIPS16 high 16 bits of 32-bit value.
3734
 
3735
 -- : BFD_RELOC_MIPS16_HI16_S
3736
     MIPS16 high 16 bits of 32-bit value but the low 16 bits will be
3737
     sign extended and added to form the final result.  If the low 16
3738
     bits form a negative number, we need to add one to the high value
3739
     to compensate for the borrow when the low bits are added.
3740
 
3741
 -- : BFD_RELOC_MIPS16_LO16
3742
     MIPS16 low 16 bits.
3743
 
3744
 -- : BFD_RELOC_MIPS16_TLS_GD
3745
 -- : BFD_RELOC_MIPS16_TLS_LDM
3746
 -- : BFD_RELOC_MIPS16_TLS_DTPREL_HI16
3747
 -- : BFD_RELOC_MIPS16_TLS_DTPREL_LO16
3748
 -- : BFD_RELOC_MIPS16_TLS_GOTTPREL
3749
 -- : BFD_RELOC_MIPS16_TLS_TPREL_HI16
3750
 -- : BFD_RELOC_MIPS16_TLS_TPREL_LO16
3751
     MIPS16 TLS relocations
3752
 
3753
 -- : BFD_RELOC_MIPS_LITERAL
3754
 -- : BFD_RELOC_MICROMIPS_LITERAL
3755
     Relocation against a MIPS literal section.
3756
 
3757
 -- : BFD_RELOC_MICROMIPS_7_PCREL_S1
3758
 -- : BFD_RELOC_MICROMIPS_10_PCREL_S1
3759
 -- : BFD_RELOC_MICROMIPS_16_PCREL_S1
3760
     microMIPS PC-relative relocations.
3761
 
3762
 -- : BFD_RELOC_MICROMIPS_GPREL16
3763
 -- : BFD_RELOC_MICROMIPS_HI16
3764
 -- : BFD_RELOC_MICROMIPS_HI16_S
3765
 -- : BFD_RELOC_MICROMIPS_LO16
3766
     microMIPS versions of generic BFD relocs.
3767
 
3768
 -- : BFD_RELOC_MIPS_GOT16
3769
 -- : BFD_RELOC_MICROMIPS_GOT16
3770
 -- : BFD_RELOC_MIPS_CALL16
3771
 -- : BFD_RELOC_MICROMIPS_CALL16
3772
 -- : BFD_RELOC_MIPS_GOT_HI16
3773
 -- : BFD_RELOC_MICROMIPS_GOT_HI16
3774
 -- : BFD_RELOC_MIPS_GOT_LO16
3775
 -- : BFD_RELOC_MICROMIPS_GOT_LO16
3776
 -- : BFD_RELOC_MIPS_CALL_HI16
3777
 -- : BFD_RELOC_MICROMIPS_CALL_HI16
3778
 -- : BFD_RELOC_MIPS_CALL_LO16
3779
 -- : BFD_RELOC_MICROMIPS_CALL_LO16
3780
 -- : BFD_RELOC_MIPS_SUB
3781
 -- : BFD_RELOC_MICROMIPS_SUB
3782
 -- : BFD_RELOC_MIPS_GOT_PAGE
3783
 -- : BFD_RELOC_MICROMIPS_GOT_PAGE
3784
 -- : BFD_RELOC_MIPS_GOT_OFST
3785
 -- : BFD_RELOC_MICROMIPS_GOT_OFST
3786
 -- : BFD_RELOC_MIPS_GOT_DISP
3787
 -- : BFD_RELOC_MICROMIPS_GOT_DISP
3788
 -- : BFD_RELOC_MIPS_SHIFT5
3789
 -- : BFD_RELOC_MIPS_SHIFT6
3790
 -- : BFD_RELOC_MIPS_INSERT_A
3791
 -- : BFD_RELOC_MIPS_INSERT_B
3792
 -- : BFD_RELOC_MIPS_DELETE
3793
 -- : BFD_RELOC_MIPS_HIGHEST
3794
 -- : BFD_RELOC_MICROMIPS_HIGHEST
3795
 -- : BFD_RELOC_MIPS_HIGHER
3796
 -- : BFD_RELOC_MICROMIPS_HIGHER
3797
 -- : BFD_RELOC_MIPS_SCN_DISP
3798
 -- : BFD_RELOC_MICROMIPS_SCN_DISP
3799
 -- : BFD_RELOC_MIPS_REL16
3800
 -- : BFD_RELOC_MIPS_RELGOT
3801
 -- : BFD_RELOC_MIPS_JALR
3802
 -- : BFD_RELOC_MICROMIPS_JALR
3803
 -- : BFD_RELOC_MIPS_TLS_DTPMOD32
3804
 -- : BFD_RELOC_MIPS_TLS_DTPREL32
3805
 -- : BFD_RELOC_MIPS_TLS_DTPMOD64
3806
 -- : BFD_RELOC_MIPS_TLS_DTPREL64
3807
 -- : BFD_RELOC_MIPS_TLS_GD
3808
 -- : BFD_RELOC_MICROMIPS_TLS_GD
3809
 -- : BFD_RELOC_MIPS_TLS_LDM
3810
 -- : BFD_RELOC_MICROMIPS_TLS_LDM
3811
 -- : BFD_RELOC_MIPS_TLS_DTPREL_HI16
3812
 -- : BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16
3813
 -- : BFD_RELOC_MIPS_TLS_DTPREL_LO16
3814
 -- : BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16
3815
 -- : BFD_RELOC_MIPS_TLS_GOTTPREL
3816
 -- : BFD_RELOC_MICROMIPS_TLS_GOTTPREL
3817
 -- : BFD_RELOC_MIPS_TLS_TPREL32
3818
 -- : BFD_RELOC_MIPS_TLS_TPREL64
3819
 -- : BFD_RELOC_MIPS_TLS_TPREL_HI16
3820
 -- : BFD_RELOC_MICROMIPS_TLS_TPREL_HI16
3821
 -- : BFD_RELOC_MIPS_TLS_TPREL_LO16
3822
 -- : BFD_RELOC_MICROMIPS_TLS_TPREL_LO16
3823
     MIPS ELF relocations.
3824
 
3825
 -- : BFD_RELOC_MIPS_COPY
3826
 -- : BFD_RELOC_MIPS_JUMP_SLOT
3827
     MIPS ELF relocations (VxWorks and PLT extensions).
3828
 
3829
 -- : BFD_RELOC_MOXIE_10_PCREL
3830
     Moxie ELF relocations.
3831
 
3832
 -- : BFD_RELOC_FRV_LABEL16
3833
 -- : BFD_RELOC_FRV_LABEL24
3834
 -- : BFD_RELOC_FRV_LO16
3835
 -- : BFD_RELOC_FRV_HI16
3836
 -- : BFD_RELOC_FRV_GPREL12
3837
 -- : BFD_RELOC_FRV_GPRELU12
3838
 -- : BFD_RELOC_FRV_GPREL32
3839
 -- : BFD_RELOC_FRV_GPRELHI
3840
 -- : BFD_RELOC_FRV_GPRELLO
3841
 -- : BFD_RELOC_FRV_GOT12
3842
 -- : BFD_RELOC_FRV_GOTHI
3843
 -- : BFD_RELOC_FRV_GOTLO
3844
 -- : BFD_RELOC_FRV_FUNCDESC
3845
 -- : BFD_RELOC_FRV_FUNCDESC_GOT12
3846
 -- : BFD_RELOC_FRV_FUNCDESC_GOTHI
3847
 -- : BFD_RELOC_FRV_FUNCDESC_GOTLO
3848
 -- : BFD_RELOC_FRV_FUNCDESC_VALUE
3849
 -- : BFD_RELOC_FRV_FUNCDESC_GOTOFF12
3850
 -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
3851
 -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
3852
 -- : BFD_RELOC_FRV_GOTOFF12
3853
 -- : BFD_RELOC_FRV_GOTOFFHI
3854
 -- : BFD_RELOC_FRV_GOTOFFLO
3855
 -- : BFD_RELOC_FRV_GETTLSOFF
3856
 -- : BFD_RELOC_FRV_TLSDESC_VALUE
3857
 -- : BFD_RELOC_FRV_GOTTLSDESC12
3858
 -- : BFD_RELOC_FRV_GOTTLSDESCHI
3859
 -- : BFD_RELOC_FRV_GOTTLSDESCLO
3860
 -- : BFD_RELOC_FRV_TLSMOFF12
3861
 -- : BFD_RELOC_FRV_TLSMOFFHI
3862
 -- : BFD_RELOC_FRV_TLSMOFFLO
3863
 -- : BFD_RELOC_FRV_GOTTLSOFF12
3864
 -- : BFD_RELOC_FRV_GOTTLSOFFHI
3865
 -- : BFD_RELOC_FRV_GOTTLSOFFLO
3866
 -- : BFD_RELOC_FRV_TLSOFF
3867
 -- : BFD_RELOC_FRV_TLSDESC_RELAX
3868
 -- : BFD_RELOC_FRV_GETTLSOFF_RELAX
3869
 -- : BFD_RELOC_FRV_TLSOFF_RELAX
3870
 -- : BFD_RELOC_FRV_TLSMOFF
3871
     Fujitsu Frv Relocations.
3872
 
3873
 -- : BFD_RELOC_MN10300_GOTOFF24
3874
     This is a 24bit GOT-relative reloc for the mn10300.
3875
 
3876
 -- : BFD_RELOC_MN10300_GOT32
3877
     This is a 32bit GOT-relative reloc for the mn10300, offset by two
3878
     bytes in the instruction.
3879
 
3880
 -- : BFD_RELOC_MN10300_GOT24
3881
     This is a 24bit GOT-relative reloc for the mn10300, offset by two
3882
     bytes in the instruction.
3883
 
3884
 -- : BFD_RELOC_MN10300_GOT16
3885
     This is a 16bit GOT-relative reloc for the mn10300, offset by two
3886
     bytes in the instruction.
3887
 
3888
 -- : BFD_RELOC_MN10300_COPY
3889
     Copy symbol at runtime.
3890
 
3891
 -- : BFD_RELOC_MN10300_GLOB_DAT
3892
     Create GOT entry.
3893
 
3894
 -- : BFD_RELOC_MN10300_JMP_SLOT
3895
     Create PLT entry.
3896
 
3897
 -- : BFD_RELOC_MN10300_RELATIVE
3898
     Adjust by program base.
3899
 
3900
 -- : BFD_RELOC_MN10300_SYM_DIFF
3901
     Together with another reloc targeted at the same location, allows
3902
     for a value that is the difference of two symbols in the same
3903
     section.
3904
 
3905
 -- : BFD_RELOC_MN10300_ALIGN
3906
     The addend of this reloc is an alignment power that must be
3907
     honoured at the offset's location, regardless of linker relaxation.
3908
 
3909
 -- : BFD_RELOC_MN10300_TLS_GD
3910
 -- : BFD_RELOC_MN10300_TLS_LD
3911
 -- : BFD_RELOC_MN10300_TLS_LDO
3912
 -- : BFD_RELOC_MN10300_TLS_GOTIE
3913
 -- : BFD_RELOC_MN10300_TLS_IE
3914
 -- : BFD_RELOC_MN10300_TLS_LE
3915
 -- : BFD_RELOC_MN10300_TLS_DTPMOD
3916
 -- : BFD_RELOC_MN10300_TLS_DTPOFF
3917
 -- : BFD_RELOC_MN10300_TLS_TPOFF
3918
     Various TLS-related relocations.
3919
 
3920
 -- : BFD_RELOC_MN10300_32_PCREL
3921
     This is a 32bit pcrel reloc for the mn10300, offset by two bytes
3922
     in the instruction.
3923
 
3924
 -- : BFD_RELOC_MN10300_16_PCREL
3925
     This is a 16bit pcrel reloc for the mn10300, offset by two bytes
3926
     in the instruction.
3927
 
3928
 -- : BFD_RELOC_386_GOT32
3929
 -- : BFD_RELOC_386_PLT32
3930
 -- : BFD_RELOC_386_COPY
3931
 -- : BFD_RELOC_386_GLOB_DAT
3932
 -- : BFD_RELOC_386_JUMP_SLOT
3933
 -- : BFD_RELOC_386_RELATIVE
3934
 -- : BFD_RELOC_386_GOTOFF
3935
 -- : BFD_RELOC_386_GOTPC
3936
 -- : BFD_RELOC_386_TLS_TPOFF
3937
 -- : BFD_RELOC_386_TLS_IE
3938
 -- : BFD_RELOC_386_TLS_GOTIE
3939
 -- : BFD_RELOC_386_TLS_LE
3940
 -- : BFD_RELOC_386_TLS_GD
3941
 -- : BFD_RELOC_386_TLS_LDM
3942
 -- : BFD_RELOC_386_TLS_LDO_32
3943
 -- : BFD_RELOC_386_TLS_IE_32
3944
 -- : BFD_RELOC_386_TLS_LE_32
3945
 -- : BFD_RELOC_386_TLS_DTPMOD32
3946
 -- : BFD_RELOC_386_TLS_DTPOFF32
3947
 -- : BFD_RELOC_386_TLS_TPOFF32
3948
 -- : BFD_RELOC_386_TLS_GOTDESC
3949
 -- : BFD_RELOC_386_TLS_DESC_CALL
3950
 -- : BFD_RELOC_386_TLS_DESC
3951
 -- : BFD_RELOC_386_IRELATIVE
3952
     i386/elf relocations
3953
 
3954
 -- : BFD_RELOC_X86_64_GOT32
3955
 -- : BFD_RELOC_X86_64_PLT32
3956
 -- : BFD_RELOC_X86_64_COPY
3957
 -- : BFD_RELOC_X86_64_GLOB_DAT
3958
 -- : BFD_RELOC_X86_64_JUMP_SLOT
3959
 -- : BFD_RELOC_X86_64_RELATIVE
3960
 -- : BFD_RELOC_X86_64_GOTPCREL
3961
 -- : BFD_RELOC_X86_64_32S
3962
 -- : BFD_RELOC_X86_64_DTPMOD64
3963
 -- : BFD_RELOC_X86_64_DTPOFF64
3964
 -- : BFD_RELOC_X86_64_TPOFF64
3965
 -- : BFD_RELOC_X86_64_TLSGD
3966
 -- : BFD_RELOC_X86_64_TLSLD
3967
 -- : BFD_RELOC_X86_64_DTPOFF32
3968
 -- : BFD_RELOC_X86_64_GOTTPOFF
3969
 -- : BFD_RELOC_X86_64_TPOFF32
3970
 -- : BFD_RELOC_X86_64_GOTOFF64
3971
 -- : BFD_RELOC_X86_64_GOTPC32
3972
 -- : BFD_RELOC_X86_64_GOT64
3973
 -- : BFD_RELOC_X86_64_GOTPCREL64
3974
 -- : BFD_RELOC_X86_64_GOTPC64
3975
 -- : BFD_RELOC_X86_64_GOTPLT64
3976
 -- : BFD_RELOC_X86_64_PLTOFF64
3977
 -- : BFD_RELOC_X86_64_GOTPC32_TLSDESC
3978
 -- : BFD_RELOC_X86_64_TLSDESC_CALL
3979
 -- : BFD_RELOC_X86_64_TLSDESC
3980
 -- : BFD_RELOC_X86_64_IRELATIVE
3981
     x86-64/elf relocations
3982
 
3983
 -- : BFD_RELOC_NS32K_IMM_8
3984
 -- : BFD_RELOC_NS32K_IMM_16
3985
 -- : BFD_RELOC_NS32K_IMM_32
3986
 -- : BFD_RELOC_NS32K_IMM_8_PCREL
3987
 -- : BFD_RELOC_NS32K_IMM_16_PCREL
3988
 -- : BFD_RELOC_NS32K_IMM_32_PCREL
3989
 -- : BFD_RELOC_NS32K_DISP_8
3990
 -- : BFD_RELOC_NS32K_DISP_16
3991
 -- : BFD_RELOC_NS32K_DISP_32
3992
 -- : BFD_RELOC_NS32K_DISP_8_PCREL
3993
 -- : BFD_RELOC_NS32K_DISP_16_PCREL
3994
 -- : BFD_RELOC_NS32K_DISP_32_PCREL
3995
     ns32k relocations
3996
 
3997
 -- : BFD_RELOC_PDP11_DISP_8_PCREL
3998
 -- : BFD_RELOC_PDP11_DISP_6_PCREL
3999
     PDP11 relocations
4000
 
4001
 -- : BFD_RELOC_PJ_CODE_HI16
4002
 -- : BFD_RELOC_PJ_CODE_LO16
4003
 -- : BFD_RELOC_PJ_CODE_DIR16
4004
 -- : BFD_RELOC_PJ_CODE_DIR32
4005
 -- : BFD_RELOC_PJ_CODE_REL16
4006
 -- : BFD_RELOC_PJ_CODE_REL32
4007
     Picojava relocs.  Not all of these appear in object files.
4008
 
4009
 -- : BFD_RELOC_PPC_B26
4010
 -- : BFD_RELOC_PPC_BA26
4011
 -- : BFD_RELOC_PPC_TOC16
4012
 -- : BFD_RELOC_PPC_B16
4013
 -- : BFD_RELOC_PPC_B16_BRTAKEN
4014
 -- : BFD_RELOC_PPC_B16_BRNTAKEN
4015
 -- : BFD_RELOC_PPC_BA16
4016
 -- : BFD_RELOC_PPC_BA16_BRTAKEN
4017
 -- : BFD_RELOC_PPC_BA16_BRNTAKEN
4018
 -- : BFD_RELOC_PPC_COPY
4019
 -- : BFD_RELOC_PPC_GLOB_DAT
4020
 -- : BFD_RELOC_PPC_JMP_SLOT
4021
 -- : BFD_RELOC_PPC_RELATIVE
4022
 -- : BFD_RELOC_PPC_LOCAL24PC
4023
 -- : BFD_RELOC_PPC_EMB_NADDR32
4024
 -- : BFD_RELOC_PPC_EMB_NADDR16
4025
 -- : BFD_RELOC_PPC_EMB_NADDR16_LO
4026
 -- : BFD_RELOC_PPC_EMB_NADDR16_HI
4027
 -- : BFD_RELOC_PPC_EMB_NADDR16_HA
4028
 -- : BFD_RELOC_PPC_EMB_SDAI16
4029
 -- : BFD_RELOC_PPC_EMB_SDA2I16
4030
 -- : BFD_RELOC_PPC_EMB_SDA2REL
4031
 -- : BFD_RELOC_PPC_EMB_SDA21
4032
 -- : BFD_RELOC_PPC_EMB_MRKREF
4033
 -- : BFD_RELOC_PPC_EMB_RELSEC16
4034
 -- : BFD_RELOC_PPC_EMB_RELST_LO
4035
 -- : BFD_RELOC_PPC_EMB_RELST_HI
4036
 -- : BFD_RELOC_PPC_EMB_RELST_HA
4037
 -- : BFD_RELOC_PPC_EMB_BIT_FLD
4038
 -- : BFD_RELOC_PPC_EMB_RELSDA
4039
 -- : BFD_RELOC_PPC_VLE_REL8
4040
 -- : BFD_RELOC_PPC_VLE_REL15
4041
 -- : BFD_RELOC_PPC_VLE_REL24
4042
 -- : BFD_RELOC_PPC_VLE_LO16A
4043
 -- : BFD_RELOC_PPC_VLE_LO16D
4044
 -- : BFD_RELOC_PPC_VLE_HI16A
4045
 -- : BFD_RELOC_PPC_VLE_HI16D
4046
 -- : BFD_RELOC_PPC_VLE_HA16A
4047
 -- : BFD_RELOC_PPC_VLE_HA16D
4048
 -- : BFD_RELOC_PPC_VLE_SDA21
4049
 -- : BFD_RELOC_PPC_VLE_SDA21_LO
4050
 -- : BFD_RELOC_PPC_VLE_SDAREL_LO16A
4051
 -- : BFD_RELOC_PPC_VLE_SDAREL_LO16D
4052
 -- : BFD_RELOC_PPC_VLE_SDAREL_HI16A
4053
 -- : BFD_RELOC_PPC_VLE_SDAREL_HI16D
4054
 -- : BFD_RELOC_PPC_VLE_SDAREL_HA16A
4055
 -- : BFD_RELOC_PPC_VLE_SDAREL_HA16D
4056
 -- : BFD_RELOC_PPC64_HIGHER
4057
 -- : BFD_RELOC_PPC64_HIGHER_S
4058
 -- : BFD_RELOC_PPC64_HIGHEST
4059
 -- : BFD_RELOC_PPC64_HIGHEST_S
4060
 -- : BFD_RELOC_PPC64_TOC16_LO
4061
 -- : BFD_RELOC_PPC64_TOC16_HI
4062
 -- : BFD_RELOC_PPC64_TOC16_HA
4063
 -- : BFD_RELOC_PPC64_TOC
4064
 -- : BFD_RELOC_PPC64_PLTGOT16
4065
 -- : BFD_RELOC_PPC64_PLTGOT16_LO
4066
 -- : BFD_RELOC_PPC64_PLTGOT16_HI
4067
 -- : BFD_RELOC_PPC64_PLTGOT16_HA
4068
 -- : BFD_RELOC_PPC64_ADDR16_DS
4069
 -- : BFD_RELOC_PPC64_ADDR16_LO_DS
4070
 -- : BFD_RELOC_PPC64_GOT16_DS
4071
 -- : BFD_RELOC_PPC64_GOT16_LO_DS
4072
 -- : BFD_RELOC_PPC64_PLT16_LO_DS
4073
 -- : BFD_RELOC_PPC64_SECTOFF_DS
4074
 -- : BFD_RELOC_PPC64_SECTOFF_LO_DS
4075
 -- : BFD_RELOC_PPC64_TOC16_DS
4076
 -- : BFD_RELOC_PPC64_TOC16_LO_DS
4077
 -- : BFD_RELOC_PPC64_PLTGOT16_DS
4078
 -- : BFD_RELOC_PPC64_PLTGOT16_LO_DS
4079
     Power(rs6000) and PowerPC relocations.
4080
 
4081
 -- : BFD_RELOC_PPC_TLS
4082
 -- : BFD_RELOC_PPC_TLSGD
4083
 -- : BFD_RELOC_PPC_TLSLD
4084
 -- : BFD_RELOC_PPC_DTPMOD
4085
 -- : BFD_RELOC_PPC_TPREL16
4086
 -- : BFD_RELOC_PPC_TPREL16_LO
4087
 -- : BFD_RELOC_PPC_TPREL16_HI
4088
 -- : BFD_RELOC_PPC_TPREL16_HA
4089
 -- : BFD_RELOC_PPC_TPREL
4090
 -- : BFD_RELOC_PPC_DTPREL16
4091
 -- : BFD_RELOC_PPC_DTPREL16_LO
4092
 -- : BFD_RELOC_PPC_DTPREL16_HI
4093
 -- : BFD_RELOC_PPC_DTPREL16_HA
4094
 -- : BFD_RELOC_PPC_DTPREL
4095
 -- : BFD_RELOC_PPC_GOT_TLSGD16
4096
 -- : BFD_RELOC_PPC_GOT_TLSGD16_LO
4097
 -- : BFD_RELOC_PPC_GOT_TLSGD16_HI
4098
 -- : BFD_RELOC_PPC_GOT_TLSGD16_HA
4099
 -- : BFD_RELOC_PPC_GOT_TLSLD16
4100
 -- : BFD_RELOC_PPC_GOT_TLSLD16_LO
4101
 -- : BFD_RELOC_PPC_GOT_TLSLD16_HI
4102
 -- : BFD_RELOC_PPC_GOT_TLSLD16_HA
4103
 -- : BFD_RELOC_PPC_GOT_TPREL16
4104
 -- : BFD_RELOC_PPC_GOT_TPREL16_LO
4105
 -- : BFD_RELOC_PPC_GOT_TPREL16_HI
4106
 -- : BFD_RELOC_PPC_GOT_TPREL16_HA
4107
 -- : BFD_RELOC_PPC_GOT_DTPREL16
4108
 -- : BFD_RELOC_PPC_GOT_DTPREL16_LO
4109
 -- : BFD_RELOC_PPC_GOT_DTPREL16_HI
4110
 -- : BFD_RELOC_PPC_GOT_DTPREL16_HA
4111
 -- : BFD_RELOC_PPC64_TPREL16_DS
4112
 -- : BFD_RELOC_PPC64_TPREL16_LO_DS
4113
 -- : BFD_RELOC_PPC64_TPREL16_HIGHER
4114
 -- : BFD_RELOC_PPC64_TPREL16_HIGHERA
4115
 -- : BFD_RELOC_PPC64_TPREL16_HIGHEST
4116
 -- : BFD_RELOC_PPC64_TPREL16_HIGHESTA
4117
 -- : BFD_RELOC_PPC64_DTPREL16_DS
4118
 -- : BFD_RELOC_PPC64_DTPREL16_LO_DS
4119
 -- : BFD_RELOC_PPC64_DTPREL16_HIGHER
4120
 -- : BFD_RELOC_PPC64_DTPREL16_HIGHERA
4121
 -- : BFD_RELOC_PPC64_DTPREL16_HIGHEST
4122
 -- : BFD_RELOC_PPC64_DTPREL16_HIGHESTA
4123
     PowerPC and PowerPC64 thread-local storage relocations.
4124
 
4125
 -- : BFD_RELOC_I370_D12
4126
     IBM 370/390 relocations
4127
 
4128
 -- : BFD_RELOC_CTOR
4129
     The type of reloc used to build a constructor table - at the moment
4130
     probably a 32 bit wide absolute relocation, but the target can
4131
     choose.  It generally does map to one of the other relocation
4132
     types.
4133
 
4134
 -- : BFD_RELOC_ARM_PCREL_BRANCH
4135
     ARM 26 bit pc-relative branch.  The lowest two bits must be zero
4136
     and are not stored in the instruction.
4137
 
4138
 -- : BFD_RELOC_ARM_PCREL_BLX
4139
     ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
4140
     not stored in the instruction.  The 2nd lowest bit comes from a 1
4141
     bit field in the instruction.
4142
 
4143
 -- : BFD_RELOC_THUMB_PCREL_BLX
4144
     Thumb 22 bit pc-relative branch.  The lowest bit must be zero and
4145
     is not stored in the instruction.  The 2nd lowest bit comes from a
4146
     1 bit field in the instruction.
4147
 
4148
 -- : BFD_RELOC_ARM_PCREL_CALL
4149
     ARM 26-bit pc-relative branch for an unconditional BL or BLX
4150
     instruction.
4151
 
4152
 -- : BFD_RELOC_ARM_PCREL_JUMP
4153
     ARM 26-bit pc-relative branch for B or conditional BL instruction.
4154
 
4155
 -- : BFD_RELOC_THUMB_PCREL_BRANCH7
4156
 -- : BFD_RELOC_THUMB_PCREL_BRANCH9
4157
 -- : BFD_RELOC_THUMB_PCREL_BRANCH12
4158
 -- : BFD_RELOC_THUMB_PCREL_BRANCH20
4159
 -- : BFD_RELOC_THUMB_PCREL_BRANCH23
4160
 -- : BFD_RELOC_THUMB_PCREL_BRANCH25
4161
     Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.  The
4162
     lowest bit must be zero and is not stored in the instruction.
4163
     Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
4164
     "nn" one smaller in all cases.  Note further that BRANCH23
4165
     corresponds to R_ARM_THM_CALL.
4166
 
4167
 -- : BFD_RELOC_ARM_OFFSET_IMM
4168
     12-bit immediate offset, used in ARM-format ldr and str
4169
     instructions.
4170
 
4171
 -- : BFD_RELOC_ARM_THUMB_OFFSET
4172
     5-bit immediate offset, used in Thumb-format ldr and str
4173
     instructions.
4174
 
4175
 -- : BFD_RELOC_ARM_TARGET1
4176
     Pc-relative or absolute relocation depending on target.  Used for
4177
     entries in .init_array sections.
4178
 
4179
 -- : BFD_RELOC_ARM_ROSEGREL32
4180
     Read-only segment base relative address.
4181
 
4182
 -- : BFD_RELOC_ARM_SBREL32
4183
     Data segment base relative address.
4184
 
4185
 -- : BFD_RELOC_ARM_TARGET2
4186
     This reloc is used for references to RTTI data from exception
4187
     handling tables.  The actual definition depends on the target.  It
4188
     may be a pc-relative or some form of GOT-indirect relocation.
4189
 
4190
 -- : BFD_RELOC_ARM_PREL31
4191
     31-bit PC relative address.
4192
 
4193
 -- : BFD_RELOC_ARM_MOVW
4194
 -- : BFD_RELOC_ARM_MOVT
4195
 -- : BFD_RELOC_ARM_MOVW_PCREL
4196
 -- : BFD_RELOC_ARM_MOVT_PCREL
4197
 -- : BFD_RELOC_ARM_THUMB_MOVW
4198
 -- : BFD_RELOC_ARM_THUMB_MOVT
4199
 -- : BFD_RELOC_ARM_THUMB_MOVW_PCREL
4200
 -- : BFD_RELOC_ARM_THUMB_MOVT_PCREL
4201
     Low and High halfword relocations for MOVW and MOVT instructions.
4202
 
4203
 -- : BFD_RELOC_ARM_JUMP_SLOT
4204
 -- : BFD_RELOC_ARM_GLOB_DAT
4205
 -- : BFD_RELOC_ARM_GOT32
4206
 -- : BFD_RELOC_ARM_PLT32
4207
 -- : BFD_RELOC_ARM_RELATIVE
4208
 -- : BFD_RELOC_ARM_GOTOFF
4209
 -- : BFD_RELOC_ARM_GOTPC
4210
 -- : BFD_RELOC_ARM_GOT_PREL
4211
     Relocations for setting up GOTs and PLTs for shared libraries.
4212
 
4213
 -- : BFD_RELOC_ARM_TLS_GD32
4214
 -- : BFD_RELOC_ARM_TLS_LDO32
4215
 -- : BFD_RELOC_ARM_TLS_LDM32
4216
 -- : BFD_RELOC_ARM_TLS_DTPOFF32
4217
 -- : BFD_RELOC_ARM_TLS_DTPMOD32
4218
 -- : BFD_RELOC_ARM_TLS_TPOFF32
4219
 -- : BFD_RELOC_ARM_TLS_IE32
4220
 -- : BFD_RELOC_ARM_TLS_LE32
4221
 -- : BFD_RELOC_ARM_TLS_GOTDESC
4222
 -- : BFD_RELOC_ARM_TLS_CALL
4223
 -- : BFD_RELOC_ARM_THM_TLS_CALL
4224
 -- : BFD_RELOC_ARM_TLS_DESCSEQ
4225
 -- : BFD_RELOC_ARM_THM_TLS_DESCSEQ
4226
 -- : BFD_RELOC_ARM_TLS_DESC
4227
     ARM thread-local storage relocations.
4228
 
4229
 -- : BFD_RELOC_ARM_ALU_PC_G0_NC
4230
 -- : BFD_RELOC_ARM_ALU_PC_G0
4231
 -- : BFD_RELOC_ARM_ALU_PC_G1_NC
4232
 -- : BFD_RELOC_ARM_ALU_PC_G1
4233
 -- : BFD_RELOC_ARM_ALU_PC_G2
4234
 -- : BFD_RELOC_ARM_LDR_PC_G0
4235
 -- : BFD_RELOC_ARM_LDR_PC_G1
4236
 -- : BFD_RELOC_ARM_LDR_PC_G2
4237
 -- : BFD_RELOC_ARM_LDRS_PC_G0
4238
 -- : BFD_RELOC_ARM_LDRS_PC_G1
4239
 -- : BFD_RELOC_ARM_LDRS_PC_G2
4240
 -- : BFD_RELOC_ARM_LDC_PC_G0
4241
 -- : BFD_RELOC_ARM_LDC_PC_G1
4242
 -- : BFD_RELOC_ARM_LDC_PC_G2
4243
 -- : BFD_RELOC_ARM_ALU_SB_G0_NC
4244
 -- : BFD_RELOC_ARM_ALU_SB_G0
4245
 -- : BFD_RELOC_ARM_ALU_SB_G1_NC
4246
 -- : BFD_RELOC_ARM_ALU_SB_G1
4247
 -- : BFD_RELOC_ARM_ALU_SB_G2
4248
 -- : BFD_RELOC_ARM_LDR_SB_G0
4249
 -- : BFD_RELOC_ARM_LDR_SB_G1
4250
 -- : BFD_RELOC_ARM_LDR_SB_G2
4251
 -- : BFD_RELOC_ARM_LDRS_SB_G0
4252
 -- : BFD_RELOC_ARM_LDRS_SB_G1
4253
 -- : BFD_RELOC_ARM_LDRS_SB_G2
4254
 -- : BFD_RELOC_ARM_LDC_SB_G0
4255
 -- : BFD_RELOC_ARM_LDC_SB_G1
4256
 -- : BFD_RELOC_ARM_LDC_SB_G2
4257
     ARM group relocations.
4258
 
4259
 -- : BFD_RELOC_ARM_V4BX
4260
     Annotation of BX instructions.
4261
 
4262
 -- : BFD_RELOC_ARM_IRELATIVE
4263
     ARM support for STT_GNU_IFUNC.
4264
 
4265
 -- : BFD_RELOC_ARM_IMMEDIATE
4266
 -- : BFD_RELOC_ARM_ADRL_IMMEDIATE
4267
 -- : BFD_RELOC_ARM_T32_IMMEDIATE
4268
 -- : BFD_RELOC_ARM_T32_ADD_IMM
4269
 -- : BFD_RELOC_ARM_T32_IMM12
4270
 -- : BFD_RELOC_ARM_T32_ADD_PC12
4271
 -- : BFD_RELOC_ARM_SHIFT_IMM
4272
 -- : BFD_RELOC_ARM_SMC
4273
 -- : BFD_RELOC_ARM_HVC
4274
 -- : BFD_RELOC_ARM_SWI
4275
 -- : BFD_RELOC_ARM_MULTI
4276
 -- : BFD_RELOC_ARM_CP_OFF_IMM
4277
 -- : BFD_RELOC_ARM_CP_OFF_IMM_S2
4278
 -- : BFD_RELOC_ARM_T32_CP_OFF_IMM
4279
 -- : BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
4280
 -- : BFD_RELOC_ARM_ADR_IMM
4281
 -- : BFD_RELOC_ARM_LDR_IMM
4282
 -- : BFD_RELOC_ARM_LITERAL
4283
 -- : BFD_RELOC_ARM_IN_POOL
4284
 -- : BFD_RELOC_ARM_OFFSET_IMM8
4285
 -- : BFD_RELOC_ARM_T32_OFFSET_U8
4286
 -- : BFD_RELOC_ARM_T32_OFFSET_IMM
4287
 -- : BFD_RELOC_ARM_HWLITERAL
4288
 -- : BFD_RELOC_ARM_THUMB_ADD
4289
 -- : BFD_RELOC_ARM_THUMB_IMM
4290
 -- : BFD_RELOC_ARM_THUMB_SHIFT
4291
     These relocs are only used within the ARM assembler.  They are not
4292
     (at present) written to any object files.
4293
 
4294
 -- : BFD_RELOC_SH_PCDISP8BY2
4295
 -- : BFD_RELOC_SH_PCDISP12BY2
4296
 -- : BFD_RELOC_SH_IMM3
4297
 -- : BFD_RELOC_SH_IMM3U
4298
 -- : BFD_RELOC_SH_DISP12
4299
 -- : BFD_RELOC_SH_DISP12BY2
4300
 -- : BFD_RELOC_SH_DISP12BY4
4301
 -- : BFD_RELOC_SH_DISP12BY8
4302
 -- : BFD_RELOC_SH_DISP20
4303
 -- : BFD_RELOC_SH_DISP20BY8
4304
 -- : BFD_RELOC_SH_IMM4
4305
 -- : BFD_RELOC_SH_IMM4BY2
4306
 -- : BFD_RELOC_SH_IMM4BY4
4307
 -- : BFD_RELOC_SH_IMM8
4308
 -- : BFD_RELOC_SH_IMM8BY2
4309
 -- : BFD_RELOC_SH_IMM8BY4
4310
 -- : BFD_RELOC_SH_PCRELIMM8BY2
4311
 -- : BFD_RELOC_SH_PCRELIMM8BY4
4312
 -- : BFD_RELOC_SH_SWITCH16
4313
 -- : BFD_RELOC_SH_SWITCH32
4314
 -- : BFD_RELOC_SH_USES
4315
 -- : BFD_RELOC_SH_COUNT
4316
 -- : BFD_RELOC_SH_ALIGN
4317
 -- : BFD_RELOC_SH_CODE
4318
 -- : BFD_RELOC_SH_DATA
4319
 -- : BFD_RELOC_SH_LABEL
4320
 -- : BFD_RELOC_SH_LOOP_START
4321
 -- : BFD_RELOC_SH_LOOP_END
4322
 -- : BFD_RELOC_SH_COPY
4323
 -- : BFD_RELOC_SH_GLOB_DAT
4324
 -- : BFD_RELOC_SH_JMP_SLOT
4325
 -- : BFD_RELOC_SH_RELATIVE
4326
 -- : BFD_RELOC_SH_GOTPC
4327
 -- : BFD_RELOC_SH_GOT_LOW16
4328
 -- : BFD_RELOC_SH_GOT_MEDLOW16
4329
 -- : BFD_RELOC_SH_GOT_MEDHI16
4330
 -- : BFD_RELOC_SH_GOT_HI16
4331
 -- : BFD_RELOC_SH_GOTPLT_LOW16
4332
 -- : BFD_RELOC_SH_GOTPLT_MEDLOW16
4333
 -- : BFD_RELOC_SH_GOTPLT_MEDHI16
4334
 -- : BFD_RELOC_SH_GOTPLT_HI16
4335
 -- : BFD_RELOC_SH_PLT_LOW16
4336
 -- : BFD_RELOC_SH_PLT_MEDLOW16
4337
 -- : BFD_RELOC_SH_PLT_MEDHI16
4338
 -- : BFD_RELOC_SH_PLT_HI16
4339
 -- : BFD_RELOC_SH_GOTOFF_LOW16
4340
 -- : BFD_RELOC_SH_GOTOFF_MEDLOW16
4341
 -- : BFD_RELOC_SH_GOTOFF_MEDHI16
4342
 -- : BFD_RELOC_SH_GOTOFF_HI16
4343
 -- : BFD_RELOC_SH_GOTPC_LOW16
4344
 -- : BFD_RELOC_SH_GOTPC_MEDLOW16
4345
 -- : BFD_RELOC_SH_GOTPC_MEDHI16
4346
 -- : BFD_RELOC_SH_GOTPC_HI16
4347
 -- : BFD_RELOC_SH_COPY64
4348
 -- : BFD_RELOC_SH_GLOB_DAT64
4349
 -- : BFD_RELOC_SH_JMP_SLOT64
4350
 -- : BFD_RELOC_SH_RELATIVE64
4351
 -- : BFD_RELOC_SH_GOT10BY4
4352
 -- : BFD_RELOC_SH_GOT10BY8
4353
 -- : BFD_RELOC_SH_GOTPLT10BY4
4354
 -- : BFD_RELOC_SH_GOTPLT10BY8
4355
 -- : BFD_RELOC_SH_GOTPLT32
4356
 -- : BFD_RELOC_SH_SHMEDIA_CODE
4357
 -- : BFD_RELOC_SH_IMMU5
4358
 -- : BFD_RELOC_SH_IMMS6
4359
 -- : BFD_RELOC_SH_IMMS6BY32
4360
 -- : BFD_RELOC_SH_IMMU6
4361
 -- : BFD_RELOC_SH_IMMS10
4362
 -- : BFD_RELOC_SH_IMMS10BY2
4363
 -- : BFD_RELOC_SH_IMMS10BY4
4364
 -- : BFD_RELOC_SH_IMMS10BY8
4365
 -- : BFD_RELOC_SH_IMMS16
4366
 -- : BFD_RELOC_SH_IMMU16
4367
 -- : BFD_RELOC_SH_IMM_LOW16
4368
 -- : BFD_RELOC_SH_IMM_LOW16_PCREL
4369
 -- : BFD_RELOC_SH_IMM_MEDLOW16
4370
 -- : BFD_RELOC_SH_IMM_MEDLOW16_PCREL
4371
 -- : BFD_RELOC_SH_IMM_MEDHI16
4372
 -- : BFD_RELOC_SH_IMM_MEDHI16_PCREL
4373
 -- : BFD_RELOC_SH_IMM_HI16
4374
 -- : BFD_RELOC_SH_IMM_HI16_PCREL
4375
 -- : BFD_RELOC_SH_PT_16
4376
 -- : BFD_RELOC_SH_TLS_GD_32
4377
 -- : BFD_RELOC_SH_TLS_LD_32
4378
 -- : BFD_RELOC_SH_TLS_LDO_32
4379
 -- : BFD_RELOC_SH_TLS_IE_32
4380
 -- : BFD_RELOC_SH_TLS_LE_32
4381
 -- : BFD_RELOC_SH_TLS_DTPMOD32
4382
 -- : BFD_RELOC_SH_TLS_DTPOFF32
4383
 -- : BFD_RELOC_SH_TLS_TPOFF32
4384
 -- : BFD_RELOC_SH_GOT20
4385
 -- : BFD_RELOC_SH_GOTOFF20
4386
 -- : BFD_RELOC_SH_GOTFUNCDESC
4387
 -- : BFD_RELOC_SH_GOTFUNCDESC20
4388
 -- : BFD_RELOC_SH_GOTOFFFUNCDESC
4389
 -- : BFD_RELOC_SH_GOTOFFFUNCDESC20
4390
 -- : BFD_RELOC_SH_FUNCDESC
4391
     Renesas / SuperH SH relocs.  Not all of these appear in object
4392
     files.
4393
 
4394
 -- : BFD_RELOC_ARC_B22_PCREL
4395
     ARC Cores relocs.  ARC 22 bit pc-relative branch.  The lowest two
4396
     bits must be zero and are not stored in the instruction.  The high
4397
     20 bits are installed in bits 26 through 7 of the instruction.
4398
 
4399
 -- : BFD_RELOC_ARC_B26
4400
     ARC 26 bit absolute branch.  The lowest two bits must be zero and
4401
     are not stored in the instruction.  The high 24 bits are installed
4402
     in bits 23 through 0.
4403
 
4404
 -- : BFD_RELOC_BFIN_16_IMM
4405
     ADI Blackfin 16 bit immediate absolute reloc.
4406
 
4407
 -- : BFD_RELOC_BFIN_16_HIGH
4408
     ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
4409
 
4410
 -- : BFD_RELOC_BFIN_4_PCREL
4411
     ADI Blackfin 'a' part of LSETUP.
4412
 
4413
 -- : BFD_RELOC_BFIN_5_PCREL
4414
     ADI Blackfin.
4415
 
4416
 -- : BFD_RELOC_BFIN_16_LOW
4417
     ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
4418
 
4419
 -- : BFD_RELOC_BFIN_10_PCREL
4420
     ADI Blackfin.
4421
 
4422
 -- : BFD_RELOC_BFIN_11_PCREL
4423
     ADI Blackfin 'b' part of LSETUP.
4424
 
4425
 -- : BFD_RELOC_BFIN_12_PCREL_JUMP
4426
     ADI Blackfin.
4427
 
4428
 -- : BFD_RELOC_BFIN_12_PCREL_JUMP_S
4429
     ADI Blackfin Short jump, pcrel.
4430
 
4431
 -- : BFD_RELOC_BFIN_24_PCREL_CALL_X
4432
     ADI Blackfin Call.x not implemented.
4433
 
4434
 -- : BFD_RELOC_BFIN_24_PCREL_JUMP_L
4435
     ADI Blackfin Long Jump pcrel.
4436
 
4437
 -- : BFD_RELOC_BFIN_GOT17M4
4438
 -- : BFD_RELOC_BFIN_GOTHI
4439
 -- : BFD_RELOC_BFIN_GOTLO
4440
 -- : BFD_RELOC_BFIN_FUNCDESC
4441
 -- : BFD_RELOC_BFIN_FUNCDESC_GOT17M4
4442
 -- : BFD_RELOC_BFIN_FUNCDESC_GOTHI
4443
 -- : BFD_RELOC_BFIN_FUNCDESC_GOTLO
4444
 -- : BFD_RELOC_BFIN_FUNCDESC_VALUE
4445
 -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
4446
 -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
4447
 -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
4448
 -- : BFD_RELOC_BFIN_GOTOFF17M4
4449
 -- : BFD_RELOC_BFIN_GOTOFFHI
4450
 -- : BFD_RELOC_BFIN_GOTOFFLO
4451
     ADI Blackfin FD-PIC relocations.
4452
 
4453
 -- : BFD_RELOC_BFIN_GOT
4454
     ADI Blackfin GOT relocation.
4455
 
4456
 -- : BFD_RELOC_BFIN_PLTPC
4457
     ADI Blackfin PLTPC relocation.
4458
 
4459
 -- : BFD_ARELOC_BFIN_PUSH
4460
     ADI Blackfin arithmetic relocation.
4461
 
4462
 -- : BFD_ARELOC_BFIN_CONST
4463
     ADI Blackfin arithmetic relocation.
4464
 
4465
 -- : BFD_ARELOC_BFIN_ADD
4466
     ADI Blackfin arithmetic relocation.
4467
 
4468
 -- : BFD_ARELOC_BFIN_SUB
4469
     ADI Blackfin arithmetic relocation.
4470
 
4471
 -- : BFD_ARELOC_BFIN_MULT
4472
     ADI Blackfin arithmetic relocation.
4473
 
4474
 -- : BFD_ARELOC_BFIN_DIV
4475
     ADI Blackfin arithmetic relocation.
4476
 
4477
 -- : BFD_ARELOC_BFIN_MOD
4478
     ADI Blackfin arithmetic relocation.
4479
 
4480
 -- : BFD_ARELOC_BFIN_LSHIFT
4481
     ADI Blackfin arithmetic relocation.
4482
 
4483
 -- : BFD_ARELOC_BFIN_RSHIFT
4484
     ADI Blackfin arithmetic relocation.
4485
 
4486
 -- : BFD_ARELOC_BFIN_AND
4487
     ADI Blackfin arithmetic relocation.
4488
 
4489
 -- : BFD_ARELOC_BFIN_OR
4490
     ADI Blackfin arithmetic relocation.
4491
 
4492
 -- : BFD_ARELOC_BFIN_XOR
4493
     ADI Blackfin arithmetic relocation.
4494
 
4495
 -- : BFD_ARELOC_BFIN_LAND
4496
     ADI Blackfin arithmetic relocation.
4497
 
4498
 -- : BFD_ARELOC_BFIN_LOR
4499
     ADI Blackfin arithmetic relocation.
4500
 
4501
 -- : BFD_ARELOC_BFIN_LEN
4502
     ADI Blackfin arithmetic relocation.
4503
 
4504
 -- : BFD_ARELOC_BFIN_NEG
4505
     ADI Blackfin arithmetic relocation.
4506
 
4507
 -- : BFD_ARELOC_BFIN_COMP
4508
     ADI Blackfin arithmetic relocation.
4509
 
4510
 -- : BFD_ARELOC_BFIN_PAGE
4511
     ADI Blackfin arithmetic relocation.
4512
 
4513
 -- : BFD_ARELOC_BFIN_HWPAGE
4514
     ADI Blackfin arithmetic relocation.
4515
 
4516
 -- : BFD_ARELOC_BFIN_ADDR
4517
     ADI Blackfin arithmetic relocation.
4518
 
4519
 -- : BFD_RELOC_D10V_10_PCREL_R
4520
     Mitsubishi D10V relocs.  This is a 10-bit reloc with the right 2
4521
     bits assumed to be 0.
4522
 
4523
 -- : BFD_RELOC_D10V_10_PCREL_L
4524
     Mitsubishi D10V relocs.  This is a 10-bit reloc with the right 2
4525
     bits assumed to be 0.  This is the same as the previous reloc
4526
     except it is in the left container, i.e., shifted left 15 bits.
4527
 
4528
 -- : BFD_RELOC_D10V_18
4529
     This is an 18-bit reloc with the right 2 bits assumed to be 0.
4530
 
4531
 -- : BFD_RELOC_D10V_18_PCREL
4532
     This is an 18-bit reloc with the right 2 bits assumed to be 0.
4533
 
4534
 -- : BFD_RELOC_D30V_6
4535
     Mitsubishi D30V relocs.  This is a 6-bit absolute reloc.
4536
 
4537
 -- : BFD_RELOC_D30V_9_PCREL
4538
     This is a 6-bit pc-relative reloc with the right 3 bits assumed to
4539
     be 0.
4540
 
4541
 -- : BFD_RELOC_D30V_9_PCREL_R
4542
     This is a 6-bit pc-relative reloc with the right 3 bits assumed to
4543
     be 0. Same as the previous reloc but on the right side of the
4544
     container.
4545
 
4546
 -- : BFD_RELOC_D30V_15
4547
     This is a 12-bit absolute reloc with the right 3 bitsassumed to be
4548
     0.
4549
 
4550
 -- : BFD_RELOC_D30V_15_PCREL
4551
     This is a 12-bit pc-relative reloc with the right 3 bits assumed
4552
     to be 0.
4553
 
4554
 -- : BFD_RELOC_D30V_15_PCREL_R
4555
     This is a 12-bit pc-relative reloc with the right 3 bits assumed
4556
     to be 0. Same as the previous reloc but on the right side of the
4557
     container.
4558
 
4559
 -- : BFD_RELOC_D30V_21
4560
     This is an 18-bit absolute reloc with the right 3 bits assumed to
4561
     be 0.
4562
 
4563
 -- : BFD_RELOC_D30V_21_PCREL
4564
     This is an 18-bit pc-relative reloc with the right 3 bits assumed
4565
     to be 0.
4566
 
4567
 -- : BFD_RELOC_D30V_21_PCREL_R
4568
     This is an 18-bit pc-relative reloc with the right 3 bits assumed
4569
     to be 0. Same as the previous reloc but on the right side of the
4570
     container.
4571
 
4572
 -- : BFD_RELOC_D30V_32
4573
     This is a 32-bit absolute reloc.
4574
 
4575
 -- : BFD_RELOC_D30V_32_PCREL
4576
     This is a 32-bit pc-relative reloc.
4577
 
4578
 -- : BFD_RELOC_DLX_HI16_S
4579
     DLX relocs
4580
 
4581
 -- : BFD_RELOC_DLX_LO16
4582
     DLX relocs
4583
 
4584
 -- : BFD_RELOC_DLX_JMP26
4585
     DLX relocs
4586
 
4587
 -- : BFD_RELOC_M32C_HI8
4588
 -- : BFD_RELOC_M32C_RL_JUMP
4589
 -- : BFD_RELOC_M32C_RL_1ADDR
4590
 -- : BFD_RELOC_M32C_RL_2ADDR
4591
     Renesas M16C/M32C Relocations.
4592
 
4593
 -- : BFD_RELOC_M32R_24
4594
     Renesas M32R (formerly Mitsubishi M32R) relocs.  This is a 24 bit
4595
     absolute address.
4596
 
4597
 -- : BFD_RELOC_M32R_10_PCREL
4598
     This is a 10-bit pc-relative reloc with the right 2 bits assumed
4599
     to be 0.
4600
 
4601
 -- : BFD_RELOC_M32R_18_PCREL
4602
     This is an 18-bit reloc with the right 2 bits assumed to be 0.
4603
 
4604
 -- : BFD_RELOC_M32R_26_PCREL
4605
     This is a 26-bit reloc with the right 2 bits assumed to be 0.
4606
 
4607
 -- : BFD_RELOC_M32R_HI16_ULO
4608
     This is a 16-bit reloc containing the high 16 bits of an address
4609
     used when the lower 16 bits are treated as unsigned.
4610
 
4611
 -- : BFD_RELOC_M32R_HI16_SLO
4612
     This is a 16-bit reloc containing the high 16 bits of an address
4613
     used when the lower 16 bits are treated as signed.
4614
 
4615
 -- : BFD_RELOC_M32R_LO16
4616
     This is a 16-bit reloc containing the lower 16 bits of an address.
4617
 
4618
 -- : BFD_RELOC_M32R_SDA16
4619
     This is a 16-bit reloc containing the small data area offset for
4620
     use in add3, load, and store instructions.
4621
 
4622
 -- : BFD_RELOC_M32R_GOT24
4623
 -- : BFD_RELOC_M32R_26_PLTREL
4624
 -- : BFD_RELOC_M32R_COPY
4625
 -- : BFD_RELOC_M32R_GLOB_DAT
4626
 -- : BFD_RELOC_M32R_JMP_SLOT
4627
 -- : BFD_RELOC_M32R_RELATIVE
4628
 -- : BFD_RELOC_M32R_GOTOFF
4629
 -- : BFD_RELOC_M32R_GOTOFF_HI_ULO
4630
 -- : BFD_RELOC_M32R_GOTOFF_HI_SLO
4631
 -- : BFD_RELOC_M32R_GOTOFF_LO
4632
 -- : BFD_RELOC_M32R_GOTPC24
4633
 -- : BFD_RELOC_M32R_GOT16_HI_ULO
4634
 -- : BFD_RELOC_M32R_GOT16_HI_SLO
4635
 -- : BFD_RELOC_M32R_GOT16_LO
4636
 -- : BFD_RELOC_M32R_GOTPC_HI_ULO
4637
 -- : BFD_RELOC_M32R_GOTPC_HI_SLO
4638
 -- : BFD_RELOC_M32R_GOTPC_LO
4639
     For PIC.
4640
 
4641
 -- : BFD_RELOC_V850_9_PCREL
4642
     This is a 9-bit reloc
4643
 
4644
 -- : BFD_RELOC_V850_22_PCREL
4645
     This is a 22-bit reloc
4646
 
4647
 -- : BFD_RELOC_V850_SDA_16_16_OFFSET
4648
     This is a 16 bit offset from the short data area pointer.
4649
 
4650
 -- : BFD_RELOC_V850_SDA_15_16_OFFSET
4651
     This is a 16 bit offset (of which only 15 bits are used) from the
4652
     short data area pointer.
4653
 
4654
 -- : BFD_RELOC_V850_ZDA_16_16_OFFSET
4655
     This is a 16 bit offset from the zero data area pointer.
4656
 
4657
 -- : BFD_RELOC_V850_ZDA_15_16_OFFSET
4658
     This is a 16 bit offset (of which only 15 bits are used) from the
4659
     zero data area pointer.
4660
 
4661
 -- : BFD_RELOC_V850_TDA_6_8_OFFSET
4662
     This is an 8 bit offset (of which only 6 bits are used) from the
4663
     tiny data area pointer.
4664
 
4665
 -- : BFD_RELOC_V850_TDA_7_8_OFFSET
4666
     This is an 8bit offset (of which only 7 bits are used) from the
4667
     tiny data area pointer.
4668
 
4669
 -- : BFD_RELOC_V850_TDA_7_7_OFFSET
4670
     This is a 7 bit offset from the tiny data area pointer.
4671
 
4672
 -- : BFD_RELOC_V850_TDA_16_16_OFFSET
4673
     This is a 16 bit offset from the tiny data area pointer.
4674
 
4675
 -- : BFD_RELOC_V850_TDA_4_5_OFFSET
4676
     This is a 5 bit offset (of which only 4 bits are used) from the
4677
     tiny data area pointer.
4678
 
4679
 -- : BFD_RELOC_V850_TDA_4_4_OFFSET
4680
     This is a 4 bit offset from the tiny data area pointer.
4681
 
4682
 -- : BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
4683
     This is a 16 bit offset from the short data area pointer, with the
4684
     bits placed non-contiguously in the instruction.
4685
 
4686
 -- : BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
4687
     This is a 16 bit offset from the zero data area pointer, with the
4688
     bits placed non-contiguously in the instruction.
4689
 
4690
 -- : BFD_RELOC_V850_CALLT_6_7_OFFSET
4691
     This is a 6 bit offset from the call table base pointer.
4692
 
4693
 -- : BFD_RELOC_V850_CALLT_16_16_OFFSET
4694
     This is a 16 bit offset from the call table base pointer.
4695
 
4696
 -- : BFD_RELOC_V850_LONGCALL
4697
     Used for relaxing indirect function calls.
4698
 
4699
 -- : BFD_RELOC_V850_LONGJUMP
4700
     Used for relaxing indirect jumps.
4701
 
4702
 -- : BFD_RELOC_V850_ALIGN
4703
     Used to maintain alignment whilst relaxing.
4704
 
4705
 -- : BFD_RELOC_V850_LO16_SPLIT_OFFSET
4706
     This is a variation of BFD_RELOC_LO16 that can be used in v850e
4707
     ld.bu instructions.
4708
 
4709
 -- : BFD_RELOC_V850_16_PCREL
4710
     This is a 16-bit reloc.
4711
 
4712
 -- : BFD_RELOC_V850_17_PCREL
4713
     This is a 17-bit reloc.
4714
 
4715
 -- : BFD_RELOC_V850_23
4716
     This is a 23-bit reloc.
4717
 
4718
 -- : BFD_RELOC_V850_32_PCREL
4719
     This is a 32-bit reloc.
4720
 
4721
 -- : BFD_RELOC_V850_32_ABS
4722
     This is a 32-bit reloc.
4723
 
4724
 -- : BFD_RELOC_V850_16_SPLIT_OFFSET
4725
     This is a 16-bit reloc.
4726
 
4727
 -- : BFD_RELOC_V850_16_S1
4728
     This is a 16-bit reloc.
4729
 
4730
 -- : BFD_RELOC_V850_LO16_S1
4731
     Low 16 bits. 16 bit shifted by 1.
4732
 
4733
 -- : BFD_RELOC_V850_CALLT_15_16_OFFSET
4734
     This is a 16 bit offset from the call table base pointer.
4735
 
4736
 -- : BFD_RELOC_V850_32_GOTPCREL
4737
     DSO relocations.
4738
 
4739
 -- : BFD_RELOC_V850_16_GOT
4740
     DSO relocations.
4741
 
4742
 -- : BFD_RELOC_V850_32_GOT
4743
     DSO relocations.
4744
 
4745
 -- : BFD_RELOC_V850_22_PLT_PCREL
4746
     DSO relocations.
4747
 
4748
 -- : BFD_RELOC_V850_32_PLT_PCREL
4749
     DSO relocations.
4750
 
4751
 -- : BFD_RELOC_V850_COPY
4752
     DSO relocations.
4753
 
4754
 -- : BFD_RELOC_V850_GLOB_DAT
4755
     DSO relocations.
4756
 
4757
 -- : BFD_RELOC_V850_JMP_SLOT
4758
     DSO relocations.
4759
 
4760
 -- : BFD_RELOC_V850_RELATIVE
4761
     DSO relocations.
4762
 
4763
 -- : BFD_RELOC_V850_16_GOTOFF
4764
     DSO relocations.
4765
 
4766
 -- : BFD_RELOC_V850_32_GOTOFF
4767
     DSO relocations.
4768
 
4769
 -- : BFD_RELOC_V850_CODE
4770
     start code.
4771
 
4772
 -- : BFD_RELOC_V850_DATA
4773
     start data in text.
4774
 
4775
 -- : BFD_RELOC_TIC30_LDP
4776
     This is a 8bit DP reloc for the tms320c30, where the most
4777
     significant 8 bits of a 24 bit word are placed into the least
4778
     significant 8 bits of the opcode.
4779
 
4780
 -- : BFD_RELOC_TIC54X_PARTLS7
4781
     This is a 7bit reloc for the tms320c54x, where the least
4782
     significant 7 bits of a 16 bit word are placed into the least
4783
     significant 7 bits of the opcode.
4784
 
4785
 -- : BFD_RELOC_TIC54X_PARTMS9
4786
     This is a 9bit DP reloc for the tms320c54x, where the most
4787
     significant 9 bits of a 16 bit word are placed into the least
4788
     significant 9 bits of the opcode.
4789
 
4790
 -- : BFD_RELOC_TIC54X_23
4791
     This is an extended address 23-bit reloc for the tms320c54x.
4792
 
4793
 -- : BFD_RELOC_TIC54X_16_OF_23
4794
     This is a 16-bit reloc for the tms320c54x, where the least
4795
     significant 16 bits of a 23-bit extended address are placed into
4796
     the opcode.
4797
 
4798
 -- : BFD_RELOC_TIC54X_MS7_OF_23
4799
     This is a reloc for the tms320c54x, where the most significant 7
4800
     bits of a 23-bit extended address are placed into the opcode.
4801
 
4802
 -- : BFD_RELOC_C6000_PCR_S21
4803
 -- : BFD_RELOC_C6000_PCR_S12
4804
 -- : BFD_RELOC_C6000_PCR_S10
4805
 -- : BFD_RELOC_C6000_PCR_S7
4806
 -- : BFD_RELOC_C6000_ABS_S16
4807
 -- : BFD_RELOC_C6000_ABS_L16
4808
 -- : BFD_RELOC_C6000_ABS_H16
4809
 -- : BFD_RELOC_C6000_SBR_U15_B
4810
 -- : BFD_RELOC_C6000_SBR_U15_H
4811
 -- : BFD_RELOC_C6000_SBR_U15_W
4812
 -- : BFD_RELOC_C6000_SBR_S16
4813
 -- : BFD_RELOC_C6000_SBR_L16_B
4814
 -- : BFD_RELOC_C6000_SBR_L16_H
4815
 -- : BFD_RELOC_C6000_SBR_L16_W
4816
 -- : BFD_RELOC_C6000_SBR_H16_B
4817
 -- : BFD_RELOC_C6000_SBR_H16_H
4818
 -- : BFD_RELOC_C6000_SBR_H16_W
4819
 -- : BFD_RELOC_C6000_SBR_GOT_U15_W
4820
 -- : BFD_RELOC_C6000_SBR_GOT_L16_W
4821
 -- : BFD_RELOC_C6000_SBR_GOT_H16_W
4822
 -- : BFD_RELOC_C6000_DSBT_INDEX
4823
 -- : BFD_RELOC_C6000_PREL31
4824
 -- : BFD_RELOC_C6000_COPY
4825
 -- : BFD_RELOC_C6000_JUMP_SLOT
4826
 -- : BFD_RELOC_C6000_EHTYPE
4827
 -- : BFD_RELOC_C6000_PCR_H16
4828
 -- : BFD_RELOC_C6000_PCR_L16
4829
 -- : BFD_RELOC_C6000_ALIGN
4830
 -- : BFD_RELOC_C6000_FPHEAD
4831
 -- : BFD_RELOC_C6000_NOCMP
4832
     TMS320C6000 relocations.
4833
 
4834
 -- : BFD_RELOC_FR30_48
4835
     This is a 48 bit reloc for the FR30 that stores 32 bits.
4836
 
4837
 -- : BFD_RELOC_FR30_20
4838
     This is a 32 bit reloc for the FR30 that stores 20 bits split up
4839
     into two sections.
4840
 
4841
 -- : BFD_RELOC_FR30_6_IN_4
4842
     This is a 16 bit reloc for the FR30 that stores a 6 bit word
4843
     offset in 4 bits.
4844
 
4845
 -- : BFD_RELOC_FR30_8_IN_8
4846
     This is a 16 bit reloc for the FR30 that stores an 8 bit byte
4847
     offset into 8 bits.
4848
 
4849
 -- : BFD_RELOC_FR30_9_IN_8
4850
     This is a 16 bit reloc for the FR30 that stores a 9 bit short
4851
     offset into 8 bits.
4852
 
4853
 -- : BFD_RELOC_FR30_10_IN_8
4854
     This is a 16 bit reloc for the FR30 that stores a 10 bit word
4855
     offset into 8 bits.
4856
 
4857
 -- : BFD_RELOC_FR30_9_PCREL
4858
     This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
4859
     short offset into 8 bits.
4860
 
4861
 -- : BFD_RELOC_FR30_12_PCREL
4862
     This is a 16 bit reloc for the FR30 that stores a 12 bit pc
4863
     relative short offset into 11 bits.
4864
 
4865
 -- : BFD_RELOC_MCORE_PCREL_IMM8BY4
4866
 -- : BFD_RELOC_MCORE_PCREL_IMM11BY2
4867
 -- : BFD_RELOC_MCORE_PCREL_IMM4BY2
4868
 -- : BFD_RELOC_MCORE_PCREL_32
4869
 -- : BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
4870
 -- : BFD_RELOC_MCORE_RVA
4871
     Motorola Mcore relocations.
4872
 
4873
 -- : BFD_RELOC_MEP_8
4874
 -- : BFD_RELOC_MEP_16
4875
 -- : BFD_RELOC_MEP_32
4876
 -- : BFD_RELOC_MEP_PCREL8A2
4877
 -- : BFD_RELOC_MEP_PCREL12A2
4878
 -- : BFD_RELOC_MEP_PCREL17A2
4879
 -- : BFD_RELOC_MEP_PCREL24A2
4880
 -- : BFD_RELOC_MEP_PCABS24A2
4881
 -- : BFD_RELOC_MEP_LOW16
4882
 -- : BFD_RELOC_MEP_HI16U
4883
 -- : BFD_RELOC_MEP_HI16S
4884
 -- : BFD_RELOC_MEP_GPREL
4885
 -- : BFD_RELOC_MEP_TPREL
4886
 -- : BFD_RELOC_MEP_TPREL7
4887
 -- : BFD_RELOC_MEP_TPREL7A2
4888
 -- : BFD_RELOC_MEP_TPREL7A4
4889
 -- : BFD_RELOC_MEP_UIMM24
4890
 -- : BFD_RELOC_MEP_ADDR24A4
4891
 -- : BFD_RELOC_MEP_GNU_VTINHERIT
4892
 -- : BFD_RELOC_MEP_GNU_VTENTRY
4893
     Toshiba Media Processor Relocations.
4894
 
4895
 -- : BFD_RELOC_MMIX_GETA
4896
 -- : BFD_RELOC_MMIX_GETA_1
4897
 -- : BFD_RELOC_MMIX_GETA_2
4898
 -- : BFD_RELOC_MMIX_GETA_3
4899
     These are relocations for the GETA instruction.
4900
 
4901
 -- : BFD_RELOC_MMIX_CBRANCH
4902
 -- : BFD_RELOC_MMIX_CBRANCH_J
4903
 -- : BFD_RELOC_MMIX_CBRANCH_1
4904
 -- : BFD_RELOC_MMIX_CBRANCH_2
4905
 -- : BFD_RELOC_MMIX_CBRANCH_3
4906
     These are relocations for a conditional branch instruction.
4907
 
4908
 -- : BFD_RELOC_MMIX_PUSHJ
4909
 -- : BFD_RELOC_MMIX_PUSHJ_1
4910
 -- : BFD_RELOC_MMIX_PUSHJ_2
4911
 -- : BFD_RELOC_MMIX_PUSHJ_3
4912
 -- : BFD_RELOC_MMIX_PUSHJ_STUBBABLE
4913
     These are relocations for the PUSHJ instruction.
4914
 
4915
 -- : BFD_RELOC_MMIX_JMP
4916
 -- : BFD_RELOC_MMIX_JMP_1
4917
 -- : BFD_RELOC_MMIX_JMP_2
4918
 -- : BFD_RELOC_MMIX_JMP_3
4919
     These are relocations for the JMP instruction.
4920
 
4921
 -- : BFD_RELOC_MMIX_ADDR19
4922
     This is a relocation for a relative address as in a GETA
4923
     instruction or a branch.
4924
 
4925
 -- : BFD_RELOC_MMIX_ADDR27
4926
     This is a relocation for a relative address as in a JMP
4927
     instruction.
4928
 
4929
 -- : BFD_RELOC_MMIX_REG_OR_BYTE
4930
     This is a relocation for an instruction field that may be a general
4931
     register or a value 0..255.
4932
 
4933
 -- : BFD_RELOC_MMIX_REG
4934
     This is a relocation for an instruction field that may be a general
4935
     register.
4936
 
4937
 -- : BFD_RELOC_MMIX_BASE_PLUS_OFFSET
4938
     This is a relocation for two instruction fields holding a register
4939
     and an offset, the equivalent of the relocation.
4940
 
4941
 -- : BFD_RELOC_MMIX_LOCAL
4942
     This relocation is an assertion that the expression is not
4943
     allocated as a global register.  It does not modify contents.
4944
 
4945
 -- : BFD_RELOC_AVR_7_PCREL
4946
     This is a 16 bit reloc for the AVR that stores 8 bit pc relative
4947
     short offset into 7 bits.
4948
 
4949
 -- : BFD_RELOC_AVR_13_PCREL
4950
     This is a 16 bit reloc for the AVR that stores 13 bit pc relative
4951
     short offset into 12 bits.
4952
 
4953
 -- : BFD_RELOC_AVR_16_PM
4954
     This is a 16 bit reloc for the AVR that stores 17 bit value
4955
     (usually program memory address) into 16 bits.
4956
 
4957
 -- : BFD_RELOC_AVR_LO8_LDI
4958
     This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4959
     data memory address) into 8 bit immediate value of LDI insn.
4960
 
4961
 -- : BFD_RELOC_AVR_HI8_LDI
4962
     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
4963
     bit of data memory address) into 8 bit immediate value of LDI insn.
4964
 
4965
 -- : BFD_RELOC_AVR_HH8_LDI
4966
     This is a 16 bit reloc for the AVR that stores 8 bit value (most
4967
     high 8 bit of program memory address) into 8 bit immediate value
4968
     of LDI insn.
4969
 
4970
 -- : BFD_RELOC_AVR_MS8_LDI
4971
     This is a 16 bit reloc for the AVR that stores 8 bit value (most
4972
     high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.
4973
 
4974
 -- : BFD_RELOC_AVR_LO8_LDI_NEG
4975
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
4976
     (usually data memory address) into 8 bit immediate value of SUBI
4977
     insn.
4978
 
4979
 -- : BFD_RELOC_AVR_HI8_LDI_NEG
4980
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
4981
     (high 8 bit of data memory address) into 8 bit immediate value of
4982
     SUBI insn.
4983
 
4984
 -- : BFD_RELOC_AVR_HH8_LDI_NEG
4985
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
4986
     (most high 8 bit of program memory address) into 8 bit immediate
4987
     value of LDI or SUBI insn.
4988
 
4989
 -- : BFD_RELOC_AVR_MS8_LDI_NEG
4990
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
4991
     (msb of 32 bit value) into 8 bit immediate value of LDI insn.
4992
 
4993
 -- : BFD_RELOC_AVR_LO8_LDI_PM
4994
     This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4995
     command address) into 8 bit immediate value of LDI insn.
4996
 
4997
 -- : BFD_RELOC_AVR_LO8_LDI_GS
4998
     This is a 16 bit reloc for the AVR that stores 8 bit value
4999
     (command address) into 8 bit immediate value of LDI insn. If the
5000
     address is beyond the 128k boundary, the linker inserts a jump
5001
     stub for this reloc in the lower 128k.
5002
 
5003
 -- : BFD_RELOC_AVR_HI8_LDI_PM
5004
     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
5005
     bit of command address) into 8 bit immediate value of LDI insn.
5006
 
5007
 -- : BFD_RELOC_AVR_HI8_LDI_GS
5008
     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
5009
     bit of command address) into 8 bit immediate value of LDI insn.
5010
     If the address is beyond the 128k boundary, the linker inserts a
5011
     jump stub for this reloc below 128k.
5012
 
5013
 -- : BFD_RELOC_AVR_HH8_LDI_PM
5014
     This is a 16 bit reloc for the AVR that stores 8 bit value (most
5015
     high 8 bit of command address) into 8 bit immediate value of LDI
5016
     insn.
5017
 
5018
 -- : BFD_RELOC_AVR_LO8_LDI_PM_NEG
5019
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
5020
     (usually command address) into 8 bit immediate value of SUBI insn.
5021
 
5022
 -- : BFD_RELOC_AVR_HI8_LDI_PM_NEG
5023
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
5024
     (high 8 bit of 16 bit command address) into 8 bit immediate value
5025
     of SUBI insn.
5026
 
5027
 -- : BFD_RELOC_AVR_HH8_LDI_PM_NEG
5028
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
5029
     (high 6 bit of 22 bit command address) into 8 bit immediate value
5030
     of SUBI insn.
5031
 
5032
 -- : BFD_RELOC_AVR_CALL
5033
     This is a 32 bit reloc for the AVR that stores 23 bit value into
5034
     22 bits.
5035
 
5036
 -- : BFD_RELOC_AVR_LDI
5037
     This is a 16 bit reloc for the AVR that stores all needed bits for
5038
     absolute addressing with ldi with overflow check to linktime
5039
 
5040
 -- : BFD_RELOC_AVR_6
5041
     This is a 6 bit reloc for the AVR that stores offset for ldd/std
5042
     instructions
5043
 
5044
 -- : BFD_RELOC_AVR_6_ADIW
5045
     This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
5046
     instructions
5047
 
5048
 -- : BFD_RELOC_AVR_8_LO
5049
     This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
5050
     in .byte lo8(symbol)
5051
 
5052
 -- : BFD_RELOC_AVR_8_HI
5053
     This is a 8 bit reloc for the AVR that stores bits 8..15 of a
5054
     symbol in .byte hi8(symbol)
5055
 
5056
 -- : BFD_RELOC_AVR_8_HLO
5057
     This is a 8 bit reloc for the AVR that stores bits 16..23 of a
5058
     symbol in .byte hlo8(symbol)
5059
 
5060
 -- : BFD_RELOC_RL78_NEG8
5061
 -- : BFD_RELOC_RL78_NEG16
5062
 -- : BFD_RELOC_RL78_NEG24
5063
 -- : BFD_RELOC_RL78_NEG32
5064
 -- : BFD_RELOC_RL78_16_OP
5065
 -- : BFD_RELOC_RL78_24_OP
5066
 -- : BFD_RELOC_RL78_32_OP
5067
 -- : BFD_RELOC_RL78_8U
5068
 -- : BFD_RELOC_RL78_16U
5069
 -- : BFD_RELOC_RL78_24U
5070
 -- : BFD_RELOC_RL78_DIR3U_PCREL
5071
 -- : BFD_RELOC_RL78_DIFF
5072
 -- : BFD_RELOC_RL78_GPRELB
5073
 -- : BFD_RELOC_RL78_GPRELW
5074
 -- : BFD_RELOC_RL78_GPRELL
5075
 -- : BFD_RELOC_RL78_SYM
5076
 -- : BFD_RELOC_RL78_OP_SUBTRACT
5077
 -- : BFD_RELOC_RL78_OP_NEG
5078
 -- : BFD_RELOC_RL78_OP_AND
5079
 -- : BFD_RELOC_RL78_OP_SHRA
5080
 -- : BFD_RELOC_RL78_ABS8
5081
 -- : BFD_RELOC_RL78_ABS16
5082
 -- : BFD_RELOC_RL78_ABS16_REV
5083
 -- : BFD_RELOC_RL78_ABS32
5084
 -- : BFD_RELOC_RL78_ABS32_REV
5085
 -- : BFD_RELOC_RL78_ABS16U
5086
 -- : BFD_RELOC_RL78_ABS16UW
5087
 -- : BFD_RELOC_RL78_ABS16UL
5088
 -- : BFD_RELOC_RL78_RELAX
5089
 -- : BFD_RELOC_RL78_HI16
5090
 -- : BFD_RELOC_RL78_HI8
5091
 -- : BFD_RELOC_RL78_LO16
5092
     Renesas RL78 Relocations.
5093
 
5094
 -- : BFD_RELOC_RX_NEG8
5095
 -- : BFD_RELOC_RX_NEG16
5096
 -- : BFD_RELOC_RX_NEG24
5097
 -- : BFD_RELOC_RX_NEG32
5098
 -- : BFD_RELOC_RX_16_OP
5099
 -- : BFD_RELOC_RX_24_OP
5100
 -- : BFD_RELOC_RX_32_OP
5101
 -- : BFD_RELOC_RX_8U
5102
 -- : BFD_RELOC_RX_16U
5103
 -- : BFD_RELOC_RX_24U
5104
 -- : BFD_RELOC_RX_DIR3U_PCREL
5105
 -- : BFD_RELOC_RX_DIFF
5106
 -- : BFD_RELOC_RX_GPRELB
5107
 -- : BFD_RELOC_RX_GPRELW
5108
 -- : BFD_RELOC_RX_GPRELL
5109
 -- : BFD_RELOC_RX_SYM
5110
 -- : BFD_RELOC_RX_OP_SUBTRACT
5111
 -- : BFD_RELOC_RX_OP_NEG
5112
 -- : BFD_RELOC_RX_ABS8
5113
 -- : BFD_RELOC_RX_ABS16
5114
 -- : BFD_RELOC_RX_ABS16_REV
5115
 -- : BFD_RELOC_RX_ABS32
5116
 -- : BFD_RELOC_RX_ABS32_REV
5117
 -- : BFD_RELOC_RX_ABS16U
5118
 -- : BFD_RELOC_RX_ABS16UW
5119
 -- : BFD_RELOC_RX_ABS16UL
5120
 -- : BFD_RELOC_RX_RELAX
5121
     Renesas RX Relocations.
5122
 
5123
 -- : BFD_RELOC_390_12
5124
     Direct 12 bit.
5125
 
5126
 -- : BFD_RELOC_390_GOT12
5127
     12 bit GOT offset.
5128
 
5129
 -- : BFD_RELOC_390_PLT32
5130
     32 bit PC relative PLT address.
5131
 
5132
 -- : BFD_RELOC_390_COPY
5133
     Copy symbol at runtime.
5134
 
5135
 -- : BFD_RELOC_390_GLOB_DAT
5136
     Create GOT entry.
5137
 
5138
 -- : BFD_RELOC_390_JMP_SLOT
5139
     Create PLT entry.
5140
 
5141
 -- : BFD_RELOC_390_RELATIVE
5142
     Adjust by program base.
5143
 
5144
 -- : BFD_RELOC_390_GOTPC
5145
     32 bit PC relative offset to GOT.
5146
 
5147
 -- : BFD_RELOC_390_GOT16
5148
     16 bit GOT offset.
5149
 
5150
 -- : BFD_RELOC_390_PC16DBL
5151
     PC relative 16 bit shifted by 1.
5152
 
5153
 -- : BFD_RELOC_390_PLT16DBL
5154
     16 bit PC rel. PLT shifted by 1.
5155
 
5156
 -- : BFD_RELOC_390_PC32DBL
5157
     PC relative 32 bit shifted by 1.
5158
 
5159
 -- : BFD_RELOC_390_PLT32DBL
5160
     32 bit PC rel. PLT shifted by 1.
5161
 
5162
 -- : BFD_RELOC_390_GOTPCDBL
5163
     32 bit PC rel. GOT shifted by 1.
5164
 
5165
 -- : BFD_RELOC_390_GOT64
5166
     64 bit GOT offset.
5167
 
5168
 -- : BFD_RELOC_390_PLT64
5169
     64 bit PC relative PLT address.
5170
 
5171
 -- : BFD_RELOC_390_GOTENT
5172
     32 bit rel. offset to GOT entry.
5173
 
5174
 -- : BFD_RELOC_390_GOTOFF64
5175
     64 bit offset to GOT.
5176
 
5177
 -- : BFD_RELOC_390_GOTPLT12
5178
     12-bit offset to symbol-entry within GOT, with PLT handling.
5179
 
5180
 -- : BFD_RELOC_390_GOTPLT16
5181
     16-bit offset to symbol-entry within GOT, with PLT handling.
5182
 
5183
 -- : BFD_RELOC_390_GOTPLT32
5184
     32-bit offset to symbol-entry within GOT, with PLT handling.
5185
 
5186
 -- : BFD_RELOC_390_GOTPLT64
5187
     64-bit offset to symbol-entry within GOT, with PLT handling.
5188
 
5189
 -- : BFD_RELOC_390_GOTPLTENT
5190
     32-bit rel. offset to symbol-entry within GOT, with PLT handling.
5191
 
5192
 -- : BFD_RELOC_390_PLTOFF16
5193
     16-bit rel. offset from the GOT to a PLT entry.
5194
 
5195
 -- : BFD_RELOC_390_PLTOFF32
5196
     32-bit rel. offset from the GOT to a PLT entry.
5197
 
5198
 -- : BFD_RELOC_390_PLTOFF64
5199
     64-bit rel. offset from the GOT to a PLT entry.
5200
 
5201
 -- : BFD_RELOC_390_TLS_LOAD
5202
 -- : BFD_RELOC_390_TLS_GDCALL
5203
 -- : BFD_RELOC_390_TLS_LDCALL
5204
 -- : BFD_RELOC_390_TLS_GD32
5205
 -- : BFD_RELOC_390_TLS_GD64
5206
 -- : BFD_RELOC_390_TLS_GOTIE12
5207
 -- : BFD_RELOC_390_TLS_GOTIE32
5208
 -- : BFD_RELOC_390_TLS_GOTIE64
5209
 -- : BFD_RELOC_390_TLS_LDM32
5210
 -- : BFD_RELOC_390_TLS_LDM64
5211
 -- : BFD_RELOC_390_TLS_IE32
5212
 -- : BFD_RELOC_390_TLS_IE64
5213
 -- : BFD_RELOC_390_TLS_IEENT
5214
 -- : BFD_RELOC_390_TLS_LE32
5215
 -- : BFD_RELOC_390_TLS_LE64
5216
 -- : BFD_RELOC_390_TLS_LDO32
5217
 -- : BFD_RELOC_390_TLS_LDO64
5218
 -- : BFD_RELOC_390_TLS_DTPMOD
5219
 -- : BFD_RELOC_390_TLS_DTPOFF
5220
 -- : BFD_RELOC_390_TLS_TPOFF
5221
     s390 tls relocations.
5222
 
5223
 -- : BFD_RELOC_390_20
5224
 -- : BFD_RELOC_390_GOT20
5225
 -- : BFD_RELOC_390_GOTPLT20
5226
 -- : BFD_RELOC_390_TLS_GOTIE20
5227
     Long displacement extension.
5228
 
5229
 -- : BFD_RELOC_390_IRELATIVE
5230
     STT_GNU_IFUNC relocation.
5231
 
5232
 -- : BFD_RELOC_SCORE_GPREL15
5233
     Score relocations Low 16 bit for load/store
5234
 
5235
 -- : BFD_RELOC_SCORE_DUMMY2
5236
 -- : BFD_RELOC_SCORE_JMP
5237
     This is a 24-bit reloc with the right 1 bit assumed to be 0
5238
 
5239
 -- : BFD_RELOC_SCORE_BRANCH
5240
     This is a 19-bit reloc with the right 1 bit assumed to be 0
5241
 
5242
 -- : BFD_RELOC_SCORE_IMM30
5243
     This is a 32-bit reloc for 48-bit instructions.
5244
 
5245
 -- : BFD_RELOC_SCORE_IMM32
5246
     This is a 32-bit reloc for 48-bit instructions.
5247
 
5248
 -- : BFD_RELOC_SCORE16_JMP
5249
     This is a 11-bit reloc with the right 1 bit assumed to be 0
5250
 
5251
 -- : BFD_RELOC_SCORE16_BRANCH
5252
     This is a 8-bit reloc with the right 1 bit assumed to be 0
5253
 
5254
 -- : BFD_RELOC_SCORE_BCMP
5255
     This is a 9-bit reloc with the right 1 bit assumed to be 0
5256
 
5257
 -- : BFD_RELOC_SCORE_GOT15
5258
 -- : BFD_RELOC_SCORE_GOT_LO16
5259
 -- : BFD_RELOC_SCORE_CALL15
5260
 -- : BFD_RELOC_SCORE_DUMMY_HI16
5261
     Undocumented Score relocs
5262
 
5263
 -- : BFD_RELOC_IP2K_FR9
5264
     Scenix IP2K - 9-bit register number / data address
5265
 
5266
 -- : BFD_RELOC_IP2K_BANK
5267
     Scenix IP2K - 4-bit register/data bank number
5268
 
5269
 -- : BFD_RELOC_IP2K_ADDR16CJP
5270
     Scenix IP2K - low 13 bits of instruction word address
5271
 
5272
 -- : BFD_RELOC_IP2K_PAGE3
5273
     Scenix IP2K - high 3 bits of instruction word address
5274
 
5275
 -- : BFD_RELOC_IP2K_LO8DATA
5276
 -- : BFD_RELOC_IP2K_HI8DATA
5277
 -- : BFD_RELOC_IP2K_EX8DATA
5278
     Scenix IP2K - ext/low/high 8 bits of data address
5279
 
5280
 -- : BFD_RELOC_IP2K_LO8INSN
5281
 -- : BFD_RELOC_IP2K_HI8INSN
5282
     Scenix IP2K - low/high 8 bits of instruction word address
5283
 
5284
 -- : BFD_RELOC_IP2K_PC_SKIP
5285
     Scenix IP2K - even/odd PC modifier to modify snb pcl.0
5286
 
5287
 -- : BFD_RELOC_IP2K_TEXT
5288
     Scenix IP2K - 16 bit word address in text section.
5289
 
5290
 -- : BFD_RELOC_IP2K_FR_OFFSET
5291
     Scenix IP2K - 7-bit sp or dp offset
5292
 
5293
 -- : BFD_RELOC_VPE4KMATH_DATA
5294
 -- : BFD_RELOC_VPE4KMATH_INSN
5295
     Scenix VPE4K coprocessor - data/insn-space addressing
5296
 
5297
 -- : BFD_RELOC_VTABLE_INHERIT
5298
 -- : BFD_RELOC_VTABLE_ENTRY
5299
     These two relocations are used by the linker to determine which of
5300
     the entries in a C++ virtual function table are actually used.
5301
     When the -gc-sections option is given, the linker will zero out
5302
     the entries that are not used, so that the code for those
5303
     functions need not be included in the output.
5304
 
5305
     VTABLE_INHERIT is a zero-space relocation used to describe to the
5306
     linker the inheritance tree of a C++ virtual function table.  The
5307
     relocation's symbol should be the parent class' vtable, and the
5308
     relocation should be located at the child vtable.
5309
 
5310
     VTABLE_ENTRY is a zero-space relocation that describes the use of a
5311
     virtual function table entry.  The reloc's symbol should refer to
5312
     the table of the class mentioned in the code.  Off of that base,
5313
     an offset describes the entry that is being used.  For Rela hosts,
5314
     this offset is stored in the reloc's addend.  For Rel hosts, we
5315
     are forced to put this offset in the reloc's section offset.
5316
 
5317
 -- : BFD_RELOC_IA64_IMM14
5318
 -- : BFD_RELOC_IA64_IMM22
5319
 -- : BFD_RELOC_IA64_IMM64
5320
 -- : BFD_RELOC_IA64_DIR32MSB
5321
 -- : BFD_RELOC_IA64_DIR32LSB
5322
 -- : BFD_RELOC_IA64_DIR64MSB
5323
 -- : BFD_RELOC_IA64_DIR64LSB
5324
 -- : BFD_RELOC_IA64_GPREL22
5325
 -- : BFD_RELOC_IA64_GPREL64I
5326
 -- : BFD_RELOC_IA64_GPREL32MSB
5327
 -- : BFD_RELOC_IA64_GPREL32LSB
5328
 -- : BFD_RELOC_IA64_GPREL64MSB
5329
 -- : BFD_RELOC_IA64_GPREL64LSB
5330
 -- : BFD_RELOC_IA64_LTOFF22
5331
 -- : BFD_RELOC_IA64_LTOFF64I
5332
 -- : BFD_RELOC_IA64_PLTOFF22
5333
 -- : BFD_RELOC_IA64_PLTOFF64I
5334
 -- : BFD_RELOC_IA64_PLTOFF64MSB
5335
 -- : BFD_RELOC_IA64_PLTOFF64LSB
5336
 -- : BFD_RELOC_IA64_FPTR64I
5337
 -- : BFD_RELOC_IA64_FPTR32MSB
5338
 -- : BFD_RELOC_IA64_FPTR32LSB
5339
 -- : BFD_RELOC_IA64_FPTR64MSB
5340
 -- : BFD_RELOC_IA64_FPTR64LSB
5341
 -- : BFD_RELOC_IA64_PCREL21B
5342
 -- : BFD_RELOC_IA64_PCREL21BI
5343
 -- : BFD_RELOC_IA64_PCREL21M
5344
 -- : BFD_RELOC_IA64_PCREL21F
5345
 -- : BFD_RELOC_IA64_PCREL22
5346
 -- : BFD_RELOC_IA64_PCREL60B
5347
 -- : BFD_RELOC_IA64_PCREL64I
5348
 -- : BFD_RELOC_IA64_PCREL32MSB
5349
 -- : BFD_RELOC_IA64_PCREL32LSB
5350
 -- : BFD_RELOC_IA64_PCREL64MSB
5351
 -- : BFD_RELOC_IA64_PCREL64LSB
5352
 -- : BFD_RELOC_IA64_LTOFF_FPTR22
5353
 -- : BFD_RELOC_IA64_LTOFF_FPTR64I
5354
 -- : BFD_RELOC_IA64_LTOFF_FPTR32MSB
5355
 -- : BFD_RELOC_IA64_LTOFF_FPTR32LSB
5356
 -- : BFD_RELOC_IA64_LTOFF_FPTR64MSB
5357
 -- : BFD_RELOC_IA64_LTOFF_FPTR64LSB
5358
 -- : BFD_RELOC_IA64_SEGREL32MSB
5359
 -- : BFD_RELOC_IA64_SEGREL32LSB
5360
 -- : BFD_RELOC_IA64_SEGREL64MSB
5361
 -- : BFD_RELOC_IA64_SEGREL64LSB
5362
 -- : BFD_RELOC_IA64_SECREL32MSB
5363
 -- : BFD_RELOC_IA64_SECREL32LSB
5364
 -- : BFD_RELOC_IA64_SECREL64MSB
5365
 -- : BFD_RELOC_IA64_SECREL64LSB
5366
 -- : BFD_RELOC_IA64_REL32MSB
5367
 -- : BFD_RELOC_IA64_REL32LSB
5368
 -- : BFD_RELOC_IA64_REL64MSB
5369
 -- : BFD_RELOC_IA64_REL64LSB
5370
 -- : BFD_RELOC_IA64_LTV32MSB
5371
 -- : BFD_RELOC_IA64_LTV32LSB
5372
 -- : BFD_RELOC_IA64_LTV64MSB
5373
 -- : BFD_RELOC_IA64_LTV64LSB
5374
 -- : BFD_RELOC_IA64_IPLTMSB
5375
 -- : BFD_RELOC_IA64_IPLTLSB
5376
 -- : BFD_RELOC_IA64_COPY
5377
 -- : BFD_RELOC_IA64_LTOFF22X
5378
 -- : BFD_RELOC_IA64_LDXMOV
5379
 -- : BFD_RELOC_IA64_TPREL14
5380
 -- : BFD_RELOC_IA64_TPREL22
5381
 -- : BFD_RELOC_IA64_TPREL64I
5382
 -- : BFD_RELOC_IA64_TPREL64MSB
5383
 -- : BFD_RELOC_IA64_TPREL64LSB
5384
 -- : BFD_RELOC_IA64_LTOFF_TPREL22
5385
 -- : BFD_RELOC_IA64_DTPMOD64MSB
5386
 -- : BFD_RELOC_IA64_DTPMOD64LSB
5387
 -- : BFD_RELOC_IA64_LTOFF_DTPMOD22
5388
 -- : BFD_RELOC_IA64_DTPREL14
5389
 -- : BFD_RELOC_IA64_DTPREL22
5390
 -- : BFD_RELOC_IA64_DTPREL64I
5391
 -- : BFD_RELOC_IA64_DTPREL32MSB
5392
 -- : BFD_RELOC_IA64_DTPREL32LSB
5393
 -- : BFD_RELOC_IA64_DTPREL64MSB
5394
 -- : BFD_RELOC_IA64_DTPREL64LSB
5395
 -- : BFD_RELOC_IA64_LTOFF_DTPREL22
5396
     Intel IA64 Relocations.
5397
 
5398
 -- : BFD_RELOC_M68HC11_HI8
5399
     Motorola 68HC11 reloc.  This is the 8 bit high part of an absolute
5400
     address.
5401
 
5402
 -- : BFD_RELOC_M68HC11_LO8
5403
     Motorola 68HC11 reloc.  This is the 8 bit low part of an absolute
5404
     address.
5405
 
5406
 -- : BFD_RELOC_M68HC11_3B
5407
     Motorola 68HC11 reloc.  This is the 3 bit of a value.
5408
 
5409
 -- : BFD_RELOC_M68HC11_RL_JUMP
5410
     Motorola 68HC11 reloc.  This reloc marks the beginning of a
5411
     jump/call instruction.  It is used for linker relaxation to
5412
     correctly identify beginning of instruction and change some
5413
     branches to use PC-relative addressing mode.
5414
 
5415
 -- : BFD_RELOC_M68HC11_RL_GROUP
5416
     Motorola 68HC11 reloc.  This reloc marks a group of several
5417
     instructions that gcc generates and for which the linker
5418
     relaxation pass can modify and/or remove some of them.
5419
 
5420
 -- : BFD_RELOC_M68HC11_LO16
5421
     Motorola 68HC11 reloc.  This is the 16-bit lower part of an
5422
     address.  It is used for 'call' instruction to specify the symbol
5423
     address without any special transformation (due to memory bank
5424
     window).
5425
 
5426
 -- : BFD_RELOC_M68HC11_PAGE
5427
     Motorola 68HC11 reloc.  This is a 8-bit reloc that specifies the
5428
     page number of an address.  It is used by 'call' instruction to
5429
     specify the page number of the symbol.
5430
 
5431
 -- : BFD_RELOC_M68HC11_24
5432
     Motorola 68HC11 reloc.  This is a 24-bit reloc that represents the
5433
     address with a 16-bit value and a 8-bit page number.  The symbol
5434
     address is transformed to follow the 16K memory bank of 68HC12
5435
     (seen as mapped in the window).
5436
 
5437
 -- : BFD_RELOC_M68HC12_5B
5438
     Motorola 68HC12 reloc.  This is the 5 bits of a value.
5439
 
5440
 -- : BFD_RELOC_XGATE_RL_JUMP
5441
     Freescale XGATE reloc.  This reloc marks the beginning of a
5442
     bra/jal instruction.
5443
 
5444
 -- : BFD_RELOC_XGATE_RL_GROUP
5445
     Freescale XGATE reloc.  This reloc marks a group of several
5446
     instructions that gcc generates and for which the linker
5447
     relaxation pass can modify and/or remove some of them.
5448
 
5449
 -- : BFD_RELOC_XGATE_LO16
5450
     Freescale XGATE reloc.  This is the 16-bit lower part of an
5451
     address.  It is used for the '16-bit' instructions.
5452
 
5453
 -- : BFD_RELOC_XGATE_GPAGE
5454
     Freescale XGATE reloc.
5455
 
5456
 -- : BFD_RELOC_XGATE_24
5457
     Freescale XGATE reloc.
5458
 
5459
 -- : BFD_RELOC_XGATE_PCREL_9
5460
     Freescale XGATE reloc.  This is a 9-bit pc-relative reloc.
5461
 
5462
 -- : BFD_RELOC_XGATE_PCREL_10
5463
     Freescale XGATE reloc.  This is a 10-bit pc-relative reloc.
5464
 
5465
 -- : BFD_RELOC_XGATE_IMM8_LO
5466
     Freescale XGATE reloc.  This is the 16-bit lower part of an
5467
     address.  It is used for the '16-bit' instructions.
5468
 
5469
 -- : BFD_RELOC_XGATE_IMM8_HI
5470
     Freescale XGATE reloc.  This is the 16-bit higher part of an
5471
     address.  It is used for the '16-bit' instructions.
5472
 
5473
 -- : BFD_RELOC_XGATE_IMM3
5474
     Freescale XGATE reloc.  This is a 3-bit pc-relative reloc.
5475
 
5476
 -- : BFD_RELOC_XGATE_IMM4
5477
     Freescale XGATE reloc.  This is a 4-bit pc-relative reloc.
5478
 
5479
 -- : BFD_RELOC_XGATE_IMM5
5480
     Freescale XGATE reloc.  This is a 5-bit pc-relative reloc.
5481
 
5482
 -- : BFD_RELOC_M68HC12_9B
5483
     Motorola 68HC12 reloc.  This is the 9 bits of a value.
5484
 
5485
 -- : BFD_RELOC_M68HC12_16B
5486
     Motorola 68HC12 reloc.  This is the 16 bits of a value.
5487
 
5488
 -- : BFD_RELOC_M68HC12_9_PCREL
5489
     Motorola 68HC12/XGATE reloc.  This is a PCREL9 branch.
5490
 
5491
 -- : BFD_RELOC_M68HC12_10_PCREL
5492
     Motorola 68HC12/XGATE reloc.  This is a PCREL10 branch.
5493
 
5494
 -- : BFD_RELOC_M68HC12_LO8XG
5495
     Motorola 68HC12/XGATE reloc.  This is the 8 bit low part of an
5496
     absolute address and immediately precedes a matching HI8XG part.
5497
 
5498
 -- : BFD_RELOC_M68HC12_HI8XG
5499
     Motorola 68HC12/XGATE reloc.  This is the 8 bit high part of an
5500
     absolute address and immediately follows a matching LO8XG part.
5501
 
5502
 -- : BFD_RELOC_16C_NUM08
5503
 -- : BFD_RELOC_16C_NUM08_C
5504
 -- : BFD_RELOC_16C_NUM16
5505
 -- : BFD_RELOC_16C_NUM16_C
5506
 -- : BFD_RELOC_16C_NUM32
5507
 -- : BFD_RELOC_16C_NUM32_C
5508
 -- : BFD_RELOC_16C_DISP04
5509
 -- : BFD_RELOC_16C_DISP04_C
5510
 -- : BFD_RELOC_16C_DISP08
5511
 -- : BFD_RELOC_16C_DISP08_C
5512
 -- : BFD_RELOC_16C_DISP16
5513
 -- : BFD_RELOC_16C_DISP16_C
5514
 -- : BFD_RELOC_16C_DISP24
5515
 -- : BFD_RELOC_16C_DISP24_C
5516
 -- : BFD_RELOC_16C_DISP24a
5517
 -- : BFD_RELOC_16C_DISP24a_C
5518
 -- : BFD_RELOC_16C_REG04
5519
 -- : BFD_RELOC_16C_REG04_C
5520
 -- : BFD_RELOC_16C_REG04a
5521
 -- : BFD_RELOC_16C_REG04a_C
5522
 -- : BFD_RELOC_16C_REG14
5523
 -- : BFD_RELOC_16C_REG14_C
5524
 -- : BFD_RELOC_16C_REG16
5525
 -- : BFD_RELOC_16C_REG16_C
5526
 -- : BFD_RELOC_16C_REG20
5527
 -- : BFD_RELOC_16C_REG20_C
5528
 -- : BFD_RELOC_16C_ABS20
5529
 -- : BFD_RELOC_16C_ABS20_C
5530
 -- : BFD_RELOC_16C_ABS24
5531
 -- : BFD_RELOC_16C_ABS24_C
5532
 -- : BFD_RELOC_16C_IMM04
5533
 -- : BFD_RELOC_16C_IMM04_C
5534
 -- : BFD_RELOC_16C_IMM16
5535
 -- : BFD_RELOC_16C_IMM16_C
5536
 -- : BFD_RELOC_16C_IMM20
5537
 -- : BFD_RELOC_16C_IMM20_C
5538
 -- : BFD_RELOC_16C_IMM24
5539
 -- : BFD_RELOC_16C_IMM24_C
5540
 -- : BFD_RELOC_16C_IMM32
5541
 -- : BFD_RELOC_16C_IMM32_C
5542
     NS CR16C Relocations.
5543
 
5544
 -- : BFD_RELOC_CR16_NUM8
5545
 -- : BFD_RELOC_CR16_NUM16
5546
 -- : BFD_RELOC_CR16_NUM32
5547
 -- : BFD_RELOC_CR16_NUM32a
5548
 -- : BFD_RELOC_CR16_REGREL0
5549
 -- : BFD_RELOC_CR16_REGREL4
5550
 -- : BFD_RELOC_CR16_REGREL4a
5551
 -- : BFD_RELOC_CR16_REGREL14
5552
 -- : BFD_RELOC_CR16_REGREL14a
5553
 -- : BFD_RELOC_CR16_REGREL16
5554
 -- : BFD_RELOC_CR16_REGREL20
5555
 -- : BFD_RELOC_CR16_REGREL20a
5556
 -- : BFD_RELOC_CR16_ABS20
5557
 -- : BFD_RELOC_CR16_ABS24
5558
 -- : BFD_RELOC_CR16_IMM4
5559
 -- : BFD_RELOC_CR16_IMM8
5560
 -- : BFD_RELOC_CR16_IMM16
5561
 -- : BFD_RELOC_CR16_IMM20
5562
 -- : BFD_RELOC_CR16_IMM24
5563
 -- : BFD_RELOC_CR16_IMM32
5564
 -- : BFD_RELOC_CR16_IMM32a
5565
 -- : BFD_RELOC_CR16_DISP4
5566
 -- : BFD_RELOC_CR16_DISP8
5567
 -- : BFD_RELOC_CR16_DISP16
5568
 -- : BFD_RELOC_CR16_DISP20
5569
 -- : BFD_RELOC_CR16_DISP24
5570
 -- : BFD_RELOC_CR16_DISP24a
5571
 -- : BFD_RELOC_CR16_SWITCH8
5572
 -- : BFD_RELOC_CR16_SWITCH16
5573
 -- : BFD_RELOC_CR16_SWITCH32
5574
 -- : BFD_RELOC_CR16_GOT_REGREL20
5575
 -- : BFD_RELOC_CR16_GOTC_REGREL20
5576
 -- : BFD_RELOC_CR16_GLOB_DAT
5577
     NS CR16 Relocations.
5578
 
5579
 -- : BFD_RELOC_CRX_REL4
5580
 -- : BFD_RELOC_CRX_REL8
5581
 -- : BFD_RELOC_CRX_REL8_CMP
5582
 -- : BFD_RELOC_CRX_REL16
5583
 -- : BFD_RELOC_CRX_REL24
5584
 -- : BFD_RELOC_CRX_REL32
5585
 -- : BFD_RELOC_CRX_REGREL12
5586
 -- : BFD_RELOC_CRX_REGREL22
5587
 -- : BFD_RELOC_CRX_REGREL28
5588
 -- : BFD_RELOC_CRX_REGREL32
5589
 -- : BFD_RELOC_CRX_ABS16
5590
 -- : BFD_RELOC_CRX_ABS32
5591
 -- : BFD_RELOC_CRX_NUM8
5592
 -- : BFD_RELOC_CRX_NUM16
5593
 -- : BFD_RELOC_CRX_NUM32
5594
 -- : BFD_RELOC_CRX_IMM16
5595
 -- : BFD_RELOC_CRX_IMM32
5596
 -- : BFD_RELOC_CRX_SWITCH8
5597
 -- : BFD_RELOC_CRX_SWITCH16
5598
 -- : BFD_RELOC_CRX_SWITCH32
5599
     NS CRX Relocations.
5600
 
5601
 -- : BFD_RELOC_CRIS_BDISP8
5602
 -- : BFD_RELOC_CRIS_UNSIGNED_5
5603
 -- : BFD_RELOC_CRIS_SIGNED_6
5604
 -- : BFD_RELOC_CRIS_UNSIGNED_6
5605
 -- : BFD_RELOC_CRIS_SIGNED_8
5606
 -- : BFD_RELOC_CRIS_UNSIGNED_8
5607
 -- : BFD_RELOC_CRIS_SIGNED_16
5608
 -- : BFD_RELOC_CRIS_UNSIGNED_16
5609
 -- : BFD_RELOC_CRIS_LAPCQ_OFFSET
5610
 -- : BFD_RELOC_CRIS_UNSIGNED_4
5611
     These relocs are only used within the CRIS assembler.  They are not
5612
     (at present) written to any object files.
5613
 
5614
 -- : BFD_RELOC_CRIS_COPY
5615
 -- : BFD_RELOC_CRIS_GLOB_DAT
5616
 -- : BFD_RELOC_CRIS_JUMP_SLOT
5617
 -- : BFD_RELOC_CRIS_RELATIVE
5618
     Relocs used in ELF shared libraries for CRIS.
5619
 
5620
 -- : BFD_RELOC_CRIS_32_GOT
5621
     32-bit offset to symbol-entry within GOT.
5622
 
5623
 -- : BFD_RELOC_CRIS_16_GOT
5624
     16-bit offset to symbol-entry within GOT.
5625
 
5626
 -- : BFD_RELOC_CRIS_32_GOTPLT
5627
     32-bit offset to symbol-entry within GOT, with PLT handling.
5628
 
5629
 -- : BFD_RELOC_CRIS_16_GOTPLT
5630
     16-bit offset to symbol-entry within GOT, with PLT handling.
5631
 
5632
 -- : BFD_RELOC_CRIS_32_GOTREL
5633
     32-bit offset to symbol, relative to GOT.
5634
 
5635
 -- : BFD_RELOC_CRIS_32_PLT_GOTREL
5636
     32-bit offset to symbol with PLT entry, relative to GOT.
5637
 
5638
 -- : BFD_RELOC_CRIS_32_PLT_PCREL
5639
     32-bit offset to symbol with PLT entry, relative to this
5640
     relocation.
5641
 
5642
 -- : BFD_RELOC_CRIS_32_GOT_GD
5643
 -- : BFD_RELOC_CRIS_16_GOT_GD
5644
 -- : BFD_RELOC_CRIS_32_GD
5645
 -- : BFD_RELOC_CRIS_DTP
5646
 -- : BFD_RELOC_CRIS_32_DTPREL
5647
 -- : BFD_RELOC_CRIS_16_DTPREL
5648
 -- : BFD_RELOC_CRIS_32_GOT_TPREL
5649
 -- : BFD_RELOC_CRIS_16_GOT_TPREL
5650
 -- : BFD_RELOC_CRIS_32_TPREL
5651
 -- : BFD_RELOC_CRIS_16_TPREL
5652
 -- : BFD_RELOC_CRIS_DTPMOD
5653
 -- : BFD_RELOC_CRIS_32_IE
5654
     Relocs used in TLS code for CRIS.
5655
 
5656
 -- : BFD_RELOC_860_COPY
5657
 -- : BFD_RELOC_860_GLOB_DAT
5658
 -- : BFD_RELOC_860_JUMP_SLOT
5659
 -- : BFD_RELOC_860_RELATIVE
5660
 -- : BFD_RELOC_860_PC26
5661
 -- : BFD_RELOC_860_PLT26
5662
 -- : BFD_RELOC_860_PC16
5663
 -- : BFD_RELOC_860_LOW0
5664
 -- : BFD_RELOC_860_SPLIT0
5665
 -- : BFD_RELOC_860_LOW1
5666
 -- : BFD_RELOC_860_SPLIT1
5667
 -- : BFD_RELOC_860_LOW2
5668
 -- : BFD_RELOC_860_SPLIT2
5669
 -- : BFD_RELOC_860_LOW3
5670
 -- : BFD_RELOC_860_LOGOT0
5671
 -- : BFD_RELOC_860_SPGOT0
5672
 -- : BFD_RELOC_860_LOGOT1
5673
 -- : BFD_RELOC_860_SPGOT1
5674
 -- : BFD_RELOC_860_LOGOTOFF0
5675
 -- : BFD_RELOC_860_SPGOTOFF0
5676
 -- : BFD_RELOC_860_LOGOTOFF1
5677
 -- : BFD_RELOC_860_SPGOTOFF1
5678
 -- : BFD_RELOC_860_LOGOTOFF2
5679
 -- : BFD_RELOC_860_LOGOTOFF3
5680
 -- : BFD_RELOC_860_LOPC
5681
 -- : BFD_RELOC_860_HIGHADJ
5682
 -- : BFD_RELOC_860_HAGOT
5683
 -- : BFD_RELOC_860_HAGOTOFF
5684
 -- : BFD_RELOC_860_HAPC
5685
 -- : BFD_RELOC_860_HIGH
5686
 -- : BFD_RELOC_860_HIGOT
5687
 -- : BFD_RELOC_860_HIGOTOFF
5688
     Intel i860 Relocations.
5689
 
5690
 -- : BFD_RELOC_OR1K_REL_26
5691
 -- : BFD_RELOC_OR1K_GOTPC_HI16
5692
 -- : BFD_RELOC_OR1K_GOTPC_LO16
5693
 -- : BFD_RELOC_OR1K_GOT16
5694
 -- : BFD_RELOC_OR1K_PLT26
5695
 -- : BFD_RELOC_OR1K_GOTOFF_HI16
5696
 -- : BFD_RELOC_OR1K_GOTOFF_LO16
5697
 -- : BFD_RELOC_OR1K_COPY
5698
 -- : BFD_RELOC_OR1K_GLOB_DAT
5699
 -- : BFD_RELOC_OR1K_JMP_SLOT
5700
 -- : BFD_RELOC_OR1K_RELATIVE
5701
 -- : BFD_RELOC_OR1K_TLS_GD_HI16
5702
 -- : BFD_RELOC_OR1K_TLS_GD_LO16
5703
 -- : BFD_RELOC_OR1K_TLS_LDM_HI16
5704
 -- : BFD_RELOC_OR1K_TLS_LDM_LO16
5705
 -- : BFD_RELOC_OR1K_TLS_LDO_HI16
5706
 -- : BFD_RELOC_OR1K_TLS_LDO_LO16
5707
 -- : BFD_RELOC_OR1K_TLS_IE_HI16
5708
 -- : BFD_RELOC_OR1K_TLS_IE_LO16
5709
 -- : BFD_RELOC_OR1K_TLS_LE_HI16
5710
 -- : BFD_RELOC_OR1K_TLS_LE_LO16
5711
 -- : BFD_RELOC_OR1K_TLS_TPOFF
5712
 -- : BFD_RELOC_OR1K_TLS_DTPOFF
5713
 -- : BFD_RELOC_OR1K_TLS_DTPMOD
5714
     OpenRISC 1000 Relocations.
5715
 
5716
 -- : BFD_RELOC_H8_DIR16A8
5717
 -- : BFD_RELOC_H8_DIR16R8
5718
 -- : BFD_RELOC_H8_DIR24A8
5719
 -- : BFD_RELOC_H8_DIR24R8
5720
 -- : BFD_RELOC_H8_DIR32A16
5721
     H8 elf Relocations.
5722
 
5723
 -- : BFD_RELOC_XSTORMY16_REL_12
5724
 -- : BFD_RELOC_XSTORMY16_12
5725
 -- : BFD_RELOC_XSTORMY16_24
5726
 -- : BFD_RELOC_XSTORMY16_FPTR16
5727
     Sony Xstormy16 Relocations.
5728
 
5729
 -- : BFD_RELOC_RELC
5730
     Self-describing complex relocations.
5731
 
5732
 -- : BFD_RELOC_XC16X_PAG
5733
 -- : BFD_RELOC_XC16X_POF
5734
 -- : BFD_RELOC_XC16X_SEG
5735
 -- : BFD_RELOC_XC16X_SOF
5736
     Infineon Relocations.
5737
 
5738
 -- : BFD_RELOC_VAX_GLOB_DAT
5739
 -- : BFD_RELOC_VAX_JMP_SLOT
5740
 -- : BFD_RELOC_VAX_RELATIVE
5741
     Relocations used by VAX ELF.
5742
 
5743
 -- : BFD_RELOC_MT_PC16
5744
     Morpho MT - 16 bit immediate relocation.
5745
 
5746
 -- : BFD_RELOC_MT_HI16
5747
     Morpho MT - Hi 16 bits of an address.
5748
 
5749
 -- : BFD_RELOC_MT_LO16
5750
     Morpho MT - Low 16 bits of an address.
5751
 
5752
 -- : BFD_RELOC_MT_GNU_VTINHERIT
5753
     Morpho MT - Used to tell the linker which vtable entries are used.
5754
 
5755
 -- : BFD_RELOC_MT_GNU_VTENTRY
5756
     Morpho MT - Used to tell the linker which vtable entries are used.
5757
 
5758
 -- : BFD_RELOC_MT_PCINSN8
5759
     Morpho MT - 8 bit immediate relocation.
5760
 
5761
 -- : BFD_RELOC_MSP430_10_PCREL
5762
 -- : BFD_RELOC_MSP430_16_PCREL
5763
 -- : BFD_RELOC_MSP430_16
5764
 -- : BFD_RELOC_MSP430_16_PCREL_BYTE
5765
 -- : BFD_RELOC_MSP430_16_BYTE
5766
 -- : BFD_RELOC_MSP430_2X_PCREL
5767
 -- : BFD_RELOC_MSP430_RL_PCREL
5768
     msp430 specific relocation codes
5769
 
5770
 -- : BFD_RELOC_IQ2000_OFFSET_16
5771
 -- : BFD_RELOC_IQ2000_OFFSET_21
5772
 -- : BFD_RELOC_IQ2000_UHI16
5773
     IQ2000 Relocations.
5774
 
5775
 -- : BFD_RELOC_XTENSA_RTLD
5776
     Special Xtensa relocation used only by PLT entries in ELF shared
5777
     objects to indicate that the runtime linker should set the value
5778
     to one of its own internal functions or data structures.
5779
 
5780
 -- : BFD_RELOC_XTENSA_GLOB_DAT
5781
 -- : BFD_RELOC_XTENSA_JMP_SLOT
5782
 -- : BFD_RELOC_XTENSA_RELATIVE
5783
     Xtensa relocations for ELF shared objects.
5784
 
5785
 -- : BFD_RELOC_XTENSA_PLT
5786
     Xtensa relocation used in ELF object files for symbols that may
5787
     require PLT entries.  Otherwise, this is just a generic 32-bit
5788
     relocation.
5789
 
5790
 -- : BFD_RELOC_XTENSA_DIFF8
5791
 -- : BFD_RELOC_XTENSA_DIFF16
5792
 -- : BFD_RELOC_XTENSA_DIFF32
5793
     Xtensa relocations to mark the difference of two local symbols.
5794
     These are only needed to support linker relaxation and can be
5795
     ignored when not relaxing.  The field is set to the value of the
5796
     difference assuming no relaxation.  The relocation encodes the
5797
     position of the first symbol so the linker can determine whether
5798
     to adjust the field value.
5799
 
5800
 -- : BFD_RELOC_XTENSA_SLOT0_OP
5801
 -- : BFD_RELOC_XTENSA_SLOT1_OP
5802
 -- : BFD_RELOC_XTENSA_SLOT2_OP
5803
 -- : BFD_RELOC_XTENSA_SLOT3_OP
5804
 -- : BFD_RELOC_XTENSA_SLOT4_OP
5805
 -- : BFD_RELOC_XTENSA_SLOT5_OP
5806
 -- : BFD_RELOC_XTENSA_SLOT6_OP
5807
 -- : BFD_RELOC_XTENSA_SLOT7_OP
5808
 -- : BFD_RELOC_XTENSA_SLOT8_OP
5809
 -- : BFD_RELOC_XTENSA_SLOT9_OP
5810
 -- : BFD_RELOC_XTENSA_SLOT10_OP
5811
 -- : BFD_RELOC_XTENSA_SLOT11_OP
5812
 -- : BFD_RELOC_XTENSA_SLOT12_OP
5813
 -- : BFD_RELOC_XTENSA_SLOT13_OP
5814
 -- : BFD_RELOC_XTENSA_SLOT14_OP
5815
     Generic Xtensa relocations for instruction operands.  Only the slot
5816
     number is encoded in the relocation.  The relocation applies to the
5817
     last PC-relative immediate operand, or if there are no PC-relative
5818
     immediates, to the last immediate operand.
5819
 
5820
 -- : BFD_RELOC_XTENSA_SLOT0_ALT
5821
 -- : BFD_RELOC_XTENSA_SLOT1_ALT
5822
 -- : BFD_RELOC_XTENSA_SLOT2_ALT
5823
 -- : BFD_RELOC_XTENSA_SLOT3_ALT
5824
 -- : BFD_RELOC_XTENSA_SLOT4_ALT
5825
 -- : BFD_RELOC_XTENSA_SLOT5_ALT
5826
 -- : BFD_RELOC_XTENSA_SLOT6_ALT
5827
 -- : BFD_RELOC_XTENSA_SLOT7_ALT
5828
 -- : BFD_RELOC_XTENSA_SLOT8_ALT
5829
 -- : BFD_RELOC_XTENSA_SLOT9_ALT
5830
 -- : BFD_RELOC_XTENSA_SLOT10_ALT
5831
 -- : BFD_RELOC_XTENSA_SLOT11_ALT
5832
 -- : BFD_RELOC_XTENSA_SLOT12_ALT
5833
 -- : BFD_RELOC_XTENSA_SLOT13_ALT
5834
 -- : BFD_RELOC_XTENSA_SLOT14_ALT
5835
     Alternate Xtensa relocations.  Only the slot is encoded in the
5836
     relocation.  The meaning of these relocations is opcode-specific.
5837
 
5838
 -- : BFD_RELOC_XTENSA_OP0
5839
 -- : BFD_RELOC_XTENSA_OP1
5840
 -- : BFD_RELOC_XTENSA_OP2
5841
     Xtensa relocations for backward compatibility.  These have all been
5842
     replaced by BFD_RELOC_XTENSA_SLOT0_OP.
5843
 
5844
 -- : BFD_RELOC_XTENSA_ASM_EXPAND
5845
     Xtensa relocation to mark that the assembler expanded the
5846
     instructions from an original target.  The expansion size is
5847
     encoded in the reloc size.
5848
 
5849
 -- : BFD_RELOC_XTENSA_ASM_SIMPLIFY
5850
     Xtensa relocation to mark that the linker should simplify
5851
     assembler-expanded instructions.  This is commonly used internally
5852
     by the linker after analysis of a BFD_RELOC_XTENSA_ASM_EXPAND.
5853
 
5854
 -- : BFD_RELOC_XTENSA_TLSDESC_FN
5855
 -- : BFD_RELOC_XTENSA_TLSDESC_ARG
5856
 -- : BFD_RELOC_XTENSA_TLS_DTPOFF
5857
 -- : BFD_RELOC_XTENSA_TLS_TPOFF
5858
 -- : BFD_RELOC_XTENSA_TLS_FUNC
5859
 -- : BFD_RELOC_XTENSA_TLS_ARG
5860
 -- : BFD_RELOC_XTENSA_TLS_CALL
5861
     Xtensa TLS relocations.
5862
 
5863
 -- : BFD_RELOC_Z80_DISP8
5864
     8 bit signed offset in (ix+d) or (iy+d).
5865
 
5866
 -- : BFD_RELOC_Z8K_DISP7
5867
     DJNZ offset.
5868
 
5869
 -- : BFD_RELOC_Z8K_CALLR
5870
     CALR offset.
5871
 
5872
 -- : BFD_RELOC_Z8K_IMM4L
5873
     4 bit value.
5874
 
5875
 -- : BFD_RELOC_LM32_CALL
5876
 -- : BFD_RELOC_LM32_BRANCH
5877
 -- : BFD_RELOC_LM32_16_GOT
5878
 -- : BFD_RELOC_LM32_GOTOFF_HI16
5879
 -- : BFD_RELOC_LM32_GOTOFF_LO16
5880
 -- : BFD_RELOC_LM32_COPY
5881
 -- : BFD_RELOC_LM32_GLOB_DAT
5882
 -- : BFD_RELOC_LM32_JMP_SLOT
5883
 -- : BFD_RELOC_LM32_RELATIVE
5884
     Lattice Mico32 relocations.
5885
 
5886
 -- : BFD_RELOC_MACH_O_SECTDIFF
5887
     Difference between two section addreses.  Must be followed by a
5888
     BFD_RELOC_MACH_O_PAIR.
5889
 
5890
 -- : BFD_RELOC_MACH_O_LOCAL_SECTDIFF
5891
     Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.
5892
 
5893
 -- : BFD_RELOC_MACH_O_PAIR
5894
     Pair of relocation.  Contains the first symbol.
5895
 
5896
 -- : BFD_RELOC_MACH_O_X86_64_BRANCH32
5897
 -- : BFD_RELOC_MACH_O_X86_64_BRANCH8
5898
     PCREL relocations.  They are marked as branch to create PLT entry
5899
     if required.
5900
 
5901
 -- : BFD_RELOC_MACH_O_X86_64_GOT
5902
     Used when referencing a GOT entry.
5903
 
5904
 -- : BFD_RELOC_MACH_O_X86_64_GOT_LOAD
5905
     Used when loading a GOT entry with movq.  It is specially marked
5906
     so that the linker could optimize the movq to a leaq if possible.
5907
 
5908
 -- : BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32
5909
     Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
5910
 
5911
 -- : BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64
5912
     Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
5913
 
5914
 -- : BFD_RELOC_MACH_O_X86_64_PCREL32_1
5915
     Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
5916
 
5917
 -- : BFD_RELOC_MACH_O_X86_64_PCREL32_2
5918
     Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.
5919
 
5920
 -- : BFD_RELOC_MACH_O_X86_64_PCREL32_4
5921
     Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
5922
 
5923
 -- : BFD_RELOC_MICROBLAZE_32_LO
5924
     This is a 32 bit reloc for the microblaze that stores the low 16
5925
     bits of a value
5926
 
5927
 -- : BFD_RELOC_MICROBLAZE_32_LO_PCREL
5928
     This is a 32 bit pc-relative reloc for the microblaze that stores
5929
     the low 16 bits of a value
5930
 
5931
 -- : BFD_RELOC_MICROBLAZE_32_ROSDA
5932
     This is a 32 bit reloc for the microblaze that stores a value
5933
     relative to the read-only small data area anchor
5934
 
5935
 -- : BFD_RELOC_MICROBLAZE_32_RWSDA
5936
     This is a 32 bit reloc for the microblaze that stores a value
5937
     relative to the read-write small data area anchor
5938
 
5939
 -- : BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
5940
     This is a 32 bit reloc for the microblaze to handle expressions of
5941
     the form "Symbol Op Symbol"
5942
 
5943
 -- : BFD_RELOC_MICROBLAZE_64_NONE
5944
     This is a 64 bit reloc that stores the 32 bit pc relative value in
5945
     two words (with an imm instruction).  No relocation is done here -
5946
     only used for relaxing
5947
 
5948
 -- : BFD_RELOC_MICROBLAZE_64_GOTPC
5949
     This is a 64 bit reloc that stores the 32 bit pc relative value in
5950
     two words (with an imm instruction).  The relocation is
5951
     PC-relative GOT offset
5952
 
5953
 -- : BFD_RELOC_MICROBLAZE_64_GOT
5954
     This is a 64 bit reloc that stores the 32 bit pc relative value in
5955
     two words (with an imm instruction).  The relocation is GOT offset
5956
 
5957
 -- : BFD_RELOC_MICROBLAZE_64_PLT
5958
     This is a 64 bit reloc that stores the 32 bit pc relative value in
5959
     two words (with an imm instruction).  The relocation is
5960
     PC-relative offset into PLT
5961
 
5962
 -- : BFD_RELOC_MICROBLAZE_64_GOTOFF
5963
     This is a 64 bit reloc that stores the 32 bit GOT relative value
5964
     in two words (with an imm instruction).  The relocation is
5965
     relative offset from _GLOBAL_OFFSET_TABLE_
5966
 
5967
 -- : BFD_RELOC_MICROBLAZE_32_GOTOFF
5968
     This is a 32 bit reloc that stores the 32 bit GOT relative value
5969
     in a word.  The relocation is relative offset from
5970
 
5971
 -- : BFD_RELOC_MICROBLAZE_COPY
5972
     This is used to tell the dynamic linker to copy the value out of
5973
     the dynamic object into the runtime process image.
5974
 
5975
 -- : BFD_RELOC_AARCH64_ADD_LO12
5976
     AArch64 ADD immediate instruction, holding bits 0 to 11 of the
5977
     address.  Used in conjunction with
5978
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
5979
 
5980
 -- : BFD_RELOC_AARCH64_GOT_LD_PREL19
5981
     AArch64 Load Literal instruction, holding a 19 bit PC relative word
5982
     offset of the global offset table entry for a symbol.  The lowest
5983
     two bits must be zero and are not stored in the instruction,
5984
     giving a 21 bit signed byte offset.  This relocation type requires
5985
     signed overflow checking.
5986
 
5987
 -- : BFD_RELOC_AARCH64_ADR_GOT_PAGE
5988
     Get to the page base of the global offset table entry for a symbol
5989
     as part of an ADRP instruction using a 21 bit PC relative
5990
     value.Used in conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
5991
 
5992
 -- : BFD_RELOC_AARCH64_ADR_HI21_PCREL
5993
     AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
5994
     offset, giving a 4KB aligned page base address.
5995
 
5996
 -- : BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL
5997
     AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
5998
     offset, giving a 4KB aligned page base address, but with no
5999
     overflow checking.
6000
 
6001
 -- : BFD_RELOC_AARCH64_ADR_LO21_PCREL
6002
     AArch64 ADR instruction, holding a simple 21 bit pc-relative byte
6003
     offset.
6004
 
6005
 -- : BFD_RELOC_AARCH64_BRANCH19
6006
     AArch64 19 bit pc-relative conditional branch and compare & branch.
6007
     The lowest two bits must be zero and are not stored in the
6008
     instruction, giving a 21 bit signed byte offset.
6009
 
6010
 -- : BFD_RELOC_AARCH64_CALL26
6011
     AArch64 26 bit pc-relative unconditional branch and link.  The
6012
     lowest two bits must be zero and are not stored in the instruction,
6013
     giving a 28 bit signed byte offset.
6014
 
6015
 -- : BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP
6016
     AArch64 pseudo relocation code to be used internally by the AArch64
6017
     assembler and not (currently) written to any object files.
6018
 
6019
 -- : BFD_RELOC_AARCH64_JUMP26
6020
     AArch64 26 bit pc-relative unconditional branch.  The lowest two
6021
     bits must be zero and are not stored in the instruction, giving a
6022
     28 bit signed byte offset.
6023
 
6024
 -- : BFD_RELOC_AARCH64_LD_LO19_PCREL
6025
     AArch64 Load Literal instruction, holding a 19 bit pc-relative word
6026
     offset.  The lowest two bits must be zero and are not stored in the
6027
     instruction, giving a 21 bit signed byte offset.
6028
 
6029
 -- : BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
6030
     Unsigned 12 bit byte offset for 64 bit load/store from the page of
6031
     the GOT entry for this symbol.  Used in conjunction with
6032
     BFD_RELOC_AARCH64_ADR_GOTPAGE.
6033
 
6034
 -- : BFD_RELOC_AARCH64_LDST_LO12
6035
     AArch64 unspecified load/store instruction, holding bits 0 to 11
6036
     of the address.  Used in conjunction with
6037
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6038
 
6039
 -- : BFD_RELOC_AARCH64_LDST8_LO12
6040
     AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
6041
     address.  Used in conjunction with
6042
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6043
 
6044
 -- : BFD_RELOC_AARCH64_LDST16_LO12
6045
     AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
6046
     address.  Used in conjunction with
6047
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6048
 
6049
 -- : BFD_RELOC_AARCH64_LDST32_LO12
6050
     AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
6051
     address.  Used in conjunction with
6052
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6053
 
6054
 -- : BFD_RELOC_AARCH64_LDST64_LO12
6055
     AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
6056
     address.  Used in conjunction with
6057
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6058
 
6059
 -- : BFD_RELOC_AARCH64_LDST128_LO12
6060
     AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
6061
     address.  Used in conjunction with
6062
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6063
 
6064
 -- : BFD_RELOC_AARCH64_MOVW_G0
6065
     AArch64 MOV[NZK] instruction with most significant bits 0 to 15 of
6066
     an unsigned address/value.
6067
 
6068
 -- : BFD_RELOC_AARCH64_MOVW_G0_S
6069
     AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of
6070
     a signed value.  Changes instruction to MOVZ or MOVN depending on
6071
     the value's sign.
6072
 
6073
 -- : BFD_RELOC_AARCH64_MOVW_G0_NC
6074
     AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
6075
     an address/value.  No overflow checking.
6076
 
6077
 -- : BFD_RELOC_AARCH64_MOVW_G1
6078
     AArch64 MOV[NZK] instruction with most significant bits 16 to 31
6079
     of an unsigned address/value.
6080
 
6081
 -- : BFD_RELOC_AARCH64_MOVW_G1_NC
6082
     AArch64 MOV[NZK] instruction with less significant bits 16 to 31
6083
     of an address/value.  No overflow checking.
6084
 
6085
 -- : BFD_RELOC_AARCH64_MOVW_G1_S
6086
     AArch64 MOV[NZ] instruction with most significant bits 16 to 31 of
6087
     a signed value.  Changes instruction to MOVZ or MOVN depending on
6088
     the value's sign.
6089
 
6090
 -- : BFD_RELOC_AARCH64_MOVW_G2
6091
     AArch64 MOV[NZK] instruction with most significant bits 32 to 47
6092
     of an unsigned address/value.
6093
 
6094
 -- : BFD_RELOC_AARCH64_MOVW_G2_NC
6095
     AArch64 MOV[NZK] instruction with less significant bits 32 to 47
6096
     of an address/value.  No overflow checking.
6097
 
6098
 -- : BFD_RELOC_AARCH64_MOVW_G2_S
6099
     AArch64 MOV[NZ] instruction with most significant bits 32 to 47 of
6100
     a signed value.  Changes instruction to MOVZ or MOVN depending on
6101
     the value's sign.
6102
 
6103
 -- : BFD_RELOC_AARCH64_MOVW_G3
6104
     AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 of
6105
     a signed or unsigned address/value.
6106
 
6107
 -- : BFD_RELOC_AARCH64_TLSDESC
6108
     AArch64 TLS relocation.
6109
 
6110
 -- : BFD_RELOC_AARCH64_TLSDESC_ADD
6111
     AArch64 TLS DESC relocation.
6112
 
6113
 -- : BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC
6114
     AArch64 TLS DESC relocation.
6115
 
6116
 -- : BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE
6117
     AArch64 TLS DESC relocation.
6118
 
6119
 -- : BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
6120
     AArch64 TLS DESC relocation.
6121
 
6122
 -- : BFD_RELOC_AARCH64_TLSDESC_CALL
6123
     AArch64 TLS DESC relocation.
6124
 
6125
 -- : BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC
6126
     AArch64 TLS DESC relocation.
6127
 
6128
 -- : BFD_RELOC_AARCH64_TLSDESC_LD64_PREL19
6129
     AArch64 TLS DESC relocation.
6130
 
6131
 -- : BFD_RELOC_AARCH64_TLSDESC_LDR
6132
     AArch64 TLS DESC relocation.
6133
 
6134
 -- : BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
6135
     AArch64 TLS DESC relocation.
6136
 
6137
 -- : BFD_RELOC_AARCH64_TLSDESC_OFF_G1
6138
     AArch64 TLS DESC relocation.
6139
 
6140
 -- : BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
6141
     Unsigned 12 bit byte offset to global offset table entry for a
6142
     symbols tls_index structure.  Used in conjunction with
6143
     BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
6144
 
6145
 -- : BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
6146
     Get to the page base of the global offset table entry for a symbols
6147
     tls_index structure as part of an adrp instruction using a 21 bit
6148
     PC relative value.  Used in conjunction with
6149
     BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
6150
 
6151
 -- : BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
6152
     AArch64 TLS INITIAL EXEC relocation.
6153
 
6154
 -- : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19
6155
     AArch64 TLS INITIAL EXEC relocation.
6156
 
6157
 -- : BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
6158
     AArch64 TLS INITIAL EXEC relocation.
6159
 
6160
 -- : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
6161
     AArch64 TLS INITIAL EXEC relocation.
6162
 
6163
 -- : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1
6164
     AArch64 TLS INITIAL EXEC relocation.
6165
 
6166
 -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
6167
     AArch64 TLS LOCAL EXEC relocation.
6168
 
6169
 -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12
6170
     AArch64 TLS LOCAL EXEC relocation.
6171
 
6172
 -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC
6173
     AArch64 TLS LOCAL EXEC relocation.
6174
 
6175
 -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0
6176
     AArch64 TLS LOCAL EXEC relocation.
6177
 
6178
 -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
6179
     AArch64 TLS LOCAL EXEC relocation.
6180
 
6181
 -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
6182
     AArch64 TLS LOCAL EXEC relocation.
6183
 
6184
 -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
6185
     AArch64 TLS LOCAL EXEC relocation.
6186
 
6187
 -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
6188
     AArch64 TLS LOCAL EXEC relocation.
6189
 
6190
 -- : BFD_RELOC_AARCH64_TLS_DTPMOD64
6191
     AArch64 TLS relocation.
6192
 
6193
 -- : BFD_RELOC_AARCH64_TLS_DTPREL64
6194
     AArch64 TLS relocation.
6195
 
6196
 -- : BFD_RELOC_AARCH64_TLS_TPREL64
6197
     AArch64 TLS relocation.
6198
 
6199
 -- : BFD_RELOC_AARCH64_TSTBR14
6200
     AArch64 14 bit pc-relative test bit and branch.  The lowest two
6201
     bits must be zero and are not stored in the instruction, giving a
6202
     16 bit signed byte offset.
6203
 
6204
 -- : BFD_RELOC_TILEPRO_COPY
6205
 -- : BFD_RELOC_TILEPRO_GLOB_DAT
6206
 -- : BFD_RELOC_TILEPRO_JMP_SLOT
6207
 -- : BFD_RELOC_TILEPRO_RELATIVE
6208
 -- : BFD_RELOC_TILEPRO_BROFF_X1
6209
 -- : BFD_RELOC_TILEPRO_JOFFLONG_X1
6210
 -- : BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT
6211
 -- : BFD_RELOC_TILEPRO_IMM8_X0
6212
 -- : BFD_RELOC_TILEPRO_IMM8_Y0
6213
 -- : BFD_RELOC_TILEPRO_IMM8_X1
6214
 -- : BFD_RELOC_TILEPRO_IMM8_Y1
6215
 -- : BFD_RELOC_TILEPRO_DEST_IMM8_X1
6216
 -- : BFD_RELOC_TILEPRO_MT_IMM15_X1
6217
 -- : BFD_RELOC_TILEPRO_MF_IMM15_X1
6218
 -- : BFD_RELOC_TILEPRO_IMM16_X0
6219
 -- : BFD_RELOC_TILEPRO_IMM16_X1
6220
 -- : BFD_RELOC_TILEPRO_IMM16_X0_LO
6221
 -- : BFD_RELOC_TILEPRO_IMM16_X1_LO
6222
 -- : BFD_RELOC_TILEPRO_IMM16_X0_HI
6223
 -- : BFD_RELOC_TILEPRO_IMM16_X1_HI
6224
 -- : BFD_RELOC_TILEPRO_IMM16_X0_HA
6225
 -- : BFD_RELOC_TILEPRO_IMM16_X1_HA
6226
 -- : BFD_RELOC_TILEPRO_IMM16_X0_PCREL
6227
 -- : BFD_RELOC_TILEPRO_IMM16_X1_PCREL
6228
 -- : BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL
6229
 -- : BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL
6230
 -- : BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL
6231
 -- : BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL
6232
 -- : BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL
6233
 -- : BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL
6234
 -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT
6235
 -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT
6236
 -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO
6237
 -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO
6238
 -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI
6239
 -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI
6240
 -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA
6241
 -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA
6242
 -- : BFD_RELOC_TILEPRO_MMSTART_X0
6243
 -- : BFD_RELOC_TILEPRO_MMEND_X0
6244
 -- : BFD_RELOC_TILEPRO_MMSTART_X1
6245
 -- : BFD_RELOC_TILEPRO_MMEND_X1
6246
 -- : BFD_RELOC_TILEPRO_SHAMT_X0
6247
 -- : BFD_RELOC_TILEPRO_SHAMT_X1
6248
 -- : BFD_RELOC_TILEPRO_SHAMT_Y0
6249
 -- : BFD_RELOC_TILEPRO_SHAMT_Y1
6250
 -- : BFD_RELOC_TILEPRO_TLS_GD_CALL
6251
 -- : BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD
6252
 -- : BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD
6253
 -- : BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD
6254
 -- : BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD
6255
 -- : BFD_RELOC_TILEPRO_TLS_IE_LOAD
6256
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD
6257
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD
6258
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO
6259
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO
6260
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI
6261
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI
6262
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA
6263
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA
6264
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE
6265
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE
6266
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO
6267
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO
6268
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI
6269
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI
6270
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA
6271
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA
6272
 -- : BFD_RELOC_TILEPRO_TLS_DTPMOD32
6273
 -- : BFD_RELOC_TILEPRO_TLS_DTPOFF32
6274
 -- : BFD_RELOC_TILEPRO_TLS_TPOFF32
6275
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE
6276
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE
6277
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO
6278
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO
6279
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI
6280
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI
6281
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA
6282
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA
6283
     Tilera TILEPro Relocations.
6284
 
6285
 -- : BFD_RELOC_TILEGX_HW0
6286
 -- : BFD_RELOC_TILEGX_HW1
6287
 -- : BFD_RELOC_TILEGX_HW2
6288
 -- : BFD_RELOC_TILEGX_HW3
6289
 -- : BFD_RELOC_TILEGX_HW0_LAST
6290
 -- : BFD_RELOC_TILEGX_HW1_LAST
6291
 -- : BFD_RELOC_TILEGX_HW2_LAST
6292
 -- : BFD_RELOC_TILEGX_COPY
6293
 -- : BFD_RELOC_TILEGX_GLOB_DAT
6294
 -- : BFD_RELOC_TILEGX_JMP_SLOT
6295
 -- : BFD_RELOC_TILEGX_RELATIVE
6296
 -- : BFD_RELOC_TILEGX_BROFF_X1
6297
 -- : BFD_RELOC_TILEGX_JUMPOFF_X1
6298
 -- : BFD_RELOC_TILEGX_JUMPOFF_X1_PLT
6299
 -- : BFD_RELOC_TILEGX_IMM8_X0
6300
 -- : BFD_RELOC_TILEGX_IMM8_Y0
6301
 -- : BFD_RELOC_TILEGX_IMM8_X1
6302
 -- : BFD_RELOC_TILEGX_IMM8_Y1
6303
 -- : BFD_RELOC_TILEGX_DEST_IMM8_X1
6304
 -- : BFD_RELOC_TILEGX_MT_IMM14_X1
6305
 -- : BFD_RELOC_TILEGX_MF_IMM14_X1
6306
 -- : BFD_RELOC_TILEGX_MMSTART_X0
6307
 -- : BFD_RELOC_TILEGX_MMEND_X0
6308
 -- : BFD_RELOC_TILEGX_SHAMT_X0
6309
 -- : BFD_RELOC_TILEGX_SHAMT_X1
6310
 -- : BFD_RELOC_TILEGX_SHAMT_Y0
6311
 -- : BFD_RELOC_TILEGX_SHAMT_Y1
6312
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0
6313
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0
6314
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1
6315
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1
6316
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2
6317
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2
6318
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW3
6319
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW3
6320
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST
6321
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST
6322
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST
6323
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST
6324
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST
6325
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST
6326
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL
6327
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL
6328
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL
6329
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL
6330
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL
6331
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL
6332
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL
6333
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL
6334
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL
6335
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL
6336
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL
6337
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL
6338
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL
6339
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL
6340
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT
6341
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT
6342
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL
6343
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL
6344
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL
6345
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL
6346
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL
6347
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL
6348
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT
6349
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT
6350
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT
6351
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT
6352
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL
6353
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL
6354
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD
6355
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD
6356
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE
6357
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE
6358
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE
6359
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE
6360
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE
6361
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE
6362
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD
6363
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD
6364
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD
6365
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD
6366
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE
6367
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE
6368
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL
6369
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL
6370
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL
6371
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL
6372
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL
6373
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL
6374
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE
6375
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE
6376
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE
6377
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE
6378
 -- : BFD_RELOC_TILEGX_TLS_DTPMOD64
6379
 -- : BFD_RELOC_TILEGX_TLS_DTPOFF64
6380
 -- : BFD_RELOC_TILEGX_TLS_TPOFF64
6381
 -- : BFD_RELOC_TILEGX_TLS_DTPMOD32
6382
 -- : BFD_RELOC_TILEGX_TLS_DTPOFF32
6383
 -- : BFD_RELOC_TILEGX_TLS_TPOFF32
6384
 -- : BFD_RELOC_TILEGX_TLS_GD_CALL
6385
 -- : BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD
6386
 -- : BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD
6387
 -- : BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD
6388
 -- : BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD
6389
 -- : BFD_RELOC_TILEGX_TLS_IE_LOAD
6390
 -- : BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD
6391
 -- : BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD
6392
 -- : BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD
6393
 -- : BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
6394
     Tilera TILE-Gx Relocations.
6395
 
6396
 -- : BFD_RELOC_EPIPHANY_SIMM8
6397
     Adapteva EPIPHANY - 8 bit signed pc-relative displacement
6398
 
6399
 -- : BFD_RELOC_EPIPHANY_SIMM24
6400
     Adapteva EPIPHANY - 24 bit signed pc-relative displacement
6401
 
6402
 -- : BFD_RELOC_EPIPHANY_HIGH
6403
     Adapteva EPIPHANY - 16 most-significant bits of absolute address
6404
 
6405
 -- : BFD_RELOC_EPIPHANY_LOW
6406
     Adapteva EPIPHANY - 16 least-significant bits of absolute address
6407
 
6408
 -- : BFD_RELOC_EPIPHANY_SIMM11
6409
     Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
6410
 
6411
 -- : BFD_RELOC_EPIPHANY_IMM11
6412
     Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st
6413
     displacement)
6414
 
6415
 -- : BFD_RELOC_EPIPHANY_IMM8
6416
     Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
6417
 
6418
 
6419
     typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
6420
 
6421
2.10.2.2 `bfd_reloc_type_lookup'
6422
................................
6423
 
6424
*Synopsis*
6425
     reloc_howto_type *bfd_reloc_type_lookup
6426
        (bfd *abfd, bfd_reloc_code_real_type code);
6427
     reloc_howto_type *bfd_reloc_name_lookup
6428
        (bfd *abfd, const char *reloc_name);
6429
   *Description*
6430
Return a pointer to a howto structure which, when invoked, will perform
6431
the relocation CODE on data from the architecture noted.
6432
 
6433
2.10.2.3 `bfd_default_reloc_type_lookup'
6434
........................................
6435
 
6436
*Synopsis*
6437
     reloc_howto_type *bfd_default_reloc_type_lookup
6438
        (bfd *abfd, bfd_reloc_code_real_type  code);
6439
   *Description*
6440
Provides a default relocation lookup routine for any architecture.
6441
 
6442
2.10.2.4 `bfd_get_reloc_code_name'
6443
..................................
6444
 
6445
*Synopsis*
6446
     const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
6447
   *Description*
6448
Provides a printable name for the supplied relocation code.  Useful
6449
mainly for printing error messages.
6450
 
6451
2.10.2.5 `bfd_generic_relax_section'
6452
....................................
6453
 
6454
*Synopsis*
6455
     bfd_boolean bfd_generic_relax_section
6456
        (bfd *abfd,
6457
         asection *section,
6458
         struct bfd_link_info *,
6459
         bfd_boolean *);
6460
   *Description*
6461
Provides default handling for relaxing for back ends which don't do
6462
relaxing.
6463
 
6464
2.10.2.6 `bfd_generic_gc_sections'
6465
..................................
6466
 
6467
*Synopsis*
6468
     bfd_boolean bfd_generic_gc_sections
6469
        (bfd *, struct bfd_link_info *);
6470
   *Description*
6471
Provides default handling for relaxing for back ends which don't do
6472
section gc - i.e., does nothing.
6473
 
6474
2.10.2.7 `bfd_generic_lookup_section_flags'
6475
...........................................
6476
 
6477
*Synopsis*
6478
     bfd_boolean bfd_generic_lookup_section_flags
6479
        (struct bfd_link_info *, struct flag_info *, asection *);
6480
   *Description*
6481
Provides default handling for section flags lookup - i.e., does nothing.
6482
Returns FALSE if the section should be omitted, otherwise TRUE.
6483
 
6484
2.10.2.8 `bfd_generic_merge_sections'
6485
.....................................
6486
 
6487
*Synopsis*
6488
     bfd_boolean bfd_generic_merge_sections
6489
        (bfd *, struct bfd_link_info *);
6490
   *Description*
6491
Provides default handling for SEC_MERGE section merging for back ends
6492
which don't have SEC_MERGE support - i.e., does nothing.
6493
 
6494
2.10.2.9 `bfd_generic_get_relocated_section_contents'
6495
.....................................................
6496
 
6497
*Synopsis*
6498
     bfd_byte *bfd_generic_get_relocated_section_contents
6499
        (bfd *abfd,
6500
         struct bfd_link_info *link_info,
6501
         struct bfd_link_order *link_order,
6502
         bfd_byte *data,
6503
         bfd_boolean relocatable,
6504
         asymbol **symbols);
6505
   *Description*
6506
Provides default handling of relocation effort for back ends which
6507
can't be bothered to do it efficiently.
6508
 
6509

6510
File: bfd.info,  Node: Core Files,  Next: Targets,  Prev: Relocations,  Up: BFD front end
6511
 
6512
2.11 Core files
6513
===============
6514
 
6515
2.11.1 Core file functions
6516
--------------------------
6517
 
6518
*Description*
6519
These are functions pertaining to core files.
6520
 
6521
2.11.1.1 `bfd_core_file_failing_command'
6522
........................................
6523
 
6524
*Synopsis*
6525
     const char *bfd_core_file_failing_command (bfd *abfd);
6526
   *Description*
6527
Return a read-only string explaining which program was running when it
6528
failed and produced the core file ABFD.
6529
 
6530
2.11.1.2 `bfd_core_file_failing_signal'
6531
.......................................
6532
 
6533
*Synopsis*
6534
     int bfd_core_file_failing_signal (bfd *abfd);
6535
   *Description*
6536
Returns the signal number which caused the core dump which generated
6537
the file the BFD ABFD is attached to.
6538
 
6539
2.11.1.3 `bfd_core_file_pid'
6540
............................
6541
 
6542
*Synopsis*
6543
     int bfd_core_file_pid (bfd *abfd);
6544
   *Description*
6545
Returns the PID of the process the core dump the BFD ABFD is attached
6546
to was generated from.
6547
 
6548
2.11.1.4 `core_file_matches_executable_p'
6549
.........................................
6550
 
6551
*Synopsis*
6552
     bfd_boolean core_file_matches_executable_p
6553
        (bfd *core_bfd, bfd *exec_bfd);
6554
   *Description*
6555
Return `TRUE' if the core file attached to CORE_BFD was generated by a
6556
run of the executable file attached to EXEC_BFD, `FALSE' otherwise.
6557
 
6558
2.11.1.5 `generic_core_file_matches_executable_p'
6559
.................................................
6560
 
6561
*Synopsis*
6562
     bfd_boolean generic_core_file_matches_executable_p
6563
        (bfd *core_bfd, bfd *exec_bfd);
6564
   *Description*
6565
Return TRUE if the core file attached to CORE_BFD was generated by a
6566
run of the executable file attached to EXEC_BFD.  The match is based on
6567
executable basenames only.
6568
 
6569
   Note: When not able to determine the core file failing command or
6570
the executable name, we still return TRUE even though we're not sure
6571
that core file and executable match.  This is to avoid generating a
6572
false warning in situations where we really don't know whether they
6573
match or not.
6574
 
6575

6576
File: bfd.info,  Node: Targets,  Next: Architectures,  Prev: Core Files,  Up: BFD front end
6577
 
6578
2.12 Targets
6579
============
6580
 
6581
*Description*
6582
Each port of BFD to a different machine requires the creation of a
6583
target back end. All the back end provides to the root part of BFD is a
6584
structure containing pointers to functions which perform certain low
6585
level operations on files. BFD translates the applications's requests
6586
through a pointer into calls to the back end routines.
6587
 
6588
   When a file is opened with `bfd_openr', its format and target are
6589
unknown. BFD uses various mechanisms to determine how to interpret the
6590
file. The operations performed are:
6591
 
6592
   * Create a BFD by calling the internal routine `_bfd_new_bfd', then
6593
     call `bfd_find_target' with the target string supplied to
6594
     `bfd_openr' and the new BFD pointer.
6595
 
6596
   * If a null target string was provided to `bfd_find_target', look up
6597
     the environment variable `GNUTARGET' and use that as the target
6598
     string.
6599
 
6600
   * If the target string is still `NULL', or the target string is
6601
     `default', then use the first item in the target vector as the
6602
     target type, and set `target_defaulted' in the BFD to cause
6603
     `bfd_check_format' to loop through all the targets.  *Note
6604
     bfd_target::.  *Note Formats::.
6605
 
6606
   * Otherwise, inspect the elements in the target vector one by one,
6607
     until a match on target name is found. When found, use it.
6608
 
6609
   * Otherwise return the error `bfd_error_invalid_target' to
6610
     `bfd_openr'.
6611
 
6612
   * `bfd_openr' attempts to open the file using `bfd_open_file', and
6613
     returns the BFD.
6614
   Once the BFD has been opened and the target selected, the file
6615
format may be determined. This is done by calling `bfd_check_format' on
6616
the BFD with a suggested format.  If `target_defaulted' has been set,
6617
each possible target type is tried to see if it recognizes the
6618
specified format.  `bfd_check_format' returns `TRUE' when the caller
6619
guesses right.
6620
 
6621
* Menu:
6622
 
6623
* bfd_target::
6624
 
6625

6626
File: bfd.info,  Node: bfd_target,  Prev: Targets,  Up: Targets
6627
 
6628
2.12.1 bfd_target
6629
-----------------
6630
 
6631
*Description*
6632
This structure contains everything that BFD knows about a target. It
6633
includes things like its byte order, name, and which routines to call
6634
to do various operations.
6635
 
6636
   Every BFD points to a target structure with its `xvec' member.
6637
 
6638
   The macros below are used to dispatch to functions through the
6639
`bfd_target' vector. They are used in a number of macros further down
6640
in `bfd.h', and are also used when calling various routines by hand
6641
inside the BFD implementation.  The ARGLIST argument must be
6642
parenthesized; it contains all the arguments to the called function.
6643
 
6644
   They make the documentation (more) unpleasant to read, so if someone
6645
wants to fix this and not break the above, please do.
6646
     #define BFD_SEND(bfd, message, arglist) \
6647
       ((*((bfd)->xvec->message)) arglist)
6648
 
6649
     #ifdef DEBUG_BFD_SEND
6650
     #undef BFD_SEND
6651
     #define BFD_SEND(bfd, message, arglist) \
6652
       (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
6653
         ((*((bfd)->xvec->message)) arglist) : \
6654
         (bfd_assert (__FILE__,__LINE__), NULL))
6655
     #endif
6656
   For operations which index on the BFD format:
6657
     #define BFD_SEND_FMT(bfd, message, arglist) \
6658
       (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
6659
 
6660
     #ifdef DEBUG_BFD_SEND
6661
     #undef BFD_SEND_FMT
6662
     #define BFD_SEND_FMT(bfd, message, arglist) \
6663
       (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
6664
        (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
6665
        (bfd_assert (__FILE__,__LINE__), NULL))
6666
     #endif
6667
   This is the structure which defines the type of BFD this is.  The
6668
`xvec' member of the struct `bfd' itself points here.  Each module that
6669
implements access to a different target under BFD, defines one of these.
6670
 
6671
   FIXME, these names should be rationalised with the names of the
6672
entry points which call them. Too bad we can't have one macro to define
6673
them both!
6674
     enum bfd_flavour
6675
     {
6676
       bfd_target_unknown_flavour,
6677
       bfd_target_aout_flavour,
6678
       bfd_target_coff_flavour,
6679
       bfd_target_ecoff_flavour,
6680
       bfd_target_xcoff_flavour,
6681
       bfd_target_elf_flavour,
6682
       bfd_target_ieee_flavour,
6683
       bfd_target_nlm_flavour,
6684
       bfd_target_oasys_flavour,
6685
       bfd_target_tekhex_flavour,
6686
       bfd_target_srec_flavour,
6687
       bfd_target_verilog_flavour,
6688
       bfd_target_ihex_flavour,
6689
       bfd_target_som_flavour,
6690
       bfd_target_os9k_flavour,
6691
       bfd_target_versados_flavour,
6692
       bfd_target_msdos_flavour,
6693
       bfd_target_ovax_flavour,
6694
       bfd_target_evax_flavour,
6695
       bfd_target_mmo_flavour,
6696
       bfd_target_mach_o_flavour,
6697
       bfd_target_pef_flavour,
6698
       bfd_target_pef_xlib_flavour,
6699
       bfd_target_sym_flavour
6700
     };
6701
 
6702
     enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
6703
 
6704
     /* Forward declaration.  */
6705
     typedef struct bfd_link_info _bfd_link_info;
6706
 
6707
     /* Forward declaration.  */
6708
     typedef struct flag_info flag_info;
6709
 
6710
     typedef struct bfd_target
6711
     {
6712
       /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
6713
       char *name;
6714
 
6715
      /* The "flavour" of a back end is a general indication about
6716
         the contents of a file.  */
6717
       enum bfd_flavour flavour;
6718
 
6719
       /* The order of bytes within the data area of a file.  */
6720
       enum bfd_endian byteorder;
6721
 
6722
      /* The order of bytes within the header parts of a file.  */
6723
       enum bfd_endian header_byteorder;
6724
 
6725
       /* A mask of all the flags which an executable may have set -
6726
          from the set `BFD_NO_FLAGS', `HAS_RELOC', ...`D_PAGED'.  */
6727
       flagword object_flags;
6728
 
6729
      /* A mask of all the flags which a section may have set - from
6730
         the set `SEC_NO_FLAGS', `SEC_ALLOC', ...`SET_NEVER_LOAD'.  */
6731
       flagword section_flags;
6732
 
6733
      /* The character normally found at the front of a symbol.
6734
         (if any), perhaps `_'.  */
6735
       char symbol_leading_char;
6736
 
6737
      /* The pad character for file names within an archive header.  */
6738
       char ar_pad_char;
6739
 
6740
       /* The maximum number of characters in an archive header.  */
6741
       unsigned char ar_max_namelen;
6742
 
6743
       /* How well this target matches, used to select between various
6744
          possible targets when more than one target matches.  */
6745
       unsigned char match_priority;
6746
 
6747
       /* Entries for byte swapping for data. These are different from the
6748
          other entry points, since they don't take a BFD as the first argument.
6749
          Certain other handlers could do the same.  */
6750
       bfd_uint64_t   (*bfd_getx64) (const void *);
6751
       bfd_int64_t    (*bfd_getx_signed_64) (const void *);
6752
       void           (*bfd_putx64) (bfd_uint64_t, void *);
6753
       bfd_vma        (*bfd_getx32) (const void *);
6754
       bfd_signed_vma (*bfd_getx_signed_32) (const void *);
6755
       void           (*bfd_putx32) (bfd_vma, void *);
6756
       bfd_vma        (*bfd_getx16) (const void *);
6757
       bfd_signed_vma (*bfd_getx_signed_16) (const void *);
6758
       void           (*bfd_putx16) (bfd_vma, void *);
6759
 
6760
       /* Byte swapping for the headers.  */
6761
       bfd_uint64_t   (*bfd_h_getx64) (const void *);
6762
       bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
6763
       void           (*bfd_h_putx64) (bfd_uint64_t, void *);
6764
       bfd_vma        (*bfd_h_getx32) (const void *);
6765
       bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
6766
       void           (*bfd_h_putx32) (bfd_vma, void *);
6767
       bfd_vma        (*bfd_h_getx16) (const void *);
6768
       bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
6769
       void           (*bfd_h_putx16) (bfd_vma, void *);
6770
 
6771
       /* Format dependent routines: these are vectors of entry points
6772
          within the target vector structure, one for each format to check.  */
6773
 
6774
       /* Check the format of a file being read.  Return a `bfd_target *' or zero.  */
6775
       const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
6776
 
6777
       /* Set the format of a file being written.  */
6778
       bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
6779
 
6780
       /* Write cached information into a file being written, at `bfd_close'.  */
6781
       bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
6782
   The general target vector.  These vectors are initialized using the
6783
BFD_JUMP_TABLE macros.
6784
 
6785
       /* Generic entry points.  */
6786
     #define BFD_JUMP_TABLE_GENERIC(NAME) \
6787
       NAME##_close_and_cleanup, \
6788
       NAME##_bfd_free_cached_info, \
6789
       NAME##_new_section_hook, \
6790
       NAME##_get_section_contents, \
6791
       NAME##_get_section_contents_in_window
6792
 
6793
       /* Called when the BFD is being closed to do any necessary cleanup.  */
6794
       bfd_boolean (*_close_and_cleanup) (bfd *);
6795
       /* Ask the BFD to free all cached information.  */
6796
       bfd_boolean (*_bfd_free_cached_info) (bfd *);
6797
       /* Called when a new section is created.  */
6798
       bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
6799
       /* Read the contents of a section.  */
6800
       bfd_boolean (*_bfd_get_section_contents)
6801
         (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
6802
       bfd_boolean (*_bfd_get_section_contents_in_window)
6803
         (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
6804
 
6805
       /* Entry points to copy private data.  */
6806
     #define BFD_JUMP_TABLE_COPY(NAME) \
6807
       NAME##_bfd_copy_private_bfd_data, \
6808
       NAME##_bfd_merge_private_bfd_data, \
6809
       _bfd_generic_init_private_section_data, \
6810
       NAME##_bfd_copy_private_section_data, \
6811
       NAME##_bfd_copy_private_symbol_data, \
6812
       NAME##_bfd_copy_private_header_data, \
6813
       NAME##_bfd_set_private_flags, \
6814
       NAME##_bfd_print_private_bfd_data
6815
 
6816
       /* Called to copy BFD general private data from one object file
6817
          to another.  */
6818
       bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
6819
       /* Called to merge BFD general private data from one object file
6820
          to a common output file when linking.  */
6821
       bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
6822
       /* Called to initialize BFD private section data from one object file
6823
          to another.  */
6824
     #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
6825
       BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
6826
       bfd_boolean (*_bfd_init_private_section_data)
6827
         (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
6828
       /* Called to copy BFD private section data from one object file
6829
          to another.  */
6830
       bfd_boolean (*_bfd_copy_private_section_data)
6831
         (bfd *, sec_ptr, bfd *, sec_ptr);
6832
       /* Called to copy BFD private symbol data from one symbol
6833
          to another.  */
6834
       bfd_boolean (*_bfd_copy_private_symbol_data)
6835
         (bfd *, asymbol *, bfd *, asymbol *);
6836
       /* Called to copy BFD private header data from one object file
6837
          to another.  */
6838
       bfd_boolean (*_bfd_copy_private_header_data)
6839
         (bfd *, bfd *);
6840
       /* Called to set private backend flags.  */
6841
       bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
6842
 
6843
       /* Called to print private BFD data.  */
6844
       bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
6845
 
6846
       /* Core file entry points.  */
6847
     #define BFD_JUMP_TABLE_CORE(NAME) \
6848
       NAME##_core_file_failing_command, \
6849
       NAME##_core_file_failing_signal, \
6850
       NAME##_core_file_matches_executable_p, \
6851
       NAME##_core_file_pid
6852
 
6853
       char *      (*_core_file_failing_command) (bfd *);
6854
       int         (*_core_file_failing_signal) (bfd *);
6855
       bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
6856
       int         (*_core_file_pid) (bfd *);
6857
 
6858
       /* Archive entry points.  */
6859
     #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
6860
       NAME##_slurp_armap, \
6861
       NAME##_slurp_extended_name_table, \
6862
       NAME##_construct_extended_name_table, \
6863
       NAME##_truncate_arname, \
6864
       NAME##_write_armap, \
6865
       NAME##_read_ar_hdr, \
6866
       NAME##_write_ar_hdr, \
6867
       NAME##_openr_next_archived_file, \
6868
       NAME##_get_elt_at_index, \
6869
       NAME##_generic_stat_arch_elt, \
6870
       NAME##_update_armap_timestamp
6871
 
6872
       bfd_boolean (*_bfd_slurp_armap) (bfd *);
6873
       bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
6874
       bfd_boolean (*_bfd_construct_extended_name_table)
6875
         (bfd *, char **, bfd_size_type *, const char **);
6876
       void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
6877
       bfd_boolean (*write_armap)
6878
         (bfd *, unsigned int, struct orl *, unsigned int, int);
6879
       void *      (*_bfd_read_ar_hdr_fn) (bfd *);
6880
       bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
6881
       bfd *       (*openr_next_archived_file) (bfd *, bfd *);
6882
     #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
6883
       bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
6884
       int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
6885
       bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
6886
 
6887
       /* Entry points used for symbols.  */
6888
     #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
6889
       NAME##_get_symtab_upper_bound, \
6890
       NAME##_canonicalize_symtab, \
6891
       NAME##_make_empty_symbol, \
6892
       NAME##_print_symbol, \
6893
       NAME##_get_symbol_info, \
6894
       NAME##_bfd_is_local_label_name, \
6895
       NAME##_bfd_is_target_special_symbol, \
6896
       NAME##_get_lineno, \
6897
       NAME##_find_nearest_line, \
6898
       _bfd_generic_find_nearest_line_discriminator, \
6899
       _bfd_generic_find_line, \
6900
       NAME##_find_inliner_info, \
6901
       NAME##_bfd_make_debug_symbol, \
6902
       NAME##_read_minisymbols, \
6903
       NAME##_minisymbol_to_symbol
6904
 
6905
       long        (*_bfd_get_symtab_upper_bound) (bfd *);
6906
       long        (*_bfd_canonicalize_symtab)
6907
         (bfd *, struct bfd_symbol **);
6908
       struct bfd_symbol *
6909
                   (*_bfd_make_empty_symbol) (bfd *);
6910
       void        (*_bfd_print_symbol)
6911
         (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
6912
     #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
6913
       void        (*_bfd_get_symbol_info)
6914
         (bfd *, struct bfd_symbol *, symbol_info *);
6915
     #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
6916
       bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
6917
       bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
6918
       alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
6919
       bfd_boolean (*_bfd_find_nearest_line)
6920
         (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
6921
          const char **, const char **, unsigned int *);
6922
       bfd_boolean (*_bfd_find_nearest_line_discriminator)
6923
         (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
6924
          const char **, const char **, unsigned int *, unsigned int *);
6925
       bfd_boolean (*_bfd_find_line)
6926
         (bfd *, struct bfd_symbol **, struct bfd_symbol *,
6927
          const char **, unsigned int *);
6928
       bfd_boolean (*_bfd_find_inliner_info)
6929
         (bfd *, const char **, const char **, unsigned int *);
6930
      /* Back-door to allow format-aware applications to create debug symbols
6931
         while using BFD for everything else.  Currently used by the assembler
6932
         when creating COFF files.  */
6933
       asymbol *   (*_bfd_make_debug_symbol)
6934
         (bfd *, void *, unsigned long size);
6935
     #define bfd_read_minisymbols(b, d, m, s) \
6936
       BFD_SEND (b, _read_minisymbols, (b, d, m, s))
6937
       long        (*_read_minisymbols)
6938
         (bfd *, bfd_boolean, void **, unsigned int *);
6939
     #define bfd_minisymbol_to_symbol(b, d, m, f) \
6940
       BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
6941
       asymbol *   (*_minisymbol_to_symbol)
6942
         (bfd *, bfd_boolean, const void *, asymbol *);
6943
 
6944
       /* Routines for relocs.  */
6945
     #define BFD_JUMP_TABLE_RELOCS(NAME) \
6946
       NAME##_get_reloc_upper_bound, \
6947
       NAME##_canonicalize_reloc, \
6948
       NAME##_bfd_reloc_type_lookup, \
6949
       NAME##_bfd_reloc_name_lookup
6950
 
6951
       long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
6952
       long        (*_bfd_canonicalize_reloc)
6953
         (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
6954
       /* See documentation on reloc types.  */
6955
       reloc_howto_type *
6956
                   (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
6957
       reloc_howto_type *
6958
                   (*reloc_name_lookup) (bfd *, const char *);
6959
 
6960
 
6961
       /* Routines used when writing an object file.  */
6962
     #define BFD_JUMP_TABLE_WRITE(NAME) \
6963
       NAME##_set_arch_mach, \
6964
       NAME##_set_section_contents
6965
 
6966
       bfd_boolean (*_bfd_set_arch_mach)
6967
         (bfd *, enum bfd_architecture, unsigned long);
6968
       bfd_boolean (*_bfd_set_section_contents)
6969
         (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
6970
 
6971
       /* Routines used by the linker.  */
6972
     #define BFD_JUMP_TABLE_LINK(NAME) \
6973
       NAME##_sizeof_headers, \
6974
       NAME##_bfd_get_relocated_section_contents, \
6975
       NAME##_bfd_relax_section, \
6976
       NAME##_bfd_link_hash_table_create, \
6977
       NAME##_bfd_link_hash_table_free, \
6978
       NAME##_bfd_link_add_symbols, \
6979
       NAME##_bfd_link_just_syms, \
6980
       NAME##_bfd_copy_link_hash_symbol_type, \
6981
       NAME##_bfd_final_link, \
6982
       NAME##_bfd_link_split_section, \
6983
       NAME##_bfd_gc_sections, \
6984
       NAME##_bfd_lookup_section_flags, \
6985
       NAME##_bfd_merge_sections, \
6986
       NAME##_bfd_is_group_section, \
6987
       NAME##_bfd_discard_group, \
6988
       NAME##_section_already_linked, \
6989
       NAME##_bfd_define_common_symbol
6990
 
6991
       int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
6992
       bfd_byte *  (*_bfd_get_relocated_section_contents)
6993
         (bfd *, struct bfd_link_info *, struct bfd_link_order *,
6994
          bfd_byte *, bfd_boolean, struct bfd_symbol **);
6995
 
6996
       bfd_boolean (*_bfd_relax_section)
6997
         (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
6998
 
6999
       /* Create a hash table for the linker.  Different backends store
7000
          different information in this table.  */
7001
       struct bfd_link_hash_table *
7002
                   (*_bfd_link_hash_table_create) (bfd *);
7003
 
7004
       /* Release the memory associated with the linker hash table.  */
7005
       void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
7006
 
7007
       /* Add symbols from this object file into the hash table.  */
7008
       bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
7009
 
7010
       /* Indicate that we are only retrieving symbol values from this section.  */
7011
       void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
7012
 
7013
       /* Copy the symbol type of a linker hash table entry.  */
7014
     #define bfd_copy_link_hash_symbol_type(b, t, f) \
7015
       BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
7016
       void (*_bfd_copy_link_hash_symbol_type)
7017
         (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
7018
 
7019
       /* Do a link based on the link_order structures attached to each
7020
          section of the BFD.  */
7021
       bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
7022
 
7023
       /* Should this section be split up into smaller pieces during linking.  */
7024
       bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
7025
 
7026
       /* Remove sections that are not referenced from the output.  */
7027
       bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
7028
 
7029
       /* Sets the bitmask of allowed and disallowed section flags.  */
7030
       bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
7031
                                                 struct flag_info *,
7032
                                                 asection *);
7033
 
7034
       /* Attempt to merge SEC_MERGE sections.  */
7035
       bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
7036
 
7037
       /* Is this section a member of a group?  */
7038
       bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
7039
 
7040
       /* Discard members of a group.  */
7041
       bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
7042
 
7043
       /* Check if SEC has been already linked during a reloceatable or
7044
          final link.  */
7045
       bfd_boolean (*_section_already_linked) (bfd *, asection *,
7046
                                               struct bfd_link_info *);
7047
 
7048
       /* Define a common symbol.  */
7049
       bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
7050
                                                 struct bfd_link_hash_entry *);
7051
 
7052
       /* Routines to handle dynamic symbols and relocs.  */
7053
     #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
7054
       NAME##_get_dynamic_symtab_upper_bound, \
7055
       NAME##_canonicalize_dynamic_symtab, \
7056
       NAME##_get_synthetic_symtab, \
7057
       NAME##_get_dynamic_reloc_upper_bound, \
7058
       NAME##_canonicalize_dynamic_reloc
7059
 
7060
       /* Get the amount of memory required to hold the dynamic symbols.  */
7061
       long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
7062
       /* Read in the dynamic symbols.  */
7063
       long        (*_bfd_canonicalize_dynamic_symtab)
7064
         (bfd *, struct bfd_symbol **);
7065
       /* Create synthetized symbols.  */
7066
       long        (*_bfd_get_synthetic_symtab)
7067
         (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
7068
          struct bfd_symbol **);
7069
       /* Get the amount of memory required to hold the dynamic relocs.  */
7070
       long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
7071
       /* Read in the dynamic relocs.  */
7072
       long        (*_bfd_canonicalize_dynamic_reloc)
7073
         (bfd *, arelent **, struct bfd_symbol **);
7074
   A pointer to an alternative bfd_target in case the current one is not
7075
satisfactory.  This can happen when the target cpu supports both big
7076
and little endian code, and target chosen by the linker has the wrong
7077
endianness.  The function open_output() in ld/ldlang.c uses this field
7078
to find an alternative output format that is suitable.
7079
       /* Opposite endian version of this target.  */
7080
       const struct bfd_target * alternative_target;
7081
 
7082
       /* Data for use by back-end routines, which isn't
7083
          generic enough to belong in this structure.  */
7084
       const void *backend_data;
7085
 
7086
     } bfd_target;
7087
 
7088
2.12.1.1 `bfd_set_default_target'
7089
.................................
7090
 
7091
*Synopsis*
7092
     bfd_boolean bfd_set_default_target (const char *name);
7093
   *Description*
7094
Set the default target vector to use when recognizing a BFD.  This
7095
takes the name of the target, which may be a BFD target name or a
7096
configuration triplet.
7097
 
7098
2.12.1.2 `bfd_find_target'
7099
..........................
7100
 
7101
*Synopsis*
7102
     const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
7103
   *Description*
7104
Return a pointer to the transfer vector for the object target named
7105
TARGET_NAME.  If TARGET_NAME is `NULL', choose the one in the
7106
environment variable `GNUTARGET'; if that is null or not defined, then
7107
choose the first entry in the target list.  Passing in the string
7108
"default" or setting the environment variable to "default" will cause
7109
the first entry in the target list to be returned, and
7110
"target_defaulted" will be set in the BFD if ABFD isn't `NULL'.  This
7111
causes `bfd_check_format' to loop over all the targets to find the one
7112
that matches the file being read.
7113
 
7114
2.12.1.3 `bfd_get_target_info'
7115
..............................
7116
 
7117
*Synopsis*
7118
     const bfd_target *bfd_get_target_info (const char *target_name,
7119
         bfd *abfd,
7120
         bfd_boolean *is_bigendian,
7121
         int *underscoring,
7122
         const char **def_target_arch);
7123
   *Description*
7124
Return a pointer to the transfer vector for the object target named
7125
TARGET_NAME.  If TARGET_NAME is `NULL', choose the one in the
7126
environment variable `GNUTARGET'; if that is null or not defined, then
7127
choose the first entry in the target list.  Passing in the string
7128
"default" or setting the environment variable to "default" will cause
7129
the first entry in the target list to be returned, and
7130
"target_defaulted" will be set in the BFD if ABFD isn't `NULL'.  This
7131
causes `bfd_check_format' to loop over all the targets to find the one
7132
that matches the file being read.  If IS_BIGENDIAN is not `NULL', then
7133
set this value to target's endian mode. True for big-endian, FALSE for
7134
little-endian or for invalid target.  If UNDERSCORING is not `NULL',
7135
then set this value to target's underscoring mode. Zero for
7136
none-underscoring, -1 for invalid target, else the value of target
7137
vector's symbol underscoring.  If DEF_TARGET_ARCH is not `NULL', then
7138
set it to the architecture string specified by the target_name.
7139
 
7140
2.12.1.4 `bfd_target_list'
7141
..........................
7142
 
7143
*Synopsis*
7144
     const char ** bfd_target_list (void);
7145
   *Description*
7146
Return a freshly malloced NULL-terminated vector of the names of all
7147
the valid BFD targets. Do not modify the names.
7148
 
7149
2.12.1.5 `bfd_seach_for_target'
7150
...............................
7151
 
7152
*Synopsis*
7153
     const bfd_target *bfd_search_for_target
7154
        (int (*search_func) (const bfd_target *, void *),
7155
         void *);
7156
   *Description*
7157
Return a pointer to the first transfer vector in the list of transfer
7158
vectors maintained by BFD that produces a non-zero result when passed
7159
to the function SEARCH_FUNC.  The parameter DATA is passed, unexamined,
7160
to the search function.
7161
 
7162

7163
File: bfd.info,  Node: Architectures,  Next: Opening and Closing,  Prev: Targets,  Up: BFD front end
7164
 
7165
2.13 Architectures
7166
==================
7167
 
7168
BFD keeps one atom in a BFD describing the architecture of the data
7169
attached to the BFD: a pointer to a `bfd_arch_info_type'.
7170
 
7171
   Pointers to structures can be requested independently of a BFD so
7172
that an architecture's information can be interrogated without access
7173
to an open BFD.
7174
 
7175
   The architecture information is provided by each architecture
7176
package.  The set of default architectures is selected by the macro
7177
`SELECT_ARCHITECTURES'.  This is normally set up in the
7178
`config/TARGET.mt' file of your choice.  If the name is not defined,
7179
then all the architectures supported are included.
7180
 
7181
   When BFD starts up, all the architectures are called with an
7182
initialize method.  It is up to the architecture back end to insert as
7183
many items into the list of architectures as it wants to; generally
7184
this would be one for each machine and one for the default case (an
7185
item with a machine field of 0).
7186
 
7187
   BFD's idea of an architecture is implemented in `archures.c'.
7188
 
7189
2.13.1 bfd_architecture
7190
-----------------------
7191
 
7192
*Description*
7193
This enum gives the object file's CPU architecture, in a global
7194
sense--i.e., what processor family does it belong to?  Another field
7195
indicates which processor within the family is in use.  The machine
7196
gives a number which distinguishes different versions of the
7197
architecture, containing, for example, 2 and 3 for Intel i960 KA and
7198
i960 KB, and 68020 and 68030 for Motorola 68020 and 68030.
7199
     enum bfd_architecture
7200
     {
7201
       bfd_arch_unknown,   /* File arch not known.  */
7202
       bfd_arch_obscure,   /* Arch known, not one of these.  */
7203
       bfd_arch_m68k,      /* Motorola 68xxx */
7204
     #define bfd_mach_m68000 1
7205
     #define bfd_mach_m68008 2
7206
     #define bfd_mach_m68010 3
7207
     #define bfd_mach_m68020 4
7208
     #define bfd_mach_m68030 5
7209
     #define bfd_mach_m68040 6
7210
     #define bfd_mach_m68060 7
7211
     #define bfd_mach_cpu32  8
7212
     #define bfd_mach_fido   9
7213
     #define bfd_mach_mcf_isa_a_nodiv 10
7214
     #define bfd_mach_mcf_isa_a 11
7215
     #define bfd_mach_mcf_isa_a_mac 12
7216
     #define bfd_mach_mcf_isa_a_emac 13
7217
     #define bfd_mach_mcf_isa_aplus 14
7218
     #define bfd_mach_mcf_isa_aplus_mac 15
7219
     #define bfd_mach_mcf_isa_aplus_emac 16
7220
     #define bfd_mach_mcf_isa_b_nousp 17
7221
     #define bfd_mach_mcf_isa_b_nousp_mac 18
7222
     #define bfd_mach_mcf_isa_b_nousp_emac 19
7223
     #define bfd_mach_mcf_isa_b 20
7224
     #define bfd_mach_mcf_isa_b_mac 21
7225
     #define bfd_mach_mcf_isa_b_emac 22
7226
     #define bfd_mach_mcf_isa_b_float 23
7227
     #define bfd_mach_mcf_isa_b_float_mac 24
7228
     #define bfd_mach_mcf_isa_b_float_emac 25
7229
     #define bfd_mach_mcf_isa_c 26
7230
     #define bfd_mach_mcf_isa_c_mac 27
7231
     #define bfd_mach_mcf_isa_c_emac 28
7232
     #define bfd_mach_mcf_isa_c_nodiv 29
7233
     #define bfd_mach_mcf_isa_c_nodiv_mac 30
7234
     #define bfd_mach_mcf_isa_c_nodiv_emac 31
7235
       bfd_arch_vax,       /* DEC Vax */
7236
       bfd_arch_i960,      /* Intel 960 */
7237
         /* The order of the following is important.
7238
            lower number indicates a machine type that
7239
            only accepts a subset of the instructions
7240
            available to machines with higher numbers.
7241
            The exception is the "ca", which is
7242
            incompatible with all other machines except
7243
            "core".  */
7244
 
7245
     #define bfd_mach_i960_core      1
7246
     #define bfd_mach_i960_ka_sa     2
7247
     #define bfd_mach_i960_kb_sb     3
7248
     #define bfd_mach_i960_mc        4
7249
     #define bfd_mach_i960_xa        5
7250
     #define bfd_mach_i960_ca        6
7251
     #define bfd_mach_i960_jx        7
7252
     #define bfd_mach_i960_hx        8
7253
 
7254
       bfd_arch_or1k,      /* OpenRISC 1000 */
7255
     #define bfd_mach_or1k           1
7256
     #define bfd_mach_or1knd         2
7257
 
7258
       bfd_arch_sparc,     /* SPARC */
7259
     #define bfd_mach_sparc                 1
7260
     /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
7261
     #define bfd_mach_sparc_sparclet        2
7262
     #define bfd_mach_sparc_sparclite       3
7263
     #define bfd_mach_sparc_v8plus          4
7264
     #define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
7265
     #define bfd_mach_sparc_sparclite_le    6
7266
     #define bfd_mach_sparc_v9              7
7267
     #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
7268
     #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
7269
     #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
7270
     /* Nonzero if MACH has the v9 instruction set.  */
7271
     #define bfd_mach_sparc_v9_p(mach) \
7272
       ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
7273
        && (mach) != bfd_mach_sparc_sparclite_le)
7274
     /* Nonzero if MACH is a 64 bit sparc architecture.  */
7275
     #define bfd_mach_sparc_64bit_p(mach) \
7276
       ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
7277
       bfd_arch_spu,       /* PowerPC SPU */
7278
     #define bfd_mach_spu           256
7279
       bfd_arch_mips,      /* MIPS Rxxxx */
7280
     #define bfd_mach_mips3000              3000
7281
     #define bfd_mach_mips3900              3900
7282
     #define bfd_mach_mips4000              4000
7283
     #define bfd_mach_mips4010              4010
7284
     #define bfd_mach_mips4100              4100
7285
     #define bfd_mach_mips4111              4111
7286
     #define bfd_mach_mips4120              4120
7287
     #define bfd_mach_mips4300              4300
7288
     #define bfd_mach_mips4400              4400
7289
     #define bfd_mach_mips4600              4600
7290
     #define bfd_mach_mips4650              4650
7291
     #define bfd_mach_mips5000              5000
7292
     #define bfd_mach_mips5400              5400
7293
     #define bfd_mach_mips5500              5500
7294
     #define bfd_mach_mips6000              6000
7295
     #define bfd_mach_mips7000              7000
7296
     #define bfd_mach_mips8000              8000
7297
     #define bfd_mach_mips9000              9000
7298
     #define bfd_mach_mips10000             10000
7299
     #define bfd_mach_mips12000             12000
7300
     #define bfd_mach_mips14000             14000
7301
     #define bfd_mach_mips16000             16000
7302
     #define bfd_mach_mips16                16
7303
     #define bfd_mach_mips5                 5
7304
     #define bfd_mach_mips_loongson_2e      3001
7305
     #define bfd_mach_mips_loongson_2f      3002
7306
     #define bfd_mach_mips_loongson_3a      3003
7307
     #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
7308
     #define bfd_mach_mips_octeon           6501
7309
     #define bfd_mach_mips_octeonp          6601
7310
     #define bfd_mach_mips_octeon2          6502
7311
     #define bfd_mach_mips_xlr              887682   /* decimal 'XLR'  */
7312
     #define bfd_mach_mipsisa32             32
7313
     #define bfd_mach_mipsisa32r2           33
7314
     #define bfd_mach_mipsisa64             64
7315
     #define bfd_mach_mipsisa64r2           65
7316
     #define bfd_mach_mips_micromips        96
7317
       bfd_arch_i386,      /* Intel 386 */
7318
     #define bfd_mach_i386_intel_syntax     (1 << 0)
7319
     #define bfd_mach_i386_i8086            (1 << 1)
7320
     #define bfd_mach_i386_i386             (1 << 2)
7321
     #define bfd_mach_x86_64                (1 << 3)
7322
     #define bfd_mach_x64_32                (1 << 4)
7323
     #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
7324
     #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
7325
     #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
7326
       bfd_arch_l1om,   /* Intel L1OM */
7327
     #define bfd_mach_l1om                  (1 << 5)
7328
     #define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
7329
       bfd_arch_k1om,   /* Intel K1OM */
7330
     #define bfd_mach_k1om                  (1 << 6)
7331
     #define bfd_mach_k1om_intel_syntax     (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
7332
       bfd_arch_we32k,     /* AT&T WE32xxx */
7333
       bfd_arch_tahoe,     /* CCI/Harris Tahoe */
7334
       bfd_arch_i860,      /* Intel 860 */
7335
       bfd_arch_i370,      /* IBM 360/370 Mainframes */
7336
       bfd_arch_romp,      /* IBM ROMP PC/RT */
7337
       bfd_arch_convex,    /* Convex */
7338
       bfd_arch_m88k,      /* Motorola 88xxx */
7339
       bfd_arch_m98k,      /* Motorola 98xxx */
7340
       bfd_arch_pyramid,   /* Pyramid Technology */
7341
       bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
7342
     #define bfd_mach_h8300    1
7343
     #define bfd_mach_h8300h   2
7344
     #define bfd_mach_h8300s   3
7345
     #define bfd_mach_h8300hn  4
7346
     #define bfd_mach_h8300sn  5
7347
     #define bfd_mach_h8300sx  6
7348
     #define bfd_mach_h8300sxn 7
7349
       bfd_arch_pdp11,     /* DEC PDP-11 */
7350
       bfd_arch_plugin,
7351
       bfd_arch_powerpc,   /* PowerPC */
7352
     #define bfd_mach_ppc           32
7353
     #define bfd_mach_ppc64         64
7354
     #define bfd_mach_ppc_403       403
7355
     #define bfd_mach_ppc_403gc     4030
7356
     #define bfd_mach_ppc_405       405
7357
     #define bfd_mach_ppc_505       505
7358
     #define bfd_mach_ppc_601       601
7359
     #define bfd_mach_ppc_602       602
7360
     #define bfd_mach_ppc_603       603
7361
     #define bfd_mach_ppc_ec603e    6031
7362
     #define bfd_mach_ppc_604       604
7363
     #define bfd_mach_ppc_620       620
7364
     #define bfd_mach_ppc_630       630
7365
     #define bfd_mach_ppc_750       750
7366
     #define bfd_mach_ppc_860       860
7367
     #define bfd_mach_ppc_a35       35
7368
     #define bfd_mach_ppc_rs64ii    642
7369
     #define bfd_mach_ppc_rs64iii   643
7370
     #define bfd_mach_ppc_7400      7400
7371
     #define bfd_mach_ppc_e500      500
7372
     #define bfd_mach_ppc_e500mc    5001
7373
     #define bfd_mach_ppc_e500mc64  5005
7374
     #define bfd_mach_ppc_e5500     5006
7375
     #define bfd_mach_ppc_e6500     5007
7376
     #define bfd_mach_ppc_titan     83
7377
     #define bfd_mach_ppc_vle       84
7378
       bfd_arch_rs6000,    /* IBM RS/6000 */
7379
     #define bfd_mach_rs6k          6000
7380
     #define bfd_mach_rs6k_rs1      6001
7381
     #define bfd_mach_rs6k_rsc      6003
7382
     #define bfd_mach_rs6k_rs2      6002
7383
       bfd_arch_hppa,      /* HP PA RISC */
7384
     #define bfd_mach_hppa10        10
7385
     #define bfd_mach_hppa11        11
7386
     #define bfd_mach_hppa20        20
7387
     #define bfd_mach_hppa20w       25
7388
       bfd_arch_d10v,      /* Mitsubishi D10V */
7389
     #define bfd_mach_d10v          1
7390
     #define bfd_mach_d10v_ts2      2
7391
     #define bfd_mach_d10v_ts3      3
7392
       bfd_arch_d30v,      /* Mitsubishi D30V */
7393
       bfd_arch_dlx,       /* DLX */
7394
       bfd_arch_m68hc11,   /* Motorola 68HC11 */
7395
       bfd_arch_m68hc12,   /* Motorola 68HC12 */
7396
     #define bfd_mach_m6812_default 0
7397
     #define bfd_mach_m6812         1
7398
     #define bfd_mach_m6812s        2
7399
       bfd_arch_m9s12x,   /* Freescale S12X */
7400
       bfd_arch_m9s12xg,  /* Freescale XGATE */
7401
       bfd_arch_z8k,       /* Zilog Z8000 */
7402
     #define bfd_mach_z8001         1
7403
     #define bfd_mach_z8002         2
7404
       bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
7405
       bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
7406
     #define bfd_mach_sh            1
7407
     #define bfd_mach_sh2        0x20
7408
     #define bfd_mach_sh_dsp     0x2d
7409
     #define bfd_mach_sh2a       0x2a
7410
     #define bfd_mach_sh2a_nofpu 0x2b
7411
     #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
7412
     #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
7413
     #define bfd_mach_sh2a_or_sh4  0x2a3
7414
     #define bfd_mach_sh2a_or_sh3e 0x2a4
7415
     #define bfd_mach_sh2e       0x2e
7416
     #define bfd_mach_sh3        0x30
7417
     #define bfd_mach_sh3_nommu  0x31
7418
     #define bfd_mach_sh3_dsp    0x3d
7419
     #define bfd_mach_sh3e       0x3e
7420
     #define bfd_mach_sh4        0x40
7421
     #define bfd_mach_sh4_nofpu  0x41
7422
     #define bfd_mach_sh4_nommu_nofpu  0x42
7423
     #define bfd_mach_sh4a       0x4a
7424
     #define bfd_mach_sh4a_nofpu 0x4b
7425
     #define bfd_mach_sh4al_dsp  0x4d
7426
     #define bfd_mach_sh5        0x50
7427
       bfd_arch_alpha,     /* Dec Alpha */
7428
     #define bfd_mach_alpha_ev4  0x10
7429
     #define bfd_mach_alpha_ev5  0x20
7430
     #define bfd_mach_alpha_ev6  0x30
7431
       bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
7432
     #define bfd_mach_arm_unknown   0
7433
     #define bfd_mach_arm_2         1
7434
     #define bfd_mach_arm_2a        2
7435
     #define bfd_mach_arm_3         3
7436
     #define bfd_mach_arm_3M        4
7437
     #define bfd_mach_arm_4         5
7438
     #define bfd_mach_arm_4T        6
7439
     #define bfd_mach_arm_5         7
7440
     #define bfd_mach_arm_5T        8
7441
     #define bfd_mach_arm_5TE       9
7442
     #define bfd_mach_arm_XScale    10
7443
     #define bfd_mach_arm_ep9312    11
7444
     #define bfd_mach_arm_iWMMXt    12
7445
     #define bfd_mach_arm_iWMMXt2   13
7446
       bfd_arch_ns32k,     /* National Semiconductors ns32000 */
7447
       bfd_arch_w65,       /* WDC 65816 */
7448
       bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
7449
       bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
7450
     #define bfd_mach_tic3x         30
7451
     #define bfd_mach_tic4x         40
7452
       bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
7453
       bfd_arch_tic6x,     /* Texas Instruments TMS320C6X */
7454
       bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
7455
       bfd_arch_v850,      /* NEC V850 */
7456
       bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI) */
7457
     #define bfd_mach_v850          1
7458
     #define bfd_mach_v850e         'E'
7459
     #define bfd_mach_v850e1        '1'
7460
     #define bfd_mach_v850e2        0x4532
7461
     #define bfd_mach_v850e2v3      0x45325633
7462
       bfd_arch_arc,       /* ARC Cores */
7463
     #define bfd_mach_arc_5         5
7464
     #define bfd_mach_arc_6         6
7465
     #define bfd_mach_arc_7         7
7466
     #define bfd_mach_arc_8         8
7467
      bfd_arch_m32c,     /* Renesas M16C/M32C.  */
7468
     #define bfd_mach_m16c        0x75
7469
     #define bfd_mach_m32c        0x78
7470
       bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
7471
     #define bfd_mach_m32r          1 /* For backwards compatibility.  */
7472
     #define bfd_mach_m32rx         'x'
7473
     #define bfd_mach_m32r2         '2'
7474
       bfd_arch_mn10200,   /* Matsushita MN10200 */
7475
       bfd_arch_mn10300,   /* Matsushita MN10300 */
7476
     #define bfd_mach_mn10300               300
7477
     #define bfd_mach_am33          330
7478
     #define bfd_mach_am33_2        332
7479
       bfd_arch_fr30,
7480
     #define bfd_mach_fr30          0x46523330
7481
       bfd_arch_frv,
7482
     #define bfd_mach_frv           1
7483
     #define bfd_mach_frvsimple     2
7484
     #define bfd_mach_fr300         300
7485
     #define bfd_mach_fr400         400
7486
     #define bfd_mach_fr450         450
7487
     #define bfd_mach_frvtomcat     499     /* fr500 prototype */
7488
     #define bfd_mach_fr500         500
7489
     #define bfd_mach_fr550         550
7490
       bfd_arch_moxie,       /* The moxie processor */
7491
     #define bfd_mach_moxie         1
7492
       bfd_arch_mcore,
7493
       bfd_arch_mep,
7494
     #define bfd_mach_mep           1
7495
     #define bfd_mach_mep_h1        0x6831
7496
     #define bfd_mach_mep_c5        0x6335
7497
       bfd_arch_ia64,      /* HP/Intel ia64 */
7498
     #define bfd_mach_ia64_elf64    64
7499
     #define bfd_mach_ia64_elf32    32
7500
       bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
7501
     #define bfd_mach_ip2022        1
7502
     #define bfd_mach_ip2022ext     2
7503
      bfd_arch_iq2000,     /* Vitesse IQ2000.  */
7504
     #define bfd_mach_iq2000        1
7505
     #define bfd_mach_iq10          2
7506
       bfd_arch_epiphany,   /* Adapteva EPIPHANY */
7507
     #define bfd_mach_epiphany16    1
7508
     #define bfd_mach_epiphany32    2
7509
       bfd_arch_mt,
7510
     #define bfd_mach_ms1           1
7511
     #define bfd_mach_mrisc2        2
7512
     #define bfd_mach_ms2           3
7513
       bfd_arch_pj,
7514
       bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
7515
     #define bfd_mach_avr1          1
7516
     #define bfd_mach_avr2          2
7517
     #define bfd_mach_avr25         25
7518
     #define bfd_mach_avr3          3
7519
     #define bfd_mach_avr31         31
7520
     #define bfd_mach_avr35         35
7521
     #define bfd_mach_avr4          4
7522
     #define bfd_mach_avr5          5
7523
     #define bfd_mach_avr51         51
7524
     #define bfd_mach_avr6          6
7525
     #define bfd_mach_avrxmega1 101
7526
     #define bfd_mach_avrxmega2 102
7527
     #define bfd_mach_avrxmega3 103
7528
     #define bfd_mach_avrxmega4 104
7529
     #define bfd_mach_avrxmega5 105
7530
     #define bfd_mach_avrxmega6 106
7531
     #define bfd_mach_avrxmega7 107
7532
       bfd_arch_bfin,        /* ADI Blackfin */
7533
     #define bfd_mach_bfin          1
7534
       bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
7535
     #define bfd_mach_cr16          1
7536
       bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
7537
     #define bfd_mach_cr16c         1
7538
       bfd_arch_crx,       /*  National Semiconductor CRX.  */
7539
     #define bfd_mach_crx           1
7540
       bfd_arch_cris,      /* Axis CRIS */
7541
     #define bfd_mach_cris_v0_v10   255
7542
     #define bfd_mach_cris_v32      32
7543
     #define bfd_mach_cris_v10_v32  1032
7544
       bfd_arch_rl78,
7545
     #define bfd_mach_rl78  0x75
7546
       bfd_arch_rx,        /* Renesas RX.  */
7547
     #define bfd_mach_rx            0x75
7548
       bfd_arch_s390,      /* IBM s390 */
7549
     #define bfd_mach_s390_31       31
7550
     #define bfd_mach_s390_64       64
7551
       bfd_arch_score,     /* Sunplus score */
7552
     #define bfd_mach_score3         3
7553
     #define bfd_mach_score7         7
7554
       bfd_arch_openrisc,  /* OpenRISC */
7555
       bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
7556
       bfd_arch_xstormy16,
7557
     #define bfd_mach_xstormy16     1
7558
       bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
7559
     #define bfd_mach_msp11          11
7560
     #define bfd_mach_msp110         110
7561
     #define bfd_mach_msp12          12
7562
     #define bfd_mach_msp13          13
7563
     #define bfd_mach_msp14          14
7564
     #define bfd_mach_msp15          15
7565
     #define bfd_mach_msp16          16
7566
     #define bfd_mach_msp21          21
7567
     #define bfd_mach_msp31          31
7568
     #define bfd_mach_msp32          32
7569
     #define bfd_mach_msp33          33
7570
     #define bfd_mach_msp41          41
7571
     #define bfd_mach_msp42          42
7572
     #define bfd_mach_msp43          43
7573
     #define bfd_mach_msp44          44
7574
       bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
7575
     #define bfd_mach_xc16x         1
7576
     #define bfd_mach_xc16xl        2
7577
     #define bfd_mach_xc16xs        3
7578
       bfd_arch_xgate,   /* Freescale XGATE */
7579
     #define bfd_mach_xgate         1
7580
       bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
7581
     #define bfd_mach_xtensa        1
7582
       bfd_arch_z80,
7583
     #define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
7584
     #define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
7585
     #define bfd_mach_z80full        7 /* All undocumented instructions.  */
7586
     #define bfd_mach_r800           11 /* R800: successor with multiplication.  */
7587
       bfd_arch_lm32,      /* Lattice Mico32 */
7588
     #define bfd_mach_lm32      1
7589
       bfd_arch_microblaze,/* Xilinx MicroBlaze. */
7590
       bfd_arch_tilepro,   /* Tilera TILEPro */
7591
       bfd_arch_tilegx, /* Tilera TILE-Gx */
7592
     #define bfd_mach_tilepro   1
7593
     #define bfd_mach_tilegx    1
7594
     #define bfd_mach_tilegx32  2
7595
       bfd_arch_aarch64,   /* AArch64  */
7596
     #define bfd_mach_aarch64 0
7597
       bfd_arch_last
7598
       };
7599
 
7600
2.13.2 bfd_arch_info
7601
--------------------
7602
 
7603
*Description*
7604
This structure contains information on architectures for use within BFD.
7605
 
7606
     typedef struct bfd_arch_info
7607
     {
7608
       int bits_per_word;
7609
       int bits_per_address;
7610
       int bits_per_byte;
7611
       enum bfd_architecture arch;
7612
       unsigned long mach;
7613
       const char *arch_name;
7614
       const char *printable_name;
7615
       unsigned int section_align_power;
7616
       /* TRUE if this is the default machine for the architecture.
7617
          The default arch should be the first entry for an arch so that
7618
          all the entries for that arch can be accessed via `next'.  */
7619
       bfd_boolean the_default;
7620
       const struct bfd_arch_info * (*compatible)
7621
         (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
7622
 
7623
       bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
7624
 
7625
       /* Allocate via bfd_malloc and return a fill buffer of size COUNT.  If
7626
          IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
7627
          TRUE, the buffer contains code.  */
7628
       void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
7629
                      bfd_boolean code);
7630
 
7631
       const struct bfd_arch_info *next;
7632
     }
7633
     bfd_arch_info_type;
7634
 
7635
2.13.2.1 `bfd_printable_name'
7636
.............................
7637
 
7638
*Synopsis*
7639
     const char *bfd_printable_name (bfd *abfd);
7640
   *Description*
7641
Return a printable string representing the architecture and machine
7642
from the pointer to the architecture info structure.
7643
 
7644
2.13.2.2 `bfd_scan_arch'
7645
........................
7646
 
7647
*Synopsis*
7648
     const bfd_arch_info_type *bfd_scan_arch (const char *string);
7649
   *Description*
7650
Figure out if BFD supports any cpu which could be described with the
7651
name STRING.  Return a pointer to an `arch_info' structure if a machine
7652
is found, otherwise NULL.
7653
 
7654
2.13.2.3 `bfd_arch_list'
7655
........................
7656
 
7657
*Synopsis*
7658
     const char **bfd_arch_list (void);
7659
   *Description*
7660
Return a freshly malloced NULL-terminated vector of the names of all
7661
the valid BFD architectures.  Do not modify the names.
7662
 
7663
2.13.2.4 `bfd_arch_get_compatible'
7664
..................................
7665
 
7666
*Synopsis*
7667
     const bfd_arch_info_type *bfd_arch_get_compatible
7668
        (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
7669
   *Description*
7670
Determine whether two BFDs' architectures and machine types are
7671
compatible.  Calculates the lowest common denominator between the two
7672
architectures and machine types implied by the BFDs and returns a
7673
pointer to an `arch_info' structure describing the compatible machine.
7674
 
7675
2.13.2.5 `bfd_default_arch_struct'
7676
..................................
7677
 
7678
*Description*
7679
The `bfd_default_arch_struct' is an item of `bfd_arch_info_type' which
7680
has been initialized to a fairly generic state.  A BFD starts life by
7681
pointing to this structure, until the correct back end has determined
7682
the real architecture of the file.
7683
     extern const bfd_arch_info_type bfd_default_arch_struct;
7684
 
7685
2.13.2.6 `bfd_set_arch_info'
7686
............................
7687
 
7688
*Synopsis*
7689
     void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
7690
   *Description*
7691
Set the architecture info of ABFD to ARG.
7692
 
7693
2.13.2.7 `bfd_default_set_arch_mach'
7694
....................................
7695
 
7696
*Synopsis*
7697
     bfd_boolean bfd_default_set_arch_mach
7698
        (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
7699
   *Description*
7700
Set the architecture and machine type in BFD ABFD to ARCH and MACH.
7701
Find the correct pointer to a structure and insert it into the
7702
`arch_info' pointer.
7703
 
7704
2.13.2.8 `bfd_get_arch'
7705
.......................
7706
 
7707
*Synopsis*
7708
     enum bfd_architecture bfd_get_arch (bfd *abfd);
7709
   *Description*
7710
Return the enumerated type which describes the BFD ABFD's architecture.
7711
 
7712
2.13.2.9 `bfd_get_mach'
7713
.......................
7714
 
7715
*Synopsis*
7716
     unsigned long bfd_get_mach (bfd *abfd);
7717
   *Description*
7718
Return the long type which describes the BFD ABFD's machine.
7719
 
7720
2.13.2.10 `bfd_arch_bits_per_byte'
7721
..................................
7722
 
7723
*Synopsis*
7724
     unsigned int bfd_arch_bits_per_byte (bfd *abfd);
7725
   *Description*
7726
Return the number of bits in one of the BFD ABFD's architecture's bytes.
7727
 
7728
2.13.2.11 `bfd_arch_bits_per_address'
7729
.....................................
7730
 
7731
*Synopsis*
7732
     unsigned int bfd_arch_bits_per_address (bfd *abfd);
7733
   *Description*
7734
Return the number of bits in one of the BFD ABFD's architecture's
7735
addresses.
7736
 
7737
2.13.2.12 `bfd_default_compatible'
7738
..................................
7739
 
7740
*Synopsis*
7741
     const bfd_arch_info_type *bfd_default_compatible
7742
        (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
7743
   *Description*
7744
The default function for testing for compatibility.
7745
 
7746
2.13.2.13 `bfd_default_scan'
7747
............................
7748
 
7749
*Synopsis*
7750
     bfd_boolean bfd_default_scan
7751
        (const struct bfd_arch_info *info, const char *string);
7752
   *Description*
7753
The default function for working out whether this is an architecture
7754
hit and a machine hit.
7755
 
7756
2.13.2.14 `bfd_get_arch_info'
7757
.............................
7758
 
7759
*Synopsis*
7760
     const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
7761
   *Description*
7762
Return the architecture info struct in ABFD.
7763
 
7764
2.13.2.15 `bfd_lookup_arch'
7765
...........................
7766
 
7767
*Synopsis*
7768
     const bfd_arch_info_type *bfd_lookup_arch
7769
        (enum bfd_architecture arch, unsigned long machine);
7770
   *Description*
7771
Look for the architecture info structure which matches the arguments
7772
ARCH and MACHINE. A machine of 0 matches the machine/architecture
7773
structure which marks itself as the default.
7774
 
7775
2.13.2.16 `bfd_printable_arch_mach'
7776
...................................
7777
 
7778
*Synopsis*
7779
     const char *bfd_printable_arch_mach
7780
        (enum bfd_architecture arch, unsigned long machine);
7781
   *Description*
7782
Return a printable string representing the architecture and machine
7783
type.
7784
 
7785
   This routine is depreciated.
7786
 
7787
2.13.2.17 `bfd_octets_per_byte'
7788
...............................
7789
 
7790
*Synopsis*
7791
     unsigned int bfd_octets_per_byte (bfd *abfd);
7792
   *Description*
7793
Return the number of octets (8-bit quantities) per target byte (minimum
7794
addressable unit).  In most cases, this will be one, but some DSP
7795
targets have 16, 32, or even 48 bits per byte.
7796
 
7797
2.13.2.18 `bfd_arch_mach_octets_per_byte'
7798
.........................................
7799
 
7800
*Synopsis*
7801
     unsigned int bfd_arch_mach_octets_per_byte
7802
        (enum bfd_architecture arch, unsigned long machine);
7803
   *Description*
7804
See bfd_octets_per_byte.
7805
 
7806
   This routine is provided for those cases where a bfd * is not
7807
available
7808
 
7809
2.13.2.19 `bfd_arch_default_fill'
7810
.................................
7811
 
7812
*Synopsis*
7813
     void *bfd_arch_default_fill (bfd_size_type count,
7814
         bfd_boolean is_bigendian,
7815
         bfd_boolean code);
7816
   *Description*
7817
Allocate via bfd_malloc and return a fill buffer of size COUNT.  If
7818
IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
7819
TRUE, the buffer contains code.
7820
 
7821

7822
File: bfd.info,  Node: Opening and Closing,  Next: Internal,  Prev: Architectures,  Up: BFD front end
7823
 
7824
     /* Set to N to open the next N BFDs using an alternate id space.  */
7825
     extern unsigned int bfd_use_reserved_id;
7826
 
7827
2.14 Opening and closing BFDs
7828
=============================
7829
 
7830
2.14.1 Functions for opening and closing
7831
----------------------------------------
7832
 
7833
2.14.1.1 `bfd_fopen'
7834
....................
7835
 
7836
*Synopsis*
7837
     bfd *bfd_fopen (const char *filename, const char *target,
7838
         const char *mode, int fd);
7839
   *Description*
7840
Open the file FILENAME with the target TARGET.  Return a pointer to the
7841
created BFD.  If FD is not -1, then `fdopen' is used to open the file;
7842
otherwise, `fopen' is used.  MODE is passed directly to `fopen' or
7843
`fdopen'.
7844
 
7845
   Calls `bfd_find_target', so TARGET is interpreted as by that
7846
function.
7847
 
7848
   The new BFD is marked as cacheable iff FD is -1.
7849
 
7850
   If `NULL' is returned then an error has occured.   Possible errors
7851
are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call'
7852
error.
7853
 
7854
   On error, FD is always closed.
7855
 
7856
2.14.1.2 `bfd_openr'
7857
....................
7858
 
7859
*Synopsis*
7860
     bfd *bfd_openr (const char *filename, const char *target);
7861
   *Description*
7862
Open the file FILENAME (using `fopen') with the target TARGET.  Return
7863
a pointer to the created BFD.
7864
 
7865
   Calls `bfd_find_target', so TARGET is interpreted as by that
7866
function.
7867
 
7868
   If `NULL' is returned then an error has occured.   Possible errors
7869
are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call'
7870
error.
7871
 
7872
2.14.1.3 `bfd_fdopenr'
7873
......................
7874
 
7875
*Synopsis*
7876
     bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
7877
   *Description*
7878
`bfd_fdopenr' is to `bfd_fopenr' much like `fdopen' is to `fopen'.  It
7879
opens a BFD on a file already described by the FD supplied.
7880
 
7881
   When the file is later `bfd_close'd, the file descriptor will be
7882
closed.  If the caller desires that this file descriptor be cached by
7883
BFD (opened as needed, closed as needed to free descriptors for other
7884
opens), with the supplied FD used as an initial file descriptor (but
7885
subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the
7886
returned BFD.  The default is to assume no caching; the file descriptor
7887
will remain open until `bfd_close', and will not be affected by BFD
7888
operations on other files.
7889
 
7890
   Possible errors are `bfd_error_no_memory',
7891
`bfd_error_invalid_target' and `bfd_error_system_call'.
7892
 
7893
   On error, FD is closed.
7894
 
7895
2.14.1.4 `bfd_openstreamr'
7896
..........................
7897
 
7898
*Synopsis*
7899
     bfd *bfd_openstreamr (const char *, const char *, void *);
7900
   *Description*
7901
Open a BFD for read access on an existing stdio stream.  When the BFD
7902
is passed to `bfd_close', the stream will be closed.
7903
 
7904
2.14.1.5 `bfd_openr_iovec'
7905
..........................
7906
 
7907
*Synopsis*
7908
     bfd *bfd_openr_iovec (const char *filename, const char *target,
7909
         void *(*open_func) (struct bfd *nbfd,
7910
         void *open_closure),
7911
         void *open_closure,
7912
         file_ptr (*pread_func) (struct bfd *nbfd,
7913
         void *stream,
7914
         void *buf,
7915
         file_ptr nbytes,
7916
         file_ptr offset),
7917
         int (*close_func) (struct bfd *nbfd,
7918
         void *stream),
7919
         int (*stat_func) (struct bfd *abfd,
7920
         void *stream,
7921
         struct stat *sb));
7922
   *Description*
7923
Create and return a BFD backed by a read-only STREAM.  The STREAM is
7924
created using OPEN_FUNC, accessed using PREAD_FUNC and destroyed using
7925
CLOSE_FUNC.
7926
 
7927
   Calls `bfd_find_target', so TARGET is interpreted as by that
7928
function.
7929
 
7930
   Calls OPEN_FUNC (which can call `bfd_zalloc' and `bfd_get_filename')
7931
to obtain the read-only stream backing the BFD.  OPEN_FUNC either
7932
succeeds returning the non-`NULL' STREAM, or fails returning `NULL'
7933
(setting `bfd_error').
7934
 
7935
   Calls PREAD_FUNC to request NBYTES of data from STREAM starting at
7936
OFFSET (e.g., via a call to `bfd_read').  PREAD_FUNC either succeeds
7937
returning the number of bytes read (which can be less than NBYTES when
7938
end-of-file), or fails returning -1 (setting `bfd_error').
7939
 
7940
   Calls CLOSE_FUNC when the BFD is later closed using `bfd_close'.
7941
CLOSE_FUNC either succeeds returning 0, or fails returning -1 (setting
7942
`bfd_error').
7943
 
7944
   Calls STAT_FUNC to fill in a stat structure for bfd_stat,
7945
bfd_get_size, and bfd_get_mtime calls.  STAT_FUNC returns 0 on success,
7946
or returns -1 on failure (setting `bfd_error').
7947
 
7948
   If `bfd_openr_iovec' returns `NULL' then an error has occurred.
7949
Possible errors are `bfd_error_no_memory', `bfd_error_invalid_target'
7950
and `bfd_error_system_call'.
7951
 
7952
2.14.1.6 `bfd_openw'
7953
....................
7954
 
7955
*Synopsis*
7956
     bfd *bfd_openw (const char *filename, const char *target);
7957
   *Description*
7958
Create a BFD, associated with file FILENAME, using the file format
7959
TARGET, and return a pointer to it.
7960
 
7961
   Possible errors are `bfd_error_system_call', `bfd_error_no_memory',
7962
`bfd_error_invalid_target'.
7963
 
7964
2.14.1.7 `bfd_close'
7965
....................
7966
 
7967
*Synopsis*
7968
     bfd_boolean bfd_close (bfd *abfd);
7969
   *Description*
7970
Close a BFD. If the BFD was open for writing, then pending operations
7971
are completed and the file written out and closed.  If the created file
7972
is executable, then `chmod' is called to mark it as such.
7973
 
7974
   All memory attached to the BFD is released.
7975
 
7976
   The file descriptor associated with the BFD is closed (even if it
7977
was passed in to BFD by `bfd_fdopenr').
7978
 
7979
   *Returns*
7980
`TRUE' is returned if all is ok, otherwise `FALSE'.
7981
 
7982
2.14.1.8 `bfd_close_all_done'
7983
.............................
7984
 
7985
*Synopsis*
7986
     bfd_boolean bfd_close_all_done (bfd *);
7987
   *Description*
7988
Close a BFD.  Differs from `bfd_close' since it does not complete any
7989
pending operations.  This routine would be used if the application had
7990
just used BFD for swapping and didn't want to use any of the writing
7991
code.
7992
 
7993
   If the created file is executable, then `chmod' is called to mark it
7994
as such.
7995
 
7996
   All memory attached to the BFD is released.
7997
 
7998
   *Returns*
7999
`TRUE' is returned if all is ok, otherwise `FALSE'.
8000
 
8001
2.14.1.9 `bfd_create'
8002
.....................
8003
 
8004
*Synopsis*
8005
     bfd *bfd_create (const char *filename, bfd *templ);
8006
   *Description*
8007
Create a new BFD in the manner of `bfd_openw', but without opening a
8008
file. The new BFD takes the target from the target used by TEMPL. The
8009
format is always set to `bfd_object'.
8010
 
8011
2.14.1.10 `bfd_make_writable'
8012
.............................
8013
 
8014
*Synopsis*
8015
     bfd_boolean bfd_make_writable (bfd *abfd);
8016
   *Description*
8017
Takes a BFD as created by `bfd_create' and converts it into one like as
8018
returned by `bfd_openw'.  It does this by converting the BFD to
8019
BFD_IN_MEMORY.  It's assumed that you will call `bfd_make_readable' on
8020
this bfd later.
8021
 
8022
   *Returns*
8023
`TRUE' is returned if all is ok, otherwise `FALSE'.
8024
 
8025
2.14.1.11 `bfd_make_readable'
8026
.............................
8027
 
8028
*Synopsis*
8029
     bfd_boolean bfd_make_readable (bfd *abfd);
8030
   *Description*
8031
Takes a BFD as created by `bfd_create' and `bfd_make_writable' and
8032
converts it into one like as returned by `bfd_openr'.  It does this by
8033
writing the contents out to the memory buffer, then reversing the
8034
direction.
8035
 
8036
   *Returns*
8037
`TRUE' is returned if all is ok, otherwise `FALSE'.
8038
 
8039
2.14.1.12 `bfd_alloc'
8040
.....................
8041
 
8042
*Synopsis*
8043
     void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
8044
   *Description*
8045
Allocate a block of WANTED bytes of memory attached to `abfd' and
8046
return a pointer to it.
8047
 
8048
2.14.1.13 `bfd_alloc2'
8049
......................
8050
 
8051
*Synopsis*
8052
     void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
8053
   *Description*
8054
Allocate a block of NMEMB elements of SIZE bytes each of memory
8055
attached to `abfd' and return a pointer to it.
8056
 
8057
2.14.1.14 `bfd_zalloc'
8058
......................
8059
 
8060
*Synopsis*
8061
     void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
8062
   *Description*
8063
Allocate a block of WANTED bytes of zeroed memory attached to `abfd'
8064
and return a pointer to it.
8065
 
8066
2.14.1.15 `bfd_zalloc2'
8067
.......................
8068
 
8069
*Synopsis*
8070
     void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
8071
   *Description*
8072
Allocate a block of NMEMB elements of SIZE bytes each of zeroed memory
8073
attached to `abfd' and return a pointer to it.
8074
 
8075
2.14.1.16 `bfd_calc_gnu_debuglink_crc32'
8076
........................................
8077
 
8078
*Synopsis*
8079
     unsigned long bfd_calc_gnu_debuglink_crc32
8080
        (unsigned long crc, const unsigned char *buf, bfd_size_type len);
8081
   *Description*
8082
Computes a CRC value as used in the .gnu_debuglink section.  Advances
8083
the previously computed CRC value by computing and adding in the crc32
8084
for LEN bytes of BUF.
8085
 
8086
   *Returns*
8087
Return the updated CRC32 value.
8088
 
8089
2.14.1.17 `get_debug_link_info'
8090
...............................
8091
 
8092
*Synopsis*
8093
     char *get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
8094
   *Description*
8095
fetch the filename and CRC32 value for any separate debuginfo
8096
associated with ABFD. Return NULL if no such info found, otherwise
8097
return filename and update CRC32_OUT.
8098
 
8099
2.14.1.18 `separate_debug_file_exists'
8100
......................................
8101
 
8102
*Synopsis*
8103
     bfd_boolean separate_debug_file_exists
8104
        (char *name, unsigned long crc32);
8105
   *Description*
8106
Checks to see if NAME is a file and if its contents match CRC32.
8107
 
8108
2.14.1.19 `find_separate_debug_file'
8109
....................................
8110
 
8111
*Synopsis*
8112
     char *find_separate_debug_file (bfd *abfd);
8113
   *Description*
8114
Searches ABFD for a reference to separate debugging information, scans
8115
various locations in the filesystem, including the file tree rooted at
8116
DEBUG_FILE_DIRECTORY, and returns a filename of such debugging
8117
information if the file is found and has matching CRC32.  Returns NULL
8118
if no reference to debugging file exists, or file cannot be found.
8119
 
8120
2.14.1.20 `bfd_follow_gnu_debuglink'
8121
....................................
8122
 
8123
*Synopsis*
8124
     char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
8125
   *Description*
8126
Takes a BFD and searches it for a .gnu_debuglink section.  If this
8127
section is found, it examines the section for the name and checksum of
8128
a '.debug' file containing auxiliary debugging information.  It then
8129
searches the filesystem for this .debug file in some standard
8130
locations, including the directory tree rooted at DIR, and if found
8131
returns the full filename.
8132
 
8133
   If DIR is NULL, it will search a default path configured into libbfd
8134
at build time.  [XXX this feature is not currently implemented].
8135
 
8136
   *Returns*
8137
`NULL' on any errors or failure to locate the .debug file, otherwise a
8138
pointer to a heap-allocated string containing the filename.  The caller
8139
is responsible for freeing this string.
8140
 
8141
2.14.1.21 `bfd_create_gnu_debuglink_section'
8142
............................................
8143
 
8144
*Synopsis*
8145
     struct bfd_section *bfd_create_gnu_debuglink_section
8146
        (bfd *abfd, const char *filename);
8147
   *Description*
8148
Takes a BFD and adds a .gnu_debuglink section to it.  The section is
8149
sized to be big enough to contain a link to the specified FILENAME.
8150
 
8151
   *Returns*
8152
A pointer to the new section is returned if all is ok.  Otherwise
8153
`NULL' is returned and bfd_error is set.
8154
 
8155
2.14.1.22 `bfd_fill_in_gnu_debuglink_section'
8156
.............................................
8157
 
8158
*Synopsis*
8159
     bfd_boolean bfd_fill_in_gnu_debuglink_section
8160
        (bfd *abfd, struct bfd_section *sect, const char *filename);
8161
   *Description*
8162
Takes a BFD and containing a .gnu_debuglink section SECT and fills in
8163
the contents of the section to contain a link to the specified
8164
FILENAME.  The filename should be relative to the current directory.
8165
 
8166
   *Returns*
8167
`TRUE' is returned if all is ok.  Otherwise `FALSE' is returned and
8168
bfd_error is set.
8169
 
8170

8171
File: bfd.info,  Node: Internal,  Next: File Caching,  Prev: Opening and Closing,  Up: BFD front end
8172
 
8173
2.15 Implementation details
8174
===========================
8175
 
8176
2.15.1 Internal functions
8177
-------------------------
8178
 
8179
*Description*
8180
These routines are used within BFD.  They are not intended for export,
8181
but are documented here for completeness.
8182
 
8183
2.15.1.1 `bfd_write_bigendian_4byte_int'
8184
........................................
8185
 
8186
*Synopsis*
8187
     bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
8188
   *Description*
8189
Write a 4 byte integer I to the output BFD ABFD, in big endian order
8190
regardless of what else is going on.  This is useful in archives.
8191
 
8192
2.15.1.2 `bfd_put_size'
8193
.......................
8194
 
8195
2.15.1.3 `bfd_get_size'
8196
.......................
8197
 
8198
*Description*
8199
These macros as used for reading and writing raw data in sections; each
8200
access (except for bytes) is vectored through the target format of the
8201
BFD and mangled accordingly. The mangling performs any necessary endian
8202
translations and removes alignment restrictions.  Note that types
8203
accepted and returned by these macros are identical so they can be
8204
swapped around in macros--for example, `libaout.h' defines `GET_WORD'
8205
to either `bfd_get_32' or `bfd_get_64'.
8206
 
8207
   In the put routines, VAL must be a `bfd_vma'.  If we are on a system
8208
without prototypes, the caller is responsible for making sure that is
8209
true, with a cast if necessary.  We don't cast them in the macro
8210
definitions because that would prevent `lint' or `gcc -Wall' from
8211
detecting sins such as passing a pointer.  To detect calling these with
8212
less than a `bfd_vma', use `gcc -Wconversion' on a host with 64 bit
8213
`bfd_vma''s.
8214
 
8215
     /* Byte swapping macros for user section data.  */
8216
 
8217
     #define bfd_put_8(abfd, val, ptr) \
8218
       ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
8219
     #define bfd_put_signed_8 \
8220
       bfd_put_8
8221
     #define bfd_get_8(abfd, ptr) \
8222
       (*(const unsigned char *) (ptr) & 0xff)
8223
     #define bfd_get_signed_8(abfd, ptr) \
8224
       (((*(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
8225
 
8226
     #define bfd_put_16(abfd, val, ptr) \
8227
       BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
8228
     #define bfd_put_signed_16 \
8229
       bfd_put_16
8230
     #define bfd_get_16(abfd, ptr) \
8231
       BFD_SEND (abfd, bfd_getx16, (ptr))
8232
     #define bfd_get_signed_16(abfd, ptr) \
8233
       BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
8234
 
8235
     #define bfd_put_32(abfd, val, ptr) \
8236
       BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
8237
     #define bfd_put_signed_32 \
8238
       bfd_put_32
8239
     #define bfd_get_32(abfd, ptr) \
8240
       BFD_SEND (abfd, bfd_getx32, (ptr))
8241
     #define bfd_get_signed_32(abfd, ptr) \
8242
       BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
8243
 
8244
     #define bfd_put_64(abfd, val, ptr) \
8245
       BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
8246
     #define bfd_put_signed_64 \
8247
       bfd_put_64
8248
     #define bfd_get_64(abfd, ptr) \
8249
       BFD_SEND (abfd, bfd_getx64, (ptr))
8250
     #define bfd_get_signed_64(abfd, ptr) \
8251
       BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
8252
 
8253
     #define bfd_get(bits, abfd, ptr)                       \
8254
       ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
8255
        : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
8256
        : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
8257
        : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
8258
        : (abort (), (bfd_vma) - 1))
8259
 
8260
     #define bfd_put(bits, abfd, val, ptr)                  \
8261
       ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
8262
        : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
8263
        : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
8264
        : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
8265
        : (abort (), (void) 0))
8266
 
8267
2.15.1.4 `bfd_h_put_size'
8268
.........................
8269
 
8270
*Description*
8271
These macros have the same function as their `bfd_get_x' brethren,
8272
except that they are used for removing information for the header
8273
records of object files. Believe it or not, some object files keep
8274
their header records in big endian order and their data in little
8275
endian order.
8276
 
8277
     /* Byte swapping macros for file header data.  */
8278
 
8279
     #define bfd_h_put_8(abfd, val, ptr) \
8280
       bfd_put_8 (abfd, val, ptr)
8281
     #define bfd_h_put_signed_8(abfd, val, ptr) \
8282
       bfd_put_8 (abfd, val, ptr)
8283
     #define bfd_h_get_8(abfd, ptr) \
8284
       bfd_get_8 (abfd, ptr)
8285
     #define bfd_h_get_signed_8(abfd, ptr) \
8286
       bfd_get_signed_8 (abfd, ptr)
8287
 
8288
     #define bfd_h_put_16(abfd, val, ptr) \
8289
       BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
8290
     #define bfd_h_put_signed_16 \
8291
       bfd_h_put_16
8292
     #define bfd_h_get_16(abfd, ptr) \
8293
       BFD_SEND (abfd, bfd_h_getx16, (ptr))
8294
     #define bfd_h_get_signed_16(abfd, ptr) \
8295
       BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
8296
 
8297
     #define bfd_h_put_32(abfd, val, ptr) \
8298
       BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
8299
     #define bfd_h_put_signed_32 \
8300
       bfd_h_put_32
8301
     #define bfd_h_get_32(abfd, ptr) \
8302
       BFD_SEND (abfd, bfd_h_getx32, (ptr))
8303
     #define bfd_h_get_signed_32(abfd, ptr) \
8304
       BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
8305
 
8306
     #define bfd_h_put_64(abfd, val, ptr) \
8307
       BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
8308
     #define bfd_h_put_signed_64 \
8309
       bfd_h_put_64
8310
     #define bfd_h_get_64(abfd, ptr) \
8311
       BFD_SEND (abfd, bfd_h_getx64, (ptr))
8312
     #define bfd_h_get_signed_64(abfd, ptr) \
8313
       BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
8314
 
8315
     /* Aliases for the above, which should eventually go away.  */
8316
 
8317
     #define H_PUT_64  bfd_h_put_64
8318
     #define H_PUT_32  bfd_h_put_32
8319
     #define H_PUT_16  bfd_h_put_16
8320
     #define H_PUT_8   bfd_h_put_8
8321
     #define H_PUT_S64 bfd_h_put_signed_64
8322
     #define H_PUT_S32 bfd_h_put_signed_32
8323
     #define H_PUT_S16 bfd_h_put_signed_16
8324
     #define H_PUT_S8  bfd_h_put_signed_8
8325
     #define H_GET_64  bfd_h_get_64
8326
     #define H_GET_32  bfd_h_get_32
8327
     #define H_GET_16  bfd_h_get_16
8328
     #define H_GET_8   bfd_h_get_8
8329
     #define H_GET_S64 bfd_h_get_signed_64
8330
     #define H_GET_S32 bfd_h_get_signed_32
8331
     #define H_GET_S16 bfd_h_get_signed_16
8332
     #define H_GET_S8  bfd_h_get_signed_8
8333
 
8334
2.15.1.5 `bfd_log2'
8335
...................
8336
 
8337
*Synopsis*
8338
     unsigned int bfd_log2 (bfd_vma x);
8339
   *Description*
8340
Return the log base 2 of the value supplied, rounded up.  E.g., an X of
8341
1025 returns 11.  A X of 0 returns 0.
8342
 
8343

8344
File: bfd.info,  Node: File Caching,  Next: Linker Functions,  Prev: Internal,  Up: BFD front end
8345
 
8346
2.16 File caching
8347
=================
8348
 
8349
The file caching mechanism is embedded within BFD and allows the
8350
application to open as many BFDs as it wants without regard to the
8351
underlying operating system's file descriptor limit (often as low as 20
8352
open files).  The module in `cache.c' maintains a least recently used
8353
list of `BFD_CACHE_MAX_OPEN' files, and exports the name
8354
`bfd_cache_lookup', which runs around and makes sure that the required
8355
BFD is open. If not, then it chooses a file to close, closes it and
8356
opens the one wanted, returning its file handle.
8357
 
8358
2.16.1 Caching functions
8359
------------------------
8360
 
8361
2.16.1.1 `bfd_cache_init'
8362
.........................
8363
 
8364
*Synopsis*
8365
     bfd_boolean bfd_cache_init (bfd *abfd);
8366
   *Description*
8367
Add a newly opened BFD to the cache.
8368
 
8369
2.16.1.2 `bfd_cache_close'
8370
..........................
8371
 
8372
*Synopsis*
8373
     bfd_boolean bfd_cache_close (bfd *abfd);
8374
   *Description*
8375
Remove the BFD ABFD from the cache. If the attached file is open, then
8376
close it too.
8377
 
8378
   *Returns*
8379
`FALSE' is returned if closing the file fails, `TRUE' is returned if
8380
all is well.
8381
 
8382
2.16.1.3 `bfd_cache_close_all'
8383
..............................
8384
 
8385
*Synopsis*
8386
     bfd_boolean bfd_cache_close_all (void);
8387
   *Description*
8388
Remove all BFDs from the cache. If the attached file is open, then
8389
close it too.
8390
 
8391
   *Returns*
8392
`FALSE' is returned if closing one of the file fails, `TRUE' is
8393
returned if all is well.
8394
 
8395
2.16.1.4 `bfd_open_file'
8396
........................
8397
 
8398
*Synopsis*
8399
     FILE* bfd_open_file (bfd *abfd);
8400
   *Description*
8401
Call the OS to open a file for ABFD.  Return the `FILE *' (possibly
8402
`NULL') that results from this operation.  Set up the BFD so that
8403
future accesses know the file is open. If the `FILE *' returned is
8404
`NULL', then it won't have been put in the cache, so it won't have to
8405
be removed from it.
8406
 
8407

8408
File: bfd.info,  Node: Linker Functions,  Next: Hash Tables,  Prev: File Caching,  Up: BFD front end
8409
 
8410
2.17 Linker Functions
8411
=====================
8412
 
8413
The linker uses three special entry points in the BFD target vector.
8414
It is not necessary to write special routines for these entry points
8415
when creating a new BFD back end, since generic versions are provided.
8416
However, writing them can speed up linking and make it use
8417
significantly less runtime memory.
8418
 
8419
   The first routine creates a hash table used by the other routines.
8420
The second routine adds the symbols from an object file to the hash
8421
table.  The third routine takes all the object files and links them
8422
together to create the output file.  These routines are designed so
8423
that the linker proper does not need to know anything about the symbols
8424
in the object files that it is linking.  The linker merely arranges the
8425
sections as directed by the linker script and lets BFD handle the
8426
details of symbols and relocs.
8427
 
8428
   The second routine and third routines are passed a pointer to a
8429
`struct bfd_link_info' structure (defined in `bfdlink.h') which holds
8430
information relevant to the link, including the linker hash table
8431
(which was created by the first routine) and a set of callback
8432
functions to the linker proper.
8433
 
8434
   The generic linker routines are in `linker.c', and use the header
8435
file `genlink.h'.  As of this writing, the only back ends which have
8436
implemented versions of these routines are a.out (in `aoutx.h') and
8437
ECOFF (in `ecoff.c').  The a.out routines are used as examples
8438
throughout this section.
8439
 
8440
* Menu:
8441
 
8442
* Creating a Linker Hash Table::
8443
* Adding Symbols to the Hash Table::
8444
* Performing the Final Link::
8445
 
8446

8447
File: bfd.info,  Node: Creating a Linker Hash Table,  Next: Adding Symbols to the Hash Table,  Prev: Linker Functions,  Up: Linker Functions
8448
 
8449
2.17.1 Creating a linker hash table
8450
-----------------------------------
8451
 
8452
The linker routines must create a hash table, which must be derived
8453
from `struct bfd_link_hash_table' described in `bfdlink.c'.  *Note Hash
8454
Tables::, for information on how to create a derived hash table.  This
8455
entry point is called using the target vector of the linker output file.
8456
 
8457
   The `_bfd_link_hash_table_create' entry point must allocate and
8458
initialize an instance of the desired hash table.  If the back end does
8459
not require any additional information to be stored with the entries in
8460
the hash table, the entry point may simply create a `struct
8461
bfd_link_hash_table'.  Most likely, however, some additional
8462
information will be needed.
8463
 
8464
   For example, with each entry in the hash table the a.out linker
8465
keeps the index the symbol has in the final output file (this index
8466
number is used so that when doing a relocatable link the symbol index
8467
used in the output file can be quickly filled in when copying over a
8468
reloc).  The a.out linker code defines the required structures and
8469
functions for a hash table derived from `struct bfd_link_hash_table'.
8470
The a.out linker hash table is created by the function
8471
`NAME(aout,link_hash_table_create)'; it simply allocates space for the
8472
hash table, initializes it, and returns a pointer to it.
8473
 
8474
   When writing the linker routines for a new back end, you will
8475
generally not know exactly which fields will be required until you have
8476
finished.  You should simply create a new hash table which defines no
8477
additional fields, and then simply add fields as they become necessary.
8478
 
8479

8480
File: bfd.info,  Node: Adding Symbols to the Hash Table,  Next: Performing the Final Link,  Prev: Creating a Linker Hash Table,  Up: Linker Functions
8481
 
8482
2.17.2 Adding symbols to the hash table
8483
---------------------------------------
8484
 
8485
The linker proper will call the `_bfd_link_add_symbols' entry point for
8486
each object file or archive which is to be linked (typically these are
8487
the files named on the command line, but some may also come from the
8488
linker script).  The entry point is responsible for examining the file.
8489
For an object file, BFD must add any relevant symbol information to the
8490
hash table.  For an archive, BFD must determine which elements of the
8491
archive should be used and adding them to the link.
8492
 
8493
   The a.out version of this entry point is
8494
`NAME(aout,link_add_symbols)'.
8495
 
8496
* Menu:
8497
 
8498
* Differing file formats::
8499
* Adding symbols from an object file::
8500
* Adding symbols from an archive::
8501
 
8502

8503
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
8504
 
8505
2.17.2.1 Differing file formats
8506
...............................
8507
 
8508
Normally all the files involved in a link will be of the same format,
8509
but it is also possible to link together different format object files,
8510
and the back end must support that.  The `_bfd_link_add_symbols' entry
8511
point is called via the target vector of the file to be added.  This
8512
has an important consequence: the function may not assume that the hash
8513
table is the type created by the corresponding
8514
`_bfd_link_hash_table_create' vector.  All the `_bfd_link_add_symbols'
8515
function can assume about the hash table is that it is derived from
8516
`struct bfd_link_hash_table'.
8517
 
8518
   Sometimes the `_bfd_link_add_symbols' function must store some
8519
information in the hash table entry to be used by the `_bfd_final_link'
8520
function.  In such a case the output bfd xvec must be checked to make
8521
sure that the hash table was created by an object file of the same
8522
format.
8523
 
8524
   The `_bfd_final_link' routine must be prepared to handle a hash
8525
entry without any extra information added by the
8526
`_bfd_link_add_symbols' function.  A hash entry without extra
8527
information will also occur when the linker script directs the linker
8528
to create a symbol.  Note that, regardless of how a hash table entry is
8529
added, all the fields will be initialized to some sort of null value by
8530
the hash table entry initialization function.
8531
 
8532
   See `ecoff_link_add_externals' for an example of how to check the
8533
output bfd before saving information (in this case, the ECOFF external
8534
symbol debugging information) in a hash table entry.
8535
 
8536

8537
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
8538
 
8539
2.17.2.2 Adding symbols from an object file
8540
...........................................
8541
 
8542
When the `_bfd_link_add_symbols' routine is passed an object file, it
8543
must add all externally visible symbols in that object file to the hash
8544
table.  The actual work of adding the symbol to the hash table is
8545
normally handled by the function `_bfd_generic_link_add_one_symbol'.
8546
The `_bfd_link_add_symbols' routine is responsible for reading all the
8547
symbols from the object file and passing the correct information to
8548
`_bfd_generic_link_add_one_symbol'.
8549
 
8550
   The `_bfd_link_add_symbols' routine should not use
8551
`bfd_canonicalize_symtab' to read the symbols.  The point of providing
8552
this routine is to avoid the overhead of converting the symbols into
8553
generic `asymbol' structures.
8554
 
8555
   `_bfd_generic_link_add_one_symbol' handles the details of combining
8556
common symbols, warning about multiple definitions, and so forth.  It
8557
takes arguments which describe the symbol to add, notably symbol flags,
8558
a section, and an offset.  The symbol flags include such things as
8559
`BSF_WEAK' or `BSF_INDIRECT'.  The section is a section in the object
8560
file, or something like `bfd_und_section_ptr' for an undefined symbol
8561
or `bfd_com_section_ptr' for a common symbol.
8562
 
8563
   If the `_bfd_final_link' routine is also going to need to read the
8564
symbol information, the `_bfd_link_add_symbols' routine should save it
8565
somewhere attached to the object file BFD.  However, the information
8566
should only be saved if the `keep_memory' field of the `info' argument
8567
is TRUE, so that the `-no-keep-memory' linker switch is effective.
8568
 
8569
   The a.out function which adds symbols from an object file is
8570
`aout_link_add_object_symbols', and most of the interesting work is in
8571
`aout_link_add_symbols'.  The latter saves pointers to the hash tables
8572
entries created by `_bfd_generic_link_add_one_symbol' indexed by symbol
8573
number, so that the `_bfd_final_link' routine does not have to call the
8574
hash table lookup routine to locate the entry.
8575
 
8576

8577
File: bfd.info,  Node: Adding symbols from an archive,  Prev: Adding symbols from an object file,  Up: Adding Symbols to the Hash Table
8578
 
8579
2.17.2.3 Adding symbols from an archive
8580
.......................................
8581
 
8582
When the `_bfd_link_add_symbols' routine is passed an archive, it must
8583
look through the symbols defined by the archive and decide which
8584
elements of the archive should be included in the link.  For each such
8585
element it must call the `add_archive_element' linker callback, and it
8586
must add the symbols from the object file to the linker hash table.
8587
(The callback may in fact indicate that a replacement BFD should be
8588
used, in which case the symbols from that BFD should be added to the
8589
linker hash table instead.)
8590
 
8591
   In most cases the work of looking through the symbols in the archive
8592
should be done by the `_bfd_generic_link_add_archive_symbols' function.
8593
This function builds a hash table from the archive symbol table and
8594
looks through the list of undefined symbols to see which elements
8595
should be included.  `_bfd_generic_link_add_archive_symbols' is passed
8596
a function to call to make the final decision about adding an archive
8597
element to the link and to do the actual work of adding the symbols to
8598
the linker hash table.
8599
 
8600
   The function passed to `_bfd_generic_link_add_archive_symbols' must
8601
read the symbols of the archive element and decide whether the archive
8602
element should be included in the link.  If the element is to be
8603
included, the `add_archive_element' linker callback routine must be
8604
called with the element as an argument, and the element's symbols must
8605
be added to the linker hash table just as though the element had itself
8606
been passed to the `_bfd_link_add_symbols' function.  The
8607
`add_archive_element' callback has the option to indicate that it would
8608
like to replace the element archive with a substitute BFD, in which
8609
case it is the symbols of that substitute BFD that must be added to the
8610
linker hash table instead.
8611
 
8612
   When the a.out `_bfd_link_add_symbols' function receives an archive,
8613
it calls `_bfd_generic_link_add_archive_symbols' passing
8614
`aout_link_check_archive_element' as the function argument.
8615
`aout_link_check_archive_element' calls `aout_link_check_ar_symbols'.
8616
If the latter decides to add the element (an element is only added if
8617
it provides a real, non-common, definition for a previously undefined
8618
or common symbol) it calls the `add_archive_element' callback and then
8619
`aout_link_check_archive_element' calls `aout_link_add_symbols' to
8620
actually add the symbols to the linker hash table - possibly those of a
8621
substitute BFD, if the `add_archive_element' callback avails itself of
8622
that option.
8623
 
8624
   The ECOFF back end is unusual in that it does not normally call
8625
`_bfd_generic_link_add_archive_symbols', because ECOFF archives already
8626
contain a hash table of symbols.  The ECOFF back end searches the
8627
archive itself to avoid the overhead of creating a new hash table.
8628
 
8629

8630
File: bfd.info,  Node: Performing the Final Link,  Prev: Adding Symbols to the Hash Table,  Up: Linker Functions
8631
 
8632
2.17.3 Performing the final link
8633
--------------------------------
8634
 
8635
When all the input files have been processed, the linker calls the
8636
`_bfd_final_link' entry point of the output BFD.  This routine is
8637
responsible for producing the final output file, which has several
8638
aspects.  It must relocate the contents of the input sections and copy
8639
the data into the output sections.  It must build an output symbol
8640
table including any local symbols from the input files and the global
8641
symbols from the hash table.  When producing relocatable output, it must
8642
modify the input relocs and write them into the output file.  There may
8643
also be object format dependent work to be done.
8644
 
8645
   The linker will also call the `write_object_contents' entry point
8646
when the BFD is closed.  The two entry points must work together in
8647
order to produce the correct output file.
8648
 
8649
   The details of how this works are inevitably dependent upon the
8650
specific object file format.  The a.out `_bfd_final_link' routine is
8651
`NAME(aout,final_link)'.
8652
 
8653
* Menu:
8654
 
8655
* Information provided by the linker::
8656
* Relocating the section contents::
8657
* Writing the symbol table::
8658
 
8659

8660
File: bfd.info,  Node: Information provided by the linker,  Next: Relocating the section contents,  Prev: Performing the Final Link,  Up: Performing the Final Link
8661
 
8662
2.17.3.1 Information provided by the linker
8663
...........................................
8664
 
8665
Before the linker calls the `_bfd_final_link' entry point, it sets up
8666
some data structures for the function to use.
8667
 
8668
   The `input_bfds' field of the `bfd_link_info' structure will point
8669
to a list of all the input files included in the link.  These files are
8670
linked through the `link_next' field of the `bfd' structure.
8671
 
8672
   Each section in the output file will have a list of `link_order'
8673
structures attached to the `map_head.link_order' field (the
8674
`link_order' structure is defined in `bfdlink.h').  These structures
8675
describe how to create the contents of the output section in terms of
8676
the contents of various input sections, fill constants, and,
8677
eventually, other types of information.  They also describe relocs that
8678
must be created by the BFD backend, but do not correspond to any input
8679
file; this is used to support -Ur, which builds constructors while
8680
generating a relocatable object file.
8681
 
8682

8683
File: bfd.info,  Node: Relocating the section contents,  Next: Writing the symbol table,  Prev: Information provided by the linker,  Up: Performing the Final Link
8684
 
8685
2.17.3.2 Relocating the section contents
8686
........................................
8687
 
8688
The `_bfd_final_link' function should look through the `link_order'
8689
structures attached to each section of the output file.  Each
8690
`link_order' structure should either be handled specially, or it should
8691
be passed to the function `_bfd_default_link_order' which will do the
8692
right thing (`_bfd_default_link_order' is defined in `linker.c').
8693
 
8694
   For efficiency, a `link_order' of type `bfd_indirect_link_order'
8695
whose associated section belongs to a BFD of the same format as the
8696
output BFD must be handled specially.  This type of `link_order'
8697
describes part of an output section in terms of a section belonging to
8698
one of the input files.  The `_bfd_final_link' function should read the
8699
contents of the section and any associated relocs, apply the relocs to
8700
the section contents, and write out the modified section contents.  If
8701
performing a relocatable link, the relocs themselves must also be
8702
modified and written out.
8703
 
8704
   The functions `_bfd_relocate_contents' and
8705
`_bfd_final_link_relocate' provide some general support for performing
8706
the actual relocations, notably overflow checking.  Their arguments
8707
include information about the symbol the relocation is against and a
8708
`reloc_howto_type' argument which describes the relocation to perform.
8709
These functions are defined in `reloc.c'.
8710
 
8711
   The a.out function which handles reading, relocating, and writing
8712
section contents is `aout_link_input_section'.  The actual relocation
8713
is done in `aout_link_input_section_std' and
8714
`aout_link_input_section_ext'.
8715
 
8716

8717
File: bfd.info,  Node: Writing the symbol table,  Prev: Relocating the section contents,  Up: Performing the Final Link
8718
 
8719
2.17.3.3 Writing the symbol table
8720
.................................
8721
 
8722
The `_bfd_final_link' function must gather all the symbols in the input
8723
files and write them out.  It must also write out all the symbols in
8724
the global hash table.  This must be controlled by the `strip' and
8725
`discard' fields of the `bfd_link_info' structure.
8726
 
8727
   The local symbols of the input files will not have been entered into
8728
the linker hash table.  The `_bfd_final_link' routine must consider
8729
each input file and include the symbols in the output file.  It may be
8730
convenient to do this when looking through the `link_order' structures,
8731
or it may be done by stepping through the `input_bfds' list.
8732
 
8733
   The `_bfd_final_link' routine must also traverse the global hash
8734
table to gather all the externally visible symbols.  It is possible
8735
that most of the externally visible symbols may be written out when
8736
considering the symbols of each input file, but it is still necessary
8737
to traverse the hash table since the linker script may have defined
8738
some symbols that are not in any of the input files.
8739
 
8740
   The `strip' field of the `bfd_link_info' structure controls which
8741
symbols are written out.  The possible values are listed in
8742
`bfdlink.h'.  If the value is `strip_some', then the `keep_hash' field
8743
of the `bfd_link_info' structure is a hash table of symbols to keep;
8744
each symbol should be looked up in this hash table, and only symbols
8745
which are present should be included in the output file.
8746
 
8747
   If the `strip' field of the `bfd_link_info' structure permits local
8748
symbols to be written out, the `discard' field is used to further
8749
controls which local symbols are included in the output file.  If the
8750
value is `discard_l', then all local symbols which begin with a certain
8751
prefix are discarded; this is controlled by the
8752
`bfd_is_local_label_name' entry point.
8753
 
8754
   The a.out backend handles symbols by calling
8755
`aout_link_write_symbols' on each input BFD and then traversing the
8756
global hash table with the function `aout_link_write_other_symbol'.  It
8757
builds a string table while writing out the symbols, which is written
8758
to the output file at the end of `NAME(aout,final_link)'.
8759
 
8760
2.17.3.4 `bfd_link_split_section'
8761
.................................
8762
 
8763
*Synopsis*
8764
     bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
8765
   *Description*
8766
Return nonzero if SEC should be split during a reloceatable or final
8767
link.
8768
     #define bfd_link_split_section(abfd, sec) \
8769
            BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
8770
 
8771
2.17.3.5 `bfd_section_already_linked'
8772
.....................................
8773
 
8774
*Synopsis*
8775
     bfd_boolean bfd_section_already_linked (bfd *abfd,
8776
         asection *sec,
8777
         struct bfd_link_info *info);
8778
   *Description*
8779
Check if DATA has been already linked during a reloceatable or final
8780
link.  Return TRUE if it has.
8781
     #define bfd_section_already_linked(abfd, sec, info) \
8782
            BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
8783
 
8784
2.17.3.6 `bfd_generic_define_common_symbol'
8785
...........................................
8786
 
8787
*Synopsis*
8788
     bfd_boolean bfd_generic_define_common_symbol
8789
        (bfd *output_bfd, struct bfd_link_info *info,
8790
         struct bfd_link_hash_entry *h);
8791
   *Description*
8792
Convert common symbol H into a defined symbol.  Return TRUE on success
8793
and FALSE on failure.
8794
     #define bfd_define_common_symbol(output_bfd, info, h) \
8795
            BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
8796
 
8797
2.17.3.7 `bfd_find_version_for_sym '
8798
....................................
8799
 
8800
*Synopsis*
8801
     struct bfd_elf_version_tree * bfd_find_version_for_sym
8802
        (struct bfd_elf_version_tree *verdefs,
8803
         const char *sym_name, bfd_boolean *hide);
8804
   *Description*
8805
Search an elf version script tree for symbol versioning info and export
8806
/ don't-export status for a given symbol.  Return non-NULL on success
8807
and NULL on failure; also sets the output `hide' boolean parameter.
8808
 
8809
2.17.3.8 `bfd_hide_sym_by_version'
8810
..................................
8811
 
8812
*Synopsis*
8813
     bfd_boolean bfd_hide_sym_by_version
8814
        (struct bfd_elf_version_tree *verdefs, const char *sym_name);
8815
   *Description*
8816
Search an elf version script tree for symbol versioning info for a
8817
given symbol.  Return TRUE if the symbol is hidden.
8818
 
8819

8820
File: bfd.info,  Node: Hash Tables,  Prev: Linker Functions,  Up: BFD front end
8821
 
8822
2.18 Hash Tables
8823
================
8824
 
8825
BFD provides a simple set of hash table functions.  Routines are
8826
provided to initialize a hash table, to free a hash table, to look up a
8827
string in a hash table and optionally create an entry for it, and to
8828
traverse a hash table.  There is currently no routine to delete an
8829
string from a hash table.
8830
 
8831
   The basic hash table does not permit any data to be stored with a
8832
string.  However, a hash table is designed to present a base class from
8833
which other types of hash tables may be derived.  These derived types
8834
may store additional information with the string.  Hash tables were
8835
implemented in this way, rather than simply providing a data pointer in
8836
a hash table entry, because they were designed for use by the linker
8837
back ends.  The linker may create thousands of hash table entries, and
8838
the overhead of allocating private data and storing and following
8839
pointers becomes noticeable.
8840
 
8841
   The basic hash table code is in `hash.c'.
8842
 
8843
* Menu:
8844
 
8845
* Creating and Freeing a Hash Table::
8846
* Looking Up or Entering a String::
8847
* Traversing a Hash Table::
8848
* Deriving a New Hash Table Type::
8849
 
8850

8851
File: bfd.info,  Node: Creating and Freeing a Hash Table,  Next: Looking Up or Entering a String,  Prev: Hash Tables,  Up: Hash Tables
8852
 
8853
2.18.1 Creating and freeing a hash table
8854
----------------------------------------
8855
 
8856
To create a hash table, create an instance of a `struct bfd_hash_table'
8857
(defined in `bfd.h') and call `bfd_hash_table_init' (if you know
8858
approximately how many entries you will need, the function
8859
`bfd_hash_table_init_n', which takes a SIZE argument, may be used).
8860
`bfd_hash_table_init' returns `FALSE' if some sort of error occurs.
8861
 
8862
   The function `bfd_hash_table_init' take as an argument a function to
8863
use to create new entries.  For a basic hash table, use the function
8864
`bfd_hash_newfunc'.  *Note Deriving a New Hash Table Type::, for why
8865
you would want to use a different value for this argument.
8866
 
8867
   `bfd_hash_table_init' will create an objalloc which will be used to
8868
allocate new entries.  You may allocate memory on this objalloc using
8869
`bfd_hash_allocate'.
8870
 
8871
   Use `bfd_hash_table_free' to free up all the memory that has been
8872
allocated for a hash table.  This will not free up the `struct
8873
bfd_hash_table' itself, which you must provide.
8874
 
8875
   Use `bfd_hash_set_default_size' to set the default size of hash
8876
table to use.
8877
 
8878

8879
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
8880
 
8881
2.18.2 Looking up or entering a string
8882
--------------------------------------
8883
 
8884
The function `bfd_hash_lookup' is used both to look up a string in the
8885
hash table and to create a new entry.
8886
 
8887
   If the CREATE argument is `FALSE', `bfd_hash_lookup' will look up a
8888
string.  If the string is found, it will returns a pointer to a `struct
8889
bfd_hash_entry'.  If the string is not found in the table
8890
`bfd_hash_lookup' will return `NULL'.  You should not modify any of the
8891
fields in the returns `struct bfd_hash_entry'.
8892
 
8893
   If the CREATE argument is `TRUE', the string will be entered into
8894
the hash table if it is not already there.  Either way a pointer to a
8895
`struct bfd_hash_entry' will be returned, either to the existing
8896
structure or to a newly created one.  In this case, a `NULL' return
8897
means that an error occurred.
8898
 
8899
   If the CREATE argument is `TRUE', and a new entry is created, the
8900
COPY argument is used to decide whether to copy the string onto the
8901
hash table objalloc or not.  If COPY is passed as `FALSE', you must be
8902
careful not to deallocate or modify the string as long as the hash table
8903
exists.
8904
 
8905

8906
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
8907
 
8908
2.18.3 Traversing a hash table
8909
------------------------------
8910
 
8911
The function `bfd_hash_traverse' may be used to traverse a hash table,
8912
calling a function on each element.  The traversal is done in a random
8913
order.
8914
 
8915
   `bfd_hash_traverse' takes as arguments a function and a generic
8916
`void *' pointer.  The function is called with a hash table entry (a
8917
`struct bfd_hash_entry *') and the generic pointer passed to
8918
`bfd_hash_traverse'.  The function must return a `boolean' value, which
8919
indicates whether to continue traversing the hash table.  If the
8920
function returns `FALSE', `bfd_hash_traverse' will stop the traversal
8921
and return immediately.
8922
 
8923

8924
File: bfd.info,  Node: Deriving a New Hash Table Type,  Prev: Traversing a Hash Table,  Up: Hash Tables
8925
 
8926
2.18.4 Deriving a new hash table type
8927
-------------------------------------
8928
 
8929
Many uses of hash tables want to store additional information which
8930
each entry in the hash table.  Some also find it convenient to store
8931
additional information with the hash table itself.  This may be done
8932
using a derived hash table.
8933
 
8934
   Since C is not an object oriented language, creating a derived hash
8935
table requires sticking together some boilerplate routines with a few
8936
differences specific to the type of hash table you want to create.
8937
 
8938
   An example of a derived hash table is the linker hash table.  The
8939
structures for this are defined in `bfdlink.h'.  The functions are in
8940
`linker.c'.
8941
 
8942
   You may also derive a hash table from an already derived hash table.
8943
For example, the a.out linker backend code uses a hash table derived
8944
from the linker hash table.
8945
 
8946
* Menu:
8947
 
8948
* Define the Derived Structures::
8949
* Write the Derived Creation Routine::
8950
* Write Other Derived Routines::
8951
 
8952

8953
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
8954
 
8955
2.18.4.1 Define the derived structures
8956
......................................
8957
 
8958
You must define a structure for an entry in the hash table, and a
8959
structure for the hash table itself.
8960
 
8961
   The first field in the structure for an entry in the hash table must
8962
be of the type used for an entry in the hash table you are deriving
8963
from.  If you are deriving from a basic hash table this is `struct
8964
bfd_hash_entry', which is defined in `bfd.h'.  The first field in the
8965
structure for the hash table itself must be of the type of the hash
8966
table you are deriving from itself.  If you are deriving from a basic
8967
hash table, this is `struct bfd_hash_table'.
8968
 
8969
   For example, the linker hash table defines `struct
8970
bfd_link_hash_entry' (in `bfdlink.h').  The first field, `root', is of
8971
type `struct bfd_hash_entry'.  Similarly, the first field in `struct
8972
bfd_link_hash_table', `table', is of type `struct bfd_hash_table'.
8973
 
8974

8975
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
8976
 
8977
2.18.4.2 Write the derived creation routine
8978
...........................................
8979
 
8980
You must write a routine which will create and initialize an entry in
8981
the hash table.  This routine is passed as the function argument to
8982
`bfd_hash_table_init'.
8983
 
8984
   In order to permit other hash tables to be derived from the hash
8985
table you are creating, this routine must be written in a standard way.
8986
 
8987
   The first argument to the creation routine is a pointer to a hash
8988
table entry.  This may be `NULL', in which case the routine should
8989
allocate the right amount of space.  Otherwise the space has already
8990
been allocated by a hash table type derived from this one.
8991
 
8992
   After allocating space, the creation routine must call the creation
8993
routine of the hash table type it is derived from, passing in a pointer
8994
to the space it just allocated.  This will initialize any fields used
8995
by the base hash table.
8996
 
8997
   Finally the creation routine must initialize any local fields for
8998
the new hash table type.
8999
 
9000
   Here is a boilerplate example of a creation routine.  FUNCTION_NAME
9001
is the name of the routine.  ENTRY_TYPE is the type of an entry in the
9002
hash table you are creating.  BASE_NEWFUNC is the name of the creation
9003
routine of the hash table type your hash table is derived from.
9004
 
9005
     struct bfd_hash_entry *
9006
     FUNCTION_NAME (struct bfd_hash_entry *entry,
9007
                          struct bfd_hash_table *table,
9008
                          const char *string)
9009
     {
9010
       struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry;
9011
 
9012
      /* Allocate the structure if it has not already been allocated by a
9013
         derived class.  */
9014
       if (ret == NULL)
9015
         {
9016
           ret = bfd_hash_allocate (table, sizeof (* ret));
9017
           if (ret == NULL)
9018
             return NULL;
9019
         }
9020
 
9021
      /* Call the allocation method of the base class.  */
9022
       ret = ((ENTRY_TYPE *)
9023
             BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string));
9024
 
9025
      /* Initialize the local fields here.  */
9026
 
9027
       return (struct bfd_hash_entry *) ret;
9028
     }
9029
   *Description*
9030
The creation routine for the linker hash table, which is in `linker.c',
9031
looks just like this example.  FUNCTION_NAME is
9032
`_bfd_link_hash_newfunc'.  ENTRY_TYPE is `struct bfd_link_hash_entry'.
9033
BASE_NEWFUNC is `bfd_hash_newfunc', the creation routine for a basic
9034
hash table.
9035
 
9036
   `_bfd_link_hash_newfunc' also initializes the local fields in a
9037
linker hash table entry: `type', `written' and `next'.
9038
 
9039

9040
File: bfd.info,  Node: Write Other Derived Routines,  Prev: Write the Derived Creation Routine,  Up: Deriving a New Hash Table Type
9041
 
9042
2.18.4.3 Write other derived routines
9043
.....................................
9044
 
9045
You will want to write other routines for your new hash table, as well.
9046
 
9047
   You will want an initialization routine which calls the
9048
initialization routine of the hash table you are deriving from and
9049
initializes any other local fields.  For the linker hash table, this is
9050
`_bfd_link_hash_table_init' in `linker.c'.
9051
 
9052
   You will want a lookup routine which calls the lookup routine of the
9053
hash table you are deriving from and casts the result.  The linker hash
9054
table uses `bfd_link_hash_lookup' in `linker.c' (this actually takes an
9055
additional argument which it uses to decide how to return the looked up
9056
value).
9057
 
9058
   You may want a traversal routine.  This should just call the
9059
traversal routine of the hash table you are deriving from with
9060
appropriate casts.  The linker hash table uses `bfd_link_hash_traverse'
9061
in `linker.c'.
9062
 
9063
   These routines may simply be defined as macros.  For example, the
9064
a.out backend linker hash table, which is derived from the linker hash
9065
table, uses macros for the lookup and traversal routines.  These are
9066
`aout_link_hash_lookup' and `aout_link_hash_traverse' in aoutx.h.
9067
 
9068

9069
File: bfd.info,  Node: BFD back ends,  Next: GNU Free Documentation License,  Prev: BFD front end,  Up: Top
9070
 
9071
3 BFD back ends
9072
***************
9073
 
9074
* Menu:
9075
 
9076
* What to Put Where::
9077
* aout ::       a.out backends
9078
* coff ::       coff backends
9079
* elf  ::       elf backends
9080
* mmo  ::       mmo backend
9081
 
9082

9083
File: bfd.info,  Node: What to Put Where,  Next: aout,  Prev: BFD back ends,  Up: BFD back ends
9084
 
9085
3.1 What to Put Where
9086
=====================
9087
 
9088
All of BFD lives in one directory.
9089
 
9090

9091
File: bfd.info,  Node: aout,  Next: coff,  Prev: What to Put Where,  Up: BFD back ends
9092
 
9093
3.2 a.out backends
9094
==================
9095
 
9096
*Description*
9097
BFD supports a number of different flavours of a.out format, though the
9098
major differences are only the sizes of the structures on disk, and the
9099
shape of the relocation information.
9100
 
9101
   The support is split into a basic support file `aoutx.h' and other
9102
files which derive functions from the base. One derivation file is
9103
`aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions
9104
support for sun3, sun4, 386 and 29k a.out files, to create a target
9105
jump vector for a specific target.
9106
 
9107
   This information is further split out into more specific files for
9108
each machine, including `sunos.c' for sun3 and sun4, `newsos3.c' for
9109
the Sony NEWS, and `demo64.c' for a demonstration of a 64 bit a.out
9110
format.
9111
 
9112
   The base file `aoutx.h' defines general mechanisms for reading and
9113
writing records to and from disk and various other methods which BFD
9114
requires. It is included by `aout32.c' and `aout64.c' to form the names
9115
`aout_32_swap_exec_header_in', `aout_64_swap_exec_header_in', etc.
9116
 
9117
   As an example, this is what goes on to make the back end for a sun4,
9118
from `aout32.c':
9119
 
9120
            #define ARCH_SIZE 32
9121
            #include "aoutx.h"
9122
 
9123
   Which exports names:
9124
 
9125
            ...
9126
            aout_32_canonicalize_reloc
9127
            aout_32_find_nearest_line
9128
            aout_32_get_lineno
9129
            aout_32_get_reloc_upper_bound
9130
            ...
9131
 
9132
   from `sunos.c':
9133
 
9134
            #define TARGET_NAME "a.out-sunos-big"
9135
            #define VECNAME    sunos_big_vec
9136
            #include "aoutf1.h"
9137
 
9138
   requires all the names from `aout32.c', and produces the jump vector
9139
 
9140
            sunos_big_vec
9141
 
9142
   The file `host-aout.c' is a special case.  It is for a large set of
9143
hosts that use "more or less standard" a.out files, and for which
9144
cross-debugging is not interesting.  It uses the standard 32-bit a.out
9145
support routines, but determines the file offsets and addresses of the
9146
text, data, and BSS sections, the machine architecture and machine
9147
type, and the entry point address, in a host-dependent manner.  Once
9148
these values have been determined, generic code is used to handle the
9149
object file.
9150
 
9151
   When porting it to run on a new system, you must supply:
9152
 
9153
             HOST_PAGE_SIZE
9154
             HOST_SEGMENT_SIZE
9155
             HOST_MACHINE_ARCH       (optional)
9156
             HOST_MACHINE_MACHINE    (optional)
9157
             HOST_TEXT_START_ADDR
9158
             HOST_STACK_END_ADDR
9159
 
9160
   in the file `../include/sys/h-XXX.h' (for your host).  These values,
9161
plus the structures and macros defined in `a.out.h' on your host
9162
system, will produce a BFD target that will access ordinary a.out files
9163
on your host. To configure a new machine to use `host-aout.c', specify:
9164
 
9165
            TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
9166
            TDEPFILES= host-aout.o trad-core.o
9167
 
9168
   in the `config/XXX.mt' file, and modify `configure.in' to use the
9169
`XXX.mt' file (by setting "`bfd_target=XXX'") when your configuration
9170
is selected.
9171
 
9172
3.2.1 Relocations
9173
-----------------
9174
 
9175
*Description*
9176
The file `aoutx.h' provides for both the _standard_ and _extended_
9177
forms of a.out relocation records.
9178
 
9179
   The standard records contain only an address, a symbol index, and a
9180
type field. The extended records (used on 29ks and sparcs) also have a
9181
full integer for an addend.
9182
 
9183
3.2.2 Internal entry points
9184
---------------------------
9185
 
9186
*Description*
9187
`aoutx.h' exports several routines for accessing the contents of an
9188
a.out file, which are gathered and exported in turn by various format
9189
specific files (eg sunos.c).
9190
 
9191
3.2.2.1 `aout_SIZE_swap_exec_header_in'
9192
.......................................
9193
 
9194
*Synopsis*
9195
     void aout_SIZE_swap_exec_header_in,
9196
        (bfd *abfd,
9197
         struct external_exec *bytes,
9198
         struct internal_exec *execp);
9199
   *Description*
9200
Swap the information in an executable header RAW_BYTES taken from a raw
9201
byte stream memory image into the internal exec header structure EXECP.
9202
 
9203
3.2.2.2 `aout_SIZE_swap_exec_header_out'
9204
........................................
9205
 
9206
*Synopsis*
9207
     void aout_SIZE_swap_exec_header_out
9208
        (bfd *abfd,
9209
         struct internal_exec *execp,
9210
         struct external_exec *raw_bytes);
9211
   *Description*
9212
Swap the information in an internal exec header structure EXECP into
9213
the buffer RAW_BYTES ready for writing to disk.
9214
 
9215
3.2.2.3 `aout_SIZE_some_aout_object_p'
9216
......................................
9217
 
9218
*Synopsis*
9219
     const bfd_target *aout_SIZE_some_aout_object_p
9220
        (bfd *abfd,
9221
         struct internal_exec *execp,
9222
         const bfd_target *(*callback_to_real_object_p) (bfd *));
9223
   *Description*
9224
Some a.out variant thinks that the file open in ABFD checking is an
9225
a.out file.  Do some more checking, and set up for access if it really
9226
is.  Call back to the calling environment's "finish up" function just
9227
before returning, to handle any last-minute setup.
9228
 
9229
3.2.2.4 `aout_SIZE_mkobject'
9230
............................
9231
 
9232
*Synopsis*
9233
     bfd_boolean aout_SIZE_mkobject, (bfd *abfd);
9234
   *Description*
9235
Initialize BFD ABFD for use with a.out files.
9236
 
9237
3.2.2.5 `aout_SIZE_machine_type'
9238
................................
9239
 
9240
*Synopsis*
9241
     enum machine_type  aout_SIZE_machine_type
9242
        (enum bfd_architecture arch,
9243
         unsigned long machine,
9244
         bfd_boolean *unknown);
9245
   *Description*
9246
Keep track of machine architecture and machine type for a.out's. Return
9247
the `machine_type' for a particular architecture and machine, or
9248
`M_UNKNOWN' if that exact architecture and machine can't be represented
9249
in a.out format.
9250
 
9251
   If the architecture is understood, machine type 0 (default) is
9252
always understood.
9253
 
9254
3.2.2.6 `aout_SIZE_set_arch_mach'
9255
.................................
9256
 
9257
*Synopsis*
9258
     bfd_boolean aout_SIZE_set_arch_mach,
9259
        (bfd *,
9260
         enum bfd_architecture arch,
9261
         unsigned long machine);
9262
   *Description*
9263
Set the architecture and the machine of the BFD ABFD to the values ARCH
9264
and MACHINE.  Verify that ABFD's format can support the architecture
9265
required.
9266
 
9267
3.2.2.7 `aout_SIZE_new_section_hook'
9268
....................................
9269
 
9270
*Synopsis*
9271
     bfd_boolean aout_SIZE_new_section_hook,
9272
        (bfd *abfd,
9273
         asection *newsect);
9274
   *Description*
9275
Called by the BFD in response to a `bfd_make_section' request.
9276
 
9277

9278
File: bfd.info,  Node: coff,  Next: elf,  Prev: aout,  Up: BFD back ends
9279
 
9280
3.3 coff backends
9281
=================
9282
 
9283
BFD supports a number of different flavours of coff format.  The major
9284
differences between formats are the sizes and alignments of fields in
9285
structures on disk, and the occasional extra field.
9286
 
9287
   Coff in all its varieties is implemented with a few common files and
9288
a number of implementation specific files. For example, The 88k bcs
9289
coff format is implemented in the file `coff-m88k.c'. This file
9290
`#include's `coff/m88k.h' which defines the external structure of the
9291
coff format for the 88k, and `coff/internal.h' which defines the
9292
internal structure. `coff-m88k.c' also defines the relocations used by
9293
the 88k format *Note Relocations::.
9294
 
9295
   The Intel i960 processor version of coff is implemented in
9296
`coff-i960.c'. This file has the same structure as `coff-m88k.c',
9297
except that it includes `coff/i960.h' rather than `coff-m88k.h'.
9298
 
9299
3.3.1 Porting to a new version of coff
9300
--------------------------------------
9301
 
9302
The recommended method is to select from the existing implementations
9303
the version of coff which is most like the one you want to use.  For
9304
example, we'll say that i386 coff is the one you select, and that your
9305
coff flavour is called foo.  Copy `i386coff.c' to `foocoff.c', copy
9306
`../include/coff/i386.h' to `../include/coff/foo.h', and add the lines
9307
to `targets.c' and `Makefile.in' so that your new back end is used.
9308
Alter the shapes of the structures in `../include/coff/foo.h' so that
9309
they match what you need. You will probably also have to add `#ifdef's
9310
to the code in `coff/internal.h' and `coffcode.h' if your version of
9311
coff is too wild.
9312
 
9313
   You can verify that your new BFD backend works quite simply by
9314
building `objdump' from the `binutils' directory, and making sure that
9315
its version of what's going on and your host system's idea (assuming it
9316
has the pretty standard coff dump utility, usually called `att-dump' or
9317
just `dump') are the same.  Then clean up your code, and send what
9318
you've done to Cygnus. Then your stuff will be in the next release, and
9319
you won't have to keep integrating it.
9320
 
9321
3.3.2 How the coff backend works
9322
--------------------------------
9323
 
9324
3.3.2.1 File layout
9325
...................
9326
 
9327
The Coff backend is split into generic routines that are applicable to
9328
any Coff target and routines that are specific to a particular target.
9329
The target-specific routines are further split into ones which are
9330
basically the same for all Coff targets except that they use the
9331
external symbol format or use different values for certain constants.
9332
 
9333
   The generic routines are in `coffgen.c'.  These routines work for
9334
any Coff target.  They use some hooks into the target specific code;
9335
the hooks are in a `bfd_coff_backend_data' structure, one of which
9336
exists for each target.
9337
 
9338
   The essentially similar target-specific routines are in
9339
`coffcode.h'.  This header file includes executable C code.  The
9340
various Coff targets first include the appropriate Coff header file,
9341
make any special defines that are needed, and then include `coffcode.h'.
9342
 
9343
   Some of the Coff targets then also have additional routines in the
9344
target source file itself.
9345
 
9346
   For example, `coff-i960.c' includes `coff/internal.h' and
9347
`coff/i960.h'.  It then defines a few constants, such as `I960', and
9348
includes `coffcode.h'.  Since the i960 has complex relocation types,
9349
`coff-i960.c' also includes some code to manipulate the i960 relocs.
9350
This code is not in `coffcode.h' because it would not be used by any
9351
other target.
9352
 
9353
3.3.2.2 Coff long section names
9354
...............................
9355
 
9356
In the standard Coff object format, section names are limited to the
9357
eight bytes available in the `s_name' field of the `SCNHDR' section
9358
header structure.  The format requires the field to be NUL-padded, but
9359
not necessarily NUL-terminated, so the longest section names permitted
9360
are a full eight characters.
9361
 
9362
   The Microsoft PE variants of the Coff object file format add an
9363
extension to support the use of long section names.  This extension is
9364
defined in section 4 of the Microsoft PE/COFF specification (rev 8.1).
9365
If a section name is too long to fit into the section header's `s_name'
9366
field, it is instead placed into the string table, and the `s_name'
9367
field is filled with a slash ("/") followed by the ASCII decimal
9368
representation of the offset of the full name relative to the string
9369
table base.
9370
 
9371
   Note that this implies that the extension can only be used in object
9372
files, as executables do not contain a string table.  The standard
9373
specifies that long section names from objects emitted into executable
9374
images are to be truncated.
9375
 
9376
   However, as a GNU extension, BFD can generate executable images that
9377
contain a string table and long section names.  This would appear to be
9378
technically valid, as the standard only says that Coff debugging
9379
information is deprecated, not forbidden, and in practice it works,
9380
although some tools that parse PE files expecting the MS standard
9381
format may become confused; `PEview' is one known example.
9382
 
9383
   The functionality is supported in BFD by code implemented under the
9384
control of the macro `COFF_LONG_SECTION_NAMES'.  If not defined, the
9385
format does not support long section names in any way.  If defined, it
9386
is used to initialise a flag, `_bfd_coff_long_section_names', and a
9387
hook function pointer, `_bfd_coff_set_long_section_names', in the Coff
9388
backend data structure.  The flag controls the generation of long
9389
section names in output BFDs at runtime; if it is false, as it will be
9390
by default when generating an executable image, long section names are
9391
truncated; if true, the long section names extension is employed.  The
9392
hook points to a function that allows the value of the flag to be
9393
altered at runtime, on formats that support long section names at all;
9394
on other formats it points to a stub that returns an error indication.
9395
With input BFDs, the flag is set according to whether any long section
9396
names are detected while reading the section headers.  For a completely
9397
new BFD, the flag is set to the default for the target format.  This
9398
information can be used by a client of the BFD library when deciding
9399
what output format to generate, and means that a BFD that is opened for
9400
read and subsequently converted to a writeable BFD and modified
9401
in-place will retain whatever format it had on input.
9402
 
9403
   If `COFF_LONG_SECTION_NAMES' is simply defined (blank), or is
9404
defined to the value "1", then long section names are enabled by
9405
default; if it is defined to the value zero, they are disabled by
9406
default (but still accepted in input BFDs).  The header `coffcode.h'
9407
defines a macro, `COFF_DEFAULT_LONG_SECTION_NAMES', which is used in
9408
the backends to initialise the backend data structure fields
9409
appropriately; see the comments for further detail.
9410
 
9411
3.3.2.3 Bit twiddling
9412
.....................
9413
 
9414
Each flavour of coff supported in BFD has its own header file
9415
describing the external layout of the structures. There is also an
9416
internal description of the coff layout, in `coff/internal.h'. A major
9417
function of the coff backend is swapping the bytes and twiddling the
9418
bits to translate the external form of the structures into the normal
9419
internal form. This is all performed in the `bfd_swap'_thing_direction
9420
routines. Some elements are different sizes between different versions
9421
of coff; it is the duty of the coff version specific include file to
9422
override the definitions of various packing routines in `coffcode.h'.
9423
E.g., the size of line number entry in coff is sometimes 16 bits, and
9424
sometimes 32 bits. `#define'ing `PUT_LNSZ_LNNO' and `GET_LNSZ_LNNO'
9425
will select the correct one. No doubt, some day someone will find a
9426
version of coff which has a varying field size not catered to at the
9427
moment. To port BFD, that person will have to add more `#defines'.
9428
Three of the bit twiddling routines are exported to `gdb';
9429
`coff_swap_aux_in', `coff_swap_sym_in' and `coff_swap_lineno_in'. `GDB'
9430
reads the symbol table on its own, but uses BFD to fix things up.  More
9431
of the bit twiddlers are exported for `gas'; `coff_swap_aux_out',
9432
`coff_swap_sym_out', `coff_swap_lineno_out', `coff_swap_reloc_out',
9433
`coff_swap_filehdr_out', `coff_swap_aouthdr_out',
9434
`coff_swap_scnhdr_out'. `Gas' currently keeps track of all the symbol
9435
table and reloc drudgery itself, thereby saving the internal BFD
9436
overhead, but uses BFD to swap things on the way out, making cross
9437
ports much safer.  Doing so also allows BFD (and thus the linker) to
9438
use the same header files as `gas', which makes one avenue to disaster
9439
disappear.
9440
 
9441
3.3.2.4 Symbol reading
9442
......................
9443
 
9444
The simple canonical form for symbols used by BFD is not rich enough to
9445
keep all the information available in a coff symbol table. The back end
9446
gets around this problem by keeping the original symbol table around,
9447
"behind the scenes".
9448
 
9449
   When a symbol table is requested (through a call to
9450
`bfd_canonicalize_symtab'), a request gets through to
9451
`coff_get_normalized_symtab'. This reads the symbol table from the coff
9452
file and swaps all the structures inside into the internal form. It
9453
also fixes up all the pointers in the table (represented in the file by
9454
offsets from the first symbol in the table) into physical pointers to
9455
elements in the new internal table. This involves some work since the
9456
meanings of fields change depending upon context: a field that is a
9457
pointer to another structure in the symbol table at one moment may be
9458
the size in bytes of a structure at the next.  Another pass is made
9459
over the table. All symbols which mark file names (`C_FILE' symbols)
9460
are modified so that the internal string points to the value in the
9461
auxent (the real filename) rather than the normal text associated with
9462
the symbol (`".file"').
9463
 
9464
   At this time the symbol names are moved around. Coff stores all
9465
symbols less than nine characters long physically within the symbol
9466
table; longer strings are kept at the end of the file in the string
9467
table. This pass moves all strings into memory and replaces them with
9468
pointers to the strings.
9469
 
9470
   The symbol table is massaged once again, this time to create the
9471
canonical table used by the BFD application. Each symbol is inspected
9472
in turn, and a decision made (using the `sclass' field) about the
9473
various flags to set in the `asymbol'.  *Note Symbols::. The generated
9474
canonical table shares strings with the hidden internal symbol table.
9475
 
9476
   Any linenumbers are read from the coff file too, and attached to the
9477
symbols which own the functions the linenumbers belong to.
9478
 
9479
3.3.2.5 Symbol writing
9480
......................
9481
 
9482
Writing a symbol to a coff file which didn't come from a coff file will
9483
lose any debugging information. The `asymbol' structure remembers the
9484
BFD from which the symbol was taken, and on output the back end makes
9485
sure that the same destination target as source target is present.
9486
 
9487
   When the symbols have come from a coff file then all the debugging
9488
information is preserved.
9489
 
9490
   Symbol tables are provided for writing to the back end in a vector
9491
of pointers to pointers. This allows applications like the linker to
9492
accumulate and output large symbol tables without having to do too much
9493
byte copying.
9494
 
9495
   This function runs through the provided symbol table and patches
9496
each symbol marked as a file place holder (`C_FILE') to point to the
9497
next file place holder in the list. It also marks each `offset' field
9498
in the list with the offset from the first symbol of the current symbol.
9499
 
9500
   Another function of this procedure is to turn the canonical value
9501
form of BFD into the form used by coff. Internally, BFD expects symbol
9502
values to be offsets from a section base; so a symbol physically at
9503
0x120, but in a section starting at 0x100, would have the value 0x20.
9504
Coff expects symbols to contain their final value, so symbols have
9505
their values changed at this point to reflect their sum with their
9506
owning section.  This transformation uses the `output_section' field of
9507
the `asymbol''s `asection' *Note Sections::.
9508
 
9509
   * `coff_mangle_symbols'
9510
   This routine runs though the provided symbol table and uses the
9511
offsets generated by the previous pass and the pointers generated when
9512
the symbol table was read in to create the structured hierarchy
9513
required by coff. It changes each pointer to a symbol into the index
9514
into the symbol table of the asymbol.
9515
 
9516
   * `coff_write_symbols'
9517
   This routine runs through the symbol table and patches up the
9518
symbols from their internal form into the coff way, calls the bit
9519
twiddlers, and writes out the table to the file.
9520
 
9521
3.3.2.6 `coff_symbol_type'
9522
..........................
9523
 
9524
*Description*
9525
The hidden information for an `asymbol' is described in a
9526
`combined_entry_type':
9527
 
9528
 
9529
     typedef struct coff_ptr_struct
9530
     {
9531
       /* Remembers the offset from the first symbol in the file for
9532
          this symbol. Generated by coff_renumber_symbols. */
9533
       unsigned int offset;
9534
 
9535
       /* Should the value of this symbol be renumbered.  Used for
9536
          XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
9537
       unsigned int fix_value : 1;
9538
 
9539
       /* Should the tag field of this symbol be renumbered.
9540
          Created by coff_pointerize_aux. */
9541
       unsigned int fix_tag : 1;
9542
 
9543
       /* Should the endidx field of this symbol be renumbered.
9544
          Created by coff_pointerize_aux. */
9545
       unsigned int fix_end : 1;
9546
 
9547
       /* Should the x_csect.x_scnlen field be renumbered.
9548
          Created by coff_pointerize_aux. */
9549
       unsigned int fix_scnlen : 1;
9550
 
9551
       /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
9552
          index into the line number entries.  Set by coff_slurp_symbol_table.  */
9553
       unsigned int fix_line : 1;
9554
 
9555
       /* The container for the symbol structure as read and translated
9556
          from the file. */
9557
       union
9558
       {
9559
         union internal_auxent auxent;
9560
         struct internal_syment syment;
9561
       } u;
9562
     } combined_entry_type;
9563
 
9564
 
9565
     /* Each canonical asymbol really looks like this: */
9566
 
9567
     typedef struct coff_symbol_struct
9568
     {
9569
       /* The actual symbol which the rest of BFD works with */
9570
       asymbol symbol;
9571
 
9572
       /* A pointer to the hidden information for this symbol */
9573
       combined_entry_type *native;
9574
 
9575
       /* A pointer to the linenumber information for this symbol */
9576
       struct lineno_cache_entry *lineno;
9577
 
9578
       /* Have the line numbers been relocated yet ? */
9579
       bfd_boolean done_lineno;
9580
     } coff_symbol_type;
9581
 
9582
3.3.2.7 `bfd_coff_backend_data'
9583
...............................
9584
 
9585
     /* COFF symbol classifications.  */
9586
 
9587
     enum coff_symbol_classification
9588
     {
9589
       /* Global symbol.  */
9590
       COFF_SYMBOL_GLOBAL,
9591
       /* Common symbol.  */
9592
       COFF_SYMBOL_COMMON,
9593
       /* Undefined symbol.  */
9594
       COFF_SYMBOL_UNDEFINED,
9595
       /* Local symbol.  */
9596
       COFF_SYMBOL_LOCAL,
9597
       /* PE section symbol.  */
9598
       COFF_SYMBOL_PE_SECTION
9599
     };
9600
Special entry points for gdb to swap in coff symbol table parts:
9601
     typedef struct
9602
     {
9603
       void (*_bfd_coff_swap_aux_in)
9604
         (bfd *, void *, int, int, int, int, void *);
9605
 
9606
       void (*_bfd_coff_swap_sym_in)
9607
         (bfd *, void *, void *);
9608
 
9609
       void (*_bfd_coff_swap_lineno_in)
9610
         (bfd *, void *, void *);
9611
 
9612
       unsigned int (*_bfd_coff_swap_aux_out)
9613
         (bfd *, void *, int, int, int, int, void *);
9614
 
9615
       unsigned int (*_bfd_coff_swap_sym_out)
9616
         (bfd *, void *, void *);
9617
 
9618
       unsigned int (*_bfd_coff_swap_lineno_out)
9619
         (bfd *, void *, void *);
9620
 
9621
       unsigned int (*_bfd_coff_swap_reloc_out)
9622
         (bfd *, void *, void *);
9623
 
9624
       unsigned int (*_bfd_coff_swap_filehdr_out)
9625
         (bfd *, void *, void *);
9626
 
9627
       unsigned int (*_bfd_coff_swap_aouthdr_out)
9628
         (bfd *, void *, void *);
9629
 
9630
       unsigned int (*_bfd_coff_swap_scnhdr_out)
9631
         (bfd *, void *, void *);
9632
 
9633
       unsigned int _bfd_filhsz;
9634
       unsigned int _bfd_aoutsz;
9635
       unsigned int _bfd_scnhsz;
9636
       unsigned int _bfd_symesz;
9637
       unsigned int _bfd_auxesz;
9638
       unsigned int _bfd_relsz;
9639
       unsigned int _bfd_linesz;
9640
       unsigned int _bfd_filnmlen;
9641
       bfd_boolean _bfd_coff_long_filenames;
9642
 
9643
       bfd_boolean _bfd_coff_long_section_names;
9644
       bfd_boolean (*_bfd_coff_set_long_section_names)
9645
         (bfd *, int);
9646
 
9647
       unsigned int _bfd_coff_default_section_alignment_power;
9648
       bfd_boolean _bfd_coff_force_symnames_in_strings;
9649
       unsigned int _bfd_coff_debug_string_prefix_length;
9650
 
9651
       void (*_bfd_coff_swap_filehdr_in)
9652
         (bfd *, void *, void *);
9653
 
9654
       void (*_bfd_coff_swap_aouthdr_in)
9655
         (bfd *, void *, void *);
9656
 
9657
       void (*_bfd_coff_swap_scnhdr_in)
9658
         (bfd *, void *, void *);
9659
 
9660
       void (*_bfd_coff_swap_reloc_in)
9661
         (bfd *abfd, void *, void *);
9662
 
9663
       bfd_boolean (*_bfd_coff_bad_format_hook)
9664
         (bfd *, void *);
9665
 
9666
       bfd_boolean (*_bfd_coff_set_arch_mach_hook)
9667
         (bfd *, void *);
9668
 
9669
       void * (*_bfd_coff_mkobject_hook)
9670
         (bfd *, void *, void *);
9671
 
9672
       bfd_boolean (*_bfd_styp_to_sec_flags_hook)
9673
         (bfd *, void *, const char *, asection *, flagword *);
9674
 
9675
       void (*_bfd_set_alignment_hook)
9676
         (bfd *, asection *, void *);
9677
 
9678
       bfd_boolean (*_bfd_coff_slurp_symbol_table)
9679
         (bfd *);
9680
 
9681
       bfd_boolean (*_bfd_coff_symname_in_debug)
9682
         (bfd *, struct internal_syment *);
9683
 
9684
       bfd_boolean (*_bfd_coff_pointerize_aux_hook)
9685
         (bfd *, combined_entry_type *, combined_entry_type *,
9686
                 unsigned int, combined_entry_type *);
9687
 
9688
       bfd_boolean (*_bfd_coff_print_aux)
9689
         (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
9690
                 combined_entry_type *, unsigned int);
9691
 
9692
       void (*_bfd_coff_reloc16_extra_cases)
9693
         (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
9694
                bfd_byte *, unsigned int *, unsigned int *);
9695
 
9696
       int (*_bfd_coff_reloc16_estimate)
9697
         (bfd *, asection *, arelent *, unsigned int,
9698
                 struct bfd_link_info *);
9699
 
9700
       enum coff_symbol_classification (*_bfd_coff_classify_symbol)
9701
         (bfd *, struct internal_syment *);
9702
 
9703
       bfd_boolean (*_bfd_coff_compute_section_file_positions)
9704
         (bfd *);
9705
 
9706
       bfd_boolean (*_bfd_coff_start_final_link)
9707
         (bfd *, struct bfd_link_info *);
9708
 
9709
       bfd_boolean (*_bfd_coff_relocate_section)
9710
         (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
9711
                 struct internal_reloc *, struct internal_syment *, asection **);
9712
 
9713
       reloc_howto_type *(*_bfd_coff_rtype_to_howto)
9714
         (bfd *, asection *, struct internal_reloc *,
9715
                 struct coff_link_hash_entry *, struct internal_syment *,
9716
                 bfd_vma *);
9717
 
9718
       bfd_boolean (*_bfd_coff_adjust_symndx)
9719
         (bfd *, struct bfd_link_info *, bfd *, asection *,
9720
                 struct internal_reloc *, bfd_boolean *);
9721
 
9722
       bfd_boolean (*_bfd_coff_link_add_one_symbol)
9723
         (struct bfd_link_info *, bfd *, const char *, flagword,
9724
                 asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
9725
                 struct bfd_link_hash_entry **);
9726
 
9727
       bfd_boolean (*_bfd_coff_link_output_has_begun)
9728
         (bfd *, struct coff_final_link_info *);
9729
 
9730
       bfd_boolean (*_bfd_coff_final_link_postscript)
9731
         (bfd *, struct coff_final_link_info *);
9732
 
9733
       bfd_boolean (*_bfd_coff_print_pdata)
9734
         (bfd *, void *);
9735
 
9736
     } bfd_coff_backend_data;
9737
 
9738
     #define coff_backend_info(abfd) \
9739
       ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
9740
 
9741
     #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
9742
       ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
9743
 
9744
     #define bfd_coff_swap_sym_in(a,e,i) \
9745
       ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
9746
 
9747
     #define bfd_coff_swap_lineno_in(a,e,i) \
9748
       ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
9749
 
9750
     #define bfd_coff_swap_reloc_out(abfd, i, o) \
9751
       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
9752
 
9753
     #define bfd_coff_swap_lineno_out(abfd, i, o) \
9754
       ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
9755
 
9756
     #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
9757
       ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
9758
 
9759
     #define bfd_coff_swap_sym_out(abfd, i,o) \
9760
       ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
9761
 
9762
     #define bfd_coff_swap_scnhdr_out(abfd, i,o) \
9763
       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
9764
 
9765
     #define bfd_coff_swap_filehdr_out(abfd, i,o) \
9766
       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
9767
 
9768
     #define bfd_coff_swap_aouthdr_out(abfd, i,o) \
9769
       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
9770
 
9771
     #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
9772
     #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
9773
     #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
9774
     #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
9775
     #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
9776
     #define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
9777
     #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
9778
     #define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
9779
     #define bfd_coff_long_filenames(abfd) \
9780
       (coff_backend_info (abfd)->_bfd_coff_long_filenames)
9781
     #define bfd_coff_long_section_names(abfd) \
9782
       (coff_backend_info (abfd)->_bfd_coff_long_section_names)
9783
     #define bfd_coff_set_long_section_names(abfd, enable) \
9784
       ((coff_backend_info (abfd)->_bfd_coff_set_long_section_names) (abfd, enable))
9785
     #define bfd_coff_default_section_alignment_power(abfd) \
9786
       (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
9787
     #define bfd_coff_swap_filehdr_in(abfd, i,o) \
9788
       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
9789
 
9790
     #define bfd_coff_swap_aouthdr_in(abfd, i,o) \
9791
       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
9792
 
9793
     #define bfd_coff_swap_scnhdr_in(abfd, i,o) \
9794
       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
9795
 
9796
     #define bfd_coff_swap_reloc_in(abfd, i, o) \
9797
       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
9798
 
9799
     #define bfd_coff_bad_format_hook(abfd, filehdr) \
9800
       ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
9801
 
9802
     #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
9803
       ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
9804
     #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
9805
       ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
9806
        (abfd, filehdr, aouthdr))
9807
 
9808
     #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
9809
       ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
9810
        (abfd, scnhdr, name, section, flags_ptr))
9811
 
9812
     #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
9813
       ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
9814
 
9815
     #define bfd_coff_slurp_symbol_table(abfd)\
9816
       ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
9817
 
9818
     #define bfd_coff_symname_in_debug(abfd, sym)\
9819
       ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
9820
 
9821
     #define bfd_coff_force_symnames_in_strings(abfd)\
9822
       (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
9823
 
9824
     #define bfd_coff_debug_string_prefix_length(abfd)\
9825
       (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
9826
 
9827
     #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
9828
       ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
9829
        (abfd, file, base, symbol, aux, indaux))
9830
 
9831
     #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
9832
                                          reloc, data, src_ptr, dst_ptr)\
9833
       ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
9834
        (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
9835
 
9836
     #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
9837
       ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
9838
        (abfd, section, reloc, shrink, link_info))
9839
 
9840
     #define bfd_coff_classify_symbol(abfd, sym)\
9841
       ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
9842
        (abfd, sym))
9843
 
9844
     #define bfd_coff_compute_section_file_positions(abfd)\
9845
       ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
9846
        (abfd))
9847
 
9848
     #define bfd_coff_start_final_link(obfd, info)\
9849
       ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
9850
        (obfd, info))
9851
     #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
9852
       ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
9853
        (obfd, info, ibfd, o, con, rel, isyms, secs))
9854
     #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
9855
       ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
9856
        (abfd, sec, rel, h, sym, addendp))
9857
     #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
9858
       ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
9859
        (obfd, info, ibfd, sec, rel, adjustedp))
9860
     #define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
9861
                                          value, string, cp, coll, hashp)\
9862
       ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
9863
        (info, abfd, name, flags, section, value, string, cp, coll, hashp))
9864
 
9865
     #define bfd_coff_link_output_has_begun(a,p) \
9866
       ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
9867
     #define bfd_coff_final_link_postscript(a,p) \
9868
       ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
9869
 
9870
     #define bfd_coff_have_print_pdata(a) \
9871
       (coff_backend_info (a)->_bfd_coff_print_pdata)
9872
     #define bfd_coff_print_pdata(a,p) \
9873
       ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p))
9874
 
9875
     /* Macro: Returns true if the bfd is a PE executable as opposed to a
9876
        PE object file.  */
9877
     #define bfd_pei_p(abfd) \
9878
       (CONST_STRNEQ ((abfd)->xvec->name, "pei-"))
9879
 
9880
3.3.2.8 Writing relocations
9881
...........................
9882
 
9883
To write relocations, the back end steps though the canonical
9884
relocation table and create an `internal_reloc'. The symbol index to
9885
use is removed from the `offset' field in the symbol table supplied.
9886
The address comes directly from the sum of the section base address and
9887
the relocation offset; the type is dug directly from the howto field.
9888
Then the `internal_reloc' is swapped into the shape of an
9889
`external_reloc' and written out to disk.
9890
 
9891
3.3.2.9 Reading linenumbers
9892
...........................
9893
 
9894
Creating the linenumber table is done by reading in the entire coff
9895
linenumber table, and creating another table for internal use.
9896
 
9897
   A coff linenumber table is structured so that each function is
9898
marked as having a line number of 0. Each line within the function is
9899
an offset from the first line in the function. The base of the line
9900
number information for the table is stored in the symbol associated
9901
with the function.
9902
 
9903
   Note: The PE format uses line number 0 for a flag indicating a new
9904
source file.
9905
 
9906
   The information is copied from the external to the internal table,
9907
and each symbol which marks a function is marked by pointing its...
9908
 
9909
   How does this work ?
9910
 
9911
3.3.2.10 Reading relocations
9912
............................
9913
 
9914
Coff relocations are easily transformed into the internal BFD form
9915
(`arelent').
9916
 
9917
   Reading a coff relocation table is done in the following stages:
9918
 
9919
   * Read the entire coff relocation table into memory.
9920
 
9921
   * Process each relocation in turn; first swap it from the external
9922
     to the internal form.
9923
 
9924
   * Turn the symbol referenced in the relocation's symbol index into a
9925
     pointer into the canonical symbol table.  This table is the same
9926
     as the one returned by a call to `bfd_canonicalize_symtab'. The
9927
     back end will call that routine and save the result if a
9928
     canonicalization hasn't been done.
9929
 
9930
   * The reloc index is turned into a pointer to a howto structure, in
9931
     a back end specific way. For instance, the 386 and 960 use the
9932
     `r_type' to directly produce an index into a howto table vector;
9933
     the 88k subtracts a number from the `r_type' field and creates an
9934
     addend field.
9935
 
9936

9937
File: bfd.info,  Node: elf,  Next: mmo,  Prev: coff,  Up: BFD back ends
9938
 
9939
3.4 ELF backends
9940
================
9941
 
9942
BFD support for ELF formats is being worked on.  Currently, the best
9943
supported back ends are for sparc and i386 (running svr4 or Solaris 2).
9944
 
9945
   Documentation of the internals of the support code still needs to be
9946
written.  The code is changing quickly enough that we haven't bothered
9947
yet.
9948
 
9949

9950
File: bfd.info,  Node: mmo,  Prev: elf,  Up: BFD back ends
9951
 
9952
3.5 mmo backend
9953
===============
9954
 
9955
The mmo object format is used exclusively together with Professor
9956
Donald E. Knuth's educational 64-bit processor MMIX.  The simulator
9957
`mmix' which is available at
9958
`http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'
9959
understands this format.  That package also includes a combined
9960
assembler and linker called `mmixal'.  The mmo format has no advantages
9961
feature-wise compared to e.g. ELF.  It is a simple non-relocatable
9962
object format with no support for archives or debugging information,
9963
except for symbol value information and line numbers (which is not yet
9964
implemented in BFD).  See
9965
`http://www-cs-faculty.stanford.edu/~knuth/mmix.html' for more
9966
information about MMIX.  The ELF format is used for intermediate object
9967
files in the BFD implementation.
9968
 
9969
* Menu:
9970
 
9971
* File layout::
9972
* Symbol-table::
9973
* mmo section mapping::
9974
 
9975

9976
File: bfd.info,  Node: File layout,  Next: Symbol-table,  Prev: mmo,  Up: mmo
9977
 
9978
3.5.1 File layout
9979
-----------------
9980
 
9981
The mmo file contents is not partitioned into named sections as with
9982
e.g. ELF.  Memory areas is formed by specifying the location of the
9983
data that follows.  Only the memory area `0x0000...00' to `0x01ff...ff'
9984
is executable, so it is used for code (and constants) and the area
9985
`0x2000...00' to `0x20ff...ff' is used for writable data.  *Note mmo
9986
section mapping::.
9987
 
9988
   There is provision for specifying "special data" of 65536 different
9989
types.  We use type 80 (decimal), arbitrarily chosen the same as the
9990
ELF `e_machine' number for MMIX, filling it with section information
9991
normally found in ELF objects. *Note mmo section mapping::.
9992
 
9993
   Contents is entered as 32-bit words, xor:ed over previous contents,
9994
always zero-initialized.  A word that starts with the byte `0x98' forms
9995
a command called a `lopcode', where the next byte distinguished between
9996
the thirteen lopcodes.  The two remaining bytes, called the `Y' and `Z'
9997
fields, or the `YZ' field (a 16-bit big-endian number), are used for
9998
various purposes different for each lopcode.  As documented in
9999
`http://www-cs-faculty.stanford.edu/~knuth/mmixal-intro.ps.gz', the
10000
lopcodes are:
10001
 
10002
`lop_quote'
10003
     0x98000001.  The next word is contents, regardless of whether it
10004
     starts with 0x98 or not.
10005
 
10006
`lop_loc'
10007
     0x9801YYZZ, where `Z' is 1 or 2.  This is a location directive,
10008
     setting the location for the next data to the next 32-bit word
10009
     (for Z = 1) or 64-bit word (for Z = 2), plus Y * 2^56.  Normally
10010
     `Y' is 0 for the text segment and 2 for the data segment.
10011
 
10012
`lop_skip'
10013
     0x9802YYZZ.  Increase the current location by `YZ' bytes.
10014
 
10015
`lop_fixo'
10016
     0x9803YYZZ, where `Z' is 1 or 2.  Store the current location as 64
10017
     bits into the location pointed to by the next 32-bit (Z = 1) or
10018
     64-bit (Z = 2) word, plus Y * 2^56.
10019
 
10020
`lop_fixr'
10021
     0x9804YYZZ.  `YZ' is stored into the current location plus 2 - 4 *
10022
     YZ.
10023
 
10024
`lop_fixrx'
10025
     0x980500ZZ.  `Z' is 16 or 24.  A value `L' derived from the
10026
     following 32-bit word are used in a manner similar to `YZ' in
10027
     lop_fixr: it is xor:ed into the current location minus 4 * L.  The
10028
     first byte of the word is 0 or 1.  If it is 1, then L = (LOWEST 24
10029
     BITS OF WORD) - 2^Z, if 0, then L = (LOWEST 24 BITS OF WORD).
10030
 
10031
`lop_file'
10032
     0x9806YYZZ.  `Y' is the file number, `Z' is count of 32-bit words.
10033
     Set the file number to `Y' and the line counter to 0.  The next Z
10034
     * 4 bytes contain the file name, padded with zeros if the count is
10035
     not a multiple of four.  The same `Y' may occur multiple times,
10036
     but `Z' must be 0 for all but the first occurrence.
10037
 
10038
`lop_line'
10039
     0x9807YYZZ.  `YZ' is the line number.  Together with lop_file, it
10040
     forms the source location for the next 32-bit word.  Note that for
10041
     each non-lopcode 32-bit word, line numbers are assumed incremented
10042
     by one.
10043
 
10044
`lop_spec'
10045
     0x9808YYZZ.  `YZ' is the type number.  Data until the next lopcode
10046
     other than lop_quote forms special data of type `YZ'.  *Note mmo
10047
     section mapping::.
10048
 
10049
     Other types than 80, (or type 80 with a content that does not
10050
     parse) is stored in sections named `.MMIX.spec_data.N' where N is
10051
     the `YZ'-type.  The flags for such a sections say not to allocate
10052
     or load the data.  The vma is 0.  Contents of multiple occurrences
10053
     of special data N is concatenated to the data of the previous
10054
     lop_spec Ns.  The location in data or code at which the lop_spec
10055
     occurred is lost.
10056
 
10057
`lop_pre'
10058
     0x980901ZZ.  The first lopcode in a file.  The `Z' field forms the
10059
     length of header information in 32-bit words, where the first word
10060
     tells the time in seconds since `00:00:00 GMT Jan 1 1970'.
10061
 
10062
`lop_post'
10063
     0x980a00ZZ.  Z > 32.  This lopcode follows after all
10064
     content-generating lopcodes in a program.  The `Z' field denotes
10065
     the value of `rG' at the beginning of the program.  The following
10066
     256 - Z big-endian 64-bit words are loaded into global registers
10067
     `$G' ... `$255'.
10068
 
10069
`lop_stab'
10070
     0x980b0000.  The next-to-last lopcode in a program.  Must follow
10071
     immediately after the lop_post lopcode and its data.  After this
10072
     lopcode follows all symbols in a compressed format (*note
10073
     Symbol-table::).
10074
 
10075
`lop_end'
10076
     0x980cYYZZ.  The last lopcode in a program.  It must follow the
10077
     lop_stab lopcode and its data.  The `YZ' field contains the number
10078
     of 32-bit words of symbol table information after the preceding
10079
     lop_stab lopcode.
10080
 
10081
   Note that the lopcode "fixups"; `lop_fixr', `lop_fixrx' and
10082
`lop_fixo' are not generated by BFD, but are handled.  They are
10083
generated by `mmixal'.
10084
 
10085
   This trivial one-label, one-instruction file:
10086
 
10087
      :Main TRAP 1,2,3
10088
 
10089
   can be represented this way in mmo:
10090
 
10091
      0x98090101 - lop_pre, one 32-bit word with timestamp.
10092
      
10093
      0x98010002 - lop_loc, text segment, using a 64-bit address.
10094
                   Note that mmixal does not emit this for the file above.
10095
      0x00000000 - Address, high 32 bits.
10096
      0x00000000 - Address, low 32 bits.
10097
      0x98060002 - lop_file, 2 32-bit words for file-name.
10098
      0x74657374 - "test"
10099
      0x2e730000 - ".s\0\0"
10100
      0x98070001 - lop_line, line 1.
10101
      0x00010203 - TRAP 1,2,3
10102
      0x980a00ff - lop_post, setting $255 to 0.
10103
      0x00000000
10104
      0x00000000
10105
      0x980b0000 - lop_stab for ":Main" = 0, serial 1.
10106
      0x203a4040   *Note Symbol-table::.
10107
      0x10404020
10108
      0x4d206120
10109
      0x69016e00
10110
      0x81000000
10111
      0x980c0005 - lop_end; symbol table contained five 32-bit words.
10112
 
10113

10114
File: bfd.info,  Node: Symbol-table,  Next: mmo section mapping,  Prev: File layout,  Up: mmo
10115
 
10116
3.5.2 Symbol table format
10117
-------------------------
10118
 
10119
From mmixal.w (or really, the generated mmixal.tex) in
10120
`http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'):
10121
"Symbols are stored and retrieved by means of a `ternary search trie',
10122
following ideas of Bentley and Sedgewick. (See ACM-SIAM Symp. on
10123
Discrete Algorithms `8' (1997), 360-369; R.Sedgewick, `Algorithms in C'
10124
(Reading, Mass.  Addison-Wesley, 1998), `15.4'.)  Each trie node stores
10125
a character, and there are branches to subtries for the cases where a
10126
given character is less than, equal to, or greater than the character
10127
in the trie.  There also is a pointer to a symbol table entry if a
10128
symbol ends at the current node."
10129
 
10130
   So it's a tree encoded as a stream of bytes.  The stream of bytes
10131
acts on a single virtual global symbol, adding and removing characters
10132
and signalling complete symbol points.  Here, we read the stream and
10133
create symbols at the completion points.
10134
 
10135
   First, there's a control byte `m'.  If any of the listed bits in `m'
10136
is nonzero, we execute what stands at the right, in the listed order:
10137
 
10138
      (MMO3_LEFT)
10139
      0x40 - Traverse left trie.
10140
             (Read a new command byte and recurse.)
10141
 
10142
      (MMO3_SYMBITS)
10143
      0x2f - Read the next byte as a character and store it in the
10144
             current character position; increment character position.
10145
             Test the bits of `m':
10146
 
10147
             (MMO3_WCHAR)
10148
             0x80 - The character is 16-bit (so read another byte,
10149
                    merge into current character.
10150
 
10151
             (MMO3_TYPEBITS)
10152
             0xf  - We have a complete symbol; parse the type, value
10153
                    and serial number and do what should be done
10154
                    with a symbol.  The type and length information
10155
                    is in j = (m & 0xf).
10156
 
10157
                    (MMO3_REGQUAL_BITS)
10158
                    j == 0xf: A register variable.  The following
10159
                              byte tells which register.
10160
                    j <= 8:   An absolute symbol.  Read j bytes as the
10161
                              big-endian number the symbol equals.
10162
                              A j = 2 with two zero bytes denotes an
10163
                              unknown symbol.
10164
                    j > 8:    As with j <= 8, but add (0x20 << 56)
10165
                              to the value in the following j - 8
10166
                              bytes.
10167
 
10168
                    Then comes the serial number, as a variant of
10169
                    uleb128, but better named ubeb128:
10170
                    Read bytes and shift the previous value left 7
10171
                    (multiply by 128).  Add in the new byte, repeat
10172
                    until a byte has bit 7 set.  The serial number
10173
                    is the computed value minus 128.
10174
 
10175
             (MMO3_MIDDLE)
10176
             0x20 - Traverse middle trie.  (Read a new command byte
10177
                    and recurse.)  Decrement character position.
10178
 
10179
      (MMO3_RIGHT)
10180
      0x10 - Traverse right trie.  (Read a new command byte and
10181
             recurse.)
10182
 
10183
   Let's look again at the `lop_stab' for the trivial file (*note File
10184
layout::).
10185
 
10186
      0x980b0000 - lop_stab for ":Main" = 0, serial 1.
10187
      0x203a4040
10188
      0x10404020
10189
      0x4d206120
10190
      0x69016e00
10191
      0x81000000
10192
 
10193
   This forms the trivial trie (note that the path between ":" and "M"
10194
is redundant):
10195
 
10196
      203a     ":"
10197
      40       /
10198
      40      /
10199
      10      \
10200
      40      /
10201
      40     /
10202
      204d  "M"
10203
      2061  "a"
10204
      2069  "i"
10205
      016e  "n" is the last character in a full symbol, and
10206
            with a value represented in one byte.
10207
      00    The value is 0.
10208
      81    The serial number is 1.
10209
 
10210

10211
File: bfd.info,  Node: mmo section mapping,  Prev: Symbol-table,  Up: mmo
10212
 
10213
3.5.3 mmo section mapping
10214
-------------------------
10215
 
10216
The implementation in BFD uses special data type 80 (decimal) to
10217
encapsulate and describe named sections, containing e.g. debug
10218
information.  If needed, any datum in the encapsulation will be quoted
10219
using lop_quote.  First comes a 32-bit word holding the number of
10220
32-bit words containing the zero-terminated zero-padded segment name.
10221
After the name there's a 32-bit word holding flags describing the
10222
section type.  Then comes a 64-bit big-endian word with the section
10223
length (in bytes), then another with the section start address.
10224
Depending on the type of section, the contents might follow,
10225
zero-padded to 32-bit boundary.  For a loadable section (such as data
10226
or code), the contents might follow at some later point, not
10227
necessarily immediately, as a lop_loc with the same start address as in
10228
the section description, followed by the contents.  This in effect
10229
forms a descriptor that must be emitted before the actual contents.
10230
Sections described this way must not overlap.
10231
 
10232
   For areas that don't have such descriptors, synthetic sections are
10233
formed by BFD.  Consecutive contents in the two memory areas
10234
`0x0000...00' to `0x01ff...ff' and `0x2000...00' to `0x20ff...ff' are
10235
entered in sections named `.text' and `.data' respectively.  If an area
10236
is not otherwise described, but would together with a neighboring lower
10237
area be less than `0x40000000' bytes long, it is joined with the lower
10238
area and the gap is zero-filled.  For other cases, a new section is
10239
formed, named `.MMIX.sec.N'.  Here, N is a number, a running count
10240
through the mmo file, starting at 0.
10241
 
10242
   A loadable section specified as:
10243
 
10244
      .section secname,"ax"
10245
      TETRA 1,2,3,4,-1,-2009
10246
      BYTE 80
10247
 
10248
   and linked to address `0x4', is represented by the sequence:
10249
 
10250
      0x98080050 - lop_spec 80
10251
      0x00000002 - two 32-bit words for the section name
10252
      0x7365636e - "secn"
10253
      0x616d6500 - "ame\0"
10254
      0x00000033 - flags CODE, READONLY, LOAD, ALLOC
10255
      0x00000000 - high 32 bits of section length
10256
      0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits
10257
      0x00000000 - high 32 bits of section address
10258
      0x00000004 - section address is 4
10259
      0x98010002 - 64 bits with address of following data
10260
      0x00000000 - high 32 bits of address
10261
      0x00000004 - low 32 bits: data starts at address 4
10262
      0x00000001 - 1
10263
      0x00000002 - 2
10264
      0x00000003 - 3
10265
      0x00000004 - 4
10266
      0xffffffff - -1
10267
      0xfffff827 - -2009
10268
      0x50000000 - 80 as a byte, padded with zeros.
10269
 
10270
   Note that the lop_spec wrapping does not include the section
10271
contents.  Compare this to a non-loaded section specified as:
10272
 
10273
      .section thirdsec
10274
      TETRA 200001,100002
10275
      BYTE 38,40
10276
 
10277
   This, when linked to address `0x200000000000001c', is represented by:
10278
 
10279
      0x98080050 - lop_spec 80
10280
      0x00000002 - two 32-bit words for the section name
10281
      0x7365636e - "thir"
10282
      0x616d6500 - "dsec"
10283
      0x00000010 - flag READONLY
10284
      0x00000000 - high 32 bits of section length
10285
      0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits
10286
      0x20000000 - high 32 bits of address
10287
      0x0000001c - low 32 bits of address 0x200000000000001c
10288
      0x00030d41 - 200001
10289
      0x000186a2 - 100002
10290
      0x26280000 - 38, 40 as bytes, padded with zeros
10291
 
10292
   For the latter example, the section contents must not be loaded in
10293
memory, and is therefore specified as part of the special data.  The
10294
address is usually unimportant but might provide information for e.g.
10295
the DWARF 2 debugging format.
10296
 
10297

10298
File: bfd.info,  Node: GNU Free Documentation License,  Next: BFD Index,  Prev: BFD back ends,  Up: Top
10299
 
10300
                     Version 1.3, 3 November 2008
10301
 
10302
     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
10303
     `http://fsf.org/'
10304
 
10305
     Everyone is permitted to copy and distribute verbatim copies
10306
     of this license document, but changing it is not allowed.
10307
 
10308
  0. PREAMBLE
10309
 
10310
     The purpose of this License is to make a manual, textbook, or other
10311
     functional and useful document "free" in the sense of freedom: to
10312
     assure everyone the effective freedom to copy and redistribute it,
10313
     with or without modifying it, either commercially or
10314
     noncommercially.  Secondarily, this License preserves for the
10315
     author and publisher a way to get credit for their work, while not
10316
     being considered responsible for modifications made by others.
10317
 
10318
     This License is a kind of "copyleft", which means that derivative
10319
     works of the document must themselves be free in the same sense.
10320
     It complements the GNU General Public License, which is a copyleft
10321
     license designed for free software.
10322
 
10323
     We have designed this License in order to use it for manuals for
10324
     free software, because free software needs free documentation: a
10325
     free program should come with manuals providing the same freedoms
10326
     that the software does.  But this License is not limited to
10327
     software manuals; it can be used for any textual work, regardless
10328
     of subject matter or whether it is published as a printed book.
10329
     We recommend this License principally for works whose purpose is
10330
     instruction or reference.
10331
 
10332
  1. APPLICABILITY AND DEFINITIONS
10333
 
10334
     This License applies to any manual or other work, in any medium,
10335
     that contains a notice placed by the copyright holder saying it
10336
     can be distributed under the terms of this License.  Such a notice
10337
     grants a world-wide, royalty-free license, unlimited in duration,
10338
     to use that work under the conditions stated herein.  The
10339
     "Document", below, refers to any such manual or work.  Any member
10340
     of the public is a licensee, and is addressed as "you".  You
10341
     accept the license if you copy, modify or distribute the work in a
10342
     way requiring permission under copyright law.
10343
 
10344
     A "Modified Version" of the Document means any work containing the
10345
     Document or a portion of it, either copied verbatim, or with
10346
     modifications and/or translated into another language.
10347
 
10348
     A "Secondary Section" is a named appendix or a front-matter section
10349
     of the Document that deals exclusively with the relationship of the
10350
     publishers or authors of the Document to the Document's overall
10351
     subject (or to related matters) and contains nothing that could
10352
     fall directly within that overall subject.  (Thus, if the Document
10353
     is in part a textbook of mathematics, a Secondary Section may not
10354
     explain any mathematics.)  The relationship could be a matter of
10355
     historical connection with the subject or with related matters, or
10356
     of legal, commercial, philosophical, ethical or political position
10357
     regarding them.
10358
 
10359
     The "Invariant Sections" are certain Secondary Sections whose
10360
     titles are designated, as being those of Invariant Sections, in
10361
     the notice that says that the Document is released under this
10362
     License.  If a section does not fit the above definition of
10363
     Secondary then it is not allowed to be designated as Invariant.
10364
     The Document may contain zero Invariant Sections.  If the Document
10365
     does not identify any Invariant Sections then there are none.
10366
 
10367
     The "Cover Texts" are certain short passages of text that are
10368
     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
10369
     that says that the Document is released under this License.  A
10370
     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
10371
     be at most 25 words.
10372
 
10373
     A "Transparent" copy of the Document means a machine-readable copy,
10374
     represented in a format whose specification is available to the
10375
     general public, that is suitable for revising the document
10376
     straightforwardly with generic text editors or (for images
10377
     composed of pixels) generic paint programs or (for drawings) some
10378
     widely available drawing editor, and that is suitable for input to
10379
     text formatters or for automatic translation to a variety of
10380
     formats suitable for input to text formatters.  A copy made in an
10381
     otherwise Transparent file format whose markup, or absence of
10382
     markup, has been arranged to thwart or discourage subsequent
10383
     modification by readers is not Transparent.  An image format is
10384
     not Transparent if used for any substantial amount of text.  A
10385
     copy that is not "Transparent" is called "Opaque".
10386
 
10387
     Examples of suitable formats for Transparent copies include plain
10388
     ASCII without markup, Texinfo input format, LaTeX input format,
10389
     SGML or XML using a publicly available DTD, and
10390
     standard-conforming simple HTML, PostScript or PDF designed for
10391
     human modification.  Examples of transparent image formats include
10392
     PNG, XCF and JPG.  Opaque formats include proprietary formats that
10393
     can be read and edited only by proprietary word processors, SGML or
10394
     XML for which the DTD and/or processing tools are not generally
10395
     available, and the machine-generated HTML, PostScript or PDF
10396
     produced by some word processors for output purposes only.
10397
 
10398
     The "Title Page" means, for a printed book, the title page itself,
10399
     plus such following pages as are needed to hold, legibly, the
10400
     material this License requires to appear in the title page.  For
10401
     works in formats which do not have any title page as such, "Title
10402
     Page" means the text near the most prominent appearance of the
10403
     work's title, preceding the beginning of the body of the text.
10404
 
10405
     The "publisher" means any person or entity that distributes copies
10406
     of the Document to the public.
10407
 
10408
     A section "Entitled XYZ" means a named subunit of the Document
10409
     whose title either is precisely XYZ or contains XYZ in parentheses
10410
     following text that translates XYZ in another language.  (Here XYZ
10411
     stands for a specific section name mentioned below, such as
10412
     "Acknowledgements", "Dedications", "Endorsements", or "History".)
10413
     To "Preserve the Title" of such a section when you modify the
10414
     Document means that it remains a section "Entitled XYZ" according
10415
     to this definition.
10416
 
10417
     The Document may include Warranty Disclaimers next to the notice
10418
     which states that this License applies to the Document.  These
10419
     Warranty Disclaimers are considered to be included by reference in
10420
     this License, but only as regards disclaiming warranties: any other
10421
     implication that these Warranty Disclaimers may have is void and
10422
     has no effect on the meaning of this License.
10423
 
10424
  2. VERBATIM COPYING
10425
 
10426
     You may copy and distribute the Document in any medium, either
10427
     commercially or noncommercially, provided that this License, the
10428
     copyright notices, and the license notice saying this License
10429
     applies to the Document are reproduced in all copies, and that you
10430
     add no other conditions whatsoever to those of this License.  You
10431
     may not use technical measures to obstruct or control the reading
10432
     or further copying of the copies you make or distribute.  However,
10433
     you may accept compensation in exchange for copies.  If you
10434
     distribute a large enough number of copies you must also follow
10435
     the conditions in section 3.
10436
 
10437
     You may also lend copies, under the same conditions stated above,
10438
     and you may publicly display copies.
10439
 
10440
  3. COPYING IN QUANTITY
10441
 
10442
     If you publish printed copies (or copies in media that commonly
10443
     have printed covers) of the Document, numbering more than 100, and
10444
     the Document's license notice requires Cover Texts, you must
10445
     enclose the copies in covers that carry, clearly and legibly, all
10446
     these Cover Texts: Front-Cover Texts on the front cover, and
10447
     Back-Cover Texts on the back cover.  Both covers must also clearly
10448
     and legibly identify you as the publisher of these copies.  The
10449
     front cover must present the full title with all words of the
10450
     title equally prominent and visible.  You may add other material
10451
     on the covers in addition.  Copying with changes limited to the
10452
     covers, as long as they preserve the title of the Document and
10453
     satisfy these conditions, can be treated as verbatim copying in
10454
     other respects.
10455
 
10456
     If the required texts for either cover are too voluminous to fit
10457
     legibly, you should put the first ones listed (as many as fit
10458
     reasonably) on the actual cover, and continue the rest onto
10459
     adjacent pages.
10460
 
10461
     If you publish or distribute Opaque copies of the Document
10462
     numbering more than 100, you must either include a
10463
     machine-readable Transparent copy along with each Opaque copy, or
10464
     state in or with each Opaque copy a computer-network location from
10465
     which the general network-using public has access to download
10466
     using public-standard network protocols a complete Transparent
10467
     copy of the Document, free of added material.  If you use the
10468
     latter option, you must take reasonably prudent steps, when you
10469
     begin distribution of Opaque copies in quantity, to ensure that
10470
     this Transparent copy will remain thus accessible at the stated
10471
     location until at least one year after the last time you
10472
     distribute an Opaque copy (directly or through your agents or
10473
     retailers) of that edition to the public.
10474
 
10475
     It is requested, but not required, that you contact the authors of
10476
     the Document well before redistributing any large number of
10477
     copies, to give them a chance to provide you with an updated
10478
     version of the Document.
10479
 
10480
  4. MODIFICATIONS
10481
 
10482
     You may copy and distribute a Modified Version of the Document
10483
     under the conditions of sections 2 and 3 above, provided that you
10484
     release the Modified Version under precisely this License, with
10485
     the Modified Version filling the role of the Document, thus
10486
     licensing distribution and modification of the Modified Version to
10487
     whoever possesses a copy of it.  In addition, you must do these
10488
     things in the Modified Version:
10489
 
10490
       A. Use in the Title Page (and on the covers, if any) a title
10491
          distinct from that of the Document, and from those of
10492
          previous versions (which should, if there were any, be listed
10493
          in the History section of the Document).  You may use the
10494
          same title as a previous version if the original publisher of
10495
          that version gives permission.
10496
 
10497
       B. List on the Title Page, as authors, one or more persons or
10498
          entities responsible for authorship of the modifications in
10499
          the Modified Version, together with at least five of the
10500
          principal authors of the Document (all of its principal
10501
          authors, if it has fewer than five), unless they release you
10502
          from this requirement.
10503
 
10504
       C. State on the Title page the name of the publisher of the
10505
          Modified Version, as the publisher.
10506
 
10507
       D. Preserve all the copyright notices of the Document.
10508
 
10509
       E. Add an appropriate copyright notice for your modifications
10510
          adjacent to the other copyright notices.
10511
 
10512
       F. Include, immediately after the copyright notices, a license
10513
          notice giving the public permission to use the Modified
10514
          Version under the terms of this License, in the form shown in
10515
          the Addendum below.
10516
 
10517
       G. Preserve in that license notice the full lists of Invariant
10518
          Sections and required Cover Texts given in the Document's
10519
          license notice.
10520
 
10521
       H. Include an unaltered copy of this License.
10522
 
10523
       I. Preserve the section Entitled "History", Preserve its Title,
10524
          and add to it an item stating at least the title, year, new
10525
          authors, and publisher of the Modified Version as given on
10526
          the Title Page.  If there is no section Entitled "History" in
10527
          the Document, create one stating the title, year, authors,
10528
          and publisher of the Document as given on its Title Page,
10529
          then add an item describing the Modified Version as stated in
10530
          the previous sentence.
10531
 
10532
       J. Preserve the network location, if any, given in the Document
10533
          for public access to a Transparent copy of the Document, and
10534
          likewise the network locations given in the Document for
10535
          previous versions it was based on.  These may be placed in
10536
          the "History" section.  You may omit a network location for a
10537
          work that was published at least four years before the
10538
          Document itself, or if the original publisher of the version
10539
          it refers to gives permission.
10540
 
10541
       K. For any section Entitled "Acknowledgements" or "Dedications",
10542
          Preserve the Title of the section, and preserve in the
10543
          section all the substance and tone of each of the contributor
10544
          acknowledgements and/or dedications given therein.
10545
 
10546
       L. Preserve all the Invariant Sections of the Document,
10547
          unaltered in their text and in their titles.  Section numbers
10548
          or the equivalent are not considered part of the section
10549
          titles.
10550
 
10551
       M. Delete any section Entitled "Endorsements".  Such a section
10552
          may not be included in the Modified Version.
10553
 
10554
       N. Do not retitle any existing section to be Entitled
10555
          "Endorsements" or to conflict in title with any Invariant
10556
          Section.
10557
 
10558
       O. Preserve any Warranty Disclaimers.
10559
 
10560
     If the Modified Version includes new front-matter sections or
10561
     appendices that qualify as Secondary Sections and contain no
10562
     material copied from the Document, you may at your option
10563
     designate some or all of these sections as invariant.  To do this,
10564
     add their titles to the list of Invariant Sections in the Modified
10565
     Version's license notice.  These titles must be distinct from any
10566
     other section titles.
10567
 
10568
     You may add a section Entitled "Endorsements", provided it contains
10569
     nothing but endorsements of your Modified Version by various
10570
     parties--for example, statements of peer review or that the text
10571
     has been approved by an organization as the authoritative
10572
     definition of a standard.
10573
 
10574
     You may add a passage of up to five words as a Front-Cover Text,
10575
     and a passage of up to 25 words as a Back-Cover Text, to the end
10576
     of the list of Cover Texts in the Modified Version.  Only one
10577
     passage of Front-Cover Text and one of Back-Cover Text may be
10578
     added by (or through arrangements made by) any one entity.  If the
10579
     Document already includes a cover text for the same cover,
10580
     previously added by you or by arrangement made by the same entity
10581
     you are acting on behalf of, you may not add another; but you may
10582
     replace the old one, on explicit permission from the previous
10583
     publisher that added the old one.
10584
 
10585
     The author(s) and publisher(s) of the Document do not by this
10586
     License give permission to use their names for publicity for or to
10587
     assert or imply endorsement of any Modified Version.
10588
 
10589
  5. COMBINING DOCUMENTS
10590
 
10591
     You may combine the Document with other documents released under
10592
     this License, under the terms defined in section 4 above for
10593
     modified versions, provided that you include in the combination
10594
     all of the Invariant Sections of all of the original documents,
10595
     unmodified, and list them all as Invariant Sections of your
10596
     combined work in its license notice, and that you preserve all
10597
     their Warranty Disclaimers.
10598
 
10599
     The combined work need only contain one copy of this License, and
10600
     multiple identical Invariant Sections may be replaced with a single
10601
     copy.  If there are multiple Invariant Sections with the same name
10602
     but different contents, make the title of each such section unique
10603
     by adding at the end of it, in parentheses, the name of the
10604
     original author or publisher of that section if known, or else a
10605
     unique number.  Make the same adjustment to the section titles in
10606
     the list of Invariant Sections in the license notice of the
10607
     combined work.
10608
 
10609
     In the combination, you must combine any sections Entitled
10610
     "History" in the various original documents, forming one section
10611
     Entitled "History"; likewise combine any sections Entitled
10612
     "Acknowledgements", and any sections Entitled "Dedications".  You
10613
     must delete all sections Entitled "Endorsements."
10614
 
10615
  6. COLLECTIONS OF DOCUMENTS
10616
 
10617
     You may make a collection consisting of the Document and other
10618
     documents released under this License, and replace the individual
10619
     copies of this License in the various documents with a single copy
10620
     that is included in the collection, provided that you follow the
10621
     rules of this License for verbatim copying of each of the
10622
     documents in all other respects.
10623
 
10624
     You may extract a single document from such a collection, and
10625
     distribute it individually under this License, provided you insert
10626
     a copy of this License into the extracted document, and follow
10627
     this License in all other respects regarding verbatim copying of
10628
     that document.
10629
 
10630
  7. AGGREGATION WITH INDEPENDENT WORKS
10631
 
10632
     A compilation of the Document or its derivatives with other
10633
     separate and independent documents or works, in or on a volume of
10634
     a storage or distribution medium, is called an "aggregate" if the
10635
     copyright resulting from the compilation is not used to limit the
10636
     legal rights of the compilation's users beyond what the individual
10637
     works permit.  When the Document is included in an aggregate, this
10638
     License does not apply to the other works in the aggregate which
10639
     are not themselves derivative works of the Document.
10640
 
10641
     If the Cover Text requirement of section 3 is applicable to these
10642
     copies of the Document, then if the Document is less than one half
10643
     of the entire aggregate, the Document's Cover Texts may be placed
10644
     on covers that bracket the Document within the aggregate, or the
10645
     electronic equivalent of covers if the Document is in electronic
10646
     form.  Otherwise they must appear on printed covers that bracket
10647
     the whole aggregate.
10648
 
10649
  8. TRANSLATION
10650
 
10651
     Translation is considered a kind of modification, so you may
10652
     distribute translations of the Document under the terms of section
10653
     4.  Replacing Invariant Sections with translations requires special
10654
     permission from their copyright holders, but you may include
10655
     translations of some or all Invariant Sections in addition to the
10656
     original versions of these Invariant Sections.  You may include a
10657
     translation of this License, and all the license notices in the
10658
     Document, and any Warranty Disclaimers, provided that you also
10659
     include the original English version of this License and the
10660
     original versions of those notices and disclaimers.  In case of a
10661
     disagreement between the translation and the original version of
10662
     this License or a notice or disclaimer, the original version will
10663
     prevail.
10664
 
10665
     If a section in the Document is Entitled "Acknowledgements",
10666
     "Dedications", or "History", the requirement (section 4) to
10667
     Preserve its Title (section 1) will typically require changing the
10668
     actual title.
10669
 
10670
  9. TERMINATION
10671
 
10672
     You may not copy, modify, sublicense, or distribute the Document
10673
     except as expressly provided under this License.  Any attempt
10674
     otherwise to copy, modify, sublicense, or distribute it is void,
10675
     and will automatically terminate your rights under this License.
10676
 
10677
     However, if you cease all violation of this License, then your
10678
     license from a particular copyright holder is reinstated (a)
10679
     provisionally, unless and until the copyright holder explicitly
10680
     and finally terminates your license, and (b) permanently, if the
10681
     copyright holder fails to notify you of the violation by some
10682
     reasonable means prior to 60 days after the cessation.
10683
 
10684
     Moreover, your license from a particular copyright holder is
10685
     reinstated permanently if the copyright holder notifies you of the
10686
     violation by some reasonable means, this is the first time you have
10687
     received notice of violation of this License (for any work) from
10688
     that copyright holder, and you cure the violation prior to 30 days
10689
     after your receipt of the notice.
10690
 
10691
     Termination of your rights under this section does not terminate
10692
     the licenses of parties who have received copies or rights from
10693
     you under this License.  If your rights have been terminated and
10694
     not permanently reinstated, receipt of a copy of some or all of
10695
     the same material does not give you any rights to use it.
10696
 
10697
 10. FUTURE REVISIONS OF THIS LICENSE
10698
 
10699
     The Free Software Foundation may publish new, revised versions of
10700
     the GNU Free Documentation License from time to time.  Such new
10701
     versions will be similar in spirit to the present version, but may
10702
     differ in detail to address new problems or concerns.  See
10703
     `http://www.gnu.org/copyleft/'.
10704
 
10705
     Each version of the License is given a distinguishing version
10706
     number.  If the Document specifies that a particular numbered
10707
     version of this License "or any later version" applies to it, you
10708
     have the option of following the terms and conditions either of
10709
     that specified version or of any later version that has been
10710
     published (not as a draft) by the Free Software Foundation.  If
10711
     the Document does not specify a version number of this License,
10712
     you may choose any version ever published (not as a draft) by the
10713
     Free Software Foundation.  If the Document specifies that a proxy
10714
     can decide which future versions of this License can be used, that
10715
     proxy's public statement of acceptance of a version permanently
10716
     authorizes you to choose that version for the Document.
10717
 
10718
 11. RELICENSING
10719
 
10720
     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
10721
     World Wide Web server that publishes copyrightable works and also
10722
     provides prominent facilities for anybody to edit those works.  A
10723
     public wiki that anybody can edit is an example of such a server.
10724
     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
10725
     site means any set of copyrightable works thus published on the MMC
10726
     site.
10727
 
10728
     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
10729
     license published by Creative Commons Corporation, a not-for-profit
10730
     corporation with a principal place of business in San Francisco,
10731
     California, as well as future copyleft versions of that license
10732
     published by that same organization.
10733
 
10734
     "Incorporate" means to publish or republish a Document, in whole or
10735
     in part, as part of another Document.
10736
 
10737
     An MMC is "eligible for relicensing" if it is licensed under this
10738
     License, and if all works that were first published under this
10739
     License somewhere other than this MMC, and subsequently
10740
     incorporated in whole or in part into the MMC, (1) had no cover
10741
     texts or invariant sections, and (2) were thus incorporated prior
10742
     to November 1, 2008.
10743
 
10744
     The operator of an MMC Site may republish an MMC contained in the
10745
     site under CC-BY-SA on the same site at any time before August 1,
10746
     2009, provided the MMC is eligible for relicensing.
10747
 
10748
 
10749
ADDENDUM: How to use this License for your documents
10750
====================================================
10751
 
10752
To use this License in a document you have written, include a copy of
10753
the License in the document and put the following copyright and license
10754
notices just after the title page:
10755
 
10756
       Copyright (C)  YEAR  YOUR NAME.
10757
       Permission is granted to copy, distribute and/or modify this document
10758
       under the terms of the GNU Free Documentation License, Version 1.3
10759
       or any later version published by the Free Software Foundation;
10760
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
10761
       Texts.  A copy of the license is included in the section entitled ``GNU
10762
       Free Documentation License''.
10763
 
10764
   If you have Invariant Sections, Front-Cover Texts and Back-Cover
10765
Texts, replace the "with...Texts." line with this:
10766
 
10767
         with the Invariant Sections being LIST THEIR TITLES, with
10768
         the Front-Cover Texts being LIST, and with the Back-Cover Texts
10769
         being LIST.
10770
 
10771
   If you have Invariant Sections without Cover Texts, or some other
10772
combination of the three, merge those two alternatives to suit the
10773
situation.
10774
 
10775
   If your document contains nontrivial examples of program code, we
10776
recommend releasing these examples in parallel under your choice of
10777
free software license, such as the GNU General Public License, to
10778
permit their use in free software.
10779
 
10780

10781
File: bfd.info,  Node: BFD Index,  Prev: GNU Free Documentation License,  Up: Top
10782
 
10783
BFD Index
10784
*********
10785
 
10786
 
10787
* Menu:
10788
10789
* _bfd_final_link_relocate:              Relocating the section contents.
10790
                                                             (line   22)
10791
* _bfd_generic_link_add_archive_symbols: Adding symbols from an archive.
10792
                                                             (line   15)
10793
* _bfd_generic_link_add_one_symbol:      Adding symbols from an object file.
10794
                                                             (line   19)
10795
* _bfd_generic_make_empty_symbol:        symbol handling functions.
10796
                                                             (line   92)
10797
* _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table.
10798
                                                             (line    6)
10799
* _bfd_link_final_link in target vector: Performing the Final Link.
10800
                                                             (line    6)
10801
* _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table.
10802
                                                             (line    6)
10803
* _bfd_relocate_contents:                Relocating the section contents.
10804
                                                             (line   22)
10805
* aout_SIZE_machine_type:                aout.               (line  147)
10806
* aout_SIZE_mkobject:                    aout.               (line  139)
10807
* aout_SIZE_new_section_hook:            aout.               (line  177)
10808
* aout_SIZE_set_arch_mach:               aout.               (line  164)
10809
* aout_SIZE_some_aout_object_p:          aout.               (line  125)
10810
* aout_SIZE_swap_exec_header_in:         aout.               (line  101)
10811
* aout_SIZE_swap_exec_header_out:        aout.               (line  113)
10812
* arelent_chain:                         typedef arelent.    (line  336)
10813
* BFD:                                   Overview.           (line    6)
10814
* BFD canonical format:                  Canonical format.   (line   11)
10815
* bfd_alloc:                             Opening and Closing.
10816
                                                             (line  218)
10817
* bfd_alloc2:                            Opening and Closing.
10818
                                                             (line  227)
10819
* bfd_alt_mach_code:                     BFD front end.      (line  751)
10820
* bfd_arch_bits_per_address:             Architectures.      (line  566)
10821
* bfd_arch_bits_per_byte:                Architectures.      (line  558)
10822
* bfd_arch_default_fill:                 Architectures.      (line  647)
10823
* bfd_arch_get_compatible:               Architectures.      (line  501)
10824
* bfd_arch_list:                         Architectures.      (line  492)
10825
* bfd_arch_mach_octets_per_byte:         Architectures.      (line  635)
10826
* BFD_ARELOC_BFIN_ADD:                   howto manager.      (line 1107)
10827
* BFD_ARELOC_BFIN_ADDR:                  howto manager.      (line 1158)
10828
* BFD_ARELOC_BFIN_AND:                   howto manager.      (line 1128)
10829
* BFD_ARELOC_BFIN_COMP:                  howto manager.      (line 1149)
10830
* BFD_ARELOC_BFIN_CONST:                 howto manager.      (line 1104)
10831
* BFD_ARELOC_BFIN_DIV:                   howto manager.      (line 1116)
10832
* BFD_ARELOC_BFIN_HWPAGE:                howto manager.      (line 1155)
10833
* BFD_ARELOC_BFIN_LAND:                  howto manager.      (line 1137)
10834
* BFD_ARELOC_BFIN_LEN:                   howto manager.      (line 1143)
10835
* BFD_ARELOC_BFIN_LOR:                   howto manager.      (line 1140)
10836
* BFD_ARELOC_BFIN_LSHIFT:                howto manager.      (line 1122)
10837
* BFD_ARELOC_BFIN_MOD:                   howto manager.      (line 1119)
10838
* BFD_ARELOC_BFIN_MULT:                  howto manager.      (line 1113)
10839
* BFD_ARELOC_BFIN_NEG:                   howto manager.      (line 1146)
10840
* BFD_ARELOC_BFIN_OR:                    howto manager.      (line 1131)
10841
* BFD_ARELOC_BFIN_PAGE:                  howto manager.      (line 1152)
10842
* BFD_ARELOC_BFIN_PUSH:                  howto manager.      (line 1101)
10843
* BFD_ARELOC_BFIN_RSHIFT:                howto manager.      (line 1125)
10844
* BFD_ARELOC_BFIN_SUB:                   howto manager.      (line 1110)
10845
* BFD_ARELOC_BFIN_XOR:                   howto manager.      (line 1134)
10846
* bfd_cache_close:                       File Caching.       (line   26)
10847
* bfd_cache_close_all:                   File Caching.       (line   39)
10848
* bfd_cache_init:                        File Caching.       (line   18)
10849
* bfd_calc_gnu_debuglink_crc32:          Opening and Closing.
10850
                                                             (line  254)
10851
* bfd_canonicalize_reloc:                BFD front end.      (line  462)
10852
* bfd_canonicalize_symtab:               symbol handling functions.
10853
                                                             (line   50)
10854
* bfd_check_format:                      Formats.            (line   21)
10855
* bfd_check_format_matches:              Formats.            (line   52)
10856
* bfd_check_overflow:                    typedef arelent.    (line  348)
10857
* bfd_close:                             Opening and Closing.
10858
                                                             (line  143)
10859
* bfd_close_all_done:                    Opening and Closing.
10860
                                                             (line  161)
10861
* bfd_coff_backend_data:                 coff.               (line  304)
10862
* bfd_copy_private_bfd_data:             BFD front end.      (line  601)
10863
* bfd_copy_private_header_data:          BFD front end.      (line  583)
10864
* bfd_copy_private_section_data:         section prototypes. (line  278)
10865
* bfd_copy_private_symbol_data:          symbol handling functions.
10866
                                                             (line  140)
10867
* bfd_core_file_failing_command:         Core Files.         (line   12)
10868
* bfd_core_file_failing_signal:          Core Files.         (line   21)
10869
* bfd_core_file_pid:                     Core Files.         (line   30)
10870
* bfd_create:                            Opening and Closing.
10871
                                                             (line  180)
10872
* bfd_create_gnu_debuglink_section:      Opening and Closing.
10873
                                                             (line  320)
10874
* bfd_decode_symclass:                   symbol handling functions.
10875
                                                             (line  111)
10876
* bfd_default_arch_struct:               Architectures.      (line  513)
10877
* bfd_default_compatible:                Architectures.      (line  575)
10878
* bfd_default_reloc_type_lookup:         howto manager.      (line 3074)
10879
* bfd_default_scan:                      Architectures.      (line  584)
10880
* bfd_default_set_arch_mach:             Architectures.      (line  531)
10881
* bfd_demangle:                          BFD front end.      (line  849)
10882
* bfd_emul_get_commonpagesize:           BFD front end.      (line  829)
10883
* bfd_emul_get_maxpagesize:              BFD front end.      (line  809)
10884
* bfd_emul_set_commonpagesize:           BFD front end.      (line  840)
10885
* bfd_emul_set_maxpagesize:              BFD front end.      (line  820)
10886
* bfd_errmsg:                            BFD front end.      (line  355)
10887
* bfd_fdopenr:                           Opening and Closing.
10888
                                                             (line   51)
10889
* bfd_fill_in_gnu_debuglink_section:     Opening and Closing.
10890
                                                             (line  334)
10891
* bfd_find_target:                       bfd_target.         (line  473)
10892
* bfd_find_version_for_sym:              Writing the symbol table.
10893
                                                             (line   81)
10894
* bfd_follow_gnu_debuglink:              Opening and Closing.
10895
                                                             (line  299)
10896
* bfd_fopen:                             Opening and Closing.
10897
                                                             (line   12)
10898
* bfd_format_string:                     Formats.            (line   79)
10899
* bfd_generic_define_common_symbol:      Writing the symbol table.
10900
                                                             (line   68)
10901
* bfd_generic_discard_group:             section prototypes. (line  304)
10902
* bfd_generic_gc_sections:               howto manager.      (line 3105)
10903
* bfd_generic_get_relocated_section_contents: howto manager. (line 3135)
10904
* bfd_generic_is_group_section:          section prototypes. (line  296)
10905
* bfd_generic_lookup_section_flags:      howto manager.      (line 3115)
10906
* bfd_generic_merge_sections:            howto manager.      (line 3125)
10907
* bfd_generic_relax_section:             howto manager.      (line 3092)
10908
* bfd_get_arch:                          Architectures.      (line  542)
10909
* bfd_get_arch_info:                     Architectures.      (line  594)
10910
* bfd_get_arch_size:                     BFD front end.      (line  506)
10911
* bfd_get_assert_handler:                BFD front end.      (line  438)
10912
* bfd_get_error:                         BFD front end.      (line  336)
10913
* bfd_get_error_handler:                 BFD front end.      (line  406)
10914
* bfd_get_gp_size:                       BFD front end.      (line  547)
10915
* bfd_get_linker_section:                section prototypes. (line   36)
10916
* bfd_get_mach:                          Architectures.      (line  550)
10917
* bfd_get_mtime:                         BFD front end.      (line  900)
10918
* bfd_get_next_mapent:                   Archives.           (line   58)
10919
* bfd_get_next_section_by_name:          section prototypes. (line   26)
10920
* bfd_get_reloc_code_name:               howto manager.      (line 3083)
10921
* bfd_get_reloc_size:                    typedef arelent.    (line  327)
10922
* bfd_get_reloc_upper_bound:             BFD front end.      (line  452)
10923
* bfd_get_section_by_name:               section prototypes. (line   17)
10924
* bfd_get_section_by_name_if:            section prototypes. (line   45)
10925
* bfd_get_section_contents:              section prototypes. (line  251)
10926
* bfd_get_sign_extend_vma:               BFD front end.      (line  519)
10927
* bfd_get_size <1>:                      Internal.           (line   25)
10928
* bfd_get_size:                          BFD front end.      (line  909)
10929
* bfd_get_symtab_upper_bound:            symbol handling functions.
10930
                                                             (line    6)
10931
* bfd_get_target_info:                   bfd_target.         (line  489)
10932
* bfd_get_unique_section_name:           section prototypes. (line   64)
10933
* bfd_h_put_size:                        Internal.           (line   97)
10934
* bfd_hash_allocate:                     Creating and Freeing a Hash Table.
10935
                                                             (line   17)
10936
* bfd_hash_lookup:                       Looking Up or Entering a String.
10937
                                                             (line    6)
10938
* bfd_hash_newfunc:                      Creating and Freeing a Hash Table.
10939
                                                             (line   12)
10940
* bfd_hash_set_default_size:             Creating and Freeing a Hash Table.
10941
                                                             (line   25)
10942
* bfd_hash_table_free:                   Creating and Freeing a Hash Table.
10943
                                                             (line   21)
10944
* bfd_hash_table_init:                   Creating and Freeing a Hash Table.
10945
                                                             (line    6)
10946
* bfd_hash_table_init_n:                 Creating and Freeing a Hash Table.
10947
                                                             (line    6)
10948
* bfd_hash_traverse:                     Traversing a Hash Table.
10949
                                                             (line    6)
10950
* bfd_hide_sym_by_version:               Writing the symbol table.
10951
                                                             (line   93)
10952
* bfd_init:                              Initialization.     (line   11)
10953
* bfd_install_relocation:                typedef arelent.    (line  389)
10954
* bfd_is_local_label:                    symbol handling functions.
10955
                                                             (line   17)
10956
* bfd_is_local_label_name:               symbol handling functions.
10957
                                                             (line   26)
10958
* bfd_is_target_special_symbol:          symbol handling functions.
10959
                                                             (line   38)
10960
* bfd_is_undefined_symclass:             symbol handling functions.
10961
                                                             (line  120)
10962
* bfd_link_split_section:                Writing the symbol table.
10963
                                                             (line   44)
10964
* bfd_log2:                              Internal.           (line  164)
10965
* bfd_lookup_arch:                       Architectures.      (line  602)
10966
* bfd_make_debug_symbol:                 symbol handling functions.
10967
                                                             (line  102)
10968
* bfd_make_empty_symbol:                 symbol handling functions.
10969
                                                             (line   78)
10970
* bfd_make_readable:                     Opening and Closing.
10971
                                                             (line  204)
10972
* bfd_make_section:                      section prototypes. (line  143)
10973
* bfd_make_section_anyway:               section prototypes. (line  114)
10974
* bfd_make_section_anyway_with_flags:    section prototypes. (line   96)
10975
* bfd_make_section_old_way:              section prototypes. (line   76)
10976
* bfd_make_section_with_flags:           section prototypes. (line  130)
10977
* bfd_make_writable:                     Opening and Closing.
10978
                                                             (line  190)
10979
* bfd_malloc_and_get_section:            section prototypes. (line  268)
10980
* bfd_map_over_sections:                 section prototypes. (line  178)
10981
* bfd_merge_private_bfd_data:            BFD front end.      (line  617)
10982
* bfd_mmap:                              BFD front end.      (line  938)
10983
* bfd_octets_per_byte:                   Architectures.      (line  625)
10984
* bfd_open_file:                         File Caching.       (line   52)
10985
* bfd_openr:                             Opening and Closing.
10986
                                                             (line   35)
10987
* bfd_openr_iovec:                       Opening and Closing.
10988
                                                             (line   83)
10989
* bfd_openr_next_archived_file:          Archives.           (line   84)
10990
* bfd_openstreamr:                       Opening and Closing.
10991
                                                             (line   74)
10992
* bfd_openw:                             Opening and Closing.
10993
                                                             (line  131)
10994
* bfd_perform_relocation:                typedef arelent.    (line  364)
10995
* bfd_perror:                            BFD front end.      (line  364)
10996
* bfd_preserve_finish:                   BFD front end.      (line  799)
10997
* bfd_preserve_restore:                  BFD front end.      (line  789)
10998
* bfd_preserve_save:                     BFD front end.      (line  773)
10999
* bfd_print_symbol_vandf:                symbol handling functions.
11000
                                                             (line   70)
11001
* bfd_printable_arch_mach:               Architectures.      (line  613)
11002
* bfd_printable_name:                    Architectures.      (line  473)
11003
* bfd_put_size:                          Internal.           (line   22)
11004
* BFD_RELOC_12_PCREL:                    howto manager.      (line   39)
11005
* BFD_RELOC_14:                          howto manager.      (line   31)
11006
* BFD_RELOC_16:                          howto manager.      (line   30)
11007
* BFD_RELOC_16_BASEREL:                  howto manager.      (line   95)
11008
* BFD_RELOC_16_GOT_PCREL:                howto manager.      (line   52)
11009
* BFD_RELOC_16_GOTOFF:                   howto manager.      (line   55)
11010
* BFD_RELOC_16_PCREL:                    howto manager.      (line   38)
11011
* BFD_RELOC_16_PCREL_S2:                 howto manager.      (line  107)
11012
* BFD_RELOC_16_PLT_PCREL:                howto manager.      (line   63)
11013
* BFD_RELOC_16_PLTOFF:                   howto manager.      (line   67)
11014
* BFD_RELOC_16C_ABS20:                   howto manager.      (line 2170)
11015
* BFD_RELOC_16C_ABS20_C:                 howto manager.      (line 2171)
11016
* BFD_RELOC_16C_ABS24:                   howto manager.      (line 2172)
11017
* BFD_RELOC_16C_ABS24_C:                 howto manager.      (line 2173)
11018
* BFD_RELOC_16C_DISP04:                  howto manager.      (line 2150)
11019
* BFD_RELOC_16C_DISP04_C:                howto manager.      (line 2151)
11020
* BFD_RELOC_16C_DISP08:                  howto manager.      (line 2152)
11021
* BFD_RELOC_16C_DISP08_C:                howto manager.      (line 2153)
11022
* BFD_RELOC_16C_DISP16:                  howto manager.      (line 2154)
11023
* BFD_RELOC_16C_DISP16_C:                howto manager.      (line 2155)
11024
* BFD_RELOC_16C_DISP24:                  howto manager.      (line 2156)
11025
* BFD_RELOC_16C_DISP24_C:                howto manager.      (line 2157)
11026
* BFD_RELOC_16C_DISP24a:                 howto manager.      (line 2158)
11027
* BFD_RELOC_16C_DISP24a_C:               howto manager.      (line 2159)
11028
* BFD_RELOC_16C_IMM04:                   howto manager.      (line 2174)
11029
* BFD_RELOC_16C_IMM04_C:                 howto manager.      (line 2175)
11030
* BFD_RELOC_16C_IMM16:                   howto manager.      (line 2176)
11031
* BFD_RELOC_16C_IMM16_C:                 howto manager.      (line 2177)
11032
* BFD_RELOC_16C_IMM20:                   howto manager.      (line 2178)
11033
* BFD_RELOC_16C_IMM20_C:                 howto manager.      (line 2179)
11034
* BFD_RELOC_16C_IMM24:                   howto manager.      (line 2180)
11035
* BFD_RELOC_16C_IMM24_C:                 howto manager.      (line 2181)
11036
* BFD_RELOC_16C_IMM32:                   howto manager.      (line 2182)
11037
* BFD_RELOC_16C_IMM32_C:                 howto manager.      (line 2183)
11038
* BFD_RELOC_16C_NUM08:                   howto manager.      (line 2144)
11039
* BFD_RELOC_16C_NUM08_C:                 howto manager.      (line 2145)
11040
* BFD_RELOC_16C_NUM16:                   howto manager.      (line 2146)
11041
* BFD_RELOC_16C_NUM16_C:                 howto manager.      (line 2147)
11042
* BFD_RELOC_16C_NUM32:                   howto manager.      (line 2148)
11043
* BFD_RELOC_16C_NUM32_C:                 howto manager.      (line 2149)
11044
* BFD_RELOC_16C_REG04:                   howto manager.      (line 2160)
11045
* BFD_RELOC_16C_REG04_C:                 howto manager.      (line 2161)
11046
* BFD_RELOC_16C_REG04a:                  howto manager.      (line 2162)
11047
* BFD_RELOC_16C_REG04a_C:                howto manager.      (line 2163)
11048
* BFD_RELOC_16C_REG14:                   howto manager.      (line 2164)
11049
* BFD_RELOC_16C_REG14_C:                 howto manager.      (line 2165)
11050
* BFD_RELOC_16C_REG16:                   howto manager.      (line 2166)
11051
* BFD_RELOC_16C_REG16_C:                 howto manager.      (line 2167)
11052
* BFD_RELOC_16C_REG20:                   howto manager.      (line 2168)
11053
* BFD_RELOC_16C_REG20_C:                 howto manager.      (line 2169)
11054
* BFD_RELOC_23_PCREL_S2:                 howto manager.      (line  108)
11055
* BFD_RELOC_24:                          howto manager.      (line   29)
11056
* BFD_RELOC_24_PCREL:                    howto manager.      (line   37)
11057
* BFD_RELOC_24_PLT_PCREL:                howto manager.      (line   62)
11058
* BFD_RELOC_26:                          howto manager.      (line   28)
11059
* BFD_RELOC_32:                          howto manager.      (line   27)
11060
* BFD_RELOC_32_BASEREL:                  howto manager.      (line   94)
11061
* BFD_RELOC_32_GOT_PCREL:                howto manager.      (line   51)
11062
* BFD_RELOC_32_GOTOFF:                   howto manager.      (line   54)
11063
* BFD_RELOC_32_PCREL:                    howto manager.      (line   36)
11064
* BFD_RELOC_32_PCREL_S2:                 howto manager.      (line  106)
11065
* BFD_RELOC_32_PLT_PCREL:                howto manager.      (line   61)
11066
* BFD_RELOC_32_PLTOFF:                   howto manager.      (line   66)
11067
* BFD_RELOC_32_SECREL:                   howto manager.      (line   48)
11068
* BFD_RELOC_386_COPY:                    howto manager.      (line  572)
11069
* BFD_RELOC_386_GLOB_DAT:                howto manager.      (line  573)
11070
* BFD_RELOC_386_GOT32:                   howto manager.      (line  570)
11071
* BFD_RELOC_386_GOTOFF:                  howto manager.      (line  576)
11072
* BFD_RELOC_386_GOTPC:                   howto manager.      (line  577)
11073
* BFD_RELOC_386_IRELATIVE:               howto manager.      (line  593)
11074
* BFD_RELOC_386_JUMP_SLOT:               howto manager.      (line  574)
11075
* BFD_RELOC_386_PLT32:                   howto manager.      (line  571)
11076
* BFD_RELOC_386_RELATIVE:                howto manager.      (line  575)
11077
* BFD_RELOC_386_TLS_DESC:                howto manager.      (line  592)
11078
* BFD_RELOC_386_TLS_DESC_CALL:           howto manager.      (line  591)
11079
* BFD_RELOC_386_TLS_DTPMOD32:            howto manager.      (line  587)
11080
* BFD_RELOC_386_TLS_DTPOFF32:            howto manager.      (line  588)
11081
* BFD_RELOC_386_TLS_GD:                  howto manager.      (line  582)
11082
* BFD_RELOC_386_TLS_GOTDESC:             howto manager.      (line  590)
11083
* BFD_RELOC_386_TLS_GOTIE:               howto manager.      (line  580)
11084
* BFD_RELOC_386_TLS_IE:                  howto manager.      (line  579)
11085
* BFD_RELOC_386_TLS_IE_32:               howto manager.      (line  585)
11086
* BFD_RELOC_386_TLS_LDM:                 howto manager.      (line  583)
11087
* BFD_RELOC_386_TLS_LDO_32:              howto manager.      (line  584)
11088
* BFD_RELOC_386_TLS_LE:                  howto manager.      (line  581)
11089
* BFD_RELOC_386_TLS_LE_32:               howto manager.      (line  586)
11090
* BFD_RELOC_386_TLS_TPOFF:               howto manager.      (line  578)
11091
* BFD_RELOC_386_TLS_TPOFF32:             howto manager.      (line  589)
11092
* BFD_RELOC_390_12:                      howto manager.      (line 1765)
11093
* BFD_RELOC_390_20:                      howto manager.      (line 1865)
11094
* BFD_RELOC_390_COPY:                    howto manager.      (line 1774)
11095
* BFD_RELOC_390_GLOB_DAT:                howto manager.      (line 1777)
11096
* BFD_RELOC_390_GOT12:                   howto manager.      (line 1768)
11097
* BFD_RELOC_390_GOT16:                   howto manager.      (line 1789)
11098
* BFD_RELOC_390_GOT20:                   howto manager.      (line 1866)
11099
* BFD_RELOC_390_GOT64:                   howto manager.      (line 1807)
11100
* BFD_RELOC_390_GOTENT:                  howto manager.      (line 1813)
11101
* BFD_RELOC_390_GOTOFF64:                howto manager.      (line 1816)
11102
* BFD_RELOC_390_GOTPC:                   howto manager.      (line 1786)
11103
* BFD_RELOC_390_GOTPCDBL:                howto manager.      (line 1804)
11104
* BFD_RELOC_390_GOTPLT12:                howto manager.      (line 1819)
11105
* BFD_RELOC_390_GOTPLT16:                howto manager.      (line 1822)
11106
* BFD_RELOC_390_GOTPLT20:                howto manager.      (line 1867)
11107
* BFD_RELOC_390_GOTPLT32:                howto manager.      (line 1825)
11108
* BFD_RELOC_390_GOTPLT64:                howto manager.      (line 1828)
11109
* BFD_RELOC_390_GOTPLTENT:               howto manager.      (line 1831)
11110
* BFD_RELOC_390_IRELATIVE:               howto manager.      (line 1871)
11111
* BFD_RELOC_390_JMP_SLOT:                howto manager.      (line 1780)
11112
* BFD_RELOC_390_PC16DBL:                 howto manager.      (line 1792)
11113
* BFD_RELOC_390_PC32DBL:                 howto manager.      (line 1798)
11114
* BFD_RELOC_390_PLT16DBL:                howto manager.      (line 1795)
11115
* BFD_RELOC_390_PLT32:                   howto manager.      (line 1771)
11116
* BFD_RELOC_390_PLT32DBL:                howto manager.      (line 1801)
11117
* BFD_RELOC_390_PLT64:                   howto manager.      (line 1810)
11118
* BFD_RELOC_390_PLTOFF16:                howto manager.      (line 1834)
11119
* BFD_RELOC_390_PLTOFF32:                howto manager.      (line 1837)
11120
* BFD_RELOC_390_PLTOFF64:                howto manager.      (line 1840)
11121
* BFD_RELOC_390_RELATIVE:                howto manager.      (line 1783)
11122
* BFD_RELOC_390_TLS_DTPMOD:              howto manager.      (line 1860)
11123
* BFD_RELOC_390_TLS_DTPOFF:              howto manager.      (line 1861)
11124
* BFD_RELOC_390_TLS_GD32:                howto manager.      (line 1846)
11125
* BFD_RELOC_390_TLS_GD64:                howto manager.      (line 1847)
11126
* BFD_RELOC_390_TLS_GDCALL:              howto manager.      (line 1844)
11127
* BFD_RELOC_390_TLS_GOTIE12:             howto manager.      (line 1848)
11128
* BFD_RELOC_390_TLS_GOTIE20:             howto manager.      (line 1868)
11129
* BFD_RELOC_390_TLS_GOTIE32:             howto manager.      (line 1849)
11130
* BFD_RELOC_390_TLS_GOTIE64:             howto manager.      (line 1850)
11131
* BFD_RELOC_390_TLS_IE32:                howto manager.      (line 1853)
11132
* BFD_RELOC_390_TLS_IE64:                howto manager.      (line 1854)
11133
* BFD_RELOC_390_TLS_IEENT:               howto manager.      (line 1855)
11134
* BFD_RELOC_390_TLS_LDCALL:              howto manager.      (line 1845)
11135
* BFD_RELOC_390_TLS_LDM32:               howto manager.      (line 1851)
11136
* BFD_RELOC_390_TLS_LDM64:               howto manager.      (line 1852)
11137
* BFD_RELOC_390_TLS_LDO32:               howto manager.      (line 1858)
11138
* BFD_RELOC_390_TLS_LDO64:               howto manager.      (line 1859)
11139
* BFD_RELOC_390_TLS_LE32:                howto manager.      (line 1856)
11140
* BFD_RELOC_390_TLS_LE64:                howto manager.      (line 1857)
11141
* BFD_RELOC_390_TLS_LOAD:                howto manager.      (line 1843)
11142
* BFD_RELOC_390_TLS_TPOFF:               howto manager.      (line 1862)
11143
* BFD_RELOC_64:                          howto manager.      (line   26)
11144
* BFD_RELOC_64_PCREL:                    howto manager.      (line   35)
11145
* BFD_RELOC_64_PLT_PCREL:                howto manager.      (line   60)
11146
* BFD_RELOC_64_PLTOFF:                   howto manager.      (line   65)
11147
* BFD_RELOC_68K_GLOB_DAT:                howto manager.      (line   74)
11148
* BFD_RELOC_68K_JMP_SLOT:                howto manager.      (line   75)
11149
* BFD_RELOC_68K_RELATIVE:                howto manager.      (line   76)
11150
* BFD_RELOC_68K_TLS_GD16:                howto manager.      (line   78)
11151
* BFD_RELOC_68K_TLS_GD32:                howto manager.      (line   77)
11152
* BFD_RELOC_68K_TLS_GD8:                 howto manager.      (line   79)
11153
* BFD_RELOC_68K_TLS_IE16:                howto manager.      (line   87)
11154
* BFD_RELOC_68K_TLS_IE32:                howto manager.      (line   86)
11155
* BFD_RELOC_68K_TLS_IE8:                 howto manager.      (line   88)
11156
* BFD_RELOC_68K_TLS_LDM16:               howto manager.      (line   81)
11157
* BFD_RELOC_68K_TLS_LDM32:               howto manager.      (line   80)
11158
* BFD_RELOC_68K_TLS_LDM8:                howto manager.      (line   82)
11159
* BFD_RELOC_68K_TLS_LDO16:               howto manager.      (line   84)
11160
* BFD_RELOC_68K_TLS_LDO32:               howto manager.      (line   83)
11161
* BFD_RELOC_68K_TLS_LDO8:                howto manager.      (line   85)
11162
* BFD_RELOC_68K_TLS_LE16:                howto manager.      (line   90)
11163
* BFD_RELOC_68K_TLS_LE32:                howto manager.      (line   89)
11164
* BFD_RELOC_68K_TLS_LE8:                 howto manager.      (line   91)
11165
* BFD_RELOC_8:                           howto manager.      (line   32)
11166
* BFD_RELOC_860_COPY:                    howto manager.      (line 2298)
11167
* BFD_RELOC_860_GLOB_DAT:                howto manager.      (line 2299)
11168
* BFD_RELOC_860_HAGOT:                   howto manager.      (line 2324)
11169
* BFD_RELOC_860_HAGOTOFF:                howto manager.      (line 2325)
11170
* BFD_RELOC_860_HAPC:                    howto manager.      (line 2326)
11171
* BFD_RELOC_860_HIGH:                    howto manager.      (line 2327)
11172
* BFD_RELOC_860_HIGHADJ:                 howto manager.      (line 2323)
11173
* BFD_RELOC_860_HIGOT:                   howto manager.      (line 2328)
11174
* BFD_RELOC_860_HIGOTOFF:                howto manager.      (line 2329)
11175
* BFD_RELOC_860_JUMP_SLOT:               howto manager.      (line 2300)
11176
* BFD_RELOC_860_LOGOT0:                  howto manager.      (line 2312)
11177
* BFD_RELOC_860_LOGOT1:                  howto manager.      (line 2314)
11178
* BFD_RELOC_860_LOGOTOFF0:               howto manager.      (line 2316)
11179
* BFD_RELOC_860_LOGOTOFF1:               howto manager.      (line 2318)
11180
* BFD_RELOC_860_LOGOTOFF2:               howto manager.      (line 2320)
11181
* BFD_RELOC_860_LOGOTOFF3:               howto manager.      (line 2321)
11182
* BFD_RELOC_860_LOPC:                    howto manager.      (line 2322)
11183
* BFD_RELOC_860_LOW0:                    howto manager.      (line 2305)
11184
* BFD_RELOC_860_LOW1:                    howto manager.      (line 2307)
11185
* BFD_RELOC_860_LOW2:                    howto manager.      (line 2309)
11186
* BFD_RELOC_860_LOW3:                    howto manager.      (line 2311)
11187
* BFD_RELOC_860_PC16:                    howto manager.      (line 2304)
11188
* BFD_RELOC_860_PC26:                    howto manager.      (line 2302)
11189
* BFD_RELOC_860_PLT26:                   howto manager.      (line 2303)
11190
* BFD_RELOC_860_RELATIVE:                howto manager.      (line 2301)
11191
* BFD_RELOC_860_SPGOT0:                  howto manager.      (line 2313)
11192
* BFD_RELOC_860_SPGOT1:                  howto manager.      (line 2315)
11193
* BFD_RELOC_860_SPGOTOFF0:               howto manager.      (line 2317)
11194
* BFD_RELOC_860_SPGOTOFF1:               howto manager.      (line 2319)
11195
* BFD_RELOC_860_SPLIT0:                  howto manager.      (line 2306)
11196
* BFD_RELOC_860_SPLIT1:                  howto manager.      (line 2308)
11197
* BFD_RELOC_860_SPLIT2:                  howto manager.      (line 2310)
11198
* BFD_RELOC_8_BASEREL:                   howto manager.      (line   99)
11199
* BFD_RELOC_8_FFnn:                      howto manager.      (line  103)
11200
* BFD_RELOC_8_GOT_PCREL:                 howto manager.      (line   53)
11201
* BFD_RELOC_8_GOTOFF:                    howto manager.      (line   59)
11202
* BFD_RELOC_8_PCREL:                     howto manager.      (line   40)
11203
* BFD_RELOC_8_PLT_PCREL:                 howto manager.      (line   64)
11204
* BFD_RELOC_8_PLTOFF:                    howto manager.      (line   71)
11205
* BFD_RELOC_AARCH64_ADD_LO12:            howto manager.      (line 2617)
11206
* BFD_RELOC_AARCH64_ADR_GOT_PAGE:        howto manager.      (line 2629)
11207
* BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL:   howto manager.      (line 2638)
11208
* BFD_RELOC_AARCH64_ADR_HI21_PCREL:      howto manager.      (line 2634)
11209
* BFD_RELOC_AARCH64_ADR_LO21_PCREL:      howto manager.      (line 2643)
11210
* BFD_RELOC_AARCH64_BRANCH19:            howto manager.      (line 2647)
11211
* BFD_RELOC_AARCH64_CALL26:              howto manager.      (line 2652)
11212
* BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP:  howto manager.      (line 2657)
11213
* BFD_RELOC_AARCH64_GOT_LD_PREL19:       howto manager.      (line 2622)
11214
* BFD_RELOC_AARCH64_JUMP26:              howto manager.      (line 2661)
11215
* BFD_RELOC_AARCH64_LD64_GOT_LO12_NC:    howto manager.      (line 2671)
11216
* BFD_RELOC_AARCH64_LD_LO19_PCREL:       howto manager.      (line 2666)
11217
* BFD_RELOC_AARCH64_LDST128_LO12:        howto manager.      (line 2701)
11218
* BFD_RELOC_AARCH64_LDST16_LO12:         howto manager.      (line 2686)
11219
* BFD_RELOC_AARCH64_LDST32_LO12:         howto manager.      (line 2691)
11220
* BFD_RELOC_AARCH64_LDST64_LO12:         howto manager.      (line 2696)
11221
* BFD_RELOC_AARCH64_LDST8_LO12:          howto manager.      (line 2681)
11222
* BFD_RELOC_AARCH64_LDST_LO12:           howto manager.      (line 2676)
11223
* BFD_RELOC_AARCH64_MOVW_G0:             howto manager.      (line 2706)
11224
* BFD_RELOC_AARCH64_MOVW_G0_NC:          howto manager.      (line 2715)
11225
* BFD_RELOC_AARCH64_MOVW_G0_S:           howto manager.      (line 2710)
11226
* BFD_RELOC_AARCH64_MOVW_G1:             howto manager.      (line 2719)
11227
* BFD_RELOC_AARCH64_MOVW_G1_NC:          howto manager.      (line 2723)
11228
* BFD_RELOC_AARCH64_MOVW_G1_S:           howto manager.      (line 2727)
11229
* BFD_RELOC_AARCH64_MOVW_G2:             howto manager.      (line 2732)
11230
* BFD_RELOC_AARCH64_MOVW_G2_NC:          howto manager.      (line 2736)
11231
* BFD_RELOC_AARCH64_MOVW_G2_S:           howto manager.      (line 2740)
11232
* BFD_RELOC_AARCH64_MOVW_G3:             howto manager.      (line 2745)
11233
* BFD_RELOC_AARCH64_TLS_DTPMOD64:        howto manager.      (line 2832)
11234
* BFD_RELOC_AARCH64_TLS_DTPREL64:        howto manager.      (line 2835)
11235
* BFD_RELOC_AARCH64_TLS_TPREL64:         howto manager.      (line 2838)
11236
* BFD_RELOC_AARCH64_TLSDESC:             howto manager.      (line 2749)
11237
* BFD_RELOC_AARCH64_TLSDESC_ADD:         howto manager.      (line 2752)
11238
* BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC: howto manager.      (line 2755)
11239
* BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE:    howto manager.      (line 2758)
11240
* BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:  howto manager.      (line 2761)
11241
* BFD_RELOC_AARCH64_TLSDESC_CALL:        howto manager.      (line 2764)
11242
* BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC: howto manager.     (line 2767)
11243
* BFD_RELOC_AARCH64_TLSDESC_LD64_PREL19: howto manager.      (line 2770)
11244
* BFD_RELOC_AARCH64_TLSDESC_LDR:         howto manager.      (line 2773)
11245
* BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:   howto manager.      (line 2776)
11246
* BFD_RELOC_AARCH64_TLSDESC_OFF_G1:      howto manager.      (line 2779)
11247
* BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:   howto manager.      (line 2782)
11248
* BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:    howto manager.      (line 2787)
11249
* BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: howto manager.
11250
                                                             (line 2793)
11251
* BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: howto manager.
11252
                                                             (line 2799)
11253
* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 2796)
11254
* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC: howto manager.
11255
                                                             (line 2802)
11256
* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1: howto manager.   (line 2805)
11257
* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: howto manager.     (line 2808)
11258
* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: howto manager.     (line 2811)
11259
* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: howto manager.  (line 2814)
11260
* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: howto manager.      (line 2817)
11261
* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: howto manager.   (line 2820)
11262
* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: howto manager.      (line 2823)
11263
* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: howto manager.   (line 2826)
11264
* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: howto manager.      (line 2829)
11265
* BFD_RELOC_AARCH64_TSTBR14:             howto manager.      (line 2841)
11266
* BFD_RELOC_ALPHA_BOH:                   howto manager.      (line  319)
11267
* BFD_RELOC_ALPHA_BRSGP:                 howto manager.      (line  302)
11268
* BFD_RELOC_ALPHA_BSR:                   howto manager.      (line  311)
11269
* BFD_RELOC_ALPHA_CODEADDR:              howto manager.      (line  293)
11270
* BFD_RELOC_ALPHA_DTPMOD64:              howto manager.      (line  325)
11271
* BFD_RELOC_ALPHA_DTPREL16:              howto manager.      (line  330)
11272
* BFD_RELOC_ALPHA_DTPREL64:              howto manager.      (line  327)
11273
* BFD_RELOC_ALPHA_DTPREL_HI16:           howto manager.      (line  328)
11274
* BFD_RELOC_ALPHA_DTPREL_LO16:           howto manager.      (line  329)
11275
* BFD_RELOC_ALPHA_ELF_LITERAL:           howto manager.      (line  258)
11276
* BFD_RELOC_ALPHA_GOTDTPREL16:           howto manager.      (line  326)
11277
* BFD_RELOC_ALPHA_GOTTPREL16:            howto manager.      (line  331)
11278
* BFD_RELOC_ALPHA_GPDISP:                howto manager.      (line  252)
11279
* BFD_RELOC_ALPHA_GPDISP_HI16:           howto manager.      (line  238)
11280
* BFD_RELOC_ALPHA_GPDISP_LO16:           howto manager.      (line  246)
11281
* BFD_RELOC_ALPHA_GPREL_HI16:            howto manager.      (line  297)
11282
* BFD_RELOC_ALPHA_GPREL_LO16:            howto manager.      (line  298)
11283
* BFD_RELOC_ALPHA_HINT:                  howto manager.      (line  284)
11284
* BFD_RELOC_ALPHA_LDA:                   howto manager.      (line  315)
11285
* BFD_RELOC_ALPHA_LINKAGE:               howto manager.      (line  289)
11286
* BFD_RELOC_ALPHA_LITERAL:               howto manager.      (line  257)
11287
* BFD_RELOC_ALPHA_LITUSE:                howto manager.      (line  259)
11288
* BFD_RELOC_ALPHA_NOP:                   howto manager.      (line  307)
11289
* BFD_RELOC_ALPHA_TLSGD:                 howto manager.      (line  323)
11290
* BFD_RELOC_ALPHA_TLSLDM:                howto manager.      (line  324)
11291
* BFD_RELOC_ALPHA_TPREL16:               howto manager.      (line  335)
11292
* BFD_RELOC_ALPHA_TPREL64:               howto manager.      (line  332)
11293
* BFD_RELOC_ALPHA_TPREL_HI16:            howto manager.      (line  333)
11294
* BFD_RELOC_ALPHA_TPREL_LO16:            howto manager.      (line  334)
11295
* BFD_RELOC_ARC_B22_PCREL:               howto manager.      (line 1036)
11296
* BFD_RELOC_ARC_B26:                     howto manager.      (line 1041)
11297
* BFD_RELOC_ARM_ADR_IMM:                 howto manager.      (line  922)
11298
* BFD_RELOC_ARM_ADRL_IMMEDIATE:          howto manager.      (line  908)
11299
* BFD_RELOC_ARM_ALU_PC_G0:               howto manager.      (line  872)
11300
* BFD_RELOC_ARM_ALU_PC_G0_NC:            howto manager.      (line  871)
11301
* BFD_RELOC_ARM_ALU_PC_G1:               howto manager.      (line  874)
11302
* BFD_RELOC_ARM_ALU_PC_G1_NC:            howto manager.      (line  873)
11303
* BFD_RELOC_ARM_ALU_PC_G2:               howto manager.      (line  875)
11304
* BFD_RELOC_ARM_ALU_SB_G0:               howto manager.      (line  886)
11305
* BFD_RELOC_ARM_ALU_SB_G0_NC:            howto manager.      (line  885)
11306
* BFD_RELOC_ARM_ALU_SB_G1:               howto manager.      (line  888)
11307
* BFD_RELOC_ARM_ALU_SB_G1_NC:            howto manager.      (line  887)
11308
* BFD_RELOC_ARM_ALU_SB_G2:               howto manager.      (line  889)
11309
* BFD_RELOC_ARM_CP_OFF_IMM:              howto manager.      (line  918)
11310
* BFD_RELOC_ARM_CP_OFF_IMM_S2:           howto manager.      (line  919)
11311
* BFD_RELOC_ARM_GLOB_DAT:                howto manager.      (line  846)
11312
* BFD_RELOC_ARM_GOT32:                   howto manager.      (line  847)
11313
* BFD_RELOC_ARM_GOT_PREL:                howto manager.      (line  852)
11314
* BFD_RELOC_ARM_GOTOFF:                  howto manager.      (line  850)
11315
* BFD_RELOC_ARM_GOTPC:                   howto manager.      (line  851)
11316
* BFD_RELOC_ARM_HVC:                     howto manager.      (line  915)
11317
* BFD_RELOC_ARM_HWLITERAL:               howto manager.      (line  929)
11318
* BFD_RELOC_ARM_IMMEDIATE:               howto manager.      (line  907)
11319
* BFD_RELOC_ARM_IN_POOL:                 howto manager.      (line  925)
11320
* BFD_RELOC_ARM_IRELATIVE:               howto manager.      (line  904)
11321
* BFD_RELOC_ARM_JUMP_SLOT:               howto manager.      (line  845)
11322
* BFD_RELOC_ARM_LDC_PC_G0:               howto manager.      (line  882)
11323
* BFD_RELOC_ARM_LDC_PC_G1:               howto manager.      (line  883)
11324
* BFD_RELOC_ARM_LDC_PC_G2:               howto manager.      (line  884)
11325
* BFD_RELOC_ARM_LDC_SB_G0:               howto manager.      (line  896)
11326
* BFD_RELOC_ARM_LDC_SB_G1:               howto manager.      (line  897)
11327
* BFD_RELOC_ARM_LDC_SB_G2:               howto manager.      (line  898)
11328
* BFD_RELOC_ARM_LDR_IMM:                 howto manager.      (line  923)
11329
* BFD_RELOC_ARM_LDR_PC_G0:               howto manager.      (line  876)
11330
* BFD_RELOC_ARM_LDR_PC_G1:               howto manager.      (line  877)
11331
* BFD_RELOC_ARM_LDR_PC_G2:               howto manager.      (line  878)
11332
* BFD_RELOC_ARM_LDR_SB_G0:               howto manager.      (line  890)
11333
* BFD_RELOC_ARM_LDR_SB_G1:               howto manager.      (line  891)
11334
* BFD_RELOC_ARM_LDR_SB_G2:               howto manager.      (line  892)
11335
* BFD_RELOC_ARM_LDRS_PC_G0:              howto manager.      (line  879)
11336
* BFD_RELOC_ARM_LDRS_PC_G1:              howto manager.      (line  880)
11337
* BFD_RELOC_ARM_LDRS_PC_G2:              howto manager.      (line  881)
11338
* BFD_RELOC_ARM_LDRS_SB_G0:              howto manager.      (line  893)
11339
* BFD_RELOC_ARM_LDRS_SB_G1:              howto manager.      (line  894)
11340
* BFD_RELOC_ARM_LDRS_SB_G2:              howto manager.      (line  895)
11341
* BFD_RELOC_ARM_LITERAL:                 howto manager.      (line  924)
11342
* BFD_RELOC_ARM_MOVT:                    howto manager.      (line  836)
11343
* BFD_RELOC_ARM_MOVT_PCREL:              howto manager.      (line  838)
11344
* BFD_RELOC_ARM_MOVW:                    howto manager.      (line  835)
11345
* BFD_RELOC_ARM_MOVW_PCREL:              howto manager.      (line  837)
11346
* BFD_RELOC_ARM_MULTI:                   howto manager.      (line  917)
11347
* BFD_RELOC_ARM_OFFSET_IMM:              howto manager.      (line  809)
11348
* BFD_RELOC_ARM_OFFSET_IMM8:             howto manager.      (line  926)
11349
* BFD_RELOC_ARM_PCREL_BLX:               howto manager.      (line  780)
11350
* BFD_RELOC_ARM_PCREL_BRANCH:            howto manager.      (line  776)
11351
* BFD_RELOC_ARM_PCREL_CALL:              howto manager.      (line  790)
11352
* BFD_RELOC_ARM_PCREL_JUMP:              howto manager.      (line  794)
11353
* BFD_RELOC_ARM_PLT32:                   howto manager.      (line  848)
11354
* BFD_RELOC_ARM_PREL31:                  howto manager.      (line  832)
11355
* BFD_RELOC_ARM_RELATIVE:                howto manager.      (line  849)
11356
* BFD_RELOC_ARM_ROSEGREL32:              howto manager.      (line  821)
11357
* BFD_RELOC_ARM_SBREL32:                 howto manager.      (line  824)
11358
* BFD_RELOC_ARM_SHIFT_IMM:               howto manager.      (line  913)
11359
* BFD_RELOC_ARM_SMC:                     howto manager.      (line  914)
11360
* BFD_RELOC_ARM_SWI:                     howto manager.      (line  916)
11361
* BFD_RELOC_ARM_T32_ADD_IMM:             howto manager.      (line  910)
11362
* BFD_RELOC_ARM_T32_ADD_PC12:            howto manager.      (line  912)
11363
* BFD_RELOC_ARM_T32_CP_OFF_IMM:          howto manager.      (line  920)
11364
* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2:       howto manager.      (line  921)
11365
* BFD_RELOC_ARM_T32_IMM12:               howto manager.      (line  911)
11366
* BFD_RELOC_ARM_T32_IMMEDIATE:           howto manager.      (line  909)
11367
* BFD_RELOC_ARM_T32_OFFSET_IMM:          howto manager.      (line  928)
11368
* BFD_RELOC_ARM_T32_OFFSET_U8:           howto manager.      (line  927)
11369
* BFD_RELOC_ARM_TARGET1:                 howto manager.      (line  817)
11370
* BFD_RELOC_ARM_TARGET2:                 howto manager.      (line  827)
11371
* BFD_RELOC_ARM_THM_TLS_CALL:            howto manager.      (line  865)
11372
* BFD_RELOC_ARM_THM_TLS_DESCSEQ:         howto manager.      (line  867)
11373
* BFD_RELOC_ARM_THUMB_ADD:               howto manager.      (line  930)
11374
* BFD_RELOC_ARM_THUMB_IMM:               howto manager.      (line  931)
11375
* BFD_RELOC_ARM_THUMB_MOVT:              howto manager.      (line  840)
11376
* BFD_RELOC_ARM_THUMB_MOVT_PCREL:        howto manager.      (line  842)
11377
* BFD_RELOC_ARM_THUMB_MOVW:              howto manager.      (line  839)
11378
* BFD_RELOC_ARM_THUMB_MOVW_PCREL:        howto manager.      (line  841)
11379
* BFD_RELOC_ARM_THUMB_OFFSET:            howto manager.      (line  813)
11380
* BFD_RELOC_ARM_THUMB_SHIFT:             howto manager.      (line  932)
11381
* BFD_RELOC_ARM_TLS_CALL:                howto manager.      (line  864)
11382
* BFD_RELOC_ARM_TLS_DESC:                howto manager.      (line  868)
11383
* BFD_RELOC_ARM_TLS_DESCSEQ:             howto manager.      (line  866)
11384
* BFD_RELOC_ARM_TLS_DTPMOD32:            howto manager.      (line  859)
11385
* BFD_RELOC_ARM_TLS_DTPOFF32:            howto manager.      (line  858)
11386
* BFD_RELOC_ARM_TLS_GD32:                howto manager.      (line  855)
11387
* BFD_RELOC_ARM_TLS_GOTDESC:             howto manager.      (line  863)
11388
* BFD_RELOC_ARM_TLS_IE32:                howto manager.      (line  861)
11389
* BFD_RELOC_ARM_TLS_LDM32:               howto manager.      (line  857)
11390
* BFD_RELOC_ARM_TLS_LDO32:               howto manager.      (line  856)
11391
* BFD_RELOC_ARM_TLS_LE32:                howto manager.      (line  862)
11392
* BFD_RELOC_ARM_TLS_TPOFF32:             howto manager.      (line  860)
11393
* BFD_RELOC_ARM_V4BX:                    howto manager.      (line  901)
11394
* BFD_RELOC_AVR_13_PCREL:                howto manager.      (line 1591)
11395
* BFD_RELOC_AVR_16_PM:                   howto manager.      (line 1595)
11396
* BFD_RELOC_AVR_6:                       howto manager.      (line 1682)
11397
* BFD_RELOC_AVR_6_ADIW:                  howto manager.      (line 1686)
11398
* BFD_RELOC_AVR_7_PCREL:                 howto manager.      (line 1587)
11399
* BFD_RELOC_AVR_8_HI:                    howto manager.      (line 1694)
11400
* BFD_RELOC_AVR_8_HLO:                   howto manager.      (line 1698)
11401
* BFD_RELOC_AVR_8_LO:                    howto manager.      (line 1690)
11402
* BFD_RELOC_AVR_CALL:                    howto manager.      (line 1674)
11403
* BFD_RELOC_AVR_HH8_LDI:                 howto manager.      (line 1607)
11404
* BFD_RELOC_AVR_HH8_LDI_NEG:             howto manager.      (line 1626)
11405
* BFD_RELOC_AVR_HH8_LDI_PM:              howto manager.      (line 1655)
11406
* BFD_RELOC_AVR_HH8_LDI_PM_NEG:          howto manager.      (line 1669)
11407
* BFD_RELOC_AVR_HI8_LDI:                 howto manager.      (line 1603)
11408
* BFD_RELOC_AVR_HI8_LDI_GS:              howto manager.      (line 1649)
11409
* BFD_RELOC_AVR_HI8_LDI_NEG:             howto manager.      (line 1621)
11410
* BFD_RELOC_AVR_HI8_LDI_PM:              howto manager.      (line 1645)
11411
* BFD_RELOC_AVR_HI8_LDI_PM_NEG:          howto manager.      (line 1664)
11412
* BFD_RELOC_AVR_LDI:                     howto manager.      (line 1678)
11413
* BFD_RELOC_AVR_LO8_LDI:                 howto manager.      (line 1599)
11414
* BFD_RELOC_AVR_LO8_LDI_GS:              howto manager.      (line 1639)
11415
* BFD_RELOC_AVR_LO8_LDI_NEG:             howto manager.      (line 1616)
11416
* BFD_RELOC_AVR_LO8_LDI_PM:              howto manager.      (line 1635)
11417
* BFD_RELOC_AVR_LO8_LDI_PM_NEG:          howto manager.      (line 1660)
11418
* BFD_RELOC_AVR_MS8_LDI:                 howto manager.      (line 1612)
11419
* BFD_RELOC_AVR_MS8_LDI_NEG:             howto manager.      (line 1631)
11420
* BFD_RELOC_BFIN_10_PCREL:               howto manager.      (line 1061)
11421
* BFD_RELOC_BFIN_11_PCREL:               howto manager.      (line 1064)
11422
* BFD_RELOC_BFIN_12_PCREL_JUMP:          howto manager.      (line 1067)
11423
* BFD_RELOC_BFIN_12_PCREL_JUMP_S:        howto manager.      (line 1070)
11424
* BFD_RELOC_BFIN_16_HIGH:                howto manager.      (line 1049)
11425
* BFD_RELOC_BFIN_16_IMM:                 howto manager.      (line 1046)
11426
* BFD_RELOC_BFIN_16_LOW:                 howto manager.      (line 1058)
11427
* BFD_RELOC_BFIN_24_PCREL_CALL_X:        howto manager.      (line 1073)
11428
* BFD_RELOC_BFIN_24_PCREL_JUMP_L:        howto manager.      (line 1076)
11429
* BFD_RELOC_BFIN_4_PCREL:                howto manager.      (line 1052)
11430
* BFD_RELOC_BFIN_5_PCREL:                howto manager.      (line 1055)
11431
* BFD_RELOC_BFIN_FUNCDESC:               howto manager.      (line 1082)
11432
* BFD_RELOC_BFIN_FUNCDESC_GOT17M4:       howto manager.      (line 1083)
11433
* BFD_RELOC_BFIN_FUNCDESC_GOTHI:         howto manager.      (line 1084)
11434
* BFD_RELOC_BFIN_FUNCDESC_GOTLO:         howto manager.      (line 1085)
11435
* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4:    howto manager.      (line 1087)
11436
* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI:      howto manager.      (line 1088)
11437
* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO:      howto manager.      (line 1089)
11438
* BFD_RELOC_BFIN_FUNCDESC_VALUE:         howto manager.      (line 1086)
11439
* BFD_RELOC_BFIN_GOT:                    howto manager.      (line 1095)
11440
* BFD_RELOC_BFIN_GOT17M4:                howto manager.      (line 1079)
11441
* BFD_RELOC_BFIN_GOTHI:                  howto manager.      (line 1080)
11442
* BFD_RELOC_BFIN_GOTLO:                  howto manager.      (line 1081)
11443
* BFD_RELOC_BFIN_GOTOFF17M4:             howto manager.      (line 1090)
11444
* BFD_RELOC_BFIN_GOTOFFHI:               howto manager.      (line 1091)
11445
* BFD_RELOC_BFIN_GOTOFFLO:               howto manager.      (line 1092)
11446
* BFD_RELOC_BFIN_PLTPC:                  howto manager.      (line 1098)
11447
* BFD_RELOC_C6000_ABS_H16:               howto manager.      (line 1450)
11448
* BFD_RELOC_C6000_ABS_L16:               howto manager.      (line 1449)
11449
* BFD_RELOC_C6000_ABS_S16:               howto manager.      (line 1448)
11450
* BFD_RELOC_C6000_ALIGN:                 howto manager.      (line 1471)
11451
* BFD_RELOC_C6000_COPY:                  howto manager.      (line 1466)
11452
* BFD_RELOC_C6000_DSBT_INDEX:            howto manager.      (line 1464)
11453
* BFD_RELOC_C6000_EHTYPE:                howto manager.      (line 1468)
11454
* BFD_RELOC_C6000_FPHEAD:                howto manager.      (line 1472)
11455
* BFD_RELOC_C6000_JUMP_SLOT:             howto manager.      (line 1467)
11456
* BFD_RELOC_C6000_NOCMP:                 howto manager.      (line 1473)
11457
* BFD_RELOC_C6000_PCR_H16:               howto manager.      (line 1469)
11458
* BFD_RELOC_C6000_PCR_L16:               howto manager.      (line 1470)
11459
* BFD_RELOC_C6000_PCR_S10:               howto manager.      (line 1446)
11460
* BFD_RELOC_C6000_PCR_S12:               howto manager.      (line 1445)
11461
* BFD_RELOC_C6000_PCR_S21:               howto manager.      (line 1444)
11462
* BFD_RELOC_C6000_PCR_S7:                howto manager.      (line 1447)
11463
* BFD_RELOC_C6000_PREL31:                howto manager.      (line 1465)
11464
* BFD_RELOC_C6000_SBR_GOT_H16_W:         howto manager.      (line 1463)
11465
* BFD_RELOC_C6000_SBR_GOT_L16_W:         howto manager.      (line 1462)
11466
* BFD_RELOC_C6000_SBR_GOT_U15_W:         howto manager.      (line 1461)
11467
* BFD_RELOC_C6000_SBR_H16_B:             howto manager.      (line 1458)
11468
* BFD_RELOC_C6000_SBR_H16_H:             howto manager.      (line 1459)
11469
* BFD_RELOC_C6000_SBR_H16_W:             howto manager.      (line 1460)
11470
* BFD_RELOC_C6000_SBR_L16_B:             howto manager.      (line 1455)
11471
* BFD_RELOC_C6000_SBR_L16_H:             howto manager.      (line 1456)
11472
* BFD_RELOC_C6000_SBR_L16_W:             howto manager.      (line 1457)
11473
* BFD_RELOC_C6000_SBR_S16:               howto manager.      (line 1454)
11474
* BFD_RELOC_C6000_SBR_U15_B:             howto manager.      (line 1451)
11475
* BFD_RELOC_C6000_SBR_U15_H:             howto manager.      (line 1452)
11476
* BFD_RELOC_C6000_SBR_U15_W:             howto manager.      (line 1453)
11477
* bfd_reloc_code_type:                   howto manager.      (line   10)
11478
* BFD_RELOC_CR16_ABS20:                  howto manager.      (line 2198)
11479
* BFD_RELOC_CR16_ABS24:                  howto manager.      (line 2199)
11480
* BFD_RELOC_CR16_DISP16:                 howto manager.      (line 2209)
11481
* BFD_RELOC_CR16_DISP20:                 howto manager.      (line 2210)
11482
* BFD_RELOC_CR16_DISP24:                 howto manager.      (line 2211)
11483
* BFD_RELOC_CR16_DISP24a:                howto manager.      (line 2212)
11484
* BFD_RELOC_CR16_DISP4:                  howto manager.      (line 2207)
11485
* BFD_RELOC_CR16_DISP8:                  howto manager.      (line 2208)
11486
* BFD_RELOC_CR16_GLOB_DAT:               howto manager.      (line 2218)
11487
* BFD_RELOC_CR16_GOT_REGREL20:           howto manager.      (line 2216)
11488
* BFD_RELOC_CR16_GOTC_REGREL20:          howto manager.      (line 2217)
11489
* BFD_RELOC_CR16_IMM16:                  howto manager.      (line 2202)
11490
* BFD_RELOC_CR16_IMM20:                  howto manager.      (line 2203)
11491
* BFD_RELOC_CR16_IMM24:                  howto manager.      (line 2204)
11492
* BFD_RELOC_CR16_IMM32:                  howto manager.      (line 2205)
11493
* BFD_RELOC_CR16_IMM32a:                 howto manager.      (line 2206)
11494
* BFD_RELOC_CR16_IMM4:                   howto manager.      (line 2200)
11495
* BFD_RELOC_CR16_IMM8:                   howto manager.      (line 2201)
11496
* BFD_RELOC_CR16_NUM16:                  howto manager.      (line 2187)
11497
* BFD_RELOC_CR16_NUM32:                  howto manager.      (line 2188)
11498
* BFD_RELOC_CR16_NUM32a:                 howto manager.      (line 2189)
11499
* BFD_RELOC_CR16_NUM8:                   howto manager.      (line 2186)
11500
* BFD_RELOC_CR16_REGREL0:                howto manager.      (line 2190)
11501
* BFD_RELOC_CR16_REGREL14:               howto manager.      (line 2193)
11502
* BFD_RELOC_CR16_REGREL14a:              howto manager.      (line 2194)
11503
* BFD_RELOC_CR16_REGREL16:               howto manager.      (line 2195)
11504
* BFD_RELOC_CR16_REGREL20:               howto manager.      (line 2196)
11505
* BFD_RELOC_CR16_REGREL20a:              howto manager.      (line 2197)
11506
* BFD_RELOC_CR16_REGREL4:                howto manager.      (line 2191)
11507
* BFD_RELOC_CR16_REGREL4a:               howto manager.      (line 2192)
11508
* BFD_RELOC_CR16_SWITCH16:               howto manager.      (line 2214)
11509
* BFD_RELOC_CR16_SWITCH32:               howto manager.      (line 2215)
11510
* BFD_RELOC_CR16_SWITCH8:                howto manager.      (line 2213)
11511
* BFD_RELOC_CRIS_16_DTPREL:              howto manager.      (line 2289)
11512
* BFD_RELOC_CRIS_16_GOT:                 howto manager.      (line 2265)
11513
* BFD_RELOC_CRIS_16_GOT_GD:              howto manager.      (line 2285)
11514
* BFD_RELOC_CRIS_16_GOT_TPREL:           howto manager.      (line 2291)
11515
* BFD_RELOC_CRIS_16_GOTPLT:              howto manager.      (line 2271)
11516
* BFD_RELOC_CRIS_16_TPREL:               howto manager.      (line 2293)
11517
* BFD_RELOC_CRIS_32_DTPREL:              howto manager.      (line 2288)
11518
* BFD_RELOC_CRIS_32_GD:                  howto manager.      (line 2286)
11519
* BFD_RELOC_CRIS_32_GOT:                 howto manager.      (line 2262)
11520
* BFD_RELOC_CRIS_32_GOT_GD:              howto manager.      (line 2284)
11521
* BFD_RELOC_CRIS_32_GOT_TPREL:           howto manager.      (line 2290)
11522
* BFD_RELOC_CRIS_32_GOTPLT:              howto manager.      (line 2268)
11523
* BFD_RELOC_CRIS_32_GOTREL:              howto manager.      (line 2274)
11524
* BFD_RELOC_CRIS_32_IE:                  howto manager.      (line 2295)
11525
* BFD_RELOC_CRIS_32_PLT_GOTREL:          howto manager.      (line 2277)
11526
* BFD_RELOC_CRIS_32_PLT_PCREL:           howto manager.      (line 2280)
11527
* BFD_RELOC_CRIS_32_TPREL:               howto manager.      (line 2292)
11528
* BFD_RELOC_CRIS_BDISP8:                 howto manager.      (line 2243)
11529
* BFD_RELOC_CRIS_COPY:                   howto manager.      (line 2256)
11530
* BFD_RELOC_CRIS_DTP:                    howto manager.      (line 2287)
11531
* BFD_RELOC_CRIS_DTPMOD:                 howto manager.      (line 2294)
11532
* BFD_RELOC_CRIS_GLOB_DAT:               howto manager.      (line 2257)
11533
* BFD_RELOC_CRIS_JUMP_SLOT:              howto manager.      (line 2258)
11534
* BFD_RELOC_CRIS_LAPCQ_OFFSET:           howto manager.      (line 2251)
11535
* BFD_RELOC_CRIS_RELATIVE:               howto manager.      (line 2259)
11536
* BFD_RELOC_CRIS_SIGNED_16:              howto manager.      (line 2249)
11537
* BFD_RELOC_CRIS_SIGNED_6:               howto manager.      (line 2245)
11538
* BFD_RELOC_CRIS_SIGNED_8:               howto manager.      (line 2247)
11539
* BFD_RELOC_CRIS_UNSIGNED_16:            howto manager.      (line 2250)
11540
* BFD_RELOC_CRIS_UNSIGNED_4:             howto manager.      (line 2252)
11541
* BFD_RELOC_CRIS_UNSIGNED_5:             howto manager.      (line 2244)
11542
* BFD_RELOC_CRIS_UNSIGNED_6:             howto manager.      (line 2246)
11543
* BFD_RELOC_CRIS_UNSIGNED_8:             howto manager.      (line 2248)
11544
* BFD_RELOC_CRX_ABS16:                   howto manager.      (line 2231)
11545
* BFD_RELOC_CRX_ABS32:                   howto manager.      (line 2232)
11546
* BFD_RELOC_CRX_IMM16:                   howto manager.      (line 2236)
11547
* BFD_RELOC_CRX_IMM32:                   howto manager.      (line 2237)
11548
* BFD_RELOC_CRX_NUM16:                   howto manager.      (line 2234)
11549
* BFD_RELOC_CRX_NUM32:                   howto manager.      (line 2235)
11550
* BFD_RELOC_CRX_NUM8:                    howto manager.      (line 2233)
11551
* BFD_RELOC_CRX_REGREL12:                howto manager.      (line 2227)
11552
* BFD_RELOC_CRX_REGREL22:                howto manager.      (line 2228)
11553
* BFD_RELOC_CRX_REGREL28:                howto manager.      (line 2229)
11554
* BFD_RELOC_CRX_REGREL32:                howto manager.      (line 2230)
11555
* BFD_RELOC_CRX_REL16:                   howto manager.      (line 2224)
11556
* BFD_RELOC_CRX_REL24:                   howto manager.      (line 2225)
11557
* BFD_RELOC_CRX_REL32:                   howto manager.      (line 2226)
11558
* BFD_RELOC_CRX_REL4:                    howto manager.      (line 2221)
11559
* BFD_RELOC_CRX_REL8:                    howto manager.      (line 2222)
11560
* BFD_RELOC_CRX_REL8_CMP:                howto manager.      (line 2223)
11561
* BFD_RELOC_CRX_SWITCH16:                howto manager.      (line 2239)
11562
* BFD_RELOC_CRX_SWITCH32:                howto manager.      (line 2240)
11563
* BFD_RELOC_CRX_SWITCH8:                 howto manager.      (line 2238)
11564
* BFD_RELOC_CTOR:                        howto manager.      (line  770)
11565
* BFD_RELOC_D10V_10_PCREL_L:             howto manager.      (line 1165)
11566
* BFD_RELOC_D10V_10_PCREL_R:             howto manager.      (line 1161)
11567
* BFD_RELOC_D10V_18:                     howto manager.      (line 1170)
11568
* BFD_RELOC_D10V_18_PCREL:               howto manager.      (line 1173)
11569
* BFD_RELOC_D30V_15:                     howto manager.      (line 1188)
11570
* BFD_RELOC_D30V_15_PCREL:               howto manager.      (line 1192)
11571
* BFD_RELOC_D30V_15_PCREL_R:             howto manager.      (line 1196)
11572
* BFD_RELOC_D30V_21:                     howto manager.      (line 1201)
11573
* BFD_RELOC_D30V_21_PCREL:               howto manager.      (line 1205)
11574
* BFD_RELOC_D30V_21_PCREL_R:             howto manager.      (line 1209)
11575
* BFD_RELOC_D30V_32:                     howto manager.      (line 1214)
11576
* BFD_RELOC_D30V_32_PCREL:               howto manager.      (line 1217)
11577
* BFD_RELOC_D30V_6:                      howto manager.      (line 1176)
11578
* BFD_RELOC_D30V_9_PCREL:                howto manager.      (line 1179)
11579
* BFD_RELOC_D30V_9_PCREL_R:              howto manager.      (line 1183)
11580
* BFD_RELOC_DLX_HI16_S:                  howto manager.      (line 1220)
11581
* BFD_RELOC_DLX_JMP26:                   howto manager.      (line 1226)
11582
* BFD_RELOC_DLX_LO16:                    howto manager.      (line 1223)
11583
* BFD_RELOC_EPIPHANY_HIGH:               howto manager.      (line 3044)
11584
* BFD_RELOC_EPIPHANY_IMM11:              howto manager.      (line 3053)
11585
* BFD_RELOC_EPIPHANY_IMM8:               howto manager.      (line 3057)
11586
* BFD_RELOC_EPIPHANY_LOW:                howto manager.      (line 3047)
11587
* BFD_RELOC_EPIPHANY_SIMM11:             howto manager.      (line 3050)
11588
* BFD_RELOC_EPIPHANY_SIMM24:             howto manager.      (line 3041)
11589
* BFD_RELOC_EPIPHANY_SIMM8:              howto manager.      (line 3038)
11590
* BFD_RELOC_FR30_10_IN_8:                howto manager.      (line 1495)
11591
* BFD_RELOC_FR30_12_PCREL:               howto manager.      (line 1503)
11592
* BFD_RELOC_FR30_20:                     howto manager.      (line 1479)
11593
* BFD_RELOC_FR30_48:                     howto manager.      (line 1476)
11594
* BFD_RELOC_FR30_6_IN_4:                 howto manager.      (line 1483)
11595
* BFD_RELOC_FR30_8_IN_8:                 howto manager.      (line 1487)
11596
* BFD_RELOC_FR30_9_IN_8:                 howto manager.      (line 1491)
11597
* BFD_RELOC_FR30_9_PCREL:                howto manager.      (line 1499)
11598
* BFD_RELOC_FRV_FUNCDESC:                howto manager.      (line  486)
11599
* BFD_RELOC_FRV_FUNCDESC_GOT12:          howto manager.      (line  487)
11600
* BFD_RELOC_FRV_FUNCDESC_GOTHI:          howto manager.      (line  488)
11601
* BFD_RELOC_FRV_FUNCDESC_GOTLO:          howto manager.      (line  489)
11602
* BFD_RELOC_FRV_FUNCDESC_GOTOFF12:       howto manager.      (line  491)
11603
* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI:       howto manager.      (line  492)
11604
* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO:       howto manager.      (line  493)
11605
* BFD_RELOC_FRV_FUNCDESC_VALUE:          howto manager.      (line  490)
11606
* BFD_RELOC_FRV_GETTLSOFF:               howto manager.      (line  497)
11607
* BFD_RELOC_FRV_GETTLSOFF_RELAX:         howto manager.      (line  510)
11608
* BFD_RELOC_FRV_GOT12:                   howto manager.      (line  483)
11609
* BFD_RELOC_FRV_GOTHI:                   howto manager.      (line  484)
11610
* BFD_RELOC_FRV_GOTLO:                   howto manager.      (line  485)
11611
* BFD_RELOC_FRV_GOTOFF12:                howto manager.      (line  494)
11612
* BFD_RELOC_FRV_GOTOFFHI:                howto manager.      (line  495)
11613
* BFD_RELOC_FRV_GOTOFFLO:                howto manager.      (line  496)
11614
* BFD_RELOC_FRV_GOTTLSDESC12:            howto manager.      (line  499)
11615
* BFD_RELOC_FRV_GOTTLSDESCHI:            howto manager.      (line  500)
11616
* BFD_RELOC_FRV_GOTTLSDESCLO:            howto manager.      (line  501)
11617
* BFD_RELOC_FRV_GOTTLSOFF12:             howto manager.      (line  505)
11618
* BFD_RELOC_FRV_GOTTLSOFFHI:             howto manager.      (line  506)
11619
* BFD_RELOC_FRV_GOTTLSOFFLO:             howto manager.      (line  507)
11620
* BFD_RELOC_FRV_GPREL12:                 howto manager.      (line  478)
11621
* BFD_RELOC_FRV_GPREL32:                 howto manager.      (line  480)
11622
* BFD_RELOC_FRV_GPRELHI:                 howto manager.      (line  481)
11623
* BFD_RELOC_FRV_GPRELLO:                 howto manager.      (line  482)
11624
* BFD_RELOC_FRV_GPRELU12:                howto manager.      (line  479)
11625
* BFD_RELOC_FRV_HI16:                    howto manager.      (line  477)
11626
* BFD_RELOC_FRV_LABEL16:                 howto manager.      (line  474)
11627
* BFD_RELOC_FRV_LABEL24:                 howto manager.      (line  475)
11628
* BFD_RELOC_FRV_LO16:                    howto manager.      (line  476)
11629
* BFD_RELOC_FRV_TLSDESC_RELAX:           howto manager.      (line  509)
11630
* BFD_RELOC_FRV_TLSDESC_VALUE:           howto manager.      (line  498)
11631
* BFD_RELOC_FRV_TLSMOFF:                 howto manager.      (line  512)
11632
* BFD_RELOC_FRV_TLSMOFF12:               howto manager.      (line  502)
11633
* BFD_RELOC_FRV_TLSMOFFHI:               howto manager.      (line  503)
11634
* BFD_RELOC_FRV_TLSMOFFLO:               howto manager.      (line  504)
11635
* BFD_RELOC_FRV_TLSOFF:                  howto manager.      (line  508)
11636
* BFD_RELOC_FRV_TLSOFF_RELAX:            howto manager.      (line  511)
11637
* BFD_RELOC_GPREL16:                     howto manager.      (line  121)
11638
* BFD_RELOC_GPREL32:                     howto manager.      (line  122)
11639
* BFD_RELOC_H8_DIR16A8:                  howto manager.      (line 2358)
11640
* BFD_RELOC_H8_DIR16R8:                  howto manager.      (line 2359)
11641
* BFD_RELOC_H8_DIR24A8:                  howto manager.      (line 2360)
11642
* BFD_RELOC_H8_DIR24R8:                  howto manager.      (line 2361)
11643
* BFD_RELOC_H8_DIR32A16:                 howto manager.      (line 2362)
11644
* BFD_RELOC_HI16:                        howto manager.      (line  348)
11645
* BFD_RELOC_HI16_BASEREL:                howto manager.      (line   97)
11646
* BFD_RELOC_HI16_GOTOFF:                 howto manager.      (line   57)
11647
* BFD_RELOC_HI16_PCREL:                  howto manager.      (line  360)
11648
* BFD_RELOC_HI16_PLTOFF:                 howto manager.      (line   69)
11649
* BFD_RELOC_HI16_S:                      howto manager.      (line  351)
11650
* BFD_RELOC_HI16_S_BASEREL:              howto manager.      (line   98)
11651
* BFD_RELOC_HI16_S_GOTOFF:               howto manager.      (line   58)
11652
* BFD_RELOC_HI16_S_PCREL:                howto manager.      (line  363)
11653
* BFD_RELOC_HI16_S_PLTOFF:               howto manager.      (line   70)
11654
* BFD_RELOC_HI22:                        howto manager.      (line  116)
11655
* BFD_RELOC_I370_D12:                    howto manager.      (line  767)
11656
* BFD_RELOC_I960_CALLJ:                  howto manager.      (line  128)
11657
* BFD_RELOC_IA64_COPY:                   howto manager.      (line 2018)
11658
* BFD_RELOC_IA64_DIR32LSB:               howto manager.      (line 1963)
11659
* BFD_RELOC_IA64_DIR32MSB:               howto manager.      (line 1962)
11660
* BFD_RELOC_IA64_DIR64LSB:               howto manager.      (line 1965)
11661
* BFD_RELOC_IA64_DIR64MSB:               howto manager.      (line 1964)
11662
* BFD_RELOC_IA64_DTPMOD64LSB:            howto manager.      (line 2028)
11663
* BFD_RELOC_IA64_DTPMOD64MSB:            howto manager.      (line 2027)
11664
* BFD_RELOC_IA64_DTPREL14:               howto manager.      (line 2030)
11665
* BFD_RELOC_IA64_DTPREL22:               howto manager.      (line 2031)
11666
* BFD_RELOC_IA64_DTPREL32LSB:            howto manager.      (line 2034)
11667
* BFD_RELOC_IA64_DTPREL32MSB:            howto manager.      (line 2033)
11668
* BFD_RELOC_IA64_DTPREL64I:              howto manager.      (line 2032)
11669
* BFD_RELOC_IA64_DTPREL64LSB:            howto manager.      (line 2036)
11670
* BFD_RELOC_IA64_DTPREL64MSB:            howto manager.      (line 2035)
11671
* BFD_RELOC_IA64_FPTR32LSB:              howto manager.      (line 1980)
11672
* BFD_RELOC_IA64_FPTR32MSB:              howto manager.      (line 1979)
11673
* BFD_RELOC_IA64_FPTR64I:                howto manager.      (line 1978)
11674
* BFD_RELOC_IA64_FPTR64LSB:              howto manager.      (line 1982)
11675
* BFD_RELOC_IA64_FPTR64MSB:              howto manager.      (line 1981)
11676
* BFD_RELOC_IA64_GPREL22:                howto manager.      (line 1966)
11677
* BFD_RELOC_IA64_GPREL32LSB:             howto manager.      (line 1969)
11678
* BFD_RELOC_IA64_GPREL32MSB:             howto manager.      (line 1968)
11679
* BFD_RELOC_IA64_GPREL64I:               howto manager.      (line 1967)
11680
* BFD_RELOC_IA64_GPREL64LSB:             howto manager.      (line 1971)
11681
* BFD_RELOC_IA64_GPREL64MSB:             howto manager.      (line 1970)
11682
* BFD_RELOC_IA64_IMM14:                  howto manager.      (line 1959)
11683
* BFD_RELOC_IA64_IMM22:                  howto manager.      (line 1960)
11684
* BFD_RELOC_IA64_IMM64:                  howto manager.      (line 1961)
11685
* BFD_RELOC_IA64_IPLTLSB:                howto manager.      (line 2017)
11686
* BFD_RELOC_IA64_IPLTMSB:                howto manager.      (line 2016)
11687
* BFD_RELOC_IA64_LDXMOV:                 howto manager.      (line 2020)
11688
* BFD_RELOC_IA64_LTOFF22:                howto manager.      (line 1972)
11689
* BFD_RELOC_IA64_LTOFF22X:               howto manager.      (line 2019)
11690
* BFD_RELOC_IA64_LTOFF64I:               howto manager.      (line 1973)
11691
* BFD_RELOC_IA64_LTOFF_DTPMOD22:         howto manager.      (line 2029)
11692
* BFD_RELOC_IA64_LTOFF_DTPREL22:         howto manager.      (line 2037)
11693
* BFD_RELOC_IA64_LTOFF_FPTR22:           howto manager.      (line 1994)
11694
* BFD_RELOC_IA64_LTOFF_FPTR32LSB:        howto manager.      (line 1997)
11695
* BFD_RELOC_IA64_LTOFF_FPTR32MSB:        howto manager.      (line 1996)
11696
* BFD_RELOC_IA64_LTOFF_FPTR64I:          howto manager.      (line 1995)
11697
* BFD_RELOC_IA64_LTOFF_FPTR64LSB:        howto manager.      (line 1999)
11698
* BFD_RELOC_IA64_LTOFF_FPTR64MSB:        howto manager.      (line 1998)
11699
* BFD_RELOC_IA64_LTOFF_TPREL22:          howto manager.      (line 2026)
11700
* BFD_RELOC_IA64_LTV32LSB:               howto manager.      (line 2013)
11701
* BFD_RELOC_IA64_LTV32MSB:               howto manager.      (line 2012)
11702
* BFD_RELOC_IA64_LTV64LSB:               howto manager.      (line 2015)
11703
* BFD_RELOC_IA64_LTV64MSB:               howto manager.      (line 2014)
11704
* BFD_RELOC_IA64_PCREL21B:               howto manager.      (line 1983)
11705
* BFD_RELOC_IA64_PCREL21BI:              howto manager.      (line 1984)
11706
* BFD_RELOC_IA64_PCREL21F:               howto manager.      (line 1986)
11707
* BFD_RELOC_IA64_PCREL21M:               howto manager.      (line 1985)
11708
* BFD_RELOC_IA64_PCREL22:                howto manager.      (line 1987)
11709
* BFD_RELOC_IA64_PCREL32LSB:             howto manager.      (line 1991)
11710
* BFD_RELOC_IA64_PCREL32MSB:             howto manager.      (line 1990)
11711
* BFD_RELOC_IA64_PCREL60B:               howto manager.      (line 1988)
11712
* BFD_RELOC_IA64_PCREL64I:               howto manager.      (line 1989)
11713
* BFD_RELOC_IA64_PCREL64LSB:             howto manager.      (line 1993)
11714
* BFD_RELOC_IA64_PCREL64MSB:             howto manager.      (line 1992)
11715
* BFD_RELOC_IA64_PLTOFF22:               howto manager.      (line 1974)
11716
* BFD_RELOC_IA64_PLTOFF64I:              howto manager.      (line 1975)
11717
* BFD_RELOC_IA64_PLTOFF64LSB:            howto manager.      (line 1977)
11718
* BFD_RELOC_IA64_PLTOFF64MSB:            howto manager.      (line 1976)
11719
* BFD_RELOC_IA64_REL32LSB:               howto manager.      (line 2009)
11720
* BFD_RELOC_IA64_REL32MSB:               howto manager.      (line 2008)
11721
* BFD_RELOC_IA64_REL64LSB:               howto manager.      (line 2011)
11722
* BFD_RELOC_IA64_REL64MSB:               howto manager.      (line 2010)
11723
* BFD_RELOC_IA64_SECREL32LSB:            howto manager.      (line 2005)
11724
* BFD_RELOC_IA64_SECREL32MSB:            howto manager.      (line 2004)
11725
* BFD_RELOC_IA64_SECREL64LSB:            howto manager.      (line 2007)
11726
* BFD_RELOC_IA64_SECREL64MSB:            howto manager.      (line 2006)
11727
* BFD_RELOC_IA64_SEGREL32LSB:            howto manager.      (line 2001)
11728
* BFD_RELOC_IA64_SEGREL32MSB:            howto manager.      (line 2000)
11729
* BFD_RELOC_IA64_SEGREL64LSB:            howto manager.      (line 2003)
11730
* BFD_RELOC_IA64_SEGREL64MSB:            howto manager.      (line 2002)
11731
* BFD_RELOC_IA64_TPREL14:                howto manager.      (line 2021)
11732
* BFD_RELOC_IA64_TPREL22:                howto manager.      (line 2022)
11733
* BFD_RELOC_IA64_TPREL64I:               howto manager.      (line 2023)
11734
* BFD_RELOC_IA64_TPREL64LSB:             howto manager.      (line 2025)
11735
* BFD_RELOC_IA64_TPREL64MSB:             howto manager.      (line 2024)
11736
* BFD_RELOC_IP2K_ADDR16CJP:              howto manager.      (line 1911)
11737
* BFD_RELOC_IP2K_BANK:                   howto manager.      (line 1908)
11738
* BFD_RELOC_IP2K_EX8DATA:                howto manager.      (line 1919)
11739
* BFD_RELOC_IP2K_FR9:                    howto manager.      (line 1905)
11740
* BFD_RELOC_IP2K_FR_OFFSET:              howto manager.      (line 1932)
11741
* BFD_RELOC_IP2K_HI8DATA:                howto manager.      (line 1918)
11742
* BFD_RELOC_IP2K_HI8INSN:                howto manager.      (line 1923)
11743
* BFD_RELOC_IP2K_LO8DATA:                howto manager.      (line 1917)
11744
* BFD_RELOC_IP2K_LO8INSN:                howto manager.      (line 1922)
11745
* BFD_RELOC_IP2K_PAGE3:                  howto manager.      (line 1914)
11746
* BFD_RELOC_IP2K_PC_SKIP:                howto manager.      (line 1926)
11747
* BFD_RELOC_IP2K_TEXT:                   howto manager.      (line 1929)
11748
* BFD_RELOC_IQ2000_OFFSET_16:            howto manager.      (line 2412)
11749
* BFD_RELOC_IQ2000_OFFSET_21:            howto manager.      (line 2413)
11750
* BFD_RELOC_IQ2000_UHI16:                howto manager.      (line 2414)
11751
* BFD_RELOC_LM32_16_GOT:                 howto manager.      (line 2519)
11752
* BFD_RELOC_LM32_BRANCH:                 howto manager.      (line 2518)
11753
* BFD_RELOC_LM32_CALL:                   howto manager.      (line 2517)
11754
* BFD_RELOC_LM32_COPY:                   howto manager.      (line 2522)
11755
* BFD_RELOC_LM32_GLOB_DAT:               howto manager.      (line 2523)
11756
* BFD_RELOC_LM32_GOTOFF_HI16:            howto manager.      (line 2520)
11757
* BFD_RELOC_LM32_GOTOFF_LO16:            howto manager.      (line 2521)
11758
* BFD_RELOC_LM32_JMP_SLOT:               howto manager.      (line 2524)
11759
* BFD_RELOC_LM32_RELATIVE:               howto manager.      (line 2525)
11760
* BFD_RELOC_LO10:                        howto manager.      (line  117)
11761
* BFD_RELOC_LO16:                        howto manager.      (line  357)
11762
* BFD_RELOC_LO16_BASEREL:                howto manager.      (line   96)
11763
* BFD_RELOC_LO16_GOTOFF:                 howto manager.      (line   56)
11764
* BFD_RELOC_LO16_PCREL:                  howto manager.      (line  366)
11765
* BFD_RELOC_LO16_PLTOFF:                 howto manager.      (line   68)
11766
* BFD_RELOC_M32C_HI8:                    howto manager.      (line 1229)
11767
* BFD_RELOC_M32C_RL_1ADDR:               howto manager.      (line 1231)
11768
* BFD_RELOC_M32C_RL_2ADDR:               howto manager.      (line 1232)
11769
* BFD_RELOC_M32C_RL_JUMP:                howto manager.      (line 1230)
11770
* BFD_RELOC_M32R_10_PCREL:               howto manager.      (line 1239)
11771
* BFD_RELOC_M32R_18_PCREL:               howto manager.      (line 1243)
11772
* BFD_RELOC_M32R_24:                     howto manager.      (line 1235)
11773
* BFD_RELOC_M32R_26_PCREL:               howto manager.      (line 1246)
11774
* BFD_RELOC_M32R_26_PLTREL:              howto manager.      (line 1265)
11775
* BFD_RELOC_M32R_COPY:                   howto manager.      (line 1266)
11776
* BFD_RELOC_M32R_GLOB_DAT:               howto manager.      (line 1267)
11777
* BFD_RELOC_M32R_GOT16_HI_SLO:           howto manager.      (line 1276)
11778
* BFD_RELOC_M32R_GOT16_HI_ULO:           howto manager.      (line 1275)
11779
* BFD_RELOC_M32R_GOT16_LO:               howto manager.      (line 1277)
11780
* BFD_RELOC_M32R_GOT24:                  howto manager.      (line 1264)
11781
* BFD_RELOC_M32R_GOTOFF:                 howto manager.      (line 1270)
11782
* BFD_RELOC_M32R_GOTOFF_HI_SLO:          howto manager.      (line 1272)
11783
* BFD_RELOC_M32R_GOTOFF_HI_ULO:          howto manager.      (line 1271)
11784
* BFD_RELOC_M32R_GOTOFF_LO:              howto manager.      (line 1273)
11785
* BFD_RELOC_M32R_GOTPC24:                howto manager.      (line 1274)
11786
* BFD_RELOC_M32R_GOTPC_HI_SLO:           howto manager.      (line 1279)
11787
* BFD_RELOC_M32R_GOTPC_HI_ULO:           howto manager.      (line 1278)
11788
* BFD_RELOC_M32R_GOTPC_LO:               howto manager.      (line 1280)
11789
* BFD_RELOC_M32R_HI16_SLO:               howto manager.      (line 1253)
11790
* BFD_RELOC_M32R_HI16_ULO:               howto manager.      (line 1249)
11791
* BFD_RELOC_M32R_JMP_SLOT:               howto manager.      (line 1268)
11792
* BFD_RELOC_M32R_LO16:                   howto manager.      (line 1257)
11793
* BFD_RELOC_M32R_RELATIVE:               howto manager.      (line 1269)
11794
* BFD_RELOC_M32R_SDA16:                  howto manager.      (line 1260)
11795
* BFD_RELOC_M68HC11_24:                  howto manager.      (line 2073)
11796
* BFD_RELOC_M68HC11_3B:                  howto manager.      (line 2048)
11797
* BFD_RELOC_M68HC11_HI8:                 howto manager.      (line 2040)
11798
* BFD_RELOC_M68HC11_LO16:                howto manager.      (line 2062)
11799
* BFD_RELOC_M68HC11_LO8:                 howto manager.      (line 2044)
11800
* BFD_RELOC_M68HC11_PAGE:                howto manager.      (line 2068)
11801
* BFD_RELOC_M68HC11_RL_GROUP:            howto manager.      (line 2057)
11802
* BFD_RELOC_M68HC11_RL_JUMP:             howto manager.      (line 2051)
11803
* BFD_RELOC_M68HC12_10_PCREL:            howto manager.      (line 2133)
11804
* BFD_RELOC_M68HC12_16B:                 howto manager.      (line 2127)
11805
* BFD_RELOC_M68HC12_5B:                  howto manager.      (line 2079)
11806
* BFD_RELOC_M68HC12_9_PCREL:             howto manager.      (line 2130)
11807
* BFD_RELOC_M68HC12_9B:                  howto manager.      (line 2124)
11808
* BFD_RELOC_M68HC12_HI8XG:               howto manager.      (line 2140)
11809
* BFD_RELOC_M68HC12_LO8XG:               howto manager.      (line 2136)
11810
* BFD_RELOC_MACH_O_LOCAL_SECTDIFF:       howto manager.      (line 2532)
11811
* BFD_RELOC_MACH_O_PAIR:                 howto manager.      (line 2535)
11812
* BFD_RELOC_MACH_O_SECTDIFF:             howto manager.      (line 2528)
11813
* BFD_RELOC_MACH_O_X86_64_BRANCH32:      howto manager.      (line 2538)
11814
* BFD_RELOC_MACH_O_X86_64_BRANCH8:       howto manager.      (line 2539)
11815
* BFD_RELOC_MACH_O_X86_64_GOT:           howto manager.      (line 2543)
11816
* BFD_RELOC_MACH_O_X86_64_GOT_LOAD:      howto manager.      (line 2546)
11817
* BFD_RELOC_MACH_O_X86_64_PCREL32_1:     howto manager.      (line 2556)
11818
* BFD_RELOC_MACH_O_X86_64_PCREL32_2:     howto manager.      (line 2559)
11819
* BFD_RELOC_MACH_O_X86_64_PCREL32_4:     howto manager.      (line 2562)
11820
* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32:  howto manager.      (line 2550)
11821
* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64:  howto manager.      (line 2553)
11822
* BFD_RELOC_MCORE_PCREL_32:              howto manager.      (line 1510)
11823
* BFD_RELOC_MCORE_PCREL_IMM11BY2:        howto manager.      (line 1508)
11824
* BFD_RELOC_MCORE_PCREL_IMM4BY2:         howto manager.      (line 1509)
11825
* BFD_RELOC_MCORE_PCREL_IMM8BY4:         howto manager.      (line 1507)
11826
* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2:    howto manager.      (line 1511)
11827
* BFD_RELOC_MCORE_RVA:                   howto manager.      (line 1512)
11828
* BFD_RELOC_MEP_16:                      howto manager.      (line 1516)
11829
* BFD_RELOC_MEP_32:                      howto manager.      (line 1517)
11830
* BFD_RELOC_MEP_8:                       howto manager.      (line 1515)
11831
* BFD_RELOC_MEP_ADDR24A4:                howto manager.      (line 1532)
11832
* BFD_RELOC_MEP_GNU_VTENTRY:             howto manager.      (line 1534)
11833
* BFD_RELOC_MEP_GNU_VTINHERIT:           howto manager.      (line 1533)
11834
* BFD_RELOC_MEP_GPREL:                   howto manager.      (line 1526)
11835
* BFD_RELOC_MEP_HI16S:                   howto manager.      (line 1525)
11836
* BFD_RELOC_MEP_HI16U:                   howto manager.      (line 1524)
11837
* BFD_RELOC_MEP_LOW16:                   howto manager.      (line 1523)
11838
* BFD_RELOC_MEP_PCABS24A2:               howto manager.      (line 1522)
11839
* BFD_RELOC_MEP_PCREL12A2:               howto manager.      (line 1519)
11840
* BFD_RELOC_MEP_PCREL17A2:               howto manager.      (line 1520)
11841
* BFD_RELOC_MEP_PCREL24A2:               howto manager.      (line 1521)
11842
* BFD_RELOC_MEP_PCREL8A2:                howto manager.      (line 1518)
11843
* BFD_RELOC_MEP_TPREL:                   howto manager.      (line 1527)
11844
* BFD_RELOC_MEP_TPREL7:                  howto manager.      (line 1528)
11845
* BFD_RELOC_MEP_TPREL7A2:                howto manager.      (line 1529)
11846
* BFD_RELOC_MEP_TPREL7A4:                howto manager.      (line 1530)
11847
* BFD_RELOC_MEP_UIMM24:                  howto manager.      (line 1531)
11848
* BFD_RELOC_MICROBLAZE_32_GOTOFF:        howto manager.      (line 2609)
11849
* BFD_RELOC_MICROBLAZE_32_LO:            howto manager.      (line 2565)
11850
* BFD_RELOC_MICROBLAZE_32_LO_PCREL:      howto manager.      (line 2569)
11851
* BFD_RELOC_MICROBLAZE_32_ROSDA:         howto manager.      (line 2573)
11852
* BFD_RELOC_MICROBLAZE_32_RWSDA:         howto manager.      (line 2577)
11853
* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM:    howto manager.      (line 2581)
11854
* BFD_RELOC_MICROBLAZE_64_GOT:           howto manager.      (line 2595)
11855
* BFD_RELOC_MICROBLAZE_64_GOTOFF:        howto manager.      (line 2604)
11856
* BFD_RELOC_MICROBLAZE_64_GOTPC:         howto manager.      (line 2590)
11857
* BFD_RELOC_MICROBLAZE_64_NONE:          howto manager.      (line 2585)
11858
* BFD_RELOC_MICROBLAZE_64_PLT:           howto manager.      (line 2599)
11859
* BFD_RELOC_MICROBLAZE_COPY:             howto manager.      (line 2613)
11860
* BFD_RELOC_MICROMIPS_10_PCREL_S1:       howto manager.      (line  400)
11861
* BFD_RELOC_MICROMIPS_16_PCREL_S1:       howto manager.      (line  401)
11862
* BFD_RELOC_MICROMIPS_7_PCREL_S1:        howto manager.      (line  399)
11863
* BFD_RELOC_MICROMIPS_CALL16:            howto manager.      (line  413)
11864
* BFD_RELOC_MICROMIPS_CALL_HI16:         howto manager.      (line  419)
11865
* BFD_RELOC_MICROMIPS_CALL_LO16:         howto manager.      (line  421)
11866
* BFD_RELOC_MICROMIPS_GOT16:             howto manager.      (line  411)
11867
* BFD_RELOC_MICROMIPS_GOT_DISP:          howto manager.      (line  429)
11868
* BFD_RELOC_MICROMIPS_GOT_HI16:          howto manager.      (line  415)
11869
* BFD_RELOC_MICROMIPS_GOT_LO16:          howto manager.      (line  417)
11870
* BFD_RELOC_MICROMIPS_GOT_OFST:          howto manager.      (line  427)
11871
* BFD_RELOC_MICROMIPS_GOT_PAGE:          howto manager.      (line  425)
11872
* BFD_RELOC_MICROMIPS_GPREL16:           howto manager.      (line  404)
11873
* BFD_RELOC_MICROMIPS_HI16:              howto manager.      (line  405)
11874
* BFD_RELOC_MICROMIPS_HI16_S:            howto manager.      (line  406)
11875
* BFD_RELOC_MICROMIPS_HIGHER:            howto manager.      (line  438)
11876
* BFD_RELOC_MICROMIPS_HIGHEST:           howto manager.      (line  436)
11877
* BFD_RELOC_MICROMIPS_JALR:              howto manager.      (line  444)
11878
* BFD_RELOC_MICROMIPS_JMP:               howto manager.      (line  339)
11879
* BFD_RELOC_MICROMIPS_LITERAL:           howto manager.      (line  396)
11880
* BFD_RELOC_MICROMIPS_LO16:              howto manager.      (line  407)
11881
* BFD_RELOC_MICROMIPS_SCN_DISP:          howto manager.      (line  440)
11882
* BFD_RELOC_MICROMIPS_SUB:               howto manager.      (line  423)
11883
* BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16:   howto manager.      (line  454)
11884
* BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16:   howto manager.      (line  456)
11885
* BFD_RELOC_MICROMIPS_TLS_GD:            howto manager.      (line  450)
11886
* BFD_RELOC_MICROMIPS_TLS_GOTTPREL:      howto manager.      (line  458)
11887
* BFD_RELOC_MICROMIPS_TLS_LDM:           howto manager.      (line  452)
11888
* BFD_RELOC_MICROMIPS_TLS_TPREL_HI16:    howto manager.      (line  462)
11889
* BFD_RELOC_MICROMIPS_TLS_TPREL_LO16:    howto manager.      (line  464)
11890
* BFD_RELOC_MIPS16_CALL16:               howto manager.      (line  370)
11891
* BFD_RELOC_MIPS16_GOT16:                howto manager.      (line  369)
11892
* BFD_RELOC_MIPS16_GPREL:                howto manager.      (line  345)
11893
* BFD_RELOC_MIPS16_HI16:                 howto manager.      (line  374)
11894
* BFD_RELOC_MIPS16_HI16_S:               howto manager.      (line  377)
11895
* BFD_RELOC_MIPS16_JMP:                  howto manager.      (line  342)
11896
* BFD_RELOC_MIPS16_LO16:                 howto manager.      (line  383)
11897
* BFD_RELOC_MIPS16_TLS_DTPREL_HI16:      howto manager.      (line  388)
11898
* BFD_RELOC_MIPS16_TLS_DTPREL_LO16:      howto manager.      (line  389)
11899
* BFD_RELOC_MIPS16_TLS_GD:               howto manager.      (line  386)
11900
* BFD_RELOC_MIPS16_TLS_GOTTPREL:         howto manager.      (line  390)
11901
* BFD_RELOC_MIPS16_TLS_LDM:              howto manager.      (line  387)
11902
* BFD_RELOC_MIPS16_TLS_TPREL_HI16:       howto manager.      (line  391)
11903
* BFD_RELOC_MIPS16_TLS_TPREL_LO16:       howto manager.      (line  392)
11904
* BFD_RELOC_MIPS_CALL16:                 howto manager.      (line  412)
11905
* BFD_RELOC_MIPS_CALL_HI16:              howto manager.      (line  418)
11906
* BFD_RELOC_MIPS_CALL_LO16:              howto manager.      (line  420)
11907
* BFD_RELOC_MIPS_COPY:                   howto manager.      (line  467)
11908
* BFD_RELOC_MIPS_DELETE:                 howto manager.      (line  434)
11909
* BFD_RELOC_MIPS_GOT16:                  howto manager.      (line  410)
11910
* BFD_RELOC_MIPS_GOT_DISP:               howto manager.      (line  428)
11911
* BFD_RELOC_MIPS_GOT_HI16:               howto manager.      (line  414)
11912
* BFD_RELOC_MIPS_GOT_LO16:               howto manager.      (line  416)
11913
* BFD_RELOC_MIPS_GOT_OFST:               howto manager.      (line  426)
11914
* BFD_RELOC_MIPS_GOT_PAGE:               howto manager.      (line  424)
11915
* BFD_RELOC_MIPS_HIGHER:                 howto manager.      (line  437)
11916
* BFD_RELOC_MIPS_HIGHEST:                howto manager.      (line  435)
11917
* BFD_RELOC_MIPS_INSERT_A:               howto manager.      (line  432)
11918
* BFD_RELOC_MIPS_INSERT_B:               howto manager.      (line  433)
11919
* BFD_RELOC_MIPS_JALR:                   howto manager.      (line  443)
11920
* BFD_RELOC_MIPS_JMP:                    howto manager.      (line  338)
11921
* BFD_RELOC_MIPS_JUMP_SLOT:              howto manager.      (line  468)
11922
* BFD_RELOC_MIPS_LITERAL:                howto manager.      (line  395)
11923
* BFD_RELOC_MIPS_REL16:                  howto manager.      (line  441)
11924
* BFD_RELOC_MIPS_RELGOT:                 howto manager.      (line  442)
11925
* BFD_RELOC_MIPS_SCN_DISP:               howto manager.      (line  439)
11926
* BFD_RELOC_MIPS_SHIFT5:                 howto manager.      (line  430)
11927
* BFD_RELOC_MIPS_SHIFT6:                 howto manager.      (line  431)
11928
* BFD_RELOC_MIPS_SUB:                    howto manager.      (line  422)
11929
* BFD_RELOC_MIPS_TLS_DTPMOD32:           howto manager.      (line  445)
11930
* BFD_RELOC_MIPS_TLS_DTPMOD64:           howto manager.      (line  447)
11931
* BFD_RELOC_MIPS_TLS_DTPREL32:           howto manager.      (line  446)
11932
* BFD_RELOC_MIPS_TLS_DTPREL64:           howto manager.      (line  448)
11933
* BFD_RELOC_MIPS_TLS_DTPREL_HI16:        howto manager.      (line  453)
11934
* BFD_RELOC_MIPS_TLS_DTPREL_LO16:        howto manager.      (line  455)
11935
* BFD_RELOC_MIPS_TLS_GD:                 howto manager.      (line  449)
11936
* BFD_RELOC_MIPS_TLS_GOTTPREL:           howto manager.      (line  457)
11937
* BFD_RELOC_MIPS_TLS_LDM:                howto manager.      (line  451)
11938
* BFD_RELOC_MIPS_TLS_TPREL32:            howto manager.      (line  459)
11939
* BFD_RELOC_MIPS_TLS_TPREL64:            howto manager.      (line  460)
11940
* BFD_RELOC_MIPS_TLS_TPREL_HI16:         howto manager.      (line  461)
11941
* BFD_RELOC_MIPS_TLS_TPREL_LO16:         howto manager.      (line  463)
11942
* BFD_RELOC_MMIX_ADDR19:                 howto manager.      (line 1563)
11943
* BFD_RELOC_MMIX_ADDR27:                 howto manager.      (line 1567)
11944
* BFD_RELOC_MMIX_BASE_PLUS_OFFSET:       howto manager.      (line 1579)
11945
* BFD_RELOC_MMIX_CBRANCH:                howto manager.      (line 1543)
11946
* BFD_RELOC_MMIX_CBRANCH_1:              howto manager.      (line 1545)
11947
* BFD_RELOC_MMIX_CBRANCH_2:              howto manager.      (line 1546)
11948
* BFD_RELOC_MMIX_CBRANCH_3:              howto manager.      (line 1547)
11949
* BFD_RELOC_MMIX_CBRANCH_J:              howto manager.      (line 1544)
11950
* BFD_RELOC_MMIX_GETA:                   howto manager.      (line 1537)
11951
* BFD_RELOC_MMIX_GETA_1:                 howto manager.      (line 1538)
11952
* BFD_RELOC_MMIX_GETA_2:                 howto manager.      (line 1539)
11953
* BFD_RELOC_MMIX_GETA_3:                 howto manager.      (line 1540)
11954
* BFD_RELOC_MMIX_JMP:                    howto manager.      (line 1557)
11955
* BFD_RELOC_MMIX_JMP_1:                  howto manager.      (line 1558)
11956
* BFD_RELOC_MMIX_JMP_2:                  howto manager.      (line 1559)
11957
* BFD_RELOC_MMIX_JMP_3:                  howto manager.      (line 1560)
11958
* BFD_RELOC_MMIX_LOCAL:                  howto manager.      (line 1583)
11959
* BFD_RELOC_MMIX_PUSHJ:                  howto manager.      (line 1550)
11960
* BFD_RELOC_MMIX_PUSHJ_1:                howto manager.      (line 1551)
11961
* BFD_RELOC_MMIX_PUSHJ_2:                howto manager.      (line 1552)
11962
* BFD_RELOC_MMIX_PUSHJ_3:                howto manager.      (line 1553)
11963
* BFD_RELOC_MMIX_PUSHJ_STUBBABLE:        howto manager.      (line 1554)
11964
* BFD_RELOC_MMIX_REG:                    howto manager.      (line 1575)
11965
* BFD_RELOC_MMIX_REG_OR_BYTE:            howto manager.      (line 1571)
11966
* BFD_RELOC_MN10300_16_PCREL:            howto manager.      (line  566)
11967
* BFD_RELOC_MN10300_32_PCREL:            howto manager.      (line  562)
11968
* BFD_RELOC_MN10300_ALIGN:               howto manager.      (line  547)
11969
* BFD_RELOC_MN10300_COPY:                howto manager.      (line  530)
11970
* BFD_RELOC_MN10300_GLOB_DAT:            howto manager.      (line  533)
11971
* BFD_RELOC_MN10300_GOT16:               howto manager.      (line  526)
11972
* BFD_RELOC_MN10300_GOT24:               howto manager.      (line  522)
11973
* BFD_RELOC_MN10300_GOT32:               howto manager.      (line  518)
11974
* BFD_RELOC_MN10300_GOTOFF24:            howto manager.      (line  515)
11975
* BFD_RELOC_MN10300_JMP_SLOT:            howto manager.      (line  536)
11976
* BFD_RELOC_MN10300_RELATIVE:            howto manager.      (line  539)
11977
* BFD_RELOC_MN10300_SYM_DIFF:            howto manager.      (line  542)
11978
* BFD_RELOC_MN10300_TLS_DTPMOD:          howto manager.      (line  557)
11979
* BFD_RELOC_MN10300_TLS_DTPOFF:          howto manager.      (line  558)
11980
* BFD_RELOC_MN10300_TLS_GD:              howto manager.      (line  551)
11981
* BFD_RELOC_MN10300_TLS_GOTIE:           howto manager.      (line  554)
11982
* BFD_RELOC_MN10300_TLS_IE:              howto manager.      (line  555)
11983
* BFD_RELOC_MN10300_TLS_LD:              howto manager.      (line  552)
11984
* BFD_RELOC_MN10300_TLS_LDO:             howto manager.      (line  553)
11985
* BFD_RELOC_MN10300_TLS_LE:              howto manager.      (line  556)
11986
* BFD_RELOC_MN10300_TLS_TPOFF:           howto manager.      (line  559)
11987
* BFD_RELOC_MOXIE_10_PCREL:              howto manager.      (line  471)
11988
* BFD_RELOC_MSP430_10_PCREL:             howto manager.      (line 2403)
11989
* BFD_RELOC_MSP430_16:                   howto manager.      (line 2405)
11990
* BFD_RELOC_MSP430_16_BYTE:              howto manager.      (line 2407)
11991
* BFD_RELOC_MSP430_16_PCREL:             howto manager.      (line 2404)
11992
* BFD_RELOC_MSP430_16_PCREL_BYTE:        howto manager.      (line 2406)
11993
* BFD_RELOC_MSP430_2X_PCREL:             howto manager.      (line 2408)
11994
* BFD_RELOC_MSP430_RL_PCREL:             howto manager.      (line 2409)
11995
* BFD_RELOC_MT_GNU_VTENTRY:              howto manager.      (line 2397)
11996
* BFD_RELOC_MT_GNU_VTINHERIT:            howto manager.      (line 2394)
11997
* BFD_RELOC_MT_HI16:                     howto manager.      (line 2388)
11998
* BFD_RELOC_MT_LO16:                     howto manager.      (line 2391)
11999
* BFD_RELOC_MT_PC16:                     howto manager.      (line 2385)
12000
* BFD_RELOC_MT_PCINSN8:                  howto manager.      (line 2400)
12001
* BFD_RELOC_NONE:                        howto manager.      (line  131)
12002
* BFD_RELOC_NS32K_DISP_16:               howto manager.      (line  632)
12003
* BFD_RELOC_NS32K_DISP_16_PCREL:         howto manager.      (line  635)
12004
* BFD_RELOC_NS32K_DISP_32:               howto manager.      (line  633)
12005
* BFD_RELOC_NS32K_DISP_32_PCREL:         howto manager.      (line  636)
12006
* BFD_RELOC_NS32K_DISP_8:                howto manager.      (line  631)
12007
* BFD_RELOC_NS32K_DISP_8_PCREL:          howto manager.      (line  634)
12008
* BFD_RELOC_NS32K_IMM_16:                howto manager.      (line  626)
12009
* BFD_RELOC_NS32K_IMM_16_PCREL:          howto manager.      (line  629)
12010
* BFD_RELOC_NS32K_IMM_32:                howto manager.      (line  627)
12011
* BFD_RELOC_NS32K_IMM_32_PCREL:          howto manager.      (line  630)
12012
* BFD_RELOC_NS32K_IMM_8:                 howto manager.      (line  625)
12013
* BFD_RELOC_NS32K_IMM_8_PCREL:           howto manager.      (line  628)
12014
* BFD_RELOC_OR1K_COPY:                   howto manager.      (line 2339)
12015
* BFD_RELOC_OR1K_GLOB_DAT:               howto manager.      (line 2340)
12016
* BFD_RELOC_OR1K_GOT16:                  howto manager.      (line 2335)
12017
* BFD_RELOC_OR1K_GOTOFF_HI16:            howto manager.      (line 2337)
12018
* BFD_RELOC_OR1K_GOTOFF_LO16:            howto manager.      (line 2338)
12019
* BFD_RELOC_OR1K_GOTPC_HI16:             howto manager.      (line 2333)
12020
* BFD_RELOC_OR1K_GOTPC_LO16:             howto manager.      (line 2334)
12021
* BFD_RELOC_OR1K_JMP_SLOT:               howto manager.      (line 2341)
12022
* BFD_RELOC_OR1K_PLT26:                  howto manager.      (line 2336)
12023
* BFD_RELOC_OR1K_REL_26:                 howto manager.      (line 2332)
12024
* BFD_RELOC_OR1K_RELATIVE:               howto manager.      (line 2342)
12025
* BFD_RELOC_OR1K_TLS_DTPMOD:             howto manager.      (line 2355)
12026
* BFD_RELOC_OR1K_TLS_DTPOFF:             howto manager.      (line 2354)
12027
* BFD_RELOC_OR1K_TLS_GD_HI16:            howto manager.      (line 2343)
12028
* BFD_RELOC_OR1K_TLS_GD_LO16:            howto manager.      (line 2344)
12029
* BFD_RELOC_OR1K_TLS_IE_HI16:            howto manager.      (line 2349)
12030
* BFD_RELOC_OR1K_TLS_IE_LO16:            howto manager.      (line 2350)
12031
* BFD_RELOC_OR1K_TLS_LDM_HI16:           howto manager.      (line 2345)
12032
* BFD_RELOC_OR1K_TLS_LDM_LO16:           howto manager.      (line 2346)
12033
* BFD_RELOC_OR1K_TLS_LDO_HI16:           howto manager.      (line 2347)
12034
* BFD_RELOC_OR1K_TLS_LDO_LO16:           howto manager.      (line 2348)
12035
* BFD_RELOC_OR1K_TLS_LE_HI16:            howto manager.      (line 2351)
12036
* BFD_RELOC_OR1K_TLS_LE_LO16:            howto manager.      (line 2352)
12037
* BFD_RELOC_OR1K_TLS_TPOFF:              howto manager.      (line 2353)
12038
* BFD_RELOC_PDP11_DISP_6_PCREL:          howto manager.      (line  640)
12039
* BFD_RELOC_PDP11_DISP_8_PCREL:          howto manager.      (line  639)
12040
* BFD_RELOC_PJ_CODE_DIR16:               howto manager.      (line  645)
12041
* BFD_RELOC_PJ_CODE_DIR32:               howto manager.      (line  646)
12042
* BFD_RELOC_PJ_CODE_HI16:                howto manager.      (line  643)
12043
* BFD_RELOC_PJ_CODE_LO16:                howto manager.      (line  644)
12044
* BFD_RELOC_PJ_CODE_REL16:               howto manager.      (line  647)
12045
* BFD_RELOC_PJ_CODE_REL32:               howto manager.      (line  648)
12046
* BFD_RELOC_PPC64_ADDR16_DS:             howto manager.      (line  710)
12047
* BFD_RELOC_PPC64_ADDR16_LO_DS:          howto manager.      (line  711)
12048
* BFD_RELOC_PPC64_DTPREL16_DS:           howto manager.      (line  759)
12049
* BFD_RELOC_PPC64_DTPREL16_HIGHER:       howto manager.      (line  761)
12050
* BFD_RELOC_PPC64_DTPREL16_HIGHERA:      howto manager.      (line  762)
12051
* BFD_RELOC_PPC64_DTPREL16_HIGHEST:      howto manager.      (line  763)
12052
* BFD_RELOC_PPC64_DTPREL16_HIGHESTA:     howto manager.      (line  764)
12053
* BFD_RELOC_PPC64_DTPREL16_LO_DS:        howto manager.      (line  760)
12054
* BFD_RELOC_PPC64_GOT16_DS:              howto manager.      (line  712)
12055
* BFD_RELOC_PPC64_GOT16_LO_DS:           howto manager.      (line  713)
12056
* BFD_RELOC_PPC64_HIGHER:                howto manager.      (line  698)
12057
* BFD_RELOC_PPC64_HIGHER_S:              howto manager.      (line  699)
12058
* BFD_RELOC_PPC64_HIGHEST:               howto manager.      (line  700)
12059
* BFD_RELOC_PPC64_HIGHEST_S:             howto manager.      (line  701)
12060
* BFD_RELOC_PPC64_PLT16_LO_DS:           howto manager.      (line  714)
12061
* BFD_RELOC_PPC64_PLTGOT16:              howto manager.      (line  706)
12062
* BFD_RELOC_PPC64_PLTGOT16_DS:           howto manager.      (line  719)
12063
* BFD_RELOC_PPC64_PLTGOT16_HA:           howto manager.      (line  709)
12064
* BFD_RELOC_PPC64_PLTGOT16_HI:           howto manager.      (line  708)
12065
* BFD_RELOC_PPC64_PLTGOT16_LO:           howto manager.      (line  707)
12066
* BFD_RELOC_PPC64_PLTGOT16_LO_DS:        howto manager.      (line  720)
12067
* BFD_RELOC_PPC64_SECTOFF_DS:            howto manager.      (line  715)
12068
* BFD_RELOC_PPC64_SECTOFF_LO_DS:         howto manager.      (line  716)
12069
* BFD_RELOC_PPC64_TOC:                   howto manager.      (line  705)
12070
* BFD_RELOC_PPC64_TOC16_DS:              howto manager.      (line  717)
12071
* BFD_RELOC_PPC64_TOC16_HA:              howto manager.      (line  704)
12072
* BFD_RELOC_PPC64_TOC16_HI:              howto manager.      (line  703)
12073
* BFD_RELOC_PPC64_TOC16_LO:              howto manager.      (line  702)
12074
* BFD_RELOC_PPC64_TOC16_LO_DS:           howto manager.      (line  718)
12075
* BFD_RELOC_PPC64_TPREL16_DS:            howto manager.      (line  753)
12076
* BFD_RELOC_PPC64_TPREL16_HIGHER:        howto manager.      (line  755)
12077
* BFD_RELOC_PPC64_TPREL16_HIGHERA:       howto manager.      (line  756)
12078
* BFD_RELOC_PPC64_TPREL16_HIGHEST:       howto manager.      (line  757)
12079
* BFD_RELOC_PPC64_TPREL16_HIGHESTA:      howto manager.      (line  758)
12080
* BFD_RELOC_PPC64_TPREL16_LO_DS:         howto manager.      (line  754)
12081
* BFD_RELOC_PPC_B16:                     howto manager.      (line  654)
12082
* BFD_RELOC_PPC_B16_BRNTAKEN:            howto manager.      (line  656)
12083
* BFD_RELOC_PPC_B16_BRTAKEN:             howto manager.      (line  655)
12084
* BFD_RELOC_PPC_B26:                     howto manager.      (line  651)
12085
* BFD_RELOC_PPC_BA16:                    howto manager.      (line  657)
12086
* BFD_RELOC_PPC_BA16_BRNTAKEN:           howto manager.      (line  659)
12087
* BFD_RELOC_PPC_BA16_BRTAKEN:            howto manager.      (line  658)
12088
* BFD_RELOC_PPC_BA26:                    howto manager.      (line  652)
12089
* BFD_RELOC_PPC_COPY:                    howto manager.      (line  660)
12090
* BFD_RELOC_PPC_DTPMOD:                  howto manager.      (line  726)
12091
* BFD_RELOC_PPC_DTPREL:                  howto manager.      (line  736)
12092
* BFD_RELOC_PPC_DTPREL16:                howto manager.      (line  732)
12093
* BFD_RELOC_PPC_DTPREL16_HA:             howto manager.      (line  735)
12094
* BFD_RELOC_PPC_DTPREL16_HI:             howto manager.      (line  734)
12095
* BFD_RELOC_PPC_DTPREL16_LO:             howto manager.      (line  733)
12096
* BFD_RELOC_PPC_EMB_BIT_FLD:             howto manager.      (line  679)
12097
* BFD_RELOC_PPC_EMB_MRKREF:              howto manager.      (line  674)
12098
* BFD_RELOC_PPC_EMB_NADDR16:             howto manager.      (line  666)
12099
* BFD_RELOC_PPC_EMB_NADDR16_HA:          howto manager.      (line  669)
12100
* BFD_RELOC_PPC_EMB_NADDR16_HI:          howto manager.      (line  668)
12101
* BFD_RELOC_PPC_EMB_NADDR16_LO:          howto manager.      (line  667)
12102
* BFD_RELOC_PPC_EMB_NADDR32:             howto manager.      (line  665)
12103
* BFD_RELOC_PPC_EMB_RELSDA:              howto manager.      (line  680)
12104
* BFD_RELOC_PPC_EMB_RELSEC16:            howto manager.      (line  675)
12105
* BFD_RELOC_PPC_EMB_RELST_HA:            howto manager.      (line  678)
12106
* BFD_RELOC_PPC_EMB_RELST_HI:            howto manager.      (line  677)
12107
* BFD_RELOC_PPC_EMB_RELST_LO:            howto manager.      (line  676)
12108
* BFD_RELOC_PPC_EMB_SDA21:               howto manager.      (line  673)
12109
* BFD_RELOC_PPC_EMB_SDA2I16:             howto manager.      (line  671)
12110
* BFD_RELOC_PPC_EMB_SDA2REL:             howto manager.      (line  672)
12111
* BFD_RELOC_PPC_EMB_SDAI16:              howto manager.      (line  670)
12112
* BFD_RELOC_PPC_GLOB_DAT:                howto manager.      (line  661)
12113
* BFD_RELOC_PPC_GOT_DTPREL16:            howto manager.      (line  749)
12114
* BFD_RELOC_PPC_GOT_DTPREL16_HA:         howto manager.      (line  752)
12115
* BFD_RELOC_PPC_GOT_DTPREL16_HI:         howto manager.      (line  751)
12116
* BFD_RELOC_PPC_GOT_DTPREL16_LO:         howto manager.      (line  750)
12117
* BFD_RELOC_PPC_GOT_TLSGD16:             howto manager.      (line  737)
12118
* BFD_RELOC_PPC_GOT_TLSGD16_HA:          howto manager.      (line  740)
12119
* BFD_RELOC_PPC_GOT_TLSGD16_HI:          howto manager.      (line  739)
12120
* BFD_RELOC_PPC_GOT_TLSGD16_LO:          howto manager.      (line  738)
12121
* BFD_RELOC_PPC_GOT_TLSLD16:             howto manager.      (line  741)
12122
* BFD_RELOC_PPC_GOT_TLSLD16_HA:          howto manager.      (line  744)
12123
* BFD_RELOC_PPC_GOT_TLSLD16_HI:          howto manager.      (line  743)
12124
* BFD_RELOC_PPC_GOT_TLSLD16_LO:          howto manager.      (line  742)
12125
* BFD_RELOC_PPC_GOT_TPREL16:             howto manager.      (line  745)
12126
* BFD_RELOC_PPC_GOT_TPREL16_HA:          howto manager.      (line  748)
12127
* BFD_RELOC_PPC_GOT_TPREL16_HI:          howto manager.      (line  747)
12128
* BFD_RELOC_PPC_GOT_TPREL16_LO:          howto manager.      (line  746)
12129
* BFD_RELOC_PPC_JMP_SLOT:                howto manager.      (line  662)
12130
* BFD_RELOC_PPC_LOCAL24PC:               howto manager.      (line  664)
12131
* BFD_RELOC_PPC_RELATIVE:                howto manager.      (line  663)
12132
* BFD_RELOC_PPC_TLS:                     howto manager.      (line  723)
12133
* BFD_RELOC_PPC_TLSGD:                   howto manager.      (line  724)
12134
* BFD_RELOC_PPC_TLSLD:                   howto manager.      (line  725)
12135
* BFD_RELOC_PPC_TOC16:                   howto manager.      (line  653)
12136
* BFD_RELOC_PPC_TPREL:                   howto manager.      (line  731)
12137
* BFD_RELOC_PPC_TPREL16:                 howto manager.      (line  727)
12138
* BFD_RELOC_PPC_TPREL16_HA:              howto manager.      (line  730)
12139
* BFD_RELOC_PPC_TPREL16_HI:              howto manager.      (line  729)
12140
* BFD_RELOC_PPC_TPREL16_LO:              howto manager.      (line  728)
12141
* BFD_RELOC_PPC_VLE_HA16A:               howto manager.      (line  688)
12142
* BFD_RELOC_PPC_VLE_HA16D:               howto manager.      (line  689)
12143
* BFD_RELOC_PPC_VLE_HI16A:               howto manager.      (line  686)
12144
* BFD_RELOC_PPC_VLE_HI16D:               howto manager.      (line  687)
12145
* BFD_RELOC_PPC_VLE_LO16A:               howto manager.      (line  684)
12146
* BFD_RELOC_PPC_VLE_LO16D:               howto manager.      (line  685)
12147
* BFD_RELOC_PPC_VLE_REL15:               howto manager.      (line  682)
12148
* BFD_RELOC_PPC_VLE_REL24:               howto manager.      (line  683)
12149
* BFD_RELOC_PPC_VLE_REL8:                howto manager.      (line  681)
12150
* BFD_RELOC_PPC_VLE_SDA21:               howto manager.      (line  690)
12151
* BFD_RELOC_PPC_VLE_SDA21_LO:            howto manager.      (line  691)
12152
* BFD_RELOC_PPC_VLE_SDAREL_HA16A:        howto manager.      (line  696)
12153
* BFD_RELOC_PPC_VLE_SDAREL_HA16D:        howto manager.      (line  697)
12154
* BFD_RELOC_PPC_VLE_SDAREL_HI16A:        howto manager.      (line  694)
12155
* BFD_RELOC_PPC_VLE_SDAREL_HI16D:        howto manager.      (line  695)
12156
* BFD_RELOC_PPC_VLE_SDAREL_LO16A:        howto manager.      (line  692)
12157
* BFD_RELOC_PPC_VLE_SDAREL_LO16D:        howto manager.      (line  693)
12158
* BFD_RELOC_RELC:                        howto manager.      (line 2371)
12159
* BFD_RELOC_RL78_16_OP:                  howto manager.      (line 1706)
12160
* BFD_RELOC_RL78_16U:                    howto manager.      (line 1710)
12161
* BFD_RELOC_RL78_24_OP:                  howto manager.      (line 1707)
12162
* BFD_RELOC_RL78_24U:                    howto manager.      (line 1711)
12163
* BFD_RELOC_RL78_32_OP:                  howto manager.      (line 1708)
12164
* BFD_RELOC_RL78_8U:                     howto manager.      (line 1709)
12165
* BFD_RELOC_RL78_ABS16:                  howto manager.      (line 1723)
12166
* BFD_RELOC_RL78_ABS16_REV:              howto manager.      (line 1724)
12167
* BFD_RELOC_RL78_ABS16U:                 howto manager.      (line 1727)
12168
* BFD_RELOC_RL78_ABS16UL:                howto manager.      (line 1729)
12169
* BFD_RELOC_RL78_ABS16UW:                howto manager.      (line 1728)
12170
* BFD_RELOC_RL78_ABS32:                  howto manager.      (line 1725)
12171
* BFD_RELOC_RL78_ABS32_REV:              howto manager.      (line 1726)
12172
* BFD_RELOC_RL78_ABS8:                   howto manager.      (line 1722)
12173
* BFD_RELOC_RL78_DIFF:                   howto manager.      (line 1713)
12174
* BFD_RELOC_RL78_DIR3U_PCREL:            howto manager.      (line 1712)
12175
* BFD_RELOC_RL78_GPRELB:                 howto manager.      (line 1714)
12176
* BFD_RELOC_RL78_GPRELL:                 howto manager.      (line 1716)
12177
* BFD_RELOC_RL78_GPRELW:                 howto manager.      (line 1715)
12178
* BFD_RELOC_RL78_HI16:                   howto manager.      (line 1731)
12179
* BFD_RELOC_RL78_HI8:                    howto manager.      (line 1732)
12180
* BFD_RELOC_RL78_LO16:                   howto manager.      (line 1733)
12181
* BFD_RELOC_RL78_NEG16:                  howto manager.      (line 1703)
12182
* BFD_RELOC_RL78_NEG24:                  howto manager.      (line 1704)
12183
* BFD_RELOC_RL78_NEG32:                  howto manager.      (line 1705)
12184
* BFD_RELOC_RL78_NEG8:                   howto manager.      (line 1702)
12185
* BFD_RELOC_RL78_OP_AND:                 howto manager.      (line 1720)
12186
* BFD_RELOC_RL78_OP_NEG:                 howto manager.      (line 1719)
12187
* BFD_RELOC_RL78_OP_SHRA:                howto manager.      (line 1721)
12188
* BFD_RELOC_RL78_OP_SUBTRACT:            howto manager.      (line 1718)
12189
* BFD_RELOC_RL78_RELAX:                  howto manager.      (line 1730)
12190
* BFD_RELOC_RL78_SYM:                    howto manager.      (line 1717)
12191
* BFD_RELOC_RVA:                         howto manager.      (line  100)
12192
* BFD_RELOC_RX_16_OP:                    howto manager.      (line 1740)
12193
* BFD_RELOC_RX_16U:                      howto manager.      (line 1744)
12194
* BFD_RELOC_RX_24_OP:                    howto manager.      (line 1741)
12195
* BFD_RELOC_RX_24U:                      howto manager.      (line 1745)
12196
* BFD_RELOC_RX_32_OP:                    howto manager.      (line 1742)
12197
* BFD_RELOC_RX_8U:                       howto manager.      (line 1743)
12198
* BFD_RELOC_RX_ABS16:                    howto manager.      (line 1755)
12199
* BFD_RELOC_RX_ABS16_REV:                howto manager.      (line 1756)
12200
* BFD_RELOC_RX_ABS16U:                   howto manager.      (line 1759)
12201
* BFD_RELOC_RX_ABS16UL:                  howto manager.      (line 1761)
12202
* BFD_RELOC_RX_ABS16UW:                  howto manager.      (line 1760)
12203
* BFD_RELOC_RX_ABS32:                    howto manager.      (line 1757)
12204
* BFD_RELOC_RX_ABS32_REV:                howto manager.      (line 1758)
12205
* BFD_RELOC_RX_ABS8:                     howto manager.      (line 1754)
12206
* BFD_RELOC_RX_DIFF:                     howto manager.      (line 1747)
12207
* BFD_RELOC_RX_DIR3U_PCREL:              howto manager.      (line 1746)
12208
* BFD_RELOC_RX_GPRELB:                   howto manager.      (line 1748)
12209
* BFD_RELOC_RX_GPRELL:                   howto manager.      (line 1750)
12210
* BFD_RELOC_RX_GPRELW:                   howto manager.      (line 1749)
12211
* BFD_RELOC_RX_NEG16:                    howto manager.      (line 1737)
12212
* BFD_RELOC_RX_NEG24:                    howto manager.      (line 1738)
12213
* BFD_RELOC_RX_NEG32:                    howto manager.      (line 1739)
12214
* BFD_RELOC_RX_NEG8:                     howto manager.      (line 1736)
12215
* BFD_RELOC_RX_OP_NEG:                   howto manager.      (line 1753)
12216
* BFD_RELOC_RX_OP_SUBTRACT:              howto manager.      (line 1752)
12217
* BFD_RELOC_RX_RELAX:                    howto manager.      (line 1762)
12218
* BFD_RELOC_RX_SYM:                      howto manager.      (line 1751)
12219
* BFD_RELOC_SCORE16_BRANCH:              howto manager.      (line 1893)
12220
* BFD_RELOC_SCORE16_JMP:                 howto manager.      (line 1890)
12221
* BFD_RELOC_SCORE_BCMP:                  howto manager.      (line 1896)
12222
* BFD_RELOC_SCORE_BRANCH:                howto manager.      (line 1881)
12223
* BFD_RELOC_SCORE_CALL15:                howto manager.      (line 1901)
12224
* BFD_RELOC_SCORE_DUMMY2:                howto manager.      (line 1877)
12225
* BFD_RELOC_SCORE_DUMMY_HI16:            howto manager.      (line 1902)
12226
* BFD_RELOC_SCORE_GOT15:                 howto manager.      (line 1899)
12227
* BFD_RELOC_SCORE_GOT_LO16:              howto manager.      (line 1900)
12228
* BFD_RELOC_SCORE_GPREL15:               howto manager.      (line 1874)
12229
* BFD_RELOC_SCORE_IMM30:                 howto manager.      (line 1884)
12230
* BFD_RELOC_SCORE_IMM32:                 howto manager.      (line 1887)
12231
* BFD_RELOC_SCORE_JMP:                   howto manager.      (line 1878)
12232
* BFD_RELOC_SH_ALIGN:                    howto manager.      (line  958)
12233
* BFD_RELOC_SH_CODE:                     howto manager.      (line  959)
12234
* BFD_RELOC_SH_COPY:                     howto manager.      (line  964)
12235
* BFD_RELOC_SH_COPY64:                   howto manager.      (line  989)
12236
* BFD_RELOC_SH_COUNT:                    howto manager.      (line  957)
12237
* BFD_RELOC_SH_DATA:                     howto manager.      (line  960)
12238
* BFD_RELOC_SH_DISP12:                   howto manager.      (line  940)
12239
* BFD_RELOC_SH_DISP12BY2:                howto manager.      (line  941)
12240
* BFD_RELOC_SH_DISP12BY4:                howto manager.      (line  942)
12241
* BFD_RELOC_SH_DISP12BY8:                howto manager.      (line  943)
12242
* BFD_RELOC_SH_DISP20:                   howto manager.      (line  944)
12243
* BFD_RELOC_SH_DISP20BY8:                howto manager.      (line  945)
12244
* BFD_RELOC_SH_FUNCDESC:                 howto manager.      (line 1032)
12245
* BFD_RELOC_SH_GLOB_DAT:                 howto manager.      (line  965)
12246
* BFD_RELOC_SH_GLOB_DAT64:               howto manager.      (line  990)
12247
* BFD_RELOC_SH_GOT10BY4:                 howto manager.      (line  993)
12248
* BFD_RELOC_SH_GOT10BY8:                 howto manager.      (line  994)
12249
* BFD_RELOC_SH_GOT20:                    howto manager.      (line 1026)
12250
* BFD_RELOC_SH_GOT_HI16:                 howto manager.      (line  972)
12251
* BFD_RELOC_SH_GOT_LOW16:                howto manager.      (line  969)
12252
* BFD_RELOC_SH_GOT_MEDHI16:              howto manager.      (line  971)
12253
* BFD_RELOC_SH_GOT_MEDLOW16:             howto manager.      (line  970)
12254
* BFD_RELOC_SH_GOTFUNCDESC:              howto manager.      (line 1028)
12255
* BFD_RELOC_SH_GOTFUNCDESC20:            howto manager.      (line 1029)
12256
* BFD_RELOC_SH_GOTOFF20:                 howto manager.      (line 1027)
12257
* BFD_RELOC_SH_GOTOFF_HI16:              howto manager.      (line  984)
12258
* BFD_RELOC_SH_GOTOFF_LOW16:             howto manager.      (line  981)
12259
* BFD_RELOC_SH_GOTOFF_MEDHI16:           howto manager.      (line  983)
12260
* BFD_RELOC_SH_GOTOFF_MEDLOW16:          howto manager.      (line  982)
12261
* BFD_RELOC_SH_GOTOFFFUNCDESC:           howto manager.      (line 1030)
12262
* BFD_RELOC_SH_GOTOFFFUNCDESC20:         howto manager.      (line 1031)
12263
* BFD_RELOC_SH_GOTPC:                    howto manager.      (line  968)
12264
* BFD_RELOC_SH_GOTPC_HI16:               howto manager.      (line  988)
12265
* BFD_RELOC_SH_GOTPC_LOW16:              howto manager.      (line  985)
12266
* BFD_RELOC_SH_GOTPC_MEDHI16:            howto manager.      (line  987)
12267
* BFD_RELOC_SH_GOTPC_MEDLOW16:           howto manager.      (line  986)
12268
* BFD_RELOC_SH_GOTPLT10BY4:              howto manager.      (line  995)
12269
* BFD_RELOC_SH_GOTPLT10BY8:              howto manager.      (line  996)
12270
* BFD_RELOC_SH_GOTPLT32:                 howto manager.      (line  997)
12271
* BFD_RELOC_SH_GOTPLT_HI16:              howto manager.      (line  976)
12272
* BFD_RELOC_SH_GOTPLT_LOW16:             howto manager.      (line  973)
12273
* BFD_RELOC_SH_GOTPLT_MEDHI16:           howto manager.      (line  975)
12274
* BFD_RELOC_SH_GOTPLT_MEDLOW16:          howto manager.      (line  974)
12275
* BFD_RELOC_SH_IMM3:                     howto manager.      (line  938)
12276
* BFD_RELOC_SH_IMM3U:                    howto manager.      (line  939)
12277
* BFD_RELOC_SH_IMM4:                     howto manager.      (line  946)
12278
* BFD_RELOC_SH_IMM4BY2:                  howto manager.      (line  947)
12279
* BFD_RELOC_SH_IMM4BY4:                  howto manager.      (line  948)
12280
* BFD_RELOC_SH_IMM8:                     howto manager.      (line  949)
12281
* BFD_RELOC_SH_IMM8BY2:                  howto manager.      (line  950)
12282
* BFD_RELOC_SH_IMM8BY4:                  howto manager.      (line  951)
12283
* BFD_RELOC_SH_IMM_HI16:                 howto manager.      (line 1015)
12284
* BFD_RELOC_SH_IMM_HI16_PCREL:           howto manager.      (line 1016)
12285
* BFD_RELOC_SH_IMM_LOW16:                howto manager.      (line 1009)
12286
* BFD_RELOC_SH_IMM_LOW16_PCREL:          howto manager.      (line 1010)
12287
* BFD_RELOC_SH_IMM_MEDHI16:              howto manager.      (line 1013)
12288
* BFD_RELOC_SH_IMM_MEDHI16_PCREL:        howto manager.      (line 1014)
12289
* BFD_RELOC_SH_IMM_MEDLOW16:             howto manager.      (line 1011)
12290
* BFD_RELOC_SH_IMM_MEDLOW16_PCREL:       howto manager.      (line 1012)
12291
* BFD_RELOC_SH_IMMS10:                   howto manager.      (line 1003)
12292
* BFD_RELOC_SH_IMMS10BY2:                howto manager.      (line 1004)
12293
* BFD_RELOC_SH_IMMS10BY4:                howto manager.      (line 1005)
12294
* BFD_RELOC_SH_IMMS10BY8:                howto manager.      (line 1006)
12295
* BFD_RELOC_SH_IMMS16:                   howto manager.      (line 1007)
12296
* BFD_RELOC_SH_IMMS6:                    howto manager.      (line 1000)
12297
* BFD_RELOC_SH_IMMS6BY32:                howto manager.      (line 1001)
12298
* BFD_RELOC_SH_IMMU16:                   howto manager.      (line 1008)
12299
* BFD_RELOC_SH_IMMU5:                    howto manager.      (line  999)
12300
* BFD_RELOC_SH_IMMU6:                    howto manager.      (line 1002)
12301
* BFD_RELOC_SH_JMP_SLOT:                 howto manager.      (line  966)
12302
* BFD_RELOC_SH_JMP_SLOT64:               howto manager.      (line  991)
12303
* BFD_RELOC_SH_LABEL:                    howto manager.      (line  961)
12304
* BFD_RELOC_SH_LOOP_END:                 howto manager.      (line  963)
12305
* BFD_RELOC_SH_LOOP_START:               howto manager.      (line  962)
12306
* BFD_RELOC_SH_PCDISP12BY2:              howto manager.      (line  937)
12307
* BFD_RELOC_SH_PCDISP8BY2:               howto manager.      (line  936)
12308
* BFD_RELOC_SH_PCRELIMM8BY2:             howto manager.      (line  952)
12309
* BFD_RELOC_SH_PCRELIMM8BY4:             howto manager.      (line  953)
12310
* BFD_RELOC_SH_PLT_HI16:                 howto manager.      (line  980)
12311
* BFD_RELOC_SH_PLT_LOW16:                howto manager.      (line  977)
12312
* BFD_RELOC_SH_PLT_MEDHI16:              howto manager.      (line  979)
12313
* BFD_RELOC_SH_PLT_MEDLOW16:             howto manager.      (line  978)
12314
* BFD_RELOC_SH_PT_16:                    howto manager.      (line 1017)
12315
* BFD_RELOC_SH_RELATIVE:                 howto manager.      (line  967)
12316
* BFD_RELOC_SH_RELATIVE64:               howto manager.      (line  992)
12317
* BFD_RELOC_SH_SHMEDIA_CODE:             howto manager.      (line  998)
12318
* BFD_RELOC_SH_SWITCH16:                 howto manager.      (line  954)
12319
* BFD_RELOC_SH_SWITCH32:                 howto manager.      (line  955)
12320
* BFD_RELOC_SH_TLS_DTPMOD32:             howto manager.      (line 1023)
12321
* BFD_RELOC_SH_TLS_DTPOFF32:             howto manager.      (line 1024)
12322
* BFD_RELOC_SH_TLS_GD_32:                howto manager.      (line 1018)
12323
* BFD_RELOC_SH_TLS_IE_32:                howto manager.      (line 1021)
12324
* BFD_RELOC_SH_TLS_LD_32:                howto manager.      (line 1019)
12325
* BFD_RELOC_SH_TLS_LDO_32:               howto manager.      (line 1020)
12326
* BFD_RELOC_SH_TLS_LE_32:                howto manager.      (line 1022)
12327
* BFD_RELOC_SH_TLS_TPOFF32:              howto manager.      (line 1025)
12328
* BFD_RELOC_SH_USES:                     howto manager.      (line  956)
12329
* BFD_RELOC_SPARC13:                     howto manager.      (line  134)
12330
* BFD_RELOC_SPARC22:                     howto manager.      (line  133)
12331
* BFD_RELOC_SPARC_10:                    howto manager.      (line  163)
12332
* BFD_RELOC_SPARC_11:                    howto manager.      (line  164)
12333
* BFD_RELOC_SPARC_5:                     howto manager.      (line  176)
12334
* BFD_RELOC_SPARC_6:                     howto manager.      (line  175)
12335
* BFD_RELOC_SPARC_64:                    howto manager.      (line  162)
12336
* BFD_RELOC_SPARC_7:                     howto manager.      (line  174)
12337
* BFD_RELOC_SPARC_BASE13:                howto manager.      (line  158)
12338
* BFD_RELOC_SPARC_BASE22:                howto manager.      (line  159)
12339
* BFD_RELOC_SPARC_COPY:                  howto manager.      (line  141)
12340
* BFD_RELOC_SPARC_DISP64:                howto manager.      (line  177)
12341
* BFD_RELOC_SPARC_GLOB_DAT:              howto manager.      (line  142)
12342
* BFD_RELOC_SPARC_GOT10:                 howto manager.      (line  135)
12343
* BFD_RELOC_SPARC_GOT13:                 howto manager.      (line  136)
12344
* BFD_RELOC_SPARC_GOT22:                 howto manager.      (line  137)
12345
* BFD_RELOC_SPARC_GOTDATA_HIX22:         howto manager.      (line  148)
12346
* BFD_RELOC_SPARC_GOTDATA_LOX10:         howto manager.      (line  149)
12347
* BFD_RELOC_SPARC_GOTDATA_OP:            howto manager.      (line  152)
12348
* BFD_RELOC_SPARC_GOTDATA_OP_HIX22:      howto manager.      (line  150)
12349
* BFD_RELOC_SPARC_GOTDATA_OP_LOX10:      howto manager.      (line  151)
12350
* BFD_RELOC_SPARC_H34:                   howto manager.      (line  186)
12351
* BFD_RELOC_SPARC_H44:                   howto manager.      (line  182)
12352
* BFD_RELOC_SPARC_HH22:                  howto manager.      (line  166)
12353
* BFD_RELOC_SPARC_HIX22:                 howto manager.      (line  180)
12354
* BFD_RELOC_SPARC_HM10:                  howto manager.      (line  167)
12355
* BFD_RELOC_SPARC_IRELATIVE:             howto manager.      (line  154)
12356
* BFD_RELOC_SPARC_JMP_IREL:              howto manager.      (line  153)
12357
* BFD_RELOC_SPARC_JMP_SLOT:              howto manager.      (line  143)
12358
* BFD_RELOC_SPARC_L44:                   howto manager.      (line  184)
12359
* BFD_RELOC_SPARC_LM22:                  howto manager.      (line  168)
12360
* BFD_RELOC_SPARC_LOX10:                 howto manager.      (line  181)
12361
* BFD_RELOC_SPARC_M44:                   howto manager.      (line  183)
12362
* BFD_RELOC_SPARC_OLO10:                 howto manager.      (line  165)
12363
* BFD_RELOC_SPARC_PC10:                  howto manager.      (line  138)
12364
* BFD_RELOC_SPARC_PC22:                  howto manager.      (line  139)
12365
* BFD_RELOC_SPARC_PC_HH22:               howto manager.      (line  169)
12366
* BFD_RELOC_SPARC_PC_HM10:               howto manager.      (line  170)
12367
* BFD_RELOC_SPARC_PC_LM22:               howto manager.      (line  171)
12368
* BFD_RELOC_SPARC_PLT32:                 howto manager.      (line  178)
12369
* BFD_RELOC_SPARC_PLT64:                 howto manager.      (line  179)
12370
* BFD_RELOC_SPARC_REGISTER:              howto manager.      (line  185)
12371
* BFD_RELOC_SPARC_RELATIVE:              howto manager.      (line  144)
12372
* BFD_RELOC_SPARC_REV32:                 howto manager.      (line  192)
12373
* BFD_RELOC_SPARC_SIZE32:                howto manager.      (line  187)
12374
* BFD_RELOC_SPARC_SIZE64:                howto manager.      (line  188)
12375
* BFD_RELOC_SPARC_TLS_DTPMOD32:          howto manager.      (line  213)
12376
* BFD_RELOC_SPARC_TLS_DTPMOD64:          howto manager.      (line  214)
12377
* BFD_RELOC_SPARC_TLS_DTPOFF32:          howto manager.      (line  215)
12378
* BFD_RELOC_SPARC_TLS_DTPOFF64:          howto manager.      (line  216)
12379
* BFD_RELOC_SPARC_TLS_GD_ADD:            howto manager.      (line  197)
12380
* BFD_RELOC_SPARC_TLS_GD_CALL:           howto manager.      (line  198)
12381
* BFD_RELOC_SPARC_TLS_GD_HI22:           howto manager.      (line  195)
12382
* BFD_RELOC_SPARC_TLS_GD_LO10:           howto manager.      (line  196)
12383
* BFD_RELOC_SPARC_TLS_IE_ADD:            howto manager.      (line  210)
12384
* BFD_RELOC_SPARC_TLS_IE_HI22:           howto manager.      (line  206)
12385
* BFD_RELOC_SPARC_TLS_IE_LD:             howto manager.      (line  208)
12386
* BFD_RELOC_SPARC_TLS_IE_LDX:            howto manager.      (line  209)
12387
* BFD_RELOC_SPARC_TLS_IE_LO10:           howto manager.      (line  207)
12388
* BFD_RELOC_SPARC_TLS_LDM_ADD:           howto manager.      (line  201)
12389
* BFD_RELOC_SPARC_TLS_LDM_CALL:          howto manager.      (line  202)
12390
* BFD_RELOC_SPARC_TLS_LDM_HI22:          howto manager.      (line  199)
12391
* BFD_RELOC_SPARC_TLS_LDM_LO10:          howto manager.      (line  200)
12392
* BFD_RELOC_SPARC_TLS_LDO_ADD:           howto manager.      (line  205)
12393
* BFD_RELOC_SPARC_TLS_LDO_HIX22:         howto manager.      (line  203)
12394
* BFD_RELOC_SPARC_TLS_LDO_LOX10:         howto manager.      (line  204)
12395
* BFD_RELOC_SPARC_TLS_LE_HIX22:          howto manager.      (line  211)
12396
* BFD_RELOC_SPARC_TLS_LE_LOX10:          howto manager.      (line  212)
12397
* BFD_RELOC_SPARC_TLS_TPOFF32:           howto manager.      (line  217)
12398
* BFD_RELOC_SPARC_TLS_TPOFF64:           howto manager.      (line  218)
12399
* BFD_RELOC_SPARC_UA16:                  howto manager.      (line  145)
12400
* BFD_RELOC_SPARC_UA32:                  howto manager.      (line  146)
12401
* BFD_RELOC_SPARC_UA64:                  howto manager.      (line  147)
12402
* BFD_RELOC_SPARC_WDISP10:               howto manager.      (line  189)
12403
* BFD_RELOC_SPARC_WDISP16:               howto manager.      (line  172)
12404
* BFD_RELOC_SPARC_WDISP19:               howto manager.      (line  173)
12405
* BFD_RELOC_SPARC_WDISP22:               howto manager.      (line  132)
12406
* BFD_RELOC_SPARC_WPLT30:                howto manager.      (line  140)
12407
* BFD_RELOC_SPU_ADD_PIC:                 howto manager.      (line  235)
12408
* BFD_RELOC_SPU_HI16:                    howto manager.      (line  232)
12409
* BFD_RELOC_SPU_IMM10:                   howto manager.      (line  223)
12410
* BFD_RELOC_SPU_IMM10W:                  howto manager.      (line  224)
12411
* BFD_RELOC_SPU_IMM16:                   howto manager.      (line  225)
12412
* BFD_RELOC_SPU_IMM16W:                  howto manager.      (line  226)
12413
* BFD_RELOC_SPU_IMM18:                   howto manager.      (line  227)
12414
* BFD_RELOC_SPU_IMM7:                    howto manager.      (line  221)
12415
* BFD_RELOC_SPU_IMM8:                    howto manager.      (line  222)
12416
* BFD_RELOC_SPU_LO16:                    howto manager.      (line  231)
12417
* BFD_RELOC_SPU_PCREL16:                 howto manager.      (line  230)
12418
* BFD_RELOC_SPU_PCREL9a:                 howto manager.      (line  228)
12419
* BFD_RELOC_SPU_PCREL9b:                 howto manager.      (line  229)
12420
* BFD_RELOC_SPU_PPU32:                   howto manager.      (line  233)
12421
* BFD_RELOC_SPU_PPU64:                   howto manager.      (line  234)
12422
* BFD_RELOC_THUMB_PCREL_BLX:             howto manager.      (line  785)
12423
* BFD_RELOC_THUMB_PCREL_BRANCH12:        howto manager.      (line  799)
12424
* BFD_RELOC_THUMB_PCREL_BRANCH20:        howto manager.      (line  800)
12425
* BFD_RELOC_THUMB_PCREL_BRANCH23:        howto manager.      (line  801)
12426
* BFD_RELOC_THUMB_PCREL_BRANCH25:        howto manager.      (line  802)
12427
* BFD_RELOC_THUMB_PCREL_BRANCH7:         howto manager.      (line  797)
12428
* BFD_RELOC_THUMB_PCREL_BRANCH9:         howto manager.      (line  798)
12429
* BFD_RELOC_TIC30_LDP:                   howto manager.      (line 1417)
12430
* BFD_RELOC_TIC54X_16_OF_23:             howto manager.      (line 1435)
12431
* BFD_RELOC_TIC54X_23:                   howto manager.      (line 1432)
12432
* BFD_RELOC_TIC54X_MS7_OF_23:            howto manager.      (line 1440)
12433
* BFD_RELOC_TIC54X_PARTLS7:              howto manager.      (line 1422)
12434
* BFD_RELOC_TIC54X_PARTMS9:              howto manager.      (line 1427)
12435
* BFD_RELOC_TILEGX_BROFF_X1:             howto manager.      (line 2938)
12436
* BFD_RELOC_TILEGX_COPY:                 howto manager.      (line 2934)
12437
* BFD_RELOC_TILEGX_DEST_IMM8_X1:         howto manager.      (line 2945)
12438
* BFD_RELOC_TILEGX_GLOB_DAT:             howto manager.      (line 2935)
12439
* BFD_RELOC_TILEGX_HW0:                  howto manager.      (line 2927)
12440
* BFD_RELOC_TILEGX_HW0_LAST:             howto manager.      (line 2931)
12441
* BFD_RELOC_TILEGX_HW1:                  howto manager.      (line 2928)
12442
* BFD_RELOC_TILEGX_HW1_LAST:             howto manager.      (line 2932)
12443
* BFD_RELOC_TILEGX_HW2:                  howto manager.      (line 2929)
12444
* BFD_RELOC_TILEGX_HW2_LAST:             howto manager.      (line 2933)
12445
* BFD_RELOC_TILEGX_HW3:                  howto manager.      (line 2930)
12446
* BFD_RELOC_TILEGX_IMM16_X0_HW0:         howto manager.      (line 2954)
12447
* BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT:     howto manager.      (line 2982)
12448
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST:    howto manager.      (line 2962)
12449
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT: howto manager.     (line 2990)
12450
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL: howto manager.   (line 2976)
12451
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL: howto manager.
12452
                                                             (line 3010)
12453
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: howto manager.  (line 3004)
12454
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: howto manager.  (line 3016)
12455
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: howto manager.  (line 3000)
12456
* BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL:   howto manager.      (line 2968)
12457
* BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL: howto manager.    (line 2984)
12458
* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD:  howto manager.      (line 2996)
12459
* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE:  howto manager.      (line 3008)
12460
* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE:  howto manager.      (line 2998)
12461
* BFD_RELOC_TILEGX_IMM16_X0_HW1:         howto manager.      (line 2956)
12462
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST:    howto manager.      (line 2964)
12463
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT: howto manager.     (line 2992)
12464
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL: howto manager.   (line 2978)
12465
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL: howto manager.
12466
                                                             (line 3012)
12467
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: howto manager.  (line 3006)
12468
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: howto manager.  (line 3018)
12469
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: howto manager.  (line 3002)
12470
* BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL:   howto manager.      (line 2970)
12471
* BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL: howto manager.    (line 2986)
12472
* BFD_RELOC_TILEGX_IMM16_X0_HW2:         howto manager.      (line 2958)
12473
* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST:    howto manager.      (line 2966)
12474
* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL: howto manager.   (line 2980)
12475
* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL: howto manager.
12476
                                                             (line 3014)
12477
* BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL:   howto manager.      (line 2972)
12478
* BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL: howto manager.    (line 2988)
12479
* BFD_RELOC_TILEGX_IMM16_X0_HW3:         howto manager.      (line 2960)
12480
* BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL:   howto manager.      (line 2974)
12481
* BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL: howto manager.    (line 2994)
12482
* BFD_RELOC_TILEGX_IMM16_X1_HW0:         howto manager.      (line 2955)
12483
* BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT:     howto manager.      (line 2983)
12484
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST:    howto manager.      (line 2963)
12485
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT: howto manager.     (line 2991)
12486
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL: howto manager.   (line 2977)
12487
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL: howto manager.
12488
                                                             (line 3011)
12489
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: howto manager.  (line 3005)
12490
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: howto manager.  (line 3017)
12491
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: howto manager.  (line 3001)
12492
* BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL:   howto manager.      (line 2969)
12493
* BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL: howto manager.    (line 2985)
12494
* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD:  howto manager.      (line 2997)
12495
* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE:  howto manager.      (line 3009)
12496
* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE:  howto manager.      (line 2999)
12497
* BFD_RELOC_TILEGX_IMM16_X1_HW1:         howto manager.      (line 2957)
12498
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST:    howto manager.      (line 2965)
12499
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT: howto manager.     (line 2993)
12500
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL: howto manager.   (line 2979)
12501
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL: howto manager.
12502
                                                             (line 3013)
12503
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: howto manager.  (line 3007)
12504
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: howto manager.  (line 3019)
12505
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: howto manager.  (line 3003)
12506
* BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL:   howto manager.      (line 2971)
12507
* BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL: howto manager.    (line 2987)
12508
* BFD_RELOC_TILEGX_IMM16_X1_HW2:         howto manager.      (line 2959)
12509
* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST:    howto manager.      (line 2967)
12510
* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL: howto manager.   (line 2981)
12511
* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL: howto manager.
12512
                                                             (line 3015)
12513
* BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL:   howto manager.      (line 2973)
12514
* BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL: howto manager.    (line 2989)
12515
* BFD_RELOC_TILEGX_IMM16_X1_HW3:         howto manager.      (line 2961)
12516
* BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL:   howto manager.      (line 2975)
12517
* BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL: howto manager.    (line 2995)
12518
* BFD_RELOC_TILEGX_IMM8_X0:              howto manager.      (line 2941)
12519
* BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD:      howto manager.      (line 3032)
12520
* BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD:   howto manager.      (line 3027)
12521
* BFD_RELOC_TILEGX_IMM8_X1:              howto manager.      (line 2943)
12522
* BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD:      howto manager.      (line 3033)
12523
* BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD:   howto manager.      (line 3028)
12524
* BFD_RELOC_TILEGX_IMM8_Y0:              howto manager.      (line 2942)
12525
* BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD:      howto manager.      (line 3034)
12526
* BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD:   howto manager.      (line 3029)
12527
* BFD_RELOC_TILEGX_IMM8_Y1:              howto manager.      (line 2944)
12528
* BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD:      howto manager.      (line 3035)
12529
* BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD:   howto manager.      (line 3030)
12530
* BFD_RELOC_TILEGX_JMP_SLOT:             howto manager.      (line 2936)
12531
* BFD_RELOC_TILEGX_JUMPOFF_X1:           howto manager.      (line 2939)
12532
* BFD_RELOC_TILEGX_JUMPOFF_X1_PLT:       howto manager.      (line 2940)
12533
* BFD_RELOC_TILEGX_MF_IMM14_X1:          howto manager.      (line 2947)
12534
* BFD_RELOC_TILEGX_MMEND_X0:             howto manager.      (line 2949)
12535
* BFD_RELOC_TILEGX_MMSTART_X0:           howto manager.      (line 2948)
12536
* BFD_RELOC_TILEGX_MT_IMM14_X1:          howto manager.      (line 2946)
12537
* BFD_RELOC_TILEGX_RELATIVE:             howto manager.      (line 2937)
12538
* BFD_RELOC_TILEGX_SHAMT_X0:             howto manager.      (line 2950)
12539
* BFD_RELOC_TILEGX_SHAMT_X1:             howto manager.      (line 2951)
12540
* BFD_RELOC_TILEGX_SHAMT_Y0:             howto manager.      (line 2952)
12541
* BFD_RELOC_TILEGX_SHAMT_Y1:             howto manager.      (line 2953)
12542
* BFD_RELOC_TILEGX_TLS_DTPMOD32:         howto manager.      (line 3023)
12543
* BFD_RELOC_TILEGX_TLS_DTPMOD64:         howto manager.      (line 3020)
12544
* BFD_RELOC_TILEGX_TLS_DTPOFF32:         howto manager.      (line 3024)
12545
* BFD_RELOC_TILEGX_TLS_DTPOFF64:         howto manager.      (line 3021)
12546
* BFD_RELOC_TILEGX_TLS_GD_CALL:          howto manager.      (line 3026)
12547
* BFD_RELOC_TILEGX_TLS_IE_LOAD:          howto manager.      (line 3031)
12548
* BFD_RELOC_TILEGX_TLS_TPOFF32:          howto manager.      (line 3025)
12549
* BFD_RELOC_TILEGX_TLS_TPOFF64:          howto manager.      (line 3022)
12550
* BFD_RELOC_TILEPRO_BROFF_X1:            howto manager.      (line 2850)
12551
* BFD_RELOC_TILEPRO_COPY:                howto manager.      (line 2846)
12552
* BFD_RELOC_TILEPRO_DEST_IMM8_X1:        howto manager.      (line 2857)
12553
* BFD_RELOC_TILEPRO_GLOB_DAT:            howto manager.      (line 2847)
12554
* BFD_RELOC_TILEPRO_IMM16_X0:            howto manager.      (line 2860)
12555
* BFD_RELOC_TILEPRO_IMM16_X0_GOT:        howto manager.      (line 2876)
12556
* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA:     howto manager.      (line 2882)
12557
* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI:     howto manager.      (line 2880)
12558
* BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO:     howto manager.      (line 2878)
12559
* BFD_RELOC_TILEPRO_IMM16_X0_HA:         howto manager.      (line 2866)
12560
* BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL:   howto manager.      (line 2874)
12561
* BFD_RELOC_TILEPRO_IMM16_X0_HI:         howto manager.      (line 2864)
12562
* BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL:   howto manager.      (line 2872)
12563
* BFD_RELOC_TILEPRO_IMM16_X0_LO:         howto manager.      (line 2862)
12564
* BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL:   howto manager.      (line 2870)
12565
* BFD_RELOC_TILEPRO_IMM16_X0_PCREL:      howto manager.      (line 2868)
12566
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD:     howto manager.      (line 2898)
12567
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA:  howto manager.      (line 2904)
12568
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI:  howto manager.      (line 2902)
12569
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO:  howto manager.      (line 2900)
12570
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE:     howto manager.      (line 2906)
12571
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA:  howto manager.      (line 2912)
12572
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI:  howto manager.      (line 2910)
12573
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO:  howto manager.      (line 2908)
12574
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE:     howto manager.      (line 2917)
12575
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA:  howto manager.      (line 2923)
12576
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI:  howto manager.      (line 2921)
12577
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO:  howto manager.      (line 2919)
12578
* BFD_RELOC_TILEPRO_IMM16_X1:            howto manager.      (line 2861)
12579
* BFD_RELOC_TILEPRO_IMM16_X1_GOT:        howto manager.      (line 2877)
12580
* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA:     howto manager.      (line 2883)
12581
* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI:     howto manager.      (line 2881)
12582
* BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO:     howto manager.      (line 2879)
12583
* BFD_RELOC_TILEPRO_IMM16_X1_HA:         howto manager.      (line 2867)
12584
* BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL:   howto manager.      (line 2875)
12585
* BFD_RELOC_TILEPRO_IMM16_X1_HI:         howto manager.      (line 2865)
12586
* BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL:   howto manager.      (line 2873)
12587
* BFD_RELOC_TILEPRO_IMM16_X1_LO:         howto manager.      (line 2863)
12588
* BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL:   howto manager.      (line 2871)
12589
* BFD_RELOC_TILEPRO_IMM16_X1_PCREL:      howto manager.      (line 2869)
12590
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD:     howto manager.      (line 2899)
12591
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA:  howto manager.      (line 2905)
12592
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI:  howto manager.      (line 2903)
12593
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO:  howto manager.      (line 2901)
12594
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE:     howto manager.      (line 2907)
12595
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA:  howto manager.      (line 2913)
12596
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI:  howto manager.      (line 2911)
12597
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO:  howto manager.      (line 2909)
12598
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE:     howto manager.      (line 2918)
12599
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA:  howto manager.      (line 2924)
12600
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI:  howto manager.      (line 2922)
12601
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO:  howto manager.      (line 2920)
12602
* BFD_RELOC_TILEPRO_IMM8_X0:             howto manager.      (line 2853)
12603
* BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD:  howto manager.      (line 2893)
12604
* BFD_RELOC_TILEPRO_IMM8_X1:             howto manager.      (line 2855)
12605
* BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD:  howto manager.      (line 2894)
12606
* BFD_RELOC_TILEPRO_IMM8_Y0:             howto manager.      (line 2854)
12607
* BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD:  howto manager.      (line 2895)
12608
* BFD_RELOC_TILEPRO_IMM8_Y1:             howto manager.      (line 2856)
12609
* BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD:  howto manager.      (line 2896)
12610
* BFD_RELOC_TILEPRO_JMP_SLOT:            howto manager.      (line 2848)
12611
* BFD_RELOC_TILEPRO_JOFFLONG_X1:         howto manager.      (line 2851)
12612
* BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT:     howto manager.      (line 2852)
12613
* BFD_RELOC_TILEPRO_MF_IMM15_X1:         howto manager.      (line 2859)
12614
* BFD_RELOC_TILEPRO_MMEND_X0:            howto manager.      (line 2885)
12615
* BFD_RELOC_TILEPRO_MMEND_X1:            howto manager.      (line 2887)
12616
* BFD_RELOC_TILEPRO_MMSTART_X0:          howto manager.      (line 2884)
12617
* BFD_RELOC_TILEPRO_MMSTART_X1:          howto manager.      (line 2886)
12618
* BFD_RELOC_TILEPRO_MT_IMM15_X1:         howto manager.      (line 2858)
12619
* BFD_RELOC_TILEPRO_RELATIVE:            howto manager.      (line 2849)
12620
* BFD_RELOC_TILEPRO_SHAMT_X0:            howto manager.      (line 2888)
12621
* BFD_RELOC_TILEPRO_SHAMT_X1:            howto manager.      (line 2889)
12622
* BFD_RELOC_TILEPRO_SHAMT_Y0:            howto manager.      (line 2890)
12623
* BFD_RELOC_TILEPRO_SHAMT_Y1:            howto manager.      (line 2891)
12624
* BFD_RELOC_TILEPRO_TLS_DTPMOD32:        howto manager.      (line 2914)
12625
* BFD_RELOC_TILEPRO_TLS_DTPOFF32:        howto manager.      (line 2915)
12626
* BFD_RELOC_TILEPRO_TLS_GD_CALL:         howto manager.      (line 2892)
12627
* BFD_RELOC_TILEPRO_TLS_IE_LOAD:         howto manager.      (line 2897)
12628
* BFD_RELOC_TILEPRO_TLS_TPOFF32:         howto manager.      (line 2916)
12629
* bfd_reloc_type_lookup:                 howto manager.      (line 3061)
12630
* BFD_RELOC_V850_16_GOT:                 howto manager.      (line 1381)
12631
* BFD_RELOC_V850_16_GOTOFF:              howto manager.      (line 1405)
12632
* BFD_RELOC_V850_16_PCREL:               howto manager.      (line 1351)
12633
* BFD_RELOC_V850_16_S1:                  howto manager.      (line 1369)
12634
* BFD_RELOC_V850_16_SPLIT_OFFSET:        howto manager.      (line 1366)
12635
* BFD_RELOC_V850_17_PCREL:               howto manager.      (line 1354)
12636
* BFD_RELOC_V850_22_PCREL:               howto manager.      (line 1286)
12637
* BFD_RELOC_V850_22_PLT_PCREL:           howto manager.      (line 1387)
12638
* BFD_RELOC_V850_23:                     howto manager.      (line 1357)
12639
* BFD_RELOC_V850_32_ABS:                 howto manager.      (line 1363)
12640
* BFD_RELOC_V850_32_GOT:                 howto manager.      (line 1384)
12641
* BFD_RELOC_V850_32_GOTOFF:              howto manager.      (line 1408)
12642
* BFD_RELOC_V850_32_GOTPCREL:            howto manager.      (line 1378)
12643
* BFD_RELOC_V850_32_PCREL:               howto manager.      (line 1360)
12644
* BFD_RELOC_V850_32_PLT_PCREL:           howto manager.      (line 1390)
12645
* BFD_RELOC_V850_9_PCREL:                howto manager.      (line 1283)
12646
* BFD_RELOC_V850_ALIGN:                  howto manager.      (line 1344)
12647
* BFD_RELOC_V850_CALLT_15_16_OFFSET:     howto manager.      (line 1375)
12648
* BFD_RELOC_V850_CALLT_16_16_OFFSET:     howto manager.      (line 1335)
12649
* BFD_RELOC_V850_CALLT_6_7_OFFSET:       howto manager.      (line 1332)
12650
* BFD_RELOC_V850_CODE:                   howto manager.      (line 1411)
12651
* BFD_RELOC_V850_COPY:                   howto manager.      (line 1393)
12652
* BFD_RELOC_V850_DATA:                   howto manager.      (line 1414)
12653
* BFD_RELOC_V850_GLOB_DAT:               howto manager.      (line 1396)
12654
* BFD_RELOC_V850_JMP_SLOT:               howto manager.      (line 1399)
12655
* BFD_RELOC_V850_LO16_S1:                howto manager.      (line 1372)
12656
* BFD_RELOC_V850_LO16_SPLIT_OFFSET:      howto manager.      (line 1347)
12657
* BFD_RELOC_V850_LONGCALL:               howto manager.      (line 1338)
12658
* BFD_RELOC_V850_LONGJUMP:               howto manager.      (line 1341)
12659
* BFD_RELOC_V850_RELATIVE:               howto manager.      (line 1402)
12660
* BFD_RELOC_V850_SDA_15_16_OFFSET:       howto manager.      (line 1292)
12661
* BFD_RELOC_V850_SDA_16_16_OFFSET:       howto manager.      (line 1289)
12662
* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager.      (line 1324)
12663
* BFD_RELOC_V850_TDA_16_16_OFFSET:       howto manager.      (line 1314)
12664
* BFD_RELOC_V850_TDA_4_4_OFFSET:         howto manager.      (line 1321)
12665
* BFD_RELOC_V850_TDA_4_5_OFFSET:         howto manager.      (line 1317)
12666
* BFD_RELOC_V850_TDA_6_8_OFFSET:         howto manager.      (line 1303)
12667
* BFD_RELOC_V850_TDA_7_7_OFFSET:         howto manager.      (line 1311)
12668
* BFD_RELOC_V850_TDA_7_8_OFFSET:         howto manager.      (line 1307)
12669
* BFD_RELOC_V850_ZDA_15_16_OFFSET:       howto manager.      (line 1299)
12670
* BFD_RELOC_V850_ZDA_16_16_OFFSET:       howto manager.      (line 1296)
12671
* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager.      (line 1328)
12672
* BFD_RELOC_VAX_GLOB_DAT:                howto manager.      (line 2380)
12673
* BFD_RELOC_VAX_JMP_SLOT:                howto manager.      (line 2381)
12674
* BFD_RELOC_VAX_RELATIVE:                howto manager.      (line 2382)
12675
* BFD_RELOC_VPE4KMATH_DATA:              howto manager.      (line 1935)
12676
* BFD_RELOC_VPE4KMATH_INSN:              howto manager.      (line 1936)
12677
* BFD_RELOC_VTABLE_ENTRY:                howto manager.      (line 1940)
12678
* BFD_RELOC_VTABLE_INHERIT:              howto manager.      (line 1939)
12679
* BFD_RELOC_X86_64_32S:                  howto manager.      (line  603)
12680
* BFD_RELOC_X86_64_COPY:                 howto manager.      (line  598)
12681
* BFD_RELOC_X86_64_DTPMOD64:             howto manager.      (line  604)
12682
* BFD_RELOC_X86_64_DTPOFF32:             howto manager.      (line  609)
12683
* BFD_RELOC_X86_64_DTPOFF64:             howto manager.      (line  605)
12684
* BFD_RELOC_X86_64_GLOB_DAT:             howto manager.      (line  599)
12685
* BFD_RELOC_X86_64_GOT32:                howto manager.      (line  596)
12686
* BFD_RELOC_X86_64_GOT64:                howto manager.      (line  614)
12687
* BFD_RELOC_X86_64_GOTOFF64:             howto manager.      (line  612)
12688
* BFD_RELOC_X86_64_GOTPC32:              howto manager.      (line  613)
12689
* BFD_RELOC_X86_64_GOTPC32_TLSDESC:      howto manager.      (line  619)
12690
* BFD_RELOC_X86_64_GOTPC64:              howto manager.      (line  616)
12691
* BFD_RELOC_X86_64_GOTPCREL:             howto manager.      (line  602)
12692
* BFD_RELOC_X86_64_GOTPCREL64:           howto manager.      (line  615)
12693
* BFD_RELOC_X86_64_GOTPLT64:             howto manager.      (line  617)
12694
* BFD_RELOC_X86_64_GOTTPOFF:             howto manager.      (line  610)
12695
* BFD_RELOC_X86_64_IRELATIVE:            howto manager.      (line  622)
12696
* BFD_RELOC_X86_64_JUMP_SLOT:            howto manager.      (line  600)
12697
* BFD_RELOC_X86_64_PLT32:                howto manager.      (line  597)
12698
* BFD_RELOC_X86_64_PLTOFF64:             howto manager.      (line  618)
12699
* BFD_RELOC_X86_64_RELATIVE:             howto manager.      (line  601)
12700
* BFD_RELOC_X86_64_TLSDESC:              howto manager.      (line  621)
12701
* BFD_RELOC_X86_64_TLSDESC_CALL:         howto manager.      (line  620)
12702
* BFD_RELOC_X86_64_TLSGD:                howto manager.      (line  607)
12703
* BFD_RELOC_X86_64_TLSLD:                howto manager.      (line  608)
12704
* BFD_RELOC_X86_64_TPOFF32:              howto manager.      (line  611)
12705
* BFD_RELOC_X86_64_TPOFF64:              howto manager.      (line  606)
12706
* BFD_RELOC_XC16X_PAG:                   howto manager.      (line 2374)
12707
* BFD_RELOC_XC16X_POF:                   howto manager.      (line 2375)
12708
* BFD_RELOC_XC16X_SEG:                   howto manager.      (line 2376)
12709
* BFD_RELOC_XC16X_SOF:                   howto manager.      (line 2377)
12710
* BFD_RELOC_XGATE_24:                    howto manager.      (line 2098)
12711
* BFD_RELOC_XGATE_GPAGE:                 howto manager.      (line 2095)
12712
* BFD_RELOC_XGATE_IMM3:                  howto manager.      (line 2115)
12713
* BFD_RELOC_XGATE_IMM4:                  howto manager.      (line 2118)
12714
* BFD_RELOC_XGATE_IMM5:                  howto manager.      (line 2121)
12715
* BFD_RELOC_XGATE_IMM8_HI:               howto manager.      (line 2111)
12716
* BFD_RELOC_XGATE_IMM8_LO:               howto manager.      (line 2107)
12717
* BFD_RELOC_XGATE_LO16:                  howto manager.      (line 2091)
12718
* BFD_RELOC_XGATE_PCREL_10:              howto manager.      (line 2104)
12719
* BFD_RELOC_XGATE_PCREL_9:               howto manager.      (line 2101)
12720
* BFD_RELOC_XGATE_RL_GROUP:              howto manager.      (line 2086)
12721
* BFD_RELOC_XGATE_RL_JUMP:               howto manager.      (line 2082)
12722
* BFD_RELOC_XSTORMY16_12:                howto manager.      (line 2366)
12723
* BFD_RELOC_XSTORMY16_24:                howto manager.      (line 2367)
12724
* BFD_RELOC_XSTORMY16_FPTR16:            howto manager.      (line 2368)
12725
* BFD_RELOC_XSTORMY16_REL_12:            howto manager.      (line 2365)
12726
* BFD_RELOC_XTENSA_ASM_EXPAND:           howto manager.      (line 2486)
12727
* BFD_RELOC_XTENSA_ASM_SIMPLIFY:         howto manager.      (line 2491)
12728
* BFD_RELOC_XTENSA_DIFF16:               howto manager.      (line 2433)
12729
* BFD_RELOC_XTENSA_DIFF32:               howto manager.      (line 2434)
12730
* BFD_RELOC_XTENSA_DIFF8:                howto manager.      (line 2432)
12731
* BFD_RELOC_XTENSA_GLOB_DAT:             howto manager.      (line 2422)
12732
* BFD_RELOC_XTENSA_JMP_SLOT:             howto manager.      (line 2423)
12733
* BFD_RELOC_XTENSA_OP0:                  howto manager.      (line 2480)
12734
* BFD_RELOC_XTENSA_OP1:                  howto manager.      (line 2481)
12735
* BFD_RELOC_XTENSA_OP2:                  howto manager.      (line 2482)
12736
* BFD_RELOC_XTENSA_PLT:                  howto manager.      (line 2427)
12737
* BFD_RELOC_XTENSA_RELATIVE:             howto manager.      (line 2424)
12738
* BFD_RELOC_XTENSA_RTLD:                 howto manager.      (line 2417)
12739
* BFD_RELOC_XTENSA_SLOT0_ALT:            howto manager.      (line 2462)
12740
* BFD_RELOC_XTENSA_SLOT0_OP:             howto manager.      (line 2442)
12741
* BFD_RELOC_XTENSA_SLOT10_ALT:           howto manager.      (line 2472)
12742
* BFD_RELOC_XTENSA_SLOT10_OP:            howto manager.      (line 2452)
12743
* BFD_RELOC_XTENSA_SLOT11_ALT:           howto manager.      (line 2473)
12744
* BFD_RELOC_XTENSA_SLOT11_OP:            howto manager.      (line 2453)
12745
* BFD_RELOC_XTENSA_SLOT12_ALT:           howto manager.      (line 2474)
12746
* BFD_RELOC_XTENSA_SLOT12_OP:            howto manager.      (line 2454)
12747
* BFD_RELOC_XTENSA_SLOT13_ALT:           howto manager.      (line 2475)
12748
* BFD_RELOC_XTENSA_SLOT13_OP:            howto manager.      (line 2455)
12749
* BFD_RELOC_XTENSA_SLOT14_ALT:           howto manager.      (line 2476)
12750
* BFD_RELOC_XTENSA_SLOT14_OP:            howto manager.      (line 2456)
12751
* BFD_RELOC_XTENSA_SLOT1_ALT:            howto manager.      (line 2463)
12752
* BFD_RELOC_XTENSA_SLOT1_OP:             howto manager.      (line 2443)
12753
* BFD_RELOC_XTENSA_SLOT2_ALT:            howto manager.      (line 2464)
12754
* BFD_RELOC_XTENSA_SLOT2_OP:             howto manager.      (line 2444)
12755
* BFD_RELOC_XTENSA_SLOT3_ALT:            howto manager.      (line 2465)
12756
* BFD_RELOC_XTENSA_SLOT3_OP:             howto manager.      (line 2445)
12757
* BFD_RELOC_XTENSA_SLOT4_ALT:            howto manager.      (line 2466)
12758
* BFD_RELOC_XTENSA_SLOT4_OP:             howto manager.      (line 2446)
12759
* BFD_RELOC_XTENSA_SLOT5_ALT:            howto manager.      (line 2467)
12760
* BFD_RELOC_XTENSA_SLOT5_OP:             howto manager.      (line 2447)
12761
* BFD_RELOC_XTENSA_SLOT6_ALT:            howto manager.      (line 2468)
12762
* BFD_RELOC_XTENSA_SLOT6_OP:             howto manager.      (line 2448)
12763
* BFD_RELOC_XTENSA_SLOT7_ALT:            howto manager.      (line 2469)
12764
* BFD_RELOC_XTENSA_SLOT7_OP:             howto manager.      (line 2449)
12765
* BFD_RELOC_XTENSA_SLOT8_ALT:            howto manager.      (line 2470)
12766
* BFD_RELOC_XTENSA_SLOT8_OP:             howto manager.      (line 2450)
12767
* BFD_RELOC_XTENSA_SLOT9_ALT:            howto manager.      (line 2471)
12768
* BFD_RELOC_XTENSA_SLOT9_OP:             howto manager.      (line 2451)
12769
* BFD_RELOC_XTENSA_TLS_ARG:              howto manager.      (line 2501)
12770
* BFD_RELOC_XTENSA_TLS_CALL:             howto manager.      (line 2502)
12771
* BFD_RELOC_XTENSA_TLS_DTPOFF:           howto manager.      (line 2498)
12772
* BFD_RELOC_XTENSA_TLS_FUNC:             howto manager.      (line 2500)
12773
* BFD_RELOC_XTENSA_TLS_TPOFF:            howto manager.      (line 2499)
12774
* BFD_RELOC_XTENSA_TLSDESC_ARG:          howto manager.      (line 2497)
12775
* BFD_RELOC_XTENSA_TLSDESC_FN:           howto manager.      (line 2496)
12776
* BFD_RELOC_Z80_DISP8:                   howto manager.      (line 2505)
12777
* BFD_RELOC_Z8K_CALLR:                   howto manager.      (line 2511)
12778
* BFD_RELOC_Z8K_DISP7:                   howto manager.      (line 2508)
12779
* BFD_RELOC_Z8K_IMM4L:                   howto manager.      (line 2514)
12780
* bfd_rename_section:                    section prototypes. (line  169)
12781
* bfd_scan_arch:                         Architectures.      (line  482)
12782
* bfd_scan_vma:                          BFD front end.      (line  567)
12783
* bfd_seach_for_target:                  bfd_target.         (line  524)
12784
* bfd_section_already_linked:            Writing the symbol table.
12785
                                                             (line   55)
12786
* bfd_section_list_clear:                section prototypes. (line    8)
12787
* bfd_sections_find_if:                  section prototypes. (line  199)
12788
* bfd_set_arch_info:                     Architectures.      (line  523)
12789
* bfd_set_archive_head:                  Archives.           (line   75)
12790
* bfd_set_assert_handler:                BFD front end.      (line  429)
12791
* bfd_set_default_target:                bfd_target.         (line  463)
12792
* bfd_set_error:                         BFD front end.      (line  345)
12793
* bfd_set_error_handler:                 BFD front end.      (line  387)
12794
* bfd_set_error_program_name:            BFD front end.      (line  396)
12795
* bfd_set_file_flags:                    BFD front end.      (line  487)
12796
* bfd_set_format:                        Formats.            (line   68)
12797
* bfd_set_gp_size:                       BFD front end.      (line  557)
12798
* bfd_set_private_flags:                 BFD front end.      (line  634)
12799
* bfd_set_reloc:                         BFD front end.      (line  477)
12800
* bfd_set_section_contents:              section prototypes. (line  230)
12801
* bfd_set_section_flags:                 section prototypes. (line  154)
12802
* bfd_set_section_size:                  section prototypes. (line  216)
12803
* bfd_set_start_address:                 BFD front end.      (line  536)
12804
* bfd_set_symtab:                        symbol handling functions.
12805
                                                             (line   60)
12806
* bfd_symbol_info:                       symbol handling functions.
12807
                                                             (line  130)
12808
* bfd_target_list:                       bfd_target.         (line  515)
12809
* bfd_write_bigendian_4byte_int:         Internal.           (line   13)
12810
* bfd_zalloc:                            Opening and Closing.
12811
                                                             (line  236)
12812
* bfd_zalloc2:                           Opening and Closing.
12813
                                                             (line  245)
12814
* coff_symbol_type:                      coff.               (line  244)
12815
* core_file_matches_executable_p:        Core Files.         (line   39)
12816
* find_separate_debug_file:              Opening and Closing.
12817
                                                             (line  287)
12818
* generic_core_file_matches_executable_p: Core Files.        (line   49)
12819
* get_debug_link_info:                   Opening and Closing.
12820
                                                             (line  268)
12821
* Hash tables:                           Hash Tables.        (line    6)
12822
* internal object-file format:           Canonical format.   (line   11)
12823
* Linker:                                Linker Functions.   (line    6)
12824
* Other functions:                       BFD front end.      (line  649)
12825
* separate_debug_file_exists:            Opening and Closing.
12826
                                                             (line  278)
12827
* struct bfd_iovec:                      BFD front end.      (line  860)
12828
* target vector (_bfd_final_link):       Performing the Final Link.
12829
                                                             (line    6)
12830
* target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table.
12831
                                                             (line    6)
12832
* target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table.
12833
 
12834
 
12835
* what is it?:                           Overview.           (line    6)
12836
12837
12838

12839
Tag Table:
12840
Node: Top1090
12841
Node: Overview1429
12842
Node: History2480
12843
Node: How It Works3426
12844
Node: What BFD Version 2 Can Do4969
12845
Node: BFD information loss6284
12846
Node: Canonical format8816
12847
Node: BFD front end13188
12848
Node: Memory Usage47562
12849
Node: Initialization48790
12850
Node: Sections49249
12851
Node: Section Input49732
12852
Node: Section Output51097
12853
Node: typedef asection53583
12854
Node: section prototypes78790
12855
Node: Symbols89047
12856
Node: Reading Symbols90642
12857
Node: Writing Symbols91749
12858
Node: Mini Symbols93490
12859
Node: typedef asymbol94464
12860
Node: symbol handling functions100523
12861
Node: Archives105865
12862
Node: Formats109894
12863
Node: Relocations112842
12864
Node: typedef arelent113569
12865
Node: howto manager129205
12866
Node: Core Files229368
12867
Node: Targets231406
12868
Node: bfd_target233376
12869
Node: Architectures256598
12870
Node: Opening and Closing282614
12871
Node: Internal294133
12872
Node: File Caching300478
12873
Node: Linker Functions302392
12874
Node: Creating a Linker Hash Table304065
12875
Node: Adding Symbols to the Hash Table305803
12876
Node: Differing file formats306703
12877
Node: Adding symbols from an object file308428
12878
Node: Adding symbols from an archive310579
12879
Node: Performing the Final Link313508
12880
Node: Information provided by the linker314750
12881
Node: Relocating the section contents315904
12882
Node: Writing the symbol table317655
12883
Node: Hash Tables322041
12884
Node: Creating and Freeing a Hash Table323239
12885
Node: Looking Up or Entering a String324489
12886
Node: Traversing a Hash Table325742
12887
Node: Deriving a New Hash Table Type326531
12888
Node: Define the Derived Structures327597
12889
Node: Write the Derived Creation Routine328678
12890
Node: Write Other Derived Routines331302
12891
Node: BFD back ends332617
12892
Node: What to Put Where332887
12893
Node: aout333067
12894
Node: coff339385
12895
Node: elf367818
12896
Node: mmo368219
12897
Node: File layout369147
12898
Node: Symbol-table374794
12899
Node: mmo section mapping378563
12900
Node: GNU Free Documentation License382215

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.