Home | History | Annotate | Line # | Download | only in alpha
bfd.h revision 1.6
      1 /* This file is automatically generated.  DO NOT EDIT! */
      2 /* Generated from: NetBSD: mknative-binutils,v 1.9 2013/10/01 15:41:17 skrll Exp  */
      3 /* Generated from: NetBSD: mknative.common,v 1.11 2014/02/17 21:39:43 christos Exp  */
      4 
      5 /* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically
      6    generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
      7    "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
      8    "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
      9    "linker.c", "simple.c" and "compress.c".
     10    Run "make headers" in your build bfd/ to regenerate.  */
     11 
     12 /* Main header file for the bfd library -- portable access to object files.
     13 
     14    Copyright (C) 1990-2015 Free Software Foundation, Inc.
     15 
     16    Contributed by Cygnus Support.
     17 
     18    This file is part of BFD, the Binary File Descriptor library.
     19 
     20    This program is free software; you can redistribute it and/or modify
     21    it under the terms of the GNU General Public License as published by
     22    the Free Software Foundation; either version 3 of the License, or
     23    (at your option) any later version.
     24 
     25    This program is distributed in the hope that it will be useful,
     26    but WITHOUT ANY WARRANTY; without even the implied warranty of
     27    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     28    GNU General Public License for more details.
     29 
     30    You should have received a copy of the GNU General Public License
     31    along with this program; if not, write to the Free Software
     32    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
     33 
     34 #ifndef __BFD_H_SEEN__
     35 #define __BFD_H_SEEN__
     36 
     37 /* PR 14072: Ensure that config.h is included first.  */
     38 #if !defined PACKAGE && !defined PACKAGE_VERSION
     39 #error config.h must be included before this header
     40 #endif
     41 
     42 #ifdef __cplusplus
     43 extern "C" {
     44 #endif
     45 
     46 #include "ansidecl.h"
     47 #include "symcat.h"
     48 #include <sys/stat.h>
     49 
     50 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
     51 #ifndef SABER
     52 /* This hack is to avoid a problem with some strict ANSI C preprocessors.
     53    The problem is, "32_" is not a valid preprocessing token, and we don't
     54    want extra underscores (e.g., "nlm_32_").  The XCONCAT2 macro will
     55    cause the inner CONCAT2 macros to be evaluated first, producing
     56    still-valid pp-tokens.  Then the final concatenation can be done.  */
     57 #undef CONCAT4
     58 #define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
     59 #endif
     60 #endif
     61 
     62 /* This is a utility macro to handle the situation where the code
     63    wants to place a constant string into the code, followed by a
     64    comma and then the length of the string.  Doing this by hand
     65    is error prone, so using this macro is safer.  */
     66 #define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
     67 /* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
     68    to create the arguments to another macro, since the preprocessor
     69    will mis-count the number of arguments to the outer macro (by not
     70    evaluating STRING_COMMA_LEN and so missing the comma).  This is a
     71    problem for example when trying to use STRING_COMMA_LEN to build
     72    the arguments to the strncmp() macro.  Hence this alternative
     73    definition of strncmp is provided here.
     74 
     75    Note - these macros do NOT work if STR2 is not a constant string.  */
     76 #define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
     77   /* strcpy() can have a similar problem, but since we know we are
     78      copying a constant string, we can use memcpy which will be faster
     79      since there is no need to check for a NUL byte inside STR.  We
     80      can also save time if we do not need to copy the terminating NUL.  */
     81 #define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
     82 #define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
     83 
     84 
     85 #define BFD_SUPPORTS_PLUGINS 1
     86 
     87 /* The word size used by BFD on the host.  This may be 64 with a 32
     88    bit target if the host is 64 bit, or if other 64 bit targets have
     89    been selected with --enable-targets, or if --enable-64-bit-bfd.  */
     90 #define BFD_ARCH_SIZE 64
     91 
     92 /* The word size of the default bfd target.  */
     93 #define BFD_DEFAULT_TARGET_SIZE 64
     94 
     95 #define BFD_HOST_64BIT_LONG 1
     96 #define BFD_HOST_64BIT_LONG_LONG 0
     97 #if 1
     98 #define BFD_HOST_64_BIT long
     99 #define BFD_HOST_U_64_BIT unsigned long
    100 typedef BFD_HOST_64_BIT bfd_int64_t;
    101 typedef BFD_HOST_U_64_BIT bfd_uint64_t;
    102 #endif
    103 
    104 #if BFD_ARCH_SIZE >= 64
    105 #define BFD64
    106 #endif
    107 
    108 #ifndef INLINE
    109 #if __GNUC__ >= 2
    110 #define INLINE __inline__
    111 #else
    112 #define INLINE
    113 #endif
    114 #endif
    115 
    116 /* Declaring a type wide enough to hold a host long and a host pointer.  */
    117 #define BFD_HOSTPTR_T	unsigned long
    118 typedef BFD_HOSTPTR_T bfd_hostptr_t;
    119 
    120 /* Forward declaration.  */
    121 typedef struct bfd bfd;
    122 
    123 /* Boolean type used in bfd.  Too many systems define their own
    124    versions of "boolean" for us to safely typedef a "boolean" of
    125    our own.  Using an enum for "bfd_boolean" has its own set of
    126    problems, with strange looking casts required to avoid warnings
    127    on some older compilers.  Thus we just use an int.
    128 
    129    General rule: Functions which are bfd_boolean return TRUE on
    130    success and FALSE on failure (unless they're a predicate).  */
    131 
    132 typedef int bfd_boolean;
    133 #undef FALSE
    134 #undef TRUE
    135 #define FALSE 0
    136 #define TRUE 1
    137 
    138 #ifdef BFD64
    139 
    140 #ifndef BFD_HOST_64_BIT
    141  #error No 64 bit integer type available
    142 #endif /* ! defined (BFD_HOST_64_BIT) */
    143 
    144 typedef BFD_HOST_U_64_BIT bfd_vma;
    145 typedef BFD_HOST_64_BIT bfd_signed_vma;
    146 typedef BFD_HOST_U_64_BIT bfd_size_type;
    147 typedef BFD_HOST_U_64_BIT symvalue;
    148 
    149 #if BFD_HOST_64BIT_LONG
    150 #define BFD_VMA_FMT "l"
    151 #elif defined (__MSVCRT__)
    152 #define BFD_VMA_FMT "I64"
    153 #else
    154 #define BFD_VMA_FMT "ll"
    155 #endif
    156 
    157 #ifndef fprintf_vma
    158 #define sprintf_vma(s,x) sprintf (s, "%016" BFD_VMA_FMT "x", x)
    159 #define fprintf_vma(f,x) fprintf (f, "%016" BFD_VMA_FMT "x", x)
    160 #endif
    161 
    162 #else /* not BFD64  */
    163 
    164 /* Represent a target address.  Also used as a generic unsigned type
    165    which is guaranteed to be big enough to hold any arithmetic types
    166    we need to deal with.  */
    167 typedef unsigned long bfd_vma;
    168 
    169 /* A generic signed type which is guaranteed to be big enough to hold any
    170    arithmetic types we need to deal with.  Can be assumed to be compatible
    171    with bfd_vma in the same way that signed and unsigned ints are compatible
    172    (as parameters, in assignment, etc).  */
    173 typedef long bfd_signed_vma;
    174 
    175 typedef unsigned long symvalue;
    176 typedef unsigned long bfd_size_type;
    177 
    178 /* Print a bfd_vma x on stream s.  */
    179 #define BFD_VMA_FMT "l"
    180 #define fprintf_vma(s,x) fprintf (s, "%08" BFD_VMA_FMT "x", x)
    181 #define sprintf_vma(s,x) sprintf (s, "%08" BFD_VMA_FMT "x", x)
    182 
    183 #endif /* not BFD64  */
    184 
    185 #define HALF_BFD_SIZE_TYPE \
    186   (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
    187 
    188 #ifndef BFD_HOST_64_BIT
    189 /* Fall back on a 32 bit type.  The idea is to make these types always
    190    available for function return types, but in the case that
    191    BFD_HOST_64_BIT is undefined such a function should abort or
    192    otherwise signal an error.  */
    193 typedef bfd_signed_vma bfd_int64_t;
    194 typedef bfd_vma bfd_uint64_t;
    195 #endif
    196 
    197 /* An offset into a file.  BFD always uses the largest possible offset
    198    based on the build time availability of fseek, fseeko, or fseeko64.  */
    199 typedef BFD_HOST_64_BIT file_ptr;
    200 typedef unsigned BFD_HOST_64_BIT ufile_ptr;
    201 
    202 extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
    203 extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
    204 
    205 #define printf_vma(x) fprintf_vma(stdout,x)
    206 #define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
    207 
    208 typedef unsigned int flagword;	/* 32 bits of flags */
    209 typedef unsigned char bfd_byte;
    210 
    211 /* File formats.  */
    213 
    214 typedef enum bfd_format
    215 {
    216   bfd_unknown = 0,	/* File format is unknown.  */
    217   bfd_object,		/* Linker/assembler/compiler output.  */
    218   bfd_archive,		/* Object archive file.  */
    219   bfd_core,		/* Core dump.  */
    220   bfd_type_end		/* Marks the end; don't use it!  */
    221 }
    222 bfd_format;
    223 
    224 /* Symbols and relocation.  */
    226 
    227 /* A count of carsyms (canonical archive symbols).  */
    228 typedef unsigned long symindex;
    229 
    230 /* How to perform a relocation.  */
    231 typedef const struct reloc_howto_struct reloc_howto_type;
    232 
    233 #define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
    234 
    235 /* General purpose part of a symbol X;
    236    target specific parts are in libcoff.h, libaout.h, etc.  */
    237 
    238 #define bfd_get_section(x) ((x)->section)
    239 #define bfd_get_output_section(x) ((x)->section->output_section)
    240 #define bfd_set_section(x,y) ((x)->section) = (y)
    241 #define bfd_asymbol_base(x) ((x)->section->vma)
    242 #define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
    243 #define bfd_asymbol_name(x) ((x)->name)
    244 /*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
    245 #define bfd_asymbol_bfd(x) ((x)->the_bfd)
    246 #define bfd_asymbol_flavour(x)			\
    247   (((x)->flags & BSF_SYNTHETIC) != 0		\
    248    ? bfd_target_unknown_flavour			\
    249    : bfd_asymbol_bfd (x)->xvec->flavour)
    250 
    251 /* A canonical archive symbol.  */
    252 /* This is a type pun with struct ranlib on purpose!  */
    253 typedef struct carsym
    254 {
    255   char *name;
    256   file_ptr file_offset;	/* Look here to find the file.  */
    257 }
    258 carsym;			/* To make these you call a carsymogen.  */
    259 
    260 /* Used in generating armaps (archive tables of contents).
    261    Perhaps just a forward definition would do?  */
    262 struct orl 			/* Output ranlib.  */
    263 {
    264   char **name;		/* Symbol name.  */
    265   union
    266   {
    267     file_ptr pos;
    268     bfd *abfd;
    269   } u;			/* bfd* or file position.  */
    270   int namidx;		/* Index into string table.  */
    271 };
    272 
    273 /* Linenumber stuff.  */
    275 typedef struct lineno_cache_entry
    276 {
    277   unsigned int line_number;	/* Linenumber from start of function.  */
    278   union
    279   {
    280     struct bfd_symbol *sym;	/* Function name.  */
    281     bfd_vma offset;	    		/* Offset into section.  */
    282   } u;
    283 }
    284 alent;
    285 
    286 /* Object and core file sections.  */
    288 
    289 #define	align_power(addr, align)	\
    290   (((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
    291 
    292 typedef struct bfd_section *sec_ptr;
    293 
    294 #define bfd_get_section_name(bfd, ptr) ((void) bfd, (ptr)->name)
    295 #define bfd_get_section_vma(bfd, ptr) ((void) bfd, (ptr)->vma)
    296 #define bfd_get_section_lma(bfd, ptr) ((void) bfd, (ptr)->lma)
    297 #define bfd_get_section_alignment(bfd, ptr) ((void) bfd, \
    298 					     (ptr)->alignment_power)
    299 #define bfd_section_name(bfd, ptr) ((ptr)->name)
    300 #define bfd_section_size(bfd, ptr) ((ptr)->size)
    301 #define bfd_get_section_size(ptr) ((ptr)->size)
    302 #define bfd_section_vma(bfd, ptr) ((ptr)->vma)
    303 #define bfd_section_lma(bfd, ptr) ((ptr)->lma)
    304 #define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
    305 #define bfd_get_section_flags(bfd, ptr) ((void) bfd, (ptr)->flags)
    306 #define bfd_get_section_userdata(bfd, ptr) ((void) bfd, (ptr)->userdata)
    307 
    308 #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
    309 
    310 #define bfd_get_section_limit_octets(bfd, sec)			\
    311   ((bfd)->direction != write_direction && (sec)->rawsize != 0	\
    312    ? (sec)->rawsize : (sec)->size)
    313 
    314 /* Find the address one past the end of SEC.  */
    315 #define bfd_get_section_limit(bfd, sec) \
    316   (bfd_get_section_limit_octets(bfd, sec) / bfd_octets_per_byte (bfd))
    317 
    318 /* Return TRUE if input section SEC has been discarded.  */
    319 #define discarded_section(sec)				\
    320   (!bfd_is_abs_section (sec)					\
    321    && bfd_is_abs_section ((sec)->output_section)		\
    322    && (sec)->sec_info_type != SEC_INFO_TYPE_MERGE		\
    323    && (sec)->sec_info_type != SEC_INFO_TYPE_JUST_SYMS)
    324 
    325 typedef enum bfd_print_symbol
    327 {
    328   bfd_print_symbol_name,
    329   bfd_print_symbol_more,
    330   bfd_print_symbol_all
    331 } bfd_print_symbol_type;
    332 
    333 /* Information about a symbol that nm needs.  */
    334 
    335 typedef struct _symbol_info
    336 {
    337   symvalue value;
    338   char type;
    339   const char *name;            /* Symbol name.  */
    340   unsigned char stab_type;     /* Stab type.  */
    341   char stab_other;             /* Stab other.  */
    342   short stab_desc;             /* Stab desc.  */
    343   const char *stab_name;       /* String for stab type.  */
    344 } symbol_info;
    345 
    346 /* Get the name of a stabs type code.  */
    347 
    348 extern const char *bfd_get_stab_name (int);
    349 
    350 /* Hash table routines.  There is no way to free up a hash table.  */
    352 
    353 /* An element in the hash table.  Most uses will actually use a larger
    354    structure, and an instance of this will be the first field.  */
    355 
    356 struct bfd_hash_entry
    357 {
    358   /* Next entry for this hash code.  */
    359   struct bfd_hash_entry *next;
    360   /* String being hashed.  */
    361   const char *string;
    362   /* Hash code.  This is the full hash code, not the index into the
    363      table.  */
    364   unsigned long hash;
    365 };
    366 
    367 /* A hash table.  */
    368 
    369 struct bfd_hash_table
    370 {
    371   /* The hash array.  */
    372   struct bfd_hash_entry **table;
    373   /* A function used to create new elements in the hash table.  The
    374      first entry is itself a pointer to an element.  When this
    375      function is first invoked, this pointer will be NULL.  However,
    376      having the pointer permits a hierarchy of method functions to be
    377      built each of which calls the function in the superclass.  Thus
    378      each function should be written to allocate a new block of memory
    379      only if the argument is NULL.  */
    380   struct bfd_hash_entry *(*newfunc)
    381     (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
    382    /* An objalloc for this hash table.  This is a struct objalloc *,
    383      but we use void * to avoid requiring the inclusion of objalloc.h.  */
    384   void *memory;
    385   /* The number of slots in the hash table.  */
    386   unsigned int size;
    387   /* The number of entries in the hash table.  */
    388   unsigned int count;
    389   /* The size of elements.  */
    390   unsigned int entsize;
    391   /* If non-zero, don't grow the hash table.  */
    392   unsigned int frozen:1;
    393 };
    394 
    395 /* Initialize a hash table.  */
    396 extern bfd_boolean bfd_hash_table_init
    397   (struct bfd_hash_table *,
    398    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
    399 			       struct bfd_hash_table *,
    400 			       const char *),
    401    unsigned int);
    402 
    403 /* Initialize a hash table specifying a size.  */
    404 extern bfd_boolean bfd_hash_table_init_n
    405   (struct bfd_hash_table *,
    406    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
    407 			       struct bfd_hash_table *,
    408 			       const char *),
    409    unsigned int, unsigned int);
    410 
    411 /* Free up a hash table.  */
    412 extern void bfd_hash_table_free
    413   (struct bfd_hash_table *);
    414 
    415 /* Look up a string in a hash table.  If CREATE is TRUE, a new entry
    416    will be created for this string if one does not already exist.  The
    417    COPY argument must be TRUE if this routine should copy the string
    418    into newly allocated memory when adding an entry.  */
    419 extern struct bfd_hash_entry *bfd_hash_lookup
    420   (struct bfd_hash_table *, const char *, bfd_boolean create,
    421    bfd_boolean copy);
    422 
    423 /* Insert an entry in a hash table.  */
    424 extern struct bfd_hash_entry *bfd_hash_insert
    425   (struct bfd_hash_table *, const char *, unsigned long);
    426 
    427 /* Rename an entry in a hash table.  */
    428 extern void bfd_hash_rename
    429   (struct bfd_hash_table *, const char *, struct bfd_hash_entry *);
    430 
    431 /* Replace an entry in a hash table.  */
    432 extern void bfd_hash_replace
    433   (struct bfd_hash_table *, struct bfd_hash_entry *old,
    434    struct bfd_hash_entry *nw);
    435 
    436 /* Base method for creating a hash table entry.  */
    437 extern struct bfd_hash_entry *bfd_hash_newfunc
    438   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
    439 
    440 /* Grab some space for a hash table entry.  */
    441 extern void *bfd_hash_allocate
    442   (struct bfd_hash_table *, unsigned int);
    443 
    444 /* Traverse a hash table in a random order, calling a function on each
    445    element.  If the function returns FALSE, the traversal stops.  The
    446    INFO argument is passed to the function.  */
    447 extern void bfd_hash_traverse
    448   (struct bfd_hash_table *,
    449    bfd_boolean (*) (struct bfd_hash_entry *, void *),
    450    void *info);
    451 
    452 /* Allows the default size of a hash table to be configured. New hash
    453    tables allocated using bfd_hash_table_init will be created with
    454    this size.  */
    455 extern unsigned long bfd_hash_set_default_size (unsigned long);
    456 
    457 /* Types of compressed DWARF debug sections.  We currently support
    458    zlib.  */
    459 enum compressed_debug_section_type
    460 {
    461   COMPRESS_DEBUG_NONE = 0,
    462   COMPRESS_DEBUG = 1 << 0,
    463   COMPRESS_DEBUG_GNU_ZLIB = COMPRESS_DEBUG | 1 << 1,
    464   COMPRESS_DEBUG_GABI_ZLIB = COMPRESS_DEBUG | 1 << 2
    465 };
    466 
    467 /* This structure is used to keep track of stabs in sections
    468    information while linking.  */
    469 
    470 struct stab_info
    471 {
    472   /* A hash table used to hold stabs strings.  */
    473   struct bfd_strtab_hash *strings;
    474   /* The header file hash table.  */
    475   struct bfd_hash_table includes;
    476   /* The first .stabstr section.  */
    477   struct bfd_section *stabstr;
    478 };
    479 
    480 #define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
    481 
    482 /* User program access to BFD facilities.  */
    483 
    484 /* Direct I/O routines, for programs which know more about the object
    485    file than BFD does.  Use higher level routines if possible.  */
    486 
    487 extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
    488 extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
    489 extern int bfd_seek (bfd *, file_ptr, int);
    490 extern file_ptr bfd_tell (bfd *);
    491 extern int bfd_flush (bfd *);
    492 extern int bfd_stat (bfd *, struct stat *);
    493 
    494 /* Deprecated old routines.  */
    495 #if __GNUC__
    496 #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
    497   (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
    498    bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
    499 #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
    500   (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),	\
    501    bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
    502 #else
    503 #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
    504   (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
    505    bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
    506 #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
    507   (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
    508    bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
    509 #endif
    510 extern void warn_deprecated (const char *, const char *, int, const char *);
    511 
    512 /* Cast from const char * to char * so that caller can assign to
    513    a char * without a warning.  */
    514 #define bfd_get_filename(abfd) ((char *) (abfd)->filename)
    515 #define bfd_get_cacheable(abfd) ((abfd)->cacheable)
    516 #define bfd_get_format(abfd) ((abfd)->format)
    517 #define bfd_get_target(abfd) ((abfd)->xvec->name)
    518 #define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
    519 #define bfd_family_coff(abfd) \
    520   (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
    521    bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
    522 #define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
    523 #define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
    524 #define bfd_header_big_endian(abfd) \
    525   ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
    526 #define bfd_header_little_endian(abfd) \
    527   ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
    528 #define bfd_get_file_flags(abfd) ((abfd)->flags)
    529 #define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
    530 #define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
    531 #define bfd_my_archive(abfd) ((abfd)->my_archive)
    532 #define bfd_has_map(abfd) ((abfd)->has_armap)
    533 #define bfd_is_thin_archive(abfd) ((abfd)->is_thin_archive)
    534 
    535 #define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
    536 #define bfd_usrdata(abfd) ((abfd)->usrdata)
    537 
    538 #define bfd_get_start_address(abfd) ((abfd)->start_address)
    539 #define bfd_get_symcount(abfd) ((abfd)->symcount)
    540 #define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
    541 #define bfd_count_sections(abfd) ((abfd)->section_count)
    542 
    543 #define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
    544 
    545 #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
    546 
    547 extern bfd_boolean bfd_cache_close
    548   (bfd *abfd);
    549 /* NB: This declaration should match the autogenerated one in libbfd.h.  */
    550 
    551 extern bfd_boolean bfd_cache_close_all (void);
    552 
    553 extern bfd_boolean bfd_record_phdr
    554   (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
    555    bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
    556 
    557 /* Byte swapping routines.  */
    558 
    559 bfd_uint64_t bfd_getb64 (const void *);
    560 bfd_uint64_t bfd_getl64 (const void *);
    561 bfd_int64_t bfd_getb_signed_64 (const void *);
    562 bfd_int64_t bfd_getl_signed_64 (const void *);
    563 bfd_vma bfd_getb32 (const void *);
    564 bfd_vma bfd_getl32 (const void *);
    565 bfd_signed_vma bfd_getb_signed_32 (const void *);
    566 bfd_signed_vma bfd_getl_signed_32 (const void *);
    567 bfd_vma bfd_getb16 (const void *);
    568 bfd_vma bfd_getl16 (const void *);
    569 bfd_signed_vma bfd_getb_signed_16 (const void *);
    570 bfd_signed_vma bfd_getl_signed_16 (const void *);
    571 void bfd_putb64 (bfd_uint64_t, void *);
    572 void bfd_putl64 (bfd_uint64_t, void *);
    573 void bfd_putb32 (bfd_vma, void *);
    574 void bfd_putl32 (bfd_vma, void *);
    575 void bfd_putb16 (bfd_vma, void *);
    576 void bfd_putl16 (bfd_vma, void *);
    577 
    578 /* Byte swapping routines which take size and endiannes as arguments.  */
    579 
    580 bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
    581 void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
    582 
    583 #if defined(__STDC__) || defined(ALMOST_STDC)
    584 struct ecoff_debug_info;
    585 struct ecoff_debug_swap;
    586 struct ecoff_extr;
    587 struct bfd_symbol;
    588 struct bfd_link_info;
    589 struct bfd_link_hash_entry;
    590 struct bfd_section_already_linked;
    591 struct bfd_elf_version_tree;
    592 #endif
    593 
    594 extern bfd_boolean bfd_section_already_linked_table_init (void);
    595 extern void bfd_section_already_linked_table_free (void);
    596 extern bfd_boolean _bfd_handle_already_linked
    597   (struct bfd_section *, struct bfd_section_already_linked *,
    598    struct bfd_link_info *);
    599 
    600 /* Externally visible ECOFF routines.  */
    602 
    603 extern bfd_vma bfd_ecoff_get_gp_value
    604   (bfd * abfd);
    605 extern bfd_boolean bfd_ecoff_set_gp_value
    606   (bfd *abfd, bfd_vma gp_value);
    607 extern bfd_boolean bfd_ecoff_set_regmasks
    608   (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
    609    unsigned long *cprmask);
    610 extern void *bfd_ecoff_debug_init
    611   (bfd *output_bfd, struct ecoff_debug_info *output_debug,
    612    const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
    613 extern void bfd_ecoff_debug_free
    614   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
    615    const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
    616 extern bfd_boolean bfd_ecoff_debug_accumulate
    617   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
    618    const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
    619    struct ecoff_debug_info *input_debug,
    620    const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
    621 extern bfd_boolean bfd_ecoff_debug_accumulate_other
    622   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
    623    const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
    624    struct bfd_link_info *);
    625 extern bfd_boolean bfd_ecoff_debug_externals
    626   (bfd *abfd, struct ecoff_debug_info *debug,
    627    const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
    628    bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
    629    void (*set_index) (struct bfd_symbol *, bfd_size_type));
    630 extern bfd_boolean bfd_ecoff_debug_one_external
    631   (bfd *abfd, struct ecoff_debug_info *debug,
    632    const struct ecoff_debug_swap *swap, const char *name,
    633    struct ecoff_extr *esym);
    634 extern bfd_size_type bfd_ecoff_debug_size
    635   (bfd *abfd, struct ecoff_debug_info *debug,
    636    const struct ecoff_debug_swap *swap);
    637 extern bfd_boolean bfd_ecoff_write_debug
    638   (bfd *abfd, struct ecoff_debug_info *debug,
    639    const struct ecoff_debug_swap *swap, file_ptr where);
    640 extern bfd_boolean bfd_ecoff_write_accumulated_debug
    641   (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
    642    const struct ecoff_debug_swap *swap,
    643    struct bfd_link_info *info, file_ptr where);
    644 
    645 /* Externally visible ELF routines.  */
    646 
    647 struct bfd_link_needed_list
    648 {
    649   struct bfd_link_needed_list *next;
    650   bfd *by;
    651   const char *name;
    652 };
    653 
    654 enum dynamic_lib_link_class {
    655   DYN_NORMAL = 0,
    656   DYN_AS_NEEDED = 1,
    657   DYN_DT_NEEDED = 2,
    658   DYN_NO_ADD_NEEDED = 4,
    659   DYN_NO_NEEDED = 8
    660 };
    661 
    662 enum notice_asneeded_action {
    663   notice_as_needed,
    664   notice_not_needed,
    665   notice_needed
    666 };
    667 
    668 extern bfd_boolean bfd_elf_record_link_assignment
    669   (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
    670    bfd_boolean);
    671 extern struct bfd_link_needed_list *bfd_elf_get_needed_list
    672   (bfd *, struct bfd_link_info *);
    673 extern bfd_boolean bfd_elf_get_bfd_needed_list
    674   (bfd *, struct bfd_link_needed_list **);
    675 extern bfd_boolean bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *,
    676 					       const char *, bfd_vma);
    677 extern bfd_boolean bfd_elf_size_dynamic_sections
    678   (bfd *, const char *, const char *, const char *, const char *, const char *,
    679    const char * const *, struct bfd_link_info *, struct bfd_section **);
    680 extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
    681   (bfd *, struct bfd_link_info *);
    682 extern void bfd_elf_set_dt_needed_name
    683   (bfd *, const char *);
    684 extern const char *bfd_elf_get_dt_soname
    685   (bfd *);
    686 extern void bfd_elf_set_dyn_lib_class
    687   (bfd *, enum dynamic_lib_link_class);
    688 extern int bfd_elf_get_dyn_lib_class
    689   (bfd *);
    690 extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
    691   (bfd *, struct bfd_link_info *);
    692 extern int bfd_elf_discard_info
    693   (bfd *, struct bfd_link_info *);
    694 extern unsigned int _bfd_elf_default_action_discarded
    695   (struct bfd_section *);
    696 
    697 /* Return an upper bound on the number of bytes required to store a
    698    copy of ABFD's program header table entries.  Return -1 if an error
    699    occurs; bfd_get_error will return an appropriate code.  */
    700 extern long bfd_get_elf_phdr_upper_bound
    701   (bfd *abfd);
    702 
    703 /* Copy ABFD's program header table entries to *PHDRS.  The entries
    704    will be stored as an array of Elf_Internal_Phdr structures, as
    705    defined in include/elf/internal.h.  To find out how large the
    706    buffer needs to be, call bfd_get_elf_phdr_upper_bound.
    707 
    708    Return the number of program header table entries read, or -1 if an
    709    error occurs; bfd_get_error will return an appropriate code.  */
    710 extern int bfd_get_elf_phdrs
    711   (bfd *abfd, void *phdrs);
    712 
    713 /* Create a new BFD as if by bfd_openr.  Rather than opening a file,
    714    reconstruct an ELF file by reading the segments out of remote
    715    memory based on the ELF file header at EHDR_VMA and the ELF program
    716    headers it points to.  If non-zero, SIZE is the known extent of the
    717    object.  If not null, *LOADBASEP is filled in with the difference
    718    between the VMAs from which the segments were read, and the VMAs
    719    the file headers (and hence BFD's idea of each section's VMA) put
    720    them at.
    721 
    722    The function TARGET_READ_MEMORY is called to copy LEN bytes from
    723    the remote memory at target address VMA into the local buffer at
    724    MYADDR; it should return zero on success or an `errno' code on
    725    failure.  TEMPL must be a BFD for a target with the word size and
    726    byte order found in the remote memory.  */
    727 extern bfd *bfd_elf_bfd_from_remote_memory
    728   (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
    729    int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
    730 			      bfd_size_type len));
    731 
    732 extern struct bfd_section *_bfd_elf_tls_setup
    733   (bfd *, struct bfd_link_info *);
    734 
    735 extern struct bfd_section *
    736 _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);
    737 
    738 extern void _bfd_fix_excluded_sec_syms
    739   (bfd *, struct bfd_link_info *);
    740 
    741 extern unsigned bfd_m68k_mach_to_features (int);
    742 
    743 extern int bfd_m68k_features_to_mach (unsigned);
    744 
    745 extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
    746   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
    747    char **);
    748 
    749 extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);
    750 
    751 extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
    752   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
    753    char **);
    754 
    755 extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
    756   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
    757    char **);
    758 
    759 /* SunOS shared library support routines for the linker.  */
    760 
    761 extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
    762   (bfd *, struct bfd_link_info *);
    763 extern bfd_boolean bfd_sunos_record_link_assignment
    764   (bfd *, struct bfd_link_info *, const char *);
    765 extern bfd_boolean bfd_sunos_size_dynamic_sections
    766   (bfd *, struct bfd_link_info *, struct bfd_section **,
    767    struct bfd_section **, struct bfd_section **);
    768 
    769 /* Linux shared library support routines for the linker.  */
    770 
    771 extern bfd_boolean bfd_i386linux_size_dynamic_sections
    772   (bfd *, struct bfd_link_info *);
    773 extern bfd_boolean bfd_m68klinux_size_dynamic_sections
    774   (bfd *, struct bfd_link_info *);
    775 extern bfd_boolean bfd_sparclinux_size_dynamic_sections
    776   (bfd *, struct bfd_link_info *);
    777 
    778 /* mmap hacks */
    779 
    780 struct _bfd_window_internal;
    781 typedef struct _bfd_window_internal bfd_window_internal;
    782 
    783 typedef struct _bfd_window
    784 {
    785   /* What the user asked for.  */
    786   void *data;
    787   bfd_size_type size;
    788   /* The actual window used by BFD.  Small user-requested read-only
    789      regions sharing a page may share a single window into the object
    790      file.  Read-write versions shouldn't until I've fixed things to
    791      keep track of which portions have been claimed by the
    792      application; don't want to give the same region back when the
    793      application wants two writable copies!  */
    794   struct _bfd_window_internal *i;
    795 }
    796 bfd_window;
    797 
    798 extern void bfd_init_window
    799   (bfd_window *);
    800 extern void bfd_free_window
    801   (bfd_window *);
    802 extern bfd_boolean bfd_get_file_window
    803   (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
    804 
    805 /* XCOFF support routines for the linker.  */
    806 
    807 extern bfd_boolean bfd_xcoff_split_import_path
    808   (bfd *, const char *, const char **, const char **);
    809 extern bfd_boolean bfd_xcoff_set_archive_import_path
    810   (struct bfd_link_info *, bfd *, const char *);
    811 extern bfd_boolean bfd_xcoff_link_record_set
    812   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
    813 extern bfd_boolean bfd_xcoff_import_symbol
    814   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
    815    const char *, const char *, const char *, unsigned int);
    816 extern bfd_boolean bfd_xcoff_export_symbol
    817   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
    818 extern bfd_boolean bfd_xcoff_link_count_reloc
    819   (bfd *, struct bfd_link_info *, const char *);
    820 extern bfd_boolean bfd_xcoff_record_link_assignment
    821   (bfd *, struct bfd_link_info *, const char *);
    822 extern bfd_boolean bfd_xcoff_size_dynamic_sections
    823   (bfd *, struct bfd_link_info *, const char *, const char *,
    824    unsigned long, unsigned long, unsigned long, bfd_boolean,
    825    int, bfd_boolean, unsigned int, struct bfd_section **, bfd_boolean);
    826 extern bfd_boolean bfd_xcoff_link_generate_rtinit
    827   (bfd *, const char *, const char *, bfd_boolean);
    828 
    829 /* XCOFF support routines for ar.  */
    830 extern bfd_boolean bfd_xcoff_ar_archive_set_magic
    831   (bfd *, char *);
    832 
    833 /* Externally visible COFF routines.  */
    834 
    835 #if defined(__STDC__) || defined(ALMOST_STDC)
    836 struct internal_syment;
    837 union internal_auxent;
    838 #endif
    839 
    840 extern bfd_boolean bfd_coff_set_symbol_class
    841   (bfd *, struct bfd_symbol *, unsigned int);
    842 
    843 extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
    844   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
    845 
    846 /* ARM VFP11 erratum workaround support.  */
    847 typedef enum
    848 {
    849   BFD_ARM_VFP11_FIX_DEFAULT,
    850   BFD_ARM_VFP11_FIX_NONE,
    851   BFD_ARM_VFP11_FIX_SCALAR,
    852   BFD_ARM_VFP11_FIX_VECTOR
    853 } bfd_arm_vfp11_fix;
    854 
    855 extern void bfd_elf32_arm_init_maps
    856   (bfd *);
    857 
    858 extern void bfd_elf32_arm_set_vfp11_fix
    859   (bfd *, struct bfd_link_info *);
    860 
    861 extern void bfd_elf32_arm_set_cortex_a8_fix
    862   (bfd *, struct bfd_link_info *);
    863 
    864 extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
    865   (bfd *, struct bfd_link_info *);
    866 
    867 extern void bfd_elf32_arm_vfp11_fix_veneer_locations
    868   (bfd *, struct bfd_link_info *);
    869 
    870 /* ARM STM STM32L4XX erratum workaround support.  */
    871 typedef enum
    872 {
    873   BFD_ARM_STM32L4XX_FIX_NONE,
    874   BFD_ARM_STM32L4XX_FIX_DEFAULT,
    875   BFD_ARM_STM32L4XX_FIX_ALL
    876 } bfd_arm_stm32l4xx_fix;
    877 
    878 extern void bfd_elf32_arm_set_stm32l4xx_fix
    879   (bfd *, struct bfd_link_info *);
    880 
    881 extern bfd_boolean bfd_elf32_arm_stm32l4xx_erratum_scan
    882   (bfd *, struct bfd_link_info *);
    883 
    884 extern void bfd_elf32_arm_stm32l4xx_fix_veneer_locations
    885   (bfd *, struct bfd_link_info *);
    886 
    887 /* ARM Interworking support.  Called from linker.  */
    888 extern bfd_boolean bfd_arm_allocate_interworking_sections
    889   (struct bfd_link_info *);
    890 
    891 extern bfd_boolean bfd_arm_process_before_allocation
    892   (bfd *, struct bfd_link_info *, int);
    893 
    894 extern bfd_boolean bfd_arm_get_bfd_for_interworking
    895   (bfd *, struct bfd_link_info *);
    896 
    897 /* PE ARM Interworking support.  Called from linker.  */
    898 extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
    899   (struct bfd_link_info *);
    900 
    901 extern bfd_boolean bfd_arm_pe_process_before_allocation
    902   (bfd *, struct bfd_link_info *, int);
    903 
    904 extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
    905   (bfd *, struct bfd_link_info *);
    906 
    907 /* ELF ARM Interworking support.  Called from linker.  */
    908 extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
    909   (struct bfd_link_info *);
    910 
    911 extern bfd_boolean bfd_elf32_arm_process_before_allocation
    912   (bfd *, struct bfd_link_info *);
    913 
    914 void bfd_elf32_arm_set_target_relocs
    915   (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
    916    bfd_arm_stm32l4xx_fix, int, int, int, int, int);
    917 
    918 extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
    919   (bfd *, struct bfd_link_info *);
    920 
    921 extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
    922   (bfd *, struct bfd_link_info *);
    923 
    924 /* ELF ARM mapping symbol support.  */
    925 #define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
    926 #define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
    927 #define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)
    928 #define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
    929 
    930 extern bfd_boolean bfd_is_arm_special_symbol_name
    931   (const char *, int);
    932 
    933 extern void bfd_elf32_arm_set_byteswap_code
    934   (struct bfd_link_info *, int);
    935 
    936 extern void bfd_elf32_arm_use_long_plt (void);
    937 
    938 /* ARM Note section processing.  */
    939 extern bfd_boolean bfd_arm_merge_machines
    940   (bfd *, bfd *);
    941 
    942 extern bfd_boolean bfd_arm_update_notes
    943   (bfd *, const char *);
    944 
    945 extern unsigned int bfd_arm_get_mach_from_notes
    946   (bfd *, const char *);
    947 
    948 /* ARM stub generation support.  Called from the linker.  */
    949 extern int elf32_arm_setup_section_lists
    950   (bfd *, struct bfd_link_info *);
    951 extern void elf32_arm_next_input_section
    952   (struct bfd_link_info *, struct bfd_section *);
    953 extern bfd_boolean elf32_arm_size_stubs
    954   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
    955    struct bfd_section * (*) (const char *, struct bfd_section *, unsigned int),
    956    void (*) (void));
    957 extern bfd_boolean elf32_arm_build_stubs
    958   (struct bfd_link_info *);
    959 
    960 /* ARM unwind section editing support.  */
    961 extern bfd_boolean elf32_arm_fix_exidx_coverage
    962 (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
    963 
    964 /* C6x unwind section editing support.  */
    965 extern bfd_boolean elf32_tic6x_fix_exidx_coverage
    966 (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
    967 
    968 /* PowerPC @tls opcode transform/validate.  */
    969 extern unsigned int _bfd_elf_ppc_at_tls_transform
    970   (unsigned int, unsigned int);
    971 /* PowerPC @tprel opcode transform/validate.  */
    972 extern unsigned int _bfd_elf_ppc_at_tprel_transform
    973   (unsigned int, unsigned int);
    974 
    975 extern void bfd_elf64_aarch64_init_maps
    976   (bfd *);
    977 
    978 extern void bfd_elf32_aarch64_init_maps
    979   (bfd *);
    980 
    981 extern void bfd_elf64_aarch64_set_options
    982   (bfd *, struct bfd_link_info *, int, int, int, int, int);
    983 
    984 extern void bfd_elf32_aarch64_set_options
    985   (bfd *, struct bfd_link_info *, int, int, int, int, int);
    986 
    987 /* ELF AArch64 mapping symbol support.  */
    988 #define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP	(1 << 0)
    989 #define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG	(1 << 1)
    990 #define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
    991 #define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY	(~0)
    992 extern bfd_boolean bfd_is_aarch64_special_symbol_name
    993   (const char * name, int type);
    994 
    995 /* AArch64 stub generation support for ELF64.  Called from the linker.  */
    996 extern int elf64_aarch64_setup_section_lists
    997   (bfd *, struct bfd_link_info *);
    998 extern void elf64_aarch64_next_input_section
    999   (struct bfd_link_info *, struct bfd_section *);
   1000 extern bfd_boolean elf64_aarch64_size_stubs
   1001   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
   1002    struct bfd_section * (*) (const char *, struct bfd_section *),
   1003    void (*) (void));
   1004 extern bfd_boolean elf64_aarch64_build_stubs
   1005   (struct bfd_link_info *);
   1006 /* AArch64 stub generation support for ELF32.  Called from the linker.  */
   1007 extern int elf32_aarch64_setup_section_lists
   1008   (bfd *, struct bfd_link_info *);
   1009 extern void elf32_aarch64_next_input_section
   1010   (struct bfd_link_info *, struct bfd_section *);
   1011 extern bfd_boolean elf32_aarch64_size_stubs
   1012   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
   1013    struct bfd_section * (*) (const char *, struct bfd_section *),
   1014    void (*) (void));
   1015 extern bfd_boolean elf32_aarch64_build_stubs
   1016   (struct bfd_link_info *);
   1017 
   1018 
   1019 /* TI COFF load page support.  */
   1020 extern void bfd_ticoff_set_section_load_page
   1021   (struct bfd_section *, int);
   1022 
   1023 extern int bfd_ticoff_get_section_load_page
   1024   (struct bfd_section *);
   1025 
   1026 /* H8/300 functions.  */
   1027 extern bfd_vma bfd_h8300_pad_address
   1028   (bfd *, bfd_vma);
   1029 
   1030 /* IA64 Itanium code generation.  Called from linker.  */
   1031 extern void bfd_elf32_ia64_after_parse
   1032   (int);
   1033 
   1034 extern void bfd_elf64_ia64_after_parse
   1035   (int);
   1036 
   1037 /* V850 Note manipulation routines.  */
   1038 extern bfd_boolean v850_elf_create_sections
   1039   (struct bfd_link_info *);
   1040 
   1041 extern bfd_boolean v850_elf_set_note
   1042   (bfd *, unsigned int, unsigned int);
   1043 /* Extracted from init.c.  */
   1044 void bfd_init (void);
   1045 
   1046 /* Extracted from opncls.c.  */
   1047 /* Set to N to open the next N BFDs using an alternate id space.  */
   1048 extern unsigned int bfd_use_reserved_id;
   1049 bfd *bfd_fopen (const char *filename, const char *target,
   1050     const char *mode, int fd);
   1051 
   1052 bfd *bfd_openr (const char *filename, const char *target);
   1053 
   1054 bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
   1055 
   1056 bfd *bfd_openstreamr (const char * filename, const char * target, void * stream);
   1057 
   1058 bfd *bfd_openr_iovec (const char *filename, const char *target,
   1059     void *(*open_func) (struct bfd *nbfd,
   1060     void *open_closure),
   1061     void *open_closure,
   1062     file_ptr (*pread_func) (struct bfd *nbfd,
   1063     void *stream,
   1064     void *buf,
   1065     file_ptr nbytes,
   1066     file_ptr offset),
   1067     int (*close_func) (struct bfd *nbfd,
   1068     void *stream),
   1069     int (*stat_func) (struct bfd *abfd,
   1070     void *stream,
   1071     struct stat *sb));
   1072 
   1073 bfd *bfd_openw (const char *filename, const char *target);
   1074 
   1075 bfd_boolean bfd_close (bfd *abfd);
   1076 
   1077 bfd_boolean bfd_close_all_done (bfd *);
   1078 
   1079 bfd *bfd_create (const char *filename, bfd *templ);
   1080 
   1081 bfd_boolean bfd_make_writable (bfd *abfd);
   1082 
   1083 bfd_boolean bfd_make_readable (bfd *abfd);
   1084 
   1085 void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
   1086 
   1087 void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
   1088 
   1089 unsigned long bfd_calc_gnu_debuglink_crc32
   1090    (unsigned long crc, const unsigned char *buf, bfd_size_type len);
   1091 
   1092 char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
   1093 
   1094 char *bfd_get_alt_debug_link_info (bfd * abfd,
   1095     bfd_size_type *buildid_len,
   1096     bfd_byte **buildid_out);
   1097 
   1098 char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
   1099 
   1100 char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir);
   1101 
   1102 struct bfd_section *bfd_create_gnu_debuglink_section
   1103    (bfd *abfd, const char *filename);
   1104 
   1105 bfd_boolean bfd_fill_in_gnu_debuglink_section
   1106    (bfd *abfd, struct bfd_section *sect, const char *filename);
   1107 
   1108 /* Extracted from libbfd.c.  */
   1109 
   1110 /* Byte swapping macros for user section data.  */
   1111 
   1112 #define bfd_put_8(abfd, val, ptr) \
   1113   ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
   1114 #define bfd_put_signed_8 \
   1115   bfd_put_8
   1116 #define bfd_get_8(abfd, ptr) \
   1117   (*(const unsigned char *) (ptr) & 0xff)
   1118 #define bfd_get_signed_8(abfd, ptr) \
   1119   (((*(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
   1120 
   1121 #define bfd_put_16(abfd, val, ptr) \
   1122   BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
   1123 #define bfd_put_signed_16 \
   1124   bfd_put_16
   1125 #define bfd_get_16(abfd, ptr) \
   1126   BFD_SEND (abfd, bfd_getx16, (ptr))
   1127 #define bfd_get_signed_16(abfd, ptr) \
   1128   BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
   1129 
   1130 #define bfd_put_32(abfd, val, ptr) \
   1131   BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
   1132 #define bfd_put_signed_32 \
   1133   bfd_put_32
   1134 #define bfd_get_32(abfd, ptr) \
   1135   BFD_SEND (abfd, bfd_getx32, (ptr))
   1136 #define bfd_get_signed_32(abfd, ptr) \
   1137   BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
   1138 
   1139 #define bfd_put_64(abfd, val, ptr) \
   1140   BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
   1141 #define bfd_put_signed_64 \
   1142   bfd_put_64
   1143 #define bfd_get_64(abfd, ptr) \
   1144   BFD_SEND (abfd, bfd_getx64, (ptr))
   1145 #define bfd_get_signed_64(abfd, ptr) \
   1146   BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
   1147 
   1148 #define bfd_get(bits, abfd, ptr)                       \
   1149   ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
   1150    : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
   1151    : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
   1152    : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
   1153    : (abort (), (bfd_vma) - 1))
   1154 
   1155 #define bfd_put(bits, abfd, val, ptr)                  \
   1156   ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
   1157    : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
   1158    : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
   1159    : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
   1160    : (abort (), (void) 0))
   1161 
   1162 
   1163 /* Byte swapping macros for file header data.  */
   1164 
   1165 #define bfd_h_put_8(abfd, val, ptr) \
   1166   bfd_put_8 (abfd, val, ptr)
   1167 #define bfd_h_put_signed_8(abfd, val, ptr) \
   1168   bfd_put_8 (abfd, val, ptr)
   1169 #define bfd_h_get_8(abfd, ptr) \
   1170   bfd_get_8 (abfd, ptr)
   1171 #define bfd_h_get_signed_8(abfd, ptr) \
   1172   bfd_get_signed_8 (abfd, ptr)
   1173 
   1174 #define bfd_h_put_16(abfd, val, ptr) \
   1175   BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
   1176 #define bfd_h_put_signed_16 \
   1177   bfd_h_put_16
   1178 #define bfd_h_get_16(abfd, ptr) \
   1179   BFD_SEND (abfd, bfd_h_getx16, (ptr))
   1180 #define bfd_h_get_signed_16(abfd, ptr) \
   1181   BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
   1182 
   1183 #define bfd_h_put_32(abfd, val, ptr) \
   1184   BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
   1185 #define bfd_h_put_signed_32 \
   1186   bfd_h_put_32
   1187 #define bfd_h_get_32(abfd, ptr) \
   1188   BFD_SEND (abfd, bfd_h_getx32, (ptr))
   1189 #define bfd_h_get_signed_32(abfd, ptr) \
   1190   BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
   1191 
   1192 #define bfd_h_put_64(abfd, val, ptr) \
   1193   BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
   1194 #define bfd_h_put_signed_64 \
   1195   bfd_h_put_64
   1196 #define bfd_h_get_64(abfd, ptr) \
   1197   BFD_SEND (abfd, bfd_h_getx64, (ptr))
   1198 #define bfd_h_get_signed_64(abfd, ptr) \
   1199   BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
   1200 
   1201 /* Aliases for the above, which should eventually go away.  */
   1202 
   1203 #define H_PUT_64  bfd_h_put_64
   1204 #define H_PUT_32  bfd_h_put_32
   1205 #define H_PUT_16  bfd_h_put_16
   1206 #define H_PUT_8   bfd_h_put_8
   1207 #define H_PUT_S64 bfd_h_put_signed_64
   1208 #define H_PUT_S32 bfd_h_put_signed_32
   1209 #define H_PUT_S16 bfd_h_put_signed_16
   1210 #define H_PUT_S8  bfd_h_put_signed_8
   1211 #define H_GET_64  bfd_h_get_64
   1212 #define H_GET_32  bfd_h_get_32
   1213 #define H_GET_16  bfd_h_get_16
   1214 #define H_GET_8   bfd_h_get_8
   1215 #define H_GET_S64 bfd_h_get_signed_64
   1216 #define H_GET_S32 bfd_h_get_signed_32
   1217 #define H_GET_S16 bfd_h_get_signed_16
   1218 #define H_GET_S8  bfd_h_get_signed_8
   1219 
   1220 
   1221 /* Extracted from bfdio.c.  */
   1222 long bfd_get_mtime (bfd *abfd);
   1223 
   1224 file_ptr bfd_get_size (bfd *abfd);
   1225 
   1226 void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
   1227     int prot, int flags, file_ptr offset,
   1228     void **map_addr, bfd_size_type *map_len);
   1229 
   1230 /* Extracted from bfdwin.c.  */
   1231 /* Extracted from section.c.  */
   1232 
   1233 typedef struct bfd_section
   1234 {
   1235   /* The name of the section; the name isn't a copy, the pointer is
   1236      the same as that passed to bfd_make_section.  */
   1237   const char *name;
   1238 
   1239   /* A unique sequence number.  */
   1240   unsigned int id;
   1241 
   1242   /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
   1243   unsigned int index;
   1244 
   1245   /* The next section in the list belonging to the BFD, or NULL.  */
   1246   struct bfd_section *next;
   1247 
   1248   /* The previous section in the list belonging to the BFD, or NULL.  */
   1249   struct bfd_section *prev;
   1250 
   1251   /* The field flags contains attributes of the section. Some
   1252      flags are read in from the object file, and some are
   1253      synthesized from other information.  */
   1254   flagword flags;
   1255 
   1256 #define SEC_NO_FLAGS   0x000
   1257 
   1258   /* Tells the OS to allocate space for this section when loading.
   1259      This is clear for a section containing debug information only.  */
   1260 #define SEC_ALLOC      0x001
   1261 
   1262   /* Tells the OS to load the section from the file when loading.
   1263      This is clear for a .bss section.  */
   1264 #define SEC_LOAD       0x002
   1265 
   1266   /* The section contains data still to be relocated, so there is
   1267      some relocation information too.  */
   1268 #define SEC_RELOC      0x004
   1269 
   1270   /* A signal to the OS that the section contains read only data.  */
   1271 #define SEC_READONLY   0x008
   1272 
   1273   /* The section contains code only.  */
   1274 #define SEC_CODE       0x010
   1275 
   1276   /* The section contains data only.  */
   1277 #define SEC_DATA       0x020
   1278 
   1279   /* The section will reside in ROM.  */
   1280 #define SEC_ROM        0x040
   1281 
   1282   /* The section contains constructor information. This section
   1283      type is used by the linker to create lists of constructors and
   1284      destructors used by <<g++>>. When a back end sees a symbol
   1285      which should be used in a constructor list, it creates a new
   1286      section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
   1287      the symbol to it, and builds a relocation. To build the lists
   1288      of constructors, all the linker has to do is catenate all the
   1289      sections called <<__CTOR_LIST__>> and relocate the data
   1290      contained within - exactly the operations it would peform on
   1291      standard data.  */
   1292 #define SEC_CONSTRUCTOR 0x080
   1293 
   1294   /* The section has contents - a data section could be
   1295      <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
   1296      <<SEC_HAS_CONTENTS>>  */
   1297 #define SEC_HAS_CONTENTS 0x100
   1298 
   1299   /* An instruction to the linker to not output the section
   1300      even if it has information which would normally be written.  */
   1301 #define SEC_NEVER_LOAD 0x200
   1302 
   1303   /* The section contains thread local data.  */
   1304 #define SEC_THREAD_LOCAL 0x400
   1305 
   1306   /* The section has GOT references.  This flag is only for the
   1307      linker, and is currently only used by the elf32-hppa back end.
   1308      It will be set if global offset table references were detected
   1309      in this section, which indicate to the linker that the section
   1310      contains PIC code, and must be handled specially when doing a
   1311      static link.  */
   1312 #define SEC_HAS_GOT_REF 0x800
   1313 
   1314   /* The section contains common symbols (symbols may be defined
   1315      multiple times, the value of a symbol is the amount of
   1316      space it requires, and the largest symbol value is the one
   1317      used).  Most targets have exactly one of these (which we
   1318      translate to bfd_com_section_ptr), but ECOFF has two.  */
   1319 #define SEC_IS_COMMON 0x1000
   1320 
   1321   /* The section contains only debugging information.  For
   1322      example, this is set for ELF .debug and .stab sections.
   1323      strip tests this flag to see if a section can be
   1324      discarded.  */
   1325 #define SEC_DEBUGGING 0x2000
   1326 
   1327   /* The contents of this section are held in memory pointed to
   1328      by the contents field.  This is checked by bfd_get_section_contents,
   1329      and the data is retrieved from memory if appropriate.  */
   1330 #define SEC_IN_MEMORY 0x4000
   1331 
   1332   /* The contents of this section are to be excluded by the
   1333      linker for executable and shared objects unless those
   1334      objects are to be further relocated.  */
   1335 #define SEC_EXCLUDE 0x8000
   1336 
   1337   /* The contents of this section are to be sorted based on the sum of
   1338      the symbol and addend values specified by the associated relocation
   1339      entries.  Entries without associated relocation entries will be
   1340      appended to the end of the section in an unspecified order.  */
   1341 #define SEC_SORT_ENTRIES 0x10000
   1342 
   1343   /* When linking, duplicate sections of the same name should be
   1344      discarded, rather than being combined into a single section as
   1345      is usually done.  This is similar to how common symbols are
   1346      handled.  See SEC_LINK_DUPLICATES below.  */
   1347 #define SEC_LINK_ONCE 0x20000
   1348 
   1349   /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
   1350      should handle duplicate sections.  */
   1351 #define SEC_LINK_DUPLICATES 0xc0000
   1352 
   1353   /* This value for SEC_LINK_DUPLICATES means that duplicate
   1354      sections with the same name should simply be discarded.  */
   1355 #define SEC_LINK_DUPLICATES_DISCARD 0x0
   1356 
   1357   /* This value for SEC_LINK_DUPLICATES means that the linker
   1358      should warn if there are any duplicate sections, although
   1359      it should still only link one copy.  */
   1360 #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000
   1361 
   1362   /* This value for SEC_LINK_DUPLICATES means that the linker
   1363      should warn if any duplicate sections are a different size.  */
   1364 #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000
   1365 
   1366   /* This value for SEC_LINK_DUPLICATES means that the linker
   1367      should warn if any duplicate sections contain different
   1368      contents.  */
   1369 #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
   1370   (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
   1371 
   1372   /* This section was created by the linker as part of dynamic
   1373      relocation or other arcane processing.  It is skipped when
   1374      going through the first-pass output, trusting that someone
   1375      else up the line will take care of it later.  */
   1376 #define SEC_LINKER_CREATED 0x100000
   1377 
   1378   /* This section should not be subject to garbage collection.
   1379      Also set to inform the linker that this section should not be
   1380      listed in the link map as discarded.  */
   1381 #define SEC_KEEP 0x200000
   1382 
   1383   /* This section contains "short" data, and should be placed
   1384      "near" the GP.  */
   1385 #define SEC_SMALL_DATA 0x400000
   1386 
   1387   /* Attempt to merge identical entities in the section.
   1388      Entity size is given in the entsize field.  */
   1389 #define SEC_MERGE 0x800000
   1390 
   1391   /* If given with SEC_MERGE, entities to merge are zero terminated
   1392      strings where entsize specifies character size instead of fixed
   1393      size entries.  */
   1394 #define SEC_STRINGS 0x1000000
   1395 
   1396   /* This section contains data about section groups.  */
   1397 #define SEC_GROUP 0x2000000
   1398 
   1399   /* The section is a COFF shared library section.  This flag is
   1400      only for the linker.  If this type of section appears in
   1401      the input file, the linker must copy it to the output file
   1402      without changing the vma or size.  FIXME: Although this
   1403      was originally intended to be general, it really is COFF
   1404      specific (and the flag was renamed to indicate this).  It
   1405      might be cleaner to have some more general mechanism to
   1406      allow the back end to control what the linker does with
   1407      sections.  */
   1408 #define SEC_COFF_SHARED_LIBRARY 0x4000000
   1409 
   1410   /* This input section should be copied to output in reverse order
   1411      as an array of pointers.  This is for ELF linker internal use
   1412      only.  */
   1413 #define SEC_ELF_REVERSE_COPY 0x4000000
   1414 
   1415   /* This section contains data which may be shared with other
   1416      executables or shared objects. This is for COFF only.  */
   1417 #define SEC_COFF_SHARED 0x8000000
   1418 
   1419   /* This section should be compressed.  This is for ELF linker
   1420      internal use only.  */
   1421 #define SEC_ELF_COMPRESS 0x8000000
   1422 
   1423   /* When a section with this flag is being linked, then if the size of
   1424      the input section is less than a page, it should not cross a page
   1425      boundary.  If the size of the input section is one page or more,
   1426      it should be aligned on a page boundary.  This is for TI
   1427      TMS320C54X only.  */
   1428 #define SEC_TIC54X_BLOCK 0x10000000
   1429 
   1430   /* This section should be renamed.  This is for ELF linker
   1431      internal use only.  */
   1432 #define SEC_ELF_RENAME 0x10000000
   1433 
   1434   /* Conditionally link this section; do not link if there are no
   1435      references found to any symbol in the section.  This is for TI
   1436      TMS320C54X only.  */
   1437 #define SEC_TIC54X_CLINK 0x20000000
   1438 
   1439   /* This section contains vliw code.  This is for Toshiba MeP only.  */
   1440 #define SEC_MEP_VLIW 0x20000000
   1441 
   1442   /* Indicate that section has the no read flag set. This happens
   1443      when memory read flag isn't set. */
   1444 #define SEC_COFF_NOREAD 0x40000000
   1445 
   1446   /*  End of section flags.  */
   1447 
   1448   /* Some internal packed boolean fields.  */
   1449 
   1450   /* See the vma field.  */
   1451   unsigned int user_set_vma : 1;
   1452 
   1453   /* A mark flag used by some of the linker backends.  */
   1454   unsigned int linker_mark : 1;
   1455 
   1456   /* Another mark flag used by some of the linker backends.  Set for
   1457      output sections that have an input section.  */
   1458   unsigned int linker_has_input : 1;
   1459 
   1460   /* Mark flag used by some linker backends for garbage collection.  */
   1461   unsigned int gc_mark : 1;
   1462 
   1463   /* Section compression status.  */
   1464   unsigned int compress_status : 2;
   1465 #define COMPRESS_SECTION_NONE    0
   1466 #define COMPRESS_SECTION_DONE    1
   1467 #define DECOMPRESS_SECTION_SIZED 2
   1468 
   1469   /* The following flags are used by the ELF linker. */
   1470 
   1471   /* Mark sections which have been allocated to segments.  */
   1472   unsigned int segment_mark : 1;
   1473 
   1474   /* Type of sec_info information.  */
   1475   unsigned int sec_info_type:3;
   1476 #define SEC_INFO_TYPE_NONE      0
   1477 #define SEC_INFO_TYPE_STABS     1
   1478 #define SEC_INFO_TYPE_MERGE     2
   1479 #define SEC_INFO_TYPE_EH_FRAME  3
   1480 #define SEC_INFO_TYPE_JUST_SYMS 4
   1481 #define SEC_INFO_TYPE_TARGET    5
   1482 #define SEC_INFO_TYPE_EH_FRAME_ENTRY 6
   1483 
   1484   /* Nonzero if this section uses RELA relocations, rather than REL.  */
   1485   unsigned int use_rela_p:1;
   1486 
   1487   /* Bits used by various backends.  The generic code doesn't touch
   1488      these fields.  */
   1489 
   1490   unsigned int sec_flg0:1;
   1491   unsigned int sec_flg1:1;
   1492   unsigned int sec_flg2:1;
   1493   unsigned int sec_flg3:1;
   1494   unsigned int sec_flg4:1;
   1495   unsigned int sec_flg5:1;
   1496 
   1497   /* End of internal packed boolean fields.  */
   1498 
   1499   /*  The virtual memory address of the section - where it will be
   1500       at run time.  The symbols are relocated against this.  The
   1501       user_set_vma flag is maintained by bfd; if it's not set, the
   1502       backend can assign addresses (for example, in <<a.out>>, where
   1503       the default address for <<.data>> is dependent on the specific
   1504       target and various flags).  */
   1505   bfd_vma vma;
   1506 
   1507   /*  The load address of the section - where it would be in a
   1508       rom image; really only used for writing section header
   1509       information.  */
   1510   bfd_vma lma;
   1511 
   1512   /* The size of the section in octets, as it will be output.
   1513      Contains a value even if the section has no contents (e.g., the
   1514      size of <<.bss>>).  */
   1515   bfd_size_type size;
   1516 
   1517   /* For input sections, the original size on disk of the section, in
   1518      octets.  This field should be set for any section whose size is
   1519      changed by linker relaxation.  It is required for sections where
   1520      the linker relaxation scheme doesn't cache altered section and
   1521      reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
   1522      targets), and thus the original size needs to be kept to read the
   1523      section multiple times.  For output sections, rawsize holds the
   1524      section size calculated on a previous linker relaxation pass.  */
   1525   bfd_size_type rawsize;
   1526 
   1527   /* The compressed size of the section in octets.  */
   1528   bfd_size_type compressed_size;
   1529 
   1530   /* Relaxation table. */
   1531   struct relax_table *relax;
   1532 
   1533   /* Count of used relaxation table entries. */
   1534   int relax_count;
   1535 
   1536 
   1537   /* If this section is going to be output, then this value is the
   1538      offset in *bytes* into the output section of the first byte in the
   1539      input section (byte ==> smallest addressable unit on the
   1540      target).  In most cases, if this was going to start at the
   1541      100th octet (8-bit quantity) in the output section, this value
   1542      would be 100.  However, if the target byte size is 16 bits
   1543      (bfd_octets_per_byte is "2"), this value would be 50.  */
   1544   bfd_vma output_offset;
   1545 
   1546   /* The output section through which to map on output.  */
   1547   struct bfd_section *output_section;
   1548 
   1549   /* The alignment requirement of the section, as an exponent of 2 -
   1550      e.g., 3 aligns to 2^3 (or 8).  */
   1551   unsigned int alignment_power;
   1552 
   1553   /* If an input section, a pointer to a vector of relocation
   1554      records for the data in this section.  */
   1555   struct reloc_cache_entry *relocation;
   1556 
   1557   /* If an output section, a pointer to a vector of pointers to
   1558      relocation records for the data in this section.  */
   1559   struct reloc_cache_entry **orelocation;
   1560 
   1561   /* The number of relocation records in one of the above.  */
   1562   unsigned reloc_count;
   1563 
   1564   /* Information below is back end specific - and not always used
   1565      or updated.  */
   1566 
   1567   /* File position of section data.  */
   1568   file_ptr filepos;
   1569 
   1570   /* File position of relocation info.  */
   1571   file_ptr rel_filepos;
   1572 
   1573   /* File position of line data.  */
   1574   file_ptr line_filepos;
   1575 
   1576   /* Pointer to data for applications.  */
   1577   void *userdata;
   1578 
   1579   /* If the SEC_IN_MEMORY flag is set, this points to the actual
   1580      contents.  */
   1581   unsigned char *contents;
   1582 
   1583   /* Attached line number information.  */
   1584   alent *lineno;
   1585 
   1586   /* Number of line number records.  */
   1587   unsigned int lineno_count;
   1588 
   1589   /* Entity size for merging purposes.  */
   1590   unsigned int entsize;
   1591 
   1592   /* Points to the kept section if this section is a link-once section,
   1593      and is discarded.  */
   1594   struct bfd_section *kept_section;
   1595 
   1596   /* When a section is being output, this value changes as more
   1597      linenumbers are written out.  */
   1598   file_ptr moving_line_filepos;
   1599 
   1600   /* What the section number is in the target world.  */
   1601   int target_index;
   1602 
   1603   void *used_by_bfd;
   1604 
   1605   /* If this is a constructor section then here is a list of the
   1606      relocations created to relocate items within it.  */
   1607   struct relent_chain *constructor_chain;
   1608 
   1609   /* The BFD which owns the section.  */
   1610   bfd *owner;
   1611 
   1612   /* A symbol which points at this section only.  */
   1613   struct bfd_symbol *symbol;
   1614   struct bfd_symbol **symbol_ptr_ptr;
   1615 
   1616   /* Early in the link process, map_head and map_tail are used to build
   1617      a list of input sections attached to an output section.  Later,
   1618      output sections use these fields for a list of bfd_link_order
   1619      structs.  */
   1620   union {
   1621     struct bfd_link_order *link_order;
   1622     struct bfd_section *s;
   1623   } map_head, map_tail;
   1624 } asection;
   1625 
   1626 /* Relax table contains information about instructions which can
   1627    be removed by relaxation -- replacing a long address with a
   1628    short address.  */
   1629 struct relax_table {
   1630   /* Address where bytes may be deleted. */
   1631   bfd_vma addr;
   1632 
   1633   /* Number of bytes to be deleted.  */
   1634   int size;
   1635 };
   1636 
   1637 /* Note: the following are provided as inline functions rather than macros
   1638    because not all callers use the return value.  A macro implementation
   1639    would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
   1640    compilers will complain about comma expressions that have no effect.  */
   1641 static inline bfd_boolean
   1642 bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val)
   1643 {
   1644   ptr->userdata = val;
   1645   return TRUE;
   1646 }
   1647 
   1648 static inline bfd_boolean
   1649 bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
   1650 {
   1651   ptr->vma = ptr->lma = val;
   1652   ptr->user_set_vma = TRUE;
   1653   return TRUE;
   1654 }
   1655 
   1656 static inline bfd_boolean
   1657 bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val)
   1658 {
   1659   ptr->alignment_power = val;
   1660   return TRUE;
   1661 }
   1662 
   1663 /* These sections are global, and are managed by BFD.  The application
   1664    and target back end are not permitted to change the values in
   1665    these sections.  */
   1666 extern asection _bfd_std_section[4];
   1667 
   1668 #define BFD_ABS_SECTION_NAME "*ABS*"
   1669 #define BFD_UND_SECTION_NAME "*UND*"
   1670 #define BFD_COM_SECTION_NAME "*COM*"
   1671 #define BFD_IND_SECTION_NAME "*IND*"
   1672 
   1673 /* Pointer to the common section.  */
   1674 #define bfd_com_section_ptr (&_bfd_std_section[0])
   1675 /* Pointer to the undefined section.  */
   1676 #define bfd_und_section_ptr (&_bfd_std_section[1])
   1677 /* Pointer to the absolute section.  */
   1678 #define bfd_abs_section_ptr (&_bfd_std_section[2])
   1679 /* Pointer to the indirect section.  */
   1680 #define bfd_ind_section_ptr (&_bfd_std_section[3])
   1681 
   1682 #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
   1683 #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
   1684 #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
   1685 
   1686 #define bfd_is_const_section(SEC)              \
   1687  (   ((SEC) == bfd_abs_section_ptr)            \
   1688   || ((SEC) == bfd_und_section_ptr)            \
   1689   || ((SEC) == bfd_com_section_ptr)            \
   1690   || ((SEC) == bfd_ind_section_ptr))
   1691 
   1692 /* Macros to handle insertion and deletion of a bfd's sections.  These
   1693    only handle the list pointers, ie. do not adjust section_count,
   1694    target_index etc.  */
   1695 #define bfd_section_list_remove(ABFD, S) \
   1696   do                                                   \
   1697     {                                                  \
   1698       asection *_s = S;                                \
   1699       asection *_next = _s->next;                      \
   1700       asection *_prev = _s->prev;                      \
   1701       if (_prev)                                       \
   1702         _prev->next = _next;                           \
   1703       else                                             \
   1704         (ABFD)->sections = _next;                      \
   1705       if (_next)                                       \
   1706         _next->prev = _prev;                           \
   1707       else                                             \
   1708         (ABFD)->section_last = _prev;                  \
   1709     }                                                  \
   1710   while (0)
   1711 #define bfd_section_list_append(ABFD, S) \
   1712   do                                                   \
   1713     {                                                  \
   1714       asection *_s = S;                                \
   1715       bfd *_abfd = ABFD;                               \
   1716       _s->next = NULL;                                 \
   1717       if (_abfd->section_last)                         \
   1718         {                                              \
   1719           _s->prev = _abfd->section_last;              \
   1720           _abfd->section_last->next = _s;              \
   1721         }                                              \
   1722       else                                             \
   1723         {                                              \
   1724           _s->prev = NULL;                             \
   1725           _abfd->sections = _s;                        \
   1726         }                                              \
   1727       _abfd->section_last = _s;                        \
   1728     }                                                  \
   1729   while (0)
   1730 #define bfd_section_list_prepend(ABFD, S) \
   1731   do                                                   \
   1732     {                                                  \
   1733       asection *_s = S;                                \
   1734       bfd *_abfd = ABFD;                               \
   1735       _s->prev = NULL;                                 \
   1736       if (_abfd->sections)                             \
   1737         {                                              \
   1738           _s->next = _abfd->sections;                  \
   1739           _abfd->sections->prev = _s;                  \
   1740         }                                              \
   1741       else                                             \
   1742         {                                              \
   1743           _s->next = NULL;                             \
   1744           _abfd->section_last = _s;                    \
   1745         }                                              \
   1746       _abfd->sections = _s;                            \
   1747     }                                                  \
   1748   while (0)
   1749 #define bfd_section_list_insert_after(ABFD, A, S) \
   1750   do                                                   \
   1751     {                                                  \
   1752       asection *_a = A;                                \
   1753       asection *_s = S;                                \
   1754       asection *_next = _a->next;                      \
   1755       _s->next = _next;                                \
   1756       _s->prev = _a;                                   \
   1757       _a->next = _s;                                   \
   1758       if (_next)                                       \
   1759         _next->prev = _s;                              \
   1760       else                                             \
   1761         (ABFD)->section_last = _s;                     \
   1762     }                                                  \
   1763   while (0)
   1764 #define bfd_section_list_insert_before(ABFD, B, S) \
   1765   do                                                   \
   1766     {                                                  \
   1767       asection *_b = B;                                \
   1768       asection *_s = S;                                \
   1769       asection *_prev = _b->prev;                      \
   1770       _s->prev = _prev;                                \
   1771       _s->next = _b;                                   \
   1772       _b->prev = _s;                                   \
   1773       if (_prev)                                       \
   1774         _prev->next = _s;                              \
   1775       else                                             \
   1776         (ABFD)->sections = _s;                         \
   1777     }                                                  \
   1778   while (0)
   1779 #define bfd_section_removed_from_list(ABFD, S) \
   1780   ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
   1781 
   1782 #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
   1783   /* name, id,  index, next, prev, flags, user_set_vma,            */  \
   1784   { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
   1785                                                                        \
   1786   /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
   1787      0,           0,                1,       0,                        \
   1788                                                                        \
   1789   /* segment_mark, sec_info_type, use_rela_p,                      */  \
   1790      0,            0,             0,                                   \
   1791                                                                        \
   1792   /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,   */  \
   1793      0,        0,        0,        0,        0,        0,              \
   1794                                                                        \
   1795   /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */  \
   1796      0,   0,   0,    0,       0,               0,     0,               \
   1797                                                                        \
   1798   /* output_offset, output_section, alignment_power,               */  \
   1799      0,             &SEC,           0,                                 \
   1800                                                                        \
   1801   /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
   1802      NULL,       NULL,        0,           0,       0,                 \
   1803                                                                        \
   1804   /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
   1805      0,            NULL,     NULL,     NULL,   0,                      \
   1806                                                                        \
   1807   /* entsize, kept_section, moving_line_filepos,                    */ \
   1808      0,       NULL,          0,                                        \
   1809                                                                        \
   1810   /* target_index, used_by_bfd, constructor_chain, owner,          */  \
   1811      0,            NULL,        NULL,              NULL,               \
   1812                                                                        \
   1813   /* symbol,                    symbol_ptr_ptr,                    */  \
   1814      (struct bfd_symbol *) SYM, &SEC.symbol,                           \
   1815                                                                        \
   1816   /* map_head, map_tail                                            */  \
   1817      { NULL }, { NULL }                                                \
   1818     }
   1819 
   1820 void bfd_section_list_clear (bfd *);
   1821 
   1822 asection *bfd_get_section_by_name (bfd *abfd, const char *name);
   1823 
   1824 asection *bfd_get_next_section_by_name (bfd *ibfd, asection *sec);
   1825 
   1826 asection *bfd_get_linker_section (bfd *abfd, const char *name);
   1827 
   1828 asection *bfd_get_section_by_name_if
   1829    (bfd *abfd,
   1830     const char *name,
   1831     bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
   1832     void *obj);
   1833 
   1834 char *bfd_get_unique_section_name
   1835    (bfd *abfd, const char *templat, int *count);
   1836 
   1837 asection *bfd_make_section_old_way (bfd *abfd, const char *name);
   1838 
   1839 asection *bfd_make_section_anyway_with_flags
   1840    (bfd *abfd, const char *name, flagword flags);
   1841 
   1842 asection *bfd_make_section_anyway (bfd *abfd, const char *name);
   1843 
   1844 asection *bfd_make_section_with_flags
   1845    (bfd *, const char *name, flagword flags);
   1846 
   1847 asection *bfd_make_section (bfd *, const char *name);
   1848 
   1849 int bfd_get_next_section_id (void);
   1850 
   1851 bfd_boolean bfd_set_section_flags
   1852    (bfd *abfd, asection *sec, flagword flags);
   1853 
   1854 void bfd_rename_section
   1855    (bfd *abfd, asection *sec, const char *newname);
   1856 
   1857 void bfd_map_over_sections
   1858    (bfd *abfd,
   1859     void (*func) (bfd *abfd, asection *sect, void *obj),
   1860     void *obj);
   1861 
   1862 asection *bfd_sections_find_if
   1863    (bfd *abfd,
   1864     bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
   1865     void *obj);
   1866 
   1867 bfd_boolean bfd_set_section_size
   1868    (bfd *abfd, asection *sec, bfd_size_type val);
   1869 
   1870 bfd_boolean bfd_set_section_contents
   1871    (bfd *abfd, asection *section, const void *data,
   1872     file_ptr offset, bfd_size_type count);
   1873 
   1874 bfd_boolean bfd_get_section_contents
   1875    (bfd *abfd, asection *section, void *location, file_ptr offset,
   1876     bfd_size_type count);
   1877 
   1878 bfd_boolean bfd_malloc_and_get_section
   1879    (bfd *abfd, asection *section, bfd_byte **buf);
   1880 
   1881 bfd_boolean bfd_copy_private_section_data
   1882    (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
   1883 
   1884 #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
   1885      BFD_SEND (obfd, _bfd_copy_private_section_data, \
   1886                (ibfd, isection, obfd, osection))
   1887 bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
   1888 
   1889 bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
   1890 
   1891 /* Extracted from archures.c.  */
   1892 enum bfd_architecture
   1893 {
   1894   bfd_arch_unknown,   /* File arch not known.  */
   1895   bfd_arch_obscure,   /* Arch known, not one of these.  */
   1896   bfd_arch_m68k,      /* Motorola 68xxx */
   1897 #define bfd_mach_m68000 1
   1898 #define bfd_mach_m68008 2
   1899 #define bfd_mach_m68010 3
   1900 #define bfd_mach_m68020 4
   1901 #define bfd_mach_m68030 5
   1902 #define bfd_mach_m68040 6
   1903 #define bfd_mach_m68060 7
   1904 #define bfd_mach_cpu32  8
   1905 #define bfd_mach_fido   9
   1906 #define bfd_mach_mcf_isa_a_nodiv 10
   1907 #define bfd_mach_mcf_isa_a 11
   1908 #define bfd_mach_mcf_isa_a_mac 12
   1909 #define bfd_mach_mcf_isa_a_emac 13
   1910 #define bfd_mach_mcf_isa_aplus 14
   1911 #define bfd_mach_mcf_isa_aplus_mac 15
   1912 #define bfd_mach_mcf_isa_aplus_emac 16
   1913 #define bfd_mach_mcf_isa_b_nousp 17
   1914 #define bfd_mach_mcf_isa_b_nousp_mac 18
   1915 #define bfd_mach_mcf_isa_b_nousp_emac 19
   1916 #define bfd_mach_mcf_isa_b 20
   1917 #define bfd_mach_mcf_isa_b_mac 21
   1918 #define bfd_mach_mcf_isa_b_emac 22
   1919 #define bfd_mach_mcf_isa_b_float 23
   1920 #define bfd_mach_mcf_isa_b_float_mac 24
   1921 #define bfd_mach_mcf_isa_b_float_emac 25
   1922 #define bfd_mach_mcf_isa_c 26
   1923 #define bfd_mach_mcf_isa_c_mac 27
   1924 #define bfd_mach_mcf_isa_c_emac 28
   1925 #define bfd_mach_mcf_isa_c_nodiv 29
   1926 #define bfd_mach_mcf_isa_c_nodiv_mac 30
   1927 #define bfd_mach_mcf_isa_c_nodiv_emac 31
   1928   bfd_arch_vax,       /* DEC Vax */
   1929   bfd_arch_i960,      /* Intel 960 */
   1930     /* The order of the following is important.
   1931        lower number indicates a machine type that
   1932        only accepts a subset of the instructions
   1933        available to machines with higher numbers.
   1934        The exception is the "ca", which is
   1935        incompatible with all other machines except
   1936        "core".  */
   1937 
   1938 #define bfd_mach_i960_core      1
   1939 #define bfd_mach_i960_ka_sa     2
   1940 #define bfd_mach_i960_kb_sb     3
   1941 #define bfd_mach_i960_mc        4
   1942 #define bfd_mach_i960_xa        5
   1943 #define bfd_mach_i960_ca        6
   1944 #define bfd_mach_i960_jx        7
   1945 #define bfd_mach_i960_hx        8
   1946 
   1947   bfd_arch_or1k,      /* OpenRISC 1000 */
   1948 #define bfd_mach_or1k           1
   1949 #define bfd_mach_or1knd         2
   1950 
   1951   bfd_arch_sparc,     /* SPARC */
   1952 #define bfd_mach_sparc                 1
   1953 /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
   1954 #define bfd_mach_sparc_sparclet        2
   1955 #define bfd_mach_sparc_sparclite       3
   1956 #define bfd_mach_sparc_v8plus          4
   1957 #define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
   1958 #define bfd_mach_sparc_sparclite_le    6
   1959 #define bfd_mach_sparc_v9              7
   1960 #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
   1961 #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
   1962 #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
   1963 /* Nonzero if MACH has the v9 instruction set.  */
   1964 #define bfd_mach_sparc_v9_p(mach) \
   1965   ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
   1966    && (mach) != bfd_mach_sparc_sparclite_le)
   1967 /* Nonzero if MACH is a 64 bit sparc architecture.  */
   1968 #define bfd_mach_sparc_64bit_p(mach) \
   1969   ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
   1970   bfd_arch_spu,       /* PowerPC SPU */
   1971 #define bfd_mach_spu           256
   1972   bfd_arch_mips,      /* MIPS Rxxxx */
   1973 #define bfd_mach_mips3000              3000
   1974 #define bfd_mach_mips3900              3900
   1975 #define bfd_mach_mips4000              4000
   1976 #define bfd_mach_mips4010              4010
   1977 #define bfd_mach_mips4100              4100
   1978 #define bfd_mach_mips4111              4111
   1979 #define bfd_mach_mips4120              4120
   1980 #define bfd_mach_mips4300              4300
   1981 #define bfd_mach_mips4400              4400
   1982 #define bfd_mach_mips4600              4600
   1983 #define bfd_mach_mips4650              4650
   1984 #define bfd_mach_mips5000              5000
   1985 #define bfd_mach_mips5400              5400
   1986 #define bfd_mach_mips5500              5500
   1987 #define bfd_mach_mips5900              5900
   1988 #define bfd_mach_mips6000              6000
   1989 #define bfd_mach_mips7000              7000
   1990 #define bfd_mach_mips8000              8000
   1991 #define bfd_mach_mips9000              9000
   1992 #define bfd_mach_mips10000             10000
   1993 #define bfd_mach_mips12000             12000
   1994 #define bfd_mach_mips14000             14000
   1995 #define bfd_mach_mips16000             16000
   1996 #define bfd_mach_mips16                16
   1997 #define bfd_mach_mips5                 5
   1998 #define bfd_mach_mips_loongson_2e      3001
   1999 #define bfd_mach_mips_loongson_2f      3002
   2000 #define bfd_mach_mips_loongson_3a      3003
   2001 #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
   2002 #define bfd_mach_mips_octeon           6501
   2003 #define bfd_mach_mips_octeonp          6601
   2004 #define bfd_mach_mips_octeon2          6502
   2005 #define bfd_mach_mips_octeon3          6503
   2006 #define bfd_mach_mips_xlr              887682   /* decimal 'XLR'  */
   2007 #define bfd_mach_mipsisa32             32
   2008 #define bfd_mach_mipsisa32r2           33
   2009 #define bfd_mach_mipsisa32r3           34
   2010 #define bfd_mach_mipsisa32r5           36
   2011 #define bfd_mach_mipsisa32r6           37
   2012 #define bfd_mach_mipsisa64             64
   2013 #define bfd_mach_mipsisa64r2           65
   2014 #define bfd_mach_mipsisa64r3           66
   2015 #define bfd_mach_mipsisa64r5           68
   2016 #define bfd_mach_mipsisa64r6           69
   2017 #define bfd_mach_mips_micromips        96
   2018   bfd_arch_i386,      /* Intel 386 */
   2019 #define bfd_mach_i386_intel_syntax     (1 << 0)
   2020 #define bfd_mach_i386_i8086            (1 << 1)
   2021 #define bfd_mach_i386_i386             (1 << 2)
   2022 #define bfd_mach_x86_64                (1 << 3)
   2023 #define bfd_mach_x64_32                (1 << 4)
   2024 #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
   2025 #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
   2026 #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
   2027   bfd_arch_l1om,   /* Intel L1OM */
   2028 #define bfd_mach_l1om                  (1 << 5)
   2029 #define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
   2030   bfd_arch_k1om,   /* Intel K1OM */
   2031 #define bfd_mach_k1om                  (1 << 6)
   2032 #define bfd_mach_k1om_intel_syntax     (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
   2033 #define bfd_mach_i386_nacl             (1 << 7)
   2034 #define bfd_mach_i386_i386_nacl        (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
   2035 #define bfd_mach_x86_64_nacl           (bfd_mach_x86_64 | bfd_mach_i386_nacl)
   2036 #define bfd_mach_x64_32_nacl           (bfd_mach_x64_32 | bfd_mach_i386_nacl)
   2037   bfd_arch_iamcu,   /* Intel MCU */
   2038 #define bfd_mach_iamcu                 (1 << 8)
   2039 #define bfd_mach_i386_iamcu            (bfd_mach_i386_i386 | bfd_mach_iamcu)
   2040 #define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax)
   2041   bfd_arch_we32k,     /* AT&T WE32xxx */
   2042   bfd_arch_tahoe,     /* CCI/Harris Tahoe */
   2043   bfd_arch_i860,      /* Intel 860 */
   2044   bfd_arch_i370,      /* IBM 360/370 Mainframes */
   2045   bfd_arch_romp,      /* IBM ROMP PC/RT */
   2046   bfd_arch_convex,    /* Convex */
   2047   bfd_arch_m88k,      /* Motorola 88xxx */
   2048   bfd_arch_m98k,      /* Motorola 98xxx */
   2049   bfd_arch_pyramid,   /* Pyramid Technology */
   2050   bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
   2051 #define bfd_mach_h8300    1
   2052 #define bfd_mach_h8300h   2
   2053 #define bfd_mach_h8300s   3
   2054 #define bfd_mach_h8300hn  4
   2055 #define bfd_mach_h8300sn  5
   2056 #define bfd_mach_h8300sx  6
   2057 #define bfd_mach_h8300sxn 7
   2058   bfd_arch_pdp11,     /* DEC PDP-11 */
   2059   bfd_arch_plugin,
   2060   bfd_arch_powerpc,   /* PowerPC */
   2061 #define bfd_mach_ppc           32
   2062 #define bfd_mach_ppc64         64
   2063 #define bfd_mach_ppc_403       403
   2064 #define bfd_mach_ppc_403gc     4030
   2065 #define bfd_mach_ppc_405       405
   2066 #define bfd_mach_ppc_505       505
   2067 #define bfd_mach_ppc_601       601
   2068 #define bfd_mach_ppc_602       602
   2069 #define bfd_mach_ppc_603       603
   2070 #define bfd_mach_ppc_ec603e    6031
   2071 #define bfd_mach_ppc_604       604
   2072 #define bfd_mach_ppc_620       620
   2073 #define bfd_mach_ppc_630       630
   2074 #define bfd_mach_ppc_750       750
   2075 #define bfd_mach_ppc_860       860
   2076 #define bfd_mach_ppc_a35       35
   2077 #define bfd_mach_ppc_rs64ii    642
   2078 #define bfd_mach_ppc_rs64iii   643
   2079 #define bfd_mach_ppc_7400      7400
   2080 #define bfd_mach_ppc_e500      500
   2081 #define bfd_mach_ppc_e500mc    5001
   2082 #define bfd_mach_ppc_e500mc64  5005
   2083 #define bfd_mach_ppc_e5500     5006
   2084 #define bfd_mach_ppc_e6500     5007
   2085 #define bfd_mach_ppc_titan     83
   2086 #define bfd_mach_ppc_vle       84
   2087   bfd_arch_riscv,     /* RISC-V */
   2088 #define bfd_mach_riscv32       132
   2089 #define bfd_mach_riscv64       164
   2090   bfd_arch_rs6000,    /* IBM RS/6000 */
   2091 #define bfd_mach_rs6k          6000
   2092 #define bfd_mach_rs6k_rs1      6001
   2093 #define bfd_mach_rs6k_rsc      6003
   2094 #define bfd_mach_rs6k_rs2      6002
   2095   bfd_arch_hppa,      /* HP PA RISC */
   2096 #define bfd_mach_hppa10        10
   2097 #define bfd_mach_hppa11        11
   2098 #define bfd_mach_hppa20        20
   2099 #define bfd_mach_hppa20w       25
   2100   bfd_arch_d10v,      /* Mitsubishi D10V */
   2101 #define bfd_mach_d10v          1
   2102 #define bfd_mach_d10v_ts2      2
   2103 #define bfd_mach_d10v_ts3      3
   2104   bfd_arch_d30v,      /* Mitsubishi D30V */
   2105   bfd_arch_dlx,       /* DLX */
   2106   bfd_arch_m68hc11,   /* Motorola 68HC11 */
   2107   bfd_arch_m68hc12,   /* Motorola 68HC12 */
   2108 #define bfd_mach_m6812_default 0
   2109 #define bfd_mach_m6812         1
   2110 #define bfd_mach_m6812s        2
   2111   bfd_arch_m9s12x,   /* Freescale S12X */
   2112   bfd_arch_m9s12xg,  /* Freescale XGATE */
   2113   bfd_arch_z8k,       /* Zilog Z8000 */
   2114 #define bfd_mach_z8001         1
   2115 #define bfd_mach_z8002         2
   2116   bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
   2117   bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
   2118 #define bfd_mach_sh            1
   2119 #define bfd_mach_sh2        0x20
   2120 #define bfd_mach_sh_dsp     0x2d
   2121 #define bfd_mach_sh2a       0x2a
   2122 #define bfd_mach_sh2a_nofpu 0x2b
   2123 #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
   2124 #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
   2125 #define bfd_mach_sh2a_or_sh4  0x2a3
   2126 #define bfd_mach_sh2a_or_sh3e 0x2a4
   2127 #define bfd_mach_sh2e       0x2e
   2128 #define bfd_mach_sh3        0x30
   2129 #define bfd_mach_sh3_nommu  0x31
   2130 #define bfd_mach_sh3_dsp    0x3d
   2131 #define bfd_mach_sh3e       0x3e
   2132 #define bfd_mach_sh4        0x40
   2133 #define bfd_mach_sh4_nofpu  0x41
   2134 #define bfd_mach_sh4_nommu_nofpu  0x42
   2135 #define bfd_mach_sh4a       0x4a
   2136 #define bfd_mach_sh4a_nofpu 0x4b
   2137 #define bfd_mach_sh4al_dsp  0x4d
   2138 #define bfd_mach_sh5        0x50
   2139   bfd_arch_alpha,     /* Dec Alpha */
   2140 #define bfd_mach_alpha_ev4  0x10
   2141 #define bfd_mach_alpha_ev5  0x20
   2142 #define bfd_mach_alpha_ev6  0x30
   2143   bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
   2144 #define bfd_mach_arm_unknown   0
   2145 #define bfd_mach_arm_2         1
   2146 #define bfd_mach_arm_2a        2
   2147 #define bfd_mach_arm_3         3
   2148 #define bfd_mach_arm_3M        4
   2149 #define bfd_mach_arm_4         5
   2150 #define bfd_mach_arm_4T        6
   2151 #define bfd_mach_arm_5         7
   2152 #define bfd_mach_arm_5T        8
   2153 #define bfd_mach_arm_5TE       9
   2154 #define bfd_mach_arm_XScale    10
   2155 #define bfd_mach_arm_ep9312    11
   2156 #define bfd_mach_arm_iWMMXt    12
   2157 #define bfd_mach_arm_iWMMXt2   13
   2158   bfd_arch_nds32,     /* Andes NDS32 */
   2159 #define bfd_mach_n1            1
   2160 #define bfd_mach_n1h           2
   2161 #define bfd_mach_n1h_v2        3
   2162 #define bfd_mach_n1h_v3        4
   2163 #define bfd_mach_n1h_v3m       5
   2164   bfd_arch_ns32k,     /* National Semiconductors ns32000 */
   2165   bfd_arch_w65,       /* WDC 65816 */
   2166   bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
   2167   bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
   2168 #define bfd_mach_tic3x         30
   2169 #define bfd_mach_tic4x         40
   2170   bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
   2171   bfd_arch_tic6x,     /* Texas Instruments TMS320C6X */
   2172   bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
   2173   bfd_arch_v850,      /* NEC V850 */
   2174   bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI) */
   2175 #define bfd_mach_v850          1
   2176 #define bfd_mach_v850e         'E'
   2177 #define bfd_mach_v850e1        '1'
   2178 #define bfd_mach_v850e2        0x4532
   2179 #define bfd_mach_v850e2v3      0x45325633
   2180 #define bfd_mach_v850e3v5      0x45335635 /* ('E'|'3'|'V'|'5') */
   2181   bfd_arch_arc,       /* ARC Cores */
   2182 #define bfd_mach_arc_a4        0
   2183 #define bfd_mach_arc_a5        1
   2184 #define bfd_mach_arc_arc600    2
   2185 #define bfd_mach_arc_arc601    4
   2186 #define bfd_mach_arc_arc700    3
   2187 #define bfd_mach_arc_arcv2     5
   2188  bfd_arch_m32c,     /* Renesas M16C/M32C.  */
   2189 #define bfd_mach_m16c        0x75
   2190 #define bfd_mach_m32c        0x78
   2191   bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
   2192 #define bfd_mach_m32r          1 /* For backwards compatibility.  */
   2193 #define bfd_mach_m32rx         'x'
   2194 #define bfd_mach_m32r2         '2'
   2195   bfd_arch_mn10200,   /* Matsushita MN10200 */
   2196   bfd_arch_mn10300,   /* Matsushita MN10300 */
   2197 #define bfd_mach_mn10300               300
   2198 #define bfd_mach_am33          330
   2199 #define bfd_mach_am33_2        332
   2200   bfd_arch_fr30,
   2201 #define bfd_mach_fr30          0x46523330
   2202   bfd_arch_frv,
   2203 #define bfd_mach_frv           1
   2204 #define bfd_mach_frvsimple     2
   2205 #define bfd_mach_fr300         300
   2206 #define bfd_mach_fr400         400
   2207 #define bfd_mach_fr450         450
   2208 #define bfd_mach_frvtomcat     499     /* fr500 prototype */
   2209 #define bfd_mach_fr500         500
   2210 #define bfd_mach_fr550         550
   2211   bfd_arch_moxie,       /* The moxie processor */
   2212 #define bfd_mach_moxie         1
   2213   bfd_arch_ft32,       /* The ft32 processor */
   2214 #define bfd_mach_ft32          1
   2215   bfd_arch_mcore,
   2216   bfd_arch_mep,
   2217 #define bfd_mach_mep           1
   2218 #define bfd_mach_mep_h1        0x6831
   2219 #define bfd_mach_mep_c5        0x6335
   2220   bfd_arch_metag,
   2221 #define bfd_mach_metag         1
   2222   bfd_arch_ia64,      /* HP/Intel ia64 */
   2223 #define bfd_mach_ia64_elf64    64
   2224 #define bfd_mach_ia64_elf32    32
   2225   bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
   2226 #define bfd_mach_ip2022        1
   2227 #define bfd_mach_ip2022ext     2
   2228  bfd_arch_iq2000,     /* Vitesse IQ2000.  */
   2229 #define bfd_mach_iq2000        1
   2230 #define bfd_mach_iq10          2
   2231   bfd_arch_epiphany,   /* Adapteva EPIPHANY */
   2232 #define bfd_mach_epiphany16    1
   2233 #define bfd_mach_epiphany32    2
   2234   bfd_arch_mt,
   2235 #define bfd_mach_ms1           1
   2236 #define bfd_mach_mrisc2        2
   2237 #define bfd_mach_ms2           3
   2238   bfd_arch_pj,
   2239   bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
   2240 #define bfd_mach_avr1          1
   2241 #define bfd_mach_avr2          2
   2242 #define bfd_mach_avr25         25
   2243 #define bfd_mach_avr3          3
   2244 #define bfd_mach_avr31         31
   2245 #define bfd_mach_avr35         35
   2246 #define bfd_mach_avr4          4
   2247 #define bfd_mach_avr5          5
   2248 #define bfd_mach_avr51         51
   2249 #define bfd_mach_avr6          6
   2250 #define bfd_mach_avrtiny   100
   2251 #define bfd_mach_avrxmega1 101
   2252 #define bfd_mach_avrxmega2 102
   2253 #define bfd_mach_avrxmega3 103
   2254 #define bfd_mach_avrxmega4 104
   2255 #define bfd_mach_avrxmega5 105
   2256 #define bfd_mach_avrxmega6 106
   2257 #define bfd_mach_avrxmega7 107
   2258   bfd_arch_bfin,        /* ADI Blackfin */
   2259 #define bfd_mach_bfin          1
   2260   bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
   2261 #define bfd_mach_cr16          1
   2262   bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
   2263 #define bfd_mach_cr16c         1
   2264   bfd_arch_crx,       /*  National Semiconductor CRX.  */
   2265 #define bfd_mach_crx           1
   2266   bfd_arch_cris,      /* Axis CRIS */
   2267 #define bfd_mach_cris_v0_v10   255
   2268 #define bfd_mach_cris_v32      32
   2269 #define bfd_mach_cris_v10_v32  1032
   2270   bfd_arch_rl78,
   2271 #define bfd_mach_rl78  0x75
   2272   bfd_arch_rx,        /* Renesas RX.  */
   2273 #define bfd_mach_rx            0x75
   2274   bfd_arch_s390,      /* IBM s390 */
   2275 #define bfd_mach_s390_31       31
   2276 #define bfd_mach_s390_64       64
   2277   bfd_arch_score,     /* Sunplus score */
   2278 #define bfd_mach_score3         3
   2279 #define bfd_mach_score7         7
   2280   bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
   2281   bfd_arch_xstormy16,
   2282 #define bfd_mach_xstormy16     1
   2283   bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
   2284 #define bfd_mach_msp11          11
   2285 #define bfd_mach_msp110         110
   2286 #define bfd_mach_msp12          12
   2287 #define bfd_mach_msp13          13
   2288 #define bfd_mach_msp14          14
   2289 #define bfd_mach_msp15          15
   2290 #define bfd_mach_msp16          16
   2291 #define bfd_mach_msp20          20
   2292 #define bfd_mach_msp21          21
   2293 #define bfd_mach_msp22          22
   2294 #define bfd_mach_msp23          23
   2295 #define bfd_mach_msp24          24
   2296 #define bfd_mach_msp26          26
   2297 #define bfd_mach_msp31          31
   2298 #define bfd_mach_msp32          32
   2299 #define bfd_mach_msp33          33
   2300 #define bfd_mach_msp41          41
   2301 #define bfd_mach_msp42          42
   2302 #define bfd_mach_msp43          43
   2303 #define bfd_mach_msp44          44
   2304 #define bfd_mach_msp430x        45
   2305 #define bfd_mach_msp46          46
   2306 #define bfd_mach_msp47          47
   2307 #define bfd_mach_msp54          54
   2308   bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
   2309 #define bfd_mach_xc16x         1
   2310 #define bfd_mach_xc16xl        2
   2311 #define bfd_mach_xc16xs        3
   2312   bfd_arch_xgate,   /* Freescale XGATE */
   2313 #define bfd_mach_xgate         1
   2314   bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
   2315 #define bfd_mach_xtensa        1
   2316   bfd_arch_z80,
   2317 #define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
   2318 #define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
   2319 #define bfd_mach_z80full        7 /* All undocumented instructions.  */
   2320 #define bfd_mach_r800           11 /* R800: successor with multiplication.  */
   2321   bfd_arch_lm32,      /* Lattice Mico32 */
   2322 #define bfd_mach_lm32      1
   2323   bfd_arch_microblaze,/* Xilinx MicroBlaze. */
   2324   bfd_arch_tilepro,   /* Tilera TILEPro */
   2325   bfd_arch_tilegx, /* Tilera TILE-Gx */
   2326 #define bfd_mach_tilepro   1
   2327 #define bfd_mach_tilegx    1
   2328 #define bfd_mach_tilegx32  2
   2329   bfd_arch_aarch64,   /* AArch64  */
   2330 #define bfd_mach_aarch64 0
   2331 #define bfd_mach_aarch64_ilp32 32
   2332   bfd_arch_nios2,      /* Nios II */
   2333 #define bfd_mach_nios2         0
   2334 #define bfd_mach_nios2r1       1
   2335 #define bfd_mach_nios2r2       2
   2336   bfd_arch_visium,     /* Visium */
   2337 #define bfd_mach_visium        1
   2338   bfd_arch_last
   2339   };
   2340 
   2341 typedef struct bfd_arch_info
   2342 {
   2343   int bits_per_word;
   2344   int bits_per_address;
   2345   int bits_per_byte;
   2346   enum bfd_architecture arch;
   2347   unsigned long mach;
   2348   const char *arch_name;
   2349   const char *printable_name;
   2350   unsigned int section_align_power;
   2351   /* TRUE if this is the default machine for the architecture.
   2352      The default arch should be the first entry for an arch so that
   2353      all the entries for that arch can be accessed via <<next>>.  */
   2354   bfd_boolean the_default;
   2355   const struct bfd_arch_info * (*compatible)
   2356     (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
   2357 
   2358   bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
   2359 
   2360   /* Allocate via bfd_malloc and return a fill buffer of size COUNT.  If
   2361      IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
   2362      TRUE, the buffer contains code.  */
   2363   void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
   2364                  bfd_boolean code);
   2365 
   2366   const struct bfd_arch_info *next;
   2367 }
   2368 bfd_arch_info_type;
   2369 
   2370 const char *bfd_printable_name (bfd *abfd);
   2371 
   2372 const bfd_arch_info_type *bfd_scan_arch (const char *string);
   2373 
   2374 const char **bfd_arch_list (void);
   2375 
   2376 const bfd_arch_info_type *bfd_arch_get_compatible
   2377    (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
   2378 
   2379 void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
   2380 
   2381 enum bfd_architecture bfd_get_arch (bfd *abfd);
   2382 
   2383 unsigned long bfd_get_mach (bfd *abfd);
   2384 
   2385 unsigned int bfd_arch_bits_per_byte (bfd *abfd);
   2386 
   2387 unsigned int bfd_arch_bits_per_address (bfd *abfd);
   2388 
   2389 const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
   2390 
   2391 const bfd_arch_info_type *bfd_lookup_arch
   2392    (enum bfd_architecture arch, unsigned long machine);
   2393 
   2394 const char *bfd_printable_arch_mach
   2395    (enum bfd_architecture arch, unsigned long machine);
   2396 
   2397 unsigned int bfd_octets_per_byte (bfd *abfd);
   2398 
   2399 unsigned int bfd_arch_mach_octets_per_byte
   2400    (enum bfd_architecture arch, unsigned long machine);
   2401 
   2402 /* Extracted from reloc.c.  */
   2403 
   2404 typedef enum bfd_reloc_status
   2405 {
   2406   /* No errors detected.  */
   2407   bfd_reloc_ok,
   2408 
   2409   /* The relocation was performed, but there was an overflow.  */
   2410   bfd_reloc_overflow,
   2411 
   2412   /* The address to relocate was not within the section supplied.  */
   2413   bfd_reloc_outofrange,
   2414 
   2415   /* Used by special functions.  */
   2416   bfd_reloc_continue,
   2417 
   2418   /* Unsupported relocation size requested.  */
   2419   bfd_reloc_notsupported,
   2420 
   2421   /* Unused.  */
   2422   bfd_reloc_other,
   2423 
   2424   /* The symbol to relocate against was undefined.  */
   2425   bfd_reloc_undefined,
   2426 
   2427   /* The relocation was performed, but may not be ok - presently
   2428      generated only when linking i960 coff files with i960 b.out
   2429      symbols.  If this type is returned, the error_message argument
   2430      to bfd_perform_relocation will be set.  */
   2431   bfd_reloc_dangerous
   2432  }
   2433  bfd_reloc_status_type;
   2434 
   2435 
   2436 typedef struct reloc_cache_entry
   2437 {
   2438   /* A pointer into the canonical table of pointers.  */
   2439   struct bfd_symbol **sym_ptr_ptr;
   2440 
   2441   /* offset in section.  */
   2442   bfd_size_type address;
   2443 
   2444   /* addend for relocation value.  */
   2445   bfd_vma addend;
   2446 
   2447   /* Pointer to how to perform the required relocation.  */
   2448   reloc_howto_type *howto;
   2449 
   2450 }
   2451 arelent;
   2452 
   2453 
   2454 enum complain_overflow
   2455 {
   2456   /* Do not complain on overflow.  */
   2457   complain_overflow_dont,
   2458 
   2459   /* Complain if the value overflows when considered as a signed
   2460      number one bit larger than the field.  ie. A bitfield of N bits
   2461      is allowed to represent -2**n to 2**n-1.  */
   2462   complain_overflow_bitfield,
   2463 
   2464   /* Complain if the value overflows when considered as a signed
   2465      number.  */
   2466   complain_overflow_signed,
   2467 
   2468   /* Complain if the value overflows when considered as an
   2469      unsigned number.  */
   2470   complain_overflow_unsigned
   2471 };
   2472 struct bfd_symbol;             /* Forward declaration.  */
   2473 
   2474 struct reloc_howto_struct
   2475 {
   2476   /*  The type field has mainly a documentary use - the back end can
   2477       do what it wants with it, though normally the back end's
   2478       external idea of what a reloc number is stored
   2479       in this field.  For example, a PC relative word relocation
   2480       in a coff environment has the type 023 - because that's
   2481       what the outside world calls a R_PCRWORD reloc.  */
   2482   unsigned int type;
   2483 
   2484   /*  The value the final relocation is shifted right by.  This drops
   2485       unwanted data from the relocation.  */
   2486   unsigned int rightshift;
   2487 
   2488   /*  The size of the item to be relocated.  This is *not* a
   2489       power-of-two measure.  To get the number of bytes operated
   2490       on by a type of relocation, use bfd_get_reloc_size.  */
   2491   int size;
   2492 
   2493   /*  The number of bits in the item to be relocated.  This is used
   2494       when doing overflow checking.  */
   2495   unsigned int bitsize;
   2496 
   2497   /*  The relocation is relative to the field being relocated.  */
   2498   bfd_boolean pc_relative;
   2499 
   2500   /*  The bit position of the reloc value in the destination.
   2501       The relocated value is left shifted by this amount.  */
   2502   unsigned int bitpos;
   2503 
   2504   /* What type of overflow error should be checked for when
   2505      relocating.  */
   2506   enum complain_overflow complain_on_overflow;
   2507 
   2508   /* If this field is non null, then the supplied function is
   2509      called rather than the normal function.  This allows really
   2510      strange relocation methods to be accommodated (e.g., i960 callj
   2511      instructions).  */
   2512   bfd_reloc_status_type (*special_function)
   2513     (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
   2514      bfd *, char **);
   2515 
   2516   /* The textual name of the relocation type.  */
   2517   char *name;
   2518 
   2519   /* Some formats record a relocation addend in the section contents
   2520      rather than with the relocation.  For ELF formats this is the
   2521      distinction between USE_REL and USE_RELA (though the code checks
   2522      for USE_REL == 1/0).  The value of this field is TRUE if the
   2523      addend is recorded with the section contents; when performing a
   2524      partial link (ld -r) the section contents (the data) will be
   2525      modified.  The value of this field is FALSE if addends are
   2526      recorded with the relocation (in arelent.addend); when performing
   2527      a partial link the relocation will be modified.
   2528      All relocations for all ELF USE_RELA targets should set this field
   2529      to FALSE (values of TRUE should be looked on with suspicion).
   2530      However, the converse is not true: not all relocations of all ELF
   2531      USE_REL targets set this field to TRUE.  Why this is so is peculiar
   2532      to each particular target.  For relocs that aren't used in partial
   2533      links (e.g. GOT stuff) it doesn't matter what this is set to.  */
   2534   bfd_boolean partial_inplace;
   2535 
   2536   /* src_mask selects the part of the instruction (or data) to be used
   2537      in the relocation sum.  If the target relocations don't have an
   2538      addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
   2539      dst_mask to extract the addend from the section contents.  If
   2540      relocations do have an addend in the reloc, eg. ELF USE_RELA, this
   2541      field should be zero.  Non-zero values for ELF USE_RELA targets are
   2542      bogus as in those cases the value in the dst_mask part of the
   2543      section contents should be treated as garbage.  */
   2544   bfd_vma src_mask;
   2545 
   2546   /* dst_mask selects which parts of the instruction (or data) are
   2547      replaced with a relocated value.  */
   2548   bfd_vma dst_mask;
   2549 
   2550   /* When some formats create PC relative instructions, they leave
   2551      the value of the pc of the place being relocated in the offset
   2552      slot of the instruction, so that a PC relative relocation can
   2553      be made just by adding in an ordinary offset (e.g., sun3 a.out).
   2554      Some formats leave the displacement part of an instruction
   2555      empty (e.g., m88k bcs); this flag signals the fact.  */
   2556   bfd_boolean pcrel_offset;
   2557 };
   2558 
   2559 #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
   2560   { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
   2561 #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
   2562   HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
   2563          NAME, FALSE, 0, 0, IN)
   2564 
   2565 #define EMPTY_HOWTO(C) \
   2566   HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
   2567          NULL, FALSE, 0, 0, FALSE)
   2568 
   2569 #define HOWTO_PREPARE(relocation, symbol)               \
   2570   {                                                     \
   2571     if (symbol != NULL)                                 \
   2572       {                                                 \
   2573         if (bfd_is_com_section (symbol->section))       \
   2574           {                                             \
   2575             relocation = 0;                             \
   2576           }                                             \
   2577         else                                            \
   2578           {                                             \
   2579             relocation = symbol->value;                 \
   2580           }                                             \
   2581       }                                                 \
   2582   }
   2583 
   2584 unsigned int bfd_get_reloc_size (reloc_howto_type *);
   2585 
   2586 typedef struct relent_chain
   2587 {
   2588   arelent relent;
   2589   struct relent_chain *next;
   2590 }
   2591 arelent_chain;
   2592 
   2593 bfd_reloc_status_type bfd_check_overflow
   2594    (enum complain_overflow how,
   2595     unsigned int bitsize,
   2596     unsigned int rightshift,
   2597     unsigned int addrsize,
   2598     bfd_vma relocation);
   2599 
   2600 bfd_reloc_status_type bfd_perform_relocation
   2601    (bfd *abfd,
   2602     arelent *reloc_entry,
   2603     void *data,
   2604     asection *input_section,
   2605     bfd *output_bfd,
   2606     char **error_message);
   2607 
   2608 bfd_reloc_status_type bfd_install_relocation
   2609    (bfd *abfd,
   2610     arelent *reloc_entry,
   2611     void *data, bfd_vma data_start,
   2612     asection *input_section,
   2613     char **error_message);
   2614 
   2615 enum bfd_reloc_code_real {
   2616   _dummy_first_bfd_reloc_code_real,
   2617 
   2618 
   2619 /* Basic absolute relocations of N bits.  */
   2620   BFD_RELOC_64,
   2621   BFD_RELOC_32,
   2622   BFD_RELOC_26,
   2623   BFD_RELOC_24,
   2624   BFD_RELOC_16,
   2625   BFD_RELOC_14,
   2626   BFD_RELOC_8,
   2627 
   2628 /* PC-relative relocations.  Sometimes these are relative to the address
   2629 of the relocation itself; sometimes they are relative to the start of
   2630 the section containing the relocation.  It depends on the specific target.
   2631 
   2632 The 24-bit relocation is used in some Intel 960 configurations.  */
   2633   BFD_RELOC_64_PCREL,
   2634   BFD_RELOC_32_PCREL,
   2635   BFD_RELOC_24_PCREL,
   2636   BFD_RELOC_16_PCREL,
   2637   BFD_RELOC_12_PCREL,
   2638   BFD_RELOC_8_PCREL,
   2639 
   2640 /* Section relative relocations.  Some targets need this for DWARF2.  */
   2641   BFD_RELOC_32_SECREL,
   2642 
   2643 /* For ELF.  */
   2644   BFD_RELOC_32_GOT_PCREL,
   2645   BFD_RELOC_16_GOT_PCREL,
   2646   BFD_RELOC_8_GOT_PCREL,
   2647   BFD_RELOC_32_GOTOFF,
   2648   BFD_RELOC_16_GOTOFF,
   2649   BFD_RELOC_LO16_GOTOFF,
   2650   BFD_RELOC_HI16_GOTOFF,
   2651   BFD_RELOC_HI16_S_GOTOFF,
   2652   BFD_RELOC_8_GOTOFF,
   2653   BFD_RELOC_64_PLT_PCREL,
   2654   BFD_RELOC_32_PLT_PCREL,
   2655   BFD_RELOC_24_PLT_PCREL,
   2656   BFD_RELOC_16_PLT_PCREL,
   2657   BFD_RELOC_8_PLT_PCREL,
   2658   BFD_RELOC_64_PLTOFF,
   2659   BFD_RELOC_32_PLTOFF,
   2660   BFD_RELOC_16_PLTOFF,
   2661   BFD_RELOC_LO16_PLTOFF,
   2662   BFD_RELOC_HI16_PLTOFF,
   2663   BFD_RELOC_HI16_S_PLTOFF,
   2664   BFD_RELOC_8_PLTOFF,
   2665 
   2666 /* Size relocations.  */
   2667   BFD_RELOC_SIZE32,
   2668   BFD_RELOC_SIZE64,
   2669 
   2670 /* Relocations used by 68K ELF.  */
   2671   BFD_RELOC_68K_GLOB_DAT,
   2672   BFD_RELOC_68K_JMP_SLOT,
   2673   BFD_RELOC_68K_RELATIVE,
   2674   BFD_RELOC_68K_TLS_GD32,
   2675   BFD_RELOC_68K_TLS_GD16,
   2676   BFD_RELOC_68K_TLS_GD8,
   2677   BFD_RELOC_68K_TLS_LDM32,
   2678   BFD_RELOC_68K_TLS_LDM16,
   2679   BFD_RELOC_68K_TLS_LDM8,
   2680   BFD_RELOC_68K_TLS_LDO32,
   2681   BFD_RELOC_68K_TLS_LDO16,
   2682   BFD_RELOC_68K_TLS_LDO8,
   2683   BFD_RELOC_68K_TLS_IE32,
   2684   BFD_RELOC_68K_TLS_IE16,
   2685   BFD_RELOC_68K_TLS_IE8,
   2686   BFD_RELOC_68K_TLS_LE32,
   2687   BFD_RELOC_68K_TLS_LE16,
   2688   BFD_RELOC_68K_TLS_LE8,
   2689 
   2690 /* Linkage-table relative.  */
   2691   BFD_RELOC_32_BASEREL,
   2692   BFD_RELOC_16_BASEREL,
   2693   BFD_RELOC_LO16_BASEREL,
   2694   BFD_RELOC_HI16_BASEREL,
   2695   BFD_RELOC_HI16_S_BASEREL,
   2696   BFD_RELOC_8_BASEREL,
   2697   BFD_RELOC_RVA,
   2698 
   2699 /* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
   2700   BFD_RELOC_8_FFnn,
   2701 
   2702 /* These PC-relative relocations are stored as word displacements --
   2703 i.e., byte displacements shifted right two bits.  The 30-bit word
   2704 displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
   2705 SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
   2706 signed 16-bit displacement is used on the MIPS, and the 23-bit
   2707 displacement is used on the Alpha.  */
   2708   BFD_RELOC_32_PCREL_S2,
   2709   BFD_RELOC_16_PCREL_S2,
   2710   BFD_RELOC_23_PCREL_S2,
   2711 
   2712 /* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
   2713 the target word.  These are used on the SPARC.  */
   2714   BFD_RELOC_HI22,
   2715   BFD_RELOC_LO10,
   2716 
   2717 /* For systems that allocate a Global Pointer register, these are
   2718 displacements off that register.  These relocation types are
   2719 handled specially, because the value the register will have is
   2720 decided relatively late.  */
   2721   BFD_RELOC_GPREL16,
   2722   BFD_RELOC_GPREL32,
   2723 
   2724 /* Reloc types used for i960/b.out.  */
   2725   BFD_RELOC_I960_CALLJ,
   2726 
   2727 /* SPARC ELF relocations.  There is probably some overlap with other
   2728 relocation types already defined.  */
   2729   BFD_RELOC_NONE,
   2730   BFD_RELOC_SPARC_WDISP22,
   2731   BFD_RELOC_SPARC22,
   2732   BFD_RELOC_SPARC13,
   2733   BFD_RELOC_SPARC_GOT10,
   2734   BFD_RELOC_SPARC_GOT13,
   2735   BFD_RELOC_SPARC_GOT22,
   2736   BFD_RELOC_SPARC_PC10,
   2737   BFD_RELOC_SPARC_PC22,
   2738   BFD_RELOC_SPARC_WPLT30,
   2739   BFD_RELOC_SPARC_COPY,
   2740   BFD_RELOC_SPARC_GLOB_DAT,
   2741   BFD_RELOC_SPARC_JMP_SLOT,
   2742   BFD_RELOC_SPARC_RELATIVE,
   2743   BFD_RELOC_SPARC_UA16,
   2744   BFD_RELOC_SPARC_UA32,
   2745   BFD_RELOC_SPARC_UA64,
   2746   BFD_RELOC_SPARC_GOTDATA_HIX22,
   2747   BFD_RELOC_SPARC_GOTDATA_LOX10,
   2748   BFD_RELOC_SPARC_GOTDATA_OP_HIX22,
   2749   BFD_RELOC_SPARC_GOTDATA_OP_LOX10,
   2750   BFD_RELOC_SPARC_GOTDATA_OP,
   2751   BFD_RELOC_SPARC_JMP_IREL,
   2752   BFD_RELOC_SPARC_IRELATIVE,
   2753 
   2754 /* I think these are specific to SPARC a.out (e.g., Sun 4).  */
   2755   BFD_RELOC_SPARC_BASE13,
   2756   BFD_RELOC_SPARC_BASE22,
   2757 
   2758 /* SPARC64 relocations  */
   2759 #define BFD_RELOC_SPARC_64 BFD_RELOC_64
   2760   BFD_RELOC_SPARC_10,
   2761   BFD_RELOC_SPARC_11,
   2762   BFD_RELOC_SPARC_OLO10,
   2763   BFD_RELOC_SPARC_HH22,
   2764   BFD_RELOC_SPARC_HM10,
   2765   BFD_RELOC_SPARC_LM22,
   2766   BFD_RELOC_SPARC_PC_HH22,
   2767   BFD_RELOC_SPARC_PC_HM10,
   2768   BFD_RELOC_SPARC_PC_LM22,
   2769   BFD_RELOC_SPARC_WDISP16,
   2770   BFD_RELOC_SPARC_WDISP19,
   2771   BFD_RELOC_SPARC_7,
   2772   BFD_RELOC_SPARC_6,
   2773   BFD_RELOC_SPARC_5,
   2774 #define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
   2775   BFD_RELOC_SPARC_PLT32,
   2776   BFD_RELOC_SPARC_PLT64,
   2777   BFD_RELOC_SPARC_HIX22,
   2778   BFD_RELOC_SPARC_LOX10,
   2779   BFD_RELOC_SPARC_H44,
   2780   BFD_RELOC_SPARC_M44,
   2781   BFD_RELOC_SPARC_L44,
   2782   BFD_RELOC_SPARC_REGISTER,
   2783   BFD_RELOC_SPARC_H34,
   2784   BFD_RELOC_SPARC_SIZE32,
   2785   BFD_RELOC_SPARC_SIZE64,
   2786   BFD_RELOC_SPARC_WDISP10,
   2787 
   2788 /* SPARC little endian relocation  */
   2789   BFD_RELOC_SPARC_REV32,
   2790 
   2791 /* SPARC TLS relocations  */
   2792   BFD_RELOC_SPARC_TLS_GD_HI22,
   2793   BFD_RELOC_SPARC_TLS_GD_LO10,
   2794   BFD_RELOC_SPARC_TLS_GD_ADD,
   2795   BFD_RELOC_SPARC_TLS_GD_CALL,
   2796   BFD_RELOC_SPARC_TLS_LDM_HI22,
   2797   BFD_RELOC_SPARC_TLS_LDM_LO10,
   2798   BFD_RELOC_SPARC_TLS_LDM_ADD,
   2799   BFD_RELOC_SPARC_TLS_LDM_CALL,
   2800   BFD_RELOC_SPARC_TLS_LDO_HIX22,
   2801   BFD_RELOC_SPARC_TLS_LDO_LOX10,
   2802   BFD_RELOC_SPARC_TLS_LDO_ADD,
   2803   BFD_RELOC_SPARC_TLS_IE_HI22,
   2804   BFD_RELOC_SPARC_TLS_IE_LO10,
   2805   BFD_RELOC_SPARC_TLS_IE_LD,
   2806   BFD_RELOC_SPARC_TLS_IE_LDX,
   2807   BFD_RELOC_SPARC_TLS_IE_ADD,
   2808   BFD_RELOC_SPARC_TLS_LE_HIX22,
   2809   BFD_RELOC_SPARC_TLS_LE_LOX10,
   2810   BFD_RELOC_SPARC_TLS_DTPMOD32,
   2811   BFD_RELOC_SPARC_TLS_DTPMOD64,
   2812   BFD_RELOC_SPARC_TLS_DTPOFF32,
   2813   BFD_RELOC_SPARC_TLS_DTPOFF64,
   2814   BFD_RELOC_SPARC_TLS_TPOFF32,
   2815   BFD_RELOC_SPARC_TLS_TPOFF64,
   2816 
   2817 /* SPU Relocations.  */
   2818   BFD_RELOC_SPU_IMM7,
   2819   BFD_RELOC_SPU_IMM8,
   2820   BFD_RELOC_SPU_IMM10,
   2821   BFD_RELOC_SPU_IMM10W,
   2822   BFD_RELOC_SPU_IMM16,
   2823   BFD_RELOC_SPU_IMM16W,
   2824   BFD_RELOC_SPU_IMM18,
   2825   BFD_RELOC_SPU_PCREL9a,
   2826   BFD_RELOC_SPU_PCREL9b,
   2827   BFD_RELOC_SPU_PCREL16,
   2828   BFD_RELOC_SPU_LO16,
   2829   BFD_RELOC_SPU_HI16,
   2830   BFD_RELOC_SPU_PPU32,
   2831   BFD_RELOC_SPU_PPU64,
   2832   BFD_RELOC_SPU_ADD_PIC,
   2833 
   2834 /* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
   2835 "addend" in some special way.
   2836 For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
   2837 writing; when reading, it will be the absolute section symbol.  The
   2838 addend is the displacement in bytes of the "lda" instruction from
   2839 the "ldah" instruction (which is at the address of this reloc).  */
   2840   BFD_RELOC_ALPHA_GPDISP_HI16,
   2841 
   2842 /* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
   2843 with GPDISP_HI16 relocs.  The addend is ignored when writing the
   2844 relocations out, and is filled in with the file's GP value on
   2845 reading, for convenience.  */
   2846   BFD_RELOC_ALPHA_GPDISP_LO16,
   2847 
   2848 /* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
   2849 relocation except that there is no accompanying GPDISP_LO16
   2850 relocation.  */
   2851   BFD_RELOC_ALPHA_GPDISP,
   2852 
   2853 /* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
   2854 the assembler turns it into a LDQ instruction to load the address of
   2855 the symbol, and then fills in a register in the real instruction.
   2856 
   2857 The LITERAL reloc, at the LDQ instruction, refers to the .lita
   2858 section symbol.  The addend is ignored when writing, but is filled
   2859 in with the file's GP value on reading, for convenience, as with the
   2860 GPDISP_LO16 reloc.
   2861 
   2862 The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
   2863 It should refer to the symbol to be referenced, as with 16_GOTOFF,
   2864 but it generates output not based on the position within the .got
   2865 section, but relative to the GP value chosen for the file during the
   2866 final link stage.
   2867 
   2868 The LITUSE reloc, on the instruction using the loaded address, gives
   2869 information to the linker that it might be able to use to optimize
   2870 away some literal section references.  The symbol is ignored (read
   2871 as the absolute section symbol), and the "addend" indicates the type
   2872 of instruction using the register:
   2873 1 - "memory" fmt insn
   2874 2 - byte-manipulation (byte offset reg)
   2875 3 - jsr (target of branch)  */
   2876   BFD_RELOC_ALPHA_LITERAL,
   2877   BFD_RELOC_ALPHA_ELF_LITERAL,
   2878   BFD_RELOC_ALPHA_LITUSE,
   2879 
   2880 /* The HINT relocation indicates a value that should be filled into the
   2881 "hint" field of a jmp/jsr/ret instruction, for possible branch-
   2882 prediction logic which may be provided on some processors.  */
   2883   BFD_RELOC_ALPHA_HINT,
   2884 
   2885 /* The LINKAGE relocation outputs a linkage pair in the object file,
   2886 which is filled by the linker.  */
   2887   BFD_RELOC_ALPHA_LINKAGE,
   2888 
   2889 /* The CODEADDR relocation outputs a STO_CA in the object file,
   2890 which is filled by the linker.  */
   2891   BFD_RELOC_ALPHA_CODEADDR,
   2892 
   2893 /* The GPREL_HI/LO relocations together form a 32-bit offset from the
   2894 GP register.  */
   2895   BFD_RELOC_ALPHA_GPREL_HI16,
   2896   BFD_RELOC_ALPHA_GPREL_LO16,
   2897 
   2898 /* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
   2899 share a common GP, and the target address is adjusted for
   2900 STO_ALPHA_STD_GPLOAD.  */
   2901   BFD_RELOC_ALPHA_BRSGP,
   2902 
   2903 /* The NOP relocation outputs a NOP if the longword displacement
   2904 between two procedure entry points is < 2^21.  */
   2905   BFD_RELOC_ALPHA_NOP,
   2906 
   2907 /* The BSR relocation outputs a BSR if the longword displacement
   2908 between two procedure entry points is < 2^21.  */
   2909   BFD_RELOC_ALPHA_BSR,
   2910 
   2911 /* The LDA relocation outputs a LDA if the longword displacement
   2912 between two procedure entry points is < 2^16.  */
   2913   BFD_RELOC_ALPHA_LDA,
   2914 
   2915 /* The BOH relocation outputs a BSR if the longword displacement
   2916 between two procedure entry points is < 2^21, or else a hint.  */
   2917   BFD_RELOC_ALPHA_BOH,
   2918 
   2919 /* Alpha thread-local storage relocations.  */
   2920   BFD_RELOC_ALPHA_TLSGD,
   2921   BFD_RELOC_ALPHA_TLSLDM,
   2922   BFD_RELOC_ALPHA_DTPMOD64,
   2923   BFD_RELOC_ALPHA_GOTDTPREL16,
   2924   BFD_RELOC_ALPHA_DTPREL64,
   2925   BFD_RELOC_ALPHA_DTPREL_HI16,
   2926   BFD_RELOC_ALPHA_DTPREL_LO16,
   2927   BFD_RELOC_ALPHA_DTPREL16,
   2928   BFD_RELOC_ALPHA_GOTTPREL16,
   2929   BFD_RELOC_ALPHA_TPREL64,
   2930   BFD_RELOC_ALPHA_TPREL_HI16,
   2931   BFD_RELOC_ALPHA_TPREL_LO16,
   2932   BFD_RELOC_ALPHA_TPREL16,
   2933 
   2934 /* The MIPS jump instruction.  */
   2935   BFD_RELOC_MIPS_JMP,
   2936   BFD_RELOC_MICROMIPS_JMP,
   2937 
   2938 /* The MIPS16 jump instruction.  */
   2939   BFD_RELOC_MIPS16_JMP,
   2940 
   2941 /* MIPS16 GP relative reloc.  */
   2942   BFD_RELOC_MIPS16_GPREL,
   2943 
   2944 /* High 16 bits of 32-bit value; simple reloc.  */
   2945   BFD_RELOC_HI16,
   2946 
   2947 /* High 16 bits of 32-bit value but the low 16 bits will be sign
   2948 extended and added to form the final result.  If the low 16
   2949 bits form a negative number, we need to add one to the high value
   2950 to compensate for the borrow when the low bits are added.  */
   2951   BFD_RELOC_HI16_S,
   2952 
   2953 /* Low 16 bits.  */
   2954   BFD_RELOC_LO16,
   2955 
   2956 /* High 16 bits of 32-bit pc-relative value  */
   2957   BFD_RELOC_HI16_PCREL,
   2958 
   2959 /* High 16 bits of 32-bit pc-relative value, adjusted  */
   2960   BFD_RELOC_HI16_S_PCREL,
   2961 
   2962 /* Low 16 bits of pc-relative value  */
   2963   BFD_RELOC_LO16_PCREL,
   2964 
   2965 /* Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
   2966 16-bit immediate fields  */
   2967   BFD_RELOC_MIPS16_GOT16,
   2968   BFD_RELOC_MIPS16_CALL16,
   2969 
   2970 /* MIPS16 high 16 bits of 32-bit value.  */
   2971   BFD_RELOC_MIPS16_HI16,
   2972 
   2973 /* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
   2974 extended and added to form the final result.  If the low 16
   2975 bits form a negative number, we need to add one to the high value
   2976 to compensate for the borrow when the low bits are added.  */
   2977   BFD_RELOC_MIPS16_HI16_S,
   2978 
   2979 /* MIPS16 low 16 bits.  */
   2980   BFD_RELOC_MIPS16_LO16,
   2981 
   2982 /* MIPS16 TLS relocations  */
   2983   BFD_RELOC_MIPS16_TLS_GD,
   2984   BFD_RELOC_MIPS16_TLS_LDM,
   2985   BFD_RELOC_MIPS16_TLS_DTPREL_HI16,
   2986   BFD_RELOC_MIPS16_TLS_DTPREL_LO16,
   2987   BFD_RELOC_MIPS16_TLS_GOTTPREL,
   2988   BFD_RELOC_MIPS16_TLS_TPREL_HI16,
   2989   BFD_RELOC_MIPS16_TLS_TPREL_LO16,
   2990 
   2991 /* Relocation against a MIPS literal section.  */
   2992   BFD_RELOC_MIPS_LITERAL,
   2993   BFD_RELOC_MICROMIPS_LITERAL,
   2994 
   2995 /* microMIPS PC-relative relocations.  */
   2996   BFD_RELOC_MICROMIPS_7_PCREL_S1,
   2997   BFD_RELOC_MICROMIPS_10_PCREL_S1,
   2998   BFD_RELOC_MICROMIPS_16_PCREL_S1,
   2999 
   3000 /* MIPS PC-relative relocations.  */
   3001   BFD_RELOC_MIPS_21_PCREL_S2,
   3002   BFD_RELOC_MIPS_26_PCREL_S2,
   3003   BFD_RELOC_MIPS_18_PCREL_S3,
   3004   BFD_RELOC_MIPS_19_PCREL_S2,
   3005 
   3006 /* microMIPS versions of generic BFD relocs.  */
   3007   BFD_RELOC_MICROMIPS_GPREL16,
   3008   BFD_RELOC_MICROMIPS_HI16,
   3009   BFD_RELOC_MICROMIPS_HI16_S,
   3010   BFD_RELOC_MICROMIPS_LO16,
   3011 
   3012 /* MIPS ELF relocations.  */
   3013   BFD_RELOC_MIPS_GOT16,
   3014   BFD_RELOC_MICROMIPS_GOT16,
   3015   BFD_RELOC_MIPS_CALL16,
   3016   BFD_RELOC_MICROMIPS_CALL16,
   3017   BFD_RELOC_MIPS_GOT_HI16,
   3018   BFD_RELOC_MICROMIPS_GOT_HI16,
   3019   BFD_RELOC_MIPS_GOT_LO16,
   3020   BFD_RELOC_MICROMIPS_GOT_LO16,
   3021   BFD_RELOC_MIPS_CALL_HI16,
   3022   BFD_RELOC_MICROMIPS_CALL_HI16,
   3023   BFD_RELOC_MIPS_CALL_LO16,
   3024   BFD_RELOC_MICROMIPS_CALL_LO16,
   3025   BFD_RELOC_MIPS_SUB,
   3026   BFD_RELOC_MICROMIPS_SUB,
   3027   BFD_RELOC_MIPS_GOT_PAGE,
   3028   BFD_RELOC_MICROMIPS_GOT_PAGE,
   3029   BFD_RELOC_MIPS_GOT_OFST,
   3030   BFD_RELOC_MICROMIPS_GOT_OFST,
   3031   BFD_RELOC_MIPS_GOT_DISP,
   3032   BFD_RELOC_MICROMIPS_GOT_DISP,
   3033   BFD_RELOC_MIPS_SHIFT5,
   3034   BFD_RELOC_MIPS_SHIFT6,
   3035   BFD_RELOC_MIPS_INSERT_A,
   3036   BFD_RELOC_MIPS_INSERT_B,
   3037   BFD_RELOC_MIPS_DELETE,
   3038   BFD_RELOC_MIPS_HIGHEST,
   3039   BFD_RELOC_MICROMIPS_HIGHEST,
   3040   BFD_RELOC_MIPS_HIGHER,
   3041   BFD_RELOC_MICROMIPS_HIGHER,
   3042   BFD_RELOC_MIPS_SCN_DISP,
   3043   BFD_RELOC_MICROMIPS_SCN_DISP,
   3044   BFD_RELOC_MIPS_REL16,
   3045   BFD_RELOC_MIPS_RELGOT,
   3046   BFD_RELOC_MIPS_JALR,
   3047   BFD_RELOC_MICROMIPS_JALR,
   3048   BFD_RELOC_MIPS_TLS_DTPMOD32,
   3049   BFD_RELOC_MIPS_TLS_DTPREL32,
   3050   BFD_RELOC_MIPS_TLS_DTPMOD64,
   3051   BFD_RELOC_MIPS_TLS_DTPREL64,
   3052   BFD_RELOC_MIPS_TLS_GD,
   3053   BFD_RELOC_MICROMIPS_TLS_GD,
   3054   BFD_RELOC_MIPS_TLS_LDM,
   3055   BFD_RELOC_MICROMIPS_TLS_LDM,
   3056   BFD_RELOC_MIPS_TLS_DTPREL_HI16,
   3057   BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16,
   3058   BFD_RELOC_MIPS_TLS_DTPREL_LO16,
   3059   BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16,
   3060   BFD_RELOC_MIPS_TLS_GOTTPREL,
   3061   BFD_RELOC_MICROMIPS_TLS_GOTTPREL,
   3062   BFD_RELOC_MIPS_TLS_TPREL32,
   3063   BFD_RELOC_MIPS_TLS_TPREL64,
   3064   BFD_RELOC_MIPS_TLS_TPREL_HI16,
   3065   BFD_RELOC_MICROMIPS_TLS_TPREL_HI16,
   3066   BFD_RELOC_MIPS_TLS_TPREL_LO16,
   3067   BFD_RELOC_MICROMIPS_TLS_TPREL_LO16,
   3068   BFD_RELOC_MIPS_EH,
   3069 
   3070 
   3071 /* MIPS ELF relocations (VxWorks and PLT extensions).  */
   3072   BFD_RELOC_MIPS_COPY,
   3073   BFD_RELOC_MIPS_JUMP_SLOT,
   3074 
   3075 
   3076 /* Moxie ELF relocations.  */
   3077   BFD_RELOC_MOXIE_10_PCREL,
   3078 
   3079 
   3080 /* FT32 ELF relocations.  */
   3081   BFD_RELOC_FT32_10,
   3082   BFD_RELOC_FT32_20,
   3083   BFD_RELOC_FT32_17,
   3084   BFD_RELOC_FT32_18,
   3085 
   3086 
   3087 /* Fujitsu Frv Relocations.  */
   3088   BFD_RELOC_FRV_LABEL16,
   3089   BFD_RELOC_FRV_LABEL24,
   3090   BFD_RELOC_FRV_LO16,
   3091   BFD_RELOC_FRV_HI16,
   3092   BFD_RELOC_FRV_GPREL12,
   3093   BFD_RELOC_FRV_GPRELU12,
   3094   BFD_RELOC_FRV_GPREL32,
   3095   BFD_RELOC_FRV_GPRELHI,
   3096   BFD_RELOC_FRV_GPRELLO,
   3097   BFD_RELOC_FRV_GOT12,
   3098   BFD_RELOC_FRV_GOTHI,
   3099   BFD_RELOC_FRV_GOTLO,
   3100   BFD_RELOC_FRV_FUNCDESC,
   3101   BFD_RELOC_FRV_FUNCDESC_GOT12,
   3102   BFD_RELOC_FRV_FUNCDESC_GOTHI,
   3103   BFD_RELOC_FRV_FUNCDESC_GOTLO,
   3104   BFD_RELOC_FRV_FUNCDESC_VALUE,
   3105   BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
   3106   BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
   3107   BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
   3108   BFD_RELOC_FRV_GOTOFF12,
   3109   BFD_RELOC_FRV_GOTOFFHI,
   3110   BFD_RELOC_FRV_GOTOFFLO,
   3111   BFD_RELOC_FRV_GETTLSOFF,
   3112   BFD_RELOC_FRV_TLSDESC_VALUE,
   3113   BFD_RELOC_FRV_GOTTLSDESC12,
   3114   BFD_RELOC_FRV_GOTTLSDESCHI,
   3115   BFD_RELOC_FRV_GOTTLSDESCLO,
   3116   BFD_RELOC_FRV_TLSMOFF12,
   3117   BFD_RELOC_FRV_TLSMOFFHI,
   3118   BFD_RELOC_FRV_TLSMOFFLO,
   3119   BFD_RELOC_FRV_GOTTLSOFF12,
   3120   BFD_RELOC_FRV_GOTTLSOFFHI,
   3121   BFD_RELOC_FRV_GOTTLSOFFLO,
   3122   BFD_RELOC_FRV_TLSOFF,
   3123   BFD_RELOC_FRV_TLSDESC_RELAX,
   3124   BFD_RELOC_FRV_GETTLSOFF_RELAX,
   3125   BFD_RELOC_FRV_TLSOFF_RELAX,
   3126   BFD_RELOC_FRV_TLSMOFF,
   3127 
   3128 
   3129 /* This is a 24bit GOT-relative reloc for the mn10300.  */
   3130   BFD_RELOC_MN10300_GOTOFF24,
   3131 
   3132 /* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
   3133 in the instruction.  */
   3134   BFD_RELOC_MN10300_GOT32,
   3135 
   3136 /* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
   3137 in the instruction.  */
   3138   BFD_RELOC_MN10300_GOT24,
   3139 
   3140 /* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
   3141 in the instruction.  */
   3142   BFD_RELOC_MN10300_GOT16,
   3143 
   3144 /* Copy symbol at runtime.  */
   3145   BFD_RELOC_MN10300_COPY,
   3146 
   3147 /* Create GOT entry.  */
   3148   BFD_RELOC_MN10300_GLOB_DAT,
   3149 
   3150 /* Create PLT entry.  */
   3151   BFD_RELOC_MN10300_JMP_SLOT,
   3152 
   3153 /* Adjust by program base.  */
   3154   BFD_RELOC_MN10300_RELATIVE,
   3155 
   3156 /* Together with another reloc targeted at the same location,
   3157 allows for a value that is the difference of two symbols
   3158 in the same section.  */
   3159   BFD_RELOC_MN10300_SYM_DIFF,
   3160 
   3161 /* The addend of this reloc is an alignment power that must
   3162 be honoured at the offset's location, regardless of linker
   3163 relaxation.  */
   3164   BFD_RELOC_MN10300_ALIGN,
   3165 
   3166 /* Various TLS-related relocations.  */
   3167   BFD_RELOC_MN10300_TLS_GD,
   3168   BFD_RELOC_MN10300_TLS_LD,
   3169   BFD_RELOC_MN10300_TLS_LDO,
   3170   BFD_RELOC_MN10300_TLS_GOTIE,
   3171   BFD_RELOC_MN10300_TLS_IE,
   3172   BFD_RELOC_MN10300_TLS_LE,
   3173   BFD_RELOC_MN10300_TLS_DTPMOD,
   3174   BFD_RELOC_MN10300_TLS_DTPOFF,
   3175   BFD_RELOC_MN10300_TLS_TPOFF,
   3176 
   3177 /* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
   3178 instruction.  */
   3179   BFD_RELOC_MN10300_32_PCREL,
   3180 
   3181 /* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
   3182 instruction.  */
   3183   BFD_RELOC_MN10300_16_PCREL,
   3184 
   3185 
   3186 /* i386/elf relocations  */
   3187   BFD_RELOC_386_GOT32,
   3188   BFD_RELOC_386_PLT32,
   3189   BFD_RELOC_386_COPY,
   3190   BFD_RELOC_386_GLOB_DAT,
   3191   BFD_RELOC_386_JUMP_SLOT,
   3192   BFD_RELOC_386_RELATIVE,
   3193   BFD_RELOC_386_GOTOFF,
   3194   BFD_RELOC_386_GOTPC,
   3195   BFD_RELOC_386_TLS_TPOFF,
   3196   BFD_RELOC_386_TLS_IE,
   3197   BFD_RELOC_386_TLS_GOTIE,
   3198   BFD_RELOC_386_TLS_LE,
   3199   BFD_RELOC_386_TLS_GD,
   3200   BFD_RELOC_386_TLS_LDM,
   3201   BFD_RELOC_386_TLS_LDO_32,
   3202   BFD_RELOC_386_TLS_IE_32,
   3203   BFD_RELOC_386_TLS_LE_32,
   3204   BFD_RELOC_386_TLS_DTPMOD32,
   3205   BFD_RELOC_386_TLS_DTPOFF32,
   3206   BFD_RELOC_386_TLS_TPOFF32,
   3207   BFD_RELOC_386_TLS_GOTDESC,
   3208   BFD_RELOC_386_TLS_DESC_CALL,
   3209   BFD_RELOC_386_TLS_DESC,
   3210   BFD_RELOC_386_IRELATIVE,
   3211   BFD_RELOC_386_GOT32X,
   3212 
   3213 /* x86-64/elf relocations  */
   3214   BFD_RELOC_X86_64_GOT32,
   3215   BFD_RELOC_X86_64_PLT32,
   3216   BFD_RELOC_X86_64_COPY,
   3217   BFD_RELOC_X86_64_GLOB_DAT,
   3218   BFD_RELOC_X86_64_JUMP_SLOT,
   3219   BFD_RELOC_X86_64_RELATIVE,
   3220   BFD_RELOC_X86_64_GOTPCREL,
   3221   BFD_RELOC_X86_64_32S,
   3222   BFD_RELOC_X86_64_DTPMOD64,
   3223   BFD_RELOC_X86_64_DTPOFF64,
   3224   BFD_RELOC_X86_64_TPOFF64,
   3225   BFD_RELOC_X86_64_TLSGD,
   3226   BFD_RELOC_X86_64_TLSLD,
   3227   BFD_RELOC_X86_64_DTPOFF32,
   3228   BFD_RELOC_X86_64_GOTTPOFF,
   3229   BFD_RELOC_X86_64_TPOFF32,
   3230   BFD_RELOC_X86_64_GOTOFF64,
   3231   BFD_RELOC_X86_64_GOTPC32,
   3232   BFD_RELOC_X86_64_GOT64,
   3233   BFD_RELOC_X86_64_GOTPCREL64,
   3234   BFD_RELOC_X86_64_GOTPC64,
   3235   BFD_RELOC_X86_64_GOTPLT64,
   3236   BFD_RELOC_X86_64_PLTOFF64,
   3237   BFD_RELOC_X86_64_GOTPC32_TLSDESC,
   3238   BFD_RELOC_X86_64_TLSDESC_CALL,
   3239   BFD_RELOC_X86_64_TLSDESC,
   3240   BFD_RELOC_X86_64_IRELATIVE,
   3241   BFD_RELOC_X86_64_PC32_BND,
   3242   BFD_RELOC_X86_64_PLT32_BND,
   3243   BFD_RELOC_X86_64_GOTPCRELX,
   3244   BFD_RELOC_X86_64_REX_GOTPCRELX,
   3245 
   3246 /* ns32k relocations  */
   3247   BFD_RELOC_NS32K_IMM_8,
   3248   BFD_RELOC_NS32K_IMM_16,
   3249   BFD_RELOC_NS32K_IMM_32,
   3250   BFD_RELOC_NS32K_IMM_8_PCREL,
   3251   BFD_RELOC_NS32K_IMM_16_PCREL,
   3252   BFD_RELOC_NS32K_IMM_32_PCREL,
   3253   BFD_RELOC_NS32K_DISP_8,
   3254   BFD_RELOC_NS32K_DISP_16,
   3255   BFD_RELOC_NS32K_DISP_32,
   3256   BFD_RELOC_NS32K_DISP_8_PCREL,
   3257   BFD_RELOC_NS32K_DISP_16_PCREL,
   3258   BFD_RELOC_NS32K_DISP_32_PCREL,
   3259 
   3260 /* PDP11 relocations  */
   3261   BFD_RELOC_PDP11_DISP_8_PCREL,
   3262   BFD_RELOC_PDP11_DISP_6_PCREL,
   3263 
   3264 /* Picojava relocs.  Not all of these appear in object files.  */
   3265   BFD_RELOC_PJ_CODE_HI16,
   3266   BFD_RELOC_PJ_CODE_LO16,
   3267   BFD_RELOC_PJ_CODE_DIR16,
   3268   BFD_RELOC_PJ_CODE_DIR32,
   3269   BFD_RELOC_PJ_CODE_REL16,
   3270   BFD_RELOC_PJ_CODE_REL32,
   3271 
   3272 /* Power(rs6000) and PowerPC relocations.  */
   3273   BFD_RELOC_PPC_B26,
   3274   BFD_RELOC_PPC_BA26,
   3275   BFD_RELOC_PPC_TOC16,
   3276   BFD_RELOC_PPC_B16,
   3277   BFD_RELOC_PPC_B16_BRTAKEN,
   3278   BFD_RELOC_PPC_B16_BRNTAKEN,
   3279   BFD_RELOC_PPC_BA16,
   3280   BFD_RELOC_PPC_BA16_BRTAKEN,
   3281   BFD_RELOC_PPC_BA16_BRNTAKEN,
   3282   BFD_RELOC_PPC_COPY,
   3283   BFD_RELOC_PPC_GLOB_DAT,
   3284   BFD_RELOC_PPC_JMP_SLOT,
   3285   BFD_RELOC_PPC_RELATIVE,
   3286   BFD_RELOC_PPC_LOCAL24PC,
   3287   BFD_RELOC_PPC_EMB_NADDR32,
   3288   BFD_RELOC_PPC_EMB_NADDR16,
   3289   BFD_RELOC_PPC_EMB_NADDR16_LO,
   3290   BFD_RELOC_PPC_EMB_NADDR16_HI,
   3291   BFD_RELOC_PPC_EMB_NADDR16_HA,
   3292   BFD_RELOC_PPC_EMB_SDAI16,
   3293   BFD_RELOC_PPC_EMB_SDA2I16,
   3294   BFD_RELOC_PPC_EMB_SDA2REL,
   3295   BFD_RELOC_PPC_EMB_SDA21,
   3296   BFD_RELOC_PPC_EMB_MRKREF,
   3297   BFD_RELOC_PPC_EMB_RELSEC16,
   3298   BFD_RELOC_PPC_EMB_RELST_LO,
   3299   BFD_RELOC_PPC_EMB_RELST_HI,
   3300   BFD_RELOC_PPC_EMB_RELST_HA,
   3301   BFD_RELOC_PPC_EMB_BIT_FLD,
   3302   BFD_RELOC_PPC_EMB_RELSDA,
   3303   BFD_RELOC_PPC_VLE_REL8,
   3304   BFD_RELOC_PPC_VLE_REL15,
   3305   BFD_RELOC_PPC_VLE_REL24,
   3306   BFD_RELOC_PPC_VLE_LO16A,
   3307   BFD_RELOC_PPC_VLE_LO16D,
   3308   BFD_RELOC_PPC_VLE_HI16A,
   3309   BFD_RELOC_PPC_VLE_HI16D,
   3310   BFD_RELOC_PPC_VLE_HA16A,
   3311   BFD_RELOC_PPC_VLE_HA16D,
   3312   BFD_RELOC_PPC_VLE_SDA21,
   3313   BFD_RELOC_PPC_VLE_SDA21_LO,
   3314   BFD_RELOC_PPC_VLE_SDAREL_LO16A,
   3315   BFD_RELOC_PPC_VLE_SDAREL_LO16D,
   3316   BFD_RELOC_PPC_VLE_SDAREL_HI16A,
   3317   BFD_RELOC_PPC_VLE_SDAREL_HI16D,
   3318   BFD_RELOC_PPC_VLE_SDAREL_HA16A,
   3319   BFD_RELOC_PPC_VLE_SDAREL_HA16D,
   3320   BFD_RELOC_PPC_REL16DX_HA,
   3321   BFD_RELOC_PPC64_HIGHER,
   3322   BFD_RELOC_PPC64_HIGHER_S,
   3323   BFD_RELOC_PPC64_HIGHEST,
   3324   BFD_RELOC_PPC64_HIGHEST_S,
   3325   BFD_RELOC_PPC64_TOC16_LO,
   3326   BFD_RELOC_PPC64_TOC16_HI,
   3327   BFD_RELOC_PPC64_TOC16_HA,
   3328   BFD_RELOC_PPC64_TOC,
   3329   BFD_RELOC_PPC64_PLTGOT16,
   3330   BFD_RELOC_PPC64_PLTGOT16_LO,
   3331   BFD_RELOC_PPC64_PLTGOT16_HI,
   3332   BFD_RELOC_PPC64_PLTGOT16_HA,
   3333   BFD_RELOC_PPC64_ADDR16_DS,
   3334   BFD_RELOC_PPC64_ADDR16_LO_DS,
   3335   BFD_RELOC_PPC64_GOT16_DS,
   3336   BFD_RELOC_PPC64_GOT16_LO_DS,
   3337   BFD_RELOC_PPC64_PLT16_LO_DS,
   3338   BFD_RELOC_PPC64_SECTOFF_DS,
   3339   BFD_RELOC_PPC64_SECTOFF_LO_DS,
   3340   BFD_RELOC_PPC64_TOC16_DS,
   3341   BFD_RELOC_PPC64_TOC16_LO_DS,
   3342   BFD_RELOC_PPC64_PLTGOT16_DS,
   3343   BFD_RELOC_PPC64_PLTGOT16_LO_DS,
   3344   BFD_RELOC_PPC64_ADDR16_HIGH,
   3345   BFD_RELOC_PPC64_ADDR16_HIGHA,
   3346   BFD_RELOC_PPC64_ADDR64_LOCAL,
   3347   BFD_RELOC_PPC64_ENTRY,
   3348 
   3349 /* PowerPC and PowerPC64 thread-local storage relocations.  */
   3350   BFD_RELOC_PPC_TLS,
   3351   BFD_RELOC_PPC_TLSGD,
   3352   BFD_RELOC_PPC_TLSLD,
   3353   BFD_RELOC_PPC_DTPMOD,
   3354   BFD_RELOC_PPC_TPREL16,
   3355   BFD_RELOC_PPC_TPREL16_LO,
   3356   BFD_RELOC_PPC_TPREL16_HI,
   3357   BFD_RELOC_PPC_TPREL16_HA,
   3358   BFD_RELOC_PPC_TPREL,
   3359   BFD_RELOC_PPC_DTPREL16,
   3360   BFD_RELOC_PPC_DTPREL16_LO,
   3361   BFD_RELOC_PPC_DTPREL16_HI,
   3362   BFD_RELOC_PPC_DTPREL16_HA,
   3363   BFD_RELOC_PPC_DTPREL,
   3364   BFD_RELOC_PPC_GOT_TLSGD16,
   3365   BFD_RELOC_PPC_GOT_TLSGD16_LO,
   3366   BFD_RELOC_PPC_GOT_TLSGD16_HI,
   3367   BFD_RELOC_PPC_GOT_TLSGD16_HA,
   3368   BFD_RELOC_PPC_GOT_TLSLD16,
   3369   BFD_RELOC_PPC_GOT_TLSLD16_LO,
   3370   BFD_RELOC_PPC_GOT_TLSLD16_HI,
   3371   BFD_RELOC_PPC_GOT_TLSLD16_HA,
   3372   BFD_RELOC_PPC_GOT_TPREL16,
   3373   BFD_RELOC_PPC_GOT_TPREL16_LO,
   3374   BFD_RELOC_PPC_GOT_TPREL16_HI,
   3375   BFD_RELOC_PPC_GOT_TPREL16_HA,
   3376   BFD_RELOC_PPC_GOT_DTPREL16,
   3377   BFD_RELOC_PPC_GOT_DTPREL16_LO,
   3378   BFD_RELOC_PPC_GOT_DTPREL16_HI,
   3379   BFD_RELOC_PPC_GOT_DTPREL16_HA,
   3380   BFD_RELOC_PPC64_TPREL16_DS,
   3381   BFD_RELOC_PPC64_TPREL16_LO_DS,
   3382   BFD_RELOC_PPC64_TPREL16_HIGHER,
   3383   BFD_RELOC_PPC64_TPREL16_HIGHERA,
   3384   BFD_RELOC_PPC64_TPREL16_HIGHEST,
   3385   BFD_RELOC_PPC64_TPREL16_HIGHESTA,
   3386   BFD_RELOC_PPC64_DTPREL16_DS,
   3387   BFD_RELOC_PPC64_DTPREL16_LO_DS,
   3388   BFD_RELOC_PPC64_DTPREL16_HIGHER,
   3389   BFD_RELOC_PPC64_DTPREL16_HIGHERA,
   3390   BFD_RELOC_PPC64_DTPREL16_HIGHEST,
   3391   BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
   3392   BFD_RELOC_PPC64_TPREL16_HIGH,
   3393   BFD_RELOC_PPC64_TPREL16_HIGHA,
   3394   BFD_RELOC_PPC64_DTPREL16_HIGH,
   3395   BFD_RELOC_PPC64_DTPREL16_HIGHA,
   3396 
   3397 /* IBM 370/390 relocations  */
   3398   BFD_RELOC_I370_D12,
   3399 
   3400 /* The type of reloc used to build a constructor table - at the moment
   3401 probably a 32 bit wide absolute relocation, but the target can choose.
   3402 It generally does map to one of the other relocation types.  */
   3403   BFD_RELOC_CTOR,
   3404 
   3405 /* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
   3406 not stored in the instruction.  */
   3407   BFD_RELOC_ARM_PCREL_BRANCH,
   3408 
   3409 /* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
   3410 not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
   3411 field in the instruction.  */
   3412   BFD_RELOC_ARM_PCREL_BLX,
   3413 
   3414 /* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
   3415 not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
   3416 field in the instruction.  */
   3417   BFD_RELOC_THUMB_PCREL_BLX,
   3418 
   3419 /* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
   3420   BFD_RELOC_ARM_PCREL_CALL,
   3421 
   3422 /* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
   3423   BFD_RELOC_ARM_PCREL_JUMP,
   3424 
   3425 /* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
   3426 The lowest bit must be zero and is not stored in the instruction.
   3427 Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
   3428 "nn" one smaller in all cases.  Note further that BRANCH23
   3429 corresponds to R_ARM_THM_CALL.  */
   3430   BFD_RELOC_THUMB_PCREL_BRANCH7,
   3431   BFD_RELOC_THUMB_PCREL_BRANCH9,
   3432   BFD_RELOC_THUMB_PCREL_BRANCH12,
   3433   BFD_RELOC_THUMB_PCREL_BRANCH20,
   3434   BFD_RELOC_THUMB_PCREL_BRANCH23,
   3435   BFD_RELOC_THUMB_PCREL_BRANCH25,
   3436 
   3437 /* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
   3438   BFD_RELOC_ARM_OFFSET_IMM,
   3439 
   3440 /* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
   3441   BFD_RELOC_ARM_THUMB_OFFSET,
   3442 
   3443 /* Pc-relative or absolute relocation depending on target.  Used for
   3444 entries in .init_array sections.  */
   3445   BFD_RELOC_ARM_TARGET1,
   3446 
   3447 /* Read-only segment base relative address.  */
   3448   BFD_RELOC_ARM_ROSEGREL32,
   3449 
   3450 /* Data segment base relative address.  */
   3451   BFD_RELOC_ARM_SBREL32,
   3452 
   3453 /* This reloc is used for references to RTTI data from exception handling
   3454 tables.  The actual definition depends on the target.  It may be a
   3455 pc-relative or some form of GOT-indirect relocation.  */
   3456   BFD_RELOC_ARM_TARGET2,
   3457 
   3458 /* 31-bit PC relative address.  */
   3459   BFD_RELOC_ARM_PREL31,
   3460 
   3461 /* Low and High halfword relocations for MOVW and MOVT instructions.  */
   3462   BFD_RELOC_ARM_MOVW,
   3463   BFD_RELOC_ARM_MOVT,
   3464   BFD_RELOC_ARM_MOVW_PCREL,
   3465   BFD_RELOC_ARM_MOVT_PCREL,
   3466   BFD_RELOC_ARM_THUMB_MOVW,
   3467   BFD_RELOC_ARM_THUMB_MOVT,
   3468   BFD_RELOC_ARM_THUMB_MOVW_PCREL,
   3469   BFD_RELOC_ARM_THUMB_MOVT_PCREL,
   3470 
   3471 /* Relocations for setting up GOTs and PLTs for shared libraries.  */
   3472   BFD_RELOC_ARM_JUMP_SLOT,
   3473   BFD_RELOC_ARM_GLOB_DAT,
   3474   BFD_RELOC_ARM_GOT32,
   3475   BFD_RELOC_ARM_PLT32,
   3476   BFD_RELOC_ARM_RELATIVE,
   3477   BFD_RELOC_ARM_GOTOFF,
   3478   BFD_RELOC_ARM_GOTPC,
   3479   BFD_RELOC_ARM_GOT_PREL,
   3480 
   3481 /* ARM thread-local storage relocations.  */
   3482   BFD_RELOC_ARM_TLS_GD32,
   3483   BFD_RELOC_ARM_TLS_LDO32,
   3484   BFD_RELOC_ARM_TLS_LDM32,
   3485   BFD_RELOC_ARM_TLS_DTPOFF32,
   3486   BFD_RELOC_ARM_TLS_DTPMOD32,
   3487   BFD_RELOC_ARM_TLS_TPOFF32,
   3488   BFD_RELOC_ARM_TLS_IE32,
   3489   BFD_RELOC_ARM_TLS_LE32,
   3490   BFD_RELOC_ARM_TLS_GOTDESC,
   3491   BFD_RELOC_ARM_TLS_CALL,
   3492   BFD_RELOC_ARM_THM_TLS_CALL,
   3493   BFD_RELOC_ARM_TLS_DESCSEQ,
   3494   BFD_RELOC_ARM_THM_TLS_DESCSEQ,
   3495   BFD_RELOC_ARM_TLS_DESC,
   3496 
   3497 /* ARM group relocations.  */
   3498   BFD_RELOC_ARM_ALU_PC_G0_NC,
   3499   BFD_RELOC_ARM_ALU_PC_G0,
   3500   BFD_RELOC_ARM_ALU_PC_G1_NC,
   3501   BFD_RELOC_ARM_ALU_PC_G1,
   3502   BFD_RELOC_ARM_ALU_PC_G2,
   3503   BFD_RELOC_ARM_LDR_PC_G0,
   3504   BFD_RELOC_ARM_LDR_PC_G1,
   3505   BFD_RELOC_ARM_LDR_PC_G2,
   3506   BFD_RELOC_ARM_LDRS_PC_G0,
   3507   BFD_RELOC_ARM_LDRS_PC_G1,
   3508   BFD_RELOC_ARM_LDRS_PC_G2,
   3509   BFD_RELOC_ARM_LDC_PC_G0,
   3510   BFD_RELOC_ARM_LDC_PC_G1,
   3511   BFD_RELOC_ARM_LDC_PC_G2,
   3512   BFD_RELOC_ARM_ALU_SB_G0_NC,
   3513   BFD_RELOC_ARM_ALU_SB_G0,
   3514   BFD_RELOC_ARM_ALU_SB_G1_NC,
   3515   BFD_RELOC_ARM_ALU_SB_G1,
   3516   BFD_RELOC_ARM_ALU_SB_G2,
   3517   BFD_RELOC_ARM_LDR_SB_G0,
   3518   BFD_RELOC_ARM_LDR_SB_G1,
   3519   BFD_RELOC_ARM_LDR_SB_G2,
   3520   BFD_RELOC_ARM_LDRS_SB_G0,
   3521   BFD_RELOC_ARM_LDRS_SB_G1,
   3522   BFD_RELOC_ARM_LDRS_SB_G2,
   3523   BFD_RELOC_ARM_LDC_SB_G0,
   3524   BFD_RELOC_ARM_LDC_SB_G1,
   3525   BFD_RELOC_ARM_LDC_SB_G2,
   3526 
   3527 /* Annotation of BX instructions.  */
   3528   BFD_RELOC_ARM_V4BX,
   3529 
   3530 /* ARM support for STT_GNU_IFUNC.  */
   3531   BFD_RELOC_ARM_IRELATIVE,
   3532 
   3533 /* These relocs are only used within the ARM assembler.  They are not
   3534 (at present) written to any object files.  */
   3535   BFD_RELOC_ARM_IMMEDIATE,
   3536   BFD_RELOC_ARM_ADRL_IMMEDIATE,
   3537   BFD_RELOC_ARM_T32_IMMEDIATE,
   3538   BFD_RELOC_ARM_T32_ADD_IMM,
   3539   BFD_RELOC_ARM_T32_IMM12,
   3540   BFD_RELOC_ARM_T32_ADD_PC12,
   3541   BFD_RELOC_ARM_SHIFT_IMM,
   3542   BFD_RELOC_ARM_SMC,
   3543   BFD_RELOC_ARM_HVC,
   3544   BFD_RELOC_ARM_SWI,
   3545   BFD_RELOC_ARM_MULTI,
   3546   BFD_RELOC_ARM_CP_OFF_IMM,
   3547   BFD_RELOC_ARM_CP_OFF_IMM_S2,
   3548   BFD_RELOC_ARM_T32_CP_OFF_IMM,
   3549   BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
   3550   BFD_RELOC_ARM_ADR_IMM,
   3551   BFD_RELOC_ARM_LDR_IMM,
   3552   BFD_RELOC_ARM_LITERAL,
   3553   BFD_RELOC_ARM_IN_POOL,
   3554   BFD_RELOC_ARM_OFFSET_IMM8,
   3555   BFD_RELOC_ARM_T32_OFFSET_U8,
   3556   BFD_RELOC_ARM_T32_OFFSET_IMM,
   3557   BFD_RELOC_ARM_HWLITERAL,
   3558   BFD_RELOC_ARM_THUMB_ADD,
   3559   BFD_RELOC_ARM_THUMB_IMM,
   3560   BFD_RELOC_ARM_THUMB_SHIFT,
   3561 
   3562 /* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
   3563   BFD_RELOC_SH_PCDISP8BY2,
   3564   BFD_RELOC_SH_PCDISP12BY2,
   3565   BFD_RELOC_SH_IMM3,
   3566   BFD_RELOC_SH_IMM3U,
   3567   BFD_RELOC_SH_DISP12,
   3568   BFD_RELOC_SH_DISP12BY2,
   3569   BFD_RELOC_SH_DISP12BY4,
   3570   BFD_RELOC_SH_DISP12BY8,
   3571   BFD_RELOC_SH_DISP20,
   3572   BFD_RELOC_SH_DISP20BY8,
   3573   BFD_RELOC_SH_IMM4,
   3574   BFD_RELOC_SH_IMM4BY2,
   3575   BFD_RELOC_SH_IMM4BY4,
   3576   BFD_RELOC_SH_IMM8,
   3577   BFD_RELOC_SH_IMM8BY2,
   3578   BFD_RELOC_SH_IMM8BY4,
   3579   BFD_RELOC_SH_PCRELIMM8BY2,
   3580   BFD_RELOC_SH_PCRELIMM8BY4,
   3581   BFD_RELOC_SH_SWITCH16,
   3582   BFD_RELOC_SH_SWITCH32,
   3583   BFD_RELOC_SH_USES,
   3584   BFD_RELOC_SH_COUNT,
   3585   BFD_RELOC_SH_ALIGN,
   3586   BFD_RELOC_SH_CODE,
   3587   BFD_RELOC_SH_DATA,
   3588   BFD_RELOC_SH_LABEL,
   3589   BFD_RELOC_SH_LOOP_START,
   3590   BFD_RELOC_SH_LOOP_END,
   3591   BFD_RELOC_SH_COPY,
   3592   BFD_RELOC_SH_GLOB_DAT,
   3593   BFD_RELOC_SH_JMP_SLOT,
   3594   BFD_RELOC_SH_RELATIVE,
   3595   BFD_RELOC_SH_GOTPC,
   3596   BFD_RELOC_SH_GOT_LOW16,
   3597   BFD_RELOC_SH_GOT_MEDLOW16,
   3598   BFD_RELOC_SH_GOT_MEDHI16,
   3599   BFD_RELOC_SH_GOT_HI16,
   3600   BFD_RELOC_SH_GOTPLT_LOW16,
   3601   BFD_RELOC_SH_GOTPLT_MEDLOW16,
   3602   BFD_RELOC_SH_GOTPLT_MEDHI16,
   3603   BFD_RELOC_SH_GOTPLT_HI16,
   3604   BFD_RELOC_SH_PLT_LOW16,
   3605   BFD_RELOC_SH_PLT_MEDLOW16,
   3606   BFD_RELOC_SH_PLT_MEDHI16,
   3607   BFD_RELOC_SH_PLT_HI16,
   3608   BFD_RELOC_SH_GOTOFF_LOW16,
   3609   BFD_RELOC_SH_GOTOFF_MEDLOW16,
   3610   BFD_RELOC_SH_GOTOFF_MEDHI16,
   3611   BFD_RELOC_SH_GOTOFF_HI16,
   3612   BFD_RELOC_SH_GOTPC_LOW16,
   3613   BFD_RELOC_SH_GOTPC_MEDLOW16,
   3614   BFD_RELOC_SH_GOTPC_MEDHI16,
   3615   BFD_RELOC_SH_GOTPC_HI16,
   3616   BFD_RELOC_SH_COPY64,
   3617   BFD_RELOC_SH_GLOB_DAT64,
   3618   BFD_RELOC_SH_JMP_SLOT64,
   3619   BFD_RELOC_SH_RELATIVE64,
   3620   BFD_RELOC_SH_GOT10BY4,
   3621   BFD_RELOC_SH_GOT10BY8,
   3622   BFD_RELOC_SH_GOTPLT10BY4,
   3623   BFD_RELOC_SH_GOTPLT10BY8,
   3624   BFD_RELOC_SH_GOTPLT32,
   3625   BFD_RELOC_SH_SHMEDIA_CODE,
   3626   BFD_RELOC_SH_IMMU5,
   3627   BFD_RELOC_SH_IMMS6,
   3628   BFD_RELOC_SH_IMMS6BY32,
   3629   BFD_RELOC_SH_IMMU6,
   3630   BFD_RELOC_SH_IMMS10,
   3631   BFD_RELOC_SH_IMMS10BY2,
   3632   BFD_RELOC_SH_IMMS10BY4,
   3633   BFD_RELOC_SH_IMMS10BY8,
   3634   BFD_RELOC_SH_IMMS16,
   3635   BFD_RELOC_SH_IMMU16,
   3636   BFD_RELOC_SH_IMM_LOW16,
   3637   BFD_RELOC_SH_IMM_LOW16_PCREL,
   3638   BFD_RELOC_SH_IMM_MEDLOW16,
   3639   BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
   3640   BFD_RELOC_SH_IMM_MEDHI16,
   3641   BFD_RELOC_SH_IMM_MEDHI16_PCREL,
   3642   BFD_RELOC_SH_IMM_HI16,
   3643   BFD_RELOC_SH_IMM_HI16_PCREL,
   3644   BFD_RELOC_SH_PT_16,
   3645   BFD_RELOC_SH_TLS_GD_32,
   3646   BFD_RELOC_SH_TLS_LD_32,
   3647   BFD_RELOC_SH_TLS_LDO_32,
   3648   BFD_RELOC_SH_TLS_IE_32,
   3649   BFD_RELOC_SH_TLS_LE_32,
   3650   BFD_RELOC_SH_TLS_DTPMOD32,
   3651   BFD_RELOC_SH_TLS_DTPOFF32,
   3652   BFD_RELOC_SH_TLS_TPOFF32,
   3653   BFD_RELOC_SH_GOT20,
   3654   BFD_RELOC_SH_GOTOFF20,
   3655   BFD_RELOC_SH_GOTFUNCDESC,
   3656   BFD_RELOC_SH_GOTFUNCDESC20,
   3657   BFD_RELOC_SH_GOTOFFFUNCDESC,
   3658   BFD_RELOC_SH_GOTOFFFUNCDESC20,
   3659   BFD_RELOC_SH_FUNCDESC,
   3660 
   3661 /* ARC relocs.  */
   3662   BFD_RELOC_ARC_NONE,
   3663   BFD_RELOC_ARC_8,
   3664   BFD_RELOC_ARC_16,
   3665   BFD_RELOC_ARC_24,
   3666   BFD_RELOC_ARC_32,
   3667   BFD_RELOC_ARC_N8,
   3668   BFD_RELOC_ARC_N16,
   3669   BFD_RELOC_ARC_N24,
   3670   BFD_RELOC_ARC_N32,
   3671   BFD_RELOC_ARC_SDA,
   3672   BFD_RELOC_ARC_SECTOFF,
   3673   BFD_RELOC_ARC_S21H_PCREL,
   3674   BFD_RELOC_ARC_S21W_PCREL,
   3675   BFD_RELOC_ARC_S25H_PCREL,
   3676   BFD_RELOC_ARC_S25W_PCREL,
   3677   BFD_RELOC_ARC_SDA32,
   3678   BFD_RELOC_ARC_SDA_LDST,
   3679   BFD_RELOC_ARC_SDA_LDST1,
   3680   BFD_RELOC_ARC_SDA_LDST2,
   3681   BFD_RELOC_ARC_SDA16_LD,
   3682   BFD_RELOC_ARC_SDA16_LD1,
   3683   BFD_RELOC_ARC_SDA16_LD2,
   3684   BFD_RELOC_ARC_S13_PCREL,
   3685   BFD_RELOC_ARC_W,
   3686   BFD_RELOC_ARC_32_ME,
   3687   BFD_RELOC_ARC_32_ME_S,
   3688   BFD_RELOC_ARC_N32_ME,
   3689   BFD_RELOC_ARC_SECTOFF_ME,
   3690   BFD_RELOC_ARC_SDA32_ME,
   3691   BFD_RELOC_ARC_W_ME,
   3692   BFD_RELOC_AC_SECTOFF_U8,
   3693   BFD_RELOC_AC_SECTOFF_U8_1,
   3694   BFD_RELOC_AC_SECTOFF_U8_2,
   3695   BFD_RELOC_AC_SECTFOFF_S9,
   3696   BFD_RELOC_AC_SECTFOFF_S9_1,
   3697   BFD_RELOC_AC_SECTFOFF_S9_2,
   3698   BFD_RELOC_ARC_SECTOFF_ME_1,
   3699   BFD_RELOC_ARC_SECTOFF_ME_2,
   3700   BFD_RELOC_ARC_SECTOFF_1,
   3701   BFD_RELOC_ARC_SECTOFF_2,
   3702   BFD_RELOC_ARC_SDA16_ST2,
   3703   BFD_RELOC_ARC_32_PCREL,
   3704   BFD_RELOC_ARC_PC32,
   3705   BFD_RELOC_ARC_GOT32,
   3706   BFD_RELOC_ARC_GOTPC32,
   3707   BFD_RELOC_ARC_PLT32,
   3708   BFD_RELOC_ARC_COPY,
   3709   BFD_RELOC_ARC_GLOB_DAT,
   3710   BFD_RELOC_ARC_JMP_SLOT,
   3711   BFD_RELOC_ARC_RELATIVE,
   3712   BFD_RELOC_ARC_GOTOFF,
   3713   BFD_RELOC_ARC_GOTPC,
   3714   BFD_RELOC_ARC_S21W_PCREL_PLT,
   3715   BFD_RELOC_ARC_S25H_PCREL_PLT,
   3716   BFD_RELOC_ARC_TLS_DTPMOD,
   3717   BFD_RELOC_ARC_TLS_TPOFF,
   3718   BFD_RELOC_ARC_TLS_GD_GOT,
   3719   BFD_RELOC_ARC_TLS_GD_LD,
   3720   BFD_RELOC_ARC_TLS_GD_CALL,
   3721   BFD_RELOC_ARC_TLS_IE_GOT,
   3722   BFD_RELOC_ARC_TLS_DTPOFF,
   3723   BFD_RELOC_ARC_TLS_DTPOFF_S9,
   3724   BFD_RELOC_ARC_TLS_LE_S9,
   3725   BFD_RELOC_ARC_TLS_LE_32,
   3726   BFD_RELOC_ARC_S25W_PCREL_PLT,
   3727   BFD_RELOC_ARC_S21H_PCREL_PLT,
   3728 
   3729 /* ADI Blackfin 16 bit immediate absolute reloc.  */
   3730   BFD_RELOC_BFIN_16_IMM,
   3731 
   3732 /* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
   3733   BFD_RELOC_BFIN_16_HIGH,
   3734 
   3735 /* ADI Blackfin 'a' part of LSETUP.  */
   3736   BFD_RELOC_BFIN_4_PCREL,
   3737 
   3738 /* ADI Blackfin.  */
   3739   BFD_RELOC_BFIN_5_PCREL,
   3740 
   3741 /* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
   3742   BFD_RELOC_BFIN_16_LOW,
   3743 
   3744 /* ADI Blackfin.  */
   3745   BFD_RELOC_BFIN_10_PCREL,
   3746 
   3747 /* ADI Blackfin 'b' part of LSETUP.  */
   3748   BFD_RELOC_BFIN_11_PCREL,
   3749 
   3750 /* ADI Blackfin.  */
   3751   BFD_RELOC_BFIN_12_PCREL_JUMP,
   3752 
   3753 /* ADI Blackfin Short jump, pcrel.  */
   3754   BFD_RELOC_BFIN_12_PCREL_JUMP_S,
   3755 
   3756 /* ADI Blackfin Call.x not implemented.  */
   3757   BFD_RELOC_BFIN_24_PCREL_CALL_X,
   3758 
   3759 /* ADI Blackfin Long Jump pcrel.  */
   3760   BFD_RELOC_BFIN_24_PCREL_JUMP_L,
   3761 
   3762 /* ADI Blackfin FD-PIC relocations.  */
   3763   BFD_RELOC_BFIN_GOT17M4,
   3764   BFD_RELOC_BFIN_GOTHI,
   3765   BFD_RELOC_BFIN_GOTLO,
   3766   BFD_RELOC_BFIN_FUNCDESC,
   3767   BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
   3768   BFD_RELOC_BFIN_FUNCDESC_GOTHI,
   3769   BFD_RELOC_BFIN_FUNCDESC_GOTLO,
   3770   BFD_RELOC_BFIN_FUNCDESC_VALUE,
   3771   BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
   3772   BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
   3773   BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
   3774   BFD_RELOC_BFIN_GOTOFF17M4,
   3775   BFD_RELOC_BFIN_GOTOFFHI,
   3776   BFD_RELOC_BFIN_GOTOFFLO,
   3777 
   3778 /* ADI Blackfin GOT relocation.  */
   3779   BFD_RELOC_BFIN_GOT,
   3780 
   3781 /* ADI Blackfin PLTPC relocation.  */
   3782   BFD_RELOC_BFIN_PLTPC,
   3783 
   3784 /* ADI Blackfin arithmetic relocation.  */
   3785   BFD_ARELOC_BFIN_PUSH,
   3786 
   3787 /* ADI Blackfin arithmetic relocation.  */
   3788   BFD_ARELOC_BFIN_CONST,
   3789 
   3790 /* ADI Blackfin arithmetic relocation.  */
   3791   BFD_ARELOC_BFIN_ADD,
   3792 
   3793 /* ADI Blackfin arithmetic relocation.  */
   3794   BFD_ARELOC_BFIN_SUB,
   3795 
   3796 /* ADI Blackfin arithmetic relocation.  */
   3797   BFD_ARELOC_BFIN_MULT,
   3798 
   3799 /* ADI Blackfin arithmetic relocation.  */
   3800   BFD_ARELOC_BFIN_DIV,
   3801 
   3802 /* ADI Blackfin arithmetic relocation.  */
   3803   BFD_ARELOC_BFIN_MOD,
   3804 
   3805 /* ADI Blackfin arithmetic relocation.  */
   3806   BFD_ARELOC_BFIN_LSHIFT,
   3807 
   3808 /* ADI Blackfin arithmetic relocation.  */
   3809   BFD_ARELOC_BFIN_RSHIFT,
   3810 
   3811 /* ADI Blackfin arithmetic relocation.  */
   3812   BFD_ARELOC_BFIN_AND,
   3813 
   3814 /* ADI Blackfin arithmetic relocation.  */
   3815   BFD_ARELOC_BFIN_OR,
   3816 
   3817 /* ADI Blackfin arithmetic relocation.  */
   3818   BFD_ARELOC_BFIN_XOR,
   3819 
   3820 /* ADI Blackfin arithmetic relocation.  */
   3821   BFD_ARELOC_BFIN_LAND,
   3822 
   3823 /* ADI Blackfin arithmetic relocation.  */
   3824   BFD_ARELOC_BFIN_LOR,
   3825 
   3826 /* ADI Blackfin arithmetic relocation.  */
   3827   BFD_ARELOC_BFIN_LEN,
   3828 
   3829 /* ADI Blackfin arithmetic relocation.  */
   3830   BFD_ARELOC_BFIN_NEG,
   3831 
   3832 /* ADI Blackfin arithmetic relocation.  */
   3833   BFD_ARELOC_BFIN_COMP,
   3834 
   3835 /* ADI Blackfin arithmetic relocation.  */
   3836   BFD_ARELOC_BFIN_PAGE,
   3837 
   3838 /* ADI Blackfin arithmetic relocation.  */
   3839   BFD_ARELOC_BFIN_HWPAGE,
   3840 
   3841 /* ADI Blackfin arithmetic relocation.  */
   3842   BFD_ARELOC_BFIN_ADDR,
   3843 
   3844 /* Mitsubishi D10V relocs.
   3845 This is a 10-bit reloc with the right 2 bits
   3846 assumed to be 0.  */
   3847   BFD_RELOC_D10V_10_PCREL_R,
   3848 
   3849 /* Mitsubishi D10V relocs.
   3850 This is a 10-bit reloc with the right 2 bits
   3851 assumed to be 0.  This is the same as the previous reloc
   3852 except it is in the left container, i.e.,
   3853 shifted left 15 bits.  */
   3854   BFD_RELOC_D10V_10_PCREL_L,
   3855 
   3856 /* This is an 18-bit reloc with the right 2 bits
   3857 assumed to be 0.  */
   3858   BFD_RELOC_D10V_18,
   3859 
   3860 /* This is an 18-bit reloc with the right 2 bits
   3861 assumed to be 0.  */
   3862   BFD_RELOC_D10V_18_PCREL,
   3863 
   3864 /* Mitsubishi D30V relocs.
   3865 This is a 6-bit absolute reloc.  */
   3866   BFD_RELOC_D30V_6,
   3867 
   3868 /* This is a 6-bit pc-relative reloc with
   3869 the right 3 bits assumed to be 0.  */
   3870   BFD_RELOC_D30V_9_PCREL,
   3871 
   3872 /* This is a 6-bit pc-relative reloc with
   3873 the right 3 bits assumed to be 0. Same
   3874 as the previous reloc but on the right side
   3875 of the container.  */
   3876   BFD_RELOC_D30V_9_PCREL_R,
   3877 
   3878 /* This is a 12-bit absolute reloc with the
   3879 right 3 bitsassumed to be 0.  */
   3880   BFD_RELOC_D30V_15,
   3881 
   3882 /* This is a 12-bit pc-relative reloc with
   3883 the right 3 bits assumed to be 0.  */
   3884   BFD_RELOC_D30V_15_PCREL,
   3885 
   3886 /* This is a 12-bit pc-relative reloc with
   3887 the right 3 bits assumed to be 0. Same
   3888 as the previous reloc but on the right side
   3889 of the container.  */
   3890   BFD_RELOC_D30V_15_PCREL_R,
   3891 
   3892 /* This is an 18-bit absolute reloc with
   3893 the right 3 bits assumed to be 0.  */
   3894   BFD_RELOC_D30V_21,
   3895 
   3896 /* This is an 18-bit pc-relative reloc with
   3897 the right 3 bits assumed to be 0.  */
   3898   BFD_RELOC_D30V_21_PCREL,
   3899 
   3900 /* This is an 18-bit pc-relative reloc with
   3901 the right 3 bits assumed to be 0. Same
   3902 as the previous reloc but on the right side
   3903 of the container.  */
   3904   BFD_RELOC_D30V_21_PCREL_R,
   3905 
   3906 /* This is a 32-bit absolute reloc.  */
   3907   BFD_RELOC_D30V_32,
   3908 
   3909 /* This is a 32-bit pc-relative reloc.  */
   3910   BFD_RELOC_D30V_32_PCREL,
   3911 
   3912 /* DLX relocs  */
   3913   BFD_RELOC_DLX_HI16_S,
   3914 
   3915 /* DLX relocs  */
   3916   BFD_RELOC_DLX_LO16,
   3917 
   3918 /* DLX relocs  */
   3919   BFD_RELOC_DLX_JMP26,
   3920 
   3921 /* Renesas M16C/M32C Relocations.  */
   3922   BFD_RELOC_M32C_HI8,
   3923   BFD_RELOC_M32C_RL_JUMP,
   3924   BFD_RELOC_M32C_RL_1ADDR,
   3925   BFD_RELOC_M32C_RL_2ADDR,
   3926 
   3927 /* Renesas M32R (formerly Mitsubishi M32R) relocs.
   3928 This is a 24 bit absolute address.  */
   3929   BFD_RELOC_M32R_24,
   3930 
   3931 /* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
   3932   BFD_RELOC_M32R_10_PCREL,
   3933 
   3934 /* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
   3935   BFD_RELOC_M32R_18_PCREL,
   3936 
   3937 /* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
   3938   BFD_RELOC_M32R_26_PCREL,
   3939 
   3940 /* This is a 16-bit reloc containing the high 16 bits of an address
   3941 used when the lower 16 bits are treated as unsigned.  */
   3942   BFD_RELOC_M32R_HI16_ULO,
   3943 
   3944 /* This is a 16-bit reloc containing the high 16 bits of an address
   3945 used when the lower 16 bits are treated as signed.  */
   3946   BFD_RELOC_M32R_HI16_SLO,
   3947 
   3948 /* This is a 16-bit reloc containing the lower 16 bits of an address.  */
   3949   BFD_RELOC_M32R_LO16,
   3950 
   3951 /* This is a 16-bit reloc containing the small data area offset for use in
   3952 add3, load, and store instructions.  */
   3953   BFD_RELOC_M32R_SDA16,
   3954 
   3955 /* For PIC.  */
   3956   BFD_RELOC_M32R_GOT24,
   3957   BFD_RELOC_M32R_26_PLTREL,
   3958   BFD_RELOC_M32R_COPY,
   3959   BFD_RELOC_M32R_GLOB_DAT,
   3960   BFD_RELOC_M32R_JMP_SLOT,
   3961   BFD_RELOC_M32R_RELATIVE,
   3962   BFD_RELOC_M32R_GOTOFF,
   3963   BFD_RELOC_M32R_GOTOFF_HI_ULO,
   3964   BFD_RELOC_M32R_GOTOFF_HI_SLO,
   3965   BFD_RELOC_M32R_GOTOFF_LO,
   3966   BFD_RELOC_M32R_GOTPC24,
   3967   BFD_RELOC_M32R_GOT16_HI_ULO,
   3968   BFD_RELOC_M32R_GOT16_HI_SLO,
   3969   BFD_RELOC_M32R_GOT16_LO,
   3970   BFD_RELOC_M32R_GOTPC_HI_ULO,
   3971   BFD_RELOC_M32R_GOTPC_HI_SLO,
   3972   BFD_RELOC_M32R_GOTPC_LO,
   3973 
   3974 /* NDS32 relocs.
   3975 This is a 20 bit absolute address.  */
   3976   BFD_RELOC_NDS32_20,
   3977 
   3978 /* This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.  */
   3979   BFD_RELOC_NDS32_9_PCREL,
   3980 
   3981 /* This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.  */
   3982   BFD_RELOC_NDS32_WORD_9_PCREL,
   3983 
   3984 /* This is an 15-bit reloc with the right 1 bit assumed to be 0.  */
   3985   BFD_RELOC_NDS32_15_PCREL,
   3986 
   3987 /* This is an 17-bit reloc with the right 1 bit assumed to be 0.  */
   3988   BFD_RELOC_NDS32_17_PCREL,
   3989 
   3990 /* This is a 25-bit reloc with the right 1 bit assumed to be 0.  */
   3991   BFD_RELOC_NDS32_25_PCREL,
   3992 
   3993 /* This is a 20-bit reloc containing the high 20 bits of an address
   3994 used with the lower 12 bits  */
   3995   BFD_RELOC_NDS32_HI20,
   3996 
   3997 /* This is a 12-bit reloc containing the lower 12 bits of an address
   3998 then shift right by 3. This is used with ldi,sdi...  */
   3999   BFD_RELOC_NDS32_LO12S3,
   4000 
   4001 /* This is a 12-bit reloc containing the lower 12 bits of an address
   4002 then shift left by 2. This is used with lwi,swi...  */
   4003   BFD_RELOC_NDS32_LO12S2,
   4004 
   4005 /* This is a 12-bit reloc containing the lower 12 bits of an address
   4006 then shift left by 1. This is used with lhi,shi...  */
   4007   BFD_RELOC_NDS32_LO12S1,
   4008 
   4009 /* This is a 12-bit reloc containing the lower 12 bits of an address
   4010 then shift left by 0. This is used with lbisbi...  */
   4011   BFD_RELOC_NDS32_LO12S0,
   4012 
   4013 /* This is a 12-bit reloc containing the lower 12 bits of an address
   4014 then shift left by 0. This is only used with branch relaxations  */
   4015   BFD_RELOC_NDS32_LO12S0_ORI,
   4016 
   4017 /* This is a 15-bit reloc containing the small data area 18-bit signed offset
   4018 and shift left by 3 for use in ldi, sdi...  */
   4019   BFD_RELOC_NDS32_SDA15S3,
   4020 
   4021 /* This is a 15-bit reloc containing the small data area 17-bit signed offset
   4022 and shift left by 2 for use in lwi, swi...  */
   4023   BFD_RELOC_NDS32_SDA15S2,
   4024 
   4025 /* This is a 15-bit reloc containing the small data area 16-bit signed offset
   4026 and shift left by 1 for use in lhi, shi...  */
   4027   BFD_RELOC_NDS32_SDA15S1,
   4028 
   4029 /* This is a 15-bit reloc containing the small data area 15-bit signed offset
   4030 and shift left by 0 for use in lbi, sbi...  */
   4031   BFD_RELOC_NDS32_SDA15S0,
   4032 
   4033 /* This is a 16-bit reloc containing the small data area 16-bit signed offset
   4034 and shift left by 3  */
   4035   BFD_RELOC_NDS32_SDA16S3,
   4036 
   4037 /* This is a 17-bit reloc containing the small data area 17-bit signed offset
   4038 and shift left by 2 for use in lwi.gp, swi.gp...  */
   4039   BFD_RELOC_NDS32_SDA17S2,
   4040 
   4041 /* This is a 18-bit reloc containing the small data area 18-bit signed offset
   4042 and shift left by 1 for use in lhi.gp, shi.gp...  */
   4043   BFD_RELOC_NDS32_SDA18S1,
   4044 
   4045 /* This is a 19-bit reloc containing the small data area 19-bit signed offset
   4046 and shift left by 0 for use in lbi.gp, sbi.gp...  */
   4047   BFD_RELOC_NDS32_SDA19S0,
   4048 
   4049 /* for PIC  */
   4050   BFD_RELOC_NDS32_GOT20,
   4051   BFD_RELOC_NDS32_9_PLTREL,
   4052   BFD_RELOC_NDS32_25_PLTREL,
   4053   BFD_RELOC_NDS32_COPY,
   4054   BFD_RELOC_NDS32_GLOB_DAT,
   4055   BFD_RELOC_NDS32_JMP_SLOT,
   4056   BFD_RELOC_NDS32_RELATIVE,
   4057   BFD_RELOC_NDS32_GOTOFF,
   4058   BFD_RELOC_NDS32_GOTOFF_HI20,
   4059   BFD_RELOC_NDS32_GOTOFF_LO12,
   4060   BFD_RELOC_NDS32_GOTPC20,
   4061   BFD_RELOC_NDS32_GOT_HI20,
   4062   BFD_RELOC_NDS32_GOT_LO12,
   4063   BFD_RELOC_NDS32_GOTPC_HI20,
   4064   BFD_RELOC_NDS32_GOTPC_LO12,
   4065 
   4066 /* for relax  */
   4067   BFD_RELOC_NDS32_INSN16,
   4068   BFD_RELOC_NDS32_LABEL,
   4069   BFD_RELOC_NDS32_LONGCALL1,
   4070   BFD_RELOC_NDS32_LONGCALL2,
   4071   BFD_RELOC_NDS32_LONGCALL3,
   4072   BFD_RELOC_NDS32_LONGJUMP1,
   4073   BFD_RELOC_NDS32_LONGJUMP2,
   4074   BFD_RELOC_NDS32_LONGJUMP3,
   4075   BFD_RELOC_NDS32_LOADSTORE,
   4076   BFD_RELOC_NDS32_9_FIXED,
   4077   BFD_RELOC_NDS32_15_FIXED,
   4078   BFD_RELOC_NDS32_17_FIXED,
   4079   BFD_RELOC_NDS32_25_FIXED,
   4080   BFD_RELOC_NDS32_LONGCALL4,
   4081   BFD_RELOC_NDS32_LONGCALL5,
   4082   BFD_RELOC_NDS32_LONGCALL6,
   4083   BFD_RELOC_NDS32_LONGJUMP4,
   4084   BFD_RELOC_NDS32_LONGJUMP5,
   4085   BFD_RELOC_NDS32_LONGJUMP6,
   4086   BFD_RELOC_NDS32_LONGJUMP7,
   4087 
   4088 /* for PIC  */
   4089   BFD_RELOC_NDS32_PLTREL_HI20,
   4090   BFD_RELOC_NDS32_PLTREL_LO12,
   4091   BFD_RELOC_NDS32_PLT_GOTREL_HI20,
   4092   BFD_RELOC_NDS32_PLT_GOTREL_LO12,
   4093 
   4094 /* for floating point  */
   4095   BFD_RELOC_NDS32_SDA12S2_DP,
   4096   BFD_RELOC_NDS32_SDA12S2_SP,
   4097   BFD_RELOC_NDS32_LO12S2_DP,
   4098   BFD_RELOC_NDS32_LO12S2_SP,
   4099 
   4100 /* for dwarf2 debug_line.  */
   4101   BFD_RELOC_NDS32_DWARF2_OP1,
   4102   BFD_RELOC_NDS32_DWARF2_OP2,
   4103   BFD_RELOC_NDS32_DWARF2_LEB,
   4104 
   4105 /* for eliminate 16-bit instructions  */
   4106   BFD_RELOC_NDS32_UPDATE_TA,
   4107 
   4108 /* for PIC object relaxation  */
   4109   BFD_RELOC_NDS32_PLT_GOTREL_LO20,
   4110   BFD_RELOC_NDS32_PLT_GOTREL_LO15,
   4111   BFD_RELOC_NDS32_PLT_GOTREL_LO19,
   4112   BFD_RELOC_NDS32_GOT_LO15,
   4113   BFD_RELOC_NDS32_GOT_LO19,
   4114   BFD_RELOC_NDS32_GOTOFF_LO15,
   4115   BFD_RELOC_NDS32_GOTOFF_LO19,
   4116   BFD_RELOC_NDS32_GOT15S2,
   4117   BFD_RELOC_NDS32_GOT17S2,
   4118 
   4119 /* NDS32 relocs.
   4120 This is a 5 bit absolute address.  */
   4121   BFD_RELOC_NDS32_5,
   4122 
   4123 /* This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0.  */
   4124   BFD_RELOC_NDS32_10_UPCREL,
   4125 
   4126 /* If fp were omitted, fp can used as another gp.  */
   4127   BFD_RELOC_NDS32_SDA_FP7U2_RELA,
   4128 
   4129 /* relaxation relative relocation types  */
   4130   BFD_RELOC_NDS32_RELAX_ENTRY,
   4131   BFD_RELOC_NDS32_GOT_SUFF,
   4132   BFD_RELOC_NDS32_GOTOFF_SUFF,
   4133   BFD_RELOC_NDS32_PLT_GOT_SUFF,
   4134   BFD_RELOC_NDS32_MULCALL_SUFF,
   4135   BFD_RELOC_NDS32_PTR,
   4136   BFD_RELOC_NDS32_PTR_COUNT,
   4137   BFD_RELOC_NDS32_PTR_RESOLVED,
   4138   BFD_RELOC_NDS32_PLTBLOCK,
   4139   BFD_RELOC_NDS32_RELAX_REGION_BEGIN,
   4140   BFD_RELOC_NDS32_RELAX_REGION_END,
   4141   BFD_RELOC_NDS32_MINUEND,
   4142   BFD_RELOC_NDS32_SUBTRAHEND,
   4143   BFD_RELOC_NDS32_DIFF8,
   4144   BFD_RELOC_NDS32_DIFF16,
   4145   BFD_RELOC_NDS32_DIFF32,
   4146   BFD_RELOC_NDS32_DIFF_ULEB128,
   4147   BFD_RELOC_NDS32_EMPTY,
   4148 
   4149 /* This is a 25 bit absolute address.  */
   4150   BFD_RELOC_NDS32_25_ABS,
   4151 
   4152 /* For ex9 and ifc using.  */
   4153   BFD_RELOC_NDS32_DATA,
   4154   BFD_RELOC_NDS32_TRAN,
   4155   BFD_RELOC_NDS32_17IFC_PCREL,
   4156   BFD_RELOC_NDS32_10IFCU_PCREL,
   4157 
   4158 /* For TLS.  */
   4159   BFD_RELOC_NDS32_TPOFF,
   4160   BFD_RELOC_NDS32_TLS_LE_HI20,
   4161   BFD_RELOC_NDS32_TLS_LE_LO12,
   4162   BFD_RELOC_NDS32_TLS_LE_ADD,
   4163   BFD_RELOC_NDS32_TLS_LE_LS,
   4164   BFD_RELOC_NDS32_GOTTPOFF,
   4165   BFD_RELOC_NDS32_TLS_IE_HI20,
   4166   BFD_RELOC_NDS32_TLS_IE_LO12S2,
   4167   BFD_RELOC_NDS32_TLS_TPOFF,
   4168   BFD_RELOC_NDS32_TLS_LE_20,
   4169   BFD_RELOC_NDS32_TLS_LE_15S0,
   4170   BFD_RELOC_NDS32_TLS_LE_15S1,
   4171   BFD_RELOC_NDS32_TLS_LE_15S2,
   4172 
   4173 /* This is a 9-bit reloc  */
   4174   BFD_RELOC_V850_9_PCREL,
   4175 
   4176 /* This is a 22-bit reloc  */
   4177   BFD_RELOC_V850_22_PCREL,
   4178 
   4179 /* This is a 16 bit offset from the short data area pointer.  */
   4180   BFD_RELOC_V850_SDA_16_16_OFFSET,
   4181 
   4182 /* This is a 16 bit offset (of which only 15 bits are used) from the
   4183 short data area pointer.  */
   4184   BFD_RELOC_V850_SDA_15_16_OFFSET,
   4185 
   4186 /* This is a 16 bit offset from the zero data area pointer.  */
   4187   BFD_RELOC_V850_ZDA_16_16_OFFSET,
   4188 
   4189 /* This is a 16 bit offset (of which only 15 bits are used) from the
   4190 zero data area pointer.  */
   4191   BFD_RELOC_V850_ZDA_15_16_OFFSET,
   4192 
   4193 /* This is an 8 bit offset (of which only 6 bits are used) from the
   4194 tiny data area pointer.  */
   4195   BFD_RELOC_V850_TDA_6_8_OFFSET,
   4196 
   4197 /* This is an 8bit offset (of which only 7 bits are used) from the tiny
   4198 data area pointer.  */
   4199   BFD_RELOC_V850_TDA_7_8_OFFSET,
   4200 
   4201 /* This is a 7 bit offset from the tiny data area pointer.  */
   4202   BFD_RELOC_V850_TDA_7_7_OFFSET,
   4203 
   4204 /* This is a 16 bit offset from the tiny data area pointer.  */
   4205   BFD_RELOC_V850_TDA_16_16_OFFSET,
   4206 
   4207 /* This is a 5 bit offset (of which only 4 bits are used) from the tiny
   4208 data area pointer.  */
   4209   BFD_RELOC_V850_TDA_4_5_OFFSET,
   4210 
   4211 /* This is a 4 bit offset from the tiny data area pointer.  */
   4212   BFD_RELOC_V850_TDA_4_4_OFFSET,
   4213 
   4214 /* This is a 16 bit offset from the short data area pointer, with the
   4215 bits placed non-contiguously in the instruction.  */
   4216   BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
   4217 
   4218 /* This is a 16 bit offset from the zero data area pointer, with the
   4219 bits placed non-contiguously in the instruction.  */
   4220   BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
   4221 
   4222 /* This is a 6 bit offset from the call table base pointer.  */
   4223   BFD_RELOC_V850_CALLT_6_7_OFFSET,
   4224 
   4225 /* This is a 16 bit offset from the call table base pointer.  */
   4226   BFD_RELOC_V850_CALLT_16_16_OFFSET,
   4227 
   4228 /* Used for relaxing indirect function calls.  */
   4229   BFD_RELOC_V850_LONGCALL,
   4230 
   4231 /* Used for relaxing indirect jumps.  */
   4232   BFD_RELOC_V850_LONGJUMP,
   4233 
   4234 /* Used to maintain alignment whilst relaxing.  */
   4235   BFD_RELOC_V850_ALIGN,
   4236 
   4237 /* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
   4238 instructions.  */
   4239   BFD_RELOC_V850_LO16_SPLIT_OFFSET,
   4240 
   4241 /* This is a 16-bit reloc.  */
   4242   BFD_RELOC_V850_16_PCREL,
   4243 
   4244 /* This is a 17-bit reloc.  */
   4245   BFD_RELOC_V850_17_PCREL,
   4246 
   4247 /* This is a 23-bit reloc.  */
   4248   BFD_RELOC_V850_23,
   4249 
   4250 /* This is a 32-bit reloc.  */
   4251   BFD_RELOC_V850_32_PCREL,
   4252 
   4253 /* This is a 32-bit reloc.  */
   4254   BFD_RELOC_V850_32_ABS,
   4255 
   4256 /* This is a 16-bit reloc.  */
   4257   BFD_RELOC_V850_16_SPLIT_OFFSET,
   4258 
   4259 /* This is a 16-bit reloc.  */
   4260   BFD_RELOC_V850_16_S1,
   4261 
   4262 /* Low 16 bits. 16 bit shifted by 1.  */
   4263   BFD_RELOC_V850_LO16_S1,
   4264 
   4265 /* This is a 16 bit offset from the call table base pointer.  */
   4266   BFD_RELOC_V850_CALLT_15_16_OFFSET,
   4267 
   4268 /* DSO relocations.  */
   4269   BFD_RELOC_V850_32_GOTPCREL,
   4270 
   4271 /* DSO relocations.  */
   4272   BFD_RELOC_V850_16_GOT,
   4273 
   4274 /* DSO relocations.  */
   4275   BFD_RELOC_V850_32_GOT,
   4276 
   4277 /* DSO relocations.  */
   4278   BFD_RELOC_V850_22_PLT_PCREL,
   4279 
   4280 /* DSO relocations.  */
   4281   BFD_RELOC_V850_32_PLT_PCREL,
   4282 
   4283 /* DSO relocations.  */
   4284   BFD_RELOC_V850_COPY,
   4285 
   4286 /* DSO relocations.  */
   4287   BFD_RELOC_V850_GLOB_DAT,
   4288 
   4289 /* DSO relocations.  */
   4290   BFD_RELOC_V850_JMP_SLOT,
   4291 
   4292 /* DSO relocations.  */
   4293   BFD_RELOC_V850_RELATIVE,
   4294 
   4295 /* DSO relocations.  */
   4296   BFD_RELOC_V850_16_GOTOFF,
   4297 
   4298 /* DSO relocations.  */
   4299   BFD_RELOC_V850_32_GOTOFF,
   4300 
   4301 /* start code.  */
   4302   BFD_RELOC_V850_CODE,
   4303 
   4304 /* start data in text.  */
   4305   BFD_RELOC_V850_DATA,
   4306 
   4307 /* This is a 8bit DP reloc for the tms320c30, where the most
   4308 significant 8 bits of a 24 bit word are placed into the least
   4309 significant 8 bits of the opcode.  */
   4310   BFD_RELOC_TIC30_LDP,
   4311 
   4312 /* This is a 7bit reloc for the tms320c54x, where the least
   4313 significant 7 bits of a 16 bit word are placed into the least
   4314 significant 7 bits of the opcode.  */
   4315   BFD_RELOC_TIC54X_PARTLS7,
   4316 
   4317 /* This is a 9bit DP reloc for the tms320c54x, where the most
   4318 significant 9 bits of a 16 bit word are placed into the least
   4319 significant 9 bits of the opcode.  */
   4320   BFD_RELOC_TIC54X_PARTMS9,
   4321 
   4322 /* This is an extended address 23-bit reloc for the tms320c54x.  */
   4323   BFD_RELOC_TIC54X_23,
   4324 
   4325 /* This is a 16-bit reloc for the tms320c54x, where the least
   4326 significant 16 bits of a 23-bit extended address are placed into
   4327 the opcode.  */
   4328   BFD_RELOC_TIC54X_16_OF_23,
   4329 
   4330 /* This is a reloc for the tms320c54x, where the most
   4331 significant 7 bits of a 23-bit extended address are placed into
   4332 the opcode.  */
   4333   BFD_RELOC_TIC54X_MS7_OF_23,
   4334 
   4335 /* TMS320C6000 relocations.  */
   4336   BFD_RELOC_C6000_PCR_S21,
   4337   BFD_RELOC_C6000_PCR_S12,
   4338   BFD_RELOC_C6000_PCR_S10,
   4339   BFD_RELOC_C6000_PCR_S7,
   4340   BFD_RELOC_C6000_ABS_S16,
   4341   BFD_RELOC_C6000_ABS_L16,
   4342   BFD_RELOC_C6000_ABS_H16,
   4343   BFD_RELOC_C6000_SBR_U15_B,
   4344   BFD_RELOC_C6000_SBR_U15_H,
   4345   BFD_RELOC_C6000_SBR_U15_W,
   4346   BFD_RELOC_C6000_SBR_S16,
   4347   BFD_RELOC_C6000_SBR_L16_B,
   4348   BFD_RELOC_C6000_SBR_L16_H,
   4349   BFD_RELOC_C6000_SBR_L16_W,
   4350   BFD_RELOC_C6000_SBR_H16_B,
   4351   BFD_RELOC_C6000_SBR_H16_H,
   4352   BFD_RELOC_C6000_SBR_H16_W,
   4353   BFD_RELOC_C6000_SBR_GOT_U15_W,
   4354   BFD_RELOC_C6000_SBR_GOT_L16_W,
   4355   BFD_RELOC_C6000_SBR_GOT_H16_W,
   4356   BFD_RELOC_C6000_DSBT_INDEX,
   4357   BFD_RELOC_C6000_PREL31,
   4358   BFD_RELOC_C6000_COPY,
   4359   BFD_RELOC_C6000_JUMP_SLOT,
   4360   BFD_RELOC_C6000_EHTYPE,
   4361   BFD_RELOC_C6000_PCR_H16,
   4362   BFD_RELOC_C6000_PCR_L16,
   4363   BFD_RELOC_C6000_ALIGN,
   4364   BFD_RELOC_C6000_FPHEAD,
   4365   BFD_RELOC_C6000_NOCMP,
   4366 
   4367 /* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
   4368   BFD_RELOC_FR30_48,
   4369 
   4370 /* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
   4371 two sections.  */
   4372   BFD_RELOC_FR30_20,
   4373 
   4374 /* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
   4375 4 bits.  */
   4376   BFD_RELOC_FR30_6_IN_4,
   4377 
   4378 /* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
   4379 into 8 bits.  */
   4380   BFD_RELOC_FR30_8_IN_8,
   4381 
   4382 /* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
   4383 into 8 bits.  */
   4384   BFD_RELOC_FR30_9_IN_8,
   4385 
   4386 /* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
   4387 into 8 bits.  */
   4388   BFD_RELOC_FR30_10_IN_8,
   4389 
   4390 /* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
   4391 short offset into 8 bits.  */
   4392   BFD_RELOC_FR30_9_PCREL,
   4393 
   4394 /* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
   4395 short offset into 11 bits.  */
   4396   BFD_RELOC_FR30_12_PCREL,
   4397 
   4398 /* Motorola Mcore relocations.  */
   4399   BFD_RELOC_MCORE_PCREL_IMM8BY4,
   4400   BFD_RELOC_MCORE_PCREL_IMM11BY2,
   4401   BFD_RELOC_MCORE_PCREL_IMM4BY2,
   4402   BFD_RELOC_MCORE_PCREL_32,
   4403   BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
   4404   BFD_RELOC_MCORE_RVA,
   4405 
   4406 /* Toshiba Media Processor Relocations.  */
   4407   BFD_RELOC_MEP_8,
   4408   BFD_RELOC_MEP_16,
   4409   BFD_RELOC_MEP_32,
   4410   BFD_RELOC_MEP_PCREL8A2,
   4411   BFD_RELOC_MEP_PCREL12A2,
   4412   BFD_RELOC_MEP_PCREL17A2,
   4413   BFD_RELOC_MEP_PCREL24A2,
   4414   BFD_RELOC_MEP_PCABS24A2,
   4415   BFD_RELOC_MEP_LOW16,
   4416   BFD_RELOC_MEP_HI16U,
   4417   BFD_RELOC_MEP_HI16S,
   4418   BFD_RELOC_MEP_GPREL,
   4419   BFD_RELOC_MEP_TPREL,
   4420   BFD_RELOC_MEP_TPREL7,
   4421   BFD_RELOC_MEP_TPREL7A2,
   4422   BFD_RELOC_MEP_TPREL7A4,
   4423   BFD_RELOC_MEP_UIMM24,
   4424   BFD_RELOC_MEP_ADDR24A4,
   4425   BFD_RELOC_MEP_GNU_VTINHERIT,
   4426   BFD_RELOC_MEP_GNU_VTENTRY,
   4427 
   4428 
   4429 /* Imagination Technologies Meta relocations.  */
   4430   BFD_RELOC_METAG_HIADDR16,
   4431   BFD_RELOC_METAG_LOADDR16,
   4432   BFD_RELOC_METAG_RELBRANCH,
   4433   BFD_RELOC_METAG_GETSETOFF,
   4434   BFD_RELOC_METAG_HIOG,
   4435   BFD_RELOC_METAG_LOOG,
   4436   BFD_RELOC_METAG_REL8,
   4437   BFD_RELOC_METAG_REL16,
   4438   BFD_RELOC_METAG_HI16_GOTOFF,
   4439   BFD_RELOC_METAG_LO16_GOTOFF,
   4440   BFD_RELOC_METAG_GETSET_GOTOFF,
   4441   BFD_RELOC_METAG_GETSET_GOT,
   4442   BFD_RELOC_METAG_HI16_GOTPC,
   4443   BFD_RELOC_METAG_LO16_GOTPC,
   4444   BFD_RELOC_METAG_HI16_PLT,
   4445   BFD_RELOC_METAG_LO16_PLT,
   4446   BFD_RELOC_METAG_RELBRANCH_PLT,
   4447   BFD_RELOC_METAG_GOTOFF,
   4448   BFD_RELOC_METAG_PLT,
   4449   BFD_RELOC_METAG_COPY,
   4450   BFD_RELOC_METAG_JMP_SLOT,
   4451   BFD_RELOC_METAG_RELATIVE,
   4452   BFD_RELOC_METAG_GLOB_DAT,
   4453   BFD_RELOC_METAG_TLS_GD,
   4454   BFD_RELOC_METAG_TLS_LDM,
   4455   BFD_RELOC_METAG_TLS_LDO_HI16,
   4456   BFD_RELOC_METAG_TLS_LDO_LO16,
   4457   BFD_RELOC_METAG_TLS_LDO,
   4458   BFD_RELOC_METAG_TLS_IE,
   4459   BFD_RELOC_METAG_TLS_IENONPIC,
   4460   BFD_RELOC_METAG_TLS_IENONPIC_HI16,
   4461   BFD_RELOC_METAG_TLS_IENONPIC_LO16,
   4462   BFD_RELOC_METAG_TLS_TPOFF,
   4463   BFD_RELOC_METAG_TLS_DTPMOD,
   4464   BFD_RELOC_METAG_TLS_DTPOFF,
   4465   BFD_RELOC_METAG_TLS_LE,
   4466   BFD_RELOC_METAG_TLS_LE_HI16,
   4467   BFD_RELOC_METAG_TLS_LE_LO16,
   4468 
   4469 /* These are relocations for the GETA instruction.  */
   4470   BFD_RELOC_MMIX_GETA,
   4471   BFD_RELOC_MMIX_GETA_1,
   4472   BFD_RELOC_MMIX_GETA_2,
   4473   BFD_RELOC_MMIX_GETA_3,
   4474 
   4475 /* These are relocations for a conditional branch instruction.  */
   4476   BFD_RELOC_MMIX_CBRANCH,
   4477   BFD_RELOC_MMIX_CBRANCH_J,
   4478   BFD_RELOC_MMIX_CBRANCH_1,
   4479   BFD_RELOC_MMIX_CBRANCH_2,
   4480   BFD_RELOC_MMIX_CBRANCH_3,
   4481 
   4482 /* These are relocations for the PUSHJ instruction.  */
   4483   BFD_RELOC_MMIX_PUSHJ,
   4484   BFD_RELOC_MMIX_PUSHJ_1,
   4485   BFD_RELOC_MMIX_PUSHJ_2,
   4486   BFD_RELOC_MMIX_PUSHJ_3,
   4487   BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
   4488 
   4489 /* These are relocations for the JMP instruction.  */
   4490   BFD_RELOC_MMIX_JMP,
   4491   BFD_RELOC_MMIX_JMP_1,
   4492   BFD_RELOC_MMIX_JMP_2,
   4493   BFD_RELOC_MMIX_JMP_3,
   4494 
   4495 /* This is a relocation for a relative address as in a GETA instruction or
   4496 a branch.  */
   4497   BFD_RELOC_MMIX_ADDR19,
   4498 
   4499 /* This is a relocation for a relative address as in a JMP instruction.  */
   4500   BFD_RELOC_MMIX_ADDR27,
   4501 
   4502 /* This is a relocation for an instruction field that may be a general
   4503 register or a value 0..255.  */
   4504   BFD_RELOC_MMIX_REG_OR_BYTE,
   4505 
   4506 /* This is a relocation for an instruction field that may be a general
   4507 register.  */
   4508   BFD_RELOC_MMIX_REG,
   4509 
   4510 /* This is a relocation for two instruction fields holding a register and
   4511 an offset, the equivalent of the relocation.  */
   4512   BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
   4513 
   4514 /* This relocation is an assertion that the expression is not allocated as
   4515 a global register.  It does not modify contents.  */
   4516   BFD_RELOC_MMIX_LOCAL,
   4517 
   4518 /* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
   4519 short offset into 7 bits.  */
   4520   BFD_RELOC_AVR_7_PCREL,
   4521 
   4522 /* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
   4523 short offset into 12 bits.  */
   4524   BFD_RELOC_AVR_13_PCREL,
   4525 
   4526 /* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
   4527 program memory address) into 16 bits.  */
   4528   BFD_RELOC_AVR_16_PM,
   4529 
   4530 /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
   4531 data memory address) into 8 bit immediate value of LDI insn.  */
   4532   BFD_RELOC_AVR_LO8_LDI,
   4533 
   4534 /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
   4535 of data memory address) into 8 bit immediate value of LDI insn.  */
   4536   BFD_RELOC_AVR_HI8_LDI,
   4537 
   4538 /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
   4539 of program memory address) into 8 bit immediate value of LDI insn.  */
   4540   BFD_RELOC_AVR_HH8_LDI,
   4541 
   4542 /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
   4543 of 32 bit value) into 8 bit immediate value of LDI insn.  */
   4544   BFD_RELOC_AVR_MS8_LDI,
   4545 
   4546 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4547 (usually data memory address) into 8 bit immediate value of SUBI insn.  */
   4548   BFD_RELOC_AVR_LO8_LDI_NEG,
   4549 
   4550 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4551 (high 8 bit of data memory address) into 8 bit immediate value of
   4552 SUBI insn.  */
   4553   BFD_RELOC_AVR_HI8_LDI_NEG,
   4554 
   4555 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4556 (most high 8 bit of program memory address) into 8 bit immediate value
   4557 of LDI or SUBI insn.  */
   4558   BFD_RELOC_AVR_HH8_LDI_NEG,
   4559 
   4560 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
   4561 of 32 bit value) into 8 bit immediate value of LDI insn.  */
   4562   BFD_RELOC_AVR_MS8_LDI_NEG,
   4563 
   4564 /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
   4565 command address) into 8 bit immediate value of LDI insn.  */
   4566   BFD_RELOC_AVR_LO8_LDI_PM,
   4567 
   4568 /* This is a 16 bit reloc for the AVR that stores 8 bit value
   4569 (command address) into 8 bit immediate value of LDI insn. If the address
   4570 is beyond the 128k boundary, the linker inserts a jump stub for this reloc
   4571 in the lower 128k.  */
   4572   BFD_RELOC_AVR_LO8_LDI_GS,
   4573 
   4574 /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
   4575 of command address) into 8 bit immediate value of LDI insn.  */
   4576   BFD_RELOC_AVR_HI8_LDI_PM,
   4577 
   4578 /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
   4579 of command address) into 8 bit immediate value of LDI insn.  If the address
   4580 is beyond the 128k boundary, the linker inserts a jump stub for this reloc
   4581 below 128k.  */
   4582   BFD_RELOC_AVR_HI8_LDI_GS,
   4583 
   4584 /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
   4585 of command address) into 8 bit immediate value of LDI insn.  */
   4586   BFD_RELOC_AVR_HH8_LDI_PM,
   4587 
   4588 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4589 (usually command address) into 8 bit immediate value of SUBI insn.  */
   4590   BFD_RELOC_AVR_LO8_LDI_PM_NEG,
   4591 
   4592 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4593 (high 8 bit of 16 bit command address) into 8 bit immediate value
   4594 of SUBI insn.  */
   4595   BFD_RELOC_AVR_HI8_LDI_PM_NEG,
   4596 
   4597 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
   4598 (high 6 bit of 22 bit command address) into 8 bit immediate
   4599 value of SUBI insn.  */
   4600   BFD_RELOC_AVR_HH8_LDI_PM_NEG,
   4601 
   4602 /* This is a 32 bit reloc for the AVR that stores 23 bit value
   4603 into 22 bits.  */
   4604   BFD_RELOC_AVR_CALL,
   4605 
   4606 /* This is a 16 bit reloc for the AVR that stores all needed bits
   4607 for absolute addressing with ldi with overflow check to linktime  */
   4608   BFD_RELOC_AVR_LDI,
   4609 
   4610 /* This is a 6 bit reloc for the AVR that stores offset for ldd/std
   4611 instructions  */
   4612   BFD_RELOC_AVR_6,
   4613 
   4614 /* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
   4615 instructions  */
   4616   BFD_RELOC_AVR_6_ADIW,
   4617 
   4618 /* This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
   4619 in .byte lo8(symbol)  */
   4620   BFD_RELOC_AVR_8_LO,
   4621 
   4622 /* This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
   4623 in .byte hi8(symbol)  */
   4624   BFD_RELOC_AVR_8_HI,
   4625 
   4626 /* This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
   4627 in .byte hlo8(symbol)  */
   4628   BFD_RELOC_AVR_8_HLO,
   4629 
   4630 /* AVR relocations to mark the difference of two local symbols.
   4631 These are only needed to support linker relaxation and can be ignored
   4632 when not relaxing.  The field is set to the value of the difference
   4633 assuming no relaxation.  The relocation encodes the position of the
   4634 second symbol so the linker can determine whether to adjust the field
   4635 value.  */
   4636   BFD_RELOC_AVR_DIFF8,
   4637   BFD_RELOC_AVR_DIFF16,
   4638   BFD_RELOC_AVR_DIFF32,
   4639 
   4640 /* This is a 7 bit reloc for the AVR that stores SRAM address for 16bit
   4641 lds and sts instructions supported only tiny core.  */
   4642   BFD_RELOC_AVR_LDS_STS_16,
   4643 
   4644 /* This is a 6 bit reloc for the AVR that stores an I/O register
   4645 number for the IN and OUT instructions  */
   4646   BFD_RELOC_AVR_PORT6,
   4647 
   4648 /* This is a 5 bit reloc for the AVR that stores an I/O register
   4649 number for the SBIC, SBIS, SBI and CBI instructions  */
   4650   BFD_RELOC_AVR_PORT5,
   4651 
   4652 /* Renesas RL78 Relocations.  */
   4653   BFD_RELOC_RL78_NEG8,
   4654   BFD_RELOC_RL78_NEG16,
   4655   BFD_RELOC_RL78_NEG24,
   4656   BFD_RELOC_RL78_NEG32,
   4657   BFD_RELOC_RL78_16_OP,
   4658   BFD_RELOC_RL78_24_OP,
   4659   BFD_RELOC_RL78_32_OP,
   4660   BFD_RELOC_RL78_8U,
   4661   BFD_RELOC_RL78_16U,
   4662   BFD_RELOC_RL78_24U,
   4663   BFD_RELOC_RL78_DIR3U_PCREL,
   4664   BFD_RELOC_RL78_DIFF,
   4665   BFD_RELOC_RL78_GPRELB,
   4666   BFD_RELOC_RL78_GPRELW,
   4667   BFD_RELOC_RL78_GPRELL,
   4668   BFD_RELOC_RL78_SYM,
   4669   BFD_RELOC_RL78_OP_SUBTRACT,
   4670   BFD_RELOC_RL78_OP_NEG,
   4671   BFD_RELOC_RL78_OP_AND,
   4672   BFD_RELOC_RL78_OP_SHRA,
   4673   BFD_RELOC_RL78_ABS8,
   4674   BFD_RELOC_RL78_ABS16,
   4675   BFD_RELOC_RL78_ABS16_REV,
   4676   BFD_RELOC_RL78_ABS32,
   4677   BFD_RELOC_RL78_ABS32_REV,
   4678   BFD_RELOC_RL78_ABS16U,
   4679   BFD_RELOC_RL78_ABS16UW,
   4680   BFD_RELOC_RL78_ABS16UL,
   4681   BFD_RELOC_RL78_RELAX,
   4682   BFD_RELOC_RL78_HI16,
   4683   BFD_RELOC_RL78_HI8,
   4684   BFD_RELOC_RL78_LO16,
   4685   BFD_RELOC_RL78_CODE,
   4686   BFD_RELOC_RL78_SADDR,
   4687 
   4688 /* Renesas RX Relocations.  */
   4689   BFD_RELOC_RX_NEG8,
   4690   BFD_RELOC_RX_NEG16,
   4691   BFD_RELOC_RX_NEG24,
   4692   BFD_RELOC_RX_NEG32,
   4693   BFD_RELOC_RX_16_OP,
   4694   BFD_RELOC_RX_24_OP,
   4695   BFD_RELOC_RX_32_OP,
   4696   BFD_RELOC_RX_8U,
   4697   BFD_RELOC_RX_16U,
   4698   BFD_RELOC_RX_24U,
   4699   BFD_RELOC_RX_DIR3U_PCREL,
   4700   BFD_RELOC_RX_DIFF,
   4701   BFD_RELOC_RX_GPRELB,
   4702   BFD_RELOC_RX_GPRELW,
   4703   BFD_RELOC_RX_GPRELL,
   4704   BFD_RELOC_RX_SYM,
   4705   BFD_RELOC_RX_OP_SUBTRACT,
   4706   BFD_RELOC_RX_OP_NEG,
   4707   BFD_RELOC_RX_ABS8,
   4708   BFD_RELOC_RX_ABS16,
   4709   BFD_RELOC_RX_ABS16_REV,
   4710   BFD_RELOC_RX_ABS32,
   4711   BFD_RELOC_RX_ABS32_REV,
   4712   BFD_RELOC_RX_ABS16U,
   4713   BFD_RELOC_RX_ABS16UW,
   4714   BFD_RELOC_RX_ABS16UL,
   4715   BFD_RELOC_RX_RELAX,
   4716 
   4717 /* Direct 12 bit.  */
   4718   BFD_RELOC_390_12,
   4719 
   4720 /* 12 bit GOT offset.  */
   4721   BFD_RELOC_390_GOT12,
   4722 
   4723 /* 32 bit PC relative PLT address.  */
   4724   BFD_RELOC_390_PLT32,
   4725 
   4726 /* Copy symbol at runtime.  */
   4727   BFD_RELOC_390_COPY,
   4728 
   4729 /* Create GOT entry.  */
   4730   BFD_RELOC_390_GLOB_DAT,
   4731 
   4732 /* Create PLT entry.  */
   4733   BFD_RELOC_390_JMP_SLOT,
   4734 
   4735 /* Adjust by program base.  */
   4736   BFD_RELOC_390_RELATIVE,
   4737 
   4738 /* 32 bit PC relative offset to GOT.  */
   4739   BFD_RELOC_390_GOTPC,
   4740 
   4741 /* 16 bit GOT offset.  */
   4742   BFD_RELOC_390_GOT16,
   4743 
   4744 /* PC relative 12 bit shifted by 1.  */
   4745   BFD_RELOC_390_PC12DBL,
   4746 
   4747 /* 12 bit PC rel. PLT shifted by 1.  */
   4748   BFD_RELOC_390_PLT12DBL,
   4749 
   4750 /* PC relative 16 bit shifted by 1.  */
   4751   BFD_RELOC_390_PC16DBL,
   4752 
   4753 /* 16 bit PC rel. PLT shifted by 1.  */
   4754   BFD_RELOC_390_PLT16DBL,
   4755 
   4756 /* PC relative 24 bit shifted by 1.  */
   4757   BFD_RELOC_390_PC24DBL,
   4758 
   4759 /* 24 bit PC rel. PLT shifted by 1.  */
   4760   BFD_RELOC_390_PLT24DBL,
   4761 
   4762 /* PC relative 32 bit shifted by 1.  */
   4763   BFD_RELOC_390_PC32DBL,
   4764 
   4765 /* 32 bit PC rel. PLT shifted by 1.  */
   4766   BFD_RELOC_390_PLT32DBL,
   4767 
   4768 /* 32 bit PC rel. GOT shifted by 1.  */
   4769   BFD_RELOC_390_GOTPCDBL,
   4770 
   4771 /* 64 bit GOT offset.  */
   4772   BFD_RELOC_390_GOT64,
   4773 
   4774 /* 64 bit PC relative PLT address.  */
   4775   BFD_RELOC_390_PLT64,
   4776 
   4777 /* 32 bit rel. offset to GOT entry.  */
   4778   BFD_RELOC_390_GOTENT,
   4779 
   4780 /* 64 bit offset to GOT.  */
   4781   BFD_RELOC_390_GOTOFF64,
   4782 
   4783 /* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
   4784   BFD_RELOC_390_GOTPLT12,
   4785 
   4786 /* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
   4787   BFD_RELOC_390_GOTPLT16,
   4788 
   4789 /* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
   4790   BFD_RELOC_390_GOTPLT32,
   4791 
   4792 /* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
   4793   BFD_RELOC_390_GOTPLT64,
   4794 
   4795 /* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
   4796   BFD_RELOC_390_GOTPLTENT,
   4797 
   4798 /* 16-bit rel. offset from the GOT to a PLT entry.  */
   4799   BFD_RELOC_390_PLTOFF16,
   4800 
   4801 /* 32-bit rel. offset from the GOT to a PLT entry.  */
   4802   BFD_RELOC_390_PLTOFF32,
   4803 
   4804 /* 64-bit rel. offset from the GOT to a PLT entry.  */
   4805   BFD_RELOC_390_PLTOFF64,
   4806 
   4807 /* s390 tls relocations.  */
   4808   BFD_RELOC_390_TLS_LOAD,
   4809   BFD_RELOC_390_TLS_GDCALL,
   4810   BFD_RELOC_390_TLS_LDCALL,
   4811   BFD_RELOC_390_TLS_GD32,
   4812   BFD_RELOC_390_TLS_GD64,
   4813   BFD_RELOC_390_TLS_GOTIE12,
   4814   BFD_RELOC_390_TLS_GOTIE32,
   4815   BFD_RELOC_390_TLS_GOTIE64,
   4816   BFD_RELOC_390_TLS_LDM32,
   4817   BFD_RELOC_390_TLS_LDM64,
   4818   BFD_RELOC_390_TLS_IE32,
   4819   BFD_RELOC_390_TLS_IE64,
   4820   BFD_RELOC_390_TLS_IEENT,
   4821   BFD_RELOC_390_TLS_LE32,
   4822   BFD_RELOC_390_TLS_LE64,
   4823   BFD_RELOC_390_TLS_LDO32,
   4824   BFD_RELOC_390_TLS_LDO64,
   4825   BFD_RELOC_390_TLS_DTPMOD,
   4826   BFD_RELOC_390_TLS_DTPOFF,
   4827   BFD_RELOC_390_TLS_TPOFF,
   4828 
   4829 /* Long displacement extension.  */
   4830   BFD_RELOC_390_20,
   4831   BFD_RELOC_390_GOT20,
   4832   BFD_RELOC_390_GOTPLT20,
   4833   BFD_RELOC_390_TLS_GOTIE20,
   4834 
   4835 /* STT_GNU_IFUNC relocation.  */
   4836   BFD_RELOC_390_IRELATIVE,
   4837 
   4838 /* Score relocations
   4839 Low 16 bit for load/store  */
   4840   BFD_RELOC_SCORE_GPREL15,
   4841 
   4842 /* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
   4843   BFD_RELOC_SCORE_DUMMY2,
   4844   BFD_RELOC_SCORE_JMP,
   4845 
   4846 /* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
   4847   BFD_RELOC_SCORE_BRANCH,
   4848 
   4849 /* This is a 32-bit reloc for 48-bit instructions.  */
   4850   BFD_RELOC_SCORE_IMM30,
   4851 
   4852 /* This is a 32-bit reloc for 48-bit instructions.  */
   4853   BFD_RELOC_SCORE_IMM32,
   4854 
   4855 /* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
   4856   BFD_RELOC_SCORE16_JMP,
   4857 
   4858 /* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
   4859   BFD_RELOC_SCORE16_BRANCH,
   4860 
   4861 /* This is a 9-bit reloc with the right 1 bit assumed to be 0  */
   4862   BFD_RELOC_SCORE_BCMP,
   4863 
   4864 /* Undocumented Score relocs  */
   4865   BFD_RELOC_SCORE_GOT15,
   4866   BFD_RELOC_SCORE_GOT_LO16,
   4867   BFD_RELOC_SCORE_CALL15,
   4868   BFD_RELOC_SCORE_DUMMY_HI16,
   4869 
   4870 /* Scenix IP2K - 9-bit register number / data address  */
   4871   BFD_RELOC_IP2K_FR9,
   4872 
   4873 /* Scenix IP2K - 4-bit register/data bank number  */
   4874   BFD_RELOC_IP2K_BANK,
   4875 
   4876 /* Scenix IP2K - low 13 bits of instruction word address  */
   4877   BFD_RELOC_IP2K_ADDR16CJP,
   4878 
   4879 /* Scenix IP2K - high 3 bits of instruction word address  */
   4880   BFD_RELOC_IP2K_PAGE3,
   4881 
   4882 /* Scenix IP2K - ext/low/high 8 bits of data address  */
   4883   BFD_RELOC_IP2K_LO8DATA,
   4884   BFD_RELOC_IP2K_HI8DATA,
   4885   BFD_RELOC_IP2K_EX8DATA,
   4886 
   4887 /* Scenix IP2K - low/high 8 bits of instruction word address  */
   4888   BFD_RELOC_IP2K_LO8INSN,
   4889   BFD_RELOC_IP2K_HI8INSN,
   4890 
   4891 /* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
   4892   BFD_RELOC_IP2K_PC_SKIP,
   4893 
   4894 /* Scenix IP2K - 16 bit word address in text section.  */
   4895   BFD_RELOC_IP2K_TEXT,
   4896 
   4897 /* Scenix IP2K - 7-bit sp or dp offset  */
   4898   BFD_RELOC_IP2K_FR_OFFSET,
   4899 
   4900 /* Scenix VPE4K coprocessor - data/insn-space addressing  */
   4901   BFD_RELOC_VPE4KMATH_DATA,
   4902   BFD_RELOC_VPE4KMATH_INSN,
   4903 
   4904 /* These two relocations are used by the linker to determine which of
   4905 the entries in a C++ virtual function table are actually used.  When
   4906 the --gc-sections option is given, the linker will zero out the entries
   4907 that are not used, so that the code for those functions need not be
   4908 included in the output.
   4909 
   4910 VTABLE_INHERIT is a zero-space relocation used to describe to the
   4911 linker the inheritance tree of a C++ virtual function table.  The
   4912 relocation's symbol should be the parent class' vtable, and the
   4913 relocation should be located at the child vtable.
   4914 
   4915 VTABLE_ENTRY is a zero-space relocation that describes the use of a
   4916 virtual function table entry.  The reloc's symbol should refer to the
   4917 table of the class mentioned in the code.  Off of that base, an offset
   4918 describes the entry that is being used.  For Rela hosts, this offset
   4919 is stored in the reloc's addend.  For Rel hosts, we are forced to put
   4920 this offset in the reloc's section offset.  */
   4921   BFD_RELOC_VTABLE_INHERIT,
   4922   BFD_RELOC_VTABLE_ENTRY,
   4923 
   4924 /* Intel IA64 Relocations.  */
   4925   BFD_RELOC_IA64_IMM14,
   4926   BFD_RELOC_IA64_IMM22,
   4927   BFD_RELOC_IA64_IMM64,
   4928   BFD_RELOC_IA64_DIR32MSB,
   4929   BFD_RELOC_IA64_DIR32LSB,
   4930   BFD_RELOC_IA64_DIR64MSB,
   4931   BFD_RELOC_IA64_DIR64LSB,
   4932   BFD_RELOC_IA64_GPREL22,
   4933   BFD_RELOC_IA64_GPREL64I,
   4934   BFD_RELOC_IA64_GPREL32MSB,
   4935   BFD_RELOC_IA64_GPREL32LSB,
   4936   BFD_RELOC_IA64_GPREL64MSB,
   4937   BFD_RELOC_IA64_GPREL64LSB,
   4938   BFD_RELOC_IA64_LTOFF22,
   4939   BFD_RELOC_IA64_LTOFF64I,
   4940   BFD_RELOC_IA64_PLTOFF22,
   4941   BFD_RELOC_IA64_PLTOFF64I,
   4942   BFD_RELOC_IA64_PLTOFF64MSB,
   4943   BFD_RELOC_IA64_PLTOFF64LSB,
   4944   BFD_RELOC_IA64_FPTR64I,
   4945   BFD_RELOC_IA64_FPTR32MSB,
   4946   BFD_RELOC_IA64_FPTR32LSB,
   4947   BFD_RELOC_IA64_FPTR64MSB,
   4948   BFD_RELOC_IA64_FPTR64LSB,
   4949   BFD_RELOC_IA64_PCREL21B,
   4950   BFD_RELOC_IA64_PCREL21BI,
   4951   BFD_RELOC_IA64_PCREL21M,
   4952   BFD_RELOC_IA64_PCREL21F,
   4953   BFD_RELOC_IA64_PCREL22,
   4954   BFD_RELOC_IA64_PCREL60B,
   4955   BFD_RELOC_IA64_PCREL64I,
   4956   BFD_RELOC_IA64_PCREL32MSB,
   4957   BFD_RELOC_IA64_PCREL32LSB,
   4958   BFD_RELOC_IA64_PCREL64MSB,
   4959   BFD_RELOC_IA64_PCREL64LSB,
   4960   BFD_RELOC_IA64_LTOFF_FPTR22,
   4961   BFD_RELOC_IA64_LTOFF_FPTR64I,
   4962   BFD_RELOC_IA64_LTOFF_FPTR32MSB,
   4963   BFD_RELOC_IA64_LTOFF_FPTR32LSB,
   4964   BFD_RELOC_IA64_LTOFF_FPTR64MSB,
   4965   BFD_RELOC_IA64_LTOFF_FPTR64LSB,
   4966   BFD_RELOC_IA64_SEGREL32MSB,
   4967   BFD_RELOC_IA64_SEGREL32LSB,
   4968   BFD_RELOC_IA64_SEGREL64MSB,
   4969   BFD_RELOC_IA64_SEGREL64LSB,
   4970   BFD_RELOC_IA64_SECREL32MSB,
   4971   BFD_RELOC_IA64_SECREL32LSB,
   4972   BFD_RELOC_IA64_SECREL64MSB,
   4973   BFD_RELOC_IA64_SECREL64LSB,
   4974   BFD_RELOC_IA64_REL32MSB,
   4975   BFD_RELOC_IA64_REL32LSB,
   4976   BFD_RELOC_IA64_REL64MSB,
   4977   BFD_RELOC_IA64_REL64LSB,
   4978   BFD_RELOC_IA64_LTV32MSB,
   4979   BFD_RELOC_IA64_LTV32LSB,
   4980   BFD_RELOC_IA64_LTV64MSB,
   4981   BFD_RELOC_IA64_LTV64LSB,
   4982   BFD_RELOC_IA64_IPLTMSB,
   4983   BFD_RELOC_IA64_IPLTLSB,
   4984   BFD_RELOC_IA64_COPY,
   4985   BFD_RELOC_IA64_LTOFF22X,
   4986   BFD_RELOC_IA64_LDXMOV,
   4987   BFD_RELOC_IA64_TPREL14,
   4988   BFD_RELOC_IA64_TPREL22,
   4989   BFD_RELOC_IA64_TPREL64I,
   4990   BFD_RELOC_IA64_TPREL64MSB,
   4991   BFD_RELOC_IA64_TPREL64LSB,
   4992   BFD_RELOC_IA64_LTOFF_TPREL22,
   4993   BFD_RELOC_IA64_DTPMOD64MSB,
   4994   BFD_RELOC_IA64_DTPMOD64LSB,
   4995   BFD_RELOC_IA64_LTOFF_DTPMOD22,
   4996   BFD_RELOC_IA64_DTPREL14,
   4997   BFD_RELOC_IA64_DTPREL22,
   4998   BFD_RELOC_IA64_DTPREL64I,
   4999   BFD_RELOC_IA64_DTPREL32MSB,
   5000   BFD_RELOC_IA64_DTPREL32LSB,
   5001   BFD_RELOC_IA64_DTPREL64MSB,
   5002   BFD_RELOC_IA64_DTPREL64LSB,
   5003   BFD_RELOC_IA64_LTOFF_DTPREL22,
   5004 
   5005 /* Motorola 68HC11 reloc.
   5006 This is the 8 bit high part of an absolute address.  */
   5007   BFD_RELOC_M68HC11_HI8,
   5008 
   5009 /* Motorola 68HC11 reloc.
   5010 This is the 8 bit low part of an absolute address.  */
   5011   BFD_RELOC_M68HC11_LO8,
   5012 
   5013 /* Motorola 68HC11 reloc.
   5014 This is the 3 bit of a value.  */
   5015   BFD_RELOC_M68HC11_3B,
   5016 
   5017 /* Motorola 68HC11 reloc.
   5018 This reloc marks the beginning of a jump/call instruction.
   5019 It is used for linker relaxation to correctly identify beginning
   5020 of instruction and change some branches to use PC-relative
   5021 addressing mode.  */
   5022   BFD_RELOC_M68HC11_RL_JUMP,
   5023 
   5024 /* Motorola 68HC11 reloc.
   5025 This reloc marks a group of several instructions that gcc generates
   5026 and for which the linker relaxation pass can modify and/or remove
   5027 some of them.  */
   5028   BFD_RELOC_M68HC11_RL_GROUP,
   5029 
   5030 /* Motorola 68HC11 reloc.
   5031 This is the 16-bit lower part of an address.  It is used for 'call'
   5032 instruction to specify the symbol address without any special
   5033 transformation (due to memory bank window).  */
   5034   BFD_RELOC_M68HC11_LO16,
   5035 
   5036 /* Motorola 68HC11 reloc.
   5037 This is a 8-bit reloc that specifies the page number of an address.
   5038 It is used by 'call' instruction to specify the page number of
   5039 the symbol.  */
   5040   BFD_RELOC_M68HC11_PAGE,
   5041 
   5042 /* Motorola 68HC11 reloc.
   5043 This is a 24-bit reloc that represents the address with a 16-bit
   5044 value and a 8-bit page number.  The symbol address is transformed
   5045 to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
   5046   BFD_RELOC_M68HC11_24,
   5047 
   5048 /* Motorola 68HC12 reloc.
   5049 This is the 5 bits of a value.  */
   5050   BFD_RELOC_M68HC12_5B,
   5051 
   5052 /* Freescale XGATE reloc.
   5053 This reloc marks the beginning of a bra/jal instruction.  */
   5054   BFD_RELOC_XGATE_RL_JUMP,
   5055 
   5056 /* Freescale XGATE reloc.
   5057 This reloc marks a group of several instructions that gcc generates
   5058 and for which the linker relaxation pass can modify and/or remove
   5059 some of them.  */
   5060   BFD_RELOC_XGATE_RL_GROUP,
   5061 
   5062 /* Freescale XGATE reloc.
   5063 This is the 16-bit lower part of an address.  It is used for the '16-bit'
   5064 instructions.  */
   5065   BFD_RELOC_XGATE_LO16,
   5066 
   5067 /* Freescale XGATE reloc.  */
   5068   BFD_RELOC_XGATE_GPAGE,
   5069 
   5070 /* Freescale XGATE reloc.  */
   5071   BFD_RELOC_XGATE_24,
   5072 
   5073 /* Freescale XGATE reloc.
   5074 This is a 9-bit pc-relative reloc.  */
   5075   BFD_RELOC_XGATE_PCREL_9,
   5076 
   5077 /* Freescale XGATE reloc.
   5078 This is a 10-bit pc-relative reloc.  */
   5079   BFD_RELOC_XGATE_PCREL_10,
   5080 
   5081 /* Freescale XGATE reloc.
   5082 This is the 16-bit lower part of an address.  It is used for the '16-bit'
   5083 instructions.  */
   5084   BFD_RELOC_XGATE_IMM8_LO,
   5085 
   5086 /* Freescale XGATE reloc.
   5087 This is the 16-bit higher part of an address.  It is used for the '16-bit'
   5088 instructions.  */
   5089   BFD_RELOC_XGATE_IMM8_HI,
   5090 
   5091 /* Freescale XGATE reloc.
   5092 This is a 3-bit pc-relative reloc.  */
   5093   BFD_RELOC_XGATE_IMM3,
   5094 
   5095 /* Freescale XGATE reloc.
   5096 This is a 4-bit pc-relative reloc.  */
   5097   BFD_RELOC_XGATE_IMM4,
   5098 
   5099 /* Freescale XGATE reloc.
   5100 This is a 5-bit pc-relative reloc.  */
   5101   BFD_RELOC_XGATE_IMM5,
   5102 
   5103 /* Motorola 68HC12 reloc.
   5104 This is the 9 bits of a value.  */
   5105   BFD_RELOC_M68HC12_9B,
   5106 
   5107 /* Motorola 68HC12 reloc.
   5108 This is the 16 bits of a value.  */
   5109   BFD_RELOC_M68HC12_16B,
   5110 
   5111 /* Motorola 68HC12/XGATE reloc.
   5112 This is a PCREL9 branch.  */
   5113   BFD_RELOC_M68HC12_9_PCREL,
   5114 
   5115 /* Motorola 68HC12/XGATE reloc.
   5116 This is a PCREL10 branch.  */
   5117   BFD_RELOC_M68HC12_10_PCREL,
   5118 
   5119 /* Motorola 68HC12/XGATE reloc.
   5120 This is the 8 bit low part of an absolute address and immediately precedes
   5121 a matching HI8XG part.  */
   5122   BFD_RELOC_M68HC12_LO8XG,
   5123 
   5124 /* Motorola 68HC12/XGATE reloc.
   5125 This is the 8 bit high part of an absolute address and immediately follows
   5126 a matching LO8XG part.  */
   5127   BFD_RELOC_M68HC12_HI8XG,
   5128 
   5129 /* NS CR16C Relocations.  */
   5130   BFD_RELOC_16C_NUM08,
   5131   BFD_RELOC_16C_NUM08_C,
   5132   BFD_RELOC_16C_NUM16,
   5133   BFD_RELOC_16C_NUM16_C,
   5134   BFD_RELOC_16C_NUM32,
   5135   BFD_RELOC_16C_NUM32_C,
   5136   BFD_RELOC_16C_DISP04,
   5137   BFD_RELOC_16C_DISP04_C,
   5138   BFD_RELOC_16C_DISP08,
   5139   BFD_RELOC_16C_DISP08_C,
   5140   BFD_RELOC_16C_DISP16,
   5141   BFD_RELOC_16C_DISP16_C,
   5142   BFD_RELOC_16C_DISP24,
   5143   BFD_RELOC_16C_DISP24_C,
   5144   BFD_RELOC_16C_DISP24a,
   5145   BFD_RELOC_16C_DISP24a_C,
   5146   BFD_RELOC_16C_REG04,
   5147   BFD_RELOC_16C_REG04_C,
   5148   BFD_RELOC_16C_REG04a,
   5149   BFD_RELOC_16C_REG04a_C,
   5150   BFD_RELOC_16C_REG14,
   5151   BFD_RELOC_16C_REG14_C,
   5152   BFD_RELOC_16C_REG16,
   5153   BFD_RELOC_16C_REG16_C,
   5154   BFD_RELOC_16C_REG20,
   5155   BFD_RELOC_16C_REG20_C,
   5156   BFD_RELOC_16C_ABS20,
   5157   BFD_RELOC_16C_ABS20_C,
   5158   BFD_RELOC_16C_ABS24,
   5159   BFD_RELOC_16C_ABS24_C,
   5160   BFD_RELOC_16C_IMM04,
   5161   BFD_RELOC_16C_IMM04_C,
   5162   BFD_RELOC_16C_IMM16,
   5163   BFD_RELOC_16C_IMM16_C,
   5164   BFD_RELOC_16C_IMM20,
   5165   BFD_RELOC_16C_IMM20_C,
   5166   BFD_RELOC_16C_IMM24,
   5167   BFD_RELOC_16C_IMM24_C,
   5168   BFD_RELOC_16C_IMM32,
   5169   BFD_RELOC_16C_IMM32_C,
   5170 
   5171 /* NS CR16 Relocations.  */
   5172   BFD_RELOC_CR16_NUM8,
   5173   BFD_RELOC_CR16_NUM16,
   5174   BFD_RELOC_CR16_NUM32,
   5175   BFD_RELOC_CR16_NUM32a,
   5176   BFD_RELOC_CR16_REGREL0,
   5177   BFD_RELOC_CR16_REGREL4,
   5178   BFD_RELOC_CR16_REGREL4a,
   5179   BFD_RELOC_CR16_REGREL14,
   5180   BFD_RELOC_CR16_REGREL14a,
   5181   BFD_RELOC_CR16_REGREL16,
   5182   BFD_RELOC_CR16_REGREL20,
   5183   BFD_RELOC_CR16_REGREL20a,
   5184   BFD_RELOC_CR16_ABS20,
   5185   BFD_RELOC_CR16_ABS24,
   5186   BFD_RELOC_CR16_IMM4,
   5187   BFD_RELOC_CR16_IMM8,
   5188   BFD_RELOC_CR16_IMM16,
   5189   BFD_RELOC_CR16_IMM20,
   5190   BFD_RELOC_CR16_IMM24,
   5191   BFD_RELOC_CR16_IMM32,
   5192   BFD_RELOC_CR16_IMM32a,
   5193   BFD_RELOC_CR16_DISP4,
   5194   BFD_RELOC_CR16_DISP8,
   5195   BFD_RELOC_CR16_DISP16,
   5196   BFD_RELOC_CR16_DISP20,
   5197   BFD_RELOC_CR16_DISP24,
   5198   BFD_RELOC_CR16_DISP24a,
   5199   BFD_RELOC_CR16_SWITCH8,
   5200   BFD_RELOC_CR16_SWITCH16,
   5201   BFD_RELOC_CR16_SWITCH32,
   5202   BFD_RELOC_CR16_GOT_REGREL20,
   5203   BFD_RELOC_CR16_GOTC_REGREL20,
   5204   BFD_RELOC_CR16_GLOB_DAT,
   5205 
   5206 /* NS CRX Relocations.  */
   5207   BFD_RELOC_CRX_REL4,
   5208   BFD_RELOC_CRX_REL8,
   5209   BFD_RELOC_CRX_REL8_CMP,
   5210   BFD_RELOC_CRX_REL16,
   5211   BFD_RELOC_CRX_REL24,
   5212   BFD_RELOC_CRX_REL32,
   5213   BFD_RELOC_CRX_REGREL12,
   5214   BFD_RELOC_CRX_REGREL22,
   5215   BFD_RELOC_CRX_REGREL28,
   5216   BFD_RELOC_CRX_REGREL32,
   5217   BFD_RELOC_CRX_ABS16,
   5218   BFD_RELOC_CRX_ABS32,
   5219   BFD_RELOC_CRX_NUM8,
   5220   BFD_RELOC_CRX_NUM16,
   5221   BFD_RELOC_CRX_NUM32,
   5222   BFD_RELOC_CRX_IMM16,
   5223   BFD_RELOC_CRX_IMM32,
   5224   BFD_RELOC_CRX_SWITCH8,
   5225   BFD_RELOC_CRX_SWITCH16,
   5226   BFD_RELOC_CRX_SWITCH32,
   5227 
   5228 /* These relocs are only used within the CRIS assembler.  They are not
   5229 (at present) written to any object files.  */
   5230   BFD_RELOC_CRIS_BDISP8,
   5231   BFD_RELOC_CRIS_UNSIGNED_5,
   5232   BFD_RELOC_CRIS_SIGNED_6,
   5233   BFD_RELOC_CRIS_UNSIGNED_6,
   5234   BFD_RELOC_CRIS_SIGNED_8,
   5235   BFD_RELOC_CRIS_UNSIGNED_8,
   5236   BFD_RELOC_CRIS_SIGNED_16,
   5237   BFD_RELOC_CRIS_UNSIGNED_16,
   5238   BFD_RELOC_CRIS_LAPCQ_OFFSET,
   5239   BFD_RELOC_CRIS_UNSIGNED_4,
   5240 
   5241 /* Relocs used in ELF shared libraries for CRIS.  */
   5242   BFD_RELOC_CRIS_COPY,
   5243   BFD_RELOC_CRIS_GLOB_DAT,
   5244   BFD_RELOC_CRIS_JUMP_SLOT,
   5245   BFD_RELOC_CRIS_RELATIVE,
   5246 
   5247 /* 32-bit offset to symbol-entry within GOT.  */
   5248   BFD_RELOC_CRIS_32_GOT,
   5249 
   5250 /* 16-bit offset to symbol-entry within GOT.  */
   5251   BFD_RELOC_CRIS_16_GOT,
   5252 
   5253 /* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
   5254   BFD_RELOC_CRIS_32_GOTPLT,
   5255 
   5256 /* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
   5257   BFD_RELOC_CRIS_16_GOTPLT,
   5258 
   5259 /* 32-bit offset to symbol, relative to GOT.  */
   5260   BFD_RELOC_CRIS_32_GOTREL,
   5261 
   5262 /* 32-bit offset to symbol with PLT entry, relative to GOT.  */
   5263   BFD_RELOC_CRIS_32_PLT_GOTREL,
   5264 
   5265 /* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
   5266   BFD_RELOC_CRIS_32_PLT_PCREL,
   5267 
   5268 /* Relocs used in TLS code for CRIS.  */
   5269   BFD_RELOC_CRIS_32_GOT_GD,
   5270   BFD_RELOC_CRIS_16_GOT_GD,
   5271   BFD_RELOC_CRIS_32_GD,
   5272   BFD_RELOC_CRIS_DTP,
   5273   BFD_RELOC_CRIS_32_DTPREL,
   5274   BFD_RELOC_CRIS_16_DTPREL,
   5275   BFD_RELOC_CRIS_32_GOT_TPREL,
   5276   BFD_RELOC_CRIS_16_GOT_TPREL,
   5277   BFD_RELOC_CRIS_32_TPREL,
   5278   BFD_RELOC_CRIS_16_TPREL,
   5279   BFD_RELOC_CRIS_DTPMOD,
   5280   BFD_RELOC_CRIS_32_IE,
   5281 
   5282 /* Intel i860 Relocations.  */
   5283   BFD_RELOC_860_COPY,
   5284   BFD_RELOC_860_GLOB_DAT,
   5285   BFD_RELOC_860_JUMP_SLOT,
   5286   BFD_RELOC_860_RELATIVE,
   5287   BFD_RELOC_860_PC26,
   5288   BFD_RELOC_860_PLT26,
   5289   BFD_RELOC_860_PC16,
   5290   BFD_RELOC_860_LOW0,
   5291   BFD_RELOC_860_SPLIT0,
   5292   BFD_RELOC_860_LOW1,
   5293   BFD_RELOC_860_SPLIT1,
   5294   BFD_RELOC_860_LOW2,
   5295   BFD_RELOC_860_SPLIT2,
   5296   BFD_RELOC_860_LOW3,
   5297   BFD_RELOC_860_LOGOT0,
   5298   BFD_RELOC_860_SPGOT0,
   5299   BFD_RELOC_860_LOGOT1,
   5300   BFD_RELOC_860_SPGOT1,
   5301   BFD_RELOC_860_LOGOTOFF0,
   5302   BFD_RELOC_860_SPGOTOFF0,
   5303   BFD_RELOC_860_LOGOTOFF1,
   5304   BFD_RELOC_860_SPGOTOFF1,
   5305   BFD_RELOC_860_LOGOTOFF2,
   5306   BFD_RELOC_860_LOGOTOFF3,
   5307   BFD_RELOC_860_LOPC,
   5308   BFD_RELOC_860_HIGHADJ,
   5309   BFD_RELOC_860_HAGOT,
   5310   BFD_RELOC_860_HAGOTOFF,
   5311   BFD_RELOC_860_HAPC,
   5312   BFD_RELOC_860_HIGH,
   5313   BFD_RELOC_860_HIGOT,
   5314   BFD_RELOC_860_HIGOTOFF,
   5315 
   5316 /* OpenRISC 1000 Relocations.  */
   5317   BFD_RELOC_OR1K_REL_26,
   5318   BFD_RELOC_OR1K_GOTPC_HI16,
   5319   BFD_RELOC_OR1K_GOTPC_LO16,
   5320   BFD_RELOC_OR1K_GOT16,
   5321   BFD_RELOC_OR1K_PLT26,
   5322   BFD_RELOC_OR1K_GOTOFF_HI16,
   5323   BFD_RELOC_OR1K_GOTOFF_LO16,
   5324   BFD_RELOC_OR1K_COPY,
   5325   BFD_RELOC_OR1K_GLOB_DAT,
   5326   BFD_RELOC_OR1K_JMP_SLOT,
   5327   BFD_RELOC_OR1K_RELATIVE,
   5328   BFD_RELOC_OR1K_TLS_GD_HI16,
   5329   BFD_RELOC_OR1K_TLS_GD_LO16,
   5330   BFD_RELOC_OR1K_TLS_LDM_HI16,
   5331   BFD_RELOC_OR1K_TLS_LDM_LO16,
   5332   BFD_RELOC_OR1K_TLS_LDO_HI16,
   5333   BFD_RELOC_OR1K_TLS_LDO_LO16,
   5334   BFD_RELOC_OR1K_TLS_IE_HI16,
   5335   BFD_RELOC_OR1K_TLS_IE_LO16,
   5336   BFD_RELOC_OR1K_TLS_LE_HI16,
   5337   BFD_RELOC_OR1K_TLS_LE_LO16,
   5338   BFD_RELOC_OR1K_TLS_TPOFF,
   5339   BFD_RELOC_OR1K_TLS_DTPOFF,
   5340   BFD_RELOC_OR1K_TLS_DTPMOD,
   5341 
   5342 /* RISC-V relocations.  */
   5343   BFD_RELOC_RISCV_HI20,
   5344   BFD_RELOC_RISCV_PCREL_HI20,
   5345   BFD_RELOC_RISCV_PCREL_LO12_I,
   5346   BFD_RELOC_RISCV_PCREL_LO12_S,
   5347   BFD_RELOC_RISCV_LO12_I,
   5348   BFD_RELOC_RISCV_LO12_S,
   5349   BFD_RELOC_RISCV_GPREL12_I,
   5350   BFD_RELOC_RISCV_GPREL12_S,
   5351   BFD_RELOC_RISCV_TPREL_HI20,
   5352   BFD_RELOC_RISCV_TPREL_LO12_I,
   5353   BFD_RELOC_RISCV_TPREL_LO12_S,
   5354   BFD_RELOC_RISCV_TPREL_ADD,
   5355   BFD_RELOC_RISCV_CALL,
   5356   BFD_RELOC_RISCV_CALL_PLT,
   5357   BFD_RELOC_RISCV_ADD8,
   5358   BFD_RELOC_RISCV_ADD16,
   5359   BFD_RELOC_RISCV_ADD32,
   5360   BFD_RELOC_RISCV_ADD64,
   5361   BFD_RELOC_RISCV_SUB8,
   5362   BFD_RELOC_RISCV_SUB16,
   5363   BFD_RELOC_RISCV_SUB32,
   5364   BFD_RELOC_RISCV_SUB64,
   5365   BFD_RELOC_RISCV_GOT_HI20,
   5366   BFD_RELOC_RISCV_TLS_GOT_HI20,
   5367   BFD_RELOC_RISCV_TLS_GD_HI20,
   5368   BFD_RELOC_RISCV_JMP,
   5369   BFD_RELOC_RISCV_TLS_DTPMOD32,
   5370   BFD_RELOC_RISCV_TLS_DTPREL32,
   5371   BFD_RELOC_RISCV_TLS_DTPMOD64,
   5372   BFD_RELOC_RISCV_TLS_DTPREL64,
   5373   BFD_RELOC_RISCV_TLS_TPREL32,
   5374   BFD_RELOC_RISCV_TLS_TPREL64,
   5375   BFD_RELOC_RISCV_ALIGN,
   5376 
   5377 /* H8 elf Relocations.  */
   5378   BFD_RELOC_H8_DIR16A8,
   5379   BFD_RELOC_H8_DIR16R8,
   5380   BFD_RELOC_H8_DIR24A8,
   5381   BFD_RELOC_H8_DIR24R8,
   5382   BFD_RELOC_H8_DIR32A16,
   5383   BFD_RELOC_H8_DISP32A16,
   5384 
   5385 /* Sony Xstormy16 Relocations.  */
   5386   BFD_RELOC_XSTORMY16_REL_12,
   5387   BFD_RELOC_XSTORMY16_12,
   5388   BFD_RELOC_XSTORMY16_24,
   5389   BFD_RELOC_XSTORMY16_FPTR16,
   5390 
   5391 /* Self-describing complex relocations.  */
   5392   BFD_RELOC_RELC,
   5393 
   5394 
   5395 /* Infineon Relocations.  */
   5396   BFD_RELOC_XC16X_PAG,
   5397   BFD_RELOC_XC16X_POF,
   5398   BFD_RELOC_XC16X_SEG,
   5399   BFD_RELOC_XC16X_SOF,
   5400 
   5401 /* Relocations used by VAX ELF.  */
   5402   BFD_RELOC_VAX_GLOB_DAT,
   5403   BFD_RELOC_VAX_JMP_SLOT,
   5404   BFD_RELOC_VAX_RELATIVE,
   5405 
   5406 /* Morpho MT - 16 bit immediate relocation.  */
   5407   BFD_RELOC_MT_PC16,
   5408 
   5409 /* Morpho MT - Hi 16 bits of an address.  */
   5410   BFD_RELOC_MT_HI16,
   5411 
   5412 /* Morpho MT - Low 16 bits of an address.  */
   5413   BFD_RELOC_MT_LO16,
   5414 
   5415 /* Morpho MT - Used to tell the linker which vtable entries are used.  */
   5416   BFD_RELOC_MT_GNU_VTINHERIT,
   5417 
   5418 /* Morpho MT - Used to tell the linker which vtable entries are used.  */
   5419   BFD_RELOC_MT_GNU_VTENTRY,
   5420 
   5421 /* Morpho MT - 8 bit immediate relocation.  */
   5422   BFD_RELOC_MT_PCINSN8,
   5423 
   5424 /* msp430 specific relocation codes  */
   5425   BFD_RELOC_MSP430_10_PCREL,
   5426   BFD_RELOC_MSP430_16_PCREL,
   5427   BFD_RELOC_MSP430_16,
   5428   BFD_RELOC_MSP430_16_PCREL_BYTE,
   5429   BFD_RELOC_MSP430_16_BYTE,
   5430   BFD_RELOC_MSP430_2X_PCREL,
   5431   BFD_RELOC_MSP430_RL_PCREL,
   5432   BFD_RELOC_MSP430_ABS8,
   5433   BFD_RELOC_MSP430X_PCR20_EXT_SRC,
   5434   BFD_RELOC_MSP430X_PCR20_EXT_DST,
   5435   BFD_RELOC_MSP430X_PCR20_EXT_ODST,
   5436   BFD_RELOC_MSP430X_ABS20_EXT_SRC,
   5437   BFD_RELOC_MSP430X_ABS20_EXT_DST,
   5438   BFD_RELOC_MSP430X_ABS20_EXT_ODST,
   5439   BFD_RELOC_MSP430X_ABS20_ADR_SRC,
   5440   BFD_RELOC_MSP430X_ABS20_ADR_DST,
   5441   BFD_RELOC_MSP430X_PCR16,
   5442   BFD_RELOC_MSP430X_PCR20_CALL,
   5443   BFD_RELOC_MSP430X_ABS16,
   5444   BFD_RELOC_MSP430_ABS_HI16,
   5445   BFD_RELOC_MSP430_PREL31,
   5446   BFD_RELOC_MSP430_SYM_DIFF,
   5447 
   5448 /* Relocations used by the Altera Nios II core.  */
   5449   BFD_RELOC_NIOS2_S16,
   5450   BFD_RELOC_NIOS2_U16,
   5451   BFD_RELOC_NIOS2_CALL26,
   5452   BFD_RELOC_NIOS2_IMM5,
   5453   BFD_RELOC_NIOS2_CACHE_OPX,
   5454   BFD_RELOC_NIOS2_IMM6,
   5455   BFD_RELOC_NIOS2_IMM8,
   5456   BFD_RELOC_NIOS2_HI16,
   5457   BFD_RELOC_NIOS2_LO16,
   5458   BFD_RELOC_NIOS2_HIADJ16,
   5459   BFD_RELOC_NIOS2_GPREL,
   5460   BFD_RELOC_NIOS2_UJMP,
   5461   BFD_RELOC_NIOS2_CJMP,
   5462   BFD_RELOC_NIOS2_CALLR,
   5463   BFD_RELOC_NIOS2_ALIGN,
   5464   BFD_RELOC_NIOS2_GOT16,
   5465   BFD_RELOC_NIOS2_CALL16,
   5466   BFD_RELOC_NIOS2_GOTOFF_LO,
   5467   BFD_RELOC_NIOS2_GOTOFF_HA,
   5468   BFD_RELOC_NIOS2_PCREL_LO,
   5469   BFD_RELOC_NIOS2_PCREL_HA,
   5470   BFD_RELOC_NIOS2_TLS_GD16,
   5471   BFD_RELOC_NIOS2_TLS_LDM16,
   5472   BFD_RELOC_NIOS2_TLS_LDO16,
   5473   BFD_RELOC_NIOS2_TLS_IE16,
   5474   BFD_RELOC_NIOS2_TLS_LE16,
   5475   BFD_RELOC_NIOS2_TLS_DTPMOD,
   5476   BFD_RELOC_NIOS2_TLS_DTPREL,
   5477   BFD_RELOC_NIOS2_TLS_TPREL,
   5478   BFD_RELOC_NIOS2_COPY,
   5479   BFD_RELOC_NIOS2_GLOB_DAT,
   5480   BFD_RELOC_NIOS2_JUMP_SLOT,
   5481   BFD_RELOC_NIOS2_RELATIVE,
   5482   BFD_RELOC_NIOS2_GOTOFF,
   5483   BFD_RELOC_NIOS2_CALL26_NOAT,
   5484   BFD_RELOC_NIOS2_GOT_LO,
   5485   BFD_RELOC_NIOS2_GOT_HA,
   5486   BFD_RELOC_NIOS2_CALL_LO,
   5487   BFD_RELOC_NIOS2_CALL_HA,
   5488   BFD_RELOC_NIOS2_R2_S12,
   5489   BFD_RELOC_NIOS2_R2_I10_1_PCREL,
   5490   BFD_RELOC_NIOS2_R2_T1I7_1_PCREL,
   5491   BFD_RELOC_NIOS2_R2_T1I7_2,
   5492   BFD_RELOC_NIOS2_R2_T2I4,
   5493   BFD_RELOC_NIOS2_R2_T2I4_1,
   5494   BFD_RELOC_NIOS2_R2_T2I4_2,
   5495   BFD_RELOC_NIOS2_R2_X1I7_2,
   5496   BFD_RELOC_NIOS2_R2_X2L5,
   5497   BFD_RELOC_NIOS2_R2_F1I5_2,
   5498   BFD_RELOC_NIOS2_R2_L5I4X1,
   5499   BFD_RELOC_NIOS2_R2_T1X1I6,
   5500   BFD_RELOC_NIOS2_R2_T1X1I6_2,
   5501 
   5502 /* IQ2000 Relocations.  */
   5503   BFD_RELOC_IQ2000_OFFSET_16,
   5504   BFD_RELOC_IQ2000_OFFSET_21,
   5505   BFD_RELOC_IQ2000_UHI16,
   5506 
   5507 /* Special Xtensa relocation used only by PLT entries in ELF shared
   5508 objects to indicate that the runtime linker should set the value
   5509 to one of its own internal functions or data structures.  */
   5510   BFD_RELOC_XTENSA_RTLD,
   5511 
   5512 /* Xtensa relocations for ELF shared objects.  */
   5513   BFD_RELOC_XTENSA_GLOB_DAT,
   5514   BFD_RELOC_XTENSA_JMP_SLOT,
   5515   BFD_RELOC_XTENSA_RELATIVE,
   5516 
   5517 /* Xtensa relocation used in ELF object files for symbols that may require
   5518 PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
   5519   BFD_RELOC_XTENSA_PLT,
   5520 
   5521 /* Xtensa relocations to mark the difference of two local symbols.
   5522 These are only needed to support linker relaxation and can be ignored
   5523 when not relaxing.  The field is set to the value of the difference
   5524 assuming no relaxation.  The relocation encodes the position of the
   5525 first symbol so the linker can determine whether to adjust the field
   5526 value.  */
   5527   BFD_RELOC_XTENSA_DIFF8,
   5528   BFD_RELOC_XTENSA_DIFF16,
   5529   BFD_RELOC_XTENSA_DIFF32,
   5530 
   5531 /* Generic Xtensa relocations for instruction operands.  Only the slot
   5532 number is encoded in the relocation.  The relocation applies to the
   5533 last PC-relative immediate operand, or if there are no PC-relative
   5534 immediates, to the last immediate operand.  */
   5535   BFD_RELOC_XTENSA_SLOT0_OP,
   5536   BFD_RELOC_XTENSA_SLOT1_OP,
   5537   BFD_RELOC_XTENSA_SLOT2_OP,
   5538   BFD_RELOC_XTENSA_SLOT3_OP,
   5539   BFD_RELOC_XTENSA_SLOT4_OP,
   5540   BFD_RELOC_XTENSA_SLOT5_OP,
   5541   BFD_RELOC_XTENSA_SLOT6_OP,
   5542   BFD_RELOC_XTENSA_SLOT7_OP,
   5543   BFD_RELOC_XTENSA_SLOT8_OP,
   5544   BFD_RELOC_XTENSA_SLOT9_OP,
   5545   BFD_RELOC_XTENSA_SLOT10_OP,
   5546   BFD_RELOC_XTENSA_SLOT11_OP,
   5547   BFD_RELOC_XTENSA_SLOT12_OP,
   5548   BFD_RELOC_XTENSA_SLOT13_OP,
   5549   BFD_RELOC_XTENSA_SLOT14_OP,
   5550 
   5551 /* Alternate Xtensa relocations.  Only the slot is encoded in the
   5552 relocation.  The meaning of these relocations is opcode-specific.  */
   5553   BFD_RELOC_XTENSA_SLOT0_ALT,
   5554   BFD_RELOC_XTENSA_SLOT1_ALT,
   5555   BFD_RELOC_XTENSA_SLOT2_ALT,
   5556   BFD_RELOC_XTENSA_SLOT3_ALT,
   5557   BFD_RELOC_XTENSA_SLOT4_ALT,
   5558   BFD_RELOC_XTENSA_SLOT5_ALT,
   5559   BFD_RELOC_XTENSA_SLOT6_ALT,
   5560   BFD_RELOC_XTENSA_SLOT7_ALT,
   5561   BFD_RELOC_XTENSA_SLOT8_ALT,
   5562   BFD_RELOC_XTENSA_SLOT9_ALT,
   5563   BFD_RELOC_XTENSA_SLOT10_ALT,
   5564   BFD_RELOC_XTENSA_SLOT11_ALT,
   5565   BFD_RELOC_XTENSA_SLOT12_ALT,
   5566   BFD_RELOC_XTENSA_SLOT13_ALT,
   5567   BFD_RELOC_XTENSA_SLOT14_ALT,
   5568 
   5569 /* Xtensa relocations for backward compatibility.  These have all been
   5570 replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
   5571   BFD_RELOC_XTENSA_OP0,
   5572   BFD_RELOC_XTENSA_OP1,
   5573   BFD_RELOC_XTENSA_OP2,
   5574 
   5575 /* Xtensa relocation to mark that the assembler expanded the
   5576 instructions from an original target.  The expansion size is
   5577 encoded in the reloc size.  */
   5578   BFD_RELOC_XTENSA_ASM_EXPAND,
   5579 
   5580 /* Xtensa relocation to mark that the linker should simplify
   5581 assembler-expanded instructions.  This is commonly used
   5582 internally by the linker after analysis of a
   5583 BFD_RELOC_XTENSA_ASM_EXPAND.  */
   5584   BFD_RELOC_XTENSA_ASM_SIMPLIFY,
   5585 
   5586 /* Xtensa TLS relocations.  */
   5587   BFD_RELOC_XTENSA_TLSDESC_FN,
   5588   BFD_RELOC_XTENSA_TLSDESC_ARG,
   5589   BFD_RELOC_XTENSA_TLS_DTPOFF,
   5590   BFD_RELOC_XTENSA_TLS_TPOFF,
   5591   BFD_RELOC_XTENSA_TLS_FUNC,
   5592   BFD_RELOC_XTENSA_TLS_ARG,
   5593   BFD_RELOC_XTENSA_TLS_CALL,
   5594 
   5595 /* 8 bit signed offset in (ix+d) or (iy+d).  */
   5596   BFD_RELOC_Z80_DISP8,
   5597 
   5598 /* DJNZ offset.  */
   5599   BFD_RELOC_Z8K_DISP7,
   5600 
   5601 /* CALR offset.  */
   5602   BFD_RELOC_Z8K_CALLR,
   5603 
   5604 /* 4 bit value.  */
   5605   BFD_RELOC_Z8K_IMM4L,
   5606 
   5607 /* Lattice Mico32 relocations.  */
   5608   BFD_RELOC_LM32_CALL,
   5609   BFD_RELOC_LM32_BRANCH,
   5610   BFD_RELOC_LM32_16_GOT,
   5611   BFD_RELOC_LM32_GOTOFF_HI16,
   5612   BFD_RELOC_LM32_GOTOFF_LO16,
   5613   BFD_RELOC_LM32_COPY,
   5614   BFD_RELOC_LM32_GLOB_DAT,
   5615   BFD_RELOC_LM32_JMP_SLOT,
   5616   BFD_RELOC_LM32_RELATIVE,
   5617 
   5618 /* Difference between two section addreses.  Must be followed by a
   5619 BFD_RELOC_MACH_O_PAIR.  */
   5620   BFD_RELOC_MACH_O_SECTDIFF,
   5621 
   5622 /* Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.  */
   5623   BFD_RELOC_MACH_O_LOCAL_SECTDIFF,
   5624 
   5625 /* Pair of relocation.  Contains the first symbol.  */
   5626   BFD_RELOC_MACH_O_PAIR,
   5627 
   5628 /* PCREL relocations.  They are marked as branch to create PLT entry if
   5629 required.  */
   5630   BFD_RELOC_MACH_O_X86_64_BRANCH32,
   5631   BFD_RELOC_MACH_O_X86_64_BRANCH8,
   5632 
   5633 /* Used when referencing a GOT entry.  */
   5634   BFD_RELOC_MACH_O_X86_64_GOT,
   5635 
   5636 /* Used when loading a GOT entry with movq.  It is specially marked so that
   5637 the linker could optimize the movq to a leaq if possible.  */
   5638   BFD_RELOC_MACH_O_X86_64_GOT_LOAD,
   5639 
   5640 /* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
   5641   BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32,
   5642 
   5643 /* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
   5644   BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64,
   5645 
   5646 /* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.  */
   5647   BFD_RELOC_MACH_O_X86_64_PCREL32_1,
   5648 
   5649 /* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.  */
   5650   BFD_RELOC_MACH_O_X86_64_PCREL32_2,
   5651 
   5652 /* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.  */
   5653   BFD_RELOC_MACH_O_X86_64_PCREL32_4,
   5654 
   5655 /* This is a 32 bit reloc for the microblaze that stores the
   5656 low 16 bits of a value  */
   5657   BFD_RELOC_MICROBLAZE_32_LO,
   5658 
   5659 /* This is a 32 bit pc-relative reloc for the microblaze that
   5660 stores the low 16 bits of a value  */
   5661   BFD_RELOC_MICROBLAZE_32_LO_PCREL,
   5662 
   5663 /* This is a 32 bit reloc for the microblaze that stores a
   5664 value relative to the read-only small data area anchor  */
   5665   BFD_RELOC_MICROBLAZE_32_ROSDA,
   5666 
   5667 /* This is a 32 bit reloc for the microblaze that stores a
   5668 value relative to the read-write small data area anchor  */
   5669   BFD_RELOC_MICROBLAZE_32_RWSDA,
   5670 
   5671 /* This is a 32 bit reloc for the microblaze to handle
   5672 expressions of the form "Symbol Op Symbol"  */
   5673   BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM,
   5674 
   5675 /* This is a 64 bit reloc that stores the 32 bit pc relative
   5676 value in two words (with an imm instruction).  No relocation is
   5677 done here - only used for relaxing  */
   5678   BFD_RELOC_MICROBLAZE_64_NONE,
   5679 
   5680 /* This is a 64 bit reloc that stores the 32 bit pc relative
   5681 value in two words (with an imm instruction).  The relocation is
   5682 PC-relative GOT offset  */
   5683   BFD_RELOC_MICROBLAZE_64_GOTPC,
   5684 
   5685 /* This is a 64 bit reloc that stores the 32 bit pc relative
   5686 value in two words (with an imm instruction).  The relocation is
   5687 GOT offset  */
   5688   BFD_RELOC_MICROBLAZE_64_GOT,
   5689 
   5690 /* This is a 64 bit reloc that stores the 32 bit pc relative
   5691 value in two words (with an imm instruction).  The relocation is
   5692 PC-relative offset into PLT  */
   5693   BFD_RELOC_MICROBLAZE_64_PLT,
   5694 
   5695 /* This is a 64 bit reloc that stores the 32 bit GOT relative
   5696 value in two words (with an imm instruction).  The relocation is
   5697 relative offset from _GLOBAL_OFFSET_TABLE_  */
   5698   BFD_RELOC_MICROBLAZE_64_GOTOFF,
   5699 
   5700 /* This is a 32 bit reloc that stores the 32 bit GOT relative
   5701 value in a word.  The relocation is relative offset from  */
   5702   BFD_RELOC_MICROBLAZE_32_GOTOFF,
   5703 
   5704 /* This is used to tell the dynamic linker to copy the value out of
   5705 the dynamic object into the runtime process image.  */
   5706   BFD_RELOC_MICROBLAZE_COPY,
   5707 
   5708 /* Unused Reloc  */
   5709   BFD_RELOC_MICROBLAZE_64_TLS,
   5710 
   5711 /* This is a 64 bit reloc that stores the 32 bit GOT relative value
   5712 of the GOT TLS GD info entry in two words (with an imm instruction). The
   5713 relocation is GOT offset.  */
   5714   BFD_RELOC_MICROBLAZE_64_TLSGD,
   5715 
   5716 /* This is a 64 bit reloc that stores the 32 bit GOT relative value
   5717 of the GOT TLS LD info entry in two words (with an imm instruction). The
   5718 relocation is GOT offset.  */
   5719   BFD_RELOC_MICROBLAZE_64_TLSLD,
   5720 
   5721 /* This is a 32 bit reloc that stores the Module ID to GOT(n).  */
   5722   BFD_RELOC_MICROBLAZE_32_TLSDTPMOD,
   5723 
   5724 /* This is a 32 bit reloc that stores TLS offset to GOT(n+1).  */
   5725   BFD_RELOC_MICROBLAZE_32_TLSDTPREL,
   5726 
   5727 /* This is a 32 bit reloc for storing TLS offset to two words (uses imm
   5728 instruction)  */
   5729   BFD_RELOC_MICROBLAZE_64_TLSDTPREL,
   5730 
   5731 /* This is a 64 bit reloc that stores 32-bit thread pointer relative offset
   5732 to two words (uses imm instruction).  */
   5733   BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL,
   5734 
   5735 /* This is a 64 bit reloc that stores 32-bit thread pointer relative offset
   5736 to two words (uses imm instruction).  */
   5737   BFD_RELOC_MICROBLAZE_64_TLSTPREL,
   5738 
   5739 /* AArch64 pseudo relocation code to mark the start of the AArch64
   5740 relocation enumerators.  N.B. the order of the enumerators is
   5741 important as several tables in the AArch64 bfd backend are indexed
   5742 by these enumerators; make sure they are all synced.  */
   5743   BFD_RELOC_AARCH64_RELOC_START,
   5744 
   5745 /* AArch64 null relocation code.  */
   5746   BFD_RELOC_AARCH64_NONE,
   5747 
   5748 /* Basic absolute relocations of N bits.  These are equivalent to
   5749 BFD_RELOC_N and they were added to assist the indexing of the howto
   5750 table.  */
   5751   BFD_RELOC_AARCH64_64,
   5752   BFD_RELOC_AARCH64_32,
   5753   BFD_RELOC_AARCH64_16,
   5754 
   5755 /* PC-relative relocations.  These are equivalent to BFD_RELOC_N_PCREL
   5756 and they were added to assist the indexing of the howto table.  */
   5757   BFD_RELOC_AARCH64_64_PCREL,
   5758   BFD_RELOC_AARCH64_32_PCREL,
   5759   BFD_RELOC_AARCH64_16_PCREL,
   5760 
   5761 /* AArch64 MOV[NZK] instruction with most significant bits 0 to 15
   5762 of an unsigned address/value.  */
   5763   BFD_RELOC_AARCH64_MOVW_G0,
   5764 
   5765 /* AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
   5766 an address/value.  No overflow checking.  */
   5767   BFD_RELOC_AARCH64_MOVW_G0_NC,
   5768 
   5769 /* AArch64 MOV[NZK] instruction with most significant bits 16 to 31
   5770 of an unsigned address/value.  */
   5771   BFD_RELOC_AARCH64_MOVW_G1,
   5772 
   5773 /* AArch64 MOV[NZK] instruction with less significant bits 16 to 31
   5774 of an address/value.  No overflow checking.  */
   5775   BFD_RELOC_AARCH64_MOVW_G1_NC,
   5776 
   5777 /* AArch64 MOV[NZK] instruction with most significant bits 32 to 47
   5778 of an unsigned address/value.  */
   5779   BFD_RELOC_AARCH64_MOVW_G2,
   5780 
   5781 /* AArch64 MOV[NZK] instruction with less significant bits 32 to 47
   5782 of an address/value.  No overflow checking.  */
   5783   BFD_RELOC_AARCH64_MOVW_G2_NC,
   5784 
   5785 /* AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
   5786 of a signed or unsigned address/value.  */
   5787   BFD_RELOC_AARCH64_MOVW_G3,
   5788 
   5789 /* AArch64 MOV[NZ] instruction with most significant bits 0 to 15
   5790 of a signed value.  Changes instruction to MOVZ or MOVN depending on the
   5791 value's sign.  */
   5792   BFD_RELOC_AARCH64_MOVW_G0_S,
   5793 
   5794 /* AArch64 MOV[NZ] instruction with most significant bits 16 to 31
   5795 of a signed value.  Changes instruction to MOVZ or MOVN depending on the
   5796 value's sign.  */
   5797   BFD_RELOC_AARCH64_MOVW_G1_S,
   5798 
   5799 /* AArch64 MOV[NZ] instruction with most significant bits 32 to 47
   5800 of a signed value.  Changes instruction to MOVZ or MOVN depending on the
   5801 value's sign.  */
   5802   BFD_RELOC_AARCH64_MOVW_G2_S,
   5803 
   5804 /* AArch64 Load Literal instruction, holding a 19 bit pc-relative word
   5805 offset.  The lowest two bits must be zero and are not stored in the
   5806 instruction, giving a 21 bit signed byte offset.  */
   5807   BFD_RELOC_AARCH64_LD_LO19_PCREL,
   5808 
   5809 /* AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.  */
   5810   BFD_RELOC_AARCH64_ADR_LO21_PCREL,
   5811 
   5812 /* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
   5813 offset, giving a 4KB aligned page base address.  */
   5814   BFD_RELOC_AARCH64_ADR_HI21_PCREL,
   5815 
   5816 /* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
   5817 offset, giving a 4KB aligned page base address, but with no overflow
   5818 checking.  */
   5819   BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL,
   5820 
   5821 /* AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
   5822 Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   5823   BFD_RELOC_AARCH64_ADD_LO12,
   5824 
   5825 /* AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
   5826 address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   5827   BFD_RELOC_AARCH64_LDST8_LO12,
   5828 
   5829 /* AArch64 14 bit pc-relative test bit and branch.
   5830 The lowest two bits must be zero and are not stored in the instruction,
   5831 giving a 16 bit signed byte offset.  */
   5832   BFD_RELOC_AARCH64_TSTBR14,
   5833 
   5834 /* AArch64 19 bit pc-relative conditional branch and compare & branch.
   5835 The lowest two bits must be zero and are not stored in the instruction,
   5836 giving a 21 bit signed byte offset.  */
   5837   BFD_RELOC_AARCH64_BRANCH19,
   5838 
   5839 /* AArch64 26 bit pc-relative unconditional branch.
   5840 The lowest two bits must be zero and are not stored in the instruction,
   5841 giving a 28 bit signed byte offset.  */
   5842   BFD_RELOC_AARCH64_JUMP26,
   5843 
   5844 /* AArch64 26 bit pc-relative unconditional branch and link.
   5845 The lowest two bits must be zero and are not stored in the instruction,
   5846 giving a 28 bit signed byte offset.  */
   5847   BFD_RELOC_AARCH64_CALL26,
   5848 
   5849 /* AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
   5850 address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   5851   BFD_RELOC_AARCH64_LDST16_LO12,
   5852 
   5853 /* AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
   5854 address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   5855   BFD_RELOC_AARCH64_LDST32_LO12,
   5856 
   5857 /* AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
   5858 address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   5859   BFD_RELOC_AARCH64_LDST64_LO12,
   5860 
   5861 /* AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
   5862 address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   5863   BFD_RELOC_AARCH64_LDST128_LO12,
   5864 
   5865 /* AArch64 Load Literal instruction, holding a 19 bit PC relative word
   5866 offset of the global offset table entry for a symbol.  The lowest two
   5867 bits must be zero and are not stored in the instruction, giving a 21
   5868 bit signed byte offset.  This relocation type requires signed overflow
   5869 checking.  */
   5870   BFD_RELOC_AARCH64_GOT_LD_PREL19,
   5871 
   5872 /* Get to the page base of the global offset table entry for a symbol as
   5873 part of an ADRP instruction using a 21 bit PC relative value.Used in
   5874 conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.  */
   5875   BFD_RELOC_AARCH64_ADR_GOT_PAGE,
   5876 
   5877 /* Unsigned 12 bit byte offset for 64 bit load/store from the page of
   5878 the GOT entry for this symbol.  Used in conjunction with
   5879 BFD_RELOC_AARCH64_ADR_GOTPAGE.  Valid in LP64 ABI only.  */
   5880   BFD_RELOC_AARCH64_LD64_GOT_LO12_NC,
   5881 
   5882 /* Unsigned 12 bit byte offset for 32 bit load/store from the page of
   5883 the GOT entry for this symbol.  Used in conjunction with
   5884 BFD_RELOC_AARCH64_ADR_GOTPAGE.  Valid in ILP32 ABI only.  */
   5885   BFD_RELOC_AARCH64_LD32_GOT_LO12_NC,
   5886 
   5887 /* Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry
   5888 for this symbol.  Valid in LP64 ABI only.  */
   5889   BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC,
   5890 
   5891 /* Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
   5892 for this symbol.  Valid in LP64 ABI only.  */
   5893   BFD_RELOC_AARCH64_MOVW_GOTOFF_G1,
   5894 
   5895 /* Unsigned 15 bit byte offset for 64 bit load/store from the page of
   5896 the GOT entry for this symbol.  Valid in LP64 ABI only.  */
   5897   BFD_RELOC_AARCH64_LD64_GOTOFF_LO15,
   5898 
   5899 /* Scaled 14 bit byte offset to the page base of the global offset table.  */
   5900   BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14,
   5901 
   5902 /* Scaled 15 bit byte offset to the page base of the global offset table.  */
   5903   BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15,
   5904 
   5905 /* Get to the page base of the global offset table entry for a symbols
   5906 tls_index structure as part of an adrp instruction using a 21 bit PC
   5907 relative value.  Used in conjunction with
   5908 BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.  */
   5909   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21,
   5910 
   5911 /* AArch64 TLS General Dynamic  */
   5912   BFD_RELOC_AARCH64_TLSGD_ADR_PREL21,
   5913 
   5914 /* Unsigned 12 bit byte offset to global offset table entry for a symbols
   5915 tls_index structure.  Used in conjunction with
   5916 BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.  */
   5917   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC,
   5918 
   5919 /* AArch64 TLS General Dynamic relocation.  */
   5920   BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC,
   5921 
   5922 /* AArch64 TLS General Dynamic relocation.  */
   5923   BFD_RELOC_AARCH64_TLSGD_MOVW_G1,
   5924 
   5925 /* AArch64 TLS INITIAL EXEC relocation.  */
   5926   BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,
   5927 
   5928 /* AArch64 TLS INITIAL EXEC relocation.  */
   5929   BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,
   5930 
   5931 /* AArch64 TLS INITIAL EXEC relocation.  */
   5932   BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC,
   5933 
   5934 /* AArch64 TLS INITIAL EXEC relocation.  */
   5935   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19,
   5936 
   5937 /* AArch64 TLS INITIAL EXEC relocation.  */
   5938   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,
   5939 
   5940 /* AArch64 TLS INITIAL EXEC relocation.  */
   5941   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1,
   5942 
   5943 /* bit[23:12] of byte offset to module TLS base address.  */
   5944   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12,
   5945 
   5946 /* Unsigned 12 bit byte offset to module TLS base address.  */
   5947   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12,
   5948 
   5949 /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.  */
   5950   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC,
   5951 
   5952 /* Unsigned 12 bit byte offset to global offset table entry for a symbols
   5953 tls_index structure.  Used in conjunction with
   5954 BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.  */
   5955   BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC,
   5956 
   5957 /* GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP
   5958 instruction.  */
   5959   BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21,
   5960 
   5961 /* GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction.  */
   5962   BFD_RELOC_AARCH64_TLSLD_ADR_PREL21,
   5963 
   5964 /* bit[11:1] of byte offset to module TLS base address, encoded in ldst
   5965 instructions.  */
   5966   BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12,
   5967 
   5968 /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check.  */
   5969   BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC,
   5970 
   5971 /* bit[11:2] of byte offset to module TLS base address, encoded in ldst
   5972 instructions.  */
   5973   BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12,
   5974 
   5975 /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check.  */
   5976   BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC,
   5977 
   5978 /* bit[11:3] of byte offset to module TLS base address, encoded in ldst
   5979 instructions.  */
   5980   BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12,
   5981 
   5982 /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check.  */
   5983   BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC,
   5984 
   5985 /* bit[11:0] of byte offset to module TLS base address, encoded in ldst
   5986 instructions.  */
   5987   BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12,
   5988 
   5989 /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check.  */
   5990   BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC,
   5991 
   5992 /* bit[15:0] of byte offset to module TLS base address.  */
   5993   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0,
   5994 
   5995 /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0  */
   5996   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC,
   5997 
   5998 /* bit[31:16] of byte offset to module TLS base address.  */
   5999   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1,
   6000 
   6001 /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1  */
   6002   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC,
   6003 
   6004 /* bit[47:32] of byte offset to module TLS base address.  */
   6005   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2,
   6006 
   6007 /* AArch64 TLS LOCAL EXEC relocation.  */
   6008   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2,
   6009 
   6010 /* AArch64 TLS LOCAL EXEC relocation.  */
   6011   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1,
   6012 
   6013 /* AArch64 TLS LOCAL EXEC relocation.  */
   6014   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC,
   6015 
   6016 /* AArch64 TLS LOCAL EXEC relocation.  */
   6017   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0,
   6018 
   6019 /* AArch64 TLS LOCAL EXEC relocation.  */
   6020   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC,
   6021 
   6022 /* AArch64 TLS LOCAL EXEC relocation.  */
   6023   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12,
   6024 
   6025 /* AArch64 TLS LOCAL EXEC relocation.  */
   6026   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12,
   6027 
   6028 /* AArch64 TLS LOCAL EXEC relocation.  */
   6029   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC,
   6030 
   6031 /* AArch64 TLS DESC relocation.  */
   6032   BFD_RELOC_AARCH64_TLSDESC_LD_PREL19,
   6033 
   6034 /* AArch64 TLS DESC relocation.  */
   6035   BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21,
   6036 
   6037 /* AArch64 TLS DESC relocation.  */
   6038   BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21,
   6039 
   6040 /* AArch64 TLS DESC relocation.  */
   6041   BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC,
   6042 
   6043 /* AArch64 TLS DESC relocation.  */
   6044   BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC,
   6045 
   6046 /* AArch64 TLS DESC relocation.  */
   6047   BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC,
   6048 
   6049 /* AArch64 TLS DESC relocation.  */
   6050   BFD_RELOC_AARCH64_TLSDESC_OFF_G1,
   6051 
   6052 /* AArch64 TLS DESC relocation.  */
   6053   BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC,
   6054 
   6055 /* AArch64 TLS DESC relocation.  */
   6056   BFD_RELOC_AARCH64_TLSDESC_LDR,
   6057 
   6058 /* AArch64 TLS DESC relocation.  */
   6059   BFD_RELOC_AARCH64_TLSDESC_ADD,
   6060 
   6061 /* AArch64 TLS DESC relocation.  */
   6062   BFD_RELOC_AARCH64_TLSDESC_CALL,
   6063 
   6064 /* AArch64 TLS relocation.  */
   6065   BFD_RELOC_AARCH64_COPY,
   6066 
   6067 /* AArch64 TLS relocation.  */
   6068   BFD_RELOC_AARCH64_GLOB_DAT,
   6069 
   6070 /* AArch64 TLS relocation.  */
   6071   BFD_RELOC_AARCH64_JUMP_SLOT,
   6072 
   6073 /* AArch64 TLS relocation.  */
   6074   BFD_RELOC_AARCH64_RELATIVE,
   6075 
   6076 /* AArch64 TLS relocation.  */
   6077   BFD_RELOC_AARCH64_TLS_DTPMOD,
   6078 
   6079 /* AArch64 TLS relocation.  */
   6080   BFD_RELOC_AARCH64_TLS_DTPREL,
   6081 
   6082 /* AArch64 TLS relocation.  */
   6083   BFD_RELOC_AARCH64_TLS_TPREL,
   6084 
   6085 /* AArch64 TLS relocation.  */
   6086   BFD_RELOC_AARCH64_TLSDESC,
   6087 
   6088 /* AArch64 support for STT_GNU_IFUNC.  */
   6089   BFD_RELOC_AARCH64_IRELATIVE,
   6090 
   6091 /* AArch64 pseudo relocation code to mark the end of the AArch64
   6092 relocation enumerators that have direct mapping to ELF reloc codes.
   6093 There are a few more enumerators after this one; those are mainly
   6094 used by the AArch64 assembler for the internal fixup or to select
   6095 one of the above enumerators.  */
   6096   BFD_RELOC_AARCH64_RELOC_END,
   6097 
   6098 /* AArch64 pseudo relocation code to be used internally by the AArch64
   6099 assembler and not (currently) written to any object files.  */
   6100   BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP,
   6101 
   6102 /* AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
   6103 address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   6104   BFD_RELOC_AARCH64_LDST_LO12,
   6105 
   6106 /* AArch64 pseudo relocation code for TLS local dynamic mode.  It's to be
   6107 used internally by the AArch64 assembler and not (currently) written to
   6108 any object files.  */
   6109   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12,
   6110 
   6111 /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check.  */
   6112   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC,
   6113 
   6114 /* AArch64 pseudo relocation code to be used internally by the AArch64
   6115 assembler and not (currently) written to any object files.  */
   6116   BFD_RELOC_AARCH64_LD_GOT_LO12_NC,
   6117 
   6118 /* AArch64 pseudo relocation code to be used internally by the AArch64
   6119 assembler and not (currently) written to any object files.  */
   6120   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC,
   6121 
   6122 /* AArch64 pseudo relocation code to be used internally by the AArch64
   6123 assembler and not (currently) written to any object files.  */
   6124   BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC,
   6125 
   6126 /* Tilera TILEPro Relocations.  */
   6127   BFD_RELOC_TILEPRO_COPY,
   6128   BFD_RELOC_TILEPRO_GLOB_DAT,
   6129   BFD_RELOC_TILEPRO_JMP_SLOT,
   6130   BFD_RELOC_TILEPRO_RELATIVE,
   6131   BFD_RELOC_TILEPRO_BROFF_X1,
   6132   BFD_RELOC_TILEPRO_JOFFLONG_X1,
   6133   BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT,
   6134   BFD_RELOC_TILEPRO_IMM8_X0,
   6135   BFD_RELOC_TILEPRO_IMM8_Y0,
   6136   BFD_RELOC_TILEPRO_IMM8_X1,
   6137   BFD_RELOC_TILEPRO_IMM8_Y1,
   6138   BFD_RELOC_TILEPRO_DEST_IMM8_X1,
   6139   BFD_RELOC_TILEPRO_MT_IMM15_X1,
   6140   BFD_RELOC_TILEPRO_MF_IMM15_X1,
   6141   BFD_RELOC_TILEPRO_IMM16_X0,
   6142   BFD_RELOC_TILEPRO_IMM16_X1,
   6143   BFD_RELOC_TILEPRO_IMM16_X0_LO,
   6144   BFD_RELOC_TILEPRO_IMM16_X1_LO,
   6145   BFD_RELOC_TILEPRO_IMM16_X0_HI,
   6146   BFD_RELOC_TILEPRO_IMM16_X1_HI,
   6147   BFD_RELOC_TILEPRO_IMM16_X0_HA,
   6148   BFD_RELOC_TILEPRO_IMM16_X1_HA,
   6149   BFD_RELOC_TILEPRO_IMM16_X0_PCREL,
   6150   BFD_RELOC_TILEPRO_IMM16_X1_PCREL,
   6151   BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL,
   6152   BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL,
   6153   BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL,
   6154   BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL,
   6155   BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL,
   6156   BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL,
   6157   BFD_RELOC_TILEPRO_IMM16_X0_GOT,
   6158   BFD_RELOC_TILEPRO_IMM16_X1_GOT,
   6159   BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO,
   6160   BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO,
   6161   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI,
   6162   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI,
   6163   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA,
   6164   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA,
   6165   BFD_RELOC_TILEPRO_MMSTART_X0,
   6166   BFD_RELOC_TILEPRO_MMEND_X0,
   6167   BFD_RELOC_TILEPRO_MMSTART_X1,
   6168   BFD_RELOC_TILEPRO_MMEND_X1,
   6169   BFD_RELOC_TILEPRO_SHAMT_X0,
   6170   BFD_RELOC_TILEPRO_SHAMT_X1,
   6171   BFD_RELOC_TILEPRO_SHAMT_Y0,
   6172   BFD_RELOC_TILEPRO_SHAMT_Y1,
   6173   BFD_RELOC_TILEPRO_TLS_GD_CALL,
   6174   BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD,
   6175   BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD,
   6176   BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD,
   6177   BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD,
   6178   BFD_RELOC_TILEPRO_TLS_IE_LOAD,
   6179   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD,
   6180   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD,
   6181   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO,
   6182   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO,
   6183   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI,
   6184   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI,
   6185   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA,
   6186   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA,
   6187   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE,
   6188   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE,
   6189   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO,
   6190   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO,
   6191   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI,
   6192   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI,
   6193   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA,
   6194   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA,
   6195   BFD_RELOC_TILEPRO_TLS_DTPMOD32,
   6196   BFD_RELOC_TILEPRO_TLS_DTPOFF32,
   6197   BFD_RELOC_TILEPRO_TLS_TPOFF32,
   6198   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE,
   6199   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE,
   6200   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO,
   6201   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO,
   6202   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI,
   6203   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI,
   6204   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA,
   6205   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA,
   6206 
   6207 /* Tilera TILE-Gx Relocations.  */
   6208   BFD_RELOC_TILEGX_HW0,
   6209   BFD_RELOC_TILEGX_HW1,
   6210   BFD_RELOC_TILEGX_HW2,
   6211   BFD_RELOC_TILEGX_HW3,
   6212   BFD_RELOC_TILEGX_HW0_LAST,
   6213   BFD_RELOC_TILEGX_HW1_LAST,
   6214   BFD_RELOC_TILEGX_HW2_LAST,
   6215   BFD_RELOC_TILEGX_COPY,
   6216   BFD_RELOC_TILEGX_GLOB_DAT,
   6217   BFD_RELOC_TILEGX_JMP_SLOT,
   6218   BFD_RELOC_TILEGX_RELATIVE,
   6219   BFD_RELOC_TILEGX_BROFF_X1,
   6220   BFD_RELOC_TILEGX_JUMPOFF_X1,
   6221   BFD_RELOC_TILEGX_JUMPOFF_X1_PLT,
   6222   BFD_RELOC_TILEGX_IMM8_X0,
   6223   BFD_RELOC_TILEGX_IMM8_Y0,
   6224   BFD_RELOC_TILEGX_IMM8_X1,
   6225   BFD_RELOC_TILEGX_IMM8_Y1,
   6226   BFD_RELOC_TILEGX_DEST_IMM8_X1,
   6227   BFD_RELOC_TILEGX_MT_IMM14_X1,
   6228   BFD_RELOC_TILEGX_MF_IMM14_X1,
   6229   BFD_RELOC_TILEGX_MMSTART_X0,
   6230   BFD_RELOC_TILEGX_MMEND_X0,
   6231   BFD_RELOC_TILEGX_SHAMT_X0,
   6232   BFD_RELOC_TILEGX_SHAMT_X1,
   6233   BFD_RELOC_TILEGX_SHAMT_Y0,
   6234   BFD_RELOC_TILEGX_SHAMT_Y1,
   6235   BFD_RELOC_TILEGX_IMM16_X0_HW0,
   6236   BFD_RELOC_TILEGX_IMM16_X1_HW0,
   6237   BFD_RELOC_TILEGX_IMM16_X0_HW1,
   6238   BFD_RELOC_TILEGX_IMM16_X1_HW1,
   6239   BFD_RELOC_TILEGX_IMM16_X0_HW2,
   6240   BFD_RELOC_TILEGX_IMM16_X1_HW2,
   6241   BFD_RELOC_TILEGX_IMM16_X0_HW3,
   6242   BFD_RELOC_TILEGX_IMM16_X1_HW3,
   6243   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST,
   6244   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST,
   6245   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST,
   6246   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST,
   6247   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST,
   6248   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST,
   6249   BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL,
   6250   BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL,
   6251   BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL,
   6252   BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL,
   6253   BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL,
   6254   BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL,
   6255   BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL,
   6256   BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL,
   6257   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL,
   6258   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL,
   6259   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL,
   6260   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL,
   6261   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL,
   6262   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL,
   6263   BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT,
   6264   BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT,
   6265   BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL,
   6266   BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL,
   6267   BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL,
   6268   BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL,
   6269   BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL,
   6270   BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL,
   6271   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT,
   6272   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT,
   6273   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT,
   6274   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT,
   6275   BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL,
   6276   BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL,
   6277   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD,
   6278   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD,
   6279   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE,
   6280   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE,
   6281   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE,
   6282   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE,
   6283   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE,
   6284   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE,
   6285   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD,
   6286   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD,
   6287   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD,
   6288   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD,
   6289   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE,
   6290   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE,
   6291   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL,
   6292   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL,
   6293   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL,
   6294   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL,
   6295   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL,
   6296   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL,
   6297   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE,
   6298   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE,
   6299   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE,
   6300   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE,
   6301   BFD_RELOC_TILEGX_TLS_DTPMOD64,
   6302   BFD_RELOC_TILEGX_TLS_DTPOFF64,
   6303   BFD_RELOC_TILEGX_TLS_TPOFF64,
   6304   BFD_RELOC_TILEGX_TLS_DTPMOD32,
   6305   BFD_RELOC_TILEGX_TLS_DTPOFF32,
   6306   BFD_RELOC_TILEGX_TLS_TPOFF32,
   6307   BFD_RELOC_TILEGX_TLS_GD_CALL,
   6308   BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD,
   6309   BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD,
   6310   BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD,
   6311   BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD,
   6312   BFD_RELOC_TILEGX_TLS_IE_LOAD,
   6313   BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD,
   6314   BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD,
   6315   BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD,
   6316   BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD,
   6317 
   6318 /* Adapteva EPIPHANY - 8 bit signed pc-relative displacement  */
   6319   BFD_RELOC_EPIPHANY_SIMM8,
   6320 
   6321 /* Adapteva EPIPHANY - 24 bit signed pc-relative displacement  */
   6322   BFD_RELOC_EPIPHANY_SIMM24,
   6323 
   6324 /* Adapteva EPIPHANY - 16 most-significant bits of absolute address  */
   6325   BFD_RELOC_EPIPHANY_HIGH,
   6326 
   6327 /* Adapteva EPIPHANY - 16 least-significant bits of absolute address  */
   6328   BFD_RELOC_EPIPHANY_LOW,
   6329 
   6330 /* Adapteva EPIPHANY - 11 bit signed number - add/sub immediate  */
   6331   BFD_RELOC_EPIPHANY_SIMM11,
   6332 
   6333 /* Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)  */
   6334   BFD_RELOC_EPIPHANY_IMM11,
   6335 
   6336 /* Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.  */
   6337   BFD_RELOC_EPIPHANY_IMM8,
   6338 
   6339 /* Visium Relocations.  */
   6340   BFD_RELOC_VISIUM_HI16,
   6341   BFD_RELOC_VISIUM_LO16,
   6342   BFD_RELOC_VISIUM_IM16,
   6343   BFD_RELOC_VISIUM_REL16,
   6344   BFD_RELOC_VISIUM_HI16_PCREL,
   6345   BFD_RELOC_VISIUM_LO16_PCREL,
   6346   BFD_RELOC_VISIUM_IM16_PCREL,
   6347   BFD_RELOC_UNUSED };
   6348 
   6349 typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
   6350 reloc_howto_type *bfd_reloc_type_lookup
   6351    (bfd *abfd, bfd_reloc_code_real_type code);
   6352 reloc_howto_type *bfd_reloc_name_lookup
   6353    (bfd *abfd, const char *reloc_name);
   6354 
   6355 const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
   6356 
   6357 /* Extracted from syms.c.  */
   6358 
   6359 typedef struct bfd_symbol
   6360 {
   6361   /* A pointer to the BFD which owns the symbol. This information
   6362      is necessary so that a back end can work out what additional
   6363      information (invisible to the application writer) is carried
   6364      with the symbol.
   6365 
   6366      This field is *almost* redundant, since you can use section->owner
   6367      instead, except that some symbols point to the global sections
   6368      bfd_{abs,com,und}_section.  This could be fixed by making
   6369      these globals be per-bfd (or per-target-flavor).  FIXME.  */
   6370   struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
   6371 
   6372   /* The text of the symbol. The name is left alone, and not copied; the
   6373      application may not alter it.  */
   6374   const char *name;
   6375 
   6376   /* The value of the symbol.  This really should be a union of a
   6377      numeric value with a pointer, since some flags indicate that
   6378      a pointer to another symbol is stored here.  */
   6379   symvalue value;
   6380 
   6381   /* Attributes of a symbol.  */
   6382 #define BSF_NO_FLAGS           0x00
   6383 
   6384   /* The symbol has local scope; <<static>> in <<C>>. The value
   6385      is the offset into the section of the data.  */
   6386 #define BSF_LOCAL              (1 << 0)
   6387 
   6388   /* The symbol has global scope; initialized data in <<C>>. The
   6389      value is the offset into the section of the data.  */
   6390 #define BSF_GLOBAL             (1 << 1)
   6391 
   6392   /* The symbol has global scope and is exported. The value is
   6393      the offset into the section of the data.  */
   6394 #define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
   6395 
   6396   /* A normal C symbol would be one of:
   6397      <<BSF_LOCAL>>, <<BSF_COMMON>>,  <<BSF_UNDEFINED>> or
   6398      <<BSF_GLOBAL>>.  */
   6399 
   6400   /* The symbol is a debugging record. The value has an arbitrary
   6401      meaning, unless BSF_DEBUGGING_RELOC is also set.  */
   6402 #define BSF_DEBUGGING          (1 << 2)
   6403 
   6404   /* The symbol denotes a function entry point.  Used in ELF,
   6405      perhaps others someday.  */
   6406 #define BSF_FUNCTION           (1 << 3)
   6407 
   6408   /* Used by the linker.  */
   6409 #define BSF_KEEP               (1 << 5)
   6410 #define BSF_KEEP_G             (1 << 6)
   6411 
   6412   /* A weak global symbol, overridable without warnings by
   6413      a regular global symbol of the same name.  */
   6414 #define BSF_WEAK               (1 << 7)
   6415 
   6416   /* This symbol was created to point to a section, e.g. ELF's
   6417      STT_SECTION symbols.  */
   6418 #define BSF_SECTION_SYM        (1 << 8)
   6419 
   6420   /* The symbol used to be a common symbol, but now it is
   6421      allocated.  */
   6422 #define BSF_OLD_COMMON         (1 << 9)
   6423 
   6424   /* In some files the type of a symbol sometimes alters its
   6425      location in an output file - ie in coff a <<ISFCN>> symbol
   6426      which is also <<C_EXT>> symbol appears where it was
   6427      declared and not at the end of a section.  This bit is set
   6428      by the target BFD part to convey this information.  */
   6429 #define BSF_NOT_AT_END         (1 << 10)
   6430 
   6431   /* Signal that the symbol is the label of constructor section.  */
   6432 #define BSF_CONSTRUCTOR        (1 << 11)
   6433 
   6434   /* Signal that the symbol is a warning symbol.  The name is a
   6435      warning.  The name of the next symbol is the one to warn about;
   6436      if a reference is made to a symbol with the same name as the next
   6437      symbol, a warning is issued by the linker.  */
   6438 #define BSF_WARNING            (1 << 12)
   6439 
   6440   /* Signal that the symbol is indirect.  This symbol is an indirect
   6441      pointer to the symbol with the same name as the next symbol.  */
   6442 #define BSF_INDIRECT           (1 << 13)
   6443 
   6444   /* BSF_FILE marks symbols that contain a file name.  This is used
   6445      for ELF STT_FILE symbols.  */
   6446 #define BSF_FILE               (1 << 14)
   6447 
   6448   /* Symbol is from dynamic linking information.  */
   6449 #define BSF_DYNAMIC            (1 << 15)
   6450 
   6451   /* The symbol denotes a data object.  Used in ELF, and perhaps
   6452      others someday.  */
   6453 #define BSF_OBJECT             (1 << 16)
   6454 
   6455   /* This symbol is a debugging symbol.  The value is the offset
   6456      into the section of the data.  BSF_DEBUGGING should be set
   6457      as well.  */
   6458 #define BSF_DEBUGGING_RELOC    (1 << 17)
   6459 
   6460   /* This symbol is thread local.  Used in ELF.  */
   6461 #define BSF_THREAD_LOCAL       (1 << 18)
   6462 
   6463   /* This symbol represents a complex relocation expression,
   6464      with the expression tree serialized in the symbol name.  */
   6465 #define BSF_RELC               (1 << 19)
   6466 
   6467   /* This symbol represents a signed complex relocation expression,
   6468      with the expression tree serialized in the symbol name.  */
   6469 #define BSF_SRELC              (1 << 20)
   6470 
   6471   /* This symbol was created by bfd_get_synthetic_symtab.  */
   6472 #define BSF_SYNTHETIC          (1 << 21)
   6473 
   6474   /* This symbol is an indirect code object.  Unrelated to BSF_INDIRECT.
   6475      The dynamic linker will compute the value of this symbol by
   6476      calling the function that it points to.  BSF_FUNCTION must
   6477      also be also set.  */
   6478 #define BSF_GNU_INDIRECT_FUNCTION (1 << 22)
   6479   /* This symbol is a globally unique data object.  The dynamic linker
   6480      will make sure that in the entire process there is just one symbol
   6481      with this name and type in use.  BSF_OBJECT must also be set.  */
   6482 #define BSF_GNU_UNIQUE         (1 << 23)
   6483 
   6484   flagword flags;
   6485 
   6486   /* A pointer to the section to which this symbol is
   6487      relative.  This will always be non NULL, there are special
   6488      sections for undefined and absolute symbols.  */
   6489   struct bfd_section *section;
   6490 
   6491   /* Back end special data.  */
   6492   union
   6493     {
   6494       void *p;
   6495       bfd_vma i;
   6496     }
   6497   udata;
   6498 }
   6499 asymbol;
   6500 
   6501 #define bfd_get_symtab_upper_bound(abfd) \
   6502      BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
   6503 
   6504 bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
   6505 
   6506 bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
   6507 
   6508 #define bfd_is_local_label_name(abfd, name) \
   6509   BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
   6510 
   6511 bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
   6512 
   6513 #define bfd_is_target_special_symbol(abfd, sym) \
   6514   BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
   6515 
   6516 #define bfd_canonicalize_symtab(abfd, location) \
   6517   BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
   6518 
   6519 bfd_boolean bfd_set_symtab
   6520    (bfd *abfd, asymbol **location, unsigned int count);
   6521 
   6522 void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
   6523 
   6524 #define bfd_make_empty_symbol(abfd) \
   6525   BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
   6526 
   6527 asymbol *_bfd_generic_make_empty_symbol (bfd *);
   6528 
   6529 #define bfd_make_debug_symbol(abfd,ptr,size) \
   6530   BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
   6531 
   6532 int bfd_decode_symclass (asymbol *symbol);
   6533 
   6534 bfd_boolean bfd_is_undefined_symclass (int symclass);
   6535 
   6536 void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
   6537 
   6538 bfd_boolean bfd_copy_private_symbol_data
   6539    (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
   6540 
   6541 #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
   6542   BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
   6543             (ibfd, isymbol, obfd, osymbol))
   6544 
   6545 /* Extracted from bfd.c.  */
   6546 
   6547 enum bfd_direction
   6548   {
   6549     no_direction = 0,
   6550     read_direction = 1,
   6551     write_direction = 2,
   6552     both_direction = 3
   6553   };
   6554 
   6555 enum bfd_plugin_format
   6556   {
   6557     bfd_plugin_uknown = 0,
   6558     bfd_plugin_yes = 1,
   6559     bfd_plugin_no = 2
   6560   };
   6561 
   6562 struct bfd_build_id
   6563   {
   6564     bfd_size_type size;
   6565     bfd_byte data[1];
   6566   };
   6567 
   6568 struct bfd
   6569 {
   6570   /* The filename the application opened the BFD with.  */
   6571   const char *filename;
   6572 
   6573   /* A pointer to the target jump table.  */
   6574   const struct bfd_target *xvec;
   6575 
   6576   /* The IOSTREAM, and corresponding IO vector that provide access
   6577      to the file backing the BFD.  */
   6578   void *iostream;
   6579   const struct bfd_iovec *iovec;
   6580 
   6581   /* The caching routines use these to maintain a
   6582      least-recently-used list of BFDs.  */
   6583   struct bfd *lru_prev, *lru_next;
   6584 
   6585   /* When a file is closed by the caching routines, BFD retains
   6586      state information on the file here...  */
   6587   ufile_ptr where;
   6588 
   6589   /* File modified time, if mtime_set is TRUE.  */
   6590   long mtime;
   6591 
   6592   /* A unique identifier of the BFD  */
   6593   unsigned int id;
   6594 
   6595   /* The format which belongs to the BFD. (object, core, etc.)  */
   6596   ENUM_BITFIELD (bfd_format) format : 3;
   6597 
   6598   /* The direction with which the BFD was opened.  */
   6599   ENUM_BITFIELD (bfd_direction) direction : 2;
   6600 
   6601   /* Format_specific flags.  */
   6602   flagword flags : 18;
   6603 
   6604   /* Values that may appear in the flags field of a BFD.  These also
   6605      appear in the object_flags field of the bfd_target structure, where
   6606      they indicate the set of flags used by that backend (not all flags
   6607      are meaningful for all object file formats) (FIXME: at the moment,
   6608      the object_flags values have mostly just been copied from backend
   6609      to another, and are not necessarily correct).  */
   6610 
   6611 #define BFD_NO_FLAGS   0x00
   6612 
   6613   /* BFD contains relocation entries.  */
   6614 #define HAS_RELOC      0x01
   6615 
   6616   /* BFD is directly executable.  */
   6617 #define EXEC_P         0x02
   6618 
   6619   /* BFD has line number information (basically used for F_LNNO in a
   6620      COFF header).  */
   6621 #define HAS_LINENO     0x04
   6622 
   6623   /* BFD has debugging information.  */
   6624 #define HAS_DEBUG      0x08
   6625 
   6626   /* BFD has symbols.  */
   6627 #define HAS_SYMS       0x10
   6628 
   6629   /* BFD has local symbols (basically used for F_LSYMS in a COFF
   6630      header).  */
   6631 #define HAS_LOCALS     0x20
   6632 
   6633   /* BFD is a dynamic object.  */
   6634 #define DYNAMIC        0x40
   6635 
   6636   /* Text section is write protected (if D_PAGED is not set, this is
   6637      like an a.out NMAGIC file) (the linker sets this by default, but
   6638      clears it for -r or -N).  */
   6639 #define WP_TEXT        0x80
   6640 
   6641   /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
   6642      linker sets this by default, but clears it for -r or -n or -N).  */
   6643 #define D_PAGED        0x100
   6644 
   6645   /* BFD is relaxable (this means that bfd_relax_section may be able to
   6646      do something) (sometimes bfd_relax_section can do something even if
   6647      this is not set).  */
   6648 #define BFD_IS_RELAXABLE 0x200
   6649 
   6650   /* This may be set before writing out a BFD to request using a
   6651      traditional format.  For example, this is used to request that when
   6652      writing out an a.out object the symbols not be hashed to eliminate
   6653      duplicates.  */
   6654 #define BFD_TRADITIONAL_FORMAT 0x400
   6655 
   6656   /* This flag indicates that the BFD contents are actually cached
   6657      in memory.  If this is set, iostream points to a bfd_in_memory
   6658      struct.  */
   6659 #define BFD_IN_MEMORY 0x800
   6660 
   6661   /* This BFD has been created by the linker and doesn't correspond
   6662      to any input file.  */
   6663 #define BFD_LINKER_CREATED 0x1000
   6664 
   6665   /* This may be set before writing out a BFD to request that it
   6666      be written using values for UIDs, GIDs, timestamps, etc. that
   6667      will be consistent from run to run.  */
   6668 #define BFD_DETERMINISTIC_OUTPUT 0x2000
   6669 
   6670   /* Compress sections in this BFD.  */
   6671 #define BFD_COMPRESS 0x4000
   6672 
   6673   /* Decompress sections in this BFD.  */
   6674 #define BFD_DECOMPRESS 0x8000
   6675 
   6676   /* BFD is a dummy, for plugins.  */
   6677 #define BFD_PLUGIN 0x10000
   6678 
   6679   /* Compress sections in this BFD with SHF_COMPRESSED from gABI.  */
   6680 #define BFD_COMPRESS_GABI 0x20000
   6681 
   6682   /* Flags bits to be saved in bfd_preserve_save.  */
   6683 #define BFD_FLAGS_SAVED \
   6684   (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN \
   6685    | BFD_COMPRESS_GABI)
   6686 
   6687   /* Flags bits which are for BFD use only.  */
   6688 #define BFD_FLAGS_FOR_BFD_USE_MASK \
   6689   (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
   6690    | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
   6691    | BFD_COMPRESS_GABI)
   6692 
   6693   /* Is the file descriptor being cached?  That is, can it be closed as
   6694      needed, and re-opened when accessed later?  */
   6695   unsigned int cacheable : 1;
   6696 
   6697   /* Marks whether there was a default target specified when the
   6698      BFD was opened. This is used to select which matching algorithm
   6699      to use to choose the back end.  */
   6700   unsigned int target_defaulted : 1;
   6701 
   6702   /* ... and here: (``once'' means at least once).  */
   6703   unsigned int opened_once : 1;
   6704 
   6705   /* Set if we have a locally maintained mtime value, rather than
   6706      getting it from the file each time.  */
   6707   unsigned int mtime_set : 1;
   6708 
   6709   /* Flag set if symbols from this BFD should not be exported.  */
   6710   unsigned int no_export : 1;
   6711 
   6712   /* Remember when output has begun, to stop strange things
   6713      from happening.  */
   6714   unsigned int output_has_begun : 1;
   6715 
   6716   /* Have archive map.  */
   6717   unsigned int has_armap : 1;
   6718 
   6719   /* Set if this is a thin archive.  */
   6720   unsigned int is_thin_archive : 1;
   6721 
   6722   /* Set if only required symbols should be added in the link hash table for
   6723      this object.  Used by VMS linkers.  */
   6724   unsigned int selective_search : 1;
   6725 
   6726   /* Set if this is the linker output BFD.  */
   6727   unsigned int is_linker_output : 1;
   6728 
   6729   /* Set if this is the linker input BFD.  */
   6730   unsigned int is_linker_input : 1;
   6731 
   6732   /* If this is an input for a compiler plug-in library.  */
   6733   ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2;
   6734 
   6735   /* Set if this is a plugin output file.  */
   6736   unsigned int lto_output : 1;
   6737 
   6738   /* Set to dummy BFD created when claimed by a compiler plug-in
   6739      library.  */
   6740   bfd *plugin_dummy_bfd;
   6741 
   6742   /* Currently my_archive is tested before adding origin to
   6743      anything. I believe that this can become always an add of
   6744      origin, with origin set to 0 for non archive files.  */
   6745   ufile_ptr origin;
   6746 
   6747   /* The origin in the archive of the proxy entry.  This will
   6748      normally be the same as origin, except for thin archives,
   6749      when it will contain the current offset of the proxy in the
   6750      thin archive rather than the offset of the bfd in its actual
   6751      container.  */
   6752   ufile_ptr proxy_origin;
   6753 
   6754   /* A hash table for section names.  */
   6755   struct bfd_hash_table section_htab;
   6756 
   6757   /* Pointer to linked list of sections.  */
   6758   struct bfd_section *sections;
   6759 
   6760   /* The last section on the section list.  */
   6761   struct bfd_section *section_last;
   6762 
   6763   /* The number of sections.  */
   6764   unsigned int section_count;
   6765 
   6766   /* A field used by _bfd_generic_link_add_archive_symbols.  This will
   6767      be used only for archive elements.  */
   6768   int archive_pass;
   6769 
   6770   /* Stuff only useful for object files:
   6771      The start address.  */
   6772   bfd_vma start_address;
   6773 
   6774   /* Symbol table for output BFD (with symcount entries).
   6775      Also used by the linker to cache input BFD symbols.  */
   6776   struct bfd_symbol  **outsymbols;
   6777 
   6778   /* Used for input and output.  */
   6779   unsigned int symcount;
   6780 
   6781   /* Used for slurped dynamic symbol tables.  */
   6782   unsigned int dynsymcount;
   6783 
   6784   /* Pointer to structure which contains architecture information.  */
   6785   const struct bfd_arch_info *arch_info;
   6786 
   6787   /* Stuff only useful for archives.  */
   6788   void *arelt_data;
   6789   struct bfd *my_archive;      /* The containing archive BFD.  */
   6790   struct bfd *archive_next;    /* The next BFD in the archive.  */
   6791   struct bfd *archive_head;    /* The first BFD in the archive.  */
   6792   struct bfd *nested_archives; /* List of nested archive in a flattened
   6793                                   thin archive.  */
   6794 
   6795   union {
   6796     /* For input BFDs, a chain of BFDs involved in a link.  */
   6797     struct bfd *next;
   6798     /* For output BFD, the linker hash table.  */
   6799     struct bfd_link_hash_table *hash;
   6800   } link;
   6801 
   6802   /* Used by the back end to hold private data.  */
   6803   union
   6804     {
   6805       struct aout_data_struct *aout_data;
   6806       struct artdata *aout_ar_data;
   6807       struct _oasys_data *oasys_obj_data;
   6808       struct _oasys_ar_data *oasys_ar_data;
   6809       struct coff_tdata *coff_obj_data;
   6810       struct pe_tdata *pe_obj_data;
   6811       struct xcoff_tdata *xcoff_obj_data;
   6812       struct ecoff_tdata *ecoff_obj_data;
   6813       struct ieee_data_struct *ieee_data;
   6814       struct ieee_ar_data_struct *ieee_ar_data;
   6815       struct srec_data_struct *srec_data;
   6816       struct verilog_data_struct *verilog_data;
   6817       struct ihex_data_struct *ihex_data;
   6818       struct tekhex_data_struct *tekhex_data;
   6819       struct elf_obj_tdata *elf_obj_data;
   6820       struct nlm_obj_tdata *nlm_obj_data;
   6821       struct bout_data_struct *bout_data;
   6822       struct mmo_data_struct *mmo_data;
   6823       struct sun_core_struct *sun_core_data;
   6824       struct sco5_core_struct *sco5_core_data;
   6825       struct trad_core_struct *trad_core_data;
   6826       struct som_data_struct *som_data;
   6827       struct hpux_core_struct *hpux_core_data;
   6828       struct hppabsd_core_struct *hppabsd_core_data;
   6829       struct sgi_core_struct *sgi_core_data;
   6830       struct lynx_core_struct *lynx_core_data;
   6831       struct osf_core_struct *osf_core_data;
   6832       struct cisco_core_struct *cisco_core_data;
   6833       struct versados_data_struct *versados_data;
   6834       struct netbsd_core_struct *netbsd_core_data;
   6835       struct mach_o_data_struct *mach_o_data;
   6836       struct mach_o_fat_data_struct *mach_o_fat_data;
   6837       struct plugin_data_struct *plugin_data;
   6838       struct bfd_pef_data_struct *pef_data;
   6839       struct bfd_pef_xlib_data_struct *pef_xlib_data;
   6840       struct bfd_sym_data_struct *sym_data;
   6841       void *any;
   6842     }
   6843   tdata;
   6844 
   6845   /* Used by the application to hold private data.  */
   6846   void *usrdata;
   6847 
   6848   /* Where all the allocated stuff under this BFD goes.  This is a
   6849      struct objalloc *, but we use void * to avoid requiring the inclusion
   6850      of objalloc.h.  */
   6851   void *memory;
   6852 
   6853   /* For input BFDs, the build ID, if the object has one. */
   6854   const struct bfd_build_id *build_id;
   6855 };
   6856 
   6857 /* See note beside bfd_set_section_userdata.  */
   6858 static inline bfd_boolean
   6859 bfd_set_cacheable (bfd * abfd, bfd_boolean val)
   6860 {
   6861   abfd->cacheable = val;
   6862   return TRUE;
   6863 }
   6864 
   6865 
   6866 typedef enum bfd_error
   6867 {
   6868   bfd_error_no_error = 0,
   6869   bfd_error_system_call,
   6870   bfd_error_invalid_target,
   6871   bfd_error_wrong_format,
   6872   bfd_error_wrong_object_format,
   6873   bfd_error_invalid_operation,
   6874   bfd_error_no_memory,
   6875   bfd_error_no_symbols,
   6876   bfd_error_no_armap,
   6877   bfd_error_no_more_archived_files,
   6878   bfd_error_malformed_archive,
   6879   bfd_error_missing_dso,
   6880   bfd_error_file_not_recognized,
   6881   bfd_error_file_ambiguously_recognized,
   6882   bfd_error_no_contents,
   6883   bfd_error_nonrepresentable_section,
   6884   bfd_error_no_debug_section,
   6885   bfd_error_bad_value,
   6886   bfd_error_file_truncated,
   6887   bfd_error_file_too_big,
   6888   bfd_error_on_input,
   6889   bfd_error_invalid_error_code
   6890 }
   6891 bfd_error_type;
   6892 
   6893 bfd_error_type bfd_get_error (void);
   6894 
   6895 void bfd_set_error (bfd_error_type error_tag, ...);
   6896 
   6897 const char *bfd_errmsg (bfd_error_type error_tag);
   6898 
   6899 void bfd_perror (const char *message);
   6900 
   6901 
   6902 typedef void (*bfd_error_handler_type) (const char *, ...);
   6903 
   6904 bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
   6905 
   6906 void bfd_set_error_program_name (const char *);
   6907 
   6908 bfd_error_handler_type bfd_get_error_handler (void);
   6909 
   6910 
   6911 typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
   6912                                          const char *bfd_version,
   6913                                          const char *bfd_file,
   6914                                          int bfd_line);
   6915 
   6916 bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
   6917 
   6918 bfd_assert_handler_type bfd_get_assert_handler (void);
   6919 
   6920 long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
   6921 
   6922 long bfd_canonicalize_reloc
   6923    (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
   6924 
   6925 void bfd_set_reloc
   6926    (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
   6927 
   6928 bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
   6929 
   6930 int bfd_get_arch_size (bfd *abfd);
   6931 
   6932 int bfd_get_sign_extend_vma (bfd *abfd);
   6933 
   6934 bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
   6935 
   6936 unsigned int bfd_get_gp_size (bfd *abfd);
   6937 
   6938 void bfd_set_gp_size (bfd *abfd, unsigned int i);
   6939 
   6940 bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
   6941 
   6942 bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
   6943 
   6944 #define bfd_copy_private_header_data(ibfd, obfd) \
   6945      BFD_SEND (obfd, _bfd_copy_private_header_data, \
   6946                (ibfd, obfd))
   6947 bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
   6948 
   6949 #define bfd_copy_private_bfd_data(ibfd, obfd) \
   6950      BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
   6951                (ibfd, obfd))
   6952 bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
   6953 
   6954 #define bfd_merge_private_bfd_data(ibfd, obfd) \
   6955      BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
   6956                (ibfd, obfd))
   6957 bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
   6958 
   6959 #define bfd_set_private_flags(abfd, flags) \
   6960      BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
   6961 #define bfd_sizeof_headers(abfd, info) \
   6962        BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
   6963 
   6964 #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
   6965        BFD_SEND (abfd, _bfd_find_nearest_line, \
   6966                  (abfd, syms, sec, off, file, func, line, NULL))
   6967 
   6968 #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
   6969                                             line, disc) \
   6970        BFD_SEND (abfd, _bfd_find_nearest_line, \
   6971                  (abfd, syms, sec, off, file, func, line, disc))
   6972 
   6973 #define bfd_find_line(abfd, syms, sym, file, line) \
   6974        BFD_SEND (abfd, _bfd_find_line, \
   6975                  (abfd, syms, sym, file, line))
   6976 
   6977 #define bfd_find_inliner_info(abfd, file, func, line) \
   6978        BFD_SEND (abfd, _bfd_find_inliner_info, \
   6979                  (abfd, file, func, line))
   6980 
   6981 #define bfd_debug_info_start(abfd) \
   6982        BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
   6983 
   6984 #define bfd_debug_info_end(abfd) \
   6985        BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
   6986 
   6987 #define bfd_debug_info_accumulate(abfd, section) \
   6988        BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
   6989 
   6990 #define bfd_stat_arch_elt(abfd, stat) \
   6991        BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
   6992 
   6993 #define bfd_update_armap_timestamp(abfd) \
   6994        BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
   6995 
   6996 #define bfd_set_arch_mach(abfd, arch, mach)\
   6997        BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
   6998 
   6999 #define bfd_relax_section(abfd, section, link_info, again) \
   7000        BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
   7001 
   7002 #define bfd_gc_sections(abfd, link_info) \
   7003        BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
   7004 
   7005 #define bfd_lookup_section_flags(link_info, flag_info, section) \
   7006        BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
   7007 
   7008 #define bfd_merge_sections(abfd, link_info) \
   7009        BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
   7010 
   7011 #define bfd_is_group_section(abfd, sec) \
   7012        BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
   7013 
   7014 #define bfd_discard_group(abfd, sec) \
   7015        BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
   7016 
   7017 #define bfd_link_hash_table_create(abfd) \
   7018        BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
   7019 
   7020 #define bfd_link_add_symbols(abfd, info) \
   7021        BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
   7022 
   7023 #define bfd_link_just_syms(abfd, sec, info) \
   7024        BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
   7025 
   7026 #define bfd_final_link(abfd, info) \
   7027        BFD_SEND (abfd, _bfd_final_link, (abfd, info))
   7028 
   7029 #define bfd_free_cached_info(abfd) \
   7030        BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
   7031 
   7032 #define bfd_get_dynamic_symtab_upper_bound(abfd) \
   7033        BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
   7034 
   7035 #define bfd_print_private_bfd_data(abfd, file)\
   7036        BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
   7037 
   7038 #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
   7039        BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
   7040 
   7041 #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
   7042        BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
   7043                                                    dyncount, dynsyms, ret))
   7044 
   7045 #define bfd_get_dynamic_reloc_upper_bound(abfd) \
   7046        BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
   7047 
   7048 #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
   7049        BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
   7050 
   7051 extern bfd_byte *bfd_get_relocated_section_contents
   7052   (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
   7053    bfd_boolean, asymbol **);
   7054 
   7055 bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
   7056 
   7057 bfd_vma bfd_emul_get_maxpagesize (const char *);
   7058 
   7059 void bfd_emul_set_maxpagesize (const char *, bfd_vma);
   7060 
   7061 bfd_vma bfd_emul_get_commonpagesize (const char *);
   7062 
   7063 void bfd_emul_set_commonpagesize (const char *, bfd_vma);
   7064 
   7065 char *bfd_demangle (bfd *, const char *, int);
   7066 
   7067 void bfd_update_compression_header
   7068    (bfd *abfd, bfd_byte *contents, asection *sec);
   7069 
   7070 bfd_boolean bfd_check_compression_header
   7071    (bfd *abfd, bfd_byte *contents, asection *sec,
   7072     bfd_size_type *uncompressed_size);
   7073 
   7074 int bfd_get_compression_header_size (bfd *abfd, asection *sec);
   7075 
   7076 bfd_size_type bfd_convert_section_size
   7077    (bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size);
   7078 
   7079 bfd_boolean bfd_convert_section_contents
   7080    (bfd *ibfd, asection *isec, bfd *obfd,
   7081     bfd_byte **ptr, bfd_size_type *ptr_size);
   7082 
   7083 /* Extracted from archive.c.  */
   7084 symindex bfd_get_next_mapent
   7085    (bfd *abfd, symindex previous, carsym **sym);
   7086 
   7087 bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
   7088 
   7089 bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
   7090 
   7091 /* Extracted from corefile.c.  */
   7092 const char *bfd_core_file_failing_command (bfd *abfd);
   7093 
   7094 int bfd_core_file_failing_signal (bfd *abfd);
   7095 
   7096 int bfd_core_file_pid (bfd *abfd);
   7097 
   7098 bfd_boolean core_file_matches_executable_p
   7099    (bfd *core_bfd, bfd *exec_bfd);
   7100 
   7101 bfd_boolean generic_core_file_matches_executable_p
   7102    (bfd *core_bfd, bfd *exec_bfd);
   7103 
   7104 /* Extracted from targets.c.  */
   7105 #define BFD_SEND(bfd, message, arglist) \
   7106   ((*((bfd)->xvec->message)) arglist)
   7107 
   7108 #ifdef DEBUG_BFD_SEND
   7109 #undef BFD_SEND
   7110 #define BFD_SEND(bfd, message, arglist) \
   7111   (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
   7112     ((*((bfd)->xvec->message)) arglist) : \
   7113     (bfd_assert (__FILE__,__LINE__), NULL))
   7114 #endif
   7115 #define BFD_SEND_FMT(bfd, message, arglist) \
   7116   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
   7117 
   7118 #ifdef DEBUG_BFD_SEND
   7119 #undef BFD_SEND_FMT
   7120 #define BFD_SEND_FMT(bfd, message, arglist) \
   7121   (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
   7122    (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
   7123    (bfd_assert (__FILE__,__LINE__), NULL))
   7124 #endif
   7125 
   7126 enum bfd_flavour
   7127 {
   7128   /* N.B. Update bfd_flavour_name if you change this.  */
   7129   bfd_target_unknown_flavour,
   7130   bfd_target_aout_flavour,
   7131   bfd_target_coff_flavour,
   7132   bfd_target_ecoff_flavour,
   7133   bfd_target_xcoff_flavour,
   7134   bfd_target_elf_flavour,
   7135   bfd_target_ieee_flavour,
   7136   bfd_target_nlm_flavour,
   7137   bfd_target_oasys_flavour,
   7138   bfd_target_tekhex_flavour,
   7139   bfd_target_srec_flavour,
   7140   bfd_target_verilog_flavour,
   7141   bfd_target_ihex_flavour,
   7142   bfd_target_som_flavour,
   7143   bfd_target_os9k_flavour,
   7144   bfd_target_versados_flavour,
   7145   bfd_target_msdos_flavour,
   7146   bfd_target_ovax_flavour,
   7147   bfd_target_evax_flavour,
   7148   bfd_target_mmo_flavour,
   7149   bfd_target_mach_o_flavour,
   7150   bfd_target_pef_flavour,
   7151   bfd_target_pef_xlib_flavour,
   7152   bfd_target_sym_flavour
   7153 };
   7154 
   7155 enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
   7156 
   7157 /* Forward declaration.  */
   7158 typedef struct bfd_link_info _bfd_link_info;
   7159 
   7160 /* Forward declaration.  */
   7161 typedef struct flag_info flag_info;
   7162 
   7163 typedef struct bfd_target
   7164 {
   7165   /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
   7166   char *name;
   7167 
   7168  /* The "flavour" of a back end is a general indication about
   7169     the contents of a file.  */
   7170   enum bfd_flavour flavour;
   7171 
   7172   /* The order of bytes within the data area of a file.  */
   7173   enum bfd_endian byteorder;
   7174 
   7175  /* The order of bytes within the header parts of a file.  */
   7176   enum bfd_endian header_byteorder;
   7177 
   7178   /* A mask of all the flags which an executable may have set -
   7179      from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.  */
   7180   flagword object_flags;
   7181 
   7182  /* A mask of all the flags which a section may have set - from
   7183     the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.  */
   7184   flagword section_flags;
   7185 
   7186  /* The character normally found at the front of a symbol.
   7187     (if any), perhaps `_'.  */
   7188   char symbol_leading_char;
   7189 
   7190  /* The pad character for file names within an archive header.  */
   7191   char ar_pad_char;
   7192 
   7193   /* The maximum number of characters in an archive header.  */
   7194   unsigned char ar_max_namelen;
   7195 
   7196   /* How well this target matches, used to select between various
   7197      possible targets when more than one target matches.  */
   7198   unsigned char match_priority;
   7199 
   7200   /* Entries for byte swapping for data. These are different from the
   7201      other entry points, since they don't take a BFD as the first argument.
   7202      Certain other handlers could do the same.  */
   7203   bfd_uint64_t   (*bfd_getx64) (const void *);
   7204   bfd_int64_t    (*bfd_getx_signed_64) (const void *);
   7205   void           (*bfd_putx64) (bfd_uint64_t, void *);
   7206   bfd_vma        (*bfd_getx32) (const void *);
   7207   bfd_signed_vma (*bfd_getx_signed_32) (const void *);
   7208   void           (*bfd_putx32) (bfd_vma, void *);
   7209   bfd_vma        (*bfd_getx16) (const void *);
   7210   bfd_signed_vma (*bfd_getx_signed_16) (const void *);
   7211   void           (*bfd_putx16) (bfd_vma, void *);
   7212 
   7213   /* Byte swapping for the headers.  */
   7214   bfd_uint64_t   (*bfd_h_getx64) (const void *);
   7215   bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
   7216   void           (*bfd_h_putx64) (bfd_uint64_t, void *);
   7217   bfd_vma        (*bfd_h_getx32) (const void *);
   7218   bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
   7219   void           (*bfd_h_putx32) (bfd_vma, void *);
   7220   bfd_vma        (*bfd_h_getx16) (const void *);
   7221   bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
   7222   void           (*bfd_h_putx16) (bfd_vma, void *);
   7223 
   7224   /* Format dependent routines: these are vectors of entry points
   7225      within the target vector structure, one for each format to check.  */
   7226 
   7227   /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
   7228   const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
   7229 
   7230   /* Set the format of a file being written.  */
   7231   bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
   7232 
   7233   /* Write cached information into a file being written, at <<bfd_close>>.  */
   7234   bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
   7235 
   7236 
   7237   /* Generic entry points.  */
   7238 #define BFD_JUMP_TABLE_GENERIC(NAME) \
   7239   NAME##_close_and_cleanup, \
   7240   NAME##_bfd_free_cached_info, \
   7241   NAME##_new_section_hook, \
   7242   NAME##_get_section_contents, \
   7243   NAME##_get_section_contents_in_window
   7244 
   7245   /* Called when the BFD is being closed to do any necessary cleanup.  */
   7246   bfd_boolean (*_close_and_cleanup) (bfd *);
   7247   /* Ask the BFD to free all cached information.  */
   7248   bfd_boolean (*_bfd_free_cached_info) (bfd *);
   7249   /* Called when a new section is created.  */
   7250   bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
   7251   /* Read the contents of a section.  */
   7252   bfd_boolean (*_bfd_get_section_contents)
   7253     (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
   7254   bfd_boolean (*_bfd_get_section_contents_in_window)
   7255     (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
   7256 
   7257   /* Entry points to copy private data.  */
   7258 #define BFD_JUMP_TABLE_COPY(NAME) \
   7259   NAME##_bfd_copy_private_bfd_data, \
   7260   NAME##_bfd_merge_private_bfd_data, \
   7261   _bfd_generic_init_private_section_data, \
   7262   NAME##_bfd_copy_private_section_data, \
   7263   NAME##_bfd_copy_private_symbol_data, \
   7264   NAME##_bfd_copy_private_header_data, \
   7265   NAME##_bfd_set_private_flags, \
   7266   NAME##_bfd_print_private_bfd_data
   7267 
   7268   /* Called to copy BFD general private data from one object file
   7269      to another.  */
   7270   bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
   7271   /* Called to merge BFD general private data from one object file
   7272      to a common output file when linking.  */
   7273   bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
   7274   /* Called to initialize BFD private section data from one object file
   7275      to another.  */
   7276 #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
   7277   BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
   7278   bfd_boolean (*_bfd_init_private_section_data)
   7279     (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
   7280   /* Called to copy BFD private section data from one object file
   7281      to another.  */
   7282   bfd_boolean (*_bfd_copy_private_section_data)
   7283     (bfd *, sec_ptr, bfd *, sec_ptr);
   7284   /* Called to copy BFD private symbol data from one symbol
   7285      to another.  */
   7286   bfd_boolean (*_bfd_copy_private_symbol_data)
   7287     (bfd *, asymbol *, bfd *, asymbol *);
   7288   /* Called to copy BFD private header data from one object file
   7289      to another.  */
   7290   bfd_boolean (*_bfd_copy_private_header_data)
   7291     (bfd *, bfd *);
   7292   /* Called to set private backend flags.  */
   7293   bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
   7294 
   7295   /* Called to print private BFD data.  */
   7296   bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
   7297 
   7298   /* Core file entry points.  */
   7299 #define BFD_JUMP_TABLE_CORE(NAME) \
   7300   NAME##_core_file_failing_command, \
   7301   NAME##_core_file_failing_signal, \
   7302   NAME##_core_file_matches_executable_p, \
   7303   NAME##_core_file_pid
   7304 
   7305   char *      (*_core_file_failing_command) (bfd *);
   7306   int         (*_core_file_failing_signal) (bfd *);
   7307   bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
   7308   int         (*_core_file_pid) (bfd *);
   7309 
   7310   /* Archive entry points.  */
   7311 #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
   7312   NAME##_slurp_armap, \
   7313   NAME##_slurp_extended_name_table, \
   7314   NAME##_construct_extended_name_table, \
   7315   NAME##_truncate_arname, \
   7316   NAME##_write_armap, \
   7317   NAME##_read_ar_hdr, \
   7318   NAME##_write_ar_hdr, \
   7319   NAME##_openr_next_archived_file, \
   7320   NAME##_get_elt_at_index, \
   7321   NAME##_generic_stat_arch_elt, \
   7322   NAME##_update_armap_timestamp
   7323 
   7324   bfd_boolean (*_bfd_slurp_armap) (bfd *);
   7325   bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
   7326   bfd_boolean (*_bfd_construct_extended_name_table)
   7327     (bfd *, char **, bfd_size_type *, const char **);
   7328   void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
   7329   bfd_boolean (*write_armap)
   7330     (bfd *, unsigned int, struct orl *, unsigned int, int);
   7331   void *      (*_bfd_read_ar_hdr_fn) (bfd *);
   7332   bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
   7333   bfd *       (*openr_next_archived_file) (bfd *, bfd *);
   7334 #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
   7335   bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
   7336   int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
   7337   bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
   7338 
   7339   /* Entry points used for symbols.  */
   7340 #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
   7341   NAME##_get_symtab_upper_bound, \
   7342   NAME##_canonicalize_symtab, \
   7343   NAME##_make_empty_symbol, \
   7344   NAME##_print_symbol, \
   7345   NAME##_get_symbol_info, \
   7346   NAME##_get_symbol_version_string, \
   7347   NAME##_bfd_is_local_label_name, \
   7348   NAME##_bfd_is_target_special_symbol, \
   7349   NAME##_get_lineno, \
   7350   NAME##_find_nearest_line, \
   7351   NAME##_find_line, \
   7352   NAME##_find_inliner_info, \
   7353   NAME##_bfd_make_debug_symbol, \
   7354   NAME##_read_minisymbols, \
   7355   NAME##_minisymbol_to_symbol
   7356 
   7357   long        (*_bfd_get_symtab_upper_bound) (bfd *);
   7358   long        (*_bfd_canonicalize_symtab)
   7359     (bfd *, struct bfd_symbol **);
   7360   struct bfd_symbol *
   7361               (*_bfd_make_empty_symbol) (bfd *);
   7362   void        (*_bfd_print_symbol)
   7363     (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
   7364 #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
   7365   void        (*_bfd_get_symbol_info)
   7366     (bfd *, struct bfd_symbol *, symbol_info *);
   7367 #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
   7368   const char *(*_bfd_get_symbol_version_string)
   7369     (bfd *, struct bfd_symbol *, bfd_boolean *);
   7370 #define bfd_get_symbol_version_string(b,s,h) BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))
   7371   bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
   7372   bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
   7373   alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
   7374   bfd_boolean (*_bfd_find_nearest_line)
   7375     (bfd *, struct bfd_symbol **, struct bfd_section *, bfd_vma,
   7376      const char **, const char **, unsigned int *, unsigned int *);
   7377   bfd_boolean (*_bfd_find_line)
   7378     (bfd *, struct bfd_symbol **, struct bfd_symbol *,
   7379      const char **, unsigned int *);
   7380   bfd_boolean (*_bfd_find_inliner_info)
   7381     (bfd *, const char **, const char **, unsigned int *);
   7382  /* Back-door to allow format-aware applications to create debug symbols
   7383     while using BFD for everything else.  Currently used by the assembler
   7384     when creating COFF files.  */
   7385   asymbol *   (*_bfd_make_debug_symbol)
   7386     (bfd *, void *, unsigned long size);
   7387 #define bfd_read_minisymbols(b, d, m, s) \
   7388   BFD_SEND (b, _read_minisymbols, (b, d, m, s))
   7389   long        (*_read_minisymbols)
   7390     (bfd *, bfd_boolean, void **, unsigned int *);
   7391 #define bfd_minisymbol_to_symbol(b, d, m, f) \
   7392   BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
   7393   asymbol *   (*_minisymbol_to_symbol)
   7394     (bfd *, bfd_boolean, const void *, asymbol *);
   7395 
   7396   /* Routines for relocs.  */
   7397 #define BFD_JUMP_TABLE_RELOCS(NAME) \
   7398   NAME##_get_reloc_upper_bound, \
   7399   NAME##_canonicalize_reloc, \
   7400   NAME##_bfd_reloc_type_lookup, \
   7401   NAME##_bfd_reloc_name_lookup
   7402 
   7403   long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
   7404   long        (*_bfd_canonicalize_reloc)
   7405     (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
   7406   /* See documentation on reloc types.  */
   7407   reloc_howto_type *
   7408               (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
   7409   reloc_howto_type *
   7410               (*reloc_name_lookup) (bfd *, const char *);
   7411 
   7412 
   7413   /* Routines used when writing an object file.  */
   7414 #define BFD_JUMP_TABLE_WRITE(NAME) \
   7415   NAME##_set_arch_mach, \
   7416   NAME##_set_section_contents
   7417 
   7418   bfd_boolean (*_bfd_set_arch_mach)
   7419     (bfd *, enum bfd_architecture, unsigned long);
   7420   bfd_boolean (*_bfd_set_section_contents)
   7421     (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
   7422 
   7423   /* Routines used by the linker.  */
   7424 #define BFD_JUMP_TABLE_LINK(NAME) \
   7425   NAME##_sizeof_headers, \
   7426   NAME##_bfd_get_relocated_section_contents, \
   7427   NAME##_bfd_relax_section, \
   7428   NAME##_bfd_link_hash_table_create, \
   7429   NAME##_bfd_link_add_symbols, \
   7430   NAME##_bfd_link_just_syms, \
   7431   NAME##_bfd_copy_link_hash_symbol_type, \
   7432   NAME##_bfd_final_link, \
   7433   NAME##_bfd_link_split_section, \
   7434   NAME##_bfd_gc_sections, \
   7435   NAME##_bfd_lookup_section_flags, \
   7436   NAME##_bfd_merge_sections, \
   7437   NAME##_bfd_is_group_section, \
   7438   NAME##_bfd_discard_group, \
   7439   NAME##_section_already_linked, \
   7440   NAME##_bfd_define_common_symbol
   7441 
   7442   int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
   7443   bfd_byte *  (*_bfd_get_relocated_section_contents)
   7444     (bfd *, struct bfd_link_info *, struct bfd_link_order *,
   7445      bfd_byte *, bfd_boolean, struct bfd_symbol **);
   7446 
   7447   bfd_boolean (*_bfd_relax_section)
   7448     (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
   7449 
   7450   /* Create a hash table for the linker.  Different backends store
   7451      different information in this table.  */
   7452   struct bfd_link_hash_table *
   7453               (*_bfd_link_hash_table_create) (bfd *);
   7454 
   7455   /* Add symbols from this object file into the hash table.  */
   7456   bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
   7457 
   7458   /* Indicate that we are only retrieving symbol values from this section.  */
   7459   void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
   7460 
   7461   /* Copy the symbol type and other attributes for a linker script
   7462      assignment of one symbol to another.  */
   7463 #define bfd_copy_link_hash_symbol_type(b, t, f) \
   7464   BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
   7465   void (*_bfd_copy_link_hash_symbol_type)
   7466     (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
   7467 
   7468   /* Do a link based on the link_order structures attached to each
   7469      section of the BFD.  */
   7470   bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
   7471 
   7472   /* Should this section be split up into smaller pieces during linking.  */
   7473   bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
   7474 
   7475   /* Remove sections that are not referenced from the output.  */
   7476   bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
   7477 
   7478   /* Sets the bitmask of allowed and disallowed section flags.  */
   7479   bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
   7480                                             struct flag_info *,
   7481                                             asection *);
   7482 
   7483   /* Attempt to merge SEC_MERGE sections.  */
   7484   bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
   7485 
   7486   /* Is this section a member of a group?  */
   7487   bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
   7488 
   7489   /* Discard members of a group.  */
   7490   bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
   7491 
   7492   /* Check if SEC has been already linked during a reloceatable or
   7493      final link.  */
   7494   bfd_boolean (*_section_already_linked) (bfd *, asection *,
   7495                                           struct bfd_link_info *);
   7496 
   7497   /* Define a common symbol.  */
   7498   bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
   7499                                             struct bfd_link_hash_entry *);
   7500 
   7501   /* Routines to handle dynamic symbols and relocs.  */
   7502 #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
   7503   NAME##_get_dynamic_symtab_upper_bound, \
   7504   NAME##_canonicalize_dynamic_symtab, \
   7505   NAME##_get_synthetic_symtab, \
   7506   NAME##_get_dynamic_reloc_upper_bound, \
   7507   NAME##_canonicalize_dynamic_reloc
   7508 
   7509   /* Get the amount of memory required to hold the dynamic symbols.  */
   7510   long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
   7511   /* Read in the dynamic symbols.  */
   7512   long        (*_bfd_canonicalize_dynamic_symtab)
   7513     (bfd *, struct bfd_symbol **);
   7514   /* Create synthetized symbols.  */
   7515   long        (*_bfd_get_synthetic_symtab)
   7516     (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
   7517      struct bfd_symbol **);
   7518   /* Get the amount of memory required to hold the dynamic relocs.  */
   7519   long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
   7520   /* Read in the dynamic relocs.  */
   7521   long        (*_bfd_canonicalize_dynamic_reloc)
   7522     (bfd *, arelent **, struct bfd_symbol **);
   7523 
   7524   /* Opposite endian version of this target.  */
   7525   const struct bfd_target * alternative_target;
   7526 
   7527   /* Data for use by back-end routines, which isn't
   7528      generic enough to belong in this structure.  */
   7529   const void *backend_data;
   7530 
   7531 } bfd_target;
   7532 
   7533 bfd_boolean bfd_set_default_target (const char *name);
   7534 
   7535 const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
   7536 
   7537 const bfd_target *bfd_get_target_info (const char *target_name,
   7538     bfd *abfd,
   7539     bfd_boolean *is_bigendian,
   7540     int *underscoring,
   7541     const char **def_target_arch);
   7542 const char ** bfd_target_list (void);
   7543 
   7544 const bfd_target *bfd_search_for_target
   7545    (int (*search_func) (const bfd_target *, void *),
   7546     void *);
   7547 
   7548 const char *bfd_flavour_name (enum bfd_flavour flavour);
   7549 
   7550 /* Extracted from format.c.  */
   7551 bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
   7552 
   7553 bfd_boolean bfd_check_format_matches
   7554    (bfd *abfd, bfd_format format, char ***matching);
   7555 
   7556 bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
   7557 
   7558 const char *bfd_format_string (bfd_format format);
   7559 
   7560 /* Extracted from linker.c.  */
   7561 bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
   7562 
   7563 #define bfd_link_split_section(abfd, sec) \
   7564        BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
   7565 
   7566 bfd_boolean bfd_section_already_linked (bfd *abfd,
   7567     asection *sec,
   7568     struct bfd_link_info *info);
   7569 
   7570 #define bfd_section_already_linked(abfd, sec, info) \
   7571        BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
   7572 
   7573 bfd_boolean bfd_generic_define_common_symbol
   7574    (bfd *output_bfd, struct bfd_link_info *info,
   7575     struct bfd_link_hash_entry *h);
   7576 
   7577 #define bfd_define_common_symbol(output_bfd, info, h) \
   7578        BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
   7579 
   7580 struct bfd_elf_version_tree * bfd_find_version_for_sym
   7581    (struct bfd_elf_version_tree *verdefs,
   7582     const char *sym_name, bfd_boolean *hide);
   7583 
   7584 bfd_boolean bfd_hide_sym_by_version
   7585    (struct bfd_elf_version_tree *verdefs, const char *sym_name);
   7586 
   7587 /* Extracted from simple.c.  */
   7588 bfd_byte *bfd_simple_get_relocated_section_contents
   7589    (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
   7590 
   7591 /* Extracted from compress.c.  */
   7592 bfd_boolean bfd_get_full_section_contents
   7593    (bfd *abfd, asection *section, bfd_byte **ptr);
   7594 
   7595 void bfd_cache_section_contents
   7596    (asection *sec, void *contents);
   7597 
   7598 bfd_boolean bfd_is_section_compressed_with_header
   7599    (bfd *abfd, asection *section,
   7600     int *compression_header_size_p,
   7601     bfd_size_type *uncompressed_size_p);
   7602 
   7603 bfd_boolean bfd_is_section_compressed
   7604    (bfd *abfd, asection *section);
   7605 
   7606 bfd_boolean bfd_init_section_decompress_status
   7607    (bfd *abfd, asection *section);
   7608 
   7609 bfd_boolean bfd_init_section_compress_status
   7610    (bfd *abfd, asection *section);
   7611 
   7612 bfd_boolean bfd_compress_section
   7613    (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer);
   7614 
   7615 #ifdef __cplusplus
   7616 }
   7617 #endif
   7618 #endif
   7619