Home | History | Annotate | Download | only in info
      1 This is bfd.info, produced by makeinfo version 4.11 from /home/jingyu/projects/gcc/android-toolchainsrc/build/../binutils/binutils-2.19/bfd/doc/bfd.texinfo.
      2 
      3 START-INFO-DIR-ENTRY
      4 * Bfd: (bfd).                   The Binary File Descriptor library.
      5 END-INFO-DIR-ENTRY
      6 
      7    This file documents the BFD library.
      8 
      9    Copyright (C) 1991, 2000, 2001, 2003, 2006, 2007 Free Software
     10 Foundation, Inc.
     11 
     12    Permission is granted to copy, distribute and/or modify this document
     13 under the terms of the GNU Free Documentation License, Version 1.1 or
     14 any later version published by the Free Software Foundation; with the
     15 Invariant Sections being "GNU General Public License" and "Funding Free
     16 Software", the Front-Cover texts being (a) (see below), and with the
     17 Back-Cover Texts being (b) (see below).  A copy of the license is
     18 included in the section entitled "GNU Free Documentation License".
     19 
     20    (a) The FSF's Front-Cover Text is:
     21 
     22    A GNU Manual
     23 
     24    (b) The FSF's Back-Cover Text is:
     25 
     26    You have freedom to copy and modify this GNU Manual, like GNU
     27 software.  Copies published by the Free Software Foundation raise
     28 funds for GNU development.
     29 
     30 
     31 File: bfd.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
     32 
     33    This file documents the binary file descriptor library libbfd.
     34 
     35 * Menu:
     36 
     37 * Overview::			Overview of BFD
     38 * BFD front end::		BFD front end
     39 * BFD back ends::		BFD back ends
     40 * GNU Free Documentation License::  GNU Free Documentation License
     41 * BFD Index::		BFD Index
     42 
     43 
     44 File: bfd.info,  Node: Overview,  Next: BFD front end,  Prev: Top,  Up: Top
     45 
     46 1 Introduction
     47 **************
     48 
     49 BFD is a package which allows applications to use the same routines to
     50 operate on object files whatever the object file format.  A new object
     51 file format can be supported simply by creating a new BFD back end and
     52 adding it to the library.
     53 
     54    BFD is split into two parts: the front end, and the back ends (one
     55 for each object file format).
     56    * The front end of BFD provides the interface to the user. It manages
     57      memory and various canonical data structures. The front end also
     58      decides which back end to use and when to call back end routines.
     59 
     60    * The back ends provide BFD its view of the real world. Each back
     61      end provides a set of calls which the BFD front end can use to
     62      maintain its canonical form. The back ends also may keep around
     63      information for their own use, for greater efficiency.
     64 
     65 * Menu:
     66 
     67 * History::			History
     68 * How It Works::		How It Works
     69 * What BFD Version 2 Can Do::	What BFD Version 2 Can Do
     70 
     71 
     72 File: bfd.info,  Node: History,  Next: How It Works,  Prev: Overview,  Up: Overview
     73 
     74 1.1 History
     75 ===========
     76 
     77 One spur behind BFD was the desire, on the part of the GNU 960 team at
     78 Intel Oregon, for interoperability of applications on their COFF and
     79 b.out file formats.  Cygnus was providing GNU support for the team, and
     80 was contracted to provide the required functionality.
     81 
     82    The name came from a conversation David Wallace was having with
     83 Richard Stallman about the library: RMS said that it would be quite
     84 hard--David said "BFD".  Stallman was right, but the name stuck.
     85 
     86    At the same time, Ready Systems wanted much the same thing, but for
     87 different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k
     88 coff.
     89 
     90    BFD was first implemented by members of Cygnus Support; Steve
     91 Chamberlain (`sac (a] cygnus.com'), John Gilmore (`gnu (a] cygnus.com'), K.
     92 Richard Pixley (`rich (a] cygnus.com') and David Henkel-Wallace
     93 (`gumby (a] cygnus.com').
     94 
     95 
     96 File: bfd.info,  Node: How It Works,  Next: What BFD Version 2 Can Do,  Prev: History,  Up: Overview
     97 
     98 1.2 How To Use BFD
     99 ==================
    100 
    101 To use the library, include `bfd.h' and link with `libbfd.a'.
    102 
    103    BFD provides a common interface to the parts of an object file for a
    104 calling application.
    105 
    106    When an application successfully opens a target file (object,
    107 archive, or whatever), a pointer to an internal structure is returned.
    108 This pointer points to a structure called `bfd', described in `bfd.h'.
    109 Our convention is to call this pointer a BFD, and instances of it
    110 within code `abfd'.  All operations on the target object file are
    111 applied as methods to the BFD.  The mapping is defined within `bfd.h'
    112 in a set of macros, all beginning with `bfd_' to reduce namespace
    113 pollution.
    114 
    115    For example, this sequence does what you would probably expect:
    116 return the number of sections in an object file attached to a BFD
    117 `abfd'.
    118 
    119      #include "bfd.h"
    120 
    121      unsigned int number_of_sections (abfd)
    122      bfd *abfd;
    123      {
    124        return bfd_count_sections (abfd);
    125      }
    126 
    127    The abstraction used within BFD is that an object file has:
    128 
    129    * a header,
    130 
    131    * a number of sections containing raw data (*note Sections::),
    132 
    133    * a set of relocations (*note Relocations::), and
    134 
    135    * some symbol information (*note Symbols::).
    136    Also, BFDs opened for archives have the additional attribute of an
    137 index and contain subordinate BFDs. This approach is fine for a.out and
    138 coff, but loses efficiency when applied to formats such as S-records and
    139 IEEE-695.
    140 
    141 
    142 File: bfd.info,  Node: What BFD Version 2 Can Do,  Prev: How It Works,  Up: Overview
    143 
    144 1.3 What BFD Version 2 Can Do
    145 =============================
    146 
    147 When an object file is opened, BFD subroutines automatically determine
    148 the format of the input object file.  They then build a descriptor in
    149 memory with pointers to routines that will be used to access elements of
    150 the object file's data structures.
    151 
    152    As different information from the object files is required, BFD
    153 reads from different sections of the file and processes them.  For
    154 example, a very common operation for the linker is processing symbol
    155 tables.  Each BFD back end provides a routine for converting between
    156 the object file's representation of symbols and an internal canonical
    157 format. When the linker asks for the symbol table of an object file, it
    158 calls through a memory pointer to the routine from the relevant BFD
    159 back end which reads and converts the table into a canonical form.  The
    160 linker then operates upon the canonical form. When the link is finished
    161 and the linker writes the output file's symbol table, another BFD back
    162 end routine is called to take the newly created symbol table and
    163 convert it into the chosen output format.
    164 
    165 * Menu:
    166 
    167 * BFD information loss::	Information Loss
    168 * Canonical format::		The BFD	canonical object-file format
    169 
    170 
    171 File: bfd.info,  Node: BFD information loss,  Next: Canonical format,  Up: What BFD Version 2 Can Do
    172 
    173 1.3.1 Information Loss
    174 ----------------------
    175 
    176 _Information can be lost during output._ The output formats supported
    177 by BFD do not provide identical facilities, and information which can
    178 be described in one form has nowhere to go in another format. One
    179 example of this is alignment information in `b.out'. There is nowhere
    180 in an `a.out' format file to store alignment information on the
    181 contained data, so when a file is linked from `b.out' and an `a.out'
    182 image is produced, alignment information will not propagate to the
    183 output file. (The linker will still use the alignment information
    184 internally, so the link is performed correctly).
    185 
    186    Another example is COFF section names. COFF files may contain an
    187 unlimited number of sections, each one with a textual section name. If
    188 the target of the link is a format which does not have many sections
    189 (e.g., `a.out') or has sections without names (e.g., the Oasys format),
    190 the link cannot be done simply. You can circumvent this problem by
    191 describing the desired input-to-output section mapping with the linker
    192 command language.
    193 
    194    _Information can be lost during canonicalization._ The BFD internal
    195 canonical form of the external formats is not exhaustive; there are
    196 structures in input formats for which there is no direct representation
    197 internally.  This means that the BFD back ends cannot maintain all
    198 possible data richness through the transformation between external to
    199 internal and back to external formats.
    200 
    201    This limitation is only a problem when an application reads one
    202 format and writes another.  Each BFD back end is responsible for
    203 maintaining as much data as possible, and the internal BFD canonical
    204 form has structures which are opaque to the BFD core, and exported only
    205 to the back ends. When a file is read in one format, the canonical form
    206 is generated for BFD and the application. At the same time, the back
    207 end saves away any information which may otherwise be lost. If the data
    208 is then written back in the same format, the back end routine will be
    209 able to use the canonical form provided by the BFD core as well as the
    210 information it prepared earlier.  Since there is a great deal of
    211 commonality between back ends, there is no information lost when
    212 linking or copying big endian COFF to little endian COFF, or `a.out' to
    213 `b.out'.  When a mixture of formats is linked, the information is only
    214 lost from the files whose format differs from the destination.
    215 
    216 
    217 File: bfd.info,  Node: Canonical format,  Prev: BFD information loss,  Up: What BFD Version 2 Can Do
    218 
    219 1.3.2 The BFD canonical object-file format
    220 ------------------------------------------
    221 
    222 The greatest potential for loss of information occurs when there is the
    223 least overlap between the information provided by the source format,
    224 that stored by the canonical format, and that needed by the destination
    225 format. A brief description of the canonical form may help you
    226 understand which kinds of data you can count on preserving across
    227 conversions.  
    228 
    229 _files_
    230      Information stored on a per-file basis includes target machine
    231      architecture, particular implementation format type, a demand
    232      pageable bit, and a write protected bit.  Information like Unix
    233      magic numbers is not stored here--only the magic numbers' meaning,
    234      so a `ZMAGIC' file would have both the demand pageable bit and the
    235      write protected text bit set.  The byte order of the target is
    236      stored on a per-file basis, so that big- and little-endian object
    237      files may be used with one another.
    238 
    239 _sections_
    240      Each section in the input file contains the name of the section,
    241      the section's original address in the object file, size and
    242      alignment information, various flags, and pointers into other BFD
    243      data structures.
    244 
    245 _symbols_
    246      Each symbol contains a pointer to the information for the object
    247      file which originally defined it, its name, its value, and various
    248      flag bits.  When a BFD back end reads in a symbol table, it
    249      relocates all symbols to make them relative to the base of the
    250      section where they were defined.  Doing this ensures that each
    251      symbol points to its containing section.  Each symbol also has a
    252      varying amount of hidden private data for the BFD back end.  Since
    253      the symbol points to the original file, the private data format
    254      for that symbol is accessible.  `ld' can operate on a collection
    255      of symbols of wildly different formats without problems.
    256 
    257      Normal global and simple local symbols are maintained on output,
    258      so an output file (no matter its format) will retain symbols
    259      pointing to functions and to global, static, and common variables.
    260      Some symbol information is not worth retaining; in `a.out', type
    261      information is stored in the symbol table as long symbol names.
    262      This information would be useless to most COFF debuggers; the
    263      linker has command line switches to allow users to throw it away.
    264 
    265      There is one word of type information within the symbol, so if the
    266      format supports symbol type information within symbols (for
    267      example, COFF, IEEE, Oasys) and the type is simple enough to fit
    268      within one word (nearly everything but aggregates), the
    269      information will be preserved.
    270 
    271 _relocation level_
    272      Each canonical BFD relocation record contains a pointer to the
    273      symbol to relocate to, the offset of the data to relocate, the
    274      section the data is in, and a pointer to a relocation type
    275      descriptor. Relocation is performed by passing messages through
    276      the relocation type descriptor and the symbol pointer. Therefore,
    277      relocations can be performed on output data using a relocation
    278      method that is only available in one of the input formats. For
    279      instance, Oasys provides a byte relocation format.  A relocation
    280      record requesting this relocation type would point indirectly to a
    281      routine to perform this, so the relocation may be performed on a
    282      byte being written to a 68k COFF file, even though 68k COFF has no
    283      such relocation type.
    284 
    285 _line numbers_
    286      Object formats can contain, for debugging purposes, some form of
    287      mapping between symbols, source line numbers, and addresses in the
    288      output file.  These addresses have to be relocated along with the
    289      symbol information.  Each symbol with an associated list of line
    290      number records points to the first record of the list.  The head
    291      of a line number list consists of a pointer to the symbol, which
    292      allows finding out the address of the function whose line number
    293      is being described. The rest of the list is made up of pairs:
    294      offsets into the section and line numbers. Any format which can
    295      simply derive this information can pass it successfully between
    296      formats (COFF, IEEE and Oasys).
    297 
    298 
    299 File: bfd.info,  Node: BFD front end,  Next: BFD back ends,  Prev: Overview,  Up: Top
    300 
    301 2 BFD Front End
    302 ***************
    303 
    304 2.1 `typedef bfd'
    305 =================
    306 
    307 A BFD has type `bfd'; objects of this type are the cornerstone of any
    308 application using BFD. Using BFD consists of making references though
    309 the BFD and to data in the BFD.
    310 
    311    Here is the structure that defines the type `bfd'.  It contains the
    312 major data about the file and pointers to the rest of the data.
    313 
    314 
    315      struct bfd
    316      {
    317        /* A unique identifier of the BFD  */
    318        unsigned int id;
    319 
    320        /* The filename the application opened the BFD with.  */
    321        const char *filename;
    322 
    323        /* A pointer to the target jump table.  */
    324        const struct bfd_target *xvec;
    325 
    326        /* The IOSTREAM, and corresponding IO vector that provide access
    327           to the file backing the BFD.  */
    328        void *iostream;
    329        const struct bfd_iovec *iovec;
    330 
    331        /* The caching routines use these to maintain a
    332           least-recently-used list of BFDs.  */
    333        struct bfd *lru_prev, *lru_next;
    334 
    335        /* When a file is closed by the caching routines, BFD retains
    336           state information on the file here...  */
    337        ufile_ptr where;
    338 
    339        /* File modified time, if mtime_set is TRUE.  */
    340        long mtime;
    341 
    342        /* Reserved for an unimplemented file locking extension.  */
    343        int ifd;
    344 
    345        /* The format which belongs to the BFD. (object, core, etc.)  */
    346        bfd_format format;
    347 
    348        /* The direction with which the BFD was opened.  */
    349        enum bfd_direction
    350          {
    351            no_direction = 0,
    352            read_direction = 1,
    353            write_direction = 2,
    354            both_direction = 3
    355          }
    356        direction;
    357 
    358        /* Format_specific flags.  */
    359        flagword flags;
    360 
    361        /* Values that may appear in the flags field of a BFD.  These also
    362           appear in the object_flags field of the bfd_target structure, where
    363           they indicate the set of flags used by that backend (not all flags
    364           are meaningful for all object file formats) (FIXME: at the moment,
    365           the object_flags values have mostly just been copied from backend
    366           to another, and are not necessarily correct).  */
    367 
    368      #define BFD_NO_FLAGS   0x00
    369 
    370        /* BFD contains relocation entries.  */
    371      #define HAS_RELOC      0x01
    372 
    373        /* BFD is directly executable.  */
    374      #define EXEC_P         0x02
    375 
    376        /* BFD has line number information (basically used for F_LNNO in a
    377           COFF header).  */
    378      #define HAS_LINENO     0x04
    379 
    380        /* BFD has debugging information.  */
    381      #define HAS_DEBUG      0x08
    382 
    383        /* BFD has symbols.  */
    384      #define HAS_SYMS       0x10
    385 
    386        /* BFD has local symbols (basically used for F_LSYMS in a COFF
    387           header).  */
    388      #define HAS_LOCALS     0x20
    389 
    390        /* BFD is a dynamic object.  */
    391      #define DYNAMIC        0x40
    392 
    393        /* Text section is write protected (if D_PAGED is not set, this is
    394           like an a.out NMAGIC file) (the linker sets this by default, but
    395           clears it for -r or -N).  */
    396      #define WP_TEXT        0x80
    397 
    398        /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
    399           linker sets this by default, but clears it for -r or -n or -N).  */
    400      #define D_PAGED        0x100
    401 
    402        /* BFD is relaxable (this means that bfd_relax_section may be able to
    403           do something) (sometimes bfd_relax_section can do something even if
    404           this is not set).  */
    405      #define BFD_IS_RELAXABLE 0x200
    406 
    407        /* This may be set before writing out a BFD to request using a
    408           traditional format.  For example, this is used to request that when
    409           writing out an a.out object the symbols not be hashed to eliminate
    410           duplicates.  */
    411      #define BFD_TRADITIONAL_FORMAT 0x400
    412 
    413        /* This flag indicates that the BFD contents are actually cached
    414           in memory.  If this is set, iostream points to a bfd_in_memory
    415           struct.  */
    416      #define BFD_IN_MEMORY 0x800
    417 
    418        /* The sections in this BFD specify a memory page.  */
    419      #define HAS_LOAD_PAGE 0x1000
    420 
    421        /* This BFD has been created by the linker and doesn't correspond
    422           to any input file.  */
    423      #define BFD_LINKER_CREATED 0x2000
    424 
    425        /* Currently my_archive is tested before adding origin to
    426           anything. I believe that this can become always an add of
    427           origin, with origin set to 0 for non archive files.  */
    428        ufile_ptr origin;
    429 
    430        /* The origin in the archive of the proxy entry.  This will
    431           normally be the same as origin, except for thin archives,
    432           when it will contain the current offset of the proxy in the
    433           thin archive rather than the offset of the bfd in its actual
    434           container.  */
    435        ufile_ptr proxy_origin;
    436 
    437        /* A hash table for section names.  */
    438        struct bfd_hash_table section_htab;
    439 
    440        /* Pointer to linked list of sections.  */
    441        struct bfd_section *sections;
    442 
    443        /* The last section on the section list.  */
    444        struct bfd_section *section_last;
    445 
    446        /* The number of sections.  */
    447        unsigned int section_count;
    448 
    449        /* Stuff only useful for object files:
    450           The start address.  */
    451        bfd_vma start_address;
    452 
    453        /* Used for input and output.  */
    454        unsigned int symcount;
    455 
    456        /* Symbol table for output BFD (with symcount entries).
    457           Also used by the linker to cache input BFD symbols.  */
    458        struct bfd_symbol  **outsymbols;
    459 
    460        /* Used for slurped dynamic symbol tables.  */
    461        unsigned int dynsymcount;
    462 
    463        /* Pointer to structure which contains architecture information.  */
    464        const struct bfd_arch_info *arch_info;
    465 
    466        /* Stuff only useful for archives.  */
    467        void *arelt_data;
    468        struct bfd *my_archive;      /* The containing archive BFD.  */
    469        struct bfd *archive_next;    /* The next BFD in the archive.  */
    470        struct bfd *archive_head;    /* The first BFD in the archive.  */
    471        struct bfd *nested_archives; /* List of nested archive in a flattened
    472                                        thin archive.  */
    473 
    474        /* A chain of BFD structures involved in a link.  */
    475        struct bfd *link_next;
    476 
    477        /* A field used by _bfd_generic_link_add_archive_symbols.  This will
    478           be used only for archive elements.  */
    479        int archive_pass;
    480 
    481        /* Used by the back end to hold private data.  */
    482        union
    483          {
    484            struct aout_data_struct *aout_data;
    485            struct artdata *aout_ar_data;
    486            struct _oasys_data *oasys_obj_data;
    487            struct _oasys_ar_data *oasys_ar_data;
    488            struct coff_tdata *coff_obj_data;
    489            struct pe_tdata *pe_obj_data;
    490            struct xcoff_tdata *xcoff_obj_data;
    491            struct ecoff_tdata *ecoff_obj_data;
    492            struct ieee_data_struct *ieee_data;
    493            struct ieee_ar_data_struct *ieee_ar_data;
    494            struct srec_data_struct *srec_data;
    495            struct ihex_data_struct *ihex_data;
    496            struct tekhex_data_struct *tekhex_data;
    497            struct elf_obj_tdata *elf_obj_data;
    498            struct nlm_obj_tdata *nlm_obj_data;
    499            struct bout_data_struct *bout_data;
    500            struct mmo_data_struct *mmo_data;
    501            struct sun_core_struct *sun_core_data;
    502            struct sco5_core_struct *sco5_core_data;
    503            struct trad_core_struct *trad_core_data;
    504            struct som_data_struct *som_data;
    505            struct hpux_core_struct *hpux_core_data;
    506            struct hppabsd_core_struct *hppabsd_core_data;
    507            struct sgi_core_struct *sgi_core_data;
    508            struct lynx_core_struct *lynx_core_data;
    509            struct osf_core_struct *osf_core_data;
    510            struct cisco_core_struct *cisco_core_data;
    511            struct versados_data_struct *versados_data;
    512            struct netbsd_core_struct *netbsd_core_data;
    513            struct mach_o_data_struct *mach_o_data;
    514            struct mach_o_fat_data_struct *mach_o_fat_data;
    515            struct bfd_pef_data_struct *pef_data;
    516            struct bfd_pef_xlib_data_struct *pef_xlib_data;
    517            struct bfd_sym_data_struct *sym_data;
    518            void *any;
    519          }
    520        tdata;
    521 
    522        /* Used by the application to hold private data.  */
    523        void *usrdata;
    524 
    525        /* Where all the allocated stuff under this BFD goes.  This is a
    526           struct objalloc *, but we use void * to avoid requiring the inclusion
    527           of objalloc.h.  */
    528        void *memory;
    529 
    530        /* Is the file descriptor being cached?  That is, can it be closed as
    531           needed, and re-opened when accessed later?  */
    532        unsigned int cacheable : 1;
    533 
    534        /* Marks whether there was a default target specified when the
    535           BFD was opened. This is used to select which matching algorithm
    536           to use to choose the back end.  */
    537        unsigned int target_defaulted : 1;
    538 
    539        /* ... and here: (``once'' means at least once).  */
    540        unsigned int opened_once : 1;
    541 
    542        /* Set if we have a locally maintained mtime value, rather than
    543           getting it from the file each time.  */
    544        unsigned int mtime_set : 1;
    545 
    546        /* Flag set if symbols from this BFD should not be exported.  */
    547        unsigned int no_export : 1;
    548 
    549        /* Remember when output has begun, to stop strange things
    550           from happening.  */
    551        unsigned int output_has_begun : 1;
    552 
    553        /* Have archive map.  */
    554        unsigned int has_armap : 1;
    555 
    556        /* Set if this is a thin archive.  */
    557        unsigned int is_thin_archive : 1;
    558      };
    559 
    560 2.2 Error reporting
    561 ===================
    562 
    563 Most BFD functions return nonzero on success (check their individual
    564 documentation for precise semantics).  On an error, they call
    565 `bfd_set_error' to set an error condition that callers can check by
    566 calling `bfd_get_error'.  If that returns `bfd_error_system_call', then
    567 check `errno'.
    568 
    569    The easiest way to report a BFD error to the user is to use
    570 `bfd_perror'.
    571 
    572 2.2.1 Type `bfd_error_type'
    573 ---------------------------
    574 
    575 The values returned by `bfd_get_error' are defined by the enumerated
    576 type `bfd_error_type'.
    577 
    578 
    579      typedef enum bfd_error
    580      {
    581        bfd_error_no_error = 0,
    582        bfd_error_system_call,
    583        bfd_error_invalid_target,
    584        bfd_error_wrong_format,
    585        bfd_error_wrong_object_format,
    586        bfd_error_invalid_operation,
    587        bfd_error_no_memory,
    588        bfd_error_no_symbols,
    589        bfd_error_no_armap,
    590        bfd_error_no_more_archived_files,
    591        bfd_error_malformed_archive,
    592        bfd_error_file_not_recognized,
    593        bfd_error_file_ambiguously_recognized,
    594        bfd_error_no_contents,
    595        bfd_error_nonrepresentable_section,
    596        bfd_error_no_debug_section,
    597        bfd_error_bad_value,
    598        bfd_error_file_truncated,
    599        bfd_error_file_too_big,
    600        bfd_error_on_input,
    601        bfd_error_invalid_error_code
    602      }
    603      bfd_error_type;
    604    
    605 2.2.1.1 `bfd_get_error'
    606 .......................
    607 
    608 *Synopsis*
    609      bfd_error_type bfd_get_error (void);
    610    *Description*
    611 Return the current BFD error condition.
    612 
    613 2.2.1.2 `bfd_set_error'
    614 .......................
    615 
    616 *Synopsis*
    617      void bfd_set_error (bfd_error_type error_tag, ...);
    618    *Description*
    619 Set the BFD error condition to be ERROR_TAG.  If ERROR_TAG is
    620 bfd_error_on_input, then this function takes two more parameters, the
    621 input bfd where the error occurred, and the bfd_error_type error.
    622 
    623 2.2.1.3 `bfd_errmsg'
    624 ....................
    625 
    626 *Synopsis*
    627      const char *bfd_errmsg (bfd_error_type error_tag);
    628    *Description*
    629 Return a string describing the error ERROR_TAG, or the system error if
    630 ERROR_TAG is `bfd_error_system_call'.
    631 
    632 2.2.1.4 `bfd_perror'
    633 ....................
    634 
    635 *Synopsis*
    636      void bfd_perror (const char *message);
    637    *Description*
    638 Print to the standard error stream a string describing the last BFD
    639 error that occurred, or the last system error if the last BFD error was
    640 a system call failure.  If MESSAGE is non-NULL and non-empty, the error
    641 string printed is preceded by MESSAGE, a colon, and a space.  It is
    642 followed by a newline.
    643 
    644 2.2.2 BFD error handler
    645 -----------------------
    646 
    647 Some BFD functions want to print messages describing the problem.  They
    648 call a BFD error handler function.  This function may be overridden by
    649 the program.
    650 
    651    The BFD error handler acts like printf.
    652 
    653 
    654      typedef void (*bfd_error_handler_type) (const char *, ...);
    655    
    656 2.2.2.1 `bfd_set_error_handler'
    657 ...............................
    658 
    659 *Synopsis*
    660      bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
    661    *Description*
    662 Set the BFD error handler function.  Returns the previous function.
    663 
    664 2.2.2.2 `bfd_set_error_program_name'
    665 ....................................
    666 
    667 *Synopsis*
    668      void bfd_set_error_program_name (const char *);
    669    *Description*
    670 Set the program name to use when printing a BFD error.  This is printed
    671 before the error message followed by a colon and space.  The string
    672 must not be changed after it is passed to this function.
    673 
    674 2.2.2.3 `bfd_get_error_handler'
    675 ...............................
    676 
    677 *Synopsis*
    678      bfd_error_handler_type bfd_get_error_handler (void);
    679    *Description*
    680 Return the BFD error handler function.
    681 
    682 2.3 Miscellaneous
    683 =================
    684 
    685 2.3.1 Miscellaneous functions
    686 -----------------------------
    687 
    688 2.3.1.1 `bfd_get_reloc_upper_bound'
    689 ...................................
    690 
    691 *Synopsis*
    692      long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
    693    *Description*
    694 Return the number of bytes required to store the relocation information
    695 associated with section SECT attached to bfd ABFD.  If an error occurs,
    696 return -1.
    697 
    698 2.3.1.2 `bfd_canonicalize_reloc'
    699 ................................
    700 
    701 *Synopsis*
    702      long bfd_canonicalize_reloc
    703         (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
    704    *Description*
    705 Call the back end associated with the open BFD ABFD and translate the
    706 external form of the relocation information attached to SEC into the
    707 internal canonical form.  Place the table into memory at LOC, which has
    708 been preallocated, usually by a call to `bfd_get_reloc_upper_bound'.
    709 Returns the number of relocs, or -1 on error.
    710 
    711    The SYMS table is also needed for horrible internal magic reasons.
    712 
    713 2.3.1.3 `bfd_set_reloc'
    714 .......................
    715 
    716 *Synopsis*
    717      void bfd_set_reloc
    718         (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
    719    *Description*
    720 Set the relocation pointer and count within section SEC to the values
    721 REL and COUNT.  The argument ABFD is ignored.
    722 
    723 2.3.1.4 `bfd_set_file_flags'
    724 ............................
    725 
    726 *Synopsis*
    727      bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
    728    *Description*
    729 Set the flag word in the BFD ABFD to the value FLAGS.
    730 
    731    Possible errors are:
    732    * `bfd_error_wrong_format' - The target bfd was not of object format.
    733 
    734    * `bfd_error_invalid_operation' - The target bfd was open for
    735      reading.
    736 
    737    * `bfd_error_invalid_operation' - The flag word contained a bit
    738      which was not applicable to the type of file.  E.g., an attempt
    739      was made to set the `D_PAGED' bit on a BFD format which does not
    740      support demand paging.
    741 
    742 2.3.1.5 `bfd_get_arch_size'
    743 ...........................
    744 
    745 *Synopsis*
    746      int bfd_get_arch_size (bfd *abfd);
    747    *Description*
    748 Returns the architecture address size, in bits, as determined by the
    749 object file's format.  For ELF, this information is included in the
    750 header.
    751 
    752    *Returns*
    753 Returns the arch size in bits if known, `-1' otherwise.
    754 
    755 2.3.1.6 `bfd_get_sign_extend_vma'
    756 .................................
    757 
    758 *Synopsis*
    759      int bfd_get_sign_extend_vma (bfd *abfd);
    760    *Description*
    761 Indicates if the target architecture "naturally" sign extends an
    762 address.  Some architectures implicitly sign extend address values when
    763 they are converted to types larger than the size of an address.  For
    764 instance, bfd_get_start_address() will return an address sign extended
    765 to fill a bfd_vma when this is the case.
    766 
    767    *Returns*
    768 Returns `1' if the target architecture is known to sign extend
    769 addresses, `0' if the target architecture is known to not sign extend
    770 addresses, and `-1' otherwise.
    771 
    772 2.3.1.7 `bfd_set_start_address'
    773 ...............................
    774 
    775 *Synopsis*
    776      bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
    777    *Description*
    778 Make VMA the entry point of output BFD ABFD.
    779 
    780    *Returns*
    781 Returns `TRUE' on success, `FALSE' otherwise.
    782 
    783 2.3.1.8 `bfd_get_gp_size'
    784 .........................
    785 
    786 *Synopsis*
    787      unsigned int bfd_get_gp_size (bfd *abfd);
    788    *Description*
    789 Return the maximum size of objects to be optimized using the GP
    790 register under MIPS ECOFF.  This is typically set by the `-G' argument
    791 to the compiler, assembler or linker.
    792 
    793 2.3.1.9 `bfd_set_gp_size'
    794 .........................
    795 
    796 *Synopsis*
    797      void bfd_set_gp_size (bfd *abfd, unsigned int i);
    798    *Description*
    799 Set the maximum size of objects to be optimized using the GP register
    800 under ECOFF or MIPS ELF.  This is typically set by the `-G' argument to
    801 the compiler, assembler or linker.
    802 
    803 2.3.1.10 `bfd_scan_vma'
    804 .......................
    805 
    806 *Synopsis*
    807      bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
    808    *Description*
    809 Convert, like `strtoul', a numerical expression STRING into a `bfd_vma'
    810 integer, and return that integer.  (Though without as many bells and
    811 whistles as `strtoul'.)  The expression is assumed to be unsigned
    812 (i.e., positive).  If given a BASE, it is used as the base for
    813 conversion.  A base of 0 causes the function to interpret the string in
    814 hex if a leading "0x" or "0X" is found, otherwise in octal if a leading
    815 zero is found, otherwise in decimal.
    816 
    817    If the value would overflow, the maximum `bfd_vma' value is returned.
    818 
    819 2.3.1.11 `bfd_copy_private_header_data'
    820 .......................................
    821 
    822 *Synopsis*
    823      bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
    824    *Description*
    825 Copy private BFD header information from the BFD IBFD to the the BFD
    826 OBFD.  This copies information that may require sections to exist, but
    827 does not require symbol tables.  Return `true' on success, `false' on
    828 error.  Possible error returns are:
    829 
    830    * `bfd_error_no_memory' - Not enough memory exists to create private
    831      data for OBFD.
    832 
    833      #define bfd_copy_private_header_data(ibfd, obfd) \
    834           BFD_SEND (obfd, _bfd_copy_private_header_data, \
    835                     (ibfd, obfd))
    836 
    837 2.3.1.12 `bfd_copy_private_bfd_data'
    838 ....................................
    839 
    840 *Synopsis*
    841      bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
    842    *Description*
    843 Copy private BFD information from the BFD IBFD to the the BFD OBFD.
    844 Return `TRUE' on success, `FALSE' on error.  Possible error returns are:
    845 
    846    * `bfd_error_no_memory' - Not enough memory exists to create private
    847      data for OBFD.
    848 
    849      #define bfd_copy_private_bfd_data(ibfd, obfd) \
    850           BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
    851                     (ibfd, obfd))
    852 
    853 2.3.1.13 `bfd_merge_private_bfd_data'
    854 .....................................
    855 
    856 *Synopsis*
    857      bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
    858    *Description*
    859 Merge private BFD information from the BFD IBFD to the the output file
    860 BFD OBFD when linking.  Return `TRUE' on success, `FALSE' on error.
    861 Possible error returns are:
    862 
    863    * `bfd_error_no_memory' - Not enough memory exists to create private
    864      data for OBFD.
    865 
    866      #define bfd_merge_private_bfd_data(ibfd, obfd) \
    867           BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
    868                     (ibfd, obfd))
    869 
    870 2.3.1.14 `bfd_set_private_flags'
    871 ................................
    872 
    873 *Synopsis*
    874      bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
    875    *Description*
    876 Set private BFD flag information in the BFD ABFD.  Return `TRUE' on
    877 success, `FALSE' on error.  Possible error returns are:
    878 
    879    * `bfd_error_no_memory' - Not enough memory exists to create private
    880      data for OBFD.
    881 
    882      #define bfd_set_private_flags(abfd, flags) \
    883           BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
    884 
    885 2.3.1.15 `Other functions'
    886 ..........................
    887 
    888 *Description*
    889 The following functions exist but have not yet been documented.
    890      #define bfd_sizeof_headers(abfd, info) \
    891             BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
    892 
    893      #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
    894             BFD_SEND (abfd, _bfd_find_nearest_line, \
    895                       (abfd, sec, syms, off, file, func, line))
    896 
    897      #define bfd_find_line(abfd, syms, sym, file, line) \
    898             BFD_SEND (abfd, _bfd_find_line, \
    899                       (abfd, syms, sym, file, line))
    900 
    901      #define bfd_find_inliner_info(abfd, file, func, line) \
    902             BFD_SEND (abfd, _bfd_find_inliner_info, \
    903                       (abfd, file, func, line))
    904 
    905      #define bfd_debug_info_start(abfd) \
    906             BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
    907 
    908      #define bfd_debug_info_end(abfd) \
    909             BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
    910 
    911      #define bfd_debug_info_accumulate(abfd, section) \
    912             BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
    913 
    914      #define bfd_stat_arch_elt(abfd, stat) \
    915             BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
    916 
    917      #define bfd_update_armap_timestamp(abfd) \
    918             BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
    919 
    920      #define bfd_set_arch_mach(abfd, arch, mach)\
    921             BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
    922 
    923      #define bfd_relax_section(abfd, section, link_info, again) \
    924             BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
    925 
    926      #define bfd_gc_sections(abfd, link_info) \
    927             BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
    928 
    929      #define bfd_merge_sections(abfd, link_info) \
    930             BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
    931 
    932      #define bfd_is_group_section(abfd, sec) \
    933             BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
    934 
    935      #define bfd_discard_group(abfd, sec) \
    936             BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
    937 
    938      #define bfd_link_hash_table_create(abfd) \
    939             BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
    940 
    941      #define bfd_link_hash_table_free(abfd, hash) \
    942             BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
    943 
    944      #define bfd_link_add_symbols(abfd, info) \
    945             BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
    946 
    947      #define bfd_link_just_syms(abfd, sec, info) \
    948             BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
    949 
    950      #define bfd_final_link(abfd, info) \
    951             BFD_SEND (abfd, _bfd_final_link, (abfd, info))
    952 
    953      #define bfd_free_cached_info(abfd) \
    954             BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
    955 
    956      #define bfd_get_dynamic_symtab_upper_bound(abfd) \
    957             BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
    958 
    959      #define bfd_print_private_bfd_data(abfd, file)\
    960             BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
    961 
    962      #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
    963             BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
    964 
    965      #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
    966             BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
    967                                                         dyncount, dynsyms, ret))
    968 
    969      #define bfd_get_dynamic_reloc_upper_bound(abfd) \
    970             BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
    971 
    972      #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
    973             BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
    974 
    975      extern bfd_byte *bfd_get_relocated_section_contents
    976        (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
    977         bfd_boolean, asymbol **);
    978 
    979 2.3.1.16 `bfd_alt_mach_code'
    980 ............................
    981 
    982 *Synopsis*
    983      bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
    984    *Description*
    985 When more than one machine code number is available for the same
    986 machine type, this function can be used to switch between the preferred
    987 one (alternative == 0) and any others.  Currently, only ELF supports
    988 this feature, with up to two alternate machine codes.
    989 
    990      struct bfd_preserve
    991      {
    992        void *marker;
    993        void *tdata;
    994        flagword flags;
    995        const struct bfd_arch_info *arch_info;
    996        struct bfd_section *sections;
    997        struct bfd_section *section_last;
    998        unsigned int section_count;
    999        struct bfd_hash_table section_htab;
   1000      };
   1001    
   1002 2.3.1.17 `bfd_preserve_save'
   1003 ............................
   1004 
   1005 *Synopsis*
   1006      bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
   1007    *Description*
   1008 When testing an object for compatibility with a particular target
   1009 back-end, the back-end object_p function needs to set up certain fields
   1010 in the bfd on successfully recognizing the object.  This typically
   1011 happens in a piecemeal fashion, with failures possible at many points.
   1012 On failure, the bfd is supposed to be restored to its initial state,
   1013 which is virtually impossible.  However, restoring a subset of the bfd
   1014 state works in practice.  This function stores the subset and
   1015 reinitializes the bfd.
   1016 
   1017 2.3.1.18 `bfd_preserve_restore'
   1018 ...............................
   1019 
   1020 *Synopsis*
   1021      void bfd_preserve_restore (bfd *, struct bfd_preserve *);
   1022    *Description*
   1023 This function restores bfd state saved by bfd_preserve_save.  If MARKER
   1024 is non-NULL in struct bfd_preserve then that block and all subsequently
   1025 bfd_alloc'd memory is freed.
   1026 
   1027 2.3.1.19 `bfd_preserve_finish'
   1028 ..............................
   1029 
   1030 *Synopsis*
   1031      void bfd_preserve_finish (bfd *, struct bfd_preserve *);
   1032    *Description*
   1033 This function should be called when the bfd state saved by
   1034 bfd_preserve_save is no longer needed.  ie. when the back-end object_p
   1035 function returns with success.
   1036 
   1037 2.3.1.20 `bfd_emul_get_maxpagesize'
   1038 ...................................
   1039 
   1040 *Synopsis*
   1041      bfd_vma bfd_emul_get_maxpagesize (const char *);
   1042    *Description*
   1043 Returns the maximum page size, in bytes, as determined by emulation.
   1044 
   1045    *Returns*
   1046 Returns the maximum page size in bytes for ELF, abort otherwise.
   1047 
   1048 2.3.1.21 `bfd_emul_set_maxpagesize'
   1049 ...................................
   1050 
   1051 *Synopsis*
   1052      void bfd_emul_set_maxpagesize (const char *, bfd_vma);
   1053    *Description*
   1054 For ELF, set the maximum page size for the emulation.  It is a no-op
   1055 for other formats.
   1056 
   1057 2.3.1.22 `bfd_emul_get_commonpagesize'
   1058 ......................................
   1059 
   1060 *Synopsis*
   1061      bfd_vma bfd_emul_get_commonpagesize (const char *);
   1062    *Description*
   1063 Returns the common page size, in bytes, as determined by emulation.
   1064 
   1065    *Returns*
   1066 Returns the common page size in bytes for ELF, abort otherwise.
   1067 
   1068 2.3.1.23 `bfd_emul_set_commonpagesize'
   1069 ......................................
   1070 
   1071 *Synopsis*
   1072      void bfd_emul_set_commonpagesize (const char *, bfd_vma);
   1073    *Description*
   1074 For ELF, set the common page size for the emulation.  It is a no-op for
   1075 other formats.
   1076 
   1077 2.3.1.24 `bfd_demangle'
   1078 .......................
   1079 
   1080 *Synopsis*
   1081      char *bfd_demangle (bfd *, const char *, int);
   1082    *Description*
   1083 Wrapper around cplus_demangle.  Strips leading underscores and other
   1084 such chars that would otherwise confuse the demangler.  If passed a g++
   1085 v3 ABI mangled name, returns a buffer allocated with malloc holding the
   1086 demangled name.  Returns NULL otherwise and on memory alloc failure.
   1087 
   1088 2.3.1.25 `struct bfd_iovec'
   1089 ...........................
   1090 
   1091 *Description*
   1092 The `struct bfd_iovec' contains the internal file I/O class.  Each
   1093 `BFD' has an instance of this class and all file I/O is routed through
   1094 it (it is assumed that the instance implements all methods listed
   1095 below).
   1096      struct bfd_iovec
   1097      {
   1098        /* To avoid problems with macros, a "b" rather than "f"
   1099           prefix is prepended to each method name.  */
   1100        /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
   1101           bytes starting at PTR.  Return the number of bytes actually
   1102           transfered (a read past end-of-file returns less than NBYTES),
   1103           or -1 (setting `bfd_error') if an error occurs.  */
   1104        file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
   1105        file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
   1106                            file_ptr nbytes);
   1107        /* Return the current IOSTREAM file offset, or -1 (setting `bfd_error'
   1108           if an error occurs.  */
   1109        file_ptr (*btell) (struct bfd *abfd);
   1110        /* For the following, on successful completion a value of 0 is returned.
   1111           Otherwise, a value of -1 is returned (and  `bfd_error' is set).  */
   1112        int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
   1113        int (*bclose) (struct bfd *abfd);
   1114        int (*bflush) (struct bfd *abfd);
   1115        int (*bstat) (struct bfd *abfd, struct stat *sb);
   1116      };
   1117 
   1118 2.3.1.26 `bfd_get_mtime'
   1119 ........................
   1120 
   1121 *Synopsis*
   1122      long bfd_get_mtime (bfd *abfd);
   1123    *Description*
   1124 Return the file modification time (as read from the file system, or
   1125 from the archive header for archive members).
   1126 
   1127 2.3.1.27 `bfd_get_size'
   1128 .......................
   1129 
   1130 *Synopsis*
   1131      file_ptr bfd_get_size (bfd *abfd);
   1132    *Description*
   1133 Return the file size (as read from file system) for the file associated
   1134 with BFD ABFD.
   1135 
   1136    The initial motivation for, and use of, this routine is not so we
   1137 can get the exact size of the object the BFD applies to, since that
   1138 might not be generally possible (archive members for example).  It
   1139 would be ideal if someone could eventually modify it so that such
   1140 results were guaranteed.
   1141 
   1142    Instead, we want to ask questions like "is this NNN byte sized
   1143 object I'm about to try read from file offset YYY reasonable?"  As as
   1144 example of where we might do this, some object formats use string
   1145 tables for which the first `sizeof (long)' bytes of the table contain
   1146 the size of the table itself, including the size bytes.  If an
   1147 application tries to read what it thinks is one of these string tables,
   1148 without some way to validate the size, and for some reason the size is
   1149 wrong (byte swapping error, wrong location for the string table, etc.),
   1150 the only clue is likely to be a read error when it tries to read the
   1151 table, or a "virtual memory exhausted" error when it tries to allocate
   1152 15 bazillon bytes of space for the 15 bazillon byte table it is about
   1153 to read.  This function at least allows us to answer the question, "is
   1154 the size reasonable?".
   1155 
   1156 * Menu:
   1157 
   1158 * Memory Usage::
   1159 * Initialization::
   1160 * Sections::
   1161 * Symbols::
   1162 * Archives::
   1163 * Formats::
   1164 * Relocations::
   1165 * Core Files::
   1166 * Targets::
   1167 * Architectures::
   1168 * Opening and Closing::
   1169 * Internal::
   1170 * File Caching::
   1171 * Linker Functions::
   1172 * Hash Tables::
   1173 
   1174 
   1175 File: bfd.info,  Node: Memory Usage,  Next: Initialization,  Prev: BFD front end,  Up: BFD front end
   1176 
   1177 2.4 Memory Usage
   1178 ================
   1179 
   1180 BFD keeps all of its internal structures in obstacks. There is one
   1181 obstack per open BFD file, into which the current state is stored. When
   1182 a BFD is closed, the obstack is deleted, and so everything which has
   1183 been allocated by BFD for the closing file is thrown away.
   1184 
   1185    BFD does not free anything created by an application, but pointers
   1186 into `bfd' structures become invalid on a `bfd_close'; for example,
   1187 after a `bfd_close' the vector passed to `bfd_canonicalize_symtab' is
   1188 still around, since it has been allocated by the application, but the
   1189 data that it pointed to are lost.
   1190 
   1191    The general rule is to not close a BFD until all operations dependent
   1192 upon data from the BFD have been completed, or all the data from within
   1193 the file has been copied. To help with the management of memory, there
   1194 is a function (`bfd_alloc_size') which returns the number of bytes in
   1195 obstacks associated with the supplied BFD. This could be used to select
   1196 the greediest open BFD, close it to reclaim the memory, perform some
   1197 operation and reopen the BFD again, to get a fresh copy of the data
   1198 structures.
   1199 
   1200 
   1201 File: bfd.info,  Node: Initialization,  Next: Sections,  Prev: Memory Usage,  Up: BFD front end
   1202 
   1203 2.5 Initialization
   1204 ==================
   1205 
   1206 2.5.1 Initialization functions
   1207 ------------------------------
   1208 
   1209 These are the functions that handle initializing a BFD.
   1210 
   1211 2.5.1.1 `bfd_init'
   1212 ..................
   1213 
   1214 *Synopsis*
   1215      void bfd_init (void);
   1216    *Description*
   1217 This routine must be called before any other BFD function to initialize
   1218 magical internal data structures.
   1219 
   1220 
   1221 File: bfd.info,  Node: Sections,  Next: Symbols,  Prev: Initialization,  Up: BFD front end
   1222 
   1223 2.6 Sections
   1224 ============
   1225 
   1226 The raw data contained within a BFD is maintained through the section
   1227 abstraction.  A single BFD may have any number of sections.  It keeps
   1228 hold of them by pointing to the first; each one points to the next in
   1229 the list.
   1230 
   1231    Sections are supported in BFD in `section.c'.
   1232 
   1233 * Menu:
   1234 
   1235 * Section Input::
   1236 * Section Output::
   1237 * typedef asection::
   1238 * section prototypes::
   1239 
   1240 
   1241 File: bfd.info,  Node: Section Input,  Next: Section Output,  Prev: Sections,  Up: Sections
   1242 
   1243 2.6.1 Section input
   1244 -------------------
   1245 
   1246 When a BFD is opened for reading, the section structures are created
   1247 and attached to the BFD.
   1248 
   1249    Each section has a name which describes the section in the outside
   1250 world--for example, `a.out' would contain at least three sections,
   1251 called `.text', `.data' and `.bss'.
   1252 
   1253    Names need not be unique; for example a COFF file may have several
   1254 sections named `.data'.
   1255 
   1256    Sometimes a BFD will contain more than the "natural" number of
   1257 sections. A back end may attach other sections containing constructor
   1258 data, or an application may add a section (using `bfd_make_section') to
   1259 the sections attached to an already open BFD. For example, the linker
   1260 creates an extra section `COMMON' for each input file's BFD to hold
   1261 information about common storage.
   1262 
   1263    The raw data is not necessarily read in when the section descriptor
   1264 is created. Some targets may leave the data in place until a
   1265 `bfd_get_section_contents' call is made. Other back ends may read in
   1266 all the data at once.  For example, an S-record file has to be read
   1267 once to determine the size of the data. An IEEE-695 file doesn't
   1268 contain raw data in sections, but data and relocation expressions
   1269 intermixed, so the data area has to be parsed to get out the data and
   1270 relocations.
   1271 
   1272 
   1273 File: bfd.info,  Node: Section Output,  Next: typedef asection,  Prev: Section Input,  Up: Sections
   1274 
   1275 2.6.2 Section output
   1276 --------------------
   1277 
   1278 To write a new object style BFD, the various sections to be written
   1279 have to be created. They are attached to the BFD in the same way as
   1280 input sections; data is written to the sections using
   1281 `bfd_set_section_contents'.
   1282 
   1283    Any program that creates or combines sections (e.g., the assembler
   1284 and linker) must use the `asection' fields `output_section' and
   1285 `output_offset' to indicate the file sections to which each section
   1286 must be written.  (If the section is being created from scratch,
   1287 `output_section' should probably point to the section itself and
   1288 `output_offset' should probably be zero.)
   1289 
   1290    The data to be written comes from input sections attached (via
   1291 `output_section' pointers) to the output sections.  The output section
   1292 structure can be considered a filter for the input section: the output
   1293 section determines the vma of the output data and the name, but the
   1294 input section determines the offset into the output section of the data
   1295 to be written.
   1296 
   1297    E.g., to create a section "O", starting at 0x100, 0x123 long,
   1298 containing two subsections, "A" at offset 0x0 (i.e., at vma 0x100) and
   1299 "B" at offset 0x20 (i.e., at vma 0x120) the `asection' structures would
   1300 look like:
   1301 
   1302         section name          "A"
   1303           output_offset   0x00
   1304           size            0x20
   1305           output_section ----------->  section name    "O"
   1306                                   |    vma             0x100
   1307         section name          "B" |    size            0x123
   1308           output_offset   0x20    |
   1309           size            0x103   |
   1310           output_section  --------|
   1311 
   1312 2.6.3 Link orders
   1313 -----------------
   1314 
   1315 The data within a section is stored in a "link_order".  These are much
   1316 like the fixups in `gas'.  The link_order abstraction allows a section
   1317 to grow and shrink within itself.
   1318 
   1319    A link_order knows how big it is, and which is the next link_order
   1320 and where the raw data for it is; it also points to a list of
   1321 relocations which apply to it.
   1322 
   1323    The link_order is used by the linker to perform relaxing on final
   1324 code.  The compiler creates code which is as big as necessary to make
   1325 it work without relaxing, and the user can select whether to relax.
   1326 Sometimes relaxing takes a lot of time.  The linker runs around the
   1327 relocations to see if any are attached to data which can be shrunk, if
   1328 so it does it on a link_order by link_order basis.
   1329 
   1330 
   1331 File: bfd.info,  Node: typedef asection,  Next: section prototypes,  Prev: Section Output,  Up: Sections
   1332 
   1333 2.6.4 typedef asection
   1334 ----------------------
   1335 
   1336 Here is the section structure:
   1337 
   1338 
   1339      typedef struct bfd_section
   1340      {
   1341        /* The name of the section; the name isn't a copy, the pointer is
   1342           the same as that passed to bfd_make_section.  */
   1343        const char *name;
   1344 
   1345        /* A unique sequence number.  */
   1346        int id;
   1347 
   1348        /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
   1349        int index;
   1350 
   1351        /* The next section in the list belonging to the BFD, or NULL.  */
   1352        struct bfd_section *next;
   1353 
   1354        /* The previous section in the list belonging to the BFD, or NULL.  */
   1355        struct bfd_section *prev;
   1356 
   1357        /* The field flags contains attributes of the section. Some
   1358           flags are read in from the object file, and some are
   1359           synthesized from other information.  */
   1360        flagword flags;
   1361 
   1362      #define SEC_NO_FLAGS   0x000
   1363 
   1364        /* Tells the OS to allocate space for this section when loading.
   1365           This is clear for a section containing debug information only.  */
   1366      #define SEC_ALLOC      0x001
   1367 
   1368        /* Tells the OS to load the section from the file when loading.
   1369           This is clear for a .bss section.  */
   1370      #define SEC_LOAD       0x002
   1371 
   1372        /* The section contains data still to be relocated, so there is
   1373           some relocation information too.  */
   1374      #define SEC_RELOC      0x004
   1375 
   1376        /* A signal to the OS that the section contains read only data.  */
   1377      #define SEC_READONLY   0x008
   1378 
   1379        /* The section contains code only.  */
   1380      #define SEC_CODE       0x010
   1381 
   1382        /* The section contains data only.  */
   1383      #define SEC_DATA       0x020
   1384 
   1385        /* The section will reside in ROM.  */
   1386      #define SEC_ROM        0x040
   1387 
   1388        /* The section contains constructor information. This section
   1389           type is used by the linker to create lists of constructors and
   1390           destructors used by `g++'. When a back end sees a symbol
   1391           which should be used in a constructor list, it creates a new
   1392           section for the type of name (e.g., `__CTOR_LIST__'), attaches
   1393           the symbol to it, and builds a relocation. To build the lists
   1394           of constructors, all the linker has to do is catenate all the
   1395           sections called `__CTOR_LIST__' and relocate the data
   1396           contained within - exactly the operations it would peform on
   1397           standard data.  */
   1398      #define SEC_CONSTRUCTOR 0x080
   1399 
   1400        /* The section has contents - a data section could be
   1401           `SEC_ALLOC' | `SEC_HAS_CONTENTS'; a debug section could be
   1402           `SEC_HAS_CONTENTS'  */
   1403      #define SEC_HAS_CONTENTS 0x100
   1404 
   1405        /* An instruction to the linker to not output the section
   1406           even if it has information which would normally be written.  */
   1407      #define SEC_NEVER_LOAD 0x200
   1408 
   1409        /* The section contains thread local data.  */
   1410      #define SEC_THREAD_LOCAL 0x400
   1411 
   1412        /* The section has GOT references.  This flag is only for the
   1413           linker, and is currently only used by the elf32-hppa back end.
   1414           It will be set if global offset table references were detected
   1415           in this section, which indicate to the linker that the section
   1416           contains PIC code, and must be handled specially when doing a
   1417           static link.  */
   1418      #define SEC_HAS_GOT_REF 0x800
   1419 
   1420        /* The section contains common symbols (symbols may be defined
   1421           multiple times, the value of a symbol is the amount of
   1422           space it requires, and the largest symbol value is the one
   1423           used).  Most targets have exactly one of these (which we
   1424           translate to bfd_com_section_ptr), but ECOFF has two.  */
   1425      #define SEC_IS_COMMON 0x1000
   1426 
   1427        /* The section contains only debugging information.  For
   1428           example, this is set for ELF .debug and .stab sections.
   1429           strip tests this flag to see if a section can be
   1430           discarded.  */
   1431      #define SEC_DEBUGGING 0x2000
   1432 
   1433        /* The contents of this section are held in memory pointed to
   1434           by the contents field.  This is checked by bfd_get_section_contents,
   1435           and the data is retrieved from memory if appropriate.  */
   1436      #define SEC_IN_MEMORY 0x4000
   1437 
   1438        /* The contents of this section are to be excluded by the
   1439           linker for executable and shared objects unless those
   1440           objects are to be further relocated.  */
   1441      #define SEC_EXCLUDE 0x8000
   1442 
   1443        /* The contents of this section are to be sorted based on the sum of
   1444           the symbol and addend values specified by the associated relocation
   1445           entries.  Entries without associated relocation entries will be
   1446           appended to the end of the section in an unspecified order.  */
   1447      #define SEC_SORT_ENTRIES 0x10000
   1448 
   1449        /* When linking, duplicate sections of the same name should be
   1450           discarded, rather than being combined into a single section as
   1451           is usually done.  This is similar to how common symbols are
   1452           handled.  See SEC_LINK_DUPLICATES below.  */
   1453      #define SEC_LINK_ONCE 0x20000
   1454 
   1455        /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
   1456           should handle duplicate sections.  */
   1457      #define SEC_LINK_DUPLICATES 0xc0000
   1458 
   1459        /* This value for SEC_LINK_DUPLICATES means that duplicate
   1460           sections with the same name should simply be discarded.  */
   1461      #define SEC_LINK_DUPLICATES_DISCARD 0x0
   1462 
   1463        /* This value for SEC_LINK_DUPLICATES means that the linker
   1464           should warn if there are any duplicate sections, although
   1465           it should still only link one copy.  */
   1466      #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000
   1467 
   1468        /* This value for SEC_LINK_DUPLICATES means that the linker
   1469           should warn if any duplicate sections are a different size.  */
   1470      #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000
   1471 
   1472        /* This value for SEC_LINK_DUPLICATES means that the linker
   1473           should warn if any duplicate sections contain different
   1474           contents.  */
   1475      #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
   1476        (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
   1477 
   1478        /* This section was created by the linker as part of dynamic
   1479           relocation or other arcane processing.  It is skipped when
   1480           going through the first-pass output, trusting that someone
   1481           else up the line will take care of it later.  */
   1482      #define SEC_LINKER_CREATED 0x100000
   1483 
   1484        /* This section should not be subject to garbage collection.
   1485           Also set to inform the linker that this section should not be
   1486           listed in the link map as discarded.  */
   1487      #define SEC_KEEP 0x200000
   1488 
   1489        /* This section contains "short" data, and should be placed
   1490           "near" the GP.  */
   1491      #define SEC_SMALL_DATA 0x400000
   1492 
   1493        /* Attempt to merge identical entities in the section.
   1494           Entity size is given in the entsize field.  */
   1495      #define SEC_MERGE 0x800000
   1496 
   1497        /* If given with SEC_MERGE, entities to merge are zero terminated
   1498           strings where entsize specifies character size instead of fixed
   1499           size entries.  */
   1500      #define SEC_STRINGS 0x1000000
   1501 
   1502        /* This section contains data about section groups.  */
   1503      #define SEC_GROUP 0x2000000
   1504 
   1505        /* The section is a COFF shared library section.  This flag is
   1506           only for the linker.  If this type of section appears in
   1507           the input file, the linker must copy it to the output file
   1508           without changing the vma or size.  FIXME: Although this
   1509           was originally intended to be general, it really is COFF
   1510           specific (and the flag was renamed to indicate this).  It
   1511           might be cleaner to have some more general mechanism to
   1512           allow the back end to control what the linker does with
   1513           sections.  */
   1514      #define SEC_COFF_SHARED_LIBRARY 0x4000000
   1515 
   1516        /* This section contains data which may be shared with other
   1517           executables or shared objects. This is for COFF only.  */
   1518      #define SEC_COFF_SHARED 0x8000000
   1519 
   1520        /* When a section with this flag is being linked, then if the size of
   1521           the input section is less than a page, it should not cross a page
   1522           boundary.  If the size of the input section is one page or more,
   1523           it should be aligned on a page boundary.  This is for TI
   1524           TMS320C54X only.  */
   1525      #define SEC_TIC54X_BLOCK 0x10000000
   1526 
   1527        /* Conditionally link this section; do not link if there are no
   1528           references found to any symbol in the section.  This is for TI
   1529           TMS320C54X only.  */
   1530      #define SEC_TIC54X_CLINK 0x20000000
   1531 
   1532        /*  End of section flags.  */
   1533 
   1534        /* Some internal packed boolean fields.  */
   1535 
   1536        /* See the vma field.  */
   1537        unsigned int user_set_vma : 1;
   1538 
   1539        /* A mark flag used by some of the linker backends.  */
   1540        unsigned int linker_mark : 1;
   1541 
   1542        /* Another mark flag used by some of the linker backends.  Set for
   1543           output sections that have an input section.  */
   1544        unsigned int linker_has_input : 1;
   1545 
   1546        /* Mark flag used by some linker backends for garbage collection.  */
   1547        unsigned int gc_mark : 1;
   1548 
   1549        /* The following flags are used by the ELF linker. */
   1550 
   1551        /* Mark sections which have been allocated to segments.  */
   1552        unsigned int segment_mark : 1;
   1553 
   1554        /* Type of sec_info information.  */
   1555        unsigned int sec_info_type:3;
   1556      #define ELF_INFO_TYPE_NONE      0
   1557      #define ELF_INFO_TYPE_STABS     1
   1558      #define ELF_INFO_TYPE_MERGE     2
   1559      #define ELF_INFO_TYPE_EH_FRAME  3
   1560      #define ELF_INFO_TYPE_JUST_SYMS 4
   1561 
   1562        /* Nonzero if this section uses RELA relocations, rather than REL.  */
   1563        unsigned int use_rela_p:1;
   1564 
   1565        /* Bits used by various backends.  The generic code doesn't touch
   1566           these fields.  */
   1567 
   1568        /* Nonzero if this section has TLS related relocations.  */
   1569        unsigned int has_tls_reloc:1;
   1570 
   1571        /* Nonzero if this section has a gp reloc.  */
   1572        unsigned int has_gp_reloc:1;
   1573 
   1574        /* Nonzero if this section needs the relax finalize pass.  */
   1575        unsigned int need_finalize_relax:1;
   1576 
   1577        /* Whether relocations have been processed.  */
   1578        unsigned int reloc_done : 1;
   1579 
   1580        /* End of internal packed boolean fields.  */
   1581 
   1582        /*  The virtual memory address of the section - where it will be
   1583            at run time.  The symbols are relocated against this.  The
   1584            user_set_vma flag is maintained by bfd; if it's not set, the
   1585            backend can assign addresses (for example, in `a.out', where
   1586            the default address for `.data' is dependent on the specific
   1587            target and various flags).  */
   1588        bfd_vma vma;
   1589 
   1590        /*  The load address of the section - where it would be in a
   1591            rom image; really only used for writing section header
   1592            information.  */
   1593        bfd_vma lma;
   1594 
   1595        /* The size of the section in octets, as it will be output.
   1596           Contains a value even if the section has no contents (e.g., the
   1597           size of `.bss').  */
   1598        bfd_size_type size;
   1599 
   1600        /* For input sections, the original size on disk of the section, in
   1601           octets.  This field should be set for any section whose size is
   1602           changed by linker relaxation.  It is required for sections where
   1603           the linker relaxation scheme doesn't cache altered section and
   1604           reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
   1605           targets), and thus the original size needs to be kept to read the
   1606           section multiple times.  For output sections, rawsize holds the
   1607           section size calculated on a previous linker relaxation pass.  */
   1608        bfd_size_type rawsize;
   1609 
   1610        /* If this section is going to be output, then this value is the
   1611           offset in *bytes* into the output section of the first byte in the
   1612           input section (byte ==> smallest addressable unit on the
   1613           target).  In most cases, if this was going to start at the
   1614           100th octet (8-bit quantity) in the output section, this value
   1615           would be 100.  However, if the target byte size is 16 bits
   1616           (bfd_octets_per_byte is "2"), this value would be 50.  */
   1617        bfd_vma output_offset;
   1618 
   1619        /* The output section through which to map on output.  */
   1620        struct bfd_section *output_section;
   1621 
   1622        /* The alignment requirement of the section, as an exponent of 2 -
   1623           e.g., 3 aligns to 2^3 (or 8).  */
   1624        unsigned int alignment_power;
   1625 
   1626        /* If an input section, a pointer to a vector of relocation
   1627           records for the data in this section.  */
   1628        struct reloc_cache_entry *relocation;
   1629 
   1630        /* If an output section, a pointer to a vector of pointers to
   1631           relocation records for the data in this section.  */
   1632        struct reloc_cache_entry **orelocation;
   1633 
   1634        /* The number of relocation records in one of the above.  */
   1635        unsigned reloc_count;
   1636 
   1637        /* Information below is back end specific - and not always used
   1638           or updated.  */
   1639 
   1640        /* File position of section data.  */
   1641        file_ptr filepos;
   1642 
   1643        /* File position of relocation info.  */
   1644        file_ptr rel_filepos;
   1645 
   1646        /* File position of line data.  */
   1647        file_ptr line_filepos;
   1648 
   1649        /* Pointer to data for applications.  */
   1650        void *userdata;
   1651 
   1652        /* If the SEC_IN_MEMORY flag is set, this points to the actual
   1653           contents.  */
   1654        unsigned char *contents;
   1655 
   1656        /* Attached line number information.  */
   1657        alent *lineno;
   1658 
   1659        /* Number of line number records.  */
   1660        unsigned int lineno_count;
   1661 
   1662        /* Entity size for merging purposes.  */
   1663        unsigned int entsize;
   1664 
   1665        /* Points to the kept section if this section is a link-once section,
   1666           and is discarded.  */
   1667        struct bfd_section *kept_section;
   1668 
   1669        /* When a section is being output, this value changes as more
   1670           linenumbers are written out.  */
   1671        file_ptr moving_line_filepos;
   1672 
   1673        /* What the section number is in the target world.  */
   1674        int target_index;
   1675 
   1676        void *used_by_bfd;
   1677 
   1678        /* If this is a constructor section then here is a list of the
   1679           relocations created to relocate items within it.  */
   1680        struct relent_chain *constructor_chain;
   1681 
   1682        /* The BFD which owns the section.  */
   1683        bfd *owner;
   1684 
   1685        /* A symbol which points at this section only.  */
   1686        struct bfd_symbol *symbol;
   1687        struct bfd_symbol **symbol_ptr_ptr;
   1688 
   1689        /* Early in the link process, map_head and map_tail are used to build
   1690           a list of input sections attached to an output section.  Later,
   1691           output sections use these fields for a list of bfd_link_order
   1692           structs.  */
   1693        union {
   1694          struct bfd_link_order *link_order;
   1695          struct bfd_section *s;
   1696        } map_head, map_tail;
   1697      } asection;
   1698 
   1699      /* These sections are global, and are managed by BFD.  The application
   1700         and target back end are not permitted to change the values in
   1701         these sections.  New code should use the section_ptr macros rather
   1702         than referring directly to the const sections.  The const sections
   1703         may eventually vanish.  */
   1704      #define BFD_ABS_SECTION_NAME "*ABS*"
   1705      #define BFD_UND_SECTION_NAME "*UND*"
   1706      #define BFD_COM_SECTION_NAME "*COM*"
   1707      #define BFD_IND_SECTION_NAME "*IND*"
   1708 
   1709      /* The absolute section.  */
   1710      extern asection bfd_abs_section;
   1711      #define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
   1712      #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
   1713      /* Pointer to the undefined section.  */
   1714      extern asection bfd_und_section;
   1715      #define bfd_und_section_ptr ((asection *) &bfd_und_section)
   1716      #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
   1717      /* Pointer to the common section.  */
   1718      extern asection bfd_com_section;
   1719      #define bfd_com_section_ptr ((asection *) &bfd_com_section)
   1720      /* Pointer to the indirect section.  */
   1721      extern asection bfd_ind_section;
   1722      #define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
   1723      #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
   1724 
   1725      #define bfd_is_const_section(SEC)              \
   1726       (   ((SEC) == bfd_abs_section_ptr)            \
   1727        || ((SEC) == bfd_und_section_ptr)            \
   1728        || ((SEC) == bfd_com_section_ptr)            \
   1729        || ((SEC) == bfd_ind_section_ptr))
   1730 
   1731      /* Macros to handle insertion and deletion of a bfd's sections.  These
   1732         only handle the list pointers, ie. do not adjust section_count,
   1733         target_index etc.  */
   1734      #define bfd_section_list_remove(ABFD, S) \
   1735        do                                                   \
   1736          {                                                  \
   1737            asection *_s = S;                                \
   1738            asection *_next = _s->next;                      \
   1739            asection *_prev = _s->prev;                      \
   1740            if (_prev)                                       \
   1741              _prev->next = _next;                           \
   1742            else                                             \
   1743              (ABFD)->sections = _next;                      \
   1744            if (_next)                                       \
   1745              _next->prev = _prev;                           \
   1746            else                                             \
   1747              (ABFD)->section_last = _prev;                  \
   1748          }                                                  \
   1749        while (0)
   1750      #define bfd_section_list_append(ABFD, S) \
   1751        do                                                   \
   1752          {                                                  \
   1753            asection *_s = S;                                \
   1754            bfd *_abfd = ABFD;                               \
   1755            _s->next = NULL;                                 \
   1756            if (_abfd->section_last)                         \
   1757              {                                              \
   1758                _s->prev = _abfd->section_last;              \
   1759                _abfd->section_last->next = _s;              \
   1760              }                                              \
   1761            else                                             \
   1762              {                                              \
   1763                _s->prev = NULL;                             \
   1764                _abfd->sections = _s;                        \
   1765              }                                              \
   1766            _abfd->section_last = _s;                        \
   1767          }                                                  \
   1768        while (0)
   1769      #define bfd_section_list_prepend(ABFD, S) \
   1770        do                                                   \
   1771          {                                                  \
   1772            asection *_s = S;                                \
   1773            bfd *_abfd = ABFD;                               \
   1774            _s->prev = NULL;                                 \
   1775            if (_abfd->sections)                             \
   1776              {                                              \
   1777                _s->next = _abfd->sections;                  \
   1778                _abfd->sections->prev = _s;                  \
   1779              }                                              \
   1780            else                                             \
   1781              {                                              \
   1782                _s->next = NULL;                             \
   1783                _abfd->section_last = _s;                    \
   1784              }                                              \
   1785            _abfd->sections = _s;                            \
   1786          }                                                  \
   1787        while (0)
   1788      #define bfd_section_list_insert_after(ABFD, A, S) \
   1789        do                                                   \
   1790          {                                                  \
   1791            asection *_a = A;                                \
   1792            asection *_s = S;                                \
   1793            asection *_next = _a->next;                      \
   1794            _s->next = _next;                                \
   1795            _s->prev = _a;                                   \
   1796            _a->next = _s;                                   \
   1797            if (_next)                                       \
   1798              _next->prev = _s;                              \
   1799            else                                             \
   1800              (ABFD)->section_last = _s;                     \
   1801          }                                                  \
   1802        while (0)
   1803      #define bfd_section_list_insert_before(ABFD, B, S) \
   1804        do                                                   \
   1805          {                                                  \
   1806            asection *_b = B;                                \
   1807            asection *_s = S;                                \
   1808            asection *_prev = _b->prev;                      \
   1809            _s->prev = _prev;                                \
   1810            _s->next = _b;                                   \
   1811            _b->prev = _s;                                   \
   1812            if (_prev)                                       \
   1813              _prev->next = _s;                              \
   1814            else                                             \
   1815              (ABFD)->sections = _s;                         \
   1816          }                                                  \
   1817        while (0)
   1818      #define bfd_section_removed_from_list(ABFD, S) \
   1819        ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
   1820 
   1821      #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
   1822        /* name, id,  index, next, prev, flags, user_set_vma,            */  \
   1823        { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
   1824                                                                             \
   1825        /* linker_mark, linker_has_input, gc_mark,                       */  \
   1826           0,           0,                1,                                 \
   1827                                                                             \
   1828        /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       */  \
   1829           0,            0,             0,          0,                       \
   1830                                                                             \
   1831        /* has_gp_reloc, need_finalize_relax, reloc_done,                */  \
   1832           0,            0,                   0,                             \
   1833                                                                             \
   1834        /* vma, lma, size, rawsize                                       */  \
   1835           0,   0,   0,    0,                                                \
   1836                                                                             \
   1837        /* output_offset, output_section,              alignment_power,  */  \
   1838           0,             (struct bfd_section *) &SEC, 0,                    \
   1839                                                                             \
   1840        /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
   1841           NULL,       NULL,        0,           0,       0,                 \
   1842                                                                             \
   1843        /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
   1844           0,            NULL,     NULL,     NULL,   0,                      \
   1845                                                                             \
   1846        /* entsize, kept_section, moving_line_filepos,                    */ \
   1847           0,       NULL,          0,                                        \
   1848                                                                             \
   1849        /* target_index, used_by_bfd, constructor_chain, owner,          */  \
   1850           0,            NULL,        NULL,              NULL,               \
   1851                                                                             \
   1852        /* symbol,                    symbol_ptr_ptr,                    */  \
   1853           (struct bfd_symbol *) SYM, &SEC.symbol,                           \
   1854                                                                             \
   1855        /* map_head, map_tail                                            */  \
   1856           { NULL }, { NULL }                                                \
   1857          }
   1858 
   1859 
   1860 File: bfd.info,  Node: section prototypes,  Prev: typedef asection,  Up: Sections
   1861 
   1862 2.6.5 Section prototypes
   1863 ------------------------
   1864 
   1865 These are the functions exported by the section handling part of BFD.
   1866 
   1867 2.6.5.1 `bfd_section_list_clear'
   1868 ................................
   1869 
   1870 *Synopsis*
   1871      void bfd_section_list_clear (bfd *);
   1872    *Description*
   1873 Clears the section list, and also resets the section count and hash
   1874 table entries.
   1875 
   1876 2.6.5.2 `bfd_get_section_by_name'
   1877 .................................
   1878 
   1879 *Synopsis*
   1880      asection *bfd_get_section_by_name (bfd *abfd, const char *name);
   1881    *Description*
   1882 Run through ABFD and return the one of the `asection's whose name
   1883 matches NAME, otherwise `NULL'.  *Note Sections::, for more information.
   1884 
   1885    This should only be used in special cases; the normal way to process
   1886 all sections of a given name is to use `bfd_map_over_sections' and
   1887 `strcmp' on the name (or better yet, base it on the section flags or
   1888 something else) for each section.
   1889 
   1890 2.6.5.3 `bfd_get_section_by_name_if'
   1891 ....................................
   1892 
   1893 *Synopsis*
   1894      asection *bfd_get_section_by_name_if
   1895         (bfd *abfd,
   1896          const char *name,
   1897          bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
   1898          void *obj);
   1899    *Description*
   1900 Call the provided function FUNC for each section attached to the BFD
   1901 ABFD whose name matches NAME, passing OBJ as an argument. The function
   1902 will be called as if by
   1903 
   1904             func (abfd, the_section, obj);
   1905 
   1906    It returns the first section for which FUNC returns true, otherwise
   1907 `NULL'.
   1908 
   1909 2.6.5.4 `bfd_get_unique_section_name'
   1910 .....................................
   1911 
   1912 *Synopsis*
   1913      char *bfd_get_unique_section_name
   1914         (bfd *abfd, const char *templat, int *count);
   1915    *Description*
   1916 Invent a section name that is unique in ABFD by tacking a dot and a
   1917 digit suffix onto the original TEMPLAT.  If COUNT is non-NULL, then it
   1918 specifies the first number tried as a suffix to generate a unique name.
   1919 The value pointed to by COUNT will be incremented in this case.
   1920 
   1921 2.6.5.5 `bfd_make_section_old_way'
   1922 ..................................
   1923 
   1924 *Synopsis*
   1925      asection *bfd_make_section_old_way (bfd *abfd, const char *name);
   1926    *Description*
   1927 Create a new empty section called NAME and attach it to the end of the
   1928 chain of sections for the BFD ABFD. An attempt to create a section with
   1929 a name which is already in use returns its pointer without changing the
   1930 section chain.
   1931 
   1932    It has the funny name since this is the way it used to be before it
   1933 was rewritten....
   1934 
   1935    Possible errors are:
   1936    * `bfd_error_invalid_operation' - If output has already started for
   1937      this BFD.
   1938 
   1939    * `bfd_error_no_memory' - If memory allocation fails.
   1940 
   1941 2.6.5.6 `bfd_make_section_anyway_with_flags'
   1942 ............................................
   1943 
   1944 *Synopsis*
   1945      asection *bfd_make_section_anyway_with_flags
   1946         (bfd *abfd, const char *name, flagword flags);
   1947    *Description*
   1948 Create a new empty section called NAME and attach it to the end of the
   1949 chain of sections for ABFD.  Create a new section even if there is
   1950 already a section with that name.  Also set the attributes of the new
   1951 section to the value FLAGS.
   1952 
   1953    Return `NULL' and set `bfd_error' on error; possible errors are:
   1954    * `bfd_error_invalid_operation' - If output has already started for
   1955      ABFD.
   1956 
   1957    * `bfd_error_no_memory' - If memory allocation fails.
   1958 
   1959 2.6.5.7 `bfd_make_section_anyway'
   1960 .................................
   1961 
   1962 *Synopsis*
   1963      asection *bfd_make_section_anyway (bfd *abfd, const char *name);
   1964    *Description*
   1965 Create a new empty section called NAME and attach it to the end of the
   1966 chain of sections for ABFD.  Create a new section even if there is
   1967 already a section with that name.
   1968 
   1969    Return `NULL' and set `bfd_error' on error; possible errors are:
   1970    * `bfd_error_invalid_operation' - If output has already started for
   1971      ABFD.
   1972 
   1973    * `bfd_error_no_memory' - If memory allocation fails.
   1974 
   1975 2.6.5.8 `bfd_make_section_with_flags'
   1976 .....................................
   1977 
   1978 *Synopsis*
   1979      asection *bfd_make_section_with_flags
   1980         (bfd *, const char *name, flagword flags);
   1981    *Description*
   1982 Like `bfd_make_section_anyway', but return `NULL' (without calling
   1983 bfd_set_error ()) without changing the section chain if there is
   1984 already a section named NAME.  Also set the attributes of the new
   1985 section to the value FLAGS.  If there is an error, return `NULL' and set
   1986 `bfd_error'.
   1987 
   1988 2.6.5.9 `bfd_make_section'
   1989 ..........................
   1990 
   1991 *Synopsis*
   1992      asection *bfd_make_section (bfd *, const char *name);
   1993    *Description*
   1994 Like `bfd_make_section_anyway', but return `NULL' (without calling
   1995 bfd_set_error ()) without changing the section chain if there is
   1996 already a section named NAME.  If there is an error, return `NULL' and
   1997 set `bfd_error'.
   1998 
   1999 2.6.5.10 `bfd_set_section_flags'
   2000 ................................
   2001 
   2002 *Synopsis*
   2003      bfd_boolean bfd_set_section_flags
   2004         (bfd *abfd, asection *sec, flagword flags);
   2005    *Description*
   2006 Set the attributes of the section SEC in the BFD ABFD to the value
   2007 FLAGS. Return `TRUE' on success, `FALSE' on error. Possible error
   2008 returns are:
   2009 
   2010    * `bfd_error_invalid_operation' - The section cannot have one or
   2011      more of the attributes requested. For example, a .bss section in
   2012      `a.out' may not have the `SEC_HAS_CONTENTS' field set.
   2013 
   2014 2.6.5.11 `bfd_map_over_sections'
   2015 ................................
   2016 
   2017 *Synopsis*
   2018      void bfd_map_over_sections
   2019         (bfd *abfd,
   2020          void (*func) (bfd *abfd, asection *sect, void *obj),
   2021          void *obj);
   2022    *Description*
   2023 Call the provided function FUNC for each section attached to the BFD
   2024 ABFD, passing OBJ as an argument. The function will be called as if by
   2025 
   2026             func (abfd, the_section, obj);
   2027 
   2028    This is the preferred method for iterating over sections; an
   2029 alternative would be to use a loop:
   2030 
   2031                section *p;
   2032                for (p = abfd->sections; p != NULL; p = p->next)
   2033                   func (abfd, p, ...)
   2034 
   2035 2.6.5.12 `bfd_sections_find_if'
   2036 ...............................
   2037 
   2038 *Synopsis*
   2039      asection *bfd_sections_find_if
   2040         (bfd *abfd,
   2041          bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
   2042          void *obj);
   2043    *Description*
   2044 Call the provided function OPERATION for each section attached to the
   2045 BFD ABFD, passing OBJ as an argument. The function will be called as if
   2046 by
   2047 
   2048             operation (abfd, the_section, obj);
   2049 
   2050    It returns the first section for which OPERATION returns true.
   2051 
   2052 2.6.5.13 `bfd_set_section_size'
   2053 ...............................
   2054 
   2055 *Synopsis*
   2056      bfd_boolean bfd_set_section_size
   2057         (bfd *abfd, asection *sec, bfd_size_type val);
   2058    *Description*
   2059 Set SEC to the size VAL. If the operation is ok, then `TRUE' is
   2060 returned, else `FALSE'.
   2061 
   2062    Possible error returns:
   2063    * `bfd_error_invalid_operation' - Writing has started to the BFD, so
   2064      setting the size is invalid.
   2065 
   2066 2.6.5.14 `bfd_set_section_contents'
   2067 ...................................
   2068 
   2069 *Synopsis*
   2070      bfd_boolean bfd_set_section_contents
   2071         (bfd *abfd, asection *section, const void *data,
   2072          file_ptr offset, bfd_size_type count);
   2073    *Description*
   2074 Sets the contents of the section SECTION in BFD ABFD to the data
   2075 starting in memory at DATA. The data is written to the output section
   2076 starting at offset OFFSET for COUNT octets.
   2077 
   2078    Normally `TRUE' is returned, else `FALSE'. Possible error returns
   2079 are:
   2080    * `bfd_error_no_contents' - The output section does not have the
   2081      `SEC_HAS_CONTENTS' attribute, so nothing can be written to it.
   2082 
   2083    * and some more too
   2084    This routine is front end to the back end function
   2085 `_bfd_set_section_contents'.
   2086 
   2087 2.6.5.15 `bfd_get_section_contents'
   2088 ...................................
   2089 
   2090 *Synopsis*
   2091      bfd_boolean bfd_get_section_contents
   2092         (bfd *abfd, asection *section, void *location, file_ptr offset,
   2093          bfd_size_type count);
   2094    *Description*
   2095 Read data from SECTION in BFD ABFD into memory starting at LOCATION.
   2096 The data is read at an offset of OFFSET from the start of the input
   2097 section, and is read for COUNT bytes.
   2098 
   2099    If the contents of a constructor with the `SEC_CONSTRUCTOR' flag set
   2100 are requested or if the section does not have the `SEC_HAS_CONTENTS'
   2101 flag set, then the LOCATION is filled with zeroes. If no errors occur,
   2102 `TRUE' is returned, else `FALSE'.
   2103 
   2104 2.6.5.16 `bfd_malloc_and_get_section'
   2105 .....................................
   2106 
   2107 *Synopsis*
   2108      bfd_boolean bfd_malloc_and_get_section
   2109         (bfd *abfd, asection *section, bfd_byte **buf);
   2110    *Description*
   2111 Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by
   2112 this function.
   2113 
   2114 2.6.5.17 `bfd_copy_private_section_data'
   2115 ........................................
   2116 
   2117 *Synopsis*
   2118      bfd_boolean bfd_copy_private_section_data
   2119         (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
   2120    *Description*
   2121 Copy private section information from ISEC in the BFD IBFD to the
   2122 section OSEC in the BFD OBFD.  Return `TRUE' on success, `FALSE' on
   2123 error.  Possible error returns are:
   2124 
   2125    * `bfd_error_no_memory' - Not enough memory exists to create private
   2126      data for OSEC.
   2127 
   2128      #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
   2129           BFD_SEND (obfd, _bfd_copy_private_section_data, \
   2130                     (ibfd, isection, obfd, osection))
   2131 
   2132 2.6.5.18 `bfd_generic_is_group_section'
   2133 .......................................
   2134 
   2135 *Synopsis*
   2136      bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
   2137    *Description*
   2138 Returns TRUE if SEC is a member of a group.
   2139 
   2140 2.6.5.19 `bfd_generic_discard_group'
   2141 ....................................
   2142 
   2143 *Synopsis*
   2144      bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
   2145    *Description*
   2146 Remove all members of GROUP from the output.
   2147 
   2148 
   2149 File: bfd.info,  Node: Symbols,  Next: Archives,  Prev: Sections,  Up: BFD front end
   2150 
   2151 2.7 Symbols
   2152 ===========
   2153 
   2154 BFD tries to maintain as much symbol information as it can when it
   2155 moves information from file to file. BFD passes information to
   2156 applications though the `asymbol' structure. When the application
   2157 requests the symbol table, BFD reads the table in the native form and
   2158 translates parts of it into the internal format. To maintain more than
   2159 the information passed to applications, some targets keep some
   2160 information "behind the scenes" in a structure only the particular back
   2161 end knows about. For example, the coff back end keeps the original
   2162 symbol table structure as well as the canonical structure when a BFD is
   2163 read in. On output, the coff back end can reconstruct the output symbol
   2164 table so that no information is lost, even information unique to coff
   2165 which BFD doesn't know or understand. If a coff symbol table were read,
   2166 but were written through an a.out back end, all the coff specific
   2167 information would be lost. The symbol table of a BFD is not necessarily
   2168 read in until a canonicalize request is made. Then the BFD back end
   2169 fills in a table provided by the application with pointers to the
   2170 canonical information.  To output symbols, the application provides BFD
   2171 with a table of pointers to pointers to `asymbol's. This allows
   2172 applications like the linker to output a symbol as it was read, since
   2173 the "behind the scenes" information will be still available.
   2174 
   2175 * Menu:
   2176 
   2177 * Reading Symbols::
   2178 * Writing Symbols::
   2179 * Mini Symbols::
   2180 * typedef asymbol::
   2181 * symbol handling functions::
   2182 
   2183 
   2184 File: bfd.info,  Node: Reading Symbols,  Next: Writing Symbols,  Prev: Symbols,  Up: Symbols
   2185 
   2186 2.7.1 Reading symbols
   2187 ---------------------
   2188 
   2189 There are two stages to reading a symbol table from a BFD: allocating
   2190 storage, and the actual reading process. This is an excerpt from an
   2191 application which reads the symbol table:
   2192 
   2193               long storage_needed;
   2194               asymbol **symbol_table;
   2195               long number_of_symbols;
   2196               long i;
   2197 
   2198               storage_needed = bfd_get_symtab_upper_bound (abfd);
   2199 
   2200               if (storage_needed < 0)
   2201                 FAIL
   2202 
   2203               if (storage_needed == 0)
   2204                 return;
   2205 
   2206               symbol_table = xmalloc (storage_needed);
   2207                 ...
   2208               number_of_symbols =
   2209                  bfd_canonicalize_symtab (abfd, symbol_table);
   2210 
   2211               if (number_of_symbols < 0)
   2212                 FAIL
   2213 
   2214               for (i = 0; i < number_of_symbols; i++)
   2215                 process_symbol (symbol_table[i]);
   2216 
   2217    All storage for the symbols themselves is in an objalloc connected
   2218 to the BFD; it is freed when the BFD is closed.
   2219 
   2220 
   2221 File: bfd.info,  Node: Writing Symbols,  Next: Mini Symbols,  Prev: Reading Symbols,  Up: Symbols
   2222 
   2223 2.7.2 Writing symbols
   2224 ---------------------
   2225 
   2226 Writing of a symbol table is automatic when a BFD open for writing is
   2227 closed. The application attaches a vector of pointers to pointers to
   2228 symbols to the BFD being written, and fills in the symbol count. The
   2229 close and cleanup code reads through the table provided and performs
   2230 all the necessary operations. The BFD output code must always be
   2231 provided with an "owned" symbol: one which has come from another BFD,
   2232 or one which has been created using `bfd_make_empty_symbol'.  Here is an
   2233 example showing the creation of a symbol table with only one element:
   2234 
   2235             #include "bfd.h"
   2236             int main (void)
   2237             {
   2238               bfd *abfd;
   2239               asymbol *ptrs[2];
   2240               asymbol *new;
   2241 
   2242               abfd = bfd_openw ("foo","a.out-sunos-big");
   2243               bfd_set_format (abfd, bfd_object);
   2244               new = bfd_make_empty_symbol (abfd);
   2245               new->name = "dummy_symbol";
   2246               new->section = bfd_make_section_old_way (abfd, ".text");
   2247               new->flags = BSF_GLOBAL;
   2248               new->value = 0x12345;
   2249 
   2250               ptrs[0] = new;
   2251               ptrs[1] = 0;
   2252 
   2253               bfd_set_symtab (abfd, ptrs, 1);
   2254               bfd_close (abfd);
   2255               return 0;
   2256             }
   2257 
   2258             ./makesym
   2259             nm foo
   2260             00012345 A dummy_symbol
   2261 
   2262    Many formats cannot represent arbitrary symbol information; for
   2263 instance, the `a.out' object format does not allow an arbitrary number
   2264 of sections. A symbol pointing to a section which is not one  of
   2265 `.text', `.data' or `.bss' cannot be described.
   2266 
   2267 
   2268 File: bfd.info,  Node: Mini Symbols,  Next: typedef asymbol,  Prev: Writing Symbols,  Up: Symbols
   2269 
   2270 2.7.3 Mini Symbols
   2271 ------------------
   2272 
   2273 Mini symbols provide read-only access to the symbol table.  They use
   2274 less memory space, but require more time to access.  They can be useful
   2275 for tools like nm or objdump, which may have to handle symbol tables of
   2276 extremely large executables.
   2277 
   2278    The `bfd_read_minisymbols' function will read the symbols into
   2279 memory in an internal form.  It will return a `void *' pointer to a
   2280 block of memory, a symbol count, and the size of each symbol.  The
   2281 pointer is allocated using `malloc', and should be freed by the caller
   2282 when it is no longer needed.
   2283 
   2284    The function `bfd_minisymbol_to_symbol' will take a pointer to a
   2285 minisymbol, and a pointer to a structure returned by
   2286 `bfd_make_empty_symbol', and return a `asymbol' structure.  The return
   2287 value may or may not be the same as the value from
   2288 `bfd_make_empty_symbol' which was passed in.
   2289 
   2290 
   2291 File: bfd.info,  Node: typedef asymbol,  Next: symbol handling functions,  Prev: Mini Symbols,  Up: Symbols
   2292 
   2293 2.7.4 typedef asymbol
   2294 ---------------------
   2295 
   2296 An `asymbol' has the form:
   2297 
   2298 
   2299      typedef struct bfd_symbol
   2300      {
   2301        /* A pointer to the BFD which owns the symbol. This information
   2302           is necessary so that a back end can work out what additional
   2303           information (invisible to the application writer) is carried
   2304           with the symbol.
   2305 
   2306           This field is *almost* redundant, since you can use section->owner
   2307           instead, except that some symbols point to the global sections
   2308           bfd_{abs,com,und}_section.  This could be fixed by making
   2309           these globals be per-bfd (or per-target-flavor).  FIXME.  */
   2310        struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
   2311 
   2312        /* The text of the symbol. The name is left alone, and not copied; the
   2313           application may not alter it.  */
   2314        const char *name;
   2315 
   2316        /* The value of the symbol.  This really should be a union of a
   2317           numeric value with a pointer, since some flags indicate that
   2318           a pointer to another symbol is stored here.  */
   2319        symvalue value;
   2320 
   2321        /* Attributes of a symbol.  */
   2322      #define BSF_NO_FLAGS    0x00
   2323 
   2324        /* The symbol has local scope; `static' in `C'. The value
   2325           is the offset into the section of the data.  */
   2326      #define BSF_LOCAL      0x01
   2327 
   2328        /* The symbol has global scope; initialized data in `C'. The
   2329           value is the offset into the section of the data.  */
   2330      #define BSF_GLOBAL     0x02
   2331 
   2332        /* The symbol has global scope and is exported. The value is
   2333           the offset into the section of the data.  */
   2334      #define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
   2335 
   2336        /* A normal C symbol would be one of:
   2337           `BSF_LOCAL', `BSF_FORT_COMM',  `BSF_UNDEFINED' or
   2338           `BSF_GLOBAL'.  */
   2339 
   2340        /* The symbol is a debugging record. The value has an arbitrary
   2341           meaning, unless BSF_DEBUGGING_RELOC is also set.  */
   2342      #define BSF_DEBUGGING  0x08
   2343 
   2344        /* The symbol denotes a function entry point.  Used in ELF,
   2345           perhaps others someday.  */
   2346      #define BSF_FUNCTION    0x10
   2347 
   2348        /* Used by the linker.  */
   2349      #define BSF_KEEP        0x20
   2350      #define BSF_KEEP_G      0x40
   2351 
   2352        /* A weak global symbol, overridable without warnings by
   2353           a regular global symbol of the same name.  */
   2354      #define BSF_WEAK        0x80
   2355 
   2356        /* This symbol was created to point to a section, e.g. ELF's
   2357           STT_SECTION symbols.  */
   2358      #define BSF_SECTION_SYM 0x100
   2359 
   2360        /* The symbol used to be a common symbol, but now it is
   2361           allocated.  */
   2362      #define BSF_OLD_COMMON  0x200
   2363 
   2364        /* The default value for common data.  */
   2365      #define BFD_FORT_COMM_DEFAULT_VALUE 0
   2366 
   2367        /* In some files the type of a symbol sometimes alters its
   2368           location in an output file - ie in coff a `ISFCN' symbol
   2369           which is also `C_EXT' symbol appears where it was
   2370           declared and not at the end of a section.  This bit is set
   2371           by the target BFD part to convey this information.  */
   2372      #define BSF_NOT_AT_END    0x400
   2373 
   2374        /* Signal that the symbol is the label of constructor section.  */
   2375      #define BSF_CONSTRUCTOR   0x800
   2376 
   2377        /* Signal that the symbol is a warning symbol.  The name is a
   2378           warning.  The name of the next symbol is the one to warn about;
   2379           if a reference is made to a symbol with the same name as the next
   2380           symbol, a warning is issued by the linker.  */
   2381      #define BSF_WARNING       0x1000
   2382 
   2383        /* Signal that the symbol is indirect.  This symbol is an indirect
   2384           pointer to the symbol with the same name as the next symbol.  */
   2385      #define BSF_INDIRECT      0x2000
   2386 
   2387        /* BSF_FILE marks symbols that contain a file name.  This is used
   2388           for ELF STT_FILE symbols.  */
   2389      #define BSF_FILE          0x4000
   2390 
   2391        /* Symbol is from dynamic linking information.  */
   2392      #define BSF_DYNAMIC       0x8000
   2393 
   2394        /* The symbol denotes a data object.  Used in ELF, and perhaps
   2395           others someday.  */
   2396      #define BSF_OBJECT        0x10000
   2397 
   2398        /* This symbol is a debugging symbol.  The value is the offset
   2399           into the section of the data.  BSF_DEBUGGING should be set
   2400           as well.  */
   2401      #define BSF_DEBUGGING_RELOC 0x20000
   2402 
   2403        /* This symbol is thread local.  Used in ELF.  */
   2404      #define BSF_THREAD_LOCAL  0x40000
   2405 
   2406        /* This symbol represents a complex relocation expression,
   2407           with the expression tree serialized in the symbol name.  */
   2408      #define BSF_RELC 0x80000
   2409 
   2410        /* This symbol represents a signed complex relocation expression,
   2411           with the expression tree serialized in the symbol name.  */
   2412      #define BSF_SRELC 0x100000
   2413 
   2414        /* This symbol was created by bfd_get_synthetic_symtab.  */
   2415      #define BSF_SYNTHETIC 0x200000
   2416 
   2417        flagword flags;
   2418 
   2419        /* A pointer to the section to which this symbol is
   2420           relative.  This will always be non NULL, there are special
   2421           sections for undefined and absolute symbols.  */
   2422        struct bfd_section *section;
   2423 
   2424        /* Back end special data.  */
   2425        union
   2426          {
   2427            void *p;
   2428            bfd_vma i;
   2429          }
   2430        udata;
   2431      }
   2432      asymbol;
   2433 
   2434 
   2435 File: bfd.info,  Node: symbol handling functions,  Prev: typedef asymbol,  Up: Symbols
   2436 
   2437 2.7.5 Symbol handling functions
   2438 -------------------------------
   2439 
   2440 2.7.5.1 `bfd_get_symtab_upper_bound'
   2441 ....................................
   2442 
   2443 *Description*
   2444 Return the number of bytes required to store a vector of pointers to
   2445 `asymbols' for all the symbols in the BFD ABFD, including a terminal
   2446 NULL pointer. If there are no symbols in the BFD, then return 0.  If an
   2447 error occurs, return -1.
   2448      #define bfd_get_symtab_upper_bound(abfd) \
   2449           BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
   2450 
   2451 2.7.5.2 `bfd_is_local_label'
   2452 ............................
   2453 
   2454 *Synopsis*
   2455      bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
   2456    *Description*
   2457 Return TRUE if the given symbol SYM in the BFD ABFD is a compiler
   2458 generated local label, else return FALSE.
   2459 
   2460 2.7.5.3 `bfd_is_local_label_name'
   2461 .................................
   2462 
   2463 *Synopsis*
   2464      bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
   2465    *Description*
   2466 Return TRUE if a symbol with the name NAME in the BFD ABFD is a
   2467 compiler generated local label, else return FALSE.  This just checks
   2468 whether the name has the form of a local label.
   2469      #define bfd_is_local_label_name(abfd, name) \
   2470        BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
   2471 
   2472 2.7.5.4 `bfd_is_target_special_symbol'
   2473 ......................................
   2474 
   2475 *Synopsis*
   2476      bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
   2477    *Description*
   2478 Return TRUE iff a symbol SYM in the BFD ABFD is something special to
   2479 the particular target represented by the BFD.  Such symbols should
   2480 normally not be mentioned to the user.
   2481      #define bfd_is_target_special_symbol(abfd, sym) \
   2482        BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
   2483 
   2484 2.7.5.5 `bfd_canonicalize_symtab'
   2485 .................................
   2486 
   2487 *Description*
   2488 Read the symbols from the BFD ABFD, and fills in the vector LOCATION
   2489 with pointers to the symbols and a trailing NULL.  Return the actual
   2490 number of symbol pointers, not including the NULL.
   2491      #define bfd_canonicalize_symtab(abfd, location) \
   2492        BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
   2493 
   2494 2.7.5.6 `bfd_set_symtab'
   2495 ........................
   2496 
   2497 *Synopsis*
   2498      bfd_boolean bfd_set_symtab
   2499         (bfd *abfd, asymbol **location, unsigned int count);
   2500    *Description*
   2501 Arrange that when the output BFD ABFD is closed, the table LOCATION of
   2502 COUNT pointers to symbols will be written.
   2503 
   2504 2.7.5.7 `bfd_print_symbol_vandf'
   2505 ................................
   2506 
   2507 *Synopsis*
   2508      void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
   2509    *Description*
   2510 Print the value and flags of the SYMBOL supplied to the stream FILE.
   2511 
   2512 2.7.5.8 `bfd_make_empty_symbol'
   2513 ...............................
   2514 
   2515 *Description*
   2516 Create a new `asymbol' structure for the BFD ABFD and return a pointer
   2517 to it.
   2518 
   2519    This routine is necessary because each back end has private
   2520 information surrounding the `asymbol'. Building your own `asymbol' and
   2521 pointing to it will not create the private information, and will cause
   2522 problems later on.
   2523      #define bfd_make_empty_symbol(abfd) \
   2524        BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
   2525 
   2526 2.7.5.9 `_bfd_generic_make_empty_symbol'
   2527 ........................................
   2528 
   2529 *Synopsis*
   2530      asymbol *_bfd_generic_make_empty_symbol (bfd *);
   2531    *Description*
   2532 Create a new `asymbol' structure for the BFD ABFD and return a pointer
   2533 to it.  Used by core file routines, binary back-end and anywhere else
   2534 where no private info is needed.
   2535 
   2536 2.7.5.10 `bfd_make_debug_symbol'
   2537 ................................
   2538 
   2539 *Description*
   2540 Create a new `asymbol' structure for the BFD ABFD, to be used as a
   2541 debugging symbol.  Further details of its use have yet to be worked out.
   2542      #define bfd_make_debug_symbol(abfd,ptr,size) \
   2543        BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
   2544 
   2545 2.7.5.11 `bfd_decode_symclass'
   2546 ..............................
   2547 
   2548 *Description*
   2549 Return a character corresponding to the symbol class of SYMBOL, or '?'
   2550 for an unknown class.
   2551 
   2552    *Synopsis*
   2553      int bfd_decode_symclass (asymbol *symbol);
   2554    
   2555 2.7.5.12 `bfd_is_undefined_symclass'
   2556 ....................................
   2557 
   2558 *Description*
   2559 Returns non-zero if the class symbol returned by bfd_decode_symclass
   2560 represents an undefined symbol.  Returns zero otherwise.
   2561 
   2562    *Synopsis*
   2563      bfd_boolean bfd_is_undefined_symclass (int symclass);
   2564    
   2565 2.7.5.13 `bfd_symbol_info'
   2566 ..........................
   2567 
   2568 *Description*
   2569 Fill in the basic info about symbol that nm needs.  Additional info may
   2570 be added by the back-ends after calling this function.
   2571 
   2572    *Synopsis*
   2573      void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
   2574    
   2575 2.7.5.14 `bfd_copy_private_symbol_data'
   2576 .......................................
   2577 
   2578 *Synopsis*
   2579      bfd_boolean bfd_copy_private_symbol_data
   2580         (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
   2581    *Description*
   2582 Copy private symbol information from ISYM in the BFD IBFD to the symbol
   2583 OSYM in the BFD OBFD.  Return `TRUE' on success, `FALSE' on error.
   2584 Possible error returns are:
   2585 
   2586    * `bfd_error_no_memory' - Not enough memory exists to create private
   2587      data for OSEC.
   2588 
   2589      #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
   2590        BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
   2591                  (ibfd, isymbol, obfd, osymbol))
   2592 
   2593 
   2594 File: bfd.info,  Node: Archives,  Next: Formats,  Prev: Symbols,  Up: BFD front end
   2595 
   2596 2.8 Archives
   2597 ============
   2598 
   2599 *Description*
   2600 An archive (or library) is just another BFD.  It has a symbol table,
   2601 although there's not much a user program will do with it.
   2602 
   2603    The big difference between an archive BFD and an ordinary BFD is
   2604 that the archive doesn't have sections.  Instead it has a chain of BFDs
   2605 that are considered its contents.  These BFDs can be manipulated like
   2606 any other.  The BFDs contained in an archive opened for reading will
   2607 all be opened for reading.  You may put either input or output BFDs
   2608 into an archive opened for output; they will be handled correctly when
   2609 the archive is closed.
   2610 
   2611    Use `bfd_openr_next_archived_file' to step through the contents of
   2612 an archive opened for input.  You don't have to read the entire archive
   2613 if you don't want to!  Read it until you find what you want.
   2614 
   2615    Archive contents of output BFDs are chained through the `next'
   2616 pointer in a BFD.  The first one is findable through the `archive_head'
   2617 slot of the archive.  Set it with `bfd_set_archive_head' (q.v.).  A
   2618 given BFD may be in only one open output archive at a time.
   2619 
   2620    As expected, the BFD archive code is more general than the archive
   2621 code of any given environment.  BFD archives may contain files of
   2622 different formats (e.g., a.out and coff) and even different
   2623 architectures.  You may even place archives recursively into archives!
   2624 
   2625    This can cause unexpected confusion, since some archive formats are
   2626 more expressive than others.  For instance, Intel COFF archives can
   2627 preserve long filenames; SunOS a.out archives cannot.  If you move a
   2628 file from the first to the second format and back again, the filename
   2629 may be truncated.  Likewise, different a.out environments have different
   2630 conventions as to how they truncate filenames, whether they preserve
   2631 directory names in filenames, etc.  When interoperating with native
   2632 tools, be sure your files are homogeneous.
   2633 
   2634    Beware: most of these formats do not react well to the presence of
   2635 spaces in filenames.  We do the best we can, but can't always handle
   2636 this case due to restrictions in the format of archives.  Many Unix
   2637 utilities are braindead in regards to spaces and such in filenames
   2638 anyway, so this shouldn't be much of a restriction.
   2639 
   2640    Archives are supported in BFD in `archive.c'.
   2641 
   2642 2.8.1 Archive functions
   2643 -----------------------
   2644 
   2645 2.8.1.1 `bfd_get_next_mapent'
   2646 .............................
   2647 
   2648 *Synopsis*
   2649      symindex bfd_get_next_mapent
   2650         (bfd *abfd, symindex previous, carsym **sym);
   2651    *Description*
   2652 Step through archive ABFD's symbol table (if it has one).  Successively
   2653 update SYM with the next symbol's information, returning that symbol's
   2654 (internal) index into the symbol table.
   2655 
   2656    Supply `BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first
   2657 one; returns `BFD_NO_MORE_SYMBOLS' when you've already got the last one.
   2658 
   2659    A `carsym' is a canonical archive symbol.  The only user-visible
   2660 element is its name, a null-terminated string.
   2661 
   2662 2.8.1.2 `bfd_set_archive_head'
   2663 ..............................
   2664 
   2665 *Synopsis*
   2666      bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
   2667    *Description*
   2668 Set the head of the chain of BFDs contained in the archive OUTPUT to
   2669 NEW_HEAD.
   2670 
   2671 2.8.1.3 `bfd_openr_next_archived_file'
   2672 ......................................
   2673 
   2674 *Synopsis*
   2675      bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
   2676    *Description*
   2677 Provided a BFD, ARCHIVE, containing an archive and NULL, open an input
   2678 BFD on the first contained element and returns that.  Subsequent calls
   2679 should pass the archive and the previous return value to return a
   2680 created BFD to the next contained element. NULL is returned when there
   2681 are no more.
   2682 
   2683 
   2684 File: bfd.info,  Node: Formats,  Next: Relocations,  Prev: Archives,  Up: BFD front end
   2685 
   2686 2.9 File formats
   2687 ================
   2688 
   2689 A format is a BFD concept of high level file contents type. The formats
   2690 supported by BFD are:
   2691 
   2692    * `bfd_object'
   2693    The BFD may contain data, symbols, relocations and debug info.
   2694 
   2695    * `bfd_archive'
   2696    The BFD contains other BFDs and an optional index.
   2697 
   2698    * `bfd_core'
   2699    The BFD contains the result of an executable core dump.
   2700 
   2701 2.9.1 File format functions
   2702 ---------------------------
   2703 
   2704 2.9.1.1 `bfd_check_format'
   2705 ..........................
   2706 
   2707 *Synopsis*
   2708      bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
   2709    *Description*
   2710 Verify if the file attached to the BFD ABFD is compatible with the
   2711 format FORMAT (i.e., one of `bfd_object', `bfd_archive' or `bfd_core').
   2712 
   2713    If the BFD has been set to a specific target before the call, only
   2714 the named target and format combination is checked. If the target has
   2715 not been set, or has been set to `default', then all the known target
   2716 backends is interrogated to determine a match.  If the default target
   2717 matches, it is used.  If not, exactly one target must recognize the
   2718 file, or an error results.
   2719 
   2720    The function returns `TRUE' on success, otherwise `FALSE' with one
   2721 of the following error codes:
   2722 
   2723    * `bfd_error_invalid_operation' - if `format' is not one of
   2724      `bfd_object', `bfd_archive' or `bfd_core'.
   2725 
   2726    * `bfd_error_system_call' - if an error occured during a read - even
   2727      some file mismatches can cause bfd_error_system_calls.
   2728 
   2729    * `file_not_recognised' - none of the backends recognised the file
   2730      format.
   2731 
   2732    * `bfd_error_file_ambiguously_recognized' - more than one backend
   2733      recognised the file format.
   2734 
   2735 2.9.1.2 `bfd_check_format_matches'
   2736 ..................................
   2737 
   2738 *Synopsis*
   2739      bfd_boolean bfd_check_format_matches
   2740         (bfd *abfd, bfd_format format, char ***matching);
   2741    *Description*
   2742 Like `bfd_check_format', except when it returns FALSE with `bfd_errno'
   2743 set to `bfd_error_file_ambiguously_recognized'.  In that case, if
   2744 MATCHING is not NULL, it will be filled in with a NULL-terminated list
   2745 of the names of the formats that matched, allocated with `malloc'.
   2746 Then the user may choose a format and try again.
   2747 
   2748    When done with the list that MATCHING points to, the caller should
   2749 free it.
   2750 
   2751 2.9.1.3 `bfd_set_format'
   2752 ........................
   2753 
   2754 *Synopsis*
   2755      bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
   2756    *Description*
   2757 This function sets the file format of the BFD ABFD to the format
   2758 FORMAT. If the target set in the BFD does not support the format
   2759 requested, the format is invalid, or the BFD is not open for writing,
   2760 then an error occurs.
   2761 
   2762 2.9.1.4 `bfd_format_string'
   2763 ...........................
   2764 
   2765 *Synopsis*
   2766      const char *bfd_format_string (bfd_format format);
   2767    *Description*
   2768 Return a pointer to a const string `invalid', `object', `archive',
   2769 `core', or `unknown', depending upon the value of FORMAT.
   2770 
   2771 
   2772 File: bfd.info,  Node: Relocations,  Next: Core Files,  Prev: Formats,  Up: BFD front end
   2773 
   2774 2.10 Relocations
   2775 ================
   2776 
   2777 BFD maintains relocations in much the same way it maintains symbols:
   2778 they are left alone until required, then read in en-masse and
   2779 translated into an internal form.  A common routine
   2780 `bfd_perform_relocation' acts upon the canonical form to do the fixup.
   2781 
   2782    Relocations are maintained on a per section basis, while symbols are
   2783 maintained on a per BFD basis.
   2784 
   2785    All that a back end has to do to fit the BFD interface is to create
   2786 a `struct reloc_cache_entry' for each relocation in a particular
   2787 section, and fill in the right bits of the structures.
   2788 
   2789 * Menu:
   2790 
   2791 * typedef arelent::
   2792 * howto manager::
   2793 
   2794 
   2795 File: bfd.info,  Node: typedef arelent,  Next: howto manager,  Prev: Relocations,  Up: Relocations
   2796 
   2797 2.10.1 typedef arelent
   2798 ----------------------
   2799 
   2800 This is the structure of a relocation entry:
   2801 
   2802 
   2803      typedef enum bfd_reloc_status
   2804      {
   2805        /* No errors detected.  */
   2806        bfd_reloc_ok,
   2807 
   2808        /* The relocation was performed, but there was an overflow.  */
   2809        bfd_reloc_overflow,
   2810 
   2811        /* The address to relocate was not within the section supplied.  */
   2812        bfd_reloc_outofrange,
   2813 
   2814        /* Used by special functions.  */
   2815        bfd_reloc_continue,
   2816 
   2817        /* Unsupported relocation size requested.  */
   2818        bfd_reloc_notsupported,
   2819 
   2820        /* Unused.  */
   2821        bfd_reloc_other,
   2822 
   2823        /* The symbol to relocate against was undefined.  */
   2824        bfd_reloc_undefined,
   2825 
   2826        /* The relocation was performed, but may not be ok - presently
   2827           generated only when linking i960 coff files with i960 b.out
   2828           symbols.  If this type is returned, the error_message argument
   2829           to bfd_perform_relocation will be set.  */
   2830        bfd_reloc_dangerous
   2831       }
   2832       bfd_reloc_status_type;
   2833 
   2834 
   2835      typedef struct reloc_cache_entry
   2836      {
   2837        /* A pointer into the canonical table of pointers.  */
   2838        struct bfd_symbol **sym_ptr_ptr;
   2839 
   2840        /* offset in section.  */
   2841        bfd_size_type address;
   2842 
   2843        /* addend for relocation value.  */
   2844        bfd_vma addend;
   2845 
   2846        /* Pointer to how to perform the required relocation.  */
   2847        reloc_howto_type *howto;
   2848 
   2849      }
   2850      arelent;
   2851    *Description*
   2852 Here is a description of each of the fields within an `arelent':
   2853 
   2854    * `sym_ptr_ptr'
   2855    The symbol table pointer points to a pointer to the symbol
   2856 associated with the relocation request.  It is the pointer into the
   2857 table returned by the back end's `canonicalize_symtab' action. *Note
   2858 Symbols::. The symbol is referenced through a pointer to a pointer so
   2859 that tools like the linker can fix up all the symbols of the same name
   2860 by modifying only one pointer. The relocation routine looks in the
   2861 symbol and uses the base of the section the symbol is attached to and
   2862 the value of the symbol as the initial relocation offset. If the symbol
   2863 pointer is zero, then the section provided is looked up.
   2864 
   2865    * `address'
   2866    The `address' field gives the offset in bytes from the base of the
   2867 section data which owns the relocation record to the first byte of
   2868 relocatable information. The actual data relocated will be relative to
   2869 this point; for example, a relocation type which modifies the bottom
   2870 two bytes of a four byte word would not touch the first byte pointed to
   2871 in a big endian world.
   2872 
   2873    * `addend'
   2874    The `addend' is a value provided by the back end to be added (!)  to
   2875 the relocation offset. Its interpretation is dependent upon the howto.
   2876 For example, on the 68k the code:
   2877 
   2878              char foo[];
   2879              main()
   2880                      {
   2881                      return foo[0x12345678];
   2882                      }
   2883 
   2884    Could be compiled into:
   2885 
   2886              linkw fp,#-4
   2887              moveb @#12345678,d0
   2888              extbl d0
   2889              unlk fp
   2890              rts
   2891 
   2892    This could create a reloc pointing to `foo', but leave the offset in
   2893 the data, something like:
   2894 
   2895      RELOCATION RECORDS FOR [.text]:
   2896      offset   type      value
   2897      00000006 32        _foo
   2898 
   2899      00000000 4e56 fffc          ; linkw fp,#-4
   2900      00000004 1039 1234 5678     ; moveb @#12345678,d0
   2901      0000000a 49c0               ; extbl d0
   2902      0000000c 4e5e               ; unlk fp
   2903      0000000e 4e75               ; rts
   2904 
   2905    Using coff and an 88k, some instructions don't have enough space in
   2906 them to represent the full address range, and pointers have to be
   2907 loaded in two parts. So you'd get something like:
   2908 
   2909              or.u     r13,r0,hi16(_foo+0x12345678)
   2910              ld.b     r2,r13,lo16(_foo+0x12345678)
   2911              jmp      r1
   2912 
   2913    This should create two relocs, both pointing to `_foo', and with
   2914 0x12340000 in their addend field. The data would consist of:
   2915 
   2916      RELOCATION RECORDS FOR [.text]:
   2917      offset   type      value
   2918      00000002 HVRT16    _foo+0x12340000
   2919      00000006 LVRT16    _foo+0x12340000
   2920 
   2921      00000000 5da05678           ; or.u r13,r0,0x5678
   2922      00000004 1c4d5678           ; ld.b r2,r13,0x5678
   2923      00000008 f400c001           ; jmp r1
   2924 
   2925    The relocation routine digs out the value from the data, adds it to
   2926 the addend to get the original offset, and then adds the value of
   2927 `_foo'. Note that all 32 bits have to be kept around somewhere, to cope
   2928 with carry from bit 15 to bit 16.
   2929 
   2930    One further example is the sparc and the a.out format. The sparc has
   2931 a similar problem to the 88k, in that some instructions don't have room
   2932 for an entire offset, but on the sparc the parts are created in odd
   2933 sized lumps. The designers of the a.out format chose to not use the
   2934 data within the section for storing part of the offset; all the offset
   2935 is kept within the reloc. Anything in the data should be ignored.
   2936 
   2937              save %sp,-112,%sp
   2938              sethi %hi(_foo+0x12345678),%g2
   2939              ldsb [%g2+%lo(_foo+0x12345678)],%i0
   2940              ret
   2941              restore
   2942 
   2943    Both relocs contain a pointer to `foo', and the offsets contain junk.
   2944 
   2945      RELOCATION RECORDS FOR [.text]:
   2946      offset   type      value
   2947      00000004 HI22      _foo+0x12345678
   2948      00000008 LO10      _foo+0x12345678
   2949 
   2950      00000000 9de3bf90     ; save %sp,-112,%sp
   2951      00000004 05000000     ; sethi %hi(_foo+0),%g2
   2952      00000008 f048a000     ; ldsb [%g2+%lo(_foo+0)],%i0
   2953      0000000c 81c7e008     ; ret
   2954      00000010 81e80000     ; restore
   2955 
   2956    * `howto'
   2957    The `howto' field can be imagined as a relocation instruction. It is
   2958 a pointer to a structure which contains information on what to do with
   2959 all of the other information in the reloc record and data section. A
   2960 back end would normally have a relocation instruction set and turn
   2961 relocations into pointers to the correct structure on input - but it
   2962 would be possible to create each howto field on demand.
   2963 
   2964 2.10.1.1 `enum complain_overflow'
   2965 .................................
   2966 
   2967 Indicates what sort of overflow checking should be done when performing
   2968 a relocation.
   2969 
   2970 
   2971      enum complain_overflow
   2972      {
   2973        /* Do not complain on overflow.  */
   2974        complain_overflow_dont,
   2975 
   2976        /* Complain if the value overflows when considered as a signed
   2977           number one bit larger than the field.  ie. A bitfield of N bits
   2978           is allowed to represent -2**n to 2**n-1.  */
   2979        complain_overflow_bitfield,
   2980 
   2981        /* Complain if the value overflows when considered as a signed
   2982           number.  */
   2983        complain_overflow_signed,
   2984 
   2985        /* Complain if the value overflows when considered as an
   2986           unsigned number.  */
   2987        complain_overflow_unsigned
   2988      };
   2989 
   2990 2.10.1.2 `reloc_howto_type'
   2991 ...........................
   2992 
   2993 The `reloc_howto_type' is a structure which contains all the
   2994 information that libbfd needs to know to tie up a back end's data.
   2995 
   2996      struct bfd_symbol;             /* Forward declaration.  */
   2997 
   2998      struct reloc_howto_struct
   2999      {
   3000        /*  The type field has mainly a documentary use - the back end can
   3001            do what it wants with it, though normally the back end's
   3002            external idea of what a reloc number is stored
   3003            in this field.  For example, a PC relative word relocation
   3004            in a coff environment has the type 023 - because that's
   3005            what the outside world calls a R_PCRWORD reloc.  */
   3006        unsigned int type;
   3007 
   3008        /*  The value the final relocation is shifted right by.  This drops
   3009            unwanted data from the relocation.  */
   3010        unsigned int rightshift;
   3011 
   3012        /*  The size of the item to be relocated.  This is *not* a
   3013            power-of-two measure.  To get the number of bytes operated
   3014            on by a type of relocation, use bfd_get_reloc_size.  */
   3015        int size;
   3016 
   3017        /*  The number of bits in the item to be relocated.  This is used
   3018            when doing overflow checking.  */
   3019        unsigned int bitsize;
   3020 
   3021        /*  Notes that the relocation is relative to the location in the
   3022            data section of the addend.  The relocation function will
   3023            subtract from the relocation value the address of the location
   3024            being relocated.  */
   3025        bfd_boolean pc_relative;
   3026 
   3027        /*  The bit position of the reloc value in the destination.
   3028            The relocated value is left shifted by this amount.  */
   3029        unsigned int bitpos;
   3030 
   3031        /* What type of overflow error should be checked for when
   3032           relocating.  */
   3033        enum complain_overflow complain_on_overflow;
   3034 
   3035        /* If this field is non null, then the supplied function is
   3036           called rather than the normal function.  This allows really
   3037           strange relocation methods to be accommodated (e.g., i960 callj
   3038           instructions).  */
   3039        bfd_reloc_status_type (*special_function)
   3040          (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
   3041           bfd *, char **);
   3042 
   3043        /* The textual name of the relocation type.  */
   3044        char *name;
   3045 
   3046        /* Some formats record a relocation addend in the section contents
   3047           rather than with the relocation.  For ELF formats this is the
   3048           distinction between USE_REL and USE_RELA (though the code checks
   3049           for USE_REL == 1/0).  The value of this field is TRUE if the
   3050           addend is recorded with the section contents; when performing a
   3051           partial link (ld -r) the section contents (the data) will be
   3052           modified.  The value of this field is FALSE if addends are
   3053           recorded with the relocation (in arelent.addend); when performing
   3054           a partial link the relocation will be modified.
   3055           All relocations for all ELF USE_RELA targets should set this field
   3056           to FALSE (values of TRUE should be looked on with suspicion).
   3057           However, the converse is not true: not all relocations of all ELF
   3058           USE_REL targets set this field to TRUE.  Why this is so is peculiar
   3059           to each particular target.  For relocs that aren't used in partial
   3060           links (e.g. GOT stuff) it doesn't matter what this is set to.  */
   3061        bfd_boolean partial_inplace;
   3062 
   3063        /* src_mask selects the part of the instruction (or data) to be used
   3064           in the relocation sum.  If the target relocations don't have an
   3065           addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
   3066           dst_mask to extract the addend from the section contents.  If
   3067           relocations do have an addend in the reloc, eg. ELF USE_RELA, this
   3068           field should be zero.  Non-zero values for ELF USE_RELA targets are
   3069           bogus as in those cases the value in the dst_mask part of the
   3070           section contents should be treated as garbage.  */
   3071        bfd_vma src_mask;
   3072 
   3073        /* dst_mask selects which parts of the instruction (or data) are
   3074           replaced with a relocated value.  */
   3075        bfd_vma dst_mask;
   3076 
   3077        /* When some formats create PC relative instructions, they leave
   3078           the value of the pc of the place being relocated in the offset
   3079           slot of the instruction, so that a PC relative relocation can
   3080           be made just by adding in an ordinary offset (e.g., sun3 a.out).
   3081           Some formats leave the displacement part of an instruction
   3082           empty (e.g., m88k bcs); this flag signals the fact.  */
   3083        bfd_boolean pcrel_offset;
   3084      };
   3085    
   3086 2.10.1.3 `The HOWTO Macro'
   3087 ..........................
   3088 
   3089 *Description*
   3090 The HOWTO define is horrible and will go away.
   3091      #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
   3092        { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
   3093 
   3094    *Description*
   3095 And will be replaced with the totally magic way. But for the moment, we
   3096 are compatible, so do it this way.
   3097      #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
   3098        HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
   3099               NAME, FALSE, 0, 0, IN)
   3100 
   3101    *Description*
   3102 This is used to fill in an empty howto entry in an array.
   3103      #define EMPTY_HOWTO(C) \
   3104        HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
   3105               NULL, FALSE, 0, 0, FALSE)
   3106 
   3107    *Description*
   3108 Helper routine to turn a symbol into a relocation value.
   3109      #define HOWTO_PREPARE(relocation, symbol)               \
   3110        {                                                     \
   3111          if (symbol != NULL)                                 \
   3112            {                                                 \
   3113              if (bfd_is_com_section (symbol->section))       \
   3114                {                                             \
   3115                  relocation = 0;                             \
   3116                }                                             \
   3117              else                                            \
   3118                {                                             \
   3119                  relocation = symbol->value;                 \
   3120                }                                             \
   3121            }                                                 \
   3122        }
   3123 
   3124 2.10.1.4 `bfd_get_reloc_size'
   3125 .............................
   3126 
   3127 *Synopsis*
   3128      unsigned int bfd_get_reloc_size (reloc_howto_type *);
   3129    *Description*
   3130 For a reloc_howto_type that operates on a fixed number of bytes, this
   3131 returns the number of bytes operated on.
   3132 
   3133 2.10.1.5 `arelent_chain'
   3134 ........................
   3135 
   3136 *Description*
   3137 How relocs are tied together in an `asection':
   3138      typedef struct relent_chain
   3139      {
   3140        arelent relent;
   3141        struct relent_chain *next;
   3142      }
   3143      arelent_chain;
   3144 
   3145 2.10.1.6 `bfd_check_overflow'
   3146 .............................
   3147 
   3148 *Synopsis*
   3149      bfd_reloc_status_type bfd_check_overflow
   3150         (enum complain_overflow how,
   3151          unsigned int bitsize,
   3152          unsigned int rightshift,
   3153          unsigned int addrsize,
   3154          bfd_vma relocation);
   3155    *Description*
   3156 Perform overflow checking on RELOCATION which has BITSIZE significant
   3157 bits and will be shifted right by RIGHTSHIFT bits, on a machine with
   3158 addresses containing ADDRSIZE significant bits.  The result is either of
   3159 `bfd_reloc_ok' or `bfd_reloc_overflow'.
   3160 
   3161 2.10.1.7 `bfd_perform_relocation'
   3162 .................................
   3163 
   3164 *Synopsis*
   3165      bfd_reloc_status_type bfd_perform_relocation
   3166         (bfd *abfd,
   3167          arelent *reloc_entry,
   3168          void *data,
   3169          asection *input_section,
   3170          bfd *output_bfd,
   3171          char **error_message);
   3172    *Description*
   3173 If OUTPUT_BFD is supplied to this function, the generated image will be
   3174 relocatable; the relocations are copied to the output file after they
   3175 have been changed to reflect the new state of the world. There are two
   3176 ways of reflecting the results of partial linkage in an output file: by
   3177 modifying the output data in place, and by modifying the relocation
   3178 record.  Some native formats (e.g., basic a.out and basic coff) have no
   3179 way of specifying an addend in the relocation type, so the addend has
   3180 to go in the output data.  This is no big deal since in these formats
   3181 the output data slot will always be big enough for the addend. Complex
   3182 reloc types with addends were invented to solve just this problem.  The
   3183 ERROR_MESSAGE argument is set to an error message if this return
   3184 `bfd_reloc_dangerous'.
   3185 
   3186 2.10.1.8 `bfd_install_relocation'
   3187 .................................
   3188 
   3189 *Synopsis*
   3190      bfd_reloc_status_type bfd_install_relocation
   3191         (bfd *abfd,
   3192          arelent *reloc_entry,
   3193          void *data, bfd_vma data_start,
   3194          asection *input_section,
   3195          char **error_message);
   3196    *Description*
   3197 This looks remarkably like `bfd_perform_relocation', except it does not
   3198 expect that the section contents have been filled in.  I.e., it's
   3199 suitable for use when creating, rather than applying a relocation.
   3200 
   3201    For now, this function should be considered reserved for the
   3202 assembler.
   3203 
   3204 
   3205 File: bfd.info,  Node: howto manager,  Prev: typedef arelent,  Up: Relocations
   3206 
   3207 2.10.2 The howto manager
   3208 ------------------------
   3209 
   3210 When an application wants to create a relocation, but doesn't know what
   3211 the target machine might call it, it can find out by using this bit of
   3212 code.
   3213 
   3214 2.10.2.1 `bfd_reloc_code_type'
   3215 ..............................
   3216 
   3217 *Description*
   3218 The insides of a reloc code.  The idea is that, eventually, there will
   3219 be one enumerator for every type of relocation we ever do.  Pass one of
   3220 these values to `bfd_reloc_type_lookup', and it'll return a howto
   3221 pointer.
   3222 
   3223    This does mean that the application must determine the correct
   3224 enumerator value; you can't get a howto pointer from a random set of
   3225 attributes.
   3226 
   3227    Here are the possible values for `enum bfd_reloc_code_real':
   3228 
   3229  -- : BFD_RELOC_64
   3230  -- : BFD_RELOC_32
   3231  -- : BFD_RELOC_26
   3232  -- : BFD_RELOC_24
   3233  -- : BFD_RELOC_16
   3234  -- : BFD_RELOC_14
   3235  -- : BFD_RELOC_8
   3236      Basic absolute relocations of N bits.
   3237 
   3238  -- : BFD_RELOC_64_PCREL
   3239  -- : BFD_RELOC_32_PCREL
   3240  -- : BFD_RELOC_24_PCREL
   3241  -- : BFD_RELOC_16_PCREL
   3242  -- : BFD_RELOC_12_PCREL
   3243  -- : BFD_RELOC_8_PCREL
   3244      PC-relative relocations.  Sometimes these are relative to the
   3245      address of the relocation itself; sometimes they are relative to
   3246      the start of the section containing the relocation.  It depends on
   3247      the specific target.
   3248 
   3249      The 24-bit relocation is used in some Intel 960 configurations.
   3250 
   3251  -- : BFD_RELOC_32_SECREL
   3252      Section relative relocations.  Some targets need this for DWARF2.
   3253 
   3254  -- : BFD_RELOC_32_GOT_PCREL
   3255  -- : BFD_RELOC_16_GOT_PCREL
   3256  -- : BFD_RELOC_8_GOT_PCREL
   3257  -- : BFD_RELOC_32_GOTOFF
   3258  -- : BFD_RELOC_16_GOTOFF
   3259  -- : BFD_RELOC_LO16_GOTOFF
   3260  -- : BFD_RELOC_HI16_GOTOFF
   3261  -- : BFD_RELOC_HI16_S_GOTOFF
   3262  -- : BFD_RELOC_8_GOTOFF
   3263  -- : BFD_RELOC_64_PLT_PCREL
   3264  -- : BFD_RELOC_32_PLT_PCREL
   3265  -- : BFD_RELOC_24_PLT_PCREL
   3266  -- : BFD_RELOC_16_PLT_PCREL
   3267  -- : BFD_RELOC_8_PLT_PCREL
   3268  -- : BFD_RELOC_64_PLTOFF
   3269  -- : BFD_RELOC_32_PLTOFF
   3270  -- : BFD_RELOC_16_PLTOFF
   3271  -- : BFD_RELOC_LO16_PLTOFF
   3272  -- : BFD_RELOC_HI16_PLTOFF
   3273  -- : BFD_RELOC_HI16_S_PLTOFF
   3274  -- : BFD_RELOC_8_PLTOFF
   3275      For ELF.
   3276 
   3277  -- : BFD_RELOC_68K_GLOB_DAT
   3278  -- : BFD_RELOC_68K_JMP_SLOT
   3279  -- : BFD_RELOC_68K_RELATIVE
   3280      Relocations used by 68K ELF.
   3281 
   3282  -- : BFD_RELOC_32_BASEREL
   3283  -- : BFD_RELOC_16_BASEREL
   3284  -- : BFD_RELOC_LO16_BASEREL
   3285  -- : BFD_RELOC_HI16_BASEREL
   3286  -- : BFD_RELOC_HI16_S_BASEREL
   3287  -- : BFD_RELOC_8_BASEREL
   3288  -- : BFD_RELOC_RVA
   3289      Linkage-table relative.
   3290 
   3291  -- : BFD_RELOC_8_FFnn
   3292      Absolute 8-bit relocation, but used to form an address like 0xFFnn.
   3293 
   3294  -- : BFD_RELOC_32_PCREL_S2
   3295  -- : BFD_RELOC_16_PCREL_S2
   3296  -- : BFD_RELOC_23_PCREL_S2
   3297      These PC-relative relocations are stored as word displacements -
   3298      i.e., byte displacements shifted right two bits.  The 30-bit word
   3299      displacement (<<32_PCREL_S2>> - 32 bits, shifted 2) is used on the
   3300      SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
   3301      signed 16-bit displacement is used on the MIPS, and the 23-bit
   3302      displacement is used on the Alpha.
   3303 
   3304  -- : BFD_RELOC_HI22
   3305  -- : BFD_RELOC_LO10
   3306      High 22 bits and low 10 bits of 32-bit value, placed into lower
   3307      bits of the target word.  These are used on the SPARC.
   3308 
   3309  -- : BFD_RELOC_GPREL16
   3310  -- : BFD_RELOC_GPREL32
   3311      For systems that allocate a Global Pointer register, these are
   3312      displacements off that register.  These relocation types are
   3313      handled specially, because the value the register will have is
   3314      decided relatively late.
   3315 
   3316  -- : BFD_RELOC_I960_CALLJ
   3317      Reloc types used for i960/b.out.
   3318 
   3319  -- : BFD_RELOC_NONE
   3320  -- : BFD_RELOC_SPARC_WDISP22
   3321  -- : BFD_RELOC_SPARC22
   3322  -- : BFD_RELOC_SPARC13
   3323  -- : BFD_RELOC_SPARC_GOT10
   3324  -- : BFD_RELOC_SPARC_GOT13
   3325  -- : BFD_RELOC_SPARC_GOT22
   3326  -- : BFD_RELOC_SPARC_PC10
   3327  -- : BFD_RELOC_SPARC_PC22
   3328  -- : BFD_RELOC_SPARC_WPLT30
   3329  -- : BFD_RELOC_SPARC_COPY
   3330  -- : BFD_RELOC_SPARC_GLOB_DAT
   3331  -- : BFD_RELOC_SPARC_JMP_SLOT
   3332  -- : BFD_RELOC_SPARC_RELATIVE
   3333  -- : BFD_RELOC_SPARC_UA16
   3334  -- : BFD_RELOC_SPARC_UA32
   3335  -- : BFD_RELOC_SPARC_UA64
   3336  -- : BFD_RELOC_SPARC_GOTDATA_HIX22
   3337  -- : BFD_RELOC_SPARC_GOTDATA_LOX10
   3338  -- : BFD_RELOC_SPARC_GOTDATA_OP_HIX22
   3339  -- : BFD_RELOC_SPARC_GOTDATA_OP_LOX10
   3340  -- : BFD_RELOC_SPARC_GOTDATA_OP
   3341      SPARC ELF relocations.  There is probably some overlap with other
   3342      relocation types already defined.
   3343 
   3344  -- : BFD_RELOC_SPARC_BASE13
   3345  -- : BFD_RELOC_SPARC_BASE22
   3346      I think these are specific to SPARC a.out (e.g., Sun 4).
   3347 
   3348  -- : BFD_RELOC_SPARC_64
   3349  -- : BFD_RELOC_SPARC_10
   3350  -- : BFD_RELOC_SPARC_11
   3351  -- : BFD_RELOC_SPARC_OLO10
   3352  -- : BFD_RELOC_SPARC_HH22
   3353  -- : BFD_RELOC_SPARC_HM10
   3354  -- : BFD_RELOC_SPARC_LM22
   3355  -- : BFD_RELOC_SPARC_PC_HH22
   3356  -- : BFD_RELOC_SPARC_PC_HM10
   3357  -- : BFD_RELOC_SPARC_PC_LM22
   3358  -- : BFD_RELOC_SPARC_WDISP16
   3359  -- : BFD_RELOC_SPARC_WDISP19
   3360  -- : BFD_RELOC_SPARC_7
   3361  -- : BFD_RELOC_SPARC_6
   3362  -- : BFD_RELOC_SPARC_5
   3363  -- : BFD_RELOC_SPARC_DISP64
   3364  -- : BFD_RELOC_SPARC_PLT32
   3365  -- : BFD_RELOC_SPARC_PLT64
   3366  -- : BFD_RELOC_SPARC_HIX22
   3367  -- : BFD_RELOC_SPARC_LOX10
   3368  -- : BFD_RELOC_SPARC_H44
   3369  -- : BFD_RELOC_SPARC_M44
   3370  -- : BFD_RELOC_SPARC_L44
   3371  -- : BFD_RELOC_SPARC_REGISTER
   3372      SPARC64 relocations
   3373 
   3374  -- : BFD_RELOC_SPARC_REV32
   3375      SPARC little endian relocation
   3376 
   3377  -- : BFD_RELOC_SPARC_TLS_GD_HI22
   3378  -- : BFD_RELOC_SPARC_TLS_GD_LO10
   3379  -- : BFD_RELOC_SPARC_TLS_GD_ADD
   3380  -- : BFD_RELOC_SPARC_TLS_GD_CALL
   3381  -- : BFD_RELOC_SPARC_TLS_LDM_HI22
   3382  -- : BFD_RELOC_SPARC_TLS_LDM_LO10
   3383  -- : BFD_RELOC_SPARC_TLS_LDM_ADD
   3384  -- : BFD_RELOC_SPARC_TLS_LDM_CALL
   3385  -- : BFD_RELOC_SPARC_TLS_LDO_HIX22
   3386  -- : BFD_RELOC_SPARC_TLS_LDO_LOX10
   3387  -- : BFD_RELOC_SPARC_TLS_LDO_ADD
   3388  -- : BFD_RELOC_SPARC_TLS_IE_HI22
   3389  -- : BFD_RELOC_SPARC_TLS_IE_LO10
   3390  -- : BFD_RELOC_SPARC_TLS_IE_LD
   3391  -- : BFD_RELOC_SPARC_TLS_IE_LDX
   3392  -- : BFD_RELOC_SPARC_TLS_IE_ADD
   3393  -- : BFD_RELOC_SPARC_TLS_LE_HIX22
   3394  -- : BFD_RELOC_SPARC_TLS_LE_LOX10
   3395  -- : BFD_RELOC_SPARC_TLS_DTPMOD32
   3396  -- : BFD_RELOC_SPARC_TLS_DTPMOD64
   3397  -- : BFD_RELOC_SPARC_TLS_DTPOFF32
   3398  -- : BFD_RELOC_SPARC_TLS_DTPOFF64
   3399  -- : BFD_RELOC_SPARC_TLS_TPOFF32
   3400  -- : BFD_RELOC_SPARC_TLS_TPOFF64
   3401      SPARC TLS relocations
   3402 
   3403  -- : BFD_RELOC_SPU_IMM7
   3404  -- : BFD_RELOC_SPU_IMM8
   3405  -- : BFD_RELOC_SPU_IMM10
   3406  -- : BFD_RELOC_SPU_IMM10W
   3407  -- : BFD_RELOC_SPU_IMM16
   3408  -- : BFD_RELOC_SPU_IMM16W
   3409  -- : BFD_RELOC_SPU_IMM18
   3410  -- : BFD_RELOC_SPU_PCREL9a
   3411  -- : BFD_RELOC_SPU_PCREL9b
   3412  -- : BFD_RELOC_SPU_PCREL16
   3413  -- : BFD_RELOC_SPU_LO16
   3414  -- : BFD_RELOC_SPU_HI16
   3415  -- : BFD_RELOC_SPU_PPU32
   3416  -- : BFD_RELOC_SPU_PPU64
   3417      SPU Relocations.
   3418 
   3419  -- : BFD_RELOC_ALPHA_GPDISP_HI16
   3420      Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
   3421      "addend" in some special way.  For GPDISP_HI16 ("gpdisp")
   3422      relocations, the symbol is ignored when writing; when reading, it
   3423      will be the absolute section symbol.  The addend is the
   3424      displacement in bytes of the "lda" instruction from the "ldah"
   3425      instruction (which is at the address of this reloc).
   3426 
   3427  -- : BFD_RELOC_ALPHA_GPDISP_LO16
   3428      For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
   3429      with GPDISP_HI16 relocs.  The addend is ignored when writing the
   3430      relocations out, and is filled in with the file's GP value on
   3431      reading, for convenience.
   3432 
   3433  -- : BFD_RELOC_ALPHA_GPDISP
   3434      The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
   3435      relocation except that there is no accompanying GPDISP_LO16
   3436      relocation.
   3437 
   3438  -- : BFD_RELOC_ALPHA_LITERAL
   3439  -- : BFD_RELOC_ALPHA_ELF_LITERAL
   3440  -- : BFD_RELOC_ALPHA_LITUSE
   3441      The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
   3442      the assembler turns it into a LDQ instruction to load the address
   3443      of the symbol, and then fills in a register in the real
   3444      instruction.
   3445 
   3446      The LITERAL reloc, at the LDQ instruction, refers to the .lita
   3447      section symbol.  The addend is ignored when writing, but is filled
   3448      in with the file's GP value on reading, for convenience, as with
   3449      the GPDISP_LO16 reloc.
   3450 
   3451      The ELF_LITERAL reloc is somewhere between 16_GOTOFF and
   3452      GPDISP_LO16.  It should refer to the symbol to be referenced, as
   3453      with 16_GOTOFF, but it generates output not based on the position
   3454      within the .got section, but relative to the GP value chosen for
   3455      the file during the final link stage.
   3456 
   3457      The LITUSE reloc, on the instruction using the loaded address,
   3458      gives information to the linker that it might be able to use to
   3459      optimize away some literal section references.  The symbol is
   3460      ignored (read as the absolute section symbol), and the "addend"
   3461      indicates the type of instruction using the register: 1 - "memory"
   3462      fmt insn 2 - byte-manipulation (byte offset reg) 3 - jsr (target
   3463      of branch)
   3464 
   3465  -- : BFD_RELOC_ALPHA_HINT
   3466      The HINT relocation indicates a value that should be filled into
   3467      the "hint" field of a jmp/jsr/ret instruction, for possible branch-
   3468      prediction logic which may be provided on some processors.
   3469 
   3470  -- : BFD_RELOC_ALPHA_LINKAGE
   3471      The LINKAGE relocation outputs a linkage pair in the object file,
   3472      which is filled by the linker.
   3473 
   3474  -- : BFD_RELOC_ALPHA_CODEADDR
   3475      The CODEADDR relocation outputs a STO_CA in the object file, which
   3476      is filled by the linker.
   3477 
   3478  -- : BFD_RELOC_ALPHA_GPREL_HI16
   3479  -- : BFD_RELOC_ALPHA_GPREL_LO16
   3480      The GPREL_HI/LO relocations together form a 32-bit offset from the
   3481      GP register.
   3482 
   3483  -- : BFD_RELOC_ALPHA_BRSGP
   3484      Like BFD_RELOC_23_PCREL_S2, except that the source and target must
   3485      share a common GP, and the target address is adjusted for
   3486      STO_ALPHA_STD_GPLOAD.
   3487 
   3488  -- : BFD_RELOC_ALPHA_TLSGD
   3489  -- : BFD_RELOC_ALPHA_TLSLDM
   3490  -- : BFD_RELOC_ALPHA_DTPMOD64
   3491  -- : BFD_RELOC_ALPHA_GOTDTPREL16
   3492  -- : BFD_RELOC_ALPHA_DTPREL64
   3493  -- : BFD_RELOC_ALPHA_DTPREL_HI16
   3494  -- : BFD_RELOC_ALPHA_DTPREL_LO16
   3495  -- : BFD_RELOC_ALPHA_DTPREL16
   3496  -- : BFD_RELOC_ALPHA_GOTTPREL16
   3497  -- : BFD_RELOC_ALPHA_TPREL64
   3498  -- : BFD_RELOC_ALPHA_TPREL_HI16
   3499  -- : BFD_RELOC_ALPHA_TPREL_LO16
   3500  -- : BFD_RELOC_ALPHA_TPREL16
   3501      Alpha thread-local storage relocations.
   3502 
   3503  -- : BFD_RELOC_MIPS_JMP
   3504      Bits 27..2 of the relocation address shifted right 2 bits; simple
   3505      reloc otherwise.
   3506 
   3507  -- : BFD_RELOC_MIPS16_JMP
   3508      The MIPS16 jump instruction.
   3509 
   3510  -- : BFD_RELOC_MIPS16_GPREL
   3511      MIPS16 GP relative reloc.
   3512 
   3513  -- : BFD_RELOC_HI16
   3514      High 16 bits of 32-bit value; simple reloc.
   3515 
   3516  -- : BFD_RELOC_HI16_S
   3517      High 16 bits of 32-bit value but the low 16 bits will be sign
   3518      extended and added to form the final result.  If the low 16 bits
   3519      form a negative number, we need to add one to the high value to
   3520      compensate for the borrow when the low bits are added.
   3521 
   3522  -- : BFD_RELOC_LO16
   3523      Low 16 bits.
   3524 
   3525  -- : BFD_RELOC_HI16_PCREL
   3526      High 16 bits of 32-bit pc-relative value
   3527 
   3528  -- : BFD_RELOC_HI16_S_PCREL
   3529      High 16 bits of 32-bit pc-relative value, adjusted
   3530 
   3531  -- : BFD_RELOC_LO16_PCREL
   3532      Low 16 bits of pc-relative value
   3533 
   3534  -- : BFD_RELOC_MIPS16_GOT16
   3535  -- : BFD_RELOC_MIPS16_CALL16
   3536      Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
   3537      16-bit immediate fields
   3538 
   3539  -- : BFD_RELOC_MIPS16_HI16
   3540      MIPS16 high 16 bits of 32-bit value.
   3541 
   3542  -- : BFD_RELOC_MIPS16_HI16_S
   3543      MIPS16 high 16 bits of 32-bit value but the low 16 bits will be
   3544      sign extended and added to form the final result.  If the low 16
   3545      bits form a negative number, we need to add one to the high value
   3546      to compensate for the borrow when the low bits are added.
   3547 
   3548  -- : BFD_RELOC_MIPS16_LO16
   3549      MIPS16 low 16 bits.
   3550 
   3551  -- : BFD_RELOC_MIPS_LITERAL
   3552      Relocation against a MIPS literal section.
   3553 
   3554  -- : BFD_RELOC_MIPS_GOT16
   3555  -- : BFD_RELOC_MIPS_CALL16
   3556  -- : BFD_RELOC_MIPS_GOT_HI16
   3557  -- : BFD_RELOC_MIPS_GOT_LO16
   3558  -- : BFD_RELOC_MIPS_CALL_HI16
   3559  -- : BFD_RELOC_MIPS_CALL_LO16
   3560  -- : BFD_RELOC_MIPS_SUB
   3561  -- : BFD_RELOC_MIPS_GOT_PAGE
   3562  -- : BFD_RELOC_MIPS_GOT_OFST
   3563  -- : BFD_RELOC_MIPS_GOT_DISP
   3564  -- : BFD_RELOC_MIPS_SHIFT5
   3565  -- : BFD_RELOC_MIPS_SHIFT6
   3566  -- : BFD_RELOC_MIPS_INSERT_A
   3567  -- : BFD_RELOC_MIPS_INSERT_B
   3568  -- : BFD_RELOC_MIPS_DELETE
   3569  -- : BFD_RELOC_MIPS_HIGHEST
   3570  -- : BFD_RELOC_MIPS_HIGHER
   3571  -- : BFD_RELOC_MIPS_SCN_DISP
   3572  -- : BFD_RELOC_MIPS_REL16
   3573  -- : BFD_RELOC_MIPS_RELGOT
   3574  -- : BFD_RELOC_MIPS_JALR
   3575  -- : BFD_RELOC_MIPS_TLS_DTPMOD32
   3576  -- : BFD_RELOC_MIPS_TLS_DTPREL32
   3577  -- : BFD_RELOC_MIPS_TLS_DTPMOD64
   3578  -- : BFD_RELOC_MIPS_TLS_DTPREL64
   3579  -- : BFD_RELOC_MIPS_TLS_GD
   3580  -- : BFD_RELOC_MIPS_TLS_LDM
   3581  -- : BFD_RELOC_MIPS_TLS_DTPREL_HI16
   3582  -- : BFD_RELOC_MIPS_TLS_DTPREL_LO16
   3583  -- : BFD_RELOC_MIPS_TLS_GOTTPREL
   3584  -- : BFD_RELOC_MIPS_TLS_TPREL32
   3585  -- : BFD_RELOC_MIPS_TLS_TPREL64
   3586  -- : BFD_RELOC_MIPS_TLS_TPREL_HI16
   3587  -- : BFD_RELOC_MIPS_TLS_TPREL_LO16
   3588      MIPS ELF relocations.
   3589 
   3590  -- : BFD_RELOC_MIPS_COPY
   3591  -- : BFD_RELOC_MIPS_JUMP_SLOT
   3592      MIPS ELF relocations (VxWorks and PLT extensions).
   3593 
   3594  -- : BFD_RELOC_FRV_LABEL16
   3595  -- : BFD_RELOC_FRV_LABEL24
   3596  -- : BFD_RELOC_FRV_LO16
   3597  -- : BFD_RELOC_FRV_HI16
   3598  -- : BFD_RELOC_FRV_GPREL12
   3599  -- : BFD_RELOC_FRV_GPRELU12
   3600  -- : BFD_RELOC_FRV_GPREL32
   3601  -- : BFD_RELOC_FRV_GPRELHI
   3602  -- : BFD_RELOC_FRV_GPRELLO
   3603  -- : BFD_RELOC_FRV_GOT12
   3604  -- : BFD_RELOC_FRV_GOTHI
   3605  -- : BFD_RELOC_FRV_GOTLO
   3606  -- : BFD_RELOC_FRV_FUNCDESC
   3607  -- : BFD_RELOC_FRV_FUNCDESC_GOT12
   3608  -- : BFD_RELOC_FRV_FUNCDESC_GOTHI
   3609  -- : BFD_RELOC_FRV_FUNCDESC_GOTLO
   3610  -- : BFD_RELOC_FRV_FUNCDESC_VALUE
   3611  -- : BFD_RELOC_FRV_FUNCDESC_GOTOFF12
   3612  -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
   3613  -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
   3614  -- : BFD_RELOC_FRV_GOTOFF12
   3615  -- : BFD_RELOC_FRV_GOTOFFHI
   3616  -- : BFD_RELOC_FRV_GOTOFFLO
   3617  -- : BFD_RELOC_FRV_GETTLSOFF
   3618  -- : BFD_RELOC_FRV_TLSDESC_VALUE
   3619  -- : BFD_RELOC_FRV_GOTTLSDESC12
   3620  -- : BFD_RELOC_FRV_GOTTLSDESCHI
   3621  -- : BFD_RELOC_FRV_GOTTLSDESCLO
   3622  -- : BFD_RELOC_FRV_TLSMOFF12
   3623  -- : BFD_RELOC_FRV_TLSMOFFHI
   3624  -- : BFD_RELOC_FRV_TLSMOFFLO
   3625  -- : BFD_RELOC_FRV_GOTTLSOFF12
   3626  -- : BFD_RELOC_FRV_GOTTLSOFFHI
   3627  -- : BFD_RELOC_FRV_GOTTLSOFFLO
   3628  -- : BFD_RELOC_FRV_TLSOFF
   3629  -- : BFD_RELOC_FRV_TLSDESC_RELAX
   3630  -- : BFD_RELOC_FRV_GETTLSOFF_RELAX
   3631  -- : BFD_RELOC_FRV_TLSOFF_RELAX
   3632  -- : BFD_RELOC_FRV_TLSMOFF
   3633      Fujitsu Frv Relocations.
   3634 
   3635  -- : BFD_RELOC_MN10300_GOTOFF24
   3636      This is a 24bit GOT-relative reloc for the mn10300.
   3637 
   3638  -- : BFD_RELOC_MN10300_GOT32
   3639      This is a 32bit GOT-relative reloc for the mn10300, offset by two
   3640      bytes in the instruction.
   3641 
   3642  -- : BFD_RELOC_MN10300_GOT24
   3643      This is a 24bit GOT-relative reloc for the mn10300, offset by two
   3644      bytes in the instruction.
   3645 
   3646  -- : BFD_RELOC_MN10300_GOT16
   3647      This is a 16bit GOT-relative reloc for the mn10300, offset by two
   3648      bytes in the instruction.
   3649 
   3650  -- : BFD_RELOC_MN10300_COPY
   3651      Copy symbol at runtime.
   3652 
   3653  -- : BFD_RELOC_MN10300_GLOB_DAT
   3654      Create GOT entry.
   3655 
   3656  -- : BFD_RELOC_MN10300_JMP_SLOT
   3657      Create PLT entry.
   3658 
   3659  -- : BFD_RELOC_MN10300_RELATIVE
   3660      Adjust by program base.
   3661 
   3662  -- : BFD_RELOC_MN10300_SYM_DIFF
   3663      Together with another reloc targeted at the same location, allows
   3664      for a value that is the difference of two symbols in the same
   3665      section.
   3666 
   3667  -- : BFD_RELOC_MN10300_ALIGN
   3668      The addend of this reloc is an alignment power that must be
   3669      honoured at the offset's location, regardless of linker relaxation.
   3670 
   3671  -- : BFD_RELOC_386_GOT32
   3672  -- : BFD_RELOC_386_PLT32
   3673  -- : BFD_RELOC_386_COPY
   3674  -- : BFD_RELOC_386_GLOB_DAT
   3675  -- : BFD_RELOC_386_JUMP_SLOT
   3676  -- : BFD_RELOC_386_RELATIVE
   3677  -- : BFD_RELOC_386_GOTOFF
   3678  -- : BFD_RELOC_386_GOTPC
   3679  -- : BFD_RELOC_386_TLS_TPOFF
   3680  -- : BFD_RELOC_386_TLS_IE
   3681  -- : BFD_RELOC_386_TLS_GOTIE
   3682  -- : BFD_RELOC_386_TLS_LE
   3683  -- : BFD_RELOC_386_TLS_GD
   3684  -- : BFD_RELOC_386_TLS_LDM
   3685  -- : BFD_RELOC_386_TLS_LDO_32
   3686  -- : BFD_RELOC_386_TLS_IE_32
   3687  -- : BFD_RELOC_386_TLS_LE_32
   3688  -- : BFD_RELOC_386_TLS_DTPMOD32
   3689  -- : BFD_RELOC_386_TLS_DTPOFF32
   3690  -- : BFD_RELOC_386_TLS_TPOFF32
   3691  -- : BFD_RELOC_386_TLS_GOTDESC
   3692  -- : BFD_RELOC_386_TLS_DESC_CALL
   3693  -- : BFD_RELOC_386_TLS_DESC
   3694      i386/elf relocations
   3695 
   3696  -- : BFD_RELOC_X86_64_GOT32
   3697  -- : BFD_RELOC_X86_64_PLT32
   3698  -- : BFD_RELOC_X86_64_COPY
   3699  -- : BFD_RELOC_X86_64_GLOB_DAT
   3700  -- : BFD_RELOC_X86_64_JUMP_SLOT
   3701  -- : BFD_RELOC_X86_64_RELATIVE
   3702  -- : BFD_RELOC_X86_64_GOTPCREL
   3703  -- : BFD_RELOC_X86_64_32S
   3704  -- : BFD_RELOC_X86_64_DTPMOD64
   3705  -- : BFD_RELOC_X86_64_DTPOFF64
   3706  -- : BFD_RELOC_X86_64_TPOFF64
   3707  -- : BFD_RELOC_X86_64_TLSGD
   3708  -- : BFD_RELOC_X86_64_TLSLD
   3709  -- : BFD_RELOC_X86_64_DTPOFF32
   3710  -- : BFD_RELOC_X86_64_GOTTPOFF
   3711  -- : BFD_RELOC_X86_64_TPOFF32
   3712  -- : BFD_RELOC_X86_64_GOTOFF64
   3713  -- : BFD_RELOC_X86_64_GOTPC32
   3714  -- : BFD_RELOC_X86_64_GOT64
   3715  -- : BFD_RELOC_X86_64_GOTPCREL64
   3716  -- : BFD_RELOC_X86_64_GOTPC64
   3717  -- : BFD_RELOC_X86_64_GOTPLT64
   3718  -- : BFD_RELOC_X86_64_PLTOFF64
   3719  -- : BFD_RELOC_X86_64_GOTPC32_TLSDESC
   3720  -- : BFD_RELOC_X86_64_TLSDESC_CALL
   3721  -- : BFD_RELOC_X86_64_TLSDESC
   3722      x86-64/elf relocations
   3723 
   3724  -- : BFD_RELOC_NS32K_IMM_8
   3725  -- : BFD_RELOC_NS32K_IMM_16
   3726  -- : BFD_RELOC_NS32K_IMM_32
   3727  -- : BFD_RELOC_NS32K_IMM_8_PCREL
   3728  -- : BFD_RELOC_NS32K_IMM_16_PCREL
   3729  -- : BFD_RELOC_NS32K_IMM_32_PCREL
   3730  -- : BFD_RELOC_NS32K_DISP_8
   3731  -- : BFD_RELOC_NS32K_DISP_16
   3732  -- : BFD_RELOC_NS32K_DISP_32
   3733  -- : BFD_RELOC_NS32K_DISP_8_PCREL
   3734  -- : BFD_RELOC_NS32K_DISP_16_PCREL
   3735  -- : BFD_RELOC_NS32K_DISP_32_PCREL
   3736      ns32k relocations
   3737 
   3738  -- : BFD_RELOC_PDP11_DISP_8_PCREL
   3739  -- : BFD_RELOC_PDP11_DISP_6_PCREL
   3740      PDP11 relocations
   3741 
   3742  -- : BFD_RELOC_PJ_CODE_HI16
   3743  -- : BFD_RELOC_PJ_CODE_LO16
   3744  -- : BFD_RELOC_PJ_CODE_DIR16
   3745  -- : BFD_RELOC_PJ_CODE_DIR32
   3746  -- : BFD_RELOC_PJ_CODE_REL16
   3747  -- : BFD_RELOC_PJ_CODE_REL32
   3748      Picojava relocs.  Not all of these appear in object files.
   3749 
   3750  -- : BFD_RELOC_PPC_B26
   3751  -- : BFD_RELOC_PPC_BA26
   3752  -- : BFD_RELOC_PPC_TOC16
   3753  -- : BFD_RELOC_PPC_B16
   3754  -- : BFD_RELOC_PPC_B16_BRTAKEN
   3755  -- : BFD_RELOC_PPC_B16_BRNTAKEN
   3756  -- : BFD_RELOC_PPC_BA16
   3757  -- : BFD_RELOC_PPC_BA16_BRTAKEN
   3758  -- : BFD_RELOC_PPC_BA16_BRNTAKEN
   3759  -- : BFD_RELOC_PPC_COPY
   3760  -- : BFD_RELOC_PPC_GLOB_DAT
   3761  -- : BFD_RELOC_PPC_JMP_SLOT
   3762  -- : BFD_RELOC_PPC_RELATIVE
   3763  -- : BFD_RELOC_PPC_LOCAL24PC
   3764  -- : BFD_RELOC_PPC_EMB_NADDR32
   3765  -- : BFD_RELOC_PPC_EMB_NADDR16
   3766  -- : BFD_RELOC_PPC_EMB_NADDR16_LO
   3767  -- : BFD_RELOC_PPC_EMB_NADDR16_HI
   3768  -- : BFD_RELOC_PPC_EMB_NADDR16_HA
   3769  -- : BFD_RELOC_PPC_EMB_SDAI16
   3770  -- : BFD_RELOC_PPC_EMB_SDA2I16
   3771  -- : BFD_RELOC_PPC_EMB_SDA2REL
   3772  -- : BFD_RELOC_PPC_EMB_SDA21
   3773  -- : BFD_RELOC_PPC_EMB_MRKREF
   3774  -- : BFD_RELOC_PPC_EMB_RELSEC16
   3775  -- : BFD_RELOC_PPC_EMB_RELST_LO
   3776  -- : BFD_RELOC_PPC_EMB_RELST_HI
   3777  -- : BFD_RELOC_PPC_EMB_RELST_HA
   3778  -- : BFD_RELOC_PPC_EMB_BIT_FLD
   3779  -- : BFD_RELOC_PPC_EMB_RELSDA
   3780  -- : BFD_RELOC_PPC64_HIGHER
   3781  -- : BFD_RELOC_PPC64_HIGHER_S
   3782  -- : BFD_RELOC_PPC64_HIGHEST
   3783  -- : BFD_RELOC_PPC64_HIGHEST_S
   3784  -- : BFD_RELOC_PPC64_TOC16_LO
   3785  -- : BFD_RELOC_PPC64_TOC16_HI
   3786  -- : BFD_RELOC_PPC64_TOC16_HA
   3787  -- : BFD_RELOC_PPC64_TOC
   3788  -- : BFD_RELOC_PPC64_PLTGOT16
   3789  -- : BFD_RELOC_PPC64_PLTGOT16_LO
   3790  -- : BFD_RELOC_PPC64_PLTGOT16_HI
   3791  -- : BFD_RELOC_PPC64_PLTGOT16_HA
   3792  -- : BFD_RELOC_PPC64_ADDR16_DS
   3793  -- : BFD_RELOC_PPC64_ADDR16_LO_DS
   3794  -- : BFD_RELOC_PPC64_GOT16_DS
   3795  -- : BFD_RELOC_PPC64_GOT16_LO_DS
   3796  -- : BFD_RELOC_PPC64_PLT16_LO_DS
   3797  -- : BFD_RELOC_PPC64_SECTOFF_DS
   3798  -- : BFD_RELOC_PPC64_SECTOFF_LO_DS
   3799  -- : BFD_RELOC_PPC64_TOC16_DS
   3800  -- : BFD_RELOC_PPC64_TOC16_LO_DS
   3801  -- : BFD_RELOC_PPC64_PLTGOT16_DS
   3802  -- : BFD_RELOC_PPC64_PLTGOT16_LO_DS
   3803      Power(rs6000) and PowerPC relocations.
   3804 
   3805  -- : BFD_RELOC_PPC_TLS
   3806  -- : BFD_RELOC_PPC_DTPMOD
   3807  -- : BFD_RELOC_PPC_TPREL16
   3808  -- : BFD_RELOC_PPC_TPREL16_LO
   3809  -- : BFD_RELOC_PPC_TPREL16_HI
   3810  -- : BFD_RELOC_PPC_TPREL16_HA
   3811  -- : BFD_RELOC_PPC_TPREL
   3812  -- : BFD_RELOC_PPC_DTPREL16
   3813  -- : BFD_RELOC_PPC_DTPREL16_LO
   3814  -- : BFD_RELOC_PPC_DTPREL16_HI
   3815  -- : BFD_RELOC_PPC_DTPREL16_HA
   3816  -- : BFD_RELOC_PPC_DTPREL
   3817  -- : BFD_RELOC_PPC_GOT_TLSGD16
   3818  -- : BFD_RELOC_PPC_GOT_TLSGD16_LO
   3819  -- : BFD_RELOC_PPC_GOT_TLSGD16_HI
   3820  -- : BFD_RELOC_PPC_GOT_TLSGD16_HA
   3821  -- : BFD_RELOC_PPC_GOT_TLSLD16
   3822  -- : BFD_RELOC_PPC_GOT_TLSLD16_LO
   3823  -- : BFD_RELOC_PPC_GOT_TLSLD16_HI
   3824  -- : BFD_RELOC_PPC_GOT_TLSLD16_HA
   3825  -- : BFD_RELOC_PPC_GOT_TPREL16
   3826  -- : BFD_RELOC_PPC_GOT_TPREL16_LO
   3827  -- : BFD_RELOC_PPC_GOT_TPREL16_HI
   3828  -- : BFD_RELOC_PPC_GOT_TPREL16_HA
   3829  -- : BFD_RELOC_PPC_GOT_DTPREL16
   3830  -- : BFD_RELOC_PPC_GOT_DTPREL16_LO
   3831  -- : BFD_RELOC_PPC_GOT_DTPREL16_HI
   3832  -- : BFD_RELOC_PPC_GOT_DTPREL16_HA
   3833  -- : BFD_RELOC_PPC64_TPREL16_DS
   3834  -- : BFD_RELOC_PPC64_TPREL16_LO_DS
   3835  -- : BFD_RELOC_PPC64_TPREL16_HIGHER
   3836  -- : BFD_RELOC_PPC64_TPREL16_HIGHERA
   3837  -- : BFD_RELOC_PPC64_TPREL16_HIGHEST
   3838  -- : BFD_RELOC_PPC64_TPREL16_HIGHESTA
   3839  -- : BFD_RELOC_PPC64_DTPREL16_DS
   3840  -- : BFD_RELOC_PPC64_DTPREL16_LO_DS
   3841  -- : BFD_RELOC_PPC64_DTPREL16_HIGHER
   3842  -- : BFD_RELOC_PPC64_DTPREL16_HIGHERA
   3843  -- : BFD_RELOC_PPC64_DTPREL16_HIGHEST
   3844  -- : BFD_RELOC_PPC64_DTPREL16_HIGHESTA
   3845      PowerPC and PowerPC64 thread-local storage relocations.
   3846 
   3847  -- : BFD_RELOC_I370_D12
   3848      IBM 370/390 relocations
   3849 
   3850  -- : BFD_RELOC_CTOR
   3851      The type of reloc used to build a constructor table - at the moment
   3852      probably a 32 bit wide absolute relocation, but the target can
   3853      choose.  It generally does map to one of the other relocation
   3854      types.
   3855 
   3856  -- : BFD_RELOC_ARM_PCREL_BRANCH
   3857      ARM 26 bit pc-relative branch.  The lowest two bits must be zero
   3858      and are not stored in the instruction.
   3859 
   3860  -- : BFD_RELOC_ARM_PCREL_BLX
   3861      ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
   3862      not stored in the instruction.  The 2nd lowest bit comes from a 1
   3863      bit field in the instruction.
   3864 
   3865  -- : BFD_RELOC_THUMB_PCREL_BLX
   3866      Thumb 22 bit pc-relative branch.  The lowest bit must be zero and
   3867      is not stored in the instruction.  The 2nd lowest bit comes from a
   3868      1 bit field in the instruction.
   3869 
   3870  -- : BFD_RELOC_ARM_PCREL_CALL
   3871      ARM 26-bit pc-relative branch for an unconditional BL or BLX
   3872      instruction.
   3873 
   3874  -- : BFD_RELOC_ARM_PCREL_JUMP
   3875      ARM 26-bit pc-relative branch for B or conditional BL instruction.
   3876 
   3877  -- : BFD_RELOC_THUMB_PCREL_BRANCH7
   3878  -- : BFD_RELOC_THUMB_PCREL_BRANCH9
   3879  -- : BFD_RELOC_THUMB_PCREL_BRANCH12
   3880  -- : BFD_RELOC_THUMB_PCREL_BRANCH20
   3881  -- : BFD_RELOC_THUMB_PCREL_BRANCH23
   3882  -- : BFD_RELOC_THUMB_PCREL_BRANCH25
   3883      Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.  The
   3884      lowest bit must be zero and is not stored in the instruction.
   3885      Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
   3886      "nn" one smaller in all cases.  Note further that BRANCH23
   3887      corresponds to R_ARM_THM_CALL.
   3888 
   3889  -- : BFD_RELOC_ARM_OFFSET_IMM
   3890      12-bit immediate offset, used in ARM-format ldr and str
   3891      instructions.
   3892 
   3893  -- : BFD_RELOC_ARM_THUMB_OFFSET
   3894      5-bit immediate offset, used in Thumb-format ldr and str
   3895      instructions.
   3896 
   3897  -- : BFD_RELOC_ARM_TARGET1
   3898      Pc-relative or absolute relocation depending on target.  Used for
   3899      entries in .init_array sections.
   3900 
   3901  -- : BFD_RELOC_ARM_ROSEGREL32
   3902      Read-only segment base relative address.
   3903 
   3904  -- : BFD_RELOC_ARM_SBREL32
   3905      Data segment base relative address.
   3906 
   3907  -- : BFD_RELOC_ARM_TARGET2
   3908      This reloc is used for references to RTTI data from exception
   3909      handling tables.  The actual definition depends on the target.  It
   3910      may be a pc-relative or some form of GOT-indirect relocation.
   3911 
   3912  -- : BFD_RELOC_ARM_PREL31
   3913      31-bit PC relative address.
   3914 
   3915  -- : BFD_RELOC_ARM_MOVW
   3916  -- : BFD_RELOC_ARM_MOVT
   3917  -- : BFD_RELOC_ARM_MOVW_PCREL
   3918  -- : BFD_RELOC_ARM_MOVT_PCREL
   3919  -- : BFD_RELOC_ARM_THUMB_MOVW
   3920  -- : BFD_RELOC_ARM_THUMB_MOVT
   3921  -- : BFD_RELOC_ARM_THUMB_MOVW_PCREL
   3922  -- : BFD_RELOC_ARM_THUMB_MOVT_PCREL
   3923      Low and High halfword relocations for MOVW and MOVT instructions.
   3924 
   3925  -- : BFD_RELOC_ARM_JUMP_SLOT
   3926  -- : BFD_RELOC_ARM_GLOB_DAT
   3927  -- : BFD_RELOC_ARM_GOT32
   3928  -- : BFD_RELOC_ARM_PLT32
   3929  -- : BFD_RELOC_ARM_RELATIVE
   3930  -- : BFD_RELOC_ARM_GOTOFF
   3931  -- : BFD_RELOC_ARM_GOTPC
   3932      Relocations for setting up GOTs and PLTs for shared libraries.
   3933 
   3934  -- : BFD_RELOC_ARM_TLS_GD32
   3935  -- : BFD_RELOC_ARM_TLS_LDO32
   3936  -- : BFD_RELOC_ARM_TLS_LDM32
   3937  -- : BFD_RELOC_ARM_TLS_DTPOFF32
   3938  -- : BFD_RELOC_ARM_TLS_DTPMOD32
   3939  -- : BFD_RELOC_ARM_TLS_TPOFF32
   3940  -- : BFD_RELOC_ARM_TLS_IE32
   3941  -- : BFD_RELOC_ARM_TLS_LE32
   3942      ARM thread-local storage relocations.
   3943 
   3944  -- : BFD_RELOC_ARM_ALU_PC_G0_NC
   3945  -- : BFD_RELOC_ARM_ALU_PC_G0
   3946  -- : BFD_RELOC_ARM_ALU_PC_G1_NC
   3947  -- : BFD_RELOC_ARM_ALU_PC_G1
   3948  -- : BFD_RELOC_ARM_ALU_PC_G2
   3949  -- : BFD_RELOC_ARM_LDR_PC_G0
   3950  -- : BFD_RELOC_ARM_LDR_PC_G1
   3951  -- : BFD_RELOC_ARM_LDR_PC_G2
   3952  -- : BFD_RELOC_ARM_LDRS_PC_G0
   3953  -- : BFD_RELOC_ARM_LDRS_PC_G1
   3954  -- : BFD_RELOC_ARM_LDRS_PC_G2
   3955  -- : BFD_RELOC_ARM_LDC_PC_G0
   3956  -- : BFD_RELOC_ARM_LDC_PC_G1
   3957  -- : BFD_RELOC_ARM_LDC_PC_G2
   3958  -- : BFD_RELOC_ARM_ALU_SB_G0_NC
   3959  -- : BFD_RELOC_ARM_ALU_SB_G0
   3960  -- : BFD_RELOC_ARM_ALU_SB_G1_NC
   3961  -- : BFD_RELOC_ARM_ALU_SB_G1
   3962  -- : BFD_RELOC_ARM_ALU_SB_G2
   3963  -- : BFD_RELOC_ARM_LDR_SB_G0
   3964  -- : BFD_RELOC_ARM_LDR_SB_G1
   3965  -- : BFD_RELOC_ARM_LDR_SB_G2
   3966  -- : BFD_RELOC_ARM_LDRS_SB_G0
   3967  -- : BFD_RELOC_ARM_LDRS_SB_G1
   3968  -- : BFD_RELOC_ARM_LDRS_SB_G2
   3969  -- : BFD_RELOC_ARM_LDC_SB_G0
   3970  -- : BFD_RELOC_ARM_LDC_SB_G1
   3971  -- : BFD_RELOC_ARM_LDC_SB_G2
   3972      ARM group relocations.
   3973 
   3974  -- : BFD_RELOC_ARM_V4BX
   3975      Annotation of BX instructions.
   3976 
   3977  -- : BFD_RELOC_ARM_IMMEDIATE
   3978  -- : BFD_RELOC_ARM_ADRL_IMMEDIATE
   3979  -- : BFD_RELOC_ARM_T32_IMMEDIATE
   3980  -- : BFD_RELOC_ARM_T32_ADD_IMM
   3981  -- : BFD_RELOC_ARM_T32_IMM12
   3982  -- : BFD_RELOC_ARM_T32_ADD_PC12
   3983  -- : BFD_RELOC_ARM_SHIFT_IMM
   3984  -- : BFD_RELOC_ARM_SMC
   3985  -- : BFD_RELOC_ARM_SWI
   3986  -- : BFD_RELOC_ARM_MULTI
   3987  -- : BFD_RELOC_ARM_CP_OFF_IMM
   3988  -- : BFD_RELOC_ARM_CP_OFF_IMM_S2
   3989  -- : BFD_RELOC_ARM_T32_CP_OFF_IMM
   3990  -- : BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
   3991  -- : BFD_RELOC_ARM_ADR_IMM
   3992  -- : BFD_RELOC_ARM_LDR_IMM
   3993  -- : BFD_RELOC_ARM_LITERAL
   3994  -- : BFD_RELOC_ARM_IN_POOL
   3995  -- : BFD_RELOC_ARM_OFFSET_IMM8
   3996  -- : BFD_RELOC_ARM_T32_OFFSET_U8
   3997  -- : BFD_RELOC_ARM_T32_OFFSET_IMM
   3998  -- : BFD_RELOC_ARM_HWLITERAL
   3999  -- : BFD_RELOC_ARM_THUMB_ADD
   4000  -- : BFD_RELOC_ARM_THUMB_IMM
   4001  -- : BFD_RELOC_ARM_THUMB_SHIFT
   4002      These relocs are only used within the ARM assembler.  They are not
   4003      (at present) written to any object files.
   4004 
   4005  -- : BFD_RELOC_SH_PCDISP8BY2
   4006  -- : BFD_RELOC_SH_PCDISP12BY2
   4007  -- : BFD_RELOC_SH_IMM3
   4008  -- : BFD_RELOC_SH_IMM3U
   4009  -- : BFD_RELOC_SH_DISP12
   4010  -- : BFD_RELOC_SH_DISP12BY2
   4011  -- : BFD_RELOC_SH_DISP12BY4
   4012  -- : BFD_RELOC_SH_DISP12BY8
   4013  -- : BFD_RELOC_SH_DISP20
   4014  -- : BFD_RELOC_SH_DISP20BY8
   4015  -- : BFD_RELOC_SH_IMM4
   4016  -- : BFD_RELOC_SH_IMM4BY2
   4017  -- : BFD_RELOC_SH_IMM4BY4
   4018  -- : BFD_RELOC_SH_IMM8
   4019  -- : BFD_RELOC_SH_IMM8BY2
   4020  -- : BFD_RELOC_SH_IMM8BY4
   4021  -- : BFD_RELOC_SH_PCRELIMM8BY2
   4022  -- : BFD_RELOC_SH_PCRELIMM8BY4
   4023  -- : BFD_RELOC_SH_SWITCH16
   4024  -- : BFD_RELOC_SH_SWITCH32
   4025  -- : BFD_RELOC_SH_USES
   4026  -- : BFD_RELOC_SH_COUNT
   4027  -- : BFD_RELOC_SH_ALIGN
   4028  -- : BFD_RELOC_SH_CODE
   4029  -- : BFD_RELOC_SH_DATA
   4030  -- : BFD_RELOC_SH_LABEL
   4031  -- : BFD_RELOC_SH_LOOP_START
   4032  -- : BFD_RELOC_SH_LOOP_END
   4033  -- : BFD_RELOC_SH_COPY
   4034  -- : BFD_RELOC_SH_GLOB_DAT
   4035  -- : BFD_RELOC_SH_JMP_SLOT
   4036  -- : BFD_RELOC_SH_RELATIVE
   4037  -- : BFD_RELOC_SH_GOTPC
   4038  -- : BFD_RELOC_SH_GOT_LOW16
   4039  -- : BFD_RELOC_SH_GOT_MEDLOW16
   4040  -- : BFD_RELOC_SH_GOT_MEDHI16
   4041  -- : BFD_RELOC_SH_GOT_HI16
   4042  -- : BFD_RELOC_SH_GOTPLT_LOW16
   4043  -- : BFD_RELOC_SH_GOTPLT_MEDLOW16
   4044  -- : BFD_RELOC_SH_GOTPLT_MEDHI16
   4045  -- : BFD_RELOC_SH_GOTPLT_HI16
   4046  -- : BFD_RELOC_SH_PLT_LOW16
   4047  -- : BFD_RELOC_SH_PLT_MEDLOW16
   4048  -- : BFD_RELOC_SH_PLT_MEDHI16
   4049  -- : BFD_RELOC_SH_PLT_HI16
   4050  -- : BFD_RELOC_SH_GOTOFF_LOW16
   4051  -- : BFD_RELOC_SH_GOTOFF_MEDLOW16
   4052  -- : BFD_RELOC_SH_GOTOFF_MEDHI16
   4053  -- : BFD_RELOC_SH_GOTOFF_HI16
   4054  -- : BFD_RELOC_SH_GOTPC_LOW16
   4055  -- : BFD_RELOC_SH_GOTPC_MEDLOW16
   4056  -- : BFD_RELOC_SH_GOTPC_MEDHI16
   4057  -- : BFD_RELOC_SH_GOTPC_HI16
   4058  -- : BFD_RELOC_SH_COPY64
   4059  -- : BFD_RELOC_SH_GLOB_DAT64
   4060  -- : BFD_RELOC_SH_JMP_SLOT64
   4061  -- : BFD_RELOC_SH_RELATIVE64
   4062  -- : BFD_RELOC_SH_GOT10BY4
   4063  -- : BFD_RELOC_SH_GOT10BY8
   4064  -- : BFD_RELOC_SH_GOTPLT10BY4
   4065  -- : BFD_RELOC_SH_GOTPLT10BY8
   4066  -- : BFD_RELOC_SH_GOTPLT32
   4067  -- : BFD_RELOC_SH_SHMEDIA_CODE
   4068  -- : BFD_RELOC_SH_IMMU5
   4069  -- : BFD_RELOC_SH_IMMS6
   4070  -- : BFD_RELOC_SH_IMMS6BY32
   4071  -- : BFD_RELOC_SH_IMMU6
   4072  -- : BFD_RELOC_SH_IMMS10
   4073  -- : BFD_RELOC_SH_IMMS10BY2
   4074  -- : BFD_RELOC_SH_IMMS10BY4
   4075  -- : BFD_RELOC_SH_IMMS10BY8
   4076  -- : BFD_RELOC_SH_IMMS16
   4077  -- : BFD_RELOC_SH_IMMU16
   4078  -- : BFD_RELOC_SH_IMM_LOW16
   4079  -- : BFD_RELOC_SH_IMM_LOW16_PCREL
   4080  -- : BFD_RELOC_SH_IMM_MEDLOW16
   4081  -- : BFD_RELOC_SH_IMM_MEDLOW16_PCREL
   4082  -- : BFD_RELOC_SH_IMM_MEDHI16
   4083  -- : BFD_RELOC_SH_IMM_MEDHI16_PCREL
   4084  -- : BFD_RELOC_SH_IMM_HI16
   4085  -- : BFD_RELOC_SH_IMM_HI16_PCREL
   4086  -- : BFD_RELOC_SH_PT_16
   4087  -- : BFD_RELOC_SH_TLS_GD_32
   4088  -- : BFD_RELOC_SH_TLS_LD_32
   4089  -- : BFD_RELOC_SH_TLS_LDO_32
   4090  -- : BFD_RELOC_SH_TLS_IE_32
   4091  -- : BFD_RELOC_SH_TLS_LE_32
   4092  -- : BFD_RELOC_SH_TLS_DTPMOD32
   4093  -- : BFD_RELOC_SH_TLS_DTPOFF32
   4094  -- : BFD_RELOC_SH_TLS_TPOFF32
   4095      Renesas / SuperH SH relocs.  Not all of these appear in object
   4096      files.
   4097 
   4098  -- : BFD_RELOC_ARC_B22_PCREL
   4099      ARC Cores relocs.  ARC 22 bit pc-relative branch.  The lowest two
   4100      bits must be zero and are not stored in the instruction.  The high
   4101      20 bits are installed in bits 26 through 7 of the instruction.
   4102 
   4103  -- : BFD_RELOC_ARC_B26
   4104      ARC 26 bit absolute branch.  The lowest two bits must be zero and
   4105      are not stored in the instruction.  The high 24 bits are installed
   4106      in bits 23 through 0.
   4107 
   4108  -- : BFD_RELOC_BFIN_16_IMM
   4109      ADI Blackfin 16 bit immediate absolute reloc.
   4110 
   4111  -- : BFD_RELOC_BFIN_16_HIGH
   4112      ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
   4113 
   4114  -- : BFD_RELOC_BFIN_4_PCREL
   4115      ADI Blackfin 'a' part of LSETUP.
   4116 
   4117  -- : BFD_RELOC_BFIN_5_PCREL
   4118      ADI Blackfin.
   4119 
   4120  -- : BFD_RELOC_BFIN_16_LOW
   4121      ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
   4122 
   4123  -- : BFD_RELOC_BFIN_10_PCREL
   4124      ADI Blackfin.
   4125 
   4126  -- : BFD_RELOC_BFIN_11_PCREL
   4127      ADI Blackfin 'b' part of LSETUP.
   4128 
   4129  -- : BFD_RELOC_BFIN_12_PCREL_JUMP
   4130      ADI Blackfin.
   4131 
   4132  -- : BFD_RELOC_BFIN_12_PCREL_JUMP_S
   4133      ADI Blackfin Short jump, pcrel.
   4134 
   4135  -- : BFD_RELOC_BFIN_24_PCREL_CALL_X
   4136      ADI Blackfin Call.x not implemented.
   4137 
   4138  -- : BFD_RELOC_BFIN_24_PCREL_JUMP_L
   4139      ADI Blackfin Long Jump pcrel.
   4140 
   4141  -- : BFD_RELOC_BFIN_GOT17M4
   4142  -- : BFD_RELOC_BFIN_GOTHI
   4143  -- : BFD_RELOC_BFIN_GOTLO
   4144  -- : BFD_RELOC_BFIN_FUNCDESC
   4145  -- : BFD_RELOC_BFIN_FUNCDESC_GOT17M4
   4146  -- : BFD_RELOC_BFIN_FUNCDESC_GOTHI
   4147  -- : BFD_RELOC_BFIN_FUNCDESC_GOTLO
   4148  -- : BFD_RELOC_BFIN_FUNCDESC_VALUE
   4149  -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
   4150  -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
   4151  -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
   4152  -- : BFD_RELOC_BFIN_GOTOFF17M4
   4153  -- : BFD_RELOC_BFIN_GOTOFFHI
   4154  -- : BFD_RELOC_BFIN_GOTOFFLO
   4155      ADI Blackfin FD-PIC relocations.
   4156 
   4157  -- : BFD_RELOC_BFIN_GOT
   4158      ADI Blackfin GOT relocation.
   4159 
   4160  -- : BFD_RELOC_BFIN_PLTPC
   4161      ADI Blackfin PLTPC relocation.
   4162 
   4163  -- : BFD_ARELOC_BFIN_PUSH
   4164      ADI Blackfin arithmetic relocation.
   4165 
   4166  -- : BFD_ARELOC_BFIN_CONST
   4167      ADI Blackfin arithmetic relocation.
   4168 
   4169  -- : BFD_ARELOC_BFIN_ADD
   4170      ADI Blackfin arithmetic relocation.
   4171 
   4172  -- : BFD_ARELOC_BFIN_SUB
   4173      ADI Blackfin arithmetic relocation.
   4174 
   4175  -- : BFD_ARELOC_BFIN_MULT
   4176      ADI Blackfin arithmetic relocation.
   4177 
   4178  -- : BFD_ARELOC_BFIN_DIV
   4179      ADI Blackfin arithmetic relocation.
   4180 
   4181  -- : BFD_ARELOC_BFIN_MOD
   4182      ADI Blackfin arithmetic relocation.
   4183 
   4184  -- : BFD_ARELOC_BFIN_LSHIFT
   4185      ADI Blackfin arithmetic relocation.
   4186 
   4187  -- : BFD_ARELOC_BFIN_RSHIFT
   4188      ADI Blackfin arithmetic relocation.
   4189 
   4190  -- : BFD_ARELOC_BFIN_AND
   4191      ADI Blackfin arithmetic relocation.
   4192 
   4193  -- : BFD_ARELOC_BFIN_OR
   4194      ADI Blackfin arithmetic relocation.
   4195 
   4196  -- : BFD_ARELOC_BFIN_XOR
   4197      ADI Blackfin arithmetic relocation.
   4198 
   4199  -- : BFD_ARELOC_BFIN_LAND
   4200      ADI Blackfin arithmetic relocation.
   4201 
   4202  -- : BFD_ARELOC_BFIN_LOR
   4203      ADI Blackfin arithmetic relocation.
   4204 
   4205  -- : BFD_ARELOC_BFIN_LEN
   4206      ADI Blackfin arithmetic relocation.
   4207 
   4208  -- : BFD_ARELOC_BFIN_NEG
   4209      ADI Blackfin arithmetic relocation.
   4210 
   4211  -- : BFD_ARELOC_BFIN_COMP
   4212      ADI Blackfin arithmetic relocation.
   4213 
   4214  -- : BFD_ARELOC_BFIN_PAGE
   4215      ADI Blackfin arithmetic relocation.
   4216 
   4217  -- : BFD_ARELOC_BFIN_HWPAGE
   4218      ADI Blackfin arithmetic relocation.
   4219 
   4220  -- : BFD_ARELOC_BFIN_ADDR
   4221      ADI Blackfin arithmetic relocation.
   4222 
   4223  -- : BFD_RELOC_D10V_10_PCREL_R
   4224      Mitsubishi D10V relocs.  This is a 10-bit reloc with the right 2
   4225      bits assumed to be 0.
   4226 
   4227  -- : BFD_RELOC_D10V_10_PCREL_L
   4228      Mitsubishi D10V relocs.  This is a 10-bit reloc with the right 2
   4229      bits assumed to be 0.  This is the same as the previous reloc
   4230      except it is in the left container, i.e., shifted left 15 bits.
   4231 
   4232  -- : BFD_RELOC_D10V_18
   4233      This is an 18-bit reloc with the right 2 bits assumed to be 0.
   4234 
   4235  -- : BFD_RELOC_D10V_18_PCREL
   4236      This is an 18-bit reloc with the right 2 bits assumed to be 0.
   4237 
   4238  -- : BFD_RELOC_D30V_6
   4239      Mitsubishi D30V relocs.  This is a 6-bit absolute reloc.
   4240 
   4241  -- : BFD_RELOC_D30V_9_PCREL
   4242      This is a 6-bit pc-relative reloc with the right 3 bits assumed to
   4243      be 0.
   4244 
   4245  -- : BFD_RELOC_D30V_9_PCREL_R
   4246      This is a 6-bit pc-relative reloc with the right 3 bits assumed to
   4247      be 0. Same as the previous reloc but on the right side of the
   4248      container.
   4249 
   4250  -- : BFD_RELOC_D30V_15
   4251      This is a 12-bit absolute reloc with the right 3 bitsassumed to be
   4252      0.
   4253 
   4254  -- : BFD_RELOC_D30V_15_PCREL
   4255      This is a 12-bit pc-relative reloc with the right 3 bits assumed
   4256      to be 0.
   4257 
   4258  -- : BFD_RELOC_D30V_15_PCREL_R
   4259      This is a 12-bit pc-relative reloc with the right 3 bits assumed
   4260      to be 0. Same as the previous reloc but on the right side of the
   4261      container.
   4262 
   4263  -- : BFD_RELOC_D30V_21
   4264      This is an 18-bit absolute reloc with the right 3 bits assumed to
   4265      be 0.
   4266 
   4267  -- : BFD_RELOC_D30V_21_PCREL
   4268      This is an 18-bit pc-relative reloc with the right 3 bits assumed
   4269      to be 0.
   4270 
   4271  -- : BFD_RELOC_D30V_21_PCREL_R
   4272      This is an 18-bit pc-relative reloc with the right 3 bits assumed
   4273      to be 0. Same as the previous reloc but on the right side of the
   4274      container.
   4275 
   4276  -- : BFD_RELOC_D30V_32
   4277      This is a 32-bit absolute reloc.
   4278 
   4279  -- : BFD_RELOC_D30V_32_PCREL
   4280      This is a 32-bit pc-relative reloc.
   4281 
   4282  -- : BFD_RELOC_DLX_HI16_S
   4283      DLX relocs
   4284 
   4285  -- : BFD_RELOC_DLX_LO16
   4286      DLX relocs
   4287 
   4288  -- : BFD_RELOC_DLX_JMP26
   4289      DLX relocs
   4290 
   4291  -- : BFD_RELOC_M32C_HI8
   4292  -- : BFD_RELOC_M32C_RL_JUMP
   4293  -- : BFD_RELOC_M32C_RL_1ADDR
   4294  -- : BFD_RELOC_M32C_RL_2ADDR
   4295      Renesas M16C/M32C Relocations.
   4296 
   4297  -- : BFD_RELOC_M32R_24
   4298      Renesas M32R (formerly Mitsubishi M32R) relocs.  This is a 24 bit
   4299      absolute address.
   4300 
   4301  -- : BFD_RELOC_M32R_10_PCREL
   4302      This is a 10-bit pc-relative reloc with the right 2 bits assumed
   4303      to be 0.
   4304 
   4305  -- : BFD_RELOC_M32R_18_PCREL
   4306      This is an 18-bit reloc with the right 2 bits assumed to be 0.
   4307 
   4308  -- : BFD_RELOC_M32R_26_PCREL
   4309      This is a 26-bit reloc with the right 2 bits assumed to be 0.
   4310 
   4311  -- : BFD_RELOC_M32R_HI16_ULO
   4312      This is a 16-bit reloc containing the high 16 bits of an address
   4313      used when the lower 16 bits are treated as unsigned.
   4314 
   4315  -- : BFD_RELOC_M32R_HI16_SLO
   4316      This is a 16-bit reloc containing the high 16 bits of an address
   4317      used when the lower 16 bits are treated as signed.
   4318 
   4319  -- : BFD_RELOC_M32R_LO16
   4320      This is a 16-bit reloc containing the lower 16 bits of an address.
   4321 
   4322  -- : BFD_RELOC_M32R_SDA16
   4323      This is a 16-bit reloc containing the small data area offset for
   4324      use in add3, load, and store instructions.
   4325 
   4326  -- : BFD_RELOC_M32R_GOT24
   4327  -- : BFD_RELOC_M32R_26_PLTREL
   4328  -- : BFD_RELOC_M32R_COPY
   4329  -- : BFD_RELOC_M32R_GLOB_DAT
   4330  -- : BFD_RELOC_M32R_JMP_SLOT
   4331  -- : BFD_RELOC_M32R_RELATIVE
   4332  -- : BFD_RELOC_M32R_GOTOFF
   4333  -- : BFD_RELOC_M32R_GOTOFF_HI_ULO
   4334  -- : BFD_RELOC_M32R_GOTOFF_HI_SLO
   4335  -- : BFD_RELOC_M32R_GOTOFF_LO
   4336  -- : BFD_RELOC_M32R_GOTPC24
   4337  -- : BFD_RELOC_M32R_GOT16_HI_ULO
   4338  -- : BFD_RELOC_M32R_GOT16_HI_SLO
   4339  -- : BFD_RELOC_M32R_GOT16_LO
   4340  -- : BFD_RELOC_M32R_GOTPC_HI_ULO
   4341  -- : BFD_RELOC_M32R_GOTPC_HI_SLO
   4342  -- : BFD_RELOC_M32R_GOTPC_LO
   4343      For PIC.
   4344 
   4345  -- : BFD_RELOC_V850_9_PCREL
   4346      This is a 9-bit reloc
   4347 
   4348  -- : BFD_RELOC_V850_22_PCREL
   4349      This is a 22-bit reloc
   4350 
   4351  -- : BFD_RELOC_V850_SDA_16_16_OFFSET
   4352      This is a 16 bit offset from the short data area pointer.
   4353 
   4354  -- : BFD_RELOC_V850_SDA_15_16_OFFSET
   4355      This is a 16 bit offset (of which only 15 bits are used) from the
   4356      short data area pointer.
   4357 
   4358  -- : BFD_RELOC_V850_ZDA_16_16_OFFSET
   4359      This is a 16 bit offset from the zero data area pointer.
   4360 
   4361  -- : BFD_RELOC_V850_ZDA_15_16_OFFSET
   4362      This is a 16 bit offset (of which only 15 bits are used) from the
   4363      zero data area pointer.
   4364 
   4365  -- : BFD_RELOC_V850_TDA_6_8_OFFSET
   4366      This is an 8 bit offset (of which only 6 bits are used) from the
   4367      tiny data area pointer.
   4368 
   4369  -- : BFD_RELOC_V850_TDA_7_8_OFFSET
   4370      This is an 8bit offset (of which only 7 bits are used) from the
   4371      tiny data area pointer.
   4372 
   4373  -- : BFD_RELOC_V850_TDA_7_7_OFFSET
   4374      This is a 7 bit offset from the tiny data area pointer.
   4375 
   4376  -- : BFD_RELOC_V850_TDA_16_16_OFFSET
   4377      This is a 16 bit offset from the tiny data area pointer.
   4378 
   4379  -- : BFD_RELOC_V850_TDA_4_5_OFFSET
   4380      This is a 5 bit offset (of which only 4 bits are used) from the
   4381      tiny data area pointer.
   4382 
   4383  -- : BFD_RELOC_V850_TDA_4_4_OFFSET
   4384      This is a 4 bit offset from the tiny data area pointer.
   4385 
   4386  -- : BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
   4387      This is a 16 bit offset from the short data area pointer, with the
   4388      bits placed non-contiguously in the instruction.
   4389 
   4390  -- : BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
   4391      This is a 16 bit offset from the zero data area pointer, with the
   4392      bits placed non-contiguously in the instruction.
   4393 
   4394  -- : BFD_RELOC_V850_CALLT_6_7_OFFSET
   4395      This is a 6 bit offset from the call table base pointer.
   4396 
   4397  -- : BFD_RELOC_V850_CALLT_16_16_OFFSET
   4398      This is a 16 bit offset from the call table base pointer.
   4399 
   4400  -- : BFD_RELOC_V850_LONGCALL
   4401      Used for relaxing indirect function calls.
   4402 
   4403  -- : BFD_RELOC_V850_LONGJUMP
   4404      Used for relaxing indirect jumps.
   4405 
   4406  -- : BFD_RELOC_V850_ALIGN
   4407      Used to maintain alignment whilst relaxing.
   4408 
   4409  -- : BFD_RELOC_V850_LO16_SPLIT_OFFSET
   4410      This is a variation of BFD_RELOC_LO16 that can be used in v850e
   4411      ld.bu instructions.
   4412 
   4413  -- : BFD_RELOC_MN10300_32_PCREL
   4414      This is a 32bit pcrel reloc for the mn10300, offset by two bytes
   4415      in the instruction.
   4416 
   4417  -- : BFD_RELOC_MN10300_16_PCREL
   4418      This is a 16bit pcrel reloc for the mn10300, offset by two bytes
   4419      in the instruction.
   4420 
   4421  -- : BFD_RELOC_TIC30_LDP
   4422      This is a 8bit DP reloc for the tms320c30, where the most
   4423      significant 8 bits of a 24 bit word are placed into the least
   4424      significant 8 bits of the opcode.
   4425 
   4426  -- : BFD_RELOC_TIC54X_PARTLS7
   4427      This is a 7bit reloc for the tms320c54x, where the least
   4428      significant 7 bits of a 16 bit word are placed into the least
   4429      significant 7 bits of the opcode.
   4430 
   4431  -- : BFD_RELOC_TIC54X_PARTMS9
   4432      This is a 9bit DP reloc for the tms320c54x, where the most
   4433      significant 9 bits of a 16 bit word are placed into the least
   4434      significant 9 bits of the opcode.
   4435 
   4436  -- : BFD_RELOC_TIC54X_23
   4437      This is an extended address 23-bit reloc for the tms320c54x.
   4438 
   4439  -- : BFD_RELOC_TIC54X_16_OF_23
   4440      This is a 16-bit reloc for the tms320c54x, where the least
   4441      significant 16 bits of a 23-bit extended address are placed into
   4442      the opcode.
   4443 
   4444  -- : BFD_RELOC_TIC54X_MS7_OF_23
   4445      This is a reloc for the tms320c54x, where the most significant 7
   4446      bits of a 23-bit extended address are placed into the opcode.
   4447 
   4448  -- : BFD_RELOC_FR30_48
   4449      This is a 48 bit reloc for the FR30 that stores 32 bits.
   4450 
   4451  -- : BFD_RELOC_FR30_20
   4452      This is a 32 bit reloc for the FR30 that stores 20 bits split up
   4453      into two sections.
   4454 
   4455  -- : BFD_RELOC_FR30_6_IN_4
   4456      This is a 16 bit reloc for the FR30 that stores a 6 bit word
   4457      offset in 4 bits.
   4458 
   4459  -- : BFD_RELOC_FR30_8_IN_8
   4460      This is a 16 bit reloc for the FR30 that stores an 8 bit byte
   4461      offset into 8 bits.
   4462 
   4463  -- : BFD_RELOC_FR30_9_IN_8
   4464      This is a 16 bit reloc for the FR30 that stores a 9 bit short
   4465      offset into 8 bits.
   4466 
   4467  -- : BFD_RELOC_FR30_10_IN_8
   4468      This is a 16 bit reloc for the FR30 that stores a 10 bit word
   4469      offset into 8 bits.
   4470 
   4471  -- : BFD_RELOC_FR30_9_PCREL
   4472      This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
   4473      short offset into 8 bits.
   4474 
   4475  -- : BFD_RELOC_FR30_12_PCREL
   4476      This is a 16 bit reloc for the FR30 that stores a 12 bit pc
   4477      relative short offset into 11 bits.
   4478 
   4479  -- : BFD_RELOC_MCORE_PCREL_IMM8BY4
   4480  -- : BFD_RELOC_MCORE_PCREL_IMM11BY2
   4481  -- : BFD_RELOC_MCORE_PCREL_IMM4BY2
   4482  -- : BFD_RELOC_MCORE_PCREL_32
   4483  -- : BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
   4484  -- : BFD_RELOC_MCORE_RVA
   4485      Motorola Mcore relocations.
   4486 
   4487  -- : BFD_RELOC_MEP_8
   4488  -- : BFD_RELOC_MEP_16
   4489  -- : BFD_RELOC_MEP_32
   4490  -- : BFD_RELOC_MEP_PCREL8A2
   4491  -- : BFD_RELOC_MEP_PCREL12A2
   4492  -- : BFD_RELOC_MEP_PCREL17A2
   4493  -- : BFD_RELOC_MEP_PCREL24A2
   4494  -- : BFD_RELOC_MEP_PCABS24A2
   4495  -- : BFD_RELOC_MEP_LOW16
   4496  -- : BFD_RELOC_MEP_HI16U
   4497  -- : BFD_RELOC_MEP_HI16S
   4498  -- : BFD_RELOC_MEP_GPREL
   4499  -- : BFD_RELOC_MEP_TPREL
   4500  -- : BFD_RELOC_MEP_TPREL7
   4501  -- : BFD_RELOC_MEP_TPREL7A2
   4502  -- : BFD_RELOC_MEP_TPREL7A4
   4503  -- : BFD_RELOC_MEP_UIMM24
   4504  -- : BFD_RELOC_MEP_ADDR24A4
   4505  -- : BFD_RELOC_MEP_GNU_VTINHERIT
   4506  -- : BFD_RELOC_MEP_GNU_VTENTRY
   4507      Toshiba Media Processor Relocations.
   4508 
   4509  -- : BFD_RELOC_MMIX_GETA
   4510  -- : BFD_RELOC_MMIX_GETA_1
   4511  -- : BFD_RELOC_MMIX_GETA_2
   4512  -- : BFD_RELOC_MMIX_GETA_3
   4513      These are relocations for the GETA instruction.
   4514 
   4515  -- : BFD_RELOC_MMIX_CBRANCH
   4516  -- : BFD_RELOC_MMIX_CBRANCH_J
   4517  -- : BFD_RELOC_MMIX_CBRANCH_1
   4518  -- : BFD_RELOC_MMIX_CBRANCH_2
   4519  -- : BFD_RELOC_MMIX_CBRANCH_3
   4520      These are relocations for a conditional branch instruction.
   4521 
   4522  -- : BFD_RELOC_MMIX_PUSHJ
   4523  -- : BFD_RELOC_MMIX_PUSHJ_1
   4524  -- : BFD_RELOC_MMIX_PUSHJ_2
   4525  -- : BFD_RELOC_MMIX_PUSHJ_3
   4526  -- : BFD_RELOC_MMIX_PUSHJ_STUBBABLE
   4527      These are relocations for the PUSHJ instruction.
   4528 
   4529  -- : BFD_RELOC_MMIX_JMP
   4530  -- : BFD_RELOC_MMIX_JMP_1
   4531  -- : BFD_RELOC_MMIX_JMP_2
   4532  -- : BFD_RELOC_MMIX_JMP_3
   4533      These are relocations for the JMP instruction.
   4534 
   4535  -- : BFD_RELOC_MMIX_ADDR19
   4536      This is a relocation for a relative address as in a GETA
   4537      instruction or a branch.
   4538 
   4539  -- : BFD_RELOC_MMIX_ADDR27
   4540      This is a relocation for a relative address as in a JMP
   4541      instruction.
   4542 
   4543  -- : BFD_RELOC_MMIX_REG_OR_BYTE
   4544      This is a relocation for an instruction field that may be a general
   4545      register or a value 0..255.
   4546 
   4547  -- : BFD_RELOC_MMIX_REG
   4548      This is a relocation for an instruction field that may be a general
   4549      register.
   4550 
   4551  -- : BFD_RELOC_MMIX_BASE_PLUS_OFFSET
   4552      This is a relocation for two instruction fields holding a register
   4553      and an offset, the equivalent of the relocation.
   4554 
   4555  -- : BFD_RELOC_MMIX_LOCAL
   4556      This relocation is an assertion that the expression is not
   4557      allocated as a global register.  It does not modify contents.
   4558 
   4559  -- : BFD_RELOC_AVR_7_PCREL
   4560      This is a 16 bit reloc for the AVR that stores 8 bit pc relative
   4561      short offset into 7 bits.
   4562 
   4563  -- : BFD_RELOC_AVR_13_PCREL
   4564      This is a 16 bit reloc for the AVR that stores 13 bit pc relative
   4565      short offset into 12 bits.
   4566 
   4567  -- : BFD_RELOC_AVR_16_PM
   4568      This is a 16 bit reloc for the AVR that stores 17 bit value
   4569      (usually program memory address) into 16 bits.
   4570 
   4571  -- : BFD_RELOC_AVR_LO8_LDI
   4572      This is a 16 bit reloc for the AVR that stores 8 bit value (usually
   4573      data memory address) into 8 bit immediate value of LDI insn.
   4574 
   4575  -- : BFD_RELOC_AVR_HI8_LDI
   4576      This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
   4577      bit of data memory address) into 8 bit immediate value of LDI insn.
   4578 
   4579  -- : BFD_RELOC_AVR_HH8_LDI
   4580      This is a 16 bit reloc for the AVR that stores 8 bit value (most
   4581      high 8 bit of program memory address) into 8 bit immediate value
   4582      of LDI insn.
   4583 
   4584  -- : BFD_RELOC_AVR_MS8_LDI
   4585      This is a 16 bit reloc for the AVR that stores 8 bit value (most
   4586      high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.
   4587 
   4588  -- : BFD_RELOC_AVR_LO8_LDI_NEG
   4589      This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4590      (usually data memory address) into 8 bit immediate value of SUBI
   4591      insn.
   4592 
   4593  -- : BFD_RELOC_AVR_HI8_LDI_NEG
   4594      This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4595      (high 8 bit of data memory address) into 8 bit immediate value of
   4596      SUBI insn.
   4597 
   4598  -- : BFD_RELOC_AVR_HH8_LDI_NEG
   4599      This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4600      (most high 8 bit of program memory address) into 8 bit immediate
   4601      value of LDI or SUBI insn.
   4602 
   4603  -- : BFD_RELOC_AVR_MS8_LDI_NEG
   4604      This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4605      (msb of 32 bit value) into 8 bit immediate value of LDI insn.
   4606 
   4607  -- : BFD_RELOC_AVR_LO8_LDI_PM
   4608      This is a 16 bit reloc for the AVR that stores 8 bit value (usually
   4609      command address) into 8 bit immediate value of LDI insn.
   4610 
   4611  -- : BFD_RELOC_AVR_LO8_LDI_GS
   4612      This is a 16 bit reloc for the AVR that stores 8 bit value
   4613      (command address) into 8 bit immediate value of LDI insn. If the
   4614      address is beyond the 128k boundary, the linker inserts a jump
   4615      stub for this reloc in the lower 128k.
   4616 
   4617  -- : BFD_RELOC_AVR_HI8_LDI_PM
   4618      This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
   4619      bit of command address) into 8 bit immediate value of LDI insn.
   4620 
   4621  -- : BFD_RELOC_AVR_HI8_LDI_GS
   4622      This is a 16 bit reloc for the AVR that stores 8 bit value (high 8
   4623      bit of command address) into 8 bit immediate value of LDI insn.
   4624      If the address is beyond the 128k boundary, the linker inserts a
   4625      jump stub for this reloc below 128k.
   4626 
   4627  -- : BFD_RELOC_AVR_HH8_LDI_PM
   4628      This is a 16 bit reloc for the AVR that stores 8 bit value (most
   4629      high 8 bit of command address) into 8 bit immediate value of LDI
   4630      insn.
   4631 
   4632  -- : BFD_RELOC_AVR_LO8_LDI_PM_NEG
   4633      This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4634      (usually command address) into 8 bit immediate value of SUBI insn.
   4635 
   4636  -- : BFD_RELOC_AVR_HI8_LDI_PM_NEG
   4637      This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4638      (high 8 bit of 16 bit command address) into 8 bit immediate value
   4639      of SUBI insn.
   4640 
   4641  -- : BFD_RELOC_AVR_HH8_LDI_PM_NEG
   4642      This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4643      (high 6 bit of 22 bit command address) into 8 bit immediate value
   4644      of SUBI insn.
   4645 
   4646  -- : BFD_RELOC_AVR_CALL
   4647      This is a 32 bit reloc for the AVR that stores 23 bit value into
   4648      22 bits.
   4649 
   4650  -- : BFD_RELOC_AVR_LDI
   4651      This is a 16 bit reloc for the AVR that stores all needed bits for
   4652      absolute addressing with ldi with overflow check to linktime
   4653 
   4654  -- : BFD_RELOC_AVR_6
   4655      This is a 6 bit reloc for the AVR that stores offset for ldd/std
   4656      instructions
   4657 
   4658  -- : BFD_RELOC_AVR_6_ADIW
   4659      This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
   4660      instructions
   4661 
   4662  -- : BFD_RELOC_390_12
   4663      Direct 12 bit.
   4664 
   4665  -- : BFD_RELOC_390_GOT12
   4666      12 bit GOT offset.
   4667 
   4668  -- : BFD_RELOC_390_PLT32
   4669      32 bit PC relative PLT address.
   4670 
   4671  -- : BFD_RELOC_390_COPY
   4672      Copy symbol at runtime.
   4673 
   4674  -- : BFD_RELOC_390_GLOB_DAT
   4675      Create GOT entry.
   4676 
   4677  -- : BFD_RELOC_390_JMP_SLOT
   4678      Create PLT entry.
   4679 
   4680  -- : BFD_RELOC_390_RELATIVE
   4681      Adjust by program base.
   4682 
   4683  -- : BFD_RELOC_390_GOTPC
   4684      32 bit PC relative offset to GOT.
   4685 
   4686  -- : BFD_RELOC_390_GOT16
   4687      16 bit GOT offset.
   4688 
   4689  -- : BFD_RELOC_390_PC16DBL
   4690      PC relative 16 bit shifted by 1.
   4691 
   4692  -- : BFD_RELOC_390_PLT16DBL
   4693      16 bit PC rel. PLT shifted by 1.
   4694 
   4695  -- : BFD_RELOC_390_PC32DBL
   4696      PC relative 32 bit shifted by 1.
   4697 
   4698  -- : BFD_RELOC_390_PLT32DBL
   4699      32 bit PC rel. PLT shifted by 1.
   4700 
   4701  -- : BFD_RELOC_390_GOTPCDBL
   4702      32 bit PC rel. GOT shifted by 1.
   4703 
   4704  -- : BFD_RELOC_390_GOT64
   4705      64 bit GOT offset.
   4706 
   4707  -- : BFD_RELOC_390_PLT64
   4708      64 bit PC relative PLT address.
   4709 
   4710  -- : BFD_RELOC_390_GOTENT
   4711      32 bit rel. offset to GOT entry.
   4712 
   4713  -- : BFD_RELOC_390_GOTOFF64
   4714      64 bit offset to GOT.
   4715 
   4716  -- : BFD_RELOC_390_GOTPLT12
   4717      12-bit offset to symbol-entry within GOT, with PLT handling.
   4718 
   4719  -- : BFD_RELOC_390_GOTPLT16
   4720      16-bit offset to symbol-entry within GOT, with PLT handling.
   4721 
   4722  -- : BFD_RELOC_390_GOTPLT32
   4723      32-bit offset to symbol-entry within GOT, with PLT handling.
   4724 
   4725  -- : BFD_RELOC_390_GOTPLT64
   4726      64-bit offset to symbol-entry within GOT, with PLT handling.
   4727 
   4728  -- : BFD_RELOC_390_GOTPLTENT
   4729      32-bit rel. offset to symbol-entry within GOT, with PLT handling.
   4730 
   4731  -- : BFD_RELOC_390_PLTOFF16
   4732      16-bit rel. offset from the GOT to a PLT entry.
   4733 
   4734  -- : BFD_RELOC_390_PLTOFF32
   4735      32-bit rel. offset from the GOT to a PLT entry.
   4736 
   4737  -- : BFD_RELOC_390_PLTOFF64
   4738      64-bit rel. offset from the GOT to a PLT entry.
   4739 
   4740  -- : BFD_RELOC_390_TLS_LOAD
   4741  -- : BFD_RELOC_390_TLS_GDCALL
   4742  -- : BFD_RELOC_390_TLS_LDCALL
   4743  -- : BFD_RELOC_390_TLS_GD32
   4744  -- : BFD_RELOC_390_TLS_GD64
   4745  -- : BFD_RELOC_390_TLS_GOTIE12
   4746  -- : BFD_RELOC_390_TLS_GOTIE32
   4747  -- : BFD_RELOC_390_TLS_GOTIE64
   4748  -- : BFD_RELOC_390_TLS_LDM32
   4749  -- : BFD_RELOC_390_TLS_LDM64
   4750  -- : BFD_RELOC_390_TLS_IE32
   4751  -- : BFD_RELOC_390_TLS_IE64
   4752  -- : BFD_RELOC_390_TLS_IEENT
   4753  -- : BFD_RELOC_390_TLS_LE32
   4754  -- : BFD_RELOC_390_TLS_LE64
   4755  -- : BFD_RELOC_390_TLS_LDO32
   4756  -- : BFD_RELOC_390_TLS_LDO64
   4757  -- : BFD_RELOC_390_TLS_DTPMOD
   4758  -- : BFD_RELOC_390_TLS_DTPOFF
   4759  -- : BFD_RELOC_390_TLS_TPOFF
   4760      s390 tls relocations.
   4761 
   4762  -- : BFD_RELOC_390_20
   4763  -- : BFD_RELOC_390_GOT20
   4764  -- : BFD_RELOC_390_GOTPLT20
   4765  -- : BFD_RELOC_390_TLS_GOTIE20
   4766      Long displacement extension.
   4767 
   4768  -- : BFD_RELOC_SCORE_DUMMY1
   4769      Score relocations
   4770 
   4771  -- : BFD_RELOC_SCORE_GPREL15
   4772      Low 16 bit for load/store
   4773 
   4774  -- : BFD_RELOC_SCORE_DUMMY2
   4775  -- : BFD_RELOC_SCORE_JMP
   4776      This is a 24-bit reloc with the right 1 bit assumed to be 0
   4777 
   4778  -- : BFD_RELOC_SCORE_BRANCH
   4779      This is a 19-bit reloc with the right 1 bit assumed to be 0
   4780 
   4781  -- : BFD_RELOC_SCORE16_JMP
   4782      This is a 11-bit reloc with the right 1 bit assumed to be 0
   4783 
   4784  -- : BFD_RELOC_SCORE16_BRANCH
   4785      This is a 8-bit reloc with the right 1 bit assumed to be 0
   4786 
   4787  -- : BFD_RELOC_SCORE_GOT15
   4788  -- : BFD_RELOC_SCORE_GOT_LO16
   4789  -- : BFD_RELOC_SCORE_CALL15
   4790  -- : BFD_RELOC_SCORE_DUMMY_HI16
   4791      Undocumented Score relocs
   4792 
   4793  -- : BFD_RELOC_IP2K_FR9
   4794      Scenix IP2K - 9-bit register number / data address
   4795 
   4796  -- : BFD_RELOC_IP2K_BANK
   4797      Scenix IP2K - 4-bit register/data bank number
   4798 
   4799  -- : BFD_RELOC_IP2K_ADDR16CJP
   4800      Scenix IP2K - low 13 bits of instruction word address
   4801 
   4802  -- : BFD_RELOC_IP2K_PAGE3
   4803      Scenix IP2K - high 3 bits of instruction word address
   4804 
   4805  -- : BFD_RELOC_IP2K_LO8DATA
   4806  -- : BFD_RELOC_IP2K_HI8DATA
   4807  -- : BFD_RELOC_IP2K_EX8DATA
   4808      Scenix IP2K - ext/low/high 8 bits of data address
   4809 
   4810  -- : BFD_RELOC_IP2K_LO8INSN
   4811  -- : BFD_RELOC_IP2K_HI8INSN
   4812      Scenix IP2K - low/high 8 bits of instruction word address
   4813 
   4814  -- : BFD_RELOC_IP2K_PC_SKIP
   4815      Scenix IP2K - even/odd PC modifier to modify snb pcl.0
   4816 
   4817  -- : BFD_RELOC_IP2K_TEXT
   4818      Scenix IP2K - 16 bit word address in text section.
   4819 
   4820  -- : BFD_RELOC_IP2K_FR_OFFSET
   4821      Scenix IP2K - 7-bit sp or dp offset
   4822 
   4823  -- : BFD_RELOC_VPE4KMATH_DATA
   4824  -- : BFD_RELOC_VPE4KMATH_INSN
   4825      Scenix VPE4K coprocessor - data/insn-space addressing
   4826 
   4827  -- : BFD_RELOC_VTABLE_INHERIT
   4828  -- : BFD_RELOC_VTABLE_ENTRY
   4829      These two relocations are used by the linker to determine which of
   4830      the entries in a C++ virtual function table are actually used.
   4831      When the -gc-sections option is given, the linker will zero out
   4832      the entries that are not used, so that the code for those
   4833      functions need not be included in the output.
   4834 
   4835      VTABLE_INHERIT is a zero-space relocation used to describe to the
   4836      linker the inheritance tree of a C++ virtual function table.  The
   4837      relocation's symbol should be the parent class' vtable, and the
   4838      relocation should be located at the child vtable.
   4839 
   4840      VTABLE_ENTRY is a zero-space relocation that describes the use of a
   4841      virtual function table entry.  The reloc's symbol should refer to
   4842      the table of the class mentioned in the code.  Off of that base,
   4843      an offset describes the entry that is being used.  For Rela hosts,
   4844      this offset is stored in the reloc's addend.  For Rel hosts, we
   4845      are forced to put this offset in the reloc's section offset.
   4846 
   4847  -- : BFD_RELOC_IA64_IMM14
   4848  -- : BFD_RELOC_IA64_IMM22
   4849  -- : BFD_RELOC_IA64_IMM64
   4850  -- : BFD_RELOC_IA64_DIR32MSB
   4851  -- : BFD_RELOC_IA64_DIR32LSB
   4852  -- : BFD_RELOC_IA64_DIR64MSB
   4853  -- : BFD_RELOC_IA64_DIR64LSB
   4854  -- : BFD_RELOC_IA64_GPREL22
   4855  -- : BFD_RELOC_IA64_GPREL64I
   4856  -- : BFD_RELOC_IA64_GPREL32MSB
   4857  -- : BFD_RELOC_IA64_GPREL32LSB
   4858  -- : BFD_RELOC_IA64_GPREL64MSB
   4859  -- : BFD_RELOC_IA64_GPREL64LSB
   4860  -- : BFD_RELOC_IA64_LTOFF22
   4861  -- : BFD_RELOC_IA64_LTOFF64I
   4862  -- : BFD_RELOC_IA64_PLTOFF22
   4863  -- : BFD_RELOC_IA64_PLTOFF64I
   4864  -- : BFD_RELOC_IA64_PLTOFF64MSB
   4865  -- : BFD_RELOC_IA64_PLTOFF64LSB
   4866  -- : BFD_RELOC_IA64_FPTR64I
   4867  -- : BFD_RELOC_IA64_FPTR32MSB
   4868  -- : BFD_RELOC_IA64_FPTR32LSB
   4869  -- : BFD_RELOC_IA64_FPTR64MSB
   4870  -- : BFD_RELOC_IA64_FPTR64LSB
   4871  -- : BFD_RELOC_IA64_PCREL21B
   4872  -- : BFD_RELOC_IA64_PCREL21BI
   4873  -- : BFD_RELOC_IA64_PCREL21M
   4874  -- : BFD_RELOC_IA64_PCREL21F
   4875  -- : BFD_RELOC_IA64_PCREL22
   4876  -- : BFD_RELOC_IA64_PCREL60B
   4877  -- : BFD_RELOC_IA64_PCREL64I
   4878  -- : BFD_RELOC_IA64_PCREL32MSB
   4879  -- : BFD_RELOC_IA64_PCREL32LSB
   4880  -- : BFD_RELOC_IA64_PCREL64MSB
   4881  -- : BFD_RELOC_IA64_PCREL64LSB
   4882  -- : BFD_RELOC_IA64_LTOFF_FPTR22
   4883  -- : BFD_RELOC_IA64_LTOFF_FPTR64I
   4884  -- : BFD_RELOC_IA64_LTOFF_FPTR32MSB
   4885  -- : BFD_RELOC_IA64_LTOFF_FPTR32LSB
   4886  -- : BFD_RELOC_IA64_LTOFF_FPTR64MSB
   4887  -- : BFD_RELOC_IA64_LTOFF_FPTR64LSB
   4888  -- : BFD_RELOC_IA64_SEGREL32MSB
   4889  -- : BFD_RELOC_IA64_SEGREL32LSB
   4890  -- : BFD_RELOC_IA64_SEGREL64MSB
   4891  -- : BFD_RELOC_IA64_SEGREL64LSB
   4892  -- : BFD_RELOC_IA64_SECREL32MSB
   4893  -- : BFD_RELOC_IA64_SECREL32LSB
   4894  -- : BFD_RELOC_IA64_SECREL64MSB
   4895  -- : BFD_RELOC_IA64_SECREL64LSB
   4896  -- : BFD_RELOC_IA64_REL32MSB
   4897  -- : BFD_RELOC_IA64_REL32LSB
   4898  -- : BFD_RELOC_IA64_REL64MSB
   4899  -- : BFD_RELOC_IA64_REL64LSB
   4900  -- : BFD_RELOC_IA64_LTV32MSB
   4901  -- : BFD_RELOC_IA64_LTV32LSB
   4902  -- : BFD_RELOC_IA64_LTV64MSB
   4903  -- : BFD_RELOC_IA64_LTV64LSB
   4904  -- : BFD_RELOC_IA64_IPLTMSB
   4905  -- : BFD_RELOC_IA64_IPLTLSB
   4906  -- : BFD_RELOC_IA64_COPY
   4907  -- : BFD_RELOC_IA64_LTOFF22X
   4908  -- : BFD_RELOC_IA64_LDXMOV
   4909  -- : BFD_RELOC_IA64_TPREL14
   4910  -- : BFD_RELOC_IA64_TPREL22
   4911  -- : BFD_RELOC_IA64_TPREL64I
   4912  -- : BFD_RELOC_IA64_TPREL64MSB
   4913  -- : BFD_RELOC_IA64_TPREL64LSB
   4914  -- : BFD_RELOC_IA64_LTOFF_TPREL22
   4915  -- : BFD_RELOC_IA64_DTPMOD64MSB
   4916  -- : BFD_RELOC_IA64_DTPMOD64LSB
   4917  -- : BFD_RELOC_IA64_LTOFF_DTPMOD22
   4918  -- : BFD_RELOC_IA64_DTPREL14
   4919  -- : BFD_RELOC_IA64_DTPREL22
   4920  -- : BFD_RELOC_IA64_DTPREL64I
   4921  -- : BFD_RELOC_IA64_DTPREL32MSB
   4922  -- : BFD_RELOC_IA64_DTPREL32LSB
   4923  -- : BFD_RELOC_IA64_DTPREL64MSB
   4924  -- : BFD_RELOC_IA64_DTPREL64LSB
   4925  -- : BFD_RELOC_IA64_LTOFF_DTPREL22
   4926      Intel IA64 Relocations.
   4927 
   4928  -- : BFD_RELOC_M68HC11_HI8
   4929      Motorola 68HC11 reloc.  This is the 8 bit high part of an absolute
   4930      address.
   4931 
   4932  -- : BFD_RELOC_M68HC11_LO8
   4933      Motorola 68HC11 reloc.  This is the 8 bit low part of an absolute
   4934      address.
   4935 
   4936  -- : BFD_RELOC_M68HC11_3B
   4937      Motorola 68HC11 reloc.  This is the 3 bit of a value.
   4938 
   4939  -- : BFD_RELOC_M68HC11_RL_JUMP
   4940      Motorola 68HC11 reloc.  This reloc marks the beginning of a
   4941      jump/call instruction.  It is used for linker relaxation to
   4942      correctly identify beginning of instruction and change some
   4943      branches to use PC-relative addressing mode.
   4944 
   4945  -- : BFD_RELOC_M68HC11_RL_GROUP
   4946      Motorola 68HC11 reloc.  This reloc marks a group of several
   4947      instructions that gcc generates and for which the linker
   4948      relaxation pass can modify and/or remove some of them.
   4949 
   4950  -- : BFD_RELOC_M68HC11_LO16
   4951      Motorola 68HC11 reloc.  This is the 16-bit lower part of an
   4952      address.  It is used for 'call' instruction to specify the symbol
   4953      address without any special transformation (due to memory bank
   4954      window).
   4955 
   4956  -- : BFD_RELOC_M68HC11_PAGE
   4957      Motorola 68HC11 reloc.  This is a 8-bit reloc that specifies the
   4958      page number of an address.  It is used by 'call' instruction to
   4959      specify the page number of the symbol.
   4960 
   4961  -- : BFD_RELOC_M68HC11_24
   4962      Motorola 68HC11 reloc.  This is a 24-bit reloc that represents the
   4963      address with a 16-bit value and a 8-bit page number.  The symbol
   4964      address is transformed to follow the 16K memory bank of 68HC12
   4965      (seen as mapped in the window).
   4966 
   4967  -- : BFD_RELOC_M68HC12_5B
   4968      Motorola 68HC12 reloc.  This is the 5 bits of a value.
   4969 
   4970  -- : BFD_RELOC_16C_NUM08
   4971  -- : BFD_RELOC_16C_NUM08_C
   4972  -- : BFD_RELOC_16C_NUM16
   4973  -- : BFD_RELOC_16C_NUM16_C
   4974  -- : BFD_RELOC_16C_NUM32
   4975  -- : BFD_RELOC_16C_NUM32_C
   4976  -- : BFD_RELOC_16C_DISP04
   4977  -- : BFD_RELOC_16C_DISP04_C
   4978  -- : BFD_RELOC_16C_DISP08
   4979  -- : BFD_RELOC_16C_DISP08_C
   4980  -- : BFD_RELOC_16C_DISP16
   4981  -- : BFD_RELOC_16C_DISP16_C
   4982  -- : BFD_RELOC_16C_DISP24
   4983  -- : BFD_RELOC_16C_DISP24_C
   4984  -- : BFD_RELOC_16C_DISP24a
   4985  -- : BFD_RELOC_16C_DISP24a_C
   4986  -- : BFD_RELOC_16C_REG04
   4987  -- : BFD_RELOC_16C_REG04_C
   4988  -- : BFD_RELOC_16C_REG04a
   4989  -- : BFD_RELOC_16C_REG04a_C
   4990  -- : BFD_RELOC_16C_REG14
   4991  -- : BFD_RELOC_16C_REG14_C
   4992  -- : BFD_RELOC_16C_REG16
   4993  -- : BFD_RELOC_16C_REG16_C
   4994  -- : BFD_RELOC_16C_REG20
   4995  -- : BFD_RELOC_16C_REG20_C
   4996  -- : BFD_RELOC_16C_ABS20
   4997  -- : BFD_RELOC_16C_ABS20_C
   4998  -- : BFD_RELOC_16C_ABS24
   4999  -- : BFD_RELOC_16C_ABS24_C
   5000  -- : BFD_RELOC_16C_IMM04
   5001  -- : BFD_RELOC_16C_IMM04_C
   5002  -- : BFD_RELOC_16C_IMM16
   5003  -- : BFD_RELOC_16C_IMM16_C
   5004  -- : BFD_RELOC_16C_IMM20
   5005  -- : BFD_RELOC_16C_IMM20_C
   5006  -- : BFD_RELOC_16C_IMM24
   5007  -- : BFD_RELOC_16C_IMM24_C
   5008  -- : BFD_RELOC_16C_IMM32
   5009  -- : BFD_RELOC_16C_IMM32_C
   5010      NS CR16C Relocations.
   5011 
   5012  -- : BFD_RELOC_CR16_NUM8
   5013  -- : BFD_RELOC_CR16_NUM16
   5014  -- : BFD_RELOC_CR16_NUM32
   5015  -- : BFD_RELOC_CR16_NUM32a
   5016  -- : BFD_RELOC_CR16_REGREL0
   5017  -- : BFD_RELOC_CR16_REGREL4
   5018  -- : BFD_RELOC_CR16_REGREL4a
   5019  -- : BFD_RELOC_CR16_REGREL14
   5020  -- : BFD_RELOC_CR16_REGREL14a
   5021  -- : BFD_RELOC_CR16_REGREL16
   5022  -- : BFD_RELOC_CR16_REGREL20
   5023  -- : BFD_RELOC_CR16_REGREL20a
   5024  -- : BFD_RELOC_CR16_ABS20
   5025  -- : BFD_RELOC_CR16_ABS24
   5026  -- : BFD_RELOC_CR16_IMM4
   5027  -- : BFD_RELOC_CR16_IMM8
   5028  -- : BFD_RELOC_CR16_IMM16
   5029  -- : BFD_RELOC_CR16_IMM20
   5030  -- : BFD_RELOC_CR16_IMM24
   5031  -- : BFD_RELOC_CR16_IMM32
   5032  -- : BFD_RELOC_CR16_IMM32a
   5033  -- : BFD_RELOC_CR16_DISP4
   5034  -- : BFD_RELOC_CR16_DISP8
   5035  -- : BFD_RELOC_CR16_DISP16
   5036  -- : BFD_RELOC_CR16_DISP20
   5037  -- : BFD_RELOC_CR16_DISP24
   5038  -- : BFD_RELOC_CR16_DISP24a
   5039  -- : BFD_RELOC_CR16_SWITCH8
   5040  -- : BFD_RELOC_CR16_SWITCH16
   5041  -- : BFD_RELOC_CR16_SWITCH32
   5042      NS CR16 Relocations.
   5043 
   5044  -- : BFD_RELOC_CRX_REL4
   5045  -- : BFD_RELOC_CRX_REL8
   5046  -- : BFD_RELOC_CRX_REL8_CMP
   5047  -- : BFD_RELOC_CRX_REL16
   5048  -- : BFD_RELOC_CRX_REL24
   5049  -- : BFD_RELOC_CRX_REL32
   5050  -- : BFD_RELOC_CRX_REGREL12
   5051  -- : BFD_RELOC_CRX_REGREL22
   5052  -- : BFD_RELOC_CRX_REGREL28
   5053  -- : BFD_RELOC_CRX_REGREL32
   5054  -- : BFD_RELOC_CRX_ABS16
   5055  -- : BFD_RELOC_CRX_ABS32
   5056  -- : BFD_RELOC_CRX_NUM8
   5057  -- : BFD_RELOC_CRX_NUM16
   5058  -- : BFD_RELOC_CRX_NUM32
   5059  -- : BFD_RELOC_CRX_IMM16
   5060  -- : BFD_RELOC_CRX_IMM32
   5061  -- : BFD_RELOC_CRX_SWITCH8
   5062  -- : BFD_RELOC_CRX_SWITCH16
   5063  -- : BFD_RELOC_CRX_SWITCH32
   5064      NS CRX Relocations.
   5065 
   5066  -- : BFD_RELOC_CRIS_BDISP8
   5067  -- : BFD_RELOC_CRIS_UNSIGNED_5
   5068  -- : BFD_RELOC_CRIS_SIGNED_6
   5069  -- : BFD_RELOC_CRIS_UNSIGNED_6
   5070  -- : BFD_RELOC_CRIS_SIGNED_8
   5071  -- : BFD_RELOC_CRIS_UNSIGNED_8
   5072  -- : BFD_RELOC_CRIS_SIGNED_16
   5073  -- : BFD_RELOC_CRIS_UNSIGNED_16
   5074  -- : BFD_RELOC_CRIS_LAPCQ_OFFSET
   5075  -- : BFD_RELOC_CRIS_UNSIGNED_4
   5076      These relocs are only used within the CRIS assembler.  They are not
   5077      (at present) written to any object files.
   5078 
   5079  -- : BFD_RELOC_CRIS_COPY
   5080  -- : BFD_RELOC_CRIS_GLOB_DAT
   5081  -- : BFD_RELOC_CRIS_JUMP_SLOT
   5082  -- : BFD_RELOC_CRIS_RELATIVE
   5083      Relocs used in ELF shared libraries for CRIS.
   5084 
   5085  -- : BFD_RELOC_CRIS_32_GOT
   5086      32-bit offset to symbol-entry within GOT.
   5087 
   5088  -- : BFD_RELOC_CRIS_16_GOT
   5089      16-bit offset to symbol-entry within GOT.
   5090 
   5091  -- : BFD_RELOC_CRIS_32_GOTPLT
   5092      32-bit offset to symbol-entry within GOT, with PLT handling.
   5093 
   5094  -- : BFD_RELOC_CRIS_16_GOTPLT
   5095      16-bit offset to symbol-entry within GOT, with PLT handling.
   5096 
   5097  -- : BFD_RELOC_CRIS_32_GOTREL
   5098      32-bit offset to symbol, relative to GOT.
   5099 
   5100  -- : BFD_RELOC_CRIS_32_PLT_GOTREL
   5101      32-bit offset to symbol with PLT entry, relative to GOT.
   5102 
   5103  -- : BFD_RELOC_CRIS_32_PLT_PCREL
   5104      32-bit offset to symbol with PLT entry, relative to this
   5105      relocation.
   5106 
   5107  -- : BFD_RELOC_860_COPY
   5108  -- : BFD_RELOC_860_GLOB_DAT
   5109  -- : BFD_RELOC_860_JUMP_SLOT
   5110  -- : BFD_RELOC_860_RELATIVE
   5111  -- : BFD_RELOC_860_PC26
   5112  -- : BFD_RELOC_860_PLT26
   5113  -- : BFD_RELOC_860_PC16
   5114  -- : BFD_RELOC_860_LOW0
   5115  -- : BFD_RELOC_860_SPLIT0
   5116  -- : BFD_RELOC_860_LOW1
   5117  -- : BFD_RELOC_860_SPLIT1
   5118  -- : BFD_RELOC_860_LOW2
   5119  -- : BFD_RELOC_860_SPLIT2
   5120  -- : BFD_RELOC_860_LOW3
   5121  -- : BFD_RELOC_860_LOGOT0
   5122  -- : BFD_RELOC_860_SPGOT0
   5123  -- : BFD_RELOC_860_LOGOT1
   5124  -- : BFD_RELOC_860_SPGOT1
   5125  -- : BFD_RELOC_860_LOGOTOFF0
   5126  -- : BFD_RELOC_860_SPGOTOFF0
   5127  -- : BFD_RELOC_860_LOGOTOFF1
   5128  -- : BFD_RELOC_860_SPGOTOFF1
   5129  -- : BFD_RELOC_860_LOGOTOFF2
   5130  -- : BFD_RELOC_860_LOGOTOFF3
   5131  -- : BFD_RELOC_860_LOPC
   5132  -- : BFD_RELOC_860_HIGHADJ
   5133  -- : BFD_RELOC_860_HAGOT
   5134  -- : BFD_RELOC_860_HAGOTOFF
   5135  -- : BFD_RELOC_860_HAPC
   5136  -- : BFD_RELOC_860_HIGH
   5137  -- : BFD_RELOC_860_HIGOT
   5138  -- : BFD_RELOC_860_HIGOTOFF
   5139      Intel i860 Relocations.
   5140 
   5141  -- : BFD_RELOC_OPENRISC_ABS_26
   5142  -- : BFD_RELOC_OPENRISC_REL_26
   5143      OpenRISC Relocations.
   5144 
   5145  -- : BFD_RELOC_H8_DIR16A8
   5146  -- : BFD_RELOC_H8_DIR16R8
   5147  -- : BFD_RELOC_H8_DIR24A8
   5148  -- : BFD_RELOC_H8_DIR24R8
   5149  -- : BFD_RELOC_H8_DIR32A16
   5150      H8 elf Relocations.
   5151 
   5152  -- : BFD_RELOC_XSTORMY16_REL_12
   5153  -- : BFD_RELOC_XSTORMY16_12
   5154  -- : BFD_RELOC_XSTORMY16_24
   5155  -- : BFD_RELOC_XSTORMY16_FPTR16
   5156      Sony Xstormy16 Relocations.
   5157 
   5158  -- : BFD_RELOC_RELC
   5159      Self-describing complex relocations.
   5160 
   5161  -- : BFD_RELOC_XC16X_PAG
   5162  -- : BFD_RELOC_XC16X_POF
   5163  -- : BFD_RELOC_XC16X_SEG
   5164  -- : BFD_RELOC_XC16X_SOF
   5165      Infineon Relocations.
   5166 
   5167  -- : BFD_RELOC_VAX_GLOB_DAT
   5168  -- : BFD_RELOC_VAX_JMP_SLOT
   5169  -- : BFD_RELOC_VAX_RELATIVE
   5170      Relocations used by VAX ELF.
   5171 
   5172  -- : BFD_RELOC_MT_PC16
   5173      Morpho MT - 16 bit immediate relocation.
   5174 
   5175  -- : BFD_RELOC_MT_HI16
   5176      Morpho MT - Hi 16 bits of an address.
   5177 
   5178  -- : BFD_RELOC_MT_LO16
   5179      Morpho MT - Low 16 bits of an address.
   5180 
   5181  -- : BFD_RELOC_MT_GNU_VTINHERIT
   5182      Morpho MT - Used to tell the linker which vtable entries are used.
   5183 
   5184  -- : BFD_RELOC_MT_GNU_VTENTRY
   5185      Morpho MT - Used to tell the linker which vtable entries are used.
   5186 
   5187  -- : BFD_RELOC_MT_PCINSN8
   5188      Morpho MT - 8 bit immediate relocation.
   5189 
   5190  -- : BFD_RELOC_MSP430_10_PCREL
   5191  -- : BFD_RELOC_MSP430_16_PCREL
   5192  -- : BFD_RELOC_MSP430_16
   5193  -- : BFD_RELOC_MSP430_16_PCREL_BYTE
   5194  -- : BFD_RELOC_MSP430_16_BYTE
   5195  -- : BFD_RELOC_MSP430_2X_PCREL
   5196  -- : BFD_RELOC_MSP430_RL_PCREL
   5197      msp430 specific relocation codes
   5198 
   5199  -- : BFD_RELOC_IQ2000_OFFSET_16
   5200  -- : BFD_RELOC_IQ2000_OFFSET_21
   5201  -- : BFD_RELOC_IQ2000_UHI16
   5202      IQ2000 Relocations.
   5203 
   5204  -- : BFD_RELOC_XTENSA_RTLD
   5205      Special Xtensa relocation used only by PLT entries in ELF shared
   5206      objects to indicate that the runtime linker should set the value
   5207      to one of its own internal functions or data structures.
   5208 
   5209  -- : BFD_RELOC_XTENSA_GLOB_DAT
   5210  -- : BFD_RELOC_XTENSA_JMP_SLOT
   5211  -- : BFD_RELOC_XTENSA_RELATIVE
   5212      Xtensa relocations for ELF shared objects.
   5213 
   5214  -- : BFD_RELOC_XTENSA_PLT
   5215      Xtensa relocation used in ELF object files for symbols that may
   5216      require PLT entries.  Otherwise, this is just a generic 32-bit
   5217      relocation.
   5218 
   5219  -- : BFD_RELOC_XTENSA_DIFF8
   5220  -- : BFD_RELOC_XTENSA_DIFF16
   5221  -- : BFD_RELOC_XTENSA_DIFF32
   5222      Xtensa relocations to mark the difference of two local symbols.
   5223      These are only needed to support linker relaxation and can be
   5224      ignored when not relaxing.  The field is set to the value of the
   5225      difference assuming no relaxation.  The relocation encodes the
   5226      position of the first symbol so the linker can determine whether
   5227      to adjust the field value.
   5228 
   5229  -- : BFD_RELOC_XTENSA_SLOT0_OP
   5230  -- : BFD_RELOC_XTENSA_SLOT1_OP
   5231  -- : BFD_RELOC_XTENSA_SLOT2_OP
   5232  -- : BFD_RELOC_XTENSA_SLOT3_OP
   5233  -- : BFD_RELOC_XTENSA_SLOT4_OP
   5234  -- : BFD_RELOC_XTENSA_SLOT5_OP
   5235  -- : BFD_RELOC_XTENSA_SLOT6_OP
   5236  -- : BFD_RELOC_XTENSA_SLOT7_OP
   5237  -- : BFD_RELOC_XTENSA_SLOT8_OP
   5238  -- : BFD_RELOC_XTENSA_SLOT9_OP
   5239  -- : BFD_RELOC_XTENSA_SLOT10_OP
   5240  -- : BFD_RELOC_XTENSA_SLOT11_OP
   5241  -- : BFD_RELOC_XTENSA_SLOT12_OP
   5242  -- : BFD_RELOC_XTENSA_SLOT13_OP
   5243  -- : BFD_RELOC_XTENSA_SLOT14_OP
   5244      Generic Xtensa relocations for instruction operands.  Only the slot
   5245      number is encoded in the relocation.  The relocation applies to the
   5246      last PC-relative immediate operand, or if there are no PC-relative
   5247      immediates, to the last immediate operand.
   5248 
   5249  -- : BFD_RELOC_XTENSA_SLOT0_ALT
   5250  -- : BFD_RELOC_XTENSA_SLOT1_ALT
   5251  -- : BFD_RELOC_XTENSA_SLOT2_ALT
   5252  -- : BFD_RELOC_XTENSA_SLOT3_ALT
   5253  -- : BFD_RELOC_XTENSA_SLOT4_ALT
   5254  -- : BFD_RELOC_XTENSA_SLOT5_ALT
   5255  -- : BFD_RELOC_XTENSA_SLOT6_ALT
   5256  -- : BFD_RELOC_XTENSA_SLOT7_ALT
   5257  -- : BFD_RELOC_XTENSA_SLOT8_ALT
   5258  -- : BFD_RELOC_XTENSA_SLOT9_ALT
   5259  -- : BFD_RELOC_XTENSA_SLOT10_ALT
   5260  -- : BFD_RELOC_XTENSA_SLOT11_ALT
   5261  -- : BFD_RELOC_XTENSA_SLOT12_ALT
   5262  -- : BFD_RELOC_XTENSA_SLOT13_ALT
   5263  -- : BFD_RELOC_XTENSA_SLOT14_ALT
   5264      Alternate Xtensa relocations.  Only the slot is encoded in the
   5265      relocation.  The meaning of these relocations is opcode-specific.
   5266 
   5267  -- : BFD_RELOC_XTENSA_OP0
   5268  -- : BFD_RELOC_XTENSA_OP1
   5269  -- : BFD_RELOC_XTENSA_OP2
   5270      Xtensa relocations for backward compatibility.  These have all been
   5271      replaced by BFD_RELOC_XTENSA_SLOT0_OP.
   5272 
   5273  -- : BFD_RELOC_XTENSA_ASM_EXPAND
   5274      Xtensa relocation to mark that the assembler expanded the
   5275      instructions from an original target.  The expansion size is
   5276      encoded in the reloc size.
   5277 
   5278  -- : BFD_RELOC_XTENSA_ASM_SIMPLIFY
   5279      Xtensa relocation to mark that the linker should simplify
   5280      assembler-expanded instructions.  This is commonly used internally
   5281      by the linker after analysis of a BFD_RELOC_XTENSA_ASM_EXPAND.
   5282 
   5283  -- : BFD_RELOC_XTENSA_TLSDESC_FN
   5284  -- : BFD_RELOC_XTENSA_TLSDESC_ARG
   5285  -- : BFD_RELOC_XTENSA_TLS_DTPOFF
   5286  -- : BFD_RELOC_XTENSA_TLS_TPOFF
   5287  -- : BFD_RELOC_XTENSA_TLS_FUNC
   5288  -- : BFD_RELOC_XTENSA_TLS_ARG
   5289  -- : BFD_RELOC_XTENSA_TLS_CALL
   5290      Xtensa TLS relocations.
   5291 
   5292  -- : BFD_RELOC_Z80_DISP8
   5293      8 bit signed offset in (ix+d) or (iy+d).
   5294 
   5295  -- : BFD_RELOC_Z8K_DISP7
   5296      DJNZ offset.
   5297 
   5298  -- : BFD_RELOC_Z8K_CALLR
   5299      CALR offset.
   5300 
   5301  -- : BFD_RELOC_Z8K_IMM4L
   5302      4 bit value.
   5303 
   5304 
   5305      typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
   5306    
   5307 2.10.2.2 `bfd_reloc_type_lookup'
   5308 ................................
   5309 
   5310 *Synopsis*
   5311      reloc_howto_type *bfd_reloc_type_lookup
   5312         (bfd *abfd, bfd_reloc_code_real_type code);
   5313      reloc_howto_type *bfd_reloc_name_lookup
   5314         (bfd *abfd, const char *reloc_name);
   5315    *Description*
   5316 Return a pointer to a howto structure which, when invoked, will perform
   5317 the relocation CODE on data from the architecture noted.
   5318 
   5319 2.10.2.3 `bfd_default_reloc_type_lookup'
   5320 ........................................
   5321 
   5322 *Synopsis*
   5323      reloc_howto_type *bfd_default_reloc_type_lookup
   5324         (bfd *abfd, bfd_reloc_code_real_type  code);
   5325    *Description*
   5326 Provides a default relocation lookup routine for any architecture.
   5327 
   5328 2.10.2.4 `bfd_get_reloc_code_name'
   5329 ..................................
   5330 
   5331 *Synopsis*
   5332      const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
   5333    *Description*
   5334 Provides a printable name for the supplied relocation code.  Useful
   5335 mainly for printing error messages.
   5336 
   5337 2.10.2.5 `bfd_generic_relax_section'
   5338 ....................................
   5339 
   5340 *Synopsis*
   5341      bfd_boolean bfd_generic_relax_section
   5342         (bfd *abfd,
   5343          asection *section,
   5344          struct bfd_link_info *,
   5345          bfd_boolean *);
   5346    *Description*
   5347 Provides default handling for relaxing for back ends which don't do
   5348 relaxing.
   5349 
   5350 2.10.2.6 `bfd_generic_gc_sections'
   5351 ..................................
   5352 
   5353 *Synopsis*
   5354      bfd_boolean bfd_generic_gc_sections
   5355         (bfd *, struct bfd_link_info *);
   5356    *Description*
   5357 Provides default handling for relaxing for back ends which don't do
   5358 section gc - i.e., does nothing.
   5359 
   5360 2.10.2.7 `bfd_generic_merge_sections'
   5361 .....................................
   5362 
   5363 *Synopsis*
   5364      bfd_boolean bfd_generic_merge_sections
   5365         (bfd *, struct bfd_link_info *);
   5366    *Description*
   5367 Provides default handling for SEC_MERGE section merging for back ends
   5368 which don't have SEC_MERGE support - i.e., does nothing.
   5369 
   5370 2.10.2.8 `bfd_generic_get_relocated_section_contents'
   5371 .....................................................
   5372 
   5373 *Synopsis*
   5374      bfd_byte *bfd_generic_get_relocated_section_contents
   5375         (bfd *abfd,
   5376          struct bfd_link_info *link_info,
   5377          struct bfd_link_order *link_order,
   5378          bfd_byte *data,
   5379          bfd_boolean relocatable,
   5380          asymbol **symbols);
   5381    *Description*
   5382 Provides default handling of relocation effort for back ends which
   5383 can't be bothered to do it efficiently.
   5384 
   5385 
   5386 File: bfd.info,  Node: Core Files,  Next: Targets,  Prev: Relocations,  Up: BFD front end
   5387 
   5388 2.11 Core files
   5389 ===============
   5390 
   5391 2.11.1 Core file functions
   5392 --------------------------
   5393 
   5394 *Description*
   5395 These are functions pertaining to core files.
   5396 
   5397 2.11.1.1 `bfd_core_file_failing_command'
   5398 ........................................
   5399 
   5400 *Synopsis*
   5401      const char *bfd_core_file_failing_command (bfd *abfd);
   5402    *Description*
   5403 Return a read-only string explaining which program was running when it
   5404 failed and produced the core file ABFD.
   5405 
   5406 2.11.1.2 `bfd_core_file_failing_signal'
   5407 .......................................
   5408 
   5409 *Synopsis*
   5410      int bfd_core_file_failing_signal (bfd *abfd);
   5411    *Description*
   5412 Returns the signal number which caused the core dump which generated
   5413 the file the BFD ABFD is attached to.
   5414 
   5415 2.11.1.3 `core_file_matches_executable_p'
   5416 .........................................
   5417 
   5418 *Synopsis*
   5419      bfd_boolean core_file_matches_executable_p
   5420         (bfd *core_bfd, bfd *exec_bfd);
   5421    *Description*
   5422 Return `TRUE' if the core file attached to CORE_BFD was generated by a
   5423 run of the executable file attached to EXEC_BFD, `FALSE' otherwise.
   5424 
   5425 2.11.1.4 `generic_core_file_matches_executable_p'
   5426 .................................................
   5427 
   5428 *Synopsis*
   5429      bfd_boolean generic_core_file_matches_executable_p
   5430         (bfd *core_bfd, bfd *exec_bfd);
   5431    *Description*
   5432 Return TRUE if the core file attached to CORE_BFD was generated by a
   5433 run of the executable file attached to EXEC_BFD.  The match is based on
   5434 executable basenames only.
   5435 
   5436    Note: When not able to determine the core file failing command or
   5437 the executable name, we still return TRUE even though we're not sure
   5438 that core file and executable match.  This is to avoid generating a
   5439 false warning in situations where we really don't know whether they
   5440 match or not.
   5441 
   5442 
   5443 File: bfd.info,  Node: Targets,  Next: Architectures,  Prev: Core Files,  Up: BFD front end
   5444 
   5445 2.12 Targets
   5446 ============
   5447 
   5448 *Description*
   5449 Each port of BFD to a different machine requires the creation of a
   5450 target back end. All the back end provides to the root part of BFD is a
   5451 structure containing pointers to functions which perform certain low
   5452 level operations on files. BFD translates the applications's requests
   5453 through a pointer into calls to the back end routines.
   5454 
   5455    When a file is opened with `bfd_openr', its format and target are
   5456 unknown. BFD uses various mechanisms to determine how to interpret the
   5457 file. The operations performed are:
   5458 
   5459    * Create a BFD by calling the internal routine `_bfd_new_bfd', then
   5460      call `bfd_find_target' with the target string supplied to
   5461      `bfd_openr' and the new BFD pointer.
   5462 
   5463    * If a null target string was provided to `bfd_find_target', look up
   5464      the environment variable `GNUTARGET' and use that as the target
   5465      string.
   5466 
   5467    * If the target string is still `NULL', or the target string is
   5468      `default', then use the first item in the target vector as the
   5469      target type, and set `target_defaulted' in the BFD to cause
   5470      `bfd_check_format' to loop through all the targets.  *Note
   5471      bfd_target::.  *Note Formats::.
   5472 
   5473    * Otherwise, inspect the elements in the target vector one by one,
   5474      until a match on target name is found. When found, use it.
   5475 
   5476    * Otherwise return the error `bfd_error_invalid_target' to
   5477      `bfd_openr'.
   5478 
   5479    * `bfd_openr' attempts to open the file using `bfd_open_file', and
   5480      returns the BFD.
   5481    Once the BFD has been opened and the target selected, the file
   5482 format may be determined. This is done by calling `bfd_check_format' on
   5483 the BFD with a suggested format.  If `target_defaulted' has been set,
   5484 each possible target type is tried to see if it recognizes the
   5485 specified format.  `bfd_check_format' returns `TRUE' when the caller
   5486 guesses right.
   5487 
   5488 * Menu:
   5489 
   5490 * bfd_target::
   5491 
   5492 
   5493 File: bfd.info,  Node: bfd_target,  Prev: Targets,  Up: Targets
   5494 
   5495 2.12.1 bfd_target
   5496 -----------------
   5497 
   5498 *Description*
   5499 This structure contains everything that BFD knows about a target. It
   5500 includes things like its byte order, name, and which routines to call
   5501 to do various operations.
   5502 
   5503    Every BFD points to a target structure with its `xvec' member.
   5504 
   5505    The macros below are used to dispatch to functions through the
   5506 `bfd_target' vector. They are used in a number of macros further down
   5507 in `bfd.h', and are also used when calling various routines by hand
   5508 inside the BFD implementation.  The ARGLIST argument must be
   5509 parenthesized; it contains all the arguments to the called function.
   5510 
   5511    They make the documentation (more) unpleasant to read, so if someone
   5512 wants to fix this and not break the above, please do.
   5513      #define BFD_SEND(bfd, message, arglist) \
   5514        ((*((bfd)->xvec->message)) arglist)
   5515 
   5516      #ifdef DEBUG_BFD_SEND
   5517      #undef BFD_SEND
   5518      #define BFD_SEND(bfd, message, arglist) \
   5519        (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
   5520          ((*((bfd)->xvec->message)) arglist) : \
   5521          (bfd_assert (__FILE__,__LINE__), NULL))
   5522      #endif
   5523    For operations which index on the BFD format:
   5524      #define BFD_SEND_FMT(bfd, message, arglist) \
   5525        (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
   5526 
   5527      #ifdef DEBUG_BFD_SEND
   5528      #undef BFD_SEND_FMT
   5529      #define BFD_SEND_FMT(bfd, message, arglist) \
   5530        (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
   5531         (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
   5532         (bfd_assert (__FILE__,__LINE__), NULL))
   5533      #endif
   5534    This is the structure which defines the type of BFD this is.  The
   5535 `xvec' member of the struct `bfd' itself points here.  Each module that
   5536 implements access to a different target under BFD, defines one of these.
   5537 
   5538    FIXME, these names should be rationalised with the names of the
   5539 entry points which call them. Too bad we can't have one macro to define
   5540 them both!
   5541      enum bfd_flavour
   5542      {
   5543        bfd_target_unknown_flavour,
   5544        bfd_target_aout_flavour,
   5545        bfd_target_coff_flavour,
   5546        bfd_target_ecoff_flavour,
   5547        bfd_target_xcoff_flavour,
   5548        bfd_target_elf_flavour,
   5549        bfd_target_ieee_flavour,
   5550        bfd_target_nlm_flavour,
   5551        bfd_target_oasys_flavour,
   5552        bfd_target_tekhex_flavour,
   5553        bfd_target_srec_flavour,
   5554        bfd_target_ihex_flavour,
   5555        bfd_target_som_flavour,
   5556        bfd_target_os9k_flavour,
   5557        bfd_target_versados_flavour,
   5558        bfd_target_msdos_flavour,
   5559        bfd_target_ovax_flavour,
   5560        bfd_target_evax_flavour,
   5561        bfd_target_mmo_flavour,
   5562        bfd_target_mach_o_flavour,
   5563        bfd_target_pef_flavour,
   5564        bfd_target_pef_xlib_flavour,
   5565        bfd_target_sym_flavour
   5566      };
   5567 
   5568      enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
   5569 
   5570      /* Forward declaration.  */
   5571      typedef struct bfd_link_info _bfd_link_info;
   5572 
   5573      typedef struct bfd_target
   5574      {
   5575        /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
   5576        char *name;
   5577 
   5578       /* The "flavour" of a back end is a general indication about
   5579          the contents of a file.  */
   5580        enum bfd_flavour flavour;
   5581 
   5582        /* The order of bytes within the data area of a file.  */
   5583        enum bfd_endian byteorder;
   5584 
   5585       /* The order of bytes within the header parts of a file.  */
   5586        enum bfd_endian header_byteorder;
   5587 
   5588        /* A mask of all the flags which an executable may have set -
   5589           from the set `BFD_NO_FLAGS', `HAS_RELOC', ...`D_PAGED'.  */
   5590        flagword object_flags;
   5591 
   5592       /* A mask of all the flags which a section may have set - from
   5593          the set `SEC_NO_FLAGS', `SEC_ALLOC', ...`SET_NEVER_LOAD'.  */
   5594        flagword section_flags;
   5595 
   5596       /* The character normally found at the front of a symbol.
   5597          (if any), perhaps `_'.  */
   5598        char symbol_leading_char;
   5599 
   5600       /* The pad character for file names within an archive header.  */
   5601        char ar_pad_char;
   5602 
   5603        /* The maximum number of characters in an archive header.  */
   5604        unsigned short ar_max_namelen;
   5605 
   5606        /* Entries for byte swapping for data. These are different from the
   5607           other entry points, since they don't take a BFD as the first argument.
   5608           Certain other handlers could do the same.  */
   5609        bfd_uint64_t   (*bfd_getx64) (const void *);
   5610        bfd_int64_t    (*bfd_getx_signed_64) (const void *);
   5611        void           (*bfd_putx64) (bfd_uint64_t, void *);
   5612        bfd_vma        (*bfd_getx32) (const void *);
   5613        bfd_signed_vma (*bfd_getx_signed_32) (const void *);
   5614        void           (*bfd_putx32) (bfd_vma, void *);
   5615        bfd_vma        (*bfd_getx16) (const void *);
   5616        bfd_signed_vma (*bfd_getx_signed_16) (const void *);
   5617        void           (*bfd_putx16) (bfd_vma, void *);
   5618 
   5619        /* Byte swapping for the headers.  */
   5620        bfd_uint64_t   (*bfd_h_getx64) (const void *);
   5621        bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
   5622        void           (*bfd_h_putx64) (bfd_uint64_t, void *);
   5623        bfd_vma        (*bfd_h_getx32) (const void *);
   5624        bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
   5625        void           (*bfd_h_putx32) (bfd_vma, void *);
   5626        bfd_vma        (*bfd_h_getx16) (const void *);
   5627        bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
   5628        void           (*bfd_h_putx16) (bfd_vma, void *);
   5629 
   5630        /* Format dependent routines: these are vectors of entry points
   5631           within the target vector structure, one for each format to check.  */
   5632 
   5633        /* Check the format of a file being read.  Return a `bfd_target *' or zero.  */
   5634        const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
   5635 
   5636        /* Set the format of a file being written.  */
   5637        bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
   5638 
   5639        /* Write cached information into a file being written, at `bfd_close'.  */
   5640        bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
   5641    The general target vector.  These vectors are initialized using the
   5642 BFD_JUMP_TABLE macros.
   5643 
   5644        /* Generic entry points.  */
   5645      #define BFD_JUMP_TABLE_GENERIC(NAME) \
   5646        NAME##_close_and_cleanup, \
   5647        NAME##_bfd_free_cached_info, \
   5648        NAME##_new_section_hook, \
   5649        NAME##_get_section_contents, \
   5650        NAME##_get_section_contents_in_window
   5651 
   5652        /* Called when the BFD is being closed to do any necessary cleanup.  */
   5653        bfd_boolean (*_close_and_cleanup) (bfd *);
   5654        /* Ask the BFD to free all cached information.  */
   5655        bfd_boolean (*_bfd_free_cached_info) (bfd *);
   5656        /* Called when a new section is created.  */
   5657        bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
   5658        /* Read the contents of a section.  */
   5659        bfd_boolean (*_bfd_get_section_contents)
   5660          (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
   5661        bfd_boolean (*_bfd_get_section_contents_in_window)
   5662          (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
   5663 
   5664        /* Entry points to copy private data.  */
   5665      #define BFD_JUMP_TABLE_COPY(NAME) \
   5666        NAME##_bfd_copy_private_bfd_data, \
   5667        NAME##_bfd_merge_private_bfd_data, \
   5668        _bfd_generic_init_private_section_data, \
   5669        NAME##_bfd_copy_private_section_data, \
   5670        NAME##_bfd_copy_private_symbol_data, \
   5671        NAME##_bfd_copy_private_header_data, \
   5672        NAME##_bfd_set_private_flags, \
   5673        NAME##_bfd_print_private_bfd_data
   5674 
   5675        /* Called to copy BFD general private data from one object file
   5676           to another.  */
   5677        bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
   5678        /* Called to merge BFD general private data from one object file
   5679           to a common output file when linking.  */
   5680        bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
   5681        /* Called to initialize BFD private section data from one object file
   5682           to another.  */
   5683      #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
   5684        BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
   5685        bfd_boolean (*_bfd_init_private_section_data)
   5686          (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
   5687        /* Called to copy BFD private section data from one object file
   5688           to another.  */
   5689        bfd_boolean (*_bfd_copy_private_section_data)
   5690          (bfd *, sec_ptr, bfd *, sec_ptr);
   5691        /* Called to copy BFD private symbol data from one symbol
   5692           to another.  */
   5693        bfd_boolean (*_bfd_copy_private_symbol_data)
   5694          (bfd *, asymbol *, bfd *, asymbol *);
   5695        /* Called to copy BFD private header data from one object file
   5696           to another.  */
   5697        bfd_boolean (*_bfd_copy_private_header_data)
   5698          (bfd *, bfd *);
   5699        /* Called to set private backend flags.  */
   5700        bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
   5701 
   5702        /* Called to print private BFD data.  */
   5703        bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
   5704 
   5705        /* Core file entry points.  */
   5706      #define BFD_JUMP_TABLE_CORE(NAME) \
   5707        NAME##_core_file_failing_command, \
   5708        NAME##_core_file_failing_signal, \
   5709        NAME##_core_file_matches_executable_p
   5710 
   5711        char *      (*_core_file_failing_command) (bfd *);
   5712        int         (*_core_file_failing_signal) (bfd *);
   5713        bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
   5714 
   5715        /* Archive entry points.  */
   5716      #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
   5717        NAME##_slurp_armap, \
   5718        NAME##_slurp_extended_name_table, \
   5719        NAME##_construct_extended_name_table, \
   5720        NAME##_truncate_arname, \
   5721        NAME##_write_armap, \
   5722        NAME##_read_ar_hdr, \
   5723        NAME##_openr_next_archived_file, \
   5724        NAME##_get_elt_at_index, \
   5725        NAME##_generic_stat_arch_elt, \
   5726        NAME##_update_armap_timestamp
   5727 
   5728        bfd_boolean (*_bfd_slurp_armap) (bfd *);
   5729        bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
   5730        bfd_boolean (*_bfd_construct_extended_name_table)
   5731          (bfd *, char **, bfd_size_type *, const char **);
   5732        void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
   5733        bfd_boolean (*write_armap)
   5734          (bfd *, unsigned int, struct orl *, unsigned int, int);
   5735        void *      (*_bfd_read_ar_hdr_fn) (bfd *);
   5736        bfd *       (*openr_next_archived_file) (bfd *, bfd *);
   5737      #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
   5738        bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
   5739        int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
   5740        bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
   5741 
   5742        /* Entry points used for symbols.  */
   5743      #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
   5744        NAME##_get_symtab_upper_bound, \
   5745        NAME##_canonicalize_symtab, \
   5746        NAME##_make_empty_symbol, \
   5747        NAME##_print_symbol, \
   5748        NAME##_get_symbol_info, \
   5749        NAME##_bfd_is_local_label_name, \
   5750        NAME##_bfd_is_target_special_symbol, \
   5751        NAME##_get_lineno, \
   5752        NAME##_find_nearest_line, \
   5753        _bfd_generic_find_line, \
   5754        NAME##_find_inliner_info, \
   5755        NAME##_bfd_make_debug_symbol, \
   5756        NAME##_read_minisymbols, \
   5757        NAME##_minisymbol_to_symbol
   5758 
   5759        long        (*_bfd_get_symtab_upper_bound) (bfd *);
   5760        long        (*_bfd_canonicalize_symtab)
   5761          (bfd *, struct bfd_symbol **);
   5762        struct bfd_symbol *
   5763                    (*_bfd_make_empty_symbol) (bfd *);
   5764        void        (*_bfd_print_symbol)
   5765          (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
   5766      #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
   5767        void        (*_bfd_get_symbol_info)
   5768          (bfd *, struct bfd_symbol *, symbol_info *);
   5769      #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
   5770        bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
   5771        bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
   5772        alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
   5773        bfd_boolean (*_bfd_find_nearest_line)
   5774          (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
   5775           const char **, const char **, unsigned int *);
   5776        bfd_boolean (*_bfd_find_line)
   5777          (bfd *, struct bfd_symbol **, struct bfd_symbol *,
   5778           const char **, unsigned int *);
   5779        bfd_boolean (*_bfd_find_inliner_info)
   5780          (bfd *, const char **, const char **, unsigned int *);
   5781       /* Back-door to allow format-aware applications to create debug symbols
   5782          while using BFD for everything else.  Currently used by the assembler
   5783          when creating COFF files.  */
   5784        asymbol *   (*_bfd_make_debug_symbol)
   5785          (bfd *, void *, unsigned long size);
   5786      #define bfd_read_minisymbols(b, d, m, s) \
   5787        BFD_SEND (b, _read_minisymbols, (b, d, m, s))
   5788        long        (*_read_minisymbols)
   5789          (bfd *, bfd_boolean, void **, unsigned int *);
   5790      #define bfd_minisymbol_to_symbol(b, d, m, f) \
   5791        BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
   5792        asymbol *   (*_minisymbol_to_symbol)
   5793          (bfd *, bfd_boolean, const void *, asymbol *);
   5794 
   5795        /* Routines for relocs.  */
   5796      #define BFD_JUMP_TABLE_RELOCS(NAME) \
   5797        NAME##_get_reloc_upper_bound, \
   5798        NAME##_canonicalize_reloc, \
   5799        NAME##_bfd_reloc_type_lookup, \
   5800        NAME##_bfd_reloc_name_lookup
   5801 
   5802        long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
   5803        long        (*_bfd_canonicalize_reloc)
   5804          (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
   5805        /* See documentation on reloc types.  */
   5806        reloc_howto_type *
   5807                    (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
   5808        reloc_howto_type *
   5809                    (*reloc_name_lookup) (bfd *, const char *);
   5810 
   5811 
   5812        /* Routines used when writing an object file.  */
   5813      #define BFD_JUMP_TABLE_WRITE(NAME) \
   5814        NAME##_set_arch_mach, \
   5815        NAME##_set_section_contents
   5816 
   5817        bfd_boolean (*_bfd_set_arch_mach)
   5818          (bfd *, enum bfd_architecture, unsigned long);
   5819        bfd_boolean (*_bfd_set_section_contents)
   5820          (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
   5821 
   5822        /* Routines used by the linker.  */
   5823      #define BFD_JUMP_TABLE_LINK(NAME) \
   5824        NAME##_sizeof_headers, \
   5825        NAME##_bfd_get_relocated_section_contents, \
   5826        NAME##_bfd_relax_section, \
   5827        NAME##_bfd_link_hash_table_create, \
   5828        NAME##_bfd_link_hash_table_free, \
   5829        NAME##_bfd_link_add_symbols, \
   5830        NAME##_bfd_link_just_syms, \
   5831        NAME##_bfd_final_link, \
   5832        NAME##_bfd_link_split_section, \
   5833        NAME##_bfd_gc_sections, \
   5834        NAME##_bfd_merge_sections, \
   5835        NAME##_bfd_is_group_section, \
   5836        NAME##_bfd_discard_group, \
   5837        NAME##_section_already_linked \
   5838 
   5839        int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
   5840        bfd_byte *  (*_bfd_get_relocated_section_contents)
   5841          (bfd *, struct bfd_link_info *, struct bfd_link_order *,
   5842           bfd_byte *, bfd_boolean, struct bfd_symbol **);
   5843 
   5844        bfd_boolean (*_bfd_relax_section)
   5845          (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
   5846 
   5847        /* Create a hash table for the linker.  Different backends store
   5848           different information in this table.  */
   5849        struct bfd_link_hash_table *
   5850                    (*_bfd_link_hash_table_create) (bfd *);
   5851 
   5852        /* Release the memory associated with the linker hash table.  */
   5853        void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
   5854 
   5855        /* Add symbols from this object file into the hash table.  */
   5856        bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
   5857 
   5858        /* Indicate that we are only retrieving symbol values from this section.  */
   5859        void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
   5860 
   5861        /* Do a link based on the link_order structures attached to each
   5862           section of the BFD.  */
   5863        bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
   5864 
   5865        /* Should this section be split up into smaller pieces during linking.  */
   5866        bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
   5867 
   5868        /* Remove sections that are not referenced from the output.  */
   5869        bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
   5870 
   5871        /* Attempt to merge SEC_MERGE sections.  */
   5872        bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
   5873 
   5874        /* Is this section a member of a group?  */
   5875        bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
   5876 
   5877        /* Discard members of a group.  */
   5878        bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
   5879 
   5880        /* Check if SEC has been already linked during a reloceatable or
   5881           final link.  */
   5882        void (*_section_already_linked) (bfd *, struct bfd_section *,
   5883                                         struct bfd_link_info *);
   5884 
   5885        /* Routines to handle dynamic symbols and relocs.  */
   5886      #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
   5887        NAME##_get_dynamic_symtab_upper_bound, \
   5888        NAME##_canonicalize_dynamic_symtab, \
   5889        NAME##_get_synthetic_symtab, \
   5890        NAME##_get_dynamic_reloc_upper_bound, \
   5891        NAME##_canonicalize_dynamic_reloc
   5892 
   5893        /* Get the amount of memory required to hold the dynamic symbols.  */
   5894        long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
   5895        /* Read in the dynamic symbols.  */
   5896        long        (*_bfd_canonicalize_dynamic_symtab)
   5897          (bfd *, struct bfd_symbol **);
   5898        /* Create synthetized symbols.  */
   5899        long        (*_bfd_get_synthetic_symtab)
   5900          (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
   5901           struct bfd_symbol **);
   5902        /* Get the amount of memory required to hold the dynamic relocs.  */
   5903        long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
   5904        /* Read in the dynamic relocs.  */
   5905        long        (*_bfd_canonicalize_dynamic_reloc)
   5906          (bfd *, arelent **, struct bfd_symbol **);
   5907    A pointer to an alternative bfd_target in case the current one is not
   5908 satisfactory.  This can happen when the target cpu supports both big
   5909 and little endian code, and target chosen by the linker has the wrong
   5910 endianness.  The function open_output() in ld/ldlang.c uses this field
   5911 to find an alternative output format that is suitable.
   5912        /* Opposite endian version of this target.  */
   5913        const struct bfd_target * alternative_target;
   5914 
   5915        /* Data for use by back-end routines, which isn't
   5916           generic enough to belong in this structure.  */
   5917        const void *backend_data;
   5918 
   5919      } bfd_target;
   5920 
   5921 2.12.1.1 `bfd_set_default_target'
   5922 .................................
   5923 
   5924 *Synopsis*
   5925      bfd_boolean bfd_set_default_target (const char *name);
   5926    *Description*
   5927 Set the default target vector to use when recognizing a BFD.  This
   5928 takes the name of the target, which may be a BFD target name or a
   5929 configuration triplet.
   5930 
   5931 2.12.1.2 `bfd_find_target'
   5932 ..........................
   5933 
   5934 *Synopsis*
   5935      const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
   5936    *Description*
   5937 Return a pointer to the transfer vector for the object target named
   5938 TARGET_NAME.  If TARGET_NAME is `NULL', choose the one in the
   5939 environment variable `GNUTARGET'; if that is null or not defined, then
   5940 choose the first entry in the target list.  Passing in the string
   5941 "default" or setting the environment variable to "default" will cause
   5942 the first entry in the target list to be returned, and
   5943 "target_defaulted" will be set in the BFD if ABFD isn't `NULL'.  This
   5944 causes `bfd_check_format' to loop over all the targets to find the one
   5945 that matches the file being read.
   5946 
   5947 2.12.1.3 `bfd_target_list'
   5948 ..........................
   5949 
   5950 *Synopsis*
   5951      const char ** bfd_target_list (void);
   5952    *Description*
   5953 Return a freshly malloced NULL-terminated vector of the names of all
   5954 the valid BFD targets. Do not modify the names.
   5955 
   5956 2.12.1.4 `bfd_seach_for_target'
   5957 ...............................
   5958 
   5959 *Synopsis*
   5960      const bfd_target *bfd_search_for_target
   5961         (int (*search_func) (const bfd_target *, void *),
   5962          void *);
   5963    *Description*
   5964 Return a pointer to the first transfer vector in the list of transfer
   5965 vectors maintained by BFD that produces a non-zero result when passed
   5966 to the function SEARCH_FUNC.  The parameter DATA is passed, unexamined,
   5967 to the search function.
   5968 
   5969 
   5970 File: bfd.info,  Node: Architectures,  Next: Opening and Closing,  Prev: Targets,  Up: BFD front end
   5971 
   5972 2.13 Architectures
   5973 ==================
   5974 
   5975 BFD keeps one atom in a BFD describing the architecture of the data
   5976 attached to the BFD: a pointer to a `bfd_arch_info_type'.
   5977 
   5978    Pointers to structures can be requested independently of a BFD so
   5979 that an architecture's information can be interrogated without access
   5980 to an open BFD.
   5981 
   5982    The architecture information is provided by each architecture
   5983 package.  The set of default architectures is selected by the macro
   5984 `SELECT_ARCHITECTURES'.  This is normally set up in the
   5985 `config/TARGET.mt' file of your choice.  If the name is not defined,
   5986 then all the architectures supported are included.
   5987 
   5988    When BFD starts up, all the architectures are called with an
   5989 initialize method.  It is up to the architecture back end to insert as
   5990 many items into the list of architectures as it wants to; generally
   5991 this would be one for each machine and one for the default case (an
   5992 item with a machine field of 0).
   5993 
   5994    BFD's idea of an architecture is implemented in `archures.c'.
   5995 
   5996 2.13.1 bfd_architecture
   5997 -----------------------
   5998 
   5999 *Description*
   6000 This enum gives the object file's CPU architecture, in a global
   6001 sense--i.e., what processor family does it belong to?  Another field
   6002 indicates which processor within the family is in use.  The machine
   6003 gives a number which distinguishes different versions of the
   6004 architecture, containing, for example, 2 and 3 for Intel i960 KA and
   6005 i960 KB, and 68020 and 68030 for Motorola 68020 and 68030.
   6006      enum bfd_architecture
   6007      {
   6008        bfd_arch_unknown,   /* File arch not known.  */
   6009        bfd_arch_obscure,   /* Arch known, not one of these.  */
   6010        bfd_arch_m68k,      /* Motorola 68xxx */
   6011      #define bfd_mach_m68000 1
   6012      #define bfd_mach_m68008 2
   6013      #define bfd_mach_m68010 3
   6014      #define bfd_mach_m68020 4
   6015      #define bfd_mach_m68030 5
   6016      #define bfd_mach_m68040 6
   6017      #define bfd_mach_m68060 7
   6018      #define bfd_mach_cpu32  8
   6019      #define bfd_mach_fido   9
   6020      #define bfd_mach_mcf_isa_a_nodiv 10
   6021      #define bfd_mach_mcf_isa_a 11
   6022      #define bfd_mach_mcf_isa_a_mac 12
   6023      #define bfd_mach_mcf_isa_a_emac 13
   6024      #define bfd_mach_mcf_isa_aplus 14
   6025      #define bfd_mach_mcf_isa_aplus_mac 15
   6026      #define bfd_mach_mcf_isa_aplus_emac 16
   6027      #define bfd_mach_mcf_isa_b_nousp 17
   6028      #define bfd_mach_mcf_isa_b_nousp_mac 18
   6029      #define bfd_mach_mcf_isa_b_nousp_emac 19
   6030      #define bfd_mach_mcf_isa_b 20
   6031      #define bfd_mach_mcf_isa_b_mac 21
   6032      #define bfd_mach_mcf_isa_b_emac 22
   6033      #define bfd_mach_mcf_isa_b_float 23
   6034      #define bfd_mach_mcf_isa_b_float_mac 24
   6035      #define bfd_mach_mcf_isa_b_float_emac 25
   6036      #define bfd_mach_mcf_isa_c 26
   6037      #define bfd_mach_mcf_isa_c_mac 27
   6038      #define bfd_mach_mcf_isa_c_emac 28
   6039      #define bfd_mach_mcf_isa_c_nodiv 29
   6040      #define bfd_mach_mcf_isa_c_nodiv_mac 30
   6041      #define bfd_mach_mcf_isa_c_nodiv_emac 31
   6042        bfd_arch_vax,       /* DEC Vax */
   6043        bfd_arch_i960,      /* Intel 960 */
   6044          /* The order of the following is important.
   6045             lower number indicates a machine type that
   6046             only accepts a subset of the instructions
   6047             available to machines with higher numbers.
   6048             The exception is the "ca", which is
   6049             incompatible with all other machines except
   6050             "core".  */
   6051 
   6052      #define bfd_mach_i960_core      1
   6053      #define bfd_mach_i960_ka_sa     2
   6054      #define bfd_mach_i960_kb_sb     3
   6055      #define bfd_mach_i960_mc        4
   6056      #define bfd_mach_i960_xa        5
   6057      #define bfd_mach_i960_ca        6
   6058      #define bfd_mach_i960_jx        7
   6059      #define bfd_mach_i960_hx        8
   6060 
   6061        bfd_arch_or32,      /* OpenRISC 32 */
   6062 
   6063        bfd_arch_sparc,     /* SPARC */
   6064      #define bfd_mach_sparc                 1
   6065      /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
   6066      #define bfd_mach_sparc_sparclet        2
   6067      #define bfd_mach_sparc_sparclite       3
   6068      #define bfd_mach_sparc_v8plus          4
   6069      #define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
   6070      #define bfd_mach_sparc_sparclite_le    6
   6071      #define bfd_mach_sparc_v9              7
   6072      #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
   6073      #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
   6074      #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
   6075      /* Nonzero if MACH has the v9 instruction set.  */
   6076      #define bfd_mach_sparc_v9_p(mach) \
   6077        ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
   6078         && (mach) != bfd_mach_sparc_sparclite_le)
   6079      /* Nonzero if MACH is a 64 bit sparc architecture.  */
   6080      #define bfd_mach_sparc_64bit_p(mach) \
   6081        ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
   6082        bfd_arch_spu,       /* PowerPC SPU */
   6083      #define bfd_mach_spu           256
   6084        bfd_arch_mips,      /* MIPS Rxxxx */
   6085      #define bfd_mach_mips3000              3000
   6086      #define bfd_mach_mips3900              3900
   6087      #define bfd_mach_mips4000              4000
   6088      #define bfd_mach_mips4010              4010
   6089      #define bfd_mach_mips4100              4100
   6090      #define bfd_mach_mips4111              4111
   6091      #define bfd_mach_mips4120              4120
   6092      #define bfd_mach_mips4300              4300
   6093      #define bfd_mach_mips4400              4400
   6094      #define bfd_mach_mips4600              4600
   6095      #define bfd_mach_mips4650              4650
   6096      #define bfd_mach_mips5000              5000
   6097      #define bfd_mach_mips5400              5400
   6098      #define bfd_mach_mips5500              5500
   6099      #define bfd_mach_mips6000              6000
   6100      #define bfd_mach_mips7000              7000
   6101      #define bfd_mach_mips8000              8000
   6102      #define bfd_mach_mips9000              9000
   6103      #define bfd_mach_mips10000             10000
   6104      #define bfd_mach_mips12000             12000
   6105      #define bfd_mach_mips16                16
   6106      #define bfd_mach_mips5                 5
   6107      #define bfd_mach_mips_loongson_2e      3001
   6108      #define bfd_mach_mips_loongson_2f      3002
   6109      #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
   6110      #define bfd_mach_mips_octeon           6501
   6111      #define bfd_mach_mipsisa32             32
   6112      #define bfd_mach_mipsisa32r2           33
   6113      #define bfd_mach_mipsisa64             64
   6114      #define bfd_mach_mipsisa64r2           65
   6115        bfd_arch_i386,      /* Intel 386 */
   6116      #define bfd_mach_i386_i386 1
   6117      #define bfd_mach_i386_i8086 2
   6118      #define bfd_mach_i386_i386_intel_syntax 3
   6119      #define bfd_mach_x86_64 64
   6120      #define bfd_mach_x86_64_intel_syntax 65
   6121        bfd_arch_we32k,     /* AT&T WE32xxx */
   6122        bfd_arch_tahoe,     /* CCI/Harris Tahoe */
   6123        bfd_arch_i860,      /* Intel 860 */
   6124        bfd_arch_i370,      /* IBM 360/370 Mainframes */
   6125        bfd_arch_romp,      /* IBM ROMP PC/RT */
   6126        bfd_arch_convex,    /* Convex */
   6127        bfd_arch_m88k,      /* Motorola 88xxx */
   6128        bfd_arch_m98k,      /* Motorola 98xxx */
   6129        bfd_arch_pyramid,   /* Pyramid Technology */
   6130        bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
   6131      #define bfd_mach_h8300    1
   6132      #define bfd_mach_h8300h   2
   6133      #define bfd_mach_h8300s   3
   6134      #define bfd_mach_h8300hn  4
   6135      #define bfd_mach_h8300sn  5
   6136      #define bfd_mach_h8300sx  6
   6137      #define bfd_mach_h8300sxn 7
   6138        bfd_arch_pdp11,     /* DEC PDP-11 */
   6139        bfd_arch_powerpc,   /* PowerPC */
   6140      #define bfd_mach_ppc           32
   6141      #define bfd_mach_ppc64         64
   6142      #define bfd_mach_ppc_403       403
   6143      #define bfd_mach_ppc_403gc     4030
   6144      #define bfd_mach_ppc_505       505
   6145      #define bfd_mach_ppc_601       601
   6146      #define bfd_mach_ppc_602       602
   6147      #define bfd_mach_ppc_603       603
   6148      #define bfd_mach_ppc_ec603e    6031
   6149      #define bfd_mach_ppc_604       604
   6150      #define bfd_mach_ppc_620       620
   6151      #define bfd_mach_ppc_630       630
   6152      #define bfd_mach_ppc_750       750
   6153      #define bfd_mach_ppc_860       860
   6154      #define bfd_mach_ppc_a35       35
   6155      #define bfd_mach_ppc_rs64ii    642
   6156      #define bfd_mach_ppc_rs64iii   643
   6157      #define bfd_mach_ppc_7400      7400
   6158      #define bfd_mach_ppc_e500      500
   6159      #define bfd_mach_ppc_e500mc    5001
   6160        bfd_arch_rs6000,    /* IBM RS/6000 */
   6161      #define bfd_mach_rs6k          6000
   6162      #define bfd_mach_rs6k_rs1      6001
   6163      #define bfd_mach_rs6k_rsc      6003
   6164      #define bfd_mach_rs6k_rs2      6002
   6165        bfd_arch_hppa,      /* HP PA RISC */
   6166      #define bfd_mach_hppa10        10
   6167      #define bfd_mach_hppa11        11
   6168      #define bfd_mach_hppa20        20
   6169      #define bfd_mach_hppa20w       25
   6170        bfd_arch_d10v,      /* Mitsubishi D10V */
   6171      #define bfd_mach_d10v          1
   6172      #define bfd_mach_d10v_ts2      2
   6173      #define bfd_mach_d10v_ts3      3
   6174        bfd_arch_d30v,      /* Mitsubishi D30V */
   6175        bfd_arch_dlx,       /* DLX */
   6176        bfd_arch_m68hc11,   /* Motorola 68HC11 */
   6177        bfd_arch_m68hc12,   /* Motorola 68HC12 */
   6178      #define bfd_mach_m6812_default 0
   6179      #define bfd_mach_m6812         1
   6180      #define bfd_mach_m6812s        2
   6181        bfd_arch_z8k,       /* Zilog Z8000 */
   6182      #define bfd_mach_z8001         1
   6183      #define bfd_mach_z8002         2
   6184        bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
   6185        bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
   6186      #define bfd_mach_sh            1
   6187      #define bfd_mach_sh2        0x20
   6188      #define bfd_mach_sh_dsp     0x2d
   6189      #define bfd_mach_sh2a       0x2a
   6190      #define bfd_mach_sh2a_nofpu 0x2b
   6191      #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
   6192      #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
   6193      #define bfd_mach_sh2a_or_sh4  0x2a3
   6194      #define bfd_mach_sh2a_or_sh3e 0x2a4
   6195      #define bfd_mach_sh2e       0x2e
   6196      #define bfd_mach_sh3        0x30
   6197      #define bfd_mach_sh3_nommu  0x31
   6198      #define bfd_mach_sh3_dsp    0x3d
   6199      #define bfd_mach_sh3e       0x3e
   6200      #define bfd_mach_sh4        0x40
   6201      #define bfd_mach_sh4_nofpu  0x41
   6202      #define bfd_mach_sh4_nommu_nofpu  0x42
   6203      #define bfd_mach_sh4a       0x4a
   6204      #define bfd_mach_sh4a_nofpu 0x4b
   6205      #define bfd_mach_sh4al_dsp  0x4d
   6206      #define bfd_mach_sh5        0x50
   6207        bfd_arch_alpha,     /* Dec Alpha */
   6208      #define bfd_mach_alpha_ev4  0x10
   6209      #define bfd_mach_alpha_ev5  0x20
   6210      #define bfd_mach_alpha_ev6  0x30
   6211        bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
   6212      #define bfd_mach_arm_unknown   0
   6213      #define bfd_mach_arm_2         1
   6214      #define bfd_mach_arm_2a        2
   6215      #define bfd_mach_arm_3         3
   6216      #define bfd_mach_arm_3M        4
   6217      #define bfd_mach_arm_4         5
   6218      #define bfd_mach_arm_4T        6
   6219      #define bfd_mach_arm_5         7
   6220      #define bfd_mach_arm_5T        8
   6221      #define bfd_mach_arm_5TE       9
   6222      #define bfd_mach_arm_XScale    10
   6223      #define bfd_mach_arm_ep9312    11
   6224      #define bfd_mach_arm_iWMMXt    12
   6225      #define bfd_mach_arm_iWMMXt2   13
   6226        bfd_arch_ns32k,     /* National Semiconductors ns32000 */
   6227        bfd_arch_w65,       /* WDC 65816 */
   6228        bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
   6229        bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
   6230      #define bfd_mach_tic3x         30
   6231      #define bfd_mach_tic4x         40
   6232        bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
   6233        bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
   6234        bfd_arch_v850,      /* NEC V850 */
   6235      #define bfd_mach_v850          1
   6236      #define bfd_mach_v850e         'E'
   6237      #define bfd_mach_v850e1        '1'
   6238        bfd_arch_arc,       /* ARC Cores */
   6239      #define bfd_mach_arc_5         5
   6240      #define bfd_mach_arc_6         6
   6241      #define bfd_mach_arc_7         7
   6242      #define bfd_mach_arc_8         8
   6243       bfd_arch_m32c,     /* Renesas M16C/M32C.  */
   6244      #define bfd_mach_m16c        0x75
   6245      #define bfd_mach_m32c        0x78
   6246        bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
   6247      #define bfd_mach_m32r          1 /* For backwards compatibility.  */
   6248      #define bfd_mach_m32rx         'x'
   6249      #define bfd_mach_m32r2         '2'
   6250        bfd_arch_mn10200,   /* Matsushita MN10200 */
   6251        bfd_arch_mn10300,   /* Matsushita MN10300 */
   6252      #define bfd_mach_mn10300               300
   6253      #define bfd_mach_am33          330
   6254      #define bfd_mach_am33_2        332
   6255        bfd_arch_fr30,
   6256      #define bfd_mach_fr30          0x46523330
   6257        bfd_arch_frv,
   6258      #define bfd_mach_frv           1
   6259      #define bfd_mach_frvsimple     2
   6260      #define bfd_mach_fr300         300
   6261      #define bfd_mach_fr400         400
   6262      #define bfd_mach_fr450         450
   6263      #define bfd_mach_frvtomcat     499     /* fr500 prototype */
   6264      #define bfd_mach_fr500         500
   6265      #define bfd_mach_fr550         550
   6266        bfd_arch_mcore,
   6267        bfd_arch_mep,
   6268      #define bfd_mach_mep           1
   6269      #define bfd_mach_mep_h1        0x6831
   6270        bfd_arch_ia64,      /* HP/Intel ia64 */
   6271      #define bfd_mach_ia64_elf64    64
   6272      #define bfd_mach_ia64_elf32    32
   6273        bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
   6274      #define bfd_mach_ip2022        1
   6275      #define bfd_mach_ip2022ext     2
   6276       bfd_arch_iq2000,     /* Vitesse IQ2000.  */
   6277      #define bfd_mach_iq2000        1
   6278      #define bfd_mach_iq10          2
   6279        bfd_arch_mt,
   6280      #define bfd_mach_ms1           1
   6281      #define bfd_mach_mrisc2        2
   6282      #define bfd_mach_ms2           3
   6283        bfd_arch_pj,
   6284        bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
   6285      #define bfd_mach_avr1          1
   6286      #define bfd_mach_avr2          2
   6287      #define bfd_mach_avr25         25
   6288      #define bfd_mach_avr3          3
   6289      #define bfd_mach_avr31         31
   6290      #define bfd_mach_avr35         35
   6291      #define bfd_mach_avr4          4
   6292      #define bfd_mach_avr5          5
   6293      #define bfd_mach_avr51         51
   6294      #define bfd_mach_avr6          6
   6295        bfd_arch_bfin,        /* ADI Blackfin */
   6296      #define bfd_mach_bfin          1
   6297        bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
   6298      #define bfd_mach_cr16          1
   6299        bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
   6300      #define bfd_mach_cr16c         1
   6301        bfd_arch_crx,       /*  National Semiconductor CRX.  */
   6302      #define bfd_mach_crx           1
   6303        bfd_arch_cris,      /* Axis CRIS */
   6304      #define bfd_mach_cris_v0_v10   255
   6305      #define bfd_mach_cris_v32      32
   6306      #define bfd_mach_cris_v10_v32  1032
   6307        bfd_arch_s390,      /* IBM s390 */
   6308      #define bfd_mach_s390_31       31
   6309      #define bfd_mach_s390_64       64
   6310        bfd_arch_score,     /* Sunplus score */
   6311        bfd_arch_openrisc,  /* OpenRISC */
   6312        bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
   6313        bfd_arch_xstormy16,
   6314      #define bfd_mach_xstormy16     1
   6315        bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
   6316      #define bfd_mach_msp11          11
   6317      #define bfd_mach_msp110         110
   6318      #define bfd_mach_msp12          12
   6319      #define bfd_mach_msp13          13
   6320      #define bfd_mach_msp14          14
   6321      #define bfd_mach_msp15          15
   6322      #define bfd_mach_msp16          16
   6323      #define bfd_mach_msp21          21
   6324      #define bfd_mach_msp31          31
   6325      #define bfd_mach_msp32          32
   6326      #define bfd_mach_msp33          33
   6327      #define bfd_mach_msp41          41
   6328      #define bfd_mach_msp42          42
   6329      #define bfd_mach_msp43          43
   6330      #define bfd_mach_msp44          44
   6331        bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
   6332      #define bfd_mach_xc16x         1
   6333      #define bfd_mach_xc16xl        2
   6334      #define bfd_mach_xc16xs         3
   6335        bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
   6336      #define bfd_mach_xtensa        1
   6337         bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
   6338      #define bfd_mach_maxq10    10
   6339      #define bfd_mach_maxq20    20
   6340        bfd_arch_z80,
   6341      #define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
   6342      #define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
   6343      #define bfd_mach_z80full        7 /* All undocumented instructions.  */
   6344      #define bfd_mach_r800           11 /* R800: successor with multiplication.  */
   6345        bfd_arch_last
   6346        };
   6347 
   6348 2.13.2 bfd_arch_info
   6349 --------------------
   6350 
   6351 *Description*
   6352 This structure contains information on architectures for use within BFD.
   6353 
   6354      typedef struct bfd_arch_info
   6355      {
   6356        int bits_per_word;
   6357        int bits_per_address;
   6358        int bits_per_byte;
   6359        enum bfd_architecture arch;
   6360        unsigned long mach;
   6361        const char *arch_name;
   6362        const char *printable_name;
   6363        unsigned int section_align_power;
   6364        /* TRUE if this is the default machine for the architecture.
   6365           The default arch should be the first entry for an arch so that
   6366           all the entries for that arch can be accessed via `next'.  */
   6367        bfd_boolean the_default;
   6368        const struct bfd_arch_info * (*compatible)
   6369          (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
   6370 
   6371        bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
   6372 
   6373        const struct bfd_arch_info *next;
   6374      }
   6375      bfd_arch_info_type;
   6376 
   6377 2.13.2.1 `bfd_printable_name'
   6378 .............................
   6379 
   6380 *Synopsis*
   6381      const char *bfd_printable_name (bfd *abfd);
   6382    *Description*
   6383 Return a printable string representing the architecture and machine
   6384 from the pointer to the architecture info structure.
   6385 
   6386 2.13.2.2 `bfd_scan_arch'
   6387 ........................
   6388 
   6389 *Synopsis*
   6390      const bfd_arch_info_type *bfd_scan_arch (const char *string);
   6391    *Description*
   6392 Figure out if BFD supports any cpu which could be described with the
   6393 name STRING.  Return a pointer to an `arch_info' structure if a machine
   6394 is found, otherwise NULL.
   6395 
   6396 2.13.2.3 `bfd_arch_list'
   6397 ........................
   6398 
   6399 *Synopsis*
   6400      const char **bfd_arch_list (void);
   6401    *Description*
   6402 Return a freshly malloced NULL-terminated vector of the names of all
   6403 the valid BFD architectures.  Do not modify the names.
   6404 
   6405 2.13.2.4 `bfd_arch_get_compatible'
   6406 ..................................
   6407 
   6408 *Synopsis*
   6409      const bfd_arch_info_type *bfd_arch_get_compatible
   6410         (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
   6411    *Description*
   6412 Determine whether two BFDs' architectures and machine types are
   6413 compatible.  Calculates the lowest common denominator between the two
   6414 architectures and machine types implied by the BFDs and returns a
   6415 pointer to an `arch_info' structure describing the compatible machine.
   6416 
   6417 2.13.2.5 `bfd_default_arch_struct'
   6418 ..................................
   6419 
   6420 *Description*
   6421 The `bfd_default_arch_struct' is an item of `bfd_arch_info_type' which
   6422 has been initialized to a fairly generic state.  A BFD starts life by
   6423 pointing to this structure, until the correct back end has determined
   6424 the real architecture of the file.
   6425      extern const bfd_arch_info_type bfd_default_arch_struct;
   6426 
   6427 2.13.2.6 `bfd_set_arch_info'
   6428 ............................
   6429 
   6430 *Synopsis*
   6431      void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
   6432    *Description*
   6433 Set the architecture info of ABFD to ARG.
   6434 
   6435 2.13.2.7 `bfd_default_set_arch_mach'
   6436 ....................................
   6437 
   6438 *Synopsis*
   6439      bfd_boolean bfd_default_set_arch_mach
   6440         (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
   6441    *Description*
   6442 Set the architecture and machine type in BFD ABFD to ARCH and MACH.
   6443 Find the correct pointer to a structure and insert it into the
   6444 `arch_info' pointer.
   6445 
   6446 2.13.2.8 `bfd_get_arch'
   6447 .......................
   6448 
   6449 *Synopsis*
   6450      enum bfd_architecture bfd_get_arch (bfd *abfd);
   6451    *Description*
   6452 Return the enumerated type which describes the BFD ABFD's architecture.
   6453 
   6454 2.13.2.9 `bfd_get_mach'
   6455 .......................
   6456 
   6457 *Synopsis*
   6458      unsigned long bfd_get_mach (bfd *abfd);
   6459    *Description*
   6460 Return the long type which describes the BFD ABFD's machine.
   6461 
   6462 2.13.2.10 `bfd_arch_bits_per_byte'
   6463 ..................................
   6464 
   6465 *Synopsis*
   6466      unsigned int bfd_arch_bits_per_byte (bfd *abfd);
   6467    *Description*
   6468 Return the number of bits in one of the BFD ABFD's architecture's bytes.
   6469 
   6470 2.13.2.11 `bfd_arch_bits_per_address'
   6471 .....................................
   6472 
   6473 *Synopsis*
   6474      unsigned int bfd_arch_bits_per_address (bfd *abfd);
   6475    *Description*
   6476 Return the number of bits in one of the BFD ABFD's architecture's
   6477 addresses.
   6478 
   6479 2.13.2.12 `bfd_default_compatible'
   6480 ..................................
   6481 
   6482 *Synopsis*
   6483      const bfd_arch_info_type *bfd_default_compatible
   6484         (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
   6485    *Description*
   6486 The default function for testing for compatibility.
   6487 
   6488 2.13.2.13 `bfd_default_scan'
   6489 ............................
   6490 
   6491 *Synopsis*
   6492      bfd_boolean bfd_default_scan
   6493         (const struct bfd_arch_info *info, const char *string);
   6494    *Description*
   6495 The default function for working out whether this is an architecture
   6496 hit and a machine hit.
   6497 
   6498 2.13.2.14 `bfd_get_arch_info'
   6499 .............................
   6500 
   6501 *Synopsis*
   6502      const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
   6503    *Description*
   6504 Return the architecture info struct in ABFD.
   6505 
   6506 2.13.2.15 `bfd_lookup_arch'
   6507 ...........................
   6508 
   6509 *Synopsis*
   6510      const bfd_arch_info_type *bfd_lookup_arch
   6511         (enum bfd_architecture arch, unsigned long machine);
   6512    *Description*
   6513 Look for the architecture info structure which matches the arguments
   6514 ARCH and MACHINE. A machine of 0 matches the machine/architecture
   6515 structure which marks itself as the default.
   6516 
   6517 2.13.2.16 `bfd_printable_arch_mach'
   6518 ...................................
   6519 
   6520 *Synopsis*
   6521      const char *bfd_printable_arch_mach
   6522         (enum bfd_architecture arch, unsigned long machine);
   6523    *Description*
   6524 Return a printable string representing the architecture and machine
   6525 type.
   6526 
   6527    This routine is depreciated.
   6528 
   6529 2.13.2.17 `bfd_octets_per_byte'
   6530 ...............................
   6531 
   6532 *Synopsis*
   6533      unsigned int bfd_octets_per_byte (bfd *abfd);
   6534    *Description*
   6535 Return the number of octets (8-bit quantities) per target byte (minimum
   6536 addressable unit).  In most cases, this will be one, but some DSP
   6537 targets have 16, 32, or even 48 bits per byte.
   6538 
   6539 2.13.2.18 `bfd_arch_mach_octets_per_byte'
   6540 .........................................
   6541 
   6542 *Synopsis*
   6543      unsigned int bfd_arch_mach_octets_per_byte
   6544         (enum bfd_architecture arch, unsigned long machine);
   6545    *Description*
   6546 See bfd_octets_per_byte.
   6547 
   6548    This routine is provided for those cases where a bfd * is not
   6549 available
   6550 
   6551 
   6552 File: bfd.info,  Node: Opening and Closing,  Next: Internal,  Prev: Architectures,  Up: BFD front end
   6553 
   6554 2.14 Opening and closing BFDs
   6555 =============================
   6556 
   6557 2.14.1 Functions for opening and closing
   6558 ----------------------------------------
   6559 
   6560 2.14.1.1 `bfd_fopen'
   6561 ....................
   6562 
   6563 *Synopsis*
   6564      bfd *bfd_fopen (const char *filename, const char *target,
   6565          const char *mode, int fd);
   6566    *Description*
   6567 Open the file FILENAME with the target TARGET.  Return a pointer to the
   6568 created BFD.  If FD is not -1, then `fdopen' is used to open the file;
   6569 otherwise, `fopen' is used.  MODE is passed directly to `fopen' or
   6570 `fdopen'.
   6571 
   6572    Calls `bfd_find_target', so TARGET is interpreted as by that
   6573 function.
   6574 
   6575    The new BFD is marked as cacheable iff FD is -1.
   6576 
   6577    If `NULL' is returned then an error has occured.   Possible errors
   6578 are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call'
   6579 error.
   6580 
   6581 2.14.1.2 `bfd_openr'
   6582 ....................
   6583 
   6584 *Synopsis*
   6585      bfd *bfd_openr (const char *filename, const char *target);
   6586    *Description*
   6587 Open the file FILENAME (using `fopen') with the target TARGET.  Return
   6588 a pointer to the created BFD.
   6589 
   6590    Calls `bfd_find_target', so TARGET is interpreted as by that
   6591 function.
   6592 
   6593    If `NULL' is returned then an error has occured.   Possible errors
   6594 are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call'
   6595 error.
   6596 
   6597 2.14.1.3 `bfd_fdopenr'
   6598 ......................
   6599 
   6600 *Synopsis*
   6601      bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
   6602    *Description*
   6603 `bfd_fdopenr' is to `bfd_fopenr' much like `fdopen' is to `fopen'.  It
   6604 opens a BFD on a file already described by the FD supplied.
   6605 
   6606    When the file is later `bfd_close'd, the file descriptor will be
   6607 closed.  If the caller desires that this file descriptor be cached by
   6608 BFD (opened as needed, closed as needed to free descriptors for other
   6609 opens), with the supplied FD used as an initial file descriptor (but
   6610 subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the
   6611 returned BFD.  The default is to assume no caching; the file descriptor
   6612 will remain open until `bfd_close', and will not be affected by BFD
   6613 operations on other files.
   6614 
   6615    Possible errors are `bfd_error_no_memory',
   6616 `bfd_error_invalid_target' and `bfd_error_system_call'.
   6617 
   6618 2.14.1.4 `bfd_openstreamr'
   6619 ..........................
   6620 
   6621 *Synopsis*
   6622      bfd *bfd_openstreamr (const char *, const char *, void *);
   6623    *Description*
   6624 Open a BFD for read access on an existing stdio stream.  When the BFD
   6625 is passed to `bfd_close', the stream will be closed.
   6626 
   6627 2.14.1.5 `bfd_openr_iovec'
   6628 ..........................
   6629 
   6630 *Synopsis*
   6631      bfd *bfd_openr_iovec (const char *filename, const char *target,
   6632          void *(*open) (struct bfd *nbfd,
   6633          void *open_closure),
   6634          void *open_closure,
   6635          file_ptr (*pread) (struct bfd *nbfd,
   6636          void *stream,
   6637          void *buf,
   6638          file_ptr nbytes,
   6639          file_ptr offset),
   6640          int (*close) (struct bfd *nbfd,
   6641          void *stream),
   6642          int (*stat) (struct bfd *abfd,
   6643          void *stream,
   6644          struct stat *sb));
   6645    *Description*
   6646 Create and return a BFD backed by a read-only STREAM.  The STREAM is
   6647 created using OPEN, accessed using PREAD and destroyed using CLOSE.
   6648 
   6649    Calls `bfd_find_target', so TARGET is interpreted as by that
   6650 function.
   6651 
   6652    Calls OPEN (which can call `bfd_zalloc' and `bfd_get_filename') to
   6653 obtain the read-only stream backing the BFD.  OPEN either succeeds
   6654 returning the non-`NULL' STREAM, or fails returning `NULL' (setting
   6655 `bfd_error').
   6656 
   6657    Calls PREAD to request NBYTES of data from STREAM starting at OFFSET
   6658 (e.g., via a call to `bfd_read').  PREAD either succeeds returning the
   6659 number of bytes read (which can be less than NBYTES when end-of-file),
   6660 or fails returning -1 (setting `bfd_error').
   6661 
   6662    Calls CLOSE when the BFD is later closed using `bfd_close'.  CLOSE
   6663 either succeeds returning 0, or fails returning -1 (setting
   6664 `bfd_error').
   6665 
   6666    Calls STAT to fill in a stat structure for bfd_stat, bfd_get_size,
   6667 and bfd_get_mtime calls.  STAT returns 0 on success, or returns -1 on
   6668 failure (setting `bfd_error').
   6669 
   6670    If `bfd_openr_iovec' returns `NULL' then an error has occurred.
   6671 Possible errors are `bfd_error_no_memory', `bfd_error_invalid_target'
   6672 and `bfd_error_system_call'.
   6673 
   6674 2.14.1.6 `bfd_openw'
   6675 ....................
   6676 
   6677 *Synopsis*
   6678      bfd *bfd_openw (const char *filename, const char *target);
   6679    *Description*
   6680 Create a BFD, associated with file FILENAME, using the file format
   6681 TARGET, and return a pointer to it.
   6682 
   6683    Possible errors are `bfd_error_system_call', `bfd_error_no_memory',
   6684 `bfd_error_invalid_target'.
   6685 
   6686 2.14.1.7 `bfd_close'
   6687 ....................
   6688 
   6689 *Synopsis*
   6690      bfd_boolean bfd_close (bfd *abfd);
   6691    *Description*
   6692 Close a BFD. If the BFD was open for writing, then pending operations
   6693 are completed and the file written out and closed.  If the created file
   6694 is executable, then `chmod' is called to mark it as such.
   6695 
   6696    All memory attached to the BFD is released.
   6697 
   6698    The file descriptor associated with the BFD is closed (even if it
   6699 was passed in to BFD by `bfd_fdopenr').
   6700 
   6701    *Returns*
   6702 `TRUE' is returned if all is ok, otherwise `FALSE'.
   6703 
   6704 2.14.1.8 `bfd_close_all_done'
   6705 .............................
   6706 
   6707 *Synopsis*
   6708      bfd_boolean bfd_close_all_done (bfd *);
   6709    *Description*
   6710 Close a BFD.  Differs from `bfd_close' since it does not complete any
   6711 pending operations.  This routine would be used if the application had
   6712 just used BFD for swapping and didn't want to use any of the writing
   6713 code.
   6714 
   6715    If the created file is executable, then `chmod' is called to mark it
   6716 as such.
   6717 
   6718    All memory attached to the BFD is released.
   6719 
   6720    *Returns*
   6721 `TRUE' is returned if all is ok, otherwise `FALSE'.
   6722 
   6723 2.14.1.9 `bfd_create'
   6724 .....................
   6725 
   6726 *Synopsis*
   6727      bfd *bfd_create (const char *filename, bfd *templ);
   6728    *Description*
   6729 Create a new BFD in the manner of `bfd_openw', but without opening a
   6730 file. The new BFD takes the target from the target used by TEMPLATE.
   6731 The format is always set to `bfd_object'.
   6732 
   6733 2.14.1.10 `bfd_make_writable'
   6734 .............................
   6735 
   6736 *Synopsis*
   6737      bfd_boolean bfd_make_writable (bfd *abfd);
   6738    *Description*
   6739 Takes a BFD as created by `bfd_create' and converts it into one like as
   6740 returned by `bfd_openw'.  It does this by converting the BFD to
   6741 BFD_IN_MEMORY.  It's assumed that you will call `bfd_make_readable' on
   6742 this bfd later.
   6743 
   6744    *Returns*
   6745 `TRUE' is returned if all is ok, otherwise `FALSE'.
   6746 
   6747 2.14.1.11 `bfd_make_readable'
   6748 .............................
   6749 
   6750 *Synopsis*
   6751      bfd_boolean bfd_make_readable (bfd *abfd);
   6752    *Description*
   6753 Takes a BFD as created by `bfd_create' and `bfd_make_writable' and
   6754 converts it into one like as returned by `bfd_openr'.  It does this by
   6755 writing the contents out to the memory buffer, then reversing the
   6756 direction.
   6757 
   6758    *Returns*
   6759 `TRUE' is returned if all is ok, otherwise `FALSE'.
   6760 
   6761 2.14.1.12 `bfd_alloc'
   6762 .....................
   6763 
   6764 *Synopsis*
   6765      void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
   6766    *Description*
   6767 Allocate a block of WANTED bytes of memory attached to `abfd' and
   6768 return a pointer to it.
   6769 
   6770 2.14.1.13 `bfd_alloc2'
   6771 ......................
   6772 
   6773 *Synopsis*
   6774      void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
   6775    *Description*
   6776 Allocate a block of NMEMB elements of SIZE bytes each of memory
   6777 attached to `abfd' and return a pointer to it.
   6778 
   6779 2.14.1.14 `bfd_zalloc'
   6780 ......................
   6781 
   6782 *Synopsis*
   6783      void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
   6784    *Description*
   6785 Allocate a block of WANTED bytes of zeroed memory attached to `abfd'
   6786 and return a pointer to it.
   6787 
   6788 2.14.1.15 `bfd_zalloc2'
   6789 .......................
   6790 
   6791 *Synopsis*
   6792      void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
   6793    *Description*
   6794 Allocate a block of NMEMB elements of SIZE bytes each of zeroed memory
   6795 attached to `abfd' and return a pointer to it.
   6796 
   6797 2.14.1.16 `bfd_calc_gnu_debuglink_crc32'
   6798 ........................................
   6799 
   6800 *Synopsis*
   6801      unsigned long bfd_calc_gnu_debuglink_crc32
   6802         (unsigned long crc, const unsigned char *buf, bfd_size_type len);
   6803    *Description*
   6804 Computes a CRC value as used in the .gnu_debuglink section.  Advances
   6805 the previously computed CRC value by computing and adding in the crc32
   6806 for LEN bytes of BUF.
   6807 
   6808    *Returns*
   6809 Return the updated CRC32 value.
   6810 
   6811 2.14.1.17 `get_debug_link_info'
   6812 ...............................
   6813 
   6814 *Synopsis*
   6815      char *get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
   6816    *Description*
   6817 fetch the filename and CRC32 value for any separate debuginfo
   6818 associated with ABFD. Return NULL if no such info found, otherwise
   6819 return filename and update CRC32_OUT.
   6820 
   6821 2.14.1.18 `separate_debug_file_exists'
   6822 ......................................
   6823 
   6824 *Synopsis*
   6825      bfd_boolean separate_debug_file_exists
   6826         (char *name, unsigned long crc32);
   6827    *Description*
   6828 Checks to see if NAME is a file and if its contents match CRC32.
   6829 
   6830 2.14.1.19 `find_separate_debug_file'
   6831 ....................................
   6832 
   6833 *Synopsis*
   6834      char *find_separate_debug_file (bfd *abfd);
   6835    *Description*
   6836 Searches ABFD for a reference to separate debugging information, scans
   6837 various locations in the filesystem, including the file tree rooted at
   6838 DEBUG_FILE_DIRECTORY, and returns a filename of such debugging
   6839 information if the file is found and has matching CRC32.  Returns NULL
   6840 if no reference to debugging file exists, or file cannot be found.
   6841 
   6842 2.14.1.20 `bfd_follow_gnu_debuglink'
   6843 ....................................
   6844 
   6845 *Synopsis*
   6846      char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
   6847    *Description*
   6848 Takes a BFD and searches it for a .gnu_debuglink section.  If this
   6849 section is found, it examines the section for the name and checksum of
   6850 a '.debug' file containing auxiliary debugging information.  It then
   6851 searches the filesystem for this .debug file in some standard
   6852 locations, including the directory tree rooted at DIR, and if found
   6853 returns the full filename.
   6854 
   6855    If DIR is NULL, it will search a default path configured into libbfd
   6856 at build time.  [XXX this feature is not currently implemented].
   6857 
   6858    *Returns*
   6859 `NULL' on any errors or failure to locate the .debug file, otherwise a
   6860 pointer to a heap-allocated string containing the filename.  The caller
   6861 is responsible for freeing this string.
   6862 
   6863 2.14.1.21 `bfd_create_gnu_debuglink_section'
   6864 ............................................
   6865 
   6866 *Synopsis*
   6867      struct bfd_section *bfd_create_gnu_debuglink_section
   6868         (bfd *abfd, const char *filename);
   6869    *Description*
   6870 Takes a BFD and adds a .gnu_debuglink section to it.  The section is
   6871 sized to be big enough to contain a link to the specified FILENAME.
   6872 
   6873    *Returns*
   6874 A pointer to the new section is returned if all is ok.  Otherwise
   6875 `NULL' is returned and bfd_error is set.
   6876 
   6877 2.14.1.22 `bfd_fill_in_gnu_debuglink_section'
   6878 .............................................
   6879 
   6880 *Synopsis*
   6881      bfd_boolean bfd_fill_in_gnu_debuglink_section
   6882         (bfd *abfd, struct bfd_section *sect, const char *filename);
   6883    *Description*
   6884 Takes a BFD and containing a .gnu_debuglink section SECT and fills in
   6885 the contents of the section to contain a link to the specified
   6886 FILENAME.  The filename should be relative to the current directory.
   6887 
   6888    *Returns*
   6889 `TRUE' is returned if all is ok.  Otherwise `FALSE' is returned and
   6890 bfd_error is set.
   6891 
   6892 
   6893 File: bfd.info,  Node: Internal,  Next: File Caching,  Prev: Opening and Closing,  Up: BFD front end
   6894 
   6895 2.15 Implementation details
   6896 ===========================
   6897 
   6898 2.15.1 Internal functions
   6899 -------------------------
   6900 
   6901 *Description*
   6902 These routines are used within BFD.  They are not intended for export,
   6903 but are documented here for completeness.
   6904 
   6905 2.15.1.1 `bfd_write_bigendian_4byte_int'
   6906 ........................................
   6907 
   6908 *Synopsis*
   6909      bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
   6910    *Description*
   6911 Write a 4 byte integer I to the output BFD ABFD, in big endian order
   6912 regardless of what else is going on.  This is useful in archives.
   6913 
   6914 2.15.1.2 `bfd_put_size'
   6915 .......................
   6916 
   6917 2.15.1.3 `bfd_get_size'
   6918 .......................
   6919 
   6920 *Description*
   6921 These macros as used for reading and writing raw data in sections; each
   6922 access (except for bytes) is vectored through the target format of the
   6923 BFD and mangled accordingly. The mangling performs any necessary endian
   6924 translations and removes alignment restrictions.  Note that types
   6925 accepted and returned by these macros are identical so they can be
   6926 swapped around in macros--for example, `libaout.h' defines `GET_WORD'
   6927 to either `bfd_get_32' or `bfd_get_64'.
   6928 
   6929    In the put routines, VAL must be a `bfd_vma'.  If we are on a system
   6930 without prototypes, the caller is responsible for making sure that is
   6931 true, with a cast if necessary.  We don't cast them in the macro
   6932 definitions because that would prevent `lint' or `gcc -Wall' from
   6933 detecting sins such as passing a pointer.  To detect calling these with
   6934 less than a `bfd_vma', use `gcc -Wconversion' on a host with 64 bit
   6935 `bfd_vma''s.
   6936 
   6937      /* Byte swapping macros for user section data.  */
   6938 
   6939      #define bfd_put_8(abfd, val, ptr) \
   6940        ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
   6941      #define bfd_put_signed_8 \
   6942        bfd_put_8
   6943      #define bfd_get_8(abfd, ptr) \
   6944        (*(unsigned char *) (ptr) & 0xff)
   6945      #define bfd_get_signed_8(abfd, ptr) \
   6946        (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
   6947 
   6948      #define bfd_put_16(abfd, val, ptr) \
   6949        BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
   6950      #define bfd_put_signed_16 \
   6951        bfd_put_16
   6952      #define bfd_get_16(abfd, ptr) \
   6953        BFD_SEND (abfd, bfd_getx16, (ptr))
   6954      #define bfd_get_signed_16(abfd, ptr) \
   6955        BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
   6956 
   6957      #define bfd_put_32(abfd, val, ptr) \
   6958        BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
   6959      #define bfd_put_signed_32 \
   6960        bfd_put_32
   6961      #define bfd_get_32(abfd, ptr) \
   6962        BFD_SEND (abfd, bfd_getx32, (ptr))
   6963      #define bfd_get_signed_32(abfd, ptr) \
   6964        BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
   6965 
   6966      #define bfd_put_64(abfd, val, ptr) \
   6967        BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
   6968      #define bfd_put_signed_64 \
   6969        bfd_put_64
   6970      #define bfd_get_64(abfd, ptr) \
   6971        BFD_SEND (abfd, bfd_getx64, (ptr))
   6972      #define bfd_get_signed_64(abfd, ptr) \
   6973        BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
   6974 
   6975      #define bfd_get(bits, abfd, ptr)                       \
   6976        ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
   6977         : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
   6978         : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
   6979         : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
   6980         : (abort (), (bfd_vma) - 1))
   6981 
   6982      #define bfd_put(bits, abfd, val, ptr)                  \
   6983        ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
   6984         : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
   6985         : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
   6986         : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
   6987         : (abort (), (void) 0))
   6988 
   6989 2.15.1.4 `bfd_h_put_size'
   6990 .........................
   6991 
   6992 *Description*
   6993 These macros have the same function as their `bfd_get_x' brethren,
   6994 except that they are used for removing information for the header
   6995 records of object files. Believe it or not, some object files keep
   6996 their header records in big endian order and their data in little
   6997 endian order.
   6998 
   6999      /* Byte swapping macros for file header data.  */
   7000 
   7001      #define bfd_h_put_8(abfd, val, ptr) \
   7002        bfd_put_8 (abfd, val, ptr)
   7003      #define bfd_h_put_signed_8(abfd, val, ptr) \
   7004        bfd_put_8 (abfd, val, ptr)
   7005      #define bfd_h_get_8(abfd, ptr) \
   7006        bfd_get_8 (abfd, ptr)
   7007      #define bfd_h_get_signed_8(abfd, ptr) \
   7008        bfd_get_signed_8 (abfd, ptr)
   7009 
   7010      #define bfd_h_put_16(abfd, val, ptr) \
   7011        BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
   7012      #define bfd_h_put_signed_16 \
   7013        bfd_h_put_16
   7014      #define bfd_h_get_16(abfd, ptr) \
   7015        BFD_SEND (abfd, bfd_h_getx16, (ptr))
   7016      #define bfd_h_get_signed_16(abfd, ptr) \
   7017        BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
   7018 
   7019      #define bfd_h_put_32(abfd, val, ptr) \
   7020        BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
   7021      #define bfd_h_put_signed_32 \
   7022        bfd_h_put_32
   7023      #define bfd_h_get_32(abfd, ptr) \
   7024        BFD_SEND (abfd, bfd_h_getx32, (ptr))
   7025      #define bfd_h_get_signed_32(abfd, ptr) \
   7026        BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
   7027 
   7028      #define bfd_h_put_64(abfd, val, ptr) \
   7029        BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
   7030      #define bfd_h_put_signed_64 \
   7031        bfd_h_put_64
   7032      #define bfd_h_get_64(abfd, ptr) \
   7033        BFD_SEND (abfd, bfd_h_getx64, (ptr))
   7034      #define bfd_h_get_signed_64(abfd, ptr) \
   7035        BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
   7036 
   7037      /* Aliases for the above, which should eventually go away.  */
   7038 
   7039      #define H_PUT_64  bfd_h_put_64
   7040      #define H_PUT_32  bfd_h_put_32
   7041      #define H_PUT_16  bfd_h_put_16
   7042      #define H_PUT_8   bfd_h_put_8
   7043      #define H_PUT_S64 bfd_h_put_signed_64
   7044      #define H_PUT_S32 bfd_h_put_signed_32
   7045      #define H_PUT_S16 bfd_h_put_signed_16
   7046      #define H_PUT_S8  bfd_h_put_signed_8
   7047      #define H_GET_64  bfd_h_get_64
   7048      #define H_GET_32  bfd_h_get_32
   7049      #define H_GET_16  bfd_h_get_16
   7050      #define H_GET_8   bfd_h_get_8
   7051      #define H_GET_S64 bfd_h_get_signed_64
   7052      #define H_GET_S32 bfd_h_get_signed_32
   7053      #define H_GET_S16 bfd_h_get_signed_16
   7054      #define H_GET_S8  bfd_h_get_signed_8
   7055 
   7056 2.15.1.5 `bfd_log2'
   7057 ...................
   7058 
   7059 *Synopsis*
   7060      unsigned int bfd_log2 (bfd_vma x);
   7061    *Description*
   7062 Return the log base 2 of the value supplied, rounded up.  E.g., an X of
   7063 1025 returns 11.  A X of 0 returns 0.
   7064 
   7065 
   7066 File: bfd.info,  Node: File Caching,  Next: Linker Functions,  Prev: Internal,  Up: BFD front end
   7067 
   7068 2.16 File caching
   7069 =================
   7070 
   7071 The file caching mechanism is embedded within BFD and allows the
   7072 application to open as many BFDs as it wants without regard to the
   7073 underlying operating system's file descriptor limit (often as low as 20
   7074 open files).  The module in `cache.c' maintains a least recently used
   7075 list of `BFD_CACHE_MAX_OPEN' files, and exports the name
   7076 `bfd_cache_lookup', which runs around and makes sure that the required
   7077 BFD is open. If not, then it chooses a file to close, closes it and
   7078 opens the one wanted, returning its file handle.
   7079 
   7080 2.16.1 Caching functions
   7081 ------------------------
   7082 
   7083 2.16.1.1 `bfd_cache_init'
   7084 .........................
   7085 
   7086 *Synopsis*
   7087      bfd_boolean bfd_cache_init (bfd *abfd);
   7088    *Description*
   7089 Add a newly opened BFD to the cache.
   7090 
   7091 2.16.1.2 `bfd_cache_close'
   7092 ..........................
   7093 
   7094 *Synopsis*
   7095      bfd_boolean bfd_cache_close (bfd *abfd);
   7096    *Description*
   7097 Remove the BFD ABFD from the cache. If the attached file is open, then
   7098 close it too.
   7099 
   7100    *Returns*
   7101 `FALSE' is returned if closing the file fails, `TRUE' is returned if
   7102 all is well.
   7103 
   7104 2.16.1.3 `bfd_cache_close_all'
   7105 ..............................
   7106 
   7107 *Synopsis*
   7108      bfd_boolean bfd_cache_close_all (void);
   7109    *Description*
   7110 Remove all BFDs from the cache. If the attached file is open, then
   7111 close it too.
   7112 
   7113    *Returns*
   7114 `FALSE' is returned if closing one of the file fails, `TRUE' is
   7115 returned if all is well.
   7116 
   7117 2.16.1.4 `bfd_open_file'
   7118 ........................
   7119 
   7120 *Synopsis*
   7121      FILE* bfd_open_file (bfd *abfd);
   7122    *Description*
   7123 Call the OS to open a file for ABFD.  Return the `FILE *' (possibly
   7124 `NULL') that results from this operation.  Set up the BFD so that
   7125 future accesses know the file is open. If the `FILE *' returned is
   7126 `NULL', then it won't have been put in the cache, so it won't have to
   7127 be removed from it.
   7128 
   7129 
   7130 File: bfd.info,  Node: Linker Functions,  Next: Hash Tables,  Prev: File Caching,  Up: BFD front end
   7131 
   7132 2.17 Linker Functions
   7133 =====================
   7134 
   7135 The linker uses three special entry points in the BFD target vector.
   7136 It is not necessary to write special routines for these entry points
   7137 when creating a new BFD back end, since generic versions are provided.
   7138 However, writing them can speed up linking and make it use
   7139 significantly less runtime memory.
   7140 
   7141    The first routine creates a hash table used by the other routines.
   7142 The second routine adds the symbols from an object file to the hash
   7143 table.  The third routine takes all the object files and links them
   7144 together to create the output file.  These routines are designed so
   7145 that the linker proper does not need to know anything about the symbols
   7146 in the object files that it is linking.  The linker merely arranges the
   7147 sections as directed by the linker script and lets BFD handle the
   7148 details of symbols and relocs.
   7149 
   7150    The second routine and third routines are passed a pointer to a
   7151 `struct bfd_link_info' structure (defined in `bfdlink.h') which holds
   7152 information relevant to the link, including the linker hash table
   7153 (which was created by the first routine) and a set of callback
   7154 functions to the linker proper.
   7155 
   7156    The generic linker routines are in `linker.c', and use the header
   7157 file `genlink.h'.  As of this writing, the only back ends which have
   7158 implemented versions of these routines are a.out (in `aoutx.h') and
   7159 ECOFF (in `ecoff.c').  The a.out routines are used as examples
   7160 throughout this section.
   7161 
   7162 * Menu:
   7163 
   7164 * Creating a Linker Hash Table::
   7165 * Adding Symbols to the Hash Table::
   7166 * Performing the Final Link::
   7167 
   7168 
   7169 File: bfd.info,  Node: Creating a Linker Hash Table,  Next: Adding Symbols to the Hash Table,  Prev: Linker Functions,  Up: Linker Functions
   7170 
   7171 2.17.1 Creating a linker hash table
   7172 -----------------------------------
   7173 
   7174 The linker routines must create a hash table, which must be derived
   7175 from `struct bfd_link_hash_table' described in `bfdlink.c'.  *Note Hash
   7176 Tables::, for information on how to create a derived hash table.  This
   7177 entry point is called using the target vector of the linker output file.
   7178 
   7179    The `_bfd_link_hash_table_create' entry point must allocate and
   7180 initialize an instance of the desired hash table.  If the back end does
   7181 not require any additional information to be stored with the entries in
   7182 the hash table, the entry point may simply create a `struct
   7183 bfd_link_hash_table'.  Most likely, however, some additional
   7184 information will be needed.
   7185 
   7186    For example, with each entry in the hash table the a.out linker
   7187 keeps the index the symbol has in the final output file (this index
   7188 number is used so that when doing a relocatable link the symbol index
   7189 used in the output file can be quickly filled in when copying over a
   7190 reloc).  The a.out linker code defines the required structures and
   7191 functions for a hash table derived from `struct bfd_link_hash_table'.
   7192 The a.out linker hash table is created by the function
   7193 `NAME(aout,link_hash_table_create)'; it simply allocates space for the
   7194 hash table, initializes it, and returns a pointer to it.
   7195 
   7196    When writing the linker routines for a new back end, you will
   7197 generally not know exactly which fields will be required until you have
   7198 finished.  You should simply create a new hash table which defines no
   7199 additional fields, and then simply add fields as they become necessary.
   7200 
   7201 
   7202 File: bfd.info,  Node: Adding Symbols to the Hash Table,  Next: Performing the Final Link,  Prev: Creating a Linker Hash Table,  Up: Linker Functions
   7203 
   7204 2.17.2 Adding symbols to the hash table
   7205 ---------------------------------------
   7206 
   7207 The linker proper will call the `_bfd_link_add_symbols' entry point for
   7208 each object file or archive which is to be linked (typically these are
   7209 the files named on the command line, but some may also come from the
   7210 linker script).  The entry point is responsible for examining the file.
   7211 For an object file, BFD must add any relevant symbol information to the
   7212 hash table.  For an archive, BFD must determine which elements of the
   7213 archive should be used and adding them to the link.
   7214 
   7215    The a.out version of this entry point is
   7216 `NAME(aout,link_add_symbols)'.
   7217 
   7218 * Menu:
   7219 
   7220 * Differing file formats::
   7221 * Adding symbols from an object file::
   7222 * Adding symbols from an archive::
   7223 
   7224 
   7225 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
   7226 
   7227 2.17.2.1 Differing file formats
   7228 ...............................
   7229 
   7230 Normally all the files involved in a link will be of the same format,
   7231 but it is also possible to link together different format object files,
   7232 and the back end must support that.  The `_bfd_link_add_symbols' entry
   7233 point is called via the target vector of the file to be added.  This
   7234 has an important consequence: the function may not assume that the hash
   7235 table is the type created by the corresponding
   7236 `_bfd_link_hash_table_create' vector.  All the `_bfd_link_add_symbols'
   7237 function can assume about the hash table is that it is derived from
   7238 `struct bfd_link_hash_table'.
   7239 
   7240    Sometimes the `_bfd_link_add_symbols' function must store some
   7241 information in the hash table entry to be used by the `_bfd_final_link'
   7242 function.  In such a case the output bfd xvec must be checked to make
   7243 sure that the hash table was created by an object file of the same
   7244 format.
   7245 
   7246    The `_bfd_final_link' routine must be prepared to handle a hash
   7247 entry without any extra information added by the
   7248 `_bfd_link_add_symbols' function.  A hash entry without extra
   7249 information will also occur when the linker script directs the linker
   7250 to create a symbol.  Note that, regardless of how a hash table entry is
   7251 added, all the fields will be initialized to some sort of null value by
   7252 the hash table entry initialization function.
   7253 
   7254    See `ecoff_link_add_externals' for an example of how to check the
   7255 output bfd before saving information (in this case, the ECOFF external
   7256 symbol debugging information) in a hash table entry.
   7257 
   7258 
   7259 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
   7260 
   7261 2.17.2.2 Adding symbols from an object file
   7262 ...........................................
   7263 
   7264 When the `_bfd_link_add_symbols' routine is passed an object file, it
   7265 must add all externally visible symbols in that object file to the hash
   7266 table.  The actual work of adding the symbol to the hash table is
   7267 normally handled by the function `_bfd_generic_link_add_one_symbol'.
   7268 The `_bfd_link_add_symbols' routine is responsible for reading all the
   7269 symbols from the object file and passing the correct information to
   7270 `_bfd_generic_link_add_one_symbol'.
   7271 
   7272    The `_bfd_link_add_symbols' routine should not use
   7273 `bfd_canonicalize_symtab' to read the symbols.  The point of providing
   7274 this routine is to avoid the overhead of converting the symbols into
   7275 generic `asymbol' structures.
   7276 
   7277    `_bfd_generic_link_add_one_symbol' handles the details of combining
   7278 common symbols, warning about multiple definitions, and so forth.  It
   7279 takes arguments which describe the symbol to add, notably symbol flags,
   7280 a section, and an offset.  The symbol flags include such things as
   7281 `BSF_WEAK' or `BSF_INDIRECT'.  The section is a section in the object
   7282 file, or something like `bfd_und_section_ptr' for an undefined symbol
   7283 or `bfd_com_section_ptr' for a common symbol.
   7284 
   7285    If the `_bfd_final_link' routine is also going to need to read the
   7286 symbol information, the `_bfd_link_add_symbols' routine should save it
   7287 somewhere attached to the object file BFD.  However, the information
   7288 should only be saved if the `keep_memory' field of the `info' argument
   7289 is TRUE, so that the `-no-keep-memory' linker switch is effective.
   7290 
   7291    The a.out function which adds symbols from an object file is
   7292 `aout_link_add_object_symbols', and most of the interesting work is in
   7293 `aout_link_add_symbols'.  The latter saves pointers to the hash tables
   7294 entries created by `_bfd_generic_link_add_one_symbol' indexed by symbol
   7295 number, so that the `_bfd_final_link' routine does not have to call the
   7296 hash table lookup routine to locate the entry.
   7297 
   7298 
   7299 File: bfd.info,  Node: Adding symbols from an archive,  Prev: Adding symbols from an object file,  Up: Adding Symbols to the Hash Table
   7300 
   7301 2.17.2.3 Adding symbols from an archive
   7302 .......................................
   7303 
   7304 When the `_bfd_link_add_symbols' routine is passed an archive, it must
   7305 look through the symbols defined by the archive and decide which
   7306 elements of the archive should be included in the link.  For each such
   7307 element it must call the `add_archive_element' linker callback, and it
   7308 must add the symbols from the object file to the linker hash table.
   7309 
   7310    In most cases the work of looking through the symbols in the archive
   7311 should be done by the `_bfd_generic_link_add_archive_symbols' function.
   7312 This function builds a hash table from the archive symbol table and
   7313 looks through the list of undefined symbols to see which elements
   7314 should be included.  `_bfd_generic_link_add_archive_symbols' is passed
   7315 a function to call to make the final decision about adding an archive
   7316 element to the link and to do the actual work of adding the symbols to
   7317 the linker hash table.
   7318 
   7319    The function passed to `_bfd_generic_link_add_archive_symbols' must
   7320 read the symbols of the archive element and decide whether the archive
   7321 element should be included in the link.  If the element is to be
   7322 included, the `add_archive_element' linker callback routine must be
   7323 called with the element as an argument, and the elements symbols must
   7324 be added to the linker hash table just as though the element had itself
   7325 been passed to the `_bfd_link_add_symbols' function.
   7326 
   7327    When the a.out `_bfd_link_add_symbols' function receives an archive,
   7328 it calls `_bfd_generic_link_add_archive_symbols' passing
   7329 `aout_link_check_archive_element' as the function argument.
   7330 `aout_link_check_archive_element' calls `aout_link_check_ar_symbols'.
   7331 If the latter decides to add the element (an element is only added if
   7332 it provides a real, non-common, definition for a previously undefined
   7333 or common symbol) it calls the `add_archive_element' callback and then
   7334 `aout_link_check_archive_element' calls `aout_link_add_symbols' to
   7335 actually add the symbols to the linker hash table.
   7336 
   7337    The ECOFF back end is unusual in that it does not normally call
   7338 `_bfd_generic_link_add_archive_symbols', because ECOFF archives already
   7339 contain a hash table of symbols.  The ECOFF back end searches the
   7340 archive itself to avoid the overhead of creating a new hash table.
   7341 
   7342 
   7343 File: bfd.info,  Node: Performing the Final Link,  Prev: Adding Symbols to the Hash Table,  Up: Linker Functions
   7344 
   7345 2.17.3 Performing the final link
   7346 --------------------------------
   7347 
   7348 When all the input files have been processed, the linker calls the
   7349 `_bfd_final_link' entry point of the output BFD.  This routine is
   7350 responsible for producing the final output file, which has several
   7351 aspects.  It must relocate the contents of the input sections and copy
   7352 the data into the output sections.  It must build an output symbol
   7353 table including any local symbols from the input files and the global
   7354 symbols from the hash table.  When producing relocatable output, it must
   7355 modify the input relocs and write them into the output file.  There may
   7356 also be object format dependent work to be done.
   7357 
   7358    The linker will also call the `write_object_contents' entry point
   7359 when the BFD is closed.  The two entry points must work together in
   7360 order to produce the correct output file.
   7361 
   7362    The details of how this works are inevitably dependent upon the
   7363 specific object file format.  The a.out `_bfd_final_link' routine is
   7364 `NAME(aout,final_link)'.
   7365 
   7366 * Menu:
   7367 
   7368 * Information provided by the linker::
   7369 * Relocating the section contents::
   7370 * Writing the symbol table::
   7371 
   7372 
   7373 File: bfd.info,  Node: Information provided by the linker,  Next: Relocating the section contents,  Prev: Performing the Final Link,  Up: Performing the Final Link
   7374 
   7375 2.17.3.1 Information provided by the linker
   7376 ...........................................
   7377 
   7378 Before the linker calls the `_bfd_final_link' entry point, it sets up
   7379 some data structures for the function to use.
   7380 
   7381    The `input_bfds' field of the `bfd_link_info' structure will point
   7382 to a list of all the input files included in the link.  These files are
   7383 linked through the `link_next' field of the `bfd' structure.
   7384 
   7385    Each section in the output file will have a list of `link_order'
   7386 structures attached to the `map_head.link_order' field (the
   7387 `link_order' structure is defined in `bfdlink.h').  These structures
   7388 describe how to create the contents of the output section in terms of
   7389 the contents of various input sections, fill constants, and,
   7390 eventually, other types of information.  They also describe relocs that
   7391 must be created by the BFD backend, but do not correspond to any input
   7392 file; this is used to support -Ur, which builds constructors while
   7393 generating a relocatable object file.
   7394 
   7395 
   7396 File: bfd.info,  Node: Relocating the section contents,  Next: Writing the symbol table,  Prev: Information provided by the linker,  Up: Performing the Final Link
   7397 
   7398 2.17.3.2 Relocating the section contents
   7399 ........................................
   7400 
   7401 The `_bfd_final_link' function should look through the `link_order'
   7402 structures attached to each section of the output file.  Each
   7403 `link_order' structure should either be handled specially, or it should
   7404 be passed to the function `_bfd_default_link_order' which will do the
   7405 right thing (`_bfd_default_link_order' is defined in `linker.c').
   7406 
   7407    For efficiency, a `link_order' of type `bfd_indirect_link_order'
   7408 whose associated section belongs to a BFD of the same format as the
   7409 output BFD must be handled specially.  This type of `link_order'
   7410 describes part of an output section in terms of a section belonging to
   7411 one of the input files.  The `_bfd_final_link' function should read the
   7412 contents of the section and any associated relocs, apply the relocs to
   7413 the section contents, and write out the modified section contents.  If
   7414 performing a relocatable link, the relocs themselves must also be
   7415 modified and written out.
   7416 
   7417    The functions `_bfd_relocate_contents' and
   7418 `_bfd_final_link_relocate' provide some general support for performing
   7419 the actual relocations, notably overflow checking.  Their arguments
   7420 include information about the symbol the relocation is against and a
   7421 `reloc_howto_type' argument which describes the relocation to perform.
   7422 These functions are defined in `reloc.c'.
   7423 
   7424    The a.out function which handles reading, relocating, and writing
   7425 section contents is `aout_link_input_section'.  The actual relocation
   7426 is done in `aout_link_input_section_std' and
   7427 `aout_link_input_section_ext'.
   7428 
   7429 
   7430 File: bfd.info,  Node: Writing the symbol table,  Prev: Relocating the section contents,  Up: Performing the Final Link
   7431 
   7432 2.17.3.3 Writing the symbol table
   7433 .................................
   7434 
   7435 The `_bfd_final_link' function must gather all the symbols in the input
   7436 files and write them out.  It must also write out all the symbols in
   7437 the global hash table.  This must be controlled by the `strip' and
   7438 `discard' fields of the `bfd_link_info' structure.
   7439 
   7440    The local symbols of the input files will not have been entered into
   7441 the linker hash table.  The `_bfd_final_link' routine must consider
   7442 each input file and include the symbols in the output file.  It may be
   7443 convenient to do this when looking through the `link_order' structures,
   7444 or it may be done by stepping through the `input_bfds' list.
   7445 
   7446    The `_bfd_final_link' routine must also traverse the global hash
   7447 table to gather all the externally visible symbols.  It is possible
   7448 that most of the externally visible symbols may be written out when
   7449 considering the symbols of each input file, but it is still necessary
   7450 to traverse the hash table since the linker script may have defined
   7451 some symbols that are not in any of the input files.
   7452 
   7453    The `strip' field of the `bfd_link_info' structure controls which
   7454 symbols are written out.  The possible values are listed in
   7455 `bfdlink.h'.  If the value is `strip_some', then the `keep_hash' field
   7456 of the `bfd_link_info' structure is a hash table of symbols to keep;
   7457 each symbol should be looked up in this hash table, and only symbols
   7458 which are present should be included in the output file.
   7459 
   7460    If the `strip' field of the `bfd_link_info' structure permits local
   7461 symbols to be written out, the `discard' field is used to further
   7462 controls which local symbols are included in the output file.  If the
   7463 value is `discard_l', then all local symbols which begin with a certain
   7464 prefix are discarded; this is controlled by the
   7465 `bfd_is_local_label_name' entry point.
   7466 
   7467    The a.out backend handles symbols by calling
   7468 `aout_link_write_symbols' on each input BFD and then traversing the
   7469 global hash table with the function `aout_link_write_other_symbol'.  It
   7470 builds a string table while writing out the symbols, which is written
   7471 to the output file at the end of `NAME(aout,final_link)'.
   7472 
   7473 2.17.3.4 `bfd_link_split_section'
   7474 .................................
   7475 
   7476 *Synopsis*
   7477      bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
   7478    *Description*
   7479 Return nonzero if SEC should be split during a reloceatable or final
   7480 link.
   7481      #define bfd_link_split_section(abfd, sec) \
   7482             BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
   7483 
   7484 2.17.3.5 `bfd_section_already_linked'
   7485 .....................................
   7486 
   7487 *Synopsis*
   7488      void bfd_section_already_linked (bfd *abfd, asection *sec,
   7489          struct bfd_link_info *info);
   7490    *Description*
   7491 Check if SEC has been already linked during a reloceatable or final
   7492 link.
   7493      #define bfd_section_already_linked(abfd, sec, info) \
   7494             BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
   7495 
   7496 
   7497 File: bfd.info,  Node: Hash Tables,  Prev: Linker Functions,  Up: BFD front end
   7498 
   7499 2.18 Hash Tables
   7500 ================
   7501 
   7502 BFD provides a simple set of hash table functions.  Routines are
   7503 provided to initialize a hash table, to free a hash table, to look up a
   7504 string in a hash table and optionally create an entry for it, and to
   7505 traverse a hash table.  There is currently no routine to delete an
   7506 string from a hash table.
   7507 
   7508    The basic hash table does not permit any data to be stored with a
   7509 string.  However, a hash table is designed to present a base class from
   7510 which other types of hash tables may be derived.  These derived types
   7511 may store additional information with the string.  Hash tables were
   7512 implemented in this way, rather than simply providing a data pointer in
   7513 a hash table entry, because they were designed for use by the linker
   7514 back ends.  The linker may create thousands of hash table entries, and
   7515 the overhead of allocating private data and storing and following
   7516 pointers becomes noticeable.
   7517 
   7518    The basic hash table code is in `hash.c'.
   7519 
   7520 * Menu:
   7521 
   7522 * Creating and Freeing a Hash Table::
   7523 * Looking Up or Entering a String::
   7524 * Traversing a Hash Table::
   7525 * Deriving a New Hash Table Type::
   7526 
   7527 
   7528 File: bfd.info,  Node: Creating and Freeing a Hash Table,  Next: Looking Up or Entering a String,  Prev: Hash Tables,  Up: Hash Tables
   7529 
   7530 2.18.1 Creating and freeing a hash table
   7531 ----------------------------------------
   7532 
   7533 To create a hash table, create an instance of a `struct bfd_hash_table'
   7534 (defined in `bfd.h') and call `bfd_hash_table_init' (if you know
   7535 approximately how many entries you will need, the function
   7536 `bfd_hash_table_init_n', which takes a SIZE argument, may be used).
   7537 `bfd_hash_table_init' returns `FALSE' if some sort of error occurs.
   7538 
   7539    The function `bfd_hash_table_init' take as an argument a function to
   7540 use to create new entries.  For a basic hash table, use the function
   7541 `bfd_hash_newfunc'.  *Note Deriving a New Hash Table Type::, for why
   7542 you would want to use a different value for this argument.
   7543 
   7544    `bfd_hash_table_init' will create an objalloc which will be used to
   7545 allocate new entries.  You may allocate memory on this objalloc using
   7546 `bfd_hash_allocate'.
   7547 
   7548    Use `bfd_hash_table_free' to free up all the memory that has been
   7549 allocated for a hash table.  This will not free up the `struct
   7550 bfd_hash_table' itself, which you must provide.
   7551 
   7552    Use `bfd_hash_set_default_size' to set the default size of hash
   7553 table to use.
   7554 
   7555 
   7556 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
   7557 
   7558 2.18.2 Looking up or entering a string
   7559 --------------------------------------
   7560 
   7561 The function `bfd_hash_lookup' is used both to look up a string in the
   7562 hash table and to create a new entry.
   7563 
   7564    If the CREATE argument is `FALSE', `bfd_hash_lookup' will look up a
   7565 string.  If the string is found, it will returns a pointer to a `struct
   7566 bfd_hash_entry'.  If the string is not found in the table
   7567 `bfd_hash_lookup' will return `NULL'.  You should not modify any of the
   7568 fields in the returns `struct bfd_hash_entry'.
   7569 
   7570    If the CREATE argument is `TRUE', the string will be entered into
   7571 the hash table if it is not already there.  Either way a pointer to a
   7572 `struct bfd_hash_entry' will be returned, either to the existing
   7573 structure or to a newly created one.  In this case, a `NULL' return
   7574 means that an error occurred.
   7575 
   7576    If the CREATE argument is `TRUE', and a new entry is created, the
   7577 COPY argument is used to decide whether to copy the string onto the
   7578 hash table objalloc or not.  If COPY is passed as `FALSE', you must be
   7579 careful not to deallocate or modify the string as long as the hash table
   7580 exists.
   7581 
   7582 
   7583 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
   7584 
   7585 2.18.3 Traversing a hash table
   7586 ------------------------------
   7587 
   7588 The function `bfd_hash_traverse' may be used to traverse a hash table,
   7589 calling a function on each element.  The traversal is done in a random
   7590 order.
   7591 
   7592    `bfd_hash_traverse' takes as arguments a function and a generic
   7593 `void *' pointer.  The function is called with a hash table entry (a
   7594 `struct bfd_hash_entry *') and the generic pointer passed to
   7595 `bfd_hash_traverse'.  The function must return a `boolean' value, which
   7596 indicates whether to continue traversing the hash table.  If the
   7597 function returns `FALSE', `bfd_hash_traverse' will stop the traversal
   7598 and return immediately.
   7599 
   7600 
   7601 File: bfd.info,  Node: Deriving a New Hash Table Type,  Prev: Traversing a Hash Table,  Up: Hash Tables
   7602 
   7603 2.18.4 Deriving a new hash table type
   7604 -------------------------------------
   7605 
   7606 Many uses of hash tables want to store additional information which
   7607 each entry in the hash table.  Some also find it convenient to store
   7608 additional information with the hash table itself.  This may be done
   7609 using a derived hash table.
   7610 
   7611    Since C is not an object oriented language, creating a derived hash
   7612 table requires sticking together some boilerplate routines with a few
   7613 differences specific to the type of hash table you want to create.
   7614 
   7615    An example of a derived hash table is the linker hash table.  The
   7616 structures for this are defined in `bfdlink.h'.  The functions are in
   7617 `linker.c'.
   7618 
   7619    You may also derive a hash table from an already derived hash table.
   7620 For example, the a.out linker backend code uses a hash table derived
   7621 from the linker hash table.
   7622 
   7623 * Menu:
   7624 
   7625 * Define the Derived Structures::
   7626 * Write the Derived Creation Routine::
   7627 * Write Other Derived Routines::
   7628 
   7629 
   7630 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
   7631 
   7632 2.18.4.1 Define the derived structures
   7633 ......................................
   7634 
   7635 You must define a structure for an entry in the hash table, and a
   7636 structure for the hash table itself.
   7637 
   7638    The first field in the structure for an entry in the hash table must
   7639 be of the type used for an entry in the hash table you are deriving
   7640 from.  If you are deriving from a basic hash table this is `struct
   7641 bfd_hash_entry', which is defined in `bfd.h'.  The first field in the
   7642 structure for the hash table itself must be of the type of the hash
   7643 table you are deriving from itself.  If you are deriving from a basic
   7644 hash table, this is `struct bfd_hash_table'.
   7645 
   7646    For example, the linker hash table defines `struct
   7647 bfd_link_hash_entry' (in `bfdlink.h').  The first field, `root', is of
   7648 type `struct bfd_hash_entry'.  Similarly, the first field in `struct
   7649 bfd_link_hash_table', `table', is of type `struct bfd_hash_table'.
   7650 
   7651 
   7652 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
   7653 
   7654 2.18.4.2 Write the derived creation routine
   7655 ...........................................
   7656 
   7657 You must write a routine which will create and initialize an entry in
   7658 the hash table.  This routine is passed as the function argument to
   7659 `bfd_hash_table_init'.
   7660 
   7661    In order to permit other hash tables to be derived from the hash
   7662 table you are creating, this routine must be written in a standard way.
   7663 
   7664    The first argument to the creation routine is a pointer to a hash
   7665 table entry.  This may be `NULL', in which case the routine should
   7666 allocate the right amount of space.  Otherwise the space has already
   7667 been allocated by a hash table type derived from this one.
   7668 
   7669    After allocating space, the creation routine must call the creation
   7670 routine of the hash table type it is derived from, passing in a pointer
   7671 to the space it just allocated.  This will initialize any fields used
   7672 by the base hash table.
   7673 
   7674    Finally the creation routine must initialize any local fields for
   7675 the new hash table type.
   7676 
   7677    Here is a boilerplate example of a creation routine.  FUNCTION_NAME
   7678 is the name of the routine.  ENTRY_TYPE is the type of an entry in the
   7679 hash table you are creating.  BASE_NEWFUNC is the name of the creation
   7680 routine of the hash table type your hash table is derived from.
   7681 
   7682      struct bfd_hash_entry *
   7683      FUNCTION_NAME (struct bfd_hash_entry *entry,
   7684                           struct bfd_hash_table *table,
   7685                           const char *string)
   7686      {
   7687        struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry;
   7688 
   7689       /* Allocate the structure if it has not already been allocated by a
   7690          derived class.  */
   7691        if (ret == NULL)
   7692          {
   7693            ret = bfd_hash_allocate (table, sizeof (* ret));
   7694            if (ret == NULL)
   7695              return NULL;
   7696          }
   7697 
   7698       /* Call the allocation method of the base class.  */
   7699        ret = ((ENTRY_TYPE *)
   7700              BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string));
   7701 
   7702       /* Initialize the local fields here.  */
   7703 
   7704        return (struct bfd_hash_entry *) ret;
   7705      }
   7706    *Description*
   7707 The creation routine for the linker hash table, which is in `linker.c',
   7708 looks just like this example.  FUNCTION_NAME is
   7709 `_bfd_link_hash_newfunc'.  ENTRY_TYPE is `struct bfd_link_hash_entry'.
   7710 BASE_NEWFUNC is `bfd_hash_newfunc', the creation routine for a basic
   7711 hash table.
   7712 
   7713    `_bfd_link_hash_newfunc' also initializes the local fields in a
   7714 linker hash table entry: `type', `written' and `next'.
   7715 
   7716 
   7717 File: bfd.info,  Node: Write Other Derived Routines,  Prev: Write the Derived Creation Routine,  Up: Deriving a New Hash Table Type
   7718 
   7719 2.18.4.3 Write other derived routines
   7720 .....................................
   7721 
   7722 You will want to write other routines for your new hash table, as well.
   7723 
   7724    You will want an initialization routine which calls the
   7725 initialization routine of the hash table you are deriving from and
   7726 initializes any other local fields.  For the linker hash table, this is
   7727 `_bfd_link_hash_table_init' in `linker.c'.
   7728 
   7729    You will want a lookup routine which calls the lookup routine of the
   7730 hash table you are deriving from and casts the result.  The linker hash
   7731 table uses `bfd_link_hash_lookup' in `linker.c' (this actually takes an
   7732 additional argument which it uses to decide how to return the looked up
   7733 value).
   7734 
   7735    You may want a traversal routine.  This should just call the
   7736 traversal routine of the hash table you are deriving from with
   7737 appropriate casts.  The linker hash table uses `bfd_link_hash_traverse'
   7738 in `linker.c'.
   7739 
   7740    These routines may simply be defined as macros.  For example, the
   7741 a.out backend linker hash table, which is derived from the linker hash
   7742 table, uses macros for the lookup and traversal routines.  These are
   7743 `aout_link_hash_lookup' and `aout_link_hash_traverse' in aoutx.h.
   7744 
   7745 
   7746 File: bfd.info,  Node: BFD back ends,  Next: GNU Free Documentation License,  Prev: BFD front end,  Up: Top
   7747 
   7748 3 BFD back ends
   7749 ***************
   7750 
   7751 * Menu:
   7752 
   7753 * What to Put Where::
   7754 * aout ::	a.out backends
   7755 * coff ::	coff backends
   7756 * elf  ::	elf backends
   7757 * mmo  ::	mmo backend
   7758 
   7759 
   7760 File: bfd.info,  Node: What to Put Where,  Next: aout,  Prev: BFD back ends,  Up: BFD back ends
   7761 
   7762 3.1 What to Put Where
   7763 =====================
   7764 
   7765 All of BFD lives in one directory.
   7766 
   7767 
   7768 File: bfd.info,  Node: aout,  Next: coff,  Prev: What to Put Where,  Up: BFD back ends
   7769 
   7770 3.2 a.out backends
   7771 ==================
   7772 
   7773 *Description*
   7774 BFD supports a number of different flavours of a.out format, though the
   7775 major differences are only the sizes of the structures on disk, and the
   7776 shape of the relocation information.
   7777 
   7778    The support is split into a basic support file `aoutx.h' and other
   7779 files which derive functions from the base. One derivation file is
   7780 `aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions
   7781 support for sun3, sun4, 386 and 29k a.out files, to create a target
   7782 jump vector for a specific target.
   7783 
   7784    This information is further split out into more specific files for
   7785 each machine, including `sunos.c' for sun3 and sun4, `newsos3.c' for
   7786 the Sony NEWS, and `demo64.c' for a demonstration of a 64 bit a.out
   7787 format.
   7788 
   7789    The base file `aoutx.h' defines general mechanisms for reading and
   7790 writing records to and from disk and various other methods which BFD
   7791 requires. It is included by `aout32.c' and `aout64.c' to form the names
   7792 `aout_32_swap_exec_header_in', `aout_64_swap_exec_header_in', etc.
   7793 
   7794    As an example, this is what goes on to make the back end for a sun4,
   7795 from `aout32.c':
   7796 
   7797             #define ARCH_SIZE 32
   7798             #include "aoutx.h"
   7799 
   7800    Which exports names:
   7801 
   7802             ...
   7803             aout_32_canonicalize_reloc
   7804             aout_32_find_nearest_line
   7805             aout_32_get_lineno
   7806             aout_32_get_reloc_upper_bound
   7807             ...
   7808 
   7809    from `sunos.c':
   7810 
   7811             #define TARGET_NAME "a.out-sunos-big"
   7812             #define VECNAME    sunos_big_vec
   7813             #include "aoutf1.h"
   7814 
   7815    requires all the names from `aout32.c', and produces the jump vector
   7816 
   7817             sunos_big_vec
   7818 
   7819    The file `host-aout.c' is a special case.  It is for a large set of
   7820 hosts that use "more or less standard" a.out files, and for which
   7821 cross-debugging is not interesting.  It uses the standard 32-bit a.out
   7822 support routines, but determines the file offsets and addresses of the
   7823 text, data, and BSS sections, the machine architecture and machine
   7824 type, and the entry point address, in a host-dependent manner.  Once
   7825 these values have been determined, generic code is used to handle the
   7826 object file.
   7827 
   7828    When porting it to run on a new system, you must supply:
   7829 
   7830              HOST_PAGE_SIZE
   7831              HOST_SEGMENT_SIZE
   7832              HOST_MACHINE_ARCH       (optional)
   7833              HOST_MACHINE_MACHINE    (optional)
   7834              HOST_TEXT_START_ADDR
   7835              HOST_STACK_END_ADDR
   7836 
   7837    in the file `../include/sys/h-XXX.h' (for your host).  These values,
   7838 plus the structures and macros defined in `a.out.h' on your host
   7839 system, will produce a BFD target that will access ordinary a.out files
   7840 on your host. To configure a new machine to use `host-aout.c', specify:
   7841 
   7842             TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
   7843             TDEPFILES= host-aout.o trad-core.o
   7844 
   7845    in the `config/XXX.mt' file, and modify `configure.in' to use the
   7846 `XXX.mt' file (by setting "`bfd_target=XXX'") when your configuration
   7847 is selected.
   7848 
   7849 3.2.1 Relocations
   7850 -----------------
   7851 
   7852 *Description*
   7853 The file `aoutx.h' provides for both the _standard_ and _extended_
   7854 forms of a.out relocation records.
   7855 
   7856    The standard records contain only an address, a symbol index, and a
   7857 type field. The extended records (used on 29ks and sparcs) also have a
   7858 full integer for an addend.
   7859 
   7860 3.2.2 Internal entry points
   7861 ---------------------------
   7862 
   7863 *Description*
   7864 `aoutx.h' exports several routines for accessing the contents of an
   7865 a.out file, which are gathered and exported in turn by various format
   7866 specific files (eg sunos.c).
   7867 
   7868 3.2.2.1 `aout_SIZE_swap_exec_header_in'
   7869 .......................................
   7870 
   7871 *Synopsis*
   7872      void aout_SIZE_swap_exec_header_in,
   7873         (bfd *abfd,
   7874          struct external_exec *bytes,
   7875          struct internal_exec *execp);
   7876    *Description*
   7877 Swap the information in an executable header RAW_BYTES taken from a raw
   7878 byte stream memory image into the internal exec header structure EXECP.
   7879 
   7880 3.2.2.2 `aout_SIZE_swap_exec_header_out'
   7881 ........................................
   7882 
   7883 *Synopsis*
   7884      void aout_SIZE_swap_exec_header_out
   7885         (bfd *abfd,
   7886          struct internal_exec *execp,
   7887          struct external_exec *raw_bytes);
   7888    *Description*
   7889 Swap the information in an internal exec header structure EXECP into
   7890 the buffer RAW_BYTES ready for writing to disk.
   7891 
   7892 3.2.2.3 `aout_SIZE_some_aout_object_p'
   7893 ......................................
   7894 
   7895 *Synopsis*
   7896      const bfd_target *aout_SIZE_some_aout_object_p
   7897         (bfd *abfd,
   7898          struct internal_exec *execp,
   7899          const bfd_target *(*callback_to_real_object_p) (bfd *));
   7900    *Description*
   7901 Some a.out variant thinks that the file open in ABFD checking is an
   7902 a.out file.  Do some more checking, and set up for access if it really
   7903 is.  Call back to the calling environment's "finish up" function just
   7904 before returning, to handle any last-minute setup.
   7905 
   7906 3.2.2.4 `aout_SIZE_mkobject'
   7907 ............................
   7908 
   7909 *Synopsis*
   7910      bfd_boolean aout_SIZE_mkobject, (bfd *abfd);
   7911    *Description*
   7912 Initialize BFD ABFD for use with a.out files.
   7913 
   7914 3.2.2.5 `aout_SIZE_machine_type'
   7915 ................................
   7916 
   7917 *Synopsis*
   7918      enum machine_type  aout_SIZE_machine_type
   7919         (enum bfd_architecture arch,
   7920          unsigned long machine,
   7921          bfd_boolean *unknown);
   7922    *Description*
   7923 Keep track of machine architecture and machine type for a.out's. Return
   7924 the `machine_type' for a particular architecture and machine, or
   7925 `M_UNKNOWN' if that exact architecture and machine can't be represented
   7926 in a.out format.
   7927 
   7928    If the architecture is understood, machine type 0 (default) is
   7929 always understood.
   7930 
   7931 3.2.2.6 `aout_SIZE_set_arch_mach'
   7932 .................................
   7933 
   7934 *Synopsis*
   7935      bfd_boolean aout_SIZE_set_arch_mach,
   7936         (bfd *,
   7937          enum bfd_architecture arch,
   7938          unsigned long machine);
   7939    *Description*
   7940 Set the architecture and the machine of the BFD ABFD to the values ARCH
   7941 and MACHINE.  Verify that ABFD's format can support the architecture
   7942 required.
   7943 
   7944 3.2.2.7 `aout_SIZE_new_section_hook'
   7945 ....................................
   7946 
   7947 *Synopsis*
   7948      bfd_boolean aout_SIZE_new_section_hook,
   7949         (bfd *abfd,
   7950          asection *newsect);
   7951    *Description*
   7952 Called by the BFD in response to a `bfd_make_section' request.
   7953 
   7954 
   7955 File: bfd.info,  Node: coff,  Next: elf,  Prev: aout,  Up: BFD back ends
   7956 
   7957 3.3 coff backends
   7958 =================
   7959 
   7960 BFD supports a number of different flavours of coff format.  The major
   7961 differences between formats are the sizes and alignments of fields in
   7962 structures on disk, and the occasional extra field.
   7963 
   7964    Coff in all its varieties is implemented with a few common files and
   7965 a number of implementation specific files. For example, The 88k bcs
   7966 coff format is implemented in the file `coff-m88k.c'. This file
   7967 `#include's `coff/m88k.h' which defines the external structure of the
   7968 coff format for the 88k, and `coff/internal.h' which defines the
   7969 internal structure. `coff-m88k.c' also defines the relocations used by
   7970 the 88k format *Note Relocations::.
   7971 
   7972    The Intel i960 processor version of coff is implemented in
   7973 `coff-i960.c'. This file has the same structure as `coff-m88k.c',
   7974 except that it includes `coff/i960.h' rather than `coff-m88k.h'.
   7975 
   7976 3.3.1 Porting to a new version of coff
   7977 --------------------------------------
   7978 
   7979 The recommended method is to select from the existing implementations
   7980 the version of coff which is most like the one you want to use.  For
   7981 example, we'll say that i386 coff is the one you select, and that your
   7982 coff flavour is called foo.  Copy `i386coff.c' to `foocoff.c', copy
   7983 `../include/coff/i386.h' to `../include/coff/foo.h', and add the lines
   7984 to `targets.c' and `Makefile.in' so that your new back end is used.
   7985 Alter the shapes of the structures in `../include/coff/foo.h' so that
   7986 they match what you need. You will probably also have to add `#ifdef's
   7987 to the code in `coff/internal.h' and `coffcode.h' if your version of
   7988 coff is too wild.
   7989 
   7990    You can verify that your new BFD backend works quite simply by
   7991 building `objdump' from the `binutils' directory, and making sure that
   7992 its version of what's going on and your host system's idea (assuming it
   7993 has the pretty standard coff dump utility, usually called `att-dump' or
   7994 just `dump') are the same.  Then clean up your code, and send what
   7995 you've done to Cygnus. Then your stuff will be in the next release, and
   7996 you won't have to keep integrating it.
   7997 
   7998 3.3.2 How the coff backend works
   7999 --------------------------------
   8000 
   8001 3.3.2.1 File layout
   8002 ...................
   8003 
   8004 The Coff backend is split into generic routines that are applicable to
   8005 any Coff target and routines that are specific to a particular target.
   8006 The target-specific routines are further split into ones which are
   8007 basically the same for all Coff targets except that they use the
   8008 external symbol format or use different values for certain constants.
   8009 
   8010    The generic routines are in `coffgen.c'.  These routines work for
   8011 any Coff target.  They use some hooks into the target specific code;
   8012 the hooks are in a `bfd_coff_backend_data' structure, one of which
   8013 exists for each target.
   8014 
   8015    The essentially similar target-specific routines are in
   8016 `coffcode.h'.  This header file includes executable C code.  The
   8017 various Coff targets first include the appropriate Coff header file,
   8018 make any special defines that are needed, and then include `coffcode.h'.
   8019 
   8020    Some of the Coff targets then also have additional routines in the
   8021 target source file itself.
   8022 
   8023    For example, `coff-i960.c' includes `coff/internal.h' and
   8024 `coff/i960.h'.  It then defines a few constants, such as `I960', and
   8025 includes `coffcode.h'.  Since the i960 has complex relocation types,
   8026 `coff-i960.c' also includes some code to manipulate the i960 relocs.
   8027 This code is not in `coffcode.h' because it would not be used by any
   8028 other target.
   8029 
   8030 3.3.2.2 Bit twiddling
   8031 .....................
   8032 
   8033 Each flavour of coff supported in BFD has its own header file
   8034 describing the external layout of the structures. There is also an
   8035 internal description of the coff layout, in `coff/internal.h'. A major
   8036 function of the coff backend is swapping the bytes and twiddling the
   8037 bits to translate the external form of the structures into the normal
   8038 internal form. This is all performed in the `bfd_swap'_thing_direction
   8039 routines. Some elements are different sizes between different versions
   8040 of coff; it is the duty of the coff version specific include file to
   8041 override the definitions of various packing routines in `coffcode.h'.
   8042 E.g., the size of line number entry in coff is sometimes 16 bits, and
   8043 sometimes 32 bits. `#define'ing `PUT_LNSZ_LNNO' and `GET_LNSZ_LNNO'
   8044 will select the correct one. No doubt, some day someone will find a
   8045 version of coff which has a varying field size not catered to at the
   8046 moment. To port BFD, that person will have to add more `#defines'.
   8047 Three of the bit twiddling routines are exported to `gdb';
   8048 `coff_swap_aux_in', `coff_swap_sym_in' and `coff_swap_lineno_in'. `GDB'
   8049 reads the symbol table on its own, but uses BFD to fix things up.  More
   8050 of the bit twiddlers are exported for `gas'; `coff_swap_aux_out',
   8051 `coff_swap_sym_out', `coff_swap_lineno_out', `coff_swap_reloc_out',
   8052 `coff_swap_filehdr_out', `coff_swap_aouthdr_out',
   8053 `coff_swap_scnhdr_out'. `Gas' currently keeps track of all the symbol
   8054 table and reloc drudgery itself, thereby saving the internal BFD
   8055 overhead, but uses BFD to swap things on the way out, making cross
   8056 ports much safer.  Doing so also allows BFD (and thus the linker) to
   8057 use the same header files as `gas', which makes one avenue to disaster
   8058 disappear.
   8059 
   8060 3.3.2.3 Symbol reading
   8061 ......................
   8062 
   8063 The simple canonical form for symbols used by BFD is not rich enough to
   8064 keep all the information available in a coff symbol table. The back end
   8065 gets around this problem by keeping the original symbol table around,
   8066 "behind the scenes".
   8067 
   8068    When a symbol table is requested (through a call to
   8069 `bfd_canonicalize_symtab'), a request gets through to
   8070 `coff_get_normalized_symtab'. This reads the symbol table from the coff
   8071 file and swaps all the structures inside into the internal form. It
   8072 also fixes up all the pointers in the table (represented in the file by
   8073 offsets from the first symbol in the table) into physical pointers to
   8074 elements in the new internal table. This involves some work since the
   8075 meanings of fields change depending upon context: a field that is a
   8076 pointer to another structure in the symbol table at one moment may be
   8077 the size in bytes of a structure at the next.  Another pass is made
   8078 over the table. All symbols which mark file names (`C_FILE' symbols)
   8079 are modified so that the internal string points to the value in the
   8080 auxent (the real filename) rather than the normal text associated with
   8081 the symbol (`".file"').
   8082 
   8083    At this time the symbol names are moved around. Coff stores all
   8084 symbols less than nine characters long physically within the symbol
   8085 table; longer strings are kept at the end of the file in the string
   8086 table. This pass moves all strings into memory and replaces them with
   8087 pointers to the strings.
   8088 
   8089    The symbol table is massaged once again, this time to create the
   8090 canonical table used by the BFD application. Each symbol is inspected
   8091 in turn, and a decision made (using the `sclass' field) about the
   8092 various flags to set in the `asymbol'.  *Note Symbols::. The generated
   8093 canonical table shares strings with the hidden internal symbol table.
   8094 
   8095    Any linenumbers are read from the coff file too, and attached to the
   8096 symbols which own the functions the linenumbers belong to.
   8097 
   8098 3.3.2.4 Symbol writing
   8099 ......................
   8100 
   8101 Writing a symbol to a coff file which didn't come from a coff file will
   8102 lose any debugging information. The `asymbol' structure remembers the
   8103 BFD from which the symbol was taken, and on output the back end makes
   8104 sure that the same destination target as source target is present.
   8105 
   8106    When the symbols have come from a coff file then all the debugging
   8107 information is preserved.
   8108 
   8109    Symbol tables are provided for writing to the back end in a vector
   8110 of pointers to pointers. This allows applications like the linker to
   8111 accumulate and output large symbol tables without having to do too much
   8112 byte copying.
   8113 
   8114    This function runs through the provided symbol table and patches
   8115 each symbol marked as a file place holder (`C_FILE') to point to the
   8116 next file place holder in the list. It also marks each `offset' field
   8117 in the list with the offset from the first symbol of the current symbol.
   8118 
   8119    Another function of this procedure is to turn the canonical value
   8120 form of BFD into the form used by coff. Internally, BFD expects symbol
   8121 values to be offsets from a section base; so a symbol physically at
   8122 0x120, but in a section starting at 0x100, would have the value 0x20.
   8123 Coff expects symbols to contain their final value, so symbols have
   8124 their values changed at this point to reflect their sum with their
   8125 owning section.  This transformation uses the `output_section' field of
   8126 the `asymbol''s `asection' *Note Sections::.
   8127 
   8128    * `coff_mangle_symbols'
   8129    This routine runs though the provided symbol table and uses the
   8130 offsets generated by the previous pass and the pointers generated when
   8131 the symbol table was read in to create the structured hierarchy
   8132 required by coff. It changes each pointer to a symbol into the index
   8133 into the symbol table of the asymbol.
   8134 
   8135    * `coff_write_symbols'
   8136    This routine runs through the symbol table and patches up the
   8137 symbols from their internal form into the coff way, calls the bit
   8138 twiddlers, and writes out the table to the file.
   8139 
   8140 3.3.2.5 `coff_symbol_type'
   8141 ..........................
   8142 
   8143 *Description*
   8144 The hidden information for an `asymbol' is described in a
   8145 `combined_entry_type':
   8146 
   8147 
   8148      typedef struct coff_ptr_struct
   8149      {
   8150        /* Remembers the offset from the first symbol in the file for
   8151           this symbol. Generated by coff_renumber_symbols. */
   8152        unsigned int offset;
   8153 
   8154        /* Should the value of this symbol be renumbered.  Used for
   8155           XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
   8156        unsigned int fix_value : 1;
   8157 
   8158        /* Should the tag field of this symbol be renumbered.
   8159           Created by coff_pointerize_aux. */
   8160        unsigned int fix_tag : 1;
   8161 
   8162        /* Should the endidx field of this symbol be renumbered.
   8163           Created by coff_pointerize_aux. */
   8164        unsigned int fix_end : 1;
   8165 
   8166        /* Should the x_csect.x_scnlen field be renumbered.
   8167           Created by coff_pointerize_aux. */
   8168        unsigned int fix_scnlen : 1;
   8169 
   8170        /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
   8171           index into the line number entries.  Set by coff_slurp_symbol_table.  */
   8172        unsigned int fix_line : 1;
   8173 
   8174        /* The container for the symbol structure as read and translated
   8175           from the file. */
   8176        union
   8177        {
   8178          union internal_auxent auxent;
   8179          struct internal_syment syment;
   8180        } u;
   8181      } combined_entry_type;
   8182 
   8183 
   8184      /* Each canonical asymbol really looks like this: */
   8185 
   8186      typedef struct coff_symbol_struct
   8187      {
   8188        /* The actual symbol which the rest of BFD works with */
   8189        asymbol symbol;
   8190 
   8191        /* A pointer to the hidden information for this symbol */
   8192        combined_entry_type *native;
   8193 
   8194        /* A pointer to the linenumber information for this symbol */
   8195        struct lineno_cache_entry *lineno;
   8196 
   8197        /* Have the line numbers been relocated yet ? */
   8198        bfd_boolean done_lineno;
   8199      } coff_symbol_type;
   8200    
   8201 3.3.2.6 `bfd_coff_backend_data'
   8202 ...............................
   8203 
   8204      /* COFF symbol classifications.  */
   8205 
   8206      enum coff_symbol_classification
   8207      {
   8208        /* Global symbol.  */
   8209        COFF_SYMBOL_GLOBAL,
   8210        /* Common symbol.  */
   8211        COFF_SYMBOL_COMMON,
   8212        /* Undefined symbol.  */
   8213        COFF_SYMBOL_UNDEFINED,
   8214        /* Local symbol.  */
   8215        COFF_SYMBOL_LOCAL,
   8216        /* PE section symbol.  */
   8217        COFF_SYMBOL_PE_SECTION
   8218      };
   8219 Special entry points for gdb to swap in coff symbol table parts:
   8220      typedef struct
   8221      {
   8222        void (*_bfd_coff_swap_aux_in)
   8223          (bfd *, void *, int, int, int, int, void *);
   8224 
   8225        void (*_bfd_coff_swap_sym_in)
   8226          (bfd *, void *, void *);
   8227 
   8228        void (*_bfd_coff_swap_lineno_in)
   8229          (bfd *, void *, void *);
   8230 
   8231        unsigned int (*_bfd_coff_swap_aux_out)
   8232          (bfd *, void *, int, int, int, int, void *);
   8233 
   8234        unsigned int (*_bfd_coff_swap_sym_out)
   8235          (bfd *, void *, void *);
   8236 
   8237        unsigned int (*_bfd_coff_swap_lineno_out)
   8238          (bfd *, void *, void *);
   8239 
   8240        unsigned int (*_bfd_coff_swap_reloc_out)
   8241          (bfd *, void *, void *);
   8242 
   8243        unsigned int (*_bfd_coff_swap_filehdr_out)
   8244          (bfd *, void *, void *);
   8245 
   8246        unsigned int (*_bfd_coff_swap_aouthdr_out)
   8247          (bfd *, void *, void *);
   8248 
   8249        unsigned int (*_bfd_coff_swap_scnhdr_out)
   8250          (bfd *, void *, void *);
   8251 
   8252        unsigned int _bfd_filhsz;
   8253        unsigned int _bfd_aoutsz;
   8254        unsigned int _bfd_scnhsz;
   8255        unsigned int _bfd_symesz;
   8256        unsigned int _bfd_auxesz;
   8257        unsigned int _bfd_relsz;
   8258        unsigned int _bfd_linesz;
   8259        unsigned int _bfd_filnmlen;
   8260        bfd_boolean _bfd_coff_long_filenames;
   8261        bfd_boolean _bfd_coff_long_section_names;
   8262        unsigned int _bfd_coff_default_section_alignment_power;
   8263        bfd_boolean _bfd_coff_force_symnames_in_strings;
   8264        unsigned int _bfd_coff_debug_string_prefix_length;
   8265 
   8266        void (*_bfd_coff_swap_filehdr_in)
   8267          (bfd *, void *, void *);
   8268 
   8269        void (*_bfd_coff_swap_aouthdr_in)
   8270          (bfd *, void *, void *);
   8271 
   8272        void (*_bfd_coff_swap_scnhdr_in)
   8273          (bfd *, void *, void *);
   8274 
   8275        void (*_bfd_coff_swap_reloc_in)
   8276          (bfd *abfd, void *, void *);
   8277 
   8278        bfd_boolean (*_bfd_coff_bad_format_hook)
   8279          (bfd *, void *);
   8280 
   8281        bfd_boolean (*_bfd_coff_set_arch_mach_hook)
   8282          (bfd *, void *);
   8283 
   8284        void * (*_bfd_coff_mkobject_hook)
   8285          (bfd *, void *, void *);
   8286 
   8287        bfd_boolean (*_bfd_styp_to_sec_flags_hook)
   8288          (bfd *, void *, const char *, asection *, flagword *);
   8289 
   8290        void (*_bfd_set_alignment_hook)
   8291          (bfd *, asection *, void *);
   8292 
   8293        bfd_boolean (*_bfd_coff_slurp_symbol_table)
   8294          (bfd *);
   8295 
   8296        bfd_boolean (*_bfd_coff_symname_in_debug)
   8297          (bfd *, struct internal_syment *);
   8298 
   8299        bfd_boolean (*_bfd_coff_pointerize_aux_hook)
   8300          (bfd *, combined_entry_type *, combined_entry_type *,
   8301                  unsigned int, combined_entry_type *);
   8302 
   8303        bfd_boolean (*_bfd_coff_print_aux)
   8304          (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
   8305                  combined_entry_type *, unsigned int);
   8306 
   8307        void (*_bfd_coff_reloc16_extra_cases)
   8308          (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
   8309                 bfd_byte *, unsigned int *, unsigned int *);
   8310 
   8311        int (*_bfd_coff_reloc16_estimate)
   8312          (bfd *, asection *, arelent *, unsigned int,
   8313                  struct bfd_link_info *);
   8314 
   8315        enum coff_symbol_classification (*_bfd_coff_classify_symbol)
   8316          (bfd *, struct internal_syment *);
   8317 
   8318        bfd_boolean (*_bfd_coff_compute_section_file_positions)
   8319          (bfd *);
   8320 
   8321        bfd_boolean (*_bfd_coff_start_final_link)
   8322          (bfd *, struct bfd_link_info *);
   8323 
   8324        bfd_boolean (*_bfd_coff_relocate_section)
   8325          (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
   8326                  struct internal_reloc *, struct internal_syment *, asection **);
   8327 
   8328        reloc_howto_type *(*_bfd_coff_rtype_to_howto)
   8329          (bfd *, asection *, struct internal_reloc *,
   8330                  struct coff_link_hash_entry *, struct internal_syment *,
   8331                  bfd_vma *);
   8332 
   8333        bfd_boolean (*_bfd_coff_adjust_symndx)
   8334          (bfd *, struct bfd_link_info *, bfd *, asection *,
   8335                  struct internal_reloc *, bfd_boolean *);
   8336 
   8337        bfd_boolean (*_bfd_coff_link_add_one_symbol)
   8338          (struct bfd_link_info *, bfd *, const char *, flagword,
   8339                  asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
   8340                  struct bfd_link_hash_entry **);
   8341 
   8342        bfd_boolean (*_bfd_coff_link_output_has_begun)
   8343          (bfd *, struct coff_final_link_info *);
   8344 
   8345        bfd_boolean (*_bfd_coff_final_link_postscript)
   8346          (bfd *, struct coff_final_link_info *);
   8347 
   8348        bfd_boolean (*_bfd_coff_print_pdata)
   8349          (bfd *, void *);
   8350 
   8351      } bfd_coff_backend_data;
   8352 
   8353      #define coff_backend_info(abfd) \
   8354        ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
   8355 
   8356      #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
   8357        ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
   8358 
   8359      #define bfd_coff_swap_sym_in(a,e,i) \
   8360        ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
   8361 
   8362      #define bfd_coff_swap_lineno_in(a,e,i) \
   8363        ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
   8364 
   8365      #define bfd_coff_swap_reloc_out(abfd, i, o) \
   8366        ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
   8367 
   8368      #define bfd_coff_swap_lineno_out(abfd, i, o) \
   8369        ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
   8370 
   8371      #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
   8372        ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
   8373 
   8374      #define bfd_coff_swap_sym_out(abfd, i,o) \
   8375        ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
   8376 
   8377      #define bfd_coff_swap_scnhdr_out(abfd, i,o) \
   8378        ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
   8379 
   8380      #define bfd_coff_swap_filehdr_out(abfd, i,o) \
   8381        ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
   8382 
   8383      #define bfd_coff_swap_aouthdr_out(abfd, i,o) \
   8384        ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
   8385 
   8386      #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
   8387      #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
   8388      #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
   8389      #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
   8390      #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
   8391      #define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
   8392      #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
   8393      #define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
   8394      #define bfd_coff_long_filenames(abfd) \
   8395        (coff_backend_info (abfd)->_bfd_coff_long_filenames)
   8396      #define bfd_coff_long_section_names(abfd) \
   8397        (coff_backend_info (abfd)->_bfd_coff_long_section_names)
   8398      #define bfd_coff_default_section_alignment_power(abfd) \
   8399        (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
   8400      #define bfd_coff_swap_filehdr_in(abfd, i,o) \
   8401        ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
   8402 
   8403      #define bfd_coff_swap_aouthdr_in(abfd, i,o) \
   8404        ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
   8405 
   8406      #define bfd_coff_swap_scnhdr_in(abfd, i,o) \
   8407        ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
   8408 
   8409      #define bfd_coff_swap_reloc_in(abfd, i, o) \
   8410        ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
   8411 
   8412      #define bfd_coff_bad_format_hook(abfd, filehdr) \
   8413        ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
   8414 
   8415      #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
   8416        ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
   8417      #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
   8418        ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
   8419         (abfd, filehdr, aouthdr))
   8420 
   8421      #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
   8422        ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
   8423         (abfd, scnhdr, name, section, flags_ptr))
   8424 
   8425      #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
   8426        ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
   8427 
   8428      #define bfd_coff_slurp_symbol_table(abfd)\
   8429        ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
   8430 
   8431      #define bfd_coff_symname_in_debug(abfd, sym)\
   8432        ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
   8433 
   8434      #define bfd_coff_force_symnames_in_strings(abfd)\
   8435        (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
   8436 
   8437      #define bfd_coff_debug_string_prefix_length(abfd)\
   8438        (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
   8439 
   8440      #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
   8441        ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
   8442         (abfd, file, base, symbol, aux, indaux))
   8443 
   8444      #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
   8445                                           reloc, data, src_ptr, dst_ptr)\
   8446        ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
   8447         (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
   8448 
   8449      #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
   8450        ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
   8451         (abfd, section, reloc, shrink, link_info))
   8452 
   8453      #define bfd_coff_classify_symbol(abfd, sym)\
   8454        ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
   8455         (abfd, sym))
   8456 
   8457      #define bfd_coff_compute_section_file_positions(abfd)\
   8458        ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
   8459         (abfd))
   8460 
   8461      #define bfd_coff_start_final_link(obfd, info)\
   8462        ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
   8463         (obfd, info))
   8464      #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
   8465        ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
   8466         (obfd, info, ibfd, o, con, rel, isyms, secs))
   8467      #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
   8468        ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
   8469         (abfd, sec, rel, h, sym, addendp))
   8470      #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
   8471        ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
   8472         (obfd, info, ibfd, sec, rel, adjustedp))
   8473      #define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
   8474                                           value, string, cp, coll, hashp)\
   8475        ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
   8476         (info, abfd, name, flags, section, value, string, cp, coll, hashp))
   8477 
   8478      #define bfd_coff_link_output_has_begun(a,p) \
   8479        ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
   8480      #define bfd_coff_final_link_postscript(a,p) \
   8481        ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
   8482 
   8483      #define bfd_coff_have_print_pdata(a) \
   8484        (coff_backend_info (a)->_bfd_coff_print_pdata)
   8485      #define bfd_coff_print_pdata(a,p) \
   8486        ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p))
   8487 
   8488 3.3.2.7 Writing relocations
   8489 ...........................
   8490 
   8491 To write relocations, the back end steps though the canonical
   8492 relocation table and create an `internal_reloc'. The symbol index to
   8493 use is removed from the `offset' field in the symbol table supplied.
   8494 The address comes directly from the sum of the section base address and
   8495 the relocation offset; the type is dug directly from the howto field.
   8496 Then the `internal_reloc' is swapped into the shape of an
   8497 `external_reloc' and written out to disk.
   8498 
   8499 3.3.2.8 Reading linenumbers
   8500 ...........................
   8501 
   8502 Creating the linenumber table is done by reading in the entire coff
   8503 linenumber table, and creating another table for internal use.
   8504 
   8505    A coff linenumber table is structured so that each function is
   8506 marked as having a line number of 0. Each line within the function is
   8507 an offset from the first line in the function. The base of the line
   8508 number information for the table is stored in the symbol associated
   8509 with the function.
   8510 
   8511    Note: The PE format uses line number 0 for a flag indicating a new
   8512 source file.
   8513 
   8514    The information is copied from the external to the internal table,
   8515 and each symbol which marks a function is marked by pointing its...
   8516 
   8517    How does this work ?
   8518 
   8519 3.3.2.9 Reading relocations
   8520 ...........................
   8521 
   8522 Coff relocations are easily transformed into the internal BFD form
   8523 (`arelent').
   8524 
   8525    Reading a coff relocation table is done in the following stages:
   8526 
   8527    * Read the entire coff relocation table into memory.
   8528 
   8529    * Process each relocation in turn; first swap it from the external
   8530      to the internal form.
   8531 
   8532    * Turn the symbol referenced in the relocation's symbol index into a
   8533      pointer into the canonical symbol table.  This table is the same
   8534      as the one returned by a call to `bfd_canonicalize_symtab'. The
   8535      back end will call that routine and save the result if a
   8536      canonicalization hasn't been done.
   8537 
   8538    * The reloc index is turned into a pointer to a howto structure, in
   8539      a back end specific way. For instance, the 386 and 960 use the
   8540      `r_type' to directly produce an index into a howto table vector;
   8541      the 88k subtracts a number from the `r_type' field and creates an
   8542      addend field.
   8543 
   8544 
   8545 File: bfd.info,  Node: elf,  Next: mmo,  Prev: coff,  Up: BFD back ends
   8546 
   8547 3.4 ELF backends
   8548 ================
   8549 
   8550 BFD support for ELF formats is being worked on.  Currently, the best
   8551 supported back ends are for sparc and i386 (running svr4 or Solaris 2).
   8552 
   8553    Documentation of the internals of the support code still needs to be
   8554 written.  The code is changing quickly enough that we haven't bothered
   8555 yet.
   8556 
   8557 3.4.0.1 `bfd_elf_find_section'
   8558 ..............................
   8559 
   8560 *Synopsis*
   8561      struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
   8562    *Description*
   8563 Helper functions for GDB to locate the string tables.  Since BFD hides
   8564 string tables from callers, GDB needs to use an internal hook to find
   8565 them.  Sun's .stabstr, in particular, isn't even pointed to by the
   8566 .stab section, so ordinary mechanisms wouldn't work to find it, even if
   8567 we had some.
   8568 
   8569 
   8570 File: bfd.info,  Node: mmo,  Prev: elf,  Up: BFD back ends
   8571 
   8572 3.5 mmo backend
   8573 ===============
   8574 
   8575 The mmo object format is used exclusively together with Professor
   8576 Donald E. Knuth's educational 64-bit processor MMIX.  The simulator
   8577 `mmix' which is available at
   8578 `http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'
   8579 understands this format.  That package also includes a combined
   8580 assembler and linker called `mmixal'.  The mmo format has no advantages
   8581 feature-wise compared to e.g. ELF.  It is a simple non-relocatable
   8582 object format with no support for archives or debugging information,
   8583 except for symbol value information and line numbers (which is not yet
   8584 implemented in BFD).  See
   8585 `http://www-cs-faculty.stanford.edu/~knuth/mmix.html' for more
   8586 information about MMIX.  The ELF format is used for intermediate object
   8587 files in the BFD implementation.
   8588 
   8589 * Menu:
   8590 
   8591 * File layout::
   8592 * Symbol-table::
   8593 * mmo section mapping::
   8594 
   8595 
   8596 File: bfd.info,  Node: File layout,  Next: Symbol-table,  Prev: mmo,  Up: mmo
   8597 
   8598 3.5.1 File layout
   8599 -----------------
   8600 
   8601 The mmo file contents is not partitioned into named sections as with
   8602 e.g. ELF.  Memory areas is formed by specifying the location of the
   8603 data that follows.  Only the memory area `0x0000...00' to `0x01ff...ff'
   8604 is executable, so it is used for code (and constants) and the area
   8605 `0x2000...00' to `0x20ff...ff' is used for writable data.  *Note mmo
   8606 section mapping::.
   8607 
   8608    There is provision for specifying "special data" of 65536 different
   8609 types.  We use type 80 (decimal), arbitrarily chosen the same as the
   8610 ELF `e_machine' number for MMIX, filling it with section information
   8611 normally found in ELF objects. *Note mmo section mapping::.
   8612 
   8613    Contents is entered as 32-bit words, xor:ed over previous contents,
   8614 always zero-initialized.  A word that starts with the byte `0x98' forms
   8615 a command called a `lopcode', where the next byte distinguished between
   8616 the thirteen lopcodes.  The two remaining bytes, called the `Y' and `Z'
   8617 fields, or the `YZ' field (a 16-bit big-endian number), are used for
   8618 various purposes different for each lopcode.  As documented in
   8619 `http://www-cs-faculty.stanford.edu/~knuth/mmixal-intro.ps.gz', the
   8620 lopcodes are:
   8621 
   8622 `lop_quote'
   8623      0x98000001.  The next word is contents, regardless of whether it
   8624      starts with 0x98 or not.
   8625 
   8626 `lop_loc'
   8627      0x9801YYZZ, where `Z' is 1 or 2.  This is a location directive,
   8628      setting the location for the next data to the next 32-bit word
   8629      (for Z = 1) or 64-bit word (for Z = 2), plus Y * 2^56.  Normally
   8630      `Y' is 0 for the text segment and 2 for the data segment.
   8631 
   8632 `lop_skip'
   8633      0x9802YYZZ.  Increase the current location by `YZ' bytes.
   8634 
   8635 `lop_fixo'
   8636      0x9803YYZZ, where `Z' is 1 or 2.  Store the current location as 64
   8637      bits into the location pointed to by the next 32-bit (Z = 1) or
   8638      64-bit (Z = 2) word, plus Y * 2^56.
   8639 
   8640 `lop_fixr'
   8641      0x9804YYZZ.  `YZ' is stored into the current location plus 2 - 4 *
   8642      YZ.
   8643 
   8644 `lop_fixrx'
   8645      0x980500ZZ.  `Z' is 16 or 24.  A value `L' derived from the
   8646      following 32-bit word are used in a manner similar to `YZ' in
   8647      lop_fixr: it is xor:ed into the current location minus 4 * L.  The
   8648      first byte of the word is 0 or 1.  If it is 1, then L = (LOWEST 24
   8649      BITS OF WORD) - 2^Z, if 0, then L = (LOWEST 24 BITS OF WORD).
   8650 
   8651 `lop_file'
   8652      0x9806YYZZ.  `Y' is the file number, `Z' is count of 32-bit words.
   8653      Set the file number to `Y' and the line counter to 0.  The next Z
   8654      * 4 bytes contain the file name, padded with zeros if the count is
   8655      not a multiple of four.  The same `Y' may occur multiple times,
   8656      but `Z' must be 0 for all but the first occurrence.
   8657 
   8658 `lop_line'
   8659      0x9807YYZZ.  `YZ' is the line number.  Together with lop_file, it
   8660      forms the source location for the next 32-bit word.  Note that for
   8661      each non-lopcode 32-bit word, line numbers are assumed incremented
   8662      by one.
   8663 
   8664 `lop_spec'
   8665      0x9808YYZZ.  `YZ' is the type number.  Data until the next lopcode
   8666      other than lop_quote forms special data of type `YZ'.  *Note mmo
   8667      section mapping::.
   8668 
   8669      Other types than 80, (or type 80 with a content that does not
   8670      parse) is stored in sections named `.MMIX.spec_data.N' where N is
   8671      the `YZ'-type.  The flags for such a sections say not to allocate
   8672      or load the data.  The vma is 0.  Contents of multiple occurrences
   8673      of special data N is concatenated to the data of the previous
   8674      lop_spec Ns.  The location in data or code at which the lop_spec
   8675      occurred is lost.
   8676 
   8677 `lop_pre'
   8678      0x980901ZZ.  The first lopcode in a file.  The `Z' field forms the
   8679      length of header information in 32-bit words, where the first word
   8680      tells the time in seconds since `00:00:00 GMT Jan 1 1970'.
   8681 
   8682 `lop_post'
   8683      0x980a00ZZ.  Z > 32.  This lopcode follows after all
   8684      content-generating lopcodes in a program.  The `Z' field denotes
   8685      the value of `rG' at the beginning of the program.  The following
   8686      256 - Z big-endian 64-bit words are loaded into global registers
   8687      `$G' ... `$255'.
   8688 
   8689 `lop_stab'
   8690      0x980b0000.  The next-to-last lopcode in a program.  Must follow
   8691      immediately after the lop_post lopcode and its data.  After this
   8692      lopcode follows all symbols in a compressed format (*note
   8693      Symbol-table::).
   8694 
   8695 `lop_end'
   8696      0x980cYYZZ.  The last lopcode in a program.  It must follow the
   8697      lop_stab lopcode and its data.  The `YZ' field contains the number
   8698      of 32-bit words of symbol table information after the preceding
   8699      lop_stab lopcode.
   8700 
   8701    Note that the lopcode "fixups"; `lop_fixr', `lop_fixrx' and
   8702 `lop_fixo' are not generated by BFD, but are handled.  They are
   8703 generated by `mmixal'.
   8704 
   8705    This trivial one-label, one-instruction file:
   8706 
   8707       :Main TRAP 1,2,3
   8708 
   8709    can be represented this way in mmo:
   8710 
   8711       0x98090101 - lop_pre, one 32-bit word with timestamp.
   8712       <timestamp>
   8713       0x98010002 - lop_loc, text segment, using a 64-bit address.
   8714                    Note that mmixal does not emit this for the file above.
   8715       0x00000000 - Address, high 32 bits.
   8716       0x00000000 - Address, low 32 bits.
   8717       0x98060002 - lop_file, 2 32-bit words for file-name.
   8718       0x74657374 - "test"
   8719       0x2e730000 - ".s\0\0"
   8720       0x98070001 - lop_line, line 1.
   8721       0x00010203 - TRAP 1,2,3
   8722       0x980a00ff - lop_post, setting $255 to 0.
   8723       0x00000000
   8724       0x00000000
   8725       0x980b0000 - lop_stab for ":Main" = 0, serial 1.
   8726       0x203a4040   *Note Symbol-table::.
   8727       0x10404020
   8728       0x4d206120
   8729       0x69016e00
   8730       0x81000000
   8731       0x980c0005 - lop_end; symbol table contained five 32-bit words.
   8732 
   8733 
   8734 File: bfd.info,  Node: Symbol-table,  Next: mmo section mapping,  Prev: File layout,  Up: mmo
   8735 
   8736 3.5.2 Symbol table format
   8737 -------------------------
   8738 
   8739 From mmixal.w (or really, the generated mmixal.tex) in
   8740 `http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'):
   8741 "Symbols are stored and retrieved by means of a `ternary search trie',
   8742 following ideas of Bentley and Sedgewick. (See ACM-SIAM Symp. on
   8743 Discrete Algorithms `8' (1997), 360-369; R.Sedgewick, `Algorithms in C'
   8744 (Reading, Mass.  Addison-Wesley, 1998), `15.4'.)  Each trie node stores
   8745 a character, and there are branches to subtries for the cases where a
   8746 given character is less than, equal to, or greater than the character
   8747 in the trie.  There also is a pointer to a symbol table entry if a
   8748 symbol ends at the current node."
   8749 
   8750    So it's a tree encoded as a stream of bytes.  The stream of bytes
   8751 acts on a single virtual global symbol, adding and removing characters
   8752 and signalling complete symbol points.  Here, we read the stream and
   8753 create symbols at the completion points.
   8754 
   8755    First, there's a control byte `m'.  If any of the listed bits in `m'
   8756 is nonzero, we execute what stands at the right, in the listed order:
   8757 
   8758       (MMO3_LEFT)
   8759       0x40 - Traverse left trie.
   8760              (Read a new command byte and recurse.)
   8761 
   8762       (MMO3_SYMBITS)
   8763       0x2f - Read the next byte as a character and store it in the
   8764              current character position; increment character position.
   8765              Test the bits of `m':
   8766 
   8767              (MMO3_WCHAR)
   8768              0x80 - The character is 16-bit (so read another byte,
   8769                     merge into current character.
   8770 
   8771              (MMO3_TYPEBITS)
   8772              0xf  - We have a complete symbol; parse the type, value
   8773                     and serial number and do what should be done
   8774                     with a symbol.  The type and length information
   8775                     is in j = (m & 0xf).
   8776 
   8777                     (MMO3_REGQUAL_BITS)
   8778                     j == 0xf: A register variable.  The following
   8779                               byte tells which register.
   8780                     j <= 8:   An absolute symbol.  Read j bytes as the
   8781                               big-endian number the symbol equals.
   8782                               A j = 2 with two zero bytes denotes an
   8783                               unknown symbol.
   8784                     j > 8:    As with j <= 8, but add (0x20 << 56)
   8785                               to the value in the following j - 8
   8786                               bytes.
   8787 
   8788                     Then comes the serial number, as a variant of
   8789                     uleb128, but better named ubeb128:
   8790                     Read bytes and shift the previous value left 7
   8791                     (multiply by 128).  Add in the new byte, repeat
   8792                     until a byte has bit 7 set.  The serial number
   8793                     is the computed value minus 128.
   8794 
   8795              (MMO3_MIDDLE)
   8796              0x20 - Traverse middle trie.  (Read a new command byte
   8797                     and recurse.)  Decrement character position.
   8798 
   8799       (MMO3_RIGHT)
   8800       0x10 - Traverse right trie.  (Read a new command byte and
   8801              recurse.)
   8802 
   8803    Let's look again at the `lop_stab' for the trivial file (*note File
   8804 layout::).
   8805 
   8806       0x980b0000 - lop_stab for ":Main" = 0, serial 1.
   8807       0x203a4040
   8808       0x10404020
   8809       0x4d206120
   8810       0x69016e00
   8811       0x81000000
   8812 
   8813    This forms the trivial trie (note that the path between ":" and "M"
   8814 is redundant):
   8815 
   8816       203a     ":"
   8817       40       /
   8818       40      /
   8819       10      \
   8820       40      /
   8821       40     /
   8822       204d  "M"
   8823       2061  "a"
   8824       2069  "i"
   8825       016e  "n" is the last character in a full symbol, and
   8826             with a value represented in one byte.
   8827       00    The value is 0.
   8828       81    The serial number is 1.
   8829 
   8830 
   8831 File: bfd.info,  Node: mmo section mapping,  Prev: Symbol-table,  Up: mmo
   8832 
   8833 3.5.3 mmo section mapping
   8834 -------------------------
   8835 
   8836 The implementation in BFD uses special data type 80 (decimal) to
   8837 encapsulate and describe named sections, containing e.g. debug
   8838 information.  If needed, any datum in the encapsulation will be quoted
   8839 using lop_quote.  First comes a 32-bit word holding the number of
   8840 32-bit words containing the zero-terminated zero-padded segment name.
   8841 After the name there's a 32-bit word holding flags describing the
   8842 section type.  Then comes a 64-bit big-endian word with the section
   8843 length (in bytes), then another with the section start address.
   8844 Depending on the type of section, the contents might follow,
   8845 zero-padded to 32-bit boundary.  For a loadable section (such as data
   8846 or code), the contents might follow at some later point, not
   8847 necessarily immediately, as a lop_loc with the same start address as in
   8848 the section description, followed by the contents.  This in effect
   8849 forms a descriptor that must be emitted before the actual contents.
   8850 Sections described this way must not overlap.
   8851 
   8852    For areas that don't have such descriptors, synthetic sections are
   8853 formed by BFD.  Consecutive contents in the two memory areas
   8854 `0x0000...00' to `0x01ff...ff' and `0x2000...00' to `0x20ff...ff' are
   8855 entered in sections named `.text' and `.data' respectively.  If an area
   8856 is not otherwise described, but would together with a neighboring lower
   8857 area be less than `0x40000000' bytes long, it is joined with the lower
   8858 area and the gap is zero-filled.  For other cases, a new section is
   8859 formed, named `.MMIX.sec.N'.  Here, N is a number, a running count
   8860 through the mmo file, starting at 0.
   8861 
   8862    A loadable section specified as:
   8863 
   8864       .section secname,"ax"
   8865       TETRA 1,2,3,4,-1,-2009
   8866       BYTE 80
   8867 
   8868    and linked to address `0x4', is represented by the sequence:
   8869 
   8870       0x98080050 - lop_spec 80
   8871       0x00000002 - two 32-bit words for the section name
   8872       0x7365636e - "secn"
   8873       0x616d6500 - "ame\0"
   8874       0x00000033 - flags CODE, READONLY, LOAD, ALLOC
   8875       0x00000000 - high 32 bits of section length
   8876       0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits
   8877       0x00000000 - high 32 bits of section address
   8878       0x00000004 - section address is 4
   8879       0x98010002 - 64 bits with address of following data
   8880       0x00000000 - high 32 bits of address
   8881       0x00000004 - low 32 bits: data starts at address 4
   8882       0x00000001 - 1
   8883       0x00000002 - 2
   8884       0x00000003 - 3
   8885       0x00000004 - 4
   8886       0xffffffff - -1
   8887       0xfffff827 - -2009
   8888       0x50000000 - 80 as a byte, padded with zeros.
   8889 
   8890    Note that the lop_spec wrapping does not include the section
   8891 contents.  Compare this to a non-loaded section specified as:
   8892 
   8893       .section thirdsec
   8894       TETRA 200001,100002
   8895       BYTE 38,40
   8896 
   8897    This, when linked to address `0x200000000000001c', is represented by:
   8898 
   8899       0x98080050 - lop_spec 80
   8900       0x00000002 - two 32-bit words for the section name
   8901       0x7365636e - "thir"
   8902       0x616d6500 - "dsec"
   8903       0x00000010 - flag READONLY
   8904       0x00000000 - high 32 bits of section length
   8905       0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits
   8906       0x20000000 - high 32 bits of address
   8907       0x0000001c - low 32 bits of address 0x200000000000001c
   8908       0x00030d41 - 200001
   8909       0x000186a2 - 100002
   8910       0x26280000 - 38, 40 as bytes, padded with zeros
   8911 
   8912    For the latter example, the section contents must not be loaded in
   8913 memory, and is therefore specified as part of the special data.  The
   8914 address is usually unimportant but might provide information for e.g.
   8915 the DWARF 2 debugging format.
   8916 
   8917 
   8918 File: bfd.info,  Node: GNU Free Documentation License,  Next: BFD Index,  Prev: BFD back ends,  Up: Top
   8919 
   8920 Appendix A GNU Free Documentation License
   8921 *****************************************
   8922 
   8923                         Version 1.1, March 2000
   8924 
   8925      Copyright (C) 2000, 2003 Free Software Foundation, Inc.
   8926      51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
   8927 
   8928      Everyone is permitted to copy and distribute verbatim copies
   8929      of this license document, but changing it is not allowed.
   8930 
   8931 
   8932   0. PREAMBLE
   8933 
   8934      The purpose of this License is to make a manual, textbook, or other
   8935      written document "free" in the sense of freedom: to assure everyone
   8936      the effective freedom to copy and redistribute it, with or without
   8937      modifying it, either commercially or noncommercially.  Secondarily,
   8938      this License preserves for the author and publisher a way to get
   8939      credit for their work, while not being considered responsible for
   8940      modifications made by others.
   8941 
   8942      This License is a kind of "copyleft", which means that derivative
   8943      works of the document must themselves be free in the same sense.
   8944      It complements the GNU General Public License, which is a copyleft
   8945      license designed for free software.
   8946 
   8947      We have designed this License in order to use it for manuals for
   8948      free software, because free software needs free documentation: a
   8949      free program should come with manuals providing the same freedoms
   8950      that the software does.  But this License is not limited to
   8951      software manuals; it can be used for any textual work, regardless
   8952      of subject matter or whether it is published as a printed book.
   8953      We recommend this License principally for works whose purpose is
   8954      instruction or reference.
   8955 
   8956 
   8957   1. APPLICABILITY AND DEFINITIONS
   8958 
   8959      This License applies to any manual or other work that contains a
   8960      notice placed by the copyright holder saying it can be distributed
   8961      under the terms of this License.  The "Document", below, refers to
   8962      any such manual or work.  Any member of the public is a licensee,
   8963      and is addressed as "you."
   8964 
   8965      A "Modified Version" of the Document means any work containing the
   8966      Document or a portion of it, either copied verbatim, or with
   8967      modifications and/or translated into another language.
   8968 
   8969      A "Secondary Section" is a named appendix or a front-matter
   8970      section of the Document that deals exclusively with the
   8971      relationship of the publishers or authors of the Document to the
   8972      Document's overall subject (or to related matters) and contains
   8973      nothing that could fall directly within that overall subject.
   8974      (For example, if the Document is in part a textbook of
   8975      mathematics, a Secondary Section may not explain any mathematics.)
   8976      The relationship could be a matter of historical connection with
   8977      the subject or with related matters, or of legal, commercial,
   8978      philosophical, ethical or political position regarding them.
   8979 
   8980      The "Invariant Sections" are certain Secondary Sections whose
   8981      titles are designated, as being those of Invariant Sections, in
   8982      the notice that says that the Document is released under this
   8983      License.
   8984 
   8985      The "Cover Texts" are certain short passages of text that are
   8986      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
   8987      that says that the Document is released under this License.
   8988 
   8989      A "Transparent" copy of the Document means a machine-readable copy,
   8990      represented in a format whose specification is available to the
   8991      general public, whose contents can be viewed and edited directly
   8992      and straightforwardly with generic text editors or (for images
   8993      composed of pixels) generic paint programs or (for drawings) some
   8994      widely available drawing editor, and that is suitable for input to
   8995      text formatters or for automatic translation to a variety of
   8996      formats suitable for input to text formatters.  A copy made in an
   8997      otherwise Transparent file format whose markup has been designed
   8998      to thwart or discourage subsequent modification by readers is not
   8999      Transparent.  A copy that is not "Transparent" is called "Opaque."
   9000 
   9001      Examples of suitable formats for Transparent copies include plain
   9002      ASCII without markup, Texinfo input format, LaTeX input format,
   9003      SGML or XML using a publicly available DTD, and
   9004      standard-conforming simple HTML designed for human modification.
   9005      Opaque formats include PostScript, PDF, proprietary formats that
   9006      can be read and edited only by proprietary word processors, SGML
   9007      or XML for which the DTD and/or processing tools are not generally
   9008      available, and the machine-generated HTML produced by some word
   9009      processors for output purposes only.
   9010 
   9011      The "Title Page" means, for a printed book, the title page itself,
   9012      plus such following pages as are needed to hold, legibly, the
   9013      material this License requires to appear in the title page.  For
   9014      works in formats which do not have any title page as such, "Title
   9015      Page" means the text near the most prominent appearance of the
   9016      work's title, preceding the beginning of the body of the text.
   9017 
   9018   2. VERBATIM COPYING
   9019 
   9020      You may copy and distribute the Document in any medium, either
   9021      commercially or noncommercially, provided that this License, the
   9022      copyright notices, and the license notice saying this License
   9023      applies to the Document are reproduced in all copies, and that you
   9024      add no other conditions whatsoever to those of this License.  You
   9025      may not use technical measures to obstruct or control the reading
   9026      or further copying of the copies you make or distribute.  However,
   9027      you may accept compensation in exchange for copies.  If you
   9028      distribute a large enough number of copies you must also follow
   9029      the conditions in section 3.
   9030 
   9031      You may also lend copies, under the same conditions stated above,
   9032      and you may publicly display copies.
   9033 
   9034   3. COPYING IN QUANTITY
   9035 
   9036      If you publish printed copies of the Document numbering more than
   9037      100, and the Document's license notice requires Cover Texts, you
   9038      must enclose the copies in covers that carry, clearly and legibly,
   9039      all these Cover Texts: Front-Cover Texts on the front cover, and
   9040      Back-Cover Texts on the back cover.  Both covers must also clearly
   9041      and legibly identify you as the publisher of these copies.  The
   9042      front cover must present the full title with all words of the
   9043      title equally prominent and visible.  You may add other material
   9044      on the covers in addition.  Copying with changes limited to the
   9045      covers, as long as they preserve the title of the Document and
   9046      satisfy these conditions, can be treated as verbatim copying in
   9047      other respects.
   9048 
   9049      If the required texts for either cover are too voluminous to fit
   9050      legibly, you should put the first ones listed (as many as fit
   9051      reasonably) on the actual cover, and continue the rest onto
   9052      adjacent pages.
   9053 
   9054      If you publish or distribute Opaque copies of the Document
   9055      numbering more than 100, you must either include a
   9056      machine-readable Transparent copy along with each Opaque copy, or
   9057      state in or with each Opaque copy a publicly-accessible
   9058      computer-network location containing a complete Transparent copy
   9059      of the Document, free of added material, which the general
   9060      network-using public has access to download anonymously at no
   9061      charge using public-standard network protocols.  If you use the
   9062      latter option, you must take reasonably prudent steps, when you
   9063      begin distribution of Opaque copies in quantity, to ensure that
   9064      this Transparent copy will remain thus accessible at the stated
   9065      location until at least one year after the last time you
   9066      distribute an Opaque copy (directly or through your agents or
   9067      retailers) of that edition to the public.
   9068 
   9069      It is requested, but not required, that you contact the authors of
   9070      the Document well before redistributing any large number of
   9071      copies, to give them a chance to provide you with an updated
   9072      version of the Document.
   9073 
   9074   4. MODIFICATIONS
   9075 
   9076      You may copy and distribute a Modified Version of the Document
   9077      under the conditions of sections 2 and 3 above, provided that you
   9078      release the Modified Version under precisely this License, with
   9079      the Modified Version filling the role of the Document, thus
   9080      licensing distribution and modification of the Modified Version to
   9081      whoever possesses a copy of it.  In addition, you must do these
   9082      things in the Modified Version:
   9083 
   9084      A. Use in the Title Page (and on the covers, if any) a title
   9085      distinct    from that of the Document, and from those of previous
   9086      versions    (which should, if there were any, be listed in the
   9087      History section    of the Document).  You may use the same title
   9088      as a previous version    if the original publisher of that version
   9089      gives permission.
   9090      B. List on the Title Page, as authors, one or more persons or
   9091      entities    responsible for authorship of the modifications in the
   9092      Modified    Version, together with at least five of the principal
   9093      authors of the    Document (all of its principal authors, if it
   9094      has less than five).
   9095      C. State on the Title page the name of the publisher of the
   9096      Modified Version, as the publisher.
   9097      D. Preserve all the copyright notices of the Document.
   9098      E. Add an appropriate copyright notice for your modifications
   9099      adjacent to the other copyright notices.
   9100      F. Include, immediately after the copyright notices, a license
   9101      notice    giving the public permission to use the Modified Version
   9102      under the    terms of this License, in the form shown in the
   9103      Addendum below.
   9104      G. Preserve in that license notice the full lists of Invariant
   9105      Sections    and required Cover Texts given in the Document's
   9106      license notice.
   9107      H. Include an unaltered copy of this License.
   9108      I. Preserve the section entitled "History", and its title, and add
   9109      to    it an item stating at least the title, year, new authors, and
   9110        publisher of the Modified Version as given on the Title Page.  If
   9111        there is no section entitled "History" in the Document, create
   9112      one    stating the title, year, authors, and publisher of the
   9113      Document as    given on its Title Page, then add an item
   9114      describing the Modified    Version as stated in the previous
   9115      sentence.
   9116      J. Preserve the network location, if any, given in the Document for
   9117        public access to a Transparent copy of the Document, and likewise
   9118        the network locations given in the Document for previous versions
   9119        it was based on.  These may be placed in the "History" section.
   9120        You may omit a network location for a work that was published at
   9121        least four years before the Document itself, or if the original
   9122       publisher of the version it refers to gives permission.
   9123      K. In any section entitled "Acknowledgements" or "Dedications",
   9124      preserve the section's title, and preserve in the section all the
   9125       substance and tone of each of the contributor acknowledgements
   9126      and/or dedications given therein.
   9127      L. Preserve all the Invariant Sections of the Document,
   9128      unaltered in their text and in their titles.  Section numbers
   9129      or the equivalent are not considered part of the section titles.
   9130      M. Delete any section entitled "Endorsements."  Such a section
   9131      may not be included in the Modified Version.
   9132      N. Do not retitle any existing section as "Endorsements"    or to
   9133      conflict in title with any Invariant Section.
   9134 
   9135      If the Modified Version includes new front-matter sections or
   9136      appendices that qualify as Secondary Sections and contain no
   9137      material copied from the Document, you may at your option
   9138      designate some or all of these sections as invariant.  To do this,
   9139      add their titles to the list of Invariant Sections in the Modified
   9140      Version's license notice.  These titles must be distinct from any
   9141      other section titles.
   9142 
   9143      You may add a section entitled "Endorsements", provided it contains
   9144      nothing but endorsements of your Modified Version by various
   9145      parties-for example, statements of peer review or that the text has
   9146      been approved by an organization as the authoritative definition
   9147      of a standard.
   9148 
   9149      You may add a passage of up to five words as a Front-Cover Text,
   9150      and a passage of up to 25 words as a Back-Cover Text, to the end
   9151      of the list of Cover Texts in the Modified Version.  Only one
   9152      passage of Front-Cover Text and one of Back-Cover Text may be
   9153      added by (or through arrangements made by) any one entity.  If the
   9154      Document already includes a cover text for the same cover,
   9155      previously added by you or by arrangement made by the same entity
   9156      you are acting on behalf of, you may not add another; but you may
   9157      replace the old one, on explicit permission from the previous
   9158      publisher that added the old one.
   9159 
   9160      The author(s) and publisher(s) of the Document do not by this
   9161      License give permission to use their names for publicity for or to
   9162      assert or imply endorsement of any Modified Version.
   9163 
   9164   5. COMBINING DOCUMENTS
   9165 
   9166      You may combine the Document with other documents released under
   9167      this License, under the terms defined in section 4 above for
   9168      modified versions, provided that you include in the combination
   9169      all of the Invariant Sections of all of the original documents,
   9170      unmodified, and list them all as Invariant Sections of your
   9171      combined work in its license notice.
   9172 
   9173      The combined work need only contain one copy of this License, and
   9174      multiple identical Invariant Sections may be replaced with a single
   9175      copy.  If there are multiple Invariant Sections with the same name
   9176      but different contents, make the title of each such section unique
   9177      by adding at the end of it, in parentheses, the name of the
   9178      original author or publisher of that section if known, or else a
   9179      unique number.  Make the same adjustment to the section titles in
   9180      the list of Invariant Sections in the license notice of the
   9181      combined work.
   9182 
   9183      In the combination, you must combine any sections entitled
   9184      "History" in the various original documents, forming one section
   9185      entitled "History"; likewise combine any sections entitled
   9186      "Acknowledgements", and any sections entitled "Dedications."  You
   9187      must delete all sections entitled "Endorsements."
   9188 
   9189   6. COLLECTIONS OF DOCUMENTS
   9190 
   9191      You may make a collection consisting of the Document and other
   9192      documents released under this License, and replace the individual
   9193      copies of this License in the various documents with a single copy
   9194      that is included in the collection, provided that you follow the
   9195      rules of this License for verbatim copying of each of the
   9196      documents in all other respects.
   9197 
   9198      You may extract a single document from such a collection, and
   9199      distribute it individually under this License, provided you insert
   9200      a copy of this License into the extracted document, and follow
   9201      this License in all other respects regarding verbatim copying of
   9202      that document.
   9203 
   9204   7. AGGREGATION WITH INDEPENDENT WORKS
   9205 
   9206      A compilation of the Document or its derivatives with other
   9207      separate and independent documents or works, in or on a volume of
   9208      a storage or distribution medium, does not as a whole count as a
   9209      Modified Version of the Document, provided no compilation
   9210      copyright is claimed for the compilation.  Such a compilation is
   9211      called an "aggregate", and this License does not apply to the
   9212      other self-contained works thus compiled with the Document, on
   9213      account of their being thus compiled, if they are not themselves
   9214      derivative works of the Document.
   9215 
   9216      If the Cover Text requirement of section 3 is applicable to these
   9217      copies of the Document, then if the Document is less than one
   9218      quarter of the entire aggregate, the Document's Cover Texts may be
   9219      placed on covers that surround only the Document within the
   9220      aggregate.  Otherwise they must appear on covers around the whole
   9221      aggregate.
   9222 
   9223   8. TRANSLATION
   9224 
   9225      Translation is considered a kind of modification, so you may
   9226      distribute translations of the Document under the terms of section
   9227      4.  Replacing Invariant Sections with translations requires special
   9228      permission from their copyright holders, but you may include
   9229      translations of some or all Invariant Sections in addition to the
   9230      original versions of these Invariant Sections.  You may include a
   9231      translation of this License provided that you also include the
   9232      original English version of this License.  In case of a
   9233      disagreement between the translation and the original English
   9234      version of this License, the original English version will prevail.
   9235 
   9236   9. TERMINATION
   9237 
   9238      You may not copy, modify, sublicense, or distribute the Document
   9239      except as expressly provided for under this License.  Any other
   9240      attempt to copy, modify, sublicense or distribute the Document is
   9241      void, and will automatically terminate your rights under this
   9242      License.  However, parties who have received copies, or rights,
   9243      from you under this License will not have their licenses
   9244      terminated so long as such parties remain in full compliance.
   9245 
   9246  10. FUTURE REVISIONS OF THIS LICENSE
   9247 
   9248      The Free Software Foundation may publish new, revised versions of
   9249      the GNU Free Documentation License from time to time.  Such new
   9250      versions will be similar in spirit to the present version, but may
   9251      differ in detail to address new problems or concerns.  See
   9252      http://www.gnu.org/copyleft/.
   9253 
   9254      Each version of the License is given a distinguishing version
   9255      number.  If the Document specifies that a particular numbered
   9256      version of this License "or any later version" applies to it, you
   9257      have the option of following the terms and conditions either of
   9258      that specified version or of any later version that has been
   9259      published (not as a draft) by the Free Software Foundation.  If
   9260      the Document does not specify a version number of this License,
   9261      you may choose any version ever published (not as a draft) by the
   9262      Free Software Foundation.
   9263 
   9264 
   9265 ADDENDUM: How to use this License for your documents
   9266 ====================================================
   9267 
   9268 To use this License in a document you have written, include a copy of
   9269 the License in the document and put the following copyright and license
   9270 notices just after the title page:
   9271 
   9272      Copyright (C)  YEAR  YOUR NAME.
   9273      Permission is granted to copy, distribute and/or modify this document
   9274      under the terms of the GNU Free Documentation License, Version 1.1
   9275      or any later version published by the Free Software Foundation;
   9276      with the Invariant Sections being LIST THEIR TITLES, with the
   9277      Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
   9278      A copy of the license is included in the section entitled "GNU
   9279      Free Documentation License."
   9280 
   9281    If you have no Invariant Sections, write "with no Invariant Sections"
   9282 instead of saying which ones are invariant.  If you have no Front-Cover
   9283 Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
   9284 LIST"; likewise for Back-Cover Texts.
   9285 
   9286    If your document contains nontrivial examples of program code, we
   9287 recommend releasing these examples in parallel under your choice of
   9288 free software license, such as the GNU General Public License, to
   9289 permit their use in free software.
   9290 
   9291 
   9292 File: bfd.info,  Node: BFD Index,  Prev: GNU Free Documentation License,  Up: Top
   9293 
   9294 BFD Index
   9295 *********
   9296 
   9297 [index]
   9298 * Menu:
   9299 
   9300 * _bfd_final_link_relocate:              Relocating the section contents.
   9301                                                              (line   22)
   9302 * _bfd_generic_link_add_archive_symbols: Adding symbols from an archive.
   9303                                                              (line   12)
   9304 * _bfd_generic_link_add_one_symbol:      Adding symbols from an object file.
   9305                                                              (line   19)
   9306 * _bfd_generic_make_empty_symbol:        symbol handling functions.
   9307                                                              (line   92)
   9308 * _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table.
   9309                                                              (line    6)
   9310 * _bfd_link_final_link in target vector: Performing the Final Link.
   9311                                                              (line    6)
   9312 * _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table.
   9313                                                              (line    6)
   9314 * _bfd_relocate_contents:                Relocating the section contents.
   9315                                                              (line   22)
   9316 * aout_SIZE_machine_type:                aout.               (line  147)
   9317 * aout_SIZE_mkobject:                    aout.               (line  139)
   9318 * aout_SIZE_new_section_hook:            aout.               (line  177)
   9319 * aout_SIZE_set_arch_mach:               aout.               (line  164)
   9320 * aout_SIZE_some_aout_object_p:          aout.               (line  125)
   9321 * aout_SIZE_swap_exec_header_in:         aout.               (line  101)
   9322 * aout_SIZE_swap_exec_header_out:        aout.               (line  113)
   9323 * arelent_chain:                         typedef arelent.    (line  339)
   9324 * BFD:                                   Overview.           (line    6)
   9325 * BFD canonical format:                  Canonical format.   (line   11)
   9326 * bfd_alloc:                             Opening and Closing.
   9327                                                              (line  210)
   9328 * bfd_alloc2:                            Opening and Closing.
   9329                                                              (line  219)
   9330 * bfd_alt_mach_code:                     BFD front end.      (line  681)
   9331 * bfd_arch_bits_per_address:             Architectures.      (line  501)
   9332 * bfd_arch_bits_per_byte:                Architectures.      (line  493)
   9333 * bfd_arch_get_compatible:               Architectures.      (line  436)
   9334 * bfd_arch_list:                         Architectures.      (line  427)
   9335 * bfd_arch_mach_octets_per_byte:         Architectures.      (line  570)
   9336 * BFD_ARELOC_BFIN_ADD:                   howto manager.      (line  966)
   9337 * BFD_ARELOC_BFIN_ADDR:                  howto manager.      (line 1017)
   9338 * BFD_ARELOC_BFIN_AND:                   howto manager.      (line  987)
   9339 * BFD_ARELOC_BFIN_COMP:                  howto manager.      (line 1008)
   9340 * BFD_ARELOC_BFIN_CONST:                 howto manager.      (line  963)
   9341 * BFD_ARELOC_BFIN_DIV:                   howto manager.      (line  975)
   9342 * BFD_ARELOC_BFIN_HWPAGE:                howto manager.      (line 1014)
   9343 * BFD_ARELOC_BFIN_LAND:                  howto manager.      (line  996)
   9344 * BFD_ARELOC_BFIN_LEN:                   howto manager.      (line 1002)
   9345 * BFD_ARELOC_BFIN_LOR:                   howto manager.      (line  999)
   9346 * BFD_ARELOC_BFIN_LSHIFT:                howto manager.      (line  981)
   9347 * BFD_ARELOC_BFIN_MOD:                   howto manager.      (line  978)
   9348 * BFD_ARELOC_BFIN_MULT:                  howto manager.      (line  972)
   9349 * BFD_ARELOC_BFIN_NEG:                   howto manager.      (line 1005)
   9350 * BFD_ARELOC_BFIN_OR:                    howto manager.      (line  990)
   9351 * BFD_ARELOC_BFIN_PAGE:                  howto manager.      (line 1011)
   9352 * BFD_ARELOC_BFIN_PUSH:                  howto manager.      (line  960)
   9353 * BFD_ARELOC_BFIN_RSHIFT:                howto manager.      (line  984)
   9354 * BFD_ARELOC_BFIN_SUB:                   howto manager.      (line  969)
   9355 * BFD_ARELOC_BFIN_XOR:                   howto manager.      (line  993)
   9356 * bfd_cache_close:                       File Caching.       (line   26)
   9357 * bfd_cache_close_all:                   File Caching.       (line   39)
   9358 * bfd_cache_init:                        File Caching.       (line   18)
   9359 * bfd_calc_gnu_debuglink_crc32:          Opening and Closing.
   9360                                                              (line  246)
   9361 * bfd_canonicalize_reloc:                BFD front end.      (line  400)
   9362 * bfd_canonicalize_symtab:               symbol handling functions.
   9363                                                              (line   50)
   9364 * bfd_check_format:                      Formats.            (line   21)
   9365 * bfd_check_format_matches:              Formats.            (line   52)
   9366 * bfd_check_overflow:                    typedef arelent.    (line  351)
   9367 * bfd_close:                             Opening and Closing.
   9368                                                              (line  135)
   9369 * bfd_close_all_done:                    Opening and Closing.
   9370                                                              (line  153)
   9371 * bfd_coff_backend_data:                 coff.               (line  246)
   9372 * bfd_copy_private_bfd_data:             BFD front end.      (line  539)
   9373 * bfd_copy_private_header_data:          BFD front end.      (line  521)
   9374 * bfd_copy_private_section_data:         section prototypes. (line  255)
   9375 * bfd_copy_private_symbol_data:          symbol handling functions.
   9376                                                              (line  140)
   9377 * bfd_core_file_failing_command:         Core Files.         (line   12)
   9378 * bfd_core_file_failing_signal:          Core Files.         (line   21)
   9379 * bfd_create:                            Opening and Closing.
   9380                                                              (line  172)
   9381 * bfd_create_gnu_debuglink_section:      Opening and Closing.
   9382                                                              (line  312)
   9383 * bfd_decode_symclass:                   symbol handling functions.
   9384                                                              (line  111)
   9385 * bfd_default_arch_struct:               Architectures.      (line  448)
   9386 * bfd_default_compatible:                Architectures.      (line  510)
   9387 * bfd_default_reloc_type_lookup:         howto manager.      (line 2115)
   9388 * bfd_default_scan:                      Architectures.      (line  519)
   9389 * bfd_default_set_arch_mach:             Architectures.      (line  466)
   9390 * bfd_demangle:                          BFD front end.      (line  779)
   9391 * bfd_elf_find_section:                  elf.                (line   13)
   9392 * bfd_emul_get_commonpagesize:           BFD front end.      (line  759)
   9393 * bfd_emul_get_maxpagesize:              BFD front end.      (line  739)
   9394 * bfd_emul_set_commonpagesize:           BFD front end.      (line  770)
   9395 * bfd_emul_set_maxpagesize:              BFD front end.      (line  750)
   9396 * bfd_errmsg:                            BFD front end.      (line  325)
   9397 * bfd_fdopenr:                           Opening and Closing.
   9398                                                              (line   46)
   9399 * bfd_fill_in_gnu_debuglink_section:     Opening and Closing.
   9400                                                              (line  326)
   9401 * bfd_find_target:                       bfd_target.         (line  439)
   9402 * bfd_follow_gnu_debuglink:              Opening and Closing.
   9403                                                              (line  291)
   9404 * bfd_fopen:                             Opening and Closing.
   9405                                                              (line    9)
   9406 * bfd_format_string:                     Formats.            (line   79)
   9407 * bfd_generic_discard_group:             section prototypes. (line  281)
   9408 * bfd_generic_gc_sections:               howto manager.      (line 2146)
   9409 * bfd_generic_get_relocated_section_contents: howto manager. (line 2166)
   9410 * bfd_generic_is_group_section:          section prototypes. (line  273)
   9411 * bfd_generic_merge_sections:            howto manager.      (line 2156)
   9412 * bfd_generic_relax_section:             howto manager.      (line 2133)
   9413 * bfd_get_arch:                          Architectures.      (line  477)
   9414 * bfd_get_arch_info:                     Architectures.      (line  529)
   9415 * bfd_get_arch_size:                     BFD front end.      (line  444)
   9416 * bfd_get_error:                         BFD front end.      (line  306)
   9417 * bfd_get_error_handler:                 BFD front end.      (line  376)
   9418 * bfd_get_gp_size:                       BFD front end.      (line  485)
   9419 * bfd_get_mach:                          Architectures.      (line  485)
   9420 * bfd_get_mtime:                         BFD front end.      (line  820)
   9421 * bfd_get_next_mapent:                   Archives.           (line   52)
   9422 * bfd_get_reloc_code_name:               howto manager.      (line 2124)
   9423 * bfd_get_reloc_size:                    typedef arelent.    (line  330)
   9424 * bfd_get_reloc_upper_bound:             BFD front end.      (line  390)
   9425 * bfd_get_section_by_name:               section prototypes. (line   17)
   9426 * bfd_get_section_by_name_if:            section prototypes. (line   31)
   9427 * bfd_get_section_contents:              section prototypes. (line  228)
   9428 * bfd_get_sign_extend_vma:               BFD front end.      (line  457)
   9429 * bfd_get_size <1>:                      Internal.           (line   25)
   9430 * bfd_get_size:                          BFD front end.      (line  829)
   9431 * bfd_get_symtab_upper_bound:            symbol handling functions.
   9432                                                              (line    6)
   9433 * bfd_get_unique_section_name:           section prototypes. (line   50)
   9434 * bfd_h_put_size:                        Internal.           (line   97)
   9435 * bfd_hash_allocate:                     Creating and Freeing a Hash Table.
   9436                                                              (line   17)
   9437 * bfd_hash_lookup:                       Looking Up or Entering a String.
   9438                                                              (line    6)
   9439 * bfd_hash_newfunc:                      Creating and Freeing a Hash Table.
   9440                                                              (line   12)
   9441 * bfd_hash_set_default_size:             Creating and Freeing a Hash Table.
   9442                                                              (line   25)
   9443 * bfd_hash_table_free:                   Creating and Freeing a Hash Table.
   9444                                                              (line   21)
   9445 * bfd_hash_table_init:                   Creating and Freeing a Hash Table.
   9446                                                              (line    6)
   9447 * bfd_hash_table_init_n:                 Creating and Freeing a Hash Table.
   9448                                                              (line    6)
   9449 * bfd_hash_traverse:                     Traversing a Hash Table.
   9450                                                              (line    6)
   9451 * bfd_init:                              Initialization.     (line   11)
   9452 * bfd_install_relocation:                typedef arelent.    (line  392)
   9453 * bfd_is_local_label:                    symbol handling functions.
   9454                                                              (line   17)
   9455 * bfd_is_local_label_name:               symbol handling functions.
   9456                                                              (line   26)
   9457 * bfd_is_target_special_symbol:          symbol handling functions.
   9458                                                              (line   38)
   9459 * bfd_is_undefined_symclass:             symbol handling functions.
   9460                                                              (line  120)
   9461 * bfd_link_split_section:                Writing the symbol table.
   9462                                                              (line   44)
   9463 * bfd_log2:                              Internal.           (line  164)
   9464 * bfd_lookup_arch:                       Architectures.      (line  537)
   9465 * bfd_make_debug_symbol:                 symbol handling functions.
   9466                                                              (line  102)
   9467 * bfd_make_empty_symbol:                 symbol handling functions.
   9468                                                              (line   78)
   9469 * bfd_make_readable:                     Opening and Closing.
   9470                                                              (line  196)
   9471 * bfd_make_section:                      section prototypes. (line  129)
   9472 * bfd_make_section_anyway:               section prototypes. (line  100)
   9473 * bfd_make_section_anyway_with_flags:    section prototypes. (line   82)
   9474 * bfd_make_section_old_way:              section prototypes. (line   62)
   9475 * bfd_make_section_with_flags:           section prototypes. (line  116)
   9476 * bfd_make_writable:                     Opening and Closing.
   9477                                                              (line  182)
   9478 * bfd_malloc_and_get_section:            section prototypes. (line  245)
   9479 * bfd_map_over_sections:                 section prototypes. (line  155)
   9480 * bfd_merge_private_bfd_data:            BFD front end.      (line  555)
   9481 * bfd_octets_per_byte:                   Architectures.      (line  560)
   9482 * bfd_open_file:                         File Caching.       (line   52)
   9483 * bfd_openr:                             Opening and Closing.
   9484                                                              (line   30)
   9485 * bfd_openr_iovec:                       Opening and Closing.
   9486                                                              (line   76)
   9487 * bfd_openr_next_archived_file:          Archives.           (line   78)
   9488 * bfd_openstreamr:                       Opening and Closing.
   9489                                                              (line   67)
   9490 * bfd_openw:                             Opening and Closing.
   9491                                                              (line  123)
   9492 * bfd_perform_relocation:                typedef arelent.    (line  367)
   9493 * bfd_perror:                            BFD front end.      (line  334)
   9494 * bfd_preserve_finish:                   BFD front end.      (line  729)
   9495 * bfd_preserve_restore:                  BFD front end.      (line  719)
   9496 * bfd_preserve_save:                     BFD front end.      (line  703)
   9497 * bfd_print_symbol_vandf:                symbol handling functions.
   9498                                                              (line   70)
   9499 * bfd_printable_arch_mach:               Architectures.      (line  548)
   9500 * bfd_printable_name:                    Architectures.      (line  408)
   9501 * bfd_put_size:                          Internal.           (line   22)
   9502 * BFD_RELOC_12_PCREL:                    howto manager.      (line   39)
   9503 * BFD_RELOC_14:                          howto manager.      (line   31)
   9504 * BFD_RELOC_16:                          howto manager.      (line   30)
   9505 * BFD_RELOC_16_BASEREL:                  howto manager.      (line   80)
   9506 * BFD_RELOC_16_GOT_PCREL:                howto manager.      (line   52)
   9507 * BFD_RELOC_16_GOTOFF:                   howto manager.      (line   55)
   9508 * BFD_RELOC_16_PCREL:                    howto manager.      (line   38)
   9509 * BFD_RELOC_16_PCREL_S2:                 howto manager.      (line   92)
   9510 * BFD_RELOC_16_PLT_PCREL:                howto manager.      (line   63)
   9511 * BFD_RELOC_16_PLTOFF:                   howto manager.      (line   67)
   9512 * BFD_RELOC_16C_ABS20:                   howto manager.      (line 1793)
   9513 * BFD_RELOC_16C_ABS20_C:                 howto manager.      (line 1794)
   9514 * BFD_RELOC_16C_ABS24:                   howto manager.      (line 1795)
   9515 * BFD_RELOC_16C_ABS24_C:                 howto manager.      (line 1796)
   9516 * BFD_RELOC_16C_DISP04:                  howto manager.      (line 1773)
   9517 * BFD_RELOC_16C_DISP04_C:                howto manager.      (line 1774)
   9518 * BFD_RELOC_16C_DISP08:                  howto manager.      (line 1775)
   9519 * BFD_RELOC_16C_DISP08_C:                howto manager.      (line 1776)
   9520 * BFD_RELOC_16C_DISP16:                  howto manager.      (line 1777)
   9521 * BFD_RELOC_16C_DISP16_C:                howto manager.      (line 1778)
   9522 * BFD_RELOC_16C_DISP24:                  howto manager.      (line 1779)
   9523 * BFD_RELOC_16C_DISP24_C:                howto manager.      (line 1780)
   9524 * BFD_RELOC_16C_DISP24a:                 howto manager.      (line 1781)
   9525 * BFD_RELOC_16C_DISP24a_C:               howto manager.      (line 1782)
   9526 * BFD_RELOC_16C_IMM04:                   howto manager.      (line 1797)
   9527 * BFD_RELOC_16C_IMM04_C:                 howto manager.      (line 1798)
   9528 * BFD_RELOC_16C_IMM16:                   howto manager.      (line 1799)
   9529 * BFD_RELOC_16C_IMM16_C:                 howto manager.      (line 1800)
   9530 * BFD_RELOC_16C_IMM20:                   howto manager.      (line 1801)
   9531 * BFD_RELOC_16C_IMM20_C:                 howto manager.      (line 1802)
   9532 * BFD_RELOC_16C_IMM24:                   howto manager.      (line 1803)
   9533 * BFD_RELOC_16C_IMM24_C:                 howto manager.      (line 1804)
   9534 * BFD_RELOC_16C_IMM32:                   howto manager.      (line 1805)
   9535 * BFD_RELOC_16C_IMM32_C:                 howto manager.      (line 1806)
   9536 * BFD_RELOC_16C_NUM08:                   howto manager.      (line 1767)
   9537 * BFD_RELOC_16C_NUM08_C:                 howto manager.      (line 1768)
   9538 * BFD_RELOC_16C_NUM16:                   howto manager.      (line 1769)
   9539 * BFD_RELOC_16C_NUM16_C:                 howto manager.      (line 1770)
   9540 * BFD_RELOC_16C_NUM32:                   howto manager.      (line 1771)
   9541 * BFD_RELOC_16C_NUM32_C:                 howto manager.      (line 1772)
   9542 * BFD_RELOC_16C_REG04:                   howto manager.      (line 1783)
   9543 * BFD_RELOC_16C_REG04_C:                 howto manager.      (line 1784)
   9544 * BFD_RELOC_16C_REG04a:                  howto manager.      (line 1785)
   9545 * BFD_RELOC_16C_REG04a_C:                howto manager.      (line 1786)
   9546 * BFD_RELOC_16C_REG14:                   howto manager.      (line 1787)
   9547 * BFD_RELOC_16C_REG14_C:                 howto manager.      (line 1788)
   9548 * BFD_RELOC_16C_REG16:                   howto manager.      (line 1789)
   9549 * BFD_RELOC_16C_REG16_C:                 howto manager.      (line 1790)
   9550 * BFD_RELOC_16C_REG20:                   howto manager.      (line 1791)
   9551 * BFD_RELOC_16C_REG20_C:                 howto manager.      (line 1792)
   9552 * BFD_RELOC_23_PCREL_S2:                 howto manager.      (line   93)
   9553 * BFD_RELOC_24:                          howto manager.      (line   29)
   9554 * BFD_RELOC_24_PCREL:                    howto manager.      (line   37)
   9555 * BFD_RELOC_24_PLT_PCREL:                howto manager.      (line   62)
   9556 * BFD_RELOC_26:                          howto manager.      (line   28)
   9557 * BFD_RELOC_32:                          howto manager.      (line   27)
   9558 * BFD_RELOC_32_BASEREL:                  howto manager.      (line   79)
   9559 * BFD_RELOC_32_GOT_PCREL:                howto manager.      (line   51)
   9560 * BFD_RELOC_32_GOTOFF:                   howto manager.      (line   54)
   9561 * BFD_RELOC_32_PCREL:                    howto manager.      (line   36)
   9562 * BFD_RELOC_32_PCREL_S2:                 howto manager.      (line   91)
   9563 * BFD_RELOC_32_PLT_PCREL:                howto manager.      (line   61)
   9564 * BFD_RELOC_32_PLTOFF:                   howto manager.      (line   66)
   9565 * BFD_RELOC_32_SECREL:                   howto manager.      (line   48)
   9566 * BFD_RELOC_386_COPY:                    howto manager.      (line  470)
   9567 * BFD_RELOC_386_GLOB_DAT:                howto manager.      (line  471)
   9568 * BFD_RELOC_386_GOT32:                   howto manager.      (line  468)
   9569 * BFD_RELOC_386_GOTOFF:                  howto manager.      (line  474)
   9570 * BFD_RELOC_386_GOTPC:                   howto manager.      (line  475)
   9571 * BFD_RELOC_386_JUMP_SLOT:               howto manager.      (line  472)
   9572 * BFD_RELOC_386_PLT32:                   howto manager.      (line  469)
   9573 * BFD_RELOC_386_RELATIVE:                howto manager.      (line  473)
   9574 * BFD_RELOC_386_TLS_DESC:                howto manager.      (line  490)
   9575 * BFD_RELOC_386_TLS_DESC_CALL:           howto manager.      (line  489)
   9576 * BFD_RELOC_386_TLS_DTPMOD32:            howto manager.      (line  485)
   9577 * BFD_RELOC_386_TLS_DTPOFF32:            howto manager.      (line  486)
   9578 * BFD_RELOC_386_TLS_GD:                  howto manager.      (line  480)
   9579 * BFD_RELOC_386_TLS_GOTDESC:             howto manager.      (line  488)
   9580 * BFD_RELOC_386_TLS_GOTIE:               howto manager.      (line  478)
   9581 * BFD_RELOC_386_TLS_IE:                  howto manager.      (line  477)
   9582 * BFD_RELOC_386_TLS_IE_32:               howto manager.      (line  483)
   9583 * BFD_RELOC_386_TLS_LDM:                 howto manager.      (line  481)
   9584 * BFD_RELOC_386_TLS_LDO_32:              howto manager.      (line  482)
   9585 * BFD_RELOC_386_TLS_LE:                  howto manager.      (line  479)
   9586 * BFD_RELOC_386_TLS_LE_32:               howto manager.      (line  484)
   9587 * BFD_RELOC_386_TLS_TPOFF:               howto manager.      (line  476)
   9588 * BFD_RELOC_386_TLS_TPOFF32:             howto manager.      (line  487)
   9589 * BFD_RELOC_390_12:                      howto manager.      (line 1459)
   9590 * BFD_RELOC_390_20:                      howto manager.      (line 1559)
   9591 * BFD_RELOC_390_COPY:                    howto manager.      (line 1468)
   9592 * BFD_RELOC_390_GLOB_DAT:                howto manager.      (line 1471)
   9593 * BFD_RELOC_390_GOT12:                   howto manager.      (line 1462)
   9594 * BFD_RELOC_390_GOT16:                   howto manager.      (line 1483)
   9595 * BFD_RELOC_390_GOT20:                   howto manager.      (line 1560)
   9596 * BFD_RELOC_390_GOT64:                   howto manager.      (line 1501)
   9597 * BFD_RELOC_390_GOTENT:                  howto manager.      (line 1507)
   9598 * BFD_RELOC_390_GOTOFF64:                howto manager.      (line 1510)
   9599 * BFD_RELOC_390_GOTPC:                   howto manager.      (line 1480)
   9600 * BFD_RELOC_390_GOTPCDBL:                howto manager.      (line 1498)
   9601 * BFD_RELOC_390_GOTPLT12:                howto manager.      (line 1513)
   9602 * BFD_RELOC_390_GOTPLT16:                howto manager.      (line 1516)
   9603 * BFD_RELOC_390_GOTPLT20:                howto manager.      (line 1561)
   9604 * BFD_RELOC_390_GOTPLT32:                howto manager.      (line 1519)
   9605 * BFD_RELOC_390_GOTPLT64:                howto manager.      (line 1522)
   9606 * BFD_RELOC_390_GOTPLTENT:               howto manager.      (line 1525)
   9607 * BFD_RELOC_390_JMP_SLOT:                howto manager.      (line 1474)
   9608 * BFD_RELOC_390_PC16DBL:                 howto manager.      (line 1486)
   9609 * BFD_RELOC_390_PC32DBL:                 howto manager.      (line 1492)
   9610 * BFD_RELOC_390_PLT16DBL:                howto manager.      (line 1489)
   9611 * BFD_RELOC_390_PLT32:                   howto manager.      (line 1465)
   9612 * BFD_RELOC_390_PLT32DBL:                howto manager.      (line 1495)
   9613 * BFD_RELOC_390_PLT64:                   howto manager.      (line 1504)
   9614 * BFD_RELOC_390_PLTOFF16:                howto manager.      (line 1528)
   9615 * BFD_RELOC_390_PLTOFF32:                howto manager.      (line 1531)
   9616 * BFD_RELOC_390_PLTOFF64:                howto manager.      (line 1534)
   9617 * BFD_RELOC_390_RELATIVE:                howto manager.      (line 1477)
   9618 * BFD_RELOC_390_TLS_DTPMOD:              howto manager.      (line 1554)
   9619 * BFD_RELOC_390_TLS_DTPOFF:              howto manager.      (line 1555)
   9620 * BFD_RELOC_390_TLS_GD32:                howto manager.      (line 1540)
   9621 * BFD_RELOC_390_TLS_GD64:                howto manager.      (line 1541)
   9622 * BFD_RELOC_390_TLS_GDCALL:              howto manager.      (line 1538)
   9623 * BFD_RELOC_390_TLS_GOTIE12:             howto manager.      (line 1542)
   9624 * BFD_RELOC_390_TLS_GOTIE20:             howto manager.      (line 1562)
   9625 * BFD_RELOC_390_TLS_GOTIE32:             howto manager.      (line 1543)
   9626 * BFD_RELOC_390_TLS_GOTIE64:             howto manager.      (line 1544)
   9627 * BFD_RELOC_390_TLS_IE32:                howto manager.      (line 1547)
   9628 * BFD_RELOC_390_TLS_IE64:                howto manager.      (line 1548)
   9629 * BFD_RELOC_390_TLS_IEENT:               howto manager.      (line 1549)
   9630 * BFD_RELOC_390_TLS_LDCALL:              howto manager.      (line 1539)
   9631 * BFD_RELOC_390_TLS_LDM32:               howto manager.      (line 1545)
   9632 * BFD_RELOC_390_TLS_LDM64:               howto manager.      (line 1546)
   9633 * BFD_RELOC_390_TLS_LDO32:               howto manager.      (line 1552)
   9634 * BFD_RELOC_390_TLS_LDO64:               howto manager.      (line 1553)
   9635 * BFD_RELOC_390_TLS_LE32:                howto manager.      (line 1550)
   9636 * BFD_RELOC_390_TLS_LE64:                howto manager.      (line 1551)
   9637 * BFD_RELOC_390_TLS_LOAD:                howto manager.      (line 1537)
   9638 * BFD_RELOC_390_TLS_TPOFF:               howto manager.      (line 1556)
   9639 * BFD_RELOC_64:                          howto manager.      (line   26)
   9640 * BFD_RELOC_64_PCREL:                    howto manager.      (line   35)
   9641 * BFD_RELOC_64_PLT_PCREL:                howto manager.      (line   60)
   9642 * BFD_RELOC_64_PLTOFF:                   howto manager.      (line   65)
   9643 * BFD_RELOC_68K_GLOB_DAT:                howto manager.      (line   74)
   9644 * BFD_RELOC_68K_JMP_SLOT:                howto manager.      (line   75)
   9645 * BFD_RELOC_68K_RELATIVE:                howto manager.      (line   76)
   9646 * BFD_RELOC_8:                           howto manager.      (line   32)
   9647 * BFD_RELOC_860_COPY:                    howto manager.      (line 1904)
   9648 * BFD_RELOC_860_GLOB_DAT:                howto manager.      (line 1905)
   9649 * BFD_RELOC_860_HAGOT:                   howto manager.      (line 1930)
   9650 * BFD_RELOC_860_HAGOTOFF:                howto manager.      (line 1931)
   9651 * BFD_RELOC_860_HAPC:                    howto manager.      (line 1932)
   9652 * BFD_RELOC_860_HIGH:                    howto manager.      (line 1933)
   9653 * BFD_RELOC_860_HIGHADJ:                 howto manager.      (line 1929)
   9654 * BFD_RELOC_860_HIGOT:                   howto manager.      (line 1934)
   9655 * BFD_RELOC_860_HIGOTOFF:                howto manager.      (line 1935)
   9656 * BFD_RELOC_860_JUMP_SLOT:               howto manager.      (line 1906)
   9657 * BFD_RELOC_860_LOGOT0:                  howto manager.      (line 1918)
   9658 * BFD_RELOC_860_LOGOT1:                  howto manager.      (line 1920)
   9659 * BFD_RELOC_860_LOGOTOFF0:               howto manager.      (line 1922)
   9660 * BFD_RELOC_860_LOGOTOFF1:               howto manager.      (line 1924)
   9661 * BFD_RELOC_860_LOGOTOFF2:               howto manager.      (line 1926)
   9662 * BFD_RELOC_860_LOGOTOFF3:               howto manager.      (line 1927)
   9663 * BFD_RELOC_860_LOPC:                    howto manager.      (line 1928)
   9664 * BFD_RELOC_860_LOW0:                    howto manager.      (line 1911)
   9665 * BFD_RELOC_860_LOW1:                    howto manager.      (line 1913)
   9666 * BFD_RELOC_860_LOW2:                    howto manager.      (line 1915)
   9667 * BFD_RELOC_860_LOW3:                    howto manager.      (line 1917)
   9668 * BFD_RELOC_860_PC16:                    howto manager.      (line 1910)
   9669 * BFD_RELOC_860_PC26:                    howto manager.      (line 1908)
   9670 * BFD_RELOC_860_PLT26:                   howto manager.      (line 1909)
   9671 * BFD_RELOC_860_RELATIVE:                howto manager.      (line 1907)
   9672 * BFD_RELOC_860_SPGOT0:                  howto manager.      (line 1919)
   9673 * BFD_RELOC_860_SPGOT1:                  howto manager.      (line 1921)
   9674 * BFD_RELOC_860_SPGOTOFF0:               howto manager.      (line 1923)
   9675 * BFD_RELOC_860_SPGOTOFF1:               howto manager.      (line 1925)
   9676 * BFD_RELOC_860_SPLIT0:                  howto manager.      (line 1912)
   9677 * BFD_RELOC_860_SPLIT1:                  howto manager.      (line 1914)
   9678 * BFD_RELOC_860_SPLIT2:                  howto manager.      (line 1916)
   9679 * BFD_RELOC_8_BASEREL:                   howto manager.      (line   84)
   9680 * BFD_RELOC_8_FFnn:                      howto manager.      (line   88)
   9681 * BFD_RELOC_8_GOT_PCREL:                 howto manager.      (line   53)
   9682 * BFD_RELOC_8_GOTOFF:                    howto manager.      (line   59)
   9683 * BFD_RELOC_8_PCREL:                     howto manager.      (line   40)
   9684 * BFD_RELOC_8_PLT_PCREL:                 howto manager.      (line   64)
   9685 * BFD_RELOC_8_PLTOFF:                    howto manager.      (line   71)
   9686 * BFD_RELOC_ALPHA_BRSGP:                 howto manager.      (line  280)
   9687 * BFD_RELOC_ALPHA_CODEADDR:              howto manager.      (line  271)
   9688 * BFD_RELOC_ALPHA_DTPMOD64:              howto manager.      (line  287)
   9689 * BFD_RELOC_ALPHA_DTPREL16:              howto manager.      (line  292)
   9690 * BFD_RELOC_ALPHA_DTPREL64:              howto manager.      (line  289)
   9691 * BFD_RELOC_ALPHA_DTPREL_HI16:           howto manager.      (line  290)
   9692 * BFD_RELOC_ALPHA_DTPREL_LO16:           howto manager.      (line  291)
   9693 * BFD_RELOC_ALPHA_ELF_LITERAL:           howto manager.      (line  236)
   9694 * BFD_RELOC_ALPHA_GOTDTPREL16:           howto manager.      (line  288)
   9695 * BFD_RELOC_ALPHA_GOTTPREL16:            howto manager.      (line  293)
   9696 * BFD_RELOC_ALPHA_GPDISP:                howto manager.      (line  230)
   9697 * BFD_RELOC_ALPHA_GPDISP_HI16:           howto manager.      (line  216)
   9698 * BFD_RELOC_ALPHA_GPDISP_LO16:           howto manager.      (line  224)
   9699 * BFD_RELOC_ALPHA_GPREL_HI16:            howto manager.      (line  275)
   9700 * BFD_RELOC_ALPHA_GPREL_LO16:            howto manager.      (line  276)
   9701 * BFD_RELOC_ALPHA_HINT:                  howto manager.      (line  262)
   9702 * BFD_RELOC_ALPHA_LINKAGE:               howto manager.      (line  267)
   9703 * BFD_RELOC_ALPHA_LITERAL:               howto manager.      (line  235)
   9704 * BFD_RELOC_ALPHA_LITUSE:                howto manager.      (line  237)
   9705 * BFD_RELOC_ALPHA_TLSGD:                 howto manager.      (line  285)
   9706 * BFD_RELOC_ALPHA_TLSLDM:                howto manager.      (line  286)
   9707 * BFD_RELOC_ALPHA_TPREL16:               howto manager.      (line  297)
   9708 * BFD_RELOC_ALPHA_TPREL64:               howto manager.      (line  294)
   9709 * BFD_RELOC_ALPHA_TPREL_HI16:            howto manager.      (line  295)
   9710 * BFD_RELOC_ALPHA_TPREL_LO16:            howto manager.      (line  296)
   9711 * BFD_RELOC_ARC_B22_PCREL:               howto manager.      (line  895)
   9712 * BFD_RELOC_ARC_B26:                     howto manager.      (line  900)
   9713 * BFD_RELOC_ARM_ADR_IMM:                 howto manager.      (line  788)
   9714 * BFD_RELOC_ARM_ADRL_IMMEDIATE:          howto manager.      (line  775)
   9715 * BFD_RELOC_ARM_ALU_PC_G0:               howto manager.      (line  742)
   9716 * BFD_RELOC_ARM_ALU_PC_G0_NC:            howto manager.      (line  741)
   9717 * BFD_RELOC_ARM_ALU_PC_G1:               howto manager.      (line  744)
   9718 * BFD_RELOC_ARM_ALU_PC_G1_NC:            howto manager.      (line  743)
   9719 * BFD_RELOC_ARM_ALU_PC_G2:               howto manager.      (line  745)
   9720 * BFD_RELOC_ARM_ALU_SB_G0:               howto manager.      (line  756)
   9721 * BFD_RELOC_ARM_ALU_SB_G0_NC:            howto manager.      (line  755)
   9722 * BFD_RELOC_ARM_ALU_SB_G1:               howto manager.      (line  758)
   9723 * BFD_RELOC_ARM_ALU_SB_G1_NC:            howto manager.      (line  757)
   9724 * BFD_RELOC_ARM_ALU_SB_G2:               howto manager.      (line  759)
   9725 * BFD_RELOC_ARM_CP_OFF_IMM:              howto manager.      (line  784)
   9726 * BFD_RELOC_ARM_CP_OFF_IMM_S2:           howto manager.      (line  785)
   9727 * BFD_RELOC_ARM_GLOB_DAT:                howto manager.      (line  723)
   9728 * BFD_RELOC_ARM_GOT32:                   howto manager.      (line  724)
   9729 * BFD_RELOC_ARM_GOTOFF:                  howto manager.      (line  727)
   9730 * BFD_RELOC_ARM_GOTPC:                   howto manager.      (line  728)
   9731 * BFD_RELOC_ARM_HWLITERAL:               howto manager.      (line  795)
   9732 * BFD_RELOC_ARM_IMMEDIATE:               howto manager.      (line  774)
   9733 * BFD_RELOC_ARM_IN_POOL:                 howto manager.      (line  791)
   9734 * BFD_RELOC_ARM_JUMP_SLOT:               howto manager.      (line  722)
   9735 * BFD_RELOC_ARM_LDC_PC_G0:               howto manager.      (line  752)
   9736 * BFD_RELOC_ARM_LDC_PC_G1:               howto manager.      (line  753)
   9737 * BFD_RELOC_ARM_LDC_PC_G2:               howto manager.      (line  754)
   9738 * BFD_RELOC_ARM_LDC_SB_G0:               howto manager.      (line  766)
   9739 * BFD_RELOC_ARM_LDC_SB_G1:               howto manager.      (line  767)
   9740 * BFD_RELOC_ARM_LDC_SB_G2:               howto manager.      (line  768)
   9741 * BFD_RELOC_ARM_LDR_IMM:                 howto manager.      (line  789)
   9742 * BFD_RELOC_ARM_LDR_PC_G0:               howto manager.      (line  746)
   9743 * BFD_RELOC_ARM_LDR_PC_G1:               howto manager.      (line  747)
   9744 * BFD_RELOC_ARM_LDR_PC_G2:               howto manager.      (line  748)
   9745 * BFD_RELOC_ARM_LDR_SB_G0:               howto manager.      (line  760)
   9746 * BFD_RELOC_ARM_LDR_SB_G1:               howto manager.      (line  761)
   9747 * BFD_RELOC_ARM_LDR_SB_G2:               howto manager.      (line  762)
   9748 * BFD_RELOC_ARM_LDRS_PC_G0:              howto manager.      (line  749)
   9749 * BFD_RELOC_ARM_LDRS_PC_G1:              howto manager.      (line  750)
   9750 * BFD_RELOC_ARM_LDRS_PC_G2:              howto manager.      (line  751)
   9751 * BFD_RELOC_ARM_LDRS_SB_G0:              howto manager.      (line  763)
   9752 * BFD_RELOC_ARM_LDRS_SB_G1:              howto manager.      (line  764)
   9753 * BFD_RELOC_ARM_LDRS_SB_G2:              howto manager.      (line  765)
   9754 * BFD_RELOC_ARM_LITERAL:                 howto manager.      (line  790)
   9755 * BFD_RELOC_ARM_MOVT:                    howto manager.      (line  713)
   9756 * BFD_RELOC_ARM_MOVT_PCREL:              howto manager.      (line  715)
   9757 * BFD_RELOC_ARM_MOVW:                    howto manager.      (line  712)
   9758 * BFD_RELOC_ARM_MOVW_PCREL:              howto manager.      (line  714)
   9759 * BFD_RELOC_ARM_MULTI:                   howto manager.      (line  783)
   9760 * BFD_RELOC_ARM_OFFSET_IMM:              howto manager.      (line  686)
   9761 * BFD_RELOC_ARM_OFFSET_IMM8:             howto manager.      (line  792)
   9762 * BFD_RELOC_ARM_PCREL_BLX:               howto manager.      (line  657)
   9763 * BFD_RELOC_ARM_PCREL_BRANCH:            howto manager.      (line  653)
   9764 * BFD_RELOC_ARM_PCREL_CALL:              howto manager.      (line  667)
   9765 * BFD_RELOC_ARM_PCREL_JUMP:              howto manager.      (line  671)
   9766 * BFD_RELOC_ARM_PLT32:                   howto manager.      (line  725)
   9767 * BFD_RELOC_ARM_PREL31:                  howto manager.      (line  709)
   9768 * BFD_RELOC_ARM_RELATIVE:                howto manager.      (line  726)
   9769 * BFD_RELOC_ARM_ROSEGREL32:              howto manager.      (line  698)
   9770 * BFD_RELOC_ARM_SBREL32:                 howto manager.      (line  701)
   9771 * BFD_RELOC_ARM_SHIFT_IMM:               howto manager.      (line  780)
   9772 * BFD_RELOC_ARM_SMC:                     howto manager.      (line  781)
   9773 * BFD_RELOC_ARM_SWI:                     howto manager.      (line  782)
   9774 * BFD_RELOC_ARM_T32_ADD_IMM:             howto manager.      (line  777)
   9775 * BFD_RELOC_ARM_T32_ADD_PC12:            howto manager.      (line  779)
   9776 * BFD_RELOC_ARM_T32_CP_OFF_IMM:          howto manager.      (line  786)
   9777 * BFD_RELOC_ARM_T32_CP_OFF_IMM_S2:       howto manager.      (line  787)
   9778 * BFD_RELOC_ARM_T32_IMM12:               howto manager.      (line  778)
   9779 * BFD_RELOC_ARM_T32_IMMEDIATE:           howto manager.      (line  776)
   9780 * BFD_RELOC_ARM_T32_OFFSET_IMM:          howto manager.      (line  794)
   9781 * BFD_RELOC_ARM_T32_OFFSET_U8:           howto manager.      (line  793)
   9782 * BFD_RELOC_ARM_TARGET1:                 howto manager.      (line  694)
   9783 * BFD_RELOC_ARM_TARGET2:                 howto manager.      (line  704)
   9784 * BFD_RELOC_ARM_THUMB_ADD:               howto manager.      (line  796)
   9785 * BFD_RELOC_ARM_THUMB_IMM:               howto manager.      (line  797)
   9786 * BFD_RELOC_ARM_THUMB_MOVT:              howto manager.      (line  717)
   9787 * BFD_RELOC_ARM_THUMB_MOVT_PCREL:        howto manager.      (line  719)
   9788 * BFD_RELOC_ARM_THUMB_MOVW:              howto manager.      (line  716)
   9789 * BFD_RELOC_ARM_THUMB_MOVW_PCREL:        howto manager.      (line  718)
   9790 * BFD_RELOC_ARM_THUMB_OFFSET:            howto manager.      (line  690)
   9791 * BFD_RELOC_ARM_THUMB_SHIFT:             howto manager.      (line  798)
   9792 * BFD_RELOC_ARM_TLS_DTPMOD32:            howto manager.      (line  735)
   9793 * BFD_RELOC_ARM_TLS_DTPOFF32:            howto manager.      (line  734)
   9794 * BFD_RELOC_ARM_TLS_GD32:                howto manager.      (line  731)
   9795 * BFD_RELOC_ARM_TLS_IE32:                howto manager.      (line  737)
   9796 * BFD_RELOC_ARM_TLS_LDM32:               howto manager.      (line  733)
   9797 * BFD_RELOC_ARM_TLS_LDO32:               howto manager.      (line  732)
   9798 * BFD_RELOC_ARM_TLS_LE32:                howto manager.      (line  738)
   9799 * BFD_RELOC_ARM_TLS_TPOFF32:             howto manager.      (line  736)
   9800 * BFD_RELOC_ARM_V4BX:                    howto manager.      (line  771)
   9801 * BFD_RELOC_AVR_13_PCREL:                howto manager.      (line 1360)
   9802 * BFD_RELOC_AVR_16_PM:                   howto manager.      (line 1364)
   9803 * BFD_RELOC_AVR_6:                       howto manager.      (line 1451)
   9804 * BFD_RELOC_AVR_6_ADIW:                  howto manager.      (line 1455)
   9805 * BFD_RELOC_AVR_7_PCREL:                 howto manager.      (line 1356)
   9806 * BFD_RELOC_AVR_CALL:                    howto manager.      (line 1443)
   9807 * BFD_RELOC_AVR_HH8_LDI:                 howto manager.      (line 1376)
   9808 * BFD_RELOC_AVR_HH8_LDI_NEG:             howto manager.      (line 1395)
   9809 * BFD_RELOC_AVR_HH8_LDI_PM:              howto manager.      (line 1424)
   9810 * BFD_RELOC_AVR_HH8_LDI_PM_NEG:          howto manager.      (line 1438)
   9811 * BFD_RELOC_AVR_HI8_LDI:                 howto manager.      (line 1372)
   9812 * BFD_RELOC_AVR_HI8_LDI_GS:              howto manager.      (line 1418)
   9813 * BFD_RELOC_AVR_HI8_LDI_NEG:             howto manager.      (line 1390)
   9814 * BFD_RELOC_AVR_HI8_LDI_PM:              howto manager.      (line 1414)
   9815 * BFD_RELOC_AVR_HI8_LDI_PM_NEG:          howto manager.      (line 1433)
   9816 * BFD_RELOC_AVR_LDI:                     howto manager.      (line 1447)
   9817 * BFD_RELOC_AVR_LO8_LDI:                 howto manager.      (line 1368)
   9818 * BFD_RELOC_AVR_LO8_LDI_GS:              howto manager.      (line 1408)
   9819 * BFD_RELOC_AVR_LO8_LDI_NEG:             howto manager.      (line 1385)
   9820 * BFD_RELOC_AVR_LO8_LDI_PM:              howto manager.      (line 1404)
   9821 * BFD_RELOC_AVR_LO8_LDI_PM_NEG:          howto manager.      (line 1429)
   9822 * BFD_RELOC_AVR_MS8_LDI:                 howto manager.      (line 1381)
   9823 * BFD_RELOC_AVR_MS8_LDI_NEG:             howto manager.      (line 1400)
   9824 * BFD_RELOC_BFIN_10_PCREL:               howto manager.      (line  920)
   9825 * BFD_RELOC_BFIN_11_PCREL:               howto manager.      (line  923)
   9826 * BFD_RELOC_BFIN_12_PCREL_JUMP:          howto manager.      (line  926)
   9827 * BFD_RELOC_BFIN_12_PCREL_JUMP_S:        howto manager.      (line  929)
   9828 * BFD_RELOC_BFIN_16_HIGH:                howto manager.      (line  908)
   9829 * BFD_RELOC_BFIN_16_IMM:                 howto manager.      (line  905)
   9830 * BFD_RELOC_BFIN_16_LOW:                 howto manager.      (line  917)
   9831 * BFD_RELOC_BFIN_24_PCREL_CALL_X:        howto manager.      (line  932)
   9832 * BFD_RELOC_BFIN_24_PCREL_JUMP_L:        howto manager.      (line  935)
   9833 * BFD_RELOC_BFIN_4_PCREL:                howto manager.      (line  911)
   9834 * BFD_RELOC_BFIN_5_PCREL:                howto manager.      (line  914)
   9835 * BFD_RELOC_BFIN_FUNCDESC:               howto manager.      (line  941)
   9836 * BFD_RELOC_BFIN_FUNCDESC_GOT17M4:       howto manager.      (line  942)
   9837 * BFD_RELOC_BFIN_FUNCDESC_GOTHI:         howto manager.      (line  943)
   9838 * BFD_RELOC_BFIN_FUNCDESC_GOTLO:         howto manager.      (line  944)
   9839 * BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4:    howto manager.      (line  946)
   9840 * BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI:      howto manager.      (line  947)
   9841 * BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO:      howto manager.      (line  948)
   9842 * BFD_RELOC_BFIN_FUNCDESC_VALUE:         howto manager.      (line  945)
   9843 * BFD_RELOC_BFIN_GOT:                    howto manager.      (line  954)
   9844 * BFD_RELOC_BFIN_GOT17M4:                howto manager.      (line  938)
   9845 * BFD_RELOC_BFIN_GOTHI:                  howto manager.      (line  939)
   9846 * BFD_RELOC_BFIN_GOTLO:                  howto manager.      (line  940)
   9847 * BFD_RELOC_BFIN_GOTOFF17M4:             howto manager.      (line  949)
   9848 * BFD_RELOC_BFIN_GOTOFFHI:               howto manager.      (line  950)
   9849 * BFD_RELOC_BFIN_GOTOFFLO:               howto manager.      (line  951)
   9850 * BFD_RELOC_BFIN_PLTPC:                  howto manager.      (line  957)
   9851 * bfd_reloc_code_type:                   howto manager.      (line   10)
   9852 * BFD_RELOC_CR16_ABS20:                  howto manager.      (line 1821)
   9853 * BFD_RELOC_CR16_ABS24:                  howto manager.      (line 1822)
   9854 * BFD_RELOC_CR16_DISP16:                 howto manager.      (line 1832)
   9855 * BFD_RELOC_CR16_DISP20:                 howto manager.      (line 1833)
   9856 * BFD_RELOC_CR16_DISP24:                 howto manager.      (line 1834)
   9857 * BFD_RELOC_CR16_DISP24a:                howto manager.      (line 1835)
   9858 * BFD_RELOC_CR16_DISP4:                  howto manager.      (line 1830)
   9859 * BFD_RELOC_CR16_DISP8:                  howto manager.      (line 1831)
   9860 * BFD_RELOC_CR16_IMM16:                  howto manager.      (line 1825)
   9861 * BFD_RELOC_CR16_IMM20:                  howto manager.      (line 1826)
   9862 * BFD_RELOC_CR16_IMM24:                  howto manager.      (line 1827)
   9863 * BFD_RELOC_CR16_IMM32:                  howto manager.      (line 1828)
   9864 * BFD_RELOC_CR16_IMM32a:                 howto manager.      (line 1829)
   9865 * BFD_RELOC_CR16_IMM4:                   howto manager.      (line 1823)
   9866 * BFD_RELOC_CR16_IMM8:                   howto manager.      (line 1824)
   9867 * BFD_RELOC_CR16_NUM16:                  howto manager.      (line 1810)
   9868 * BFD_RELOC_CR16_NUM32:                  howto manager.      (line 1811)
   9869 * BFD_RELOC_CR16_NUM32a:                 howto manager.      (line 1812)
   9870 * BFD_RELOC_CR16_NUM8:                   howto manager.      (line 1809)
   9871 * BFD_RELOC_CR16_REGREL0:                howto manager.      (line 1813)
   9872 * BFD_RELOC_CR16_REGREL14:               howto manager.      (line 1816)
   9873 * BFD_RELOC_CR16_REGREL14a:              howto manager.      (line 1817)
   9874 * BFD_RELOC_CR16_REGREL16:               howto manager.      (line 1818)
   9875 * BFD_RELOC_CR16_REGREL20:               howto manager.      (line 1819)
   9876 * BFD_RELOC_CR16_REGREL20a:              howto manager.      (line 1820)
   9877 * BFD_RELOC_CR16_REGREL4:                howto manager.      (line 1814)
   9878 * BFD_RELOC_CR16_REGREL4a:               howto manager.      (line 1815)
   9879 * BFD_RELOC_CR16_SWITCH16:               howto manager.      (line 1837)
   9880 * BFD_RELOC_CR16_SWITCH32:               howto manager.      (line 1838)
   9881 * BFD_RELOC_CR16_SWITCH8:                howto manager.      (line 1836)
   9882 * BFD_RELOC_CRIS_16_GOT:                 howto manager.      (line 1885)
   9883 * BFD_RELOC_CRIS_16_GOTPLT:              howto manager.      (line 1891)
   9884 * BFD_RELOC_CRIS_32_GOT:                 howto manager.      (line 1882)
   9885 * BFD_RELOC_CRIS_32_GOTPLT:              howto manager.      (line 1888)
   9886 * BFD_RELOC_CRIS_32_GOTREL:              howto manager.      (line 1894)
   9887 * BFD_RELOC_CRIS_32_PLT_GOTREL:          howto manager.      (line 1897)
   9888 * BFD_RELOC_CRIS_32_PLT_PCREL:           howto manager.      (line 1900)
   9889 * BFD_RELOC_CRIS_BDISP8:                 howto manager.      (line 1863)
   9890 * BFD_RELOC_CRIS_COPY:                   howto manager.      (line 1876)
   9891 * BFD_RELOC_CRIS_GLOB_DAT:               howto manager.      (line 1877)
   9892 * BFD_RELOC_CRIS_JUMP_SLOT:              howto manager.      (line 1878)
   9893 * BFD_RELOC_CRIS_LAPCQ_OFFSET:           howto manager.      (line 1871)
   9894 * BFD_RELOC_CRIS_RELATIVE:               howto manager.      (line 1879)
   9895 * BFD_RELOC_CRIS_SIGNED_16:              howto manager.      (line 1869)
   9896 * BFD_RELOC_CRIS_SIGNED_6:               howto manager.      (line 1865)
   9897 * BFD_RELOC_CRIS_SIGNED_8:               howto manager.      (line 1867)
   9898 * BFD_RELOC_CRIS_UNSIGNED_16:            howto manager.      (line 1870)
   9899 * BFD_RELOC_CRIS_UNSIGNED_4:             howto manager.      (line 1872)
   9900 * BFD_RELOC_CRIS_UNSIGNED_5:             howto manager.      (line 1864)
   9901 * BFD_RELOC_CRIS_UNSIGNED_6:             howto manager.      (line 1866)
   9902 * BFD_RELOC_CRIS_UNSIGNED_8:             howto manager.      (line 1868)
   9903 * BFD_RELOC_CRX_ABS16:                   howto manager.      (line 1851)
   9904 * BFD_RELOC_CRX_ABS32:                   howto manager.      (line 1852)
   9905 * BFD_RELOC_CRX_IMM16:                   howto manager.      (line 1856)
   9906 * BFD_RELOC_CRX_IMM32:                   howto manager.      (line 1857)
   9907 * BFD_RELOC_CRX_NUM16:                   howto manager.      (line 1854)
   9908 * BFD_RELOC_CRX_NUM32:                   howto manager.      (line 1855)
   9909 * BFD_RELOC_CRX_NUM8:                    howto manager.      (line 1853)
   9910 * BFD_RELOC_CRX_REGREL12:                howto manager.      (line 1847)
   9911 * BFD_RELOC_CRX_REGREL22:                howto manager.      (line 1848)
   9912 * BFD_RELOC_CRX_REGREL28:                howto manager.      (line 1849)
   9913 * BFD_RELOC_CRX_REGREL32:                howto manager.      (line 1850)
   9914 * BFD_RELOC_CRX_REL16:                   howto manager.      (line 1844)
   9915 * BFD_RELOC_CRX_REL24:                   howto manager.      (line 1845)
   9916 * BFD_RELOC_CRX_REL32:                   howto manager.      (line 1846)
   9917 * BFD_RELOC_CRX_REL4:                    howto manager.      (line 1841)
   9918 * BFD_RELOC_CRX_REL8:                    howto manager.      (line 1842)
   9919 * BFD_RELOC_CRX_REL8_CMP:                howto manager.      (line 1843)
   9920 * BFD_RELOC_CRX_SWITCH16:                howto manager.      (line 1859)
   9921 * BFD_RELOC_CRX_SWITCH32:                howto manager.      (line 1860)
   9922 * BFD_RELOC_CRX_SWITCH8:                 howto manager.      (line 1858)
   9923 * BFD_RELOC_CTOR:                        howto manager.      (line  647)
   9924 * BFD_RELOC_D10V_10_PCREL_L:             howto manager.      (line 1024)
   9925 * BFD_RELOC_D10V_10_PCREL_R:             howto manager.      (line 1020)
   9926 * BFD_RELOC_D10V_18:                     howto manager.      (line 1029)
   9927 * BFD_RELOC_D10V_18_PCREL:               howto manager.      (line 1032)
   9928 * BFD_RELOC_D30V_15:                     howto manager.      (line 1047)
   9929 * BFD_RELOC_D30V_15_PCREL:               howto manager.      (line 1051)
   9930 * BFD_RELOC_D30V_15_PCREL_R:             howto manager.      (line 1055)
   9931 * BFD_RELOC_D30V_21:                     howto manager.      (line 1060)
   9932 * BFD_RELOC_D30V_21_PCREL:               howto manager.      (line 1064)
   9933 * BFD_RELOC_D30V_21_PCREL_R:             howto manager.      (line 1068)
   9934 * BFD_RELOC_D30V_32:                     howto manager.      (line 1073)
   9935 * BFD_RELOC_D30V_32_PCREL:               howto manager.      (line 1076)
   9936 * BFD_RELOC_D30V_6:                      howto manager.      (line 1035)
   9937 * BFD_RELOC_D30V_9_PCREL:                howto manager.      (line 1038)
   9938 * BFD_RELOC_D30V_9_PCREL_R:              howto manager.      (line 1042)
   9939 * BFD_RELOC_DLX_HI16_S:                  howto manager.      (line 1079)
   9940 * BFD_RELOC_DLX_JMP26:                   howto manager.      (line 1085)
   9941 * BFD_RELOC_DLX_LO16:                    howto manager.      (line 1082)
   9942 * BFD_RELOC_FR30_10_IN_8:                howto manager.      (line 1264)
   9943 * BFD_RELOC_FR30_12_PCREL:               howto manager.      (line 1272)
   9944 * BFD_RELOC_FR30_20:                     howto manager.      (line 1248)
   9945 * BFD_RELOC_FR30_48:                     howto manager.      (line 1245)
   9946 * BFD_RELOC_FR30_6_IN_4:                 howto manager.      (line 1252)
   9947 * BFD_RELOC_FR30_8_IN_8:                 howto manager.      (line 1256)
   9948 * BFD_RELOC_FR30_9_IN_8:                 howto manager.      (line 1260)
   9949 * BFD_RELOC_FR30_9_PCREL:                howto manager.      (line 1268)
   9950 * BFD_RELOC_FRV_FUNCDESC:                howto manager.      (line  403)
   9951 * BFD_RELOC_FRV_FUNCDESC_GOT12:          howto manager.      (line  404)
   9952 * BFD_RELOC_FRV_FUNCDESC_GOTHI:          howto manager.      (line  405)
   9953 * BFD_RELOC_FRV_FUNCDESC_GOTLO:          howto manager.      (line  406)
   9954 * BFD_RELOC_FRV_FUNCDESC_GOTOFF12:       howto manager.      (line  408)
   9955 * BFD_RELOC_FRV_FUNCDESC_GOTOFFHI:       howto manager.      (line  409)
   9956 * BFD_RELOC_FRV_FUNCDESC_GOTOFFLO:       howto manager.      (line  410)
   9957 * BFD_RELOC_FRV_FUNCDESC_VALUE:          howto manager.      (line  407)
   9958 * BFD_RELOC_FRV_GETTLSOFF:               howto manager.      (line  414)
   9959 * BFD_RELOC_FRV_GETTLSOFF_RELAX:         howto manager.      (line  427)
   9960 * BFD_RELOC_FRV_GOT12:                   howto manager.      (line  400)
   9961 * BFD_RELOC_FRV_GOTHI:                   howto manager.      (line  401)
   9962 * BFD_RELOC_FRV_GOTLO:                   howto manager.      (line  402)
   9963 * BFD_RELOC_FRV_GOTOFF12:                howto manager.      (line  411)
   9964 * BFD_RELOC_FRV_GOTOFFHI:                howto manager.      (line  412)
   9965 * BFD_RELOC_FRV_GOTOFFLO:                howto manager.      (line  413)
   9966 * BFD_RELOC_FRV_GOTTLSDESC12:            howto manager.      (line  416)
   9967 * BFD_RELOC_FRV_GOTTLSDESCHI:            howto manager.      (line  417)
   9968 * BFD_RELOC_FRV_GOTTLSDESCLO:            howto manager.      (line  418)
   9969 * BFD_RELOC_FRV_GOTTLSOFF12:             howto manager.      (line  422)
   9970 * BFD_RELOC_FRV_GOTTLSOFFHI:             howto manager.      (line  423)
   9971 * BFD_RELOC_FRV_GOTTLSOFFLO:             howto manager.      (line  424)
   9972 * BFD_RELOC_FRV_GPREL12:                 howto manager.      (line  395)
   9973 * BFD_RELOC_FRV_GPREL32:                 howto manager.      (line  397)
   9974 * BFD_RELOC_FRV_GPRELHI:                 howto manager.      (line  398)
   9975 * BFD_RELOC_FRV_GPRELLO:                 howto manager.      (line  399)
   9976 * BFD_RELOC_FRV_GPRELU12:                howto manager.      (line  396)
   9977 * BFD_RELOC_FRV_HI16:                    howto manager.      (line  394)
   9978 * BFD_RELOC_FRV_LABEL16:                 howto manager.      (line  391)
   9979 * BFD_RELOC_FRV_LABEL24:                 howto manager.      (line  392)
   9980 * BFD_RELOC_FRV_LO16:                    howto manager.      (line  393)
   9981 * BFD_RELOC_FRV_TLSDESC_RELAX:           howto manager.      (line  426)
   9982 * BFD_RELOC_FRV_TLSDESC_VALUE:           howto manager.      (line  415)
   9983 * BFD_RELOC_FRV_TLSMOFF:                 howto manager.      (line  429)
   9984 * BFD_RELOC_FRV_TLSMOFF12:               howto manager.      (line  419)
   9985 * BFD_RELOC_FRV_TLSMOFFHI:               howto manager.      (line  420)
   9986 * BFD_RELOC_FRV_TLSMOFFLO:               howto manager.      (line  421)
   9987 * BFD_RELOC_FRV_TLSOFF:                  howto manager.      (line  425)
   9988 * BFD_RELOC_FRV_TLSOFF_RELAX:            howto manager.      (line  428)
   9989 * BFD_RELOC_GPREL16:                     howto manager.      (line  106)
   9990 * BFD_RELOC_GPREL32:                     howto manager.      (line  107)
   9991 * BFD_RELOC_H8_DIR16A8:                  howto manager.      (line 1942)
   9992 * BFD_RELOC_H8_DIR16R8:                  howto manager.      (line 1943)
   9993 * BFD_RELOC_H8_DIR24A8:                  howto manager.      (line 1944)
   9994 * BFD_RELOC_H8_DIR24R8:                  howto manager.      (line 1945)
   9995 * BFD_RELOC_H8_DIR32A16:                 howto manager.      (line 1946)
   9996 * BFD_RELOC_HI16:                        howto manager.      (line  310)
   9997 * BFD_RELOC_HI16_BASEREL:                howto manager.      (line   82)
   9998 * BFD_RELOC_HI16_GOTOFF:                 howto manager.      (line   57)
   9999 * BFD_RELOC_HI16_PCREL:                  howto manager.      (line  322)
   10000 * BFD_RELOC_HI16_PLTOFF:                 howto manager.      (line   69)
   10001 * BFD_RELOC_HI16_S:                      howto manager.      (line  313)
   10002 * BFD_RELOC_HI16_S_BASEREL:              howto manager.      (line   83)
   10003 * BFD_RELOC_HI16_S_GOTOFF:               howto manager.      (line   58)
   10004 * BFD_RELOC_HI16_S_PCREL:                howto manager.      (line  325)
   10005 * BFD_RELOC_HI16_S_PLTOFF:               howto manager.      (line   70)
   10006 * BFD_RELOC_HI22:                        howto manager.      (line  101)
   10007 * BFD_RELOC_I370_D12:                    howto manager.      (line  644)
   10008 * BFD_RELOC_I960_CALLJ:                  howto manager.      (line  113)
   10009 * BFD_RELOC_IA64_COPY:                   howto manager.      (line 1703)
   10010 * BFD_RELOC_IA64_DIR32LSB:               howto manager.      (line 1648)
   10011 * BFD_RELOC_IA64_DIR32MSB:               howto manager.      (line 1647)
   10012 * BFD_RELOC_IA64_DIR64LSB:               howto manager.      (line 1650)
   10013 * BFD_RELOC_IA64_DIR64MSB:               howto manager.      (line 1649)
   10014 * BFD_RELOC_IA64_DTPMOD64LSB:            howto manager.      (line 1713)
   10015 * BFD_RELOC_IA64_DTPMOD64MSB:            howto manager.      (line 1712)
   10016 * BFD_RELOC_IA64_DTPREL14:               howto manager.      (line 1715)
   10017 * BFD_RELOC_IA64_DTPREL22:               howto manager.      (line 1716)
   10018 * BFD_RELOC_IA64_DTPREL32LSB:            howto manager.      (line 1719)
   10019 * BFD_RELOC_IA64_DTPREL32MSB:            howto manager.      (line 1718)
   10020 * BFD_RELOC_IA64_DTPREL64I:              howto manager.      (line 1717)
   10021 * BFD_RELOC_IA64_DTPREL64LSB:            howto manager.      (line 1721)
   10022 * BFD_RELOC_IA64_DTPREL64MSB:            howto manager.      (line 1720)
   10023 * BFD_RELOC_IA64_FPTR32LSB:              howto manager.      (line 1665)
   10024 * BFD_RELOC_IA64_FPTR32MSB:              howto manager.      (line 1664)
   10025 * BFD_RELOC_IA64_FPTR64I:                howto manager.      (line 1663)
   10026 * BFD_RELOC_IA64_FPTR64LSB:              howto manager.      (line 1667)
   10027 * BFD_RELOC_IA64_FPTR64MSB:              howto manager.      (line 1666)
   10028 * BFD_RELOC_IA64_GPREL22:                howto manager.      (line 1651)
   10029 * BFD_RELOC_IA64_GPREL32LSB:             howto manager.      (line 1654)
   10030 * BFD_RELOC_IA64_GPREL32MSB:             howto manager.      (line 1653)
   10031 * BFD_RELOC_IA64_GPREL64I:               howto manager.      (line 1652)
   10032 * BFD_RELOC_IA64_GPREL64LSB:             howto manager.      (line 1656)
   10033 * BFD_RELOC_IA64_GPREL64MSB:             howto manager.      (line 1655)
   10034 * BFD_RELOC_IA64_IMM14:                  howto manager.      (line 1644)
   10035 * BFD_RELOC_IA64_IMM22:                  howto manager.      (line 1645)
   10036 * BFD_RELOC_IA64_IMM64:                  howto manager.      (line 1646)
   10037 * BFD_RELOC_IA64_IPLTLSB:                howto manager.      (line 1702)
   10038 * BFD_RELOC_IA64_IPLTMSB:                howto manager.      (line 1701)
   10039 * BFD_RELOC_IA64_LDXMOV:                 howto manager.      (line 1705)
   10040 * BFD_RELOC_IA64_LTOFF22:                howto manager.      (line 1657)
   10041 * BFD_RELOC_IA64_LTOFF22X:               howto manager.      (line 1704)
   10042 * BFD_RELOC_IA64_LTOFF64I:               howto manager.      (line 1658)
   10043 * BFD_RELOC_IA64_LTOFF_DTPMOD22:         howto manager.      (line 1714)
   10044 * BFD_RELOC_IA64_LTOFF_DTPREL22:         howto manager.      (line 1722)
   10045 * BFD_RELOC_IA64_LTOFF_FPTR22:           howto manager.      (line 1679)
   10046 * BFD_RELOC_IA64_LTOFF_FPTR32LSB:        howto manager.      (line 1682)
   10047 * BFD_RELOC_IA64_LTOFF_FPTR32MSB:        howto manager.      (line 1681)
   10048 * BFD_RELOC_IA64_LTOFF_FPTR64I:          howto manager.      (line 1680)
   10049 * BFD_RELOC_IA64_LTOFF_FPTR64LSB:        howto manager.      (line 1684)
   10050 * BFD_RELOC_IA64_LTOFF_FPTR64MSB:        howto manager.      (line 1683)
   10051 * BFD_RELOC_IA64_LTOFF_TPREL22:          howto manager.      (line 1711)
   10052 * BFD_RELOC_IA64_LTV32LSB:               howto manager.      (line 1698)
   10053 * BFD_RELOC_IA64_LTV32MSB:               howto manager.      (line 1697)
   10054 * BFD_RELOC_IA64_LTV64LSB:               howto manager.      (line 1700)
   10055 * BFD_RELOC_IA64_LTV64MSB:               howto manager.      (line 1699)
   10056 * BFD_RELOC_IA64_PCREL21B:               howto manager.      (line 1668)
   10057 * BFD_RELOC_IA64_PCREL21BI:              howto manager.      (line 1669)
   10058 * BFD_RELOC_IA64_PCREL21F:               howto manager.      (line 1671)
   10059 * BFD_RELOC_IA64_PCREL21M:               howto manager.      (line 1670)
   10060 * BFD_RELOC_IA64_PCREL22:                howto manager.      (line 1672)
   10061 * BFD_RELOC_IA64_PCREL32LSB:             howto manager.      (line 1676)
   10062 * BFD_RELOC_IA64_PCREL32MSB:             howto manager.      (line 1675)
   10063 * BFD_RELOC_IA64_PCREL60B:               howto manager.      (line 1673)
   10064 * BFD_RELOC_IA64_PCREL64I:               howto manager.      (line 1674)
   10065 * BFD_RELOC_IA64_PCREL64LSB:             howto manager.      (line 1678)
   10066 * BFD_RELOC_IA64_PCREL64MSB:             howto manager.      (line 1677)
   10067 * BFD_RELOC_IA64_PLTOFF22:               howto manager.      (line 1659)
   10068 * BFD_RELOC_IA64_PLTOFF64I:              howto manager.      (line 1660)
   10069 * BFD_RELOC_IA64_PLTOFF64LSB:            howto manager.      (line 1662)
   10070 * BFD_RELOC_IA64_PLTOFF64MSB:            howto manager.      (line 1661)
   10071 * BFD_RELOC_IA64_REL32LSB:               howto manager.      (line 1694)
   10072 * BFD_RELOC_IA64_REL32MSB:               howto manager.      (line 1693)
   10073 * BFD_RELOC_IA64_REL64LSB:               howto manager.      (line 1696)
   10074 * BFD_RELOC_IA64_REL64MSB:               howto manager.      (line 1695)
   10075 * BFD_RELOC_IA64_SECREL32LSB:            howto manager.      (line 1690)
   10076 * BFD_RELOC_IA64_SECREL32MSB:            howto manager.      (line 1689)
   10077 * BFD_RELOC_IA64_SECREL64LSB:            howto manager.      (line 1692)
   10078 * BFD_RELOC_IA64_SECREL64MSB:            howto manager.      (line 1691)
   10079 * BFD_RELOC_IA64_SEGREL32LSB:            howto manager.      (line 1686)
   10080 * BFD_RELOC_IA64_SEGREL32MSB:            howto manager.      (line 1685)
   10081 * BFD_RELOC_IA64_SEGREL64LSB:            howto manager.      (line 1688)
   10082 * BFD_RELOC_IA64_SEGREL64MSB:            howto manager.      (line 1687)
   10083 * BFD_RELOC_IA64_TPREL14:                howto manager.      (line 1706)
   10084 * BFD_RELOC_IA64_TPREL22:                howto manager.      (line 1707)
   10085 * BFD_RELOC_IA64_TPREL64I:               howto manager.      (line 1708)
   10086 * BFD_RELOC_IA64_TPREL64LSB:             howto manager.      (line 1710)
   10087 * BFD_RELOC_IA64_TPREL64MSB:             howto manager.      (line 1709)
   10088 * BFD_RELOC_IP2K_ADDR16CJP:              howto manager.      (line 1596)
   10089 * BFD_RELOC_IP2K_BANK:                   howto manager.      (line 1593)
   10090 * BFD_RELOC_IP2K_EX8DATA:                howto manager.      (line 1604)
   10091 * BFD_RELOC_IP2K_FR9:                    howto manager.      (line 1590)
   10092 * BFD_RELOC_IP2K_FR_OFFSET:              howto manager.      (line 1617)
   10093 * BFD_RELOC_IP2K_HI8DATA:                howto manager.      (line 1603)
   10094 * BFD_RELOC_IP2K_HI8INSN:                howto manager.      (line 1608)
   10095 * BFD_RELOC_IP2K_LO8DATA:                howto manager.      (line 1602)
   10096 * BFD_RELOC_IP2K_LO8INSN:                howto manager.      (line 1607)
   10097 * BFD_RELOC_IP2K_PAGE3:                  howto manager.      (line 1599)
   10098 * BFD_RELOC_IP2K_PC_SKIP:                howto manager.      (line 1611)
   10099 * BFD_RELOC_IP2K_TEXT:                   howto manager.      (line 1614)
   10100 * BFD_RELOC_IQ2000_OFFSET_16:            howto manager.      (line 1996)
   10101 * BFD_RELOC_IQ2000_OFFSET_21:            howto manager.      (line 1997)
   10102 * BFD_RELOC_IQ2000_UHI16:                howto manager.      (line 1998)
   10103 * BFD_RELOC_LO10:                        howto manager.      (line  102)
   10104 * BFD_RELOC_LO16:                        howto manager.      (line  319)
   10105 * BFD_RELOC_LO16_BASEREL:                howto manager.      (line   81)
   10106 * BFD_RELOC_LO16_GOTOFF:                 howto manager.      (line   56)
   10107 * BFD_RELOC_LO16_PCREL:                  howto manager.      (line  328)
   10108 * BFD_RELOC_LO16_PLTOFF:                 howto manager.      (line   68)
   10109 * BFD_RELOC_M32C_HI8:                    howto manager.      (line 1088)
   10110 * BFD_RELOC_M32C_RL_1ADDR:               howto manager.      (line 1090)
   10111 * BFD_RELOC_M32C_RL_2ADDR:               howto manager.      (line 1091)
   10112 * BFD_RELOC_M32C_RL_JUMP:                howto manager.      (line 1089)
   10113 * BFD_RELOC_M32R_10_PCREL:               howto manager.      (line 1098)
   10114 * BFD_RELOC_M32R_18_PCREL:               howto manager.      (line 1102)
   10115 * BFD_RELOC_M32R_24:                     howto manager.      (line 1094)
   10116 * BFD_RELOC_M32R_26_PCREL:               howto manager.      (line 1105)
   10117 * BFD_RELOC_M32R_26_PLTREL:              howto manager.      (line 1124)
   10118 * BFD_RELOC_M32R_COPY:                   howto manager.      (line 1125)
   10119 * BFD_RELOC_M32R_GLOB_DAT:               howto manager.      (line 1126)
   10120 * BFD_RELOC_M32R_GOT16_HI_SLO:           howto manager.      (line 1135)
   10121 * BFD_RELOC_M32R_GOT16_HI_ULO:           howto manager.      (line 1134)
   10122 * BFD_RELOC_M32R_GOT16_LO:               howto manager.      (line 1136)
   10123 * BFD_RELOC_M32R_GOT24:                  howto manager.      (line 1123)
   10124 * BFD_RELOC_M32R_GOTOFF:                 howto manager.      (line 1129)
   10125 * BFD_RELOC_M32R_GOTOFF_HI_SLO:          howto manager.      (line 1131)
   10126 * BFD_RELOC_M32R_GOTOFF_HI_ULO:          howto manager.      (line 1130)
   10127 * BFD_RELOC_M32R_GOTOFF_LO:              howto manager.      (line 1132)
   10128 * BFD_RELOC_M32R_GOTPC24:                howto manager.      (line 1133)
   10129 * BFD_RELOC_M32R_GOTPC_HI_SLO:           howto manager.      (line 1138)
   10130 * BFD_RELOC_M32R_GOTPC_HI_ULO:           howto manager.      (line 1137)
   10131 * BFD_RELOC_M32R_GOTPC_LO:               howto manager.      (line 1139)
   10132 * BFD_RELOC_M32R_HI16_SLO:               howto manager.      (line 1112)
   10133 * BFD_RELOC_M32R_HI16_ULO:               howto manager.      (line 1108)
   10134 * BFD_RELOC_M32R_JMP_SLOT:               howto manager.      (line 1127)
   10135 * BFD_RELOC_M32R_LO16:                   howto manager.      (line 1116)
   10136 * BFD_RELOC_M32R_RELATIVE:               howto manager.      (line 1128)
   10137 * BFD_RELOC_M32R_SDA16:                  howto manager.      (line 1119)
   10138 * BFD_RELOC_M68HC11_24:                  howto manager.      (line 1758)
   10139 * BFD_RELOC_M68HC11_3B:                  howto manager.      (line 1733)
   10140 * BFD_RELOC_M68HC11_HI8:                 howto manager.      (line 1725)
   10141 * BFD_RELOC_M68HC11_LO16:                howto manager.      (line 1747)
   10142 * BFD_RELOC_M68HC11_LO8:                 howto manager.      (line 1729)
   10143 * BFD_RELOC_M68HC11_PAGE:                howto manager.      (line 1753)
   10144 * BFD_RELOC_M68HC11_RL_GROUP:            howto manager.      (line 1742)
   10145 * BFD_RELOC_M68HC11_RL_JUMP:             howto manager.      (line 1736)
   10146 * BFD_RELOC_M68HC12_5B:                  howto manager.      (line 1764)
   10147 * BFD_RELOC_MCORE_PCREL_32:              howto manager.      (line 1279)
   10148 * BFD_RELOC_MCORE_PCREL_IMM11BY2:        howto manager.      (line 1277)
   10149 * BFD_RELOC_MCORE_PCREL_IMM4BY2:         howto manager.      (line 1278)
   10150 * BFD_RELOC_MCORE_PCREL_IMM8BY4:         howto manager.      (line 1276)
   10151 * BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2:    howto manager.      (line 1280)
   10152 * BFD_RELOC_MCORE_RVA:                   howto manager.      (line 1281)
   10153 * BFD_RELOC_MEP_16:                      howto manager.      (line 1285)
   10154 * BFD_RELOC_MEP_32:                      howto manager.      (line 1286)
   10155 * BFD_RELOC_MEP_8:                       howto manager.      (line 1284)
   10156 * BFD_RELOC_MEP_ADDR24A4:                howto manager.      (line 1301)
   10157 * BFD_RELOC_MEP_GNU_VTENTRY:             howto manager.      (line 1303)
   10158 * BFD_RELOC_MEP_GNU_VTINHERIT:           howto manager.      (line 1302)
   10159 * BFD_RELOC_MEP_GPREL:                   howto manager.      (line 1295)
   10160 * BFD_RELOC_MEP_HI16S:                   howto manager.      (line 1294)
   10161 * BFD_RELOC_MEP_HI16U:                   howto manager.      (line 1293)
   10162 * BFD_RELOC_MEP_LOW16:                   howto manager.      (line 1292)
   10163 * BFD_RELOC_MEP_PCABS24A2:               howto manager.      (line 1291)
   10164 * BFD_RELOC_MEP_PCREL12A2:               howto manager.      (line 1288)
   10165 * BFD_RELOC_MEP_PCREL17A2:               howto manager.      (line 1289)
   10166 * BFD_RELOC_MEP_PCREL24A2:               howto manager.      (line 1290)
   10167 * BFD_RELOC_MEP_PCREL8A2:                howto manager.      (line 1287)
   10168 * BFD_RELOC_MEP_TPREL:                   howto manager.      (line 1296)
   10169 * BFD_RELOC_MEP_TPREL7:                  howto manager.      (line 1297)
   10170 * BFD_RELOC_MEP_TPREL7A2:                howto manager.      (line 1298)
   10171 * BFD_RELOC_MEP_TPREL7A4:                howto manager.      (line 1299)
   10172 * BFD_RELOC_MEP_UIMM24:                  howto manager.      (line 1300)
   10173 * BFD_RELOC_MIPS16_CALL16:               howto manager.      (line  332)
   10174 * BFD_RELOC_MIPS16_GOT16:                howto manager.      (line  331)
   10175 * BFD_RELOC_MIPS16_GPREL:                howto manager.      (line  307)
   10176 * BFD_RELOC_MIPS16_HI16:                 howto manager.      (line  336)
   10177 * BFD_RELOC_MIPS16_HI16_S:               howto manager.      (line  339)
   10178 * BFD_RELOC_MIPS16_JMP:                  howto manager.      (line  304)
   10179 * BFD_RELOC_MIPS16_LO16:                 howto manager.      (line  345)
   10180 * BFD_RELOC_MIPS_CALL16:                 howto manager.      (line  352)
   10181 * BFD_RELOC_MIPS_CALL_HI16:              howto manager.      (line  355)
   10182 * BFD_RELOC_MIPS_CALL_LO16:              howto manager.      (line  356)
   10183 * BFD_RELOC_MIPS_COPY:                   howto manager.      (line  387)
   10184 * BFD_RELOC_MIPS_DELETE:                 howto manager.      (line  365)
   10185 * BFD_RELOC_MIPS_GOT16:                  howto manager.      (line  351)
   10186 * BFD_RELOC_MIPS_GOT_DISP:               howto manager.      (line  360)
   10187 * BFD_RELOC_MIPS_GOT_HI16:               howto manager.      (line  353)
   10188 * BFD_RELOC_MIPS_GOT_LO16:               howto manager.      (line  354)
   10189 * BFD_RELOC_MIPS_GOT_OFST:               howto manager.      (line  359)
   10190 * BFD_RELOC_MIPS_GOT_PAGE:               howto manager.      (line  358)
   10191 * BFD_RELOC_MIPS_HIGHER:                 howto manager.      (line  367)
   10192 * BFD_RELOC_MIPS_HIGHEST:                howto manager.      (line  366)
   10193 * BFD_RELOC_MIPS_INSERT_A:               howto manager.      (line  363)
   10194 * BFD_RELOC_MIPS_INSERT_B:               howto manager.      (line  364)
   10195 * BFD_RELOC_MIPS_JALR:                   howto manager.      (line  371)
   10196 * BFD_RELOC_MIPS_JMP:                    howto manager.      (line  300)
   10197 * BFD_RELOC_MIPS_JUMP_SLOT:              howto manager.      (line  388)
   10198 * BFD_RELOC_MIPS_LITERAL:                howto manager.      (line  348)
   10199 * BFD_RELOC_MIPS_REL16:                  howto manager.      (line  369)
   10200 * BFD_RELOC_MIPS_RELGOT:                 howto manager.      (line  370)
   10201 * BFD_RELOC_MIPS_SCN_DISP:               howto manager.      (line  368)
   10202 * BFD_RELOC_MIPS_SHIFT5:                 howto manager.      (line  361)
   10203 * BFD_RELOC_MIPS_SHIFT6:                 howto manager.      (line  362)
   10204 * BFD_RELOC_MIPS_SUB:                    howto manager.      (line  357)
   10205 * BFD_RELOC_MIPS_TLS_DTPMOD32:           howto manager.      (line  372)
   10206 * BFD_RELOC_MIPS_TLS_DTPMOD64:           howto manager.      (line  374)
   10207 * BFD_RELOC_MIPS_TLS_DTPREL32:           howto manager.      (line  373)
   10208 * BFD_RELOC_MIPS_TLS_DTPREL64:           howto manager.      (line  375)
   10209 * BFD_RELOC_MIPS_TLS_DTPREL_HI16:        howto manager.      (line  378)
   10210 * BFD_RELOC_MIPS_TLS_DTPREL_LO16:        howto manager.      (line  379)
   10211 * BFD_RELOC_MIPS_TLS_GD:                 howto manager.      (line  376)
   10212 * BFD_RELOC_MIPS_TLS_GOTTPREL:           howto manager.      (line  380)
   10213 * BFD_RELOC_MIPS_TLS_LDM:                howto manager.      (line  377)
   10214 * BFD_RELOC_MIPS_TLS_TPREL32:            howto manager.      (line  381)
   10215 * BFD_RELOC_MIPS_TLS_TPREL64:            howto manager.      (line  382)
   10216 * BFD_RELOC_MIPS_TLS_TPREL_HI16:         howto manager.      (line  383)
   10217 * BFD_RELOC_MIPS_TLS_TPREL_LO16:         howto manager.      (line  384)
   10218 * BFD_RELOC_MMIX_ADDR19:                 howto manager.      (line 1332)
   10219 * BFD_RELOC_MMIX_ADDR27:                 howto manager.      (line 1336)
   10220 * BFD_RELOC_MMIX_BASE_PLUS_OFFSET:       howto manager.      (line 1348)
   10221 * BFD_RELOC_MMIX_CBRANCH:                howto manager.      (line 1312)
   10222 * BFD_RELOC_MMIX_CBRANCH_1:              howto manager.      (line 1314)
   10223 * BFD_RELOC_MMIX_CBRANCH_2:              howto manager.      (line 1315)
   10224 * BFD_RELOC_MMIX_CBRANCH_3:              howto manager.      (line 1316)
   10225 * BFD_RELOC_MMIX_CBRANCH_J:              howto manager.      (line 1313)
   10226 * BFD_RELOC_MMIX_GETA:                   howto manager.      (line 1306)
   10227 * BFD_RELOC_MMIX_GETA_1:                 howto manager.      (line 1307)
   10228 * BFD_RELOC_MMIX_GETA_2:                 howto manager.      (line 1308)
   10229 * BFD_RELOC_MMIX_GETA_3:                 howto manager.      (line 1309)
   10230 * BFD_RELOC_MMIX_JMP:                    howto manager.      (line 1326)
   10231 * BFD_RELOC_MMIX_JMP_1:                  howto manager.      (line 1327)
   10232 * BFD_RELOC_MMIX_JMP_2:                  howto manager.      (line 1328)
   10233 * BFD_RELOC_MMIX_JMP_3:                  howto manager.      (line 1329)
   10234 * BFD_RELOC_MMIX_LOCAL:                  howto manager.      (line 1352)
   10235 * BFD_RELOC_MMIX_PUSHJ:                  howto manager.      (line 1319)
   10236 * BFD_RELOC_MMIX_PUSHJ_1:                howto manager.      (line 1320)
   10237 * BFD_RELOC_MMIX_PUSHJ_2:                howto manager.      (line 1321)
   10238 * BFD_RELOC_MMIX_PUSHJ_3:                howto manager.      (line 1322)
   10239 * BFD_RELOC_MMIX_PUSHJ_STUBBABLE:        howto manager.      (line 1323)
   10240 * BFD_RELOC_MMIX_REG:                    howto manager.      (line 1344)
   10241 * BFD_RELOC_MMIX_REG_OR_BYTE:            howto manager.      (line 1340)
   10242 * BFD_RELOC_MN10300_16_PCREL:            howto manager.      (line 1214)
   10243 * BFD_RELOC_MN10300_32_PCREL:            howto manager.      (line 1210)
   10244 * BFD_RELOC_MN10300_ALIGN:               howto manager.      (line  464)
   10245 * BFD_RELOC_MN10300_COPY:                howto manager.      (line  447)
   10246 * BFD_RELOC_MN10300_GLOB_DAT:            howto manager.      (line  450)
   10247 * BFD_RELOC_MN10300_GOT16:               howto manager.      (line  443)
   10248 * BFD_RELOC_MN10300_GOT24:               howto manager.      (line  439)
   10249 * BFD_RELOC_MN10300_GOT32:               howto manager.      (line  435)
   10250 * BFD_RELOC_MN10300_GOTOFF24:            howto manager.      (line  432)
   10251 * BFD_RELOC_MN10300_JMP_SLOT:            howto manager.      (line  453)
   10252 * BFD_RELOC_MN10300_RELATIVE:            howto manager.      (line  456)
   10253 * BFD_RELOC_MN10300_SYM_DIFF:            howto manager.      (line  459)
   10254 * BFD_RELOC_MSP430_10_PCREL:             howto manager.      (line 1987)
   10255 * BFD_RELOC_MSP430_16:                   howto manager.      (line 1989)
   10256 * BFD_RELOC_MSP430_16_BYTE:              howto manager.      (line 1991)
   10257 * BFD_RELOC_MSP430_16_PCREL:             howto manager.      (line 1988)
   10258 * BFD_RELOC_MSP430_16_PCREL_BYTE:        howto manager.      (line 1990)
   10259 * BFD_RELOC_MSP430_2X_PCREL:             howto manager.      (line 1992)
   10260 * BFD_RELOC_MSP430_RL_PCREL:             howto manager.      (line 1993)
   10261 * BFD_RELOC_MT_GNU_VTENTRY:              howto manager.      (line 1981)
   10262 * BFD_RELOC_MT_GNU_VTINHERIT:            howto manager.      (line 1978)
   10263 * BFD_RELOC_MT_HI16:                     howto manager.      (line 1972)
   10264 * BFD_RELOC_MT_LO16:                     howto manager.      (line 1975)
   10265 * BFD_RELOC_MT_PC16:                     howto manager.      (line 1969)
   10266 * BFD_RELOC_MT_PCINSN8:                  howto manager.      (line 1984)
   10267 * BFD_RELOC_NONE:                        howto manager.      (line  116)
   10268 * BFD_RELOC_NS32K_DISP_16:               howto manager.      (line  528)
   10269 * BFD_RELOC_NS32K_DISP_16_PCREL:         howto manager.      (line  531)
   10270 * BFD_RELOC_NS32K_DISP_32:               howto manager.      (line  529)
   10271 * BFD_RELOC_NS32K_DISP_32_PCREL:         howto manager.      (line  532)
   10272 * BFD_RELOC_NS32K_DISP_8:                howto manager.      (line  527)
   10273 * BFD_RELOC_NS32K_DISP_8_PCREL:          howto manager.      (line  530)
   10274 * BFD_RELOC_NS32K_IMM_16:                howto manager.      (line  522)
   10275 * BFD_RELOC_NS32K_IMM_16_PCREL:          howto manager.      (line  525)
   10276 * BFD_RELOC_NS32K_IMM_32:                howto manager.      (line  523)
   10277 * BFD_RELOC_NS32K_IMM_32_PCREL:          howto manager.      (line  526)
   10278 * BFD_RELOC_NS32K_IMM_8:                 howto manager.      (line  521)
   10279 * BFD_RELOC_NS32K_IMM_8_PCREL:           howto manager.      (line  524)
   10280 * BFD_RELOC_OPENRISC_ABS_26:             howto manager.      (line 1938)
   10281 * BFD_RELOC_OPENRISC_REL_26:             howto manager.      (line 1939)
   10282 * BFD_RELOC_PDP11_DISP_6_PCREL:          howto manager.      (line  536)
   10283 * BFD_RELOC_PDP11_DISP_8_PCREL:          howto manager.      (line  535)
   10284 * BFD_RELOC_PJ_CODE_DIR16:               howto manager.      (line  541)
   10285 * BFD_RELOC_PJ_CODE_DIR32:               howto manager.      (line  542)
   10286 * BFD_RELOC_PJ_CODE_HI16:                howto manager.      (line  539)
   10287 * BFD_RELOC_PJ_CODE_LO16:                howto manager.      (line  540)
   10288 * BFD_RELOC_PJ_CODE_REL16:               howto manager.      (line  543)
   10289 * BFD_RELOC_PJ_CODE_REL32:               howto manager.      (line  544)
   10290 * BFD_RELOC_PPC64_ADDR16_DS:             howto manager.      (line  589)
   10291 * BFD_RELOC_PPC64_ADDR16_LO_DS:          howto manager.      (line  590)
   10292 * BFD_RELOC_PPC64_DTPREL16_DS:           howto manager.      (line  636)
   10293 * BFD_RELOC_PPC64_DTPREL16_HIGHER:       howto manager.      (line  638)
   10294 * BFD_RELOC_PPC64_DTPREL16_HIGHERA:      howto manager.      (line  639)
   10295 * BFD_RELOC_PPC64_DTPREL16_HIGHEST:      howto manager.      (line  640)
   10296 * BFD_RELOC_PPC64_DTPREL16_HIGHESTA:     howto manager.      (line  641)
   10297 * BFD_RELOC_PPC64_DTPREL16_LO_DS:        howto manager.      (line  637)
   10298 * BFD_RELOC_PPC64_GOT16_DS:              howto manager.      (line  591)
   10299 * BFD_RELOC_PPC64_GOT16_LO_DS:           howto manager.      (line  592)
   10300 * BFD_RELOC_PPC64_HIGHER:                howto manager.      (line  577)
   10301 * BFD_RELOC_PPC64_HIGHER_S:              howto manager.      (line  578)
   10302 * BFD_RELOC_PPC64_HIGHEST:               howto manager.      (line  579)
   10303 * BFD_RELOC_PPC64_HIGHEST_S:             howto manager.      (line  580)
   10304 * BFD_RELOC_PPC64_PLT16_LO_DS:           howto manager.      (line  593)
   10305 * BFD_RELOC_PPC64_PLTGOT16:              howto manager.      (line  585)
   10306 * BFD_RELOC_PPC64_PLTGOT16_DS:           howto manager.      (line  598)
   10307 * BFD_RELOC_PPC64_PLTGOT16_HA:           howto manager.      (line  588)
   10308 * BFD_RELOC_PPC64_PLTGOT16_HI:           howto manager.      (line  587)
   10309 * BFD_RELOC_PPC64_PLTGOT16_LO:           howto manager.      (line  586)
   10310 * BFD_RELOC_PPC64_PLTGOT16_LO_DS:        howto manager.      (line  599)
   10311 * BFD_RELOC_PPC64_SECTOFF_DS:            howto manager.      (line  594)
   10312 * BFD_RELOC_PPC64_SECTOFF_LO_DS:         howto manager.      (line  595)
   10313 * BFD_RELOC_PPC64_TOC:                   howto manager.      (line  584)
   10314 * BFD_RELOC_PPC64_TOC16_DS:              howto manager.      (line  596)
   10315 * BFD_RELOC_PPC64_TOC16_HA:              howto manager.      (line  583)
   10316 * BFD_RELOC_PPC64_TOC16_HI:              howto manager.      (line  582)
   10317 * BFD_RELOC_PPC64_TOC16_LO:              howto manager.      (line  581)
   10318 * BFD_RELOC_PPC64_TOC16_LO_DS:           howto manager.      (line  597)
   10319 * BFD_RELOC_PPC64_TPREL16_DS:            howto manager.      (line  630)
   10320 * BFD_RELOC_PPC64_TPREL16_HIGHER:        howto manager.      (line  632)
   10321 * BFD_RELOC_PPC64_TPREL16_HIGHERA:       howto manager.      (line  633)
   10322 * BFD_RELOC_PPC64_TPREL16_HIGHEST:       howto manager.      (line  634)
   10323 * BFD_RELOC_PPC64_TPREL16_HIGHESTA:      howto manager.      (line  635)
   10324 * BFD_RELOC_PPC64_TPREL16_LO_DS:         howto manager.      (line  631)
   10325 * BFD_RELOC_PPC_B16:                     howto manager.      (line  550)
   10326 * BFD_RELOC_PPC_B16_BRNTAKEN:            howto manager.      (line  552)
   10327 * BFD_RELOC_PPC_B16_BRTAKEN:             howto manager.      (line  551)
   10328 * BFD_RELOC_PPC_B26:                     howto manager.      (line  547)
   10329 * BFD_RELOC_PPC_BA16:                    howto manager.      (line  553)
   10330 * BFD_RELOC_PPC_BA16_BRNTAKEN:           howto manager.      (line  555)
   10331 * BFD_RELOC_PPC_BA16_BRTAKEN:            howto manager.      (line  554)
   10332 * BFD_RELOC_PPC_BA26:                    howto manager.      (line  548)
   10333 * BFD_RELOC_PPC_COPY:                    howto manager.      (line  556)
   10334 * BFD_RELOC_PPC_DTPMOD:                  howto manager.      (line  603)
   10335 * BFD_RELOC_PPC_DTPREL:                  howto manager.      (line  613)
   10336 * BFD_RELOC_PPC_DTPREL16:                howto manager.      (line  609)
   10337 * BFD_RELOC_PPC_DTPREL16_HA:             howto manager.      (line  612)
   10338 * BFD_RELOC_PPC_DTPREL16_HI:             howto manager.      (line  611)
   10339 * BFD_RELOC_PPC_DTPREL16_LO:             howto manager.      (line  610)
   10340 * BFD_RELOC_PPC_EMB_BIT_FLD:             howto manager.      (line  575)
   10341 * BFD_RELOC_PPC_EMB_MRKREF:              howto manager.      (line  570)
   10342 * BFD_RELOC_PPC_EMB_NADDR16:             howto manager.      (line  562)
   10343 * BFD_RELOC_PPC_EMB_NADDR16_HA:          howto manager.      (line  565)
   10344 * BFD_RELOC_PPC_EMB_NADDR16_HI:          howto manager.      (line  564)
   10345 * BFD_RELOC_PPC_EMB_NADDR16_LO:          howto manager.      (line  563)
   10346 * BFD_RELOC_PPC_EMB_NADDR32:             howto manager.      (line  561)
   10347 * BFD_RELOC_PPC_EMB_RELSDA:              howto manager.      (line  576)
   10348 * BFD_RELOC_PPC_EMB_RELSEC16:            howto manager.      (line  571)
   10349 * BFD_RELOC_PPC_EMB_RELST_HA:            howto manager.      (line  574)
   10350 * BFD_RELOC_PPC_EMB_RELST_HI:            howto manager.      (line  573)
   10351 * BFD_RELOC_PPC_EMB_RELST_LO:            howto manager.      (line  572)
   10352 * BFD_RELOC_PPC_EMB_SDA21:               howto manager.      (line  569)
   10353 * BFD_RELOC_PPC_EMB_SDA2I16:             howto manager.      (line  567)
   10354 * BFD_RELOC_PPC_EMB_SDA2REL:             howto manager.      (line  568)
   10355 * BFD_RELOC_PPC_EMB_SDAI16:              howto manager.      (line  566)
   10356 * BFD_RELOC_PPC_GLOB_DAT:                howto manager.      (line  557)
   10357 * BFD_RELOC_PPC_GOT_DTPREL16:            howto manager.      (line  626)
   10358 * BFD_RELOC_PPC_GOT_DTPREL16_HA:         howto manager.      (line  629)
   10359 * BFD_RELOC_PPC_GOT_DTPREL16_HI:         howto manager.      (line  628)
   10360 * BFD_RELOC_PPC_GOT_DTPREL16_LO:         howto manager.      (line  627)
   10361 * BFD_RELOC_PPC_GOT_TLSGD16:             howto manager.      (line  614)
   10362 * BFD_RELOC_PPC_GOT_TLSGD16_HA:          howto manager.      (line  617)
   10363 * BFD_RELOC_PPC_GOT_TLSGD16_HI:          howto manager.      (line  616)
   10364 * BFD_RELOC_PPC_GOT_TLSGD16_LO:          howto manager.      (line  615)
   10365 * BFD_RELOC_PPC_GOT_TLSLD16:             howto manager.      (line  618)
   10366 * BFD_RELOC_PPC_GOT_TLSLD16_HA:          howto manager.      (line  621)
   10367 * BFD_RELOC_PPC_GOT_TLSLD16_HI:          howto manager.      (line  620)
   10368 * BFD_RELOC_PPC_GOT_TLSLD16_LO:          howto manager.      (line  619)
   10369 * BFD_RELOC_PPC_GOT_TPREL16:             howto manager.      (line  622)
   10370 * BFD_RELOC_PPC_GOT_TPREL16_HA:          howto manager.      (line  625)
   10371 * BFD_RELOC_PPC_GOT_TPREL16_HI:          howto manager.      (line  624)
   10372 * BFD_RELOC_PPC_GOT_TPREL16_LO:          howto manager.      (line  623)
   10373 * BFD_RELOC_PPC_JMP_SLOT:                howto manager.      (line  558)
   10374 * BFD_RELOC_PPC_LOCAL24PC:               howto manager.      (line  560)
   10375 * BFD_RELOC_PPC_RELATIVE:                howto manager.      (line  559)
   10376 * BFD_RELOC_PPC_TLS:                     howto manager.      (line  602)
   10377 * BFD_RELOC_PPC_TOC16:                   howto manager.      (line  549)
   10378 * BFD_RELOC_PPC_TPREL:                   howto manager.      (line  608)
   10379 * BFD_RELOC_PPC_TPREL16:                 howto manager.      (line  604)
   10380 * BFD_RELOC_PPC_TPREL16_HA:              howto manager.      (line  607)
   10381 * BFD_RELOC_PPC_TPREL16_HI:              howto manager.      (line  606)
   10382 * BFD_RELOC_PPC_TPREL16_LO:              howto manager.      (line  605)
   10383 * BFD_RELOC_RELC:                        howto manager.      (line 1955)
   10384 * BFD_RELOC_RVA:                         howto manager.      (line   85)
   10385 * BFD_RELOC_SCORE16_BRANCH:              howto manager.      (line 1581)
   10386 * BFD_RELOC_SCORE16_JMP:                 howto manager.      (line 1578)
   10387 * BFD_RELOC_SCORE_BRANCH:                howto manager.      (line 1575)
   10388 * BFD_RELOC_SCORE_CALL15:                howto manager.      (line 1586)
   10389 * BFD_RELOC_SCORE_DUMMY1:                howto manager.      (line 1565)
   10390 * BFD_RELOC_SCORE_DUMMY2:                howto manager.      (line 1571)
   10391 * BFD_RELOC_SCORE_DUMMY_HI16:            howto manager.      (line 1587)
   10392 * BFD_RELOC_SCORE_GOT15:                 howto manager.      (line 1584)
   10393 * BFD_RELOC_SCORE_GOT_LO16:              howto manager.      (line 1585)
   10394 * BFD_RELOC_SCORE_GPREL15:               howto manager.      (line 1568)
   10395 * BFD_RELOC_SCORE_JMP:                   howto manager.      (line 1572)
   10396 * BFD_RELOC_SH_ALIGN:                    howto manager.      (line  824)
   10397 * BFD_RELOC_SH_CODE:                     howto manager.      (line  825)
   10398 * BFD_RELOC_SH_COPY:                     howto manager.      (line  830)
   10399 * BFD_RELOC_SH_COPY64:                   howto manager.      (line  855)
   10400 * BFD_RELOC_SH_COUNT:                    howto manager.      (line  823)
   10401 * BFD_RELOC_SH_DATA:                     howto manager.      (line  826)
   10402 * BFD_RELOC_SH_DISP12:                   howto manager.      (line  806)
   10403 * BFD_RELOC_SH_DISP12BY2:                howto manager.      (line  807)
   10404 * BFD_RELOC_SH_DISP12BY4:                howto manager.      (line  808)
   10405 * BFD_RELOC_SH_DISP12BY8:                howto manager.      (line  809)
   10406 * BFD_RELOC_SH_DISP20:                   howto manager.      (line  810)
   10407 * BFD_RELOC_SH_DISP20BY8:                howto manager.      (line  811)
   10408 * BFD_RELOC_SH_GLOB_DAT:                 howto manager.      (line  831)
   10409 * BFD_RELOC_SH_GLOB_DAT64:               howto manager.      (line  856)
   10410 * BFD_RELOC_SH_GOT10BY4:                 howto manager.      (line  859)
   10411 * BFD_RELOC_SH_GOT10BY8:                 howto manager.      (line  860)
   10412 * BFD_RELOC_SH_GOT_HI16:                 howto manager.      (line  838)
   10413 * BFD_RELOC_SH_GOT_LOW16:                howto manager.      (line  835)
   10414 * BFD_RELOC_SH_GOT_MEDHI16:              howto manager.      (line  837)
   10415 * BFD_RELOC_SH_GOT_MEDLOW16:             howto manager.      (line  836)
   10416 * BFD_RELOC_SH_GOTOFF_HI16:              howto manager.      (line  850)
   10417 * BFD_RELOC_SH_GOTOFF_LOW16:             howto manager.      (line  847)
   10418 * BFD_RELOC_SH_GOTOFF_MEDHI16:           howto manager.      (line  849)
   10419 * BFD_RELOC_SH_GOTOFF_MEDLOW16:          howto manager.      (line  848)
   10420 * BFD_RELOC_SH_GOTPC:                    howto manager.      (line  834)
   10421 * BFD_RELOC_SH_GOTPC_HI16:               howto manager.      (line  854)
   10422 * BFD_RELOC_SH_GOTPC_LOW16:              howto manager.      (line  851)
   10423 * BFD_RELOC_SH_GOTPC_MEDHI16:            howto manager.      (line  853)
   10424 * BFD_RELOC_SH_GOTPC_MEDLOW16:           howto manager.      (line  852)
   10425 * BFD_RELOC_SH_GOTPLT10BY4:              howto manager.      (line  861)
   10426 * BFD_RELOC_SH_GOTPLT10BY8:              howto manager.      (line  862)
   10427 * BFD_RELOC_SH_GOTPLT32:                 howto manager.      (line  863)
   10428 * BFD_RELOC_SH_GOTPLT_HI16:              howto manager.      (line  842)
   10429 * BFD_RELOC_SH_GOTPLT_LOW16:             howto manager.      (line  839)
   10430 * BFD_RELOC_SH_GOTPLT_MEDHI16:           howto manager.      (line  841)
   10431 * BFD_RELOC_SH_GOTPLT_MEDLOW16:          howto manager.      (line  840)
   10432 * BFD_RELOC_SH_IMM3:                     howto manager.      (line  804)
   10433 * BFD_RELOC_SH_IMM3U:                    howto manager.      (line  805)
   10434 * BFD_RELOC_SH_IMM4:                     howto manager.      (line  812)
   10435 * BFD_RELOC_SH_IMM4BY2:                  howto manager.      (line  813)
   10436 * BFD_RELOC_SH_IMM4BY4:                  howto manager.      (line  814)
   10437 * BFD_RELOC_SH_IMM8:                     howto manager.      (line  815)
   10438 * BFD_RELOC_SH_IMM8BY2:                  howto manager.      (line  816)
   10439 * BFD_RELOC_SH_IMM8BY4:                  howto manager.      (line  817)
   10440 * BFD_RELOC_SH_IMM_HI16:                 howto manager.      (line  881)
   10441 * BFD_RELOC_SH_IMM_HI16_PCREL:           howto manager.      (line  882)
   10442 * BFD_RELOC_SH_IMM_LOW16:                howto manager.      (line  875)
   10443 * BFD_RELOC_SH_IMM_LOW16_PCREL:          howto manager.      (line  876)
   10444 * BFD_RELOC_SH_IMM_MEDHI16:              howto manager.      (line  879)
   10445 * BFD_RELOC_SH_IMM_MEDHI16_PCREL:        howto manager.      (line  880)
   10446 * BFD_RELOC_SH_IMM_MEDLOW16:             howto manager.      (line  877)
   10447 * BFD_RELOC_SH_IMM_MEDLOW16_PCREL:       howto manager.      (line  878)
   10448 * BFD_RELOC_SH_IMMS10:                   howto manager.      (line  869)
   10449 * BFD_RELOC_SH_IMMS10BY2:                howto manager.      (line  870)
   10450 * BFD_RELOC_SH_IMMS10BY4:                howto manager.      (line  871)
   10451 * BFD_RELOC_SH_IMMS10BY8:                howto manager.      (line  872)
   10452 * BFD_RELOC_SH_IMMS16:                   howto manager.      (line  873)
   10453 * BFD_RELOC_SH_IMMS6:                    howto manager.      (line  866)
   10454 * BFD_RELOC_SH_IMMS6BY32:                howto manager.      (line  867)
   10455 * BFD_RELOC_SH_IMMU16:                   howto manager.      (line  874)
   10456 * BFD_RELOC_SH_IMMU5:                    howto manager.      (line  865)
   10457 * BFD_RELOC_SH_IMMU6:                    howto manager.      (line  868)
   10458 * BFD_RELOC_SH_JMP_SLOT:                 howto manager.      (line  832)
   10459 * BFD_RELOC_SH_JMP_SLOT64:               howto manager.      (line  857)
   10460 * BFD_RELOC_SH_LABEL:                    howto manager.      (line  827)
   10461 * BFD_RELOC_SH_LOOP_END:                 howto manager.      (line  829)
   10462 * BFD_RELOC_SH_LOOP_START:               howto manager.      (line  828)
   10463 * BFD_RELOC_SH_PCDISP12BY2:              howto manager.      (line  803)
   10464 * BFD_RELOC_SH_PCDISP8BY2:               howto manager.      (line  802)
   10465 * BFD_RELOC_SH_PCRELIMM8BY2:             howto manager.      (line  818)
   10466 * BFD_RELOC_SH_PCRELIMM8BY4:             howto manager.      (line  819)
   10467 * BFD_RELOC_SH_PLT_HI16:                 howto manager.      (line  846)
   10468 * BFD_RELOC_SH_PLT_LOW16:                howto manager.      (line  843)
   10469 * BFD_RELOC_SH_PLT_MEDHI16:              howto manager.      (line  845)
   10470 * BFD_RELOC_SH_PLT_MEDLOW16:             howto manager.      (line  844)
   10471 * BFD_RELOC_SH_PT_16:                    howto manager.      (line  883)
   10472 * BFD_RELOC_SH_RELATIVE:                 howto manager.      (line  833)
   10473 * BFD_RELOC_SH_RELATIVE64:               howto manager.      (line  858)
   10474 * BFD_RELOC_SH_SHMEDIA_CODE:             howto manager.      (line  864)
   10475 * BFD_RELOC_SH_SWITCH16:                 howto manager.      (line  820)
   10476 * BFD_RELOC_SH_SWITCH32:                 howto manager.      (line  821)
   10477 * BFD_RELOC_SH_TLS_DTPMOD32:             howto manager.      (line  889)
   10478 * BFD_RELOC_SH_TLS_DTPOFF32:             howto manager.      (line  890)
   10479 * BFD_RELOC_SH_TLS_GD_32:                howto manager.      (line  884)
   10480 * BFD_RELOC_SH_TLS_IE_32:                howto manager.      (line  887)
   10481 * BFD_RELOC_SH_TLS_LD_32:                howto manager.      (line  885)
   10482 * BFD_RELOC_SH_TLS_LDO_32:               howto manager.      (line  886)
   10483 * BFD_RELOC_SH_TLS_LE_32:                howto manager.      (line  888)
   10484 * BFD_RELOC_SH_TLS_TPOFF32:              howto manager.      (line  891)
   10485 * BFD_RELOC_SH_USES:                     howto manager.      (line  822)
   10486 * BFD_RELOC_SPARC13:                     howto manager.      (line  119)
   10487 * BFD_RELOC_SPARC22:                     howto manager.      (line  118)
   10488 * BFD_RELOC_SPARC_10:                    howto manager.      (line  146)
   10489 * BFD_RELOC_SPARC_11:                    howto manager.      (line  147)
   10490 * BFD_RELOC_SPARC_5:                     howto manager.      (line  159)
   10491 * BFD_RELOC_SPARC_6:                     howto manager.      (line  158)
   10492 * BFD_RELOC_SPARC_64:                    howto manager.      (line  145)
   10493 * BFD_RELOC_SPARC_7:                     howto manager.      (line  157)
   10494 * BFD_RELOC_SPARC_BASE13:                howto manager.      (line  141)
   10495 * BFD_RELOC_SPARC_BASE22:                howto manager.      (line  142)
   10496 * BFD_RELOC_SPARC_COPY:                  howto manager.      (line  126)
   10497 * BFD_RELOC_SPARC_DISP64:                howto manager.      (line  160)
   10498 * BFD_RELOC_SPARC_GLOB_DAT:              howto manager.      (line  127)
   10499 * BFD_RELOC_SPARC_GOT10:                 howto manager.      (line  120)
   10500 * BFD_RELOC_SPARC_GOT13:                 howto manager.      (line  121)
   10501 * BFD_RELOC_SPARC_GOT22:                 howto manager.      (line  122)
   10502 * BFD_RELOC_SPARC_GOTDATA_HIX22:         howto manager.      (line  133)
   10503 * BFD_RELOC_SPARC_GOTDATA_LOX10:         howto manager.      (line  134)
   10504 * BFD_RELOC_SPARC_GOTDATA_OP:            howto manager.      (line  137)
   10505 * BFD_RELOC_SPARC_GOTDATA_OP_HIX22:      howto manager.      (line  135)
   10506 * BFD_RELOC_SPARC_GOTDATA_OP_LOX10:      howto manager.      (line  136)
   10507 * BFD_RELOC_SPARC_H44:                   howto manager.      (line  165)
   10508 * BFD_RELOC_SPARC_HH22:                  howto manager.      (line  149)
   10509 * BFD_RELOC_SPARC_HIX22:                 howto manager.      (line  163)
   10510 * BFD_RELOC_SPARC_HM10:                  howto manager.      (line  150)
   10511 * BFD_RELOC_SPARC_JMP_SLOT:              howto manager.      (line  128)
   10512 * BFD_RELOC_SPARC_L44:                   howto manager.      (line  167)
   10513 * BFD_RELOC_SPARC_LM22:                  howto manager.      (line  151)
   10514 * BFD_RELOC_SPARC_LOX10:                 howto manager.      (line  164)
   10515 * BFD_RELOC_SPARC_M44:                   howto manager.      (line  166)
   10516 * BFD_RELOC_SPARC_OLO10:                 howto manager.      (line  148)
   10517 * BFD_RELOC_SPARC_PC10:                  howto manager.      (line  123)
   10518 * BFD_RELOC_SPARC_PC22:                  howto manager.      (line  124)
   10519 * BFD_RELOC_SPARC_PC_HH22:               howto manager.      (line  152)
   10520 * BFD_RELOC_SPARC_PC_HM10:               howto manager.      (line  153)
   10521 * BFD_RELOC_SPARC_PC_LM22:               howto manager.      (line  154)
   10522 * BFD_RELOC_SPARC_PLT32:                 howto manager.      (line  161)
   10523 * BFD_RELOC_SPARC_PLT64:                 howto manager.      (line  162)
   10524 * BFD_RELOC_SPARC_REGISTER:              howto manager.      (line  168)
   10525 * BFD_RELOC_SPARC_RELATIVE:              howto manager.      (line  129)
   10526 * BFD_RELOC_SPARC_REV32:                 howto manager.      (line  171)
   10527 * BFD_RELOC_SPARC_TLS_DTPMOD32:          howto manager.      (line  192)
   10528 * BFD_RELOC_SPARC_TLS_DTPMOD64:          howto manager.      (line  193)
   10529 * BFD_RELOC_SPARC_TLS_DTPOFF32:          howto manager.      (line  194)
   10530 * BFD_RELOC_SPARC_TLS_DTPOFF64:          howto manager.      (line  195)
   10531 * BFD_RELOC_SPARC_TLS_GD_ADD:            howto manager.      (line  176)
   10532 * BFD_RELOC_SPARC_TLS_GD_CALL:           howto manager.      (line  177)
   10533 * BFD_RELOC_SPARC_TLS_GD_HI22:           howto manager.      (line  174)
   10534 * BFD_RELOC_SPARC_TLS_GD_LO10:           howto manager.      (line  175)
   10535 * BFD_RELOC_SPARC_TLS_IE_ADD:            howto manager.      (line  189)
   10536 * BFD_RELOC_SPARC_TLS_IE_HI22:           howto manager.      (line  185)
   10537 * BFD_RELOC_SPARC_TLS_IE_LD:             howto manager.      (line  187)
   10538 * BFD_RELOC_SPARC_TLS_IE_LDX:            howto manager.      (line  188)
   10539 * BFD_RELOC_SPARC_TLS_IE_LO10:           howto manager.      (line  186)
   10540 * BFD_RELOC_SPARC_TLS_LDM_ADD:           howto manager.      (line  180)
   10541 * BFD_RELOC_SPARC_TLS_LDM_CALL:          howto manager.      (line  181)
   10542 * BFD_RELOC_SPARC_TLS_LDM_HI22:          howto manager.      (line  178)
   10543 * BFD_RELOC_SPARC_TLS_LDM_LO10:          howto manager.      (line  179)
   10544 * BFD_RELOC_SPARC_TLS_LDO_ADD:           howto manager.      (line  184)
   10545 * BFD_RELOC_SPARC_TLS_LDO_HIX22:         howto manager.      (line  182)
   10546 * BFD_RELOC_SPARC_TLS_LDO_LOX10:         howto manager.      (line  183)
   10547 * BFD_RELOC_SPARC_TLS_LE_HIX22:          howto manager.      (line  190)
   10548 * BFD_RELOC_SPARC_TLS_LE_LOX10:          howto manager.      (line  191)
   10549 * BFD_RELOC_SPARC_TLS_TPOFF32:           howto manager.      (line  196)
   10550 * BFD_RELOC_SPARC_TLS_TPOFF64:           howto manager.      (line  197)
   10551 * BFD_RELOC_SPARC_UA16:                  howto manager.      (line  130)
   10552 * BFD_RELOC_SPARC_UA32:                  howto manager.      (line  131)
   10553 * BFD_RELOC_SPARC_UA64:                  howto manager.      (line  132)
   10554 * BFD_RELOC_SPARC_WDISP16:               howto manager.      (line  155)
   10555 * BFD_RELOC_SPARC_WDISP19:               howto manager.      (line  156)
   10556 * BFD_RELOC_SPARC_WDISP22:               howto manager.      (line  117)
   10557 * BFD_RELOC_SPARC_WPLT30:                howto manager.      (line  125)
   10558 * BFD_RELOC_SPU_HI16:                    howto manager.      (line  211)
   10559 * BFD_RELOC_SPU_IMM10:                   howto manager.      (line  202)
   10560 * BFD_RELOC_SPU_IMM10W:                  howto manager.      (line  203)
   10561 * BFD_RELOC_SPU_IMM16:                   howto manager.      (line  204)
   10562 * BFD_RELOC_SPU_IMM16W:                  howto manager.      (line  205)
   10563 * BFD_RELOC_SPU_IMM18:                   howto manager.      (line  206)
   10564 * BFD_RELOC_SPU_IMM7:                    howto manager.      (line  200)
   10565 * BFD_RELOC_SPU_IMM8:                    howto manager.      (line  201)
   10566 * BFD_RELOC_SPU_LO16:                    howto manager.      (line  210)
   10567 * BFD_RELOC_SPU_PCREL16:                 howto manager.      (line  209)
   10568 * BFD_RELOC_SPU_PCREL9a:                 howto manager.      (line  207)
   10569 * BFD_RELOC_SPU_PCREL9b:                 howto manager.      (line  208)
   10570 * BFD_RELOC_SPU_PPU32:                   howto manager.      (line  212)
   10571 * BFD_RELOC_SPU_PPU64:                   howto manager.      (line  213)
   10572 * BFD_RELOC_THUMB_PCREL_BLX:             howto manager.      (line  662)
   10573 * BFD_RELOC_THUMB_PCREL_BRANCH12:        howto manager.      (line  676)
   10574 * BFD_RELOC_THUMB_PCREL_BRANCH20:        howto manager.      (line  677)
   10575 * BFD_RELOC_THUMB_PCREL_BRANCH23:        howto manager.      (line  678)
   10576 * BFD_RELOC_THUMB_PCREL_BRANCH25:        howto manager.      (line  679)
   10577 * BFD_RELOC_THUMB_PCREL_BRANCH7:         howto manager.      (line  674)
   10578 * BFD_RELOC_THUMB_PCREL_BRANCH9:         howto manager.      (line  675)
   10579 * BFD_RELOC_TIC30_LDP:                   howto manager.      (line 1218)
   10580 * BFD_RELOC_TIC54X_16_OF_23:             howto manager.      (line 1236)
   10581 * BFD_RELOC_TIC54X_23:                   howto manager.      (line 1233)
   10582 * BFD_RELOC_TIC54X_MS7_OF_23:            howto manager.      (line 1241)
   10583 * BFD_RELOC_TIC54X_PARTLS7:              howto manager.      (line 1223)
   10584 * BFD_RELOC_TIC54X_PARTMS9:              howto manager.      (line 1228)
   10585 * bfd_reloc_type_lookup:                 howto manager.      (line 2102)
   10586 * BFD_RELOC_V850_22_PCREL:               howto manager.      (line 1145)
   10587 * BFD_RELOC_V850_9_PCREL:                howto manager.      (line 1142)
   10588 * BFD_RELOC_V850_ALIGN:                  howto manager.      (line 1203)
   10589 * BFD_RELOC_V850_CALLT_16_16_OFFSET:     howto manager.      (line 1194)
   10590 * BFD_RELOC_V850_CALLT_6_7_OFFSET:       howto manager.      (line 1191)
   10591 * BFD_RELOC_V850_LO16_SPLIT_OFFSET:      howto manager.      (line 1206)
   10592 * BFD_RELOC_V850_LONGCALL:               howto manager.      (line 1197)
   10593 * BFD_RELOC_V850_LONGJUMP:               howto manager.      (line 1200)
   10594 * BFD_RELOC_V850_SDA_15_16_OFFSET:       howto manager.      (line 1151)
   10595 * BFD_RELOC_V850_SDA_16_16_OFFSET:       howto manager.      (line 1148)
   10596 * BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager.      (line 1183)
   10597 * BFD_RELOC_V850_TDA_16_16_OFFSET:       howto manager.      (line 1173)
   10598 * BFD_RELOC_V850_TDA_4_4_OFFSET:         howto manager.      (line 1180)
   10599 * BFD_RELOC_V850_TDA_4_5_OFFSET:         howto manager.      (line 1176)
   10600 * BFD_RELOC_V850_TDA_6_8_OFFSET:         howto manager.      (line 1162)
   10601 * BFD_RELOC_V850_TDA_7_7_OFFSET:         howto manager.      (line 1170)
   10602 * BFD_RELOC_V850_TDA_7_8_OFFSET:         howto manager.      (line 1166)
   10603 * BFD_RELOC_V850_ZDA_15_16_OFFSET:       howto manager.      (line 1158)
   10604 * BFD_RELOC_V850_ZDA_16_16_OFFSET:       howto manager.      (line 1155)
   10605 * BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager.      (line 1187)
   10606 * BFD_RELOC_VAX_GLOB_DAT:                howto manager.      (line 1964)
   10607 * BFD_RELOC_VAX_JMP_SLOT:                howto manager.      (line 1965)
   10608 * BFD_RELOC_VAX_RELATIVE:                howto manager.      (line 1966)
   10609 * BFD_RELOC_VPE4KMATH_DATA:              howto manager.      (line 1620)
   10610 * BFD_RELOC_VPE4KMATH_INSN:              howto manager.      (line 1621)
   10611 * BFD_RELOC_VTABLE_ENTRY:                howto manager.      (line 1625)
   10612 * BFD_RELOC_VTABLE_INHERIT:              howto manager.      (line 1624)
   10613 * BFD_RELOC_X86_64_32S:                  howto manager.      (line  500)
   10614 * BFD_RELOC_X86_64_COPY:                 howto manager.      (line  495)
   10615 * BFD_RELOC_X86_64_DTPMOD64:             howto manager.      (line  501)
   10616 * BFD_RELOC_X86_64_DTPOFF32:             howto manager.      (line  506)
   10617 * BFD_RELOC_X86_64_DTPOFF64:             howto manager.      (line  502)
   10618 * BFD_RELOC_X86_64_GLOB_DAT:             howto manager.      (line  496)
   10619 * BFD_RELOC_X86_64_GOT32:                howto manager.      (line  493)
   10620 * BFD_RELOC_X86_64_GOT64:                howto manager.      (line  511)
   10621 * BFD_RELOC_X86_64_GOTOFF64:             howto manager.      (line  509)
   10622 * BFD_RELOC_X86_64_GOTPC32:              howto manager.      (line  510)
   10623 * BFD_RELOC_X86_64_GOTPC32_TLSDESC:      howto manager.      (line  516)
   10624 * BFD_RELOC_X86_64_GOTPC64:              howto manager.      (line  513)
   10625 * BFD_RELOC_X86_64_GOTPCREL:             howto manager.      (line  499)
   10626 * BFD_RELOC_X86_64_GOTPCREL64:           howto manager.      (line  512)
   10627 * BFD_RELOC_X86_64_GOTPLT64:             howto manager.      (line  514)
   10628 * BFD_RELOC_X86_64_GOTTPOFF:             howto manager.      (line  507)
   10629 * BFD_RELOC_X86_64_JUMP_SLOT:            howto manager.      (line  497)
   10630 * BFD_RELOC_X86_64_PLT32:                howto manager.      (line  494)
   10631 * BFD_RELOC_X86_64_PLTOFF64:             howto manager.      (line  515)
   10632 * BFD_RELOC_X86_64_RELATIVE:             howto manager.      (line  498)
   10633 * BFD_RELOC_X86_64_TLSDESC:              howto manager.      (line  518)
   10634 * BFD_RELOC_X86_64_TLSDESC_CALL:         howto manager.      (line  517)
   10635 * BFD_RELOC_X86_64_TLSGD:                howto manager.      (line  504)
   10636 * BFD_RELOC_X86_64_TLSLD:                howto manager.      (line  505)
   10637 * BFD_RELOC_X86_64_TPOFF32:              howto manager.      (line  508)
   10638 * BFD_RELOC_X86_64_TPOFF64:              howto manager.      (line  503)
   10639 * BFD_RELOC_XC16X_PAG:                   howto manager.      (line 1958)
   10640 * BFD_RELOC_XC16X_POF:                   howto manager.      (line 1959)
   10641 * BFD_RELOC_XC16X_SEG:                   howto manager.      (line 1960)
   10642 * BFD_RELOC_XC16X_SOF:                   howto manager.      (line 1961)
   10643 * BFD_RELOC_XSTORMY16_12:                howto manager.      (line 1950)
   10644 * BFD_RELOC_XSTORMY16_24:                howto manager.      (line 1951)
   10645 * BFD_RELOC_XSTORMY16_FPTR16:            howto manager.      (line 1952)
   10646 * BFD_RELOC_XSTORMY16_REL_12:            howto manager.      (line 1949)
   10647 * BFD_RELOC_XTENSA_ASM_EXPAND:           howto manager.      (line 2070)
   10648 * BFD_RELOC_XTENSA_ASM_SIMPLIFY:         howto manager.      (line 2075)
   10649 * BFD_RELOC_XTENSA_DIFF16:               howto manager.      (line 2017)
   10650 * BFD_RELOC_XTENSA_DIFF32:               howto manager.      (line 2018)
   10651 * BFD_RELOC_XTENSA_DIFF8:                howto manager.      (line 2016)
   10652 * BFD_RELOC_XTENSA_GLOB_DAT:             howto manager.      (line 2006)
   10653 * BFD_RELOC_XTENSA_JMP_SLOT:             howto manager.      (line 2007)
   10654 * BFD_RELOC_XTENSA_OP0:                  howto manager.      (line 2064)
   10655 * BFD_RELOC_XTENSA_OP1:                  howto manager.      (line 2065)
   10656 * BFD_RELOC_XTENSA_OP2:                  howto manager.      (line 2066)
   10657 * BFD_RELOC_XTENSA_PLT:                  howto manager.      (line 2011)
   10658 * BFD_RELOC_XTENSA_RELATIVE:             howto manager.      (line 2008)
   10659 * BFD_RELOC_XTENSA_RTLD:                 howto manager.      (line 2001)
   10660 * BFD_RELOC_XTENSA_SLOT0_ALT:            howto manager.      (line 2046)
   10661 * BFD_RELOC_XTENSA_SLOT0_OP:             howto manager.      (line 2026)
   10662 * BFD_RELOC_XTENSA_SLOT10_ALT:           howto manager.      (line 2056)
   10663 * BFD_RELOC_XTENSA_SLOT10_OP:            howto manager.      (line 2036)
   10664 * BFD_RELOC_XTENSA_SLOT11_ALT:           howto manager.      (line 2057)
   10665 * BFD_RELOC_XTENSA_SLOT11_OP:            howto manager.      (line 2037)
   10666 * BFD_RELOC_XTENSA_SLOT12_ALT:           howto manager.      (line 2058)
   10667 * BFD_RELOC_XTENSA_SLOT12_OP:            howto manager.      (line 2038)
   10668 * BFD_RELOC_XTENSA_SLOT13_ALT:           howto manager.      (line 2059)
   10669 * BFD_RELOC_XTENSA_SLOT13_OP:            howto manager.      (line 2039)
   10670 * BFD_RELOC_XTENSA_SLOT14_ALT:           howto manager.      (line 2060)
   10671 * BFD_RELOC_XTENSA_SLOT14_OP:            howto manager.      (line 2040)
   10672 * BFD_RELOC_XTENSA_SLOT1_ALT:            howto manager.      (line 2047)
   10673 * BFD_RELOC_XTENSA_SLOT1_OP:             howto manager.      (line 2027)
   10674 * BFD_RELOC_XTENSA_SLOT2_ALT:            howto manager.      (line 2048)
   10675 * BFD_RELOC_XTENSA_SLOT2_OP:             howto manager.      (line 2028)
   10676 * BFD_RELOC_XTENSA_SLOT3_ALT:            howto manager.      (line 2049)
   10677 * BFD_RELOC_XTENSA_SLOT3_OP:             howto manager.      (line 2029)
   10678 * BFD_RELOC_XTENSA_SLOT4_ALT:            howto manager.      (line 2050)
   10679 * BFD_RELOC_XTENSA_SLOT4_OP:             howto manager.      (line 2030)
   10680 * BFD_RELOC_XTENSA_SLOT5_ALT:            howto manager.      (line 2051)
   10681 * BFD_RELOC_XTENSA_SLOT5_OP:             howto manager.      (line 2031)
   10682 * BFD_RELOC_XTENSA_SLOT6_ALT:            howto manager.      (line 2052)
   10683 * BFD_RELOC_XTENSA_SLOT6_OP:             howto manager.      (line 2032)
   10684 * BFD_RELOC_XTENSA_SLOT7_ALT:            howto manager.      (line 2053)
   10685 * BFD_RELOC_XTENSA_SLOT7_OP:             howto manager.      (line 2033)
   10686 * BFD_RELOC_XTENSA_SLOT8_ALT:            howto manager.      (line 2054)
   10687 * BFD_RELOC_XTENSA_SLOT8_OP:             howto manager.      (line 2034)
   10688 * BFD_RELOC_XTENSA_SLOT9_ALT:            howto manager.      (line 2055)
   10689 * BFD_RELOC_XTENSA_SLOT9_OP:             howto manager.      (line 2035)
   10690 * BFD_RELOC_XTENSA_TLS_ARG:              howto manager.      (line 2085)
   10691 * BFD_RELOC_XTENSA_TLS_CALL:             howto manager.      (line 2086)
   10692 * BFD_RELOC_XTENSA_TLS_DTPOFF:           howto manager.      (line 2082)
   10693 * BFD_RELOC_XTENSA_TLS_FUNC:             howto manager.      (line 2084)
   10694 * BFD_RELOC_XTENSA_TLS_TPOFF:            howto manager.      (line 2083)
   10695 * BFD_RELOC_XTENSA_TLSDESC_ARG:          howto manager.      (line 2081)
   10696 * BFD_RELOC_XTENSA_TLSDESC_FN:           howto manager.      (line 2080)
   10697 * BFD_RELOC_Z80_DISP8:                   howto manager.      (line 2089)
   10698 * BFD_RELOC_Z8K_CALLR:                   howto manager.      (line 2095)
   10699 * BFD_RELOC_Z8K_DISP7:                   howto manager.      (line 2092)
   10700 * BFD_RELOC_Z8K_IMM4L:                   howto manager.      (line 2098)
   10701 * bfd_scan_arch:                         Architectures.      (line  417)
   10702 * bfd_scan_vma:                          BFD front end.      (line  505)
   10703 * bfd_seach_for_target:                  bfd_target.         (line  464)
   10704 * bfd_section_already_linked:            Writing the symbol table.
   10705                                                              (line   55)
   10706 * bfd_section_list_clear:                section prototypes. (line    8)
   10707 * bfd_sections_find_if:                  section prototypes. (line  176)
   10708 * bfd_set_arch_info:                     Architectures.      (line  458)
   10709 * bfd_set_archive_head:                  Archives.           (line   69)
   10710 * bfd_set_default_target:                bfd_target.         (line  429)
   10711 * bfd_set_error:                         BFD front end.      (line  315)
   10712 * bfd_set_error_handler:                 BFD front end.      (line  357)
   10713 * bfd_set_error_program_name:            BFD front end.      (line  366)
   10714 * bfd_set_file_flags:                    BFD front end.      (line  425)
   10715 * bfd_set_format:                        Formats.            (line   68)
   10716 * bfd_set_gp_size:                       BFD front end.      (line  495)
   10717 * bfd_set_private_flags:                 BFD front end.      (line  572)
   10718 * bfd_set_reloc:                         BFD front end.      (line  415)
   10719 * bfd_set_section_contents:              section prototypes. (line  207)
   10720 * bfd_set_section_flags:                 section prototypes. (line  140)
   10721 * bfd_set_section_size:                  section prototypes. (line  193)
   10722 * bfd_set_start_address:                 BFD front end.      (line  474)
   10723 * bfd_set_symtab:                        symbol handling functions.
   10724                                                              (line   60)
   10725 * bfd_symbol_info:                       symbol handling functions.
   10726                                                              (line  130)
   10727 * bfd_target_list:                       bfd_target.         (line  455)
   10728 * bfd_write_bigendian_4byte_int:         Internal.           (line   13)
   10729 * bfd_zalloc:                            Opening and Closing.
   10730                                                              (line  228)
   10731 * bfd_zalloc2:                           Opening and Closing.
   10732                                                              (line  237)
   10733 * coff_symbol_type:                      coff.               (line  186)
   10734 * core_file_matches_executable_p:        Core Files.         (line   30)
   10735 * find_separate_debug_file:              Opening and Closing.
   10736                                                              (line  279)
   10737 * generic_core_file_matches_executable_p: Core Files.        (line   40)
   10738 * get_debug_link_info:                   Opening and Closing.
   10739                                                              (line  260)
   10740 * Hash tables:                           Hash Tables.        (line    6)
   10741 * internal object-file format:           Canonical format.   (line   11)
   10742 * Linker:                                Linker Functions.   (line    6)
   10743 * Other functions:                       BFD front end.      (line  587)
   10744 * separate_debug_file_exists:            Opening and Closing.
   10745                                                              (line  270)
   10746 * struct bfd_iovec:                      BFD front end.      (line  790)
   10747 * target vector (_bfd_final_link):       Performing the Final Link.
   10748                                                              (line    6)
   10749 * target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table.
   10750                                                              (line    6)
   10751 * target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table.
   10752                                                              (line    6)
   10753 * The HOWTO Macro:                       typedef arelent.    (line  291)
   10754 * what is it?:                           Overview.           (line    6)
   10755 
   10756 
   10757 
   10758 Tag Table:
   10759 Node: Top1133
   10760 Node: Overview1472
   10761 Node: History2523
   10762 Node: How It Works3469
   10763 Node: What BFD Version 2 Can Do5012
   10764 Node: BFD information loss6327
   10765 Node: Canonical format8859
   10766 Node: BFD front end13231
   10767 Node: Memory Usage43738
   10768 Node: Initialization44966
   10769 Node: Sections45425
   10770 Node: Section Input45908
   10771 Node: Section Output47273
   10772 Node: typedef asection49759
   10773 Node: section prototypes74340
   10774 Node: Symbols84020
   10775 Node: Reading Symbols85615
   10776 Node: Writing Symbols86722
   10777 Node: Mini Symbols88431
   10778 Node: typedef asymbol89405
   10779 Node: symbol handling functions94770
   10780 Node: Archives100112
   10781 Node: Formats103838
   10782 Node: Relocations106786
   10783 Node: typedef arelent107513
   10784 Node: howto manager123324
   10785 Node: Core Files191120
   10786 Node: Targets192937
   10787 Node: bfd_target194907
   10788 Node: Architectures215212
   10789 Node: Opening and Closing237695
   10790 Node: Internal248959
   10791 Node: File Caching255292
   10792 Node: Linker Functions257206
   10793 Node: Creating a Linker Hash Table258879
   10794 Node: Adding Symbols to the Hash Table260617
   10795 Node: Differing file formats261517
   10796 Node: Adding symbols from an object file263242
   10797 Node: Adding symbols from an archive265393
   10798 Node: Performing the Final Link267807
   10799 Node: Information provided by the linker269049
   10800 Node: Relocating the section contents270203
   10801 Node: Writing the symbol table271954
   10802 Node: Hash Tables274996
   10803 Node: Creating and Freeing a Hash Table276194
   10804 Node: Looking Up or Entering a String277444
   10805 Node: Traversing a Hash Table278697
   10806 Node: Deriving a New Hash Table Type279486
   10807 Node: Define the Derived Structures280552
   10808 Node: Write the Derived Creation Routine281633
   10809 Node: Write Other Derived Routines284257
   10810 Node: BFD back ends285572
   10811 Node: What to Put Where285842
   10812 Node: aout286022
   10813 Node: coff292340
   10814 Node: elf317091
   10815 Node: mmo317954
   10816 Node: File layout318882
   10817 Node: Symbol-table324529
   10818 Node: mmo section mapping328298
   10819 Node: GNU Free Documentation License331950
   10820 Node: BFD Index351667
   10821 
   10822 End Tag Table
   10823