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