This is bfd.info, produced by makeinfo version 5.2 from bfd.texinfo.

This file documents the BFD library.

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

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

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

   A GNU Manual

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

   You have freedom to copy and modify this GNU Manual, like GNU
software.  Copies published by the Free Software Foundation raise funds
for GNU development.
INFO-DIR-SECTION Software development
START-INFO-DIR-ENTRY
* Bfd: (bfd).                   The Binary File Descriptor library.
END-INFO-DIR-ENTRY


File: bfd.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)

This file documents the binary file descriptor library libbfd.

* Menu:

* Overview::			Overview of BFD
* BFD front end::		BFD front end
* BFD back ends::		BFD back ends
* GNU Free Documentation License::  GNU Free Documentation License
* BFD Index::		BFD Index


File: bfd.info,  Node: Overview,  Next: BFD front end,  Prev: Top,  Up: Top

1 Introduction
**************

BFD is a package which allows applications to use the same routines to
operate on object files whatever the object file format.  A new object
file format can be supported simply by creating a new BFD back end and
adding it to the library.

   BFD is split into two parts: the front end, and the back ends (one
for each object file format).
   * The front end of BFD provides the interface to the user.  It
     manages memory and various canonical data structures.  The front
     end also decides which back end to use and when to call back end
     routines.
   * The back ends provide BFD its view of the real world.  Each back
     end provides a set of calls which the BFD front end can use to
     maintain its canonical form.  The back ends also may keep around
     information for their own use, for greater efficiency.
* Menu:

* History::			History
* How It Works::		How It Works
* What BFD Version 2 Can Do::	What BFD Version 2 Can Do


File: bfd.info,  Node: History,  Next: How It Works,  Prev: Overview,  Up: Overview

1.1 History
===========

One spur behind BFD was the desire, on the part of the GNU 960 team at
Intel Oregon, for interoperability of applications on their COFF and
b.out file formats.  Cygnus was providing GNU support for the team, and
was contracted to provide the required functionality.

   The name came from a conversation David Wallace was having with
Richard Stallman about the library: RMS said that it would be quite
hard--David said "BFD". Stallman was right, but the name stuck.

   At the same time, Ready Systems wanted much the same thing, but for
different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k
coff.

   BFD was first implemented by members of Cygnus Support; Steve
Chamberlain ('sac@cygnus.com'), John Gilmore ('gnu@cygnus.com'), K.
Richard Pixley ('rich@cygnus.com') and David Henkel-Wallace
('gumby@cygnus.com').


File: bfd.info,  Node: How It Works,  Next: What BFD Version 2 Can Do,  Prev: History,  Up: Overview

1.2 How To Use BFD
==================

To use the library, include 'bfd.h' and link with 'libbfd.a'.

   BFD provides a common interface to the parts of an object file for a
calling application.

   When an application successfully opens a target file (object,
archive, or whatever), a pointer to an internal structure is returned.
This pointer points to a structure called 'bfd', described in 'bfd.h'.
Our convention is to call this pointer a BFD, and instances of it within
code 'abfd'.  All operations on the target object file are applied as
methods to the BFD. The mapping is defined within 'bfd.h' in a set of
macros, all beginning with 'bfd_' to reduce namespace pollution.

   For example, this sequence does what you would probably expect:
return the number of sections in an object file attached to a BFD
'abfd'.

     #include "bfd.h"

     unsigned int number_of_sections (abfd)
     bfd *abfd;
     {
       return bfd_count_sections (abfd);
     }

   The abstraction used within BFD is that an object file has:

   * a header,
   * a number of sections containing raw data (*note Sections::),
   * a set of relocations (*note Relocations::), and
   * some symbol information (*note Symbols::).
Also, BFDs opened for archives have the additional attribute of an index
and contain subordinate BFDs.  This approach is fine for a.out and coff,
but loses efficiency when applied to formats such as S-records and
IEEE-695.


File: bfd.info,  Node: What BFD Version 2 Can Do,  Prev: How It Works,  Up: Overview

1.3 What BFD Version 2 Can Do
=============================

When an object file is opened, BFD subroutines automatically determine
the format of the input object file.  They then build a descriptor in
memory with pointers to routines that will be used to access elements of
the object file's data structures.

   As different information from the object files is required, BFD reads
from different sections of the file and processes them.  For example, a
very common operation for the linker is processing symbol tables.  Each
BFD back end provides a routine for converting between the object file's
representation of symbols and an internal canonical format.  When the
linker asks for the symbol table of an object file, it calls through a
memory pointer to the routine from the relevant BFD back end which reads
and converts the table into a canonical form.  The linker then operates
upon the canonical form.  When the link is finished and the linker
writes the output file's symbol table, another BFD back end routine is
called to take the newly created symbol table and convert it into the
chosen output format.

* Menu:

* BFD information loss::	Information Loss
* Canonical format::		The BFD	canonical object-file format


File: bfd.info,  Node: BFD information loss,  Next: Canonical format,  Up: What BFD Version 2 Can Do

1.3.1 Information Loss
----------------------

_Information can be lost during output._  The output formats supported
by BFD do not provide identical facilities, and information which can be
described in one form has nowhere to go in another format.  One example
of this is alignment information in 'b.out'.  There is nowhere in an
'a.out' format file to store alignment information on the contained
data, so when a file is linked from 'b.out' and an 'a.out' image is
produced, alignment information will not propagate to the output file.
(The linker will still use the alignment information internally, so the
link is performed correctly).

   Another example is COFF section names.  COFF files may contain an
unlimited number of sections, each one with a textual section name.  If
the target of the link is a format which does not have many sections
(e.g., 'a.out') or has sections without names (e.g., the Oasys format),
the link cannot be done simply.  You can circumvent this problem by
describing the desired input-to-output section mapping with the linker
command language.

   _Information can be lost during canonicalization._  The BFD internal
canonical form of the external formats is not exhaustive; there are
structures in input formats for which there is no direct representation
internally.  This means that the BFD back ends cannot maintain all
possible data richness through the transformation between external to
internal and back to external formats.

   This limitation is only a problem when an application reads one
format and writes another.  Each BFD back end is responsible for
maintaining as much data as possible, and the internal BFD canonical
form has structures which are opaque to the BFD core, and exported only
to the back ends.  When a file is read in one format, the canonical form
is generated for BFD and the application.  At the same time, the back
end saves away any information which may otherwise be lost.  If the data
is then written back in the same format, the back end routine will be
able to use the canonical form provided by the BFD core as well as the
information it prepared earlier.  Since there is a great deal of
commonality between back ends, there is no information lost when linking
or copying big endian COFF to little endian COFF, or 'a.out' to 'b.out'.
When a mixture of formats is linked, the information is only lost from
the files whose format differs from the destination.


File: bfd.info,  Node: Canonical format,  Prev: BFD information loss,  Up: What BFD Version 2 Can Do

1.3.2 The BFD canonical object-file format
------------------------------------------

The greatest potential for loss of information occurs when there is the
least overlap between the information provided by the source format,
that stored by the canonical format, and that needed by the destination
format.  A brief description of the canonical form may help you
understand which kinds of data you can count on preserving across
conversions.

_files_
     Information stored on a per-file basis includes target machine
     architecture, particular implementation format type, a demand
     pageable bit, and a write protected bit.  Information like Unix
     magic numbers is not stored here--only the magic numbers' meaning,
     so a 'ZMAGIC' file would have both the demand pageable bit and the
     write protected text bit set.  The byte order of the target is
     stored on a per-file basis, so that big- and little-endian object
     files may be used with one another.

_sections_
     Each section in the input file contains the name of the section,
     the section's original address in the object file, size and
     alignment information, various flags, and pointers into other BFD
     data structures.

_symbols_
     Each symbol contains a pointer to the information for the object
     file which originally defined it, its name, its value, and various
     flag bits.  When a BFD back end reads in a symbol table, it
     relocates all symbols to make them relative to the base of the
     section where they were defined.  Doing this ensures that each
     symbol points to its containing section.  Each symbol also has a
     varying amount of hidden private data for the BFD back end.  Since
     the symbol points to the original file, the private data format for
     that symbol is accessible.  'ld' can operate on a collection of
     symbols of wildly different formats without problems.

     Normal global and simple local symbols are maintained on output, so
     an output file (no matter its format) will retain symbols pointing
     to functions and to global, static, and common variables.  Some
     symbol information is not worth retaining; in 'a.out', type
     information is stored in the symbol table as long symbol names.
     This information would be useless to most COFF debuggers; the
     linker has command line switches to allow users to throw it away.

     There is one word of type information within the symbol, so if the
     format supports symbol type information within symbols (for
     example, COFF, IEEE, Oasys) and the type is simple enough to fit
     within one word (nearly everything but aggregates), the information
     will be preserved.

_relocation level_
     Each canonical BFD relocation record contains a pointer to the
     symbol to relocate to, the offset of the data to relocate, the
     section the data is in, and a pointer to a relocation type
     descriptor.  Relocation is performed by passing messages through
     the relocation type descriptor and the symbol pointer.  Therefore,
     relocations can be performed on output data using a relocation
     method that is only available in one of the input formats.  For
     instance, Oasys provides a byte relocation format.  A relocation
     record requesting this relocation type would point indirectly to a
     routine to perform this, so the relocation may be performed on a
     byte being written to a 68k COFF file, even though 68k COFF has no
     such relocation type.

_line numbers_
     Object formats can contain, for debugging purposes, some form of
     mapping between symbols, source line numbers, and addresses in the
     output file.  These addresses have to be relocated along with the
     symbol information.  Each symbol with an associated list of line
     number records points to the first record of the list.  The head of
     a line number list consists of a pointer to the symbol, which
     allows finding out the address of the function whose line number is
     being described.  The rest of the list is made up of pairs: offsets
     into the section and line numbers.  Any format which can simply
     derive this information can pass it successfully between formats
     (COFF, IEEE and Oasys).


File: bfd.info,  Node: BFD front end,  Next: BFD back ends,  Prev: Overview,  Up: Top

2 BFD Front End
***************

* Menu:

* typedef bfd::
* Error reporting::
* Miscellaneous::
* Memory Usage::
* Initialization::
* Sections::
* Symbols::
* Archives::
* Formats::
* Relocations::
* Core Files::
* Targets::
* Architectures::
* Opening and Closing::
* Internal::
* File Caching::
* Linker Functions::
* Hash Tables::


File: bfd.info,  Node: typedef bfd,  Next: Error reporting,  Prev: BFD front end,  Up: BFD front end

2.1 'typedef bfd'
=================

A BFD has type 'bfd'; objects of this type are the cornerstone of any
application using BFD. Using BFD consists of making references though
the BFD and to data in the BFD.

   Here is the structure that defines the type 'bfd'.  It contains the
major data about the file and pointers to the rest of the data.


     enum bfd_direction
       {
         no_direction = 0,
         read_direction = 1,
         write_direction = 2,
         both_direction = 3
       };

     struct bfd
     {
       /* A unique identifier of the BFD  */
       unsigned int id;

       /* The filename the application opened the BFD with.  */
       const char *filename;

       /* A pointer to the target jump table.  */
       const struct bfd_target *xvec;

       /* The IOSTREAM, and corresponding IO vector that provide access
          to the file backing the BFD.  */
       void *iostream;
       const struct bfd_iovec *iovec;

       /* The caching routines use these to maintain a
          least-recently-used list of BFDs.  */
       struct bfd *lru_prev, *lru_next;

       /* When a file is closed by the caching routines, BFD retains
          state information on the file here...  */
       ufile_ptr where;

       /* File modified time, if mtime_set is TRUE.  */
       long mtime;

       /* Reserved for an unimplemented file locking extension.  */
       int ifd;

       /* The format which belongs to the BFD. (object, core, etc.)  */
       bfd_format format;

       /* The direction with which the BFD was opened.  */
       enum bfd_direction direction;

       /* Format_specific flags.  */
       flagword flags;

       /* Values that may appear in the flags field of a BFD.  These also
          appear in the object_flags field of the bfd_target structure, where
          they indicate the set of flags used by that backend (not all flags
          are meaningful for all object file formats) (FIXME: at the moment,
          the object_flags values have mostly just been copied from backend
          to another, and are not necessarily correct).  */

     #define BFD_NO_FLAGS   0x00

       /* BFD contains relocation entries.  */
     #define HAS_RELOC      0x01

       /* BFD is directly executable.  */
     #define EXEC_P         0x02

       /* BFD has line number information (basically used for F_LNNO in a
          COFF header).  */
     #define HAS_LINENO     0x04

       /* BFD has debugging information.  */
     #define HAS_DEBUG      0x08

       /* BFD has symbols.  */
     #define HAS_SYMS       0x10

       /* BFD has local symbols (basically used for F_LSYMS in a COFF
          header).  */
     #define HAS_LOCALS     0x20

       /* BFD is a dynamic object.  */
     #define DYNAMIC        0x40

       /* Text section is write protected (if D_PAGED is not set, this is
          like an a.out NMAGIC file) (the linker sets this by default, but
          clears it for -r or -N).  */
     #define WP_TEXT        0x80

       /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
          linker sets this by default, but clears it for -r or -n or -N).  */
     #define D_PAGED        0x100

       /* BFD is relaxable (this means that bfd_relax_section may be able to
          do something) (sometimes bfd_relax_section can do something even if
          this is not set).  */
     #define BFD_IS_RELAXABLE 0x200

       /* This may be set before writing out a BFD to request using a
          traditional format.  For example, this is used to request that when
          writing out an a.out object the symbols not be hashed to eliminate
          duplicates.  */
     #define BFD_TRADITIONAL_FORMAT 0x400

       /* This flag indicates that the BFD contents are actually cached
          in memory.  If this is set, iostream points to a bfd_in_memory
          struct.  */
     #define BFD_IN_MEMORY 0x800

       /* The sections in this BFD specify a memory page.  */
     #define HAS_LOAD_PAGE 0x1000

       /* This BFD has been created by the linker and doesn't correspond
          to any input file.  */
     #define BFD_LINKER_CREATED 0x2000

       /* This may be set before writing out a BFD to request that it
          be written using values for UIDs, GIDs, timestamps, etc. that
          will be consistent from run to run.  */
     #define BFD_DETERMINISTIC_OUTPUT 0x4000

       /* Compress sections in this BFD.  */
     #define BFD_COMPRESS 0x8000

       /* Decompress sections in this BFD.  */
     #define BFD_DECOMPRESS 0x10000

       /* BFD is a dummy, for plugins.  */
     #define BFD_PLUGIN 0x20000

       /* Flags bits to be saved in bfd_preserve_save.  */
     #define BFD_FLAGS_SAVED \
       (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN)

       /* Flags bits which are for BFD use only.  */
     #define BFD_FLAGS_FOR_BFD_USE_MASK \
       (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
        | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT)

       /* Currently my_archive is tested before adding origin to
          anything. I believe that this can become always an add of
          origin, with origin set to 0 for non archive files.  */
       ufile_ptr origin;

       /* The origin in the archive of the proxy entry.  This will
          normally be the same as origin, except for thin archives,
          when it will contain the current offset of the proxy in the
          thin archive rather than the offset of the bfd in its actual
          container.  */
       ufile_ptr proxy_origin;

       /* A hash table for section names.  */
       struct bfd_hash_table section_htab;

       /* Pointer to linked list of sections.  */
       struct bfd_section *sections;

       /* The last section on the section list.  */
       struct bfd_section *section_last;

       /* The number of sections.  */
       unsigned int section_count;

       /* Stuff only useful for object files:
          The start address.  */
       bfd_vma start_address;

       /* Used for input and output.  */
       unsigned int symcount;

       /* Symbol table for output BFD (with symcount entries).
          Also used by the linker to cache input BFD symbols.  */
       struct bfd_symbol  **outsymbols;

       /* Used for slurped dynamic symbol tables.  */
       unsigned int dynsymcount;

       /* Pointer to structure which contains architecture information.  */
       const struct bfd_arch_info *arch_info;

       /* Stuff only useful for archives.  */
       void *arelt_data;
       struct bfd *my_archive;      /* The containing archive BFD.  */
       struct bfd *archive_next;    /* The next BFD in the archive.  */
       struct bfd *archive_head;    /* The first BFD in the archive.  */
       struct bfd *nested_archives; /* List of nested archive in a flattened
                                       thin archive.  */

       /* A chain of BFD structures involved in a link.  */
       struct bfd *link_next;

       /* A field used by _bfd_generic_link_add_archive_symbols.  This will
          be used only for archive elements.  */
       int archive_pass;

       /* Used by the back end to hold private data.  */
       union
         {
           struct aout_data_struct *aout_data;
           struct artdata *aout_ar_data;
           struct _oasys_data *oasys_obj_data;
           struct _oasys_ar_data *oasys_ar_data;
           struct coff_tdata *coff_obj_data;
           struct pe_tdata *pe_obj_data;
           struct xcoff_tdata *xcoff_obj_data;
           struct ecoff_tdata *ecoff_obj_data;
           struct ieee_data_struct *ieee_data;
           struct ieee_ar_data_struct *ieee_ar_data;
           struct srec_data_struct *srec_data;
           struct verilog_data_struct *verilog_data;
           struct ihex_data_struct *ihex_data;
           struct tekhex_data_struct *tekhex_data;
           struct elf_obj_tdata *elf_obj_data;
           struct nlm_obj_tdata *nlm_obj_data;
           struct bout_data_struct *bout_data;
           struct mmo_data_struct *mmo_data;
           struct sun_core_struct *sun_core_data;
           struct sco5_core_struct *sco5_core_data;
           struct trad_core_struct *trad_core_data;
           struct som_data_struct *som_data;
           struct hpux_core_struct *hpux_core_data;
           struct hppabsd_core_struct *hppabsd_core_data;
           struct sgi_core_struct *sgi_core_data;
           struct lynx_core_struct *lynx_core_data;
           struct osf_core_struct *osf_core_data;
           struct cisco_core_struct *cisco_core_data;
           struct versados_data_struct *versados_data;
           struct netbsd_core_struct *netbsd_core_data;
           struct mach_o_data_struct *mach_o_data;
           struct mach_o_fat_data_struct *mach_o_fat_data;
           struct plugin_data_struct *plugin_data;
           struct bfd_pef_data_struct *pef_data;
           struct bfd_pef_xlib_data_struct *pef_xlib_data;
           struct bfd_sym_data_struct *sym_data;
           void *any;
         }
       tdata;

       /* Used by the application to hold private data.  */
       void *usrdata;

       /* Where all the allocated stuff under this BFD goes.  This is a
          struct objalloc *, but we use void * to avoid requiring the inclusion
          of objalloc.h.  */
       void *memory;

       /* Is the file descriptor being cached?  That is, can it be closed as
          needed, and re-opened when accessed later?  */
       unsigned int cacheable : 1;

       /* Marks whether there was a default target specified when the
          BFD was opened. This is used to select which matching algorithm
          to use to choose the back end.  */
       unsigned int target_defaulted : 1;

       /* ... and here: (``once'' means at least once).  */
       unsigned int opened_once : 1;

       /* Set if we have a locally maintained mtime value, rather than
          getting it from the file each time.  */
       unsigned int mtime_set : 1;

       /* Flag set if symbols from this BFD should not be exported.  */
       unsigned int no_export : 1;

       /* Remember when output has begun, to stop strange things
          from happening.  */
       unsigned int output_has_begun : 1;

       /* Have archive map.  */
       unsigned int has_armap : 1;

       /* Set if this is a thin archive.  */
       unsigned int is_thin_archive : 1;

       /* Set if only required symbols should be added in the link hash table for
          this object.  Used by VMS linkers.  */
       unsigned int selective_search : 1;
     };

     /* See note beside bfd_set_section_userdata.  */
     static inline bfd_boolean
     bfd_set_cacheable (bfd * abfd, bfd_boolean val)
     {
       abfd->cacheable = val;
       return TRUE;
     }



File: bfd.info,  Node: Error reporting,  Next: Miscellaneous,  Prev: typedef bfd,  Up: BFD front end

2.2 Error reporting
===================

Most BFD functions return nonzero on success (check their individual
documentation for precise semantics).  On an error, they call
'bfd_set_error' to set an error condition that callers can check by
calling 'bfd_get_error'.  If that returns 'bfd_error_system_call', then
check 'errno'.

   The easiest way to report a BFD error to the user is to use
'bfd_perror'.

2.2.1 Type 'bfd_error_type'
---------------------------

The values returned by 'bfd_get_error' are defined by the enumerated
type 'bfd_error_type'.


     typedef enum bfd_error
     {
       bfd_error_no_error = 0,
       bfd_error_system_call,
       bfd_error_invalid_target,
       bfd_error_wrong_format,
       bfd_error_wrong_object_format,
       bfd_error_invalid_operation,
       bfd_error_no_memory,
       bfd_error_no_symbols,
       bfd_error_no_armap,
       bfd_error_no_more_archived_files,
       bfd_error_malformed_archive,
       bfd_error_missing_dso,
       bfd_error_file_not_recognized,
       bfd_error_file_ambiguously_recognized,
       bfd_error_no_contents,
       bfd_error_nonrepresentable_section,
       bfd_error_no_debug_section,
       bfd_error_bad_value,
       bfd_error_file_truncated,
       bfd_error_file_too_big,
       bfd_error_on_input,
       bfd_error_invalid_error_code
     }
     bfd_error_type;


2.2.1.1 'bfd_get_error'
.......................

*Synopsis*
     bfd_error_type bfd_get_error (void);
   *Description*
Return the current BFD error condition.

2.2.1.2 'bfd_set_error'
.......................

*Synopsis*
     void bfd_set_error (bfd_error_type error_tag, ...);
   *Description*
Set the BFD error condition to be ERROR_TAG.  If ERROR_TAG is
bfd_error_on_input, then this function takes two more parameters, the
input bfd where the error occurred, and the bfd_error_type error.

2.2.1.3 'bfd_errmsg'
....................

*Synopsis*
     const char *bfd_errmsg (bfd_error_type error_tag);
   *Description*
Return a string describing the error ERROR_TAG, or the system error if
ERROR_TAG is 'bfd_error_system_call'.

2.2.1.4 'bfd_perror'
....................

*Synopsis*
     void bfd_perror (const char *message);
   *Description*
Print to the standard error stream a string describing the last BFD
error that occurred, or the last system error if the last BFD error was
a system call failure.  If MESSAGE is non-NULL and non-empty, the error
string printed is preceded by MESSAGE, a colon, and a space.  It is
followed by a newline.

2.2.2 BFD error handler
-----------------------

Some BFD functions want to print messages describing the problem.  They
call a BFD error handler function.  This function may be overridden by
the program.

   The BFD error handler acts like printf.


     typedef void (*bfd_error_handler_type) (const char *, ...);


2.2.2.1 'bfd_set_error_handler'
...............................

*Synopsis*
     bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
   *Description*
Set the BFD error handler function.  Returns the previous function.

2.2.2.2 'bfd_set_error_program_name'
....................................

*Synopsis*
     void bfd_set_error_program_name (const char *);
   *Description*
Set the program name to use when printing a BFD error.  This is printed
before the error message followed by a colon and space.  The string must
not be changed after it is passed to this function.

2.2.2.3 'bfd_get_error_handler'
...............................

*Synopsis*
     bfd_error_handler_type bfd_get_error_handler (void);
   *Description*
Return the BFD error handler function.

2.2.3 BFD assert handler
------------------------

If BFD finds an internal inconsistency, the bfd assert handler is called
with information on the BFD version, BFD source file and line.  If this
happens, most programs linked against BFD are expected to want to exit
with an error, or mark the current BFD operation as failed, so it is
recommended to override the default handler, which just calls
_bfd_error_handler and continues.


     typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
                                              const char *bfd_version,
                                              const char *bfd_file,
                                              int bfd_line);


2.2.3.1 'bfd_set_assert_handler'
................................

*Synopsis*
     bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
   *Description*
Set the BFD assert handler function.  Returns the previous function.

2.2.3.2 'bfd_get_assert_handler'
................................

*Synopsis*
     bfd_assert_handler_type bfd_get_assert_handler (void);
   *Description*
Return the BFD assert handler function.


File: bfd.info,  Node: Miscellaneous,  Next: Memory Usage,  Prev: Error reporting,  Up: BFD front end

2.3 Miscellaneous
=================

2.3.1 Miscellaneous functions
-----------------------------

2.3.1.1 'bfd_get_reloc_upper_bound'
...................................

*Synopsis*
     long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
   *Description*
Return the number of bytes required to store the relocation information
associated with section SECT attached to bfd ABFD.  If an error occurs,
return -1.

2.3.1.2 'bfd_canonicalize_reloc'
................................

*Synopsis*
     long bfd_canonicalize_reloc
        (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
   *Description*
Call the back end associated with the open BFD ABFD and translate the
external form of the relocation information attached to SEC into the
internal canonical form.  Place the table into memory at LOC, which has
been preallocated, usually by a call to 'bfd_get_reloc_upper_bound'.
Returns the number of relocs, or -1 on error.

   The SYMS table is also needed for horrible internal magic reasons.

2.3.1.3 'bfd_set_reloc'
.......................

*Synopsis*
     void bfd_set_reloc
        (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
   *Description*
Set the relocation pointer and count within section SEC to the values
REL and COUNT.  The argument ABFD is ignored.

2.3.1.4 'bfd_set_file_flags'
............................

*Synopsis*
     bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
   *Description*
Set the flag word in the BFD ABFD to the value FLAGS.

   Possible errors are:

   * 'bfd_error_wrong_format' - The target bfd was not of object format.
   * 'bfd_error_invalid_operation' - The target bfd was open for
     reading.
   * 'bfd_error_invalid_operation' - The flag word contained a bit which
     was not applicable to the type of file.  E.g., an attempt was made
     to set the 'D_PAGED' bit on a BFD format which does not support
     demand paging.

2.3.1.5 'bfd_get_arch_size'
...........................

*Synopsis*
     int bfd_get_arch_size (bfd *abfd);
   *Description*
Returns the normalized architecture address size, in bits, as determined
by the object file's format.  By normalized, we mean either 32 or 64.
For ELF, this information is included in the header.  Use
bfd_arch_bits_per_address for number of bits in the architecture
address.

   *Returns*
Returns the arch size in bits if known, '-1' otherwise.

2.3.1.6 'bfd_get_sign_extend_vma'
.................................

*Synopsis*
     int bfd_get_sign_extend_vma (bfd *abfd);
   *Description*
Indicates if the target architecture "naturally" sign extends an
address.  Some architectures implicitly sign extend address values when
they are converted to types larger than the size of an address.  For
instance, bfd_get_start_address() will return an address sign extended
to fill a bfd_vma when this is the case.

   *Returns*
Returns '1' if the target architecture is known to sign extend
addresses, '0' if the target architecture is known to not sign extend
addresses, and '-1' otherwise.

2.3.1.7 'bfd_set_start_address'
...............................

*Synopsis*
     bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
   *Description*
Make VMA the entry point of output BFD ABFD.

   *Returns*
Returns 'TRUE' on success, 'FALSE' otherwise.

2.3.1.8 'bfd_get_gp_size'
.........................

*Synopsis*
     unsigned int bfd_get_gp_size (bfd *abfd);
   *Description*
Return the maximum size of objects to be optimized using the GP register
under MIPS ECOFF. This is typically set by the '-G' argument to the
compiler, assembler or linker.

2.3.1.9 'bfd_set_gp_size'
.........................

*Synopsis*
     void bfd_set_gp_size (bfd *abfd, unsigned int i);
   *Description*
Set the maximum size of objects to be optimized using the GP register
under ECOFF or MIPS ELF. This is typically set by the '-G' argument to
the compiler, assembler or linker.

2.3.1.10 'bfd_scan_vma'
.......................

*Synopsis*
     bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
   *Description*
Convert, like 'strtoul', a numerical expression STRING into a 'bfd_vma'
integer, and return that integer.  (Though without as many bells and
whistles as 'strtoul'.)  The expression is assumed to be unsigned (i.e.,
positive).  If given a BASE, it is used as the base for conversion.  A
base of 0 causes the function to interpret the string in hex if a
leading "0x" or "0X" is found, otherwise in octal if a leading zero is
found, otherwise in decimal.

   If the value would overflow, the maximum 'bfd_vma' value is returned.

2.3.1.11 'bfd_copy_private_header_data'
.......................................

*Synopsis*
     bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
   *Description*
Copy private BFD header information from the BFD IBFD to the the BFD
OBFD.  This copies information that may require sections to exist, but
does not require symbol tables.  Return 'true' on success, 'false' on
error.  Possible error returns are:

   * 'bfd_error_no_memory' - Not enough memory exists to create private
     data for OBFD.
     #define bfd_copy_private_header_data(ibfd, obfd) \
          BFD_SEND (obfd, _bfd_copy_private_header_data, \
                    (ibfd, obfd))

2.3.1.12 'bfd_copy_private_bfd_data'
....................................

*Synopsis*
     bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
   *Description*
Copy private BFD information from the BFD IBFD to the the BFD OBFD.
Return 'TRUE' on success, 'FALSE' on error.  Possible error returns are:

   * 'bfd_error_no_memory' - Not enough memory exists to create private
     data for OBFD.
     #define bfd_copy_private_bfd_data(ibfd, obfd) \
          BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
                    (ibfd, obfd))

2.3.1.13 'bfd_merge_private_bfd_data'
.....................................

*Synopsis*
     bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
   *Description*
Merge private BFD information from the BFD IBFD to the the output file
BFD OBFD when linking.  Return 'TRUE' on success, 'FALSE' on error.
Possible error returns are:

   * 'bfd_error_no_memory' - Not enough memory exists to create private
     data for OBFD.
     #define bfd_merge_private_bfd_data(ibfd, obfd) \
          BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
                    (ibfd, obfd))

2.3.1.14 'bfd_set_private_flags'
................................

*Synopsis*
     bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
   *Description*
Set private BFD flag information in the BFD ABFD.  Return 'TRUE' on
success, 'FALSE' on error.  Possible error returns are:

   * 'bfd_error_no_memory' - Not enough memory exists to create private
     data for OBFD.
     #define bfd_set_private_flags(abfd, flags) \
          BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))

2.3.1.15 'Other functions'
..........................

*Description*
The following functions exist but have not yet been documented.
     #define bfd_sizeof_headers(abfd, info) \
            BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))

     #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
            BFD_SEND (abfd, _bfd_find_nearest_line, \
                      (abfd, sec, syms, off, file, func, line))

     #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
                                                 line, disc) \
            BFD_SEND (abfd, _bfd_find_nearest_line_discriminator, \
                      (abfd, sec, syms, off, file, func, line, disc))

     #define bfd_find_line(abfd, syms, sym, file, line) \
            BFD_SEND (abfd, _bfd_find_line, \
                      (abfd, syms, sym, file, line))

     #define bfd_find_inliner_info(abfd, file, func, line) \
            BFD_SEND (abfd, _bfd_find_inliner_info, \
                      (abfd, file, func, line))

     #define bfd_debug_info_start(abfd) \
            BFD_SEND (abfd, _bfd_debug_info_start, (abfd))

     #define bfd_debug_info_end(abfd) \
            BFD_SEND (abfd, _bfd_debug_info_end, (abfd))

     #define bfd_debug_info_accumulate(abfd, section) \
            BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))

     #define bfd_stat_arch_elt(abfd, stat) \
            BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))

     #define bfd_update_armap_timestamp(abfd) \
            BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))

     #define bfd_set_arch_mach(abfd, arch, mach)\
            BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))

     #define bfd_relax_section(abfd, section, link_info, again) \
            BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))

     #define bfd_gc_sections(abfd, link_info) \
            BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))

     #define bfd_lookup_section_flags(link_info, flag_info, section) \
            BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))

     #define bfd_merge_sections(abfd, link_info) \
            BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))

     #define bfd_is_group_section(abfd, sec) \
            BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))

     #define bfd_discard_group(abfd, sec) \
            BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))

     #define bfd_link_hash_table_create(abfd) \
            BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))

     #define bfd_link_hash_table_free(abfd, hash) \
            BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))

     #define bfd_link_add_symbols(abfd, info) \
            BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))

     #define bfd_link_just_syms(abfd, sec, info) \
            BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))

     #define bfd_final_link(abfd, info) \
            BFD_SEND (abfd, _bfd_final_link, (abfd, info))

     #define bfd_free_cached_info(abfd) \
            BFD_SEND (abfd, _bfd_free_cached_info, (abfd))

     #define bfd_get_dynamic_symtab_upper_bound(abfd) \
            BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))

     #define bfd_print_private_bfd_data(abfd, file)\
            BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))

     #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
            BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))

     #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
            BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
                                                        dyncount, dynsyms, ret))

     #define bfd_get_dynamic_reloc_upper_bound(abfd) \
            BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))

     #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
            BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))

     extern bfd_byte *bfd_get_relocated_section_contents
       (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
        bfd_boolean, asymbol **);


2.3.1.16 'bfd_alt_mach_code'
............................

*Synopsis*
     bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
   *Description*
When more than one machine code number is available for the same machine
type, this function can be used to switch between the preferred one
(alternative == 0) and any others.  Currently, only ELF supports this
feature, with up to two alternate machine codes.

2.3.1.17 'bfd_emul_get_maxpagesize'
...................................

*Synopsis*
     bfd_vma bfd_emul_get_maxpagesize (const char *);
   *Description*
Returns the maximum page size, in bytes, as determined by emulation.

   *Returns*
Returns the maximum page size in bytes for ELF, 0 otherwise.

2.3.1.18 'bfd_emul_set_maxpagesize'
...................................

*Synopsis*
     void bfd_emul_set_maxpagesize (const char *, bfd_vma);
   *Description*
For ELF, set the maximum page size for the emulation.  It is a no-op for
other formats.

2.3.1.19 'bfd_emul_get_commonpagesize'
......................................

*Synopsis*
     bfd_vma bfd_emul_get_commonpagesize (const char *);
   *Description*
Returns the common page size, in bytes, as determined by emulation.

   *Returns*
Returns the common page size in bytes for ELF, 0 otherwise.

2.3.1.20 'bfd_emul_set_commonpagesize'
......................................

*Synopsis*
     void bfd_emul_set_commonpagesize (const char *, bfd_vma);
   *Description*
For ELF, set the common page size for the emulation.  It is a no-op for
other formats.

2.3.1.21 'bfd_demangle'
.......................

*Synopsis*
     char *bfd_demangle (bfd *, const char *, int);
   *Description*
Wrapper around cplus_demangle.  Strips leading underscores and other
such chars that would otherwise confuse the demangler.  If passed a g++
v3 ABI mangled name, returns a buffer allocated with malloc holding the
demangled name.  Returns NULL otherwise and on memory alloc failure.

2.3.1.22 'struct bfd_iovec'
...........................

*Description*
The 'struct bfd_iovec' contains the internal file I/O class.  Each 'BFD'
has an instance of this class and all file I/O is routed through it (it
is assumed that the instance implements all methods listed below).
     struct bfd_iovec
     {
       /* To avoid problems with macros, a "b" rather than "f"
          prefix is prepended to each method name.  */
       /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
          bytes starting at PTR.  Return the number of bytes actually
          transfered (a read past end-of-file returns less than NBYTES),
          or -1 (setting bfd_error) if an error occurs.  */
       file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
       file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
                           file_ptr nbytes);
       /* Return the current IOSTREAM file offset, or -1 (setting bfd_error
          if an error occurs.  */
       file_ptr (*btell) (struct bfd *abfd);
       /* For the following, on successful completion a value of 0 is returned.
          Otherwise, a value of -1 is returned (and  bfd_error is set).  */
       int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
       int (*bclose) (struct bfd *abfd);
       int (*bflush) (struct bfd *abfd);
       int (*bstat) (struct bfd *abfd, struct stat *sb);
       /* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are the usual
          mmap parameter, except that LEN and OFFSET do not need to be page
          aligned.  Returns (void *)-1 on failure, mmapped address on success.
          Also write in MAP_ADDR the address of the page aligned buffer and in
          MAP_LEN the size mapped (a page multiple).  Use unmap with MAP_ADDR and
          MAP_LEN to unmap.  */
       void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
                       int prot, int flags, file_ptr offset,
                       void **map_addr, bfd_size_type *map_len);
     };
     extern const struct bfd_iovec _bfd_memory_iovec;

2.3.1.23 'bfd_get_mtime'
........................

*Synopsis*
     long bfd_get_mtime (bfd *abfd);
   *Description*
Return the file modification time (as read from the file system, or from
the archive header for archive members).

2.3.1.24 'bfd_get_size'
.......................

*Synopsis*
     file_ptr bfd_get_size (bfd *abfd);
   *Description*
Return the file size (as read from file system) for the file associated
with BFD ABFD.

   The initial motivation for, and use of, this routine is not so we can
get the exact size of the object the BFD applies to, since that might
not be generally possible (archive members for example).  It would be
ideal if someone could eventually modify it so that such results were
guaranteed.

   Instead, we want to ask questions like "is this NNN byte sized object
I'm about to try read from file offset YYY reasonable?"  As as example
of where we might do this, some object formats use string tables for
which the first 'sizeof (long)' bytes of the table contain the size of
the table itself, including the size bytes.  If an application tries to
read what it thinks is one of these string tables, without some way to
validate the size, and for some reason the size is wrong (byte swapping
error, wrong location for the string table, etc.), the only clue is
likely to be a read error when it tries to read the table, or a "virtual
memory exhausted" error when it tries to allocate 15 bazillon bytes of
space for the 15 bazillon byte table it is about to read.  This function
at least allows us to answer the question, "is the size reasonable?".

2.3.1.25 'bfd_mmap'
...................

*Synopsis*
     void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
         int prot, int flags, file_ptr offset,
         void **map_addr, bfd_size_type *map_len);
   *Description*
Return mmap()ed region of the file, if possible and implemented.  LEN
and OFFSET do not need to be page aligned.  The page aligned address and
length are written to MAP_ADDR and MAP_LEN.


File: bfd.info,  Node: Memory Usage,  Next: Initialization,  Prev: Miscellaneous,  Up: BFD front end

2.4 Memory Usage
================

BFD keeps all of its internal structures in obstacks.  There is one
obstack per open BFD file, into which the current state is stored.  When
a BFD is closed, the obstack is deleted, and so everything which has
been allocated by BFD for the closing file is thrown away.

   BFD does not free anything created by an application, but pointers
into 'bfd' structures become invalid on a 'bfd_close'; for example,
after a 'bfd_close' the vector passed to 'bfd_canonicalize_symtab' is
still around, since it has been allocated by the application, but the
data that it pointed to are lost.

   The general rule is to not close a BFD until all operations dependent
upon data from the BFD have been completed, or all the data from within
the file has been copied.  To help with the management of memory, there
is a function ('bfd_alloc_size') which returns the number of bytes in
obstacks associated with the supplied BFD. This could be used to select
the greediest open BFD, close it to reclaim the memory, perform some
operation and reopen the BFD again, to get a fresh copy of the data
structures.


File: bfd.info,  Node: Initialization,  Next: Sections,  Prev: Memory Usage,  Up: BFD front end

2.5 Initialization
==================

2.5.1 Initialization functions
------------------------------

These are the functions that handle initializing a BFD.

2.5.1.1 'bfd_init'
..................

*Synopsis*
     void bfd_init (void);
   *Description*
This routine must be called before any other BFD function to initialize
magical internal data structures.


File: bfd.info,  Node: Sections,  Next: Symbols,  Prev: Initialization,  Up: BFD front end

2.6 Sections
============

The raw data contained within a BFD is maintained through the section
abstraction.  A single BFD may have any number of sections.  It keeps
hold of them by pointing to the first; each one points to the next in
the list.

   Sections are supported in BFD in 'section.c'.

* Menu:

* Section Input::
* Section Output::
* typedef asection::
* section prototypes::


File: bfd.info,  Node: Section Input,  Next: Section Output,  Prev: Sections,  Up: Sections

2.6.1 Section input
-------------------

When a BFD is opened for reading, the section structures are created and
attached to the BFD.

   Each section has a name which describes the section in the outside
world--for example, 'a.out' would contain at least three sections,
called '.text', '.data' and '.bss'.

   Names need not be unique; for example a COFF file may have several
sections named '.data'.

   Sometimes a BFD will contain more than the "natural" number of
sections.  A back end may attach other sections containing constructor
data, or an application may add a section (using 'bfd_make_section') to
the sections attached to an already open BFD. For example, the linker
creates an extra section 'COMMON' for each input file's BFD to hold
information about common storage.

   The raw data is not necessarily read in when the section descriptor
is created.  Some targets may leave the data in place until a
'bfd_get_section_contents' call is made.  Other back ends may read in
all the data at once.  For example, an S-record file has to be read once
to determine the size of the data.  An IEEE-695 file doesn't contain raw
data in sections, but data and relocation expressions intermixed, so the
data area has to be parsed to get out the data and relocations.


File: bfd.info,  Node: Section Output,  Next: typedef asection,  Prev: Section Input,  Up: Sections

2.6.2 Section output
--------------------

To write a new object style BFD, the various sections to be written have
to be created.  They are attached to the BFD in the same way as input
sections; data is written to the sections using
'bfd_set_section_contents'.

   Any program that creates or combines sections (e.g., the assembler
and linker) must use the 'asection' fields 'output_section' and
'output_offset' to indicate the file sections to which each section must
be written.  (If the section is being created from scratch,
'output_section' should probably point to the section itself and
'output_offset' should probably be zero.)

   The data to be written comes from input sections attached (via
'output_section' pointers) to the output sections.  The output section
structure can be considered a filter for the input section: the output
section determines the vma of the output data and the name, but the
input section determines the offset into the output section of the data
to be written.

   E.g., to create a section "O", starting at 0x100, 0x123 long,
containing two subsections, "A" at offset 0x0 (i.e., at vma 0x100) and
"B" at offset 0x20 (i.e., at vma 0x120) the 'asection' structures would
look like:

        section name          "A"
          output_offset   0x00
          size            0x20
          output_section ----------->  section name    "O"
                                  |    vma             0x100
        section name          "B" |    size            0x123
          output_offset   0x20    |
          size            0x103   |
          output_section  --------|

2.6.3 Link orders
-----------------

The data within a section is stored in a "link_order".  These are much
like the fixups in 'gas'.  The link_order abstraction allows a section
to grow and shrink within itself.

   A link_order knows how big it is, and which is the next link_order
and where the raw data for it is; it also points to a list of
relocations which apply to it.

   The link_order is used by the linker to perform relaxing on final
code.  The compiler creates code which is as big as necessary to make it
work without relaxing, and the user can select whether to relax.
Sometimes relaxing takes a lot of time.  The linker runs around the
relocations to see if any are attached to data which can be shrunk, if
so it does it on a link_order by link_order basis.


File: bfd.info,  Node: typedef asection,  Next: section prototypes,  Prev: Section Output,  Up: Sections

2.6.4 typedef asection
----------------------

Here is the section structure:


     typedef struct bfd_section
     {
       /* The name of the section; the name isn't a copy, the pointer is
          the same as that passed to bfd_make_section.  */
       const char *name;

       /* A unique sequence number.  */
       int id;

       /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
       int index;

       /* The next section in the list belonging to the BFD, or NULL.  */
       struct bfd_section *next;

       /* The previous section in the list belonging to the BFD, or NULL.  */
       struct bfd_section *prev;

       /* The field flags contains attributes of the section. Some
          flags are read in from the object file, and some are
          synthesized from other information.  */
       flagword flags;

     #define SEC_NO_FLAGS   0x000

       /* Tells the OS to allocate space for this section when loading.
          This is clear for a section containing debug information only.  */
     #define SEC_ALLOC      0x001

       /* Tells the OS to load the section from the file when loading.
          This is clear for a .bss section.  */
     #define SEC_LOAD       0x002

       /* The section contains data still to be relocated, so there is
          some relocation information too.  */
     #define SEC_RELOC      0x004

       /* A signal to the OS that the section contains read only data.  */
     #define SEC_READONLY   0x008

       /* The section contains code only.  */
     #define SEC_CODE       0x010

       /* The section contains data only.  */
     #define SEC_DATA       0x020

       /* The section will reside in ROM.  */
     #define SEC_ROM        0x040

       /* The section contains constructor information. This section
          type is used by the linker to create lists of constructors and
          destructors used by g++. When a back end sees a symbol
          which should be used in a constructor list, it creates a new
          section for the type of name (e.g., __CTOR_LIST__), attaches
          the symbol to it, and builds a relocation. To build the lists
          of constructors, all the linker has to do is catenate all the
          sections called __CTOR_LIST__ and relocate the data
          contained within - exactly the operations it would peform on
          standard data.  */
     #define SEC_CONSTRUCTOR 0x080

       /* The section has contents - a data section could be
          SEC_ALLOC | SEC_HAS_CONTENTS; a debug section could be
          SEC_HAS_CONTENTS  */
     #define SEC_HAS_CONTENTS 0x100

       /* An instruction to the linker to not output the section
          even if it has information which would normally be written.  */
     #define SEC_NEVER_LOAD 0x200

       /* The section contains thread local data.  */
     #define SEC_THREAD_LOCAL 0x400

       /* The section has GOT references.  This flag is only for the
          linker, and is currently only used by the elf32-hppa back end.
          It will be set if global offset table references were detected
          in this section, which indicate to the linker that the section
          contains PIC code, and must be handled specially when doing a
          static link.  */
     #define SEC_HAS_GOT_REF 0x800

       /* The section contains common symbols (symbols may be defined
          multiple times, the value of a symbol is the amount of
          space it requires, and the largest symbol value is the one
          used).  Most targets have exactly one of these (which we
          translate to bfd_com_section_ptr), but ECOFF has two.  */
     #define SEC_IS_COMMON 0x1000

       /* The section contains only debugging information.  For
          example, this is set for ELF .debug and .stab sections.
          strip tests this flag to see if a section can be
          discarded.  */
     #define SEC_DEBUGGING 0x2000

       /* The contents of this section are held in memory pointed to
          by the contents field.  This is checked by bfd_get_section_contents,
          and the data is retrieved from memory if appropriate.  */
     #define SEC_IN_MEMORY 0x4000

       /* The contents of this section are to be excluded by the
          linker for executable and shared objects unless those
          objects are to be further relocated.  */
     #define SEC_EXCLUDE 0x8000

       /* The contents of this section are to be sorted based on the sum of
          the symbol and addend values specified by the associated relocation
          entries.  Entries without associated relocation entries will be
          appended to the end of the section in an unspecified order.  */
     #define SEC_SORT_ENTRIES 0x10000

       /* When linking, duplicate sections of the same name should be
          discarded, rather than being combined into a single section as
          is usually done.  This is similar to how common symbols are
          handled.  See SEC_LINK_DUPLICATES below.  */
     #define SEC_LINK_ONCE 0x20000

       /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
          should handle duplicate sections.  */
     #define SEC_LINK_DUPLICATES 0xc0000

       /* This value for SEC_LINK_DUPLICATES means that duplicate
          sections with the same name should simply be discarded.  */
     #define SEC_LINK_DUPLICATES_DISCARD 0x0

       /* This value for SEC_LINK_DUPLICATES means that the linker
          should warn if there are any duplicate sections, although
          it should still only link one copy.  */
     #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000

       /* This value for SEC_LINK_DUPLICATES means that the linker
          should warn if any duplicate sections are a different size.  */
     #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000

       /* This value for SEC_LINK_DUPLICATES means that the linker
          should warn if any duplicate sections contain different
          contents.  */
     #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
       (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)

       /* This section was created by the linker as part of dynamic
          relocation or other arcane processing.  It is skipped when
          going through the first-pass output, trusting that someone
          else up the line will take care of it later.  */
     #define SEC_LINKER_CREATED 0x100000

       /* This section should not be subject to garbage collection.
          Also set to inform the linker that this section should not be
          listed in the link map as discarded.  */
     #define SEC_KEEP 0x200000

       /* This section contains "short" data, and should be placed
          "near" the GP.  */
     #define SEC_SMALL_DATA 0x400000

       /* Attempt to merge identical entities in the section.
          Entity size is given in the entsize field.  */
     #define SEC_MERGE 0x800000

       /* If given with SEC_MERGE, entities to merge are zero terminated
          strings where entsize specifies character size instead of fixed
          size entries.  */
     #define SEC_STRINGS 0x1000000

       /* This section contains data about section groups.  */
     #define SEC_GROUP 0x2000000

       /* The section is a COFF shared library section.  This flag is
          only for the linker.  If this type of section appears in
          the input file, the linker must copy it to the output file
          without changing the vma or size.  FIXME: Although this
          was originally intended to be general, it really is COFF
          specific (and the flag was renamed to indicate this).  It
          might be cleaner to have some more general mechanism to
          allow the back end to control what the linker does with
          sections.  */
     #define SEC_COFF_SHARED_LIBRARY 0x4000000

       /* This input section should be copied to output in reverse order
          as an array of pointers.  This is for ELF linker internal use
          only.  */
     #define SEC_ELF_REVERSE_COPY 0x4000000

       /* This section contains data which may be shared with other
          executables or shared objects. This is for COFF only.  */
     #define SEC_COFF_SHARED 0x8000000

       /* When a section with this flag is being linked, then if the size of
          the input section is less than a page, it should not cross a page
          boundary.  If the size of the input section is one page or more,
          it should be aligned on a page boundary.  This is for TI
          TMS320C54X only.  */
     #define SEC_TIC54X_BLOCK 0x10000000

       /* Conditionally link this section; do not link if there are no
          references found to any symbol in the section.  This is for TI
          TMS320C54X only.  */
     #define SEC_TIC54X_CLINK 0x20000000

       /* Indicate that section has the no read flag set. This happens
          when memory read flag isn't set. */
     #define SEC_COFF_NOREAD 0x40000000

       /*  End of section flags.  */

       /* Some internal packed boolean fields.  */

       /* See the vma field.  */
       unsigned int user_set_vma : 1;

       /* A mark flag used by some of the linker backends.  */
       unsigned int linker_mark : 1;

       /* Another mark flag used by some of the linker backends.  Set for
          output sections that have an input section.  */
       unsigned int linker_has_input : 1;

       /* Mark flag used by some linker backends for garbage collection.  */
       unsigned int gc_mark : 1;

       /* Section compression status.  */
       unsigned int compress_status : 2;
     #define COMPRESS_SECTION_NONE    0
     #define COMPRESS_SECTION_DONE    1
     #define DECOMPRESS_SECTION_SIZED 2

       /* The following flags are used by the ELF linker. */

       /* Mark sections which have been allocated to segments.  */
       unsigned int segment_mark : 1;

       /* Type of sec_info information.  */
       unsigned int sec_info_type:3;
     #define SEC_INFO_TYPE_NONE      0
     #define SEC_INFO_TYPE_STABS     1
     #define SEC_INFO_TYPE_MERGE     2
     #define SEC_INFO_TYPE_EH_FRAME  3
     #define SEC_INFO_TYPE_JUST_SYMS 4
     #define SEC_INFO_TYPE_TARGET    5

       /* Nonzero if this section uses RELA relocations, rather than REL.  */
       unsigned int use_rela_p:1;

       /* Bits used by various backends.  The generic code doesn't touch
          these fields.  */

       unsigned int sec_flg0:1;
       unsigned int sec_flg1:1;
       unsigned int sec_flg2:1;
       unsigned int sec_flg3:1;
       unsigned int sec_flg4:1;
       unsigned int sec_flg5:1;

       /* End of internal packed boolean fields.  */

       /*  The virtual memory address of the section - where it will be
           at run time.  The symbols are relocated against this.  The
           user_set_vma flag is maintained by bfd; if it's not set, the
           backend can assign addresses (for example, in a.out, where
           the default address for .data is dependent on the specific
           target and various flags).  */
       bfd_vma vma;

       /*  The load address of the section - where it would be in a
           rom image; really only used for writing section header
           information.  */
       bfd_vma lma;

       /* The size of the section in octets, as it will be output.
          Contains a value even if the section has no contents (e.g., the
          size of .bss).  */
       bfd_size_type size;

       /* For input sections, the original size on disk of the section, in
          octets.  This field should be set for any section whose size is
          changed by linker relaxation.  It is required for sections where
          the linker relaxation scheme doesn't cache altered section and
          reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
          targets), and thus the original size needs to be kept to read the
          section multiple times.  For output sections, rawsize holds the
          section size calculated on a previous linker relaxation pass.  */
       bfd_size_type rawsize;

       /* The compressed size of the section in octets.  */
       bfd_size_type compressed_size;

       /* Relaxation table. */
       struct relax_table *relax;

       /* Count of used relaxation table entries. */
       int relax_count;


       /* If this section is going to be output, then this value is the
          offset in *bytes* into the output section of the first byte in the
          input section (byte ==> smallest addressable unit on the
          target).  In most cases, if this was going to start at the
          100th octet (8-bit quantity) in the output section, this value
          would be 100.  However, if the target byte size is 16 bits
          (bfd_octets_per_byte is "2"), this value would be 50.  */
       bfd_vma output_offset;

       /* The output section through which to map on output.  */
       struct bfd_section *output_section;

       /* The alignment requirement of the section, as an exponent of 2 -
          e.g., 3 aligns to 2^3 (or 8).  */
       unsigned int alignment_power;

       /* If an input section, a pointer to a vector of relocation
          records for the data in this section.  */
       struct reloc_cache_entry *relocation;

       /* If an output section, a pointer to a vector of pointers to
          relocation records for the data in this section.  */
       struct reloc_cache_entry **orelocation;

       /* The number of relocation records in one of the above.  */
       unsigned reloc_count;

       /* Information below is back end specific - and not always used
          or updated.  */

       /* File position of section data.  */
       file_ptr filepos;

       /* File position of relocation info.  */
       file_ptr rel_filepos;

       /* File position of line data.  */
       file_ptr line_filepos;

       /* Pointer to data for applications.  */
       void *userdata;

       /* If the SEC_IN_MEMORY flag is set, this points to the actual
          contents.  */
       unsigned char *contents;

       /* Attached line number information.  */
       alent *lineno;

       /* Number of line number records.  */
       unsigned int lineno_count;

       /* Entity size for merging purposes.  */
       unsigned int entsize;

       /* Points to the kept section if this section is a link-once section,
          and is discarded.  */
       struct bfd_section *kept_section;

       /* When a section is being output, this value changes as more
          linenumbers are written out.  */
       file_ptr moving_line_filepos;

       /* What the section number is in the target world.  */
       int target_index;

       void *used_by_bfd;

       /* If this is a constructor section then here is a list of the
          relocations created to relocate items within it.  */
       struct relent_chain *constructor_chain;

       /* The BFD which owns the section.  */
       bfd *owner;

       /* A symbol which points at this section only.  */
       struct bfd_symbol *symbol;
       struct bfd_symbol **symbol_ptr_ptr;

       /* Early in the link process, map_head and map_tail are used to build
          a list of input sections attached to an output section.  Later,
          output sections use these fields for a list of bfd_link_order
          structs.  */
       union {
         struct bfd_link_order *link_order;
         struct bfd_section *s;
       } map_head, map_tail;
     } asection;

     /* Relax table contains information about instructions which can
        be removed by relaxation -- replacing a long address with a
        short address.  */
     struct relax_table {
       /* Address where bytes may be deleted. */
       bfd_vma addr;

       /* Number of bytes to be deleted.  */
       int size;
     };

     /* Note: the following are provided as inline functions rather than macros
        because not all callers use the return value.  A macro implementation
        would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
        compilers will complain about comma expressions that have no effect.  */
     static inline bfd_boolean
     bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val)
     {
       ptr->userdata = val;
       return TRUE;
     }

     static inline bfd_boolean
     bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
     {
       ptr->vma = ptr->lma = val;
       ptr->user_set_vma = TRUE;
       return TRUE;
     }

     static inline bfd_boolean
     bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val)
     {
       ptr->alignment_power = val;
       return TRUE;
     }

     /* These sections are global, and are managed by BFD.  The application
        and target back end are not permitted to change the values in
        these sections.  */
     extern asection _bfd_std_section[4];

     #define BFD_ABS_SECTION_NAME "*ABS*"
     #define BFD_UND_SECTION_NAME "*UND*"
     #define BFD_COM_SECTION_NAME "*COM*"
     #define BFD_IND_SECTION_NAME "*IND*"

     /* Pointer to the common section.  */
     #define bfd_com_section_ptr (&_bfd_std_section[0])
     /* Pointer to the undefined section.  */
     #define bfd_und_section_ptr (&_bfd_std_section[1])
     /* Pointer to the absolute section.  */
     #define bfd_abs_section_ptr (&_bfd_std_section[2])
     /* Pointer to the indirect section.  */
     #define bfd_ind_section_ptr (&_bfd_std_section[3])

     #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
     #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
     #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)

     #define bfd_is_const_section(SEC)              \
      (   ((SEC) == bfd_abs_section_ptr)            \
       || ((SEC) == bfd_und_section_ptr)            \
       || ((SEC) == bfd_com_section_ptr)            \
       || ((SEC) == bfd_ind_section_ptr))

     /* Macros to handle insertion and deletion of a bfd's sections.  These
        only handle the list pointers, ie. do not adjust section_count,
        target_index etc.  */
     #define bfd_section_list_remove(ABFD, S) \
       do                                                   \
         {                                                  \
           asection *_s = S;                                \
           asection *_next = _s->next;                      \
           asection *_prev = _s->prev;                      \
           if (_prev)                                       \
             _prev->next = _next;                           \
           else                                             \
             (ABFD)->sections = _next;                      \
           if (_next)                                       \
             _next->prev = _prev;                           \
           else                                             \
             (ABFD)->section_last = _prev;                  \
         }                                                  \
       while (0)
     #define bfd_section_list_append(ABFD, S) \
       do                                                   \
         {                                                  \
           asection *_s = S;                                \
           bfd *_abfd = ABFD;                               \
           _s->next = NULL;                                 \
           if (_abfd->section_last)                         \
             {                                              \
               _s->prev = _abfd->section_last;              \
               _abfd->section_last->next = _s;              \
             }                                              \
           else                                             \
             {                                              \
               _s->prev = NULL;                             \
               _abfd->sections = _s;                        \
             }                                              \
           _abfd->section_last = _s;                        \
         }                                                  \
       while (0)
     #define bfd_section_list_prepend(ABFD, S) \
       do                                                   \
         {                                                  \
           asection *_s = S;                                \
           bfd *_abfd = ABFD;                               \
           _s->prev = NULL;                                 \
           if (_abfd->sections)                             \
             {                                              \
               _s->next = _abfd->sections;                  \
               _abfd->sections->prev = _s;                  \
             }                                              \
           else                                             \
             {                                              \
               _s->next = NULL;                             \
               _abfd->section_last = _s;                    \
             }                                              \
           _abfd->sections = _s;                            \
         }                                                  \
       while (0)
     #define bfd_section_list_insert_after(ABFD, A, S) \
       do                                                   \
         {                                                  \
           asection *_a = A;                                \
           asection *_s = S;                                \
           asection *_next = _a->next;                      \
           _s->next = _next;                                \
           _s->prev = _a;                                   \
           _a->next = _s;                                   \
           if (_next)                                       \
             _next->prev = _s;                              \
           else                                             \
             (ABFD)->section_last = _s;                     \
         }                                                  \
       while (0)
     #define bfd_section_list_insert_before(ABFD, B, S) \
       do                                                   \
         {                                                  \
           asection *_b = B;                                \
           asection *_s = S;                                \
           asection *_prev = _b->prev;                      \
           _s->prev = _prev;                                \
           _s->next = _b;                                   \
           _b->prev = _s;                                   \
           if (_prev)                                       \
             _prev->next = _s;                              \
           else                                             \
             (ABFD)->sections = _s;                         \
         }                                                  \
       while (0)
     #define bfd_section_removed_from_list(ABFD, S) \
       ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))

     #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
       /* name, id,  index, next, prev, flags, user_set_vma,            */  \
       { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
                                                                            \
       /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
          0,           0,                1,       0,                        \
                                                                            \
       /* segment_mark, sec_info_type, use_rela_p,                      */  \
          0,            0,             0,                                   \
                                                                            \
       /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,   */  \
          0,        0,        0,        0,        0,        0,              \
                                                                            \
       /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */  \
          0,   0,   0,    0,       0,               0,     0,               \
                                                                            \
       /* output_offset, output_section, alignment_power,               */  \
          0,             &SEC,           0,                                 \
                                                                            \
       /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
          NULL,       NULL,        0,           0,       0,                 \
                                                                            \
       /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
          0,            NULL,     NULL,     NULL,   0,                      \
                                                                            \
       /* entsize, kept_section, moving_line_filepos,                    */ \
          0,       NULL,          0,                                        \
                                                                            \
       /* target_index, used_by_bfd, constructor_chain, owner,          */  \
          0,            NULL,        NULL,              NULL,               \
                                                                            \
       /* symbol,                    symbol_ptr_ptr,                    */  \
          (struct bfd_symbol *) SYM, &SEC.symbol,                           \
                                                                            \
       /* map_head, map_tail                                            */  \
          { NULL }, { NULL }                                                \
         }



File: bfd.info,  Node: section prototypes,  Prev: typedef asection,  Up: Sections

2.6.5 Section prototypes
------------------------

These are the functions exported by the section handling part of BFD.

2.6.5.1 'bfd_section_list_clear'
................................

*Synopsis*
     void bfd_section_list_clear (bfd *);
   *Description*
Clears the section list, and also resets the section count and hash
table entries.

2.6.5.2 'bfd_get_section_by_name'
.................................

*Synopsis*
     asection *bfd_get_section_by_name (bfd *abfd, const char *name);
   *Description*
Return the most recently created section attached to ABFD named NAME.
Return NULL if no such section exists.

2.6.5.3 'bfd_get_next_section_by_name'
......................................

*Synopsis*
     asection *bfd_get_next_section_by_name (asection *sec);
   *Description*
Given SEC is a section returned by 'bfd_get_section_by_name', return the
next most recently created section attached to the same BFD with the
same name.  Return NULL if no such section exists.

2.6.5.4 'bfd_get_linker_section'
................................

*Synopsis*
     asection *bfd_get_linker_section (bfd *abfd, const char *name);
   *Description*
Return the linker created section attached to ABFD named NAME.  Return
NULL if no such section exists.

2.6.5.5 'bfd_get_section_by_name_if'
....................................

*Synopsis*
     asection *bfd_get_section_by_name_if
        (bfd *abfd,
         const char *name,
         bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
         void *obj);
   *Description*
Call the provided function FUNC for each section attached to the BFD
ABFD whose name matches NAME, passing OBJ as an argument.  The function
will be called as if by

            func (abfd, the_section, obj);

   It returns the first section for which FUNC returns true, otherwise
'NULL'.

2.6.5.6 'bfd_get_unique_section_name'
.....................................

*Synopsis*
     char *bfd_get_unique_section_name
        (bfd *abfd, const char *templat, int *count);
   *Description*
Invent a section name that is unique in ABFD by tacking a dot and a
digit suffix onto the original TEMPLAT.  If COUNT is non-NULL, then it
specifies the first number tried as a suffix to generate a unique name.
The value pointed to by COUNT will be incremented in this case.

2.6.5.7 'bfd_make_section_old_way'
..................................

*Synopsis*
     asection *bfd_make_section_old_way (bfd *abfd, const char *name);
   *Description*
Create a new empty section called NAME and attach it to the end of the
chain of sections for the BFD ABFD.  An attempt to create a section with
a name which is already in use returns its pointer without changing the
section chain.

   It has the funny name since this is the way it used to be before it
was rewritten....

   Possible errors are:

   * 'bfd_error_invalid_operation' - If output has already started for
     this BFD.
   * 'bfd_error_no_memory' - If memory allocation fails.

2.6.5.8 'bfd_make_section_anyway_with_flags'
............................................

*Synopsis*
     asection *bfd_make_section_anyway_with_flags
        (bfd *abfd, const char *name, flagword flags);
   *Description*
Create a new empty section called NAME and attach it to the end of the
chain of sections for ABFD.  Create a new section even if there is
already a section with that name.  Also set the attributes of the new
section to the value FLAGS.

   Return 'NULL' and set 'bfd_error' on error; possible errors are:

   * 'bfd_error_invalid_operation' - If output has already started for
     ABFD.
   * 'bfd_error_no_memory' - If memory allocation fails.

2.6.5.9 'bfd_make_section_anyway'
.................................

*Synopsis*
     asection *bfd_make_section_anyway (bfd *abfd, const char *name);
   *Description*
Create a new empty section called NAME and attach it to the end of the
chain of sections for ABFD.  Create a new section even if there is
already a section with that name.

   Return 'NULL' and set 'bfd_error' on error; possible errors are:

   * 'bfd_error_invalid_operation' - If output has already started for
     ABFD.
   * 'bfd_error_no_memory' - If memory allocation fails.

2.6.5.10 'bfd_make_section_with_flags'
......................................

*Synopsis*
     asection *bfd_make_section_with_flags
        (bfd *, const char *name, flagword flags);
   *Description*
Like 'bfd_make_section_anyway', but return 'NULL' (without calling
bfd_set_error ()) without changing the section chain if there is already
a section named NAME.  Also set the attributes of the new section to the
value FLAGS.  If there is an error, return 'NULL' and set 'bfd_error'.

2.6.5.11 'bfd_make_section'
...........................

*Synopsis*
     asection *bfd_make_section (bfd *, const char *name);
   *Description*
Like 'bfd_make_section_anyway', but return 'NULL' (without calling
bfd_set_error ()) without changing the section chain if there is already
a section named NAME.  If there is an error, return 'NULL' and set
'bfd_error'.

2.6.5.12 'bfd_set_section_flags'
................................

*Synopsis*
     bfd_boolean bfd_set_section_flags
        (bfd *abfd, asection *sec, flagword flags);
   *Description*
Set the attributes of the section SEC in the BFD ABFD to the value
FLAGS.  Return 'TRUE' on success, 'FALSE' on error.  Possible error
returns are:

   * 'bfd_error_invalid_operation' - The section cannot have one or more
     of the attributes requested.  For example, a .bss section in
     'a.out' may not have the 'SEC_HAS_CONTENTS' field set.

2.6.5.13 'bfd_rename_section'
.............................

*Synopsis*
     void bfd_rename_section
        (bfd *abfd, asection *sec, const char *newname);
   *Description*
Rename section SEC in ABFD to NEWNAME.

2.6.5.14 'bfd_map_over_sections'
................................

*Synopsis*
     void bfd_map_over_sections
        (bfd *abfd,
         void (*func) (bfd *abfd, asection *sect, void *obj),
         void *obj);
   *Description*
Call the provided function FUNC for each section attached to the BFD
ABFD, passing OBJ as an argument.  The function will be called as if by

            func (abfd, the_section, obj);

   This is the preferred method for iterating over sections; an
alternative would be to use a loop:

               asection *p;
               for (p = abfd->sections; p != NULL; p = p->next)
                  func (abfd, p, ...)

2.6.5.15 'bfd_sections_find_if'
...............................

*Synopsis*
     asection *bfd_sections_find_if
        (bfd *abfd,
         bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
         void *obj);
   *Description*
Call the provided function OPERATION for each section attached to the
BFD ABFD, passing OBJ as an argument.  The function will be called as if
by

            operation (abfd, the_section, obj);

   It returns the first section for which OPERATION returns true.

2.6.5.16 'bfd_set_section_size'
...............................

*Synopsis*
     bfd_boolean bfd_set_section_size
        (bfd *abfd, asection *sec, bfd_size_type val);
   *Description*
Set SEC to the size VAL.  If the operation is ok, then 'TRUE' is
returned, else 'FALSE'.

   Possible error returns:

   * 'bfd_error_invalid_operation' - Writing has started to the BFD, so
     setting the size is invalid.

2.6.5.17 'bfd_set_section_contents'
...................................

*Synopsis*
     bfd_boolean bfd_set_section_contents
        (bfd *abfd, asection *section, const void *data,
         file_ptr offset, bfd_size_type count);
   *Description*
Sets the contents of the section SECTION in BFD ABFD to the data
starting in memory at DATA.  The data is written to the output section
starting at offset OFFSET for COUNT octets.

   Normally 'TRUE' is returned, else 'FALSE'.  Possible error returns
are:

   * 'bfd_error_no_contents' - The output section does not have the
     'SEC_HAS_CONTENTS' attribute, so nothing can be written to it.
   * and some more too
   This routine is front end to the back end function
'_bfd_set_section_contents'.

2.6.5.18 'bfd_get_section_contents'
...................................

*Synopsis*
     bfd_boolean bfd_get_section_contents
        (bfd *abfd, asection *section, void *location, file_ptr offset,
         bfd_size_type count);
   *Description*
Read data from SECTION in BFD ABFD into memory starting at LOCATION.
The data is read at an offset of OFFSET from the start of the input
section, and is read for COUNT bytes.

   If the contents of a constructor with the 'SEC_CONSTRUCTOR' flag set
are requested or if the section does not have the 'SEC_HAS_CONTENTS'
flag set, then the LOCATION is filled with zeroes.  If no errors occur,
'TRUE' is returned, else 'FALSE'.

2.6.5.19 'bfd_malloc_and_get_section'
.....................................

*Synopsis*
     bfd_boolean bfd_malloc_and_get_section
        (bfd *abfd, asection *section, bfd_byte **buf);
   *Description*
Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by
this function.

2.6.5.20 'bfd_copy_private_section_data'
........................................

*Synopsis*
     bfd_boolean bfd_copy_private_section_data
        (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
   *Description*
Copy private section information from ISEC in the BFD IBFD to the
section OSEC in the BFD OBFD.  Return 'TRUE' on success, 'FALSE' on
error.  Possible error returns are:

   * 'bfd_error_no_memory' - Not enough memory exists to create private
     data for OSEC.
     #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
          BFD_SEND (obfd, _bfd_copy_private_section_data, \
                    (ibfd, isection, obfd, osection))

2.6.5.21 'bfd_generic_is_group_section'
.......................................

*Synopsis*
     bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
   *Description*
Returns TRUE if SEC is a member of a group.

2.6.5.22 'bfd_generic_discard_group'
....................................

*Synopsis*
     bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
   *Description*
Remove all members of GROUP from the output.


File: bfd.info,  Node: Symbols,  Next: Archives,  Prev: Sections,  Up: BFD front end

2.7 Symbols
===========

BFD tries to maintain as much symbol information as it can when it moves
information from file to file.  BFD passes information to applications
though the 'asymbol' structure.  When the application requests the
symbol table, BFD reads the table in the native form and translates
parts of it into the internal format.  To maintain more than the
information passed to applications, some targets keep some information
"behind the scenes" in a structure only the particular back end knows
about.  For example, the coff back end keeps the original symbol table
structure as well as the canonical structure when a BFD is read in.  On
output, the coff back end can reconstruct the output symbol table so
that no information is lost, even information unique to coff which BFD
doesn't know or understand.  If a coff symbol table were read, but were
written through an a.out back end, all the coff specific information
would be lost.  The symbol table of a BFD is not necessarily read in
until a canonicalize request is made.  Then the BFD back end fills in a
table provided by the application with pointers to the canonical
information.  To output symbols, the application provides BFD with a
table of pointers to pointers to 'asymbol's.  This allows applications
like the linker to output a symbol as it was read, since the "behind the
scenes" information will be still available.
* Menu:

* Reading Symbols::
* Writing Symbols::
* Mini Symbols::
* typedef asymbol::
* symbol handling functions::


File: bfd.info,  Node: Reading Symbols,  Next: Writing Symbols,  Prev: Symbols,  Up: Symbols

2.7.1 Reading symbols
---------------------

There are two stages to reading a symbol table from a BFD: allocating
storage, and the actual reading process.  This is an excerpt from an
application which reads the symbol table:

              long storage_needed;
              asymbol **symbol_table;
              long number_of_symbols;
              long i;

              storage_needed = bfd_get_symtab_upper_bound (abfd);

              if (storage_needed < 0)
                FAIL

              if (storage_needed == 0)
                return;

              symbol_table = xmalloc (storage_needed);
                ...
              number_of_symbols =
                 bfd_canonicalize_symtab (abfd, symbol_table);

              if (number_of_symbols < 0)
                FAIL

              for (i = 0; i < number_of_symbols; i++)
                process_symbol (symbol_table[i]);

   All storage for the symbols themselves is in an objalloc connected to
the BFD; it is freed when the BFD is closed.


File: bfd.info,  Node: Writing Symbols,  Next: Mini Symbols,  Prev: Reading Symbols,  Up: Symbols

2.7.2 Writing symbols
---------------------

Writing of a symbol table is automatic when a BFD open for writing is
closed.  The application attaches a vector of pointers to pointers to
symbols to the BFD being written, and fills in the symbol count.  The
close and cleanup code reads through the table provided and performs all
the necessary operations.  The BFD output code must always be provided
with an "owned" symbol: one which has come from another BFD, or one
which has been created using 'bfd_make_empty_symbol'.  Here is an
example showing the creation of a symbol table with only one element:

            #include "sysdep.h"
            #include "bfd.h"
            int main (void)
            {
              bfd *abfd;
              asymbol *ptrs[2];
              asymbol *new;

              abfd = bfd_openw ("foo","a.out-sunos-big");
              bfd_set_format (abfd, bfd_object);
              new = bfd_make_empty_symbol (abfd);
              new->name = "dummy_symbol";
              new->section = bfd_make_section_old_way (abfd, ".text");
              new->flags = BSF_GLOBAL;
              new->value = 0x12345;

              ptrs[0] = new;
              ptrs[1] = 0;

              bfd_set_symtab (abfd, ptrs, 1);
              bfd_close (abfd);
              return 0;
            }

            ./makesym
            nm foo
            00012345 A dummy_symbol

   Many formats cannot represent arbitrary symbol information; for
instance, the 'a.out' object format does not allow an arbitrary number
of sections.  A symbol pointing to a section which is not one of
'.text', '.data' or '.bss' cannot be described.


File: bfd.info,  Node: Mini Symbols,  Next: typedef asymbol,  Prev: Writing Symbols,  Up: Symbols

2.7.3 Mini Symbols
------------------

Mini symbols provide read-only access to the symbol table.  They use
less memory space, but require more time to access.  They can be useful
for tools like nm or objdump, which may have to handle symbol tables of
extremely large executables.

   The 'bfd_read_minisymbols' function will read the symbols into memory
in an internal form.  It will return a 'void *' pointer to a block of
memory, a symbol count, and the size of each symbol.  The pointer is
allocated using 'malloc', and should be freed by the caller when it is
no longer needed.

   The function 'bfd_minisymbol_to_symbol' will take a pointer to a
minisymbol, and a pointer to a structure returned by
'bfd_make_empty_symbol', and return a 'asymbol' structure.  The return
value may or may not be the same as the value from
'bfd_make_empty_symbol' which was passed in.


File: bfd.info,  Node: typedef asymbol,  Next: symbol handling functions,  Prev: Mini Symbols,  Up: Symbols

2.7.4 typedef asymbol
---------------------

An 'asymbol' has the form:


     typedef struct bfd_symbol
     {
       /* A pointer to the BFD which owns the symbol. This information
          is necessary so that a back end can work out what additional
          information (invisible to the application writer) is carried
          with the symbol.

          This field is *almost* redundant, since you can use section->owner
          instead, except that some symbols point to the global sections
          bfd_{abs,com,und}_section.  This could be fixed by making
          these globals be per-bfd (or per-target-flavor).  FIXME.  */
       struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */

       /* The text of the symbol. The name is left alone, and not copied; the
          application may not alter it.  */
       const char *name;

       /* The value of the symbol.  This really should be a union of a
          numeric value with a pointer, since some flags indicate that
          a pointer to another symbol is stored here.  */
       symvalue value;

       /* Attributes of a symbol.  */
     #define BSF_NO_FLAGS           0x00

       /* The symbol has local scope; static in C. The value
          is the offset into the section of the data.  */
     #define BSF_LOCAL              (1 << 0)

       /* The symbol has global scope; initialized data in C. The
          value is the offset into the section of the data.  */
     #define BSF_GLOBAL             (1 << 1)

       /* The symbol has global scope and is exported. The value is
          the offset into the section of the data.  */
     #define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */

       /* A normal C symbol would be one of:
          BSF_LOCAL, BSF_COMMON,  BSF_UNDEFINED or
          BSF_GLOBAL.  */

       /* The symbol is a debugging record. The value has an arbitrary
          meaning, unless BSF_DEBUGGING_RELOC is also set.  */
     #define BSF_DEBUGGING          (1 << 2)

       /* The symbol denotes a function entry point.  Used in ELF,
          perhaps others someday.  */
     #define BSF_FUNCTION           (1 << 3)

       /* Used by the linker.  */
     #define BSF_KEEP               (1 << 5)
     #define BSF_KEEP_G             (1 << 6)

       /* A weak global symbol, overridable without warnings by
          a regular global symbol of the same name.  */
     #define BSF_WEAK               (1 << 7)

       /* This symbol was created to point to a section, e.g. ELF's
          STT_SECTION symbols.  */
     #define BSF_SECTION_SYM        (1 << 8)

       /* The symbol used to be a common symbol, but now it is
          allocated.  */
     #define BSF_OLD_COMMON         (1 << 9)

       /* In some files the type of a symbol sometimes alters its
          location in an output file - ie in coff a ISFCN symbol
          which is also C_EXT symbol appears where it was
          declared and not at the end of a section.  This bit is set
          by the target BFD part to convey this information.  */
     #define BSF_NOT_AT_END         (1 << 10)

       /* Signal that the symbol is the label of constructor section.  */
     #define BSF_CONSTRUCTOR        (1 << 11)

       /* Signal that the symbol is a warning symbol.  The name is a
          warning.  The name of the next symbol is the one to warn about;
          if a reference is made to a symbol with the same name as the next
          symbol, a warning is issued by the linker.  */
     #define BSF_WARNING            (1 << 12)

       /* Signal that the symbol is indirect.  This symbol is an indirect
          pointer to the symbol with the same name as the next symbol.  */
     #define BSF_INDIRECT           (1 << 13)

       /* BSF_FILE marks symbols that contain a file name.  This is used
          for ELF STT_FILE symbols.  */
     #define BSF_FILE               (1 << 14)

       /* Symbol is from dynamic linking information.  */
     #define BSF_DYNAMIC            (1 << 15)

       /* The symbol denotes a data object.  Used in ELF, and perhaps
          others someday.  */
     #define BSF_OBJECT             (1 << 16)

       /* This symbol is a debugging symbol.  The value is the offset
          into the section of the data.  BSF_DEBUGGING should be set
          as well.  */
     #define BSF_DEBUGGING_RELOC    (1 << 17)

       /* This symbol is thread local.  Used in ELF.  */
     #define BSF_THREAD_LOCAL       (1 << 18)

       /* This symbol represents a complex relocation expression,
          with the expression tree serialized in the symbol name.  */
     #define BSF_RELC               (1 << 19)

       /* This symbol represents a signed complex relocation expression,
          with the expression tree serialized in the symbol name.  */
     #define BSF_SRELC              (1 << 20)

       /* This symbol was created by bfd_get_synthetic_symtab.  */
     #define BSF_SYNTHETIC          (1 << 21)

       /* This symbol is an indirect code object.  Unrelated to BSF_INDIRECT.
          The dynamic linker will compute the value of this symbol by
          calling the function that it points to.  BSF_FUNCTION must
          also be also set.  */
     #define BSF_GNU_INDIRECT_FUNCTION (1 << 22)
       /* This symbol is a globally unique data object.  The dynamic linker
          will make sure that in the entire process there is just one symbol
          with this name and type in use.  BSF_OBJECT must also be set.  */
     #define BSF_GNU_UNIQUE         (1 << 23)

       flagword flags;

       /* A pointer to the section to which this symbol is
          relative.  This will always be non NULL, there are special
          sections for undefined and absolute symbols.  */
       struct bfd_section *section;

       /* Back end special data.  */
       union
         {
           void *p;
           bfd_vma i;
         }
       udata;
     }
     asymbol;



File: bfd.info,  Node: symbol handling functions,  Prev: typedef asymbol,  Up: Symbols

2.7.5 Symbol handling functions
-------------------------------

2.7.5.1 'bfd_get_symtab_upper_bound'
....................................

*Description*
Return the number of bytes required to store a vector of pointers to
'asymbols' for all the symbols in the BFD ABFD, including a terminal
NULL pointer.  If there are no symbols in the BFD, then return 0.  If an
error occurs, return -1.
     #define bfd_get_symtab_upper_bound(abfd) \
          BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))


2.7.5.2 'bfd_is_local_label'
............................

*Synopsis*
     bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
   *Description*
Return TRUE if the given symbol SYM in the BFD ABFD is a compiler
generated local label, else return FALSE.

2.7.5.3 'bfd_is_local_label_name'
.................................

*Synopsis*
     bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
   *Description*
Return TRUE if a symbol with the name NAME in the BFD ABFD is a compiler
generated local label, else return FALSE. This just checks whether the
name has the form of a local label.
     #define bfd_is_local_label_name(abfd, name) \
       BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))


2.7.5.4 'bfd_is_target_special_symbol'
......................................

*Synopsis*
     bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
   *Description*
Return TRUE iff a symbol SYM in the BFD ABFD is something special to the
particular target represented by the BFD. Such symbols should normally
not be mentioned to the user.
     #define bfd_is_target_special_symbol(abfd, sym) \
       BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))


2.7.5.5 'bfd_canonicalize_symtab'
.................................

*Description*
Read the symbols from the BFD ABFD, and fills in the vector LOCATION
with pointers to the symbols and a trailing NULL. Return the actual
number of symbol pointers, not including the NULL.
     #define bfd_canonicalize_symtab(abfd, location) \
       BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))


2.7.5.6 'bfd_set_symtab'
........................

*Synopsis*
     bfd_boolean bfd_set_symtab
        (bfd *abfd, asymbol **location, unsigned int count);
   *Description*
Arrange that when the output BFD ABFD is closed, the table LOCATION of
COUNT pointers to symbols will be written.

2.7.5.7 'bfd_print_symbol_vandf'
................................

*Synopsis*
     void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
   *Description*
Print the value and flags of the SYMBOL supplied to the stream FILE.

2.7.5.8 'bfd_make_empty_symbol'
...............................

*Description*
Create a new 'asymbol' structure for the BFD ABFD and return a pointer
to it.

   This routine is necessary because each back end has private
information surrounding the 'asymbol'.  Building your own 'asymbol' and
pointing to it will not create the private information, and will cause
problems later on.
     #define bfd_make_empty_symbol(abfd) \
       BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))


2.7.5.9 '_bfd_generic_make_empty_symbol'
........................................

*Synopsis*
     asymbol *_bfd_generic_make_empty_symbol (bfd *);
   *Description*
Create a new 'asymbol' structure for the BFD ABFD and return a pointer
to it.  Used by core file routines, binary back-end and anywhere else
where no private info is needed.

2.7.5.10 'bfd_make_debug_symbol'
................................

*Description*
Create a new 'asymbol' structure for the BFD ABFD, to be used as a
debugging symbol.  Further details of its use have yet to be worked out.
     #define bfd_make_debug_symbol(abfd,ptr,size) \
       BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))


2.7.5.11 'bfd_decode_symclass'
..............................

*Description*
Return a character corresponding to the symbol class of SYMBOL, or '?'
for an unknown class.

   *Synopsis*
     int bfd_decode_symclass (asymbol *symbol);

2.7.5.12 'bfd_is_undefined_symclass'
....................................

*Description*
Returns non-zero if the class symbol returned by bfd_decode_symclass
represents an undefined symbol.  Returns zero otherwise.

   *Synopsis*
     bfd_boolean bfd_is_undefined_symclass (int symclass);

2.7.5.13 'bfd_symbol_info'
..........................

*Description*
Fill in the basic info about symbol that nm needs.  Additional info may
be added by the back-ends after calling this function.

   *Synopsis*
     void bfd_symbol_info (asymbol *symbol, symbol_info *ret);

2.7.5.14 'bfd_copy_private_symbol_data'
.......................................

*Synopsis*
     bfd_boolean bfd_copy_private_symbol_data
        (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
   *Description*
Copy private symbol information from ISYM in the BFD IBFD to the symbol
OSYM in the BFD OBFD.  Return 'TRUE' on success, 'FALSE' on error.
Possible error returns are:

   * 'bfd_error_no_memory' - Not enough memory exists to create private
     data for OSEC.
     #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
       BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
                 (ibfd, isymbol, obfd, osymbol))



File: bfd.info,  Node: Archives,  Next: Formats,  Prev: Symbols,  Up: BFD front end

2.8 Archives
============

*Description*
An archive (or library) is just another BFD. It has a symbol table,
although there's not much a user program will do with it.

   The big difference between an archive BFD and an ordinary BFD is that
the archive doesn't have sections.  Instead it has a chain of BFDs that
are considered its contents.  These BFDs can be manipulated like any
other.  The BFDs contained in an archive opened for reading will all be
opened for reading.  You may put either input or output BFDs into an
archive opened for output; they will be handled correctly when the
archive is closed.

   Use 'bfd_openr_next_archived_file' to step through the contents of an
archive opened for input.  You don't have to read the entire archive if
you don't want to!  Read it until you find what you want.

   A BFD returned by 'bfd_openr_next_archived_file' can be closed
manually with 'bfd_close'.  If you do not close it, then a second
iteration through the members of an archive may return the same BFD. If
you close the archive BFD, then all the member BFDs will automatically
be closed as well.

   Archive contents of output BFDs are chained through the
'archive_next' pointer in a BFD. The first one is findable through the
'archive_head' slot of the archive.  Set it with 'bfd_set_archive_head'
(q.v.).  A given BFD may be in only one open output archive at a time.

   As expected, the BFD archive code is more general than the archive
code of any given environment.  BFD archives may contain files of
different formats (e.g., a.out and coff) and even different
architectures.  You may even place archives recursively into archives!

   This can cause unexpected confusion, since some archive formats are
more expressive than others.  For instance, Intel COFF archives can
preserve long filenames; SunOS a.out archives cannot.  If you move a
file from the first to the second format and back again, the filename
may be truncated.  Likewise, different a.out environments have different
conventions as to how they truncate filenames, whether they preserve
directory names in filenames, etc.  When interoperating with native
tools, be sure your files are homogeneous.

   Beware: most of these formats do not react well to the presence of
spaces in filenames.  We do the best we can, but can't always handle
this case due to restrictions in the format of archives.  Many Unix
utilities are braindead in regards to spaces and such in filenames
anyway, so this shouldn't be much of a restriction.

   Archives are supported in BFD in 'archive.c'.

2.8.1 Archive functions
-----------------------

2.8.1.1 'bfd_get_next_mapent'
.............................

*Synopsis*
     symindex bfd_get_next_mapent
        (bfd *abfd, symindex previous, carsym **sym);
   *Description*
Step through archive ABFD's symbol table (if it has one).  Successively
update SYM with the next symbol's information, returning that symbol's
(internal) index into the symbol table.

   Supply 'BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first
one; returns 'BFD_NO_MORE_SYMBOLS' when you've already got the last one.

   A 'carsym' is a canonical archive symbol.  The only user-visible
element is its name, a null-terminated string.

2.8.1.2 'bfd_set_archive_head'
..............................

*Synopsis*
     bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
   *Description*
Set the head of the chain of BFDs contained in the archive OUTPUT to
NEW_HEAD.

2.8.1.3 'bfd_openr_next_archived_file'
......................................

*Synopsis*
     bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
   *Description*
Provided a BFD, ARCHIVE, containing an archive and NULL, open an input
BFD on the first contained element and returns that.  Subsequent calls
should pass the archive and the previous return value to return a
created BFD to the next contained element.  NULL is returned when there
are no more.


File: bfd.info,  Node: Formats,  Next: Relocations,  Prev: Archives,  Up: BFD front end

2.9 File formats
================

A format is a BFD concept of high level file contents type.  The formats
supported by BFD are:

   * 'bfd_object'
   The BFD may contain data, symbols, relocations and debug info.

   * 'bfd_archive'
   The BFD contains other BFDs and an optional index.

   * 'bfd_core'
   The BFD contains the result of an executable core dump.

2.9.1 File format functions
---------------------------

2.9.1.1 'bfd_check_format'
..........................

*Synopsis*
     bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
   *Description*
Verify if the file attached to the BFD ABFD is compatible with the
format FORMAT (i.e., one of 'bfd_object', 'bfd_archive' or 'bfd_core').

   If the BFD has been set to a specific target before the call, only
the named target and format combination is checked.  If the target has
not been set, or has been set to 'default', then all the known target
backends is interrogated to determine a match.  If the default target
matches, it is used.  If not, exactly one target must recognize the
file, or an error results.

   The function returns 'TRUE' on success, otherwise 'FALSE' with one of
the following error codes:

   * 'bfd_error_invalid_operation' - if 'format' is not one of
     'bfd_object', 'bfd_archive' or 'bfd_core'.

   * 'bfd_error_system_call' - if an error occured during a read - even
     some file mismatches can cause bfd_error_system_calls.

   * 'file_not_recognised' - none of the backends recognised the file
     format.

   * 'bfd_error_file_ambiguously_recognized' - more than one backend
     recognised the file format.

2.9.1.2 'bfd_check_format_matches'
..................................

*Synopsis*
     bfd_boolean bfd_check_format_matches
        (bfd *abfd, bfd_format format, char ***matching);
   *Description*
Like 'bfd_check_format', except when it returns FALSE with 'bfd_errno'
set to 'bfd_error_file_ambiguously_recognized'.  In that case, if
MATCHING is not NULL, it will be filled in with a NULL-terminated list
of the names of the formats that matched, allocated with 'malloc'.  Then
the user may choose a format and try again.

   When done with the list that MATCHING points to, the caller should
free it.

2.9.1.3 'bfd_set_format'
........................

*Synopsis*
     bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
   *Description*
This function sets the file format of the BFD ABFD to the format FORMAT.
If the target set in the BFD does not support the format requested, the
format is invalid, or the BFD is not open for writing, then an error
occurs.

2.9.1.4 'bfd_format_string'
...........................

*Synopsis*
     const char *bfd_format_string (bfd_format format);
   *Description*
Return a pointer to a const string 'invalid', 'object', 'archive',
'core', or 'unknown', depending upon the value of FORMAT.


File: bfd.info,  Node: Relocations,  Next: Core Files,  Prev: Formats,  Up: BFD front end

2.10 Relocations
================

BFD maintains relocations in much the same way it maintains symbols:
they are left alone until required, then read in en-masse and translated
into an internal form.  A common routine 'bfd_perform_relocation' acts
upon the canonical form to do the fixup.

   Relocations are maintained on a per section basis, while symbols are
maintained on a per BFD basis.

   All that a back end has to do to fit the BFD interface is to create a
'struct reloc_cache_entry' for each relocation in a particular section,
and fill in the right bits of the structures.

* Menu:

* typedef arelent::
* howto manager::


File: bfd.info,  Node: typedef arelent,  Next: howto manager,  Prev: Relocations,  Up: Relocations

2.10.1 typedef arelent
----------------------

This is the structure of a relocation entry:


     typedef enum bfd_reloc_status
     {
       /* No errors detected.  */
       bfd_reloc_ok,

       /* The relocation was performed, but there was an overflow.  */
       bfd_reloc_overflow,

       /* The address to relocate was not within the section supplied.  */
       bfd_reloc_outofrange,

       /* Used by special functions.  */
       bfd_reloc_continue,

       /* Unsupported relocation size requested.  */
       bfd_reloc_notsupported,

       /* Unused.  */
       bfd_reloc_other,

       /* The symbol to relocate against was undefined.  */
       bfd_reloc_undefined,

       /* The relocation was performed, but may not be ok - presently
          generated only when linking i960 coff files with i960 b.out
          symbols.  If this type is returned, the error_message argument
          to bfd_perform_relocation will be set.  */
       bfd_reloc_dangerous
      }
      bfd_reloc_status_type;


     typedef struct reloc_cache_entry
     {
       /* A pointer into the canonical table of pointers.  */
       struct bfd_symbol **sym_ptr_ptr;

       /* offset in section.  */
       bfd_size_type address;

       /* addend for relocation value.  */
       bfd_vma addend;

       /* Pointer to how to perform the required relocation.  */
       reloc_howto_type *howto;

     }
     arelent;

   *Description*
Here is a description of each of the fields within an 'arelent':

   * 'sym_ptr_ptr'
   The symbol table pointer points to a pointer to the symbol associated
with the relocation request.  It is the pointer into the table returned
by the back end's 'canonicalize_symtab' action.  *Note Symbols::.  The
symbol is referenced through a pointer to a pointer so that tools like
the linker can fix up all the symbols of the same name by modifying only
one pointer.  The relocation routine looks in the symbol and uses the
base of the section the symbol is attached to and the value of the
symbol as the initial relocation offset.  If the symbol pointer is zero,
then the section provided is looked up.

   * 'address'
   The 'address' field gives the offset in bytes from the base of the
section data which owns the relocation record to the first byte of
relocatable information.  The actual data relocated will be relative to
this point; for example, a relocation type which modifies the bottom two
bytes of a four byte word would not touch the first byte pointed to in a
big endian world.

   * 'addend'
   The 'addend' is a value provided by the back end to be added (!)  to
the relocation offset.  Its interpretation is dependent upon the howto.
For example, on the 68k the code:

             char foo[];
             main()
                     {
                     return foo[0x12345678];
                     }

   Could be compiled into:

             linkw fp,#-4
             moveb @#12345678,d0
             extbl d0
             unlk fp
             rts

   This could create a reloc pointing to 'foo', but leave the offset in
the data, something like:

     RELOCATION RECORDS FOR [.text]:
     offset   type      value
     00000006 32        _foo

     00000000 4e56 fffc          ; linkw fp,#-4
     00000004 1039 1234 5678     ; moveb @#12345678,d0
     0000000a 49c0               ; extbl d0
     0000000c 4e5e               ; unlk fp
     0000000e 4e75               ; rts

   Using coff and an 88k, some instructions don't have enough space in
them to represent the full address range, and pointers have to be loaded
in two parts.  So you'd get something like:

             or.u     r13,r0,hi16(_foo+0x12345678)
             ld.b     r2,r13,lo16(_foo+0x12345678)
             jmp      r1

   This should create two relocs, both pointing to '_foo', and with
0x12340000 in their addend field.  The data would consist of:

     RELOCATION RECORDS FOR [.text]:
     offset   type      value
     00000002 HVRT16    _foo+0x12340000
     00000006 LVRT16    _foo+0x12340000

     00000000 5da05678           ; or.u r13,r0,0x5678
     00000004 1c4d5678           ; ld.b r2,r13,0x5678
     00000008 f400c001           ; jmp r1

   The relocation routine digs out the value from the data, adds it to
the addend to get the original offset, and then adds the value of
'_foo'.  Note that all 32 bits have to be kept around somewhere, to cope
with carry from bit 15 to bit 16.

   One further example is the sparc and the a.out format.  The sparc has
a similar problem to the 88k, in that some instructions don't have room
for an entire offset, but on the sparc the parts are created in odd
sized lumps.  The designers of the a.out format chose to not use the
data within the section for storing part of the offset; all the offset
is kept within the reloc.  Anything in the data should be ignored.

             save %sp,-112,%sp
             sethi %hi(_foo+0x12345678),%g2
             ldsb [%g2+%lo(_foo+0x12345678)],%i0
             ret
             restore

   Both relocs contain a pointer to 'foo', and the offsets contain junk.

     RELOCATION RECORDS FOR [.text]:
     offset   type      value
     00000004 HI22      _foo+0x12345678
     00000008 LO10      _foo+0x12345678

     00000000 9de3bf90     ; save %sp,-112,%sp
     00000004 05000000     ; sethi %hi(_foo+0),%g2
     00000008 f048a000     ; ldsb [%g2+%lo(_foo+0)],%i0
     0000000c 81c7e008     ; ret
     00000010 81e80000     ; restore

   * 'howto'
   The 'howto' field can be imagined as a relocation instruction.  It is
a pointer to a structure which contains information on what to do with
all of the other information in the reloc record and data section.  A
back end would normally have a relocation instruction set and turn
relocations into pointers to the correct structure on input - but it
would be possible to create each howto field on demand.

2.10.1.1 'enum complain_overflow'
.................................

Indicates what sort of overflow checking should be done when performing
a relocation.


     enum complain_overflow
     {
       /* Do not complain on overflow.  */
       complain_overflow_dont,

       /* Complain if the value overflows when considered as a signed
          number one bit larger than the field.  ie. A bitfield of N bits
          is allowed to represent -2**n to 2**n-1.  */
       complain_overflow_bitfield,

       /* Complain if the value overflows when considered as a signed
          number.  */
       complain_overflow_signed,

       /* Complain if the value overflows when considered as an
          unsigned number.  */
       complain_overflow_unsigned
     };

2.10.1.2 'reloc_howto_type'
...........................

The 'reloc_howto_type' is a structure which contains all the information
that libbfd needs to know to tie up a back end's data.

     struct bfd_symbol;             /* Forward declaration.  */

     struct reloc_howto_struct
     {
       /*  The type field has mainly a documentary use - the back end can
           do what it wants with it, though normally the back end's
           external idea of what a reloc number is stored
           in this field.  For example, a PC relative word relocation
           in a coff environment has the type 023 - because that's
           what the outside world calls a R_PCRWORD reloc.  */
       unsigned int type;

       /*  The value the final relocation is shifted right by.  This drops
           unwanted data from the relocation.  */
       unsigned int rightshift;

       /*  The size of the item to be relocated.  This is *not* a
           power-of-two measure.  To get the number of bytes operated
           on by a type of relocation, use bfd_get_reloc_size.  */
       int size;

       /*  The number of bits in the item to be relocated.  This is used
           when doing overflow checking.  */
       unsigned int bitsize;

       /*  The relocation is relative to the field being relocated.  */
       bfd_boolean pc_relative;

       /*  The bit position of the reloc value in the destination.
           The relocated value is left shifted by this amount.  */
       unsigned int bitpos;

       /* What type of overflow error should be checked for when
          relocating.  */
       enum complain_overflow complain_on_overflow;

       /* If this field is non null, then the supplied function is
          called rather than the normal function.  This allows really
          strange relocation methods to be accommodated (e.g., i960 callj
          instructions).  */
       bfd_reloc_status_type (*special_function)
         (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
          bfd *, char **);

       /* The textual name of the relocation type.  */
       char *name;

       /* Some formats record a relocation addend in the section contents
          rather than with the relocation.  For ELF formats this is the
          distinction between USE_REL and USE_RELA (though the code checks
          for USE_REL == 1/0).  The value of this field is TRUE if the
          addend is recorded with the section contents; when performing a
          partial link (ld -r) the section contents (the data) will be
          modified.  The value of this field is FALSE if addends are
          recorded with the relocation (in arelent.addend); when performing
          a partial link the relocation will be modified.
          All relocations for all ELF USE_RELA targets should set this field
          to FALSE (values of TRUE should be looked on with suspicion).
          However, the converse is not true: not all relocations of all ELF
          USE_REL targets set this field to TRUE.  Why this is so is peculiar
          to each particular target.  For relocs that aren't used in partial
          links (e.g. GOT stuff) it doesn't matter what this is set to.  */
       bfd_boolean partial_inplace;

       /* src_mask selects the part of the instruction (or data) to be used
          in the relocation sum.  If the target relocations don't have an
          addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
          dst_mask to extract the addend from the section contents.  If
          relocations do have an addend in the reloc, eg. ELF USE_RELA, this
          field should be zero.  Non-zero values for ELF USE_RELA targets are
          bogus as in those cases the value in the dst_mask part of the
          section contents should be treated as garbage.  */
       bfd_vma src_mask;

       /* dst_mask selects which parts of the instruction (or data) are
          replaced with a relocated value.  */
       bfd_vma dst_mask;

       /* When some formats create PC relative instructions, they leave
          the value of the pc of the place being relocated in the offset
          slot of the instruction, so that a PC relative relocation can
          be made just by adding in an ordinary offset (e.g., sun3 a.out).
          Some formats leave the displacement part of an instruction
          empty (e.g., m88k bcs); this flag signals the fact.  */
       bfd_boolean pcrel_offset;
     };


2.10.1.3 'The HOWTO Macro'
..........................

*Description*
The HOWTO define is horrible and will go away.
     #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
       { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }

   *Description*
And will be replaced with the totally magic way.  But for the moment, we
are compatible, so do it this way.
     #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
       HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
              NAME, FALSE, 0, 0, IN)


   *Description*
This is used to fill in an empty howto entry in an array.
     #define EMPTY_HOWTO(C) \
       HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
              NULL, FALSE, 0, 0, FALSE)


   *Description*
Helper routine to turn a symbol into a relocation value.
     #define HOWTO_PREPARE(relocation, symbol)               \
       {                                                     \
         if (symbol != NULL)                                 \
           {                                                 \
             if (bfd_is_com_section (symbol->section))       \
               {                                             \
                 relocation = 0;                             \
               }                                             \
             else                                            \
               {                                             \
                 relocation = symbol->value;                 \
               }                                             \
           }                                                 \
       }


2.10.1.4 'bfd_get_reloc_size'
.............................

*Synopsis*
     unsigned int bfd_get_reloc_size (reloc_howto_type *);
   *Description*
For a reloc_howto_type that operates on a fixed number of bytes, this
returns the number of bytes operated on.

2.10.1.5 'arelent_chain'
........................

*Description*
How relocs are tied together in an 'asection':
     typedef struct relent_chain
     {
       arelent relent;
       struct relent_chain *next;
     }
     arelent_chain;


2.10.1.6 'bfd_check_overflow'
.............................

*Synopsis*
     bfd_reloc_status_type bfd_check_overflow
        (enum complain_overflow how,
         unsigned int bitsize,
         unsigned int rightshift,
         unsigned int addrsize,
         bfd_vma relocation);
   *Description*
Perform overflow checking on RELOCATION which has BITSIZE significant
bits and will be shifted right by RIGHTSHIFT bits, on a machine with
addresses containing ADDRSIZE significant bits.  The result is either of
'bfd_reloc_ok' or 'bfd_reloc_overflow'.

2.10.1.7 'bfd_perform_relocation'
.................................

*Synopsis*
     bfd_reloc_status_type bfd_perform_relocation
        (bfd *abfd,
         arelent *reloc_entry,
         void *data,
         asection *input_section,
         bfd *output_bfd,
         char **error_message);
   *Description*
If OUTPUT_BFD is supplied to this function, the generated image will be
relocatable; the relocations are copied to the output file after they
have been changed to reflect the new state of the world.  There are two
ways of reflecting the results of partial linkage in an output file: by
modifying the output data in place, and by modifying the relocation
record.  Some native formats (e.g., basic a.out and basic coff) have no
way of specifying an addend in the relocation type, so the addend has to
go in the output data.  This is no big deal since in these formats the
output data slot will always be big enough for the addend.  Complex
reloc types with addends were invented to solve just this problem.  The
ERROR_MESSAGE argument is set to an error message if this return
'bfd_reloc_dangerous'.

2.10.1.8 'bfd_install_relocation'
.................................

*Synopsis*
     bfd_reloc_status_type bfd_install_relocation
        (bfd *abfd,
         arelent *reloc_entry,
         void *data, bfd_vma data_start,
         asection *input_section,
         char **error_message);
   *Description*
This looks remarkably like 'bfd_perform_relocation', except it does not
expect that the section contents have been filled in.  I.e., it's
suitable for use when creating, rather than applying a relocation.

   For now, this function should be considered reserved for the
assembler.


File: bfd.info,  Node: howto manager,  Prev: typedef arelent,  Up: Relocations

2.10.2 The howto manager
------------------------

When an application wants to create a relocation, but doesn't know what
the target machine might call it, it can find out by using this bit of
code.

2.10.2.1 'bfd_reloc_code_type'
..............................

*Description*
The insides of a reloc code.  The idea is that, eventually, there will
be one enumerator for every type of relocation we ever do.  Pass one of
these values to 'bfd_reloc_type_lookup', and it'll return a howto
pointer.

   This does mean that the application must determine the correct
enumerator value; you can't get a howto pointer from a random set of
attributes.

   Here are the possible values for 'enum bfd_reloc_code_real':

 -- : BFD_RELOC_64
 -- : BFD_RELOC_32
 -- : BFD_RELOC_26
 -- : BFD_RELOC_24
 -- : BFD_RELOC_16
 -- : BFD_RELOC_14
 -- : BFD_RELOC_8
     Basic absolute relocations of N bits.
 -- : BFD_RELOC_64_PCREL
 -- : BFD_RELOC_32_PCREL
 -- : BFD_RELOC_24_PCREL
 -- : BFD_RELOC_16_PCREL
 -- : BFD_RELOC_12_PCREL
 -- : BFD_RELOC_8_PCREL
     PC-relative relocations.  Sometimes these are relative to the
     address of the relocation itself; sometimes they are relative to
     the start of the section containing the relocation.  It depends on
     the specific target.

     The 24-bit relocation is used in some Intel 960 configurations.
 -- : BFD_RELOC_32_SECREL
     Section relative relocations.  Some targets need this for DWARF2.
 -- : BFD_RELOC_32_GOT_PCREL
 -- : BFD_RELOC_16_GOT_PCREL
 -- : BFD_RELOC_8_GOT_PCREL
 -- : BFD_RELOC_32_GOTOFF
 -- : BFD_RELOC_16_GOTOFF
 -- : BFD_RELOC_LO16_GOTOFF
 -- : BFD_RELOC_HI16_GOTOFF
 -- : BFD_RELOC_HI16_S_GOTOFF
 -- : BFD_RELOC_8_GOTOFF
 -- : BFD_RELOC_64_PLT_PCREL
 -- : BFD_RELOC_32_PLT_PCREL
 -- : BFD_RELOC_24_PLT_PCREL
 -- : BFD_RELOC_16_PLT_PCREL
 -- : BFD_RELOC_8_PLT_PCREL
 -- : BFD_RELOC_64_PLTOFF
 -- : BFD_RELOC_32_PLTOFF
 -- : BFD_RELOC_16_PLTOFF
 -- : BFD_RELOC_LO16_PLTOFF
 -- : BFD_RELOC_HI16_PLTOFF
 -- : BFD_RELOC_HI16_S_PLTOFF
 -- : BFD_RELOC_8_PLTOFF
     For ELF.
 -- : BFD_RELOC_SIZE32
 -- : BFD_RELOC_SIZE64
     Size relocations.
 -- : BFD_RELOC_68K_GLOB_DAT
 -- : BFD_RELOC_68K_JMP_SLOT
 -- : BFD_RELOC_68K_RELATIVE
 -- : BFD_RELOC_68K_TLS_GD32
 -- : BFD_RELOC_68K_TLS_GD16
 -- : BFD_RELOC_68K_TLS_GD8
 -- : BFD_RELOC_68K_TLS_LDM32
 -- : BFD_RELOC_68K_TLS_LDM16
 -- : BFD_RELOC_68K_TLS_LDM8
 -- : BFD_RELOC_68K_TLS_LDO32
 -- : BFD_RELOC_68K_TLS_LDO16
 -- : BFD_RELOC_68K_TLS_LDO8
 -- : BFD_RELOC_68K_TLS_IE32
 -- : BFD_RELOC_68K_TLS_IE16
 -- : BFD_RELOC_68K_TLS_IE8
 -- : BFD_RELOC_68K_TLS_LE32
 -- : BFD_RELOC_68K_TLS_LE16
 -- : BFD_RELOC_68K_TLS_LE8
     Relocations used by 68K ELF.
 -- : BFD_RELOC_32_BASEREL
 -- : BFD_RELOC_16_BASEREL
 -- : BFD_RELOC_LO16_BASEREL
 -- : BFD_RELOC_HI16_BASEREL
 -- : BFD_RELOC_HI16_S_BASEREL
 -- : BFD_RELOC_8_BASEREL
 -- : BFD_RELOC_RVA
     Linkage-table relative.
 -- : BFD_RELOC_8_FFnn
     Absolute 8-bit relocation, but used to form an address like 0xFFnn.
 -- : BFD_RELOC_32_PCREL_S2
 -- : BFD_RELOC_16_PCREL_S2
 -- : BFD_RELOC_23_PCREL_S2
     These PC-relative relocations are stored as word displacements -
     i.e., byte displacements shifted right two bits.  The 30-bit word
     displacement (<<32_PCREL_S2>> - 32 bits, shifted 2) is used on the
     SPARC. (SPARC tools generally refer to this as <<WDISP30>>.)  The
     signed 16-bit displacement is used on the MIPS, and the 23-bit
     displacement is used on the Alpha.
 -- : BFD_RELOC_HI22
 -- : BFD_RELOC_LO10
     High 22 bits and low 10 bits of 32-bit value, placed into lower
     bits of the target word.  These are used on the SPARC.
 -- : BFD_RELOC_GPREL16
 -- : BFD_RELOC_GPREL32
     For systems that allocate a Global Pointer register, these are
     displacements off that register.  These relocation types are
     handled specially, because the value the register will have is
     decided relatively late.
 -- : BFD_RELOC_I960_CALLJ
     Reloc types used for i960/b.out.
 -- : BFD_RELOC_NONE
 -- : BFD_RELOC_SPARC_WDISP22
 -- : BFD_RELOC_SPARC22
 -- : BFD_RELOC_SPARC13
 -- : BFD_RELOC_SPARC_GOT10
 -- : BFD_RELOC_SPARC_GOT13
 -- : BFD_RELOC_SPARC_GOT22
 -- : BFD_RELOC_SPARC_PC10
 -- : BFD_RELOC_SPARC_PC22
 -- : BFD_RELOC_SPARC_WPLT30
 -- : BFD_RELOC_SPARC_COPY
 -- : BFD_RELOC_SPARC_GLOB_DAT
 -- : BFD_RELOC_SPARC_JMP_SLOT
 -- : BFD_RELOC_SPARC_RELATIVE
 -- : BFD_RELOC_SPARC_UA16
 -- : BFD_RELOC_SPARC_UA32
 -- : BFD_RELOC_SPARC_UA64
 -- : BFD_RELOC_SPARC_GOTDATA_HIX22
 -- : BFD_RELOC_SPARC_GOTDATA_LOX10
 -- : BFD_RELOC_SPARC_GOTDATA_OP_HIX22
 -- : BFD_RELOC_SPARC_GOTDATA_OP_LOX10
 -- : BFD_RELOC_SPARC_GOTDATA_OP
 -- : BFD_RELOC_SPARC_JMP_IREL
 -- : BFD_RELOC_SPARC_IRELATIVE
     SPARC ELF relocations.  There is probably some overlap with other
     relocation types already defined.
 -- : BFD_RELOC_SPARC_BASE13
 -- : BFD_RELOC_SPARC_BASE22
     I think these are specific to SPARC a.out (e.g., Sun 4).
 -- : BFD_RELOC_SPARC_64
 -- : BFD_RELOC_SPARC_10
 -- : BFD_RELOC_SPARC_11
 -- : BFD_RELOC_SPARC_OLO10
 -- : BFD_RELOC_SPARC_HH22
 -- : BFD_RELOC_SPARC_HM10
 -- : BFD_RELOC_SPARC_LM22
 -- : BFD_RELOC_SPARC_PC_HH22
 -- : BFD_RELOC_SPARC_PC_HM10
 -- : BFD_RELOC_SPARC_PC_LM22
 -- : BFD_RELOC_SPARC_WDISP16
 -- : BFD_RELOC_SPARC_WDISP19
 -- : BFD_RELOC_SPARC_7
 -- : BFD_RELOC_SPARC_6
 -- : BFD_RELOC_SPARC_5
 -- : BFD_RELOC_SPARC_DISP64
 -- : BFD_RELOC_SPARC_PLT32
 -- : BFD_RELOC_SPARC_PLT64
 -- : BFD_RELOC_SPARC_HIX22
 -- : BFD_RELOC_SPARC_LOX10
 -- : BFD_RELOC_SPARC_H44
 -- : BFD_RELOC_SPARC_M44
 -- : BFD_RELOC_SPARC_L44
 -- : BFD_RELOC_SPARC_REGISTER
 -- : BFD_RELOC_SPARC_H34
 -- : BFD_RELOC_SPARC_SIZE32
 -- : BFD_RELOC_SPARC_SIZE64
 -- : BFD_RELOC_SPARC_WDISP10
     SPARC64 relocations
 -- : BFD_RELOC_SPARC_REV32
     SPARC little endian relocation
 -- : BFD_RELOC_SPARC_TLS_GD_HI22
 -- : BFD_RELOC_SPARC_TLS_GD_LO10
 -- : BFD_RELOC_SPARC_TLS_GD_ADD
 -- : BFD_RELOC_SPARC_TLS_GD_CALL
 -- : BFD_RELOC_SPARC_TLS_LDM_HI22
 -- : BFD_RELOC_SPARC_TLS_LDM_LO10
 -- : BFD_RELOC_SPARC_TLS_LDM_ADD
 -- : BFD_RELOC_SPARC_TLS_LDM_CALL
 -- : BFD_RELOC_SPARC_TLS_LDO_HIX22
 -- : BFD_RELOC_SPARC_TLS_LDO_LOX10
 -- : BFD_RELOC_SPARC_TLS_LDO_ADD
 -- : BFD_RELOC_SPARC_TLS_IE_HI22
 -- : BFD_RELOC_SPARC_TLS_IE_LO10
 -- : BFD_RELOC_SPARC_TLS_IE_LD
 -- : BFD_RELOC_SPARC_TLS_IE_LDX
 -- : BFD_RELOC_SPARC_TLS_IE_ADD
 -- : BFD_RELOC_SPARC_TLS_LE_HIX22
 -- : BFD_RELOC_SPARC_TLS_LE_LOX10
 -- : BFD_RELOC_SPARC_TLS_DTPMOD32
 -- : BFD_RELOC_SPARC_TLS_DTPMOD64
 -- : BFD_RELOC_SPARC_TLS_DTPOFF32
 -- : BFD_RELOC_SPARC_TLS_DTPOFF64
 -- : BFD_RELOC_SPARC_TLS_TPOFF32
 -- : BFD_RELOC_SPARC_TLS_TPOFF64
     SPARC TLS relocations
 -- : BFD_RELOC_SPU_IMM7
 -- : BFD_RELOC_SPU_IMM8
 -- : BFD_RELOC_SPU_IMM10
 -- : BFD_RELOC_SPU_IMM10W
 -- : BFD_RELOC_SPU_IMM16
 -- : BFD_RELOC_SPU_IMM16W
 -- : BFD_RELOC_SPU_IMM18
 -- : BFD_RELOC_SPU_PCREL9a
 -- : BFD_RELOC_SPU_PCREL9b
 -- : BFD_RELOC_SPU_PCREL16
 -- : BFD_RELOC_SPU_LO16
 -- : BFD_RELOC_SPU_HI16
 -- : BFD_RELOC_SPU_PPU32
 -- : BFD_RELOC_SPU_PPU64
 -- : BFD_RELOC_SPU_ADD_PIC
     SPU Relocations.
 -- : BFD_RELOC_ALPHA_GPDISP_HI16
     Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
     "addend" in some special way.  For GPDISP_HI16 ("gpdisp")
     relocations, the symbol is ignored when writing; when reading, it
     will be the absolute section symbol.  The addend is the
     displacement in bytes of the "lda" instruction from the "ldah"
     instruction (which is at the address of this reloc).
 -- : BFD_RELOC_ALPHA_GPDISP_LO16
     For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
     with GPDISP_HI16 relocs.  The addend is ignored when writing the
     relocations out, and is filled in with the file's GP value on
     reading, for convenience.
 -- : BFD_RELOC_ALPHA_GPDISP
     The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
     relocation except that there is no accompanying GPDISP_LO16
     relocation.
 -- : BFD_RELOC_ALPHA_LITERAL
 -- : BFD_RELOC_ALPHA_ELF_LITERAL
 -- : BFD_RELOC_ALPHA_LITUSE
     The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
     the assembler turns it into a LDQ instruction to load the address
     of the symbol, and then fills in a register in the real
     instruction.

     The LITERAL reloc, at the LDQ instruction, refers to the .lita
     section symbol.  The addend is ignored when writing, but is filled
     in with the file's GP value on reading, for convenience, as with
     the GPDISP_LO16 reloc.

     The ELF_LITERAL reloc is somewhere between 16_GOTOFF and
     GPDISP_LO16.  It should refer to the symbol to be referenced, as
     with 16_GOTOFF, but it generates output not based on the position
     within the .got section, but relative to the GP value chosen for
     the file during the final link stage.

     The LITUSE reloc, on the instruction using the loaded address,
     gives information to the linker that it might be able to use to
     optimize away some literal section references.  The symbol is
     ignored (read as the absolute section symbol), and the "addend"
     indicates the type of instruction using the register: 1 - "memory"
     fmt insn 2 - byte-manipulation (byte offset reg) 3 - jsr (target of
     branch)
 -- : BFD_RELOC_ALPHA_HINT
     The HINT relocation indicates a value that should be filled into
     the "hint" field of a jmp/jsr/ret instruction, for possible branch-
     prediction logic which may be provided on some processors.
 -- : BFD_RELOC_ALPHA_LINKAGE
     The LINKAGE relocation outputs a linkage pair in the object file,
     which is filled by the linker.
 -- : BFD_RELOC_ALPHA_CODEADDR
     The CODEADDR relocation outputs a STO_CA in the object file, which
     is filled by the linker.
 -- : BFD_RELOC_ALPHA_GPREL_HI16
 -- : BFD_RELOC_ALPHA_GPREL_LO16
     The GPREL_HI/LO relocations together form a 32-bit offset from the
     GP register.
 -- : BFD_RELOC_ALPHA_BRSGP
     Like BFD_RELOC_23_PCREL_S2, except that the source and target must
     share a common GP, and the target address is adjusted for
     STO_ALPHA_STD_GPLOAD.
 -- : BFD_RELOC_ALPHA_NOP
     The NOP relocation outputs a NOP if the longword displacement
     between two procedure entry points is < 2^21.
 -- : BFD_RELOC_ALPHA_BSR
     The BSR relocation outputs a BSR if the longword displacement
     between two procedure entry points is < 2^21.
 -- : BFD_RELOC_ALPHA_LDA
     The LDA relocation outputs a LDA if the longword displacement
     between two procedure entry points is < 2^16.
 -- : BFD_RELOC_ALPHA_BOH
     The BOH relocation outputs a BSR if the longword displacement
     between two procedure entry points is < 2^21, or else a hint.
 -- : BFD_RELOC_ALPHA_TLSGD
 -- : BFD_RELOC_ALPHA_TLSLDM
 -- : BFD_RELOC_ALPHA_DTPMOD64
 -- : BFD_RELOC_ALPHA_GOTDTPREL16
 -- : BFD_RELOC_ALPHA_DTPREL64
 -- : BFD_RELOC_ALPHA_DTPREL_HI16
 -- : BFD_RELOC_ALPHA_DTPREL_LO16
 -- : BFD_RELOC_ALPHA_DTPREL16
 -- : BFD_RELOC_ALPHA_GOTTPREL16
 -- : BFD_RELOC_ALPHA_TPREL64
 -- : BFD_RELOC_ALPHA_TPREL_HI16
 -- : BFD_RELOC_ALPHA_TPREL_LO16
 -- : BFD_RELOC_ALPHA_TPREL16
     Alpha thread-local storage relocations.
 -- : BFD_RELOC_MIPS_JMP
 -- : BFD_RELOC_MICROMIPS_JMP
     The MIPS jump instruction.
 -- : BFD_RELOC_MIPS16_JMP
     The MIPS16 jump instruction.
 -- : BFD_RELOC_MIPS16_GPREL
     MIPS16 GP relative reloc.
 -- : BFD_RELOC_HI16
     High 16 bits of 32-bit value; simple reloc.
 -- : BFD_RELOC_HI16_S
     High 16 bits of 32-bit value but the low 16 bits will be sign
     extended and added to form the final result.  If the low 16 bits
     form a negative number, we need to add one to the high value to
     compensate for the borrow when the low bits are added.
 -- : BFD_RELOC_LO16
     Low 16 bits.
 -- : BFD_RELOC_HI16_PCREL
     High 16 bits of 32-bit pc-relative value
 -- : BFD_RELOC_HI16_S_PCREL
     High 16 bits of 32-bit pc-relative value, adjusted
 -- : BFD_RELOC_LO16_PCREL
     Low 16 bits of pc-relative value
 -- : BFD_RELOC_MIPS16_GOT16
 -- : BFD_RELOC_MIPS16_CALL16
     Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
     16-bit immediate fields
 -- : BFD_RELOC_MIPS16_HI16
     MIPS16 high 16 bits of 32-bit value.
 -- : BFD_RELOC_MIPS16_HI16_S
     MIPS16 high 16 bits of 32-bit value but the low 16 bits will be
     sign extended and added to form the final result.  If the low 16
     bits form a negative number, we need to add one to the high value
     to compensate for the borrow when the low bits are added.
 -- : BFD_RELOC_MIPS16_LO16
     MIPS16 low 16 bits.
 -- : BFD_RELOC_MIPS16_TLS_GD
 -- : BFD_RELOC_MIPS16_TLS_LDM
 -- : BFD_RELOC_MIPS16_TLS_DTPREL_HI16
 -- : BFD_RELOC_MIPS16_TLS_DTPREL_LO16
 -- : BFD_RELOC_MIPS16_TLS_GOTTPREL
 -- : BFD_RELOC_MIPS16_TLS_TPREL_HI16
 -- : BFD_RELOC_MIPS16_TLS_TPREL_LO16
     MIPS16 TLS relocations
 -- : BFD_RELOC_MIPS_LITERAL
 -- : BFD_RELOC_MICROMIPS_LITERAL
     Relocation against a MIPS literal section.
 -- : BFD_RELOC_MICROMIPS_7_PCREL_S1
 -- : BFD_RELOC_MICROMIPS_10_PCREL_S1
 -- : BFD_RELOC_MICROMIPS_16_PCREL_S1
     microMIPS PC-relative relocations.
 -- : BFD_RELOC_MICROMIPS_GPREL16
 -- : BFD_RELOC_MICROMIPS_HI16
 -- : BFD_RELOC_MICROMIPS_HI16_S
 -- : BFD_RELOC_MICROMIPS_LO16
     microMIPS versions of generic BFD relocs.
 -- : BFD_RELOC_MIPS_GOT16
 -- : BFD_RELOC_MICROMIPS_GOT16
 -- : BFD_RELOC_MIPS_CALL16
 -- : BFD_RELOC_MICROMIPS_CALL16
 -- : BFD_RELOC_MIPS_GOT_HI16
 -- : BFD_RELOC_MICROMIPS_GOT_HI16
 -- : BFD_RELOC_MIPS_GOT_LO16
 -- : BFD_RELOC_MICROMIPS_GOT_LO16
 -- : BFD_RELOC_MIPS_CALL_HI16
 -- : BFD_RELOC_MICROMIPS_CALL_HI16
 -- : BFD_RELOC_MIPS_CALL_LO16
 -- : BFD_RELOC_MICROMIPS_CALL_LO16
 -- : BFD_RELOC_MIPS_SUB
 -- : BFD_RELOC_MICROMIPS_SUB
 -- : BFD_RELOC_MIPS_GOT_PAGE
 -- : BFD_RELOC_MICROMIPS_GOT_PAGE
 -- : BFD_RELOC_MIPS_GOT_OFST
 -- : BFD_RELOC_MICROMIPS_GOT_OFST
 -- : BFD_RELOC_MIPS_GOT_DISP
 -- : BFD_RELOC_MICROMIPS_GOT_DISP
 -- : BFD_RELOC_MIPS_SHIFT5
 -- : BFD_RELOC_MIPS_SHIFT6
 -- : BFD_RELOC_MIPS_INSERT_A
 -- : BFD_RELOC_MIPS_INSERT_B
 -- : BFD_RELOC_MIPS_DELETE
 -- : BFD_RELOC_MIPS_HIGHEST
 -- : BFD_RELOC_MICROMIPS_HIGHEST
 -- : BFD_RELOC_MIPS_HIGHER
 -- : BFD_RELOC_MICROMIPS_HIGHER
 -- : BFD_RELOC_MIPS_SCN_DISP
 -- : BFD_RELOC_MICROMIPS_SCN_DISP
 -- : BFD_RELOC_MIPS_REL16
 -- : BFD_RELOC_MIPS_RELGOT
 -- : BFD_RELOC_MIPS_JALR
 -- : BFD_RELOC_MICROMIPS_JALR
 -- : BFD_RELOC_MIPS_TLS_DTPMOD32
 -- : BFD_RELOC_MIPS_TLS_DTPREL32
 -- : BFD_RELOC_MIPS_TLS_DTPMOD64
 -- : BFD_RELOC_MIPS_TLS_DTPREL64
 -- : BFD_RELOC_MIPS_TLS_GD
 -- : BFD_RELOC_MICROMIPS_TLS_GD
 -- : BFD_RELOC_MIPS_TLS_LDM
 -- : BFD_RELOC_MICROMIPS_TLS_LDM
 -- : BFD_RELOC_MIPS_TLS_DTPREL_HI16
 -- : BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16
 -- : BFD_RELOC_MIPS_TLS_DTPREL_LO16
 -- : BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16
 -- : BFD_RELOC_MIPS_TLS_GOTTPREL
 -- : BFD_RELOC_MICROMIPS_TLS_GOTTPREL
 -- : BFD_RELOC_MIPS_TLS_TPREL32
 -- : BFD_RELOC_MIPS_TLS_TPREL64
 -- : BFD_RELOC_MIPS_TLS_TPREL_HI16
 -- : BFD_RELOC_MICROMIPS_TLS_TPREL_HI16
 -- : BFD_RELOC_MIPS_TLS_TPREL_LO16
 -- : BFD_RELOC_MICROMIPS_TLS_TPREL_LO16
 -- : BFD_RELOC_MIPS_EH
     MIPS ELF relocations.
 -- : BFD_RELOC_MIPS_COPY
 -- : BFD_RELOC_MIPS_JUMP_SLOT
     MIPS ELF relocations (VxWorks and PLT extensions).
 -- : BFD_RELOC_MOXIE_10_PCREL
     Moxie ELF relocations.
 -- : BFD_RELOC_FRV_LABEL16
 -- : BFD_RELOC_FRV_LABEL24
 -- : BFD_RELOC_FRV_LO16
 -- : BFD_RELOC_FRV_HI16
 -- : BFD_RELOC_FRV_GPREL12
 -- : BFD_RELOC_FRV_GPRELU12
 -- : BFD_RELOC_FRV_GPREL32
 -- : BFD_RELOC_FRV_GPRELHI
 -- : BFD_RELOC_FRV_GPRELLO
 -- : BFD_RELOC_FRV_GOT12
 -- : BFD_RELOC_FRV_GOTHI
 -- : BFD_RELOC_FRV_GOTLO
 -- : BFD_RELOC_FRV_FUNCDESC
 -- : BFD_RELOC_FRV_FUNCDESC_GOT12
 -- : BFD_RELOC_FRV_FUNCDESC_GOTHI
 -- : BFD_RELOC_FRV_FUNCDESC_GOTLO
 -- : BFD_RELOC_FRV_FUNCDESC_VALUE
 -- : BFD_RELOC_FRV_FUNCDESC_GOTOFF12
 -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
 -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
 -- : BFD_RELOC_FRV_GOTOFF12
 -- : BFD_RELOC_FRV_GOTOFFHI
 -- : BFD_RELOC_FRV_GOTOFFLO
 -- : BFD_RELOC_FRV_GETTLSOFF
 -- : BFD_RELOC_FRV_TLSDESC_VALUE
 -- : BFD_RELOC_FRV_GOTTLSDESC12
 -- : BFD_RELOC_FRV_GOTTLSDESCHI
 -- : BFD_RELOC_FRV_GOTTLSDESCLO
 -- : BFD_RELOC_FRV_TLSMOFF12
 -- : BFD_RELOC_FRV_TLSMOFFHI
 -- : BFD_RELOC_FRV_TLSMOFFLO
 -- : BFD_RELOC_FRV_GOTTLSOFF12
 -- : BFD_RELOC_FRV_GOTTLSOFFHI
 -- : BFD_RELOC_FRV_GOTTLSOFFLO
 -- : BFD_RELOC_FRV_TLSOFF
 -- : BFD_RELOC_FRV_TLSDESC_RELAX
 -- : BFD_RELOC_FRV_GETTLSOFF_RELAX
 -- : BFD_RELOC_FRV_TLSOFF_RELAX
 -- : BFD_RELOC_FRV_TLSMOFF
     Fujitsu Frv Relocations.
 -- : BFD_RELOC_MN10300_GOTOFF24
     This is a 24bit GOT-relative reloc for the mn10300.
 -- : BFD_RELOC_MN10300_GOT32
     This is a 32bit GOT-relative reloc for the mn10300, offset by two
     bytes in the instruction.
 -- : BFD_RELOC_MN10300_GOT24
     This is a 24bit GOT-relative reloc for the mn10300, offset by two
     bytes in the instruction.
 -- : BFD_RELOC_MN10300_GOT16
     This is a 16bit GOT-relative reloc for the mn10300, offset by two
     bytes in the instruction.
 -- : BFD_RELOC_MN10300_COPY
     Copy symbol at runtime.
 -- : BFD_RELOC_MN10300_GLOB_DAT
     Create GOT entry.
 -- : BFD_RELOC_MN10300_JMP_SLOT
     Create PLT entry.
 -- : BFD_RELOC_MN10300_RELATIVE
     Adjust by program base.
 -- : BFD_RELOC_MN10300_SYM_DIFF
     Together with another reloc targeted at the same location, allows
     for a value that is the difference of two symbols in the same
     section.
 -- : BFD_RELOC_MN10300_ALIGN
     The addend of this reloc is an alignment power that must be
     honoured at the offset's location, regardless of linker relaxation.
 -- : BFD_RELOC_MN10300_TLS_GD
 -- : BFD_RELOC_MN10300_TLS_LD
 -- : BFD_RELOC_MN10300_TLS_LDO
 -- : BFD_RELOC_MN10300_TLS_GOTIE
 -- : BFD_RELOC_MN10300_TLS_IE
 -- : BFD_RELOC_MN10300_TLS_LE
 -- : BFD_RELOC_MN10300_TLS_DTPMOD
 -- : BFD_RELOC_MN10300_TLS_DTPOFF
 -- : BFD_RELOC_MN10300_TLS_TPOFF
     Various TLS-related relocations.
 -- : BFD_RELOC_MN10300_32_PCREL
     This is a 32bit pcrel reloc for the mn10300, offset by two bytes in
     the instruction.
 -- : BFD_RELOC_MN10300_16_PCREL
     This is a 16bit pcrel reloc for the mn10300, offset by two bytes in
     the instruction.
 -- : BFD_RELOC_386_GOT32
 -- : BFD_RELOC_386_PLT32
 -- : BFD_RELOC_386_COPY
 -- : BFD_RELOC_386_GLOB_DAT
 -- : BFD_RELOC_386_JUMP_SLOT
 -- : BFD_RELOC_386_RELATIVE
 -- : BFD_RELOC_386_GOTOFF
 -- : BFD_RELOC_386_GOTPC
 -- : BFD_RELOC_386_TLS_TPOFF
 -- : BFD_RELOC_386_TLS_IE
 -- : BFD_RELOC_386_TLS_GOTIE
 -- : BFD_RELOC_386_TLS_LE
 -- : BFD_RELOC_386_TLS_GD
 -- : BFD_RELOC_386_TLS_LDM
 -- : BFD_RELOC_386_TLS_LDO_32
 -- : BFD_RELOC_386_TLS_IE_32
 -- : BFD_RELOC_386_TLS_LE_32
 -- : BFD_RELOC_386_TLS_DTPMOD32
 -- : BFD_RELOC_386_TLS_DTPOFF32
 -- : BFD_RELOC_386_TLS_TPOFF32
 -- : BFD_RELOC_386_TLS_GOTDESC
 -- : BFD_RELOC_386_TLS_DESC_CALL
 -- : BFD_RELOC_386_TLS_DESC
 -- : BFD_RELOC_386_IRELATIVE
     i386/elf relocations
 -- : BFD_RELOC_X86_64_GOT32
 -- : BFD_RELOC_X86_64_PLT32
 -- : BFD_RELOC_X86_64_COPY
 -- : BFD_RELOC_X86_64_GLOB_DAT
 -- : BFD_RELOC_X86_64_JUMP_SLOT
 -- : BFD_RELOC_X86_64_RELATIVE
 -- : BFD_RELOC_X86_64_GOTPCREL
 -- : BFD_RELOC_X86_64_32S
 -- : BFD_RELOC_X86_64_DTPMOD64
 -- : BFD_RELOC_X86_64_DTPOFF64
 -- : BFD_RELOC_X86_64_TPOFF64
 -- : BFD_RELOC_X86_64_TLSGD
 -- : BFD_RELOC_X86_64_TLSLD
 -- : BFD_RELOC_X86_64_DTPOFF32
 -- : BFD_RELOC_X86_64_GOTTPOFF
 -- : BFD_RELOC_X86_64_TPOFF32
 -- : BFD_RELOC_X86_64_GOTOFF64
 -- : BFD_RELOC_X86_64_GOTPC32
 -- : BFD_RELOC_X86_64_GOT64
 -- : BFD_RELOC_X86_64_GOTPCREL64
 -- : BFD_RELOC_X86_64_GOTPC64
 -- : BFD_RELOC_X86_64_GOTPLT64
 -- : BFD_RELOC_X86_64_PLTOFF64
 -- : BFD_RELOC_X86_64_GOTPC32_TLSDESC
 -- : BFD_RELOC_X86_64_TLSDESC_CALL
 -- : BFD_RELOC_X86_64_TLSDESC
 -- : BFD_RELOC_X86_64_IRELATIVE
 -- : BFD_RELOC_X86_64_PC32_BND
 -- : BFD_RELOC_X86_64_PLT32_BND
     x86-64/elf relocations
 -- : BFD_RELOC_NS32K_IMM_8
 -- : BFD_RELOC_NS32K_IMM_16
 -- : BFD_RELOC_NS32K_IMM_32
 -- : BFD_RELOC_NS32K_IMM_8_PCREL
 -- : BFD_RELOC_NS32K_IMM_16_PCREL
 -- : BFD_RELOC_NS32K_IMM_32_PCREL
 -- : BFD_RELOC_NS32K_DISP_8
 -- : BFD_RELOC_NS32K_DISP_16
 -- : BFD_RELOC_NS32K_DISP_32
 -- : BFD_RELOC_NS32K_DISP_8_PCREL
 -- : BFD_RELOC_NS32K_DISP_16_PCREL
 -- : BFD_RELOC_NS32K_DISP_32_PCREL
     ns32k relocations
 -- : BFD_RELOC_PDP11_DISP_8_PCREL
 -- : BFD_RELOC_PDP11_DISP_6_PCREL
     PDP11 relocations
 -- : BFD_RELOC_PJ_CODE_HI16
 -- : BFD_RELOC_PJ_CODE_LO16
 -- : BFD_RELOC_PJ_CODE_DIR16
 -- : BFD_RELOC_PJ_CODE_DIR32
 -- : BFD_RELOC_PJ_CODE_REL16
 -- : BFD_RELOC_PJ_CODE_REL32
     Picojava relocs.  Not all of these appear in object files.
 -- : BFD_RELOC_PPC_B26
 -- : BFD_RELOC_PPC_BA26
 -- : BFD_RELOC_PPC_TOC16
 -- : BFD_RELOC_PPC_B16
 -- : BFD_RELOC_PPC_B16_BRTAKEN
 -- : BFD_RELOC_PPC_B16_BRNTAKEN
 -- : BFD_RELOC_PPC_BA16
 -- : BFD_RELOC_PPC_BA16_BRTAKEN
 -- : BFD_RELOC_PPC_BA16_BRNTAKEN
 -- : BFD_RELOC_PPC_COPY
 -- : BFD_RELOC_PPC_GLOB_DAT
 -- : BFD_RELOC_PPC_JMP_SLOT
 -- : BFD_RELOC_PPC_RELATIVE
 -- : BFD_RELOC_PPC_LOCAL24PC
 -- : BFD_RELOC_PPC_EMB_NADDR32
 -- : BFD_RELOC_PPC_EMB_NADDR16
 -- : BFD_RELOC_PPC_EMB_NADDR16_LO
 -- : BFD_RELOC_PPC_EMB_NADDR16_HI
 -- : BFD_RELOC_PPC_EMB_NADDR16_HA
 -- : BFD_RELOC_PPC_EMB_SDAI16
 -- : BFD_RELOC_PPC_EMB_SDA2I16
 -- : BFD_RELOC_PPC_EMB_SDA2REL
 -- : BFD_RELOC_PPC_EMB_SDA21
 -- : BFD_RELOC_PPC_EMB_MRKREF
 -- : BFD_RELOC_PPC_EMB_RELSEC16
 -- : BFD_RELOC_PPC_EMB_RELST_LO
 -- : BFD_RELOC_PPC_EMB_RELST_HI
 -- : BFD_RELOC_PPC_EMB_RELST_HA
 -- : BFD_RELOC_PPC_EMB_BIT_FLD
 -- : BFD_RELOC_PPC_EMB_RELSDA
 -- : BFD_RELOC_PPC_VLE_REL8
 -- : BFD_RELOC_PPC_VLE_REL15
 -- : BFD_RELOC_PPC_VLE_REL24
 -- : BFD_RELOC_PPC_VLE_LO16A
 -- : BFD_RELOC_PPC_VLE_LO16D
 -- : BFD_RELOC_PPC_VLE_HI16A
 -- : BFD_RELOC_PPC_VLE_HI16D
 -- : BFD_RELOC_PPC_VLE_HA16A
 -- : BFD_RELOC_PPC_VLE_HA16D
 -- : BFD_RELOC_PPC_VLE_SDA21
 -- : BFD_RELOC_PPC_VLE_SDA21_LO
 -- : BFD_RELOC_PPC_VLE_SDAREL_LO16A
 -- : BFD_RELOC_PPC_VLE_SDAREL_LO16D
 -- : BFD_RELOC_PPC_VLE_SDAREL_HI16A
 -- : BFD_RELOC_PPC_VLE_SDAREL_HI16D
 -- : BFD_RELOC_PPC_VLE_SDAREL_HA16A
 -- : BFD_RELOC_PPC_VLE_SDAREL_HA16D
 -- : BFD_RELOC_PPC64_HIGHER
 -- : BFD_RELOC_PPC64_HIGHER_S
 -- : BFD_RELOC_PPC64_HIGHEST
 -- : BFD_RELOC_PPC64_HIGHEST_S
 -- : BFD_RELOC_PPC64_TOC16_LO
 -- : BFD_RELOC_PPC64_TOC16_HI
 -- : BFD_RELOC_PPC64_TOC16_HA
 -- : BFD_RELOC_PPC64_TOC
 -- : BFD_RELOC_PPC64_PLTGOT16
 -- : BFD_RELOC_PPC64_PLTGOT16_LO
 -- : BFD_RELOC_PPC64_PLTGOT16_HI
 -- : BFD_RELOC_PPC64_PLTGOT16_HA
 -- : BFD_RELOC_PPC64_ADDR16_DS
 -- : BFD_RELOC_PPC64_ADDR16_LO_DS
 -- : BFD_RELOC_PPC64_GOT16_DS
 -- : BFD_RELOC_PPC64_GOT16_LO_DS
 -- : BFD_RELOC_PPC64_PLT16_LO_DS
 -- : BFD_RELOC_PPC64_SECTOFF_DS
 -- : BFD_RELOC_PPC64_SECTOFF_LO_DS
 -- : BFD_RELOC_PPC64_TOC16_DS
 -- : BFD_RELOC_PPC64_TOC16_LO_DS
 -- : BFD_RELOC_PPC64_PLTGOT16_DS
 -- : BFD_RELOC_PPC64_PLTGOT16_LO_DS
 -- : BFD_RELOC_PPC64_ADDR16_HIGH
 -- : BFD_RELOC_PPC64_ADDR16_HIGHA
 -- : BFD_RELOC_PPC64_ADDR64_LOCAL
     Power(rs6000) and PowerPC relocations.
 -- : BFD_RELOC_PPC_TLS
 -- : BFD_RELOC_PPC_TLSGD
 -- : BFD_RELOC_PPC_TLSLD
 -- : BFD_RELOC_PPC_DTPMOD
 -- : BFD_RELOC_PPC_TPREL16
 -- : BFD_RELOC_PPC_TPREL16_LO
 -- : BFD_RELOC_PPC_TPREL16_HI
 -- : BFD_RELOC_PPC_TPREL16_HA
 -- : BFD_RELOC_PPC_TPREL
 -- : BFD_RELOC_PPC_DTPREL16
 -- : BFD_RELOC_PPC_DTPREL16_LO
 -- : BFD_RELOC_PPC_DTPREL16_HI
 -- : BFD_RELOC_PPC_DTPREL16_HA
 -- : BFD_RELOC_PPC_DTPREL
 -- : BFD_RELOC_PPC_GOT_TLSGD16
 -- : BFD_RELOC_PPC_GOT_TLSGD16_LO
 -- : BFD_RELOC_PPC_GOT_TLSGD16_HI
 -- : BFD_RELOC_PPC_GOT_TLSGD16_HA
 -- : BFD_RELOC_PPC_GOT_TLSLD16
 -- : BFD_RELOC_PPC_GOT_TLSLD16_LO
 -- : BFD_RELOC_PPC_GOT_TLSLD16_HI
 -- : BFD_RELOC_PPC_GOT_TLSLD16_HA
 -- : BFD_RELOC_PPC_GOT_TPREL16
 -- : BFD_RELOC_PPC_GOT_TPREL16_LO
 -- : BFD_RELOC_PPC_GOT_TPREL16_HI
 -- : BFD_RELOC_PPC_GOT_TPREL16_HA
 -- : BFD_RELOC_PPC_GOT_DTPREL16
 -- : BFD_RELOC_PPC_GOT_DTPREL16_LO
 -- : BFD_RELOC_PPC_GOT_DTPREL16_HI
 -- : BFD_RELOC_PPC_GOT_DTPREL16_HA
 -- : BFD_RELOC_PPC64_TPREL16_DS
 -- : BFD_RELOC_PPC64_TPREL16_LO_DS
 -- : BFD_RELOC_PPC64_TPREL16_HIGHER
 -- : BFD_RELOC_PPC64_TPREL16_HIGHERA
 -- : BFD_RELOC_PPC64_TPREL16_HIGHEST
 -- : BFD_RELOC_PPC64_TPREL16_HIGHESTA
 -- : BFD_RELOC_PPC64_DTPREL16_DS
 -- : BFD_RELOC_PPC64_DTPREL16_LO_DS
 -- : BFD_RELOC_PPC64_DTPREL16_HIGHER
 -- : BFD_RELOC_PPC64_DTPREL16_HIGHERA
 -- : BFD_RELOC_PPC64_DTPREL16_HIGHEST
 -- : BFD_RELOC_PPC64_DTPREL16_HIGHESTA
 -- : BFD_RELOC_PPC64_TPREL16_HIGH
 -- : BFD_RELOC_PPC64_TPREL16_HIGHA
 -- : BFD_RELOC_PPC64_DTPREL16_HIGH
 -- : BFD_RELOC_PPC64_DTPREL16_HIGHA
     PowerPC and PowerPC64 thread-local storage relocations.
 -- : BFD_RELOC_I370_D12
     IBM 370/390 relocations
 -- : BFD_RELOC_CTOR
     The type of reloc used to build a constructor table - at the moment
     probably a 32 bit wide absolute relocation, but the target can
     choose.  It generally does map to one of the other relocation
     types.
 -- : BFD_RELOC_ARM_PCREL_BRANCH
     ARM 26 bit pc-relative branch.  The lowest two bits must be zero
     and are not stored in the instruction.
 -- : BFD_RELOC_ARM_PCREL_BLX
     ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
     not stored in the instruction.  The 2nd lowest bit comes from a 1
     bit field in the instruction.
 -- : BFD_RELOC_THUMB_PCREL_BLX
     Thumb 22 bit pc-relative branch.  The lowest bit must be zero and
     is not stored in the instruction.  The 2nd lowest bit comes from a
     1 bit field in the instruction.
 -- : BFD_RELOC_ARM_PCREL_CALL
     ARM 26-bit pc-relative branch for an unconditional BL or BLX
     instruction.
 -- : BFD_RELOC_ARM_PCREL_JUMP
     ARM 26-bit pc-relative branch for B or conditional BL instruction.
 -- : BFD_RELOC_THUMB_PCREL_BRANCH7
 -- : BFD_RELOC_THUMB_PCREL_BRANCH9
 -- : BFD_RELOC_THUMB_PCREL_BRANCH12
 -- : BFD_RELOC_THUMB_PCREL_BRANCH20
 -- : BFD_RELOC_THUMB_PCREL_BRANCH23
 -- : BFD_RELOC_THUMB_PCREL_BRANCH25
     Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.  The
     lowest bit must be zero and is not stored in the instruction.  Note
     that the corresponding ELF R_ARM_THM_JUMPnn constant has an "nn"
     one smaller in all cases.  Note further that BRANCH23 corresponds
     to R_ARM_THM_CALL.
 -- : BFD_RELOC_ARM_OFFSET_IMM
     12-bit immediate offset, used in ARM-format ldr and str
     instructions.
 -- : BFD_RELOC_ARM_THUMB_OFFSET
     5-bit immediate offset, used in Thumb-format ldr and str
     instructions.
 -- : BFD_RELOC_ARM_TARGET1
     Pc-relative or absolute relocation depending on target.  Used for
     entries in .init_array sections.
 -- : BFD_RELOC_ARM_ROSEGREL32
     Read-only segment base relative address.
 -- : BFD_RELOC_ARM_SBREL32
     Data segment base relative address.
 -- : BFD_RELOC_ARM_TARGET2
     This reloc is used for references to RTTI data from exception
     handling tables.  The actual definition depends on the target.  It
     may be a pc-relative or some form of GOT-indirect relocation.
 -- : BFD_RELOC_ARM_PREL31
     31-bit PC relative address.
 -- : BFD_RELOC_ARM_MOVW
 -- : BFD_RELOC_ARM_MOVT
 -- : BFD_RELOC_ARM_MOVW_PCREL
 -- : BFD_RELOC_ARM_MOVT_PCREL
 -- : BFD_RELOC_ARM_THUMB_MOVW
 -- : BFD_RELOC_ARM_THUMB_MOVT
 -- : BFD_RELOC_ARM_THUMB_MOVW_PCREL
 -- : BFD_RELOC_ARM_THUMB_MOVT_PCREL
     Low and High halfword relocations for MOVW and MOVT instructions.
 -- : BFD_RELOC_ARM_JUMP_SLOT
 -- : BFD_RELOC_ARM_GLOB_DAT
 -- : BFD_RELOC_ARM_GOT32
 -- : BFD_RELOC_ARM_PLT32
 -- : BFD_RELOC_ARM_RELATIVE
 -- : BFD_RELOC_ARM_GOTOFF
 -- : BFD_RELOC_ARM_GOTPC
 -- : BFD_RELOC_ARM_GOT_PREL
     Relocations for setting up GOTs and PLTs for shared libraries.
 -- : BFD_RELOC_ARM_TLS_GD32
 -- : BFD_RELOC_ARM_TLS_LDO32
 -- : BFD_RELOC_ARM_TLS_LDM32
 -- : BFD_RELOC_ARM_TLS_DTPOFF32
 -- : BFD_RELOC_ARM_TLS_DTPMOD32
 -- : BFD_RELOC_ARM_TLS_TPOFF32
 -- : BFD_RELOC_ARM_TLS_IE32
 -- : BFD_RELOC_ARM_TLS_LE32
 -- : BFD_RELOC_ARM_TLS_GOTDESC
 -- : BFD_RELOC_ARM_TLS_CALL
 -- : BFD_RELOC_ARM_THM_TLS_CALL
 -- : BFD_RELOC_ARM_TLS_DESCSEQ
 -- : BFD_RELOC_ARM_THM_TLS_DESCSEQ
 -- : BFD_RELOC_ARM_TLS_DESC
     ARM thread-local storage relocations.
 -- : BFD_RELOC_ARM_ALU_PC_G0_NC
 -- : BFD_RELOC_ARM_ALU_PC_G0
 -- : BFD_RELOC_ARM_ALU_PC_G1_NC
 -- : BFD_RELOC_ARM_ALU_PC_G1
 -- : BFD_RELOC_ARM_ALU_PC_G2
 -- : BFD_RELOC_ARM_LDR_PC_G0
 -- : BFD_RELOC_ARM_LDR_PC_G1
 -- : BFD_RELOC_ARM_LDR_PC_G2
 -- : BFD_RELOC_ARM_LDRS_PC_G0
 -- : BFD_RELOC_ARM_LDRS_PC_G1
 -- : BFD_RELOC_ARM_LDRS_PC_G2
 -- : BFD_RELOC_ARM_LDC_PC_G0
 -- : BFD_RELOC_ARM_LDC_PC_G1
 -- : BFD_RELOC_ARM_LDC_PC_G2
 -- : BFD_RELOC_ARM_ALU_SB_G0_NC
 -- : BFD_RELOC_ARM_ALU_SB_G0
 -- : BFD_RELOC_ARM_ALU_SB_G1_NC
 -- : BFD_RELOC_ARM_ALU_SB_G1
 -- : BFD_RELOC_ARM_ALU_SB_G2
 -- : BFD_RELOC_ARM_LDR_SB_G0
 -- : BFD_RELOC_ARM_LDR_SB_G1
 -- : BFD_RELOC_ARM_LDR_SB_G2
 -- : BFD_RELOC_ARM_LDRS_SB_G0
 -- : BFD_RELOC_ARM_LDRS_SB_G1
 -- : BFD_RELOC_ARM_LDRS_SB_G2
 -- : BFD_RELOC_ARM_LDC_SB_G0
 -- : BFD_RELOC_ARM_LDC_SB_G1
 -- : BFD_RELOC_ARM_LDC_SB_G2
     ARM group relocations.
 -- : BFD_RELOC_ARM_V4BX
     Annotation of BX instructions.
 -- : BFD_RELOC_ARM_IRELATIVE
     ARM support for STT_GNU_IFUNC.
 -- : BFD_RELOC_ARM_IMMEDIATE
 -- : BFD_RELOC_ARM_ADRL_IMMEDIATE
 -- : BFD_RELOC_ARM_T32_IMMEDIATE
 -- : BFD_RELOC_ARM_T32_ADD_IMM
 -- : BFD_RELOC_ARM_T32_IMM12
 -- : BFD_RELOC_ARM_T32_ADD_PC12
 -- : BFD_RELOC_ARM_SHIFT_IMM
 -- : BFD_RELOC_ARM_SMC
 -- : BFD_RELOC_ARM_HVC
 -- : BFD_RELOC_ARM_SWI
 -- : BFD_RELOC_ARM_MULTI
 -- : BFD_RELOC_ARM_CP_OFF_IMM
 -- : BFD_RELOC_ARM_CP_OFF_IMM_S2
 -- : BFD_RELOC_ARM_T32_CP_OFF_IMM
 -- : BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
 -- : BFD_RELOC_ARM_ADR_IMM
 -- : BFD_RELOC_ARM_LDR_IMM
 -- : BFD_RELOC_ARM_LITERAL
 -- : BFD_RELOC_ARM_IN_POOL
 -- : BFD_RELOC_ARM_OFFSET_IMM8
 -- : BFD_RELOC_ARM_T32_OFFSET_U8
 -- : BFD_RELOC_ARM_T32_OFFSET_IMM
 -- : BFD_RELOC_ARM_HWLITERAL
 -- : BFD_RELOC_ARM_THUMB_ADD
 -- : BFD_RELOC_ARM_THUMB_IMM
 -- : BFD_RELOC_ARM_THUMB_SHIFT
     These relocs are only used within the ARM assembler.  They are not
     (at present) written to any object files.
 -- : BFD_RELOC_SH_PCDISP8BY2
 -- : BFD_RELOC_SH_PCDISP12BY2
 -- : BFD_RELOC_SH_IMM3
 -- : BFD_RELOC_SH_IMM3U
 -- : BFD_RELOC_SH_DISP12
 -- : BFD_RELOC_SH_DISP12BY2
 -- : BFD_RELOC_SH_DISP12BY4
 -- : BFD_RELOC_SH_DISP12BY8
 -- : BFD_RELOC_SH_DISP20
 -- : BFD_RELOC_SH_DISP20BY8
 -- : BFD_RELOC_SH_IMM4
 -- : BFD_RELOC_SH_IMM4BY2
 -- : BFD_RELOC_SH_IMM4BY4
 -- : BFD_RELOC_SH_IMM8
 -- : BFD_RELOC_SH_IMM8BY2
 -- : BFD_RELOC_SH_IMM8BY4
 -- : BFD_RELOC_SH_PCRELIMM8BY2
 -- : BFD_RELOC_SH_PCRELIMM8BY4
 -- : BFD_RELOC_SH_SWITCH16
 -- : BFD_RELOC_SH_SWITCH32
 -- : BFD_RELOC_SH_USES
 -- : BFD_RELOC_SH_COUNT
 -- : BFD_RELOC_SH_ALIGN
 -- : BFD_RELOC_SH_CODE
 -- : BFD_RELOC_SH_DATA
 -- : BFD_RELOC_SH_LABEL
 -- : BFD_RELOC_SH_LOOP_START
 -- : BFD_RELOC_SH_LOOP_END
 -- : BFD_RELOC_SH_COPY
 -- : BFD_RELOC_SH_GLOB_DAT
 -- : BFD_RELOC_SH_JMP_SLOT
 -- : BFD_RELOC_SH_RELATIVE
 -- : BFD_RELOC_SH_GOTPC
 -- : BFD_RELOC_SH_GOT_LOW16
 -- : BFD_RELOC_SH_GOT_MEDLOW16
 -- : BFD_RELOC_SH_GOT_MEDHI16
 -- : BFD_RELOC_SH_GOT_HI16
 -- : BFD_RELOC_SH_GOTPLT_LOW16
 -- : BFD_RELOC_SH_GOTPLT_MEDLOW16
 -- : BFD_RELOC_SH_GOTPLT_MEDHI16
 -- : BFD_RELOC_SH_GOTPLT_HI16
 -- : BFD_RELOC_SH_PLT_LOW16
 -- : BFD_RELOC_SH_PLT_MEDLOW16
 -- : BFD_RELOC_SH_PLT_MEDHI16
 -- : BFD_RELOC_SH_PLT_HI16
 -- : BFD_RELOC_SH_GOTOFF_LOW16
 -- : BFD_RELOC_SH_GOTOFF_MEDLOW16
 -- : BFD_RELOC_SH_GOTOFF_MEDHI16
 -- : BFD_RELOC_SH_GOTOFF_HI16
 -- : BFD_RELOC_SH_GOTPC_LOW16
 -- : BFD_RELOC_SH_GOTPC_MEDLOW16
 -- : BFD_RELOC_SH_GOTPC_MEDHI16
 -- : BFD_RELOC_SH_GOTPC_HI16
 -- : BFD_RELOC_SH_COPY64
 -- : BFD_RELOC_SH_GLOB_DAT64
 -- : BFD_RELOC_SH_JMP_SLOT64
 -- : BFD_RELOC_SH_RELATIVE64
 -- : BFD_RELOC_SH_GOT10BY4
 -- : BFD_RELOC_SH_GOT10BY8
 -- : BFD_RELOC_SH_GOTPLT10BY4
 -- : BFD_RELOC_SH_GOTPLT10BY8
 -- : BFD_RELOC_SH_GOTPLT32
 -- : BFD_RELOC_SH_SHMEDIA_CODE
 -- : BFD_RELOC_SH_IMMU5
 -- : BFD_RELOC_SH_IMMS6
 -- : BFD_RELOC_SH_IMMS6BY32
 -- : BFD_RELOC_SH_IMMU6
 -- : BFD_RELOC_SH_IMMS10
 -- : BFD_RELOC_SH_IMMS10BY2
 -- : BFD_RELOC_SH_IMMS10BY4
 -- : BFD_RELOC_SH_IMMS10BY8
 -- : BFD_RELOC_SH_IMMS16
 -- : BFD_RELOC_SH_IMMU16
 -- : BFD_RELOC_SH_IMM_LOW16
 -- : BFD_RELOC_SH_IMM_LOW16_PCREL
 -- : BFD_RELOC_SH_IMM_MEDLOW16
 -- : BFD_RELOC_SH_IMM_MEDLOW16_PCREL
 -- : BFD_RELOC_SH_IMM_MEDHI16
 -- : BFD_RELOC_SH_IMM_MEDHI16_PCREL
 -- : BFD_RELOC_SH_IMM_HI16
 -- : BFD_RELOC_SH_IMM_HI16_PCREL
 -- : BFD_RELOC_SH_PT_16
 -- : BFD_RELOC_SH_TLS_GD_32
 -- : BFD_RELOC_SH_TLS_LD_32
 -- : BFD_RELOC_SH_TLS_LDO_32
 -- : BFD_RELOC_SH_TLS_IE_32
 -- : BFD_RELOC_SH_TLS_LE_32
 -- : BFD_RELOC_SH_TLS_DTPMOD32
 -- : BFD_RELOC_SH_TLS_DTPOFF32
 -- : BFD_RELOC_SH_TLS_TPOFF32
 -- : BFD_RELOC_SH_GOT20
 -- : BFD_RELOC_SH_GOTOFF20
 -- : BFD_RELOC_SH_GOTFUNCDESC
 -- : BFD_RELOC_SH_GOTFUNCDESC20
 -- : BFD_RELOC_SH_GOTOFFFUNCDESC
 -- : BFD_RELOC_SH_GOTOFFFUNCDESC20
 -- : BFD_RELOC_SH_FUNCDESC
     Renesas / SuperH SH relocs.  Not all of these appear in object
     files.
 -- : BFD_RELOC_ARC_B22_PCREL
     ARC Cores relocs.  ARC 22 bit pc-relative branch.  The lowest two
     bits must be zero and are not stored in the instruction.  The high
     20 bits are installed in bits 26 through 7 of the instruction.
 -- : BFD_RELOC_ARC_B26
     ARC 26 bit absolute branch.  The lowest two bits must be zero and
     are not stored in the instruction.  The high 24 bits are installed
     in bits 23 through 0.
 -- : BFD_RELOC_BFIN_16_IMM
     ADI Blackfin 16 bit immediate absolute reloc.
 -- : BFD_RELOC_BFIN_16_HIGH
     ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
 -- : BFD_RELOC_BFIN_4_PCREL
     ADI Blackfin 'a' part of LSETUP.
 -- : BFD_RELOC_BFIN_5_PCREL
     ADI Blackfin.
 -- : BFD_RELOC_BFIN_16_LOW
     ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
 -- : BFD_RELOC_BFIN_10_PCREL
     ADI Blackfin.
 -- : BFD_RELOC_BFIN_11_PCREL
     ADI Blackfin 'b' part of LSETUP.
 -- : BFD_RELOC_BFIN_12_PCREL_JUMP
     ADI Blackfin.
 -- : BFD_RELOC_BFIN_12_PCREL_JUMP_S
     ADI Blackfin Short jump, pcrel.
 -- : BFD_RELOC_BFIN_24_PCREL_CALL_X
     ADI Blackfin Call.x not implemented.
 -- : BFD_RELOC_BFIN_24_PCREL_JUMP_L
     ADI Blackfin Long Jump pcrel.
 -- : BFD_RELOC_BFIN_GOT17M4
 -- : BFD_RELOC_BFIN_GOTHI
 -- : BFD_RELOC_BFIN_GOTLO
 -- : BFD_RELOC_BFIN_FUNCDESC
 -- : BFD_RELOC_BFIN_FUNCDESC_GOT17M4
 -- : BFD_RELOC_BFIN_FUNCDESC_GOTHI
 -- : BFD_RELOC_BFIN_FUNCDESC_GOTLO
 -- : BFD_RELOC_BFIN_FUNCDESC_VALUE
 -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
 -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
 -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
 -- : BFD_RELOC_BFIN_GOTOFF17M4
 -- : BFD_RELOC_BFIN_GOTOFFHI
 -- : BFD_RELOC_BFIN_GOTOFFLO
     ADI Blackfin FD-PIC relocations.
 -- : BFD_RELOC_BFIN_GOT
     ADI Blackfin GOT relocation.
 -- : BFD_RELOC_BFIN_PLTPC
     ADI Blackfin PLTPC relocation.
 -- : BFD_ARELOC_BFIN_PUSH
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_CONST
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_ADD
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_SUB
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_MULT
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_DIV
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_MOD
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_LSHIFT
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_RSHIFT
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_AND
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_OR
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_XOR
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_LAND
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_LOR
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_LEN
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_NEG
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_COMP
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_PAGE
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_HWPAGE
     ADI Blackfin arithmetic relocation.
 -- : BFD_ARELOC_BFIN_ADDR
     ADI Blackfin arithmetic relocation.
 -- : BFD_RELOC_D10V_10_PCREL_R
     Mitsubishi D10V relocs.  This is a 10-bit reloc with the right 2
     bits assumed to be 0.
 -- : BFD_RELOC_D10V_10_PCREL_L
     Mitsubishi D10V relocs.  This is a 10-bit reloc with the right 2
     bits assumed to be 0.  This is the same as the previous reloc
     except it is in the left container, i.e., shifted left 15 bits.
 -- : BFD_RELOC_D10V_18
     This is an 18-bit reloc with the right 2 bits assumed to be 0.
 -- : BFD_RELOC_D10V_18_PCREL
     This is an 18-bit reloc with the right 2 bits assumed to be 0.
 -- : BFD_RELOC_D30V_6
     Mitsubishi D30V relocs.  This is a 6-bit absolute reloc.
 -- : BFD_RELOC_D30V_9_PCREL
     This is a 6-bit pc-relative reloc with the right 3 bits assumed to
     be 0.
 -- : BFD_RELOC_D30V_9_PCREL_R
     This is a 6-bit pc-relative reloc with the right 3 bits assumed to
     be 0.  Same as the previous reloc but on the right side of the
     container.
 -- : BFD_RELOC_D30V_15
     This is a 12-bit absolute reloc with the right 3 bitsassumed to be
     0.
 -- : BFD_RELOC_D30V_15_PCREL
     This is a 12-bit pc-relative reloc with the right 3 bits assumed to
     be 0.
 -- : BFD_RELOC_D30V_15_PCREL_R
     This is a 12-bit pc-relative reloc with the right 3 bits assumed to
     be 0.  Same as the previous reloc but on the right side of the
     container.
 -- : BFD_RELOC_D30V_21
     This is an 18-bit absolute reloc with the right 3 bits assumed to
     be 0.
 -- : BFD_RELOC_D30V_21_PCREL
     This is an 18-bit pc-relative reloc with the right 3 bits assumed
     to be 0.
 -- : BFD_RELOC_D30V_21_PCREL_R
     This is an 18-bit pc-relative reloc with the right 3 bits assumed
     to be 0.  Same as the previous reloc but on the right side of the
     container.
 -- : BFD_RELOC_D30V_32
     This is a 32-bit absolute reloc.
 -- : BFD_RELOC_D30V_32_PCREL
     This is a 32-bit pc-relative reloc.
 -- : BFD_RELOC_DLX_HI16_S
     DLX relocs
 -- : BFD_RELOC_DLX_LO16
     DLX relocs
 -- : BFD_RELOC_DLX_JMP26
     DLX relocs
 -- : BFD_RELOC_M32C_HI8
 -- : BFD_RELOC_M32C_RL_JUMP
 -- : BFD_RELOC_M32C_RL_1ADDR
 -- : BFD_RELOC_M32C_RL_2ADDR
     Renesas M16C/M32C Relocations.
 -- : BFD_RELOC_M32R_24
     Renesas M32R (formerly Mitsubishi M32R) relocs.  This is a 24 bit
     absolute address.
 -- : BFD_RELOC_M32R_10_PCREL
     This is a 10-bit pc-relative reloc with the right 2 bits assumed to
     be 0.
 -- : BFD_RELOC_M32R_18_PCREL
     This is an 18-bit reloc with the right 2 bits assumed to be 0.
 -- : BFD_RELOC_M32R_26_PCREL
     This is a 26-bit reloc with the right 2 bits assumed to be 0.
 -- : BFD_RELOC_M32R_HI16_ULO
     This is a 16-bit reloc containing the high 16 bits of an address
     used when the lower 16 bits are treated as unsigned.
 -- : BFD_RELOC_M32R_HI16_SLO
     This is a 16-bit reloc containing the high 16 bits of an address
     used when the lower 16 bits are treated as signed.
 -- : BFD_RELOC_M32R_LO16
     This is a 16-bit reloc containing the lower 16 bits of an address.
 -- : BFD_RELOC_M32R_SDA16
     This is a 16-bit reloc containing the small data area offset for
     use in add3, load, and store instructions.
 -- : BFD_RELOC_M32R_GOT24
 -- : BFD_RELOC_M32R_26_PLTREL
 -- : BFD_RELOC_M32R_COPY
 -- : BFD_RELOC_M32R_GLOB_DAT
 -- : BFD_RELOC_M32R_JMP_SLOT
 -- : BFD_RELOC_M32R_RELATIVE
 -- : BFD_RELOC_M32R_GOTOFF
 -- : BFD_RELOC_M32R_GOTOFF_HI_ULO
 -- : BFD_RELOC_M32R_GOTOFF_HI_SLO
 -- : BFD_RELOC_M32R_GOTOFF_LO
 -- : BFD_RELOC_M32R_GOTPC24
 -- : BFD_RELOC_M32R_GOT16_HI_ULO
 -- : BFD_RELOC_M32R_GOT16_HI_SLO
 -- : BFD_RELOC_M32R_GOT16_LO
 -- : BFD_RELOC_M32R_GOTPC_HI_ULO
 -- : BFD_RELOC_M32R_GOTPC_HI_SLO
 -- : BFD_RELOC_M32R_GOTPC_LO
     For PIC.
 -- : BFD_RELOC_NDS32_20
     NDS32 relocs.  This is a 20 bit absolute address.
 -- : BFD_RELOC_NDS32_9_PCREL
     This is a 9-bit pc-relative reloc with the right 1 bit assumed to
     be 0.
 -- : BFD_RELOC_NDS32_WORD_9_PCREL
     This is a 9-bit pc-relative reloc with the right 1 bit assumed to
     be 0.
 -- : BFD_RELOC_NDS32_15_PCREL
     This is an 15-bit reloc with the right 1 bit assumed to be 0.
 -- : BFD_RELOC_NDS32_17_PCREL
     This is an 17-bit reloc with the right 1 bit assumed to be 0.
 -- : BFD_RELOC_NDS32_25_PCREL
     This is a 25-bit reloc with the right 1 bit assumed to be 0.
 -- : BFD_RELOC_NDS32_HI20
     This is a 20-bit reloc containing the high 20 bits of an address
     used with the lower 12 bits
 -- : BFD_RELOC_NDS32_LO12S3
     This is a 12-bit reloc containing the lower 12 bits of an address
     then shift right by 3.  This is used with ldi,sdi...
 -- : BFD_RELOC_NDS32_LO12S2
     This is a 12-bit reloc containing the lower 12 bits of an address
     then shift left by 2.  This is used with lwi,swi...
 -- : BFD_RELOC_NDS32_LO12S1
     This is a 12-bit reloc containing the lower 12 bits of an address
     then shift left by 1.  This is used with lhi,shi...
 -- : BFD_RELOC_NDS32_LO12S0
     This is a 12-bit reloc containing the lower 12 bits of an address
     then shift left by 0.  This is used with lbisbi...
 -- : BFD_RELOC_NDS32_LO12S0_ORI
     This is a 12-bit reloc containing the lower 12 bits of an address
     then shift left by 0.  This is only used with branch relaxations
 -- : BFD_RELOC_NDS32_SDA15S3
     This is a 15-bit reloc containing the small data area 18-bit signed
     offset and shift left by 3 for use in ldi, sdi...
 -- : BFD_RELOC_NDS32_SDA15S2
     This is a 15-bit reloc containing the small data area 17-bit signed
     offset and shift left by 2 for use in lwi, swi...
 -- : BFD_RELOC_NDS32_SDA15S1
     This is a 15-bit reloc containing the small data area 16-bit signed
     offset and shift left by 1 for use in lhi, shi...
 -- : BFD_RELOC_NDS32_SDA15S0
     This is a 15-bit reloc containing the small data area 15-bit signed
     offset and shift left by 0 for use in lbi, sbi...
 -- : BFD_RELOC_NDS32_SDA16S3
     This is a 16-bit reloc containing the small data area 16-bit signed
     offset and shift left by 3
 -- : BFD_RELOC_NDS32_SDA17S2
     This is a 17-bit reloc containing the small data area 17-bit signed
     offset and shift left by 2 for use in lwi.gp, swi.gp...
 -- : BFD_RELOC_NDS32_SDA18S1
     This is a 18-bit reloc containing the small data area 18-bit signed
     offset and shift left by 1 for use in lhi.gp, shi.gp...
 -- : BFD_RELOC_NDS32_SDA19S0
     This is a 19-bit reloc containing the small data area 19-bit signed
     offset and shift left by 0 for use in lbi.gp, sbi.gp...
 -- : BFD_RELOC_NDS32_GOT20
 -- : BFD_RELOC_NDS32_9_PLTREL
 -- : BFD_RELOC_NDS32_25_PLTREL
 -- : BFD_RELOC_NDS32_COPY
 -- : BFD_RELOC_NDS32_GLOB_DAT
 -- : BFD_RELOC_NDS32_JMP_SLOT
 -- : BFD_RELOC_NDS32_RELATIVE
 -- : BFD_RELOC_NDS32_GOTOFF
 -- : BFD_RELOC_NDS32_GOTOFF_HI20
 -- : BFD_RELOC_NDS32_GOTOFF_LO12
 -- : BFD_RELOC_NDS32_GOTPC20
 -- : BFD_RELOC_NDS32_GOT_HI20
 -- : BFD_RELOC_NDS32_GOT_LO12
 -- : BFD_RELOC_NDS32_GOTPC_HI20
 -- : BFD_RELOC_NDS32_GOTPC_LO12
     for PIC
 -- : BFD_RELOC_NDS32_INSN16
 -- : BFD_RELOC_NDS32_LABEL
 -- : BFD_RELOC_NDS32_LONGCALL1
 -- : BFD_RELOC_NDS32_LONGCALL2
 -- : BFD_RELOC_NDS32_LONGCALL3
 -- : BFD_RELOC_NDS32_LONGJUMP1
 -- : BFD_RELOC_NDS32_LONGJUMP2
 -- : BFD_RELOC_NDS32_LONGJUMP3
 -- : BFD_RELOC_NDS32_LOADSTORE
 -- : BFD_RELOC_NDS32_9_FIXED
 -- : BFD_RELOC_NDS32_15_FIXED
 -- : BFD_RELOC_NDS32_17_FIXED
 -- : BFD_RELOC_NDS32_25_FIXED
     for relax
 -- : BFD_RELOC_NDS32_PLTREL_HI20
 -- : BFD_RELOC_NDS32_PLTREL_LO12
 -- : BFD_RELOC_NDS32_PLT_GOTREL_HI20
 -- : BFD_RELOC_NDS32_PLT_GOTREL_LO12
     for PIC
 -- : BFD_RELOC_NDS32_SDA12S2_DP
 -- : BFD_RELOC_NDS32_SDA12S2_SP
 -- : BFD_RELOC_NDS32_LO12S2_DP
 -- : BFD_RELOC_NDS32_LO12S2_SP
     for floating point
 -- : BFD_RELOC_NDS32_DWARF2_OP1
 -- : BFD_RELOC_NDS32_DWARF2_OP2
 -- : BFD_RELOC_NDS32_DWARF2_LEB
     for dwarf2 debug_line.
 -- : BFD_RELOC_NDS32_UPDATE_TA
     for eliminate 16-bit instructions
 -- : BFD_RELOC_NDS32_PLT_GOTREL_LO20
 -- : BFD_RELOC_NDS32_PLT_GOTREL_LO15
 -- : BFD_RELOC_NDS32_PLT_GOTREL_LO19
 -- : BFD_RELOC_NDS32_GOT_LO15
 -- : BFD_RELOC_NDS32_GOT_LO19
 -- : BFD_RELOC_NDS32_GOTOFF_LO15
 -- : BFD_RELOC_NDS32_GOTOFF_LO19
 -- : BFD_RELOC_NDS32_GOT15S2
 -- : BFD_RELOC_NDS32_GOT17S2
     for PIC object relaxation
 -- : BFD_RELOC_NDS32_5
     NDS32 relocs.  This is a 5 bit absolute address.
 -- : BFD_RELOC_NDS32_10_UPCREL
     This is a 10-bit unsigned pc-relative reloc with the right 1 bit
     assumed to be 0.
 -- : BFD_RELOC_NDS32_SDA_FP7U2_RELA
     If fp were omitted, fp can used as another gp.
 -- : BFD_RELOC_NDS32_RELAX_ENTRY
 -- : BFD_RELOC_NDS32_GOT_SUFF
 -- : BFD_RELOC_NDS32_GOTOFF_SUFF
 -- : BFD_RELOC_NDS32_PLT_GOT_SUFF
 -- : BFD_RELOC_NDS32_MULCALL_SUFF
 -- : BFD_RELOC_NDS32_PTR
 -- : BFD_RELOC_NDS32_PTR_COUNT
 -- : BFD_RELOC_NDS32_PTR_RESOLVED
 -- : BFD_RELOC_NDS32_PLTBLOCK
 -- : BFD_RELOC_NDS32_RELAX_REGION_BEGIN
 -- : BFD_RELOC_NDS32_RELAX_REGION_END
 -- : BFD_RELOC_NDS32_MINUEND
 -- : BFD_RELOC_NDS32_SUBTRAHEND
 -- : BFD_RELOC_NDS32_DIFF8
 -- : BFD_RELOC_NDS32_DIFF16
 -- : BFD_RELOC_NDS32_DIFF32
 -- : BFD_RELOC_NDS32_DIFF_ULEB128
 -- : BFD_RELOC_NDS32_25_ABS
 -- : BFD_RELOC_NDS32_DATA
 -- : BFD_RELOC_NDS32_TRAN
 -- : BFD_RELOC_NDS32_17IFC_PCREL
 -- : BFD_RELOC_NDS32_10IFCU_PCREL
     relaxation relative relocation types
 -- : BFD_RELOC_V850_9_PCREL
     This is a 9-bit reloc
 -- : BFD_RELOC_V850_22_PCREL
     This is a 22-bit reloc
 -- : BFD_RELOC_V850_SDA_16_16_OFFSET
     This is a 16 bit offset from the short data area pointer.
 -- : BFD_RELOC_V850_SDA_15_16_OFFSET
     This is a 16 bit offset (of which only 15 bits are used) from the
     short data area pointer.
 -- : BFD_RELOC_V850_ZDA_16_16_OFFSET
     This is a 16 bit offset from the zero data area pointer.
 -- : BFD_RELOC_V850_ZDA_15_16_OFFSET
     This is a 16 bit offset (of which only 15 bits are used) from the
     zero data area pointer.
 -- : BFD_RELOC_V850_TDA_6_8_OFFSET
     This is an 8 bit offset (of which only 6 bits are used) from the
     tiny data area pointer.
 -- : BFD_RELOC_V850_TDA_7_8_OFFSET
     This is an 8bit offset (of which only 7 bits are used) from the
     tiny data area pointer.
 -- : BFD_RELOC_V850_TDA_7_7_OFFSET
     This is a 7 bit offset from the tiny data area pointer.
 -- : BFD_RELOC_V850_TDA_16_16_OFFSET
     This is a 16 bit offset from the tiny data area pointer.
 -- : BFD_RELOC_V850_TDA_4_5_OFFSET
     This is a 5 bit offset (of which only 4 bits are used) from the
     tiny data area pointer.
 -- : BFD_RELOC_V850_TDA_4_4_OFFSET
     This is a 4 bit offset from the tiny data area pointer.
 -- : BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
     This is a 16 bit offset from the short data area pointer, with the
     bits placed non-contiguously in the instruction.
 -- : BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
     This is a 16 bit offset from the zero data area pointer, with the
     bits placed non-contiguously in the instruction.
 -- : BFD_RELOC_V850_CALLT_6_7_OFFSET
     This is a 6 bit offset from the call table base pointer.
 -- : BFD_RELOC_V850_CALLT_16_16_OFFSET
     This is a 16 bit offset from the call table base pointer.
 -- : BFD_RELOC_V850_LONGCALL
     Used for relaxing indirect function calls.
 -- : BFD_RELOC_V850_LONGJUMP
     Used for relaxing indirect jumps.
 -- : BFD_RELOC_V850_ALIGN
     Used to maintain alignment whilst relaxing.
 -- : BFD_RELOC_V850_LO16_SPLIT_OFFSET
     This is a variation of BFD_RELOC_LO16 that can be used in v850e
     ld.bu instructions.
 -- : BFD_RELOC_V850_16_PCREL
     This is a 16-bit reloc.
 -- : BFD_RELOC_V850_17_PCREL
     This is a 17-bit reloc.
 -- : BFD_RELOC_V850_23
     This is a 23-bit reloc.
 -- : BFD_RELOC_V850_32_PCREL
     This is a 32-bit reloc.
 -- : BFD_RELOC_V850_32_ABS
     This is a 32-bit reloc.
 -- : BFD_RELOC_V850_16_SPLIT_OFFSET
     This is a 16-bit reloc.
 -- : BFD_RELOC_V850_16_S1
     This is a 16-bit reloc.
 -- : BFD_RELOC_V850_LO16_S1
     Low 16 bits.  16 bit shifted by 1.
 -- : BFD_RELOC_V850_CALLT_15_16_OFFSET
     This is a 16 bit offset from the call table base pointer.
 -- : BFD_RELOC_V850_32_GOTPCREL
     DSO relocations.
 -- : BFD_RELOC_V850_16_GOT
     DSO relocations.
 -- : BFD_RELOC_V850_32_GOT
     DSO relocations.
 -- : BFD_RELOC_V850_22_PLT_PCREL
     DSO relocations.
 -- : BFD_RELOC_V850_32_PLT_PCREL
     DSO relocations.
 -- : BFD_RELOC_V850_COPY
     DSO relocations.
 -- : BFD_RELOC_V850_GLOB_DAT
     DSO relocations.
 -- : BFD_RELOC_V850_JMP_SLOT
     DSO relocations.
 -- : BFD_RELOC_V850_RELATIVE
     DSO relocations.
 -- : BFD_RELOC_V850_16_GOTOFF
     DSO relocations.
 -- : BFD_RELOC_V850_32_GOTOFF
     DSO relocations.
 -- : BFD_RELOC_V850_CODE
     start code.
 -- : BFD_RELOC_V850_DATA
     start data in text.
 -- : BFD_RELOC_TIC30_LDP
     This is a 8bit DP reloc for the tms320c30, where the most
     significant 8 bits of a 24 bit word are placed into the least
     significant 8 bits of the opcode.
 -- : BFD_RELOC_TIC54X_PARTLS7
     This is a 7bit reloc for the tms320c54x, where the least
     significant 7 bits of a 16 bit word are placed into the least
     significant 7 bits of the opcode.
 -- : BFD_RELOC_TIC54X_PARTMS9
     This is a 9bit DP reloc for the tms320c54x, where the most
     significant 9 bits of a 16 bit word are placed into the least
     significant 9 bits of the opcode.
 -- : BFD_RELOC_TIC54X_23
     This is an extended address 23-bit reloc for the tms320c54x.
 -- : BFD_RELOC_TIC54X_16_OF_23
     This is a 16-bit reloc for the tms320c54x, where the least
     significant 16 bits of a 23-bit extended address are placed into
     the opcode.
 -- : BFD_RELOC_TIC54X_MS7_OF_23
     This is a reloc for the tms320c54x, where the most significant 7
     bits of a 23-bit extended address are placed into the opcode.
 -- : BFD_RELOC_C6000_PCR_S21
 -- : BFD_RELOC_C6000_PCR_S12
 -- : BFD_RELOC_C6000_PCR_S10
 -- : BFD_RELOC_C6000_PCR_S7
 -- : BFD_RELOC_C6000_ABS_S16
 -- : BFD_RELOC_C6000_ABS_L16
 -- : BFD_RELOC_C6000_ABS_H16
 -- : BFD_RELOC_C6000_SBR_U15_B
 -- : BFD_RELOC_C6000_SBR_U15_H
 -- : BFD_RELOC_C6000_SBR_U15_W
 -- : BFD_RELOC_C6000_SBR_S16
 -- : BFD_RELOC_C6000_SBR_L16_B
 -- : BFD_RELOC_C6000_SBR_L16_H
 -- : BFD_RELOC_C6000_SBR_L16_W
 -- : BFD_RELOC_C6000_SBR_H16_B
 -- : BFD_RELOC_C6000_SBR_H16_H
 -- : BFD_RELOC_C6000_SBR_H16_W
 -- : BFD_RELOC_C6000_SBR_GOT_U15_W
 -- : BFD_RELOC_C6000_SBR_GOT_L16_W
 -- : BFD_RELOC_C6000_SBR_GOT_H16_W
 -- : BFD_RELOC_C6000_DSBT_INDEX
 -- : BFD_RELOC_C6000_PREL31
 -- : BFD_RELOC_C6000_COPY
 -- : BFD_RELOC_C6000_JUMP_SLOT
 -- : BFD_RELOC_C6000_EHTYPE
 -- : BFD_RELOC_C6000_PCR_H16
 -- : BFD_RELOC_C6000_PCR_L16
 -- : BFD_RELOC_C6000_ALIGN
 -- : BFD_RELOC_C6000_FPHEAD
 -- : BFD_RELOC_C6000_NOCMP
     TMS320C6000 relocations.
 -- : BFD_RELOC_FR30_48
     This is a 48 bit reloc for the FR30 that stores 32 bits.
 -- : BFD_RELOC_FR30_20
     This is a 32 bit reloc for the FR30 that stores 20 bits split up
     into two sections.
 -- : BFD_RELOC_FR30_6_IN_4
     This is a 16 bit reloc for the FR30 that stores a 6 bit word offset
     in 4 bits.
 -- : BFD_RELOC_FR30_8_IN_8
     This is a 16 bit reloc for the FR30 that stores an 8 bit byte
     offset into 8 bits.
 -- : BFD_RELOC_FR30_9_IN_8
     This is a 16 bit reloc for the FR30 that stores a 9 bit short
     offset into 8 bits.
 -- : BFD_RELOC_FR30_10_IN_8
     This is a 16 bit reloc for the FR30 that stores a 10 bit word
     offset into 8 bits.
 -- : BFD_RELOC_FR30_9_PCREL
     This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
     short offset into 8 bits.
 -- : BFD_RELOC_FR30_12_PCREL
     This is a 16 bit reloc for the FR30 that stores a 12 bit pc
     relative short offset into 11 bits.
 -- : BFD_RELOC_MCORE_PCREL_IMM8BY4
 -- : BFD_RELOC_MCORE_PCREL_IMM11BY2
 -- : BFD_RELOC_MCORE_PCREL_IMM4BY2
 -- : BFD_RELOC_MCORE_PCREL_32
 -- : BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
 -- : BFD_RELOC_MCORE_RVA
     Motorola Mcore relocations.
 -- : BFD_RELOC_MEP_8
 -- : BFD_RELOC_MEP_16
 -- : BFD_RELOC_MEP_32
 -- : BFD_RELOC_MEP_PCREL8A2
 -- : BFD_RELOC_MEP_PCREL12A2
 -- : BFD_RELOC_MEP_PCREL17A2
 -- : BFD_RELOC_MEP_PCREL24A2
 -- : BFD_RELOC_MEP_PCABS24A2
 -- : BFD_RELOC_MEP_LOW16
 -- : BFD_RELOC_MEP_HI16U
 -- : BFD_RELOC_MEP_HI16S
 -- : BFD_RELOC_MEP_GPREL
 -- : BFD_RELOC_MEP_TPREL
 -- : BFD_RELOC_MEP_TPREL7
 -- : BFD_RELOC_MEP_TPREL7A2
 -- : BFD_RELOC_MEP_TPREL7A4
 -- : BFD_RELOC_MEP_UIMM24
 -- : BFD_RELOC_MEP_ADDR24A4
 -- : BFD_RELOC_MEP_GNU_VTINHERIT
 -- : BFD_RELOC_MEP_GNU_VTENTRY
     Toshiba Media Processor Relocations.
 -- : BFD_RELOC_METAG_HIADDR16
 -- : BFD_RELOC_METAG_LOADDR16
 -- : BFD_RELOC_METAG_RELBRANCH
 -- : BFD_RELOC_METAG_GETSETOFF
 -- : BFD_RELOC_METAG_HIOG
 -- : BFD_RELOC_METAG_LOOG
 -- : BFD_RELOC_METAG_REL8
 -- : BFD_RELOC_METAG_REL16
 -- : BFD_RELOC_METAG_HI16_GOTOFF
 -- : BFD_RELOC_METAG_LO16_GOTOFF
 -- : BFD_RELOC_METAG_GETSET_GOTOFF
 -- : BFD_RELOC_METAG_GETSET_GOT
 -- : BFD_RELOC_METAG_HI16_GOTPC
 -- : BFD_RELOC_METAG_LO16_GOTPC
 -- : BFD_RELOC_METAG_HI16_PLT
 -- : BFD_RELOC_METAG_LO16_PLT
 -- : BFD_RELOC_METAG_RELBRANCH_PLT
 -- : BFD_RELOC_METAG_GOTOFF
 -- : BFD_RELOC_METAG_PLT
 -- : BFD_RELOC_METAG_COPY
 -- : BFD_RELOC_METAG_JMP_SLOT
 -- : BFD_RELOC_METAG_RELATIVE
 -- : BFD_RELOC_METAG_GLOB_DAT
 -- : BFD_RELOC_METAG_TLS_GD
 -- : BFD_RELOC_METAG_TLS_LDM
 -- : BFD_RELOC_METAG_TLS_LDO_HI16
 -- : BFD_RELOC_METAG_TLS_LDO_LO16
 -- : BFD_RELOC_METAG_TLS_LDO
 -- : BFD_RELOC_METAG_TLS_IE
 -- : BFD_RELOC_METAG_TLS_IENONPIC
 -- : BFD_RELOC_METAG_TLS_IENONPIC_HI16
 -- : BFD_RELOC_METAG_TLS_IENONPIC_LO16
 -- : BFD_RELOC_METAG_TLS_TPOFF
 -- : BFD_RELOC_METAG_TLS_DTPMOD
 -- : BFD_RELOC_METAG_TLS_DTPOFF
 -- : BFD_RELOC_METAG_TLS_LE
 -- : BFD_RELOC_METAG_TLS_LE_HI16
 -- : BFD_RELOC_METAG_TLS_LE_LO16
     Imagination Technologies Meta relocations.
 -- : BFD_RELOC_MMIX_GETA
 -- : BFD_RELOC_MMIX_GETA_1
 -- : BFD_RELOC_MMIX_GETA_2
 -- : BFD_RELOC_MMIX_GETA_3
     These are relocations for the GETA instruction.
 -- : BFD_RELOC_MMIX_CBRANCH
 -- : BFD_RELOC_MMIX_CBRANCH_J
 -- : BFD_RELOC_MMIX_CBRANCH_1
 -- : BFD_RELOC_MMIX_CBRANCH_2
 -- : BFD_RELOC_MMIX_CBRANCH_3
     These are relocations for a conditional branch instruction.
 -- : BFD_RELOC_MMIX_PUSHJ
 -- : BFD_RELOC_MMIX_PUSHJ_1
 -- : BFD_RELOC_MMIX_PUSHJ_2
 -- : BFD_RELOC_MMIX_PUSHJ_3
 -- : BFD_RELOC_MMIX_PUSHJ_STUBBABLE
     These are relocations for the PUSHJ instruction.
 -- : BFD_RELOC_MMIX_JMP
 -- : BFD_RELOC_MMIX_JMP_1
 -- : BFD_RELOC_MMIX_JMP_2
 -- : BFD_RELOC_MMIX_JMP_3
     These are relocations for the JMP instruction.
 -- : BFD_RELOC_MMIX_ADDR19
     This is a relocation for a relative address as in a GETA
     instruction or a branch.
 -- : BFD_RELOC_MMIX_ADDR27
     This is a relocation for a relative address as in a JMP
     instruction.
 -- : BFD_RELOC_MMIX_REG_OR_BYTE
     This is a relocation for an instruction field that may be a general
     register or a value 0..255.
 -- : BFD_RELOC_MMIX_REG
     This is a relocation for an instruction field that may be a general
     register.
 -- : BFD_RELOC_MMIX_BASE_PLUS_OFFSET
     This is a relocation for two instruction fields holding a register
     and an offset, the equivalent of the relocation.
 -- : BFD_RELOC_MMIX_LOCAL
     This relocation is an assertion that the expression is not
     allocated as a global register.  It does not modify contents.
 -- : BFD_RELOC_AVR_7_PCREL
     This is a 16 bit reloc for the AVR that stores 8 bit pc relative
     short offset into 7 bits.
 -- : BFD_RELOC_AVR_13_PCREL
     This is a 16 bit reloc for the AVR that stores 13 bit pc relative
     short offset into 12 bits.
 -- : BFD_RELOC_AVR_16_PM
     This is a 16 bit reloc for the AVR that stores 17 bit value
     (usually program memory address) into 16 bits.
 -- : BFD_RELOC_AVR_LO8_LDI
     This is a 16 bit reloc for the AVR that stores 8 bit value (usually
     data memory address) into 8 bit immediate value of LDI insn.
 -- : BFD_RELOC_AVR_HI8_LDI
     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
     bit of data memory address) into 8 bit immediate value of LDI insn.
 -- : BFD_RELOC_AVR_HH8_LDI
     This is a 16 bit reloc for the AVR that stores 8 bit value (most
     high 8 bit of program memory address) into 8 bit immediate value of
     LDI insn.
 -- : BFD_RELOC_AVR_MS8_LDI
     This is a 16 bit reloc for the AVR that stores 8 bit value (most
     high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.
 -- : BFD_RELOC_AVR_LO8_LDI_NEG
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
     (usually data memory address) into 8 bit immediate value of SUBI
     insn.
 -- : BFD_RELOC_AVR_HI8_LDI_NEG
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
     (high 8 bit of data memory address) into 8 bit immediate value of
     SUBI insn.
 -- : BFD_RELOC_AVR_HH8_LDI_NEG
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
     (most high 8 bit of program memory address) into 8 bit immediate
     value of LDI or SUBI insn.
 -- : BFD_RELOC_AVR_MS8_LDI_NEG
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
     (msb of 32 bit value) into 8 bit immediate value of LDI insn.
 -- : BFD_RELOC_AVR_LO8_LDI_PM
     This is a 16 bit reloc for the AVR that stores 8 bit value (usually
     command address) into 8 bit immediate value of LDI insn.
 -- : BFD_RELOC_AVR_LO8_LDI_GS
     This is a 16 bit reloc for the AVR that stores 8 bit value (command
     address) into 8 bit immediate value of LDI insn.  If the address is
     beyond the 128k boundary, the linker inserts a jump stub for this
     reloc in the lower 128k.
 -- : BFD_RELOC_AVR_HI8_LDI_PM
     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
     bit of command address) into 8 bit immediate value of LDI insn.
 -- : BFD_RELOC_AVR_HI8_LDI_GS
     This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
     bit of command address) into 8 bit immediate value of LDI insn.  If
     the address is beyond the 128k boundary, the linker inserts a jump
     stub for this reloc below 128k.
 -- : BFD_RELOC_AVR_HH8_LDI_PM
     This is a 16 bit reloc for the AVR that stores 8 bit value (most
     high 8 bit of command address) into 8 bit immediate value of LDI
     insn.
 -- : BFD_RELOC_AVR_LO8_LDI_PM_NEG
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
     (usually command address) into 8 bit immediate value of SUBI insn.
 -- : BFD_RELOC_AVR_HI8_LDI_PM_NEG
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
     (high 8 bit of 16 bit command address) into 8 bit immediate value
     of SUBI insn.
 -- : BFD_RELOC_AVR_HH8_LDI_PM_NEG
     This is a 16 bit reloc for the AVR that stores negated 8 bit value
     (high 6 bit of 22 bit command address) into 8 bit immediate value
     of SUBI insn.
 -- : BFD_RELOC_AVR_CALL
     This is a 32 bit reloc for the AVR that stores 23 bit value into 22
     bits.
 -- : BFD_RELOC_AVR_LDI
     This is a 16 bit reloc for the AVR that stores all needed bits for
     absolute addressing with ldi with overflow check to linktime
 -- : BFD_RELOC_AVR_6
     This is a 6 bit reloc for the AVR that stores offset for ldd/std
     instructions
 -- : BFD_RELOC_AVR_6_ADIW
     This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
     instructions
 -- : BFD_RELOC_AVR_8_LO
     This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
     in .byte lo8(symbol)
 -- : BFD_RELOC_AVR_8_HI
     This is a 8 bit reloc for the AVR that stores bits 8..15 of a
     symbol in .byte hi8(symbol)
 -- : BFD_RELOC_AVR_8_HLO
     This is a 8 bit reloc for the AVR that stores bits 16..23 of a
     symbol in .byte hlo8(symbol)
 -- : BFD_RELOC_AVR_DIFF8
 -- : BFD_RELOC_AVR_DIFF16
 -- : BFD_RELOC_AVR_DIFF32
     AVR relocations to mark the difference of two local symbols.  These
     are only needed to support linker relaxation and can be ignored
     when not relaxing.  The field is set to the value of the difference
     assuming no relaxation.  The relocation encodes the position of the
     second symbol so the linker can determine whether to adjust the
     field value.
 -- : BFD_RELOC_RL78_NEG8
 -- : BFD_RELOC_RL78_NEG16
 -- : BFD_RELOC_RL78_NEG24
 -- : BFD_RELOC_RL78_NEG32
 -- : BFD_RELOC_RL78_16_OP
 -- : BFD_RELOC_RL78_24_OP
 -- : BFD_RELOC_RL78_32_OP
 -- : BFD_RELOC_RL78_8U
 -- : BFD_RELOC_RL78_16U
 -- : BFD_RELOC_RL78_24U
 -- : BFD_RELOC_RL78_DIR3U_PCREL
 -- : BFD_RELOC_RL78_DIFF
 -- : BFD_RELOC_RL78_GPRELB
 -- : BFD_RELOC_RL78_GPRELW
 -- : BFD_RELOC_RL78_GPRELL
 -- : BFD_RELOC_RL78_SYM
 -- : BFD_RELOC_RL78_OP_SUBTRACT
 -- : BFD_RELOC_RL78_OP_NEG
 -- : BFD_RELOC_RL78_OP_AND
 -- : BFD_RELOC_RL78_OP_SHRA
 -- : BFD_RELOC_RL78_ABS8
 -- : BFD_RELOC_RL78_ABS16
 -- : BFD_RELOC_RL78_ABS16_REV
 -- : BFD_RELOC_RL78_ABS32
 -- : BFD_RELOC_RL78_ABS32_REV
 -- : BFD_RELOC_RL78_ABS16U
 -- : BFD_RELOC_RL78_ABS16UW
 -- : BFD_RELOC_RL78_ABS16UL
 -- : BFD_RELOC_RL78_RELAX
 -- : BFD_RELOC_RL78_HI16
 -- : BFD_RELOC_RL78_HI8
 -- : BFD_RELOC_RL78_LO16
 -- : BFD_RELOC_RL78_CODE
     Renesas RL78 Relocations.
 -- : BFD_RELOC_RX_NEG8
 -- : BFD_RELOC_RX_NEG16
 -- : BFD_RELOC_RX_NEG24
 -- : BFD_RELOC_RX_NEG32
 -- : BFD_RELOC_RX_16_OP
 -- : BFD_RELOC_RX_24_OP
 -- : BFD_RELOC_RX_32_OP
 -- : BFD_RELOC_RX_8U
 -- : BFD_RELOC_RX_16U
 -- : BFD_RELOC_RX_24U
 -- : BFD_RELOC_RX_DIR3U_PCREL
 -- : BFD_RELOC_RX_DIFF
 -- : BFD_RELOC_RX_GPRELB
 -- : BFD_RELOC_RX_GPRELW
 -- : BFD_RELOC_RX_GPRELL
 -- : BFD_RELOC_RX_SYM
 -- : BFD_RELOC_RX_OP_SUBTRACT
 -- : BFD_RELOC_RX_OP_NEG
 -- : BFD_RELOC_RX_ABS8
 -- : BFD_RELOC_RX_ABS16
 -- : BFD_RELOC_RX_ABS16_REV
 -- : BFD_RELOC_RX_ABS32
 -- : BFD_RELOC_RX_ABS32_REV
 -- : BFD_RELOC_RX_ABS16U
 -- : BFD_RELOC_RX_ABS16UW
 -- : BFD_RELOC_RX_ABS16UL
 -- : BFD_RELOC_RX_RELAX
     Renesas RX Relocations.
 -- : BFD_RELOC_390_12
     Direct 12 bit.
 -- : BFD_RELOC_390_GOT12
     12 bit GOT offset.
 -- : BFD_RELOC_390_PLT32
     32 bit PC relative PLT address.
 -- : BFD_RELOC_390_COPY
     Copy symbol at runtime.
 -- : BFD_RELOC_390_GLOB_DAT
     Create GOT entry.
 -- : BFD_RELOC_390_JMP_SLOT
     Create PLT entry.
 -- : BFD_RELOC_390_RELATIVE
     Adjust by program base.
 -- : BFD_RELOC_390_GOTPC
     32 bit PC relative offset to GOT.
 -- : BFD_RELOC_390_GOT16
     16 bit GOT offset.
 -- : BFD_RELOC_390_PC12DBL
     PC relative 12 bit shifted by 1.
 -- : BFD_RELOC_390_PLT12DBL
     12 bit PC rel.  PLT shifted by 1.
 -- : BFD_RELOC_390_PC16DBL
     PC relative 16 bit shifted by 1.
 -- : BFD_RELOC_390_PLT16DBL
     16 bit PC rel.  PLT shifted by 1.
 -- : BFD_RELOC_390_PC24DBL
     PC relative 24 bit shifted by 1.
 -- : BFD_RELOC_390_PLT24DBL
     24 bit PC rel.  PLT shifted by 1.
 -- : BFD_RELOC_390_PC32DBL
     PC relative 32 bit shifted by 1.
 -- : BFD_RELOC_390_PLT32DBL
     32 bit PC rel.  PLT shifted by 1.
 -- : BFD_RELOC_390_GOTPCDBL
     32 bit PC rel.  GOT shifted by 1.
 -- : BFD_RELOC_390_GOT64
     64 bit GOT offset.
 -- : BFD_RELOC_390_PLT64
     64 bit PC relative PLT address.
 -- : BFD_RELOC_390_GOTENT
     32 bit rel.  offset to GOT entry.
 -- : BFD_RELOC_390_GOTOFF64
     64 bit offset to GOT.
 -- : BFD_RELOC_390_GOTPLT12
     12-bit offset to symbol-entry within GOT, with PLT handling.
 -- : BFD_RELOC_390_GOTPLT16
     16-bit offset to symbol-entry within GOT, with PLT handling.
 -- : BFD_RELOC_390_GOTPLT32
     32-bit offset to symbol-entry within GOT, with PLT handling.
 -- : BFD_RELOC_390_GOTPLT64
     64-bit offset to symbol-entry within GOT, with PLT handling.
 -- : BFD_RELOC_390_GOTPLTENT
     32-bit rel.  offset to symbol-entry within GOT, with PLT handling.
 -- : BFD_RELOC_390_PLTOFF16
     16-bit rel.  offset from the GOT to a PLT entry.
 -- : BFD_RELOC_390_PLTOFF32
     32-bit rel.  offset from the GOT to a PLT entry.
 -- : BFD_RELOC_390_PLTOFF64
     64-bit rel.  offset from the GOT to a PLT entry.
 -- : BFD_RELOC_390_TLS_LOAD
 -- : BFD_RELOC_390_TLS_GDCALL
 -- : BFD_RELOC_390_TLS_LDCALL
 -- : BFD_RELOC_390_TLS_GD32
 -- : BFD_RELOC_390_TLS_GD64
 -- : BFD_RELOC_390_TLS_GOTIE12
 -- : BFD_RELOC_390_TLS_GOTIE32
 -- : BFD_RELOC_390_TLS_GOTIE64
 -- : BFD_RELOC_390_TLS_LDM32
 -- : BFD_RELOC_390_TLS_LDM64
 -- : BFD_RELOC_390_TLS_IE32
 -- : BFD_RELOC_390_TLS_IE64
 -- : BFD_RELOC_390_TLS_IEENT
 -- : BFD_RELOC_390_TLS_LE32
 -- : BFD_RELOC_390_TLS_LE64
 -- : BFD_RELOC_390_TLS_LDO32
 -- : BFD_RELOC_390_TLS_LDO64
 -- : BFD_RELOC_390_TLS_DTPMOD
 -- : BFD_RELOC_390_TLS_DTPOFF
 -- : BFD_RELOC_390_TLS_TPOFF
     s390 tls relocations.
 -- : BFD_RELOC_390_20
 -- : BFD_RELOC_390_GOT20
 -- : BFD_RELOC_390_GOTPLT20
 -- : BFD_RELOC_390_TLS_GOTIE20
     Long displacement extension.
 -- : BFD_RELOC_390_IRELATIVE
     STT_GNU_IFUNC relocation.
 -- : BFD_RELOC_SCORE_GPREL15
     Score relocations Low 16 bit for load/store
 -- : BFD_RELOC_SCORE_DUMMY2
 -- : BFD_RELOC_SCORE_JMP
     This is a 24-bit reloc with the right 1 bit assumed to be 0
 -- : BFD_RELOC_SCORE_BRANCH
     This is a 19-bit reloc with the right 1 bit assumed to be 0
 -- : BFD_RELOC_SCORE_IMM30
     This is a 32-bit reloc for 48-bit instructions.
 -- : BFD_RELOC_SCORE_IMM32
     This is a 32-bit reloc for 48-bit instructions.
 -- : BFD_RELOC_SCORE16_JMP
     This is a 11-bit reloc with the right 1 bit assumed to be 0
 -- : BFD_RELOC_SCORE16_BRANCH
     This is a 8-bit reloc with the right 1 bit assumed to be 0
 -- : BFD_RELOC_SCORE_BCMP
     This is a 9-bit reloc with the right 1 bit assumed to be 0
 -- : BFD_RELOC_SCORE_GOT15
 -- : BFD_RELOC_SCORE_GOT_LO16
 -- : BFD_RELOC_SCORE_CALL15
 -- : BFD_RELOC_SCORE_DUMMY_HI16
     Undocumented Score relocs
 -- : BFD_RELOC_IP2K_FR9
     Scenix IP2K - 9-bit register number / data address
 -- : BFD_RELOC_IP2K_BANK
     Scenix IP2K - 4-bit register/data bank number
 -- : BFD_RELOC_IP2K_ADDR16CJP
     Scenix IP2K - low 13 bits of instruction word address
 -- : BFD_RELOC_IP2K_PAGE3
     Scenix IP2K - high 3 bits of instruction word address
 -- : BFD_RELOC_IP2K_LO8DATA
 -- : BFD_RELOC_IP2K_HI8DATA
 -- : BFD_RELOC_IP2K_EX8DATA
     Scenix IP2K - ext/low/high 8 bits of data address
 -- : BFD_RELOC_IP2K_LO8INSN
 -- : BFD_RELOC_IP2K_HI8INSN
     Scenix IP2K - low/high 8 bits of instruction word address
 -- : BFD_RELOC_IP2K_PC_SKIP
     Scenix IP2K - even/odd PC modifier to modify snb pcl.0
 -- : BFD_RELOC_IP2K_TEXT
     Scenix IP2K - 16 bit word address in text section.
 -- : BFD_RELOC_IP2K_FR_OFFSET
     Scenix IP2K - 7-bit sp or dp offset
 -- : BFD_RELOC_VPE4KMATH_DATA
 -- : BFD_RELOC_VPE4KMATH_INSN
     Scenix VPE4K coprocessor - data/insn-space addressing
 -- : BFD_RELOC_VTABLE_INHERIT
 -- : BFD_RELOC_VTABLE_ENTRY
     These two relocations are used by the linker to determine which of
     the entries in a C++ virtual function table are actually used.
     When the -gc-sections option is given, the linker will zero out the
     entries that are not used, so that the code for those functions
     need not be included in the output.

     VTABLE_INHERIT is a zero-space relocation used to describe to the
     linker the inheritance tree of a C++ virtual function table.  The
     relocation's symbol should be the parent class' vtable, and the
     relocation should be located at the child vtable.

     VTABLE_ENTRY is a zero-space relocation that describes the use of a
     virtual function table entry.  The reloc's symbol should refer to
     the table of the class mentioned in the code.  Off of that base, an
     offset describes the entry that is being used.  For Rela hosts,
     this offset is stored in the reloc's addend.  For Rel hosts, we are
     forced to put this offset in the reloc's section offset.
 -- : BFD_RELOC_IA64_IMM14
 -- : BFD_RELOC_IA64_IMM22
 -- : BFD_RELOC_IA64_IMM64
 -- : BFD_RELOC_IA64_DIR32MSB
 -- : BFD_RELOC_IA64_DIR32LSB
 -- : BFD_RELOC_IA64_DIR64MSB
 -- : BFD_RELOC_IA64_DIR64LSB
 -- : BFD_RELOC_IA64_GPREL22
 -- : BFD_RELOC_IA64_GPREL64I
 -- : BFD_RELOC_IA64_GPREL32MSB
 -- : BFD_RELOC_IA64_GPREL32LSB
 -- : BFD_RELOC_IA64_GPREL64MSB
 -- : BFD_RELOC_IA64_GPREL64LSB
 -- : BFD_RELOC_IA64_LTOFF22
 -- : BFD_RELOC_IA64_LTOFF64I
 -- : BFD_RELOC_IA64_PLTOFF22
 -- : BFD_RELOC_IA64_PLTOFF64I
 -- : BFD_RELOC_IA64_PLTOFF64MSB
 -- : BFD_RELOC_IA64_PLTOFF64LSB
 -- : BFD_RELOC_IA64_FPTR64I
 -- : BFD_RELOC_IA64_FPTR32MSB
 -- : BFD_RELOC_IA64_FPTR32LSB
 -- : BFD_RELOC_IA64_FPTR64MSB
 -- : BFD_RELOC_IA64_FPTR64LSB
 -- : BFD_RELOC_IA64_PCREL21B
 -- : BFD_RELOC_IA64_PCREL21BI
 -- : BFD_RELOC_IA64_PCREL21M
 -- : BFD_RELOC_IA64_PCREL21F
 -- : BFD_RELOC_IA64_PCREL22
 -- : BFD_RELOC_IA64_PCREL60B
 -- : BFD_RELOC_IA64_PCREL64I
 -- : BFD_RELOC_IA64_PCREL32MSB
 -- : BFD_RELOC_IA64_PCREL32LSB
 -- : BFD_RELOC_IA64_PCREL64MSB
 -- : BFD_RELOC_IA64_PCREL64LSB
 -- : BFD_RELOC_IA64_LTOFF_FPTR22
 -- : BFD_RELOC_IA64_LTOFF_FPTR64I
 -- : BFD_RELOC_IA64_LTOFF_FPTR32MSB
 -- : BFD_RELOC_IA64_LTOFF_FPTR32LSB
 -- : BFD_RELOC_IA64_LTOFF_FPTR64MSB
 -- : BFD_RELOC_IA64_LTOFF_FPTR64LSB
 -- : BFD_RELOC_IA64_SEGREL32MSB
 -- : BFD_RELOC_IA64_SEGREL32LSB
 -- : BFD_RELOC_IA64_SEGREL64MSB
 -- : BFD_RELOC_IA64_SEGREL64LSB
 -- : BFD_RELOC_IA64_SECREL32MSB
 -- : BFD_RELOC_IA64_SECREL32LSB
 -- : BFD_RELOC_IA64_SECREL64MSB
 -- : BFD_RELOC_IA64_SECREL64LSB
 -- : BFD_RELOC_IA64_REL32MSB
 -- : BFD_RELOC_IA64_REL32LSB
 -- : BFD_RELOC_IA64_REL64MSB
 -- : BFD_RELOC_IA64_REL64LSB
 -- : BFD_RELOC_IA64_LTV32MSB
 -- : BFD_RELOC_IA64_LTV32LSB
 -- : BFD_RELOC_IA64_LTV64MSB
 -- : BFD_RELOC_IA64_LTV64LSB
 -- : BFD_RELOC_IA64_IPLTMSB
 -- : BFD_RELOC_IA64_IPLTLSB
 -- : BFD_RELOC_IA64_COPY
 -- : BFD_RELOC_IA64_LTOFF22X
 -- : BFD_RELOC_IA64_LDXMOV
 -- : BFD_RELOC_IA64_TPREL14
 -- : BFD_RELOC_IA64_TPREL22
 -- : BFD_RELOC_IA64_TPREL64I
 -- : BFD_RELOC_IA64_TPREL64MSB
 -- : BFD_RELOC_IA64_TPREL64LSB
 -- : BFD_RELOC_IA64_LTOFF_TPREL22
 -- : BFD_RELOC_IA64_DTPMOD64MSB
 -- : BFD_RELOC_IA64_DTPMOD64LSB
 -- : BFD_RELOC_IA64_LTOFF_DTPMOD22
 -- : BFD_RELOC_IA64_DTPREL14
 -- : BFD_RELOC_IA64_DTPREL22
 -- : BFD_RELOC_IA64_DTPREL64I
 -- : BFD_RELOC_IA64_DTPREL32MSB
 -- : BFD_RELOC_IA64_DTPREL32LSB
 -- : BFD_RELOC_IA64_DTPREL64MSB
 -- : BFD_RELOC_IA64_DTPREL64LSB
 -- : BFD_RELOC_IA64_LTOFF_DTPREL22
     Intel IA64 Relocations.
 -- : BFD_RELOC_M68HC11_HI8
     Motorola 68HC11 reloc.  This is the 8 bit high part of an absolute
     address.
 -- : BFD_RELOC_M68HC11_LO8
     Motorola 68HC11 reloc.  This is the 8 bit low part of an absolute
     address.
 -- : BFD_RELOC_M68HC11_3B
     Motorola 68HC11 reloc.  This is the 3 bit of a value.
 -- : BFD_RELOC_M68HC11_RL_JUMP
     Motorola 68HC11 reloc.  This reloc marks the beginning of a
     jump/call instruction.  It is used for linker relaxation to
     correctly identify beginning of instruction and change some
     branches to use PC-relative addressing mode.
 -- : BFD_RELOC_M68HC11_RL_GROUP
     Motorola 68HC11 reloc.  This reloc marks a group of several
     instructions that gcc generates and for which the linker relaxation
     pass can modify and/or remove some of them.
 -- : BFD_RELOC_M68HC11_LO16
     Motorola 68HC11 reloc.  This is the 16-bit lower part of an
     address.  It is used for 'call' instruction to specify the symbol
     address without any special transformation (due to memory bank
     window).
 -- : BFD_RELOC_M68HC11_PAGE
     Motorola 68HC11 reloc.  This is a 8-bit reloc that specifies the
     page number of an address.  It is used by 'call' instruction to
     specify the page number of the symbol.
 -- : BFD_RELOC_M68HC11_24
     Motorola 68HC11 reloc.  This is a 24-bit reloc that represents the
     address with a 16-bit value and a 8-bit page number.  The symbol
     address is transformed to follow the 16K memory bank of 68HC12
     (seen as mapped in the window).
 -- : BFD_RELOC_M68HC12_5B
     Motorola 68HC12 reloc.  This is the 5 bits of a value.
 -- : BFD_RELOC_XGATE_RL_JUMP
     Freescale XGATE reloc.  This reloc marks the beginning of a bra/jal
     instruction.
 -- : BFD_RELOC_XGATE_RL_GROUP
     Freescale XGATE reloc.  This reloc marks a group of several
     instructions that gcc generates and for which the linker relaxation
     pass can modify and/or remove some of them.
 -- : BFD_RELOC_XGATE_LO16
     Freescale XGATE reloc.  This is the 16-bit lower part of an
     address.  It is used for the '16-bit' instructions.
 -- : BFD_RELOC_XGATE_GPAGE
     Freescale XGATE reloc.
 -- : BFD_RELOC_XGATE_24
     Freescale XGATE reloc.
 -- : BFD_RELOC_XGATE_PCREL_9
     Freescale XGATE reloc.  This is a 9-bit pc-relative reloc.
 -- : BFD_RELOC_XGATE_PCREL_10
     Freescale XGATE reloc.  This is a 10-bit pc-relative reloc.
 -- : BFD_RELOC_XGATE_IMM8_LO
     Freescale XGATE reloc.  This is the 16-bit lower part of an
     address.  It is used for the '16-bit' instructions.
 -- : BFD_RELOC_XGATE_IMM8_HI
     Freescale XGATE reloc.  This is the 16-bit higher part of an
     address.  It is used for the '16-bit' instructions.
 -- : BFD_RELOC_XGATE_IMM3
     Freescale XGATE reloc.  This is a 3-bit pc-relative reloc.
 -- : BFD_RELOC_XGATE_IMM4
     Freescale XGATE reloc.  This is a 4-bit pc-relative reloc.
 -- : BFD_RELOC_XGATE_IMM5
     Freescale XGATE reloc.  This is a 5-bit pc-relative reloc.
 -- : BFD_RELOC_M68HC12_9B
     Motorola 68HC12 reloc.  This is the 9 bits of a value.
 -- : BFD_RELOC_M68HC12_16B
     Motorola 68HC12 reloc.  This is the 16 bits of a value.
 -- : BFD_RELOC_M68HC12_9_PCREL
     Motorola 68HC12/XGATE reloc.  This is a PCREL9 branch.
 -- : BFD_RELOC_M68HC12_10_PCREL
     Motorola 68HC12/XGATE reloc.  This is a PCREL10 branch.
 -- : BFD_RELOC_M68HC12_LO8XG
     Motorola 68HC12/XGATE reloc.  This is the 8 bit low part of an
     absolute address and immediately precedes a matching HI8XG part.
 -- : BFD_RELOC_M68HC12_HI8XG
     Motorola 68HC12/XGATE reloc.  This is the 8 bit high part of an
     absolute address and immediately follows a matching LO8XG part.
 -- : BFD_RELOC_16C_NUM08
 -- : BFD_RELOC_16C_NUM08_C
 -- : BFD_RELOC_16C_NUM16
 -- : BFD_RELOC_16C_NUM16_C
 -- : BFD_RELOC_16C_NUM32
 -- : BFD_RELOC_16C_NUM32_C
 -- : BFD_RELOC_16C_DISP04
 -- : BFD_RELOC_16C_DISP04_C
 -- : BFD_RELOC_16C_DISP08
 -- : BFD_RELOC_16C_DISP08_C
 -- : BFD_RELOC_16C_DISP16
 -- : BFD_RELOC_16C_DISP16_C
 -- : BFD_RELOC_16C_DISP24
 -- : BFD_RELOC_16C_DISP24_C
 -- : BFD_RELOC_16C_DISP24a
 -- : BFD_RELOC_16C_DISP24a_C
 -- : BFD_RELOC_16C_REG04
 -- : BFD_RELOC_16C_REG04_C
 -- : BFD_RELOC_16C_REG04a
 -- : BFD_RELOC_16C_REG04a_C
 -- : BFD_RELOC_16C_REG14
 -- : BFD_RELOC_16C_REG14_C
 -- : BFD_RELOC_16C_REG16
 -- : BFD_RELOC_16C_REG16_C
 -- : BFD_RELOC_16C_REG20
 -- : BFD_RELOC_16C_REG20_C
 -- : BFD_RELOC_16C_ABS20
 -- : BFD_RELOC_16C_ABS20_C
 -- : BFD_RELOC_16C_ABS24
 -- : BFD_RELOC_16C_ABS24_C
 -- : BFD_RELOC_16C_IMM04
 -- : BFD_RELOC_16C_IMM04_C
 -- : BFD_RELOC_16C_IMM16
 -- : BFD_RELOC_16C_IMM16_C
 -- : BFD_RELOC_16C_IMM20
 -- : BFD_RELOC_16C_IMM20_C
 -- : BFD_RELOC_16C_IMM24
 -- : BFD_RELOC_16C_IMM24_C
 -- : BFD_RELOC_16C_IMM32
 -- : BFD_RELOC_16C_IMM32_C
     NS CR16C Relocations.
 -- : BFD_RELOC_CR16_NUM8
 -- : BFD_RELOC_CR16_NUM16
 -- : BFD_RELOC_CR16_NUM32
 -- : BFD_RELOC_CR16_NUM32a
 -- : BFD_RELOC_CR16_REGREL0
 -- : BFD_RELOC_CR16_REGREL4
 -- : BFD_RELOC_CR16_REGREL4a
 -- : BFD_RELOC_CR16_REGREL14
 -- : BFD_RELOC_CR16_REGREL14a
 -- : BFD_RELOC_CR16_REGREL16
 -- : BFD_RELOC_CR16_REGREL20
 -- : BFD_RELOC_CR16_REGREL20a
 -- : BFD_RELOC_CR16_ABS20
 -- : BFD_RELOC_CR16_ABS24
 -- : BFD_RELOC_CR16_IMM4
 -- : BFD_RELOC_CR16_IMM8
 -- : BFD_RELOC_CR16_IMM16
 -- : BFD_RELOC_CR16_IMM20
 -- : BFD_RELOC_CR16_IMM24
 -- : BFD_RELOC_CR16_IMM32
 -- : BFD_RELOC_CR16_IMM32a
 -- : BFD_RELOC_CR16_DISP4
 -- : BFD_RELOC_CR16_DISP8
 -- : BFD_RELOC_CR16_DISP16
 -- : BFD_RELOC_CR16_DISP20
 -- : BFD_RELOC_CR16_DISP24
 -- : BFD_RELOC_CR16_DISP24a
 -- : BFD_RELOC_CR16_SWITCH8
 -- : BFD_RELOC_CR16_SWITCH16
 -- : BFD_RELOC_CR16_SWITCH32
 -- : BFD_RELOC_CR16_GOT_REGREL20
 -- : BFD_RELOC_CR16_GOTC_REGREL20
 -- : BFD_RELOC_CR16_GLOB_DAT
     NS CR16 Relocations.
 -- : BFD_RELOC_CRX_REL4
 -- : BFD_RELOC_CRX_REL8
 -- : BFD_RELOC_CRX_REL8_CMP
 -- : BFD_RELOC_CRX_REL16
 -- : BFD_RELOC_CRX_REL24
 -- : BFD_RELOC_CRX_REL32
 -- : BFD_RELOC_CRX_REGREL12
 -- : BFD_RELOC_CRX_REGREL22
 -- : BFD_RELOC_CRX_REGREL28
 -- : BFD_RELOC_CRX_REGREL32
 -- : BFD_RELOC_CRX_ABS16
 -- : BFD_RELOC_CRX_ABS32
 -- : BFD_RELOC_CRX_NUM8
 -- : BFD_RELOC_CRX_NUM16
 -- : BFD_RELOC_CRX_NUM32
 -- : BFD_RELOC_CRX_IMM16
 -- : BFD_RELOC_CRX_IMM32
 -- : BFD_RELOC_CRX_SWITCH8
 -- : BFD_RELOC_CRX_SWITCH16
 -- : BFD_RELOC_CRX_SWITCH32
     NS CRX Relocations.
 -- : BFD_RELOC_CRIS_BDISP8
 -- : BFD_RELOC_CRIS_UNSIGNED_5
 -- : BFD_RELOC_CRIS_SIGNED_6
 -- : BFD_RELOC_CRIS_UNSIGNED_6
 -- : BFD_RELOC_CRIS_SIGNED_8
 -- : BFD_RELOC_CRIS_UNSIGNED_8
 -- : BFD_RELOC_CRIS_SIGNED_16
 -- : BFD_RELOC_CRIS_UNSIGNED_16
 -- : BFD_RELOC_CRIS_LAPCQ_OFFSET
 -- : BFD_RELOC_CRIS_UNSIGNED_4
     These relocs are only used within the CRIS assembler.  They are not
     (at present) written to any object files.
 -- : BFD_RELOC_CRIS_COPY
 -- : BFD_RELOC_CRIS_GLOB_DAT
 -- : BFD_RELOC_CRIS_JUMP_SLOT
 -- : BFD_RELOC_CRIS_RELATIVE
     Relocs used in ELF shared libraries for CRIS.
 -- : BFD_RELOC_CRIS_32_GOT
     32-bit offset to symbol-entry within GOT.
 -- : BFD_RELOC_CRIS_16_GOT
     16-bit offset to symbol-entry within GOT.
 -- : BFD_RELOC_CRIS_32_GOTPLT
     32-bit offset to symbol-entry within GOT, with PLT handling.
 -- : BFD_RELOC_CRIS_16_GOTPLT
     16-bit offset to symbol-entry within GOT, with PLT handling.
 -- : BFD_RELOC_CRIS_32_GOTREL
     32-bit offset to symbol, relative to GOT.
 -- : BFD_RELOC_CRIS_32_PLT_GOTREL
     32-bit offset to symbol with PLT entry, relative to GOT.
 -- : BFD_RELOC_CRIS_32_PLT_PCREL
     32-bit offset to symbol with PLT entry, relative to this
     relocation.
 -- : BFD_RELOC_CRIS_32_GOT_GD
 -- : BFD_RELOC_CRIS_16_GOT_GD
 -- : BFD_RELOC_CRIS_32_GD
 -- : BFD_RELOC_CRIS_DTP
 -- : BFD_RELOC_CRIS_32_DTPREL
 -- : BFD_RELOC_CRIS_16_DTPREL
 -- : BFD_RELOC_CRIS_32_GOT_TPREL
 -- : BFD_RELOC_CRIS_16_GOT_TPREL
 -- : BFD_RELOC_CRIS_32_TPREL
 -- : BFD_RELOC_CRIS_16_TPREL
 -- : BFD_RELOC_CRIS_DTPMOD
 -- : BFD_RELOC_CRIS_32_IE
     Relocs used in TLS code for CRIS.
 -- : BFD_RELOC_860_COPY
 -- : BFD_RELOC_860_GLOB_DAT
 -- : BFD_RELOC_860_JUMP_SLOT
 -- : BFD_RELOC_860_RELATIVE
 -- : BFD_RELOC_860_PC26
 -- : BFD_RELOC_860_PLT26
 -- : BFD_RELOC_860_PC16
 -- : BFD_RELOC_860_LOW0
 -- : BFD_RELOC_860_SPLIT0
 -- : BFD_RELOC_860_LOW1
 -- : BFD_RELOC_860_SPLIT1
 -- : BFD_RELOC_860_LOW2
 -- : BFD_RELOC_860_SPLIT2
 -- : BFD_RELOC_860_LOW3
 -- : BFD_RELOC_860_LOGOT0
 -- : BFD_RELOC_860_SPGOT0
 -- : BFD_RELOC_860_LOGOT1
 -- : BFD_RELOC_860_SPGOT1
 -- : BFD_RELOC_860_LOGOTOFF0
 -- : BFD_RELOC_860_SPGOTOFF0
 -- : BFD_RELOC_860_LOGOTOFF1
 -- : BFD_RELOC_860_SPGOTOFF1
 -- : BFD_RELOC_860_LOGOTOFF2
 -- : BFD_RELOC_860_LOGOTOFF3
 -- : BFD_RELOC_860_LOPC
 -- : BFD_RELOC_860_HIGHADJ
 -- : BFD_RELOC_860_HAGOT
 -- : BFD_RELOC_860_HAGOTOFF
 -- : BFD_RELOC_860_HAPC
 -- : BFD_RELOC_860_HIGH
 -- : BFD_RELOC_860_HIGOT
 -- : BFD_RELOC_860_HIGOTOFF
     Intel i860 Relocations.
 -- : BFD_RELOC_OR1K_REL_26
 -- : BFD_RELOC_OR1K_GOTPC_HI16
 -- : BFD_RELOC_OR1K_GOTPC_LO16
 -- : BFD_RELOC_OR1K_GOT16
 -- : BFD_RELOC_OR1K_PLT26
 -- : BFD_RELOC_OR1K_GOTOFF_HI16
 -- : BFD_RELOC_OR1K_GOTOFF_LO16
 -- : BFD_RELOC_OR1K_COPY
 -- : BFD_RELOC_OR1K_GLOB_DAT
 -- : BFD_RELOC_OR1K_JMP_SLOT
 -- : BFD_RELOC_OR1K_RELATIVE
 -- : BFD_RELOC_OR1K_TLS_GD_HI16
 -- : BFD_RELOC_OR1K_TLS_GD_LO16
 -- : BFD_RELOC_OR1K_TLS_LDM_HI16
 -- : BFD_RELOC_OR1K_TLS_LDM_LO16
 -- : BFD_RELOC_OR1K_TLS_LDO_HI16
 -- : BFD_RELOC_OR1K_TLS_LDO_LO16
 -- : BFD_RELOC_OR1K_TLS_IE_HI16
 -- : BFD_RELOC_OR1K_TLS_IE_LO16
 -- : BFD_RELOC_OR1K_TLS_LE_HI16
 -- : BFD_RELOC_OR1K_TLS_LE_LO16
 -- : BFD_RELOC_OR1K_TLS_TPOFF
 -- : BFD_RELOC_OR1K_TLS_DTPOFF
 -- : BFD_RELOC_OR1K_TLS_DTPMOD
     OpenRISC 1000 Relocations.
 -- : BFD_RELOC_H8_DIR16A8
 -- : BFD_RELOC_H8_DIR16R8
 -- : BFD_RELOC_H8_DIR24A8
 -- : BFD_RELOC_H8_DIR24R8
 -- : BFD_RELOC_H8_DIR32A16
 -- : BFD_RELOC_H8_DISP32A16
     H8 elf Relocations.
 -- : BFD_RELOC_XSTORMY16_REL_12
 -- : BFD_RELOC_XSTORMY16_12
 -- : BFD_RELOC_XSTORMY16_24
 -- : BFD_RELOC_XSTORMY16_FPTR16
     Sony Xstormy16 Relocations.
 -- : BFD_RELOC_RELC
     Self-describing complex relocations.
 -- : BFD_RELOC_XC16X_PAG
 -- : BFD_RELOC_XC16X_POF
 -- : BFD_RELOC_XC16X_SEG
 -- : BFD_RELOC_XC16X_SOF
     Infineon Relocations.
 -- : BFD_RELOC_VAX_GLOB_DAT
 -- : BFD_RELOC_VAX_JMP_SLOT
 -- : BFD_RELOC_VAX_RELATIVE
     Relocations used by VAX ELF.
 -- : BFD_RELOC_MT_PC16
     Morpho MT - 16 bit immediate relocation.
 -- : BFD_RELOC_MT_HI16
     Morpho MT - Hi 16 bits of an address.
 -- : BFD_RELOC_MT_LO16
     Morpho MT - Low 16 bits of an address.
 -- : BFD_RELOC_MT_GNU_VTINHERIT
     Morpho MT - Used to tell the linker which vtable entries are used.
 -- : BFD_RELOC_MT_GNU_VTENTRY
     Morpho MT - Used to tell the linker which vtable entries are used.
 -- : BFD_RELOC_MT_PCINSN8
     Morpho MT - 8 bit immediate relocation.
 -- : BFD_RELOC_MSP430_10_PCREL
 -- : BFD_RELOC_MSP430_16_PCREL
 -- : BFD_RELOC_MSP430_16
 -- : BFD_RELOC_MSP430_16_PCREL_BYTE
 -- : BFD_RELOC_MSP430_16_BYTE
 -- : BFD_RELOC_MSP430_2X_PCREL
 -- : BFD_RELOC_MSP430_RL_PCREL
 -- : BFD_RELOC_MSP430_ABS8
 -- : BFD_RELOC_MSP430X_PCR20_EXT_SRC
 -- : BFD_RELOC_MSP430X_PCR20_EXT_DST
 -- : BFD_RELOC_MSP430X_PCR20_EXT_ODST
 -- : BFD_RELOC_MSP430X_ABS20_EXT_SRC
 -- : BFD_RELOC_MSP430X_ABS20_EXT_DST
 -- : BFD_RELOC_MSP430X_ABS20_EXT_ODST
 -- : BFD_RELOC_MSP430X_ABS20_ADR_SRC
 -- : BFD_RELOC_MSP430X_ABS20_ADR_DST
 -- : BFD_RELOC_MSP430X_PCR16
 -- : BFD_RELOC_MSP430X_PCR20_CALL
 -- : BFD_RELOC_MSP430X_ABS16
 -- : BFD_RELOC_MSP430_ABS_HI16
 -- : BFD_RELOC_MSP430_PREL31
 -- : BFD_RELOC_MSP430_SYM_DIFF
     msp430 specific relocation codes
 -- : BFD_RELOC_NIOS2_S16
 -- : BFD_RELOC_NIOS2_U16
 -- : BFD_RELOC_NIOS2_CALL26
 -- : BFD_RELOC_NIOS2_IMM5
 -- : BFD_RELOC_NIOS2_CACHE_OPX
 -- : BFD_RELOC_NIOS2_IMM6
 -- : BFD_RELOC_NIOS2_IMM8
 -- : BFD_RELOC_NIOS2_HI16
 -- : BFD_RELOC_NIOS2_LO16
 -- : BFD_RELOC_NIOS2_HIADJ16
 -- : BFD_RELOC_NIOS2_GPREL
 -- : BFD_RELOC_NIOS2_UJMP
 -- : BFD_RELOC_NIOS2_CJMP
 -- : BFD_RELOC_NIOS2_CALLR
 -- : BFD_RELOC_NIOS2_ALIGN
 -- : BFD_RELOC_NIOS2_GOT16
 -- : BFD_RELOC_NIOS2_CALL16
 -- : BFD_RELOC_NIOS2_GOTOFF_LO
 -- : BFD_RELOC_NIOS2_GOTOFF_HA
 -- : BFD_RELOC_NIOS2_PCREL_LO
 -- : BFD_RELOC_NIOS2_PCREL_HA
 -- : BFD_RELOC_NIOS2_TLS_GD16
 -- : BFD_RELOC_NIOS2_TLS_LDM16
 -- : BFD_RELOC_NIOS2_TLS_LDO16
 -- : BFD_RELOC_NIOS2_TLS_IE16
 -- : BFD_RELOC_NIOS2_TLS_LE16
 -- : BFD_RELOC_NIOS2_TLS_DTPMOD
 -- : BFD_RELOC_NIOS2_TLS_DTPREL
 -- : BFD_RELOC_NIOS2_TLS_TPREL
 -- : BFD_RELOC_NIOS2_COPY
 -- : BFD_RELOC_NIOS2_GLOB_DAT
 -- : BFD_RELOC_NIOS2_JUMP_SLOT
 -- : BFD_RELOC_NIOS2_RELATIVE
 -- : BFD_RELOC_NIOS2_GOTOFF
 -- : BFD_RELOC_NIOS2_CALL26_NOAT
 -- : BFD_RELOC_NIOS2_GOT_LO
 -- : BFD_RELOC_NIOS2_GOT_HA
 -- : BFD_RELOC_NIOS2_CALL_LO
 -- : BFD_RELOC_NIOS2_CALL_HA
     Relocations used by the Altera Nios II core.
 -- : BFD_RELOC_IQ2000_OFFSET_16
 -- : BFD_RELOC_IQ2000_OFFSET_21
 -- : BFD_RELOC_IQ2000_UHI16
     IQ2000 Relocations.
 -- : BFD_RELOC_XTENSA_RTLD
     Special Xtensa relocation used only by PLT entries in ELF shared
     objects to indicate that the runtime linker should set the value to
     one of its own internal functions or data structures.
 -- : BFD_RELOC_XTENSA_GLOB_DAT
 -- : BFD_RELOC_XTENSA_JMP_SLOT
 -- : BFD_RELOC_XTENSA_RELATIVE
     Xtensa relocations for ELF shared objects.
 -- : BFD_RELOC_XTENSA_PLT
     Xtensa relocation used in ELF object files for symbols that may
     require PLT entries.  Otherwise, this is just a generic 32-bit
     relocation.
 -- : BFD_RELOC_XTENSA_DIFF8
 -- : BFD_RELOC_XTENSA_DIFF16
 -- : BFD_RELOC_XTENSA_DIFF32
     Xtensa relocations to mark the difference of two local symbols.
     These are only needed to support linker relaxation and can be
     ignored when not relaxing.  The field is set to the value of the
     difference assuming no relaxation.  The relocation encodes the
     position of the first symbol so the linker can determine whether to
     adjust the field value.
 -- : BFD_RELOC_XTENSA_SLOT0_OP
 -- : BFD_RELOC_XTENSA_SLOT1_OP
 -- : BFD_RELOC_XTENSA_SLOT2_OP
 -- : BFD_RELOC_XTENSA_SLOT3_OP
 -- : BFD_RELOC_XTENSA_SLOT4_OP
 -- : BFD_RELOC_XTENSA_SLOT5_OP
 -- : BFD_RELOC_XTENSA_SLOT6_OP
 -- : BFD_RELOC_XTENSA_SLOT7_OP
 -- : BFD_RELOC_XTENSA_SLOT8_OP
 -- : BFD_RELOC_XTENSA_SLOT9_OP
 -- : BFD_RELOC_XTENSA_SLOT10_OP
 -- : BFD_RELOC_XTENSA_SLOT11_OP
 -- : BFD_RELOC_XTENSA_SLOT12_OP
 -- : BFD_RELOC_XTENSA_SLOT13_OP
 -- : BFD_RELOC_XTENSA_SLOT14_OP
     Generic Xtensa relocations for instruction operands.  Only the slot
     number is encoded in the relocation.  The relocation applies to the
     last PC-relative immediate operand, or if there are no PC-relative
     immediates, to the last immediate operand.
 -- : BFD_RELOC_XTENSA_SLOT0_ALT
 -- : BFD_RELOC_XTENSA_SLOT1_ALT
 -- : BFD_RELOC_XTENSA_SLOT2_ALT
 -- : BFD_RELOC_XTENSA_SLOT3_ALT
 -- : BFD_RELOC_XTENSA_SLOT4_ALT
 -- : BFD_RELOC_XTENSA_SLOT5_ALT
 -- : BFD_RELOC_XTENSA_SLOT6_ALT
 -- : BFD_RELOC_XTENSA_SLOT7_ALT
 -- : BFD_RELOC_XTENSA_SLOT8_ALT
 -- : BFD_RELOC_XTENSA_SLOT9_ALT
 -- : BFD_RELOC_XTENSA_SLOT10_ALT
 -- : BFD_RELOC_XTENSA_SLOT11_ALT
 -- : BFD_RELOC_XTENSA_SLOT12_ALT
 -- : BFD_RELOC_XTENSA_SLOT13_ALT
 -- : BFD_RELOC_XTENSA_SLOT14_ALT
     Alternate Xtensa relocations.  Only the slot is encoded in the
     relocation.  The meaning of these relocations is opcode-specific.
 -- : BFD_RELOC_XTENSA_OP0
 -- : BFD_RELOC_XTENSA_OP1
 -- : BFD_RELOC_XTENSA_OP2
     Xtensa relocations for backward compatibility.  These have all been
     replaced by BFD_RELOC_XTENSA_SLOT0_OP.
 -- : BFD_RELOC_XTENSA_ASM_EXPAND
     Xtensa relocation to mark that the assembler expanded the
     instructions from an original target.  The expansion size is
     encoded in the reloc size.
 -- : BFD_RELOC_XTENSA_ASM_SIMPLIFY
     Xtensa relocation to mark that the linker should simplify
     assembler-expanded instructions.  This is commonly used internally
     by the linker after analysis of a BFD_RELOC_XTENSA_ASM_EXPAND.
 -- : BFD_RELOC_XTENSA_TLSDESC_FN
 -- : BFD_RELOC_XTENSA_TLSDESC_ARG
 -- : BFD_RELOC_XTENSA_TLS_DTPOFF
 -- : BFD_RELOC_XTENSA_TLS_TPOFF
 -- : BFD_RELOC_XTENSA_TLS_FUNC
 -- : BFD_RELOC_XTENSA_TLS_ARG
 -- : BFD_RELOC_XTENSA_TLS_CALL
     Xtensa TLS relocations.
 -- : BFD_RELOC_Z80_DISP8
     8 bit signed offset in (ix+d) or (iy+d).
 -- : BFD_RELOC_Z8K_DISP7
     DJNZ offset.
 -- : BFD_RELOC_Z8K_CALLR
     CALR offset.
 -- : BFD_RELOC_Z8K_IMM4L
     4 bit value.
 -- : BFD_RELOC_LM32_CALL
 -- : BFD_RELOC_LM32_BRANCH
 -- : BFD_RELOC_LM32_16_GOT
 -- : BFD_RELOC_LM32_GOTOFF_HI16
 -- : BFD_RELOC_LM32_GOTOFF_LO16
 -- : BFD_RELOC_LM32_COPY
 -- : BFD_RELOC_LM32_GLOB_DAT
 -- : BFD_RELOC_LM32_JMP_SLOT
 -- : BFD_RELOC_LM32_RELATIVE
     Lattice Mico32 relocations.
 -- : BFD_RELOC_MACH_O_SECTDIFF
     Difference between two section addreses.  Must be followed by a
     BFD_RELOC_MACH_O_PAIR.
 -- : BFD_RELOC_MACH_O_LOCAL_SECTDIFF
     Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.
 -- : BFD_RELOC_MACH_O_PAIR
     Pair of relocation.  Contains the first symbol.
 -- : BFD_RELOC_MACH_O_X86_64_BRANCH32
 -- : BFD_RELOC_MACH_O_X86_64_BRANCH8
     PCREL relocations.  They are marked as branch to create PLT entry
     if required.
 -- : BFD_RELOC_MACH_O_X86_64_GOT
     Used when referencing a GOT entry.
 -- : BFD_RELOC_MACH_O_X86_64_GOT_LOAD
     Used when loading a GOT entry with movq.  It is specially marked so
     that the linker could optimize the movq to a leaq if possible.
 -- : BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32
     Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
 -- : BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64
     Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
 -- : BFD_RELOC_MACH_O_X86_64_PCREL32_1
     Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
 -- : BFD_RELOC_MACH_O_X86_64_PCREL32_2
     Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.
 -- : BFD_RELOC_MACH_O_X86_64_PCREL32_4
     Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
 -- : BFD_RELOC_MICROBLAZE_32_LO
     This is a 32 bit reloc for the microblaze that stores the low 16
     bits of a value
 -- : BFD_RELOC_MICROBLAZE_32_LO_PCREL
     This is a 32 bit pc-relative reloc for the microblaze that stores
     the low 16 bits of a value
 -- : BFD_RELOC_MICROBLAZE_32_ROSDA
     This is a 32 bit reloc for the microblaze that stores a value
     relative to the read-only small data area anchor
 -- : BFD_RELOC_MICROBLAZE_32_RWSDA
     This is a 32 bit reloc for the microblaze that stores a value
     relative to the read-write small data area anchor
 -- : BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
     This is a 32 bit reloc for the microblaze to handle expressions of
     the form "Symbol Op Symbol"
 -- : BFD_RELOC_MICROBLAZE_64_NONE
     This is a 64 bit reloc that stores the 32 bit pc relative value in
     two words (with an imm instruction).  No relocation is done here -
     only used for relaxing
 -- : BFD_RELOC_MICROBLAZE_64_GOTPC
     This is a 64 bit reloc that stores the 32 bit pc relative value in
     two words (with an imm instruction).  The relocation is PC-relative
     GOT offset
 -- : BFD_RELOC_MICROBLAZE_64_GOT
     This is a 64 bit reloc that stores the 32 bit pc relative value in
     two words (with an imm instruction).  The relocation is GOT offset
 -- : BFD_RELOC_MICROBLAZE_64_PLT
     This is a 64 bit reloc that stores the 32 bit pc relative value in
     two words (with an imm instruction).  The relocation is PC-relative
     offset into PLT
 -- : BFD_RELOC_MICROBLAZE_64_GOTOFF
     This is a 64 bit reloc that stores the 32 bit GOT relative value in
     two words (with an imm instruction).  The relocation is relative
     offset from _GLOBAL_OFFSET_TABLE_
 -- : BFD_RELOC_MICROBLAZE_32_GOTOFF
     This is a 32 bit reloc that stores the 32 bit GOT relative value in
     a word.  The relocation is relative offset from
 -- : BFD_RELOC_MICROBLAZE_COPY
     This is used to tell the dynamic linker to copy the value out of
     the dynamic object into the runtime process image.
 -- : BFD_RELOC_MICROBLAZE_64_TLS
     Unused Reloc
 -- : BFD_RELOC_MICROBLAZE_64_TLSGD
     This is a 64 bit reloc that stores the 32 bit GOT relative value of
     the GOT TLS GD info entry in two words (with an imm instruction).
     The relocation is GOT offset.
 -- : BFD_RELOC_MICROBLAZE_64_TLSLD
     This is a 64 bit reloc that stores the 32 bit GOT relative value of
     the GOT TLS LD info entry in two words (with an imm instruction).
     The relocation is GOT offset.
 -- : BFD_RELOC_MICROBLAZE_32_TLSDTPMOD
     This is a 32 bit reloc that stores the Module ID to GOT(n).
 -- : BFD_RELOC_MICROBLAZE_32_TLSDTPREL
     This is a 32 bit reloc that stores TLS offset to GOT(n+1).
 -- : BFD_RELOC_MICROBLAZE_64_TLSDTPREL
     This is a 32 bit reloc for storing TLS offset to two words (uses
     imm instruction)
 -- : BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL
     This is a 64 bit reloc that stores 32-bit thread pointer relative
     offset to two words (uses imm instruction).
 -- : BFD_RELOC_MICROBLAZE_64_TLSTPREL
     This is a 64 bit reloc that stores 32-bit thread pointer relative
     offset to two words (uses imm instruction).
 -- : BFD_RELOC_AARCH64_RELOC_START
     AArch64 pseudo relocation code to mark the start of the AArch64
     relocation enumerators.  N.B. the order of the enumerators is
     important as several tables in the AArch64 bfd backend are indexed
     by these enumerators; make sure they are all synced.
 -- : BFD_RELOC_AARCH64_NONE
     AArch64 null relocation code.
 -- : BFD_RELOC_AARCH64_64
 -- : BFD_RELOC_AARCH64_32
 -- : BFD_RELOC_AARCH64_16
     Basic absolute relocations of N bits.  These are equivalent to
     BFD_RELOC_N and they were added to assist the indexing of the howto
     table.
 -- : BFD_RELOC_AARCH64_64_PCREL
 -- : BFD_RELOC_AARCH64_32_PCREL
 -- : BFD_RELOC_AARCH64_16_PCREL
     PC-relative relocations.  These are equivalent to BFD_RELOC_N_PCREL
     and they were added to assist the indexing of the howto table.
 -- : BFD_RELOC_AARCH64_MOVW_G0
     AArch64 MOV[NZK] instruction with most significant bits 0 to 15 of
     an unsigned address/value.
 -- : BFD_RELOC_AARCH64_MOVW_G0_NC
     AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
     an address/value.  No overflow checking.
 -- : BFD_RELOC_AARCH64_MOVW_G1
     AArch64 MOV[NZK] instruction with most significant bits 16 to 31 of
     an unsigned address/value.
 -- : BFD_RELOC_AARCH64_MOVW_G1_NC
     AArch64 MOV[NZK] instruction with less significant bits 16 to 31 of
     an address/value.  No overflow checking.
 -- : BFD_RELOC_AARCH64_MOVW_G2
     AArch64 MOV[NZK] instruction with most significant bits 32 to 47 of
     an unsigned address/value.
 -- : BFD_RELOC_AARCH64_MOVW_G2_NC
     AArch64 MOV[NZK] instruction with less significant bits 32 to 47 of
     an address/value.  No overflow checking.
 -- : BFD_RELOC_AARCH64_MOVW_G3
     AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 of
     a signed or unsigned address/value.
 -- : BFD_RELOC_AARCH64_MOVW_G0_S
     AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
     signed value.  Changes instruction to MOVZ or MOVN depending on the
     value's sign.
 -- : BFD_RELOC_AARCH64_MOVW_G1_S
     AArch64 MOV[NZ] instruction with most significant bits 16 to 31 of
     a signed value.  Changes instruction to MOVZ or MOVN depending on
     the value's sign.
 -- : BFD_RELOC_AARCH64_MOVW_G2_S
     AArch64 MOV[NZ] instruction with most significant bits 32 to 47 of
     a signed value.  Changes instruction to MOVZ or MOVN depending on
     the value's sign.
 -- : BFD_RELOC_AARCH64_LD_LO19_PCREL
     AArch64 Load Literal instruction, holding a 19 bit pc-relative word
     offset.  The lowest two bits must be zero and are not stored in the
     instruction, giving a 21 bit signed byte offset.
 -- : BFD_RELOC_AARCH64_ADR_LO21_PCREL
     AArch64 ADR instruction, holding a simple 21 bit pc-relative byte
     offset.
 -- : BFD_RELOC_AARCH64_ADR_HI21_PCREL
     AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
     offset, giving a 4KB aligned page base address.
 -- : BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL
     AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
     offset, giving a 4KB aligned page base address, but with no
     overflow checking.
 -- : BFD_RELOC_AARCH64_ADD_LO12
     AArch64 ADD immediate instruction, holding bits 0 to 11 of the
     address.  Used in conjunction with
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
 -- : BFD_RELOC_AARCH64_LDST8_LO12
     AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
     address.  Used in conjunction with
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
 -- : BFD_RELOC_AARCH64_TSTBR14
     AArch64 14 bit pc-relative test bit and branch.  The lowest two
     bits must be zero and are not stored in the instruction, giving a
     16 bit signed byte offset.
 -- : BFD_RELOC_AARCH64_BRANCH19
     AArch64 19 bit pc-relative conditional branch and compare & branch.
     The lowest two bits must be zero and are not stored in the
     instruction, giving a 21 bit signed byte offset.
 -- : BFD_RELOC_AARCH64_JUMP26
     AArch64 26 bit pc-relative unconditional branch.  The lowest two
     bits must be zero and are not stored in the instruction, giving a
     28 bit signed byte offset.
 -- : BFD_RELOC_AARCH64_CALL26
     AArch64 26 bit pc-relative unconditional branch and link.  The
     lowest two bits must be zero and are not stored in the instruction,
     giving a 28 bit signed byte offset.
 -- : BFD_RELOC_AARCH64_LDST16_LO12
     AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
     address.  Used in conjunction with
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
 -- : BFD_RELOC_AARCH64_LDST32_LO12
     AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
     address.  Used in conjunction with
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
 -- : BFD_RELOC_AARCH64_LDST64_LO12
     AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
     address.  Used in conjunction with
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
 -- : BFD_RELOC_AARCH64_LDST128_LO12
     AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
     address.  Used in conjunction with
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
 -- : BFD_RELOC_AARCH64_GOT_LD_PREL19
     AArch64 Load Literal instruction, holding a 19 bit PC relative word
     offset of the global offset table entry for a symbol.  The lowest
     two bits must be zero and are not stored in the instruction, giving
     a 21 bit signed byte offset.  This relocation type requires signed
     overflow checking.
 -- : BFD_RELOC_AARCH64_ADR_GOT_PAGE
     Get to the page base of the global offset table entry for a symbol
     as part of an ADRP instruction using a 21 bit PC relative
     value.Used in conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
 -- : BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
     Unsigned 12 bit byte offset for 64 bit load/store from the page of
     the GOT entry for this symbol.  Used in conjunction with
     BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in LP64 ABI only.
 -- : BFD_RELOC_AARCH64_LD32_GOT_LO12_NC
     Unsigned 12 bit byte offset for 32 bit load/store from the page of
     the GOT entry for this symbol.  Used in conjunction with
     BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only.
 -- : BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
     Get to the page base of the global offset table entry for a symbols
     tls_index structure as part of an adrp instruction using a 21 bit
     PC relative value.  Used in conjunction with
     BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
 -- : BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
     Unsigned 12 bit byte offset to global offset table entry for a
     symbols tls_index structure.  Used in conjunction with
     BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
 -- : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1
     AArch64 TLS INITIAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
     AArch64 TLS INITIAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
     AArch64 TLS INITIAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
     AArch64 TLS INITIAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC
     AArch64 TLS INITIAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19
     AArch64 TLS INITIAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
     AArch64 TLS LOCAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
     AArch64 TLS LOCAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
     AArch64 TLS LOCAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0
     AArch64 TLS LOCAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
     AArch64 TLS LOCAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
     AArch64 TLS LOCAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12
     AArch64 TLS LOCAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC
     AArch64 TLS LOCAL EXEC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_LD_PREL19
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_OFF_G1
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_LDR
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_ADD
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC_CALL
     AArch64 TLS DESC relocation.
 -- : BFD_RELOC_AARCH64_COPY
     AArch64 TLS relocation.
 -- : BFD_RELOC_AARCH64_GLOB_DAT
     AArch64 TLS relocation.
 -- : BFD_RELOC_AARCH64_JUMP_SLOT
     AArch64 TLS relocation.
 -- : BFD_RELOC_AARCH64_RELATIVE
     AArch64 TLS relocation.
 -- : BFD_RELOC_AARCH64_TLS_DTPMOD
     AArch64 TLS relocation.
 -- : BFD_RELOC_AARCH64_TLS_DTPREL
     AArch64 TLS relocation.
 -- : BFD_RELOC_AARCH64_TLS_TPREL
     AArch64 TLS relocation.
 -- : BFD_RELOC_AARCH64_TLSDESC
     AArch64 TLS relocation.
 -- : BFD_RELOC_AARCH64_IRELATIVE
     AArch64 support for STT_GNU_IFUNC.
 -- : BFD_RELOC_AARCH64_RELOC_END
     AArch64 pseudo relocation code to mark the end of the AArch64
     relocation enumerators that have direct mapping to ELF reloc codes.
     There are a few more enumerators after this one; those are mainly
     used by the AArch64 assembler for the internal fixup or to select
     one of the above enumerators.
 -- : BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP
     AArch64 pseudo relocation code to be used internally by the AArch64
     assembler and not (currently) written to any object files.
 -- : BFD_RELOC_AARCH64_LDST_LO12
     AArch64 unspecified load/store instruction, holding bits 0 to 11 of
     the address.  Used in conjunction with
     BFD_RELOC_AARCH64_ADR_HI21_PCREL.
 -- : BFD_RELOC_AARCH64_LD_GOT_LO12_NC
     AArch64 pseudo relocation code to be used internally by the AArch64
     assembler and not (currently) written to any object files.
 -- : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC
     AArch64 pseudo relocation code to be used internally by the AArch64
     assembler and not (currently) written to any object files.
 -- : BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC
     AArch64 pseudo relocation code to be used internally by the AArch64
     assembler and not (currently) written to any object files.
 -- : BFD_RELOC_TILEPRO_COPY
 -- : BFD_RELOC_TILEPRO_GLOB_DAT
 -- : BFD_RELOC_TILEPRO_JMP_SLOT
 -- : BFD_RELOC_TILEPRO_RELATIVE
 -- : BFD_RELOC_TILEPRO_BROFF_X1
 -- : BFD_RELOC_TILEPRO_JOFFLONG_X1
 -- : BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT
 -- : BFD_RELOC_TILEPRO_IMM8_X0
 -- : BFD_RELOC_TILEPRO_IMM8_Y0
 -- : BFD_RELOC_TILEPRO_IMM8_X1
 -- : BFD_RELOC_TILEPRO_IMM8_Y1
 -- : BFD_RELOC_TILEPRO_DEST_IMM8_X1
 -- : BFD_RELOC_TILEPRO_MT_IMM15_X1
 -- : BFD_RELOC_TILEPRO_MF_IMM15_X1
 -- : BFD_RELOC_TILEPRO_IMM16_X0
 -- : BFD_RELOC_TILEPRO_IMM16_X1
 -- : BFD_RELOC_TILEPRO_IMM16_X0_LO
 -- : BFD_RELOC_TILEPRO_IMM16_X1_LO
 -- : BFD_RELOC_TILEPRO_IMM16_X0_HI
 -- : BFD_RELOC_TILEPRO_IMM16_X1_HI
 -- : BFD_RELOC_TILEPRO_IMM16_X0_HA
 -- : BFD_RELOC_TILEPRO_IMM16_X1_HA
 -- : BFD_RELOC_TILEPRO_IMM16_X0_PCREL
 -- : BFD_RELOC_TILEPRO_IMM16_X1_PCREL
 -- : BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL
 -- : BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL
 -- : BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL
 -- : BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL
 -- : BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL
 -- : BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL
 -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT
 -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT
 -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO
 -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO
 -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI
 -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI
 -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA
 -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA
 -- : BFD_RELOC_TILEPRO_MMSTART_X0
 -- : BFD_RELOC_TILEPRO_MMEND_X0
 -- : BFD_RELOC_TILEPRO_MMSTART_X1
 -- : BFD_RELOC_TILEPRO_MMEND_X1
 -- : BFD_RELOC_TILEPRO_SHAMT_X0
 -- : BFD_RELOC_TILEPRO_SHAMT_X1
 -- : BFD_RELOC_TILEPRO_SHAMT_Y0
 -- : BFD_RELOC_TILEPRO_SHAMT_Y1
 -- : BFD_RELOC_TILEPRO_TLS_GD_CALL
 -- : BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD
 -- : BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD
 -- : BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD
 -- : BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD
 -- : BFD_RELOC_TILEPRO_TLS_IE_LOAD
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA
 -- : BFD_RELOC_TILEPRO_TLS_DTPMOD32
 -- : BFD_RELOC_TILEPRO_TLS_DTPOFF32
 -- : BFD_RELOC_TILEPRO_TLS_TPOFF32
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI
 -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA
 -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA
     Tilera TILEPro Relocations.
 -- : BFD_RELOC_TILEGX_HW0
 -- : BFD_RELOC_TILEGX_HW1
 -- : BFD_RELOC_TILEGX_HW2
 -- : BFD_RELOC_TILEGX_HW3
 -- : BFD_RELOC_TILEGX_HW0_LAST
 -- : BFD_RELOC_TILEGX_HW1_LAST
 -- : BFD_RELOC_TILEGX_HW2_LAST
 -- : BFD_RELOC_TILEGX_COPY
 -- : BFD_RELOC_TILEGX_GLOB_DAT
 -- : BFD_RELOC_TILEGX_JMP_SLOT
 -- : BFD_RELOC_TILEGX_RELATIVE
 -- : BFD_RELOC_TILEGX_BROFF_X1
 -- : BFD_RELOC_TILEGX_JUMPOFF_X1
 -- : BFD_RELOC_TILEGX_JUMPOFF_X1_PLT
 -- : BFD_RELOC_TILEGX_IMM8_X0
 -- : BFD_RELOC_TILEGX_IMM8_Y0
 -- : BFD_RELOC_TILEGX_IMM8_X1
 -- : BFD_RELOC_TILEGX_IMM8_Y1
 -- : BFD_RELOC_TILEGX_DEST_IMM8_X1
 -- : BFD_RELOC_TILEGX_MT_IMM14_X1
 -- : BFD_RELOC_TILEGX_MF_IMM14_X1
 -- : BFD_RELOC_TILEGX_MMSTART_X0
 -- : BFD_RELOC_TILEGX_MMEND_X0
 -- : BFD_RELOC_TILEGX_SHAMT_X0
 -- : BFD_RELOC_TILEGX_SHAMT_X1
 -- : BFD_RELOC_TILEGX_SHAMT_Y0
 -- : BFD_RELOC_TILEGX_SHAMT_Y1
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW3
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW3
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE
 -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE
 -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE
 -- : BFD_RELOC_TILEGX_TLS_DTPMOD64
 -- : BFD_RELOC_TILEGX_TLS_DTPOFF64
 -- : BFD_RELOC_TILEGX_TLS_TPOFF64
 -- : BFD_RELOC_TILEGX_TLS_DTPMOD32
 -- : BFD_RELOC_TILEGX_TLS_DTPOFF32
 -- : BFD_RELOC_TILEGX_TLS_TPOFF32
 -- : BFD_RELOC_TILEGX_TLS_GD_CALL
 -- : BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD
 -- : BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD
 -- : BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD
 -- : BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD
 -- : BFD_RELOC_TILEGX_TLS_IE_LOAD
 -- : BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD
 -- : BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD
 -- : BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD
 -- : BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
     Tilera TILE-Gx Relocations.
 -- : BFD_RELOC_EPIPHANY_SIMM8
     Adapteva EPIPHANY - 8 bit signed pc-relative displacement
 -- : BFD_RELOC_EPIPHANY_SIMM24
     Adapteva EPIPHANY - 24 bit signed pc-relative displacement
 -- : BFD_RELOC_EPIPHANY_HIGH
     Adapteva EPIPHANY - 16 most-significant bits of absolute address
 -- : BFD_RELOC_EPIPHANY_LOW
     Adapteva EPIPHANY - 16 least-significant bits of absolute address
 -- : BFD_RELOC_EPIPHANY_SIMM11
     Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
 -- : BFD_RELOC_EPIPHANY_IMM11
     Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st
     displacement)
 -- : BFD_RELOC_EPIPHANY_IMM8
     Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.


     typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;

2.10.2.2 'bfd_reloc_type_lookup'
................................

*Synopsis*
     reloc_howto_type *bfd_reloc_type_lookup
        (bfd *abfd, bfd_reloc_code_real_type code);
     reloc_howto_type *bfd_reloc_name_lookup
        (bfd *abfd, const char *reloc_name);
   *Description*
Return a pointer to a howto structure which, when invoked, will perform
the relocation CODE on data from the architecture noted.

2.10.2.3 'bfd_default_reloc_type_lookup'
........................................

*Synopsis*
     reloc_howto_type *bfd_default_reloc_type_lookup
        (bfd *abfd, bfd_reloc_code_real_type  code);
   *Description*
Provides a default relocation lookup routine for any architecture.

2.10.2.4 'bfd_get_reloc_code_name'
..................................

*Synopsis*
     const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
   *Description*
Provides a printable name for the supplied relocation code.  Useful
mainly for printing error messages.

2.10.2.5 'bfd_generic_relax_section'
....................................

*Synopsis*
     bfd_boolean bfd_generic_relax_section
        (bfd *abfd,
         asection *section,
         struct bfd_link_info *,
         bfd_boolean *);
   *Description*
Provides default handling for relaxing for back ends which don't do
relaxing.

2.10.2.6 'bfd_generic_gc_sections'
..................................

*Synopsis*
     bfd_boolean bfd_generic_gc_sections
        (bfd *, struct bfd_link_info *);
   *Description*
Provides default handling for relaxing for back ends which don't do
section gc - i.e., does nothing.

2.10.2.7 'bfd_generic_lookup_section_flags'
...........................................

*Synopsis*
     bfd_boolean bfd_generic_lookup_section_flags
        (struct bfd_link_info *, struct flag_info *, asection *);
   *Description*
Provides default handling for section flags lookup - i.e., does nothing.
Returns FALSE if the section should be omitted, otherwise TRUE.

2.10.2.8 'bfd_generic_merge_sections'
.....................................

*Synopsis*
     bfd_boolean bfd_generic_merge_sections
        (bfd *, struct bfd_link_info *);
   *Description*
Provides default handling for SEC_MERGE section merging for back ends
which don't have SEC_MERGE support - i.e., does nothing.

2.10.2.9 'bfd_generic_get_relocated_section_contents'
.....................................................

*Synopsis*
     bfd_byte *bfd_generic_get_relocated_section_contents
        (bfd *abfd,
         struct bfd_link_info *link_info,
         struct bfd_link_order *link_order,
         bfd_byte *data,
         bfd_boolean relocatable,
         asymbol **symbols);
   *Description*
Provides default handling of relocation effort for back ends which can't
be bothered to do it efficiently.


File: bfd.info,  Node: Core Files,  Next: Targets,  Prev: Relocations,  Up: BFD front end

2.11 Core files
===============

2.11.1 Core file functions
--------------------------

*Description*
These are functions pertaining to core files.

2.11.1.1 'bfd_core_file_failing_command'
........................................

*Synopsis*
     const char *bfd_core_file_failing_command (bfd *abfd);
   *Description*
Return a read-only string explaining which program was running when it
failed and produced the core file ABFD.

2.11.1.2 'bfd_core_file_failing_signal'
.......................................

*Synopsis*
     int bfd_core_file_failing_signal (bfd *abfd);
   *Description*
Returns the signal number which caused the core dump which generated the
file the BFD ABFD is attached to.

2.11.1.3 'bfd_core_file_pid'
............................

*Synopsis*
     int bfd_core_file_pid (bfd *abfd);
   *Description*
Returns the PID of the process the core dump the BFD ABFD is attached to
was generated from.

2.11.1.4 'core_file_matches_executable_p'
.........................................

*Synopsis*
     bfd_boolean core_file_matches_executable_p
        (bfd *core_bfd, bfd *exec_bfd);
   *Description*
Return 'TRUE' if the core file attached to CORE_BFD was generated by a
run of the executable file attached to EXEC_BFD, 'FALSE' otherwise.

2.11.1.5 'generic_core_file_matches_executable_p'
.................................................

*Synopsis*
     bfd_boolean generic_core_file_matches_executable_p
        (bfd *core_bfd, bfd *exec_bfd);
   *Description*
Return TRUE if the core file attached to CORE_BFD was generated by a run
of the executable file attached to EXEC_BFD.  The match is based on
executable basenames only.

   Note: When not able to determine the core file failing command or the
executable name, we still return TRUE even though we're not sure that
core file and executable match.  This is to avoid generating a false
warning in situations where we really don't know whether they match or
not.


File: bfd.info,  Node: Targets,  Next: Architectures,  Prev: Core Files,  Up: BFD front end

2.12 Targets
============

*Description*
Each port of BFD to a different machine requires the creation of a
target back end.  All the back end provides to the root part of BFD is a
structure containing pointers to functions which perform certain low
level operations on files.  BFD translates the applications's requests
through a pointer into calls to the back end routines.

   When a file is opened with 'bfd_openr', its format and target are
unknown.  BFD uses various mechanisms to determine how to interpret the
file.  The operations performed are:

   * Create a BFD by calling the internal routine '_bfd_new_bfd', then
     call 'bfd_find_target' with the target string supplied to
     'bfd_openr' and the new BFD pointer.

   * If a null target string was provided to 'bfd_find_target', look up
     the environment variable 'GNUTARGET' and use that as the target
     string.

   * If the target string is still 'NULL', or the target string is
     'default', then use the first item in the target vector as the
     target type, and set 'target_defaulted' in the BFD to cause
     'bfd_check_format' to loop through all the targets.  *Note
     bfd_target::.  *Note Formats::.

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

   * Otherwise return the error 'bfd_error_invalid_target' to
     'bfd_openr'.

   * 'bfd_openr' attempts to open the file using 'bfd_open_file', and
     returns the BFD.
   Once the BFD has been opened and the target selected, the file format
may be determined.  This is done by calling 'bfd_check_format' on the
BFD with a suggested format.  If 'target_defaulted' has been set, each
possible target type is tried to see if it recognizes the specified
format.  'bfd_check_format' returns 'TRUE' when the caller guesses
right.
* Menu:

* bfd_target::


File: bfd.info,  Node: bfd_target,  Prev: Targets,  Up: Targets

2.12.1 bfd_target
-----------------

*Description*
This structure contains everything that BFD knows about a target.  It
includes things like its byte order, name, and which routines to call to
do various operations.

   Every BFD points to a target structure with its 'xvec' member.

   The macros below are used to dispatch to functions through the
'bfd_target' vector.  They are used in a number of macros further down
in 'bfd.h', and are also used when calling various routines by hand
inside the BFD implementation.  The ARGLIST argument must be
parenthesized; it contains all the arguments to the called function.

   They make the documentation (more) unpleasant to read, so if someone
wants to fix this and not break the above, please do.
     #define BFD_SEND(bfd, message, arglist) \
       ((*((bfd)->xvec->message)) arglist)

     #ifdef DEBUG_BFD_SEND
     #undef BFD_SEND
     #define BFD_SEND(bfd, message, arglist) \
       (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
         ((*((bfd)->xvec->message)) arglist) : \
         (bfd_assert (__FILE__,__LINE__), NULL))
     #endif
   For operations which index on the BFD format:
     #define BFD_SEND_FMT(bfd, message, arglist) \
       (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)

     #ifdef DEBUG_BFD_SEND
     #undef BFD_SEND_FMT
     #define BFD_SEND_FMT(bfd, message, arglist) \
       (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
        (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
        (bfd_assert (__FILE__,__LINE__), NULL))
     #endif

   This is the structure which defines the type of BFD this is.  The
'xvec' member of the struct 'bfd' itself points here.  Each module that
implements access to a different target under BFD, defines one of these.

   FIXME, these names should be rationalised with the names of the entry
points which call them.  Too bad we can't have one macro to define them
both!
     enum bfd_flavour
     {
       bfd_target_unknown_flavour,
       bfd_target_aout_flavour,
       bfd_target_coff_flavour,
       bfd_target_ecoff_flavour,
       bfd_target_xcoff_flavour,
       bfd_target_elf_flavour,
       bfd_target_ieee_flavour,
       bfd_target_nlm_flavour,
       bfd_target_oasys_flavour,
       bfd_target_tekhex_flavour,
       bfd_target_srec_flavour,
       bfd_target_verilog_flavour,
       bfd_target_ihex_flavour,
       bfd_target_som_flavour,
       bfd_target_os9k_flavour,
       bfd_target_versados_flavour,
       bfd_target_msdos_flavour,
       bfd_target_ovax_flavour,
       bfd_target_evax_flavour,
       bfd_target_mmo_flavour,
       bfd_target_mach_o_flavour,
       bfd_target_pef_flavour,
       bfd_target_pef_xlib_flavour,
       bfd_target_sym_flavour
     };

     enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };

     /* Forward declaration.  */
     typedef struct bfd_link_info _bfd_link_info;

     /* Forward declaration.  */
     typedef struct flag_info flag_info;

     typedef struct bfd_target
     {
       /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
       char *name;

      /* The "flavour" of a back end is a general indication about
         the contents of a file.  */
       enum bfd_flavour flavour;

       /* The order of bytes within the data area of a file.  */
       enum bfd_endian byteorder;

      /* The order of bytes within the header parts of a file.  */
       enum bfd_endian header_byteorder;

       /* A mask of all the flags which an executable may have set -
          from the set BFD_NO_FLAGS, HAS_RELOC, ...D_PAGED.  */
       flagword object_flags;

      /* A mask of all the flags which a section may have set - from
         the set SEC_NO_FLAGS, SEC_ALLOC, ...SET_NEVER_LOAD.  */
       flagword section_flags;

      /* The character normally found at the front of a symbol.
         (if any), perhaps `_'.  */
       char symbol_leading_char;

      /* The pad character for file names within an archive header.  */
       char ar_pad_char;

       /* The maximum number of characters in an archive header.  */
       unsigned char ar_max_namelen;

       /* How well this target matches, used to select between various
          possible targets when more than one target matches.  */
       unsigned char match_priority;

       /* Entries for byte swapping for data. These are different from the
          other entry points, since they don't take a BFD as the first argument.
          Certain other handlers could do the same.  */
       bfd_uint64_t   (*bfd_getx64) (const void *);
       bfd_int64_t    (*bfd_getx_signed_64) (const void *);
       void           (*bfd_putx64) (bfd_uint64_t, void *);
       bfd_vma        (*bfd_getx32) (const void *);
       bfd_signed_vma (*bfd_getx_signed_32) (const void *);
       void           (*bfd_putx32) (bfd_vma, void *);
       bfd_vma        (*bfd_getx16) (const void *);
       bfd_signed_vma (*bfd_getx_signed_16) (const void *);
       void           (*bfd_putx16) (bfd_vma, void *);

       /* Byte swapping for the headers.  */
       bfd_uint64_t   (*bfd_h_getx64) (const void *);
       bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
       void           (*bfd_h_putx64) (bfd_uint64_t, void *);
       bfd_vma        (*bfd_h_getx32) (const void *);
       bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
       void           (*bfd_h_putx32) (bfd_vma, void *);
       bfd_vma        (*bfd_h_getx16) (const void *);
       bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
       void           (*bfd_h_putx16) (bfd_vma, void *);

       /* Format dependent routines: these are vectors of entry points
          within the target vector structure, one for each format to check.  */

       /* Check the format of a file being read.  Return a bfd_target * or zero.  */
       const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);

       /* Set the format of a file being written.  */
       bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);

       /* Write cached information into a file being written, at bfd_close.  */
       bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);

   The general target vector.  These vectors are initialized using the
BFD_JUMP_TABLE macros.

       /* Generic entry points.  */
     #define BFD_JUMP_TABLE_GENERIC(NAME) \
       NAME##_close_and_cleanup, \
       NAME##_bfd_free_cached_info, \
       NAME##_new_section_hook, \
       NAME##_get_section_contents, \
       NAME##_get_section_contents_in_window

       /* Called when the BFD is being closed to do any necessary cleanup.  */
       bfd_boolean (*_close_and_cleanup) (bfd *);
       /* Ask the BFD to free all cached information.  */
       bfd_boolean (*_bfd_free_cached_info) (bfd *);
       /* Called when a new section is created.  */
       bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
       /* Read the contents of a section.  */
       bfd_boolean (*_bfd_get_section_contents)
         (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
       bfd_boolean (*_bfd_get_section_contents_in_window)
         (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);

       /* Entry points to copy private data.  */
     #define BFD_JUMP_TABLE_COPY(NAME) \
       NAME##_bfd_copy_private_bfd_data, \
       NAME##_bfd_merge_private_bfd_data, \
       _bfd_generic_init_private_section_data, \
       NAME##_bfd_copy_private_section_data, \
       NAME##_bfd_copy_private_symbol_data, \
       NAME##_bfd_copy_private_header_data, \
       NAME##_bfd_set_private_flags, \
       NAME##_bfd_print_private_bfd_data

       /* Called to copy BFD general private data from one object file
          to another.  */
       bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
       /* Called to merge BFD general private data from one object file
          to a common output file when linking.  */
       bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
       /* Called to initialize BFD private section data from one object file
          to another.  */
     #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
       BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
       bfd_boolean (*_bfd_init_private_section_data)
         (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
       /* Called to copy BFD private section data from one object file
          to another.  */
       bfd_boolean (*_bfd_copy_private_section_data)
         (bfd *, sec_ptr, bfd *, sec_ptr);
       /* Called to copy BFD private symbol data from one symbol
          to another.  */
       bfd_boolean (*_bfd_copy_private_symbol_data)
         (bfd *, asymbol *, bfd *, asymbol *);
       /* Called to copy BFD private header data from one object file
          to another.  */
       bfd_boolean (*_bfd_copy_private_header_data)
         (bfd *, bfd *);
       /* Called to set private backend flags.  */
       bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);

       /* Called to print private BFD data.  */
       bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);

       /* Core file entry points.  */
     #define BFD_JUMP_TABLE_CORE(NAME) \
       NAME##_core_file_failing_command, \
       NAME##_core_file_failing_signal, \
       NAME##_core_file_matches_executable_p, \
       NAME##_core_file_pid

       char *      (*_core_file_failing_command) (bfd *);
       int         (*_core_file_failing_signal) (bfd *);
       bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
       int         (*_core_file_pid) (bfd *);

       /* Archive entry points.  */
     #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
       NAME##_slurp_armap, \
       NAME##_slurp_extended_name_table, \
       NAME##_construct_extended_name_table, \
       NAME##_truncate_arname, \
       NAME##_write_armap, \
       NAME##_read_ar_hdr, \
       NAME##_write_ar_hdr, \
       NAME##_openr_next_archived_file, \
       NAME##_get_elt_at_index, \
       NAME##_generic_stat_arch_elt, \
       NAME##_update_armap_timestamp

       bfd_boolean (*_bfd_slurp_armap) (bfd *);
       bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
       bfd_boolean (*_bfd_construct_extended_name_table)
         (bfd *, char **, bfd_size_type *, const char **);
       void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
       bfd_boolean (*write_armap)
         (bfd *, unsigned int, struct orl *, unsigned int, int);
       void *      (*_bfd_read_ar_hdr_fn) (bfd *);
       bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
       bfd *       (*openr_next_archived_file) (bfd *, bfd *);
     #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
       bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
       int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
       bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);

       /* Entry points used for symbols.  */
     #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
       NAME##_get_symtab_upper_bound, \
       NAME##_canonicalize_symtab, \
       NAME##_make_empty_symbol, \
       NAME##_print_symbol, \
       NAME##_get_symbol_info, \
       NAME##_bfd_is_local_label_name, \
       NAME##_bfd_is_target_special_symbol, \
       NAME##_get_lineno, \
       NAME##_find_nearest_line, \
       _bfd_generic_find_nearest_line_discriminator, \
       _bfd_generic_find_line, \
       NAME##_find_inliner_info, \
       NAME##_bfd_make_debug_symbol, \
       NAME##_read_minisymbols, \
       NAME##_minisymbol_to_symbol

       long        (*_bfd_get_symtab_upper_bound) (bfd *);
       long        (*_bfd_canonicalize_symtab)
         (bfd *, struct bfd_symbol **);
       struct bfd_symbol *
                   (*_bfd_make_empty_symbol) (bfd *);
       void        (*_bfd_print_symbol)
         (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
     #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
       void        (*_bfd_get_symbol_info)
         (bfd *, struct bfd_symbol *, symbol_info *);
     #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
       bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
       bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
       alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
       bfd_boolean (*_bfd_find_nearest_line)
         (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
          const char **, const char **, unsigned int *);
       bfd_boolean (*_bfd_find_nearest_line_discriminator)
         (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
          const char **, const char **, unsigned int *, unsigned int *);
       bfd_boolean (*_bfd_find_line)
         (bfd *, struct bfd_symbol **, struct bfd_symbol *,
          const char **, unsigned int *);
       bfd_boolean (*_bfd_find_inliner_info)
         (bfd *, const char **, const char **, unsigned int *);
      /* Back-door to allow format-aware applications to create debug symbols
         while using BFD for everything else.  Currently used by the assembler
         when creating COFF files.  */
       asymbol *   (*_bfd_make_debug_symbol)
         (bfd *, void *, unsigned long size);
     #define bfd_read_minisymbols(b, d, m, s) \
       BFD_SEND (b, _read_minisymbols, (b, d, m, s))
       long        (*_read_minisymbols)
         (bfd *, bfd_boolean, void **, unsigned int *);
     #define bfd_minisymbol_to_symbol(b, d, m, f) \
       BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
       asymbol *   (*_minisymbol_to_symbol)
         (bfd *, bfd_boolean, const void *, asymbol *);

       /* Routines for relocs.  */
     #define BFD_JUMP_TABLE_RELOCS(NAME) \
       NAME##_get_reloc_upper_bound, \
       NAME##_canonicalize_reloc, \
       NAME##_bfd_reloc_type_lookup, \
       NAME##_bfd_reloc_name_lookup

       long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
       long        (*_bfd_canonicalize_reloc)
         (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
       /* See documentation on reloc types.  */
       reloc_howto_type *
                   (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
       reloc_howto_type *
                   (*reloc_name_lookup) (bfd *, const char *);


       /* Routines used when writing an object file.  */
     #define BFD_JUMP_TABLE_WRITE(NAME) \
       NAME##_set_arch_mach, \
       NAME##_set_section_contents

       bfd_boolean (*_bfd_set_arch_mach)
         (bfd *, enum bfd_architecture, unsigned long);
       bfd_boolean (*_bfd_set_section_contents)
         (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);

       /* Routines used by the linker.  */
     #define BFD_JUMP_TABLE_LINK(NAME) \
       NAME##_sizeof_headers, \
       NAME##_bfd_get_relocated_section_contents, \
       NAME##_bfd_relax_section, \
       NAME##_bfd_link_hash_table_create, \
       NAME##_bfd_link_hash_table_free, \
       NAME##_bfd_link_add_symbols, \
       NAME##_bfd_link_just_syms, \
       NAME##_bfd_copy_link_hash_symbol_type, \
       NAME##_bfd_final_link, \
       NAME##_bfd_link_split_section, \
       NAME##_bfd_gc_sections, \
       NAME##_bfd_lookup_section_flags, \
       NAME##_bfd_merge_sections, \
       NAME##_bfd_is_group_section, \
       NAME##_bfd_discard_group, \
       NAME##_section_already_linked, \
       NAME##_bfd_define_common_symbol

       int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
       bfd_byte *  (*_bfd_get_relocated_section_contents)
         (bfd *, struct bfd_link_info *, struct bfd_link_order *,
          bfd_byte *, bfd_boolean, struct bfd_symbol **);

       bfd_boolean (*_bfd_relax_section)
         (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);

       /* Create a hash table for the linker.  Different backends store
          different information in this table.  */
       struct bfd_link_hash_table *
                   (*_bfd_link_hash_table_create) (bfd *);

       /* Release the memory associated with the linker hash table.  */
       void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);

       /* Add symbols from this object file into the hash table.  */
       bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);

       /* Indicate that we are only retrieving symbol values from this section.  */
       void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);

       /* Copy the symbol type of a linker hash table entry.  */
     #define bfd_copy_link_hash_symbol_type(b, t, f) \
       BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
       void (*_bfd_copy_link_hash_symbol_type)
         (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);

       /* Do a link based on the link_order structures attached to each
          section of the BFD.  */
       bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);

       /* Should this section be split up into smaller pieces during linking.  */
       bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);

       /* Remove sections that are not referenced from the output.  */
       bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);

       /* Sets the bitmask of allowed and disallowed section flags.  */
       bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
                                                 struct flag_info *,
                                                 asection *);

       /* Attempt to merge SEC_MERGE sections.  */
       bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);

       /* Is this section a member of a group?  */
       bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);

       /* Discard members of a group.  */
       bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);

       /* Check if SEC has been already linked during a reloceatable or
          final link.  */
       bfd_boolean (*_section_already_linked) (bfd *, asection *,
                                               struct bfd_link_info *);

       /* Define a common symbol.  */
       bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
                                                 struct bfd_link_hash_entry *);

       /* Routines to handle dynamic symbols and relocs.  */
     #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
       NAME##_get_dynamic_symtab_upper_bound, \
       NAME##_canonicalize_dynamic_symtab, \
       NAME##_get_synthetic_symtab, \
       NAME##_get_dynamic_reloc_upper_bound, \
       NAME##_canonicalize_dynamic_reloc

       /* Get the amount of memory required to hold the dynamic symbols.  */
       long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
       /* Read in the dynamic symbols.  */
       long        (*_bfd_canonicalize_dynamic_symtab)
         (bfd *, struct bfd_symbol **);
       /* Create synthetized symbols.  */
       long        (*_bfd_get_synthetic_symtab)
         (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
          struct bfd_symbol **);
       /* Get the amount of memory required to hold the dynamic relocs.  */
       long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
       /* Read in the dynamic relocs.  */
       long        (*_bfd_canonicalize_dynamic_reloc)
         (bfd *, arelent **, struct bfd_symbol **);

   A pointer to an alternative bfd_target in case the current one is not
satisfactory.  This can happen when the target cpu supports both big and
little endian code, and target chosen by the linker has the wrong
endianness.  The function open_output() in ld/ldlang.c uses this field
to find an alternative output format that is suitable.
       /* Opposite endian version of this target.  */
       const struct bfd_target * alternative_target;

       /* Data for use by back-end routines, which isn't
          generic enough to belong in this structure.  */
       const void *backend_data;

     } bfd_target;


2.12.1.1 'bfd_set_default_target'
.................................

*Synopsis*
     bfd_boolean bfd_set_default_target (const char *name);
   *Description*
Set the default target vector to use when recognizing a BFD. This takes
the name of the target, which may be a BFD target name or a
configuration triplet.

2.12.1.2 'bfd_find_target'
..........................

*Synopsis*
     const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
   *Description*
Return a pointer to the transfer vector for the object target named
TARGET_NAME.  If TARGET_NAME is 'NULL', choose the one in the
environment variable 'GNUTARGET'; if that is null or not defined, then
choose the first entry in the target list.  Passing in the string
"default" or setting the environment variable to "default" will cause
the first entry in the target list to be returned, and
"target_defaulted" will be set in the BFD if ABFD isn't 'NULL'.  This
causes 'bfd_check_format' to loop over all the targets to find the one
that matches the file being read.

2.12.1.3 'bfd_get_target_info'
..............................

*Synopsis*
     const bfd_target *bfd_get_target_info (const char *target_name,
         bfd *abfd,
         bfd_boolean *is_bigendian,
         int *underscoring,
         const char **def_target_arch);
   *Description*
Return a pointer to the transfer vector for the object target named
TARGET_NAME.  If TARGET_NAME is 'NULL', choose the one in the
environment variable 'GNUTARGET'; if that is null or not defined, then
choose the first entry in the target list.  Passing in the string
"default" or setting the environment variable to "default" will cause
the first entry in the target list to be returned, and
"target_defaulted" will be set in the BFD if ABFD isn't 'NULL'.  This
causes 'bfd_check_format' to loop over all the targets to find the one
that matches the file being read.  If IS_BIGENDIAN is not 'NULL', then
set this value to target's endian mode.  True for big-endian, FALSE for
little-endian or for invalid target.  If UNDERSCORING is not 'NULL',
then set this value to target's underscoring mode.  Zero for
none-underscoring, -1 for invalid target, else the value of target
vector's symbol underscoring.  If DEF_TARGET_ARCH is not 'NULL', then
set it to the architecture string specified by the target_name.

2.12.1.4 'bfd_target_list'
..........................

*Synopsis*
     const char ** bfd_target_list (void);
   *Description*
Return a freshly malloced NULL-terminated vector of the names of all the
valid BFD targets.  Do not modify the names.

2.12.1.5 'bfd_seach_for_target'
...............................

*Synopsis*
     const bfd_target *bfd_search_for_target
        (int (*search_func) (const bfd_target *, void *),
         void *);
   *Description*
Return a pointer to the first transfer vector in the list of transfer
vectors maintained by BFD that produces a non-zero result when passed to
the function SEARCH_FUNC.  The parameter DATA is passed, unexamined, to
the search function.


File: bfd.info,  Node: Architectures,  Next: Opening and Closing,  Prev: Targets,  Up: BFD front end

2.13 Architectures
==================

BFD keeps one atom in a BFD describing the architecture of the data
attached to the BFD: a pointer to a 'bfd_arch_info_type'.

   Pointers to structures can be requested independently of a BFD so
that an architecture's information can be interrogated without access to
an open BFD.

   The architecture information is provided by each architecture
package.  The set of default architectures is selected by the macro
'SELECT_ARCHITECTURES'.  This is normally set up in the
'config/TARGET.mt' file of your choice.  If the name is not defined,
then all the architectures supported are included.

   When BFD starts up, all the architectures are called with an
initialize method.  It is up to the architecture back end to insert as
many items into the list of architectures as it wants to; generally this
would be one for each machine and one for the default case (an item with
a machine field of 0).

   BFD's idea of an architecture is implemented in 'archures.c'.

2.13.1 bfd_architecture
-----------------------

*Description*
This enum gives the object file's CPU architecture, in a global
sense--i.e., what processor family does it belong to?  Another field
indicates which processor within the family is in use.  The machine
gives a number which distinguishes different versions of the
architecture, containing, for example, 2 and 3 for Intel i960 KA and
i960 KB, and 68020 and 68030 for Motorola 68020 and 68030.
     enum bfd_architecture
     {
       bfd_arch_unknown,   /* File arch not known.  */
       bfd_arch_obscure,   /* Arch known, not one of these.  */
       bfd_arch_m68k,      /* Motorola 68xxx */
     #define bfd_mach_m68000 1
     #define bfd_mach_m68008 2
     #define bfd_mach_m68010 3
     #define bfd_mach_m68020 4
     #define bfd_mach_m68030 5
     #define bfd_mach_m68040 6
     #define bfd_mach_m68060 7
     #define bfd_mach_cpu32  8
     #define bfd_mach_fido   9
     #define bfd_mach_mcf_isa_a_nodiv 10
     #define bfd_mach_mcf_isa_a 11
     #define bfd_mach_mcf_isa_a_mac 12
     #define bfd_mach_mcf_isa_a_emac 13
     #define bfd_mach_mcf_isa_aplus 14
     #define bfd_mach_mcf_isa_aplus_mac 15
     #define bfd_mach_mcf_isa_aplus_emac 16
     #define bfd_mach_mcf_isa_b_nousp 17
     #define bfd_mach_mcf_isa_b_nousp_mac 18
     #define bfd_mach_mcf_isa_b_nousp_emac 19
     #define bfd_mach_mcf_isa_b 20
     #define bfd_mach_mcf_isa_b_mac 21
     #define bfd_mach_mcf_isa_b_emac 22
     #define bfd_mach_mcf_isa_b_float 23
     #define bfd_mach_mcf_isa_b_float_mac 24
     #define bfd_mach_mcf_isa_b_float_emac 25
     #define bfd_mach_mcf_isa_c 26
     #define bfd_mach_mcf_isa_c_mac 27
     #define bfd_mach_mcf_isa_c_emac 28
     #define bfd_mach_mcf_isa_c_nodiv 29
     #define bfd_mach_mcf_isa_c_nodiv_mac 30
     #define bfd_mach_mcf_isa_c_nodiv_emac 31
       bfd_arch_vax,       /* DEC Vax */
       bfd_arch_i960,      /* Intel 960 */
         /* The order of the following is important.
            lower number indicates a machine type that
            only accepts a subset of the instructions
            available to machines with higher numbers.
            The exception is the "ca", which is
            incompatible with all other machines except
            "core".  */

     #define bfd_mach_i960_core      1
     #define bfd_mach_i960_ka_sa     2
     #define bfd_mach_i960_kb_sb     3
     #define bfd_mach_i960_mc        4
     #define bfd_mach_i960_xa        5
     #define bfd_mach_i960_ca        6
     #define bfd_mach_i960_jx        7
     #define bfd_mach_i960_hx        8

       bfd_arch_or1k,      /* OpenRISC 1000 */
     #define bfd_mach_or1k           1
     #define bfd_mach_or1knd         2

       bfd_arch_sparc,     /* SPARC */
     #define bfd_mach_sparc                 1
     /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
     #define bfd_mach_sparc_sparclet        2
     #define bfd_mach_sparc_sparclite       3
     #define bfd_mach_sparc_v8plus          4
     #define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
     #define bfd_mach_sparc_sparclite_le    6
     #define bfd_mach_sparc_v9              7
     #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
     #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
     #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
     /* Nonzero if MACH has the v9 instruction set.  */
     #define bfd_mach_sparc_v9_p(mach) \
       ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
        && (mach) != bfd_mach_sparc_sparclite_le)
     /* Nonzero if MACH is a 64 bit sparc architecture.  */
     #define bfd_mach_sparc_64bit_p(mach) \
       ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
       bfd_arch_spu,       /* PowerPC SPU */
     #define bfd_mach_spu           256
       bfd_arch_mips,      /* MIPS Rxxxx */
     #define bfd_mach_mips3000              3000
     #define bfd_mach_mips3900              3900
     #define bfd_mach_mips4000              4000
     #define bfd_mach_mips4010              4010
     #define bfd_mach_mips4100              4100
     #define bfd_mach_mips4111              4111
     #define bfd_mach_mips4120              4120
     #define bfd_mach_mips4300              4300
     #define bfd_mach_mips4400              4400
     #define bfd_mach_mips4600              4600
     #define bfd_mach_mips4650              4650
     #define bfd_mach_mips5000              5000
     #define bfd_mach_mips5400              5400
     #define bfd_mach_mips5500              5500
     #define bfd_mach_mips5900              5900
     #define bfd_mach_mips6000              6000
     #define bfd_mach_mips7000              7000
     #define bfd_mach_mips8000              8000
     #define bfd_mach_mips9000              9000
     #define bfd_mach_mips10000             10000
     #define bfd_mach_mips12000             12000
     #define bfd_mach_mips14000             14000
     #define bfd_mach_mips16000             16000
     #define bfd_mach_mips16                16
     #define bfd_mach_mips5                 5
     #define bfd_mach_mips_loongson_2e      3001
     #define bfd_mach_mips_loongson_2f      3002
     #define bfd_mach_mips_loongson_3a      3003
     #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
     #define bfd_mach_mips_octeon           6501
     #define bfd_mach_mips_octeonp          6601
     #define bfd_mach_mips_octeon2          6502
     #define bfd_mach_mips_xlr              887682   /* decimal 'XLR'  */
     #define bfd_mach_mipsisa32             32
     #define bfd_mach_mipsisa32r2           33
     #define bfd_mach_mipsisa32r3           34
     #define bfd_mach_mipsisa32r5           36
     #define bfd_mach_mipsisa64             64
     #define bfd_mach_mipsisa64r2           65
     #define bfd_mach_mipsisa64r3           66
     #define bfd_mach_mipsisa64r5           68
     #define bfd_mach_mips_micromips        96
       bfd_arch_i386,      /* Intel 386 */
     #define bfd_mach_i386_intel_syntax     (1 << 0)
     #define bfd_mach_i386_i8086            (1 << 1)
     #define bfd_mach_i386_i386             (1 << 2)
     #define bfd_mach_x86_64                (1 << 3)
     #define bfd_mach_x64_32                (1 << 4)
     #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
     #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
     #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
       bfd_arch_l1om,   /* Intel L1OM */
     #define bfd_mach_l1om                  (1 << 5)
     #define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
       bfd_arch_k1om,   /* Intel K1OM */
     #define bfd_mach_k1om                  (1 << 6)
     #define bfd_mach_k1om_intel_syntax     (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
     #define bfd_mach_i386_nacl             (1 << 7)
     #define bfd_mach_i386_i386_nacl        (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
     #define bfd_mach_x86_64_nacl           (bfd_mach_x86_64 | bfd_mach_i386_nacl)
     #define bfd_mach_x64_32_nacl           (bfd_mach_x64_32 | bfd_mach_i386_nacl)
       bfd_arch_we32k,     /* AT&T WE32xxx */
       bfd_arch_tahoe,     /* CCI/Harris Tahoe */
       bfd_arch_i860,      /* Intel 860 */
       bfd_arch_i370,      /* IBM 360/370 Mainframes */
       bfd_arch_romp,      /* IBM ROMP PC/RT */
       bfd_arch_convex,    /* Convex */
       bfd_arch_m88k,      /* Motorola 88xxx */
       bfd_arch_m98k,      /* Motorola 98xxx */
       bfd_arch_pyramid,   /* Pyramid Technology */
       bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
     #define bfd_mach_h8300    1
     #define bfd_mach_h8300h   2
     #define bfd_mach_h8300s   3
     #define bfd_mach_h8300hn  4
     #define bfd_mach_h8300sn  5
     #define bfd_mach_h8300sx  6
     #define bfd_mach_h8300sxn 7
       bfd_arch_pdp11,     /* DEC PDP-11 */
       bfd_arch_plugin,
       bfd_arch_powerpc,   /* PowerPC */
     #define bfd_mach_ppc           32
     #define bfd_mach_ppc64         64
     #define bfd_mach_ppc_403       403
     #define bfd_mach_ppc_403gc     4030
     #define bfd_mach_ppc_405       405
     #define bfd_mach_ppc_505       505
     #define bfd_mach_ppc_601       601
     #define bfd_mach_ppc_602       602
     #define bfd_mach_ppc_603       603
     #define bfd_mach_ppc_ec603e    6031
     #define bfd_mach_ppc_604       604
     #define bfd_mach_ppc_620       620
     #define bfd_mach_ppc_630       630
     #define bfd_mach_ppc_750       750
     #define bfd_mach_ppc_860       860
     #define bfd_mach_ppc_a35       35
     #define bfd_mach_ppc_rs64ii    642
     #define bfd_mach_ppc_rs64iii   643
     #define bfd_mach_ppc_7400      7400
     #define bfd_mach_ppc_e500      500
     #define bfd_mach_ppc_e500mc    5001
     #define bfd_mach_ppc_e500mc64  5005
     #define bfd_mach_ppc_e5500     5006
     #define bfd_mach_ppc_e6500     5007
     #define bfd_mach_ppc_titan     83
     #define bfd_mach_ppc_vle       84
       bfd_arch_rs6000,    /* IBM RS/6000 */
     #define bfd_mach_rs6k          6000
     #define bfd_mach_rs6k_rs1      6001
     #define bfd_mach_rs6k_rsc      6003
     #define bfd_mach_rs6k_rs2      6002
       bfd_arch_hppa,      /* HP PA RISC */
     #define bfd_mach_hppa10        10
     #define bfd_mach_hppa11        11
     #define bfd_mach_hppa20        20
     #define bfd_mach_hppa20w       25
       bfd_arch_d10v,      /* Mitsubishi D10V */
     #define bfd_mach_d10v          1
     #define bfd_mach_d10v_ts2      2
     #define bfd_mach_d10v_ts3      3
       bfd_arch_d30v,      /* Mitsubishi D30V */
       bfd_arch_dlx,       /* DLX */
       bfd_arch_m68hc11,   /* Motorola 68HC11 */
       bfd_arch_m68hc12,   /* Motorola 68HC12 */
     #define bfd_mach_m6812_default 0
     #define bfd_mach_m6812         1
     #define bfd_mach_m6812s        2
       bfd_arch_m9s12x,   /* Freescale S12X */
       bfd_arch_m9s12xg,  /* Freescale XGATE */
       bfd_arch_z8k,       /* Zilog Z8000 */
     #define bfd_mach_z8001         1
     #define bfd_mach_z8002         2
       bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
       bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
     #define bfd_mach_sh            1
     #define bfd_mach_sh2        0x20
     #define bfd_mach_sh_dsp     0x2d
     #define bfd_mach_sh2a       0x2a
     #define bfd_mach_sh2a_nofpu 0x2b
     #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
     #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
     #define bfd_mach_sh2a_or_sh4  0x2a3
     #define bfd_mach_sh2a_or_sh3e 0x2a4
     #define bfd_mach_sh2e       0x2e
     #define bfd_mach_sh3        0x30
     #define bfd_mach_sh3_nommu  0x31
     #define bfd_mach_sh3_dsp    0x3d
     #define bfd_mach_sh3e       0x3e
     #define bfd_mach_sh4        0x40
     #define bfd_mach_sh4_nofpu  0x41
     #define bfd_mach_sh4_nommu_nofpu  0x42
     #define bfd_mach_sh4a       0x4a
     #define bfd_mach_sh4a_nofpu 0x4b
     #define bfd_mach_sh4al_dsp  0x4d
     #define bfd_mach_sh5        0x50
       bfd_arch_alpha,     /* Dec Alpha */
     #define bfd_mach_alpha_ev4  0x10
     #define bfd_mach_alpha_ev5  0x20
     #define bfd_mach_alpha_ev6  0x30
       bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
     #define bfd_mach_arm_unknown   0
     #define bfd_mach_arm_2         1
     #define bfd_mach_arm_2a        2
     #define bfd_mach_arm_3         3
     #define bfd_mach_arm_3M        4
     #define bfd_mach_arm_4         5
     #define bfd_mach_arm_4T        6
     #define bfd_mach_arm_5         7
     #define bfd_mach_arm_5T        8
     #define bfd_mach_arm_5TE       9
     #define bfd_mach_arm_XScale    10
     #define bfd_mach_arm_ep9312    11
     #define bfd_mach_arm_iWMMXt    12
     #define bfd_mach_arm_iWMMXt2   13
       bfd_arch_nds32,     /* Andes NDS32 */
     #define bfd_mach_n1            1
     #define bfd_mach_n1h           2
     #define bfd_mach_n1h_v2        3
     #define bfd_mach_n1h_v3        4
     #define bfd_mach_n1h_v3m       5
       bfd_arch_ns32k,     /* National Semiconductors ns32000 */
       bfd_arch_w65,       /* WDC 65816 */
       bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
       bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
     #define bfd_mach_tic3x         30
     #define bfd_mach_tic4x         40
       bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
       bfd_arch_tic6x,     /* Texas Instruments TMS320C6X */
       bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
       bfd_arch_v850,      /* NEC V850 */
       bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI) */
     #define bfd_mach_v850          1
     #define bfd_mach_v850e         'E'
     #define bfd_mach_v850e1        '1'
     #define bfd_mach_v850e2        0x4532
     #define bfd_mach_v850e2v3      0x45325633
     #define bfd_mach_v850e3v5      0x45335635 /* ('E'|'3'|'V'|'5') */
       bfd_arch_arc,       /* ARC Cores */
     #define bfd_mach_arc_5         5
     #define bfd_mach_arc_6         6
     #define bfd_mach_arc_7         7
     #define bfd_mach_arc_8         8
      bfd_arch_m32c,     /* Renesas M16C/M32C.  */
     #define bfd_mach_m16c        0x75
     #define bfd_mach_m32c        0x78
       bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
     #define bfd_mach_m32r          1 /* For backwards compatibility.  */
     #define bfd_mach_m32rx         'x'
     #define bfd_mach_m32r2         '2'
       bfd_arch_mn10200,   /* Matsushita MN10200 */
       bfd_arch_mn10300,   /* Matsushita MN10300 */
     #define bfd_mach_mn10300               300
     #define bfd_mach_am33          330
     #define bfd_mach_am33_2        332
       bfd_arch_fr30,
     #define bfd_mach_fr30          0x46523330
       bfd_arch_frv,
     #define bfd_mach_frv           1
     #define bfd_mach_frvsimple     2
     #define bfd_mach_fr300         300
     #define bfd_mach_fr400         400
     #define bfd_mach_fr450         450
     #define bfd_mach_frvtomcat     499     /* fr500 prototype */
     #define bfd_mach_fr500         500
     #define bfd_mach_fr550         550
       bfd_arch_moxie,       /* The moxie processor */
     #define bfd_mach_moxie         1
       bfd_arch_mcore,
       bfd_arch_mep,
     #define bfd_mach_mep           1
     #define bfd_mach_mep_h1        0x6831
     #define bfd_mach_mep_c5        0x6335
       bfd_arch_metag,
     #define bfd_mach_metag         1
       bfd_arch_ia64,      /* HP/Intel ia64 */
     #define bfd_mach_ia64_elf64    64
     #define bfd_mach_ia64_elf32    32
       bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
     #define bfd_mach_ip2022        1
     #define bfd_mach_ip2022ext     2
      bfd_arch_iq2000,     /* Vitesse IQ2000.  */
     #define bfd_mach_iq2000        1
     #define bfd_mach_iq10          2
       bfd_arch_epiphany,   /* Adapteva EPIPHANY */
     #define bfd_mach_epiphany16    1
     #define bfd_mach_epiphany32    2
       bfd_arch_mt,
     #define bfd_mach_ms1           1
     #define bfd_mach_mrisc2        2
     #define bfd_mach_ms2           3
       bfd_arch_pj,
       bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
     #define bfd_mach_avr1          1
     #define bfd_mach_avr2          2
     #define bfd_mach_avr25         25
     #define bfd_mach_avr3          3
     #define bfd_mach_avr31         31
     #define bfd_mach_avr35         35
     #define bfd_mach_avr4          4
     #define bfd_mach_avr5          5
     #define bfd_mach_avr51         51
     #define bfd_mach_avr6          6
     #define bfd_mach_avrxmega1 101
     #define bfd_mach_avrxmega2 102
     #define bfd_mach_avrxmega3 103
     #define bfd_mach_avrxmega4 104
     #define bfd_mach_avrxmega5 105
     #define bfd_mach_avrxmega6 106
     #define bfd_mach_avrxmega7 107
       bfd_arch_bfin,        /* ADI Blackfin */
     #define bfd_mach_bfin          1
       bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
     #define bfd_mach_cr16          1
       bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
     #define bfd_mach_cr16c         1
       bfd_arch_crx,       /*  National Semiconductor CRX.  */
     #define bfd_mach_crx           1
       bfd_arch_cris,      /* Axis CRIS */
     #define bfd_mach_cris_v0_v10   255
     #define bfd_mach_cris_v32      32
     #define bfd_mach_cris_v10_v32  1032
       bfd_arch_rl78,
     #define bfd_mach_rl78  0x75
       bfd_arch_rx,        /* Renesas RX.  */
     #define bfd_mach_rx            0x75
       bfd_arch_s390,      /* IBM s390 */
     #define bfd_mach_s390_31       31
     #define bfd_mach_s390_64       64
       bfd_arch_score,     /* Sunplus score */
     #define bfd_mach_score3         3
     #define bfd_mach_score7         7
       bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
       bfd_arch_xstormy16,
     #define bfd_mach_xstormy16     1
       bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
     #define bfd_mach_msp11          11
     #define bfd_mach_msp110         110
     #define bfd_mach_msp12          12
     #define bfd_mach_msp13          13
     #define bfd_mach_msp14          14
     #define bfd_mach_msp15          15
     #define bfd_mach_msp16          16
     #define bfd_mach_msp20          20
     #define bfd_mach_msp21          21
     #define bfd_mach_msp22          22
     #define bfd_mach_msp23          23
     #define bfd_mach_msp24          24
     #define bfd_mach_msp26          26
     #define bfd_mach_msp31          31
     #define bfd_mach_msp32          32
     #define bfd_mach_msp33          33
     #define bfd_mach_msp41          41
     #define bfd_mach_msp42          42
     #define bfd_mach_msp43          43
     #define bfd_mach_msp44          44
     #define bfd_mach_msp430x        45
     #define bfd_mach_msp46          46
     #define bfd_mach_msp47          47
     #define bfd_mach_msp54          54
       bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
     #define bfd_mach_xc16x         1
     #define bfd_mach_xc16xl        2
     #define bfd_mach_xc16xs        3
       bfd_arch_xgate,   /* Freescale XGATE */
     #define bfd_mach_xgate         1
       bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
     #define bfd_mach_xtensa        1
       bfd_arch_z80,
     #define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
     #define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
     #define bfd_mach_z80full        7 /* All undocumented instructions.  */
     #define bfd_mach_r800           11 /* R800: successor with multiplication.  */
       bfd_arch_lm32,      /* Lattice Mico32 */
     #define bfd_mach_lm32      1
       bfd_arch_microblaze,/* Xilinx MicroBlaze. */
       bfd_arch_tilepro,   /* Tilera TILEPro */
       bfd_arch_tilegx, /* Tilera TILE-Gx */
     #define bfd_mach_tilepro   1
     #define bfd_mach_tilegx    1
     #define bfd_mach_tilegx32  2
       bfd_arch_aarch64,   /* AArch64  */
     #define bfd_mach_aarch64 0
     #define bfd_mach_aarch64_ilp32 32
       bfd_arch_nios2,
     #define bfd_mach_nios2 0
       bfd_arch_last
       };

2.13.2 bfd_arch_info
--------------------

*Description*
This structure contains information on architectures for use within BFD.

     typedef struct bfd_arch_info
     {
       int bits_per_word;
       int bits_per_address;
       int bits_per_byte;
       enum bfd_architecture arch;
       unsigned long mach;
       const char *arch_name;
       const char *printable_name;
       unsigned int section_align_power;
       /* TRUE if this is the default machine for the architecture.
          The default arch should be the first entry for an arch so that
          all the entries for that arch can be accessed via next.  */
       bfd_boolean the_default;
       const struct bfd_arch_info * (*compatible)
         (const struct bfd_arch_info *a, const struct bfd_arch_info *b);

       bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);

       /* Allocate via bfd_malloc and return a fill buffer of size COUNT.  If
          IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
          TRUE, the buffer contains code.  */
       void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
                      bfd_boolean code);

       const struct bfd_arch_info *next;
     }
     bfd_arch_info_type;


2.13.2.1 'bfd_printable_name'
.............................

*Synopsis*
     const char *bfd_printable_name (bfd *abfd);
   *Description*
Return a printable string representing the architecture and machine from
the pointer to the architecture info structure.

2.13.2.2 'bfd_scan_arch'
........................

*Synopsis*
     const bfd_arch_info_type *bfd_scan_arch (const char *string);
   *Description*
Figure out if BFD supports any cpu which could be described with the
name STRING.  Return a pointer to an 'arch_info' structure if a machine
is found, otherwise NULL.

2.13.2.3 'bfd_arch_list'
........................

*Synopsis*
     const char **bfd_arch_list (void);
   *Description*
Return a freshly malloced NULL-terminated vector of the names of all the
valid BFD architectures.  Do not modify the names.

2.13.2.4 'bfd_arch_get_compatible'
..................................

*Synopsis*
     const bfd_arch_info_type *bfd_arch_get_compatible
        (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
   *Description*
Determine whether two BFDs' architectures and machine types are
compatible.  Calculates the lowest common denominator between the two
architectures and machine types implied by the BFDs and returns a
pointer to an 'arch_info' structure describing the compatible machine.

2.13.2.5 'bfd_default_arch_struct'
..................................

*Description*
The 'bfd_default_arch_struct' is an item of 'bfd_arch_info_type' which
has been initialized to a fairly generic state.  A BFD starts life by
pointing to this structure, until the correct back end has determined
the real architecture of the file.
     extern const bfd_arch_info_type bfd_default_arch_struct;

2.13.2.6 'bfd_set_arch_info'
............................

*Synopsis*
     void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
   *Description*
Set the architecture info of ABFD to ARG.

2.13.2.7 'bfd_default_set_arch_mach'
....................................

*Synopsis*
     bfd_boolean bfd_default_set_arch_mach
        (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
   *Description*
Set the architecture and machine type in BFD ABFD to ARCH and MACH.
Find the correct pointer to a structure and insert it into the
'arch_info' pointer.

2.13.2.8 'bfd_get_arch'
.......................

*Synopsis*
     enum bfd_architecture bfd_get_arch (bfd *abfd);
   *Description*
Return the enumerated type which describes the BFD ABFD's architecture.

2.13.2.9 'bfd_get_mach'
.......................

*Synopsis*
     unsigned long bfd_get_mach (bfd *abfd);
   *Description*
Return the long type which describes the BFD ABFD's machine.

2.13.2.10 'bfd_arch_bits_per_byte'
..................................

*Synopsis*
     unsigned int bfd_arch_bits_per_byte (bfd *abfd);
   *Description*
Return the number of bits in one of the BFD ABFD's architecture's bytes.

2.13.2.11 'bfd_arch_bits_per_address'
.....................................

*Synopsis*
     unsigned int bfd_arch_bits_per_address (bfd *abfd);
   *Description*
Return the number of bits in one of the BFD ABFD's architecture's
addresses.

2.13.2.12 'bfd_default_compatible'
..................................

*Synopsis*
     const bfd_arch_info_type *bfd_default_compatible
        (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
   *Description*
The default function for testing for compatibility.

2.13.2.13 'bfd_default_scan'
............................

*Synopsis*
     bfd_boolean bfd_default_scan
        (const struct bfd_arch_info *info, const char *string);
   *Description*
The default function for working out whether this is an architecture hit
and a machine hit.

2.13.2.14 'bfd_get_arch_info'
.............................

*Synopsis*
     const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
   *Description*
Return the architecture info struct in ABFD.

2.13.2.15 'bfd_lookup_arch'
...........................

*Synopsis*
     const bfd_arch_info_type *bfd_lookup_arch
        (enum bfd_architecture arch, unsigned long machine);
   *Description*
Look for the architecture info structure which matches the arguments
ARCH and MACHINE.  A machine of 0 matches the machine/architecture
structure which marks itself as the default.

2.13.2.16 'bfd_printable_arch_mach'
...................................

*Synopsis*
     const char *bfd_printable_arch_mach
        (enum bfd_architecture arch, unsigned long machine);
   *Description*
Return a printable string representing the architecture and machine
type.

   This routine is depreciated.

2.13.2.17 'bfd_octets_per_byte'
...............................

*Synopsis*
     unsigned int bfd_octets_per_byte (bfd *abfd);
   *Description*
Return the number of octets (8-bit quantities) per target byte (minimum
addressable unit).  In most cases, this will be one, but some DSP
targets have 16, 32, or even 48 bits per byte.

2.13.2.18 'bfd_arch_mach_octets_per_byte'
.........................................

*Synopsis*
     unsigned int bfd_arch_mach_octets_per_byte
        (enum bfd_architecture arch, unsigned long machine);
   *Description*
See bfd_octets_per_byte.

   This routine is provided for those cases where a bfd * is not
available

2.13.2.19 'bfd_arch_default_fill'
.................................

*Synopsis*
     void *bfd_arch_default_fill (bfd_size_type count,
         bfd_boolean is_bigendian,
         bfd_boolean code);
   *Description*
Allocate via bfd_malloc and return a fill buffer of size COUNT. If
IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
TRUE, the buffer contains code.


File: bfd.info,  Node: Opening and Closing,  Next: Internal,  Prev: Architectures,  Up: BFD front end

     /* Set to N to open the next N BFDs using an alternate id space.  */
     extern unsigned int bfd_use_reserved_id;

2.14 Opening and closing BFDs
=============================

2.14.1 Functions for opening and closing
----------------------------------------

2.14.1.1 'bfd_fopen'
....................

*Synopsis*
     bfd *bfd_fopen (const char *filename, const char *target,
         const char *mode, int fd);
   *Description*
Open the file FILENAME with the target TARGET.  Return a pointer to the
created BFD. If FD is not -1, then 'fdopen' is used to open the file;
otherwise, 'fopen' is used.  MODE is passed directly to 'fopen' or
'fdopen'.

   Calls 'bfd_find_target', so TARGET is interpreted as by that
function.

   The new BFD is marked as cacheable iff FD is -1.

   If 'NULL' is returned then an error has occured.  Possible errors are
'bfd_error_no_memory', 'bfd_error_invalid_target' or 'system_call'
error.

   On error, FD is always closed.

   A copy of the FILENAME argument is stored in the newly created BFD.
It can be accessed via the bfd_get_filename() macro.

2.14.1.2 'bfd_openr'
....................

*Synopsis*
     bfd *bfd_openr (const char *filename, const char *target);
   *Description*
Open the file FILENAME (using 'fopen') with the target TARGET.  Return a
pointer to the created BFD.

   Calls 'bfd_find_target', so TARGET is interpreted as by that
function.

   If 'NULL' is returned then an error has occured.  Possible errors are
'bfd_error_no_memory', 'bfd_error_invalid_target' or 'system_call'
error.

   A copy of the FILENAME argument is stored in the newly created BFD.
It can be accessed via the bfd_get_filename() macro.

2.14.1.3 'bfd_fdopenr'
......................

*Synopsis*
     bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
   *Description*
'bfd_fdopenr' is to 'bfd_fopenr' much like 'fdopen' is to 'fopen'.  It
opens a BFD on a file already described by the FD supplied.

   When the file is later 'bfd_close'd, the file descriptor will be
closed.  If the caller desires that this file descriptor be cached by
BFD (opened as needed, closed as needed to free descriptors for other
opens), with the supplied FD used as an initial file descriptor (but
subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the
returned BFD. The default is to assume no caching; the file descriptor
will remain open until 'bfd_close', and will not be affected by BFD
operations on other files.

   Possible errors are 'bfd_error_no_memory', 'bfd_error_invalid_target'
and 'bfd_error_system_call'.

   On error, FD is closed.

   A copy of the FILENAME argument is stored in the newly created BFD.
It can be accessed via the bfd_get_filename() macro.

2.14.1.4 'bfd_openstreamr'
..........................

*Synopsis*
     bfd *bfd_openstreamr (const char * filename, const char * target, void * stream);
   *Description*
Open a BFD for read access on an existing stdio stream.  When the BFD is
passed to 'bfd_close', the stream will be closed.

   A copy of the FILENAME argument is stored in the newly created BFD.
It can be accessed via the bfd_get_filename() macro.

2.14.1.5 'bfd_openr_iovec'
..........................

*Synopsis*
     bfd *bfd_openr_iovec (const char *filename, const char *target,
         void *(*open_func) (struct bfd *nbfd,
         void *open_closure),
         void *open_closure,
         file_ptr (*pread_func) (struct bfd *nbfd,
         void *stream,
         void *buf,
         file_ptr nbytes,
         file_ptr offset),
         int (*close_func) (struct bfd *nbfd,
         void *stream),
         int (*stat_func) (struct bfd *abfd,
         void *stream,
         struct stat *sb));
   *Description*
Create and return a BFD backed by a read-only STREAM.  The STREAM is
created using OPEN_FUNC, accessed using PREAD_FUNC and destroyed using
CLOSE_FUNC.

   Calls 'bfd_find_target', so TARGET is interpreted as by that
function.

   Calls OPEN_FUNC (which can call 'bfd_zalloc' and 'bfd_get_filename')
to obtain the read-only stream backing the BFD. OPEN_FUNC either
succeeds returning the non-'NULL' STREAM, or fails returning 'NULL'
(setting 'bfd_error').

   Calls PREAD_FUNC to request NBYTES of data from STREAM starting at
OFFSET (e.g., via a call to 'bfd_read').  PREAD_FUNC either succeeds
returning the number of bytes read (which can be less than NBYTES when
end-of-file), or fails returning -1 (setting 'bfd_error').

   Calls CLOSE_FUNC when the BFD is later closed using 'bfd_close'.
CLOSE_FUNC either succeeds returning 0, or fails returning -1 (setting
'bfd_error').

   Calls STAT_FUNC to fill in a stat structure for bfd_stat,
bfd_get_size, and bfd_get_mtime calls.  STAT_FUNC returns 0 on success,
or returns -1 on failure (setting 'bfd_error').

   If 'bfd_openr_iovec' returns 'NULL' then an error has occurred.
Possible errors are 'bfd_error_no_memory', 'bfd_error_invalid_target'
and 'bfd_error_system_call'.

   A copy of the FILENAME argument is stored in the newly created BFD.
It can be accessed via the bfd_get_filename() macro.

2.14.1.6 'bfd_openw'
....................

*Synopsis*
     bfd *bfd_openw (const char *filename, const char *target);
   *Description*
Create a BFD, associated with file FILENAME, using the file format
TARGET, and return a pointer to it.

   Possible errors are 'bfd_error_system_call', 'bfd_error_no_memory',
'bfd_error_invalid_target'.

   A copy of the FILENAME argument is stored in the newly created BFD.
It can be accessed via the bfd_get_filename() macro.

2.14.1.7 'bfd_close'
....................

*Synopsis*
     bfd_boolean bfd_close (bfd *abfd);
   *Description*
Close a BFD. If the BFD was open for writing, then pending operations
are completed and the file written out and closed.  If the created file
is executable, then 'chmod' is called to mark it as such.

   All memory attached to the BFD is released.

   The file descriptor associated with the BFD is closed (even if it was
passed in to BFD by 'bfd_fdopenr').

   *Returns*
'TRUE' is returned if all is ok, otherwise 'FALSE'.

2.14.1.8 'bfd_close_all_done'
.............................

*Synopsis*
     bfd_boolean bfd_close_all_done (bfd *);
   *Description*
Close a BFD. Differs from 'bfd_close' since it does not complete any
pending operations.  This routine would be used if the application had
just used BFD for swapping and didn't want to use any of the writing
code.

   If the created file is executable, then 'chmod' is called to mark it
as such.

   All memory attached to the BFD is released.

   *Returns*
'TRUE' is returned if all is ok, otherwise 'FALSE'.

2.14.1.9 'bfd_create'
.....................

*Synopsis*
     bfd *bfd_create (const char *filename, bfd *templ);
   *Description*
Create a new BFD in the manner of 'bfd_openw', but without opening a
file.  The new BFD takes the target from the target used by TEMPL.  The
format is always set to 'bfd_object'.

   A copy of the FILENAME argument is stored in the newly created BFD.
It can be accessed via the bfd_get_filename() macro.

2.14.1.10 'bfd_make_writable'
.............................

*Synopsis*
     bfd_boolean bfd_make_writable (bfd *abfd);
   *Description*
Takes a BFD as created by 'bfd_create' and converts it into one like as
returned by 'bfd_openw'.  It does this by converting the BFD to
BFD_IN_MEMORY. It's assumed that you will call 'bfd_make_readable' on
this bfd later.

   *Returns*
'TRUE' is returned if all is ok, otherwise 'FALSE'.

2.14.1.11 'bfd_make_readable'
.............................

*Synopsis*
     bfd_boolean bfd_make_readable (bfd *abfd);
   *Description*
Takes a BFD as created by 'bfd_create' and 'bfd_make_writable' and
converts it into one like as returned by 'bfd_openr'.  It does this by
writing the contents out to the memory buffer, then reversing the
direction.

   *Returns*
'TRUE' is returned if all is ok, otherwise 'FALSE'.

2.14.1.12 'bfd_alloc'
.....................

*Synopsis*
     void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
   *Description*
Allocate a block of WANTED bytes of memory attached to 'abfd' and return
a pointer to it.

2.14.1.13 'bfd_alloc2'
......................

*Synopsis*
     void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
   *Description*
Allocate a block of NMEMB elements of SIZE bytes each of memory attached
to 'abfd' and return a pointer to it.

2.14.1.14 'bfd_zalloc'
......................

*Synopsis*
     void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
   *Description*
Allocate a block of WANTED bytes of zeroed memory attached to 'abfd' and
return a pointer to it.

2.14.1.15 'bfd_zalloc2'
.......................

*Synopsis*
     void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
   *Description*
Allocate a block of NMEMB elements of SIZE bytes each of zeroed memory
attached to 'abfd' and return a pointer to it.

2.14.1.16 'bfd_calc_gnu_debuglink_crc32'
........................................

*Synopsis*
     unsigned long bfd_calc_gnu_debuglink_crc32
        (unsigned long crc, const unsigned char *buf, bfd_size_type len);
   *Description*
Computes a CRC value as used in the .gnu_debuglink section.  Advances
the previously computed CRC value by computing and adding in the crc32
for LEN bytes of BUF.

   *Returns*
Return the updated CRC32 value.

2.14.1.17 'bfd_get_debug_link_info'
...................................

*Synopsis*
     char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
   *Description*
Fetch the filename and CRC32 value for any separate debuginfo associated
with ABFD.  Return NULL if no such info found, otherwise return filename
and update CRC32_OUT.  The returned filename is allocated with 'malloc';
freeing it is the responsibility of the caller.

2.14.1.18 'bfd_get_alt_debug_link_info'
.......................................

*Synopsis*
     char *bfd_get_alt_debug_link_info (bfd * abfd,
         bfd_size_type *buildid_len,
         bfd_byte **buildid_out);
   *Description*
Fetch the filename and BuildID value for any alternate debuginfo
associated with ABFD.  Return NULL if no such info found, otherwise
return filename and update BUILDID_LEN and BUILDID_OUT.  The returned
filename and build_id are allocated with 'malloc'; freeing them is the
responsibility of the caller.

2.14.1.19 'separate_debug_file_exists'
......................................

*Synopsis*
     bfd_boolean separate_debug_file_exists
        (char *name, unsigned long crc32);
   *Description*
Checks to see if NAME is a file and if its contents match CRC32.

2.14.1.20 'separate_alt_debug_file_exists'
..........................................

*Synopsis*
     bfd_boolean separate_alt_debug_file_exists
        (char *name, unsigned long crc32);
   *Description*
Checks to see if NAME is a file and if its BuildID matches BUILDID.

2.14.1.21 'find_separate_debug_file'
....................................

*Synopsis*
     char *find_separate_debug_file (bfd *abfd);
   *Description*
Searches ABFD for a section called SECTION_NAME which is expected to
contain a reference to a file containing separate debugging information.
The function scans various locations in the filesystem, including the
file tree rooted at DEBUG_FILE_DIRECTORY, and returns the first matching
filename that it finds.  If CHECK_CRC is TRUE then the contents of the
file must also match the CRC value contained in SECTION_NAME.  Returns
NULL if no valid file could be found.

2.14.1.22 'bfd_follow_gnu_debuglink'
....................................

*Synopsis*
     char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
   *Description*
Takes a BFD and searches it for a .gnu_debuglink section.  If this
section is found, it examines the section for the name and checksum of a
'.debug' file containing auxiliary debugging information.  It then
searches the filesystem for this .debug file in some standard locations,
including the directory tree rooted at DIR, and if found returns the
full filename.

   If DIR is NULL, it will search a default path configured into libbfd
at build time.  [XXX this feature is not currently implemented].

   *Returns*
'NULL' on any errors or failure to locate the .debug file, otherwise a
pointer to a heap-allocated string containing the filename.  The caller
is responsible for freeing this string.

2.14.1.23 'bfd_follow_gnu_debugaltlink'
.......................................

*Synopsis*
     char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir);
   *Description*
Takes a BFD and searches it for a .gnu_debugaltlink section.  If this
section is found, it examines the section for the name of a file
containing auxiliary debugging information.  It then searches the
filesystem for this file in a set of standard locations, including the
directory tree rooted at DIR, and if found returns the full filename.

   If DIR is NULL, it will search a default path configured into libbfd
at build time.  [FIXME: This feature is not currently implemented].

   *Returns*
'NULL' on any errors or failure to locate the debug file, otherwise a
pointer to a heap-allocated string containing the filename.  The caller
is responsible for freeing this string.

2.14.1.24 'bfd_create_gnu_debuglink_section'
............................................

*Synopsis*
     struct bfd_section *bfd_create_gnu_debuglink_section
        (bfd *abfd, const char *filename);
   *Description*
Takes a BFD and adds a .gnu_debuglink section to it.  The section is
sized to be big enough to contain a link to the specified FILENAME.

   *Returns*
A pointer to the new section is returned if all is ok.  Otherwise 'NULL'
is returned and bfd_error is set.

2.14.1.25 'bfd_fill_in_gnu_debuglink_section'
.............................................

*Synopsis*
     bfd_boolean bfd_fill_in_gnu_debuglink_section
        (bfd *abfd, struct bfd_section *sect, const char *filename);
   *Description*
Takes a BFD and containing a .gnu_debuglink section SECT and fills in
the contents of the section to contain a link to the specified FILENAME.
The filename should be relative to the current directory.

   *Returns*
'TRUE' is returned if all is ok.  Otherwise 'FALSE' is returned and
bfd_error is set.


File: bfd.info,  Node: Internal,  Next: File Caching,  Prev: Opening and Closing,  Up: BFD front end

2.15 Implementation details
===========================

2.15.1 Internal functions
-------------------------

*Description*
These routines are used within BFD. They are not intended for export,
but are documented here for completeness.

2.15.1.1 'bfd_write_bigendian_4byte_int'
........................................

*Synopsis*
     bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
   *Description*
Write a 4 byte integer I to the output BFD ABFD, in big endian order
regardless of what else is going on.  This is useful in archives.

2.15.1.2 'bfd_put_size'
.......................

2.15.1.3 'bfd_get_size'
.......................

*Description*
These macros as used for reading and writing raw data in sections; each
access (except for bytes) is vectored through the target format of the
BFD and mangled accordingly.  The mangling performs any necessary endian
translations and removes alignment restrictions.  Note that types
accepted and returned by these macros are identical so they can be
swapped around in macros--for example, 'libaout.h' defines 'GET_WORD' to
either 'bfd_get_32' or 'bfd_get_64'.

   In the put routines, VAL must be a 'bfd_vma'.  If we are on a system
without prototypes, the caller is responsible for making sure that is
true, with a cast if necessary.  We don't cast them in the macro
definitions because that would prevent 'lint' or 'gcc -Wall' from
detecting sins such as passing a pointer.  To detect calling these with
less than a 'bfd_vma', use 'gcc -Wconversion' on a host with 64 bit
'bfd_vma''s.

     /* Byte swapping macros for user section data.  */

     #define bfd_put_8(abfd, val, ptr) \
       ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
     #define bfd_put_signed_8 \
       bfd_put_8
     #define bfd_get_8(abfd, ptr) \
       (*(const unsigned char *) (ptr) & 0xff)
     #define bfd_get_signed_8(abfd, ptr) \
       (((*(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)

     #define bfd_put_16(abfd, val, ptr) \
       BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
     #define bfd_put_signed_16 \
       bfd_put_16
     #define bfd_get_16(abfd, ptr) \
       BFD_SEND (abfd, bfd_getx16, (ptr))
     #define bfd_get_signed_16(abfd, ptr) \
       BFD_SEND (abfd, bfd_getx_signed_16, (ptr))

     #define bfd_put_32(abfd, val, ptr) \
       BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
     #define bfd_put_signed_32 \
       bfd_put_32
     #define bfd_get_32(abfd, ptr) \
       BFD_SEND (abfd, bfd_getx32, (ptr))
     #define bfd_get_signed_32(abfd, ptr) \
       BFD_SEND (abfd, bfd_getx_signed_32, (ptr))

     #define bfd_put_64(abfd, val, ptr) \
       BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
     #define bfd_put_signed_64 \
       bfd_put_64
     #define bfd_get_64(abfd, ptr) \
       BFD_SEND (abfd, bfd_getx64, (ptr))
     #define bfd_get_signed_64(abfd, ptr) \
       BFD_SEND (abfd, bfd_getx_signed_64, (ptr))

     #define bfd_get(bits, abfd, ptr)                       \
       ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
        : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
        : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
        : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
        : (abort (), (bfd_vma) - 1))

     #define bfd_put(bits, abfd, val, ptr)                  \
       ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
        : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
        : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
        : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
        : (abort (), (void) 0))


2.15.1.4 'bfd_h_put_size'
.........................

*Description*
These macros have the same function as their 'bfd_get_x' brethren,
except that they are used for removing information for the header
records of object files.  Believe it or not, some object files keep
their header records in big endian order and their data in little endian
order.

     /* Byte swapping macros for file header data.  */

     #define bfd_h_put_8(abfd, val, ptr) \
       bfd_put_8 (abfd, val, ptr)
     #define bfd_h_put_signed_8(abfd, val, ptr) \
       bfd_put_8 (abfd, val, ptr)
     #define bfd_h_get_8(abfd, ptr) \
       bfd_get_8 (abfd, ptr)
     #define bfd_h_get_signed_8(abfd, ptr) \
       bfd_get_signed_8 (abfd, ptr)

     #define bfd_h_put_16(abfd, val, ptr) \
       BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
     #define bfd_h_put_signed_16 \
       bfd_h_put_16
     #define bfd_h_get_16(abfd, ptr) \
       BFD_SEND (abfd, bfd_h_getx16, (ptr))
     #define bfd_h_get_signed_16(abfd, ptr) \
       BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))

     #define bfd_h_put_32(abfd, val, ptr) \
       BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
     #define bfd_h_put_signed_32 \
       bfd_h_put_32
     #define bfd_h_get_32(abfd, ptr) \
       BFD_SEND (abfd, bfd_h_getx32, (ptr))
     #define bfd_h_get_signed_32(abfd, ptr) \
       BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))

     #define bfd_h_put_64(abfd, val, ptr) \
       BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
     #define bfd_h_put_signed_64 \
       bfd_h_put_64
     #define bfd_h_get_64(abfd, ptr) \
       BFD_SEND (abfd, bfd_h_getx64, (ptr))
     #define bfd_h_get_signed_64(abfd, ptr) \
       BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))

     /* Aliases for the above, which should eventually go away.  */

     #define H_PUT_64  bfd_h_put_64
     #define H_PUT_32  bfd_h_put_32
     #define H_PUT_16  bfd_h_put_16
     #define H_PUT_8   bfd_h_put_8
     #define H_PUT_S64 bfd_h_put_signed_64
     #define H_PUT_S32 bfd_h_put_signed_32
     #define H_PUT_S16 bfd_h_put_signed_16
     #define H_PUT_S8  bfd_h_put_signed_8
     #define H_GET_64  bfd_h_get_64
     #define H_GET_32  bfd_h_get_32
     #define H_GET_16  bfd_h_get_16
     #define H_GET_8   bfd_h_get_8
     #define H_GET_S64 bfd_h_get_signed_64
     #define H_GET_S32 bfd_h_get_signed_32
     #define H_GET_S16 bfd_h_get_signed_16
     #define H_GET_S8  bfd_h_get_signed_8



2.15.1.5 'bfd_log2'
...................

*Synopsis*
     unsigned int bfd_log2 (bfd_vma x);
   *Description*
Return the log base 2 of the value supplied, rounded up.  E.g., an X of
1025 returns 11.  A X of 0 returns 0.


File: bfd.info,  Node: File Caching,  Next: Linker Functions,  Prev: Internal,  Up: BFD front end

2.16 File caching
=================

The file caching mechanism is embedded within BFD and allows the
application to open as many BFDs as it wants without regard to the
underlying operating system's file descriptor limit (often as low as 20
open files).  The module in 'cache.c' maintains a least recently used
list of 'bfd_cache_max_open' files, and exports the name
'bfd_cache_lookup', which runs around and makes sure that the required
BFD is open.  If not, then it chooses a file to close, closes it and
opens the one wanted, returning its file handle.

2.16.1 Caching functions
------------------------

2.16.1.1 'bfd_cache_init'
.........................

*Synopsis*
     bfd_boolean bfd_cache_init (bfd *abfd);
   *Description*
Add a newly opened BFD to the cache.

2.16.1.2 'bfd_cache_close'
..........................

*Synopsis*
     bfd_boolean bfd_cache_close (bfd *abfd);
   *Description*
Remove the BFD ABFD from the cache.  If the attached file is open, then
close it too.

   *Returns*
'FALSE' is returned if closing the file fails, 'TRUE' is returned if all
is well.

2.16.1.3 'bfd_cache_close_all'
..............................

*Synopsis*
     bfd_boolean bfd_cache_close_all (void);
   *Description*
Remove all BFDs from the cache.  If the attached file is open, then
close it too.

   *Returns*
'FALSE' is returned if closing one of the file fails, 'TRUE' is returned
if all is well.

2.16.1.4 'bfd_open_file'
........................

*Synopsis*
     FILE* bfd_open_file (bfd *abfd);
   *Description*
Call the OS to open a file for ABFD.  Return the 'FILE *' (possibly
'NULL') that results from this operation.  Set up the BFD so that future
accesses know the file is open.  If the 'FILE *' returned is 'NULL',
then it won't have been put in the cache, so it won't have to be removed
from it.


File: bfd.info,  Node: Linker Functions,  Next: Hash Tables,  Prev: File Caching,  Up: BFD front end

2.17 Linker Functions
=====================

The linker uses three special entry points in the BFD target vector.  It
is not necessary to write special routines for these entry points when
creating a new BFD back end, since generic versions are provided.
However, writing them can speed up linking and make it use significantly
less runtime memory.

   The first routine creates a hash table used by the other routines.
The second routine adds the symbols from an object file to the hash
table.  The third routine takes all the object files and links them
together to create the output file.  These routines are designed so that
the linker proper does not need to know anything about the symbols in
the object files that it is linking.  The linker merely arranges the
sections as directed by the linker script and lets BFD handle the
details of symbols and relocs.

   The second routine and third routines are passed a pointer to a
'struct bfd_link_info' structure (defined in 'bfdlink.h') which holds
information relevant to the link, including the linker hash table (which
was created by the first routine) and a set of callback functions to the
linker proper.

   The generic linker routines are in 'linker.c', and use the header
file 'genlink.h'.  As of this writing, the only back ends which have
implemented versions of these routines are a.out (in 'aoutx.h') and
ECOFF (in 'ecoff.c').  The a.out routines are used as examples
throughout this section.

* Menu:

* Creating a Linker Hash Table::
* Adding Symbols to the Hash Table::
* Performing the Final Link::


File: bfd.info,  Node: Creating a Linker Hash Table,  Next: Adding Symbols to the Hash Table,  Prev: Linker Functions,  Up: Linker Functions

2.17.1 Creating a linker hash table
-----------------------------------

The linker routines must create a hash table, which must be derived from
'struct bfd_link_hash_table' described in 'bfdlink.c'.  *Note Hash
Tables::, for information on how to create a derived hash table.  This
entry point is called using the target vector of the linker output file.

   The '_bfd_link_hash_table_create' entry point must allocate and
initialize an instance of the desired hash table.  If the back end does
not require any additional information to be stored with the entries in
the hash table, the entry point may simply create a 'struct
bfd_link_hash_table'.  Most likely, however, some additional information
will be needed.

   For example, with each entry in the hash table the a.out linker keeps
the index the symbol has in the final output file (this index number is
used so that when doing a relocatable link the symbol index used in the
output file can be quickly filled in when copying over a reloc).  The
a.out linker code defines the required structures and functions for a
hash table derived from 'struct bfd_link_hash_table'.  The a.out linker
hash table is created by the function
'NAME(aout,link_hash_table_create)'; it simply allocates space for the
hash table, initializes it, and returns a pointer to it.

   When writing the linker routines for a new back end, you will
generally not know exactly which fields will be required until you have
finished.  You should simply create a new hash table which defines no
additional fields, and then simply add fields as they become necessary.


File: bfd.info,  Node: Adding Symbols to the Hash Table,  Next: Performing the Final Link,  Prev: Creating a Linker Hash Table,  Up: Linker Functions

2.17.2 Adding symbols to the hash table
---------------------------------------

The linker proper will call the '_bfd_link_add_symbols' entry point for
each object file or archive which is to be linked (typically these are
the files named on the command line, but some may also come from the
linker script).  The entry point is responsible for examining the file.
For an object file, BFD must add any relevant symbol information to the
hash table.  For an archive, BFD must determine which elements of the
archive should be used and adding them to the link.

   The a.out version of this entry point is
'NAME(aout,link_add_symbols)'.

* Menu:

* Differing file formats::
* Adding symbols from an object file::
* Adding symbols from an archive::


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

2.17.2.1 Differing file formats
...............................

Normally all the files involved in a link will be of the same format,
but it is also possible to link together different format object files,
and the back end must support that.  The '_bfd_link_add_symbols' entry
point is called via the target vector of the file to be added.  This has
an important consequence: the function may not assume that the hash
table is the type created by the corresponding
'_bfd_link_hash_table_create' vector.  All the '_bfd_link_add_symbols'
function can assume about the hash table is that it is derived from
'struct bfd_link_hash_table'.

   Sometimes the '_bfd_link_add_symbols' function must store some
information in the hash table entry to be used by the '_bfd_final_link'
function.  In such a case the output bfd xvec must be checked to make
sure that the hash table was created by an object file of the same
format.

   The '_bfd_final_link' routine must be prepared to handle a hash entry
without any extra information added by the '_bfd_link_add_symbols'
function.  A hash entry without extra information will also occur when
the linker script directs the linker to create a symbol.  Note that,
regardless of how a hash table entry is added, all the fields will be
initialized to some sort of null value by the hash table entry
initialization function.

   See 'ecoff_link_add_externals' for an example of how to check the
output bfd before saving information (in this case, the ECOFF external
symbol debugging information) in a hash table entry.


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

2.17.2.2 Adding symbols from an object file
...........................................

When the '_bfd_link_add_symbols' routine is passed an object file, it
must add all externally visible symbols in that object file to the hash
table.  The actual work of adding the symbol to the hash table is
normally handled by the function '_bfd_generic_link_add_one_symbol'.
The '_bfd_link_add_symbols' routine is responsible for reading all the
symbols from the object file and passing the correct information to
'_bfd_generic_link_add_one_symbol'.

   The '_bfd_link_add_symbols' routine should not use
'bfd_canonicalize_symtab' to read the symbols.  The point of providing
this routine is to avoid the overhead of converting the symbols into
generic 'asymbol' structures.

   '_bfd_generic_link_add_one_symbol' handles the details of combining
common symbols, warning about multiple definitions, and so forth.  It
takes arguments which describe the symbol to add, notably symbol flags,
a section, and an offset.  The symbol flags include such things as
'BSF_WEAK' or 'BSF_INDIRECT'.  The section is a section in the object
file, or something like 'bfd_und_section_ptr' for an undefined symbol or
'bfd_com_section_ptr' for a common symbol.

   If the '_bfd_final_link' routine is also going to need to read the
symbol information, the '_bfd_link_add_symbols' routine should save it
somewhere attached to the object file BFD. However, the information
should only be saved if the 'keep_memory' field of the 'info' argument
is TRUE, so that the '-no-keep-memory' linker switch is effective.

   The a.out function which adds symbols from an object file is
'aout_link_add_object_symbols', and most of the interesting work is in
'aout_link_add_symbols'.  The latter saves pointers to the hash tables
entries created by '_bfd_generic_link_add_one_symbol' indexed by symbol
number, so that the '_bfd_final_link' routine does not have to call the
hash table lookup routine to locate the entry.


File: bfd.info,  Node: Adding symbols from an archive,  Prev: Adding symbols from an object file,  Up: Adding Symbols to the Hash Table

2.17.2.3 Adding symbols from an archive
.......................................

When the '_bfd_link_add_symbols' routine is passed an archive, it must
look through the symbols defined by the archive and decide which
elements of the archive should be included in the link.  For each such
element it must call the 'add_archive_element' linker callback, and it
must add the symbols from the object file to the linker hash table.
(The callback may in fact indicate that a replacement BFD should be
used, in which case the symbols from that BFD should be added to the
linker hash table instead.)

   In most cases the work of looking through the symbols in the archive
should be done by the '_bfd_generic_link_add_archive_symbols' function.
This function builds a hash table from the archive symbol table and
looks through the list of undefined symbols to see which elements should
be included.  '_bfd_generic_link_add_archive_symbols' is passed a
function to call to make the final decision about adding an archive
element to the link and to do the actual work of adding the symbols to
the linker hash table.

   The function passed to '_bfd_generic_link_add_archive_symbols' must
read the symbols of the archive element and decide whether the archive
element should be included in the link.  If the element is to be
included, the 'add_archive_element' linker callback routine must be
called with the element as an argument, and the element's symbols must
be added to the linker hash table just as though the element had itself
been passed to the '_bfd_link_add_symbols' function.  The
'add_archive_element' callback has the option to indicate that it would
like to replace the element archive with a substitute BFD, in which case
it is the symbols of that substitute BFD that must be added to the
linker hash table instead.

   When the a.out '_bfd_link_add_symbols' function receives an archive,
it calls '_bfd_generic_link_add_archive_symbols' passing
'aout_link_check_archive_element' as the function argument.
'aout_link_check_archive_element' calls 'aout_link_check_ar_symbols'.
If the latter decides to add the element (an element is only added if it
provides a real, non-common, definition for a previously undefined or
common symbol) it calls the 'add_archive_element' callback and then
'aout_link_check_archive_element' calls 'aout_link_add_symbols' to
actually add the symbols to the linker hash table - possibly those of a
substitute BFD, if the 'add_archive_element' callback avails itself of
that option.

   The ECOFF back end is unusual in that it does not normally call
'_bfd_generic_link_add_archive_symbols', because ECOFF archives already
contain a hash table of symbols.  The ECOFF back end searches the
archive itself to avoid the overhead of creating a new hash table.


File: bfd.info,  Node: Performing the Final Link,  Prev: Adding Symbols to the Hash Table,  Up: Linker Functions

2.17.3 Performing the final link
--------------------------------

When all the input files have been processed, the linker calls the
'_bfd_final_link' entry point of the output BFD. This routine is
responsible for producing the final output file, which has several
aspects.  It must relocate the contents of the input sections and copy
the data into the output sections.  It must build an output symbol table
including any local symbols from the input files and the global symbols
from the hash table.  When producing relocatable output, it must modify
the input relocs and write them into the output file.  There may also be
object format dependent work to be done.

   The linker will also call the 'write_object_contents' entry point
when the BFD is closed.  The two entry points must work together in
order to produce the correct output file.

   The details of how this works are inevitably dependent upon the
specific object file format.  The a.out '_bfd_final_link' routine is
'NAME(aout,final_link)'.

* Menu:

* Information provided by the linker::
* Relocating the section contents::
* Writing the symbol table::


File: bfd.info,  Node: Information provided by the linker,  Next: Relocating the section contents,  Prev: Performing the Final Link,  Up: Performing the Final Link

2.17.3.1 Information provided by the linker
...........................................

Before the linker calls the '_bfd_final_link' entry point, it sets up
some data structures for the function to use.

   The 'input_bfds' field of the 'bfd_link_info' structure will point to
a list of all the input files included in the link.  These files are
linked through the 'link_next' field of the 'bfd' structure.

   Each section in the output file will have a list of 'link_order'
structures attached to the 'map_head.link_order' field (the 'link_order'
structure is defined in 'bfdlink.h').  These structures describe how to
create the contents of the output section in terms of the contents of
various input sections, fill constants, and, eventually, other types of
information.  They also describe relocs that must be created by the BFD
backend, but do not correspond to any input file; this is used to
support -Ur, which builds constructors while generating a relocatable
object file.


File: bfd.info,  Node: Relocating the section contents,  Next: Writing the symbol table,  Prev: Information provided by the linker,  Up: Performing the Final Link

2.17.3.2 Relocating the section contents
........................................

The '_bfd_final_link' function should look through the 'link_order'
structures attached to each section of the output file.  Each
'link_order' structure should either be handled specially, or it should
be passed to the function '_bfd_default_link_order' which will do the
right thing ('_bfd_default_link_order' is defined in 'linker.c').

   For efficiency, a 'link_order' of type 'bfd_indirect_link_order'
whose associated section belongs to a BFD of the same format as the
output BFD must be handled specially.  This type of 'link_order'
describes part of an output section in terms of a section belonging to
one of the input files.  The '_bfd_final_link' function should read the
contents of the section and any associated relocs, apply the relocs to
the section contents, and write out the modified section contents.  If
performing a relocatable link, the relocs themselves must also be
modified and written out.

   The functions '_bfd_relocate_contents' and '_bfd_final_link_relocate'
provide some general support for performing the actual relocations,
notably overflow checking.  Their arguments include information about
the symbol the relocation is against and a 'reloc_howto_type' argument
which describes the relocation to perform.  These functions are defined
in 'reloc.c'.

   The a.out function which handles reading, relocating, and writing
section contents is 'aout_link_input_section'.  The actual relocation is
done in 'aout_link_input_section_std' and 'aout_link_input_section_ext'.


File: bfd.info,  Node: Writing the symbol table,  Prev: Relocating the section contents,  Up: Performing the Final Link

2.17.3.3 Writing the symbol table
.................................

The '_bfd_final_link' function must gather all the symbols in the input
files and write them out.  It must also write out all the symbols in the
global hash table.  This must be controlled by the 'strip' and 'discard'
fields of the 'bfd_link_info' structure.

   The local symbols of the input files will not have been entered into
the linker hash table.  The '_bfd_final_link' routine must consider each
input file and include the symbols in the output file.  It may be
convenient to do this when looking through the 'link_order' structures,
or it may be done by stepping through the 'input_bfds' list.

   The '_bfd_final_link' routine must also traverse the global hash
table to gather all the externally visible symbols.  It is possible that
most of the externally visible symbols may be written out when
considering the symbols of each input file, but it is still necessary to
traverse the hash table since the linker script may have defined some
symbols that are not in any of the input files.

   The 'strip' field of the 'bfd_link_info' structure controls which
symbols are written out.  The possible values are listed in 'bfdlink.h'.
If the value is 'strip_some', then the 'keep_hash' field of the
'bfd_link_info' structure is a hash table of symbols to keep; each
symbol should be looked up in this hash table, and only symbols which
are present should be included in the output file.

   If the 'strip' field of the 'bfd_link_info' structure permits local
symbols to be written out, the 'discard' field is used to further
controls which local symbols are included in the output file.  If the
value is 'discard_l', then all local symbols which begin with a certain
prefix are discarded; this is controlled by the
'bfd_is_local_label_name' entry point.

   The a.out backend handles symbols by calling
'aout_link_write_symbols' on each input BFD and then traversing the
global hash table with the function 'aout_link_write_other_symbol'.  It
builds a string table while writing out the symbols, which is written to
the output file at the end of 'NAME(aout,final_link)'.

2.17.3.4 'bfd_link_split_section'
.................................

*Synopsis*
     bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
   *Description*
Return nonzero if SEC should be split during a reloceatable or final
link.
     #define bfd_link_split_section(abfd, sec) \
            BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))


2.17.3.5 'bfd_section_already_linked'
.....................................

*Synopsis*
     bfd_boolean bfd_section_already_linked (bfd *abfd,
         asection *sec,
         struct bfd_link_info *info);
   *Description*
Check if DATA has been already linked during a reloceatable or final
link.  Return TRUE if it has.
     #define bfd_section_already_linked(abfd, sec, info) \
            BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))


2.17.3.6 'bfd_generic_define_common_symbol'
...........................................

*Synopsis*
     bfd_boolean bfd_generic_define_common_symbol
        (bfd *output_bfd, struct bfd_link_info *info,
         struct bfd_link_hash_entry *h);
   *Description*
Convert common symbol H into a defined symbol.  Return TRUE on success
and FALSE on failure.
     #define bfd_define_common_symbol(output_bfd, info, h) \
            BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))


2.17.3.7 'bfd_find_version_for_sym'
...................................

*Synopsis*
     struct bfd_elf_version_tree * bfd_find_version_for_sym
        (struct bfd_elf_version_tree *verdefs,
         const char *sym_name, bfd_boolean *hide);
   *Description*
Search an elf version script tree for symbol versioning info and export
/ don't-export status for a given symbol.  Return non-NULL on success
and NULL on failure; also sets the output 'hide' boolean parameter.

2.17.3.8 'bfd_hide_sym_by_version'
..................................

*Synopsis*
     bfd_boolean bfd_hide_sym_by_version
        (struct bfd_elf_version_tree *verdefs, const char *sym_name);
   *Description*
Search an elf version script tree for symbol versioning info for a given
symbol.  Return TRUE if the symbol is hidden.


File: bfd.info,  Node: Hash Tables,  Prev: Linker Functions,  Up: BFD front end

2.18 Hash Tables
================

BFD provides a simple set of hash table functions.  Routines are
provided to initialize a hash table, to free a hash table, to look up a
string in a hash table and optionally create an entry for it, and to
traverse a hash table.  There is currently no routine to delete an
string from a hash table.

   The basic hash table does not permit any data to be stored with a
string.  However, a hash table is designed to present a base class from
which other types of hash tables may be derived.  These derived types
may store additional information with the string.  Hash tables were
implemented in this way, rather than simply providing a data pointer in
a hash table entry, because they were designed for use by the linker
back ends.  The linker may create thousands of hash table entries, and
the overhead of allocating private data and storing and following
pointers becomes noticeable.

   The basic hash table code is in 'hash.c'.

* Menu:

* Creating and Freeing a Hash Table::
* Looking Up or Entering a String::
* Traversing a Hash Table::
* Deriving a New Hash Table Type::


File: bfd.info,  Node: Creating and Freeing a Hash Table,  Next: Looking Up or Entering a String,  Prev: Hash Tables,  Up: Hash Tables

2.18.1 Creating and freeing a hash table
----------------------------------------

To create a hash table, create an instance of a 'struct bfd_hash_table'
(defined in 'bfd.h') and call 'bfd_hash_table_init' (if you know
approximately how many entries you will need, the function
'bfd_hash_table_init_n', which takes a SIZE argument, may be used).
'bfd_hash_table_init' returns 'FALSE' if some sort of error occurs.

   The function 'bfd_hash_table_init' take as an argument a function to
use to create new entries.  For a basic hash table, use the function
'bfd_hash_newfunc'.  *Note Deriving a New Hash Table Type::, for why you
would want to use a different value for this argument.

   'bfd_hash_table_init' will create an objalloc which will be used to
allocate new entries.  You may allocate memory on this objalloc using
'bfd_hash_allocate'.

   Use 'bfd_hash_table_free' to free up all the memory that has been
allocated for a hash table.  This will not free up the 'struct
bfd_hash_table' itself, which you must provide.

   Use 'bfd_hash_set_default_size' to set the default size of hash table
to use.


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

2.18.2 Looking up or entering a string
--------------------------------------

The function 'bfd_hash_lookup' is used both to look up a string in the
hash table and to create a new entry.

   If the CREATE argument is 'FALSE', 'bfd_hash_lookup' will look up a
string.  If the string is found, it will returns a pointer to a 'struct
bfd_hash_entry'.  If the string is not found in the table
'bfd_hash_lookup' will return 'NULL'.  You should not modify any of the
fields in the returns 'struct bfd_hash_entry'.

   If the CREATE argument is 'TRUE', the string will be entered into the
hash table if it is not already there.  Either way a pointer to a
'struct bfd_hash_entry' will be returned, either to the existing
structure or to a newly created one.  In this case, a 'NULL' return
means that an error occurred.

   If the CREATE argument is 'TRUE', and a new entry is created, the
COPY argument is used to decide whether to copy the string onto the hash
table objalloc or not.  If COPY is passed as 'FALSE', you must be
careful not to deallocate or modify the string as long as the hash table
exists.


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

2.18.3 Traversing a hash table
------------------------------

The function 'bfd_hash_traverse' may be used to traverse a hash table,
calling a function on each element.  The traversal is done in a random
order.

   'bfd_hash_traverse' takes as arguments a function and a generic 'void
*' pointer.  The function is called with a hash table entry (a 'struct
bfd_hash_entry *') and the generic pointer passed to
'bfd_hash_traverse'.  The function must return a 'boolean' value, which
indicates whether to continue traversing the hash table.  If the
function returns 'FALSE', 'bfd_hash_traverse' will stop the traversal
and return immediately.


File: bfd.info,  Node: Deriving a New Hash Table Type,  Prev: Traversing a Hash Table,  Up: Hash Tables

2.18.4 Deriving a new hash table type
-------------------------------------

Many uses of hash tables want to store additional information which each
entry in the hash table.  Some also find it convenient to store
additional information with the hash table itself.  This may be done
using a derived hash table.

   Since C is not an object oriented language, creating a derived hash
table requires sticking together some boilerplate routines with a few
differences specific to the type of hash table you want to create.

   An example of a derived hash table is the linker hash table.  The
structures for this are defined in 'bfdlink.h'.  The functions are in
'linker.c'.

   You may also derive a hash table from an already derived hash table.
For example, the a.out linker backend code uses a hash table derived
from the linker hash table.

* Menu:

* Define the Derived Structures::
* Write the Derived Creation Routine::
* Write Other Derived Routines::


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

2.18.4.1 Define the derived structures
......................................

You must define a structure for an entry in the hash table, and a
structure for the hash table itself.

   The first field in the structure for an entry in the hash table must
be of the type used for an entry in the hash table you are deriving
from.  If you are deriving from a basic hash table this is 'struct
bfd_hash_entry', which is defined in 'bfd.h'.  The first field in the
structure for the hash table itself must be of the type of the hash
table you are deriving from itself.  If you are deriving from a basic
hash table, this is 'struct bfd_hash_table'.

   For example, the linker hash table defines 'struct
bfd_link_hash_entry' (in 'bfdlink.h').  The first field, 'root', is of
type 'struct bfd_hash_entry'.  Similarly, the first field in 'struct
bfd_link_hash_table', 'table', is of type 'struct bfd_hash_table'.


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

2.18.4.2 Write the derived creation routine
...........................................

You must write a routine which will create and initialize an entry in
the hash table.  This routine is passed as the function argument to
'bfd_hash_table_init'.

   In order to permit other hash tables to be derived from the hash
table you are creating, this routine must be written in a standard way.

   The first argument to the creation routine is a pointer to a hash
table entry.  This may be 'NULL', in which case the routine should
allocate the right amount of space.  Otherwise the space has already
been allocated by a hash table type derived from this one.

   After allocating space, the creation routine must call the creation
routine of the hash table type it is derived from, passing in a pointer
to the space it just allocated.  This will initialize any fields used by
the base hash table.

   Finally the creation routine must initialize any local fields for the
new hash table type.

   Here is a boilerplate example of a creation routine.  FUNCTION_NAME
is the name of the routine.  ENTRY_TYPE is the type of an entry in the
hash table you are creating.  BASE_NEWFUNC is the name of the creation
routine of the hash table type your hash table is derived from.

     struct bfd_hash_entry *
     FUNCTION_NAME (struct bfd_hash_entry *entry,
                          struct bfd_hash_table *table,
                          const char *string)
     {
       struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry;

      /* Allocate the structure if it has not already been allocated by a
         derived class.  */
       if (ret == NULL)
         {
           ret = bfd_hash_allocate (table, sizeof (* ret));
           if (ret == NULL)
             return NULL;
         }

      /* Call the allocation method of the base class.  */
       ret = ((ENTRY_TYPE *)
             BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string));

      /* Initialize the local fields here.  */

       return (struct bfd_hash_entry *) ret;
     }
   *Description*
The creation routine for the linker hash table, which is in 'linker.c',
looks just like this example.  FUNCTION_NAME is
'_bfd_link_hash_newfunc'.  ENTRY_TYPE is 'struct bfd_link_hash_entry'.
BASE_NEWFUNC is 'bfd_hash_newfunc', the creation routine for a basic
hash table.

   '_bfd_link_hash_newfunc' also initializes the local fields in a
linker hash table entry: 'type', 'written' and 'next'.


File: bfd.info,  Node: Write Other Derived Routines,  Prev: Write the Derived Creation Routine,  Up: Deriving a New Hash Table Type

2.18.4.3 Write other derived routines
.....................................

You will want to write other routines for your new hash table, as well.

   You will want an initialization routine which calls the
initialization routine of the hash table you are deriving from and
initializes any other local fields.  For the linker hash table, this is
'_bfd_link_hash_table_init' in 'linker.c'.

   You will want a lookup routine which calls the lookup routine of the
hash table you are deriving from and casts the result.  The linker hash
table uses 'bfd_link_hash_lookup' in 'linker.c' (this actually takes an
additional argument which it uses to decide how to return the looked up
value).

   You may want a traversal routine.  This should just call the
traversal routine of the hash table you are deriving from with
appropriate casts.  The linker hash table uses 'bfd_link_hash_traverse'
in 'linker.c'.

   These routines may simply be defined as macros.  For example, the
a.out backend linker hash table, which is derived from the linker hash
table, uses macros for the lookup and traversal routines.  These are
'aout_link_hash_lookup' and 'aout_link_hash_traverse' in aoutx.h.


File: bfd.info,  Node: BFD back ends,  Next: GNU Free Documentation License,  Prev: BFD front end,  Up: Top

3 BFD back ends
***************

* Menu:

* What to Put Where::
* aout ::	a.out backends
* coff ::	coff backends
* elf  ::	elf backends
* mmo  ::	mmo backend


File: bfd.info,  Node: What to Put Where,  Next: aout,  Prev: BFD back ends,  Up: BFD back ends

3.1 What to Put Where
=====================

All of BFD lives in one directory.


File: bfd.info,  Node: aout,  Next: coff,  Prev: What to Put Where,  Up: BFD back ends

3.2 a.out backends
==================

*Description*
BFD supports a number of different flavours of a.out format, though the
major differences are only the sizes of the structures on disk, and the
shape of the relocation information.

   The support is split into a basic support file 'aoutx.h' and other
files which derive functions from the base.  One derivation file is
'aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions
support for sun3, sun4, 386 and 29k a.out files, to create a target jump
vector for a specific target.

   This information is further split out into more specific files for
each machine, including 'sunos.c' for sun3 and sun4, 'newsos3.c' for the
Sony NEWS, and 'demo64.c' for a demonstration of a 64 bit a.out format.

   The base file 'aoutx.h' defines general mechanisms for reading and
writing records to and from disk and various other methods which BFD
requires.  It is included by 'aout32.c' and 'aout64.c' to form the names
'aout_32_swap_exec_header_in', 'aout_64_swap_exec_header_in', etc.

   As an example, this is what goes on to make the back end for a sun4,
from 'aout32.c':

            #define ARCH_SIZE 32
            #include "aoutx.h"

   Which exports names:

            ...
            aout_32_canonicalize_reloc
            aout_32_find_nearest_line
            aout_32_get_lineno
            aout_32_get_reloc_upper_bound
            ...

   from 'sunos.c':

            #define TARGET_NAME "a.out-sunos-big"
            #define VECNAME    sparc_aout_sunos_be_vec
            #include "aoutf1.h"

   requires all the names from 'aout32.c', and produces the jump vector

            sparc_aout_sunos_be_vec

   The file 'host-aout.c' is a special case.  It is for a large set of
hosts that use "more or less standard" a.out files, and for which
cross-debugging is not interesting.  It uses the standard 32-bit a.out
support routines, but determines the file offsets and addresses of the
text, data, and BSS sections, the machine architecture and machine type,
and the entry point address, in a host-dependent manner.  Once these
values have been determined, generic code is used to handle the object
file.

   When porting it to run on a new system, you must supply:

             HOST_PAGE_SIZE
             HOST_SEGMENT_SIZE
             HOST_MACHINE_ARCH       (optional)
             HOST_MACHINE_MACHINE    (optional)
             HOST_TEXT_START_ADDR
             HOST_STACK_END_ADDR

   in the file '../include/sys/h-XXX.h' (for your host).  These values,
plus the structures and macros defined in 'a.out.h' on your host system,
will produce a BFD target that will access ordinary a.out files on your
host.  To configure a new machine to use 'host-aout.c', specify:

            TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
            TDEPFILES= host-aout.o trad-core.o

   in the 'config/XXX.mt' file, and modify 'configure.in' to use the
'XXX.mt' file (by setting "'bfd_target=XXX'") when your configuration is
selected.

3.2.1 Relocations
-----------------

*Description*
The file 'aoutx.h' provides for both the _standard_ and _extended_ forms
of a.out relocation records.

   The standard records contain only an address, a symbol index, and a
type field.  The extended records (used on 29ks and sparcs) also have a
full integer for an addend.

3.2.2 Internal entry points
---------------------------

*Description*
'aoutx.h' exports several routines for accessing the contents of an
a.out file, which are gathered and exported in turn by various format
specific files (eg sunos.c).

3.2.2.1 'aout_SIZE_swap_exec_header_in'
.......................................

*Synopsis*
     void aout_SIZE_swap_exec_header_in,
        (bfd *abfd,
         struct external_exec *bytes,
         struct internal_exec *execp);
   *Description*
Swap the information in an executable header RAW_BYTES taken from a raw
byte stream memory image into the internal exec header structure EXECP.

3.2.2.2 'aout_SIZE_swap_exec_header_out'
........................................

*Synopsis*
     void aout_SIZE_swap_exec_header_out
        (bfd *abfd,
         struct internal_exec *execp,
         struct external_exec *raw_bytes);
   *Description*
Swap the information in an internal exec header structure EXECP into the
buffer RAW_BYTES ready for writing to disk.

3.2.2.3 'aout_SIZE_some_aout_object_p'
......................................

*Synopsis*
     const bfd_target *aout_SIZE_some_aout_object_p
        (bfd *abfd,
         struct internal_exec *execp,
         const bfd_target *(*callback_to_real_object_p) (bfd *));
   *Description*
Some a.out variant thinks that the file open in ABFD checking is an
a.out file.  Do some more checking, and set up for access if it really
is.  Call back to the calling environment's "finish up" function just
before returning, to handle any last-minute setup.

3.2.2.4 'aout_SIZE_mkobject'
............................

*Synopsis*
     bfd_boolean aout_SIZE_mkobject, (bfd *abfd);
   *Description*
Initialize BFD ABFD for use with a.out files.

3.2.2.5 'aout_SIZE_machine_type'
................................

*Synopsis*
     enum machine_type  aout_SIZE_machine_type
        (enum bfd_architecture arch,
         unsigned long machine,
         bfd_boolean *unknown);
   *Description*
Keep track of machine architecture and machine type for a.out's.  Return
the 'machine_type' for a particular architecture and machine, or
'M_UNKNOWN' if that exact architecture and machine can't be represented
in a.out format.

   If the architecture is understood, machine type 0 (default) is always
understood.

3.2.2.6 'aout_SIZE_set_arch_mach'
.................................

*Synopsis*
     bfd_boolean aout_SIZE_set_arch_mach,
        (bfd *,
         enum bfd_architecture arch,
         unsigned long machine);
   *Description*
Set the architecture and the machine of the BFD ABFD to the values ARCH
and MACHINE.  Verify that ABFD's format can support the architecture
required.

3.2.2.7 'aout_SIZE_new_section_hook'
....................................

*Synopsis*
     bfd_boolean aout_SIZE_new_section_hook,
        (bfd *abfd,
         asection *newsect);
   *Description*
Called by the BFD in response to a 'bfd_make_section' request.


File: bfd.info,  Node: coff,  Next: elf,  Prev: aout,  Up: BFD back ends

3.3 coff backends
=================

BFD supports a number of different flavours of coff format.  The major
differences between formats are the sizes and alignments of fields in
structures on disk, and the occasional extra field.

   Coff in all its varieties is implemented with a few common files and
a number of implementation specific files.  For example, The 88k bcs
coff format is implemented in the file 'coff-m88k.c'.  This file
'#include's 'coff/m88k.h' which defines the external structure of the
coff format for the 88k, and 'coff/internal.h' which defines the
internal structure.  'coff-m88k.c' also defines the relocations used by
the 88k format *Note Relocations::.

   The Intel i960 processor version of coff is implemented in
'coff-i960.c'.  This file has the same structure as 'coff-m88k.c',
except that it includes 'coff/i960.h' rather than 'coff-m88k.h'.

3.3.1 Porting to a new version of coff
--------------------------------------

The recommended method is to select from the existing implementations
the version of coff which is most like the one you want to use.  For
example, we'll say that i386 coff is the one you select, and that your
coff flavour is called foo.  Copy 'i386coff.c' to 'foocoff.c', copy
'../include/coff/i386.h' to '../include/coff/foo.h', and add the lines
to 'targets.c' and 'Makefile.in' so that your new back end is used.
Alter the shapes of the structures in '../include/coff/foo.h' so that
they match what you need.  You will probably also have to add '#ifdef's
to the code in 'coff/internal.h' and 'coffcode.h' if your version of
coff is too wild.

   You can verify that your new BFD backend works quite simply by
building 'objdump' from the 'binutils' directory, and making sure that
its version of what's going on and your host system's idea (assuming it
has the pretty standard coff dump utility, usually called 'att-dump' or
just 'dump') are the same.  Then clean up your code, and send what
you've done to Cygnus.  Then your stuff will be in the next release, and
you won't have to keep integrating it.

3.3.2 How the coff backend works
--------------------------------

3.3.2.1 File layout
...................

The Coff backend is split into generic routines that are applicable to
any Coff target and routines that are specific to a particular target.
The target-specific routines are further split into ones which are
basically the same for all Coff targets except that they use the
external symbol format or use different values for certain constants.

   The generic routines are in 'coffgen.c'.  These routines work for any
Coff target.  They use some hooks into the target specific code; the
hooks are in a 'bfd_coff_backend_data' structure, one of which exists
for each target.

   The essentially similar target-specific routines are in 'coffcode.h'.
This header file includes executable C code.  The various Coff targets
first include the appropriate Coff header file, make any special defines
that are needed, and then include 'coffcode.h'.

   Some of the Coff targets then also have additional routines in the
target source file itself.

   For example, 'coff-i960.c' includes 'coff/internal.h' and
'coff/i960.h'.  It then defines a few constants, such as 'I960', and
includes 'coffcode.h'.  Since the i960 has complex relocation types,
'coff-i960.c' also includes some code to manipulate the i960 relocs.
This code is not in 'coffcode.h' because it would not be used by any
other target.

3.3.2.2 Coff long section names
...............................

In the standard Coff object format, section names are limited to the
eight bytes available in the 's_name' field of the 'SCNHDR' section
header structure.  The format requires the field to be NUL-padded, but
not necessarily NUL-terminated, so the longest section names permitted
are a full eight characters.

   The Microsoft PE variants of the Coff object file format add an
extension to support the use of long section names.  This extension is
defined in section 4 of the Microsoft PE/COFF specification (rev 8.1).
If a section name is too long to fit into the section header's 's_name'
field, it is instead placed into the string table, and the 's_name'
field is filled with a slash ("/") followed by the ASCII decimal
representation of the offset of the full name relative to the string
table base.

   Note that this implies that the extension can only be used in object
files, as executables do not contain a string table.  The standard
specifies that long section names from objects emitted into executable
images are to be truncated.

   However, as a GNU extension, BFD can generate executable images that
contain a string table and long section names.  This would appear to be
technically valid, as the standard only says that Coff debugging
information is deprecated, not forbidden, and in practice it works,
although some tools that parse PE files expecting the MS standard format
may become confused; 'PEview' is one known example.

   The functionality is supported in BFD by code implemented under the
control of the macro 'COFF_LONG_SECTION_NAMES'.  If not defined, the
format does not support long section names in any way.  If defined, it
is used to initialise a flag, '_bfd_coff_long_section_names', and a hook
function pointer, '_bfd_coff_set_long_section_names', in the Coff
backend data structure.  The flag controls the generation of long
section names in output BFDs at runtime; if it is false, as it will be
by default when generating an executable image, long section names are
truncated; if true, the long section names extension is employed.  The
hook points to a function that allows the value of the flag to be
altered at runtime, on formats that support long section names at all;
on other formats it points to a stub that returns an error indication.

   With input BFDs, the flag is set according to whether any long
section names are detected while reading the section headers.  For a
completely new BFD, the flag is set to the default for the target
format.  This information can be used by a client of the BFD library
when deciding what output format to generate, and means that a BFD that
is opened for read and subsequently converted to a writeable BFD and
modified in-place will retain whatever format it had on input.

   If 'COFF_LONG_SECTION_NAMES' is simply defined (blank), or is defined
to the value "1", then long section names are enabled by default; if it
is defined to the value zero, they are disabled by default (but still
accepted in input BFDs).  The header 'coffcode.h' defines a macro,
'COFF_DEFAULT_LONG_SECTION_NAMES', which is used in the backends to
initialise the backend data structure fields appropriately; see the
comments for further detail.

3.3.2.3 Bit twiddling
.....................

Each flavour of coff supported in BFD has its own header file describing
the external layout of the structures.  There is also an internal
description of the coff layout, in 'coff/internal.h'.  A major function
of the coff backend is swapping the bytes and twiddling the bits to
translate the external form of the structures into the normal internal
form.  This is all performed in the 'bfd_swap'_thing_direction routines.
Some elements are different sizes between different versions of coff; it
is the duty of the coff version specific include file to override the
definitions of various packing routines in 'coffcode.h'.  E.g., the size
of line number entry in coff is sometimes 16 bits, and sometimes 32
bits.  '#define'ing 'PUT_LNSZ_LNNO' and 'GET_LNSZ_LNNO' will select the
correct one.  No doubt, some day someone will find a version of coff
which has a varying field size not catered to at the moment.  To port
BFD, that person will have to add more '#defines'.  Three of the bit
twiddling routines are exported to 'gdb'; 'coff_swap_aux_in',
'coff_swap_sym_in' and 'coff_swap_lineno_in'.  'GDB' reads the symbol
table on its own, but uses BFD to fix things up.  More of the bit
twiddlers are exported for 'gas'; 'coff_swap_aux_out',
'coff_swap_sym_out', 'coff_swap_lineno_out', 'coff_swap_reloc_out',
'coff_swap_filehdr_out', 'coff_swap_aouthdr_out',
'coff_swap_scnhdr_out'.  'Gas' currently keeps track of all the symbol
table and reloc drudgery itself, thereby saving the internal BFD
overhead, but uses BFD to swap things on the way out, making cross ports
much safer.  Doing so also allows BFD (and thus the linker) to use the
same header files as 'gas', which makes one avenue to disaster
disappear.

3.3.2.4 Symbol reading
......................

The simple canonical form for symbols used by BFD is not rich enough to
keep all the information available in a coff symbol table.  The back end
gets around this problem by keeping the original symbol table around,
"behind the scenes".

   When a symbol table is requested (through a call to
'bfd_canonicalize_symtab'), a request gets through to
'coff_get_normalized_symtab'.  This reads the symbol table from the coff
file and swaps all the structures inside into the internal form.  It
also fixes up all the pointers in the table (represented in the file by
offsets from the first symbol in the table) into physical pointers to
elements in the new internal table.  This involves some work since the
meanings of fields change depending upon context: a field that is a
pointer to another structure in the symbol table at one moment may be
the size in bytes of a structure at the next.  Another pass is made over
the table.  All symbols which mark file names ('C_FILE' symbols) are
modified so that the internal string points to the value in the auxent
(the real filename) rather than the normal text associated with the
symbol ('".file"').

   At this time the symbol names are moved around.  Coff stores all
symbols less than nine characters long physically within the symbol
table; longer strings are kept at the end of the file in the string
table.  This pass moves all strings into memory and replaces them with
pointers to the strings.

   The symbol table is massaged once again, this time to create the
canonical table used by the BFD application.  Each symbol is inspected
in turn, and a decision made (using the 'sclass' field) about the
various flags to set in the 'asymbol'.  *Note Symbols::.  The generated
canonical table shares strings with the hidden internal symbol table.

   Any linenumbers are read from the coff file too, and attached to the
symbols which own the functions the linenumbers belong to.

3.3.2.5 Symbol writing
......................

Writing a symbol to a coff file which didn't come from a coff file will
lose any debugging information.  The 'asymbol' structure remembers the
BFD from which the symbol was taken, and on output the back end makes
sure that the same destination target as source target is present.

   When the symbols have come from a coff file then all the debugging
information is preserved.

   Symbol tables are provided for writing to the back end in a vector of
pointers to pointers.  This allows applications like the linker to
accumulate and output large symbol tables without having to do too much
byte copying.

   This function runs through the provided symbol table and patches each
symbol marked as a file place holder ('C_FILE') to point to the next
file place holder in the list.  It also marks each 'offset' field in the
list with the offset from the first symbol of the current symbol.

   Another function of this procedure is to turn the canonical value
form of BFD into the form used by coff.  Internally, BFD expects symbol
values to be offsets from a section base; so a symbol physically at
0x120, but in a section starting at 0x100, would have the value 0x20.
Coff expects symbols to contain their final value, so symbols have their
values changed at this point to reflect their sum with their owning
section.  This transformation uses the 'output_section' field of the
'asymbol''s 'asection' *Note Sections::.

   * 'coff_mangle_symbols'
   This routine runs though the provided symbol table and uses the
offsets generated by the previous pass and the pointers generated when
the symbol table was read in to create the structured hierarchy required
by coff.  It changes each pointer to a symbol into the index into the
symbol table of the asymbol.

   * 'coff_write_symbols'
   This routine runs through the symbol table and patches up the symbols
from their internal form into the coff way, calls the bit twiddlers, and
writes out the table to the file.

3.3.2.6 'coff_symbol_type'
..........................

*Description*
The hidden information for an 'asymbol' is described in a
'combined_entry_type':


     typedef struct coff_ptr_struct
     {
       /* Remembers the offset from the first symbol in the file for
          this symbol. Generated by coff_renumber_symbols. */
       unsigned int offset;

       /* Should the value of this symbol be renumbered.  Used for
          XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
       unsigned int fix_value : 1;

       /* Should the tag field of this symbol be renumbered.
          Created by coff_pointerize_aux. */
       unsigned int fix_tag : 1;

       /* Should the endidx field of this symbol be renumbered.
          Created by coff_pointerize_aux. */
       unsigned int fix_end : 1;

       /* Should the x_csect.x_scnlen field be renumbered.
          Created by coff_pointerize_aux. */
       unsigned int fix_scnlen : 1;

       /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
          index into the line number entries.  Set by coff_slurp_symbol_table.  */
       unsigned int fix_line : 1;

       /* The container for the symbol structure as read and translated
          from the file. */
       union
       {
         union internal_auxent auxent;
         struct internal_syment syment;
       } u;
     } combined_entry_type;


     /* Each canonical asymbol really looks like this: */

     typedef struct coff_symbol_struct
     {
       /* The actual symbol which the rest of BFD works with */
       asymbol symbol;

       /* A pointer to the hidden information for this symbol */
       combined_entry_type *native;

       /* A pointer to the linenumber information for this symbol */
       struct lineno_cache_entry *lineno;

       /* Have the line numbers been relocated yet ? */
       bfd_boolean done_lineno;
     } coff_symbol_type;

3.3.2.7 'bfd_coff_backend_data'
...............................

     /* COFF symbol classifications.  */

     enum coff_symbol_classification
     {
       /* Global symbol.  */
       COFF_SYMBOL_GLOBAL,
       /* Common symbol.  */
       COFF_SYMBOL_COMMON,
       /* Undefined symbol.  */
       COFF_SYMBOL_UNDEFINED,
       /* Local symbol.  */
       COFF_SYMBOL_LOCAL,
       /* PE section symbol.  */
       COFF_SYMBOL_PE_SECTION
     };

   Special entry points for gdb to swap in coff symbol table parts:
     typedef struct
     {
       void (*_bfd_coff_swap_aux_in)
         (bfd *, void *, int, int, int, int, void *);

       void (*_bfd_coff_swap_sym_in)
         (bfd *, void *, void *);

       void (*_bfd_coff_swap_lineno_in)
         (bfd *, void *, void *);

       unsigned int (*_bfd_coff_swap_aux_out)
         (bfd *, void *, int, int, int, int, void *);

       unsigned int (*_bfd_coff_swap_sym_out)
         (bfd *, void *, void *);

       unsigned int (*_bfd_coff_swap_lineno_out)
         (bfd *, void *, void *);

       unsigned int (*_bfd_coff_swap_reloc_out)
         (bfd *, void *, void *);

       unsigned int (*_bfd_coff_swap_filehdr_out)
         (bfd *, void *, void *);

       unsigned int (*_bfd_coff_swap_aouthdr_out)
         (bfd *, void *, void *);

       unsigned int (*_bfd_coff_swap_scnhdr_out)
         (bfd *, void *, void *);

       unsigned int _bfd_filhsz;
       unsigned int _bfd_aoutsz;
       unsigned int _bfd_scnhsz;
       unsigned int _bfd_symesz;
       unsigned int _bfd_auxesz;
       unsigned int _bfd_relsz;
       unsigned int _bfd_linesz;
       unsigned int _bfd_filnmlen;
       bfd_boolean _bfd_coff_long_filenames;

       bfd_boolean _bfd_coff_long_section_names;
       bfd_boolean (*_bfd_coff_set_long_section_names)
         (bfd *, int);

       unsigned int _bfd_coff_default_section_alignment_power;
       bfd_boolean _bfd_coff_force_symnames_in_strings;
       unsigned int _bfd_coff_debug_string_prefix_length;
       unsigned int _bfd_coff_max_nscns;

       void (*_bfd_coff_swap_filehdr_in)
         (bfd *, void *, void *);

       void (*_bfd_coff_swap_aouthdr_in)
         (bfd *, void *, void *);

       void (*_bfd_coff_swap_scnhdr_in)
         (bfd *, void *, void *);

       void (*_bfd_coff_swap_reloc_in)
         (bfd *abfd, void *, void *);

       bfd_boolean (*_bfd_coff_bad_format_hook)
         (bfd *, void *);

       bfd_boolean (*_bfd_coff_set_arch_mach_hook)
         (bfd *, void *);

       void * (*_bfd_coff_mkobject_hook)
         (bfd *, void *, void *);

       bfd_boolean (*_bfd_styp_to_sec_flags_hook)
         (bfd *, void *, const char *, asection *, flagword *);

       void (*_bfd_set_alignment_hook)
         (bfd *, asection *, void *);

       bfd_boolean (*_bfd_coff_slurp_symbol_table)
         (bfd *);

       bfd_boolean (*_bfd_coff_symname_in_debug)
         (bfd *, struct internal_syment *);

       bfd_boolean (*_bfd_coff_pointerize_aux_hook)
         (bfd *, combined_entry_type *, combined_entry_type *,
                 unsigned int, combined_entry_type *);

       bfd_boolean (*_bfd_coff_print_aux)
         (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
                 combined_entry_type *, unsigned int);

       void (*_bfd_coff_reloc16_extra_cases)
         (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
                bfd_byte *, unsigned int *, unsigned int *);

       int (*_bfd_coff_reloc16_estimate)
         (bfd *, asection *, arelent *, unsigned int,
                 struct bfd_link_info *);

       enum coff_symbol_classification (*_bfd_coff_classify_symbol)
         (bfd *, struct internal_syment *);

       bfd_boolean (*_bfd_coff_compute_section_file_positions)
         (bfd *);

       bfd_boolean (*_bfd_coff_start_final_link)
         (bfd *, struct bfd_link_info *);

       bfd_boolean (*_bfd_coff_relocate_section)
         (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
                 struct internal_reloc *, struct internal_syment *, asection **);

       reloc_howto_type *(*_bfd_coff_rtype_to_howto)
         (bfd *, asection *, struct internal_reloc *,
                 struct coff_link_hash_entry *, struct internal_syment *,
                 bfd_vma *);

       bfd_boolean (*_bfd_coff_adjust_symndx)
         (bfd *, struct bfd_link_info *, bfd *, asection *,
                 struct internal_reloc *, bfd_boolean *);

       bfd_boolean (*_bfd_coff_link_add_one_symbol)
         (struct bfd_link_info *, bfd *, const char *, flagword,
                 asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
                 struct bfd_link_hash_entry **);

       bfd_boolean (*_bfd_coff_link_output_has_begun)
         (bfd *, struct coff_final_link_info *);

       bfd_boolean (*_bfd_coff_final_link_postscript)
         (bfd *, struct coff_final_link_info *);

       bfd_boolean (*_bfd_coff_print_pdata)
         (bfd *, void *);

     } bfd_coff_backend_data;

     #define coff_backend_info(abfd) \
       ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)

     #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
       ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))

     #define bfd_coff_swap_sym_in(a,e,i) \
       ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))

     #define bfd_coff_swap_lineno_in(a,e,i) \
       ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))

     #define bfd_coff_swap_reloc_out(abfd, i, o) \
       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))

     #define bfd_coff_swap_lineno_out(abfd, i, o) \
       ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))

     #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
       ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))

     #define bfd_coff_swap_sym_out(abfd, i,o) \
       ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))

     #define bfd_coff_swap_scnhdr_out(abfd, i,o) \
       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))

     #define bfd_coff_swap_filehdr_out(abfd, i,o) \
       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))

     #define bfd_coff_swap_aouthdr_out(abfd, i,o) \
       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))

     #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
     #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
     #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
     #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
     #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
     #define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
     #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
     #define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
     #define bfd_coff_long_filenames(abfd) \
       (coff_backend_info (abfd)->_bfd_coff_long_filenames)
     #define bfd_coff_long_section_names(abfd) \
       (coff_backend_info (abfd)->_bfd_coff_long_section_names)
     #define bfd_coff_set_long_section_names(abfd, enable) \
       ((coff_backend_info (abfd)->_bfd_coff_set_long_section_names) (abfd, enable))
     #define bfd_coff_default_section_alignment_power(abfd) \
       (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
     #define bfd_coff_max_nscns(abfd) \
       (coff_backend_info (abfd)->_bfd_coff_max_nscns)

     #define bfd_coff_swap_filehdr_in(abfd, i,o) \
       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))

     #define bfd_coff_swap_aouthdr_in(abfd, i,o) \
       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))

     #define bfd_coff_swap_scnhdr_in(abfd, i,o) \
       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))

     #define bfd_coff_swap_reloc_in(abfd, i, o) \
       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))

     #define bfd_coff_bad_format_hook(abfd, filehdr) \
       ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))

     #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
       ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
     #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
       ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
        (abfd, filehdr, aouthdr))

     #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
       ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
        (abfd, scnhdr, name, section, flags_ptr))

     #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
       ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))

     #define bfd_coff_slurp_symbol_table(abfd)\
       ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))

     #define bfd_coff_symname_in_debug(abfd, sym)\
       ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))

     #define bfd_coff_force_symnames_in_strings(abfd)\
       (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)

     #define bfd_coff_debug_string_prefix_length(abfd)\
       (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)

     #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
       ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
        (abfd, file, base, symbol, aux, indaux))

     #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
                                          reloc, data, src_ptr, dst_ptr)\
       ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
        (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))

     #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
       ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
        (abfd, section, reloc, shrink, link_info))

     #define bfd_coff_classify_symbol(abfd, sym)\
       ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
        (abfd, sym))

     #define bfd_coff_compute_section_file_positions(abfd)\
       ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
        (abfd))

     #define bfd_coff_start_final_link(obfd, info)\
       ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
        (obfd, info))
     #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
       ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
        (obfd, info, ibfd, o, con, rel, isyms, secs))
     #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
       ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
        (abfd, sec, rel, h, sym, addendp))
     #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
       ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
        (obfd, info, ibfd, sec, rel, adjustedp))
     #define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
                                          value, string, cp, coll, hashp)\
       ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
        (info, abfd, name, flags, section, value, string, cp, coll, hashp))

     #define bfd_coff_link_output_has_begun(a,p) \
       ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
     #define bfd_coff_final_link_postscript(a,p) \
       ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))

     #define bfd_coff_have_print_pdata(a) \
       (coff_backend_info (a)->_bfd_coff_print_pdata)
     #define bfd_coff_print_pdata(a,p) \
       ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p))

     /* Macro: Returns true if the bfd is a PE executable as opposed to a
        PE object file.  */
     #define bfd_pei_p(abfd) \
       (CONST_STRNEQ ((abfd)->xvec->name, "pei-"))

3.3.2.8 Writing relocations
...........................

To write relocations, the back end steps though the canonical relocation
table and create an 'internal_reloc'.  The symbol index to use is
removed from the 'offset' field in the symbol table supplied.  The
address comes directly from the sum of the section base address and the
relocation offset; the type is dug directly from the howto field.  Then
the 'internal_reloc' is swapped into the shape of an 'external_reloc'
and written out to disk.

3.3.2.9 Reading linenumbers
...........................

Creating the linenumber table is done by reading in the entire coff
linenumber table, and creating another table for internal use.

   A coff linenumber table is structured so that each function is marked
as having a line number of 0.  Each line within the function is an
offset from the first line in the function.  The base of the line number
information for the table is stored in the symbol associated with the
function.

   Note: The PE format uses line number 0 for a flag indicating a new
source file.

   The information is copied from the external to the internal table,
and each symbol which marks a function is marked by pointing its...

   How does this work ?

3.3.2.10 Reading relocations
............................

Coff relocations are easily transformed into the internal BFD form
('arelent').

   Reading a coff relocation table is done in the following stages:

   * Read the entire coff relocation table into memory.

   * Process each relocation in turn; first swap it from the external to
     the internal form.

   * Turn the symbol referenced in the relocation's symbol index into a
     pointer into the canonical symbol table.  This table is the same as
     the one returned by a call to 'bfd_canonicalize_symtab'.  The back
     end will call that routine and save the result if a
     canonicalization hasn't been done.

   * The reloc index is turned into a pointer to a howto structure, in a
     back end specific way.  For instance, the 386 and 960 use the
     'r_type' to directly produce an index into a howto table vector;
     the 88k subtracts a number from the 'r_type' field and creates an
     addend field.


File: bfd.info,  Node: elf,  Next: mmo,  Prev: coff,  Up: BFD back ends

3.4 ELF backends
================

BFD support for ELF formats is being worked on.  Currently, the best
supported back ends are for sparc and i386 (running svr4 or Solaris 2).

   Documentation of the internals of the support code still needs to be
written.  The code is changing quickly enough that we haven't bothered
yet.


File: bfd.info,  Node: mmo,  Prev: elf,  Up: BFD back ends

3.5 mmo backend
===============

The mmo object format is used exclusively together with Professor Donald
E. Knuth's educational 64-bit processor MMIX. The simulator 'mmix' which
is available at <http://mmix.cs.hm.edu/src/index.html> understands this
format.  That package also includes a combined assembler and linker
called 'mmixal'.  The mmo format has no advantages feature-wise compared
to e.g.  ELF. It is a simple non-relocatable object format with no
support for archives or debugging information, except for symbol value
information and line numbers (which is not yet implemented in BFD). See
<http://mmix.cs.hm.edu/> for more information about MMIX. The ELF format
is used for intermediate object files in the BFD implementation.

* Menu:

* File layout::
* Symbol-table::
* mmo section mapping::


File: bfd.info,  Node: File layout,  Next: Symbol-table,  Prev: mmo,  Up: mmo

3.5.1 File layout
-----------------

The mmo file contents is not partitioned into named sections as with
e.g. ELF. Memory areas is formed by specifying the location of the data
that follows.  Only the memory area '0x0000...00' to '0x01ff...ff' is
executable, so it is used for code (and constants) and the area
'0x2000...00' to '0x20ff...ff' is used for writable data.  *Note mmo
section mapping::.

   There is provision for specifying "special data" of 65536 different
types.  We use type 80 (decimal), arbitrarily chosen the same as the ELF
'e_machine' number for MMIX, filling it with section information
normally found in ELF objects.  *Note mmo section mapping::.

   Contents is entered as 32-bit words, xor:ed over previous contents,
always zero-initialized.  A word that starts with the byte '0x98' forms
a command called a 'lopcode', where the next byte distinguished between
the thirteen lopcodes.  The two remaining bytes, called the 'Y' and 'Z'
fields, or the 'YZ' field (a 16-bit big-endian number), are used for
various purposes different for each lopcode.  As documented in
<http://mmix.cs.hm.edu/doc/mmixal.pdf>, the lopcodes are:

'lop_quote'
     0x98000001.  The next word is contents, regardless of whether it
     starts with 0x98 or not.

'lop_loc'
     0x9801YYZZ, where 'Z' is 1 or 2.  This is a location directive,
     setting the location for the next data to the next 32-bit word (for
     Z = 1) or 64-bit word (for Z = 2), plus Y * 2^56.  Normally 'Y' is
     0 for the text segment and 2 for the data segment.  Beware that the
     low bits of non- tetrabyte-aligned values are silently discarded
     when being automatically incremented and when storing contents (in
     contrast to e.g.  its use as current location when followed by
     lop_fixo et al before the next possibly-quoted tetrabyte contents).

'lop_skip'
     0x9802YYZZ. Increase the current location by 'YZ' bytes.

'lop_fixo'
     0x9803YYZZ, where 'Z' is 1 or 2.  Store the current location as 64
     bits into the location pointed to by the next 32-bit (Z = 1) or
     64-bit (Z = 2) word, plus Y * 2^56.

'lop_fixr'
     0x9804YYZZ. 'YZ' is stored into the current location plus 2 - 4 *
     YZ.

'lop_fixrx'
     0x980500ZZ. 'Z' is 16 or 24.  A value 'L' derived from the
     following 32-bit word are used in a manner similar to 'YZ' in
     lop_fixr: it is xor:ed into the current location minus 4 * L.  The
     first byte of the word is 0 or 1.  If it is 1, then L = (LOWEST 24
     BITS OF WORD) - 2^Z, if 0, then L = (LOWEST 24 BITS OF WORD).

'lop_file'
     0x9806YYZZ. 'Y' is the file number, 'Z' is count of 32-bit words.
     Set the file number to 'Y' and the line counter to 0.  The next Z *
     4 bytes contain the file name, padded with zeros if the count is
     not a multiple of four.  The same 'Y' may occur multiple times, but
     'Z' must be 0 for all but the first occurrence.

'lop_line'
     0x9807YYZZ. 'YZ' is the line number.  Together with lop_file, it
     forms the source location for the next 32-bit word.  Note that for
     each non-lopcode 32-bit word, line numbers are assumed incremented
     by one.

'lop_spec'
     0x9808YYZZ. 'YZ' is the type number.  Data until the next lopcode
     other than lop_quote forms special data of type 'YZ'.  *Note mmo
     section mapping::.

     Other types than 80, (or type 80 with a content that does not
     parse) is stored in sections named '.MMIX.spec_data.N' where N is
     the 'YZ'-type.  The flags for such a sections say not to allocate
     or load the data.  The vma is 0.  Contents of multiple occurrences
     of special data N is concatenated to the data of the previous
     lop_spec Ns.  The location in data or code at which the lop_spec
     occurred is lost.

'lop_pre'
     0x980901ZZ. The first lopcode in a file.  The 'Z' field forms the
     length of header information in 32-bit words, where the first word
     tells the time in seconds since '00:00:00 GMT Jan 1 1970'.

'lop_post'
     0x980a00ZZ. Z > 32.  This lopcode follows after all
     content-generating lopcodes in a program.  The 'Z' field denotes
     the value of 'rG' at the beginning of the program.  The following
     256 - Z big-endian 64-bit words are loaded into global registers
     '$G' ... '$255'.

'lop_stab'
     0x980b0000.  The next-to-last lopcode in a program.  Must follow
     immediately after the lop_post lopcode and its data.  After this
     lopcode follows all symbols in a compressed format (*note
     Symbol-table::).

'lop_end'
     0x980cYYZZ. The last lopcode in a program.  It must follow the
     lop_stab lopcode and its data.  The 'YZ' field contains the number
     of 32-bit words of symbol table information after the preceding
     lop_stab lopcode.

   Note that the lopcode "fixups"; 'lop_fixr', 'lop_fixrx' and
'lop_fixo' are not generated by BFD, but are handled.  They are
generated by 'mmixal'.

   This trivial one-label, one-instruction file:

      :Main TRAP 1,2,3

   can be represented this way in mmo:

      0x98090101 - lop_pre, one 32-bit word with timestamp.
      <timestamp>
      0x98010002 - lop_loc, text segment, using a 64-bit address.
                   Note that mmixal does not emit this for the file above.
      0x00000000 - Address, high 32 bits.
      0x00000000 - Address, low 32 bits.
      0x98060002 - lop_file, 2 32-bit words for file-name.
      0x74657374 - "test"
      0x2e730000 - ".s\0\0"
      0x98070001 - lop_line, line 1.
      0x00010203 - TRAP 1,2,3
      0x980a00ff - lop_post, setting $255 to 0.
      0x00000000
      0x00000000
      0x980b0000 - lop_stab for ":Main" = 0, serial 1.
      0x203a4040   *Note Symbol-table::.
      0x10404020
      0x4d206120
      0x69016e00
      0x81000000
      0x980c0005 - lop_end; symbol table contained five 32-bit words.


File: bfd.info,  Node: Symbol-table,  Next: mmo section mapping,  Prev: File layout,  Up: mmo

3.5.2 Symbol table format
-------------------------

From mmixal.w (or really, the generated mmixal.tex) in the MMIXware
package which also contains the 'mmix' simulator: "Symbols are stored
and retrieved by means of a 'ternary search trie', following ideas of
Bentley and Sedgewick.  (See ACM-SIAM Symp. on Discrete Algorithms '8'
(1997), 360-369; R.Sedgewick, 'Algorithms in C' (Reading, Mass.
Addison-Wesley, 1998), '15.4'.)  Each trie node stores a character, and
there are branches to subtries for the cases where a given character is
less than, equal to, or greater than the character in the trie.  There
also is a pointer to a symbol table entry if a symbol ends at the
current node."

   So it's a tree encoded as a stream of bytes.  The stream of bytes
acts on a single virtual global symbol, adding and removing characters
and signalling complete symbol points.  Here, we read the stream and
create symbols at the completion points.

   First, there's a control byte 'm'.  If any of the listed bits in 'm'
is nonzero, we execute what stands at the right, in the listed order:

      (MMO3_LEFT)
      0x40 - Traverse left trie.
             (Read a new command byte and recurse.)

      (MMO3_SYMBITS)
      0x2f - Read the next byte as a character and store it in the
             current character position; increment character position.
             Test the bits of m:

             (MMO3_WCHAR)
             0x80 - The character is 16-bit (so read another byte,
                    merge into current character.

             (MMO3_TYPEBITS)
             0xf  - We have a complete symbol; parse the type, value
                    and serial number and do what should be done
                    with a symbol.  The type and length information
                    is in j = (m & 0xf).

                    (MMO3_REGQUAL_BITS)
                    j == 0xf: A register variable.  The following
                              byte tells which register.
                    j <= 8:   An absolute symbol.  Read j bytes as the
                              big-endian number the symbol equals.
                              A j = 2 with two zero bytes denotes an
                              unknown symbol.
                    j > 8:    As with j <= 8, but add (0x20 << 56)
                              to the value in the following j - 8
                              bytes.

                    Then comes the serial number, as a variant of
                    uleb128, but better named ubeb128:
                    Read bytes and shift the previous value left 7
                    (multiply by 128).  Add in the new byte, repeat
                    until a byte has bit 7 set.  The serial number
                    is the computed value minus 128.

             (MMO3_MIDDLE)
             0x20 - Traverse middle trie.  (Read a new command byte
                    and recurse.)  Decrement character position.

      (MMO3_RIGHT)
      0x10 - Traverse right trie.  (Read a new command byte and
             recurse.)

   Let's look again at the 'lop_stab' for the trivial file (*note File
layout::).

      0x980b0000 - lop_stab for ":Main" = 0, serial 1.
      0x203a4040
      0x10404020
      0x4d206120
      0x69016e00
      0x81000000

   This forms the trivial trie (note that the path between ":" and "M"
is redundant):

      203a     ":"
      40       /
      40      /
      10      \
      40      /
      40     /
      204d  "M"
      2061  "a"
      2069  "i"
      016e  "n" is the last character in a full symbol, and
            with a value represented in one byte.
      00    The value is 0.
      81    The serial number is 1.


File: bfd.info,  Node: mmo section mapping,  Prev: Symbol-table,  Up: mmo

3.5.3 mmo section mapping
-------------------------

The implementation in BFD uses special data type 80 (decimal) to
encapsulate and describe named sections, containing e.g. debug
information.  If needed, any datum in the encapsulation will be quoted
using lop_quote.  First comes a 32-bit word holding the number of 32-bit
words containing the zero-terminated zero-padded segment name.  After
the name there's a 32-bit word holding flags describing the section
type.  Then comes a 64-bit big-endian word with the section length (in
bytes), then another with the section start address.  Depending on the
type of section, the contents might follow, zero-padded to 32-bit
boundary.  For a loadable section (such as data or code), the contents
might follow at some later point, not necessarily immediately, as a
lop_loc with the same start address as in the section description,
followed by the contents.  This in effect forms a descriptor that must
be emitted before the actual contents.  Sections described this way must
not overlap.

   For areas that don't have such descriptors, synthetic sections are
formed by BFD. Consecutive contents in the two memory areas
'0x0000...00' to '0x01ff...ff' and '0x2000...00' to '0x20ff...ff' are
entered in sections named '.text' and '.data' respectively.  If an area
is not otherwise described, but would together with a neighboring lower
area be less than '0x40000000' bytes long, it is joined with the lower
area and the gap is zero-filled.  For other cases, a new section is
formed, named '.MMIX.sec.N'.  Here, N is a number, a running count
through the mmo file, starting at 0.

   A loadable section specified as:

      .section secname,"ax"
      TETRA 1,2,3,4,-1,-2009
      BYTE 80

   and linked to address '0x4', is represented by the sequence:

      0x98080050 - lop_spec 80
      0x00000002 - two 32-bit words for the section name
      0x7365636e - "secn"
      0x616d6500 - "ame\0"
      0x00000033 - flags CODE, READONLY, LOAD, ALLOC
      0x00000000 - high 32 bits of section length
      0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits
      0x00000000 - high 32 bits of section address
      0x00000004 - section address is 4
      0x98010002 - 64 bits with address of following data
      0x00000000 - high 32 bits of address
      0x00000004 - low 32 bits: data starts at address 4
      0x00000001 - 1
      0x00000002 - 2
      0x00000003 - 3
      0x00000004 - 4
      0xffffffff - -1
      0xfffff827 - -2009
      0x50000000 - 80 as a byte, padded with zeros.

   Note that the lop_spec wrapping does not include the section
contents.  Compare this to a non-loaded section specified as:

      .section thirdsec
      TETRA 200001,100002
      BYTE 38,40

   This, when linked to address '0x200000000000001c', is represented by:

      0x98080050 - lop_spec 80
      0x00000002 - two 32-bit words for the section name
      0x7365636e - "thir"
      0x616d6500 - "dsec"
      0x00000010 - flag READONLY
      0x00000000 - high 32 bits of section length
      0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits
      0x20000000 - high 32 bits of address
      0x0000001c - low 32 bits of address 0x200000000000001c
      0x00030d41 - 200001
      0x000186a2 - 100002
      0x26280000 - 38, 40 as bytes, padded with zeros

   For the latter example, the section contents must not be loaded in
memory, and is therefore specified as part of the special data.  The
address is usually unimportant but might provide information for e.g.
the DWARF 2 debugging format.


File: bfd.info,  Node: GNU Free Documentation License,  Next: BFD Index,  Prev: BFD back ends,  Up: Top

                     Version 1.3, 3 November 2008

     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
     <http://fsf.org/>

     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

  0. PREAMBLE

     The purpose of this License is to make a manual, textbook, or other
     functional and useful document "free" in the sense of freedom: to
     assure everyone the effective freedom to copy and redistribute it,
     with or without modifying it, either commercially or
     noncommercially.  Secondarily, this License preserves for the
     author and publisher a way to get credit for their work, while not
     being considered responsible for modifications made by others.

     This License is a kind of "copyleft", which means that derivative
     works of the document must themselves be free in the same sense.
     It complements the GNU General Public License, which is a copyleft
     license designed for free software.

     We have designed this License in order to use it for manuals for
     free software, because free software needs free documentation: a
     free program should come with manuals providing the same freedoms
     that the software does.  But this License is not limited to
     software manuals; it can be used for any textual work, regardless
     of subject matter or whether it is published as a printed book.  We
     recommend this License principally for works whose purpose is
     instruction or reference.

  1. APPLICABILITY AND DEFINITIONS

     This License applies to any manual or other work, in any medium,
     that contains a notice placed by the copyright holder saying it can
     be distributed under the terms of this License.  Such a notice
     grants a world-wide, royalty-free license, unlimited in duration,
     to use that work under the conditions stated herein.  The
     "Document", below, refers to any such manual or work.  Any member
     of the public is a licensee, and is addressed as "you".  You accept
     the license if you copy, modify or distribute the work in a way
     requiring permission under copyright law.

     A "Modified Version" of the Document means any work containing the
     Document or a portion of it, either copied verbatim, or with
     modifications and/or translated into another language.

     A "Secondary Section" is a named appendix or a front-matter section
     of the Document that deals exclusively with the relationship of the
     publishers or authors of the Document to the Document's overall
     subject (or to related matters) and contains nothing that could
     fall directly within that overall subject.  (Thus, if the Document
     is in part a textbook of mathematics, a Secondary Section may not
     explain any mathematics.)  The relationship could be a matter of
     historical connection with the subject or with related matters, or
     of legal, commercial, philosophical, ethical or political position
     regarding them.

     The "Invariant Sections" are certain Secondary Sections whose
     titles are designated, as being those of Invariant Sections, in the
     notice that says that the Document is released under this License.
     If a section does not fit the above definition of Secondary then it
     is not allowed to be designated as Invariant.  The Document may
     contain zero Invariant Sections.  If the Document does not identify
     any Invariant Sections then there are none.

     The "Cover Texts" are certain short passages of text that are
     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
     that says that the Document is released under this License.  A
     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
     be at most 25 words.

     A "Transparent" copy of the Document means a machine-readable copy,
     represented in a format whose specification is available to the
     general public, that is suitable for revising the document
     straightforwardly with generic text editors or (for images composed
     of pixels) generic paint programs or (for drawings) some widely
     available drawing editor, and that is suitable for input to text
     formatters or for automatic translation to a variety of formats
     suitable for input to text formatters.  A copy made in an otherwise
     Transparent file format whose markup, or absence of markup, has
     been arranged to thwart or discourage subsequent modification by
     readers is not Transparent.  An image format is not Transparent if
     used for any substantial amount of text.  A copy that is not
     "Transparent" is called "Opaque".

     Examples of suitable formats for Transparent copies include plain
     ASCII without markup, Texinfo input format, LaTeX input format,
     SGML or XML using a publicly available DTD, and standard-conforming
     simple HTML, PostScript or PDF designed for human modification.
     Examples of transparent image formats include PNG, XCF and JPG.
     Opaque formats include proprietary formats that can be read and
     edited only by proprietary word processors, SGML or XML for which
     the DTD and/or processing tools are not generally available, and
     the machine-generated HTML, PostScript or PDF produced by some word
     processors for output purposes only.

     The "Title Page" means, for a printed book, the title page itself,
     plus such following pages as are needed to hold, legibly, the
     material this License requires to appear in the title page.  For
     works in formats which do not have any title page as such, "Title
     Page" means the text near the most prominent appearance of the
     work's title, preceding the beginning of the body of the text.

     The "publisher" means any person or entity that distributes copies
     of the Document to the public.

     A section "Entitled XYZ" means a named subunit of the Document
     whose title either is precisely XYZ or contains XYZ in parentheses
     following text that translates XYZ in another language.  (Here XYZ
     stands for a specific section name mentioned below, such as
     "Acknowledgements", "Dedications", "Endorsements", or "History".)
     To "Preserve the Title" of such a section when you modify the
     Document means that it remains a section "Entitled XYZ" according
     to this definition.

     The Document may include Warranty Disclaimers next to the notice
     which states that this License applies to the Document.  These
     Warranty Disclaimers are considered to be included by reference in
     this License, but only as regards disclaiming warranties: any other
     implication that these Warranty Disclaimers may have is void and
     has no effect on the meaning of this License.

  2. VERBATIM COPYING

     You may copy and distribute the Document in any medium, either
     commercially or noncommercially, provided that this License, the
     copyright notices, and the license notice saying this License
     applies to the Document are reproduced in all copies, and that you
     add no other conditions whatsoever to those of this License.  You
     may not use technical measures to obstruct or control the reading
     or further copying of the copies you make or distribute.  However,
     you may accept compensation in exchange for copies.  If you
     distribute a large enough number of copies you must also follow the
     conditions in section 3.

     You may also lend copies, under the same conditions stated above,
     and you may publicly display copies.

  3. COPYING IN QUANTITY

     If you publish printed copies (or copies in media that commonly
     have printed covers) of the Document, numbering more than 100, and
     the Document's license notice requires Cover Texts, you must
     enclose the copies in covers that carry, clearly and legibly, all
     these Cover Texts: Front-Cover Texts on the front cover, and
     Back-Cover Texts on the back cover.  Both covers must also clearly
     and legibly identify you as the publisher of these copies.  The
     front cover must present the full title with all words of the title
     equally prominent and visible.  You may add other material on the
     covers in addition.  Copying with changes limited to the covers, as
     long as they preserve the title of the Document and satisfy these
     conditions, can be treated as verbatim copying in other respects.

     If the required texts for either cover are too voluminous to fit
     legibly, you should put the first ones listed (as many as fit
     reasonably) on the actual cover, and continue the rest onto
     adjacent pages.

     If you publish or distribute Opaque copies of the Document
     numbering more than 100, you must either include a machine-readable
     Transparent copy along with each Opaque copy, or state in or with
     each Opaque copy a computer-network location from which the general
     network-using public has access to download using public-standard
     network protocols a complete Transparent copy of the Document, free
     of added material.  If you use the latter option, you must take
     reasonably prudent steps, when you begin distribution of Opaque
     copies in quantity, to ensure that this Transparent copy will
     remain thus accessible at the stated location until at least one
     year after the last time you distribute an Opaque copy (directly or
     through your agents or retailers) of that edition to the public.

     It is requested, but not required, that you contact the authors of
     the Document well before redistributing any large number of copies,
     to give them a chance to provide you with an updated version of the
     Document.

  4. MODIFICATIONS

     You may copy and distribute a Modified Version of the Document
     under the conditions of sections 2 and 3 above, provided that you
     release the Modified Version under precisely this License, with the
     Modified Version filling the role of the Document, thus licensing
     distribution and modification of the Modified Version to whoever
     possesses a copy of it.  In addition, you must do these things in
     the Modified Version:

       A. Use in the Title Page (and on the covers, if any) a title
          distinct from that of the Document, and from those of previous
          versions (which should, if there were any, be listed in the
          History section of the Document).  You may use the same title
          as a previous version if the original publisher of that
          version gives permission.

       B. List on the Title Page, as authors, one or more persons or
          entities responsible for authorship of the modifications in
          the Modified Version, together with at least five of the
          principal authors of the Document (all of its principal
          authors, if it has fewer than five), unless they release you
          from this requirement.

       C. State on the Title page the name of the publisher of the
          Modified Version, as the publisher.

       D. Preserve all the copyright notices of the Document.

       E. Add an appropriate copyright notice for your modifications
          adjacent to the other copyright notices.

       F. Include, immediately after the copyright notices, a license
          notice giving the public permission to use the Modified
          Version under the terms of this License, in the form shown in
          the Addendum below.

       G. Preserve in that license notice the full lists of Invariant
          Sections and required Cover Texts given in the Document's
          license notice.

       H. Include an unaltered copy of this License.

       I. Preserve the section Entitled "History", Preserve its Title,
          and add to it an item stating at least the title, year, new
          authors, and publisher of the Modified Version as given on the
          Title Page.  If there is no section Entitled "History" in the
          Document, create one stating the title, year, authors, and
          publisher of the Document as given on its Title Page, then add
          an item describing the Modified Version as stated in the
          previous sentence.

       J. Preserve the network location, if any, given in the Document
          for public access to a Transparent copy of the Document, and
          likewise the network locations given in the Document for
          previous versions it was based on.  These may be placed in the
          "History" section.  You may omit a network location for a work
          that was published at least four years before the Document
          itself, or if the original publisher of the version it refers
          to gives permission.

       K. For any section Entitled "Acknowledgements" or "Dedications",
          Preserve the Title of the section, and preserve in the section
          all the substance and tone of each of the contributor
          acknowledgements and/or dedications given therein.

       L. Preserve all the Invariant Sections of the Document, unaltered
          in their text and in their titles.  Section numbers or the
          equivalent are not considered part of the section titles.

       M. Delete any section Entitled "Endorsements".  Such a section
          may not be included in the Modified Version.

       N. Do not retitle any existing section to be Entitled
          "Endorsements" or to conflict in title with any Invariant
          Section.

       O. Preserve any Warranty Disclaimers.

     If the Modified Version includes new front-matter sections or
     appendices that qualify as Secondary Sections and contain no
     material copied from the Document, you may at your option designate
     some or all of these sections as invariant.  To do this, add their
     titles to the list of Invariant Sections in the Modified Version's
     license notice.  These titles must be distinct from any other
     section titles.

     You may add a section Entitled "Endorsements", provided it contains
     nothing but endorsements of your Modified Version by various
     parties--for example, statements of peer review or that the text
     has been approved by an organization as the authoritative
     definition of a standard.

     You may add a passage of up to five words as a Front-Cover Text,
     and a passage of up to 25 words as a Back-Cover Text, to the end of
     the list of Cover Texts in the Modified Version.  Only one passage
     of Front-Cover Text and one of Back-Cover Text may be added by (or
     through arrangements made by) any one entity.  If the Document
     already includes a cover text for the same cover, previously added
     by you or by arrangement made by the same entity you are acting on
     behalf of, you may not add another; but you may replace the old
     one, on explicit permission from the previous publisher that added
     the old one.

     The author(s) and publisher(s) of the Document do not by this
     License give permission to use their names for publicity for or to
     assert or imply endorsement of any Modified Version.

  5. COMBINING DOCUMENTS

     You may combine the Document with other documents released under
     this License, under the terms defined in section 4 above for
     modified versions, provided that you include in the combination all
     of the Invariant Sections of all of the original documents,
     unmodified, and list them all as Invariant Sections of your
     combined work in its license notice, and that you preserve all
     their Warranty Disclaimers.

     The combined work need only contain one copy of this License, and
     multiple identical Invariant Sections may be replaced with a single
     copy.  If there are multiple Invariant Sections with the same name
     but different contents, make the title of each such section unique
     by adding at the end of it, in parentheses, the name of the
     original author or publisher of that section if known, or else a
     unique number.  Make the same adjustment to the section titles in
     the list of Invariant Sections in the license notice of the
     combined work.

     In the combination, you must combine any sections Entitled
     "History" in the various original documents, forming one section
     Entitled "History"; likewise combine any sections Entitled
     "Acknowledgements", and any sections Entitled "Dedications".  You
     must delete all sections Entitled "Endorsements."

  6. COLLECTIONS OF DOCUMENTS

     You may make a collection consisting of the Document and other
     documents released under this License, and replace the individual
     copies of this License in the various documents with a single copy
     that is included in the collection, provided that you follow the
     rules of this License for verbatim copying of each of the documents
     in all other respects.

     You may extract a single document from such a collection, and
     distribute it individually under this License, provided you insert
     a copy of this License into the extracted document, and follow this
     License in all other respects regarding verbatim copying of that
     document.

  7. AGGREGATION WITH INDEPENDENT WORKS

     A compilation of the Document or its derivatives with other
     separate and independent documents or works, in or on a volume of a
     storage or distribution medium, is called an "aggregate" if the
     copyright resulting from the compilation is not used to limit the
     legal rights of the compilation's users beyond what the individual
     works permit.  When the Document is included in an aggregate, this
     License does not apply to the other works in the aggregate which
     are not themselves derivative works of the Document.

     If the Cover Text requirement of section 3 is applicable to these
     copies of the Document, then if the Document is less than one half
     of the entire aggregate, the Document's Cover Texts may be placed
     on covers that bracket the Document within the aggregate, or the
     electronic equivalent of covers if the Document is in electronic
     form.  Otherwise they must appear on printed covers that bracket
     the whole aggregate.

  8. TRANSLATION

     Translation is considered a kind of modification, so you may
     distribute translations of the Document under the terms of section
     4.  Replacing Invariant Sections with translations requires special
     permission from their copyright holders, but you may include
     translations of some or all Invariant Sections in addition to the
     original versions of these Invariant Sections.  You may include a
     translation of this License, and all the license notices in the
     Document, and any Warranty Disclaimers, provided that you also
     include the original English version of this License and the
     original versions of those notices and disclaimers.  In case of a
     disagreement between the translation and the original version of
     this License or a notice or disclaimer, the original version will
     prevail.

     If a section in the Document is Entitled "Acknowledgements",
     "Dedications", or "History", the requirement (section 4) to
     Preserve its Title (section 1) will typically require changing the
     actual title.

  9. TERMINATION

     You may not copy, modify, sublicense, or distribute the Document
     except as expressly provided under this License.  Any attempt
     otherwise to copy, modify, sublicense, or distribute it is void,
     and will automatically terminate your rights under this License.

     However, if you cease all violation of this License, then your
     license from a particular copyright holder is reinstated (a)
     provisionally, unless and until the copyright holder explicitly and
     finally terminates your license, and (b) permanently, if the
     copyright holder fails to notify you of the violation by some
     reasonable means prior to 60 days after the cessation.

     Moreover, your license from a particular copyright holder is
     reinstated permanently if the copyright holder notifies you of the
     violation by some reasonable means, this is the first time you have
     received notice of violation of this License (for any work) from
     that copyright holder, and you cure the violation prior to 30 days
     after your receipt of the notice.

     Termination of your rights under this section does not terminate
     the licenses of parties who have received copies or rights from you
     under this License.  If your rights have been terminated and not
     permanently reinstated, receipt of a copy of some or all of the
     same material does not give you any rights to use it.

  10. FUTURE REVISIONS OF THIS LICENSE

     The Free Software Foundation may publish new, revised versions of
     the GNU Free Documentation License from time to time.  Such new
     versions will be similar in spirit to the present version, but may
     differ in detail to address new problems or concerns.  See
     <http://www.gnu.org/copyleft/>.

     Each version of the License is given a distinguishing version
     number.  If the Document specifies that a particular numbered
     version of this License "or any later version" applies to it, you
     have the option of following the terms and conditions either of
     that specified version or of any later version that has been
     published (not as a draft) by the Free Software Foundation.  If the
     Document does not specify a version number of this License, you may
     choose any version ever published (not as a draft) by the Free
     Software Foundation.  If the Document specifies that a proxy can
     decide which future versions of this License can be used, that
     proxy's public statement of acceptance of a version permanently
     authorizes you to choose that version for the Document.

  11. RELICENSING

     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
     World Wide Web server that publishes copyrightable works and also
     provides prominent facilities for anybody to edit those works.  A
     public wiki that anybody can edit is an example of such a server.
     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
     site means any set of copyrightable works thus published on the MMC
     site.

     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
     license published by Creative Commons Corporation, a not-for-profit
     corporation with a principal place of business in San Francisco,
     California, as well as future copyleft versions of that license
     published by that same organization.

     "Incorporate" means to publish or republish a Document, in whole or
     in part, as part of another Document.

     An MMC is "eligible for relicensing" if it is licensed under this
     License, and if all works that were first published under this
     License somewhere other than this MMC, and subsequently
     incorporated in whole or in part into the MMC, (1) had no cover
     texts or invariant sections, and (2) were thus incorporated prior
     to November 1, 2008.

     The operator of an MMC Site may republish an MMC contained in the
     site under CC-BY-SA on the same site at any time before August 1,
     2009, provided the MMC is eligible for relicensing.

ADDENDUM: How to use this License for your documents
====================================================

To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:

       Copyright (C)  YEAR  YOUR NAME.
       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.3
       or any later version published by the Free Software Foundation;
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
       Texts.  A copy of the license is included in the section entitled ``GNU
       Free Documentation License''.

   If you have Invariant Sections, Front-Cover Texts and Back-Cover
Texts, replace the "with...Texts."  line with this:

         with the Invariant Sections being LIST THEIR TITLES, with
         the Front-Cover Texts being LIST, and with the Back-Cover Texts
         being LIST.

   If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.

   If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of free
software license, such as the GNU General Public License, to permit
their use in free software.


File: bfd.info,  Node: BFD Index,  Prev: GNU Free Documentation License,  Up: Top

BFD Index
*********

 [index ]
* Menu:

* _bfd_final_link_relocate:              Relocating the section contents.
                                                             (line   22)
* _bfd_generic_link_add_archive_symbols: Adding symbols from an archive.
                                                             (line   15)
* _bfd_generic_link_add_one_symbol:      Adding symbols from an object file.
                                                             (line   19)
* _bfd_generic_make_empty_symbol:        symbol handling functions.
                                                             (line   96)
* _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table.
                                                             (line    6)
* _bfd_link_final_link in target vector: Performing the Final Link.
                                                             (line    6)
* _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table.
                                                             (line    6)
* _bfd_relocate_contents:                Relocating the section contents.
                                                             (line   22)
* aout_SIZE_machine_type:                aout.               (line  145)
* aout_SIZE_mkobject:                    aout.               (line  137)
* aout_SIZE_new_section_hook:            aout.               (line  175)
* aout_SIZE_set_arch_mach:               aout.               (line  162)
* aout_SIZE_some_aout_object_p:          aout.               (line  123)
* aout_SIZE_swap_exec_header_in:         aout.               (line   99)
* aout_SIZE_swap_exec_header_out:        aout.               (line  111)
* arelent_chain:                         typedef arelent.    (line  340)
* BFD:                                   Overview.           (line    6)
* BFD canonical format:                  Canonical format.   (line   11)
* bfd_alloc:                             Opening and Closing.
                                                             (line  238)
* bfd_alloc2:                            Opening and Closing.
                                                             (line  247)
* bfd_alt_mach_code:                     Miscellaneous.      (line  305)
* bfd_arch_bits_per_address:             Architectures.      (line  595)
* bfd_arch_bits_per_byte:                Architectures.      (line  587)
* bfd_arch_default_fill:                 Architectures.      (line  676)
* bfd_arch_get_compatible:               Architectures.      (line  530)
* bfd_arch_list:                         Architectures.      (line  521)
* bfd_arch_mach_octets_per_byte:         Architectures.      (line  664)
* BFD_ARELOC_BFIN_ADD:                   howto manager.      (line 1006)
* BFD_ARELOC_BFIN_ADDR:                  howto manager.      (line 1040)
* BFD_ARELOC_BFIN_AND:                   howto manager.      (line 1020)
* BFD_ARELOC_BFIN_COMP:                  howto manager.      (line 1034)
* BFD_ARELOC_BFIN_CONST:                 howto manager.      (line 1004)
* BFD_ARELOC_BFIN_DIV:                   howto manager.      (line 1012)
* BFD_ARELOC_BFIN_HWPAGE:                howto manager.      (line 1038)
* BFD_ARELOC_BFIN_LAND:                  howto manager.      (line 1026)
* BFD_ARELOC_BFIN_LEN:                   howto manager.      (line 1030)
* BFD_ARELOC_BFIN_LOR:                   howto manager.      (line 1028)
* BFD_ARELOC_BFIN_LSHIFT:                howto manager.      (line 1016)
* BFD_ARELOC_BFIN_MOD:                   howto manager.      (line 1014)
* BFD_ARELOC_BFIN_MULT:                  howto manager.      (line 1010)
* BFD_ARELOC_BFIN_NEG:                   howto manager.      (line 1032)
* BFD_ARELOC_BFIN_OR:                    howto manager.      (line 1022)
* BFD_ARELOC_BFIN_PAGE:                  howto manager.      (line 1036)
* BFD_ARELOC_BFIN_PUSH:                  howto manager.      (line 1002)
* BFD_ARELOC_BFIN_RSHIFT:                howto manager.      (line 1018)
* BFD_ARELOC_BFIN_SUB:                   howto manager.      (line 1008)
* BFD_ARELOC_BFIN_XOR:                   howto manager.      (line 1024)
* bfd_cache_close:                       File Caching.       (line   25)
* bfd_cache_close_all:                   File Caching.       (line   38)
* bfd_cache_init:                        File Caching.       (line   17)
* bfd_calc_gnu_debuglink_crc32:          Opening and Closing.
                                                             (line  274)
* bfd_canonicalize_reloc:                Miscellaneous.      (line   18)
* bfd_canonicalize_symtab:               symbol handling functions.
                                                             (line   52)
* bfd_check_format:                      Formats.            (line   20)
* bfd_check_format_matches:              Formats.            (line   51)
* bfd_check_overflow:                    typedef arelent.    (line  353)
* bfd_close:                             Opening and Closing.
                                                             (line  160)
* bfd_close_all_done:                    Opening and Closing.
                                                             (line  178)
* bfd_coff_backend_data:                 coff.               (line  304)
* bfd_copy_private_bfd_data:             Miscellaneous.      (line  157)
* bfd_copy_private_header_data:          Miscellaneous.      (line  140)
* bfd_copy_private_section_data:         section prototypes. (line  277)
* bfd_copy_private_symbol_data:          symbol handling functions.
                                                             (line  145)
* bfd_core_file_failing_command:         Core Files.         (line   11)
* bfd_core_file_failing_signal:          Core Files.         (line   20)
* bfd_core_file_pid:                     Core Files.         (line   29)
* bfd_create:                            Opening and Closing.
                                                             (line  197)
* bfd_create_gnu_debuglink_section:      Opening and Closing.
                                                             (line  386)
* bfd_decode_symclass:                   symbol handling functions.
                                                             (line  116)
* bfd_default_arch_struct:               Architectures.      (line  542)
* bfd_default_compatible:                Architectures.      (line  604)
* bfd_default_reloc_type_lookup:         howto manager.      (line 2950)
* bfd_default_scan:                      Architectures.      (line  613)
* bfd_default_set_arch_mach:             Architectures.      (line  560)
* bfd_demangle:                          Miscellaneous.      (line  356)
* bfd_emul_get_commonpagesize:           Miscellaneous.      (line  336)
* bfd_emul_get_maxpagesize:              Miscellaneous.      (line  316)
* bfd_emul_set_commonpagesize:           Miscellaneous.      (line  347)
* bfd_emul_set_maxpagesize:              Miscellaneous.      (line  327)
* bfd_errmsg:                            Error reporting.    (line   67)
* bfd_fdopenr:                           Opening and Closing.
                                                             (line   56)
* bfd_fill_in_gnu_debuglink_section:     Opening and Closing.
                                                             (line  400)
* bfd_find_target:                       bfd_target.         (line  476)
* bfd_find_version_for_sym:              Writing the symbol table.
                                                             (line   83)
* bfd_follow_gnu_debugaltlink:           Opening and Closing.
                                                             (line  366)
* bfd_follow_gnu_debuglink:              Opening and Closing.
                                                             (line  345)
* bfd_fopen:                             Opening and Closing.
                                                             (line   11)
* bfd_format_string:                     Formats.            (line   78)
* bfd_generic_define_common_symbol:      Writing the symbol table.
                                                             (line   69)
* bfd_generic_discard_group:             section prototypes. (line  302)
* bfd_generic_gc_sections:               howto manager.      (line 2981)
* bfd_generic_get_relocated_section_contents: howto manager. (line 3011)
* bfd_generic_is_group_section:          section prototypes. (line  294)
* bfd_generic_lookup_section_flags:      howto manager.      (line 2991)
* bfd_generic_merge_sections:            howto manager.      (line 3001)
* bfd_generic_relax_section:             howto manager.      (line 2968)
* bfd_get_alt_debug_link_info:           Opening and Closing.
                                                             (line  299)
* bfd_get_arch:                          Architectures.      (line  571)
* bfd_get_arch_info:                     Architectures.      (line  623)
* bfd_get_arch_size:                     Miscellaneous.      (line   61)
* bfd_get_assert_handler:                Error reporting.    (line  152)
* bfd_get_debug_link_info:               Opening and Closing.
                                                             (line  288)
* bfd_get_error:                         Error reporting.    (line   48)
* bfd_get_error_handler:                 Error reporting.    (line  119)
* bfd_get_gp_size:                       Miscellaneous.      (line  104)
* bfd_get_linker_section:                section prototypes. (line   35)
* bfd_get_mach:                          Architectures.      (line  579)
* bfd_get_mtime:                         Miscellaneous.      (line  406)
* bfd_get_next_mapent:                   Archives.           (line   57)
* bfd_get_next_section_by_name:          section prototypes. (line   25)
* bfd_get_reloc_code_name:               howto manager.      (line 2959)
* bfd_get_reloc_size:                    typedef arelent.    (line  331)
* bfd_get_reloc_upper_bound:             Miscellaneous.      (line    8)
* bfd_get_section_by_name:               section prototypes. (line   16)
* bfd_get_section_by_name_if:            section prototypes. (line   44)
* bfd_get_section_contents:              section prototypes. (line  250)
* bfd_get_sign_extend_vma:               Miscellaneous.      (line   76)
* bfd_get_size:                          Miscellaneous.      (line  415)
* bfd_get_size <1>:                      Internal.           (line   24)
* bfd_get_symtab_upper_bound:            symbol handling functions.
                                                             (line    5)
* bfd_get_target_info:                   bfd_target.         (line  492)
* bfd_get_unique_section_name:           section prototypes. (line   63)
* bfd_hash_allocate:                     Creating and Freeing a Hash Table.
                                                             (line   17)
* bfd_hash_lookup:                       Looking Up or Entering a String.
                                                             (line    6)
* bfd_hash_newfunc:                      Creating and Freeing a Hash Table.
                                                             (line   12)
* bfd_hash_set_default_size:             Creating and Freeing a Hash Table.
                                                             (line   25)
* bfd_hash_table_free:                   Creating and Freeing a Hash Table.
                                                             (line   21)
* bfd_hash_table_init:                   Creating and Freeing a Hash Table.
                                                             (line    6)
* bfd_hash_table_init_n:                 Creating and Freeing a Hash Table.
                                                             (line    6)
* bfd_hash_traverse:                     Traversing a Hash Table.
                                                             (line    6)
* bfd_hide_sym_by_version:               Writing the symbol table.
                                                             (line   95)
* bfd_h_put_size:                        Internal.           (line   97)
* bfd_init:                              Initialization.     (line   10)
* bfd_install_relocation:                typedef arelent.    (line  394)
* bfd_is_local_label:                    symbol handling functions.
                                                             (line   17)
* bfd_is_local_label_name:               symbol handling functions.
                                                             (line   26)
* bfd_is_target_special_symbol:          symbol handling functions.
                                                             (line   39)
* bfd_is_undefined_symclass:             symbol handling functions.
                                                             (line  125)
* bfd_link_split_section:                Writing the symbol table.
                                                             (line   43)
* bfd_log2:                              Internal.           (line  166)
* bfd_lookup_arch:                       Architectures.      (line  631)
* bfd_make_debug_symbol:                 symbol handling functions.
                                                             (line  106)
* bfd_make_empty_symbol:                 symbol handling functions.
                                                             (line   81)
* bfd_make_readable:                     Opening and Closing.
                                                             (line  224)
* bfd_make_section:                      section prototypes. (line  141)
* bfd_make_section_anyway:               section prototypes. (line  113)
* bfd_make_section_anyway_with_flags:    section prototypes. (line   95)
* bfd_make_section_old_way:              section prototypes. (line   75)
* bfd_make_section_with_flags:           section prototypes. (line  129)
* bfd_make_writable:                     Opening and Closing.
                                                             (line  210)
* bfd_malloc_and_get_section:            section prototypes. (line  267)
* bfd_map_over_sections:                 section prototypes. (line  176)
* bfd_merge_private_bfd_data:            Miscellaneous.      (line  172)
* bfd_mmap:                              Miscellaneous.      (line  443)
* bfd_octets_per_byte:                   Architectures.      (line  654)
* bfd_openr:                             Opening and Closing.
                                                             (line   37)
* bfd_openr_iovec:                       Opening and Closing.
                                                             (line   94)
* bfd_openr_next_archived_file:          Archives.           (line   83)
* bfd_openstreamr:                       Opening and Closing.
                                                             (line   82)
* bfd_openw:                             Opening and Closing.
                                                             (line  145)
* bfd_open_file:                         File Caching.       (line   51)
* bfd_perform_relocation:                typedef arelent.    (line  369)
* bfd_perror:                            Error reporting.    (line   76)
* bfd_printable_arch_mach:               Architectures.      (line  642)
* bfd_printable_name:                    Architectures.      (line  502)
* bfd_print_symbol_vandf:                symbol handling functions.
                                                             (line   73)
* bfd_put_size:                          Internal.           (line   21)
* BFD_RELOC_12_PCREL:                    howto manager.      (line   37)
* BFD_RELOC_14:                          howto manager.      (line   30)
* BFD_RELOC_16:                          howto manager.      (line   29)
* BFD_RELOC_16C_ABS20:                   howto manager.      (line 2048)
* BFD_RELOC_16C_ABS20_C:                 howto manager.      (line 2049)
* BFD_RELOC_16C_ABS24:                   howto manager.      (line 2050)
* BFD_RELOC_16C_ABS24_C:                 howto manager.      (line 2051)
* BFD_RELOC_16C_DISP04:                  howto manager.      (line 2028)
* BFD_RELOC_16C_DISP04_C:                howto manager.      (line 2029)
* BFD_RELOC_16C_DISP08:                  howto manager.      (line 2030)
* BFD_RELOC_16C_DISP08_C:                howto manager.      (line 2031)
* BFD_RELOC_16C_DISP16:                  howto manager.      (line 2032)
* BFD_RELOC_16C_DISP16_C:                howto manager.      (line 2033)
* BFD_RELOC_16C_DISP24:                  howto manager.      (line 2034)
* BFD_RELOC_16C_DISP24a:                 howto manager.      (line 2036)
* BFD_RELOC_16C_DISP24a_C:               howto manager.      (line 2037)
* BFD_RELOC_16C_DISP24_C:                howto manager.      (line 2035)
* BFD_RELOC_16C_IMM04:                   howto manager.      (line 2052)
* BFD_RELOC_16C_IMM04_C:                 howto manager.      (line 2053)
* BFD_RELOC_16C_IMM16:                   howto manager.      (line 2054)
* BFD_RELOC_16C_IMM16_C:                 howto manager.      (line 2055)
* BFD_RELOC_16C_IMM20:                   howto manager.      (line 2056)
* BFD_RELOC_16C_IMM20_C:                 howto manager.      (line 2057)
* BFD_RELOC_16C_IMM24:                   howto manager.      (line 2058)
* BFD_RELOC_16C_IMM24_C:                 howto manager.      (line 2059)
* BFD_RELOC_16C_IMM32:                   howto manager.      (line 2060)
* BFD_RELOC_16C_IMM32_C:                 howto manager.      (line 2061)
* BFD_RELOC_16C_NUM08:                   howto manager.      (line 2022)
* BFD_RELOC_16C_NUM08_C:                 howto manager.      (line 2023)
* BFD_RELOC_16C_NUM16:                   howto manager.      (line 2024)
* BFD_RELOC_16C_NUM16_C:                 howto manager.      (line 2025)
* BFD_RELOC_16C_NUM32:                   howto manager.      (line 2026)
* BFD_RELOC_16C_NUM32_C:                 howto manager.      (line 2027)
* BFD_RELOC_16C_REG04:                   howto manager.      (line 2038)
* BFD_RELOC_16C_REG04a:                  howto manager.      (line 2040)
* BFD_RELOC_16C_REG04a_C:                howto manager.      (line 2041)
* BFD_RELOC_16C_REG04_C:                 howto manager.      (line 2039)
* BFD_RELOC_16C_REG14:                   howto manager.      (line 2042)
* BFD_RELOC_16C_REG14_C:                 howto manager.      (line 2043)
* BFD_RELOC_16C_REG16:                   howto manager.      (line 2044)
* BFD_RELOC_16C_REG16_C:                 howto manager.      (line 2045)
* BFD_RELOC_16C_REG20:                   howto manager.      (line 2046)
* BFD_RELOC_16C_REG20_C:                 howto manager.      (line 2047)
* BFD_RELOC_16_BASEREL:                  howto manager.      (line   92)
* BFD_RELOC_16_GOTOFF:                   howto manager.      (line   51)
* BFD_RELOC_16_GOT_PCREL:                howto manager.      (line   48)
* BFD_RELOC_16_PCREL:                    howto manager.      (line   36)
* BFD_RELOC_16_PCREL_S2:                 howto manager.      (line  102)
* BFD_RELOC_16_PLTOFF:                   howto manager.      (line   63)
* BFD_RELOC_16_PLT_PCREL:                howto manager.      (line   59)
* BFD_RELOC_23_PCREL_S2:                 howto manager.      (line  103)
* BFD_RELOC_24:                          howto manager.      (line   28)
* BFD_RELOC_24_PCREL:                    howto manager.      (line   35)
* BFD_RELOC_24_PLT_PCREL:                howto manager.      (line   58)
* BFD_RELOC_26:                          howto manager.      (line   27)
* BFD_RELOC_32:                          howto manager.      (line   26)
* BFD_RELOC_32_BASEREL:                  howto manager.      (line   91)
* BFD_RELOC_32_GOTOFF:                   howto manager.      (line   50)
* BFD_RELOC_32_GOT_PCREL:                howto manager.      (line   47)
* BFD_RELOC_32_PCREL:                    howto manager.      (line   34)
* BFD_RELOC_32_PCREL_S2:                 howto manager.      (line  101)
* BFD_RELOC_32_PLTOFF:                   howto manager.      (line   62)
* BFD_RELOC_32_PLT_PCREL:                howto manager.      (line   57)
* BFD_RELOC_32_SECREL:                   howto manager.      (line   45)
* BFD_RELOC_386_COPY:                    howto manager.      (line  510)
* BFD_RELOC_386_GLOB_DAT:                howto manager.      (line  511)
* BFD_RELOC_386_GOT32:                   howto manager.      (line  508)
* BFD_RELOC_386_GOTOFF:                  howto manager.      (line  514)
* BFD_RELOC_386_GOTPC:                   howto manager.      (line  515)
* BFD_RELOC_386_IRELATIVE:               howto manager.      (line  531)
* BFD_RELOC_386_JUMP_SLOT:               howto manager.      (line  512)
* BFD_RELOC_386_PLT32:                   howto manager.      (line  509)
* BFD_RELOC_386_RELATIVE:                howto manager.      (line  513)
* BFD_RELOC_386_TLS_DESC:                howto manager.      (line  530)
* BFD_RELOC_386_TLS_DESC_CALL:           howto manager.      (line  529)
* BFD_RELOC_386_TLS_DTPMOD32:            howto manager.      (line  525)
* BFD_RELOC_386_TLS_DTPOFF32:            howto manager.      (line  526)
* BFD_RELOC_386_TLS_GD:                  howto manager.      (line  520)
* BFD_RELOC_386_TLS_GOTDESC:             howto manager.      (line  528)
* BFD_RELOC_386_TLS_GOTIE:               howto manager.      (line  518)
* BFD_RELOC_386_TLS_IE:                  howto manager.      (line  517)
* BFD_RELOC_386_TLS_IE_32:               howto manager.      (line  523)
* BFD_RELOC_386_TLS_LDM:                 howto manager.      (line  521)
* BFD_RELOC_386_TLS_LDO_32:              howto manager.      (line  522)
* BFD_RELOC_386_TLS_LE:                  howto manager.      (line  519)
* BFD_RELOC_386_TLS_LE_32:               howto manager.      (line  524)
* BFD_RELOC_386_TLS_TPOFF:               howto manager.      (line  516)
* BFD_RELOC_386_TLS_TPOFF32:             howto manager.      (line  527)
* BFD_RELOC_390_12:                      howto manager.      (line 1712)
* BFD_RELOC_390_20:                      howto manager.      (line 1793)
* BFD_RELOC_390_COPY:                    howto manager.      (line 1718)
* BFD_RELOC_390_GLOB_DAT:                howto manager.      (line 1720)
* BFD_RELOC_390_GOT12:                   howto manager.      (line 1714)
* BFD_RELOC_390_GOT16:                   howto manager.      (line 1728)
* BFD_RELOC_390_GOT20:                   howto manager.      (line 1794)
* BFD_RELOC_390_GOT64:                   howto manager.      (line 1748)
* BFD_RELOC_390_GOTENT:                  howto manager.      (line 1752)
* BFD_RELOC_390_GOTOFF64:                howto manager.      (line 1754)
* BFD_RELOC_390_GOTPC:                   howto manager.      (line 1726)
* BFD_RELOC_390_GOTPCDBL:                howto manager.      (line 1746)
* BFD_RELOC_390_GOTPLT12:                howto manager.      (line 1756)
* BFD_RELOC_390_GOTPLT16:                howto manager.      (line 1758)
* BFD_RELOC_390_GOTPLT20:                howto manager.      (line 1795)
* BFD_RELOC_390_GOTPLT32:                howto manager.      (line 1760)
* BFD_RELOC_390_GOTPLT64:                howto manager.      (line 1762)
* BFD_RELOC_390_GOTPLTENT:               howto manager.      (line 1764)
* BFD_RELOC_390_IRELATIVE:               howto manager.      (line 1798)
* BFD_RELOC_390_JMP_SLOT:                howto manager.      (line 1722)
* BFD_RELOC_390_PC12DBL:                 howto manager.      (line 1730)
* BFD_RELOC_390_PC16DBL:                 howto manager.      (line 1734)
* BFD_RELOC_390_PC24DBL:                 howto manager.      (line 1738)
* BFD_RELOC_390_PC32DBL:                 howto manager.      (line 1742)
* BFD_RELOC_390_PLT12DBL:                howto manager.      (line 1732)
* BFD_RELOC_390_PLT16DBL:                howto manager.      (line 1736)
* BFD_RELOC_390_PLT24DBL:                howto manager.      (line 1740)
* BFD_RELOC_390_PLT32:                   howto manager.      (line 1716)
* BFD_RELOC_390_PLT32DBL:                howto manager.      (line 1744)
* BFD_RELOC_390_PLT64:                   howto manager.      (line 1750)
* BFD_RELOC_390_PLTOFF16:                howto manager.      (line 1766)
* BFD_RELOC_390_PLTOFF32:                howto manager.      (line 1768)
* BFD_RELOC_390_PLTOFF64:                howto manager.      (line 1770)
* BFD_RELOC_390_RELATIVE:                howto manager.      (line 1724)
* BFD_RELOC_390_TLS_DTPMOD:              howto manager.      (line 1789)
* BFD_RELOC_390_TLS_DTPOFF:              howto manager.      (line 1790)
* BFD_RELOC_390_TLS_GD32:                howto manager.      (line 1775)
* BFD_RELOC_390_TLS_GD64:                howto manager.      (line 1776)
* BFD_RELOC_390_TLS_GDCALL:              howto manager.      (line 1773)
* BFD_RELOC_390_TLS_GOTIE12:             howto manager.      (line 1777)
* BFD_RELOC_390_TLS_GOTIE20:             howto manager.      (line 1796)
* BFD_RELOC_390_TLS_GOTIE32:             howto manager.      (line 1778)
* BFD_RELOC_390_TLS_GOTIE64:             howto manager.      (line 1779)
* BFD_RELOC_390_TLS_IE32:                howto manager.      (line 1782)
* BFD_RELOC_390_TLS_IE64:                howto manager.      (line 1783)
* BFD_RELOC_390_TLS_IEENT:               howto manager.      (line 1784)
* BFD_RELOC_390_TLS_LDCALL:              howto manager.      (line 1774)
* BFD_RELOC_390_TLS_LDM32:               howto manager.      (line 1780)
* BFD_RELOC_390_TLS_LDM64:               howto manager.      (line 1781)
* BFD_RELOC_390_TLS_LDO32:               howto manager.      (line 1787)
* BFD_RELOC_390_TLS_LDO64:               howto manager.      (line 1788)
* BFD_RELOC_390_TLS_LE32:                howto manager.      (line 1785)
* BFD_RELOC_390_TLS_LE64:                howto manager.      (line 1786)
* BFD_RELOC_390_TLS_LOAD:                howto manager.      (line 1772)
* BFD_RELOC_390_TLS_TPOFF:               howto manager.      (line 1791)
* BFD_RELOC_64:                          howto manager.      (line   25)
* BFD_RELOC_64_PCREL:                    howto manager.      (line   33)
* BFD_RELOC_64_PLTOFF:                   howto manager.      (line   61)
* BFD_RELOC_64_PLT_PCREL:                howto manager.      (line   56)
* BFD_RELOC_68K_GLOB_DAT:                howto manager.      (line   72)
* BFD_RELOC_68K_JMP_SLOT:                howto manager.      (line   73)
* BFD_RELOC_68K_RELATIVE:                howto manager.      (line   74)
* BFD_RELOC_68K_TLS_GD16:                howto manager.      (line   76)
* BFD_RELOC_68K_TLS_GD32:                howto manager.      (line   75)
* BFD_RELOC_68K_TLS_GD8:                 howto manager.      (line   77)
* BFD_RELOC_68K_TLS_IE16:                howto manager.      (line   85)
* BFD_RELOC_68K_TLS_IE32:                howto manager.      (line   84)
* BFD_RELOC_68K_TLS_IE8:                 howto manager.      (line   86)
* BFD_RELOC_68K_TLS_LDM16:               howto manager.      (line   79)
* BFD_RELOC_68K_TLS_LDM32:               howto manager.      (line   78)
* BFD_RELOC_68K_TLS_LDM8:                howto manager.      (line   80)
* BFD_RELOC_68K_TLS_LDO16:               howto manager.      (line   82)
* BFD_RELOC_68K_TLS_LDO32:               howto manager.      (line   81)
* BFD_RELOC_68K_TLS_LDO8:                howto manager.      (line   83)
* BFD_RELOC_68K_TLS_LE16:                howto manager.      (line   88)
* BFD_RELOC_68K_TLS_LE32:                howto manager.      (line   87)
* BFD_RELOC_68K_TLS_LE8:                 howto manager.      (line   89)
* BFD_RELOC_8:                           howto manager.      (line   31)
* BFD_RELOC_860_COPY:                    howto manager.      (line 2163)
* BFD_RELOC_860_GLOB_DAT:                howto manager.      (line 2164)
* BFD_RELOC_860_HAGOT:                   howto manager.      (line 2189)
* BFD_RELOC_860_HAGOTOFF:                howto manager.      (line 2190)
* BFD_RELOC_860_HAPC:                    howto manager.      (line 2191)
* BFD_RELOC_860_HIGH:                    howto manager.      (line 2192)
* BFD_RELOC_860_HIGHADJ:                 howto manager.      (line 2188)
* BFD_RELOC_860_HIGOT:                   howto manager.      (line 2193)
* BFD_RELOC_860_HIGOTOFF:                howto manager.      (line 2194)
* BFD_RELOC_860_JUMP_SLOT:               howto manager.      (line 2165)
* BFD_RELOC_860_LOGOT0:                  howto manager.      (line 2177)
* BFD_RELOC_860_LOGOT1:                  howto manager.      (line 2179)
* BFD_RELOC_860_LOGOTOFF0:               howto manager.      (line 2181)
* BFD_RELOC_860_LOGOTOFF1:               howto manager.      (line 2183)
* BFD_RELOC_860_LOGOTOFF2:               howto manager.      (line 2185)
* BFD_RELOC_860_LOGOTOFF3:               howto manager.      (line 2186)
* BFD_RELOC_860_LOPC:                    howto manager.      (line 2187)
* BFD_RELOC_860_LOW0:                    howto manager.      (line 2170)
* BFD_RELOC_860_LOW1:                    howto manager.      (line 2172)
* BFD_RELOC_860_LOW2:                    howto manager.      (line 2174)
* BFD_RELOC_860_LOW3:                    howto manager.      (line 2176)
* BFD_RELOC_860_PC16:                    howto manager.      (line 2169)
* BFD_RELOC_860_PC26:                    howto manager.      (line 2167)
* BFD_RELOC_860_PLT26:                   howto manager.      (line 2168)
* BFD_RELOC_860_RELATIVE:                howto manager.      (line 2166)
* BFD_RELOC_860_SPGOT0:                  howto manager.      (line 2178)
* BFD_RELOC_860_SPGOT1:                  howto manager.      (line 2180)
* BFD_RELOC_860_SPGOTOFF0:               howto manager.      (line 2182)
* BFD_RELOC_860_SPGOTOFF1:               howto manager.      (line 2184)
* BFD_RELOC_860_SPLIT0:                  howto manager.      (line 2171)
* BFD_RELOC_860_SPLIT1:                  howto manager.      (line 2173)
* BFD_RELOC_860_SPLIT2:                  howto manager.      (line 2175)
* BFD_RELOC_8_BASEREL:                   howto manager.      (line   96)
* BFD_RELOC_8_FFnn:                      howto manager.      (line   99)
* BFD_RELOC_8_GOTOFF:                    howto manager.      (line   55)
* BFD_RELOC_8_GOT_PCREL:                 howto manager.      (line   49)
* BFD_RELOC_8_PCREL:                     howto manager.      (line   38)
* BFD_RELOC_8_PLTOFF:                    howto manager.      (line   67)
* BFD_RELOC_8_PLT_PCREL:                 howto manager.      (line   60)
* BFD_RELOC_AARCH64_16:                  howto manager.      (line 2517)
* BFD_RELOC_AARCH64_16_PCREL:            howto manager.      (line 2523)
* BFD_RELOC_AARCH64_32:                  howto manager.      (line 2516)
* BFD_RELOC_AARCH64_32_PCREL:            howto manager.      (line 2522)
* BFD_RELOC_AARCH64_64:                  howto manager.      (line 2515)
* BFD_RELOC_AARCH64_64_PCREL:            howto manager.      (line 2521)
* BFD_RELOC_AARCH64_ADD_LO12:            howto manager.      (line 2573)
* BFD_RELOC_AARCH64_ADR_GOT_PAGE:        howto manager.      (line 2619)
* BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL:   howto manager.      (line 2569)
* BFD_RELOC_AARCH64_ADR_HI21_PCREL:      howto manager.      (line 2566)
* BFD_RELOC_AARCH64_ADR_LO21_PCREL:      howto manager.      (line 2563)
* BFD_RELOC_AARCH64_BRANCH19:            howto manager.      (line 2585)
* BFD_RELOC_AARCH64_CALL26:              howto manager.      (line 2593)
* BFD_RELOC_AARCH64_COPY:                howto manager.      (line 2690)
* BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP:  howto manager.      (line 2714)
* BFD_RELOC_AARCH64_GLOB_DAT:            howto manager.      (line 2692)
* BFD_RELOC_AARCH64_GOT_LD_PREL19:       howto manager.      (line 2613)
* BFD_RELOC_AARCH64_IRELATIVE:           howto manager.      (line 2706)
* BFD_RELOC_AARCH64_JUMP26:              howto manager.      (line 2589)
* BFD_RELOC_AARCH64_JUMP_SLOT:           howto manager.      (line 2694)
* BFD_RELOC_AARCH64_LD32_GOT_LO12_NC:    howto manager.      (line 2627)
* BFD_RELOC_AARCH64_LD64_GOT_LO12_NC:    howto manager.      (line 2623)
* BFD_RELOC_AARCH64_LDST128_LO12:        howto manager.      (line 2609)
* BFD_RELOC_AARCH64_LDST16_LO12:         howto manager.      (line 2597)
* BFD_RELOC_AARCH64_LDST32_LO12:         howto manager.      (line 2601)
* BFD_RELOC_AARCH64_LDST64_LO12:         howto manager.      (line 2605)
* BFD_RELOC_AARCH64_LDST8_LO12:          howto manager.      (line 2577)
* BFD_RELOC_AARCH64_LDST_LO12:           howto manager.      (line 2717)
* BFD_RELOC_AARCH64_LD_GOT_LO12_NC:      howto manager.      (line 2721)
* BFD_RELOC_AARCH64_LD_LO19_PCREL:       howto manager.      (line 2559)
* BFD_RELOC_AARCH64_MOVW_G0:             howto manager.      (line 2526)
* BFD_RELOC_AARCH64_MOVW_G0_NC:          howto manager.      (line 2529)
* BFD_RELOC_AARCH64_MOVW_G0_S:           howto manager.      (line 2547)
* BFD_RELOC_AARCH64_MOVW_G1:             howto manager.      (line 2532)
* BFD_RELOC_AARCH64_MOVW_G1_NC:          howto manager.      (line 2535)
* BFD_RELOC_AARCH64_MOVW_G1_S:           howto manager.      (line 2551)
* BFD_RELOC_AARCH64_MOVW_G2:             howto manager.      (line 2538)
* BFD_RELOC_AARCH64_MOVW_G2_NC:          howto manager.      (line 2541)
* BFD_RELOC_AARCH64_MOVW_G2_S:           howto manager.      (line 2555)
* BFD_RELOC_AARCH64_MOVW_G3:             howto manager.      (line 2544)
* BFD_RELOC_AARCH64_NONE:                howto manager.      (line 2513)
* BFD_RELOC_AARCH64_RELATIVE:            howto manager.      (line 2696)
* BFD_RELOC_AARCH64_RELOC_END:           howto manager.      (line 2708)
* BFD_RELOC_AARCH64_RELOC_START:         howto manager.      (line 2508)
* BFD_RELOC_AARCH64_TLSDESC:             howto manager.      (line 2704)
* BFD_RELOC_AARCH64_TLSDESC_ADD:         howto manager.      (line 2686)
* BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC: howto manager.      (line 2678)
* BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:  howto manager.      (line 2672)
* BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:  howto manager.      (line 2670)
* BFD_RELOC_AARCH64_TLSDESC_CALL:        howto manager.      (line 2688)
* BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC: howto manager.     (line 2676)
* BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC: howto manager.     (line 2674)
* BFD_RELOC_AARCH64_TLSDESC_LDR:         howto manager.      (line 2684)
* BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC:  howto manager.      (line 2727)
* BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:   howto manager.      (line 2668)
* BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:   howto manager.      (line 2682)
* BFD_RELOC_AARCH64_TLSDESC_OFF_G1:      howto manager.      (line 2680)
* BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:   howto manager.      (line 2636)
* BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:    howto manager.      (line 2631)
* BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: howto manager.
                                                             (line 2644)
* BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC: howto manager.
                                                             (line 2648)
* BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: howto manager.
                                                             (line 2646)
* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC: howto manager.
                                                             (line 2724)
* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 2650)
* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC: howto manager.
                                                             (line 2642)
* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1: howto manager.   (line 2640)
* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: howto manager.     (line 2662)
* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: howto manager.     (line 2664)
* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: howto manager.  (line 2666)
* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: howto manager.      (line 2658)
* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: howto manager.   (line 2660)
* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: howto manager.      (line 2654)
* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: howto manager.   (line 2656)
* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: howto manager.      (line 2652)
* BFD_RELOC_AARCH64_TLS_DTPMOD:          howto manager.      (line 2698)
* BFD_RELOC_AARCH64_TLS_DTPREL:          howto manager.      (line 2700)
* BFD_RELOC_AARCH64_TLS_TPREL:           howto manager.      (line 2702)
* BFD_RELOC_AARCH64_TSTBR14:             howto manager.      (line 2581)
* BFD_RELOC_ALPHA_BOH:                   howto manager.      (line  292)
* BFD_RELOC_ALPHA_BRSGP:                 howto manager.      (line  279)
* BFD_RELOC_ALPHA_BSR:                   howto manager.      (line  286)
* BFD_RELOC_ALPHA_CODEADDR:              howto manager.      (line  272)
* BFD_RELOC_ALPHA_DTPMOD64:              howto manager.      (line  297)
* BFD_RELOC_ALPHA_DTPREL16:              howto manager.      (line  302)
* BFD_RELOC_ALPHA_DTPREL64:              howto manager.      (line  299)
* BFD_RELOC_ALPHA_DTPREL_HI16:           howto manager.      (line  300)
* BFD_RELOC_ALPHA_DTPREL_LO16:           howto manager.      (line  301)
* BFD_RELOC_ALPHA_ELF_LITERAL:           howto manager.      (line  240)
* BFD_RELOC_ALPHA_GOTDTPREL16:           howto manager.      (line  298)
* BFD_RELOC_ALPHA_GOTTPREL16:            howto manager.      (line  303)
* BFD_RELOC_ALPHA_GPDISP:                howto manager.      (line  235)
* BFD_RELOC_ALPHA_GPDISP_HI16:           howto manager.      (line  223)
* BFD_RELOC_ALPHA_GPDISP_LO16:           howto manager.      (line  230)
* BFD_RELOC_ALPHA_GPREL_HI16:            howto manager.      (line  275)
* BFD_RELOC_ALPHA_GPREL_LO16:            howto manager.      (line  276)
* BFD_RELOC_ALPHA_HINT:                  howto manager.      (line  265)
* BFD_RELOC_ALPHA_LDA:                   howto manager.      (line  289)
* BFD_RELOC_ALPHA_LINKAGE:               howto manager.      (line  269)
* BFD_RELOC_ALPHA_LITERAL:               howto manager.      (line  239)
* BFD_RELOC_ALPHA_LITUSE:                howto manager.      (line  241)
* BFD_RELOC_ALPHA_NOP:                   howto manager.      (line  283)
* BFD_RELOC_ALPHA_TLSGD:                 howto manager.      (line  295)
* BFD_RELOC_ALPHA_TLSLDM:                howto manager.      (line  296)
* BFD_RELOC_ALPHA_TPREL16:               howto manager.      (line  307)
* BFD_RELOC_ALPHA_TPREL64:               howto manager.      (line  304)
* BFD_RELOC_ALPHA_TPREL_HI16:            howto manager.      (line  305)
* BFD_RELOC_ALPHA_TPREL_LO16:            howto manager.      (line  306)
* BFD_RELOC_ARC_B22_PCREL:               howto manager.      (line  953)
* BFD_RELOC_ARC_B26:                     howto manager.      (line  957)
* BFD_RELOC_ARM_ADRL_IMMEDIATE:          howto manager.      (line  827)
* BFD_RELOC_ARM_ADR_IMM:                 howto manager.      (line  841)
* BFD_RELOC_ARM_ALU_PC_G0:               howto manager.      (line  794)
* BFD_RELOC_ARM_ALU_PC_G0_NC:            howto manager.      (line  793)
* BFD_RELOC_ARM_ALU_PC_G1:               howto manager.      (line  796)
* BFD_RELOC_ARM_ALU_PC_G1_NC:            howto manager.      (line  795)
* BFD_RELOC_ARM_ALU_PC_G2:               howto manager.      (line  797)
* BFD_RELOC_ARM_ALU_SB_G0:               howto manager.      (line  808)
* BFD_RELOC_ARM_ALU_SB_G0_NC:            howto manager.      (line  807)
* BFD_RELOC_ARM_ALU_SB_G1:               howto manager.      (line  810)
* BFD_RELOC_ARM_ALU_SB_G1_NC:            howto manager.      (line  809)
* BFD_RELOC_ARM_ALU_SB_G2:               howto manager.      (line  811)
* BFD_RELOC_ARM_CP_OFF_IMM:              howto manager.      (line  837)
* BFD_RELOC_ARM_CP_OFF_IMM_S2:           howto manager.      (line  838)
* BFD_RELOC_ARM_GLOB_DAT:                howto manager.      (line  770)
* BFD_RELOC_ARM_GOT32:                   howto manager.      (line  771)
* BFD_RELOC_ARM_GOTOFF:                  howto manager.      (line  774)
* BFD_RELOC_ARM_GOTPC:                   howto manager.      (line  775)
* BFD_RELOC_ARM_GOT_PREL:                howto manager.      (line  776)
* BFD_RELOC_ARM_HVC:                     howto manager.      (line  834)
* BFD_RELOC_ARM_HWLITERAL:               howto manager.      (line  848)
* BFD_RELOC_ARM_IMMEDIATE:               howto manager.      (line  826)
* BFD_RELOC_ARM_IN_POOL:                 howto manager.      (line  844)
* BFD_RELOC_ARM_IRELATIVE:               howto manager.      (line  824)
* BFD_RELOC_ARM_JUMP_SLOT:               howto manager.      (line  769)
* BFD_RELOC_ARM_LDC_PC_G0:               howto manager.      (line  804)
* BFD_RELOC_ARM_LDC_PC_G1:               howto manager.      (line  805)
* BFD_RELOC_ARM_LDC_PC_G2:               howto manager.      (line  806)
* BFD_RELOC_ARM_LDC_SB_G0:               howto manager.      (line  818)
* BFD_RELOC_ARM_LDC_SB_G1:               howto manager.      (line  819)
* BFD_RELOC_ARM_LDC_SB_G2:               howto manager.      (line  820)
* BFD_RELOC_ARM_LDRS_PC_G0:              howto manager.      (line  801)
* BFD_RELOC_ARM_LDRS_PC_G1:              howto manager.      (line  802)
* BFD_RELOC_ARM_LDRS_PC_G2:              howto manager.      (line  803)
* BFD_RELOC_ARM_LDRS_SB_G0:              howto manager.      (line  815)
* BFD_RELOC_ARM_LDRS_SB_G1:              howto manager.      (line  816)
* BFD_RELOC_ARM_LDRS_SB_G2:              howto manager.      (line  817)
* BFD_RELOC_ARM_LDR_IMM:                 howto manager.      (line  842)
* BFD_RELOC_ARM_LDR_PC_G0:               howto manager.      (line  798)
* BFD_RELOC_ARM_LDR_PC_G1:               howto manager.      (line  799)
* BFD_RELOC_ARM_LDR_PC_G2:               howto manager.      (line  800)
* BFD_RELOC_ARM_LDR_SB_G0:               howto manager.      (line  812)
* BFD_RELOC_ARM_LDR_SB_G1:               howto manager.      (line  813)
* BFD_RELOC_ARM_LDR_SB_G2:               howto manager.      (line  814)
* BFD_RELOC_ARM_LITERAL:                 howto manager.      (line  843)
* BFD_RELOC_ARM_MOVT:                    howto manager.      (line  761)
* BFD_RELOC_ARM_MOVT_PCREL:              howto manager.      (line  763)
* BFD_RELOC_ARM_MOVW:                    howto manager.      (line  760)
* BFD_RELOC_ARM_MOVW_PCREL:              howto manager.      (line  762)
* BFD_RELOC_ARM_MULTI:                   howto manager.      (line  836)
* BFD_RELOC_ARM_OFFSET_IMM:              howto manager.      (line  741)
* BFD_RELOC_ARM_OFFSET_IMM8:             howto manager.      (line  845)
* BFD_RELOC_ARM_PCREL_BLX:               howto manager.      (line  717)
* BFD_RELOC_ARM_PCREL_BRANCH:            howto manager.      (line  714)
* BFD_RELOC_ARM_PCREL_CALL:              howto manager.      (line  725)
* BFD_RELOC_ARM_PCREL_JUMP:              howto manager.      (line  728)
* BFD_RELOC_ARM_PLT32:                   howto manager.      (line  772)
* BFD_RELOC_ARM_PREL31:                  howto manager.      (line  758)
* BFD_RELOC_ARM_RELATIVE:                howto manager.      (line  773)
* BFD_RELOC_ARM_ROSEGREL32:              howto manager.      (line  750)
* BFD_RELOC_ARM_SBREL32:                 howto manager.      (line  752)
* BFD_RELOC_ARM_SHIFT_IMM:               howto manager.      (line  832)
* BFD_RELOC_ARM_SMC:                     howto manager.      (line  833)
* BFD_RELOC_ARM_SWI:                     howto manager.      (line  835)
* BFD_RELOC_ARM_T32_ADD_IMM:             howto manager.      (line  829)
* BFD_RELOC_ARM_T32_ADD_PC12:            howto manager.      (line  831)
* BFD_RELOC_ARM_T32_CP_OFF_IMM:          howto manager.      (line  839)
* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2:       howto manager.      (line  840)
* BFD_RELOC_ARM_T32_IMM12:               howto manager.      (line  830)
* BFD_RELOC_ARM_T32_IMMEDIATE:           howto manager.      (line  828)
* BFD_RELOC_ARM_T32_OFFSET_IMM:          howto manager.      (line  847)
* BFD_RELOC_ARM_T32_OFFSET_U8:           howto manager.      (line  846)
* BFD_RELOC_ARM_TARGET1:                 howto manager.      (line  747)
* BFD_RELOC_ARM_TARGET2:                 howto manager.      (line  754)
* BFD_RELOC_ARM_THM_TLS_CALL:            howto manager.      (line  788)
* BFD_RELOC_ARM_THM_TLS_DESCSEQ:         howto manager.      (line  790)
* BFD_RELOC_ARM_THUMB_ADD:               howto manager.      (line  849)
* BFD_RELOC_ARM_THUMB_IMM:               howto manager.      (line  850)
* BFD_RELOC_ARM_THUMB_MOVT:              howto manager.      (line  765)
* BFD_RELOC_ARM_THUMB_MOVT_PCREL:        howto manager.      (line  767)
* BFD_RELOC_ARM_THUMB_MOVW:              howto manager.      (line  764)
* BFD_RELOC_ARM_THUMB_MOVW_PCREL:        howto manager.      (line  766)
* BFD_RELOC_ARM_THUMB_OFFSET:            howto manager.      (line  744)
* BFD_RELOC_ARM_THUMB_SHIFT:             howto manager.      (line  851)
* BFD_RELOC_ARM_TLS_CALL:                howto manager.      (line  787)
* BFD_RELOC_ARM_TLS_DESC:                howto manager.      (line  791)
* BFD_RELOC_ARM_TLS_DESCSEQ:             howto manager.      (line  789)
* BFD_RELOC_ARM_TLS_DTPMOD32:            howto manager.      (line  782)
* BFD_RELOC_ARM_TLS_DTPOFF32:            howto manager.      (line  781)
* BFD_RELOC_ARM_TLS_GD32:                howto manager.      (line  778)
* BFD_RELOC_ARM_TLS_GOTDESC:             howto manager.      (line  786)
* BFD_RELOC_ARM_TLS_IE32:                howto manager.      (line  784)
* BFD_RELOC_ARM_TLS_LDM32:               howto manager.      (line  780)
* BFD_RELOC_ARM_TLS_LDO32:               howto manager.      (line  779)
* BFD_RELOC_ARM_TLS_LE32:                howto manager.      (line  785)
* BFD_RELOC_ARM_TLS_TPOFF32:             howto manager.      (line  783)
* BFD_RELOC_ARM_V4BX:                    howto manager.      (line  822)
* BFD_RELOC_AVR_13_PCREL:                howto manager.      (line 1555)
* BFD_RELOC_AVR_16_PM:                   howto manager.      (line 1558)
* BFD_RELOC_AVR_6:                       howto manager.      (line 1626)
* BFD_RELOC_AVR_6_ADIW:                  howto manager.      (line 1629)
* BFD_RELOC_AVR_7_PCREL:                 howto manager.      (line 1552)
* BFD_RELOC_AVR_8_HI:                    howto manager.      (line 1635)
* BFD_RELOC_AVR_8_HLO:                   howto manager.      (line 1638)
* BFD_RELOC_AVR_8_LO:                    howto manager.      (line 1632)
* BFD_RELOC_AVR_CALL:                    howto manager.      (line 1620)
* BFD_RELOC_AVR_DIFF16:                  howto manager.      (line 1642)
* BFD_RELOC_AVR_DIFF32:                  howto manager.      (line 1643)
* BFD_RELOC_AVR_DIFF8:                   howto manager.      (line 1641)
* BFD_RELOC_AVR_HH8_LDI:                 howto manager.      (line 1567)
* BFD_RELOC_AVR_HH8_LDI_NEG:             howto manager.      (line 1582)
* BFD_RELOC_AVR_HH8_LDI_PM:              howto manager.      (line 1605)
* BFD_RELOC_AVR_HH8_LDI_PM_NEG:          howto manager.      (line 1616)
* BFD_RELOC_AVR_HI8_LDI:                 howto manager.      (line 1564)
* BFD_RELOC_AVR_HI8_LDI_GS:              howto manager.      (line 1600)
* BFD_RELOC_AVR_HI8_LDI_NEG:             howto manager.      (line 1578)
* BFD_RELOC_AVR_HI8_LDI_PM:              howto manager.      (line 1597)
* BFD_RELOC_AVR_HI8_LDI_PM_NEG:          howto manager.      (line 1612)
* BFD_RELOC_AVR_LDI:                     howto manager.      (line 1623)
* BFD_RELOC_AVR_LO8_LDI:                 howto manager.      (line 1561)
* BFD_RELOC_AVR_LO8_LDI_GS:              howto manager.      (line 1592)
* BFD_RELOC_AVR_LO8_LDI_NEG:             howto manager.      (line 1574)
* BFD_RELOC_AVR_LO8_LDI_PM:              howto manager.      (line 1589)
* BFD_RELOC_AVR_LO8_LDI_PM_NEG:          howto manager.      (line 1609)
* BFD_RELOC_AVR_MS8_LDI:                 howto manager.      (line 1571)
* BFD_RELOC_AVR_MS8_LDI_NEG:             howto manager.      (line 1586)
* BFD_RELOC_BFIN_10_PCREL:               howto manager.      (line  971)
* BFD_RELOC_BFIN_11_PCREL:               howto manager.      (line  973)
* BFD_RELOC_BFIN_12_PCREL_JUMP:          howto manager.      (line  975)
* BFD_RELOC_BFIN_12_PCREL_JUMP_S:        howto manager.      (line  977)
* BFD_RELOC_BFIN_16_HIGH:                howto manager.      (line  963)
* BFD_RELOC_BFIN_16_IMM:                 howto manager.      (line  961)
* BFD_RELOC_BFIN_16_LOW:                 howto manager.      (line  969)
* BFD_RELOC_BFIN_24_PCREL_CALL_X:        howto manager.      (line  979)
* BFD_RELOC_BFIN_24_PCREL_JUMP_L:        howto manager.      (line  981)
* BFD_RELOC_BFIN_4_PCREL:                howto manager.      (line  965)
* BFD_RELOC_BFIN_5_PCREL:                howto manager.      (line  967)
* BFD_RELOC_BFIN_FUNCDESC:               howto manager.      (line  986)
* BFD_RELOC_BFIN_FUNCDESC_GOT17M4:       howto manager.      (line  987)
* BFD_RELOC_BFIN_FUNCDESC_GOTHI:         howto manager.      (line  988)
* BFD_RELOC_BFIN_FUNCDESC_GOTLO:         howto manager.      (line  989)
* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4:    howto manager.      (line  991)
* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI:      howto manager.      (line  992)
* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO:      howto manager.      (line  993)
* BFD_RELOC_BFIN_FUNCDESC_VALUE:         howto manager.      (line  990)
* BFD_RELOC_BFIN_GOT:                    howto manager.      (line  998)
* BFD_RELOC_BFIN_GOT17M4:                howto manager.      (line  983)
* BFD_RELOC_BFIN_GOTHI:                  howto manager.      (line  984)
* BFD_RELOC_BFIN_GOTLO:                  howto manager.      (line  985)
* BFD_RELOC_BFIN_GOTOFF17M4:             howto manager.      (line  994)
* BFD_RELOC_BFIN_GOTOFFHI:               howto manager.      (line  995)
* BFD_RELOC_BFIN_GOTOFFLO:               howto manager.      (line  996)
* BFD_RELOC_BFIN_PLTPC:                  howto manager.      (line 1000)
* BFD_RELOC_C6000_ABS_H16:               howto manager.      (line 1397)
* BFD_RELOC_C6000_ABS_L16:               howto manager.      (line 1396)
* BFD_RELOC_C6000_ABS_S16:               howto manager.      (line 1395)
* BFD_RELOC_C6000_ALIGN:                 howto manager.      (line 1418)
* BFD_RELOC_C6000_COPY:                  howto manager.      (line 1413)
* BFD_RELOC_C6000_DSBT_INDEX:            howto manager.      (line 1411)
* BFD_RELOC_C6000_EHTYPE:                howto manager.      (line 1415)
* BFD_RELOC_C6000_FPHEAD:                howto manager.      (line 1419)
* BFD_RELOC_C6000_JUMP_SLOT:             howto manager.      (line 1414)
* BFD_RELOC_C6000_NOCMP:                 howto manager.      (line 1420)
* BFD_RELOC_C6000_PCR_H16:               howto manager.      (line 1416)
* BFD_RELOC_C6000_PCR_L16:               howto manager.      (line 1417)
* BFD_RELOC_C6000_PCR_S10:               howto manager.      (line 1393)
* BFD_RELOC_C6000_PCR_S12:               howto manager.      (line 1392)
* BFD_RELOC_C6000_PCR_S21:               howto manager.      (line 1391)
* BFD_RELOC_C6000_PCR_S7:                howto manager.      (line 1394)
* BFD_RELOC_C6000_PREL31:                howto manager.      (line 1412)
* BFD_RELOC_C6000_SBR_GOT_H16_W:         howto manager.      (line 1410)
* BFD_RELOC_C6000_SBR_GOT_L16_W:         howto manager.      (line 1409)
* BFD_RELOC_C6000_SBR_GOT_U15_W:         howto manager.      (line 1408)
* BFD_RELOC_C6000_SBR_H16_B:             howto manager.      (line 1405)
* BFD_RELOC_C6000_SBR_H16_H:             howto manager.      (line 1406)
* BFD_RELOC_C6000_SBR_H16_W:             howto manager.      (line 1407)
* BFD_RELOC_C6000_SBR_L16_B:             howto manager.      (line 1402)
* BFD_RELOC_C6000_SBR_L16_H:             howto manager.      (line 1403)
* BFD_RELOC_C6000_SBR_L16_W:             howto manager.      (line 1404)
* BFD_RELOC_C6000_SBR_S16:               howto manager.      (line 1401)
* BFD_RELOC_C6000_SBR_U15_B:             howto manager.      (line 1398)
* BFD_RELOC_C6000_SBR_U15_H:             howto manager.      (line 1399)
* BFD_RELOC_C6000_SBR_U15_W:             howto manager.      (line 1400)
* bfd_reloc_code_type:                   howto manager.      (line    9)
* BFD_RELOC_CR16_ABS20:                  howto manager.      (line 2075)
* BFD_RELOC_CR16_ABS24:                  howto manager.      (line 2076)
* BFD_RELOC_CR16_DISP16:                 howto manager.      (line 2086)
* BFD_RELOC_CR16_DISP20:                 howto manager.      (line 2087)
* BFD_RELOC_CR16_DISP24:                 howto manager.      (line 2088)
* BFD_RELOC_CR16_DISP24a:                howto manager.      (line 2089)
* BFD_RELOC_CR16_DISP4:                  howto manager.      (line 2084)
* BFD_RELOC_CR16_DISP8:                  howto manager.      (line 2085)
* BFD_RELOC_CR16_GLOB_DAT:               howto manager.      (line 2095)
* BFD_RELOC_CR16_GOTC_REGREL20:          howto manager.      (line 2094)
* BFD_RELOC_CR16_GOT_REGREL20:           howto manager.      (line 2093)
* BFD_RELOC_CR16_IMM16:                  howto manager.      (line 2079)
* BFD_RELOC_CR16_IMM20:                  howto manager.      (line 2080)
* BFD_RELOC_CR16_IMM24:                  howto manager.      (line 2081)
* BFD_RELOC_CR16_IMM32:                  howto manager.      (line 2082)
* BFD_RELOC_CR16_IMM32a:                 howto manager.      (line 2083)
* BFD_RELOC_CR16_IMM4:                   howto manager.      (line 2077)
* BFD_RELOC_CR16_IMM8:                   howto manager.      (line 2078)
* BFD_RELOC_CR16_NUM16:                  howto manager.      (line 2064)
* BFD_RELOC_CR16_NUM32:                  howto manager.      (line 2065)
* BFD_RELOC_CR16_NUM32a:                 howto manager.      (line 2066)
* BFD_RELOC_CR16_NUM8:                   howto manager.      (line 2063)
* BFD_RELOC_CR16_REGREL0:                howto manager.      (line 2067)
* BFD_RELOC_CR16_REGREL14:               howto manager.      (line 2070)
* BFD_RELOC_CR16_REGREL14a:              howto manager.      (line 2071)
* BFD_RELOC_CR16_REGREL16:               howto manager.      (line 2072)
* BFD_RELOC_CR16_REGREL20:               howto manager.      (line 2073)
* BFD_RELOC_CR16_REGREL20a:              howto manager.      (line 2074)
* BFD_RELOC_CR16_REGREL4:                howto manager.      (line 2068)
* BFD_RELOC_CR16_REGREL4a:               howto manager.      (line 2069)
* BFD_RELOC_CR16_SWITCH16:               howto manager.      (line 2091)
* BFD_RELOC_CR16_SWITCH32:               howto manager.      (line 2092)
* BFD_RELOC_CR16_SWITCH8:                howto manager.      (line 2090)
* BFD_RELOC_CRIS_16_DTPREL:              howto manager.      (line 2155)
* BFD_RELOC_CRIS_16_GOT:                 howto manager.      (line 2137)
* BFD_RELOC_CRIS_16_GOTPLT:              howto manager.      (line 2141)
* BFD_RELOC_CRIS_16_GOT_GD:              howto manager.      (line 2151)
* BFD_RELOC_CRIS_16_GOT_TPREL:           howto manager.      (line 2157)
* BFD_RELOC_CRIS_16_TPREL:               howto manager.      (line 2159)
* BFD_RELOC_CRIS_32_DTPREL:              howto manager.      (line 2154)
* BFD_RELOC_CRIS_32_GD:                  howto manager.      (line 2152)
* BFD_RELOC_CRIS_32_GOT:                 howto manager.      (line 2135)
* BFD_RELOC_CRIS_32_GOTPLT:              howto manager.      (line 2139)
* BFD_RELOC_CRIS_32_GOTREL:              howto manager.      (line 2143)
* BFD_RELOC_CRIS_32_GOT_GD:              howto manager.      (line 2150)
* BFD_RELOC_CRIS_32_GOT_TPREL:           howto manager.      (line 2156)
* BFD_RELOC_CRIS_32_IE:                  howto manager.      (line 2161)
* BFD_RELOC_CRIS_32_PLT_GOTREL:          howto manager.      (line 2145)
* BFD_RELOC_CRIS_32_PLT_PCREL:           howto manager.      (line 2147)
* BFD_RELOC_CRIS_32_TPREL:               howto manager.      (line 2158)
* BFD_RELOC_CRIS_BDISP8:                 howto manager.      (line 2118)
* BFD_RELOC_CRIS_COPY:                   howto manager.      (line 2130)
* BFD_RELOC_CRIS_DTP:                    howto manager.      (line 2153)
* BFD_RELOC_CRIS_DTPMOD:                 howto manager.      (line 2160)
* BFD_RELOC_CRIS_GLOB_DAT:               howto manager.      (line 2131)
* BFD_RELOC_CRIS_JUMP_SLOT:              howto manager.      (line 2132)
* BFD_RELOC_CRIS_LAPCQ_OFFSET:           howto manager.      (line 2126)
* BFD_RELOC_CRIS_RELATIVE:               howto manager.      (line 2133)
* BFD_RELOC_CRIS_SIGNED_16:              howto manager.      (line 2124)
* BFD_RELOC_CRIS_SIGNED_6:               howto manager.      (line 2120)
* BFD_RELOC_CRIS_SIGNED_8:               howto manager.      (line 2122)
* BFD_RELOC_CRIS_UNSIGNED_16:            howto manager.      (line 2125)
* BFD_RELOC_CRIS_UNSIGNED_4:             howto manager.      (line 2127)
* BFD_RELOC_CRIS_UNSIGNED_5:             howto manager.      (line 2119)
* BFD_RELOC_CRIS_UNSIGNED_6:             howto manager.      (line 2121)
* BFD_RELOC_CRIS_UNSIGNED_8:             howto manager.      (line 2123)
* BFD_RELOC_CRX_ABS16:                   howto manager.      (line 2107)
* BFD_RELOC_CRX_ABS32:                   howto manager.      (line 2108)
* BFD_RELOC_CRX_IMM16:                   howto manager.      (line 2112)
* BFD_RELOC_CRX_IMM32:                   howto manager.      (line 2113)
* BFD_RELOC_CRX_NUM16:                   howto manager.      (line 2110)
* BFD_RELOC_CRX_NUM32:                   howto manager.      (line 2111)
* BFD_RELOC_CRX_NUM8:                    howto manager.      (line 2109)
* BFD_RELOC_CRX_REGREL12:                howto manager.      (line 2103)
* BFD_RELOC_CRX_REGREL22:                howto manager.      (line 2104)
* BFD_RELOC_CRX_REGREL28:                howto manager.      (line 2105)
* BFD_RELOC_CRX_REGREL32:                howto manager.      (line 2106)
* BFD_RELOC_CRX_REL16:                   howto manager.      (line 2100)
* BFD_RELOC_CRX_REL24:                   howto manager.      (line 2101)
* BFD_RELOC_CRX_REL32:                   howto manager.      (line 2102)
* BFD_RELOC_CRX_REL4:                    howto manager.      (line 2097)
* BFD_RELOC_CRX_REL8:                    howto manager.      (line 2098)
* BFD_RELOC_CRX_REL8_CMP:                howto manager.      (line 2099)
* BFD_RELOC_CRX_SWITCH16:                howto manager.      (line 2115)
* BFD_RELOC_CRX_SWITCH32:                howto manager.      (line 2116)
* BFD_RELOC_CRX_SWITCH8:                 howto manager.      (line 2114)
* BFD_RELOC_CTOR:                        howto manager.      (line  709)
* BFD_RELOC_D10V_10_PCREL_L:             howto manager.      (line 1045)
* BFD_RELOC_D10V_10_PCREL_R:             howto manager.      (line 1042)
* BFD_RELOC_D10V_18:                     howto manager.      (line 1049)
* BFD_RELOC_D10V_18_PCREL:               howto manager.      (line 1051)
* BFD_RELOC_D30V_15:                     howto manager.      (line 1062)
* BFD_RELOC_D30V_15_PCREL:               howto manager.      (line 1065)
* BFD_RELOC_D30V_15_PCREL_R:             howto manager.      (line 1068)
* BFD_RELOC_D30V_21:                     howto manager.      (line 1072)
* BFD_RELOC_D30V_21_PCREL:               howto manager.      (line 1075)
* BFD_RELOC_D30V_21_PCREL_R:             howto manager.      (line 1078)
* BFD_RELOC_D30V_32:                     howto manager.      (line 1082)
* BFD_RELOC_D30V_32_PCREL:               howto manager.      (line 1084)
* BFD_RELOC_D30V_6:                      howto manager.      (line 1053)
* BFD_RELOC_D30V_9_PCREL:                howto manager.      (line 1055)
* BFD_RELOC_D30V_9_PCREL_R:              howto manager.      (line 1058)
* BFD_RELOC_DLX_HI16_S:                  howto manager.      (line 1086)
* BFD_RELOC_DLX_JMP26:                   howto manager.      (line 1090)
* BFD_RELOC_DLX_LO16:                    howto manager.      (line 1088)
* BFD_RELOC_EPIPHANY_HIGH:               howto manager.      (line 2924)
* BFD_RELOC_EPIPHANY_IMM11:              howto manager.      (line 2930)
* BFD_RELOC_EPIPHANY_IMM8:               howto manager.      (line 2933)
* BFD_RELOC_EPIPHANY_LOW:                howto manager.      (line 2926)
* BFD_RELOC_EPIPHANY_SIMM11:             howto manager.      (line 2928)
* BFD_RELOC_EPIPHANY_SIMM24:             howto manager.      (line 2922)
* BFD_RELOC_EPIPHANY_SIMM8:              howto manager.      (line 2920)
* BFD_RELOC_FR30_10_IN_8:                howto manager.      (line 1436)
* BFD_RELOC_FR30_12_PCREL:               howto manager.      (line 1442)
* BFD_RELOC_FR30_20:                     howto manager.      (line 1424)
* BFD_RELOC_FR30_48:                     howto manager.      (line 1422)
* BFD_RELOC_FR30_6_IN_4:                 howto manager.      (line 1427)
* BFD_RELOC_FR30_8_IN_8:                 howto manager.      (line 1430)
* BFD_RELOC_FR30_9_IN_8:                 howto manager.      (line 1433)
* BFD_RELOC_FR30_9_PCREL:                howto manager.      (line 1439)
* BFD_RELOC_FRV_FUNCDESC:                howto manager.      (line  438)
* BFD_RELOC_FRV_FUNCDESC_GOT12:          howto manager.      (line  439)
* BFD_RELOC_FRV_FUNCDESC_GOTHI:          howto manager.      (line  440)
* BFD_RELOC_FRV_FUNCDESC_GOTLO:          howto manager.      (line  441)
* BFD_RELOC_FRV_FUNCDESC_GOTOFF12:       howto manager.      (line  443)
* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI:       howto manager.      (line  444)
* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO:       howto manager.      (line  445)
* BFD_RELOC_FRV_FUNCDESC_VALUE:          howto manager.      (line  442)
* BFD_RELOC_FRV_GETTLSOFF:               howto manager.      (line  449)
* BFD_RELOC_FRV_GETTLSOFF_RELAX:         howto manager.      (line  462)
* BFD_RELOC_FRV_GOT12:                   howto manager.      (line  435)
* BFD_RELOC_FRV_GOTHI:                   howto manager.      (line  436)
* BFD_RELOC_FRV_GOTLO:                   howto manager.      (line  437)
* BFD_RELOC_FRV_GOTOFF12:                howto manager.      (line  446)
* BFD_RELOC_FRV_GOTOFFHI:                howto manager.      (line  447)
* BFD_RELOC_FRV_GOTOFFLO:                howto manager.      (line  448)
* BFD_RELOC_FRV_GOTTLSDESC12:            howto manager.      (line  451)
* BFD_RELOC_FRV_GOTTLSDESCHI:            howto manager.      (line  452)
* BFD_RELOC_FRV_GOTTLSDESCLO:            howto manager.      (line  453)
* BFD_RELOC_FRV_GOTTLSOFF12:             howto manager.      (line  457)
* BFD_RELOC_FRV_GOTTLSOFFHI:             howto manager.      (line  458)
* BFD_RELOC_FRV_GOTTLSOFFLO:             howto manager.      (line  459)
* BFD_RELOC_FRV_GPREL12:                 howto manager.      (line  430)
* BFD_RELOC_FRV_GPREL32:                 howto manager.      (line  432)
* BFD_RELOC_FRV_GPRELHI:                 howto manager.      (line  433)
* BFD_RELOC_FRV_GPRELLO:                 howto manager.      (line  434)
* BFD_RELOC_FRV_GPRELU12:                howto manager.      (line  431)
* BFD_RELOC_FRV_HI16:                    howto manager.      (line  429)
* BFD_RELOC_FRV_LABEL16:                 howto manager.      (line  426)
* BFD_RELOC_FRV_LABEL24:                 howto manager.      (line  427)
* BFD_RELOC_FRV_LO16:                    howto manager.      (line  428)
* BFD_RELOC_FRV_TLSDESC_RELAX:           howto manager.      (line  461)
* BFD_RELOC_FRV_TLSDESC_VALUE:           howto manager.      (line  450)
* BFD_RELOC_FRV_TLSMOFF:                 howto manager.      (line  464)
* BFD_RELOC_FRV_TLSMOFF12:               howto manager.      (line  454)
* BFD_RELOC_FRV_TLSMOFFHI:               howto manager.      (line  455)
* BFD_RELOC_FRV_TLSMOFFLO:               howto manager.      (line  456)
* BFD_RELOC_FRV_TLSOFF:                  howto manager.      (line  460)
* BFD_RELOC_FRV_TLSOFF_RELAX:            howto manager.      (line  463)
* BFD_RELOC_GPREL16:                     howto manager.      (line  114)
* BFD_RELOC_GPREL32:                     howto manager.      (line  115)
* BFD_RELOC_H8_DIR16A8:                  howto manager.      (line 2221)
* BFD_RELOC_H8_DIR16R8:                  howto manager.      (line 2222)
* BFD_RELOC_H8_DIR24A8:                  howto manager.      (line 2223)
* BFD_RELOC_H8_DIR24R8:                  howto manager.      (line 2224)
* BFD_RELOC_H8_DIR32A16:                 howto manager.      (line 2225)
* BFD_RELOC_H8_DISP32A16:                howto manager.      (line 2226)
* BFD_RELOC_HI16:                        howto manager.      (line  316)
* BFD_RELOC_HI16_BASEREL:                howto manager.      (line   94)
* BFD_RELOC_HI16_GOTOFF:                 howto manager.      (line   53)
* BFD_RELOC_HI16_PCREL:                  howto manager.      (line  325)
* BFD_RELOC_HI16_PLTOFF:                 howto manager.      (line   65)
* BFD_RELOC_HI16_S:                      howto manager.      (line  318)
* BFD_RELOC_HI16_S_BASEREL:              howto manager.      (line   95)
* BFD_RELOC_HI16_S_GOTOFF:               howto manager.      (line   54)
* BFD_RELOC_HI16_S_PCREL:                howto manager.      (line  327)
* BFD_RELOC_HI16_S_PLTOFF:               howto manager.      (line   66)
* BFD_RELOC_HI22:                        howto manager.      (line  110)
* BFD_RELOC_I370_D12:                    howto manager.      (line  707)
* BFD_RELOC_I960_CALLJ:                  howto manager.      (line  120)
* BFD_RELOC_IA64_COPY:                   howto manager.      (line 1924)
* BFD_RELOC_IA64_DIR32LSB:               howto manager.      (line 1869)
* BFD_RELOC_IA64_DIR32MSB:               howto manager.      (line 1868)
* BFD_RELOC_IA64_DIR64LSB:               howto manager.      (line 1871)
* BFD_RELOC_IA64_DIR64MSB:               howto manager.      (line 1870)
* BFD_RELOC_IA64_DTPMOD64LSB:            howto manager.      (line 1934)
* BFD_RELOC_IA64_DTPMOD64MSB:            howto manager.      (line 1933)
* BFD_RELOC_IA64_DTPREL14:               howto manager.      (line 1936)
* BFD_RELOC_IA64_DTPREL22:               howto manager.      (line 1937)
* BFD_RELOC_IA64_DTPREL32LSB:            howto manager.      (line 1940)
* BFD_RELOC_IA64_DTPREL32MSB:            howto manager.      (line 1939)
* BFD_RELOC_IA64_DTPREL64I:              howto manager.      (line 1938)
* BFD_RELOC_IA64_DTPREL64LSB:            howto manager.      (line 1942)
* BFD_RELOC_IA64_DTPREL64MSB:            howto manager.      (line 1941)
* BFD_RELOC_IA64_FPTR32LSB:              howto manager.      (line 1886)
* BFD_RELOC_IA64_FPTR32MSB:              howto manager.      (line 1885)
* BFD_RELOC_IA64_FPTR64I:                howto manager.      (line 1884)
* BFD_RELOC_IA64_FPTR64LSB:              howto manager.      (line 1888)
* BFD_RELOC_IA64_FPTR64MSB:              howto manager.      (line 1887)
* BFD_RELOC_IA64_GPREL22:                howto manager.      (line 1872)
* BFD_RELOC_IA64_GPREL32LSB:             howto manager.      (line 1875)
* BFD_RELOC_IA64_GPREL32MSB:             howto manager.      (line 1874)
* BFD_RELOC_IA64_GPREL64I:               howto manager.      (line 1873)
* BFD_RELOC_IA64_GPREL64LSB:             howto manager.      (line 1877)
* BFD_RELOC_IA64_GPREL64MSB:             howto manager.      (line 1876)
* BFD_RELOC_IA64_IMM14:                  howto manager.      (line 1865)
* BFD_RELOC_IA64_IMM22:                  howto manager.      (line 1866)
* BFD_RELOC_IA64_IMM64:                  howto manager.      (line 1867)
* BFD_RELOC_IA64_IPLTLSB:                howto manager.      (line 1923)
* BFD_RELOC_IA64_IPLTMSB:                howto manager.      (line 1922)
* BFD_RELOC_IA64_LDXMOV:                 howto manager.      (line 1926)
* BFD_RELOC_IA64_LTOFF22:                howto manager.      (line 1878)
* BFD_RELOC_IA64_LTOFF22X:               howto manager.      (line 1925)
* BFD_RELOC_IA64_LTOFF64I:               howto manager.      (line 1879)
* BFD_RELOC_IA64_LTOFF_DTPMOD22:         howto manager.      (line 1935)
* BFD_RELOC_IA64_LTOFF_DTPREL22:         howto manager.      (line 1943)
* BFD_RELOC_IA64_LTOFF_FPTR22:           howto manager.      (line 1900)
* BFD_RELOC_IA64_LTOFF_FPTR32LSB:        howto manager.      (line 1903)
* BFD_RELOC_IA64_LTOFF_FPTR32MSB:        howto manager.      (line 1902)
* BFD_RELOC_IA64_LTOFF_FPTR64I:          howto manager.      (line 1901)
* BFD_RELOC_IA64_LTOFF_FPTR64LSB:        howto manager.      (line 1905)
* BFD_RELOC_IA64_LTOFF_FPTR64MSB:        howto manager.      (line 1904)
* BFD_RELOC_IA64_LTOFF_TPREL22:          howto manager.      (line 1932)
* BFD_RELOC_IA64_LTV32LSB:               howto manager.      (line 1919)
* BFD_RELOC_IA64_LTV32MSB:               howto manager.      (line 1918)
* BFD_RELOC_IA64_LTV64LSB:               howto manager.      (line 1921)
* BFD_RELOC_IA64_LTV64MSB:               howto manager.      (line 1920)
* BFD_RELOC_IA64_PCREL21B:               howto manager.      (line 1889)
* BFD_RELOC_IA64_PCREL21BI:              howto manager.      (line 1890)
* BFD_RELOC_IA64_PCREL21F:               howto manager.      (line 1892)
* BFD_RELOC_IA64_PCREL21M:               howto manager.      (line 1891)
* BFD_RELOC_IA64_PCREL22:                howto manager.      (line 1893)
* BFD_RELOC_IA64_PCREL32LSB:             howto manager.      (line 1897)
* BFD_RELOC_IA64_PCREL32MSB:             howto manager.      (line 1896)
* BFD_RELOC_IA64_PCREL60B:               howto manager.      (line 1894)
* BFD_RELOC_IA64_PCREL64I:               howto manager.      (line 1895)
* BFD_RELOC_IA64_PCREL64LSB:             howto manager.      (line 1899)
* BFD_RELOC_IA64_PCREL64MSB:             howto manager.      (line 1898)
* BFD_RELOC_IA64_PLTOFF22:               howto manager.      (line 1880)
* BFD_RELOC_IA64_PLTOFF64I:              howto manager.      (line 1881)
* BFD_RELOC_IA64_PLTOFF64LSB:            howto manager.      (line 1883)
* BFD_RELOC_IA64_PLTOFF64MSB:            howto manager.      (line 1882)
* BFD_RELOC_IA64_REL32LSB:               howto manager.      (line 1915)
* BFD_RELOC_IA64_REL32MSB:               howto manager.      (line 1914)
* BFD_RELOC_IA64_REL64LSB:               howto manager.      (line 1917)
* BFD_RELOC_IA64_REL64MSB:               howto manager.      (line 1916)
* BFD_RELOC_IA64_SECREL32LSB:            howto manager.      (line 1911)
* BFD_RELOC_IA64_SECREL32MSB:            howto manager.      (line 1910)
* BFD_RELOC_IA64_SECREL64LSB:            howto manager.      (line 1913)
* BFD_RELOC_IA64_SECREL64MSB:            howto manager.      (line 1912)
* BFD_RELOC_IA64_SEGREL32LSB:            howto manager.      (line 1907)
* BFD_RELOC_IA64_SEGREL32MSB:            howto manager.      (line 1906)
* BFD_RELOC_IA64_SEGREL64LSB:            howto manager.      (line 1909)
* BFD_RELOC_IA64_SEGREL64MSB:            howto manager.      (line 1908)
* BFD_RELOC_IA64_TPREL14:                howto manager.      (line 1927)
* BFD_RELOC_IA64_TPREL22:                howto manager.      (line 1928)
* BFD_RELOC_IA64_TPREL64I:               howto manager.      (line 1929)
* BFD_RELOC_IA64_TPREL64LSB:             howto manager.      (line 1931)
* BFD_RELOC_IA64_TPREL64MSB:             howto manager.      (line 1930)
* BFD_RELOC_IP2K_ADDR16CJP:              howto manager.      (line 1826)
* BFD_RELOC_IP2K_BANK:                   howto manager.      (line 1824)
* BFD_RELOC_IP2K_EX8DATA:                howto manager.      (line 1832)
* BFD_RELOC_IP2K_FR9:                    howto manager.      (line 1822)
* BFD_RELOC_IP2K_FR_OFFSET:              howto manager.      (line 1841)
* BFD_RELOC_IP2K_HI8DATA:                howto manager.      (line 1831)
* BFD_RELOC_IP2K_HI8INSN:                howto manager.      (line 1835)
* BFD_RELOC_IP2K_LO8DATA:                howto manager.      (line 1830)
* BFD_RELOC_IP2K_LO8INSN:                howto manager.      (line 1834)
* BFD_RELOC_IP2K_PAGE3:                  howto manager.      (line 1828)
* BFD_RELOC_IP2K_PC_SKIP:                howto manager.      (line 1837)
* BFD_RELOC_IP2K_TEXT:                   howto manager.      (line 1839)
* BFD_RELOC_IQ2000_OFFSET_16:            howto manager.      (line 2319)
* BFD_RELOC_IQ2000_OFFSET_21:            howto manager.      (line 2320)
* BFD_RELOC_IQ2000_UHI16:                howto manager.      (line 2321)
* BFD_RELOC_LM32_16_GOT:                 howto manager.      (line 2411)
* BFD_RELOC_LM32_BRANCH:                 howto manager.      (line 2410)
* BFD_RELOC_LM32_CALL:                   howto manager.      (line 2409)
* BFD_RELOC_LM32_COPY:                   howto manager.      (line 2414)
* BFD_RELOC_LM32_GLOB_DAT:               howto manager.      (line 2415)
* BFD_RELOC_LM32_GOTOFF_HI16:            howto manager.      (line 2412)
* BFD_RELOC_LM32_GOTOFF_LO16:            howto manager.      (line 2413)
* BFD_RELOC_LM32_JMP_SLOT:               howto manager.      (line 2416)
* BFD_RELOC_LM32_RELATIVE:               howto manager.      (line 2417)
* BFD_RELOC_LO10:                        howto manager.      (line  111)
* BFD_RELOC_LO16:                        howto manager.      (line  323)
* BFD_RELOC_LO16_BASEREL:                howto manager.      (line   93)
* BFD_RELOC_LO16_GOTOFF:                 howto manager.      (line   52)
* BFD_RELOC_LO16_PCREL:                  howto manager.      (line  329)
* BFD_RELOC_LO16_PLTOFF:                 howto manager.      (line   64)
* BFD_RELOC_M32C_HI8:                    howto manager.      (line 1092)
* BFD_RELOC_M32C_RL_1ADDR:               howto manager.      (line 1094)
* BFD_RELOC_M32C_RL_2ADDR:               howto manager.      (line 1095)
* BFD_RELOC_M32C_RL_JUMP:                howto manager.      (line 1093)
* BFD_RELOC_M32R_10_PCREL:               howto manager.      (line 1100)
* BFD_RELOC_M32R_18_PCREL:               howto manager.      (line 1103)
* BFD_RELOC_M32R_24:                     howto manager.      (line 1097)
* BFD_RELOC_M32R_26_PCREL:               howto manager.      (line 1105)
* BFD_RELOC_M32R_26_PLTREL:              howto manager.      (line 1119)
* BFD_RELOC_M32R_COPY:                   howto manager.      (line 1120)
* BFD_RELOC_M32R_GLOB_DAT:               howto manager.      (line 1121)
* BFD_RELOC_M32R_GOT16_HI_SLO:           howto manager.      (line 1130)
* BFD_RELOC_M32R_GOT16_HI_ULO:           howto manager.      (line 1129)
* BFD_RELOC_M32R_GOT16_LO:               howto manager.      (line 1131)
* BFD_RELOC_M32R_GOT24:                  howto manager.      (line 1118)
* BFD_RELOC_M32R_GOTOFF:                 howto manager.      (line 1124)
* BFD_RELOC_M32R_GOTOFF_HI_SLO:          howto manager.      (line 1126)
* BFD_RELOC_M32R_GOTOFF_HI_ULO:          howto manager.      (line 1125)
* BFD_RELOC_M32R_GOTOFF_LO:              howto manager.      (line 1127)
* BFD_RELOC_M32R_GOTPC24:                howto manager.      (line 1128)
* BFD_RELOC_M32R_GOTPC_HI_SLO:           howto manager.      (line 1133)
* BFD_RELOC_M32R_GOTPC_HI_ULO:           howto manager.      (line 1132)
* BFD_RELOC_M32R_GOTPC_LO:               howto manager.      (line 1134)
* BFD_RELOC_M32R_HI16_SLO:               howto manager.      (line 1110)
* BFD_RELOC_M32R_HI16_ULO:               howto manager.      (line 1107)
* BFD_RELOC_M32R_JMP_SLOT:               howto manager.      (line 1122)
* BFD_RELOC_M32R_LO16:                   howto manager.      (line 1113)
* BFD_RELOC_M32R_RELATIVE:               howto manager.      (line 1123)
* BFD_RELOC_M32R_SDA16:                  howto manager.      (line 1115)
* BFD_RELOC_M68HC11_24:                  howto manager.      (line 1971)
* BFD_RELOC_M68HC11_3B:                  howto manager.      (line 1951)
* BFD_RELOC_M68HC11_HI8:                 howto manager.      (line 1945)
* BFD_RELOC_M68HC11_LO16:                howto manager.      (line 1962)
* BFD_RELOC_M68HC11_LO8:                 howto manager.      (line 1948)
* BFD_RELOC_M68HC11_PAGE:                howto manager.      (line 1967)
* BFD_RELOC_M68HC11_RL_GROUP:            howto manager.      (line 1958)
* BFD_RELOC_M68HC11_RL_JUMP:             howto manager.      (line 1953)
* BFD_RELOC_M68HC12_10_PCREL:            howto manager.      (line 2014)
* BFD_RELOC_M68HC12_16B:                 howto manager.      (line 2010)
* BFD_RELOC_M68HC12_5B:                  howto manager.      (line 1976)
* BFD_RELOC_M68HC12_9B:                  howto manager.      (line 2008)
* BFD_RELOC_M68HC12_9_PCREL:             howto manager.      (line 2012)
* BFD_RELOC_M68HC12_HI8XG:               howto manager.      (line 2019)
* BFD_RELOC_M68HC12_LO8XG:               howto manager.      (line 2016)
* BFD_RELOC_MACH_O_LOCAL_SECTDIFF:       howto manager.      (line 2422)
* BFD_RELOC_MACH_O_PAIR:                 howto manager.      (line 2424)
* BFD_RELOC_MACH_O_SECTDIFF:             howto manager.      (line 2419)
* BFD_RELOC_MACH_O_X86_64_BRANCH32:      howto manager.      (line 2426)
* BFD_RELOC_MACH_O_X86_64_BRANCH8:       howto manager.      (line 2427)
* BFD_RELOC_MACH_O_X86_64_GOT:           howto manager.      (line 2430)
* BFD_RELOC_MACH_O_X86_64_GOT_LOAD:      howto manager.      (line 2432)
* BFD_RELOC_MACH_O_X86_64_PCREL32_1:     howto manager.      (line 2439)
* BFD_RELOC_MACH_O_X86_64_PCREL32_2:     howto manager.      (line 2441)
* BFD_RELOC_MACH_O_X86_64_PCREL32_4:     howto manager.      (line 2443)
* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32:  howto manager.      (line 2435)
* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64:  howto manager.      (line 2437)
* BFD_RELOC_MCORE_PCREL_32:              howto manager.      (line 1448)
* BFD_RELOC_MCORE_PCREL_IMM11BY2:        howto manager.      (line 1446)
* BFD_RELOC_MCORE_PCREL_IMM4BY2:         howto manager.      (line 1447)
* BFD_RELOC_MCORE_PCREL_IMM8BY4:         howto manager.      (line 1445)
* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2:    howto manager.      (line 1449)
* BFD_RELOC_MCORE_RVA:                   howto manager.      (line 1450)
* BFD_RELOC_MEP_16:                      howto manager.      (line 1453)
* BFD_RELOC_MEP_32:                      howto manager.      (line 1454)
* BFD_RELOC_MEP_8:                       howto manager.      (line 1452)
* BFD_RELOC_MEP_ADDR24A4:                howto manager.      (line 1469)
* BFD_RELOC_MEP_GNU_VTENTRY:             howto manager.      (line 1471)
* BFD_RELOC_MEP_GNU_VTINHERIT:           howto manager.      (line 1470)
* BFD_RELOC_MEP_GPREL:                   howto manager.      (line 1463)
* BFD_RELOC_MEP_HI16S:                   howto manager.      (line 1462)
* BFD_RELOC_MEP_HI16U:                   howto manager.      (line 1461)
* BFD_RELOC_MEP_LOW16:                   howto manager.      (line 1460)
* BFD_RELOC_MEP_PCABS24A2:               howto manager.      (line 1459)
* BFD_RELOC_MEP_PCREL12A2:               howto manager.      (line 1456)
* BFD_RELOC_MEP_PCREL17A2:               howto manager.      (line 1457)
* BFD_RELOC_MEP_PCREL24A2:               howto manager.      (line 1458)
* BFD_RELOC_MEP_PCREL8A2:                howto manager.      (line 1455)
* BFD_RELOC_MEP_TPREL:                   howto manager.      (line 1464)
* BFD_RELOC_MEP_TPREL7:                  howto manager.      (line 1465)
* BFD_RELOC_MEP_TPREL7A2:                howto manager.      (line 1466)
* BFD_RELOC_MEP_TPREL7A4:                howto manager.      (line 1467)
* BFD_RELOC_MEP_UIMM24:                  howto manager.      (line 1468)
* BFD_RELOC_METAG_COPY:                  howto manager.      (line 1492)
* BFD_RELOC_METAG_GETSETOFF:             howto manager.      (line 1476)
* BFD_RELOC_METAG_GETSET_GOT:            howto manager.      (line 1484)
* BFD_RELOC_METAG_GETSET_GOTOFF:         howto manager.      (line 1483)
* BFD_RELOC_METAG_GLOB_DAT:              howto manager.      (line 1495)
* BFD_RELOC_METAG_GOTOFF:                howto manager.      (line 1490)
* BFD_RELOC_METAG_HI16_GOTOFF:           howto manager.      (line 1481)
* BFD_RELOC_METAG_HI16_GOTPC:            howto manager.      (line 1485)
* BFD_RELOC_METAG_HI16_PLT:              howto manager.      (line 1487)
* BFD_RELOC_METAG_HIADDR16:              howto manager.      (line 1473)
* BFD_RELOC_METAG_HIOG:                  howto manager.      (line 1477)
* BFD_RELOC_METAG_JMP_SLOT:              howto manager.      (line 1493)
* BFD_RELOC_METAG_LO16_GOTOFF:           howto manager.      (line 1482)
* BFD_RELOC_METAG_LO16_GOTPC:            howto manager.      (line 1486)
* BFD_RELOC_METAG_LO16_PLT:              howto manager.      (line 1488)
* BFD_RELOC_METAG_LOADDR16:              howto manager.      (line 1474)
* BFD_RELOC_METAG_LOOG:                  howto manager.      (line 1478)
* BFD_RELOC_METAG_PLT:                   howto manager.      (line 1491)
* BFD_RELOC_METAG_REL16:                 howto manager.      (line 1480)
* BFD_RELOC_METAG_REL8:                  howto manager.      (line 1479)
* BFD_RELOC_METAG_RELATIVE:              howto manager.      (line 1494)
* BFD_RELOC_METAG_RELBRANCH:             howto manager.      (line 1475)
* BFD_RELOC_METAG_RELBRANCH_PLT:         howto manager.      (line 1489)
* BFD_RELOC_METAG_TLS_DTPMOD:            howto manager.      (line 1506)
* BFD_RELOC_METAG_TLS_DTPOFF:            howto manager.      (line 1507)
* BFD_RELOC_METAG_TLS_GD:                howto manager.      (line 1496)
* BFD_RELOC_METAG_TLS_IE:                howto manager.      (line 1501)
* BFD_RELOC_METAG_TLS_IENONPIC:          howto manager.      (line 1502)
* BFD_RELOC_METAG_TLS_IENONPIC_HI16:     howto manager.      (line 1503)
* BFD_RELOC_METAG_TLS_IENONPIC_LO16:     howto manager.      (line 1504)
* BFD_RELOC_METAG_TLS_LDM:               howto manager.      (line 1497)
* BFD_RELOC_METAG_TLS_LDO:               howto manager.      (line 1500)
* BFD_RELOC_METAG_TLS_LDO_HI16:          howto manager.      (line 1498)
* BFD_RELOC_METAG_TLS_LDO_LO16:          howto manager.      (line 1499)
* BFD_RELOC_METAG_TLS_LE:                howto manager.      (line 1508)
* BFD_RELOC_METAG_TLS_LE_HI16:           howto manager.      (line 1509)
* BFD_RELOC_METAG_TLS_LE_LO16:           howto manager.      (line 1510)
* BFD_RELOC_METAG_TLS_TPOFF:             howto manager.      (line 1505)
* BFD_RELOC_MICROBLAZE_32_GOTOFF:        howto manager.      (line 2479)
* BFD_RELOC_MICROBLAZE_32_LO:            howto manager.      (line 2445)
* BFD_RELOC_MICROBLAZE_32_LO_PCREL:      howto manager.      (line 2448)
* BFD_RELOC_MICROBLAZE_32_ROSDA:         howto manager.      (line 2451)
* BFD_RELOC_MICROBLAZE_32_RWSDA:         howto manager.      (line 2454)
* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM:    howto manager.      (line 2457)
* BFD_RELOC_MICROBLAZE_32_TLSDTPMOD:     howto manager.      (line 2495)
* BFD_RELOC_MICROBLAZE_32_TLSDTPREL:     howto manager.      (line 2497)
* BFD_RELOC_MICROBLAZE_64_GOT:           howto manager.      (line 2468)
* BFD_RELOC_MICROBLAZE_64_GOTOFF:        howto manager.      (line 2475)
* BFD_RELOC_MICROBLAZE_64_GOTPC:         howto manager.      (line 2464)
* BFD_RELOC_MICROBLAZE_64_NONE:          howto manager.      (line 2460)
* BFD_RELOC_MICROBLAZE_64_PLT:           howto manager.      (line 2471)
* BFD_RELOC_MICROBLAZE_64_TLS:           howto manager.      (line 2485)
* BFD_RELOC_MICROBLAZE_64_TLSDTPREL:     howto manager.      (line 2499)
* BFD_RELOC_MICROBLAZE_64_TLSGD:         howto manager.      (line 2487)
* BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL:   howto manager.      (line 2502)
* BFD_RELOC_MICROBLAZE_64_TLSLD:         howto manager.      (line 2491)
* BFD_RELOC_MICROBLAZE_64_TLSTPREL:      howto manager.      (line 2505)
* BFD_RELOC_MICROBLAZE_COPY:             howto manager.      (line 2482)
* BFD_RELOC_MICROMIPS_10_PCREL_S1:       howto manager.      (line  356)
* BFD_RELOC_MICROMIPS_16_PCREL_S1:       howto manager.      (line  357)
* BFD_RELOC_MICROMIPS_7_PCREL_S1:        howto manager.      (line  355)
* BFD_RELOC_MICROMIPS_CALL16:            howto manager.      (line  367)
* BFD_RELOC_MICROMIPS_CALL_HI16:         howto manager.      (line  373)
* BFD_RELOC_MICROMIPS_CALL_LO16:         howto manager.      (line  375)
* BFD_RELOC_MICROMIPS_GOT16:             howto manager.      (line  365)
* BFD_RELOC_MICROMIPS_GOT_DISP:          howto manager.      (line  383)
* BFD_RELOC_MICROMIPS_GOT_HI16:          howto manager.      (line  369)
* BFD_RELOC_MICROMIPS_GOT_LO16:          howto manager.      (line  371)
* BFD_RELOC_MICROMIPS_GOT_OFST:          howto manager.      (line  381)
* BFD_RELOC_MICROMIPS_GOT_PAGE:          howto manager.      (line  379)
* BFD_RELOC_MICROMIPS_GPREL16:           howto manager.      (line  359)
* BFD_RELOC_MICROMIPS_HI16:              howto manager.      (line  360)
* BFD_RELOC_MICROMIPS_HI16_S:            howto manager.      (line  361)
* BFD_RELOC_MICROMIPS_HIGHER:            howto manager.      (line  392)
* BFD_RELOC_MICROMIPS_HIGHEST:           howto manager.      (line  390)
* BFD_RELOC_MICROMIPS_JALR:              howto manager.      (line  398)
* BFD_RELOC_MICROMIPS_JMP:               howto manager.      (line  310)
* BFD_RELOC_MICROMIPS_LITERAL:           howto manager.      (line  353)
* BFD_RELOC_MICROMIPS_LO16:              howto manager.      (line  362)
* BFD_RELOC_MICROMIPS_SCN_DISP:          howto manager.      (line  394)
* BFD_RELOC_MICROMIPS_SUB:               howto manager.      (line  377)
* BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16:   howto manager.      (line  408)
* BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16:   howto manager.      (line  410)
* BFD_RELOC_MICROMIPS_TLS_GD:            howto manager.      (line  404)
* BFD_RELOC_MICROMIPS_TLS_GOTTPREL:      howto manager.      (line  412)
* BFD_RELOC_MICROMIPS_TLS_LDM:           howto manager.      (line  406)
* BFD_RELOC_MICROMIPS_TLS_TPREL_HI16:    howto manager.      (line  416)
* BFD_RELOC_MICROMIPS_TLS_TPREL_LO16:    howto manager.      (line  418)
* BFD_RELOC_MIPS16_CALL16:               howto manager.      (line  332)
* BFD_RELOC_MIPS16_GOT16:                howto manager.      (line  331)
* BFD_RELOC_MIPS16_GPREL:                howto manager.      (line  314)
* BFD_RELOC_MIPS16_HI16:                 howto manager.      (line  335)
* BFD_RELOC_MIPS16_HI16_S:               howto manager.      (line  337)
* BFD_RELOC_MIPS16_JMP:                  howto manager.      (line  312)
* BFD_RELOC_MIPS16_LO16:                 howto manager.      (line  342)
* BFD_RELOC_MIPS16_TLS_DTPREL_HI16:      howto manager.      (line  346)
* BFD_RELOC_MIPS16_TLS_DTPREL_LO16:      howto manager.      (line  347)
* BFD_RELOC_MIPS16_TLS_GD:               howto manager.      (line  344)
* BFD_RELOC_MIPS16_TLS_GOTTPREL:         howto manager.      (line  348)
* BFD_RELOC_MIPS16_TLS_LDM:              howto manager.      (line  345)
* BFD_RELOC_MIPS16_TLS_TPREL_HI16:       howto manager.      (line  349)
* BFD_RELOC_MIPS16_TLS_TPREL_LO16:       howto manager.      (line  350)
* BFD_RELOC_MIPS_CALL16:                 howto manager.      (line  366)
* BFD_RELOC_MIPS_CALL_HI16:              howto manager.      (line  372)
* BFD_RELOC_MIPS_CALL_LO16:              howto manager.      (line  374)
* BFD_RELOC_MIPS_COPY:                   howto manager.      (line  421)
* BFD_RELOC_MIPS_DELETE:                 howto manager.      (line  388)
* BFD_RELOC_MIPS_EH:                     howto manager.      (line  419)
* BFD_RELOC_MIPS_GOT16:                  howto manager.      (line  364)
* BFD_RELOC_MIPS_GOT_DISP:               howto manager.      (line  382)
* BFD_RELOC_MIPS_GOT_HI16:               howto manager.      (line  368)
* BFD_RELOC_MIPS_GOT_LO16:               howto manager.      (line  370)
* BFD_RELOC_MIPS_GOT_OFST:               howto manager.      (line  380)
* BFD_RELOC_MIPS_GOT_PAGE:               howto manager.      (line  378)
* BFD_RELOC_MIPS_HIGHER:                 howto manager.      (line  391)
* BFD_RELOC_MIPS_HIGHEST:                howto manager.      (line  389)
* BFD_RELOC_MIPS_INSERT_A:               howto manager.      (line  386)
* BFD_RELOC_MIPS_INSERT_B:               howto manager.      (line  387)
* BFD_RELOC_MIPS_JALR:                   howto manager.      (line  397)
* BFD_RELOC_MIPS_JMP:                    howto manager.      (line  309)
* BFD_RELOC_MIPS_JUMP_SLOT:              howto manager.      (line  422)
* BFD_RELOC_MIPS_LITERAL:                howto manager.      (line  352)
* BFD_RELOC_MIPS_REL16:                  howto manager.      (line  395)
* BFD_RELOC_MIPS_RELGOT:                 howto manager.      (line  396)
* BFD_RELOC_MIPS_SCN_DISP:               howto manager.      (line  393)
* BFD_RELOC_MIPS_SHIFT5:                 howto manager.      (line  384)
* BFD_RELOC_MIPS_SHIFT6:                 howto manager.      (line  385)
* BFD_RELOC_MIPS_SUB:                    howto manager.      (line  376)
* BFD_RELOC_MIPS_TLS_DTPMOD32:           howto manager.      (line  399)
* BFD_RELOC_MIPS_TLS_DTPMOD64:           howto manager.      (line  401)
* BFD_RELOC_MIPS_TLS_DTPREL32:           howto manager.      (line  400)
* BFD_RELOC_MIPS_TLS_DTPREL64:           howto manager.      (line  402)
* BFD_RELOC_MIPS_TLS_DTPREL_HI16:        howto manager.      (line  407)
* BFD_RELOC_MIPS_TLS_DTPREL_LO16:        howto manager.      (line  409)
* BFD_RELOC_MIPS_TLS_GD:                 howto manager.      (line  403)
* BFD_RELOC_MIPS_TLS_GOTTPREL:           howto manager.      (line  411)
* BFD_RELOC_MIPS_TLS_LDM:                howto manager.      (line  405)
* BFD_RELOC_MIPS_TLS_TPREL32:            howto manager.      (line  413)
* BFD_RELOC_MIPS_TLS_TPREL64:            howto manager.      (line  414)
* BFD_RELOC_MIPS_TLS_TPREL_HI16:         howto manager.      (line  415)
* BFD_RELOC_MIPS_TLS_TPREL_LO16:         howto manager.      (line  417)
* BFD_RELOC_MMIX_ADDR19:                 howto manager.      (line 1534)
* BFD_RELOC_MMIX_ADDR27:                 howto manager.      (line 1537)
* BFD_RELOC_MMIX_BASE_PLUS_OFFSET:       howto manager.      (line 1546)
* BFD_RELOC_MMIX_CBRANCH:                howto manager.      (line 1517)
* BFD_RELOC_MMIX_CBRANCH_1:              howto manager.      (line 1519)
* BFD_RELOC_MMIX_CBRANCH_2:              howto manager.      (line 1520)
* BFD_RELOC_MMIX_CBRANCH_3:              howto manager.      (line 1521)
* BFD_RELOC_MMIX_CBRANCH_J:              howto manager.      (line 1518)
* BFD_RELOC_MMIX_GETA:                   howto manager.      (line 1512)
* BFD_RELOC_MMIX_GETA_1:                 howto manager.      (line 1513)
* BFD_RELOC_MMIX_GETA_2:                 howto manager.      (line 1514)
* BFD_RELOC_MMIX_GETA_3:                 howto manager.      (line 1515)
* BFD_RELOC_MMIX_JMP:                    howto manager.      (line 1529)
* BFD_RELOC_MMIX_JMP_1:                  howto manager.      (line 1530)
* BFD_RELOC_MMIX_JMP_2:                  howto manager.      (line 1531)
* BFD_RELOC_MMIX_JMP_3:                  howto manager.      (line 1532)
* BFD_RELOC_MMIX_LOCAL:                  howto manager.      (line 1549)
* BFD_RELOC_MMIX_PUSHJ:                  howto manager.      (line 1523)
* BFD_RELOC_MMIX_PUSHJ_1:                howto manager.      (line 1524)
* BFD_RELOC_MMIX_PUSHJ_2:                howto manager.      (line 1525)
* BFD_RELOC_MMIX_PUSHJ_3:                howto manager.      (line 1526)
* BFD_RELOC_MMIX_PUSHJ_STUBBABLE:        howto manager.      (line 1527)
* BFD_RELOC_MMIX_REG:                    howto manager.      (line 1543)
* BFD_RELOC_MMIX_REG_OR_BYTE:            howto manager.      (line 1540)
* BFD_RELOC_MN10300_16_PCREL:            howto manager.      (line  505)
* BFD_RELOC_MN10300_32_PCREL:            howto manager.      (line  502)
* BFD_RELOC_MN10300_ALIGN:               howto manager.      (line  489)
* BFD_RELOC_MN10300_COPY:                howto manager.      (line  477)
* BFD_RELOC_MN10300_GLOB_DAT:            howto manager.      (line  479)
* BFD_RELOC_MN10300_GOT16:               howto manager.      (line  474)
* BFD_RELOC_MN10300_GOT24:               howto manager.      (line  471)
* BFD_RELOC_MN10300_GOT32:               howto manager.      (line  468)
* BFD_RELOC_MN10300_GOTOFF24:            howto manager.      (line  466)
* BFD_RELOC_MN10300_JMP_SLOT:            howto manager.      (line  481)
* BFD_RELOC_MN10300_RELATIVE:            howto manager.      (line  483)
* BFD_RELOC_MN10300_SYM_DIFF:            howto manager.      (line  485)
* BFD_RELOC_MN10300_TLS_DTPMOD:          howto manager.      (line  498)
* BFD_RELOC_MN10300_TLS_DTPOFF:          howto manager.      (line  499)
* BFD_RELOC_MN10300_TLS_GD:              howto manager.      (line  492)
* BFD_RELOC_MN10300_TLS_GOTIE:           howto manager.      (line  495)
* BFD_RELOC_MN10300_TLS_IE:              howto manager.      (line  496)
* BFD_RELOC_MN10300_TLS_LD:              howto manager.      (line  493)
* BFD_RELOC_MN10300_TLS_LDO:             howto manager.      (line  494)
* BFD_RELOC_MN10300_TLS_LE:              howto manager.      (line  497)
* BFD_RELOC_MN10300_TLS_TPOFF:           howto manager.      (line  500)
* BFD_RELOC_MOXIE_10_PCREL:              howto manager.      (line  424)
* BFD_RELOC_MSP430X_ABS16:               howto manager.      (line 2274)
* BFD_RELOC_MSP430X_ABS20_ADR_DST:       howto manager.      (line 2271)
* BFD_RELOC_MSP430X_ABS20_ADR_SRC:       howto manager.      (line 2270)
* BFD_RELOC_MSP430X_ABS20_EXT_DST:       howto manager.      (line 2268)
* BFD_RELOC_MSP430X_ABS20_EXT_ODST:      howto manager.      (line 2269)
* BFD_RELOC_MSP430X_ABS20_EXT_SRC:       howto manager.      (line 2267)
* BFD_RELOC_MSP430X_PCR16:               howto manager.      (line 2272)
* BFD_RELOC_MSP430X_PCR20_CALL:          howto manager.      (line 2273)
* BFD_RELOC_MSP430X_PCR20_EXT_DST:       howto manager.      (line 2265)
* BFD_RELOC_MSP430X_PCR20_EXT_ODST:      howto manager.      (line 2266)
* BFD_RELOC_MSP430X_PCR20_EXT_SRC:       howto manager.      (line 2264)
* BFD_RELOC_MSP430_10_PCREL:             howto manager.      (line 2256)
* BFD_RELOC_MSP430_16:                   howto manager.      (line 2258)
* BFD_RELOC_MSP430_16_BYTE:              howto manager.      (line 2260)
* BFD_RELOC_MSP430_16_PCREL:             howto manager.      (line 2257)
* BFD_RELOC_MSP430_16_PCREL_BYTE:        howto manager.      (line 2259)
* BFD_RELOC_MSP430_2X_PCREL:             howto manager.      (line 2261)
* BFD_RELOC_MSP430_ABS8:                 howto manager.      (line 2263)
* BFD_RELOC_MSP430_ABS_HI16:             howto manager.      (line 2275)
* BFD_RELOC_MSP430_PREL31:               howto manager.      (line 2276)
* BFD_RELOC_MSP430_RL_PCREL:             howto manager.      (line 2262)
* BFD_RELOC_MSP430_SYM_DIFF:             howto manager.      (line 2277)
* BFD_RELOC_MT_GNU_VTENTRY:              howto manager.      (line 2252)
* BFD_RELOC_MT_GNU_VTINHERIT:            howto manager.      (line 2250)
* BFD_RELOC_MT_HI16:                     howto manager.      (line 2246)
* BFD_RELOC_MT_LO16:                     howto manager.      (line 2248)
* BFD_RELOC_MT_PC16:                     howto manager.      (line 2244)
* BFD_RELOC_MT_PCINSN8:                  howto manager.      (line 2254)
* BFD_RELOC_NDS32_10IFCU_PCREL:          howto manager.      (line 1276)
* BFD_RELOC_NDS32_10_UPCREL:             howto manager.      (line 1250)
* BFD_RELOC_NDS32_15_FIXED:              howto manager.      (line 1218)
* BFD_RELOC_NDS32_15_PCREL:              howto manager.      (line 1144)
* BFD_RELOC_NDS32_17IFC_PCREL:           howto manager.      (line 1275)
* BFD_RELOC_NDS32_17_FIXED:              howto manager.      (line 1219)
* BFD_RELOC_NDS32_17_PCREL:              howto manager.      (line 1146)
* BFD_RELOC_NDS32_20:                    howto manager.      (line 1136)
* BFD_RELOC_NDS32_25_ABS:                howto manager.      (line 1272)
* BFD_RELOC_NDS32_25_FIXED:              howto manager.      (line 1220)
* BFD_RELOC_NDS32_25_PCREL:              howto manager.      (line 1148)
* BFD_RELOC_NDS32_25_PLTREL:             howto manager.      (line 1194)
* BFD_RELOC_NDS32_5:                     howto manager.      (line 1248)
* BFD_RELOC_NDS32_9_FIXED:               howto manager.      (line 1217)
* BFD_RELOC_NDS32_9_PCREL:               howto manager.      (line 1138)
* BFD_RELOC_NDS32_9_PLTREL:              howto manager.      (line 1193)
* BFD_RELOC_NDS32_COPY:                  howto manager.      (line 1195)
* BFD_RELOC_NDS32_DATA:                  howto manager.      (line 1273)
* BFD_RELOC_NDS32_DIFF16:                howto manager.      (line 1269)
* BFD_RELOC_NDS32_DIFF32:                howto manager.      (line 1270)
* BFD_RELOC_NDS32_DIFF8:                 howto manager.      (line 1268)
* BFD_RELOC_NDS32_DIFF_ULEB128:          howto manager.      (line 1271)
* BFD_RELOC_NDS32_DWARF2_LEB:            howto manager.      (line 1234)
* BFD_RELOC_NDS32_DWARF2_OP1:            howto manager.      (line 1232)
* BFD_RELOC_NDS32_DWARF2_OP2:            howto manager.      (line 1233)
* BFD_RELOC_NDS32_GLOB_DAT:              howto manager.      (line 1196)
* BFD_RELOC_NDS32_GOT15S2:               howto manager.      (line 1245)
* BFD_RELOC_NDS32_GOT17S2:               howto manager.      (line 1246)
* BFD_RELOC_NDS32_GOT20:                 howto manager.      (line 1192)
* BFD_RELOC_NDS32_GOTOFF:                howto manager.      (line 1199)
* BFD_RELOC_NDS32_GOTOFF_HI20:           howto manager.      (line 1200)
* BFD_RELOC_NDS32_GOTOFF_LO12:           howto manager.      (line 1201)
* BFD_RELOC_NDS32_GOTOFF_LO15:           howto manager.      (line 1243)
* BFD_RELOC_NDS32_GOTOFF_LO19:           howto manager.      (line 1244)
* BFD_RELOC_NDS32_GOTOFF_SUFF:           howto manager.      (line 1257)
* BFD_RELOC_NDS32_GOTPC20:               howto manager.      (line 1202)
* BFD_RELOC_NDS32_GOTPC_HI20:            howto manager.      (line 1205)
* BFD_RELOC_NDS32_GOTPC_LO12:            howto manager.      (line 1206)
* BFD_RELOC_NDS32_GOT_HI20:              howto manager.      (line 1203)
* BFD_RELOC_NDS32_GOT_LO12:              howto manager.      (line 1204)
* BFD_RELOC_NDS32_GOT_LO15:              howto manager.      (line 1241)
* BFD_RELOC_NDS32_GOT_LO19:              howto manager.      (line 1242)
* BFD_RELOC_NDS32_GOT_SUFF:              howto manager.      (line 1256)
* BFD_RELOC_NDS32_HI20:                  howto manager.      (line 1150)
* BFD_RELOC_NDS32_INSN16:                howto manager.      (line 1208)
* BFD_RELOC_NDS32_JMP_SLOT:              howto manager.      (line 1197)
* BFD_RELOC_NDS32_LABEL:                 howto manager.      (line 1209)
* BFD_RELOC_NDS32_LO12S0:                howto manager.      (line 1162)
* BFD_RELOC_NDS32_LO12S0_ORI:            howto manager.      (line 1165)
* BFD_RELOC_NDS32_LO12S1:                howto manager.      (line 1159)
* BFD_RELOC_NDS32_LO12S2:                howto manager.      (line 1156)
* BFD_RELOC_NDS32_LO12S2_DP:             howto manager.      (line 1229)
* BFD_RELOC_NDS32_LO12S2_SP:             howto manager.      (line 1230)
* BFD_RELOC_NDS32_LO12S3:                howto manager.      (line 1153)
* BFD_RELOC_NDS32_LOADSTORE:             howto manager.      (line 1216)
* BFD_RELOC_NDS32_LONGCALL1:             howto manager.      (line 1210)
* BFD_RELOC_NDS32_LONGCALL2:             howto manager.      (line 1211)
* BFD_RELOC_NDS32_LONGCALL3:             howto manager.      (line 1212)
* BFD_RELOC_NDS32_LONGJUMP1:             howto manager.      (line 1213)
* BFD_RELOC_NDS32_LONGJUMP2:             howto manager.      (line 1214)
* BFD_RELOC_NDS32_LONGJUMP3:             howto manager.      (line 1215)
* BFD_RELOC_NDS32_MINUEND:               howto manager.      (line 1266)
* BFD_RELOC_NDS32_MULCALL_SUFF:          howto manager.      (line 1259)
* BFD_RELOC_NDS32_PLTBLOCK:              howto manager.      (line 1263)
* BFD_RELOC_NDS32_PLTREL_HI20:           howto manager.      (line 1222)
* BFD_RELOC_NDS32_PLTREL_LO12:           howto manager.      (line 1223)
* BFD_RELOC_NDS32_PLT_GOTREL_HI20:       howto manager.      (line 1224)
* BFD_RELOC_NDS32_PLT_GOTREL_LO12:       howto manager.      (line 1225)
* BFD_RELOC_NDS32_PLT_GOTREL_LO15:       howto manager.      (line 1239)
* BFD_RELOC_NDS32_PLT_GOTREL_LO19:       howto manager.      (line 1240)
* BFD_RELOC_NDS32_PLT_GOTREL_LO20:       howto manager.      (line 1238)
* BFD_RELOC_NDS32_PLT_GOT_SUFF:          howto manager.      (line 1258)
* BFD_RELOC_NDS32_PTR:                   howto manager.      (line 1260)
* BFD_RELOC_NDS32_PTR_COUNT:             howto manager.      (line 1261)
* BFD_RELOC_NDS32_PTR_RESOLVED:          howto manager.      (line 1262)
* BFD_RELOC_NDS32_RELATIVE:              howto manager.      (line 1198)
* BFD_RELOC_NDS32_RELAX_ENTRY:           howto manager.      (line 1255)
* BFD_RELOC_NDS32_RELAX_REGION_BEGIN:    howto manager.      (line 1264)
* BFD_RELOC_NDS32_RELAX_REGION_END:      howto manager.      (line 1265)
* BFD_RELOC_NDS32_SDA12S2_DP:            howto manager.      (line 1227)
* BFD_RELOC_NDS32_SDA12S2_SP:            howto manager.      (line 1228)
* BFD_RELOC_NDS32_SDA15S0:               howto manager.      (line 1177)
* BFD_RELOC_NDS32_SDA15S1:               howto manager.      (line 1174)
* BFD_RELOC_NDS32_SDA15S2:               howto manager.      (line 1171)
* BFD_RELOC_NDS32_SDA15S3:               howto manager.      (line 1168)
* BFD_RELOC_NDS32_SDA16S3:               howto manager.      (line 1180)
* BFD_RELOC_NDS32_SDA17S2:               howto manager.      (line 1183)
* BFD_RELOC_NDS32_SDA18S1:               howto manager.      (line 1186)
* BFD_RELOC_NDS32_SDA19S0:               howto manager.      (line 1189)
* BFD_RELOC_NDS32_SDA_FP7U2_RELA:        howto manager.      (line 1253)
* BFD_RELOC_NDS32_SUBTRAHEND:            howto manager.      (line 1267)
* BFD_RELOC_NDS32_TRAN:                  howto manager.      (line 1274)
* BFD_RELOC_NDS32_UPDATE_TA:             howto manager.      (line 1236)
* BFD_RELOC_NDS32_WORD_9_PCREL:          howto manager.      (line 1141)
* BFD_RELOC_NIOS2_ALIGN:                 howto manager.      (line 2293)
* BFD_RELOC_NIOS2_CACHE_OPX:             howto manager.      (line 2283)
* BFD_RELOC_NIOS2_CALL16:                howto manager.      (line 2295)
* BFD_RELOC_NIOS2_CALL26:                howto manager.      (line 2281)
* BFD_RELOC_NIOS2_CALL26_NOAT:           howto manager.      (line 2313)
* BFD_RELOC_NIOS2_CALLR:                 howto manager.      (line 2292)
* BFD_RELOC_NIOS2_CALL_HA:               howto manager.      (line 2317)
* BFD_RELOC_NIOS2_CALL_LO:               howto manager.      (line 2316)
* BFD_RELOC_NIOS2_CJMP:                  howto manager.      (line 2291)
* BFD_RELOC_NIOS2_COPY:                  howto manager.      (line 2308)
* BFD_RELOC_NIOS2_GLOB_DAT:              howto manager.      (line 2309)
* BFD_RELOC_NIOS2_GOT16:                 howto manager.      (line 2294)
* BFD_RELOC_NIOS2_GOTOFF:                howto manager.      (line 2312)
* BFD_RELOC_NIOS2_GOTOFF_HA:             howto manager.      (line 2297)
* BFD_RELOC_NIOS2_GOTOFF_LO:             howto manager.      (line 2296)
* BFD_RELOC_NIOS2_GOT_HA:                howto manager.      (line 2315)
* BFD_RELOC_NIOS2_GOT_LO:                howto manager.      (line 2314)
* BFD_RELOC_NIOS2_GPREL:                 howto manager.      (line 2289)
* BFD_RELOC_NIOS2_HI16:                  howto manager.      (line 2286)
* BFD_RELOC_NIOS2_HIADJ16:               howto manager.      (line 2288)
* BFD_RELOC_NIOS2_IMM5:                  howto manager.      (line 2282)
* BFD_RELOC_NIOS2_IMM6:                  howto manager.      (line 2284)
* BFD_RELOC_NIOS2_IMM8:                  howto manager.      (line 2285)
* BFD_RELOC_NIOS2_JUMP_SLOT:             howto manager.      (line 2310)
* BFD_RELOC_NIOS2_LO16:                  howto manager.      (line 2287)
* BFD_RELOC_NIOS2_PCREL_HA:              howto manager.      (line 2299)
* BFD_RELOC_NIOS2_PCREL_LO:              howto manager.      (line 2298)
* BFD_RELOC_NIOS2_RELATIVE:              howto manager.      (line 2311)
* BFD_RELOC_NIOS2_S16:                   howto manager.      (line 2279)
* BFD_RELOC_NIOS2_TLS_DTPMOD:            howto manager.      (line 2305)
* BFD_RELOC_NIOS2_TLS_DTPREL:            howto manager.      (line 2306)
* BFD_RELOC_NIOS2_TLS_GD16:              howto manager.      (line 2300)
* BFD_RELOC_NIOS2_TLS_IE16:              howto manager.      (line 2303)
* BFD_RELOC_NIOS2_TLS_LDM16:             howto manager.      (line 2301)
* BFD_RELOC_NIOS2_TLS_LDO16:             howto manager.      (line 2302)
* BFD_RELOC_NIOS2_TLS_LE16:              howto manager.      (line 2304)
* BFD_RELOC_NIOS2_TLS_TPREL:             howto manager.      (line 2307)
* BFD_RELOC_NIOS2_U16:                   howto manager.      (line 2280)
* BFD_RELOC_NIOS2_UJMP:                  howto manager.      (line 2290)
* BFD_RELOC_NONE:                        howto manager.      (line  122)
* BFD_RELOC_NS32K_DISP_16:               howto manager.      (line  570)
* BFD_RELOC_NS32K_DISP_16_PCREL:         howto manager.      (line  573)
* BFD_RELOC_NS32K_DISP_32:               howto manager.      (line  571)
* BFD_RELOC_NS32K_DISP_32_PCREL:         howto manager.      (line  574)
* BFD_RELOC_NS32K_DISP_8:                howto manager.      (line  569)
* BFD_RELOC_NS32K_DISP_8_PCREL:          howto manager.      (line  572)
* BFD_RELOC_NS32K_IMM_16:                howto manager.      (line  564)
* BFD_RELOC_NS32K_IMM_16_PCREL:          howto manager.      (line  567)
* BFD_RELOC_NS32K_IMM_32:                howto manager.      (line  565)
* BFD_RELOC_NS32K_IMM_32_PCREL:          howto manager.      (line  568)
* BFD_RELOC_NS32K_IMM_8:                 howto manager.      (line  563)
* BFD_RELOC_NS32K_IMM_8_PCREL:           howto manager.      (line  566)
* BFD_RELOC_OR1K_COPY:                   howto manager.      (line 2203)
* BFD_RELOC_OR1K_GLOB_DAT:               howto manager.      (line 2204)
* BFD_RELOC_OR1K_GOT16:                  howto manager.      (line 2199)
* BFD_RELOC_OR1K_GOTOFF_HI16:            howto manager.      (line 2201)
* BFD_RELOC_OR1K_GOTOFF_LO16:            howto manager.      (line 2202)
* BFD_RELOC_OR1K_GOTPC_HI16:             howto manager.      (line 2197)
* BFD_RELOC_OR1K_GOTPC_LO16:             howto manager.      (line 2198)
* BFD_RELOC_OR1K_JMP_SLOT:               howto manager.      (line 2205)
* BFD_RELOC_OR1K_PLT26:                  howto manager.      (line 2200)
* BFD_RELOC_OR1K_RELATIVE:               howto manager.      (line 2206)
* BFD_RELOC_OR1K_REL_26:                 howto manager.      (line 2196)
* BFD_RELOC_OR1K_TLS_DTPMOD:             howto manager.      (line 2219)
* BFD_RELOC_OR1K_TLS_DTPOFF:             howto manager.      (line 2218)
* BFD_RELOC_OR1K_TLS_GD_HI16:            howto manager.      (line 2207)
* BFD_RELOC_OR1K_TLS_GD_LO16:            howto manager.      (line 2208)
* BFD_RELOC_OR1K_TLS_IE_HI16:            howto manager.      (line 2213)
* BFD_RELOC_OR1K_TLS_IE_LO16:            howto manager.      (line 2214)
* BFD_RELOC_OR1K_TLS_LDM_HI16:           howto manager.      (line 2209)
* BFD_RELOC_OR1K_TLS_LDM_LO16:           howto manager.      (line 2210)
* BFD_RELOC_OR1K_TLS_LDO_HI16:           howto manager.      (line 2211)
* BFD_RELOC_OR1K_TLS_LDO_LO16:           howto manager.      (line 2212)
* BFD_RELOC_OR1K_TLS_LE_HI16:            howto manager.      (line 2215)
* BFD_RELOC_OR1K_TLS_LE_LO16:            howto manager.      (line 2216)
* BFD_RELOC_OR1K_TLS_TPOFF:              howto manager.      (line 2217)
* BFD_RELOC_PDP11_DISP_6_PCREL:          howto manager.      (line  577)
* BFD_RELOC_PDP11_DISP_8_PCREL:          howto manager.      (line  576)
* BFD_RELOC_PJ_CODE_DIR16:               howto manager.      (line  581)
* BFD_RELOC_PJ_CODE_DIR32:               howto manager.      (line  582)
* BFD_RELOC_PJ_CODE_HI16:                howto manager.      (line  579)
* BFD_RELOC_PJ_CODE_LO16:                howto manager.      (line  580)
* BFD_RELOC_PJ_CODE_REL16:               howto manager.      (line  583)
* BFD_RELOC_PJ_CODE_REL32:               howto manager.      (line  584)
* BFD_RELOC_PPC64_ADDR16_DS:             howto manager.      (line  645)
* BFD_RELOC_PPC64_ADDR16_HIGH:           howto manager.      (line  656)
* BFD_RELOC_PPC64_ADDR16_HIGHA:          howto manager.      (line  657)
* BFD_RELOC_PPC64_ADDR16_LO_DS:          howto manager.      (line  646)
* BFD_RELOC_PPC64_ADDR64_LOCAL:          howto manager.      (line  658)
* BFD_RELOC_PPC64_DTPREL16_DS:           howto manager.      (line  696)
* BFD_RELOC_PPC64_DTPREL16_HIGH:         howto manager.      (line  704)
* BFD_RELOC_PPC64_DTPREL16_HIGHA:        howto manager.      (line  705)
* BFD_RELOC_PPC64_DTPREL16_HIGHER:       howto manager.      (line  698)
* BFD_RELOC_PPC64_DTPREL16_HIGHERA:      howto manager.      (line  699)
* BFD_RELOC_PPC64_DTPREL16_HIGHEST:      howto manager.      (line  700)
* BFD_RELOC_PPC64_DTPREL16_HIGHESTA:     howto manager.      (line  701)
* BFD_RELOC_PPC64_DTPREL16_LO_DS:        howto manager.      (line  697)
* BFD_RELOC_PPC64_GOT16_DS:              howto manager.      (line  647)
* BFD_RELOC_PPC64_GOT16_LO_DS:           howto manager.      (line  648)
* BFD_RELOC_PPC64_HIGHER:                howto manager.      (line  633)
* BFD_RELOC_PPC64_HIGHER_S:              howto manager.      (line  634)
* BFD_RELOC_PPC64_HIGHEST:               howto manager.      (line  635)
* BFD_RELOC_PPC64_HIGHEST_S:             howto manager.      (line  636)
* BFD_RELOC_PPC64_PLT16_LO_DS:           howto manager.      (line  649)
* BFD_RELOC_PPC64_PLTGOT16:              howto manager.      (line  641)
* BFD_RELOC_PPC64_PLTGOT16_DS:           howto manager.      (line  654)
* BFD_RELOC_PPC64_PLTGOT16_HA:           howto manager.      (line  644)
* BFD_RELOC_PPC64_PLTGOT16_HI:           howto manager.      (line  643)
* BFD_RELOC_PPC64_PLTGOT16_LO:           howto manager.      (line  642)
* BFD_RELOC_PPC64_PLTGOT16_LO_DS:        howto manager.      (line  655)
* BFD_RELOC_PPC64_SECTOFF_DS:            howto manager.      (line  650)
* BFD_RELOC_PPC64_SECTOFF_LO_DS:         howto manager.      (line  651)
* BFD_RELOC_PPC64_TOC:                   howto manager.      (line  640)
* BFD_RELOC_PPC64_TOC16_DS:              howto manager.      (line  652)
* BFD_RELOC_PPC64_TOC16_HA:              howto manager.      (line  639)
* BFD_RELOC_PPC64_TOC16_HI:              howto manager.      (line  638)
* BFD_RELOC_PPC64_TOC16_LO:              howto manager.      (line  637)
* BFD_RELOC_PPC64_TOC16_LO_DS:           howto manager.      (line  653)
* BFD_RELOC_PPC64_TPREL16_DS:            howto manager.      (line  690)
* BFD_RELOC_PPC64_TPREL16_HIGH:          howto manager.      (line  702)
* BFD_RELOC_PPC64_TPREL16_HIGHA:         howto manager.      (line  703)
* BFD_RELOC_PPC64_TPREL16_HIGHER:        howto manager.      (line  692)
* BFD_RELOC_PPC64_TPREL16_HIGHERA:       howto manager.      (line  693)
* BFD_RELOC_PPC64_TPREL16_HIGHEST:       howto manager.      (line  694)
* BFD_RELOC_PPC64_TPREL16_HIGHESTA:      howto manager.      (line  695)
* BFD_RELOC_PPC64_TPREL16_LO_DS:         howto manager.      (line  691)
* BFD_RELOC_PPC_B16:                     howto manager.      (line  589)
* BFD_RELOC_PPC_B16_BRNTAKEN:            howto manager.      (line  591)
* BFD_RELOC_PPC_B16_BRTAKEN:             howto manager.      (line  590)
* BFD_RELOC_PPC_B26:                     howto manager.      (line  586)
* BFD_RELOC_PPC_BA16:                    howto manager.      (line  592)
* BFD_RELOC_PPC_BA16_BRNTAKEN:           howto manager.      (line  594)
* BFD_RELOC_PPC_BA16_BRTAKEN:            howto manager.      (line  593)
* BFD_RELOC_PPC_BA26:                    howto manager.      (line  587)
* BFD_RELOC_PPC_COPY:                    howto manager.      (line  595)
* BFD_RELOC_PPC_DTPMOD:                  howto manager.      (line  663)
* BFD_RELOC_PPC_DTPREL:                  howto manager.      (line  673)
* BFD_RELOC_PPC_DTPREL16:                howto manager.      (line  669)
* BFD_RELOC_PPC_DTPREL16_HA:             howto manager.      (line  672)
* BFD_RELOC_PPC_DTPREL16_HI:             howto manager.      (line  671)
* BFD_RELOC_PPC_DTPREL16_LO:             howto manager.      (line  670)
* BFD_RELOC_PPC_EMB_BIT_FLD:             howto manager.      (line  614)
* BFD_RELOC_PPC_EMB_MRKREF:              howto manager.      (line  609)
* BFD_RELOC_PPC_EMB_NADDR16:             howto manager.      (line  601)
* BFD_RELOC_PPC_EMB_NADDR16_HA:          howto manager.      (line  604)
* BFD_RELOC_PPC_EMB_NADDR16_HI:          howto manager.      (line  603)
* BFD_RELOC_PPC_EMB_NADDR16_LO:          howto manager.      (line  602)
* BFD_RELOC_PPC_EMB_NADDR32:             howto manager.      (line  600)
* BFD_RELOC_PPC_EMB_RELSDA:              howto manager.      (line  615)
* BFD_RELOC_PPC_EMB_RELSEC16:            howto manager.      (line  610)
* BFD_RELOC_PPC_EMB_RELST_HA:            howto manager.      (line  613)
* BFD_RELOC_PPC_EMB_RELST_HI:            howto manager.      (line  612)
* BFD_RELOC_PPC_EMB_RELST_LO:            howto manager.      (line  611)
* BFD_RELOC_PPC_EMB_SDA21:               howto manager.      (line  608)
* BFD_RELOC_PPC_EMB_SDA2I16:             howto manager.      (line  606)
* BFD_RELOC_PPC_EMB_SDA2REL:             howto manager.      (line  607)
* BFD_RELOC_PPC_EMB_SDAI16:              howto manager.      (line  605)
* BFD_RELOC_PPC_GLOB_DAT:                howto manager.      (line  596)
* BFD_RELOC_PPC_GOT_DTPREL16:            howto manager.      (line  686)
* BFD_RELOC_PPC_GOT_DTPREL16_HA:         howto manager.      (line  689)
* BFD_RELOC_PPC_GOT_DTPREL16_HI:         howto manager.      (line  688)
* BFD_RELOC_PPC_GOT_DTPREL16_LO:         howto manager.      (line  687)
* BFD_RELOC_PPC_GOT_TLSGD16:             howto manager.      (line  674)
* BFD_RELOC_PPC_GOT_TLSGD16_HA:          howto manager.      (line  677)
* BFD_RELOC_PPC_GOT_TLSGD16_HI:          howto manager.      (line  676)
* BFD_RELOC_PPC_GOT_TLSGD16_LO:          howto manager.      (line  675)
* BFD_RELOC_PPC_GOT_TLSLD16:             howto manager.      (line  678)
* BFD_RELOC_PPC_GOT_TLSLD16_HA:          howto manager.      (line  681)
* BFD_RELOC_PPC_GOT_TLSLD16_HI:          howto manager.      (line  680)
* BFD_RELOC_PPC_GOT_TLSLD16_LO:          howto manager.      (line  679)
* BFD_RELOC_PPC_GOT_TPREL16:             howto manager.      (line  682)
* BFD_RELOC_PPC_GOT_TPREL16_HA:          howto manager.      (line  685)
* BFD_RELOC_PPC_GOT_TPREL16_HI:          howto manager.      (line  684)
* BFD_RELOC_PPC_GOT_TPREL16_LO:          howto manager.      (line  683)
* BFD_RELOC_PPC_JMP_SLOT:                howto manager.      (line  597)
* BFD_RELOC_PPC_LOCAL24PC:               howto manager.      (line  599)
* BFD_RELOC_PPC_RELATIVE:                howto manager.      (line  598)
* BFD_RELOC_PPC_TLS:                     howto manager.      (line  660)
* BFD_RELOC_PPC_TLSGD:                   howto manager.      (line  661)
* BFD_RELOC_PPC_TLSLD:                   howto manager.      (line  662)
* BFD_RELOC_PPC_TOC16:                   howto manager.      (line  588)
* BFD_RELOC_PPC_TPREL:                   howto manager.      (line  668)
* BFD_RELOC_PPC_TPREL16:                 howto manager.      (line  664)
* BFD_RELOC_PPC_TPREL16_HA:              howto manager.      (line  667)
* BFD_RELOC_PPC_TPREL16_HI:              howto manager.      (line  666)
* BFD_RELOC_PPC_TPREL16_LO:              howto manager.      (line  665)
* BFD_RELOC_PPC_VLE_HA16A:               howto manager.      (line  623)
* BFD_RELOC_PPC_VLE_HA16D:               howto manager.      (line  624)
* BFD_RELOC_PPC_VLE_HI16A:               howto manager.      (line  621)
* BFD_RELOC_PPC_VLE_HI16D:               howto manager.      (line  622)
* BFD_RELOC_PPC_VLE_LO16A:               howto manager.      (line  619)
* BFD_RELOC_PPC_VLE_LO16D:               howto manager.      (line  620)
* BFD_RELOC_PPC_VLE_REL15:               howto manager.      (line  617)
* BFD_RELOC_PPC_VLE_REL24:               howto manager.      (line  618)
* BFD_RELOC_PPC_VLE_REL8:                howto manager.      (line  616)
* BFD_RELOC_PPC_VLE_SDA21:               howto manager.      (line  625)
* BFD_RELOC_PPC_VLE_SDA21_LO:            howto manager.      (line  626)
* BFD_RELOC_PPC_VLE_SDAREL_HA16A:        howto manager.      (line  631)
* BFD_RELOC_PPC_VLE_SDAREL_HA16D:        howto manager.      (line  632)
* BFD_RELOC_PPC_VLE_SDAREL_HI16A:        howto manager.      (line  629)
* BFD_RELOC_PPC_VLE_SDAREL_HI16D:        howto manager.      (line  630)
* BFD_RELOC_PPC_VLE_SDAREL_LO16A:        howto manager.      (line  627)
* BFD_RELOC_PPC_VLE_SDAREL_LO16D:        howto manager.      (line  628)
* BFD_RELOC_RELC:                        howto manager.      (line 2233)
* BFD_RELOC_RL78_16U:                    howto manager.      (line 1658)
* BFD_RELOC_RL78_16_OP:                  howto manager.      (line 1654)
* BFD_RELOC_RL78_24U:                    howto manager.      (line 1659)
* BFD_RELOC_RL78_24_OP:                  howto manager.      (line 1655)
* BFD_RELOC_RL78_32_OP:                  howto manager.      (line 1656)
* BFD_RELOC_RL78_8U:                     howto manager.      (line 1657)
* BFD_RELOC_RL78_ABS16:                  howto manager.      (line 1671)
* BFD_RELOC_RL78_ABS16U:                 howto manager.      (line 1675)
* BFD_RELOC_RL78_ABS16UL:                howto manager.      (line 1677)
* BFD_RELOC_RL78_ABS16UW:                howto manager.      (line 1676)
* BFD_RELOC_RL78_ABS16_REV:              howto manager.      (line 1672)
* BFD_RELOC_RL78_ABS32:                  howto manager.      (line 1673)
* BFD_RELOC_RL78_ABS32_REV:              howto manager.      (line 1674)
* BFD_RELOC_RL78_ABS8:                   howto manager.      (line 1670)
* BFD_RELOC_RL78_CODE:                   howto manager.      (line 1682)
* BFD_RELOC_RL78_DIFF:                   howto manager.      (line 1661)
* BFD_RELOC_RL78_DIR3U_PCREL:            howto manager.      (line 1660)
* BFD_RELOC_RL78_GPRELB:                 howto manager.      (line 1662)
* BFD_RELOC_RL78_GPRELL:                 howto manager.      (line 1664)
* BFD_RELOC_RL78_GPRELW:                 howto manager.      (line 1663)
* BFD_RELOC_RL78_HI16:                   howto manager.      (line 1679)
* BFD_RELOC_RL78_HI8:                    howto manager.      (line 1680)
* BFD_RELOC_RL78_LO16:                   howto manager.      (line 1681)
* BFD_RELOC_RL78_NEG16:                  howto manager.      (line 1651)
* BFD_RELOC_RL78_NEG24:                  howto manager.      (line 1652)
* BFD_RELOC_RL78_NEG32:                  howto manager.      (line 1653)
* BFD_RELOC_RL78_NEG8:                   howto manager.      (line 1650)
* BFD_RELOC_RL78_OP_AND:                 howto manager.      (line 1668)
* BFD_RELOC_RL78_OP_NEG:                 howto manager.      (line 1667)
* BFD_RELOC_RL78_OP_SHRA:                howto manager.      (line 1669)
* BFD_RELOC_RL78_OP_SUBTRACT:            howto manager.      (line 1666)
* BFD_RELOC_RL78_RELAX:                  howto manager.      (line 1678)
* BFD_RELOC_RL78_SYM:                    howto manager.      (line 1665)
* BFD_RELOC_RVA:                         howto manager.      (line   97)
* BFD_RELOC_RX_16U:                      howto manager.      (line 1692)
* BFD_RELOC_RX_16_OP:                    howto manager.      (line 1688)
* BFD_RELOC_RX_24U:                      howto manager.      (line 1693)
* BFD_RELOC_RX_24_OP:                    howto manager.      (line 1689)
* BFD_RELOC_RX_32_OP:                    howto manager.      (line 1690)
* BFD_RELOC_RX_8U:                       howto manager.      (line 1691)
* BFD_RELOC_RX_ABS16:                    howto manager.      (line 1703)
* BFD_RELOC_RX_ABS16U:                   howto manager.      (line 1707)
* BFD_RELOC_RX_ABS16UL:                  howto manager.      (line 1709)
* BFD_RELOC_RX_ABS16UW:                  howto manager.      (line 1708)
* BFD_RELOC_RX_ABS16_REV:                howto manager.      (line 1704)
* BFD_RELOC_RX_ABS32:                    howto manager.      (line 1705)
* BFD_RELOC_RX_ABS32_REV:                howto manager.      (line 1706)
* BFD_RELOC_RX_ABS8:                     howto manager.      (line 1702)
* BFD_RELOC_RX_DIFF:                     howto manager.      (line 1695)
* BFD_RELOC_RX_DIR3U_PCREL:              howto manager.      (line 1694)
* BFD_RELOC_RX_GPRELB:                   howto manager.      (line 1696)
* BFD_RELOC_RX_GPRELL:                   howto manager.      (line 1698)
* BFD_RELOC_RX_GPRELW:                   howto manager.      (line 1697)
* BFD_RELOC_RX_NEG16:                    howto manager.      (line 1685)
* BFD_RELOC_RX_NEG24:                    howto manager.      (line 1686)
* BFD_RELOC_RX_NEG32:                    howto manager.      (line 1687)
* BFD_RELOC_RX_NEG8:                     howto manager.      (line 1684)
* BFD_RELOC_RX_OP_NEG:                   howto manager.      (line 1701)
* BFD_RELOC_RX_OP_SUBTRACT:              howto manager.      (line 1700)
* BFD_RELOC_RX_RELAX:                    howto manager.      (line 1710)
* BFD_RELOC_RX_SYM:                      howto manager.      (line 1699)
* BFD_RELOC_SCORE16_BRANCH:              howto manager.      (line 1813)
* BFD_RELOC_SCORE16_JMP:                 howto manager.      (line 1811)
* BFD_RELOC_SCORE_BCMP:                  howto manager.      (line 1815)
* BFD_RELOC_SCORE_BRANCH:                howto manager.      (line 1805)
* BFD_RELOC_SCORE_CALL15:                howto manager.      (line 1819)
* BFD_RELOC_SCORE_DUMMY2:                howto manager.      (line 1802)
* BFD_RELOC_SCORE_DUMMY_HI16:            howto manager.      (line 1820)
* BFD_RELOC_SCORE_GOT15:                 howto manager.      (line 1817)
* BFD_RELOC_SCORE_GOT_LO16:              howto manager.      (line 1818)
* BFD_RELOC_SCORE_GPREL15:               howto manager.      (line 1800)
* BFD_RELOC_SCORE_IMM30:                 howto manager.      (line 1807)
* BFD_RELOC_SCORE_IMM32:                 howto manager.      (line 1809)
* BFD_RELOC_SCORE_JMP:                   howto manager.      (line 1803)
* BFD_RELOC_SH_ALIGN:                    howto manager.      (line  876)
* BFD_RELOC_SH_CODE:                     howto manager.      (line  877)
* BFD_RELOC_SH_COPY:                     howto manager.      (line  882)
* BFD_RELOC_SH_COPY64:                   howto manager.      (line  907)
* BFD_RELOC_SH_COUNT:                    howto manager.      (line  875)
* BFD_RELOC_SH_DATA:                     howto manager.      (line  878)
* BFD_RELOC_SH_DISP12:                   howto manager.      (line  858)
* BFD_RELOC_SH_DISP12BY2:                howto manager.      (line  859)
* BFD_RELOC_SH_DISP12BY4:                howto manager.      (line  860)
* BFD_RELOC_SH_DISP12BY8:                howto manager.      (line  861)
* BFD_RELOC_SH_DISP20:                   howto manager.      (line  862)
* BFD_RELOC_SH_DISP20BY8:                howto manager.      (line  863)
* BFD_RELOC_SH_FUNCDESC:                 howto manager.      (line  950)
* BFD_RELOC_SH_GLOB_DAT:                 howto manager.      (line  883)
* BFD_RELOC_SH_GLOB_DAT64:               howto manager.      (line  908)
* BFD_RELOC_SH_GOT10BY4:                 howto manager.      (line  911)
* BFD_RELOC_SH_GOT10BY8:                 howto manager.      (line  912)
* BFD_RELOC_SH_GOT20:                    howto manager.      (line  944)
* BFD_RELOC_SH_GOTFUNCDESC:              howto manager.      (line  946)
* BFD_RELOC_SH_GOTFUNCDESC20:            howto manager.      (line  947)
* BFD_RELOC_SH_GOTOFF20:                 howto manager.      (line  945)
* BFD_RELOC_SH_GOTOFFFUNCDESC:           howto manager.      (line  948)
* BFD_RELOC_SH_GOTOFFFUNCDESC20:         howto manager.      (line  949)
* BFD_RELOC_SH_GOTOFF_HI16:              howto manager.      (line  902)
* BFD_RELOC_SH_GOTOFF_LOW16:             howto manager.      (line  899)
* BFD_RELOC_SH_GOTOFF_MEDHI16:           howto manager.      (line  901)
* BFD_RELOC_SH_GOTOFF_MEDLOW16:          howto manager.      (line  900)
* BFD_RELOC_SH_GOTPC:                    howto manager.      (line  886)
* BFD_RELOC_SH_GOTPC_HI16:               howto manager.      (line  906)
* BFD_RELOC_SH_GOTPC_LOW16:              howto manager.      (line  903)
* BFD_RELOC_SH_GOTPC_MEDHI16:            howto manager.      (line  905)
* BFD_RELOC_SH_GOTPC_MEDLOW16:           howto manager.      (line  904)
* BFD_RELOC_SH_GOTPLT10BY4:              howto manager.      (line  913)
* BFD_RELOC_SH_GOTPLT10BY8:              howto manager.      (line  914)
* BFD_RELOC_SH_GOTPLT32:                 howto manager.      (line  915)
* BFD_RELOC_SH_GOTPLT_HI16:              howto manager.      (line  894)
* BFD_RELOC_SH_GOTPLT_LOW16:             howto manager.      (line  891)
* BFD_RELOC_SH_GOTPLT_MEDHI16:           howto manager.      (line  893)
* BFD_RELOC_SH_GOTPLT_MEDLOW16:          howto manager.      (line  892)
* BFD_RELOC_SH_GOT_HI16:                 howto manager.      (line  890)
* BFD_RELOC_SH_GOT_LOW16:                howto manager.      (line  887)
* BFD_RELOC_SH_GOT_MEDHI16:              howto manager.      (line  889)
* BFD_RELOC_SH_GOT_MEDLOW16:             howto manager.      (line  888)
* BFD_RELOC_SH_IMM3:                     howto manager.      (line  856)
* BFD_RELOC_SH_IMM3U:                    howto manager.      (line  857)
* BFD_RELOC_SH_IMM4:                     howto manager.      (line  864)
* BFD_RELOC_SH_IMM4BY2:                  howto manager.      (line  865)
* BFD_RELOC_SH_IMM4BY4:                  howto manager.      (line  866)
* BFD_RELOC_SH_IMM8:                     howto manager.      (line  867)
* BFD_RELOC_SH_IMM8BY2:                  howto manager.      (line  868)
* BFD_RELOC_SH_IMM8BY4:                  howto manager.      (line  869)
* BFD_RELOC_SH_IMMS10:                   howto manager.      (line  921)
* BFD_RELOC_SH_IMMS10BY2:                howto manager.      (line  922)
* BFD_RELOC_SH_IMMS10BY4:                howto manager.      (line  923)
* BFD_RELOC_SH_IMMS10BY8:                howto manager.      (line  924)
* BFD_RELOC_SH_IMMS16:                   howto manager.      (line  925)
* BFD_RELOC_SH_IMMS6:                    howto manager.      (line  918)
* BFD_RELOC_SH_IMMS6BY32:                howto manager.      (line  919)
* BFD_RELOC_SH_IMMU16:                   howto manager.      (line  926)
* BFD_RELOC_SH_IMMU5:                    howto manager.      (line  917)
* BFD_RELOC_SH_IMMU6:                    howto manager.      (line  920)
* BFD_RELOC_SH_IMM_HI16:                 howto manager.      (line  933)
* BFD_RELOC_SH_IMM_HI16_PCREL:           howto manager.      (line  934)
* BFD_RELOC_SH_IMM_LOW16:                howto manager.      (line  927)
* BFD_RELOC_SH_IMM_LOW16_PCREL:          howto manager.      (line  928)
* BFD_RELOC_SH_IMM_MEDHI16:              howto manager.      (line  931)
* BFD_RELOC_SH_IMM_MEDHI16_PCREL:        howto manager.      (line  932)
* BFD_RELOC_SH_IMM_MEDLOW16:             howto manager.      (line  929)
* BFD_RELOC_SH_IMM_MEDLOW16_PCREL:       howto manager.      (line  930)
* BFD_RELOC_SH_JMP_SLOT:                 howto manager.      (line  884)
* BFD_RELOC_SH_JMP_SLOT64:               howto manager.      (line  909)
* BFD_RELOC_SH_LABEL:                    howto manager.      (line  879)
* BFD_RELOC_SH_LOOP_END:                 howto manager.      (line  881)
* BFD_RELOC_SH_LOOP_START:               howto manager.      (line  880)
* BFD_RELOC_SH_PCDISP12BY2:              howto manager.      (line  855)
* BFD_RELOC_SH_PCDISP8BY2:               howto manager.      (line  854)
* BFD_RELOC_SH_PCRELIMM8BY2:             howto manager.      (line  870)
* BFD_RELOC_SH_PCRELIMM8BY4:             howto manager.      (line  871)
* BFD_RELOC_SH_PLT_HI16:                 howto manager.      (line  898)
* BFD_RELOC_SH_PLT_LOW16:                howto manager.      (line  895)
* BFD_RELOC_SH_PLT_MEDHI16:              howto manager.      (line  897)
* BFD_RELOC_SH_PLT_MEDLOW16:             howto manager.      (line  896)
* BFD_RELOC_SH_PT_16:                    howto manager.      (line  935)
* BFD_RELOC_SH_RELATIVE:                 howto manager.      (line  885)
* BFD_RELOC_SH_RELATIVE64:               howto manager.      (line  910)
* BFD_RELOC_SH_SHMEDIA_CODE:             howto manager.      (line  916)
* BFD_RELOC_SH_SWITCH16:                 howto manager.      (line  872)
* BFD_RELOC_SH_SWITCH32:                 howto manager.      (line  873)
* BFD_RELOC_SH_TLS_DTPMOD32:             howto manager.      (line  941)
* BFD_RELOC_SH_TLS_DTPOFF32:             howto manager.      (line  942)
* BFD_RELOC_SH_TLS_GD_32:                howto manager.      (line  936)
* BFD_RELOC_SH_TLS_IE_32:                howto manager.      (line  939)
* BFD_RELOC_SH_TLS_LDO_32:               howto manager.      (line  938)
* BFD_RELOC_SH_TLS_LD_32:                howto manager.      (line  937)
* BFD_RELOC_SH_TLS_LE_32:                howto manager.      (line  940)
* BFD_RELOC_SH_TLS_TPOFF32:              howto manager.      (line  943)
* BFD_RELOC_SH_USES:                     howto manager.      (line  874)
* BFD_RELOC_SIZE32:                      howto manager.      (line   69)
* BFD_RELOC_SIZE64:                      howto manager.      (line   70)
* BFD_RELOC_SPARC13:                     howto manager.      (line  125)
* BFD_RELOC_SPARC22:                     howto manager.      (line  124)
* BFD_RELOC_SPARC_10:                    howto manager.      (line  152)
* BFD_RELOC_SPARC_11:                    howto manager.      (line  153)
* BFD_RELOC_SPARC_5:                     howto manager.      (line  165)
* BFD_RELOC_SPARC_6:                     howto manager.      (line  164)
* BFD_RELOC_SPARC_64:                    howto manager.      (line  151)
* BFD_RELOC_SPARC_7:                     howto manager.      (line  163)
* BFD_RELOC_SPARC_BASE13:                howto manager.      (line  148)
* BFD_RELOC_SPARC_BASE22:                howto manager.      (line  149)
* BFD_RELOC_SPARC_COPY:                  howto manager.      (line  132)
* BFD_RELOC_SPARC_DISP64:                howto manager.      (line  166)
* BFD_RELOC_SPARC_GLOB_DAT:              howto manager.      (line  133)
* BFD_RELOC_SPARC_GOT10:                 howto manager.      (line  126)
* BFD_RELOC_SPARC_GOT13:                 howto manager.      (line  127)
* BFD_RELOC_SPARC_GOT22:                 howto manager.      (line  128)
* BFD_RELOC_SPARC_GOTDATA_HIX22:         howto manager.      (line  139)
* BFD_RELOC_SPARC_GOTDATA_LOX10:         howto manager.      (line  140)
* BFD_RELOC_SPARC_GOTDATA_OP:            howto manager.      (line  143)
* BFD_RELOC_SPARC_GOTDATA_OP_HIX22:      howto manager.      (line  141)
* BFD_RELOC_SPARC_GOTDATA_OP_LOX10:      howto manager.      (line  142)
* BFD_RELOC_SPARC_H34:                   howto manager.      (line  175)
* BFD_RELOC_SPARC_H44:                   howto manager.      (line  171)
* BFD_RELOC_SPARC_HH22:                  howto manager.      (line  155)
* BFD_RELOC_SPARC_HIX22:                 howto manager.      (line  169)
* BFD_RELOC_SPARC_HM10:                  howto manager.      (line  156)
* BFD_RELOC_SPARC_IRELATIVE:             howto manager.      (line  145)
* BFD_RELOC_SPARC_JMP_IREL:              howto manager.      (line  144)
* BFD_RELOC_SPARC_JMP_SLOT:              howto manager.      (line  134)
* BFD_RELOC_SPARC_L44:                   howto manager.      (line  173)
* BFD_RELOC_SPARC_LM22:                  howto manager.      (line  157)
* BFD_RELOC_SPARC_LOX10:                 howto manager.      (line  170)
* BFD_RELOC_SPARC_M44:                   howto manager.      (line  172)
* BFD_RELOC_SPARC_OLO10:                 howto manager.      (line  154)
* BFD_RELOC_SPARC_PC10:                  howto manager.      (line  129)
* BFD_RELOC_SPARC_PC22:                  howto manager.      (line  130)
* BFD_RELOC_SPARC_PC_HH22:               howto manager.      (line  158)
* BFD_RELOC_SPARC_PC_HM10:               howto manager.      (line  159)
* BFD_RELOC_SPARC_PC_LM22:               howto manager.      (line  160)
* BFD_RELOC_SPARC_PLT32:                 howto manager.      (line  167)
* BFD_RELOC_SPARC_PLT64:                 howto manager.      (line  168)
* BFD_RELOC_SPARC_REGISTER:              howto manager.      (line  174)
* BFD_RELOC_SPARC_RELATIVE:              howto manager.      (line  135)
* BFD_RELOC_SPARC_REV32:                 howto manager.      (line  180)
* BFD_RELOC_SPARC_SIZE32:                howto manager.      (line  176)
* BFD_RELOC_SPARC_SIZE64:                howto manager.      (line  177)
* BFD_RELOC_SPARC_TLS_DTPMOD32:          howto manager.      (line  200)
* BFD_RELOC_SPARC_TLS_DTPMOD64:          howto manager.      (line  201)
* BFD_RELOC_SPARC_TLS_DTPOFF32:          howto manager.      (line  202)
* BFD_RELOC_SPARC_TLS_DTPOFF64:          howto manager.      (line  203)
* BFD_RELOC_SPARC_TLS_GD_ADD:            howto manager.      (line  184)
* BFD_RELOC_SPARC_TLS_GD_CALL:           howto manager.      (line  185)
* BFD_RELOC_SPARC_TLS_GD_HI22:           howto manager.      (line  182)
* BFD_RELOC_SPARC_TLS_GD_LO10:           howto manager.      (line  183)
* BFD_RELOC_SPARC_TLS_IE_ADD:            howto manager.      (line  197)
* BFD_RELOC_SPARC_TLS_IE_HI22:           howto manager.      (line  193)
* BFD_RELOC_SPARC_TLS_IE_LD:             howto manager.      (line  195)
* BFD_RELOC_SPARC_TLS_IE_LDX:            howto manager.      (line  196)
* BFD_RELOC_SPARC_TLS_IE_LO10:           howto manager.      (line  194)
* BFD_RELOC_SPARC_TLS_LDM_ADD:           howto manager.      (line  188)
* BFD_RELOC_SPARC_TLS_LDM_CALL:          howto manager.      (line  189)
* BFD_RELOC_SPARC_TLS_LDM_HI22:          howto manager.      (line  186)
* BFD_RELOC_SPARC_TLS_LDM_LO10:          howto manager.      (line  187)
* BFD_RELOC_SPARC_TLS_LDO_ADD:           howto manager.      (line  192)
* BFD_RELOC_SPARC_TLS_LDO_HIX22:         howto manager.      (line  190)
* BFD_RELOC_SPARC_TLS_LDO_LOX10:         howto manager.      (line  191)
* BFD_RELOC_SPARC_TLS_LE_HIX22:          howto manager.      (line  198)
* BFD_RELOC_SPARC_TLS_LE_LOX10:          howto manager.      (line  199)
* BFD_RELOC_SPARC_TLS_TPOFF32:           howto manager.      (line  204)
* BFD_RELOC_SPARC_TLS_TPOFF64:           howto manager.      (line  205)
* BFD_RELOC_SPARC_UA16:                  howto manager.      (line  136)
* BFD_RELOC_SPARC_UA32:                  howto manager.      (line  137)
* BFD_RELOC_SPARC_UA64:                  howto manager.      (line  138)
* BFD_RELOC_SPARC_WDISP10:               howto manager.      (line  178)
* BFD_RELOC_SPARC_WDISP16:               howto manager.      (line  161)
* BFD_RELOC_SPARC_WDISP19:               howto manager.      (line  162)
* BFD_RELOC_SPARC_WDISP22:               howto manager.      (line  123)
* BFD_RELOC_SPARC_WPLT30:                howto manager.      (line  131)
* BFD_RELOC_SPU_ADD_PIC:                 howto manager.      (line  221)
* BFD_RELOC_SPU_HI16:                    howto manager.      (line  218)
* BFD_RELOC_SPU_IMM10:                   howto manager.      (line  209)
* BFD_RELOC_SPU_IMM10W:                  howto manager.      (line  210)
* BFD_RELOC_SPU_IMM16:                   howto manager.      (line  211)
* BFD_RELOC_SPU_IMM16W:                  howto manager.      (line  212)
* BFD_RELOC_SPU_IMM18:                   howto manager.      (line  213)
* BFD_RELOC_SPU_IMM7:                    howto manager.      (line  207)
* BFD_RELOC_SPU_IMM8:                    howto manager.      (line  208)
* BFD_RELOC_SPU_LO16:                    howto manager.      (line  217)
* BFD_RELOC_SPU_PCREL16:                 howto manager.      (line  216)
* BFD_RELOC_SPU_PCREL9a:                 howto manager.      (line  214)
* BFD_RELOC_SPU_PCREL9b:                 howto manager.      (line  215)
* BFD_RELOC_SPU_PPU32:                   howto manager.      (line  219)
* BFD_RELOC_SPU_PPU64:                   howto manager.      (line  220)
* BFD_RELOC_THUMB_PCREL_BLX:             howto manager.      (line  721)
* BFD_RELOC_THUMB_PCREL_BRANCH12:        howto manager.      (line  732)
* BFD_RELOC_THUMB_PCREL_BRANCH20:        howto manager.      (line  733)
* BFD_RELOC_THUMB_PCREL_BRANCH23:        howto manager.      (line  734)
* BFD_RELOC_THUMB_PCREL_BRANCH25:        howto manager.      (line  735)
* BFD_RELOC_THUMB_PCREL_BRANCH7:         howto manager.      (line  730)
* BFD_RELOC_THUMB_PCREL_BRANCH9:         howto manager.      (line  731)
* BFD_RELOC_TIC30_LDP:                   howto manager.      (line 1370)
* BFD_RELOC_TIC54X_16_OF_23:             howto manager.      (line 1384)
* BFD_RELOC_TIC54X_23:                   howto manager.      (line 1382)
* BFD_RELOC_TIC54X_MS7_OF_23:            howto manager.      (line 1388)
* BFD_RELOC_TIC54X_PARTLS7:              howto manager.      (line 1374)
* BFD_RELOC_TIC54X_PARTMS9:              howto manager.      (line 1378)
* BFD_RELOC_TILEGX_BROFF_X1:             howto manager.      (line 2821)
* BFD_RELOC_TILEGX_COPY:                 howto manager.      (line 2817)
* BFD_RELOC_TILEGX_DEST_IMM8_X1:         howto manager.      (line 2828)
* BFD_RELOC_TILEGX_GLOB_DAT:             howto manager.      (line 2818)
* BFD_RELOC_TILEGX_HW0:                  howto manager.      (line 2810)
* BFD_RELOC_TILEGX_HW0_LAST:             howto manager.      (line 2814)
* BFD_RELOC_TILEGX_HW1:                  howto manager.      (line 2811)
* BFD_RELOC_TILEGX_HW1_LAST:             howto manager.      (line 2815)
* BFD_RELOC_TILEGX_HW2:                  howto manager.      (line 2812)
* BFD_RELOC_TILEGX_HW2_LAST:             howto manager.      (line 2816)
* BFD_RELOC_TILEGX_HW3:                  howto manager.      (line 2813)
* BFD_RELOC_TILEGX_IMM16_X0_HW0:         howto manager.      (line 2837)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT:     howto manager.      (line 2865)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST:    howto manager.      (line 2845)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT: howto manager.     (line 2873)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL: howto manager.   (line 2859)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL: howto manager.
                                                             (line 2893)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: howto manager.  (line 2887)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: howto manager.  (line 2899)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: howto manager.  (line 2883)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL:   howto manager.      (line 2851)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL: howto manager.    (line 2867)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD:  howto manager.      (line 2879)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE:  howto manager.      (line 2891)
* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE:  howto manager.      (line 2881)
* BFD_RELOC_TILEGX_IMM16_X0_HW1:         howto manager.      (line 2839)
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST:    howto manager.      (line 2847)
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT: howto manager.     (line 2875)
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL: howto manager.   (line 2861)
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL: howto manager.
                                                             (line 2895)
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: howto manager.  (line 2889)
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: howto manager.  (line 2901)
* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: howto manager.  (line 2885)
* BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL:   howto manager.      (line 2853)
* BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL: howto manager.    (line 2869)
* BFD_RELOC_TILEGX_IMM16_X0_HW2:         howto manager.      (line 2841)
* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST:    howto manager.      (line 2849)
* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL: howto manager.   (line 2863)
* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL: howto manager.
                                                             (line 2897)
* BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL:   howto manager.      (line 2855)
* BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL: howto manager.    (line 2871)
* BFD_RELOC_TILEGX_IMM16_X0_HW3:         howto manager.      (line 2843)
* BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL:   howto manager.      (line 2857)
* BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL: howto manager.    (line 2877)
* BFD_RELOC_TILEGX_IMM16_X1_HW0:         howto manager.      (line 2838)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT:     howto manager.      (line 2866)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST:    howto manager.      (line 2846)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT: howto manager.     (line 2874)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL: howto manager.   (line 2860)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL: howto manager.
                                                             (line 2894)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: howto manager.  (line 2888)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: howto manager.  (line 2900)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: howto manager.  (line 2884)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL:   howto manager.      (line 2852)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL: howto manager.    (line 2868)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD:  howto manager.      (line 2880)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE:  howto manager.      (line 2892)
* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE:  howto manager.      (line 2882)
* BFD_RELOC_TILEGX_IMM16_X1_HW1:         howto manager.      (line 2840)
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST:    howto manager.      (line 2848)
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT: howto manager.     (line 2876)
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL: howto manager.   (line 2862)
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL: howto manager.
                                                             (line 2896)
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: howto manager.  (line 2890)
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: howto manager.  (line 2902)
* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: howto manager.  (line 2886)
* BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL:   howto manager.      (line 2854)
* BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL: howto manager.    (line 2870)
* BFD_RELOC_TILEGX_IMM16_X1_HW2:         howto manager.      (line 2842)
* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST:    howto manager.      (line 2850)
* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL: howto manager.   (line 2864)
* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL: howto manager.
                                                             (line 2898)
* BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL:   howto manager.      (line 2856)
* BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL: howto manager.    (line 2872)
* BFD_RELOC_TILEGX_IMM16_X1_HW3:         howto manager.      (line 2844)
* BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL:   howto manager.      (line 2858)
* BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL: howto manager.    (line 2878)
* BFD_RELOC_TILEGX_IMM8_X0:              howto manager.      (line 2824)
* BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD:      howto manager.      (line 2915)
* BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD:   howto manager.      (line 2910)
* BFD_RELOC_TILEGX_IMM8_X1:              howto manager.      (line 2826)
* BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD:      howto manager.      (line 2916)
* BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD:   howto manager.      (line 2911)
* BFD_RELOC_TILEGX_IMM8_Y0:              howto manager.      (line 2825)
* BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD:      howto manager.      (line 2917)
* BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD:   howto manager.      (line 2912)
* BFD_RELOC_TILEGX_IMM8_Y1:              howto manager.      (line 2827)
* BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD:      howto manager.      (line 2918)
* BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD:   howto manager.      (line 2913)
* BFD_RELOC_TILEGX_JMP_SLOT:             howto manager.      (line 2819)
* BFD_RELOC_TILEGX_JUMPOFF_X1:           howto manager.      (line 2822)
* BFD_RELOC_TILEGX_JUMPOFF_X1_PLT:       howto manager.      (line 2823)
* BFD_RELOC_TILEGX_MF_IMM14_X1:          howto manager.      (line 2830)
* BFD_RELOC_TILEGX_MMEND_X0:             howto manager.      (line 2832)
* BFD_RELOC_TILEGX_MMSTART_X0:           howto manager.      (line 2831)
* BFD_RELOC_TILEGX_MT_IMM14_X1:          howto manager.      (line 2829)
* BFD_RELOC_TILEGX_RELATIVE:             howto manager.      (line 2820)
* BFD_RELOC_TILEGX_SHAMT_X0:             howto manager.      (line 2833)
* BFD_RELOC_TILEGX_SHAMT_X1:             howto manager.      (line 2834)
* BFD_RELOC_TILEGX_SHAMT_Y0:             howto manager.      (line 2835)
* BFD_RELOC_TILEGX_SHAMT_Y1:             howto manager.      (line 2836)
* BFD_RELOC_TILEGX_TLS_DTPMOD32:         howto manager.      (line 2906)
* BFD_RELOC_TILEGX_TLS_DTPMOD64:         howto manager.      (line 2903)
* BFD_RELOC_TILEGX_TLS_DTPOFF32:         howto manager.      (line 2907)
* BFD_RELOC_TILEGX_TLS_DTPOFF64:         howto manager.      (line 2904)
* BFD_RELOC_TILEGX_TLS_GD_CALL:          howto manager.      (line 2909)
* BFD_RELOC_TILEGX_TLS_IE_LOAD:          howto manager.      (line 2914)
* BFD_RELOC_TILEGX_TLS_TPOFF32:          howto manager.      (line 2908)
* BFD_RELOC_TILEGX_TLS_TPOFF64:          howto manager.      (line 2905)
* BFD_RELOC_TILEPRO_BROFF_X1:            howto manager.      (line 2734)
* BFD_RELOC_TILEPRO_COPY:                howto manager.      (line 2730)
* BFD_RELOC_TILEPRO_DEST_IMM8_X1:        howto manager.      (line 2741)
* BFD_RELOC_TILEPRO_GLOB_DAT:            howto manager.      (line 2731)
* BFD_RELOC_TILEPRO_IMM16_X0:            howto manager.      (line 2744)
* BFD_RELOC_TILEPRO_IMM16_X0_GOT:        howto manager.      (line 2760)
* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA:     howto manager.      (line 2766)
* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI:     howto manager.      (line 2764)
* BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO:     howto manager.      (line 2762)
* BFD_RELOC_TILEPRO_IMM16_X0_HA:         howto manager.      (line 2750)
* BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL:   howto manager.      (line 2758)
* BFD_RELOC_TILEPRO_IMM16_X0_HI:         howto manager.      (line 2748)
* BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL:   howto manager.      (line 2756)
* BFD_RELOC_TILEPRO_IMM16_X0_LO:         howto manager.      (line 2746)
* BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL:   howto manager.      (line 2754)
* BFD_RELOC_TILEPRO_IMM16_X0_PCREL:      howto manager.      (line 2752)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD:     howto manager.      (line 2782)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA:  howto manager.      (line 2788)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI:  howto manager.      (line 2786)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO:  howto manager.      (line 2784)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE:     howto manager.      (line 2790)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA:  howto manager.      (line 2796)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI:  howto manager.      (line 2794)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO:  howto manager.      (line 2792)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE:     howto manager.      (line 2801)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA:  howto manager.      (line 2807)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI:  howto manager.      (line 2805)
* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO:  howto manager.      (line 2803)
* BFD_RELOC_TILEPRO_IMM16_X1:            howto manager.      (line 2745)
* BFD_RELOC_TILEPRO_IMM16_X1_GOT:        howto manager.      (line 2761)
* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA:     howto manager.      (line 2767)
* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI:     howto manager.      (line 2765)
* BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO:     howto manager.      (line 2763)
* BFD_RELOC_TILEPRO_IMM16_X1_HA:         howto manager.      (line 2751)
* BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL:   howto manager.      (line 2759)
* BFD_RELOC_TILEPRO_IMM16_X1_HI:         howto manager.      (line 2749)
* BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL:   howto manager.      (line 2757)
* BFD_RELOC_TILEPRO_IMM16_X1_LO:         howto manager.      (line 2747)
* BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL:   howto manager.      (line 2755)
* BFD_RELOC_TILEPRO_IMM16_X1_PCREL:      howto manager.      (line 2753)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD:     howto manager.      (line 2783)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA:  howto manager.      (line 2789)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI:  howto manager.      (line 2787)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO:  howto manager.      (line 2785)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE:     howto manager.      (line 2791)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA:  howto manager.      (line 2797)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI:  howto manager.      (line 2795)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO:  howto manager.      (line 2793)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE:     howto manager.      (line 2802)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA:  howto manager.      (line 2808)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI:  howto manager.      (line 2806)
* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO:  howto manager.      (line 2804)
* BFD_RELOC_TILEPRO_IMM8_X0:             howto manager.      (line 2737)
* BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD:  howto manager.      (line 2777)
* BFD_RELOC_TILEPRO_IMM8_X1:             howto manager.      (line 2739)
* BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD:  howto manager.      (line 2778)
* BFD_RELOC_TILEPRO_IMM8_Y0:             howto manager.      (line 2738)
* BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD:  howto manager.      (line 2779)
* BFD_RELOC_TILEPRO_IMM8_Y1:             howto manager.      (line 2740)
* BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD:  howto manager.      (line 2780)
* BFD_RELOC_TILEPRO_JMP_SLOT:            howto manager.      (line 2732)
* BFD_RELOC_TILEPRO_JOFFLONG_X1:         howto manager.      (line 2735)
* BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT:     howto manager.      (line 2736)
* BFD_RELOC_TILEPRO_MF_IMM15_X1:         howto manager.      (line 2743)
* BFD_RELOC_TILEPRO_MMEND_X0:            howto manager.      (line 2769)
* BFD_RELOC_TILEPRO_MMEND_X1:            howto manager.      (line 2771)
* BFD_RELOC_TILEPRO_MMSTART_X0:          howto manager.      (line 2768)
* BFD_RELOC_TILEPRO_MMSTART_X1:          howto manager.      (line 2770)
* BFD_RELOC_TILEPRO_MT_IMM15_X1:         howto manager.      (line 2742)
* BFD_RELOC_TILEPRO_RELATIVE:            howto manager.      (line 2733)
* BFD_RELOC_TILEPRO_SHAMT_X0:            howto manager.      (line 2772)
* BFD_RELOC_TILEPRO_SHAMT_X1:            howto manager.      (line 2773)
* BFD_RELOC_TILEPRO_SHAMT_Y0:            howto manager.      (line 2774)
* BFD_RELOC_TILEPRO_SHAMT_Y1:            howto manager.      (line 2775)
* BFD_RELOC_TILEPRO_TLS_DTPMOD32:        howto manager.      (line 2798)
* BFD_RELOC_TILEPRO_TLS_DTPOFF32:        howto manager.      (line 2799)
* BFD_RELOC_TILEPRO_TLS_GD_CALL:         howto manager.      (line 2776)
* BFD_RELOC_TILEPRO_TLS_IE_LOAD:         howto manager.      (line 2781)
* BFD_RELOC_TILEPRO_TLS_TPOFF32:         howto manager.      (line 2800)
* bfd_reloc_type_lookup:                 howto manager.      (line 2937)
* BFD_RELOC_V850_16_GOT:                 howto manager.      (line 1346)
* BFD_RELOC_V850_16_GOTOFF:              howto manager.      (line 1362)
* BFD_RELOC_V850_16_PCREL:               howto manager.      (line 1326)
* BFD_RELOC_V850_16_S1:                  howto manager.      (line 1338)
* BFD_RELOC_V850_16_SPLIT_OFFSET:        howto manager.      (line 1336)
* BFD_RELOC_V850_17_PCREL:               howto manager.      (line 1328)
* BFD_RELOC_V850_22_PCREL:               howto manager.      (line 1280)
* BFD_RELOC_V850_22_PLT_PCREL:           howto manager.      (line 1350)
* BFD_RELOC_V850_23:                     howto manager.      (line 1330)
* BFD_RELOC_V850_32_ABS:                 howto manager.      (line 1334)
* BFD_RELOC_V850_32_GOT:                 howto manager.      (line 1348)
* BFD_RELOC_V850_32_GOTOFF:              howto manager.      (line 1364)
* BFD_RELOC_V850_32_GOTPCREL:            howto manager.      (line 1344)
* BFD_RELOC_V850_32_PCREL:               howto manager.      (line 1332)
* BFD_RELOC_V850_32_PLT_PCREL:           howto manager.      (line 1352)
* BFD_RELOC_V850_9_PCREL:                howto manager.      (line 1278)
* BFD_RELOC_V850_ALIGN:                  howto manager.      (line 1321)
* BFD_RELOC_V850_CALLT_15_16_OFFSET:     howto manager.      (line 1342)
* BFD_RELOC_V850_CALLT_16_16_OFFSET:     howto manager.      (line 1315)
* BFD_RELOC_V850_CALLT_6_7_OFFSET:       howto manager.      (line 1313)
* BFD_RELOC_V850_CODE:                   howto manager.      (line 1366)
* BFD_RELOC_V850_COPY:                   howto manager.      (line 1354)
* BFD_RELOC_V850_DATA:                   howto manager.      (line 1368)
* BFD_RELOC_V850_GLOB_DAT:               howto manager.      (line 1356)
* BFD_RELOC_V850_JMP_SLOT:               howto manager.      (line 1358)
* BFD_RELOC_V850_LO16_S1:                howto manager.      (line 1340)
* BFD_RELOC_V850_LO16_SPLIT_OFFSET:      howto manager.      (line 1323)
* BFD_RELOC_V850_LONGCALL:               howto manager.      (line 1317)
* BFD_RELOC_V850_LONGJUMP:               howto manager.      (line 1319)
* BFD_RELOC_V850_RELATIVE:               howto manager.      (line 1360)
* BFD_RELOC_V850_SDA_15_16_OFFSET:       howto manager.      (line 1284)
* BFD_RELOC_V850_SDA_16_16_OFFSET:       howto manager.      (line 1282)
* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager.      (line 1307)
* BFD_RELOC_V850_TDA_16_16_OFFSET:       howto manager.      (line 1300)
* BFD_RELOC_V850_TDA_4_4_OFFSET:         howto manager.      (line 1305)
* BFD_RELOC_V850_TDA_4_5_OFFSET:         howto manager.      (line 1302)
* BFD_RELOC_V850_TDA_6_8_OFFSET:         howto manager.      (line 1292)
* BFD_RELOC_V850_TDA_7_7_OFFSET:         howto manager.      (line 1298)
* BFD_RELOC_V850_TDA_7_8_OFFSET:         howto manager.      (line 1295)
* BFD_RELOC_V850_ZDA_15_16_OFFSET:       howto manager.      (line 1289)
* BFD_RELOC_V850_ZDA_16_16_OFFSET:       howto manager.      (line 1287)
* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager.      (line 1310)
* BFD_RELOC_VAX_GLOB_DAT:                howto manager.      (line 2240)
* BFD_RELOC_VAX_JMP_SLOT:                howto manager.      (line 2241)
* BFD_RELOC_VAX_RELATIVE:                howto manager.      (line 2242)
* BFD_RELOC_VPE4KMATH_DATA:              howto manager.      (line 1843)
* BFD_RELOC_VPE4KMATH_INSN:              howto manager.      (line 1844)
* BFD_RELOC_VTABLE_ENTRY:                howto manager.      (line 1847)
* BFD_RELOC_VTABLE_INHERIT:              howto manager.      (line 1846)
* BFD_RELOC_X86_64_32S:                  howto manager.      (line  540)
* BFD_RELOC_X86_64_COPY:                 howto manager.      (line  535)
* BFD_RELOC_X86_64_DTPMOD64:             howto manager.      (line  541)
* BFD_RELOC_X86_64_DTPOFF32:             howto manager.      (line  546)
* BFD_RELOC_X86_64_DTPOFF64:             howto manager.      (line  542)
* BFD_RELOC_X86_64_GLOB_DAT:             howto manager.      (line  536)
* BFD_RELOC_X86_64_GOT32:                howto manager.      (line  533)
* BFD_RELOC_X86_64_GOT64:                howto manager.      (line  551)
* BFD_RELOC_X86_64_GOTOFF64:             howto manager.      (line  549)
* BFD_RELOC_X86_64_GOTPC32:              howto manager.      (line  550)
* BFD_RELOC_X86_64_GOTPC32_TLSDESC:      howto manager.      (line  556)
* BFD_RELOC_X86_64_GOTPC64:              howto manager.      (line  553)
* BFD_RELOC_X86_64_GOTPCREL:             howto manager.      (line  539)
* BFD_RELOC_X86_64_GOTPCREL64:           howto manager.      (line  552)
* BFD_RELOC_X86_64_GOTPLT64:             howto manager.      (line  554)
* BFD_RELOC_X86_64_GOTTPOFF:             howto manager.      (line  547)
* BFD_RELOC_X86_64_IRELATIVE:            howto manager.      (line  559)
* BFD_RELOC_X86_64_JUMP_SLOT:            howto manager.      (line  537)
* BFD_RELOC_X86_64_PC32_BND:             howto manager.      (line  560)
* BFD_RELOC_X86_64_PLT32:                howto manager.      (line  534)
* BFD_RELOC_X86_64_PLT32_BND:            howto manager.      (line  561)
* BFD_RELOC_X86_64_PLTOFF64:             howto manager.      (line  555)
* BFD_RELOC_X86_64_RELATIVE:             howto manager.      (line  538)
* BFD_RELOC_X86_64_TLSDESC:              howto manager.      (line  558)
* BFD_RELOC_X86_64_TLSDESC_CALL:         howto manager.      (line  557)
* BFD_RELOC_X86_64_TLSGD:                howto manager.      (line  544)
* BFD_RELOC_X86_64_TLSLD:                howto manager.      (line  545)
* BFD_RELOC_X86_64_TPOFF32:              howto manager.      (line  548)
* BFD_RELOC_X86_64_TPOFF64:              howto manager.      (line  543)
* BFD_RELOC_XC16X_PAG:                   howto manager.      (line 2235)
* BFD_RELOC_XC16X_POF:                   howto manager.      (line 2236)
* BFD_RELOC_XC16X_SEG:                   howto manager.      (line 2237)
* BFD_RELOC_XC16X_SOF:                   howto manager.      (line 2238)
* BFD_RELOC_XGATE_24:                    howto manager.      (line 1990)
* BFD_RELOC_XGATE_GPAGE:                 howto manager.      (line 1988)
* BFD_RELOC_XGATE_IMM3:                  howto manager.      (line 2002)
* BFD_RELOC_XGATE_IMM4:                  howto manager.      (line 2004)
* BFD_RELOC_XGATE_IMM5:                  howto manager.      (line 2006)
* BFD_RELOC_XGATE_IMM8_HI:               howto manager.      (line 1999)
* BFD_RELOC_XGATE_IMM8_LO:               howto manager.      (line 1996)
* BFD_RELOC_XGATE_LO16:                  howto manager.      (line 1985)
* BFD_RELOC_XGATE_PCREL_10:              howto manager.      (line 1994)
* BFD_RELOC_XGATE_PCREL_9:               howto manager.      (line 1992)
* BFD_RELOC_XGATE_RL_GROUP:              howto manager.      (line 1981)
* BFD_RELOC_XGATE_RL_JUMP:               howto manager.      (line 1978)
* BFD_RELOC_XSTORMY16_12:                howto manager.      (line 2229)
* BFD_RELOC_XSTORMY16_24:                howto manager.      (line 2230)
* BFD_RELOC_XSTORMY16_FPTR16:            howto manager.      (line 2231)
* BFD_RELOC_XSTORMY16_REL_12:            howto manager.      (line 2228)
* BFD_RELOC_XTENSA_ASM_EXPAND:           howto manager.      (line 2385)
* BFD_RELOC_XTENSA_ASM_SIMPLIFY:         howto manager.      (line 2389)
* BFD_RELOC_XTENSA_DIFF16:               howto manager.      (line 2336)
* BFD_RELOC_XTENSA_DIFF32:               howto manager.      (line 2337)
* BFD_RELOC_XTENSA_DIFF8:                howto manager.      (line 2335)
* BFD_RELOC_XTENSA_GLOB_DAT:             howto manager.      (line 2327)
* BFD_RELOC_XTENSA_JMP_SLOT:             howto manager.      (line 2328)
* BFD_RELOC_XTENSA_OP0:                  howto manager.      (line 2380)
* BFD_RELOC_XTENSA_OP1:                  howto manager.      (line 2381)
* BFD_RELOC_XTENSA_OP2:                  howto manager.      (line 2382)
* BFD_RELOC_XTENSA_PLT:                  howto manager.      (line 2331)
* BFD_RELOC_XTENSA_RELATIVE:             howto manager.      (line 2329)
* BFD_RELOC_XTENSA_RTLD:                 howto manager.      (line 2323)
* BFD_RELOC_XTENSA_SLOT0_ALT:            howto manager.      (line 2363)
* BFD_RELOC_XTENSA_SLOT0_OP:             howto manager.      (line 2344)
* BFD_RELOC_XTENSA_SLOT10_ALT:           howto manager.      (line 2373)
* BFD_RELOC_XTENSA_SLOT10_OP:            howto manager.      (line 2354)
* BFD_RELOC_XTENSA_SLOT11_ALT:           howto manager.      (line 2374)
* BFD_RELOC_XTENSA_SLOT11_OP:            howto manager.      (line 2355)
* BFD_RELOC_XTENSA_SLOT12_ALT:           howto manager.      (line 2375)
* BFD_RELOC_XTENSA_SLOT12_OP:            howto manager.      (line 2356)
* BFD_RELOC_XTENSA_SLOT13_ALT:           howto manager.      (line 2376)
* BFD_RELOC_XTENSA_SLOT13_OP:            howto manager.      (line 2357)
* BFD_RELOC_XTENSA_SLOT14_ALT:           howto manager.      (line 2377)
* BFD_RELOC_XTENSA_SLOT14_OP:            howto manager.      (line 2358)
* BFD_RELOC_XTENSA_SLOT1_ALT:            howto manager.      (line 2364)
* BFD_RELOC_XTENSA_SLOT1_OP:             howto manager.      (line 2345)
* BFD_RELOC_XTENSA_SLOT2_ALT:            howto manager.      (line 2365)
* BFD_RELOC_XTENSA_SLOT2_OP:             howto manager.      (line 2346)
* BFD_RELOC_XTENSA_SLOT3_ALT:            howto manager.      (line 2366)
* BFD_RELOC_XTENSA_SLOT3_OP:             howto manager.      (line 2347)
* BFD_RELOC_XTENSA_SLOT4_ALT:            howto manager.      (line 2367)
* BFD_RELOC_XTENSA_SLOT4_OP:             howto manager.      (line 2348)
* BFD_RELOC_XTENSA_SLOT5_ALT:            howto manager.      (line 2368)
* BFD_RELOC_XTENSA_SLOT5_OP:             howto manager.      (line 2349)
* BFD_RELOC_XTENSA_SLOT6_ALT:            howto manager.      (line 2369)
* BFD_RELOC_XTENSA_SLOT6_OP:             howto manager.      (line 2350)
* BFD_RELOC_XTENSA_SLOT7_ALT:            howto manager.      (line 2370)
* BFD_RELOC_XTENSA_SLOT7_OP:             howto manager.      (line 2351)
* BFD_RELOC_XTENSA_SLOT8_ALT:            howto manager.      (line 2371)
* BFD_RELOC_XTENSA_SLOT8_OP:             howto manager.      (line 2352)
* BFD_RELOC_XTENSA_SLOT9_ALT:            howto manager.      (line 2372)
* BFD_RELOC_XTENSA_SLOT9_OP:             howto manager.      (line 2353)
* BFD_RELOC_XTENSA_TLSDESC_ARG:          howto manager.      (line 2394)
* BFD_RELOC_XTENSA_TLSDESC_FN:           howto manager.      (line 2393)
* BFD_RELOC_XTENSA_TLS_ARG:              howto manager.      (line 2398)
* BFD_RELOC_XTENSA_TLS_CALL:             howto manager.      (line 2399)
* BFD_RELOC_XTENSA_TLS_DTPOFF:           howto manager.      (line 2395)
* BFD_RELOC_XTENSA_TLS_FUNC:             howto manager.      (line 2397)
* BFD_RELOC_XTENSA_TLS_TPOFF:            howto manager.      (line 2396)
* BFD_RELOC_Z80_DISP8:                   howto manager.      (line 2401)
* BFD_RELOC_Z8K_CALLR:                   howto manager.      (line 2405)
* BFD_RELOC_Z8K_DISP7:                   howto manager.      (line 2403)
* BFD_RELOC_Z8K_IMM4L:                   howto manager.      (line 2407)
* bfd_rename_section:                    section prototypes. (line  167)
* bfd_scan_arch:                         Architectures.      (line  511)
* bfd_scan_vma:                          Miscellaneous.      (line  124)
* bfd_seach_for_target:                  bfd_target.         (line  527)
* bfd_sections_find_if:                  section prototypes. (line  197)
* bfd_section_already_linked:            Writing the symbol table.
                                                             (line   55)
* bfd_section_list_clear:                section prototypes. (line    7)
* bfd_set_archive_head:                  Archives.           (line   74)
* bfd_set_arch_info:                     Architectures.      (line  552)
* bfd_set_assert_handler:                Error reporting.    (line  143)
* bfd_set_default_target:                bfd_target.         (line  466)
* bfd_set_error:                         Error reporting.    (line   57)
* bfd_set_error_handler:                 Error reporting.    (line  100)
* bfd_set_error_program_name:            Error reporting.    (line  109)
* bfd_set_file_flags:                    Miscellaneous.      (line   43)
* bfd_set_format:                        Formats.            (line   67)
* bfd_set_gp_size:                       Miscellaneous.      (line  114)
* bfd_set_private_flags:                 Miscellaneous.      (line  188)
* bfd_set_reloc:                         Miscellaneous.      (line   33)
* bfd_set_section_contents:              section prototypes. (line  229)
* bfd_set_section_flags:                 section prototypes. (line  152)
* bfd_set_section_size:                  section prototypes. (line  214)
* bfd_set_start_address:                 Miscellaneous.      (line   93)
* bfd_set_symtab:                        symbol handling functions.
                                                             (line   63)
* bfd_symbol_info:                       symbol handling functions.
                                                             (line  135)
* bfd_target_list:                       bfd_target.         (line  518)
* bfd_write_bigendian_4byte_int:         Internal.           (line   12)
* bfd_zalloc:                            Opening and Closing.
                                                             (line  256)
* bfd_zalloc2:                           Opening and Closing.
                                                             (line  265)
* coff_symbol_type:                      coff.               (line  244)
* core_file_matches_executable_p:        Core Files.         (line   38)
* find_separate_debug_file:              Opening and Closing.
                                                             (line  331)
* generic_core_file_matches_executable_p: Core Files.        (line   48)
* Hash tables:                           Hash Tables.        (line    6)
* internal object-file format:           Canonical format.   (line   11)
* Linker:                                Linker Functions.   (line    6)
* Other functions:                       Miscellaneous.      (line  202)
* separate_alt_debug_file_exists:        Opening and Closing.
                                                             (line  322)
* separate_debug_file_exists:            Opening and Closing.
                                                             (line  313)
* struct bfd_iovec:                      Miscellaneous.      (line  367)
* target vector (_bfd_final_link):       Performing the Final Link.
                                                             (line    6)
* target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table.
                                                             (line    6)
* target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table.
                                                             (line    6)
* The HOWTO Macro:                       typedef arelent.    (line  289)
* what is it?:                           Overview.           (line    6)



Tag Table:
Node: Top1054
Node: Overview1390
Node: History2448
Node: How It Works3393
Node: What BFD Version 2 Can Do4930
Node: BFD information loss6247
Node: Canonical format8788
Node: BFD front end13165
Node: typedef bfd13589
Node: Error reporting24511
Node: Miscellaneous29373
Node: Memory Usage46634
Node: Initialization47865
Node: Sections48324
Node: Section Input48807
Node: Section Output50176
Node: typedef asection52663
Node: section prototypes78829
Node: Symbols89097
Node: Reading Symbols90700
Node: Writing Symbols91808
Node: Mini Symbols93552
Node: typedef asymbol94526
Node: symbol handling functions100568
Node: Archives105906
Node: Formats109934
Node: Relocations112885
Node: typedef arelent113612
Node: howto manager129268
Node: Core Files242348
Node: Targets244386
Node: bfd_target246361
Node: Architectures269576
Node: Opening and Closing296910
Node: Internal311225
Node: File Caching317574
Node: Linker Functions319492
Node: Creating a Linker Hash Table321166
Node: Adding Symbols to the Hash Table322905
Node: Differing file formats323805
Node: Adding symbols from an object file325530
Node: Adding symbols from an archive327680
Node: Performing the Final Link330609
Node: Information provided by the linker331850
Node: Relocating the section contents333004
Node: Writing the symbol table334756
Node: Hash Tables339142
Node: Creating and Freeing a Hash Table340340
Node: Looking Up or Entering a String341590
Node: Traversing a Hash Table342843
Node: Deriving a New Hash Table Type343632
Node: Define the Derived Structures344698
Node: Write the Derived Creation Routine345779
Node: Write Other Derived Routines348403
Node: BFD back ends349718
Node: What to Put Where349988
Node: aout350168
Node: coff356511
Node: elf385122
Node: mmo385523
Node: File layout386393
Node: Symbol-table392307
Node: mmo section mapping396070
Node: GNU Free Documentation License399724
Node: BFD Index424788

End Tag Table
