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