[BACK]Return to bfd.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / external / gpl3 / binutils.old / lib / libbfd / arch / mips64el

Annotation of src/external/gpl3/binutils.old/lib/libbfd/arch/mips64el/bfd.h, Revision 1.7

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

CVSweb <webmaster@jp.NetBSD.org>