gdb/riscv: Use TYPE_SAFE_NAME
[external/binutils.git] / bfd / reloc.c
1 /* BFD support for handling relocation entries.
2    Copyright (C) 1990-2018 Free Software Foundation, Inc.
3    Written by Cygnus Support.
4
5    This file is part of BFD, the Binary File Descriptor library.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20    MA 02110-1301, USA.  */
21
22 /*
23 SECTION
24         Relocations
25
26         BFD maintains relocations in much the same way it maintains
27         symbols: they are left alone until required, then read in
28         en-masse and translated into an internal form.  A common
29         routine <<bfd_perform_relocation>> acts upon the
30         canonical form to do the fixup.
31
32         Relocations are maintained on a per section basis,
33         while symbols are maintained on a per BFD basis.
34
35         All that a back end has to do to fit the BFD interface is to create
36         a <<struct reloc_cache_entry>> for each relocation
37         in a particular section, and fill in the right bits of the structures.
38
39 @menu
40 @* typedef arelent::
41 @* howto manager::
42 @end menu
43
44 */
45
46 /* DO compile in the reloc_code name table from libbfd.h.  */
47 #define _BFD_MAKE_TABLE_bfd_reloc_code_real
48
49 #include "sysdep.h"
50 #include "bfd.h"
51 #include "bfdlink.h"
52 #include "libbfd.h"
53 #include "bfdver.h"
54 /*
55 DOCDD
56 INODE
57         typedef arelent, howto manager, Relocations, Relocations
58
59 SUBSECTION
60         typedef arelent
61
62         This is the structure of a relocation entry:
63
64 CODE_FRAGMENT
65 .
66 .typedef enum bfd_reloc_status
67 .{
68 .  {* No errors detected.  Note - the value 2 is used so that it
69 .     will not be mistaken for the boolean TRUE or FALSE values.  *}
70 .  bfd_reloc_ok = 2,
71 .
72 .  {* The relocation was performed, but there was an overflow.  *}
73 .  bfd_reloc_overflow,
74 .
75 .  {* The address to relocate was not within the section supplied.  *}
76 .  bfd_reloc_outofrange,
77 .
78 .  {* Used by special functions.  *}
79 .  bfd_reloc_continue,
80 .
81 .  {* Unsupported relocation size requested.  *}
82 .  bfd_reloc_notsupported,
83 .
84 .  {* Unused.  *}
85 .  bfd_reloc_other,
86 .
87 .  {* The symbol to relocate against was undefined.  *}
88 .  bfd_reloc_undefined,
89 .
90 .  {* The relocation was performed, but may not be ok.  If this type is
91 .     returned, the error_message argument to bfd_perform_relocation
92 .     will be set.  *}
93 .  bfd_reloc_dangerous
94 . }
95 . bfd_reloc_status_type;
96 .
97 .
98 .typedef struct reloc_cache_entry
99 .{
100 .  {* A pointer into the canonical table of pointers.  *}
101 .  struct bfd_symbol **sym_ptr_ptr;
102 .
103 .  {* offset in section.  *}
104 .  bfd_size_type address;
105 .
106 .  {* addend for relocation value.  *}
107 .  bfd_vma addend;
108 .
109 .  {* Pointer to how to perform the required relocation.  *}
110 .  reloc_howto_type *howto;
111 .
112 .}
113 .arelent;
114 .
115 */
116
117 /*
118 DESCRIPTION
119
120         Here is a description of each of the fields within an <<arelent>>:
121
122         o <<sym_ptr_ptr>>
123
124         The symbol table pointer points to a pointer to the symbol
125         associated with the relocation request.  It is the pointer
126         into the table returned by the back end's
127         <<canonicalize_symtab>> action. @xref{Symbols}. The symbol is
128         referenced through a pointer to a pointer so that tools like
129         the linker can fix up all the symbols of the same name by
130         modifying only one pointer. The relocation routine looks in
131         the symbol and uses the base of the section the symbol is
132         attached to and the value of the symbol as the initial
133         relocation offset. If the symbol pointer is zero, then the
134         section provided is looked up.
135
136         o <<address>>
137
138         The <<address>> field gives the offset in bytes from the base of
139         the section data which owns the relocation record to the first
140         byte of relocatable information. The actual data relocated
141         will be relative to this point; for example, a relocation
142         type which modifies the bottom two bytes of a four byte word
143         would not touch the first byte pointed to in a big endian
144         world.
145
146         o <<addend>>
147
148         The <<addend>> is a value provided by the back end to be added (!)
149         to the relocation offset. Its interpretation is dependent upon
150         the howto. For example, on the 68k the code:
151
152 |        char foo[];
153 |        main()
154 |                {
155 |                return foo[0x12345678];
156 |                }
157
158         Could be compiled into:
159
160 |        linkw fp,#-4
161 |        moveb @@#12345678,d0
162 |        extbl d0
163 |        unlk fp
164 |        rts
165
166         This could create a reloc pointing to <<foo>>, but leave the
167         offset in the data, something like:
168
169 |RELOCATION RECORDS FOR [.text]:
170 |offset   type      value
171 |00000006 32        _foo
172 |
173 |00000000 4e56 fffc          ; linkw fp,#-4
174 |00000004 1039 1234 5678     ; moveb @@#12345678,d0
175 |0000000a 49c0               ; extbl d0
176 |0000000c 4e5e               ; unlk fp
177 |0000000e 4e75               ; rts
178
179         Using coff and an 88k, some instructions don't have enough
180         space in them to represent the full address range, and
181         pointers have to be loaded in two parts. So you'd get something like:
182
183 |        or.u     r13,r0,hi16(_foo+0x12345678)
184 |        ld.b     r2,r13,lo16(_foo+0x12345678)
185 |        jmp      r1
186
187         This should create two relocs, both pointing to <<_foo>>, and with
188         0x12340000 in their addend field. The data would consist of:
189
190 |RELOCATION RECORDS FOR [.text]:
191 |offset   type      value
192 |00000002 HVRT16    _foo+0x12340000
193 |00000006 LVRT16    _foo+0x12340000
194 |
195 |00000000 5da05678           ; or.u r13,r0,0x5678
196 |00000004 1c4d5678           ; ld.b r2,r13,0x5678
197 |00000008 f400c001           ; jmp r1
198
199         The relocation routine digs out the value from the data, adds
200         it to the addend to get the original offset, and then adds the
201         value of <<_foo>>. Note that all 32 bits have to be kept around
202         somewhere, to cope with carry from bit 15 to bit 16.
203
204         One further example is the sparc and the a.out format. The
205         sparc has a similar problem to the 88k, in that some
206         instructions don't have room for an entire offset, but on the
207         sparc the parts are created in odd sized lumps. The designers of
208         the a.out format chose to not use the data within the section
209         for storing part of the offset; all the offset is kept within
210         the reloc. Anything in the data should be ignored.
211
212 |        save %sp,-112,%sp
213 |        sethi %hi(_foo+0x12345678),%g2
214 |        ldsb [%g2+%lo(_foo+0x12345678)],%i0
215 |        ret
216 |        restore
217
218         Both relocs contain a pointer to <<foo>>, and the offsets
219         contain junk.
220
221 |RELOCATION RECORDS FOR [.text]:
222 |offset   type      value
223 |00000004 HI22      _foo+0x12345678
224 |00000008 LO10      _foo+0x12345678
225 |
226 |00000000 9de3bf90     ; save %sp,-112,%sp
227 |00000004 05000000     ; sethi %hi(_foo+0),%g2
228 |00000008 f048a000     ; ldsb [%g2+%lo(_foo+0)],%i0
229 |0000000c 81c7e008     ; ret
230 |00000010 81e80000     ; restore
231
232         o <<howto>>
233
234         The <<howto>> field can be imagined as a
235         relocation instruction. It is a pointer to a structure which
236         contains information on what to do with all of the other
237         information in the reloc record and data section. A back end
238         would normally have a relocation instruction set and turn
239         relocations into pointers to the correct structure on input -
240         but it would be possible to create each howto field on demand.
241
242 */
243
244 /*
245 SUBSUBSECTION
246         <<enum complain_overflow>>
247
248         Indicates what sort of overflow checking should be done when
249         performing a relocation.
250
251 CODE_FRAGMENT
252 .
253 .enum complain_overflow
254 .{
255 .  {* Do not complain on overflow.  *}
256 .  complain_overflow_dont,
257 .
258 .  {* Complain if the value overflows when considered as a signed
259 .     number one bit larger than the field.  ie. A bitfield of N bits
260 .     is allowed to represent -2**n to 2**n-1.  *}
261 .  complain_overflow_bitfield,
262 .
263 .  {* Complain if the value overflows when considered as a signed
264 .     number.  *}
265 .  complain_overflow_signed,
266 .
267 .  {* Complain if the value overflows when considered as an
268 .     unsigned number.  *}
269 .  complain_overflow_unsigned
270 .};
271
272 */
273
274 /*
275 SUBSUBSECTION
276         <<reloc_howto_type>>
277
278         The <<reloc_howto_type>> is a structure which contains all the
279         information that libbfd needs to know to tie up a back end's data.
280
281 CODE_FRAGMENT
282 .struct bfd_symbol;             {* Forward declaration.  *}
283 .
284 .struct reloc_howto_struct
285 .{
286 .  {*  The type field has mainly a documentary use - the back end can
287 .      do what it wants with it, though normally the back end's
288 .      external idea of what a reloc number is stored
289 .      in this field.  For example, a PC relative word relocation
290 .      in a coff environment has the type 023 - because that's
291 .      what the outside world calls a R_PCRWORD reloc.  *}
292 .  unsigned int type;
293 .
294 .  {*  The value the final relocation is shifted right by.  This drops
295 .      unwanted data from the relocation.  *}
296 .  unsigned int rightshift;
297 .
298 .  {*  The size of the item to be relocated.  This is *not* a
299 .      power-of-two measure.  To get the number of bytes operated
300 .      on by a type of relocation, use bfd_get_reloc_size.  *}
301 .  int size;
302 .
303 .  {*  The number of bits in the item to be relocated.  This is used
304 .      when doing overflow checking.  *}
305 .  unsigned int bitsize;
306 .
307 .  {*  The relocation is relative to the field being relocated.  *}
308 .  bfd_boolean pc_relative;
309 .
310 .  {*  The bit position of the reloc value in the destination.
311 .      The relocated value is left shifted by this amount.  *}
312 .  unsigned int bitpos;
313 .
314 .  {* What type of overflow error should be checked for when
315 .     relocating.  *}
316 .  enum complain_overflow complain_on_overflow;
317 .
318 .  {* If this field is non null, then the supplied function is
319 .     called rather than the normal function.  This allows really
320 .     strange relocation methods to be accommodated.  *}
321 .  bfd_reloc_status_type (*special_function)
322 .    (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
323 .     bfd *, char **);
324 .
325 .  {* The textual name of the relocation type.  *}
326 .  char *name;
327 .
328 .  {* Some formats record a relocation addend in the section contents
329 .     rather than with the relocation.  For ELF formats this is the
330 .     distinction between USE_REL and USE_RELA (though the code checks
331 .     for USE_REL == 1/0).  The value of this field is TRUE if the
332 .     addend is recorded with the section contents; when performing a
333 .     partial link (ld -r) the section contents (the data) will be
334 .     modified.  The value of this field is FALSE if addends are
335 .     recorded with the relocation (in arelent.addend); when performing
336 .     a partial link the relocation will be modified.
337 .     All relocations for all ELF USE_RELA targets should set this field
338 .     to FALSE (values of TRUE should be looked on with suspicion).
339 .     However, the converse is not true: not all relocations of all ELF
340 .     USE_REL targets set this field to TRUE.  Why this is so is peculiar
341 .     to each particular target.  For relocs that aren't used in partial
342 .     links (e.g. GOT stuff) it doesn't matter what this is set to.  *}
343 .  bfd_boolean partial_inplace;
344 .
345 .  {* src_mask selects the part of the instruction (or data) to be used
346 .     in the relocation sum.  If the target relocations don't have an
347 .     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
348 .     dst_mask to extract the addend from the section contents.  If
349 .     relocations do have an addend in the reloc, eg. ELF USE_RELA, this
350 .     field should be zero.  Non-zero values for ELF USE_RELA targets are
351 .     bogus as in those cases the value in the dst_mask part of the
352 .     section contents should be treated as garbage.  *}
353 .  bfd_vma src_mask;
354 .
355 .  {* dst_mask selects which parts of the instruction (or data) are
356 .     replaced with a relocated value.  *}
357 .  bfd_vma dst_mask;
358 .
359 .  {* When some formats create PC relative instructions, they leave
360 .     the value of the pc of the place being relocated in the offset
361 .     slot of the instruction, so that a PC relative relocation can
362 .     be made just by adding in an ordinary offset (e.g., sun3 a.out).
363 .     Some formats leave the displacement part of an instruction
364 .     empty (e.g., ELF); this flag signals the fact.  *}
365 .  bfd_boolean pcrel_offset;
366 .};
367 .
368 */
369
370 /*
371 FUNCTION
372         The HOWTO Macro
373
374 DESCRIPTION
375         The HOWTO define is horrible and will go away.
376
377 .#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
378 .  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
379
380 DESCRIPTION
381         And will be replaced with the totally magic way. But for the
382         moment, we are compatible, so do it this way.
383
384 .#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
385 .  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
386 .         NAME, FALSE, 0, 0, IN)
387 .
388
389 DESCRIPTION
390         This is used to fill in an empty howto entry in an array.
391
392 .#define EMPTY_HOWTO(C) \
393 .  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
394 .         NULL, FALSE, 0, 0, FALSE)
395 .
396
397 DESCRIPTION
398         Helper routine to turn a symbol into a relocation value.
399
400 .#define HOWTO_PREPARE(relocation, symbol)              \
401 .  {                                                    \
402 .    if (symbol != NULL)                                \
403 .      {                                                \
404 .        if (bfd_is_com_section (symbol->section))      \
405 .          {                                            \
406 .            relocation = 0;                            \
407 .          }                                            \
408 .        else                                           \
409 .          {                                            \
410 .            relocation = symbol->value;                \
411 .          }                                            \
412 .      }                                                \
413 .  }
414 .
415 */
416
417 /*
418 FUNCTION
419         bfd_get_reloc_size
420
421 SYNOPSIS
422         unsigned int bfd_get_reloc_size (reloc_howto_type *);
423
424 DESCRIPTION
425         For a reloc_howto_type that operates on a fixed number of bytes,
426         this returns the number of bytes operated on.
427  */
428
429 unsigned int
430 bfd_get_reloc_size (reloc_howto_type *howto)
431 {
432   switch (howto->size)
433     {
434     case 5: return 3;
435     case 0: return 1;
436     case 1: return 2;
437     case 2: return 4;
438     case 3: return 0;
439     case 4: return 8;
440     case 8: return 16;
441     case -1: return 2;
442     case -2: return 4;
443     default: abort ();
444     }
445 }
446
447 /*
448 TYPEDEF
449         arelent_chain
450
451 DESCRIPTION
452
453         How relocs are tied together in an <<asection>>:
454
455 .typedef struct relent_chain
456 .{
457 .  arelent relent;
458 .  struct relent_chain *next;
459 .}
460 .arelent_chain;
461 .
462 */
463
464 /* N_ONES produces N one bits, without overflowing machine arithmetic.  */
465 #define N_ONES(n) (((((bfd_vma) 1 << ((n) - 1)) - 1) << 1) | 1)
466
467 /*
468 FUNCTION
469         bfd_check_overflow
470
471 SYNOPSIS
472         bfd_reloc_status_type bfd_check_overflow
473           (enum complain_overflow how,
474            unsigned int bitsize,
475            unsigned int rightshift,
476            unsigned int addrsize,
477            bfd_vma relocation);
478
479 DESCRIPTION
480         Perform overflow checking on @var{relocation} which has
481         @var{bitsize} significant bits and will be shifted right by
482         @var{rightshift} bits, on a machine with addresses containing
483         @var{addrsize} significant bits.  The result is either of
484         @code{bfd_reloc_ok} or @code{bfd_reloc_overflow}.
485
486 */
487
488 bfd_reloc_status_type
489 bfd_check_overflow (enum complain_overflow how,
490                     unsigned int bitsize,
491                     unsigned int rightshift,
492                     unsigned int addrsize,
493                     bfd_vma relocation)
494 {
495   bfd_vma fieldmask, addrmask, signmask, ss, a;
496   bfd_reloc_status_type flag = bfd_reloc_ok;
497
498   /* Note: BITSIZE should always be <= ADDRSIZE, but in case it's not,
499      we'll be permissive: extra bits in the field mask will
500      automatically extend the address mask for purposes of the
501      overflow check.  */
502   fieldmask = N_ONES (bitsize);
503   signmask = ~fieldmask;
504   addrmask = N_ONES (addrsize) | (fieldmask << rightshift);
505   a = (relocation & addrmask) >> rightshift;
506
507   switch (how)
508     {
509     case complain_overflow_dont:
510       break;
511
512     case complain_overflow_signed:
513       /* If any sign bits are set, all sign bits must be set.  That
514          is, A must be a valid negative address after shifting.  */
515       signmask = ~ (fieldmask >> 1);
516       /* Fall thru */
517
518     case complain_overflow_bitfield:
519       /* Bitfields are sometimes signed, sometimes unsigned.  We
520          explicitly allow an address wrap too, which means a bitfield
521          of n bits is allowed to store -2**n to 2**n-1.  Thus overflow
522          if the value has some, but not all, bits set outside the
523          field.  */
524       ss = a & signmask;
525       if (ss != 0 && ss != ((addrmask >> rightshift) & signmask))
526         flag = bfd_reloc_overflow;
527       break;
528
529     case complain_overflow_unsigned:
530       /* We have an overflow if the address does not fit in the field.  */
531       if ((a & signmask) != 0)
532         flag = bfd_reloc_overflow;
533       break;
534
535     default:
536       abort ();
537     }
538
539   return flag;
540 }
541
542 /*
543 FUNCTION
544         bfd_reloc_offset_in_range
545
546 SYNOPSIS
547         bfd_boolean bfd_reloc_offset_in_range
548           (reloc_howto_type *howto,
549            bfd *abfd,
550            asection *section,
551            bfd_size_type offset);
552
553 DESCRIPTION
554         Returns TRUE if the reloc described by @var{HOWTO} can be
555         applied at @var{OFFSET} octets in @var{SECTION}.
556
557 */
558
559 /* HOWTO describes a relocation, at offset OCTET.  Return whether the
560    relocation field is within SECTION of ABFD.  */
561
562 bfd_boolean
563 bfd_reloc_offset_in_range (reloc_howto_type *howto,
564                            bfd *abfd,
565                            asection *section,
566                            bfd_size_type octet)
567 {
568   bfd_size_type octet_end = bfd_get_section_limit_octets (abfd, section);
569   bfd_size_type reloc_size = bfd_get_reloc_size (howto);
570
571   /* The reloc field must be contained entirely within the section.
572      Allow zero length fields (marker relocs or NONE relocs where no
573      relocation will be performed) at the end of the section.  */
574   return octet <= octet_end && octet + reloc_size <= octet_end;
575 }
576
577 /*
578 FUNCTION
579         bfd_perform_relocation
580
581 SYNOPSIS
582         bfd_reloc_status_type bfd_perform_relocation
583           (bfd *abfd,
584            arelent *reloc_entry,
585            void *data,
586            asection *input_section,
587            bfd *output_bfd,
588            char **error_message);
589
590 DESCRIPTION
591         If @var{output_bfd} is supplied to this function, the
592         generated image will be relocatable; the relocations are
593         copied to the output file after they have been changed to
594         reflect the new state of the world. There are two ways of
595         reflecting the results of partial linkage in an output file:
596         by modifying the output data in place, and by modifying the
597         relocation record.  Some native formats (e.g., basic a.out and
598         basic coff) have no way of specifying an addend in the
599         relocation type, so the addend has to go in the output data.
600         This is no big deal since in these formats the output data
601         slot will always be big enough for the addend. Complex reloc
602         types with addends were invented to solve just this problem.
603         The @var{error_message} argument is set to an error message if
604         this return @code{bfd_reloc_dangerous}.
605
606 */
607
608 bfd_reloc_status_type
609 bfd_perform_relocation (bfd *abfd,
610                         arelent *reloc_entry,
611                         void *data,
612                         asection *input_section,
613                         bfd *output_bfd,
614                         char **error_message)
615 {
616   bfd_vma relocation;
617   bfd_reloc_status_type flag = bfd_reloc_ok;
618   bfd_size_type octets;
619   bfd_vma output_base = 0;
620   reloc_howto_type *howto = reloc_entry->howto;
621   asection *reloc_target_output_section;
622   asymbol *symbol;
623
624   symbol = *(reloc_entry->sym_ptr_ptr);
625
626   /* If we are not producing relocatable output, return an error if
627      the symbol is not defined.  An undefined weak symbol is
628      considered to have a value of zero (SVR4 ABI, p. 4-27).  */
629   if (bfd_is_und_section (symbol->section)
630       && (symbol->flags & BSF_WEAK) == 0
631       && output_bfd == NULL)
632     flag = bfd_reloc_undefined;
633
634   /* If there is a function supplied to handle this relocation type,
635      call it.  It'll return `bfd_reloc_continue' if further processing
636      can be done.  */
637   if (howto && howto->special_function)
638     {
639       bfd_reloc_status_type cont;
640
641       /* Note - we do not call bfd_reloc_offset_in_range here as the
642          reloc_entry->address field might actually be valid for the
643          backend concerned.  It is up to the special_function itself
644          to call bfd_reloc_offset_in_range if needed.  */
645       cont = howto->special_function (abfd, reloc_entry, symbol, data,
646                                       input_section, output_bfd,
647                                       error_message);
648       if (cont != bfd_reloc_continue)
649         return cont;
650     }
651
652   if (bfd_is_abs_section (symbol->section)
653       && output_bfd != NULL)
654     {
655       reloc_entry->address += input_section->output_offset;
656       return bfd_reloc_ok;
657     }
658
659   /* PR 17512: file: 0f67f69d.  */
660   if (howto == NULL)
661     return bfd_reloc_undefined;
662
663   /* Is the address of the relocation really within the section?  */
664   octets = reloc_entry->address * bfd_octets_per_byte (abfd);
665   if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
666     return bfd_reloc_outofrange;
667
668   /* Work out which section the relocation is targeted at and the
669      initial relocation command value.  */
670
671   /* Get symbol value.  (Common symbols are special.)  */
672   if (bfd_is_com_section (symbol->section))
673     relocation = 0;
674   else
675     relocation = symbol->value;
676
677   reloc_target_output_section = symbol->section->output_section;
678
679   /* Convert input-section-relative symbol value to absolute.  */
680   if ((output_bfd && ! howto->partial_inplace)
681       || reloc_target_output_section == NULL)
682     output_base = 0;
683   else
684     output_base = reloc_target_output_section->vma;
685
686   relocation += output_base + symbol->section->output_offset;
687
688   /* Add in supplied addend.  */
689   relocation += reloc_entry->addend;
690
691   /* Here the variable relocation holds the final address of the
692      symbol we are relocating against, plus any addend.  */
693
694   if (howto->pc_relative)
695     {
696       /* This is a PC relative relocation.  We want to set RELOCATION
697          to the distance between the address of the symbol and the
698          location.  RELOCATION is already the address of the symbol.
699
700          We start by subtracting the address of the section containing
701          the location.
702
703          If pcrel_offset is set, we must further subtract the position
704          of the location within the section.  Some targets arrange for
705          the addend to be the negative of the position of the location
706          within the section; for example, i386-aout does this.  For
707          i386-aout, pcrel_offset is FALSE.  Some other targets do not
708          include the position of the location; for example, ELF.
709          For those targets, pcrel_offset is TRUE.
710
711          If we are producing relocatable output, then we must ensure
712          that this reloc will be correctly computed when the final
713          relocation is done.  If pcrel_offset is FALSE we want to wind
714          up with the negative of the location within the section,
715          which means we must adjust the existing addend by the change
716          in the location within the section.  If pcrel_offset is TRUE
717          we do not want to adjust the existing addend at all.
718
719          FIXME: This seems logical to me, but for the case of
720          producing relocatable output it is not what the code
721          actually does.  I don't want to change it, because it seems
722          far too likely that something will break.  */
723
724       relocation -=
725         input_section->output_section->vma + input_section->output_offset;
726
727       if (howto->pcrel_offset)
728         relocation -= reloc_entry->address;
729     }
730
731   if (output_bfd != NULL)
732     {
733       if (! howto->partial_inplace)
734         {
735           /* This is a partial relocation, and we want to apply the relocation
736              to the reloc entry rather than the raw data. Modify the reloc
737              inplace to reflect what we now know.  */
738           reloc_entry->addend = relocation;
739           reloc_entry->address += input_section->output_offset;
740           return flag;
741         }
742       else
743         {
744           /* This is a partial relocation, but inplace, so modify the
745              reloc record a bit.
746
747              If we've relocated with a symbol with a section, change
748              into a ref to the section belonging to the symbol.  */
749
750           reloc_entry->address += input_section->output_offset;
751
752           /* WTF?? */
753           if (abfd->xvec->flavour == bfd_target_coff_flavour
754               && strcmp (abfd->xvec->name, "coff-Intel-little") != 0
755               && strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
756             {
757               /* For m68k-coff, the addend was being subtracted twice during
758                  relocation with -r.  Removing the line below this comment
759                  fixes that problem; see PR 2953.
760
761 However, Ian wrote the following, regarding removing the line below,
762 which explains why it is still enabled:  --djm
763
764 If you put a patch like that into BFD you need to check all the COFF
765 linkers.  I am fairly certain that patch will break coff-i386 (e.g.,
766 SCO); see coff_i386_reloc in coff-i386.c where I worked around the
767 problem in a different way.  There may very well be a reason that the
768 code works as it does.
769
770 Hmmm.  The first obvious point is that bfd_perform_relocation should
771 not have any tests that depend upon the flavour.  It's seem like
772 entirely the wrong place for such a thing.  The second obvious point
773 is that the current code ignores the reloc addend when producing
774 relocatable output for COFF.  That's peculiar.  In fact, I really
775 have no idea what the point of the line you want to remove is.
776
777 A typical COFF reloc subtracts the old value of the symbol and adds in
778 the new value to the location in the object file (if it's a pc
779 relative reloc it adds the difference between the symbol value and the
780 location).  When relocating we need to preserve that property.
781
782 BFD handles this by setting the addend to the negative of the old
783 value of the symbol.  Unfortunately it handles common symbols in a
784 non-standard way (it doesn't subtract the old value) but that's a
785 different story (we can't change it without losing backward
786 compatibility with old object files) (coff-i386 does subtract the old
787 value, to be compatible with existing coff-i386 targets, like SCO).
788
789 So everything works fine when not producing relocatable output.  When
790 we are producing relocatable output, logically we should do exactly
791 what we do when not producing relocatable output.  Therefore, your
792 patch is correct.  In fact, it should probably always just set
793 reloc_entry->addend to 0 for all cases, since it is, in fact, going to
794 add the value into the object file.  This won't hurt the COFF code,
795 which doesn't use the addend; I'm not sure what it will do to other
796 formats (the thing to check for would be whether any formats both use
797 the addend and set partial_inplace).
798
799 When I wanted to make coff-i386 produce relocatable output, I ran
800 into the problem that you are running into: I wanted to remove that
801 line.  Rather than risk it, I made the coff-i386 relocs use a special
802 function; it's coff_i386_reloc in coff-i386.c.  The function
803 specifically adds the addend field into the object file, knowing that
804 bfd_perform_relocation is not going to.  If you remove that line, then
805 coff-i386.c will wind up adding the addend field in twice.  It's
806 trivial to fix; it just needs to be done.
807
808 The problem with removing the line is just that it may break some
809 working code.  With BFD it's hard to be sure of anything.  The right
810 way to deal with this is simply to build and test at least all the
811 supported COFF targets.  It should be straightforward if time and disk
812 space consuming.  For each target:
813     1) build the linker
814     2) generate some executable, and link it using -r (I would
815        probably use paranoia.o and link against newlib/libc.a, which
816        for all the supported targets would be available in
817        /usr/cygnus/progressive/H-host/target/lib/libc.a).
818     3) make the change to reloc.c
819     4) rebuild the linker
820     5) repeat step 2
821     6) if the resulting object files are the same, you have at least
822        made it no worse
823     7) if they are different you have to figure out which version is
824        right
825 */
826               relocation -= reloc_entry->addend;
827               reloc_entry->addend = 0;
828             }
829           else
830             {
831               reloc_entry->addend = relocation;
832             }
833         }
834     }
835
836   /* FIXME: This overflow checking is incomplete, because the value
837      might have overflowed before we get here.  For a correct check we
838      need to compute the value in a size larger than bitsize, but we
839      can't reasonably do that for a reloc the same size as a host
840      machine word.
841      FIXME: We should also do overflow checking on the result after
842      adding in the value contained in the object file.  */
843   if (howto->complain_on_overflow != complain_overflow_dont
844       && flag == bfd_reloc_ok)
845     flag = bfd_check_overflow (howto->complain_on_overflow,
846                                howto->bitsize,
847                                howto->rightshift,
848                                bfd_arch_bits_per_address (abfd),
849                                relocation);
850
851   /* Either we are relocating all the way, or we don't want to apply
852      the relocation to the reloc entry (probably because there isn't
853      any room in the output format to describe addends to relocs).  */
854
855   /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler
856      (OSF version 1.3, compiler version 3.11).  It miscompiles the
857      following program:
858
859      struct str
860      {
861        unsigned int i0;
862      } s = { 0 };
863
864      int
865      main ()
866      {
867        unsigned long x;
868
869        x = 0x100000000;
870        x <<= (unsigned long) s.i0;
871        if (x == 0)
872          printf ("failed\n");
873        else
874          printf ("succeeded (%lx)\n", x);
875      }
876      */
877
878   relocation >>= (bfd_vma) howto->rightshift;
879
880   /* Shift everything up to where it's going to be used.  */
881   relocation <<= (bfd_vma) howto->bitpos;
882
883   /* Wait for the day when all have the mask in them.  */
884
885   /* What we do:
886      i instruction to be left alone
887      o offset within instruction
888      r relocation offset to apply
889      S src mask
890      D dst mask
891      N ~dst mask
892      A part 1
893      B part 2
894      R result
895
896      Do this:
897      ((  i i i i i o o o o o  from bfd_get<size>
898      and           S S S S S) to get the size offset we want
899      +   r r r r r r r r r r) to get the final value to place
900      and           D D D D D  to chop to right size
901      -----------------------
902      =             A A A A A
903      And this:
904      (   i i i i i o o o o o  from bfd_get<size>
905      and N N N N N          ) get instruction
906      -----------------------
907      =   B B B B B
908
909      And then:
910      (   B B B B B
911      or            A A A A A)
912      -----------------------
913      =   R R R R R R R R R R  put into bfd_put<size>
914      */
915
916 #define DOIT(x) \
917   x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) +  relocation) & howto->dst_mask))
918
919   switch (howto->size)
920     {
921     case 5:
922       {
923         long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
924         x >>= 8;
925         DOIT (x);
926         bfd_put_16 (abfd, (bfd_vma) (x >> 8), (bfd_byte *) data + octets);
927         bfd_put_8 (abfd, (x & 0xFF), (unsigned char *) data + 2 + octets);
928       }
929       break;
930
931     case 0:
932       {
933         char x = bfd_get_8 (abfd, (char *) data + octets);
934         DOIT (x);
935         bfd_put_8 (abfd, x, (unsigned char *) data + octets);
936       }
937       break;
938
939     case 1:
940       {
941         short x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
942         DOIT (x);
943         bfd_put_16 (abfd, (bfd_vma) x, (unsigned char *) data + octets);
944       }
945       break;
946     case 2:
947       {
948         long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
949         DOIT (x);
950         bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
951       }
952       break;
953     case -2:
954       {
955         long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
956         relocation = -relocation;
957         DOIT (x);
958         bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
959       }
960       break;
961
962     case -1:
963       {
964         long x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
965         relocation = -relocation;
966         DOIT (x);
967         bfd_put_16 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
968       }
969       break;
970
971     case 3:
972       /* Do nothing */
973       break;
974
975     case 4:
976 #ifdef BFD64
977       {
978         bfd_vma x = bfd_get_64 (abfd, (bfd_byte *) data + octets);
979         DOIT (x);
980         bfd_put_64 (abfd, x, (bfd_byte *) data + octets);
981       }
982 #else
983       abort ();
984 #endif
985       break;
986     default:
987       return bfd_reloc_other;
988     }
989
990   return flag;
991 }
992
993 /*
994 FUNCTION
995         bfd_install_relocation
996
997 SYNOPSIS
998         bfd_reloc_status_type bfd_install_relocation
999           (bfd *abfd,
1000            arelent *reloc_entry,
1001            void *data, bfd_vma data_start,
1002            asection *input_section,
1003            char **error_message);
1004
1005 DESCRIPTION
1006         This looks remarkably like <<bfd_perform_relocation>>, except it
1007         does not expect that the section contents have been filled in.
1008         I.e., it's suitable for use when creating, rather than applying
1009         a relocation.
1010
1011         For now, this function should be considered reserved for the
1012         assembler.
1013 */
1014
1015 bfd_reloc_status_type
1016 bfd_install_relocation (bfd *abfd,
1017                         arelent *reloc_entry,
1018                         void *data_start,
1019                         bfd_vma data_start_offset,
1020                         asection *input_section,
1021                         char **error_message)
1022 {
1023   bfd_vma relocation;
1024   bfd_reloc_status_type flag = bfd_reloc_ok;
1025   bfd_size_type octets;
1026   bfd_vma output_base = 0;
1027   reloc_howto_type *howto = reloc_entry->howto;
1028   asection *reloc_target_output_section;
1029   asymbol *symbol;
1030   bfd_byte *data;
1031
1032   symbol = *(reloc_entry->sym_ptr_ptr);
1033
1034   /* If there is a function supplied to handle this relocation type,
1035      call it.  It'll return `bfd_reloc_continue' if further processing
1036      can be done.  */
1037   if (howto && howto->special_function)
1038     {
1039       bfd_reloc_status_type cont;
1040
1041       /* Note - we do not call bfd_reloc_offset_in_range here as the
1042          reloc_entry->address field might actually be valid for the
1043          backend concerned.  It is up to the special_function itself
1044          to call bfd_reloc_offset_in_range if needed.  */
1045       /* XXX - The special_function calls haven't been fixed up to deal
1046          with creating new relocations and section contents.  */
1047       cont = howto->special_function (abfd, reloc_entry, symbol,
1048                                       /* XXX - Non-portable! */
1049                                       ((bfd_byte *) data_start
1050                                        - data_start_offset),
1051                                       input_section, abfd, error_message);
1052       if (cont != bfd_reloc_continue)
1053         return cont;
1054     }
1055
1056   if (bfd_is_abs_section (symbol->section))
1057     {
1058       reloc_entry->address += input_section->output_offset;
1059       return bfd_reloc_ok;
1060     }
1061
1062   /* No need to check for howto != NULL if !bfd_is_abs_section as
1063      it will have been checked in `bfd_perform_relocation already'.  */
1064
1065   /* Is the address of the relocation really within the section?  */
1066   octets = reloc_entry->address * bfd_octets_per_byte (abfd);
1067   if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
1068     return bfd_reloc_outofrange;
1069
1070   /* Work out which section the relocation is targeted at and the
1071      initial relocation command value.  */
1072
1073   /* Get symbol value.  (Common symbols are special.)  */
1074   if (bfd_is_com_section (symbol->section))
1075     relocation = 0;
1076   else
1077     relocation = symbol->value;
1078
1079   reloc_target_output_section = symbol->section->output_section;
1080
1081   /* Convert input-section-relative symbol value to absolute.  */
1082   if (! howto->partial_inplace)
1083     output_base = 0;
1084   else
1085     output_base = reloc_target_output_section->vma;
1086
1087   relocation += output_base + symbol->section->output_offset;
1088
1089   /* Add in supplied addend.  */
1090   relocation += reloc_entry->addend;
1091
1092   /* Here the variable relocation holds the final address of the
1093      symbol we are relocating against, plus any addend.  */
1094
1095   if (howto->pc_relative)
1096     {
1097       /* This is a PC relative relocation.  We want to set RELOCATION
1098          to the distance between the address of the symbol and the
1099          location.  RELOCATION is already the address of the symbol.
1100
1101          We start by subtracting the address of the section containing
1102          the location.
1103
1104          If pcrel_offset is set, we must further subtract the position
1105          of the location within the section.  Some targets arrange for
1106          the addend to be the negative of the position of the location
1107          within the section; for example, i386-aout does this.  For
1108          i386-aout, pcrel_offset is FALSE.  Some other targets do not
1109          include the position of the location; for example, ELF.
1110          For those targets, pcrel_offset is TRUE.
1111
1112          If we are producing relocatable output, then we must ensure
1113          that this reloc will be correctly computed when the final
1114          relocation is done.  If pcrel_offset is FALSE we want to wind
1115          up with the negative of the location within the section,
1116          which means we must adjust the existing addend by the change
1117          in the location within the section.  If pcrel_offset is TRUE
1118          we do not want to adjust the existing addend at all.
1119
1120          FIXME: This seems logical to me, but for the case of
1121          producing relocatable output it is not what the code
1122          actually does.  I don't want to change it, because it seems
1123          far too likely that something will break.  */
1124
1125       relocation -=
1126         input_section->output_section->vma + input_section->output_offset;
1127
1128       if (howto->pcrel_offset && howto->partial_inplace)
1129         relocation -= reloc_entry->address;
1130     }
1131
1132   if (! howto->partial_inplace)
1133     {
1134       /* This is a partial relocation, and we want to apply the relocation
1135          to the reloc entry rather than the raw data. Modify the reloc
1136          inplace to reflect what we now know.  */
1137       reloc_entry->addend = relocation;
1138       reloc_entry->address += input_section->output_offset;
1139       return flag;
1140     }
1141   else
1142     {
1143       /* This is a partial relocation, but inplace, so modify the
1144          reloc record a bit.
1145
1146          If we've relocated with a symbol with a section, change
1147          into a ref to the section belonging to the symbol.  */
1148       reloc_entry->address += input_section->output_offset;
1149
1150       /* WTF?? */
1151       if (abfd->xvec->flavour == bfd_target_coff_flavour
1152           && strcmp (abfd->xvec->name, "coff-Intel-little") != 0
1153           && strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
1154         {
1155
1156           /* For m68k-coff, the addend was being subtracted twice during
1157              relocation with -r.  Removing the line below this comment
1158              fixes that problem; see PR 2953.
1159
1160 However, Ian wrote the following, regarding removing the line below,
1161 which explains why it is still enabled:  --djm
1162
1163 If you put a patch like that into BFD you need to check all the COFF
1164 linkers.  I am fairly certain that patch will break coff-i386 (e.g.,
1165 SCO); see coff_i386_reloc in coff-i386.c where I worked around the
1166 problem in a different way.  There may very well be a reason that the
1167 code works as it does.
1168
1169 Hmmm.  The first obvious point is that bfd_install_relocation should
1170 not have any tests that depend upon the flavour.  It's seem like
1171 entirely the wrong place for such a thing.  The second obvious point
1172 is that the current code ignores the reloc addend when producing
1173 relocatable output for COFF.  That's peculiar.  In fact, I really
1174 have no idea what the point of the line you want to remove is.
1175
1176 A typical COFF reloc subtracts the old value of the symbol and adds in
1177 the new value to the location in the object file (if it's a pc
1178 relative reloc it adds the difference between the symbol value and the
1179 location).  When relocating we need to preserve that property.
1180
1181 BFD handles this by setting the addend to the negative of the old
1182 value of the symbol.  Unfortunately it handles common symbols in a
1183 non-standard way (it doesn't subtract the old value) but that's a
1184 different story (we can't change it without losing backward
1185 compatibility with old object files) (coff-i386 does subtract the old
1186 value, to be compatible with existing coff-i386 targets, like SCO).
1187
1188 So everything works fine when not producing relocatable output.  When
1189 we are producing relocatable output, logically we should do exactly
1190 what we do when not producing relocatable output.  Therefore, your
1191 patch is correct.  In fact, it should probably always just set
1192 reloc_entry->addend to 0 for all cases, since it is, in fact, going to
1193 add the value into the object file.  This won't hurt the COFF code,
1194 which doesn't use the addend; I'm not sure what it will do to other
1195 formats (the thing to check for would be whether any formats both use
1196 the addend and set partial_inplace).
1197
1198 When I wanted to make coff-i386 produce relocatable output, I ran
1199 into the problem that you are running into: I wanted to remove that
1200 line.  Rather than risk it, I made the coff-i386 relocs use a special
1201 function; it's coff_i386_reloc in coff-i386.c.  The function
1202 specifically adds the addend field into the object file, knowing that
1203 bfd_install_relocation is not going to.  If you remove that line, then
1204 coff-i386.c will wind up adding the addend field in twice.  It's
1205 trivial to fix; it just needs to be done.
1206
1207 The problem with removing the line is just that it may break some
1208 working code.  With BFD it's hard to be sure of anything.  The right
1209 way to deal with this is simply to build and test at least all the
1210 supported COFF targets.  It should be straightforward if time and disk
1211 space consuming.  For each target:
1212     1) build the linker
1213     2) generate some executable, and link it using -r (I would
1214        probably use paranoia.o and link against newlib/libc.a, which
1215        for all the supported targets would be available in
1216        /usr/cygnus/progressive/H-host/target/lib/libc.a).
1217     3) make the change to reloc.c
1218     4) rebuild the linker
1219     5) repeat step 2
1220     6) if the resulting object files are the same, you have at least
1221        made it no worse
1222     7) if they are different you have to figure out which version is
1223        right.  */
1224           relocation -= reloc_entry->addend;
1225           /* FIXME: There should be no target specific code here...  */
1226           if (strcmp (abfd->xvec->name, "coff-z8k") != 0)
1227             reloc_entry->addend = 0;
1228         }
1229       else
1230         {
1231           reloc_entry->addend = relocation;
1232         }
1233     }
1234
1235   /* FIXME: This overflow checking is incomplete, because the value
1236      might have overflowed before we get here.  For a correct check we
1237      need to compute the value in a size larger than bitsize, but we
1238      can't reasonably do that for a reloc the same size as a host
1239      machine word.
1240      FIXME: We should also do overflow checking on the result after
1241      adding in the value contained in the object file.  */
1242   if (howto->complain_on_overflow != complain_overflow_dont)
1243     flag = bfd_check_overflow (howto->complain_on_overflow,
1244                                howto->bitsize,
1245                                howto->rightshift,
1246                                bfd_arch_bits_per_address (abfd),
1247                                relocation);
1248
1249   /* Either we are relocating all the way, or we don't want to apply
1250      the relocation to the reloc entry (probably because there isn't
1251      any room in the output format to describe addends to relocs).  */
1252
1253   /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler
1254      (OSF version 1.3, compiler version 3.11).  It miscompiles the
1255      following program:
1256
1257      struct str
1258      {
1259        unsigned int i0;
1260      } s = { 0 };
1261
1262      int
1263      main ()
1264      {
1265        unsigned long x;
1266
1267        x = 0x100000000;
1268        x <<= (unsigned long) s.i0;
1269        if (x == 0)
1270          printf ("failed\n");
1271        else
1272          printf ("succeeded (%lx)\n", x);
1273      }
1274      */
1275
1276   relocation >>= (bfd_vma) howto->rightshift;
1277
1278   /* Shift everything up to where it's going to be used.  */
1279   relocation <<= (bfd_vma) howto->bitpos;
1280
1281   /* Wait for the day when all have the mask in them.  */
1282
1283   /* What we do:
1284      i instruction to be left alone
1285      o offset within instruction
1286      r relocation offset to apply
1287      S src mask
1288      D dst mask
1289      N ~dst mask
1290      A part 1
1291      B part 2
1292      R result
1293
1294      Do this:
1295      ((  i i i i i o o o o o  from bfd_get<size>
1296      and           S S S S S) to get the size offset we want
1297      +   r r r r r r r r r r) to get the final value to place
1298      and           D D D D D  to chop to right size
1299      -----------------------
1300      =             A A A A A
1301      And this:
1302      (   i i i i i o o o o o  from bfd_get<size>
1303      and N N N N N          ) get instruction
1304      -----------------------
1305      =   B B B B B
1306
1307      And then:
1308      (   B B B B B
1309      or            A A A A A)
1310      -----------------------
1311      =   R R R R R R R R R R  put into bfd_put<size>
1312      */
1313
1314 #define DOIT(x) \
1315   x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) +  relocation) & howto->dst_mask))
1316
1317   data = (bfd_byte *) data_start + (octets - data_start_offset);
1318
1319   switch (howto->size)
1320     {
1321     case 0:
1322       {
1323         char x = bfd_get_8 (abfd, data);
1324         DOIT (x);
1325         bfd_put_8 (abfd, x, data);
1326       }
1327       break;
1328
1329     case 1:
1330       {
1331         short x = bfd_get_16 (abfd, data);
1332         DOIT (x);
1333         bfd_put_16 (abfd, (bfd_vma) x, data);
1334       }
1335       break;
1336     case 2:
1337       {
1338         long x = bfd_get_32 (abfd, data);
1339         DOIT (x);
1340         bfd_put_32 (abfd, (bfd_vma) x, data);
1341       }
1342       break;
1343     case -2:
1344       {
1345         long x = bfd_get_32 (abfd, data);
1346         relocation = -relocation;
1347         DOIT (x);
1348         bfd_put_32 (abfd, (bfd_vma) x, data);
1349       }
1350       break;
1351
1352     case 3:
1353       /* Do nothing */
1354       break;
1355
1356     case 4:
1357       {
1358         bfd_vma x = bfd_get_64 (abfd, data);
1359         DOIT (x);
1360         bfd_put_64 (abfd, x, data);
1361       }
1362       break;
1363     default:
1364       return bfd_reloc_other;
1365     }
1366
1367   return flag;
1368 }
1369
1370 /* This relocation routine is used by some of the backend linkers.
1371    They do not construct asymbol or arelent structures, so there is no
1372    reason for them to use bfd_perform_relocation.  Also,
1373    bfd_perform_relocation is so hacked up it is easier to write a new
1374    function than to try to deal with it.
1375
1376    This routine does a final relocation.  Whether it is useful for a
1377    relocatable link depends upon how the object format defines
1378    relocations.
1379
1380    FIXME: This routine ignores any special_function in the HOWTO,
1381    since the existing special_function values have been written for
1382    bfd_perform_relocation.
1383
1384    HOWTO is the reloc howto information.
1385    INPUT_BFD is the BFD which the reloc applies to.
1386    INPUT_SECTION is the section which the reloc applies to.
1387    CONTENTS is the contents of the section.
1388    ADDRESS is the address of the reloc within INPUT_SECTION.
1389    VALUE is the value of the symbol the reloc refers to.
1390    ADDEND is the addend of the reloc.  */
1391
1392 bfd_reloc_status_type
1393 _bfd_final_link_relocate (reloc_howto_type *howto,
1394                           bfd *input_bfd,
1395                           asection *input_section,
1396                           bfd_byte *contents,
1397                           bfd_vma address,
1398                           bfd_vma value,
1399                           bfd_vma addend)
1400 {
1401   bfd_vma relocation;
1402   bfd_size_type octets = address * bfd_octets_per_byte (input_bfd);
1403
1404   /* Sanity check the address.  */
1405   if (!bfd_reloc_offset_in_range (howto, input_bfd, input_section, octets))
1406     return bfd_reloc_outofrange;
1407
1408   /* This function assumes that we are dealing with a basic relocation
1409      against a symbol.  We want to compute the value of the symbol to
1410      relocate to.  This is just VALUE, the value of the symbol, plus
1411      ADDEND, any addend associated with the reloc.  */
1412   relocation = value + addend;
1413
1414   /* If the relocation is PC relative, we want to set RELOCATION to
1415      the distance between the symbol (currently in RELOCATION) and the
1416      location we are relocating.  Some targets (e.g., i386-aout)
1417      arrange for the contents of the section to be the negative of the
1418      offset of the location within the section; for such targets
1419      pcrel_offset is FALSE.  Other targets (e.g., ELF) simply leave
1420      the contents of the section as zero; for such targets
1421      pcrel_offset is TRUE.  If pcrel_offset is FALSE we do not need to
1422      subtract out the offset of the location within the section (which
1423      is just ADDRESS).  */
1424   if (howto->pc_relative)
1425     {
1426       relocation -= (input_section->output_section->vma
1427                      + input_section->output_offset);
1428       if (howto->pcrel_offset)
1429         relocation -= address;
1430     }
1431
1432   return _bfd_relocate_contents (howto, input_bfd, relocation,
1433                                  contents
1434                                  + address * bfd_octets_per_byte (input_bfd));
1435 }
1436
1437 /* Relocate a given location using a given value and howto.  */
1438
1439 bfd_reloc_status_type
1440 _bfd_relocate_contents (reloc_howto_type *howto,
1441                         bfd *input_bfd,
1442                         bfd_vma relocation,
1443                         bfd_byte *location)
1444 {
1445   int size;
1446   bfd_vma x = 0;
1447   bfd_reloc_status_type flag;
1448   unsigned int rightshift = howto->rightshift;
1449   unsigned int bitpos = howto->bitpos;
1450
1451   /* If the size is negative, negate RELOCATION.  This isn't very
1452      general.  */
1453   if (howto->size < 0)
1454     relocation = -relocation;
1455
1456   /* Get the value we are going to relocate.  */
1457   size = bfd_get_reloc_size (howto);
1458   switch (size)
1459     {
1460     default:
1461       abort ();
1462     case 0:
1463       return bfd_reloc_ok;
1464     case 1:
1465       x = bfd_get_8 (input_bfd, location);
1466       break;
1467     case 2:
1468       x = bfd_get_16 (input_bfd, location);
1469       break;
1470     case 4:
1471       x = bfd_get_32 (input_bfd, location);
1472       break;
1473     case 8:
1474 #ifdef BFD64
1475       x = bfd_get_64 (input_bfd, location);
1476 #else
1477       abort ();
1478 #endif
1479       break;
1480     }
1481
1482   /* Check for overflow.  FIXME: We may drop bits during the addition
1483      which we don't check for.  We must either check at every single
1484      operation, which would be tedious, or we must do the computations
1485      in a type larger than bfd_vma, which would be inefficient.  */
1486   flag = bfd_reloc_ok;
1487   if (howto->complain_on_overflow != complain_overflow_dont)
1488     {
1489       bfd_vma addrmask, fieldmask, signmask, ss;
1490       bfd_vma a, b, sum;
1491
1492       /* Get the values to be added together.  For signed and unsigned
1493          relocations, we assume that all values should be truncated to
1494          the size of an address.  For bitfields, all the bits matter.
1495          See also bfd_check_overflow.  */
1496       fieldmask = N_ONES (howto->bitsize);
1497       signmask = ~fieldmask;
1498       addrmask = (N_ONES (bfd_arch_bits_per_address (input_bfd))
1499                   | (fieldmask << rightshift));
1500       a = (relocation & addrmask) >> rightshift;
1501       b = (x & howto->src_mask & addrmask) >> bitpos;
1502       addrmask >>= rightshift;
1503
1504       switch (howto->complain_on_overflow)
1505         {
1506         case complain_overflow_signed:
1507           /* If any sign bits are set, all sign bits must be set.
1508              That is, A must be a valid negative address after
1509              shifting.  */
1510           signmask = ~(fieldmask >> 1);
1511           /* Fall thru */
1512
1513         case complain_overflow_bitfield:
1514           /* Much like the signed check, but for a field one bit
1515              wider.  We allow a bitfield to represent numbers in the
1516              range -2**n to 2**n-1, where n is the number of bits in the
1517              field.  Note that when bfd_vma is 32 bits, a 32-bit reloc
1518              can't overflow, which is exactly what we want.  */
1519           ss = a & signmask;
1520           if (ss != 0 && ss != (addrmask & signmask))
1521             flag = bfd_reloc_overflow;
1522
1523           /* We only need this next bit of code if the sign bit of B
1524              is below the sign bit of A.  This would only happen if
1525              SRC_MASK had fewer bits than BITSIZE.  Note that if
1526              SRC_MASK has more bits than BITSIZE, we can get into
1527              trouble; we would need to verify that B is in range, as
1528              we do for A above.  */
1529           ss = ((~howto->src_mask) >> 1) & howto->src_mask;
1530           ss >>= bitpos;
1531
1532           /* Set all the bits above the sign bit.  */
1533           b = (b ^ ss) - ss;
1534
1535           /* Now we can do the addition.  */
1536           sum = a + b;
1537
1538           /* See if the result has the correct sign.  Bits above the
1539              sign bit are junk now; ignore them.  If the sum is
1540              positive, make sure we did not have all negative inputs;
1541              if the sum is negative, make sure we did not have all
1542              positive inputs.  The test below looks only at the sign
1543              bits, and it really just
1544                  SIGN (A) == SIGN (B) && SIGN (A) != SIGN (SUM)
1545
1546              We mask with addrmask here to explicitly allow an address
1547              wrap-around.  The Linux kernel relies on it, and it is
1548              the only way to write assembler code which can run when
1549              loaded at a location 0x80000000 away from the location at
1550              which it is linked.  */
1551           if (((~(a ^ b)) & (a ^ sum)) & signmask & addrmask)
1552             flag = bfd_reloc_overflow;
1553           break;
1554
1555         case complain_overflow_unsigned:
1556           /* Checking for an unsigned overflow is relatively easy:
1557              trim the addresses and add, and trim the result as well.
1558              Overflow is normally indicated when the result does not
1559              fit in the field.  However, we also need to consider the
1560              case when, e.g., fieldmask is 0x7fffffff or smaller, an
1561              input is 0x80000000, and bfd_vma is only 32 bits; then we
1562              will get sum == 0, but there is an overflow, since the
1563              inputs did not fit in the field.  Instead of doing a
1564              separate test, we can check for this by or-ing in the
1565              operands when testing for the sum overflowing its final
1566              field.  */
1567           sum = (a + b) & addrmask;
1568           if ((a | b | sum) & signmask)
1569             flag = bfd_reloc_overflow;
1570           break;
1571
1572         default:
1573           abort ();
1574         }
1575     }
1576
1577   /* Put RELOCATION in the right bits.  */
1578   relocation >>= (bfd_vma) rightshift;
1579   relocation <<= (bfd_vma) bitpos;
1580
1581   /* Add RELOCATION to the right bits of X.  */
1582   x = ((x & ~howto->dst_mask)
1583        | (((x & howto->src_mask) + relocation) & howto->dst_mask));
1584
1585   /* Put the relocated value back in the object file.  */
1586   switch (size)
1587     {
1588     default:
1589       abort ();
1590     case 1:
1591       bfd_put_8 (input_bfd, x, location);
1592       break;
1593     case 2:
1594       bfd_put_16 (input_bfd, x, location);
1595       break;
1596     case 4:
1597       bfd_put_32 (input_bfd, x, location);
1598       break;
1599     case 8:
1600 #ifdef BFD64
1601       bfd_put_64 (input_bfd, x, location);
1602 #else
1603       abort ();
1604 #endif
1605       break;
1606     }
1607
1608   return flag;
1609 }
1610
1611 /* Clear a given location using a given howto, by applying a fixed relocation
1612    value and discarding any in-place addend.  This is used for fixed-up
1613    relocations against discarded symbols, to make ignorable debug or unwind
1614    information more obvious.  */
1615
1616 void
1617 _bfd_clear_contents (reloc_howto_type *howto,
1618                      bfd *input_bfd,
1619                      asection *input_section,
1620                      bfd_byte *location)
1621 {
1622   int size;
1623   bfd_vma x = 0;
1624
1625   /* Get the value we are going to relocate.  */
1626   size = bfd_get_reloc_size (howto);
1627   switch (size)
1628     {
1629     default:
1630       abort ();
1631     case 0:
1632       return;
1633     case 1:
1634       x = bfd_get_8 (input_bfd, location);
1635       break;
1636     case 2:
1637       x = bfd_get_16 (input_bfd, location);
1638       break;
1639     case 4:
1640       x = bfd_get_32 (input_bfd, location);
1641       break;
1642     case 8:
1643 #ifdef BFD64
1644       x = bfd_get_64 (input_bfd, location);
1645 #else
1646       abort ();
1647 #endif
1648       break;
1649     }
1650
1651   /* Zero out the unwanted bits of X.  */
1652   x &= ~howto->dst_mask;
1653
1654   /* For a range list, use 1 instead of 0 as placeholder.  0
1655      would terminate the list, hiding any later entries.  */
1656   if (strcmp (bfd_get_section_name (input_bfd, input_section),
1657               ".debug_ranges") == 0
1658       && (howto->dst_mask & 1) != 0)
1659     x |= 1;
1660
1661   /* Put the relocated value back in the object file.  */
1662   switch (size)
1663     {
1664     default:
1665     case 0:
1666       abort ();
1667     case 1:
1668       bfd_put_8 (input_bfd, x, location);
1669       break;
1670     case 2:
1671       bfd_put_16 (input_bfd, x, location);
1672       break;
1673     case 4:
1674       bfd_put_32 (input_bfd, x, location);
1675       break;
1676     case 8:
1677 #ifdef BFD64
1678       bfd_put_64 (input_bfd, x, location);
1679 #else
1680       abort ();
1681 #endif
1682       break;
1683     }
1684 }
1685
1686 /*
1687 DOCDD
1688 INODE
1689         howto manager,  , typedef arelent, Relocations
1690
1691 SUBSECTION
1692         The howto manager
1693
1694         When an application wants to create a relocation, but doesn't
1695         know what the target machine might call it, it can find out by
1696         using this bit of code.
1697
1698 */
1699
1700 /*
1701 TYPEDEF
1702         bfd_reloc_code_type
1703
1704 DESCRIPTION
1705         The insides of a reloc code.  The idea is that, eventually, there
1706         will be one enumerator for every type of relocation we ever do.
1707         Pass one of these values to <<bfd_reloc_type_lookup>>, and it'll
1708         return a howto pointer.
1709
1710         This does mean that the application must determine the correct
1711         enumerator value; you can't get a howto pointer from a random set
1712         of attributes.
1713
1714 SENUM
1715    bfd_reloc_code_real
1716
1717 ENUM
1718   BFD_RELOC_64
1719 ENUMX
1720   BFD_RELOC_32
1721 ENUMX
1722   BFD_RELOC_26
1723 ENUMX
1724   BFD_RELOC_24
1725 ENUMX
1726   BFD_RELOC_16
1727 ENUMX
1728   BFD_RELOC_14
1729 ENUMX
1730   BFD_RELOC_8
1731 ENUMDOC
1732   Basic absolute relocations of N bits.
1733
1734 ENUM
1735   BFD_RELOC_64_PCREL
1736 ENUMX
1737   BFD_RELOC_32_PCREL
1738 ENUMX
1739   BFD_RELOC_24_PCREL
1740 ENUMX
1741   BFD_RELOC_16_PCREL
1742 ENUMX
1743   BFD_RELOC_12_PCREL
1744 ENUMX
1745   BFD_RELOC_8_PCREL
1746 ENUMDOC
1747   PC-relative relocations.  Sometimes these are relative to the address
1748 of the relocation itself; sometimes they are relative to the start of
1749 the section containing the relocation.  It depends on the specific target.
1750
1751 ENUM
1752   BFD_RELOC_32_SECREL
1753 ENUMDOC
1754   Section relative relocations.  Some targets need this for DWARF2.
1755
1756 ENUM
1757   BFD_RELOC_32_GOT_PCREL
1758 ENUMX
1759   BFD_RELOC_16_GOT_PCREL
1760 ENUMX
1761   BFD_RELOC_8_GOT_PCREL
1762 ENUMX
1763   BFD_RELOC_32_GOTOFF
1764 ENUMX
1765   BFD_RELOC_16_GOTOFF
1766 ENUMX
1767   BFD_RELOC_LO16_GOTOFF
1768 ENUMX
1769   BFD_RELOC_HI16_GOTOFF
1770 ENUMX
1771   BFD_RELOC_HI16_S_GOTOFF
1772 ENUMX
1773   BFD_RELOC_8_GOTOFF
1774 ENUMX
1775   BFD_RELOC_64_PLT_PCREL
1776 ENUMX
1777   BFD_RELOC_32_PLT_PCREL
1778 ENUMX
1779   BFD_RELOC_24_PLT_PCREL
1780 ENUMX
1781   BFD_RELOC_16_PLT_PCREL
1782 ENUMX
1783   BFD_RELOC_8_PLT_PCREL
1784 ENUMX
1785   BFD_RELOC_64_PLTOFF
1786 ENUMX
1787   BFD_RELOC_32_PLTOFF
1788 ENUMX
1789   BFD_RELOC_16_PLTOFF
1790 ENUMX
1791   BFD_RELOC_LO16_PLTOFF
1792 ENUMX
1793   BFD_RELOC_HI16_PLTOFF
1794 ENUMX
1795   BFD_RELOC_HI16_S_PLTOFF
1796 ENUMX
1797   BFD_RELOC_8_PLTOFF
1798 ENUMDOC
1799   For ELF.
1800
1801 ENUM
1802   BFD_RELOC_SIZE32
1803 ENUMX
1804   BFD_RELOC_SIZE64
1805 ENUMDOC
1806   Size relocations.
1807
1808 ENUM
1809   BFD_RELOC_68K_GLOB_DAT
1810 ENUMX
1811   BFD_RELOC_68K_JMP_SLOT
1812 ENUMX
1813   BFD_RELOC_68K_RELATIVE
1814 ENUMX
1815   BFD_RELOC_68K_TLS_GD32
1816 ENUMX
1817   BFD_RELOC_68K_TLS_GD16
1818 ENUMX
1819   BFD_RELOC_68K_TLS_GD8
1820 ENUMX
1821   BFD_RELOC_68K_TLS_LDM32
1822 ENUMX
1823   BFD_RELOC_68K_TLS_LDM16
1824 ENUMX
1825   BFD_RELOC_68K_TLS_LDM8
1826 ENUMX
1827   BFD_RELOC_68K_TLS_LDO32
1828 ENUMX
1829   BFD_RELOC_68K_TLS_LDO16
1830 ENUMX
1831   BFD_RELOC_68K_TLS_LDO8
1832 ENUMX
1833   BFD_RELOC_68K_TLS_IE32
1834 ENUMX
1835   BFD_RELOC_68K_TLS_IE16
1836 ENUMX
1837   BFD_RELOC_68K_TLS_IE8
1838 ENUMX
1839   BFD_RELOC_68K_TLS_LE32
1840 ENUMX
1841   BFD_RELOC_68K_TLS_LE16
1842 ENUMX
1843   BFD_RELOC_68K_TLS_LE8
1844 ENUMDOC
1845   Relocations used by 68K ELF.
1846
1847 ENUM
1848   BFD_RELOC_32_BASEREL
1849 ENUMX
1850   BFD_RELOC_16_BASEREL
1851 ENUMX
1852   BFD_RELOC_LO16_BASEREL
1853 ENUMX
1854   BFD_RELOC_HI16_BASEREL
1855 ENUMX
1856   BFD_RELOC_HI16_S_BASEREL
1857 ENUMX
1858   BFD_RELOC_8_BASEREL
1859 ENUMX
1860   BFD_RELOC_RVA
1861 ENUMDOC
1862   Linkage-table relative.
1863
1864 ENUM
1865   BFD_RELOC_8_FFnn
1866 ENUMDOC
1867   Absolute 8-bit relocation, but used to form an address like 0xFFnn.
1868
1869 ENUM
1870   BFD_RELOC_32_PCREL_S2
1871 ENUMX
1872   BFD_RELOC_16_PCREL_S2
1873 ENUMX
1874   BFD_RELOC_23_PCREL_S2
1875 ENUMDOC
1876   These PC-relative relocations are stored as word displacements --
1877 i.e., byte displacements shifted right two bits.  The 30-bit word
1878 displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
1879 SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
1880 signed 16-bit displacement is used on the MIPS, and the 23-bit
1881 displacement is used on the Alpha.
1882
1883 ENUM
1884   BFD_RELOC_HI22
1885 ENUMX
1886   BFD_RELOC_LO10
1887 ENUMDOC
1888   High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
1889 the target word.  These are used on the SPARC.
1890
1891 ENUM
1892   BFD_RELOC_GPREL16
1893 ENUMX
1894   BFD_RELOC_GPREL32
1895 ENUMDOC
1896   For systems that allocate a Global Pointer register, these are
1897 displacements off that register.  These relocation types are
1898 handled specially, because the value the register will have is
1899 decided relatively late.
1900
1901 ENUM
1902   BFD_RELOC_NONE
1903 ENUMX
1904   BFD_RELOC_SPARC_WDISP22
1905 ENUMX
1906   BFD_RELOC_SPARC22
1907 ENUMX
1908   BFD_RELOC_SPARC13
1909 ENUMX
1910   BFD_RELOC_SPARC_GOT10
1911 ENUMX
1912   BFD_RELOC_SPARC_GOT13
1913 ENUMX
1914   BFD_RELOC_SPARC_GOT22
1915 ENUMX
1916   BFD_RELOC_SPARC_PC10
1917 ENUMX
1918   BFD_RELOC_SPARC_PC22
1919 ENUMX
1920   BFD_RELOC_SPARC_WPLT30
1921 ENUMX
1922   BFD_RELOC_SPARC_COPY
1923 ENUMX
1924   BFD_RELOC_SPARC_GLOB_DAT
1925 ENUMX
1926   BFD_RELOC_SPARC_JMP_SLOT
1927 ENUMX
1928   BFD_RELOC_SPARC_RELATIVE
1929 ENUMX
1930   BFD_RELOC_SPARC_UA16
1931 ENUMX
1932   BFD_RELOC_SPARC_UA32
1933 ENUMX
1934   BFD_RELOC_SPARC_UA64
1935 ENUMX
1936   BFD_RELOC_SPARC_GOTDATA_HIX22
1937 ENUMX
1938   BFD_RELOC_SPARC_GOTDATA_LOX10
1939 ENUMX
1940   BFD_RELOC_SPARC_GOTDATA_OP_HIX22
1941 ENUMX
1942   BFD_RELOC_SPARC_GOTDATA_OP_LOX10
1943 ENUMX
1944   BFD_RELOC_SPARC_GOTDATA_OP
1945 ENUMX
1946   BFD_RELOC_SPARC_JMP_IREL
1947 ENUMX
1948   BFD_RELOC_SPARC_IRELATIVE
1949 ENUMDOC
1950   SPARC ELF relocations.  There is probably some overlap with other
1951   relocation types already defined.
1952
1953 ENUM
1954   BFD_RELOC_SPARC_BASE13
1955 ENUMX
1956   BFD_RELOC_SPARC_BASE22
1957 ENUMDOC
1958   I think these are specific to SPARC a.out (e.g., Sun 4).
1959
1960 ENUMEQ
1961   BFD_RELOC_SPARC_64
1962   BFD_RELOC_64
1963 ENUMX
1964   BFD_RELOC_SPARC_10
1965 ENUMX
1966   BFD_RELOC_SPARC_11
1967 ENUMX
1968   BFD_RELOC_SPARC_OLO10
1969 ENUMX
1970   BFD_RELOC_SPARC_HH22
1971 ENUMX
1972   BFD_RELOC_SPARC_HM10
1973 ENUMX
1974   BFD_RELOC_SPARC_LM22
1975 ENUMX
1976   BFD_RELOC_SPARC_PC_HH22
1977 ENUMX
1978   BFD_RELOC_SPARC_PC_HM10
1979 ENUMX
1980   BFD_RELOC_SPARC_PC_LM22
1981 ENUMX
1982   BFD_RELOC_SPARC_WDISP16
1983 ENUMX
1984   BFD_RELOC_SPARC_WDISP19
1985 ENUMX
1986   BFD_RELOC_SPARC_7
1987 ENUMX
1988   BFD_RELOC_SPARC_6
1989 ENUMX
1990   BFD_RELOC_SPARC_5
1991 ENUMEQX
1992   BFD_RELOC_SPARC_DISP64
1993   BFD_RELOC_64_PCREL
1994 ENUMX
1995   BFD_RELOC_SPARC_PLT32
1996 ENUMX
1997   BFD_RELOC_SPARC_PLT64
1998 ENUMX
1999   BFD_RELOC_SPARC_HIX22
2000 ENUMX
2001   BFD_RELOC_SPARC_LOX10
2002 ENUMX
2003   BFD_RELOC_SPARC_H44
2004 ENUMX
2005   BFD_RELOC_SPARC_M44
2006 ENUMX
2007   BFD_RELOC_SPARC_L44
2008 ENUMX
2009   BFD_RELOC_SPARC_REGISTER
2010 ENUMX
2011   BFD_RELOC_SPARC_H34
2012 ENUMX
2013   BFD_RELOC_SPARC_SIZE32
2014 ENUMX
2015   BFD_RELOC_SPARC_SIZE64
2016 ENUMX
2017   BFD_RELOC_SPARC_WDISP10
2018 ENUMDOC
2019   SPARC64 relocations
2020
2021 ENUM
2022   BFD_RELOC_SPARC_REV32
2023 ENUMDOC
2024   SPARC little endian relocation
2025 ENUM
2026   BFD_RELOC_SPARC_TLS_GD_HI22
2027 ENUMX
2028   BFD_RELOC_SPARC_TLS_GD_LO10
2029 ENUMX
2030   BFD_RELOC_SPARC_TLS_GD_ADD
2031 ENUMX
2032   BFD_RELOC_SPARC_TLS_GD_CALL
2033 ENUMX
2034   BFD_RELOC_SPARC_TLS_LDM_HI22
2035 ENUMX
2036   BFD_RELOC_SPARC_TLS_LDM_LO10
2037 ENUMX
2038   BFD_RELOC_SPARC_TLS_LDM_ADD
2039 ENUMX
2040   BFD_RELOC_SPARC_TLS_LDM_CALL
2041 ENUMX
2042   BFD_RELOC_SPARC_TLS_LDO_HIX22
2043 ENUMX
2044   BFD_RELOC_SPARC_TLS_LDO_LOX10
2045 ENUMX
2046   BFD_RELOC_SPARC_TLS_LDO_ADD
2047 ENUMX
2048   BFD_RELOC_SPARC_TLS_IE_HI22
2049 ENUMX
2050   BFD_RELOC_SPARC_TLS_IE_LO10
2051 ENUMX
2052   BFD_RELOC_SPARC_TLS_IE_LD
2053 ENUMX
2054   BFD_RELOC_SPARC_TLS_IE_LDX
2055 ENUMX
2056   BFD_RELOC_SPARC_TLS_IE_ADD
2057 ENUMX
2058   BFD_RELOC_SPARC_TLS_LE_HIX22
2059 ENUMX
2060   BFD_RELOC_SPARC_TLS_LE_LOX10
2061 ENUMX
2062   BFD_RELOC_SPARC_TLS_DTPMOD32
2063 ENUMX
2064   BFD_RELOC_SPARC_TLS_DTPMOD64
2065 ENUMX
2066   BFD_RELOC_SPARC_TLS_DTPOFF32
2067 ENUMX
2068   BFD_RELOC_SPARC_TLS_DTPOFF64
2069 ENUMX
2070   BFD_RELOC_SPARC_TLS_TPOFF32
2071 ENUMX
2072   BFD_RELOC_SPARC_TLS_TPOFF64
2073 ENUMDOC
2074   SPARC TLS relocations
2075
2076 ENUM
2077   BFD_RELOC_SPU_IMM7
2078 ENUMX
2079   BFD_RELOC_SPU_IMM8
2080 ENUMX
2081   BFD_RELOC_SPU_IMM10
2082 ENUMX
2083   BFD_RELOC_SPU_IMM10W
2084 ENUMX
2085   BFD_RELOC_SPU_IMM16
2086 ENUMX
2087   BFD_RELOC_SPU_IMM16W
2088 ENUMX
2089   BFD_RELOC_SPU_IMM18
2090 ENUMX
2091   BFD_RELOC_SPU_PCREL9a
2092 ENUMX
2093   BFD_RELOC_SPU_PCREL9b
2094 ENUMX
2095   BFD_RELOC_SPU_PCREL16
2096 ENUMX
2097   BFD_RELOC_SPU_LO16
2098 ENUMX
2099   BFD_RELOC_SPU_HI16
2100 ENUMX
2101   BFD_RELOC_SPU_PPU32
2102 ENUMX
2103   BFD_RELOC_SPU_PPU64
2104 ENUMX
2105   BFD_RELOC_SPU_ADD_PIC
2106 ENUMDOC
2107   SPU Relocations.
2108
2109 ENUM
2110   BFD_RELOC_ALPHA_GPDISP_HI16
2111 ENUMDOC
2112   Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
2113      "addend" in some special way.
2114   For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
2115      writing; when reading, it will be the absolute section symbol.  The
2116      addend is the displacement in bytes of the "lda" instruction from
2117      the "ldah" instruction (which is at the address of this reloc).
2118 ENUM
2119   BFD_RELOC_ALPHA_GPDISP_LO16
2120 ENUMDOC
2121   For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
2122      with GPDISP_HI16 relocs.  The addend is ignored when writing the
2123      relocations out, and is filled in with the file's GP value on
2124      reading, for convenience.
2125
2126 ENUM
2127   BFD_RELOC_ALPHA_GPDISP
2128 ENUMDOC
2129   The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
2130      relocation except that there is no accompanying GPDISP_LO16
2131      relocation.
2132
2133 ENUM
2134   BFD_RELOC_ALPHA_LITERAL
2135 ENUMX
2136   BFD_RELOC_ALPHA_ELF_LITERAL
2137 ENUMX
2138   BFD_RELOC_ALPHA_LITUSE
2139 ENUMDOC
2140   The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
2141      the assembler turns it into a LDQ instruction to load the address of
2142      the symbol, and then fills in a register in the real instruction.
2143
2144      The LITERAL reloc, at the LDQ instruction, refers to the .lita
2145      section symbol.  The addend is ignored when writing, but is filled
2146      in with the file's GP value on reading, for convenience, as with the
2147      GPDISP_LO16 reloc.
2148
2149      The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
2150      It should refer to the symbol to be referenced, as with 16_GOTOFF,
2151      but it generates output not based on the position within the .got
2152      section, but relative to the GP value chosen for the file during the
2153      final link stage.
2154
2155      The LITUSE reloc, on the instruction using the loaded address, gives
2156      information to the linker that it might be able to use to optimize
2157      away some literal section references.  The symbol is ignored (read
2158      as the absolute section symbol), and the "addend" indicates the type
2159      of instruction using the register:
2160               1 - "memory" fmt insn
2161               2 - byte-manipulation (byte offset reg)
2162               3 - jsr (target of branch)
2163
2164 ENUM
2165   BFD_RELOC_ALPHA_HINT
2166 ENUMDOC
2167   The HINT relocation indicates a value that should be filled into the
2168      "hint" field of a jmp/jsr/ret instruction, for possible branch-
2169      prediction logic which may be provided on some processors.
2170
2171 ENUM
2172   BFD_RELOC_ALPHA_LINKAGE
2173 ENUMDOC
2174   The LINKAGE relocation outputs a linkage pair in the object file,
2175      which is filled by the linker.
2176
2177 ENUM
2178   BFD_RELOC_ALPHA_CODEADDR
2179 ENUMDOC
2180   The CODEADDR relocation outputs a STO_CA in the object file,
2181      which is filled by the linker.
2182
2183 ENUM
2184   BFD_RELOC_ALPHA_GPREL_HI16
2185 ENUMX
2186   BFD_RELOC_ALPHA_GPREL_LO16
2187 ENUMDOC
2188   The GPREL_HI/LO relocations together form a 32-bit offset from the
2189      GP register.
2190
2191 ENUM
2192   BFD_RELOC_ALPHA_BRSGP
2193 ENUMDOC
2194   Like BFD_RELOC_23_PCREL_S2, except that the source and target must
2195   share a common GP, and the target address is adjusted for
2196   STO_ALPHA_STD_GPLOAD.
2197
2198 ENUM
2199   BFD_RELOC_ALPHA_NOP
2200 ENUMDOC
2201   The NOP relocation outputs a NOP if the longword displacement
2202      between two procedure entry points is < 2^21.
2203
2204 ENUM
2205   BFD_RELOC_ALPHA_BSR
2206 ENUMDOC
2207   The BSR relocation outputs a BSR if the longword displacement
2208      between two procedure entry points is < 2^21.
2209
2210 ENUM
2211   BFD_RELOC_ALPHA_LDA
2212 ENUMDOC
2213   The LDA relocation outputs a LDA if the longword displacement
2214      between two procedure entry points is < 2^16.
2215
2216 ENUM
2217   BFD_RELOC_ALPHA_BOH
2218 ENUMDOC
2219   The BOH relocation outputs a BSR if the longword displacement
2220      between two procedure entry points is < 2^21, or else a hint.
2221
2222 ENUM
2223   BFD_RELOC_ALPHA_TLSGD
2224 ENUMX
2225   BFD_RELOC_ALPHA_TLSLDM
2226 ENUMX
2227   BFD_RELOC_ALPHA_DTPMOD64
2228 ENUMX
2229   BFD_RELOC_ALPHA_GOTDTPREL16
2230 ENUMX
2231   BFD_RELOC_ALPHA_DTPREL64
2232 ENUMX
2233   BFD_RELOC_ALPHA_DTPREL_HI16
2234 ENUMX
2235   BFD_RELOC_ALPHA_DTPREL_LO16
2236 ENUMX
2237   BFD_RELOC_ALPHA_DTPREL16
2238 ENUMX
2239   BFD_RELOC_ALPHA_GOTTPREL16
2240 ENUMX
2241   BFD_RELOC_ALPHA_TPREL64
2242 ENUMX
2243   BFD_RELOC_ALPHA_TPREL_HI16
2244 ENUMX
2245   BFD_RELOC_ALPHA_TPREL_LO16
2246 ENUMX
2247   BFD_RELOC_ALPHA_TPREL16
2248 ENUMDOC
2249   Alpha thread-local storage relocations.
2250
2251 ENUM
2252   BFD_RELOC_MIPS_JMP
2253 ENUMX
2254   BFD_RELOC_MICROMIPS_JMP
2255 ENUMDOC
2256   The MIPS jump instruction.
2257
2258 ENUM
2259   BFD_RELOC_MIPS16_JMP
2260 ENUMDOC
2261   The MIPS16 jump instruction.
2262
2263 ENUM
2264   BFD_RELOC_MIPS16_GPREL
2265 ENUMDOC
2266   MIPS16 GP relative reloc.
2267
2268 ENUM
2269   BFD_RELOC_HI16
2270 ENUMDOC
2271   High 16 bits of 32-bit value; simple reloc.
2272
2273 ENUM
2274   BFD_RELOC_HI16_S
2275 ENUMDOC
2276   High 16 bits of 32-bit value but the low 16 bits will be sign
2277      extended and added to form the final result.  If the low 16
2278      bits form a negative number, we need to add one to the high value
2279      to compensate for the borrow when the low bits are added.
2280
2281 ENUM
2282   BFD_RELOC_LO16
2283 ENUMDOC
2284   Low 16 bits.
2285
2286 ENUM
2287   BFD_RELOC_HI16_PCREL
2288 ENUMDOC
2289   High 16 bits of 32-bit pc-relative value
2290 ENUM
2291   BFD_RELOC_HI16_S_PCREL
2292 ENUMDOC
2293   High 16 bits of 32-bit pc-relative value, adjusted
2294 ENUM
2295   BFD_RELOC_LO16_PCREL
2296 ENUMDOC
2297   Low 16 bits of pc-relative value
2298
2299 ENUM
2300   BFD_RELOC_MIPS16_GOT16
2301 ENUMX
2302   BFD_RELOC_MIPS16_CALL16
2303 ENUMDOC
2304   Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
2305      16-bit immediate fields
2306 ENUM
2307   BFD_RELOC_MIPS16_HI16
2308 ENUMDOC
2309   MIPS16 high 16 bits of 32-bit value.
2310 ENUM
2311   BFD_RELOC_MIPS16_HI16_S
2312 ENUMDOC
2313   MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
2314      extended and added to form the final result.  If the low 16
2315      bits form a negative number, we need to add one to the high value
2316      to compensate for the borrow when the low bits are added.
2317 ENUM
2318   BFD_RELOC_MIPS16_LO16
2319 ENUMDOC
2320   MIPS16 low 16 bits.
2321
2322 ENUM
2323   BFD_RELOC_MIPS16_TLS_GD
2324 ENUMX
2325   BFD_RELOC_MIPS16_TLS_LDM
2326 ENUMX
2327   BFD_RELOC_MIPS16_TLS_DTPREL_HI16
2328 ENUMX
2329   BFD_RELOC_MIPS16_TLS_DTPREL_LO16
2330 ENUMX
2331   BFD_RELOC_MIPS16_TLS_GOTTPREL
2332 ENUMX
2333   BFD_RELOC_MIPS16_TLS_TPREL_HI16
2334 ENUMX
2335   BFD_RELOC_MIPS16_TLS_TPREL_LO16
2336 ENUMDOC
2337   MIPS16 TLS relocations
2338
2339 ENUM
2340   BFD_RELOC_MIPS_LITERAL
2341 ENUMX
2342   BFD_RELOC_MICROMIPS_LITERAL
2343 ENUMDOC
2344   Relocation against a MIPS literal section.
2345
2346 ENUM
2347   BFD_RELOC_MICROMIPS_7_PCREL_S1
2348 ENUMX
2349   BFD_RELOC_MICROMIPS_10_PCREL_S1
2350 ENUMX
2351   BFD_RELOC_MICROMIPS_16_PCREL_S1
2352 ENUMDOC
2353   microMIPS PC-relative relocations.
2354
2355 ENUM
2356   BFD_RELOC_MIPS16_16_PCREL_S1
2357 ENUMDOC
2358   MIPS16 PC-relative relocation.
2359
2360 ENUM
2361   BFD_RELOC_MIPS_21_PCREL_S2
2362 ENUMX
2363   BFD_RELOC_MIPS_26_PCREL_S2
2364 ENUMX
2365   BFD_RELOC_MIPS_18_PCREL_S3
2366 ENUMX
2367   BFD_RELOC_MIPS_19_PCREL_S2
2368 ENUMDOC
2369   MIPS PC-relative relocations.
2370
2371 ENUM
2372   BFD_RELOC_MICROMIPS_GPREL16
2373 ENUMX
2374   BFD_RELOC_MICROMIPS_HI16
2375 ENUMX
2376   BFD_RELOC_MICROMIPS_HI16_S
2377 ENUMX
2378   BFD_RELOC_MICROMIPS_LO16
2379 ENUMDOC
2380   microMIPS versions of generic BFD relocs.
2381
2382 ENUM
2383   BFD_RELOC_MIPS_GOT16
2384 ENUMX
2385   BFD_RELOC_MICROMIPS_GOT16
2386 ENUMX
2387   BFD_RELOC_MIPS_CALL16
2388 ENUMX
2389   BFD_RELOC_MICROMIPS_CALL16
2390 ENUMX
2391   BFD_RELOC_MIPS_GOT_HI16
2392 ENUMX
2393   BFD_RELOC_MICROMIPS_GOT_HI16
2394 ENUMX
2395   BFD_RELOC_MIPS_GOT_LO16
2396 ENUMX
2397   BFD_RELOC_MICROMIPS_GOT_LO16
2398 ENUMX
2399   BFD_RELOC_MIPS_CALL_HI16
2400 ENUMX
2401   BFD_RELOC_MICROMIPS_CALL_HI16
2402 ENUMX
2403   BFD_RELOC_MIPS_CALL_LO16
2404 ENUMX
2405   BFD_RELOC_MICROMIPS_CALL_LO16
2406 ENUMX
2407   BFD_RELOC_MIPS_SUB
2408 ENUMX
2409   BFD_RELOC_MICROMIPS_SUB
2410 ENUMX
2411   BFD_RELOC_MIPS_GOT_PAGE
2412 ENUMX
2413   BFD_RELOC_MICROMIPS_GOT_PAGE
2414 ENUMX
2415   BFD_RELOC_MIPS_GOT_OFST
2416 ENUMX
2417   BFD_RELOC_MICROMIPS_GOT_OFST
2418 ENUMX
2419   BFD_RELOC_MIPS_GOT_DISP
2420 ENUMX
2421   BFD_RELOC_MICROMIPS_GOT_DISP
2422 ENUMX
2423   BFD_RELOC_MIPS_SHIFT5
2424 ENUMX
2425   BFD_RELOC_MIPS_SHIFT6
2426 ENUMX
2427   BFD_RELOC_MIPS_INSERT_A
2428 ENUMX
2429   BFD_RELOC_MIPS_INSERT_B
2430 ENUMX
2431   BFD_RELOC_MIPS_DELETE
2432 ENUMX
2433   BFD_RELOC_MIPS_HIGHEST
2434 ENUMX
2435   BFD_RELOC_MICROMIPS_HIGHEST
2436 ENUMX
2437   BFD_RELOC_MIPS_HIGHER
2438 ENUMX
2439   BFD_RELOC_MICROMIPS_HIGHER
2440 ENUMX
2441   BFD_RELOC_MIPS_SCN_DISP
2442 ENUMX
2443   BFD_RELOC_MICROMIPS_SCN_DISP
2444 ENUMX
2445   BFD_RELOC_MIPS_REL16
2446 ENUMX
2447   BFD_RELOC_MIPS_RELGOT
2448 ENUMX
2449   BFD_RELOC_MIPS_JALR
2450 ENUMX
2451   BFD_RELOC_MICROMIPS_JALR
2452 ENUMX
2453   BFD_RELOC_MIPS_TLS_DTPMOD32
2454 ENUMX
2455   BFD_RELOC_MIPS_TLS_DTPREL32
2456 ENUMX
2457   BFD_RELOC_MIPS_TLS_DTPMOD64
2458 ENUMX
2459   BFD_RELOC_MIPS_TLS_DTPREL64
2460 ENUMX
2461   BFD_RELOC_MIPS_TLS_GD
2462 ENUMX
2463   BFD_RELOC_MICROMIPS_TLS_GD
2464 ENUMX
2465   BFD_RELOC_MIPS_TLS_LDM
2466 ENUMX
2467   BFD_RELOC_MICROMIPS_TLS_LDM
2468 ENUMX
2469   BFD_RELOC_MIPS_TLS_DTPREL_HI16
2470 ENUMX
2471   BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16
2472 ENUMX
2473   BFD_RELOC_MIPS_TLS_DTPREL_LO16
2474 ENUMX
2475   BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16
2476 ENUMX
2477   BFD_RELOC_MIPS_TLS_GOTTPREL
2478 ENUMX
2479   BFD_RELOC_MICROMIPS_TLS_GOTTPREL
2480 ENUMX
2481   BFD_RELOC_MIPS_TLS_TPREL32
2482 ENUMX
2483   BFD_RELOC_MIPS_TLS_TPREL64
2484 ENUMX
2485   BFD_RELOC_MIPS_TLS_TPREL_HI16
2486 ENUMX
2487   BFD_RELOC_MICROMIPS_TLS_TPREL_HI16
2488 ENUMX
2489   BFD_RELOC_MIPS_TLS_TPREL_LO16
2490 ENUMX
2491   BFD_RELOC_MICROMIPS_TLS_TPREL_LO16
2492 ENUMX
2493   BFD_RELOC_MIPS_EH
2494 ENUMDOC
2495   MIPS ELF relocations.
2496 COMMENT
2497
2498 ENUM
2499   BFD_RELOC_MIPS_COPY
2500 ENUMX
2501   BFD_RELOC_MIPS_JUMP_SLOT
2502 ENUMDOC
2503   MIPS ELF relocations (VxWorks and PLT extensions).
2504 COMMENT
2505
2506 ENUM
2507   BFD_RELOC_MOXIE_10_PCREL
2508 ENUMDOC
2509   Moxie ELF relocations.
2510 COMMENT
2511
2512 ENUM
2513   BFD_RELOC_FT32_10
2514 ENUMX
2515   BFD_RELOC_FT32_20
2516 ENUMX
2517   BFD_RELOC_FT32_17
2518 ENUMX
2519   BFD_RELOC_FT32_18
2520 ENUMX
2521   BFD_RELOC_FT32_RELAX
2522 ENUMX
2523   BFD_RELOC_FT32_SC0
2524 ENUMX
2525   BFD_RELOC_FT32_SC1
2526 ENUMX
2527   BFD_RELOC_FT32_15
2528 ENUMX
2529   BFD_RELOC_FT32_DIFF32
2530 ENUMDOC
2531   FT32 ELF relocations.
2532 COMMENT
2533
2534 ENUM
2535   BFD_RELOC_FRV_LABEL16
2536 ENUMX
2537   BFD_RELOC_FRV_LABEL24
2538 ENUMX
2539   BFD_RELOC_FRV_LO16
2540 ENUMX
2541   BFD_RELOC_FRV_HI16
2542 ENUMX
2543   BFD_RELOC_FRV_GPREL12
2544 ENUMX
2545   BFD_RELOC_FRV_GPRELU12
2546 ENUMX
2547   BFD_RELOC_FRV_GPREL32
2548 ENUMX
2549   BFD_RELOC_FRV_GPRELHI
2550 ENUMX
2551   BFD_RELOC_FRV_GPRELLO
2552 ENUMX
2553   BFD_RELOC_FRV_GOT12
2554 ENUMX
2555   BFD_RELOC_FRV_GOTHI
2556 ENUMX
2557   BFD_RELOC_FRV_GOTLO
2558 ENUMX
2559   BFD_RELOC_FRV_FUNCDESC
2560 ENUMX
2561   BFD_RELOC_FRV_FUNCDESC_GOT12
2562 ENUMX
2563   BFD_RELOC_FRV_FUNCDESC_GOTHI
2564 ENUMX
2565   BFD_RELOC_FRV_FUNCDESC_GOTLO
2566 ENUMX
2567   BFD_RELOC_FRV_FUNCDESC_VALUE
2568 ENUMX
2569   BFD_RELOC_FRV_FUNCDESC_GOTOFF12
2570 ENUMX
2571   BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
2572 ENUMX
2573   BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
2574 ENUMX
2575   BFD_RELOC_FRV_GOTOFF12
2576 ENUMX
2577   BFD_RELOC_FRV_GOTOFFHI
2578 ENUMX
2579   BFD_RELOC_FRV_GOTOFFLO
2580 ENUMX
2581   BFD_RELOC_FRV_GETTLSOFF
2582 ENUMX
2583   BFD_RELOC_FRV_TLSDESC_VALUE
2584 ENUMX
2585   BFD_RELOC_FRV_GOTTLSDESC12
2586 ENUMX
2587   BFD_RELOC_FRV_GOTTLSDESCHI
2588 ENUMX
2589   BFD_RELOC_FRV_GOTTLSDESCLO
2590 ENUMX
2591   BFD_RELOC_FRV_TLSMOFF12
2592 ENUMX
2593   BFD_RELOC_FRV_TLSMOFFHI
2594 ENUMX
2595   BFD_RELOC_FRV_TLSMOFFLO
2596 ENUMX
2597   BFD_RELOC_FRV_GOTTLSOFF12
2598 ENUMX
2599   BFD_RELOC_FRV_GOTTLSOFFHI
2600 ENUMX
2601   BFD_RELOC_FRV_GOTTLSOFFLO
2602 ENUMX
2603   BFD_RELOC_FRV_TLSOFF
2604 ENUMX
2605   BFD_RELOC_FRV_TLSDESC_RELAX
2606 ENUMX
2607   BFD_RELOC_FRV_GETTLSOFF_RELAX
2608 ENUMX
2609   BFD_RELOC_FRV_TLSOFF_RELAX
2610 ENUMX
2611   BFD_RELOC_FRV_TLSMOFF
2612 ENUMDOC
2613   Fujitsu Frv Relocations.
2614 COMMENT
2615
2616 ENUM
2617   BFD_RELOC_MN10300_GOTOFF24
2618 ENUMDOC
2619   This is a 24bit GOT-relative reloc for the mn10300.
2620 ENUM
2621   BFD_RELOC_MN10300_GOT32
2622 ENUMDOC
2623   This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
2624   in the instruction.
2625 ENUM
2626   BFD_RELOC_MN10300_GOT24
2627 ENUMDOC
2628   This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
2629   in the instruction.
2630 ENUM
2631   BFD_RELOC_MN10300_GOT16
2632 ENUMDOC
2633   This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
2634   in the instruction.
2635 ENUM
2636   BFD_RELOC_MN10300_COPY
2637 ENUMDOC
2638   Copy symbol at runtime.
2639 ENUM
2640   BFD_RELOC_MN10300_GLOB_DAT
2641 ENUMDOC
2642   Create GOT entry.
2643 ENUM
2644   BFD_RELOC_MN10300_JMP_SLOT
2645 ENUMDOC
2646   Create PLT entry.
2647 ENUM
2648   BFD_RELOC_MN10300_RELATIVE
2649 ENUMDOC
2650   Adjust by program base.
2651 ENUM
2652   BFD_RELOC_MN10300_SYM_DIFF
2653 ENUMDOC
2654   Together with another reloc targeted at the same location,
2655   allows for a value that is the difference of two symbols
2656   in the same section.
2657 ENUM
2658   BFD_RELOC_MN10300_ALIGN
2659 ENUMDOC
2660   The addend of this reloc is an alignment power that must
2661   be honoured at the offset's location, regardless of linker
2662   relaxation.
2663 ENUM
2664   BFD_RELOC_MN10300_TLS_GD
2665 ENUMX
2666   BFD_RELOC_MN10300_TLS_LD
2667 ENUMX
2668   BFD_RELOC_MN10300_TLS_LDO
2669 ENUMX
2670   BFD_RELOC_MN10300_TLS_GOTIE
2671 ENUMX
2672   BFD_RELOC_MN10300_TLS_IE
2673 ENUMX
2674   BFD_RELOC_MN10300_TLS_LE
2675 ENUMX
2676   BFD_RELOC_MN10300_TLS_DTPMOD
2677 ENUMX
2678   BFD_RELOC_MN10300_TLS_DTPOFF
2679 ENUMX
2680   BFD_RELOC_MN10300_TLS_TPOFF
2681 ENUMDOC
2682   Various TLS-related relocations.
2683 ENUM
2684   BFD_RELOC_MN10300_32_PCREL
2685 ENUMDOC
2686   This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
2687   instruction.
2688 ENUM
2689   BFD_RELOC_MN10300_16_PCREL
2690 ENUMDOC
2691   This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
2692   instruction.
2693 COMMENT
2694
2695 ENUM
2696   BFD_RELOC_386_GOT32
2697 ENUMX
2698   BFD_RELOC_386_PLT32
2699 ENUMX
2700   BFD_RELOC_386_COPY
2701 ENUMX
2702   BFD_RELOC_386_GLOB_DAT
2703 ENUMX
2704   BFD_RELOC_386_JUMP_SLOT
2705 ENUMX
2706   BFD_RELOC_386_RELATIVE
2707 ENUMX
2708   BFD_RELOC_386_GOTOFF
2709 ENUMX
2710   BFD_RELOC_386_GOTPC
2711 ENUMX
2712   BFD_RELOC_386_TLS_TPOFF
2713 ENUMX
2714   BFD_RELOC_386_TLS_IE
2715 ENUMX
2716   BFD_RELOC_386_TLS_GOTIE
2717 ENUMX
2718   BFD_RELOC_386_TLS_LE
2719 ENUMX
2720   BFD_RELOC_386_TLS_GD
2721 ENUMX
2722   BFD_RELOC_386_TLS_LDM
2723 ENUMX
2724   BFD_RELOC_386_TLS_LDO_32
2725 ENUMX
2726   BFD_RELOC_386_TLS_IE_32
2727 ENUMX
2728   BFD_RELOC_386_TLS_LE_32
2729 ENUMX
2730   BFD_RELOC_386_TLS_DTPMOD32
2731 ENUMX
2732   BFD_RELOC_386_TLS_DTPOFF32
2733 ENUMX
2734   BFD_RELOC_386_TLS_TPOFF32
2735 ENUMX
2736   BFD_RELOC_386_TLS_GOTDESC
2737 ENUMX
2738   BFD_RELOC_386_TLS_DESC_CALL
2739 ENUMX
2740   BFD_RELOC_386_TLS_DESC
2741 ENUMX
2742   BFD_RELOC_386_IRELATIVE
2743 ENUMX
2744   BFD_RELOC_386_GOT32X
2745 ENUMDOC
2746   i386/elf relocations
2747
2748 ENUM
2749   BFD_RELOC_X86_64_GOT32
2750 ENUMX
2751   BFD_RELOC_X86_64_PLT32
2752 ENUMX
2753   BFD_RELOC_X86_64_COPY
2754 ENUMX
2755   BFD_RELOC_X86_64_GLOB_DAT
2756 ENUMX
2757   BFD_RELOC_X86_64_JUMP_SLOT
2758 ENUMX
2759   BFD_RELOC_X86_64_RELATIVE
2760 ENUMX
2761   BFD_RELOC_X86_64_GOTPCREL
2762 ENUMX
2763   BFD_RELOC_X86_64_32S
2764 ENUMX
2765   BFD_RELOC_X86_64_DTPMOD64
2766 ENUMX
2767   BFD_RELOC_X86_64_DTPOFF64
2768 ENUMX
2769   BFD_RELOC_X86_64_TPOFF64
2770 ENUMX
2771   BFD_RELOC_X86_64_TLSGD
2772 ENUMX
2773   BFD_RELOC_X86_64_TLSLD
2774 ENUMX
2775   BFD_RELOC_X86_64_DTPOFF32
2776 ENUMX
2777   BFD_RELOC_X86_64_GOTTPOFF
2778 ENUMX
2779   BFD_RELOC_X86_64_TPOFF32
2780 ENUMX
2781   BFD_RELOC_X86_64_GOTOFF64
2782 ENUMX
2783   BFD_RELOC_X86_64_GOTPC32
2784 ENUMX
2785   BFD_RELOC_X86_64_GOT64
2786 ENUMX
2787   BFD_RELOC_X86_64_GOTPCREL64
2788 ENUMX
2789   BFD_RELOC_X86_64_GOTPC64
2790 ENUMX
2791   BFD_RELOC_X86_64_GOTPLT64
2792 ENUMX
2793   BFD_RELOC_X86_64_PLTOFF64
2794 ENUMX
2795   BFD_RELOC_X86_64_GOTPC32_TLSDESC
2796 ENUMX
2797   BFD_RELOC_X86_64_TLSDESC_CALL
2798 ENUMX
2799   BFD_RELOC_X86_64_TLSDESC
2800 ENUMX
2801   BFD_RELOC_X86_64_IRELATIVE
2802 ENUMX
2803   BFD_RELOC_X86_64_PC32_BND
2804 ENUMX
2805   BFD_RELOC_X86_64_PLT32_BND
2806 ENUMX
2807   BFD_RELOC_X86_64_GOTPCRELX
2808 ENUMX
2809   BFD_RELOC_X86_64_REX_GOTPCRELX
2810 ENUMDOC
2811   x86-64/elf relocations
2812
2813 ENUM
2814   BFD_RELOC_NS32K_IMM_8
2815 ENUMX
2816   BFD_RELOC_NS32K_IMM_16
2817 ENUMX
2818   BFD_RELOC_NS32K_IMM_32
2819 ENUMX
2820   BFD_RELOC_NS32K_IMM_8_PCREL
2821 ENUMX
2822   BFD_RELOC_NS32K_IMM_16_PCREL
2823 ENUMX
2824   BFD_RELOC_NS32K_IMM_32_PCREL
2825 ENUMX
2826   BFD_RELOC_NS32K_DISP_8
2827 ENUMX
2828   BFD_RELOC_NS32K_DISP_16
2829 ENUMX
2830   BFD_RELOC_NS32K_DISP_32
2831 ENUMX
2832   BFD_RELOC_NS32K_DISP_8_PCREL
2833 ENUMX
2834   BFD_RELOC_NS32K_DISP_16_PCREL
2835 ENUMX
2836   BFD_RELOC_NS32K_DISP_32_PCREL
2837 ENUMDOC
2838   ns32k relocations
2839
2840 ENUM
2841   BFD_RELOC_PDP11_DISP_8_PCREL
2842 ENUMX
2843   BFD_RELOC_PDP11_DISP_6_PCREL
2844 ENUMDOC
2845   PDP11 relocations
2846
2847 ENUM
2848   BFD_RELOC_PJ_CODE_HI16
2849 ENUMX
2850   BFD_RELOC_PJ_CODE_LO16
2851 ENUMX
2852   BFD_RELOC_PJ_CODE_DIR16
2853 ENUMX
2854   BFD_RELOC_PJ_CODE_DIR32
2855 ENUMX
2856   BFD_RELOC_PJ_CODE_REL16
2857 ENUMX
2858   BFD_RELOC_PJ_CODE_REL32
2859 ENUMDOC
2860   Picojava relocs.  Not all of these appear in object files.
2861
2862 ENUM
2863   BFD_RELOC_PPC_B26
2864 ENUMX
2865   BFD_RELOC_PPC_BA26
2866 ENUMX
2867   BFD_RELOC_PPC_TOC16
2868 ENUMX
2869   BFD_RELOC_PPC_B16
2870 ENUMX
2871   BFD_RELOC_PPC_B16_BRTAKEN
2872 ENUMX
2873   BFD_RELOC_PPC_B16_BRNTAKEN
2874 ENUMX
2875   BFD_RELOC_PPC_BA16
2876 ENUMX
2877   BFD_RELOC_PPC_BA16_BRTAKEN
2878 ENUMX
2879   BFD_RELOC_PPC_BA16_BRNTAKEN
2880 ENUMX
2881   BFD_RELOC_PPC_COPY
2882 ENUMX
2883   BFD_RELOC_PPC_GLOB_DAT
2884 ENUMX
2885   BFD_RELOC_PPC_JMP_SLOT
2886 ENUMX
2887   BFD_RELOC_PPC_RELATIVE
2888 ENUMX
2889   BFD_RELOC_PPC_LOCAL24PC
2890 ENUMX
2891   BFD_RELOC_PPC_EMB_NADDR32
2892 ENUMX
2893   BFD_RELOC_PPC_EMB_NADDR16
2894 ENUMX
2895   BFD_RELOC_PPC_EMB_NADDR16_LO
2896 ENUMX
2897   BFD_RELOC_PPC_EMB_NADDR16_HI
2898 ENUMX
2899   BFD_RELOC_PPC_EMB_NADDR16_HA
2900 ENUMX
2901   BFD_RELOC_PPC_EMB_SDAI16
2902 ENUMX
2903   BFD_RELOC_PPC_EMB_SDA2I16
2904 ENUMX
2905   BFD_RELOC_PPC_EMB_SDA2REL
2906 ENUMX
2907   BFD_RELOC_PPC_EMB_SDA21
2908 ENUMX
2909   BFD_RELOC_PPC_EMB_MRKREF
2910 ENUMX
2911   BFD_RELOC_PPC_EMB_RELSEC16
2912 ENUMX
2913   BFD_RELOC_PPC_EMB_RELST_LO
2914 ENUMX
2915   BFD_RELOC_PPC_EMB_RELST_HI
2916 ENUMX
2917   BFD_RELOC_PPC_EMB_RELST_HA
2918 ENUMX
2919   BFD_RELOC_PPC_EMB_BIT_FLD
2920 ENUMX
2921   BFD_RELOC_PPC_EMB_RELSDA
2922 ENUMX
2923   BFD_RELOC_PPC_VLE_REL8
2924 ENUMX
2925   BFD_RELOC_PPC_VLE_REL15
2926 ENUMX
2927   BFD_RELOC_PPC_VLE_REL24
2928 ENUMX
2929   BFD_RELOC_PPC_VLE_LO16A
2930 ENUMX
2931   BFD_RELOC_PPC_VLE_LO16D
2932 ENUMX
2933   BFD_RELOC_PPC_VLE_HI16A
2934 ENUMX
2935   BFD_RELOC_PPC_VLE_HI16D
2936 ENUMX
2937   BFD_RELOC_PPC_VLE_HA16A
2938 ENUMX
2939   BFD_RELOC_PPC_VLE_HA16D
2940 ENUMX
2941   BFD_RELOC_PPC_VLE_SDA21
2942 ENUMX
2943   BFD_RELOC_PPC_VLE_SDA21_LO
2944 ENUMX
2945   BFD_RELOC_PPC_VLE_SDAREL_LO16A
2946 ENUMX
2947   BFD_RELOC_PPC_VLE_SDAREL_LO16D
2948 ENUMX
2949   BFD_RELOC_PPC_VLE_SDAREL_HI16A
2950 ENUMX
2951   BFD_RELOC_PPC_VLE_SDAREL_HI16D
2952 ENUMX
2953   BFD_RELOC_PPC_VLE_SDAREL_HA16A
2954 ENUMX
2955   BFD_RELOC_PPC_VLE_SDAREL_HA16D
2956 ENUMX
2957   BFD_RELOC_PPC_16DX_HA
2958 ENUMX
2959   BFD_RELOC_PPC_REL16DX_HA
2960 ENUMX
2961   BFD_RELOC_PPC64_HIGHER
2962 ENUMX
2963   BFD_RELOC_PPC64_HIGHER_S
2964 ENUMX
2965   BFD_RELOC_PPC64_HIGHEST
2966 ENUMX
2967   BFD_RELOC_PPC64_HIGHEST_S
2968 ENUMX
2969   BFD_RELOC_PPC64_TOC16_LO
2970 ENUMX
2971   BFD_RELOC_PPC64_TOC16_HI
2972 ENUMX
2973   BFD_RELOC_PPC64_TOC16_HA
2974 ENUMX
2975   BFD_RELOC_PPC64_TOC
2976 ENUMX
2977   BFD_RELOC_PPC64_PLTGOT16
2978 ENUMX
2979   BFD_RELOC_PPC64_PLTGOT16_LO
2980 ENUMX
2981   BFD_RELOC_PPC64_PLTGOT16_HI
2982 ENUMX
2983   BFD_RELOC_PPC64_PLTGOT16_HA
2984 ENUMX
2985   BFD_RELOC_PPC64_ADDR16_DS
2986 ENUMX
2987   BFD_RELOC_PPC64_ADDR16_LO_DS
2988 ENUMX
2989   BFD_RELOC_PPC64_GOT16_DS
2990 ENUMX
2991   BFD_RELOC_PPC64_GOT16_LO_DS
2992 ENUMX
2993   BFD_RELOC_PPC64_PLT16_LO_DS
2994 ENUMX
2995   BFD_RELOC_PPC64_SECTOFF_DS
2996 ENUMX
2997   BFD_RELOC_PPC64_SECTOFF_LO_DS
2998 ENUMX
2999   BFD_RELOC_PPC64_TOC16_DS
3000 ENUMX
3001   BFD_RELOC_PPC64_TOC16_LO_DS
3002 ENUMX
3003   BFD_RELOC_PPC64_PLTGOT16_DS
3004 ENUMX
3005   BFD_RELOC_PPC64_PLTGOT16_LO_DS
3006 ENUMX
3007   BFD_RELOC_PPC64_ADDR16_HIGH
3008 ENUMX
3009   BFD_RELOC_PPC64_ADDR16_HIGHA
3010 ENUMX
3011   BFD_RELOC_PPC64_ADDR64_LOCAL
3012 ENUMX
3013   BFD_RELOC_PPC64_ENTRY
3014 ENUMDOC
3015   Power(rs6000) and PowerPC relocations.
3016
3017 ENUM
3018   BFD_RELOC_PPC_TLS
3019 ENUMX
3020   BFD_RELOC_PPC_TLSGD
3021 ENUMX
3022   BFD_RELOC_PPC_TLSLD
3023 ENUMX
3024   BFD_RELOC_PPC_DTPMOD
3025 ENUMX
3026   BFD_RELOC_PPC_TPREL16
3027 ENUMX
3028   BFD_RELOC_PPC_TPREL16_LO
3029 ENUMX
3030   BFD_RELOC_PPC_TPREL16_HI
3031 ENUMX
3032   BFD_RELOC_PPC_TPREL16_HA
3033 ENUMX
3034   BFD_RELOC_PPC_TPREL
3035 ENUMX
3036   BFD_RELOC_PPC_DTPREL16
3037 ENUMX
3038   BFD_RELOC_PPC_DTPREL16_LO
3039 ENUMX
3040   BFD_RELOC_PPC_DTPREL16_HI
3041 ENUMX
3042   BFD_RELOC_PPC_DTPREL16_HA
3043 ENUMX
3044   BFD_RELOC_PPC_DTPREL
3045 ENUMX
3046   BFD_RELOC_PPC_GOT_TLSGD16
3047 ENUMX
3048   BFD_RELOC_PPC_GOT_TLSGD16_LO
3049 ENUMX
3050   BFD_RELOC_PPC_GOT_TLSGD16_HI
3051 ENUMX
3052   BFD_RELOC_PPC_GOT_TLSGD16_HA
3053 ENUMX
3054   BFD_RELOC_PPC_GOT_TLSLD16
3055 ENUMX
3056   BFD_RELOC_PPC_GOT_TLSLD16_LO
3057 ENUMX
3058   BFD_RELOC_PPC_GOT_TLSLD16_HI
3059 ENUMX
3060   BFD_RELOC_PPC_GOT_TLSLD16_HA
3061 ENUMX
3062   BFD_RELOC_PPC_GOT_TPREL16
3063 ENUMX
3064   BFD_RELOC_PPC_GOT_TPREL16_LO
3065 ENUMX
3066   BFD_RELOC_PPC_GOT_TPREL16_HI
3067 ENUMX
3068   BFD_RELOC_PPC_GOT_TPREL16_HA
3069 ENUMX
3070   BFD_RELOC_PPC_GOT_DTPREL16
3071 ENUMX
3072   BFD_RELOC_PPC_GOT_DTPREL16_LO
3073 ENUMX
3074   BFD_RELOC_PPC_GOT_DTPREL16_HI
3075 ENUMX
3076   BFD_RELOC_PPC_GOT_DTPREL16_HA
3077 ENUMX
3078   BFD_RELOC_PPC64_TPREL16_DS
3079 ENUMX
3080   BFD_RELOC_PPC64_TPREL16_LO_DS
3081 ENUMX
3082   BFD_RELOC_PPC64_TPREL16_HIGHER
3083 ENUMX
3084   BFD_RELOC_PPC64_TPREL16_HIGHERA
3085 ENUMX
3086   BFD_RELOC_PPC64_TPREL16_HIGHEST
3087 ENUMX
3088   BFD_RELOC_PPC64_TPREL16_HIGHESTA
3089 ENUMX
3090   BFD_RELOC_PPC64_DTPREL16_DS
3091 ENUMX
3092   BFD_RELOC_PPC64_DTPREL16_LO_DS
3093 ENUMX
3094   BFD_RELOC_PPC64_DTPREL16_HIGHER
3095 ENUMX
3096   BFD_RELOC_PPC64_DTPREL16_HIGHERA
3097 ENUMX
3098   BFD_RELOC_PPC64_DTPREL16_HIGHEST
3099 ENUMX
3100   BFD_RELOC_PPC64_DTPREL16_HIGHESTA
3101 ENUMX
3102   BFD_RELOC_PPC64_TPREL16_HIGH
3103 ENUMX
3104   BFD_RELOC_PPC64_TPREL16_HIGHA
3105 ENUMX
3106   BFD_RELOC_PPC64_DTPREL16_HIGH
3107 ENUMX
3108   BFD_RELOC_PPC64_DTPREL16_HIGHA
3109 ENUMDOC
3110   PowerPC and PowerPC64 thread-local storage relocations.
3111
3112 ENUM
3113   BFD_RELOC_I370_D12
3114 ENUMDOC
3115   IBM 370/390 relocations
3116
3117 ENUM
3118   BFD_RELOC_CTOR
3119 ENUMDOC
3120   The type of reloc used to build a constructor table - at the moment
3121   probably a 32 bit wide absolute relocation, but the target can choose.
3122   It generally does map to one of the other relocation types.
3123
3124 ENUM
3125   BFD_RELOC_ARM_PCREL_BRANCH
3126 ENUMDOC
3127   ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
3128   not stored in the instruction.
3129 ENUM
3130   BFD_RELOC_ARM_PCREL_BLX
3131 ENUMDOC
3132   ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
3133   not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
3134   field in the instruction.
3135 ENUM
3136   BFD_RELOC_THUMB_PCREL_BLX
3137 ENUMDOC
3138   Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
3139   not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
3140   field in the instruction.
3141 ENUM
3142   BFD_RELOC_ARM_PCREL_CALL
3143 ENUMDOC
3144   ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.
3145 ENUM
3146   BFD_RELOC_ARM_PCREL_JUMP
3147 ENUMDOC
3148   ARM 26-bit pc-relative branch for B or conditional BL instruction.
3149
3150 ENUM
3151   BFD_RELOC_THUMB_PCREL_BRANCH7
3152 ENUMX
3153   BFD_RELOC_THUMB_PCREL_BRANCH9
3154 ENUMX
3155   BFD_RELOC_THUMB_PCREL_BRANCH12
3156 ENUMX
3157   BFD_RELOC_THUMB_PCREL_BRANCH20
3158 ENUMX
3159   BFD_RELOC_THUMB_PCREL_BRANCH23
3160 ENUMX
3161   BFD_RELOC_THUMB_PCREL_BRANCH25
3162 ENUMDOC
3163   Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
3164   The lowest bit must be zero and is not stored in the instruction.
3165   Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
3166   "nn" one smaller in all cases.  Note further that BRANCH23
3167   corresponds to R_ARM_THM_CALL.
3168
3169 ENUM
3170   BFD_RELOC_ARM_OFFSET_IMM
3171 ENUMDOC
3172   12-bit immediate offset, used in ARM-format ldr and str instructions.
3173
3174 ENUM
3175   BFD_RELOC_ARM_THUMB_OFFSET
3176 ENUMDOC
3177   5-bit immediate offset, used in Thumb-format ldr and str instructions.
3178
3179 ENUM
3180   BFD_RELOC_ARM_TARGET1
3181 ENUMDOC
3182   Pc-relative or absolute relocation depending on target.  Used for
3183   entries in .init_array sections.
3184 ENUM
3185   BFD_RELOC_ARM_ROSEGREL32
3186 ENUMDOC
3187   Read-only segment base relative address.
3188 ENUM
3189   BFD_RELOC_ARM_SBREL32
3190 ENUMDOC
3191   Data segment base relative address.
3192 ENUM
3193   BFD_RELOC_ARM_TARGET2
3194 ENUMDOC
3195   This reloc is used for references to RTTI data from exception handling
3196   tables.  The actual definition depends on the target.  It may be a
3197   pc-relative or some form of GOT-indirect relocation.
3198 ENUM
3199   BFD_RELOC_ARM_PREL31
3200 ENUMDOC
3201   31-bit PC relative address.
3202 ENUM
3203   BFD_RELOC_ARM_MOVW
3204 ENUMX
3205   BFD_RELOC_ARM_MOVT
3206 ENUMX
3207   BFD_RELOC_ARM_MOVW_PCREL
3208 ENUMX
3209   BFD_RELOC_ARM_MOVT_PCREL
3210 ENUMX
3211   BFD_RELOC_ARM_THUMB_MOVW
3212 ENUMX
3213   BFD_RELOC_ARM_THUMB_MOVT
3214 ENUMX
3215   BFD_RELOC_ARM_THUMB_MOVW_PCREL
3216 ENUMX
3217   BFD_RELOC_ARM_THUMB_MOVT_PCREL
3218 ENUMDOC
3219   Low and High halfword relocations for MOVW and MOVT instructions.
3220
3221 ENUM
3222   BFD_RELOC_ARM_GOTFUNCDESC
3223 ENUMX
3224   BFD_RELOC_ARM_GOTOFFFUNCDESC
3225 ENUMX
3226   BFD_RELOC_ARM_FUNCDESC
3227 ENUMX
3228   BFD_RELOC_ARM_FUNCDESC_VALUE
3229 ENUMX
3230   BFD_RELOC_ARM_TLS_GD32_FDPIC
3231 ENUMX
3232   BFD_RELOC_ARM_TLS_LDM32_FDPIC
3233 ENUMX
3234   BFD_RELOC_ARM_TLS_IE32_FDPIC
3235 ENUMDOC
3236   ARM FDPIC specific relocations.
3237
3238 ENUM
3239   BFD_RELOC_ARM_JUMP_SLOT
3240 ENUMX
3241   BFD_RELOC_ARM_GLOB_DAT
3242 ENUMX
3243   BFD_RELOC_ARM_GOT32
3244 ENUMX
3245   BFD_RELOC_ARM_PLT32
3246 ENUMX
3247   BFD_RELOC_ARM_RELATIVE
3248 ENUMX
3249   BFD_RELOC_ARM_GOTOFF
3250 ENUMX
3251   BFD_RELOC_ARM_GOTPC
3252 ENUMX
3253   BFD_RELOC_ARM_GOT_PREL
3254 ENUMDOC
3255   Relocations for setting up GOTs and PLTs for shared libraries.
3256
3257 ENUM
3258   BFD_RELOC_ARM_TLS_GD32
3259 ENUMX
3260   BFD_RELOC_ARM_TLS_LDO32
3261 ENUMX
3262   BFD_RELOC_ARM_TLS_LDM32
3263 ENUMX
3264   BFD_RELOC_ARM_TLS_DTPOFF32
3265 ENUMX
3266   BFD_RELOC_ARM_TLS_DTPMOD32
3267 ENUMX
3268   BFD_RELOC_ARM_TLS_TPOFF32
3269 ENUMX
3270   BFD_RELOC_ARM_TLS_IE32
3271 ENUMX
3272   BFD_RELOC_ARM_TLS_LE32
3273 ENUMX
3274   BFD_RELOC_ARM_TLS_GOTDESC
3275 ENUMX
3276   BFD_RELOC_ARM_TLS_CALL
3277 ENUMX
3278   BFD_RELOC_ARM_THM_TLS_CALL
3279 ENUMX
3280   BFD_RELOC_ARM_TLS_DESCSEQ
3281 ENUMX
3282   BFD_RELOC_ARM_THM_TLS_DESCSEQ
3283 ENUMX
3284   BFD_RELOC_ARM_TLS_DESC
3285 ENUMDOC
3286   ARM thread-local storage relocations.
3287
3288 ENUM
3289   BFD_RELOC_ARM_ALU_PC_G0_NC
3290 ENUMX
3291   BFD_RELOC_ARM_ALU_PC_G0
3292 ENUMX
3293   BFD_RELOC_ARM_ALU_PC_G1_NC
3294 ENUMX
3295   BFD_RELOC_ARM_ALU_PC_G1
3296 ENUMX
3297   BFD_RELOC_ARM_ALU_PC_G2
3298 ENUMX
3299   BFD_RELOC_ARM_LDR_PC_G0
3300 ENUMX
3301   BFD_RELOC_ARM_LDR_PC_G1
3302 ENUMX
3303   BFD_RELOC_ARM_LDR_PC_G2
3304 ENUMX
3305   BFD_RELOC_ARM_LDRS_PC_G0
3306 ENUMX
3307   BFD_RELOC_ARM_LDRS_PC_G1
3308 ENUMX
3309   BFD_RELOC_ARM_LDRS_PC_G2
3310 ENUMX
3311   BFD_RELOC_ARM_LDC_PC_G0
3312 ENUMX
3313   BFD_RELOC_ARM_LDC_PC_G1
3314 ENUMX
3315   BFD_RELOC_ARM_LDC_PC_G2
3316 ENUMX
3317   BFD_RELOC_ARM_ALU_SB_G0_NC
3318 ENUMX
3319   BFD_RELOC_ARM_ALU_SB_G0
3320 ENUMX
3321   BFD_RELOC_ARM_ALU_SB_G1_NC
3322 ENUMX
3323   BFD_RELOC_ARM_ALU_SB_G1
3324 ENUMX
3325   BFD_RELOC_ARM_ALU_SB_G2
3326 ENUMX
3327   BFD_RELOC_ARM_LDR_SB_G0
3328 ENUMX
3329   BFD_RELOC_ARM_LDR_SB_G1
3330 ENUMX
3331   BFD_RELOC_ARM_LDR_SB_G2
3332 ENUMX
3333   BFD_RELOC_ARM_LDRS_SB_G0
3334 ENUMX
3335   BFD_RELOC_ARM_LDRS_SB_G1
3336 ENUMX
3337   BFD_RELOC_ARM_LDRS_SB_G2
3338 ENUMX
3339   BFD_RELOC_ARM_LDC_SB_G0
3340 ENUMX
3341   BFD_RELOC_ARM_LDC_SB_G1
3342 ENUMX
3343   BFD_RELOC_ARM_LDC_SB_G2
3344 ENUMDOC
3345   ARM group relocations.
3346
3347 ENUM
3348   BFD_RELOC_ARM_V4BX
3349 ENUMDOC
3350   Annotation of BX instructions.
3351
3352 ENUM
3353   BFD_RELOC_ARM_IRELATIVE
3354 ENUMDOC
3355   ARM support for STT_GNU_IFUNC.
3356
3357 ENUM
3358   BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC
3359 ENUMX
3360   BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC
3361 ENUMX
3362   BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC
3363 ENUMX
3364   BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC
3365 ENUMDOC
3366   Thumb1 relocations to support execute-only code.
3367
3368 ENUM
3369   BFD_RELOC_ARM_IMMEDIATE
3370 ENUMX
3371   BFD_RELOC_ARM_ADRL_IMMEDIATE
3372 ENUMX
3373   BFD_RELOC_ARM_T32_IMMEDIATE
3374 ENUMX
3375   BFD_RELOC_ARM_T32_ADD_IMM
3376 ENUMX
3377   BFD_RELOC_ARM_T32_IMM12
3378 ENUMX
3379   BFD_RELOC_ARM_T32_ADD_PC12
3380 ENUMX
3381   BFD_RELOC_ARM_SHIFT_IMM
3382 ENUMX
3383   BFD_RELOC_ARM_SMC
3384 ENUMX
3385   BFD_RELOC_ARM_HVC
3386 ENUMX
3387   BFD_RELOC_ARM_SWI
3388 ENUMX
3389   BFD_RELOC_ARM_MULTI
3390 ENUMX
3391   BFD_RELOC_ARM_CP_OFF_IMM
3392 ENUMX
3393   BFD_RELOC_ARM_CP_OFF_IMM_S2
3394 ENUMX
3395   BFD_RELOC_ARM_T32_CP_OFF_IMM
3396 ENUMX
3397   BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
3398 ENUMX
3399   BFD_RELOC_ARM_ADR_IMM
3400 ENUMX
3401   BFD_RELOC_ARM_LDR_IMM
3402 ENUMX
3403   BFD_RELOC_ARM_LITERAL
3404 ENUMX
3405   BFD_RELOC_ARM_IN_POOL
3406 ENUMX
3407   BFD_RELOC_ARM_OFFSET_IMM8
3408 ENUMX
3409   BFD_RELOC_ARM_T32_OFFSET_U8
3410 ENUMX
3411   BFD_RELOC_ARM_T32_OFFSET_IMM
3412 ENUMX
3413   BFD_RELOC_ARM_HWLITERAL
3414 ENUMX
3415   BFD_RELOC_ARM_THUMB_ADD
3416 ENUMX
3417   BFD_RELOC_ARM_THUMB_IMM
3418 ENUMX
3419   BFD_RELOC_ARM_THUMB_SHIFT
3420 ENUMDOC
3421   These relocs are only used within the ARM assembler.  They are not
3422   (at present) written to any object files.
3423
3424 ENUM
3425   BFD_RELOC_SH_PCDISP8BY2
3426 ENUMX
3427   BFD_RELOC_SH_PCDISP12BY2
3428 ENUMX
3429   BFD_RELOC_SH_IMM3
3430 ENUMX
3431   BFD_RELOC_SH_IMM3U
3432 ENUMX
3433   BFD_RELOC_SH_DISP12
3434 ENUMX
3435   BFD_RELOC_SH_DISP12BY2
3436 ENUMX
3437   BFD_RELOC_SH_DISP12BY4
3438 ENUMX
3439   BFD_RELOC_SH_DISP12BY8
3440 ENUMX
3441   BFD_RELOC_SH_DISP20
3442 ENUMX
3443   BFD_RELOC_SH_DISP20BY8
3444 ENUMX
3445   BFD_RELOC_SH_IMM4
3446 ENUMX
3447   BFD_RELOC_SH_IMM4BY2
3448 ENUMX
3449   BFD_RELOC_SH_IMM4BY4
3450 ENUMX
3451   BFD_RELOC_SH_IMM8
3452 ENUMX
3453   BFD_RELOC_SH_IMM8BY2
3454 ENUMX
3455   BFD_RELOC_SH_IMM8BY4
3456 ENUMX
3457   BFD_RELOC_SH_PCRELIMM8BY2
3458 ENUMX
3459   BFD_RELOC_SH_PCRELIMM8BY4
3460 ENUMX
3461   BFD_RELOC_SH_SWITCH16
3462 ENUMX
3463   BFD_RELOC_SH_SWITCH32
3464 ENUMX
3465   BFD_RELOC_SH_USES
3466 ENUMX
3467   BFD_RELOC_SH_COUNT
3468 ENUMX
3469   BFD_RELOC_SH_ALIGN
3470 ENUMX
3471   BFD_RELOC_SH_CODE
3472 ENUMX
3473   BFD_RELOC_SH_DATA
3474 ENUMX
3475   BFD_RELOC_SH_LABEL
3476 ENUMX
3477   BFD_RELOC_SH_LOOP_START
3478 ENUMX
3479   BFD_RELOC_SH_LOOP_END
3480 ENUMX
3481   BFD_RELOC_SH_COPY
3482 ENUMX
3483   BFD_RELOC_SH_GLOB_DAT
3484 ENUMX
3485   BFD_RELOC_SH_JMP_SLOT
3486 ENUMX
3487   BFD_RELOC_SH_RELATIVE
3488 ENUMX
3489   BFD_RELOC_SH_GOTPC
3490 ENUMX
3491   BFD_RELOC_SH_GOT_LOW16
3492 ENUMX
3493   BFD_RELOC_SH_GOT_MEDLOW16
3494 ENUMX
3495   BFD_RELOC_SH_GOT_MEDHI16
3496 ENUMX
3497   BFD_RELOC_SH_GOT_HI16
3498 ENUMX
3499   BFD_RELOC_SH_GOTPLT_LOW16
3500 ENUMX
3501   BFD_RELOC_SH_GOTPLT_MEDLOW16
3502 ENUMX
3503   BFD_RELOC_SH_GOTPLT_MEDHI16
3504 ENUMX
3505   BFD_RELOC_SH_GOTPLT_HI16
3506 ENUMX
3507   BFD_RELOC_SH_PLT_LOW16
3508 ENUMX
3509   BFD_RELOC_SH_PLT_MEDLOW16
3510 ENUMX
3511   BFD_RELOC_SH_PLT_MEDHI16
3512 ENUMX
3513   BFD_RELOC_SH_PLT_HI16
3514 ENUMX
3515   BFD_RELOC_SH_GOTOFF_LOW16
3516 ENUMX
3517   BFD_RELOC_SH_GOTOFF_MEDLOW16
3518 ENUMX
3519   BFD_RELOC_SH_GOTOFF_MEDHI16
3520 ENUMX
3521   BFD_RELOC_SH_GOTOFF_HI16
3522 ENUMX
3523   BFD_RELOC_SH_GOTPC_LOW16
3524 ENUMX
3525   BFD_RELOC_SH_GOTPC_MEDLOW16
3526 ENUMX
3527   BFD_RELOC_SH_GOTPC_MEDHI16
3528 ENUMX
3529   BFD_RELOC_SH_GOTPC_HI16
3530 ENUMX
3531   BFD_RELOC_SH_COPY64
3532 ENUMX
3533   BFD_RELOC_SH_GLOB_DAT64
3534 ENUMX
3535   BFD_RELOC_SH_JMP_SLOT64
3536 ENUMX
3537   BFD_RELOC_SH_RELATIVE64
3538 ENUMX
3539   BFD_RELOC_SH_GOT10BY4
3540 ENUMX
3541   BFD_RELOC_SH_GOT10BY8
3542 ENUMX
3543   BFD_RELOC_SH_GOTPLT10BY4
3544 ENUMX
3545   BFD_RELOC_SH_GOTPLT10BY8
3546 ENUMX
3547   BFD_RELOC_SH_GOTPLT32
3548 ENUMX
3549   BFD_RELOC_SH_SHMEDIA_CODE
3550 ENUMX
3551   BFD_RELOC_SH_IMMU5
3552 ENUMX
3553   BFD_RELOC_SH_IMMS6
3554 ENUMX
3555   BFD_RELOC_SH_IMMS6BY32
3556 ENUMX
3557   BFD_RELOC_SH_IMMU6
3558 ENUMX
3559   BFD_RELOC_SH_IMMS10
3560 ENUMX
3561   BFD_RELOC_SH_IMMS10BY2
3562 ENUMX
3563   BFD_RELOC_SH_IMMS10BY4
3564 ENUMX
3565   BFD_RELOC_SH_IMMS10BY8
3566 ENUMX
3567   BFD_RELOC_SH_IMMS16
3568 ENUMX
3569   BFD_RELOC_SH_IMMU16
3570 ENUMX
3571   BFD_RELOC_SH_IMM_LOW16
3572 ENUMX
3573   BFD_RELOC_SH_IMM_LOW16_PCREL
3574 ENUMX
3575   BFD_RELOC_SH_IMM_MEDLOW16
3576 ENUMX
3577   BFD_RELOC_SH_IMM_MEDLOW16_PCREL
3578 ENUMX
3579   BFD_RELOC_SH_IMM_MEDHI16
3580 ENUMX
3581   BFD_RELOC_SH_IMM_MEDHI16_PCREL
3582 ENUMX
3583   BFD_RELOC_SH_IMM_HI16
3584 ENUMX
3585   BFD_RELOC_SH_IMM_HI16_PCREL
3586 ENUMX
3587   BFD_RELOC_SH_PT_16
3588 ENUMX
3589   BFD_RELOC_SH_TLS_GD_32
3590 ENUMX
3591   BFD_RELOC_SH_TLS_LD_32
3592 ENUMX
3593   BFD_RELOC_SH_TLS_LDO_32
3594 ENUMX
3595   BFD_RELOC_SH_TLS_IE_32
3596 ENUMX
3597   BFD_RELOC_SH_TLS_LE_32
3598 ENUMX
3599   BFD_RELOC_SH_TLS_DTPMOD32
3600 ENUMX
3601   BFD_RELOC_SH_TLS_DTPOFF32
3602 ENUMX
3603   BFD_RELOC_SH_TLS_TPOFF32
3604 ENUMX
3605   BFD_RELOC_SH_GOT20
3606 ENUMX
3607   BFD_RELOC_SH_GOTOFF20
3608 ENUMX
3609   BFD_RELOC_SH_GOTFUNCDESC
3610 ENUMX
3611   BFD_RELOC_SH_GOTFUNCDESC20
3612 ENUMX
3613   BFD_RELOC_SH_GOTOFFFUNCDESC
3614 ENUMX
3615   BFD_RELOC_SH_GOTOFFFUNCDESC20
3616 ENUMX
3617   BFD_RELOC_SH_FUNCDESC
3618 ENUMDOC
3619   Renesas / SuperH SH relocs.  Not all of these appear in object files.
3620
3621 ENUM
3622   BFD_RELOC_ARC_NONE
3623 ENUMX
3624   BFD_RELOC_ARC_8
3625 ENUMX
3626   BFD_RELOC_ARC_16
3627 ENUMX
3628   BFD_RELOC_ARC_24
3629 ENUMX
3630   BFD_RELOC_ARC_32
3631 ENUMX
3632   BFD_RELOC_ARC_N8
3633 ENUMX
3634   BFD_RELOC_ARC_N16
3635 ENUMX
3636   BFD_RELOC_ARC_N24
3637 ENUMX
3638   BFD_RELOC_ARC_N32
3639 ENUMX
3640   BFD_RELOC_ARC_SDA
3641 ENUMX
3642   BFD_RELOC_ARC_SECTOFF
3643 ENUMX
3644   BFD_RELOC_ARC_S21H_PCREL
3645 ENUMX
3646   BFD_RELOC_ARC_S21W_PCREL
3647 ENUMX
3648   BFD_RELOC_ARC_S25H_PCREL
3649 ENUMX
3650   BFD_RELOC_ARC_S25W_PCREL
3651 ENUMX
3652   BFD_RELOC_ARC_SDA32
3653 ENUMX
3654   BFD_RELOC_ARC_SDA_LDST
3655 ENUMX
3656   BFD_RELOC_ARC_SDA_LDST1
3657 ENUMX
3658   BFD_RELOC_ARC_SDA_LDST2
3659 ENUMX
3660   BFD_RELOC_ARC_SDA16_LD
3661 ENUMX
3662   BFD_RELOC_ARC_SDA16_LD1
3663 ENUMX
3664   BFD_RELOC_ARC_SDA16_LD2
3665 ENUMX
3666   BFD_RELOC_ARC_S13_PCREL
3667 ENUMX
3668   BFD_RELOC_ARC_W
3669 ENUMX
3670   BFD_RELOC_ARC_32_ME
3671 ENUMX
3672   BFD_RELOC_ARC_32_ME_S
3673 ENUMX
3674   BFD_RELOC_ARC_N32_ME
3675 ENUMX
3676   BFD_RELOC_ARC_SECTOFF_ME
3677 ENUMX
3678   BFD_RELOC_ARC_SDA32_ME
3679 ENUMX
3680   BFD_RELOC_ARC_W_ME
3681 ENUMX
3682   BFD_RELOC_AC_SECTOFF_U8
3683 ENUMX
3684   BFD_RELOC_AC_SECTOFF_U8_1
3685 ENUMX
3686   BFD_RELOC_AC_SECTOFF_U8_2
3687 ENUMX
3688   BFD_RELOC_AC_SECTOFF_S9
3689 ENUMX
3690   BFD_RELOC_AC_SECTOFF_S9_1
3691 ENUMX
3692   BFD_RELOC_AC_SECTOFF_S9_2
3693 ENUMX
3694   BFD_RELOC_ARC_SECTOFF_ME_1
3695 ENUMX
3696   BFD_RELOC_ARC_SECTOFF_ME_2
3697 ENUMX
3698   BFD_RELOC_ARC_SECTOFF_1
3699 ENUMX
3700   BFD_RELOC_ARC_SECTOFF_2
3701 ENUMX
3702   BFD_RELOC_ARC_SDA_12
3703 ENUMX
3704   BFD_RELOC_ARC_SDA16_ST2
3705 ENUMX
3706   BFD_RELOC_ARC_32_PCREL
3707 ENUMX
3708   BFD_RELOC_ARC_PC32
3709 ENUMX
3710   BFD_RELOC_ARC_GOT32
3711 ENUMX
3712   BFD_RELOC_ARC_GOTPC32
3713 ENUMX
3714   BFD_RELOC_ARC_PLT32
3715 ENUMX
3716   BFD_RELOC_ARC_COPY
3717 ENUMX
3718   BFD_RELOC_ARC_GLOB_DAT
3719 ENUMX
3720   BFD_RELOC_ARC_JMP_SLOT
3721 ENUMX
3722   BFD_RELOC_ARC_RELATIVE
3723 ENUMX
3724   BFD_RELOC_ARC_GOTOFF
3725 ENUMX
3726   BFD_RELOC_ARC_GOTPC
3727 ENUMX
3728   BFD_RELOC_ARC_S21W_PCREL_PLT
3729 ENUMX
3730   BFD_RELOC_ARC_S25H_PCREL_PLT
3731 ENUMX
3732   BFD_RELOC_ARC_TLS_DTPMOD
3733 ENUMX
3734   BFD_RELOC_ARC_TLS_TPOFF
3735 ENUMX
3736   BFD_RELOC_ARC_TLS_GD_GOT
3737 ENUMX
3738   BFD_RELOC_ARC_TLS_GD_LD
3739 ENUMX
3740   BFD_RELOC_ARC_TLS_GD_CALL
3741 ENUMX
3742   BFD_RELOC_ARC_TLS_IE_GOT
3743 ENUMX
3744   BFD_RELOC_ARC_TLS_DTPOFF
3745 ENUMX
3746   BFD_RELOC_ARC_TLS_DTPOFF_S9
3747 ENUMX
3748   BFD_RELOC_ARC_TLS_LE_S9
3749 ENUMX
3750   BFD_RELOC_ARC_TLS_LE_32
3751 ENUMX
3752   BFD_RELOC_ARC_S25W_PCREL_PLT
3753 ENUMX
3754   BFD_RELOC_ARC_S21H_PCREL_PLT
3755 ENUMX
3756   BFD_RELOC_ARC_NPS_CMEM16
3757 ENUMX
3758   BFD_RELOC_ARC_JLI_SECTOFF
3759 ENUMDOC
3760   ARC relocs.
3761
3762 ENUM
3763   BFD_RELOC_BFIN_16_IMM
3764 ENUMDOC
3765   ADI Blackfin 16 bit immediate absolute reloc.
3766 ENUM
3767   BFD_RELOC_BFIN_16_HIGH
3768 ENUMDOC
3769   ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
3770 ENUM
3771   BFD_RELOC_BFIN_4_PCREL
3772 ENUMDOC
3773   ADI Blackfin 'a' part of LSETUP.
3774 ENUM
3775   BFD_RELOC_BFIN_5_PCREL
3776 ENUMDOC
3777   ADI Blackfin.
3778 ENUM
3779   BFD_RELOC_BFIN_16_LOW
3780 ENUMDOC
3781   ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
3782 ENUM
3783   BFD_RELOC_BFIN_10_PCREL
3784 ENUMDOC
3785   ADI Blackfin.
3786 ENUM
3787   BFD_RELOC_BFIN_11_PCREL
3788 ENUMDOC
3789   ADI Blackfin 'b' part of LSETUP.
3790 ENUM
3791   BFD_RELOC_BFIN_12_PCREL_JUMP
3792 ENUMDOC
3793   ADI Blackfin.
3794 ENUM
3795   BFD_RELOC_BFIN_12_PCREL_JUMP_S
3796 ENUMDOC
3797   ADI Blackfin Short jump, pcrel.
3798 ENUM
3799   BFD_RELOC_BFIN_24_PCREL_CALL_X
3800 ENUMDOC
3801   ADI Blackfin Call.x not implemented.
3802 ENUM
3803   BFD_RELOC_BFIN_24_PCREL_JUMP_L
3804 ENUMDOC
3805   ADI Blackfin Long Jump pcrel.
3806 ENUM
3807   BFD_RELOC_BFIN_GOT17M4
3808 ENUMX
3809   BFD_RELOC_BFIN_GOTHI
3810 ENUMX
3811   BFD_RELOC_BFIN_GOTLO
3812 ENUMX
3813   BFD_RELOC_BFIN_FUNCDESC
3814 ENUMX
3815   BFD_RELOC_BFIN_FUNCDESC_GOT17M4
3816 ENUMX
3817   BFD_RELOC_BFIN_FUNCDESC_GOTHI
3818 ENUMX
3819   BFD_RELOC_BFIN_FUNCDESC_GOTLO
3820 ENUMX
3821   BFD_RELOC_BFIN_FUNCDESC_VALUE
3822 ENUMX
3823   BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
3824 ENUMX
3825   BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
3826 ENUMX
3827   BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
3828 ENUMX
3829   BFD_RELOC_BFIN_GOTOFF17M4
3830 ENUMX
3831   BFD_RELOC_BFIN_GOTOFFHI
3832 ENUMX
3833   BFD_RELOC_BFIN_GOTOFFLO
3834 ENUMDOC
3835   ADI Blackfin FD-PIC relocations.
3836 ENUM
3837   BFD_RELOC_BFIN_GOT
3838 ENUMDOC
3839   ADI Blackfin GOT relocation.
3840 ENUM
3841   BFD_RELOC_BFIN_PLTPC
3842 ENUMDOC
3843   ADI Blackfin PLTPC relocation.
3844 ENUM
3845   BFD_ARELOC_BFIN_PUSH
3846 ENUMDOC
3847   ADI Blackfin arithmetic relocation.
3848 ENUM
3849   BFD_ARELOC_BFIN_CONST
3850 ENUMDOC
3851   ADI Blackfin arithmetic relocation.
3852 ENUM
3853   BFD_ARELOC_BFIN_ADD
3854 ENUMDOC
3855   ADI Blackfin arithmetic relocation.
3856 ENUM
3857   BFD_ARELOC_BFIN_SUB
3858 ENUMDOC
3859   ADI Blackfin arithmetic relocation.
3860 ENUM
3861   BFD_ARELOC_BFIN_MULT
3862 ENUMDOC
3863   ADI Blackfin arithmetic relocation.
3864 ENUM
3865   BFD_ARELOC_BFIN_DIV
3866 ENUMDOC
3867   ADI Blackfin arithmetic relocation.
3868 ENUM
3869   BFD_ARELOC_BFIN_MOD
3870 ENUMDOC
3871   ADI Blackfin arithmetic relocation.
3872 ENUM
3873   BFD_ARELOC_BFIN_LSHIFT
3874 ENUMDOC
3875   ADI Blackfin arithmetic relocation.
3876 ENUM
3877   BFD_ARELOC_BFIN_RSHIFT
3878 ENUMDOC
3879   ADI Blackfin arithmetic relocation.
3880 ENUM
3881   BFD_ARELOC_BFIN_AND
3882 ENUMDOC
3883   ADI Blackfin arithmetic relocation.
3884 ENUM
3885   BFD_ARELOC_BFIN_OR
3886 ENUMDOC
3887   ADI Blackfin arithmetic relocation.
3888 ENUM
3889   BFD_ARELOC_BFIN_XOR
3890 ENUMDOC
3891   ADI Blackfin arithmetic relocation.
3892 ENUM
3893   BFD_ARELOC_BFIN_LAND
3894 ENUMDOC
3895   ADI Blackfin arithmetic relocation.
3896 ENUM
3897   BFD_ARELOC_BFIN_LOR
3898 ENUMDOC
3899   ADI Blackfin arithmetic relocation.
3900 ENUM
3901   BFD_ARELOC_BFIN_LEN
3902 ENUMDOC
3903   ADI Blackfin arithmetic relocation.
3904 ENUM
3905   BFD_ARELOC_BFIN_NEG
3906 ENUMDOC
3907   ADI Blackfin arithmetic relocation.
3908 ENUM
3909   BFD_ARELOC_BFIN_COMP
3910 ENUMDOC
3911   ADI Blackfin arithmetic relocation.
3912 ENUM
3913   BFD_ARELOC_BFIN_PAGE
3914 ENUMDOC
3915   ADI Blackfin arithmetic relocation.
3916 ENUM
3917   BFD_ARELOC_BFIN_HWPAGE
3918 ENUMDOC
3919   ADI Blackfin arithmetic relocation.
3920 ENUM
3921   BFD_ARELOC_BFIN_ADDR
3922 ENUMDOC
3923   ADI Blackfin arithmetic relocation.
3924
3925 ENUM
3926   BFD_RELOC_D10V_10_PCREL_R
3927 ENUMDOC
3928   Mitsubishi D10V relocs.
3929   This is a 10-bit reloc with the right 2 bits
3930   assumed to be 0.
3931 ENUM
3932   BFD_RELOC_D10V_10_PCREL_L
3933 ENUMDOC
3934   Mitsubishi D10V relocs.
3935   This is a 10-bit reloc with the right 2 bits
3936   assumed to be 0.  This is the same as the previous reloc
3937   except it is in the left container, i.e.,
3938   shifted left 15 bits.
3939 ENUM
3940   BFD_RELOC_D10V_18
3941 ENUMDOC
3942   This is an 18-bit reloc with the right 2 bits
3943   assumed to be 0.
3944 ENUM
3945   BFD_RELOC_D10V_18_PCREL
3946 ENUMDOC
3947   This is an 18-bit reloc with the right 2 bits
3948   assumed to be 0.
3949
3950 ENUM
3951   BFD_RELOC_D30V_6
3952 ENUMDOC
3953   Mitsubishi D30V relocs.
3954   This is a 6-bit absolute reloc.
3955 ENUM
3956   BFD_RELOC_D30V_9_PCREL
3957 ENUMDOC
3958   This is a 6-bit pc-relative reloc with
3959   the right 3 bits assumed to be 0.
3960 ENUM
3961   BFD_RELOC_D30V_9_PCREL_R
3962 ENUMDOC
3963   This is a 6-bit pc-relative reloc with
3964   the right 3 bits assumed to be 0. Same
3965   as the previous reloc but on the right side
3966   of the container.
3967 ENUM
3968   BFD_RELOC_D30V_15
3969 ENUMDOC
3970   This is a 12-bit absolute reloc with the
3971   right 3 bitsassumed to be 0.
3972 ENUM
3973   BFD_RELOC_D30V_15_PCREL
3974 ENUMDOC
3975   This is a 12-bit pc-relative reloc with
3976   the right 3 bits assumed to be 0.
3977 ENUM
3978   BFD_RELOC_D30V_15_PCREL_R
3979 ENUMDOC
3980   This is a 12-bit pc-relative reloc with
3981   the right 3 bits assumed to be 0. Same
3982   as the previous reloc but on the right side
3983   of the container.
3984 ENUM
3985   BFD_RELOC_D30V_21
3986 ENUMDOC
3987   This is an 18-bit absolute reloc with
3988   the right 3 bits assumed to be 0.
3989 ENUM
3990   BFD_RELOC_D30V_21_PCREL
3991 ENUMDOC
3992   This is an 18-bit pc-relative reloc with
3993   the right 3 bits assumed to be 0.
3994 ENUM
3995   BFD_RELOC_D30V_21_PCREL_R
3996 ENUMDOC
3997   This is an 18-bit pc-relative reloc with
3998   the right 3 bits assumed to be 0. Same
3999   as the previous reloc but on the right side
4000   of the container.
4001 ENUM
4002   BFD_RELOC_D30V_32
4003 ENUMDOC
4004   This is a 32-bit absolute reloc.
4005 ENUM
4006   BFD_RELOC_D30V_32_PCREL
4007 ENUMDOC
4008   This is a 32-bit pc-relative reloc.
4009
4010 ENUM
4011   BFD_RELOC_DLX_HI16_S
4012 ENUMDOC
4013   DLX relocs
4014 ENUM
4015   BFD_RELOC_DLX_LO16
4016 ENUMDOC
4017   DLX relocs
4018 ENUM
4019   BFD_RELOC_DLX_JMP26
4020 ENUMDOC
4021   DLX relocs
4022
4023 ENUM
4024   BFD_RELOC_M32C_HI8
4025 ENUMX
4026   BFD_RELOC_M32C_RL_JUMP
4027 ENUMX
4028   BFD_RELOC_M32C_RL_1ADDR
4029 ENUMX
4030   BFD_RELOC_M32C_RL_2ADDR
4031 ENUMDOC
4032   Renesas M16C/M32C Relocations.
4033
4034 ENUM
4035   BFD_RELOC_M32R_24
4036 ENUMDOC
4037   Renesas M32R (formerly Mitsubishi M32R) relocs.
4038   This is a 24 bit absolute address.
4039 ENUM
4040   BFD_RELOC_M32R_10_PCREL
4041 ENUMDOC
4042   This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.
4043 ENUM
4044   BFD_RELOC_M32R_18_PCREL
4045 ENUMDOC
4046   This is an 18-bit reloc with the right 2 bits assumed to be 0.
4047 ENUM
4048   BFD_RELOC_M32R_26_PCREL
4049 ENUMDOC
4050   This is a 26-bit reloc with the right 2 bits assumed to be 0.
4051 ENUM
4052   BFD_RELOC_M32R_HI16_ULO
4053 ENUMDOC
4054   This is a 16-bit reloc containing the high 16 bits of an address
4055   used when the lower 16 bits are treated as unsigned.
4056 ENUM
4057   BFD_RELOC_M32R_HI16_SLO
4058 ENUMDOC
4059   This is a 16-bit reloc containing the high 16 bits of an address
4060   used when the lower 16 bits are treated as signed.
4061 ENUM
4062   BFD_RELOC_M32R_LO16
4063 ENUMDOC
4064   This is a 16-bit reloc containing the lower 16 bits of an address.
4065 ENUM
4066   BFD_RELOC_M32R_SDA16
4067 ENUMDOC
4068   This is a 16-bit reloc containing the small data area offset for use in
4069   add3, load, and store instructions.
4070 ENUM
4071   BFD_RELOC_M32R_GOT24
4072 ENUMX
4073   BFD_RELOC_M32R_26_PLTREL
4074 ENUMX
4075   BFD_RELOC_M32R_COPY
4076 ENUMX
4077   BFD_RELOC_M32R_GLOB_DAT
4078 ENUMX
4079   BFD_RELOC_M32R_JMP_SLOT
4080 ENUMX
4081   BFD_RELOC_M32R_RELATIVE
4082 ENUMX
4083   BFD_RELOC_M32R_GOTOFF
4084 ENUMX
4085   BFD_RELOC_M32R_GOTOFF_HI_ULO
4086 ENUMX
4087   BFD_RELOC_M32R_GOTOFF_HI_SLO
4088 ENUMX
4089   BFD_RELOC_M32R_GOTOFF_LO
4090 ENUMX
4091   BFD_RELOC_M32R_GOTPC24
4092 ENUMX
4093   BFD_RELOC_M32R_GOT16_HI_ULO
4094 ENUMX
4095   BFD_RELOC_M32R_GOT16_HI_SLO
4096 ENUMX
4097   BFD_RELOC_M32R_GOT16_LO
4098 ENUMX
4099   BFD_RELOC_M32R_GOTPC_HI_ULO
4100 ENUMX
4101   BFD_RELOC_M32R_GOTPC_HI_SLO
4102 ENUMX
4103   BFD_RELOC_M32R_GOTPC_LO
4104 ENUMDOC
4105   For PIC.
4106
4107
4108 ENUM
4109   BFD_RELOC_NDS32_20
4110 ENUMDOC
4111   NDS32 relocs.
4112   This is a 20 bit absolute address.
4113 ENUM
4114   BFD_RELOC_NDS32_9_PCREL
4115 ENUMDOC
4116   This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.
4117 ENUM
4118   BFD_RELOC_NDS32_WORD_9_PCREL
4119 ENUMDOC
4120   This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.
4121 ENUM
4122   BFD_RELOC_NDS32_15_PCREL
4123 ENUMDOC
4124   This is an 15-bit reloc with the right 1 bit assumed to be 0.
4125 ENUM
4126   BFD_RELOC_NDS32_17_PCREL
4127 ENUMDOC
4128   This is an 17-bit reloc with the right 1 bit assumed to be 0.
4129 ENUM
4130   BFD_RELOC_NDS32_25_PCREL
4131 ENUMDOC
4132   This is a 25-bit reloc with the right 1 bit assumed to be 0.
4133 ENUM
4134   BFD_RELOC_NDS32_HI20
4135 ENUMDOC
4136   This is a 20-bit reloc containing the high 20 bits of an address
4137   used with the lower 12 bits
4138 ENUM
4139   BFD_RELOC_NDS32_LO12S3
4140 ENUMDOC
4141   This is a 12-bit reloc containing the lower 12 bits of an address
4142   then shift right by 3. This is used with ldi,sdi...
4143 ENUM
4144   BFD_RELOC_NDS32_LO12S2
4145 ENUMDOC
4146   This is a 12-bit reloc containing the lower 12 bits of an address
4147   then shift left by 2. This is used with lwi,swi...
4148 ENUM
4149   BFD_RELOC_NDS32_LO12S1
4150 ENUMDOC
4151   This is a 12-bit reloc containing the lower 12 bits of an address
4152   then shift left by 1. This is used with lhi,shi...
4153 ENUM
4154   BFD_RELOC_NDS32_LO12S0
4155 ENUMDOC
4156   This is a 12-bit reloc containing the lower 12 bits of an address
4157   then shift left by 0. This is used with lbisbi...
4158 ENUM
4159   BFD_RELOC_NDS32_LO12S0_ORI
4160 ENUMDOC
4161   This is a 12-bit reloc containing the lower 12 bits of an address
4162   then shift left by 0. This is only used with branch relaxations
4163 ENUM
4164   BFD_RELOC_NDS32_SDA15S3
4165 ENUMDOC
4166   This is a 15-bit reloc containing the small data area 18-bit signed offset
4167   and shift left by 3 for use in ldi, sdi...
4168 ENUM
4169   BFD_RELOC_NDS32_SDA15S2
4170 ENUMDOC
4171   This is a 15-bit reloc containing the small data area 17-bit signed offset
4172   and shift left by 2 for use in lwi, swi...
4173 ENUM
4174   BFD_RELOC_NDS32_SDA15S1
4175 ENUMDOC
4176   This is a 15-bit reloc containing the small data area 16-bit signed offset
4177   and shift left by 1 for use in lhi, shi...
4178 ENUM
4179   BFD_RELOC_NDS32_SDA15S0
4180 ENUMDOC
4181   This is a 15-bit reloc containing the small data area 15-bit signed offset
4182   and shift left by 0 for use in lbi, sbi...
4183 ENUM
4184   BFD_RELOC_NDS32_SDA16S3
4185 ENUMDOC
4186   This is a 16-bit reloc containing the small data area 16-bit signed offset
4187   and shift left by 3
4188 ENUM
4189   BFD_RELOC_NDS32_SDA17S2
4190 ENUMDOC
4191   This is a 17-bit reloc containing the small data area 17-bit signed offset
4192   and shift left by 2 for use in lwi.gp, swi.gp...
4193 ENUM
4194   BFD_RELOC_NDS32_SDA18S1
4195 ENUMDOC
4196   This is a 18-bit reloc containing the small data area 18-bit signed offset
4197   and shift left by 1 for use in lhi.gp, shi.gp...
4198 ENUM
4199   BFD_RELOC_NDS32_SDA19S0
4200 ENUMDOC
4201   This is a 19-bit reloc containing the small data area 19-bit signed offset
4202   and shift left by 0 for use in lbi.gp, sbi.gp...
4203 ENUM
4204   BFD_RELOC_NDS32_GOT20
4205 ENUMX
4206   BFD_RELOC_NDS32_9_PLTREL
4207 ENUMX
4208   BFD_RELOC_NDS32_25_PLTREL
4209 ENUMX
4210   BFD_RELOC_NDS32_COPY
4211 ENUMX
4212   BFD_RELOC_NDS32_GLOB_DAT
4213 ENUMX
4214   BFD_RELOC_NDS32_JMP_SLOT
4215 ENUMX
4216   BFD_RELOC_NDS32_RELATIVE
4217 ENUMX
4218   BFD_RELOC_NDS32_GOTOFF
4219 ENUMX
4220   BFD_RELOC_NDS32_GOTOFF_HI20
4221 ENUMX
4222   BFD_RELOC_NDS32_GOTOFF_LO12
4223 ENUMX
4224   BFD_RELOC_NDS32_GOTPC20
4225 ENUMX
4226   BFD_RELOC_NDS32_GOT_HI20
4227 ENUMX
4228   BFD_RELOC_NDS32_GOT_LO12
4229 ENUMX
4230   BFD_RELOC_NDS32_GOTPC_HI20
4231 ENUMX
4232   BFD_RELOC_NDS32_GOTPC_LO12
4233 ENUMDOC
4234   for PIC
4235 ENUM
4236   BFD_RELOC_NDS32_INSN16
4237 ENUMX
4238   BFD_RELOC_NDS32_LABEL
4239 ENUMX
4240   BFD_RELOC_NDS32_LONGCALL1
4241 ENUMX
4242   BFD_RELOC_NDS32_LONGCALL2
4243 ENUMX
4244   BFD_RELOC_NDS32_LONGCALL3
4245 ENUMX
4246   BFD_RELOC_NDS32_LONGJUMP1
4247 ENUMX
4248   BFD_RELOC_NDS32_LONGJUMP2
4249 ENUMX
4250   BFD_RELOC_NDS32_LONGJUMP3
4251 ENUMX
4252   BFD_RELOC_NDS32_LOADSTORE
4253 ENUMX
4254   BFD_RELOC_NDS32_9_FIXED
4255 ENUMX
4256   BFD_RELOC_NDS32_15_FIXED
4257 ENUMX
4258   BFD_RELOC_NDS32_17_FIXED
4259 ENUMX
4260   BFD_RELOC_NDS32_25_FIXED
4261 ENUMX
4262   BFD_RELOC_NDS32_LONGCALL4
4263 ENUMX
4264   BFD_RELOC_NDS32_LONGCALL5
4265 ENUMX
4266   BFD_RELOC_NDS32_LONGCALL6
4267 ENUMX
4268   BFD_RELOC_NDS32_LONGJUMP4
4269 ENUMX
4270   BFD_RELOC_NDS32_LONGJUMP5
4271 ENUMX
4272   BFD_RELOC_NDS32_LONGJUMP6
4273 ENUMX
4274   BFD_RELOC_NDS32_LONGJUMP7
4275 ENUMDOC
4276   for relax
4277 ENUM
4278   BFD_RELOC_NDS32_PLTREL_HI20
4279 ENUMX
4280   BFD_RELOC_NDS32_PLTREL_LO12
4281 ENUMX
4282   BFD_RELOC_NDS32_PLT_GOTREL_HI20
4283 ENUMX
4284   BFD_RELOC_NDS32_PLT_GOTREL_LO12
4285 ENUMDOC
4286   for PIC
4287 ENUM
4288   BFD_RELOC_NDS32_SDA12S2_DP
4289 ENUMX
4290   BFD_RELOC_NDS32_SDA12S2_SP
4291 ENUMX
4292   BFD_RELOC_NDS32_LO12S2_DP
4293 ENUMX
4294   BFD_RELOC_NDS32_LO12S2_SP
4295 ENUMDOC
4296   for floating point
4297 ENUM
4298   BFD_RELOC_NDS32_DWARF2_OP1
4299 ENUMX
4300   BFD_RELOC_NDS32_DWARF2_OP2
4301 ENUMX
4302   BFD_RELOC_NDS32_DWARF2_LEB
4303 ENUMDOC
4304   for dwarf2 debug_line.
4305 ENUM
4306   BFD_RELOC_NDS32_UPDATE_TA
4307 ENUMDOC
4308   for eliminate 16-bit instructions
4309 ENUM
4310   BFD_RELOC_NDS32_PLT_GOTREL_LO20
4311 ENUMX
4312   BFD_RELOC_NDS32_PLT_GOTREL_LO15
4313 ENUMX
4314   BFD_RELOC_NDS32_PLT_GOTREL_LO19
4315 ENUMX
4316   BFD_RELOC_NDS32_GOT_LO15
4317 ENUMX
4318   BFD_RELOC_NDS32_GOT_LO19
4319 ENUMX
4320   BFD_RELOC_NDS32_GOTOFF_LO15
4321 ENUMX
4322   BFD_RELOC_NDS32_GOTOFF_LO19
4323 ENUMX
4324   BFD_RELOC_NDS32_GOT15S2
4325 ENUMX
4326   BFD_RELOC_NDS32_GOT17S2
4327 ENUMDOC
4328   for PIC object relaxation
4329 ENUM
4330   BFD_RELOC_NDS32_5
4331 ENUMDOC
4332   NDS32 relocs.
4333   This is a 5 bit absolute address.
4334 ENUM
4335   BFD_RELOC_NDS32_10_UPCREL
4336 ENUMDOC
4337   This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0.
4338 ENUM
4339   BFD_RELOC_NDS32_SDA_FP7U2_RELA
4340 ENUMDOC
4341   If fp were omitted, fp can used as another gp.
4342 ENUM
4343   BFD_RELOC_NDS32_RELAX_ENTRY
4344 ENUMX
4345   BFD_RELOC_NDS32_GOT_SUFF
4346 ENUMX
4347   BFD_RELOC_NDS32_GOTOFF_SUFF
4348 ENUMX
4349   BFD_RELOC_NDS32_PLT_GOT_SUFF
4350 ENUMX
4351   BFD_RELOC_NDS32_MULCALL_SUFF
4352 ENUMX
4353   BFD_RELOC_NDS32_PTR
4354 ENUMX
4355   BFD_RELOC_NDS32_PTR_COUNT
4356 ENUMX
4357   BFD_RELOC_NDS32_PTR_RESOLVED
4358 ENUMX
4359   BFD_RELOC_NDS32_PLTBLOCK
4360 ENUMX
4361   BFD_RELOC_NDS32_RELAX_REGION_BEGIN
4362 ENUMX
4363   BFD_RELOC_NDS32_RELAX_REGION_END
4364 ENUMX
4365   BFD_RELOC_NDS32_MINUEND
4366 ENUMX
4367   BFD_RELOC_NDS32_SUBTRAHEND
4368 ENUMX
4369   BFD_RELOC_NDS32_DIFF8
4370 ENUMX
4371   BFD_RELOC_NDS32_DIFF16
4372 ENUMX
4373   BFD_RELOC_NDS32_DIFF32
4374 ENUMX
4375   BFD_RELOC_NDS32_DIFF_ULEB128
4376 ENUMX
4377   BFD_RELOC_NDS32_EMPTY
4378 ENUMDOC
4379   relaxation relative relocation types
4380 ENUM
4381   BFD_RELOC_NDS32_25_ABS
4382 ENUMDOC
4383   This is a 25 bit absolute address.
4384 ENUM
4385   BFD_RELOC_NDS32_DATA
4386 ENUMX
4387   BFD_RELOC_NDS32_TRAN
4388 ENUMX
4389   BFD_RELOC_NDS32_17IFC_PCREL
4390 ENUMX
4391   BFD_RELOC_NDS32_10IFCU_PCREL
4392 ENUMDOC
4393   For ex9 and ifc using.
4394 ENUM
4395   BFD_RELOC_NDS32_TPOFF
4396 ENUMX
4397   BFD_RELOC_NDS32_TLS_LE_HI20
4398 ENUMX
4399   BFD_RELOC_NDS32_TLS_LE_LO12
4400 ENUMX
4401   BFD_RELOC_NDS32_TLS_LE_ADD
4402 ENUMX
4403   BFD_RELOC_NDS32_TLS_LE_LS
4404 ENUMX
4405   BFD_RELOC_NDS32_GOTTPOFF
4406 ENUMX
4407   BFD_RELOC_NDS32_TLS_IE_HI20
4408 ENUMX
4409   BFD_RELOC_NDS32_TLS_IE_LO12S2
4410 ENUMX
4411   BFD_RELOC_NDS32_TLS_TPOFF
4412 ENUMX
4413   BFD_RELOC_NDS32_TLS_LE_20
4414 ENUMX
4415   BFD_RELOC_NDS32_TLS_LE_15S0
4416 ENUMX
4417   BFD_RELOC_NDS32_TLS_LE_15S1
4418 ENUMX
4419   BFD_RELOC_NDS32_TLS_LE_15S2
4420 ENUMDOC
4421   For TLS.
4422
4423
4424 ENUM
4425   BFD_RELOC_V850_9_PCREL
4426 ENUMDOC
4427   This is a 9-bit reloc
4428 ENUM
4429   BFD_RELOC_V850_22_PCREL
4430 ENUMDOC
4431   This is a 22-bit reloc
4432
4433 ENUM
4434   BFD_RELOC_V850_SDA_16_16_OFFSET
4435 ENUMDOC
4436   This is a 16 bit offset from the short data area pointer.
4437 ENUM
4438   BFD_RELOC_V850_SDA_15_16_OFFSET
4439 ENUMDOC
4440   This is a 16 bit offset (of which only 15 bits are used) from the
4441   short data area pointer.
4442 ENUM
4443   BFD_RELOC_V850_ZDA_16_16_OFFSET
4444 ENUMDOC
4445   This is a 16 bit offset from the zero data area pointer.
4446 ENUM
4447   BFD_RELOC_V850_ZDA_15_16_OFFSET
4448 ENUMDOC
4449   This is a 16 bit offset (of which only 15 bits are used) from the
4450   zero data area pointer.
4451 ENUM
4452   BFD_RELOC_V850_TDA_6_8_OFFSET
4453 ENUMDOC
4454   This is an 8 bit offset (of which only 6 bits are used) from the
4455   tiny data area pointer.
4456 ENUM
4457   BFD_RELOC_V850_TDA_7_8_OFFSET
4458 ENUMDOC
4459   This is an 8bit offset (of which only 7 bits are used) from the tiny
4460   data area pointer.
4461 ENUM
4462   BFD_RELOC_V850_TDA_7_7_OFFSET
4463 ENUMDOC
4464   This is a 7 bit offset from the tiny data area pointer.
4465 ENUM
4466   BFD_RELOC_V850_TDA_16_16_OFFSET
4467 ENUMDOC
4468   This is a 16 bit offset from the tiny data area pointer.
4469 COMMENT
4470 ENUM
4471   BFD_RELOC_V850_TDA_4_5_OFFSET
4472 ENUMDOC
4473   This is a 5 bit offset (of which only 4 bits are used) from the tiny
4474   data area pointer.
4475 ENUM
4476   BFD_RELOC_V850_TDA_4_4_OFFSET
4477 ENUMDOC
4478   This is a 4 bit offset from the tiny data area pointer.
4479 ENUM
4480   BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
4481 ENUMDOC
4482   This is a 16 bit offset from the short data area pointer, with the
4483   bits placed non-contiguously in the instruction.
4484 ENUM
4485   BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
4486 ENUMDOC
4487   This is a 16 bit offset from the zero data area pointer, with the
4488   bits placed non-contiguously in the instruction.
4489 ENUM
4490   BFD_RELOC_V850_CALLT_6_7_OFFSET
4491 ENUMDOC
4492   This is a 6 bit offset from the call table base pointer.
4493 ENUM
4494   BFD_RELOC_V850_CALLT_16_16_OFFSET
4495 ENUMDOC
4496   This is a 16 bit offset from the call table base pointer.
4497 ENUM
4498   BFD_RELOC_V850_LONGCALL
4499 ENUMDOC
4500   Used for relaxing indirect function calls.
4501 ENUM
4502   BFD_RELOC_V850_LONGJUMP
4503 ENUMDOC
4504   Used for relaxing indirect jumps.
4505 ENUM
4506   BFD_RELOC_V850_ALIGN
4507 ENUMDOC
4508   Used to maintain alignment whilst relaxing.
4509 ENUM
4510   BFD_RELOC_V850_LO16_SPLIT_OFFSET
4511 ENUMDOC
4512   This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
4513   instructions.
4514 ENUM
4515   BFD_RELOC_V850_16_PCREL
4516 ENUMDOC
4517   This is a 16-bit reloc.
4518 ENUM
4519   BFD_RELOC_V850_17_PCREL
4520 ENUMDOC
4521   This is a 17-bit reloc.
4522 ENUM
4523   BFD_RELOC_V850_23
4524 ENUMDOC
4525   This is a 23-bit reloc.
4526 ENUM
4527   BFD_RELOC_V850_32_PCREL
4528 ENUMDOC
4529   This is a 32-bit reloc.
4530 ENUM
4531   BFD_RELOC_V850_32_ABS
4532 ENUMDOC
4533   This is a 32-bit reloc.
4534 ENUM
4535   BFD_RELOC_V850_16_SPLIT_OFFSET
4536 ENUMDOC
4537   This is a 16-bit reloc.
4538 ENUM
4539   BFD_RELOC_V850_16_S1
4540 ENUMDOC
4541   This is a 16-bit reloc.
4542 ENUM
4543   BFD_RELOC_V850_LO16_S1
4544 ENUMDOC
4545   Low 16 bits. 16 bit shifted by 1.
4546 ENUM
4547   BFD_RELOC_V850_CALLT_15_16_OFFSET
4548 ENUMDOC
4549   This is a 16 bit offset from the call table base pointer.
4550 ENUM
4551   BFD_RELOC_V850_32_GOTPCREL
4552 ENUMDOC
4553   DSO relocations.
4554 ENUM
4555   BFD_RELOC_V850_16_GOT
4556 ENUMDOC
4557   DSO relocations.
4558 ENUM
4559   BFD_RELOC_V850_32_GOT
4560 ENUMDOC
4561   DSO relocations.
4562 ENUM
4563   BFD_RELOC_V850_22_PLT_PCREL
4564 ENUMDOC
4565   DSO relocations.
4566 ENUM
4567   BFD_RELOC_V850_32_PLT_PCREL
4568 ENUMDOC
4569   DSO relocations.
4570 ENUM
4571   BFD_RELOC_V850_COPY
4572 ENUMDOC
4573   DSO relocations.
4574 ENUM
4575   BFD_RELOC_V850_GLOB_DAT
4576 ENUMDOC
4577   DSO relocations.
4578 ENUM
4579   BFD_RELOC_V850_JMP_SLOT
4580 ENUMDOC
4581   DSO relocations.
4582 ENUM
4583   BFD_RELOC_V850_RELATIVE
4584 ENUMDOC
4585   DSO relocations.
4586 ENUM
4587   BFD_RELOC_V850_16_GOTOFF
4588 ENUMDOC
4589   DSO relocations.
4590 ENUM
4591   BFD_RELOC_V850_32_GOTOFF
4592 ENUMDOC
4593   DSO relocations.
4594 ENUM
4595   BFD_RELOC_V850_CODE
4596 ENUMDOC
4597   start code.
4598 ENUM
4599   BFD_RELOC_V850_DATA
4600 ENUMDOC
4601   start data in text.
4602
4603 ENUM
4604   BFD_RELOC_TIC30_LDP
4605 ENUMDOC
4606   This is a 8bit DP reloc for the tms320c30, where the most
4607   significant 8 bits of a 24 bit word are placed into the least
4608   significant 8 bits of the opcode.
4609
4610 ENUM
4611   BFD_RELOC_TIC54X_PARTLS7
4612 ENUMDOC
4613   This is a 7bit reloc for the tms320c54x, where the least
4614   significant 7 bits of a 16 bit word are placed into the least
4615   significant 7 bits of the opcode.
4616
4617 ENUM
4618   BFD_RELOC_TIC54X_PARTMS9
4619 ENUMDOC
4620   This is a 9bit DP reloc for the tms320c54x, where the most
4621   significant 9 bits of a 16 bit word are placed into the least
4622   significant 9 bits of the opcode.
4623
4624 ENUM
4625   BFD_RELOC_TIC54X_23
4626 ENUMDOC
4627   This is an extended address 23-bit reloc for the tms320c54x.
4628
4629 ENUM
4630   BFD_RELOC_TIC54X_16_OF_23
4631 ENUMDOC
4632   This is a 16-bit reloc for the tms320c54x, where the least
4633   significant 16 bits of a 23-bit extended address are placed into
4634   the opcode.
4635
4636 ENUM
4637   BFD_RELOC_TIC54X_MS7_OF_23
4638 ENUMDOC
4639   This is a reloc for the tms320c54x, where the most
4640   significant 7 bits of a 23-bit extended address are placed into
4641   the opcode.
4642
4643 ENUM
4644   BFD_RELOC_C6000_PCR_S21
4645 ENUMX
4646   BFD_RELOC_C6000_PCR_S12
4647 ENUMX
4648   BFD_RELOC_C6000_PCR_S10
4649 ENUMX
4650   BFD_RELOC_C6000_PCR_S7
4651 ENUMX
4652   BFD_RELOC_C6000_ABS_S16
4653 ENUMX
4654   BFD_RELOC_C6000_ABS_L16
4655 ENUMX
4656   BFD_RELOC_C6000_ABS_H16
4657 ENUMX
4658   BFD_RELOC_C6000_SBR_U15_B
4659 ENUMX
4660   BFD_RELOC_C6000_SBR_U15_H
4661 ENUMX
4662   BFD_RELOC_C6000_SBR_U15_W
4663 ENUMX
4664   BFD_RELOC_C6000_SBR_S16
4665 ENUMX
4666   BFD_RELOC_C6000_SBR_L16_B
4667 ENUMX
4668   BFD_RELOC_C6000_SBR_L16_H
4669 ENUMX
4670   BFD_RELOC_C6000_SBR_L16_W
4671 ENUMX
4672   BFD_RELOC_C6000_SBR_H16_B
4673 ENUMX
4674   BFD_RELOC_C6000_SBR_H16_H
4675 ENUMX
4676   BFD_RELOC_C6000_SBR_H16_W
4677 ENUMX
4678   BFD_RELOC_C6000_SBR_GOT_U15_W
4679 ENUMX
4680   BFD_RELOC_C6000_SBR_GOT_L16_W
4681 ENUMX
4682   BFD_RELOC_C6000_SBR_GOT_H16_W
4683 ENUMX
4684   BFD_RELOC_C6000_DSBT_INDEX
4685 ENUMX
4686   BFD_RELOC_C6000_PREL31
4687 ENUMX
4688   BFD_RELOC_C6000_COPY
4689 ENUMX
4690   BFD_RELOC_C6000_JUMP_SLOT
4691 ENUMX
4692   BFD_RELOC_C6000_EHTYPE
4693 ENUMX
4694   BFD_RELOC_C6000_PCR_H16
4695 ENUMX
4696   BFD_RELOC_C6000_PCR_L16
4697 ENUMX
4698   BFD_RELOC_C6000_ALIGN
4699 ENUMX
4700   BFD_RELOC_C6000_FPHEAD
4701 ENUMX
4702   BFD_RELOC_C6000_NOCMP
4703 ENUMDOC
4704   TMS320C6000 relocations.
4705
4706 ENUM
4707   BFD_RELOC_FR30_48
4708 ENUMDOC
4709   This is a 48 bit reloc for the FR30 that stores 32 bits.
4710 ENUM
4711   BFD_RELOC_FR30_20
4712 ENUMDOC
4713   This is a 32 bit reloc for the FR30 that stores 20 bits split up into
4714   two sections.
4715 ENUM
4716   BFD_RELOC_FR30_6_IN_4
4717 ENUMDOC
4718   This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
4719   4 bits.
4720 ENUM
4721   BFD_RELOC_FR30_8_IN_8
4722 ENUMDOC
4723   This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
4724   into 8 bits.
4725 ENUM
4726   BFD_RELOC_FR30_9_IN_8
4727 ENUMDOC
4728   This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
4729   into 8 bits.
4730 ENUM
4731   BFD_RELOC_FR30_10_IN_8
4732 ENUMDOC
4733   This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
4734   into 8 bits.
4735 ENUM
4736   BFD_RELOC_FR30_9_PCREL
4737 ENUMDOC
4738   This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
4739   short offset into 8 bits.
4740 ENUM
4741   BFD_RELOC_FR30_12_PCREL
4742 ENUMDOC
4743   This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
4744   short offset into 11 bits.
4745
4746 ENUM
4747   BFD_RELOC_MCORE_PCREL_IMM8BY4
4748 ENUMX
4749   BFD_RELOC_MCORE_PCREL_IMM11BY2
4750 ENUMX
4751   BFD_RELOC_MCORE_PCREL_IMM4BY2
4752 ENUMX
4753   BFD_RELOC_MCORE_PCREL_32
4754 ENUMX
4755   BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
4756 ENUMX
4757   BFD_RELOC_MCORE_RVA
4758 ENUMDOC
4759   Motorola Mcore relocations.
4760
4761 ENUM
4762   BFD_RELOC_MEP_8
4763 ENUMX
4764   BFD_RELOC_MEP_16
4765 ENUMX
4766   BFD_RELOC_MEP_32
4767 ENUMX
4768   BFD_RELOC_MEP_PCREL8A2
4769 ENUMX
4770   BFD_RELOC_MEP_PCREL12A2
4771 ENUMX
4772   BFD_RELOC_MEP_PCREL17A2
4773 ENUMX
4774   BFD_RELOC_MEP_PCREL24A2
4775 ENUMX
4776   BFD_RELOC_MEP_PCABS24A2
4777 ENUMX
4778   BFD_RELOC_MEP_LOW16
4779 ENUMX
4780   BFD_RELOC_MEP_HI16U
4781 ENUMX
4782   BFD_RELOC_MEP_HI16S
4783 ENUMX
4784   BFD_RELOC_MEP_GPREL
4785 ENUMX
4786   BFD_RELOC_MEP_TPREL
4787 ENUMX
4788   BFD_RELOC_MEP_TPREL7
4789 ENUMX
4790   BFD_RELOC_MEP_TPREL7A2
4791 ENUMX
4792   BFD_RELOC_MEP_TPREL7A4
4793 ENUMX
4794   BFD_RELOC_MEP_UIMM24
4795 ENUMX
4796   BFD_RELOC_MEP_ADDR24A4
4797 ENUMX
4798   BFD_RELOC_MEP_GNU_VTINHERIT
4799 ENUMX
4800   BFD_RELOC_MEP_GNU_VTENTRY
4801 ENUMDOC
4802   Toshiba Media Processor Relocations.
4803 COMMENT
4804
4805 ENUM
4806   BFD_RELOC_METAG_HIADDR16
4807 ENUMX
4808   BFD_RELOC_METAG_LOADDR16
4809 ENUMX
4810   BFD_RELOC_METAG_RELBRANCH
4811 ENUMX
4812   BFD_RELOC_METAG_GETSETOFF
4813 ENUMX
4814   BFD_RELOC_METAG_HIOG
4815 ENUMX
4816   BFD_RELOC_METAG_LOOG
4817 ENUMX
4818   BFD_RELOC_METAG_REL8
4819 ENUMX
4820   BFD_RELOC_METAG_REL16
4821 ENUMX
4822   BFD_RELOC_METAG_HI16_GOTOFF
4823 ENUMX
4824   BFD_RELOC_METAG_LO16_GOTOFF
4825 ENUMX
4826   BFD_RELOC_METAG_GETSET_GOTOFF
4827 ENUMX
4828   BFD_RELOC_METAG_GETSET_GOT
4829 ENUMX
4830   BFD_RELOC_METAG_HI16_GOTPC
4831 ENUMX
4832   BFD_RELOC_METAG_LO16_GOTPC
4833 ENUMX
4834   BFD_RELOC_METAG_HI16_PLT
4835 ENUMX
4836   BFD_RELOC_METAG_LO16_PLT
4837 ENUMX
4838   BFD_RELOC_METAG_RELBRANCH_PLT
4839 ENUMX
4840   BFD_RELOC_METAG_GOTOFF
4841 ENUMX
4842   BFD_RELOC_METAG_PLT
4843 ENUMX
4844   BFD_RELOC_METAG_COPY
4845 ENUMX
4846   BFD_RELOC_METAG_JMP_SLOT
4847 ENUMX
4848   BFD_RELOC_METAG_RELATIVE
4849 ENUMX
4850   BFD_RELOC_METAG_GLOB_DAT
4851 ENUMX
4852   BFD_RELOC_METAG_TLS_GD
4853 ENUMX
4854   BFD_RELOC_METAG_TLS_LDM
4855 ENUMX
4856   BFD_RELOC_METAG_TLS_LDO_HI16
4857 ENUMX
4858   BFD_RELOC_METAG_TLS_LDO_LO16
4859 ENUMX
4860   BFD_RELOC_METAG_TLS_LDO
4861 ENUMX
4862   BFD_RELOC_METAG_TLS_IE
4863 ENUMX
4864   BFD_RELOC_METAG_TLS_IENONPIC
4865 ENUMX
4866   BFD_RELOC_METAG_TLS_IENONPIC_HI16
4867 ENUMX
4868   BFD_RELOC_METAG_TLS_IENONPIC_LO16
4869 ENUMX
4870   BFD_RELOC_METAG_TLS_TPOFF
4871 ENUMX
4872   BFD_RELOC_METAG_TLS_DTPMOD
4873 ENUMX
4874   BFD_RELOC_METAG_TLS_DTPOFF
4875 ENUMX
4876   BFD_RELOC_METAG_TLS_LE
4877 ENUMX
4878   BFD_RELOC_METAG_TLS_LE_HI16
4879 ENUMX
4880   BFD_RELOC_METAG_TLS_LE_LO16
4881 ENUMDOC
4882   Imagination Technologies Meta relocations.
4883
4884 ENUM
4885   BFD_RELOC_MMIX_GETA
4886 ENUMX
4887   BFD_RELOC_MMIX_GETA_1
4888 ENUMX
4889   BFD_RELOC_MMIX_GETA_2
4890 ENUMX
4891   BFD_RELOC_MMIX_GETA_3
4892 ENUMDOC
4893   These are relocations for the GETA instruction.
4894 ENUM
4895   BFD_RELOC_MMIX_CBRANCH
4896 ENUMX
4897   BFD_RELOC_MMIX_CBRANCH_J
4898 ENUMX
4899   BFD_RELOC_MMIX_CBRANCH_1
4900 ENUMX
4901   BFD_RELOC_MMIX_CBRANCH_2
4902 ENUMX
4903   BFD_RELOC_MMIX_CBRANCH_3
4904 ENUMDOC
4905   These are relocations for a conditional branch instruction.
4906 ENUM
4907   BFD_RELOC_MMIX_PUSHJ
4908 ENUMX
4909   BFD_RELOC_MMIX_PUSHJ_1
4910 ENUMX
4911   BFD_RELOC_MMIX_PUSHJ_2
4912 ENUMX
4913   BFD_RELOC_MMIX_PUSHJ_3
4914 ENUMX
4915   BFD_RELOC_MMIX_PUSHJ_STUBBABLE
4916 ENUMDOC
4917   These are relocations for the PUSHJ instruction.
4918 ENUM
4919   BFD_RELOC_MMIX_JMP
4920 ENUMX
4921   BFD_RELOC_MMIX_JMP_1
4922 ENUMX
4923   BFD_RELOC_MMIX_JMP_2
4924 ENUMX
4925   BFD_RELOC_MMIX_JMP_3
4926 ENUMDOC
4927   These are relocations for the JMP instruction.
4928 ENUM
4929   BFD_RELOC_MMIX_ADDR19
4930 ENUMDOC
4931   This is a relocation for a relative address as in a GETA instruction or
4932   a branch.
4933 ENUM
4934   BFD_RELOC_MMIX_ADDR27
4935 ENUMDOC
4936   This is a relocation for a relative address as in a JMP instruction.
4937 ENUM
4938   BFD_RELOC_MMIX_REG_OR_BYTE
4939 ENUMDOC
4940   This is a relocation for an instruction field that may be a general
4941   register or a value 0..255.
4942 ENUM
4943   BFD_RELOC_MMIX_REG
4944 ENUMDOC
4945   This is a relocation for an instruction field that may be a general
4946   register.
4947 ENUM
4948   BFD_RELOC_MMIX_BASE_PLUS_OFFSET
4949 ENUMDOC
4950   This is a relocation for two instruction fields holding a register and
4951   an offset, the equivalent of the relocation.
4952 ENUM
4953   BFD_RELOC_MMIX_LOCAL
4954 ENUMDOC
4955   This relocation is an assertion that the expression is not allocated as
4956   a global register.  It does not modify contents.
4957
4958 ENUM
4959   BFD_RELOC_AVR_7_PCREL
4960 ENUMDOC
4961   This is a 16 bit reloc for the AVR that stores 8 bit pc relative
4962   short offset into 7 bits.
4963 ENUM
4964   BFD_RELOC_AVR_13_PCREL
4965 ENUMDOC
4966   This is a 16 bit reloc for the AVR that stores 13 bit pc relative
4967   short offset into 12 bits.
4968 ENUM
4969   BFD_RELOC_AVR_16_PM
4970 ENUMDOC
4971   This is a 16 bit reloc for the AVR that stores 17 bit value (usually
4972   program memory address) into 16 bits.
4973 ENUM
4974   BFD_RELOC_AVR_LO8_LDI
4975 ENUMDOC
4976   This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4977   data memory address) into 8 bit immediate value of LDI insn.
4978 ENUM
4979   BFD_RELOC_AVR_HI8_LDI
4980 ENUMDOC
4981   This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4982   of data memory address) into 8 bit immediate value of LDI insn.
4983 ENUM
4984   BFD_RELOC_AVR_HH8_LDI
4985 ENUMDOC
4986   This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4987   of program memory address) into 8 bit immediate value of LDI insn.
4988 ENUM
4989   BFD_RELOC_AVR_MS8_LDI
4990 ENUMDOC
4991   This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4992   of 32 bit value) into 8 bit immediate value of LDI insn.
4993 ENUM
4994   BFD_RELOC_AVR_LO8_LDI_NEG
4995 ENUMDOC
4996   This is a 16 bit reloc for the AVR that stores negated 8 bit value
4997   (usually data memory address) into 8 bit immediate value of SUBI insn.
4998 ENUM
4999   BFD_RELOC_AVR_HI8_LDI_NEG
5000 ENUMDOC
5001   This is a 16 bit reloc for the AVR that stores negated 8 bit value
5002   (high 8 bit of data memory address) into 8 bit immediate value of
5003   SUBI insn.
5004 ENUM
5005   BFD_RELOC_AVR_HH8_LDI_NEG
5006 ENUMDOC
5007   This is a 16 bit reloc for the AVR that stores negated 8 bit value
5008   (most high 8 bit of program memory address) into 8 bit immediate value
5009   of LDI or SUBI insn.
5010 ENUM
5011   BFD_RELOC_AVR_MS8_LDI_NEG
5012 ENUMDOC
5013   This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
5014   of 32 bit value) into 8 bit immediate value of LDI insn.
5015 ENUM
5016   BFD_RELOC_AVR_LO8_LDI_PM
5017 ENUMDOC
5018   This is a 16 bit reloc for the AVR that stores 8 bit value (usually
5019   command address) into 8 bit immediate value of LDI insn.
5020 ENUM
5021   BFD_RELOC_AVR_LO8_LDI_GS
5022 ENUMDOC
5023   This is a 16 bit reloc for the AVR that stores 8 bit value
5024   (command address) into 8 bit immediate value of LDI insn. If the address
5025   is beyond the 128k boundary, the linker inserts a jump stub for this reloc
5026   in the lower 128k.
5027 ENUM
5028   BFD_RELOC_AVR_HI8_LDI_PM
5029 ENUMDOC
5030   This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
5031   of command address) into 8 bit immediate value of LDI insn.
5032 ENUM
5033   BFD_RELOC_AVR_HI8_LDI_GS
5034 ENUMDOC
5035   This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
5036   of command address) into 8 bit immediate value of LDI insn.  If the address
5037   is beyond the 128k boundary, the linker inserts a jump stub for this reloc
5038   below 128k.
5039 ENUM
5040   BFD_RELOC_AVR_HH8_LDI_PM
5041 ENUMDOC
5042   This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
5043   of command address) into 8 bit immediate value of LDI insn.
5044 ENUM
5045   BFD_RELOC_AVR_LO8_LDI_PM_NEG
5046 ENUMDOC
5047   This is a 16 bit reloc for the AVR that stores negated 8 bit value
5048   (usually command address) into 8 bit immediate value of SUBI insn.
5049 ENUM
5050   BFD_RELOC_AVR_HI8_LDI_PM_NEG
5051 ENUMDOC
5052   This is a 16 bit reloc for the AVR that stores negated 8 bit value
5053   (high 8 bit of 16 bit command address) into 8 bit immediate value
5054   of SUBI insn.
5055 ENUM
5056   BFD_RELOC_AVR_HH8_LDI_PM_NEG
5057 ENUMDOC
5058   This is a 16 bit reloc for the AVR that stores negated 8 bit value
5059   (high 6 bit of 22 bit command address) into 8 bit immediate
5060   value of SUBI insn.
5061 ENUM
5062   BFD_RELOC_AVR_CALL
5063 ENUMDOC
5064   This is a 32 bit reloc for the AVR that stores 23 bit value
5065   into 22 bits.
5066 ENUM
5067   BFD_RELOC_AVR_LDI
5068 ENUMDOC
5069   This is a 16 bit reloc for the AVR that stores all needed bits
5070   for absolute addressing with ldi with overflow check to linktime
5071 ENUM
5072   BFD_RELOC_AVR_6
5073 ENUMDOC
5074   This is a 6 bit reloc for the AVR that stores offset for ldd/std
5075   instructions
5076 ENUM
5077   BFD_RELOC_AVR_6_ADIW
5078 ENUMDOC
5079   This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
5080   instructions
5081 ENUM
5082   BFD_RELOC_AVR_8_LO
5083 ENUMDOC
5084   This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
5085   in .byte lo8(symbol)
5086 ENUM
5087   BFD_RELOC_AVR_8_HI
5088 ENUMDOC
5089   This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
5090   in .byte hi8(symbol)
5091 ENUM
5092   BFD_RELOC_AVR_8_HLO
5093 ENUMDOC
5094   This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
5095   in .byte hlo8(symbol)
5096 ENUM
5097   BFD_RELOC_AVR_DIFF8
5098 ENUMX
5099   BFD_RELOC_AVR_DIFF16
5100 ENUMX
5101   BFD_RELOC_AVR_DIFF32
5102 ENUMDOC
5103   AVR relocations to mark the difference of two local symbols.
5104   These are only needed to support linker relaxation and can be ignored
5105   when not relaxing.  The field is set to the value of the difference
5106   assuming no relaxation.  The relocation encodes the position of the
5107   second symbol so the linker can determine whether to adjust the field
5108   value.
5109 ENUM
5110   BFD_RELOC_AVR_LDS_STS_16
5111 ENUMDOC
5112   This is a 7 bit reloc for the AVR that stores SRAM address for 16bit
5113   lds and sts instructions supported only tiny core.
5114 ENUM
5115   BFD_RELOC_AVR_PORT6
5116 ENUMDOC
5117   This is a 6 bit reloc for the AVR that stores an I/O register
5118   number for the IN and OUT instructions
5119 ENUM
5120   BFD_RELOC_AVR_PORT5
5121 ENUMDOC
5122   This is a 5 bit reloc for the AVR that stores an I/O register
5123   number for the SBIC, SBIS, SBI and CBI instructions
5124
5125 ENUM
5126   BFD_RELOC_RISCV_HI20
5127 ENUMX
5128   BFD_RELOC_RISCV_PCREL_HI20
5129 ENUMX
5130   BFD_RELOC_RISCV_PCREL_LO12_I
5131 ENUMX
5132   BFD_RELOC_RISCV_PCREL_LO12_S
5133 ENUMX
5134   BFD_RELOC_RISCV_LO12_I
5135 ENUMX
5136   BFD_RELOC_RISCV_LO12_S
5137 ENUMX
5138   BFD_RELOC_RISCV_GPREL12_I
5139 ENUMX
5140   BFD_RELOC_RISCV_GPREL12_S
5141 ENUMX
5142   BFD_RELOC_RISCV_TPREL_HI20
5143 ENUMX
5144   BFD_RELOC_RISCV_TPREL_LO12_I
5145 ENUMX
5146   BFD_RELOC_RISCV_TPREL_LO12_S
5147 ENUMX
5148   BFD_RELOC_RISCV_TPREL_ADD
5149 ENUMX
5150   BFD_RELOC_RISCV_CALL
5151 ENUMX
5152   BFD_RELOC_RISCV_CALL_PLT
5153 ENUMX
5154   BFD_RELOC_RISCV_ADD8
5155 ENUMX
5156   BFD_RELOC_RISCV_ADD16
5157 ENUMX
5158   BFD_RELOC_RISCV_ADD32
5159 ENUMX
5160   BFD_RELOC_RISCV_ADD64
5161 ENUMX
5162   BFD_RELOC_RISCV_SUB8
5163 ENUMX
5164   BFD_RELOC_RISCV_SUB16
5165 ENUMX
5166   BFD_RELOC_RISCV_SUB32
5167 ENUMX
5168   BFD_RELOC_RISCV_SUB64
5169 ENUMX
5170   BFD_RELOC_RISCV_GOT_HI20
5171 ENUMX
5172   BFD_RELOC_RISCV_TLS_GOT_HI20
5173 ENUMX
5174   BFD_RELOC_RISCV_TLS_GD_HI20
5175 ENUMX
5176   BFD_RELOC_RISCV_JMP
5177 ENUMX
5178   BFD_RELOC_RISCV_TLS_DTPMOD32
5179 ENUMX
5180   BFD_RELOC_RISCV_TLS_DTPREL32
5181 ENUMX
5182   BFD_RELOC_RISCV_TLS_DTPMOD64
5183 ENUMX
5184   BFD_RELOC_RISCV_TLS_DTPREL64
5185 ENUMX
5186   BFD_RELOC_RISCV_TLS_TPREL32
5187 ENUMX
5188   BFD_RELOC_RISCV_TLS_TPREL64
5189 ENUMX
5190   BFD_RELOC_RISCV_ALIGN
5191 ENUMX
5192   BFD_RELOC_RISCV_RVC_BRANCH
5193 ENUMX
5194   BFD_RELOC_RISCV_RVC_JUMP
5195 ENUMX
5196   BFD_RELOC_RISCV_RVC_LUI
5197 ENUMX
5198   BFD_RELOC_RISCV_GPREL_I
5199 ENUMX
5200   BFD_RELOC_RISCV_GPREL_S
5201 ENUMX
5202   BFD_RELOC_RISCV_TPREL_I
5203 ENUMX
5204   BFD_RELOC_RISCV_TPREL_S
5205 ENUMX
5206   BFD_RELOC_RISCV_RELAX
5207 ENUMX
5208   BFD_RELOC_RISCV_CFA
5209 ENUMX
5210   BFD_RELOC_RISCV_SUB6
5211 ENUMX
5212   BFD_RELOC_RISCV_SET6
5213 ENUMX
5214   BFD_RELOC_RISCV_SET8
5215 ENUMX
5216   BFD_RELOC_RISCV_SET16
5217 ENUMX
5218   BFD_RELOC_RISCV_SET32
5219 ENUMX
5220   BFD_RELOC_RISCV_32_PCREL
5221 ENUMDOC
5222   RISC-V relocations.
5223
5224 ENUM
5225   BFD_RELOC_RL78_NEG8
5226 ENUMX
5227   BFD_RELOC_RL78_NEG16
5228 ENUMX
5229   BFD_RELOC_RL78_NEG24
5230 ENUMX
5231   BFD_RELOC_RL78_NEG32
5232 ENUMX
5233   BFD_RELOC_RL78_16_OP
5234 ENUMX
5235   BFD_RELOC_RL78_24_OP
5236 ENUMX
5237   BFD_RELOC_RL78_32_OP
5238 ENUMX
5239   BFD_RELOC_RL78_8U
5240 ENUMX
5241   BFD_RELOC_RL78_16U
5242 ENUMX
5243   BFD_RELOC_RL78_24U
5244 ENUMX
5245   BFD_RELOC_RL78_DIR3U_PCREL
5246 ENUMX
5247   BFD_RELOC_RL78_DIFF
5248 ENUMX
5249   BFD_RELOC_RL78_GPRELB
5250 ENUMX
5251   BFD_RELOC_RL78_GPRELW
5252 ENUMX
5253   BFD_RELOC_RL78_GPRELL
5254 ENUMX
5255   BFD_RELOC_RL78_SYM
5256 ENUMX
5257   BFD_RELOC_RL78_OP_SUBTRACT
5258 ENUMX
5259   BFD_RELOC_RL78_OP_NEG
5260 ENUMX
5261   BFD_RELOC_RL78_OP_AND
5262 ENUMX
5263   BFD_RELOC_RL78_OP_SHRA
5264 ENUMX
5265   BFD_RELOC_RL78_ABS8
5266 ENUMX
5267   BFD_RELOC_RL78_ABS16
5268 ENUMX
5269   BFD_RELOC_RL78_ABS16_REV
5270 ENUMX
5271   BFD_RELOC_RL78_ABS32
5272 ENUMX
5273   BFD_RELOC_RL78_ABS32_REV
5274 ENUMX
5275   BFD_RELOC_RL78_ABS16U
5276 ENUMX
5277   BFD_RELOC_RL78_ABS16UW
5278 ENUMX
5279   BFD_RELOC_RL78_ABS16UL
5280 ENUMX
5281   BFD_RELOC_RL78_RELAX
5282 ENUMX
5283   BFD_RELOC_RL78_HI16
5284 ENUMX
5285   BFD_RELOC_RL78_HI8
5286 ENUMX
5287   BFD_RELOC_RL78_LO16
5288 ENUMX
5289   BFD_RELOC_RL78_CODE
5290 ENUMX
5291   BFD_RELOC_RL78_SADDR
5292 ENUMDOC
5293   Renesas RL78 Relocations.
5294
5295 ENUM
5296   BFD_RELOC_RX_NEG8
5297 ENUMX
5298   BFD_RELOC_RX_NEG16
5299 ENUMX
5300   BFD_RELOC_RX_NEG24
5301 ENUMX
5302   BFD_RELOC_RX_NEG32
5303 ENUMX
5304   BFD_RELOC_RX_16_OP
5305 ENUMX
5306   BFD_RELOC_RX_24_OP
5307 ENUMX
5308   BFD_RELOC_RX_32_OP
5309 ENUMX
5310   BFD_RELOC_RX_8U
5311 ENUMX
5312   BFD_RELOC_RX_16U
5313 ENUMX
5314   BFD_RELOC_RX_24U
5315 ENUMX
5316   BFD_RELOC_RX_DIR3U_PCREL
5317 ENUMX
5318   BFD_RELOC_RX_DIFF
5319 ENUMX
5320   BFD_RELOC_RX_GPRELB
5321 ENUMX
5322   BFD_RELOC_RX_GPRELW
5323 ENUMX
5324   BFD_RELOC_RX_GPRELL
5325 ENUMX
5326   BFD_RELOC_RX_SYM
5327 ENUMX
5328   BFD_RELOC_RX_OP_SUBTRACT
5329 ENUMX
5330   BFD_RELOC_RX_OP_NEG
5331 ENUMX
5332   BFD_RELOC_RX_ABS8
5333 ENUMX
5334   BFD_RELOC_RX_ABS16
5335 ENUMX
5336   BFD_RELOC_RX_ABS16_REV
5337 ENUMX
5338   BFD_RELOC_RX_ABS32
5339 ENUMX
5340   BFD_RELOC_RX_ABS32_REV
5341 ENUMX
5342   BFD_RELOC_RX_ABS16U
5343 ENUMX
5344   BFD_RELOC_RX_ABS16UW
5345 ENUMX
5346   BFD_RELOC_RX_ABS16UL
5347 ENUMX
5348   BFD_RELOC_RX_RELAX
5349 ENUMDOC
5350   Renesas RX Relocations.
5351
5352 ENUM
5353   BFD_RELOC_390_12
5354 ENUMDOC
5355    Direct 12 bit.
5356 ENUM
5357   BFD_RELOC_390_GOT12
5358 ENUMDOC
5359   12 bit GOT offset.
5360 ENUM
5361   BFD_RELOC_390_PLT32
5362 ENUMDOC
5363   32 bit PC relative PLT address.
5364 ENUM
5365   BFD_RELOC_390_COPY
5366 ENUMDOC
5367   Copy symbol at runtime.
5368 ENUM
5369   BFD_RELOC_390_GLOB_DAT
5370 ENUMDOC
5371   Create GOT entry.
5372 ENUM
5373   BFD_RELOC_390_JMP_SLOT
5374 ENUMDOC
5375   Create PLT entry.
5376 ENUM
5377   BFD_RELOC_390_RELATIVE
5378 ENUMDOC
5379   Adjust by program base.
5380 ENUM
5381   BFD_RELOC_390_GOTPC
5382 ENUMDOC
5383   32 bit PC relative offset to GOT.
5384 ENUM
5385   BFD_RELOC_390_GOT16
5386 ENUMDOC
5387   16 bit GOT offset.
5388 ENUM
5389   BFD_RELOC_390_PC12DBL
5390 ENUMDOC
5391   PC relative 12 bit shifted by 1.
5392 ENUM
5393   BFD_RELOC_390_PLT12DBL
5394 ENUMDOC
5395   12 bit PC rel. PLT shifted by 1.
5396 ENUM
5397   BFD_RELOC_390_PC16DBL
5398 ENUMDOC
5399   PC relative 16 bit shifted by 1.
5400 ENUM
5401   BFD_RELOC_390_PLT16DBL
5402 ENUMDOC
5403   16 bit PC rel. PLT shifted by 1.
5404 ENUM
5405   BFD_RELOC_390_PC24DBL
5406 ENUMDOC
5407   PC relative 24 bit shifted by 1.
5408 ENUM
5409   BFD_RELOC_390_PLT24DBL
5410 ENUMDOC
5411   24 bit PC rel. PLT shifted by 1.
5412 ENUM
5413   BFD_RELOC_390_PC32DBL
5414 ENUMDOC
5415   PC relative 32 bit shifted by 1.
5416 ENUM
5417   BFD_RELOC_390_PLT32DBL
5418 ENUMDOC
5419   32 bit PC rel. PLT shifted by 1.
5420 ENUM
5421   BFD_RELOC_390_GOTPCDBL
5422 ENUMDOC
5423   32 bit PC rel. GOT shifted by 1.
5424 ENUM
5425   BFD_RELOC_390_GOT64
5426 ENUMDOC
5427   64 bit GOT offset.
5428 ENUM
5429   BFD_RELOC_390_PLT64
5430 ENUMDOC
5431   64 bit PC relative PLT address.
5432 ENUM
5433   BFD_RELOC_390_GOTENT
5434 ENUMDOC
5435   32 bit rel. offset to GOT entry.
5436 ENUM
5437   BFD_RELOC_390_GOTOFF64
5438 ENUMDOC
5439   64 bit offset to GOT.
5440 ENUM
5441   BFD_RELOC_390_GOTPLT12
5442 ENUMDOC
5443   12-bit offset to symbol-entry within GOT, with PLT handling.
5444 ENUM
5445   BFD_RELOC_390_GOTPLT16
5446 ENUMDOC
5447   16-bit offset to symbol-entry within GOT, with PLT handling.
5448 ENUM
5449   BFD_RELOC_390_GOTPLT32
5450 ENUMDOC
5451   32-bit offset to symbol-entry within GOT, with PLT handling.
5452 ENUM
5453   BFD_RELOC_390_GOTPLT64
5454 ENUMDOC
5455   64-bit offset to symbol-entry within GOT, with PLT handling.
5456 ENUM
5457   BFD_RELOC_390_GOTPLTENT
5458 ENUMDOC
5459   32-bit rel. offset to symbol-entry within GOT, with PLT handling.
5460 ENUM
5461   BFD_RELOC_390_PLTOFF16
5462 ENUMDOC
5463   16-bit rel. offset from the GOT to a PLT entry.
5464 ENUM
5465   BFD_RELOC_390_PLTOFF32
5466 ENUMDOC
5467   32-bit rel. offset from the GOT to a PLT entry.
5468 ENUM
5469   BFD_RELOC_390_PLTOFF64
5470 ENUMDOC
5471   64-bit rel. offset from the GOT to a PLT entry.
5472
5473 ENUM
5474   BFD_RELOC_390_TLS_LOAD
5475 ENUMX
5476   BFD_RELOC_390_TLS_GDCALL
5477 ENUMX
5478   BFD_RELOC_390_TLS_LDCALL
5479 ENUMX
5480   BFD_RELOC_390_TLS_GD32
5481 ENUMX
5482   BFD_RELOC_390_TLS_GD64
5483 ENUMX
5484   BFD_RELOC_390_TLS_GOTIE12
5485 ENUMX
5486   BFD_RELOC_390_TLS_GOTIE32
5487 ENUMX
5488   BFD_RELOC_390_TLS_GOTIE64
5489 ENUMX
5490   BFD_RELOC_390_TLS_LDM32
5491 ENUMX
5492   BFD_RELOC_390_TLS_LDM64
5493 ENUMX
5494   BFD_RELOC_390_TLS_IE32
5495 ENUMX
5496   BFD_RELOC_390_TLS_IE64
5497 ENUMX
5498   BFD_RELOC_390_TLS_IEENT
5499 ENUMX
5500   BFD_RELOC_390_TLS_LE32
5501 ENUMX
5502   BFD_RELOC_390_TLS_LE64
5503 ENUMX
5504   BFD_RELOC_390_TLS_LDO32
5505 ENUMX
5506   BFD_RELOC_390_TLS_LDO64
5507 ENUMX
5508   BFD_RELOC_390_TLS_DTPMOD
5509 ENUMX
5510   BFD_RELOC_390_TLS_DTPOFF
5511 ENUMX
5512   BFD_RELOC_390_TLS_TPOFF
5513 ENUMDOC
5514   s390 tls relocations.
5515
5516 ENUM
5517   BFD_RELOC_390_20
5518 ENUMX
5519   BFD_RELOC_390_GOT20
5520 ENUMX
5521   BFD_RELOC_390_GOTPLT20
5522 ENUMX
5523   BFD_RELOC_390_TLS_GOTIE20
5524 ENUMDOC
5525   Long displacement extension.
5526
5527 ENUM
5528   BFD_RELOC_390_IRELATIVE
5529 ENUMDOC
5530   STT_GNU_IFUNC relocation.
5531
5532 ENUM
5533   BFD_RELOC_SCORE_GPREL15
5534 ENUMDOC
5535   Score relocations
5536   Low 16 bit for load/store
5537 ENUM
5538   BFD_RELOC_SCORE_DUMMY2
5539 ENUMX
5540   BFD_RELOC_SCORE_JMP
5541 ENUMDOC
5542   This is a 24-bit reloc with the right 1 bit assumed to be 0
5543 ENUM
5544   BFD_RELOC_SCORE_BRANCH
5545 ENUMDOC
5546   This is a 19-bit reloc with the right 1 bit assumed to be 0
5547 ENUM
5548   BFD_RELOC_SCORE_IMM30
5549 ENUMDOC
5550   This is a 32-bit reloc for 48-bit instructions.
5551 ENUM
5552   BFD_RELOC_SCORE_IMM32
5553 ENUMDOC
5554   This is a 32-bit reloc for 48-bit instructions.
5555 ENUM
5556   BFD_RELOC_SCORE16_JMP
5557 ENUMDOC
5558   This is a 11-bit reloc with the right 1 bit assumed to be 0
5559 ENUM
5560   BFD_RELOC_SCORE16_BRANCH
5561 ENUMDOC
5562   This is a 8-bit reloc with the right 1 bit assumed to be 0
5563 ENUM
5564   BFD_RELOC_SCORE_BCMP
5565 ENUMDOC
5566    This is a 9-bit reloc with the right 1 bit assumed to be 0
5567 ENUM
5568   BFD_RELOC_SCORE_GOT15
5569 ENUMX
5570   BFD_RELOC_SCORE_GOT_LO16
5571 ENUMX
5572   BFD_RELOC_SCORE_CALL15
5573 ENUMX
5574   BFD_RELOC_SCORE_DUMMY_HI16
5575 ENUMDOC
5576   Undocumented Score relocs
5577
5578 ENUM
5579   BFD_RELOC_IP2K_FR9
5580 ENUMDOC
5581   Scenix IP2K - 9-bit register number / data address
5582 ENUM
5583   BFD_RELOC_IP2K_BANK
5584 ENUMDOC
5585   Scenix IP2K - 4-bit register/data bank number
5586 ENUM
5587   BFD_RELOC_IP2K_ADDR16CJP
5588 ENUMDOC
5589   Scenix IP2K - low 13 bits of instruction word address
5590 ENUM
5591   BFD_RELOC_IP2K_PAGE3
5592 ENUMDOC
5593   Scenix IP2K - high 3 bits of instruction word address
5594 ENUM
5595   BFD_RELOC_IP2K_LO8DATA
5596 ENUMX
5597   BFD_RELOC_IP2K_HI8DATA
5598 ENUMX
5599   BFD_RELOC_IP2K_EX8DATA
5600 ENUMDOC
5601   Scenix IP2K - ext/low/high 8 bits of data address
5602 ENUM
5603   BFD_RELOC_IP2K_LO8INSN
5604 ENUMX
5605   BFD_RELOC_IP2K_HI8INSN
5606 ENUMDOC
5607   Scenix IP2K - low/high 8 bits of instruction word address
5608 ENUM
5609   BFD_RELOC_IP2K_PC_SKIP
5610 ENUMDOC
5611   Scenix IP2K - even/odd PC modifier to modify snb pcl.0
5612 ENUM
5613   BFD_RELOC_IP2K_TEXT
5614 ENUMDOC
5615   Scenix IP2K - 16 bit word address in text section.
5616 ENUM
5617   BFD_RELOC_IP2K_FR_OFFSET
5618 ENUMDOC
5619   Scenix IP2K - 7-bit sp or dp offset
5620 ENUM
5621   BFD_RELOC_VPE4KMATH_DATA
5622 ENUMX
5623   BFD_RELOC_VPE4KMATH_INSN
5624 ENUMDOC
5625   Scenix VPE4K coprocessor - data/insn-space addressing
5626
5627 ENUM
5628   BFD_RELOC_VTABLE_INHERIT
5629 ENUMX
5630   BFD_RELOC_VTABLE_ENTRY
5631 ENUMDOC
5632   These two relocations are used by the linker to determine which of
5633   the entries in a C++ virtual function table are actually used.  When
5634   the --gc-sections option is given, the linker will zero out the entries
5635   that are not used, so that the code for those functions need not be
5636   included in the output.
5637
5638   VTABLE_INHERIT is a zero-space relocation used to describe to the
5639   linker the inheritance tree of a C++ virtual function table.  The
5640   relocation's symbol should be the parent class' vtable, and the
5641   relocation should be located at the child vtable.
5642
5643   VTABLE_ENTRY is a zero-space relocation that describes the use of a
5644   virtual function table entry.  The reloc's symbol should refer to the
5645   table of the class mentioned in the code.  Off of that base, an offset
5646   describes the entry that is being used.  For Rela hosts, this offset
5647   is stored in the reloc's addend.  For Rel hosts, we are forced to put
5648   this offset in the reloc's section offset.
5649
5650 ENUM
5651   BFD_RELOC_IA64_IMM14
5652 ENUMX
5653   BFD_RELOC_IA64_IMM22
5654 ENUMX
5655   BFD_RELOC_IA64_IMM64
5656 ENUMX
5657   BFD_RELOC_IA64_DIR32MSB
5658 ENUMX
5659   BFD_RELOC_IA64_DIR32LSB
5660 ENUMX
5661   BFD_RELOC_IA64_DIR64MSB
5662 ENUMX
5663   BFD_RELOC_IA64_DIR64LSB
5664 ENUMX
5665   BFD_RELOC_IA64_GPREL22
5666 ENUMX
5667   BFD_RELOC_IA64_GPREL64I
5668 ENUMX
5669   BFD_RELOC_IA64_GPREL32MSB
5670 ENUMX
5671   BFD_RELOC_IA64_GPREL32LSB
5672 ENUMX
5673   BFD_RELOC_IA64_GPREL64MSB
5674 ENUMX
5675   BFD_RELOC_IA64_GPREL64LSB
5676 ENUMX
5677   BFD_RELOC_IA64_LTOFF22
5678 ENUMX
5679   BFD_RELOC_IA64_LTOFF64I
5680 ENUMX
5681   BFD_RELOC_IA64_PLTOFF22
5682 ENUMX
5683   BFD_RELOC_IA64_PLTOFF64I
5684 ENUMX
5685   BFD_RELOC_IA64_PLTOFF64MSB
5686 ENUMX
5687   BFD_RELOC_IA64_PLTOFF64LSB
5688 ENUMX
5689   BFD_RELOC_IA64_FPTR64I
5690 ENUMX
5691   BFD_RELOC_IA64_FPTR32MSB
5692 ENUMX
5693   BFD_RELOC_IA64_FPTR32LSB
5694 ENUMX
5695   BFD_RELOC_IA64_FPTR64MSB
5696 ENUMX
5697   BFD_RELOC_IA64_FPTR64LSB
5698 ENUMX
5699   BFD_RELOC_IA64_PCREL21B
5700 ENUMX
5701   BFD_RELOC_IA64_PCREL21BI
5702 ENUMX
5703   BFD_RELOC_IA64_PCREL21M
5704 ENUMX
5705   BFD_RELOC_IA64_PCREL21F
5706 ENUMX
5707   BFD_RELOC_IA64_PCREL22
5708 ENUMX
5709   BFD_RELOC_IA64_PCREL60B
5710 ENUMX
5711   BFD_RELOC_IA64_PCREL64I
5712 ENUMX
5713   BFD_RELOC_IA64_PCREL32MSB
5714 ENUMX
5715   BFD_RELOC_IA64_PCREL32LSB
5716 ENUMX
5717   BFD_RELOC_IA64_PCREL64MSB
5718 ENUMX
5719   BFD_RELOC_IA64_PCREL64LSB
5720 ENUMX
5721   BFD_RELOC_IA64_LTOFF_FPTR22
5722 ENUMX
5723   BFD_RELOC_IA64_LTOFF_FPTR64I
5724 ENUMX
5725   BFD_RELOC_IA64_LTOFF_FPTR32MSB
5726 ENUMX
5727   BFD_RELOC_IA64_LTOFF_FPTR32LSB
5728 ENUMX
5729   BFD_RELOC_IA64_LTOFF_FPTR64MSB
5730 ENUMX
5731   BFD_RELOC_IA64_LTOFF_FPTR64LSB
5732 ENUMX
5733   BFD_RELOC_IA64_SEGREL32MSB
5734 ENUMX
5735   BFD_RELOC_IA64_SEGREL32LSB
5736 ENUMX
5737   BFD_RELOC_IA64_SEGREL64MSB
5738 ENUMX
5739   BFD_RELOC_IA64_SEGREL64LSB
5740 ENUMX
5741   BFD_RELOC_IA64_SECREL32MSB
5742 ENUMX
5743   BFD_RELOC_IA64_SECREL32LSB
5744 ENUMX
5745   BFD_RELOC_IA64_SECREL64MSB
5746 ENUMX
5747   BFD_RELOC_IA64_SECREL64LSB
5748 ENUMX
5749   BFD_RELOC_IA64_REL32MSB
5750 ENUMX
5751   BFD_RELOC_IA64_REL32LSB
5752 ENUMX
5753   BFD_RELOC_IA64_REL64MSB
5754 ENUMX
5755   BFD_RELOC_IA64_REL64LSB
5756 ENUMX
5757   BFD_RELOC_IA64_LTV32MSB
5758 ENUMX
5759   BFD_RELOC_IA64_LTV32LSB
5760 ENUMX
5761   BFD_RELOC_IA64_LTV64MSB
5762 ENUMX
5763   BFD_RELOC_IA64_LTV64LSB
5764 ENUMX
5765   BFD_RELOC_IA64_IPLTMSB
5766 ENUMX
5767   BFD_RELOC_IA64_IPLTLSB
5768 ENUMX
5769   BFD_RELOC_IA64_COPY
5770 ENUMX
5771   BFD_RELOC_IA64_LTOFF22X
5772 ENUMX
5773   BFD_RELOC_IA64_LDXMOV
5774 ENUMX
5775   BFD_RELOC_IA64_TPREL14
5776 ENUMX
5777   BFD_RELOC_IA64_TPREL22
5778 ENUMX
5779   BFD_RELOC_IA64_TPREL64I
5780 ENUMX
5781   BFD_RELOC_IA64_TPREL64MSB
5782 ENUMX
5783   BFD_RELOC_IA64_TPREL64LSB
5784 ENUMX
5785   BFD_RELOC_IA64_LTOFF_TPREL22
5786 ENUMX
5787   BFD_RELOC_IA64_DTPMOD64MSB
5788 ENUMX
5789   BFD_RELOC_IA64_DTPMOD64LSB
5790 ENUMX
5791   BFD_RELOC_IA64_LTOFF_DTPMOD22
5792 ENUMX
5793   BFD_RELOC_IA64_DTPREL14
5794 ENUMX
5795   BFD_RELOC_IA64_DTPREL22
5796 ENUMX
5797   BFD_RELOC_IA64_DTPREL64I
5798 ENUMX
5799   BFD_RELOC_IA64_DTPREL32MSB
5800 ENUMX
5801   BFD_RELOC_IA64_DTPREL32LSB
5802 ENUMX
5803   BFD_RELOC_IA64_DTPREL64MSB
5804 ENUMX
5805   BFD_RELOC_IA64_DTPREL64LSB
5806 ENUMX
5807   BFD_RELOC_IA64_LTOFF_DTPREL22
5808 ENUMDOC
5809   Intel IA64 Relocations.
5810
5811 ENUM
5812   BFD_RELOC_M68HC11_HI8
5813 ENUMDOC
5814   Motorola 68HC11 reloc.
5815   This is the 8 bit high part of an absolute address.
5816 ENUM
5817   BFD_RELOC_M68HC11_LO8
5818 ENUMDOC
5819   Motorola 68HC11 reloc.
5820   This is the 8 bit low part of an absolute address.
5821 ENUM
5822   BFD_RELOC_M68HC11_3B
5823 ENUMDOC
5824   Motorola 68HC11 reloc.
5825   This is the 3 bit of a value.
5826 ENUM
5827   BFD_RELOC_M68HC11_RL_JUMP
5828 ENUMDOC
5829   Motorola 68HC11 reloc.
5830   This reloc marks the beginning of a jump/call instruction.
5831   It is used for linker relaxation to correctly identify beginning
5832   of instruction and change some branches to use PC-relative
5833   addressing mode.
5834 ENUM
5835   BFD_RELOC_M68HC11_RL_GROUP
5836 ENUMDOC
5837   Motorola 68HC11 reloc.
5838   This reloc marks a group of several instructions that gcc generates
5839   and for which the linker relaxation pass can modify and/or remove
5840   some of them.
5841 ENUM
5842   BFD_RELOC_M68HC11_LO16
5843 ENUMDOC
5844   Motorola 68HC11 reloc.
5845   This is the 16-bit lower part of an address.  It is used for 'call'
5846   instruction to specify the symbol address without any special
5847   transformation (due to memory bank window).
5848 ENUM
5849   BFD_RELOC_M68HC11_PAGE
5850 ENUMDOC
5851   Motorola 68HC11 reloc.
5852   This is a 8-bit reloc that specifies the page number of an address.
5853   It is used by 'call' instruction to specify the page number of
5854   the symbol.
5855 ENUM
5856   BFD_RELOC_M68HC11_24
5857 ENUMDOC
5858   Motorola 68HC11 reloc.
5859   This is a 24-bit reloc that represents the address with a 16-bit
5860   value and a 8-bit page number.  The symbol address is transformed
5861   to follow the 16K memory bank of 68HC12 (seen as mapped in the window).
5862 ENUM
5863   BFD_RELOC_M68HC12_5B
5864 ENUMDOC
5865   Motorola 68HC12 reloc.
5866   This is the 5 bits of a value.
5867 ENUM
5868   BFD_RELOC_XGATE_RL_JUMP
5869 ENUMDOC
5870   Freescale XGATE reloc.
5871   This reloc marks the beginning of a bra/jal instruction.
5872 ENUM
5873   BFD_RELOC_XGATE_RL_GROUP
5874 ENUMDOC
5875   Freescale XGATE reloc.
5876   This reloc marks a group of several instructions that gcc generates
5877   and for which the linker relaxation pass can modify and/or remove
5878   some of them.
5879 ENUM
5880   BFD_RELOC_XGATE_LO16
5881 ENUMDOC
5882   Freescale XGATE reloc.
5883   This is the 16-bit lower part of an address.  It is used for the '16-bit'
5884   instructions.
5885 ENUM
5886   BFD_RELOC_XGATE_GPAGE
5887 ENUMDOC
5888   Freescale XGATE reloc.
5889 ENUM
5890   BFD_RELOC_XGATE_24
5891 ENUMDOC
5892   Freescale XGATE reloc.
5893 ENUM
5894   BFD_RELOC_XGATE_PCREL_9
5895 ENUMDOC
5896   Freescale XGATE reloc.
5897   This is a 9-bit pc-relative reloc.
5898 ENUM
5899   BFD_RELOC_XGATE_PCREL_10
5900 ENUMDOC
5901   Freescale XGATE reloc.
5902   This is a 10-bit pc-relative reloc.
5903 ENUM
5904   BFD_RELOC_XGATE_IMM8_LO
5905 ENUMDOC
5906   Freescale XGATE reloc.
5907   This is the 16-bit lower part of an address.  It is used for the '16-bit'
5908   instructions.
5909 ENUM
5910   BFD_RELOC_XGATE_IMM8_HI
5911 ENUMDOC
5912   Freescale XGATE reloc.
5913   This is the 16-bit higher part of an address.  It is used for the '16-bit'
5914   instructions.
5915 ENUM
5916   BFD_RELOC_XGATE_IMM3
5917 ENUMDOC
5918   Freescale XGATE reloc.
5919   This is a 3-bit pc-relative reloc.
5920 ENUM
5921   BFD_RELOC_XGATE_IMM4
5922 ENUMDOC
5923   Freescale XGATE reloc.
5924   This is a 4-bit pc-relative reloc.
5925 ENUM
5926   BFD_RELOC_XGATE_IMM5
5927 ENUMDOC
5928   Freescale XGATE reloc.
5929   This is a 5-bit pc-relative reloc.
5930 ENUM
5931   BFD_RELOC_M68HC12_9B
5932 ENUMDOC
5933   Motorola 68HC12 reloc.
5934   This is the 9 bits of a value.
5935 ENUM
5936   BFD_RELOC_M68HC12_16B
5937 ENUMDOC
5938   Motorola 68HC12 reloc.
5939   This is the 16 bits of a value.
5940 ENUM
5941   BFD_RELOC_M68HC12_9_PCREL
5942 ENUMDOC
5943   Motorola 68HC12/XGATE reloc.
5944   This is a PCREL9 branch.
5945 ENUM
5946   BFD_RELOC_M68HC12_10_PCREL
5947 ENUMDOC
5948   Motorola 68HC12/XGATE reloc.
5949   This is a PCREL10 branch.
5950 ENUM
5951   BFD_RELOC_M68HC12_LO8XG
5952 ENUMDOC
5953   Motorola 68HC12/XGATE reloc.
5954   This is the 8 bit low part of an absolute address and immediately precedes
5955   a matching HI8XG part.
5956 ENUM
5957   BFD_RELOC_M68HC12_HI8XG
5958 ENUMDOC
5959   Motorola 68HC12/XGATE reloc.
5960   This is the 8 bit high part of an absolute address and immediately follows
5961   a matching LO8XG part.
5962 ENUM
5963   BFD_RELOC_S12Z_15_PCREL
5964 ENUMDOC
5965   Freescale S12Z reloc.
5966   This is a 15 bit relative address.  If the most significant bits are all zero
5967   then it may be truncated to 8 bits.
5968 ENUM
5969   BFD_RELOC_16C_NUM08
5970 ENUMX
5971   BFD_RELOC_16C_NUM08_C
5972 ENUMX
5973   BFD_RELOC_16C_NUM16
5974 ENUMX
5975   BFD_RELOC_16C_NUM16_C
5976 ENUMX
5977   BFD_RELOC_16C_NUM32
5978 ENUMX
5979   BFD_RELOC_16C_NUM32_C
5980 ENUMX
5981   BFD_RELOC_16C_DISP04
5982 ENUMX
5983   BFD_RELOC_16C_DISP04_C
5984 ENUMX
5985   BFD_RELOC_16C_DISP08
5986 ENUMX
5987   BFD_RELOC_16C_DISP08_C
5988 ENUMX
5989   BFD_RELOC_16C_DISP16
5990 ENUMX
5991   BFD_RELOC_16C_DISP16_C
5992 ENUMX
5993   BFD_RELOC_16C_DISP24
5994 ENUMX
5995   BFD_RELOC_16C_DISP24_C
5996 ENUMX
5997   BFD_RELOC_16C_DISP24a
5998 ENUMX
5999   BFD_RELOC_16C_DISP24a_C
6000 ENUMX
6001   BFD_RELOC_16C_REG04
6002 ENUMX
6003   BFD_RELOC_16C_REG04_C
6004 ENUMX
6005   BFD_RELOC_16C_REG04a
6006 ENUMX
6007   BFD_RELOC_16C_REG04a_C
6008 ENUMX
6009   BFD_RELOC_16C_REG14
6010 ENUMX
6011   BFD_RELOC_16C_REG14_C
6012 ENUMX
6013   BFD_RELOC_16C_REG16
6014 ENUMX
6015   BFD_RELOC_16C_REG16_C
6016 ENUMX
6017   BFD_RELOC_16C_REG20
6018 ENUMX
6019   BFD_RELOC_16C_REG20_C
6020 ENUMX
6021   BFD_RELOC_16C_ABS20
6022 ENUMX
6023   BFD_RELOC_16C_ABS20_C
6024 ENUMX
6025   BFD_RELOC_16C_ABS24
6026 ENUMX
6027   BFD_RELOC_16C_ABS24_C
6028 ENUMX
6029   BFD_RELOC_16C_IMM04
6030 ENUMX
6031   BFD_RELOC_16C_IMM04_C
6032 ENUMX
6033   BFD_RELOC_16C_IMM16
6034 ENUMX
6035   BFD_RELOC_16C_IMM16_C
6036 ENUMX
6037   BFD_RELOC_16C_IMM20
6038 ENUMX
6039   BFD_RELOC_16C_IMM20_C
6040 ENUMX
6041   BFD_RELOC_16C_IMM24
6042 ENUMX
6043   BFD_RELOC_16C_IMM24_C
6044 ENUMX
6045   BFD_RELOC_16C_IMM32
6046 ENUMX
6047   BFD_RELOC_16C_IMM32_C
6048 ENUMDOC
6049   NS CR16C Relocations.
6050
6051 ENUM
6052   BFD_RELOC_CR16_NUM8
6053 ENUMX
6054   BFD_RELOC_CR16_NUM16
6055 ENUMX
6056   BFD_RELOC_CR16_NUM32
6057 ENUMX
6058   BFD_RELOC_CR16_NUM32a
6059 ENUMX
6060   BFD_RELOC_CR16_REGREL0
6061 ENUMX
6062   BFD_RELOC_CR16_REGREL4
6063 ENUMX
6064   BFD_RELOC_CR16_REGREL4a
6065 ENUMX
6066   BFD_RELOC_CR16_REGREL14
6067 ENUMX
6068   BFD_RELOC_CR16_REGREL14a
6069 ENUMX
6070   BFD_RELOC_CR16_REGREL16
6071 ENUMX
6072   BFD_RELOC_CR16_REGREL20
6073 ENUMX
6074   BFD_RELOC_CR16_REGREL20a
6075 ENUMX
6076   BFD_RELOC_CR16_ABS20
6077 ENUMX
6078   BFD_RELOC_CR16_ABS24
6079 ENUMX
6080   BFD_RELOC_CR16_IMM4
6081 ENUMX
6082   BFD_RELOC_CR16_IMM8
6083 ENUMX
6084   BFD_RELOC_CR16_IMM16
6085 ENUMX
6086   BFD_RELOC_CR16_IMM20
6087 ENUMX
6088   BFD_RELOC_CR16_IMM24
6089 ENUMX
6090   BFD_RELOC_CR16_IMM32
6091 ENUMX
6092   BFD_RELOC_CR16_IMM32a
6093 ENUMX
6094   BFD_RELOC_CR16_DISP4
6095 ENUMX
6096   BFD_RELOC_CR16_DISP8
6097 ENUMX
6098   BFD_RELOC_CR16_DISP16
6099 ENUMX
6100   BFD_RELOC_CR16_DISP20
6101 ENUMX
6102   BFD_RELOC_CR16_DISP24
6103 ENUMX
6104   BFD_RELOC_CR16_DISP24a
6105 ENUMX
6106   BFD_RELOC_CR16_SWITCH8
6107 ENUMX
6108   BFD_RELOC_CR16_SWITCH16
6109 ENUMX
6110   BFD_RELOC_CR16_SWITCH32
6111 ENUMX
6112   BFD_RELOC_CR16_GOT_REGREL20
6113 ENUMX
6114   BFD_RELOC_CR16_GOTC_REGREL20
6115 ENUMX
6116   BFD_RELOC_CR16_GLOB_DAT
6117 ENUMDOC
6118   NS CR16 Relocations.
6119
6120 ENUM
6121   BFD_RELOC_CRX_REL4
6122 ENUMX
6123   BFD_RELOC_CRX_REL8
6124 ENUMX
6125   BFD_RELOC_CRX_REL8_CMP
6126 ENUMX
6127   BFD_RELOC_CRX_REL16
6128 ENUMX
6129   BFD_RELOC_CRX_REL24
6130 ENUMX
6131   BFD_RELOC_CRX_REL32
6132 ENUMX
6133   BFD_RELOC_CRX_REGREL12
6134 ENUMX
6135   BFD_RELOC_CRX_REGREL22
6136 ENUMX
6137   BFD_RELOC_CRX_REGREL28
6138 ENUMX
6139   BFD_RELOC_CRX_REGREL32
6140 ENUMX
6141   BFD_RELOC_CRX_ABS16
6142 ENUMX
6143   BFD_RELOC_CRX_ABS32
6144 ENUMX
6145   BFD_RELOC_CRX_NUM8
6146 ENUMX
6147   BFD_RELOC_CRX_NUM16
6148 ENUMX
6149   BFD_RELOC_CRX_NUM32
6150 ENUMX
6151   BFD_RELOC_CRX_IMM16
6152 ENUMX
6153   BFD_RELOC_CRX_IMM32
6154 ENUMX
6155   BFD_RELOC_CRX_SWITCH8
6156 ENUMX
6157   BFD_RELOC_CRX_SWITCH16
6158 ENUMX
6159   BFD_RELOC_CRX_SWITCH32
6160 ENUMDOC
6161   NS CRX Relocations.
6162
6163 ENUM
6164   BFD_RELOC_CRIS_BDISP8
6165 ENUMX
6166   BFD_RELOC_CRIS_UNSIGNED_5
6167 ENUMX
6168   BFD_RELOC_CRIS_SIGNED_6
6169 ENUMX
6170   BFD_RELOC_CRIS_UNSIGNED_6
6171 ENUMX
6172   BFD_RELOC_CRIS_SIGNED_8
6173 ENUMX
6174   BFD_RELOC_CRIS_UNSIGNED_8
6175 ENUMX
6176   BFD_RELOC_CRIS_SIGNED_16
6177 ENUMX
6178   BFD_RELOC_CRIS_UNSIGNED_16
6179 ENUMX
6180   BFD_RELOC_CRIS_LAPCQ_OFFSET
6181 ENUMX
6182   BFD_RELOC_CRIS_UNSIGNED_4
6183 ENUMDOC
6184   These relocs are only used within the CRIS assembler.  They are not
6185   (at present) written to any object files.
6186 ENUM
6187   BFD_RELOC_CRIS_COPY
6188 ENUMX
6189   BFD_RELOC_CRIS_GLOB_DAT
6190 ENUMX
6191   BFD_RELOC_CRIS_JUMP_SLOT
6192 ENUMX
6193   BFD_RELOC_CRIS_RELATIVE
6194 ENUMDOC
6195   Relocs used in ELF shared libraries for CRIS.
6196 ENUM
6197   BFD_RELOC_CRIS_32_GOT
6198 ENUMDOC
6199   32-bit offset to symbol-entry within GOT.
6200 ENUM
6201   BFD_RELOC_CRIS_16_GOT
6202 ENUMDOC
6203   16-bit offset to symbol-entry within GOT.
6204 ENUM
6205   BFD_RELOC_CRIS_32_GOTPLT
6206 ENUMDOC
6207   32-bit offset to symbol-entry within GOT, with PLT handling.
6208 ENUM
6209   BFD_RELOC_CRIS_16_GOTPLT
6210 ENUMDOC
6211   16-bit offset to symbol-entry within GOT, with PLT handling.
6212 ENUM
6213   BFD_RELOC_CRIS_32_GOTREL
6214 ENUMDOC
6215   32-bit offset to symbol, relative to GOT.
6216 ENUM
6217   BFD_RELOC_CRIS_32_PLT_GOTREL
6218 ENUMDOC
6219   32-bit offset to symbol with PLT entry, relative to GOT.
6220 ENUM
6221   BFD_RELOC_CRIS_32_PLT_PCREL
6222 ENUMDOC
6223   32-bit offset to symbol with PLT entry, relative to this relocation.
6224
6225 ENUM
6226   BFD_RELOC_CRIS_32_GOT_GD
6227 ENUMX
6228   BFD_RELOC_CRIS_16_GOT_GD
6229 ENUMX
6230   BFD_RELOC_CRIS_32_GD
6231 ENUMX
6232   BFD_RELOC_CRIS_DTP
6233 ENUMX
6234   BFD_RELOC_CRIS_32_DTPREL
6235 ENUMX
6236   BFD_RELOC_CRIS_16_DTPREL
6237 ENUMX
6238   BFD_RELOC_CRIS_32_GOT_TPREL
6239 ENUMX
6240   BFD_RELOC_CRIS_16_GOT_TPREL
6241 ENUMX
6242   BFD_RELOC_CRIS_32_TPREL
6243 ENUMX
6244   BFD_RELOC_CRIS_16_TPREL
6245 ENUMX
6246   BFD_RELOC_CRIS_DTPMOD
6247 ENUMX
6248   BFD_RELOC_CRIS_32_IE
6249 ENUMDOC
6250   Relocs used in TLS code for CRIS.
6251
6252 ENUM
6253   BFD_RELOC_OR1K_REL_26
6254 ENUMX
6255   BFD_RELOC_OR1K_GOTPC_HI16
6256 ENUMX
6257   BFD_RELOC_OR1K_GOTPC_LO16
6258 ENUMX
6259   BFD_RELOC_OR1K_GOT16
6260 ENUMX
6261   BFD_RELOC_OR1K_PLT26
6262 ENUMX
6263   BFD_RELOC_OR1K_GOTOFF_HI16
6264 ENUMX
6265   BFD_RELOC_OR1K_GOTOFF_LO16
6266 ENUMX
6267   BFD_RELOC_OR1K_COPY
6268 ENUMX
6269   BFD_RELOC_OR1K_GLOB_DAT
6270 ENUMX
6271   BFD_RELOC_OR1K_JMP_SLOT
6272 ENUMX
6273   BFD_RELOC_OR1K_RELATIVE
6274 ENUMX
6275   BFD_RELOC_OR1K_TLS_GD_HI16
6276 ENUMX
6277   BFD_RELOC_OR1K_TLS_GD_LO16
6278 ENUMX
6279   BFD_RELOC_OR1K_TLS_LDM_HI16
6280 ENUMX
6281   BFD_RELOC_OR1K_TLS_LDM_LO16
6282 ENUMX
6283   BFD_RELOC_OR1K_TLS_LDO_HI16
6284 ENUMX
6285   BFD_RELOC_OR1K_TLS_LDO_LO16
6286 ENUMX
6287   BFD_RELOC_OR1K_TLS_IE_HI16
6288 ENUMX
6289   BFD_RELOC_OR1K_TLS_IE_LO16
6290 ENUMX
6291   BFD_RELOC_OR1K_TLS_LE_HI16
6292 ENUMX
6293   BFD_RELOC_OR1K_TLS_LE_LO16
6294 ENUMX
6295   BFD_RELOC_OR1K_TLS_TPOFF
6296 ENUMX
6297   BFD_RELOC_OR1K_TLS_DTPOFF
6298 ENUMX
6299   BFD_RELOC_OR1K_TLS_DTPMOD
6300 ENUMDOC
6301   OpenRISC 1000 Relocations.
6302
6303 ENUM
6304   BFD_RELOC_H8_DIR16A8
6305 ENUMX
6306   BFD_RELOC_H8_DIR16R8
6307 ENUMX
6308   BFD_RELOC_H8_DIR24A8
6309 ENUMX
6310   BFD_RELOC_H8_DIR24R8
6311 ENUMX
6312   BFD_RELOC_H8_DIR32A16
6313 ENUMX
6314   BFD_RELOC_H8_DISP32A16
6315 ENUMDOC
6316   H8 elf Relocations.
6317
6318 ENUM
6319   BFD_RELOC_XSTORMY16_REL_12
6320 ENUMX
6321   BFD_RELOC_XSTORMY16_12
6322 ENUMX
6323   BFD_RELOC_XSTORMY16_24
6324 ENUMX
6325   BFD_RELOC_XSTORMY16_FPTR16
6326 ENUMDOC
6327   Sony Xstormy16 Relocations.
6328
6329 ENUM
6330   BFD_RELOC_RELC
6331 ENUMDOC
6332   Self-describing complex relocations.
6333 COMMENT
6334
6335 ENUM
6336   BFD_RELOC_XC16X_PAG
6337 ENUMX
6338   BFD_RELOC_XC16X_POF
6339 ENUMX
6340   BFD_RELOC_XC16X_SEG
6341 ENUMX
6342   BFD_RELOC_XC16X_SOF
6343 ENUMDOC
6344   Infineon Relocations.
6345
6346 ENUM
6347   BFD_RELOC_VAX_GLOB_DAT
6348 ENUMX
6349   BFD_RELOC_VAX_JMP_SLOT
6350 ENUMX
6351   BFD_RELOC_VAX_RELATIVE
6352 ENUMDOC
6353   Relocations used by VAX ELF.
6354
6355 ENUM
6356   BFD_RELOC_MT_PC16
6357 ENUMDOC
6358   Morpho MT - 16 bit immediate relocation.
6359 ENUM
6360   BFD_RELOC_MT_HI16
6361 ENUMDOC
6362   Morpho MT - Hi 16 bits of an address.
6363 ENUM
6364   BFD_RELOC_MT_LO16
6365 ENUMDOC
6366   Morpho MT - Low 16 bits of an address.
6367 ENUM
6368   BFD_RELOC_MT_GNU_VTINHERIT
6369 ENUMDOC
6370   Morpho MT - Used to tell the linker which vtable entries are used.
6371 ENUM
6372   BFD_RELOC_MT_GNU_VTENTRY
6373 ENUMDOC
6374   Morpho MT - Used to tell the linker which vtable entries are used.
6375 ENUM
6376   BFD_RELOC_MT_PCINSN8
6377 ENUMDOC
6378   Morpho MT - 8 bit immediate relocation.
6379
6380 ENUM
6381   BFD_RELOC_MSP430_10_PCREL
6382 ENUMX
6383   BFD_RELOC_MSP430_16_PCREL
6384 ENUMX
6385   BFD_RELOC_MSP430_16
6386 ENUMX
6387   BFD_RELOC_MSP430_16_PCREL_BYTE
6388 ENUMX
6389   BFD_RELOC_MSP430_16_BYTE
6390 ENUMX
6391   BFD_RELOC_MSP430_2X_PCREL
6392 ENUMX
6393   BFD_RELOC_MSP430_RL_PCREL
6394 ENUMX
6395   BFD_RELOC_MSP430_ABS8
6396 ENUMX
6397   BFD_RELOC_MSP430X_PCR20_EXT_SRC
6398 ENUMX
6399   BFD_RELOC_MSP430X_PCR20_EXT_DST
6400 ENUMX
6401   BFD_RELOC_MSP430X_PCR20_EXT_ODST
6402 ENUMX
6403   BFD_RELOC_MSP430X_ABS20_EXT_SRC
6404 ENUMX
6405   BFD_RELOC_MSP430X_ABS20_EXT_DST
6406 ENUMX
6407   BFD_RELOC_MSP430X_ABS20_EXT_ODST
6408 ENUMX
6409   BFD_RELOC_MSP430X_ABS20_ADR_SRC
6410 ENUMX
6411   BFD_RELOC_MSP430X_ABS20_ADR_DST
6412 ENUMX
6413   BFD_RELOC_MSP430X_PCR16
6414 ENUMX
6415   BFD_RELOC_MSP430X_PCR20_CALL
6416 ENUMX
6417   BFD_RELOC_MSP430X_ABS16
6418 ENUMX
6419   BFD_RELOC_MSP430_ABS_HI16
6420 ENUMX
6421   BFD_RELOC_MSP430_PREL31
6422 ENUMX
6423   BFD_RELOC_MSP430_SYM_DIFF
6424 ENUMDOC
6425   msp430 specific relocation codes
6426
6427 ENUM
6428   BFD_RELOC_NIOS2_S16
6429 ENUMX
6430   BFD_RELOC_NIOS2_U16
6431 ENUMX
6432   BFD_RELOC_NIOS2_CALL26
6433 ENUMX
6434   BFD_RELOC_NIOS2_IMM5
6435 ENUMX
6436   BFD_RELOC_NIOS2_CACHE_OPX
6437 ENUMX
6438   BFD_RELOC_NIOS2_IMM6
6439 ENUMX
6440   BFD_RELOC_NIOS2_IMM8
6441 ENUMX
6442   BFD_RELOC_NIOS2_HI16
6443 ENUMX
6444   BFD_RELOC_NIOS2_LO16
6445 ENUMX
6446   BFD_RELOC_NIOS2_HIADJ16
6447 ENUMX
6448   BFD_RELOC_NIOS2_GPREL
6449 ENUMX
6450   BFD_RELOC_NIOS2_UJMP
6451 ENUMX
6452   BFD_RELOC_NIOS2_CJMP
6453 ENUMX
6454   BFD_RELOC_NIOS2_CALLR
6455 ENUMX
6456   BFD_RELOC_NIOS2_ALIGN
6457 ENUMX
6458   BFD_RELOC_NIOS2_GOT16
6459 ENUMX
6460   BFD_RELOC_NIOS2_CALL16
6461 ENUMX
6462   BFD_RELOC_NIOS2_GOTOFF_LO
6463 ENUMX
6464   BFD_RELOC_NIOS2_GOTOFF_HA
6465 ENUMX
6466   BFD_RELOC_NIOS2_PCREL_LO
6467 ENUMX
6468   BFD_RELOC_NIOS2_PCREL_HA
6469 ENUMX
6470   BFD_RELOC_NIOS2_TLS_GD16
6471 ENUMX
6472   BFD_RELOC_NIOS2_TLS_LDM16
6473 ENUMX
6474   BFD_RELOC_NIOS2_TLS_LDO16
6475 ENUMX
6476   BFD_RELOC_NIOS2_TLS_IE16
6477 ENUMX
6478   BFD_RELOC_NIOS2_TLS_LE16
6479 ENUMX
6480   BFD_RELOC_NIOS2_TLS_DTPMOD
6481 ENUMX
6482   BFD_RELOC_NIOS2_TLS_DTPREL
6483 ENUMX
6484   BFD_RELOC_NIOS2_TLS_TPREL
6485 ENUMX
6486   BFD_RELOC_NIOS2_COPY
6487 ENUMX
6488   BFD_RELOC_NIOS2_GLOB_DAT
6489 ENUMX
6490   BFD_RELOC_NIOS2_JUMP_SLOT
6491 ENUMX
6492   BFD_RELOC_NIOS2_RELATIVE
6493 ENUMX
6494   BFD_RELOC_NIOS2_GOTOFF
6495 ENUMX
6496   BFD_RELOC_NIOS2_CALL26_NOAT
6497 ENUMX
6498   BFD_RELOC_NIOS2_GOT_LO
6499 ENUMX
6500   BFD_RELOC_NIOS2_GOT_HA
6501 ENUMX
6502   BFD_RELOC_NIOS2_CALL_LO
6503 ENUMX
6504   BFD_RELOC_NIOS2_CALL_HA
6505 ENUMX
6506   BFD_RELOC_NIOS2_R2_S12
6507 ENUMX
6508   BFD_RELOC_NIOS2_R2_I10_1_PCREL
6509 ENUMX
6510   BFD_RELOC_NIOS2_R2_T1I7_1_PCREL
6511 ENUMX
6512   BFD_RELOC_NIOS2_R2_T1I7_2
6513 ENUMX
6514   BFD_RELOC_NIOS2_R2_T2I4
6515 ENUMX
6516   BFD_RELOC_NIOS2_R2_T2I4_1
6517 ENUMX
6518   BFD_RELOC_NIOS2_R2_T2I4_2
6519 ENUMX
6520   BFD_RELOC_NIOS2_R2_X1I7_2
6521 ENUMX
6522   BFD_RELOC_NIOS2_R2_X2L5
6523 ENUMX
6524   BFD_RELOC_NIOS2_R2_F1I5_2
6525 ENUMX
6526   BFD_RELOC_NIOS2_R2_L5I4X1
6527 ENUMX
6528   BFD_RELOC_NIOS2_R2_T1X1I6
6529 ENUMX
6530   BFD_RELOC_NIOS2_R2_T1X1I6_2
6531 ENUMDOC
6532   Relocations used by the Altera Nios II core.
6533
6534 ENUM
6535   BFD_RELOC_PRU_U16
6536 ENUMDOC
6537   PRU LDI 16-bit unsigned data-memory relocation.
6538 ENUM
6539   BFD_RELOC_PRU_U16_PMEMIMM
6540 ENUMDOC
6541   PRU LDI 16-bit unsigned instruction-memory relocation.
6542 ENUM
6543   BFD_RELOC_PRU_LDI32
6544 ENUMDOC
6545   PRU relocation for two consecutive LDI load instructions that load a
6546   32 bit value into a register. If the higher bits are all zero, then
6547   the second instruction may be relaxed.
6548 ENUM
6549   BFD_RELOC_PRU_S10_PCREL
6550 ENUMDOC
6551   PRU QBBx 10-bit signed PC-relative relocation.
6552 ENUM
6553   BFD_RELOC_PRU_U8_PCREL
6554 ENUMDOC
6555   PRU 8-bit unsigned relocation used for the LOOP instruction.
6556 ENUM
6557   BFD_RELOC_PRU_32_PMEM
6558 ENUMX
6559   BFD_RELOC_PRU_16_PMEM
6560 ENUMDOC
6561   PRU Program Memory relocations.  Used to convert from byte addressing to
6562   32-bit word addressing.
6563 ENUM
6564   BFD_RELOC_PRU_GNU_DIFF8
6565 ENUMX
6566   BFD_RELOC_PRU_GNU_DIFF16
6567 ENUMX
6568   BFD_RELOC_PRU_GNU_DIFF32
6569 ENUMX
6570   BFD_RELOC_PRU_GNU_DIFF16_PMEM
6571 ENUMX
6572   BFD_RELOC_PRU_GNU_DIFF32_PMEM
6573 ENUMDOC
6574   PRU relocations to mark the difference of two local symbols.
6575   These are only needed to support linker relaxation and can be ignored
6576   when not relaxing.  The field is set to the value of the difference
6577   assuming no relaxation.  The relocation encodes the position of the
6578   second symbol so the linker can determine whether to adjust the field
6579   value. The PMEM variants encode the word difference, instead of byte
6580   difference between symbols.
6581
6582 ENUM
6583   BFD_RELOC_IQ2000_OFFSET_16
6584 ENUMX
6585   BFD_RELOC_IQ2000_OFFSET_21
6586 ENUMX
6587   BFD_RELOC_IQ2000_UHI16
6588 ENUMDOC
6589   IQ2000 Relocations.
6590
6591 ENUM
6592   BFD_RELOC_XTENSA_RTLD
6593 ENUMDOC
6594   Special Xtensa relocation used only by PLT entries in ELF shared
6595   objects to indicate that the runtime linker should set the value
6596   to one of its own internal functions or data structures.
6597 ENUM
6598   BFD_RELOC_XTENSA_GLOB_DAT
6599 ENUMX
6600   BFD_RELOC_XTENSA_JMP_SLOT
6601 ENUMX
6602   BFD_RELOC_XTENSA_RELATIVE
6603 ENUMDOC
6604   Xtensa relocations for ELF shared objects.
6605 ENUM
6606   BFD_RELOC_XTENSA_PLT
6607 ENUMDOC
6608   Xtensa relocation used in ELF object files for symbols that may require
6609   PLT entries.  Otherwise, this is just a generic 32-bit relocation.
6610 ENUM
6611   BFD_RELOC_XTENSA_DIFF8
6612 ENUMX
6613   BFD_RELOC_XTENSA_DIFF16
6614 ENUMX
6615   BFD_RELOC_XTENSA_DIFF32
6616 ENUMDOC
6617   Xtensa relocations to mark the difference of two local symbols.
6618   These are only needed to support linker relaxation and can be ignored
6619   when not relaxing.  The field is set to the value of the difference
6620   assuming no relaxation.  The relocation encodes the position of the
6621   first symbol so the linker can determine whether to adjust the field
6622   value.
6623 ENUM
6624   BFD_RELOC_XTENSA_SLOT0_OP
6625 ENUMX
6626   BFD_RELOC_XTENSA_SLOT1_OP
6627 ENUMX
6628   BFD_RELOC_XTENSA_SLOT2_OP
6629 ENUMX
6630   BFD_RELOC_XTENSA_SLOT3_OP
6631 ENUMX
6632   BFD_RELOC_XTENSA_SLOT4_OP
6633 ENUMX
6634   BFD_RELOC_XTENSA_SLOT5_OP
6635 ENUMX
6636   BFD_RELOC_XTENSA_SLOT6_OP
6637 ENUMX
6638   BFD_RELOC_XTENSA_SLOT7_OP
6639 ENUMX
6640   BFD_RELOC_XTENSA_SLOT8_OP
6641 ENUMX
6642   BFD_RELOC_XTENSA_SLOT9_OP
6643 ENUMX
6644   BFD_RELOC_XTENSA_SLOT10_OP
6645 ENUMX
6646   BFD_RELOC_XTENSA_SLOT11_OP
6647 ENUMX
6648   BFD_RELOC_XTENSA_SLOT12_OP
6649 ENUMX
6650   BFD_RELOC_XTENSA_SLOT13_OP
6651 ENUMX
6652   BFD_RELOC_XTENSA_SLOT14_OP
6653 ENUMDOC
6654   Generic Xtensa relocations for instruction operands.  Only the slot
6655   number is encoded in the relocation.  The relocation applies to the
6656   last PC-relative immediate operand, or if there are no PC-relative
6657   immediates, to the last immediate operand.
6658 ENUM
6659   BFD_RELOC_XTENSA_SLOT0_ALT
6660 ENUMX
6661   BFD_RELOC_XTENSA_SLOT1_ALT
6662 ENUMX
6663   BFD_RELOC_XTENSA_SLOT2_ALT
6664 ENUMX
6665   BFD_RELOC_XTENSA_SLOT3_ALT
6666 ENUMX
6667   BFD_RELOC_XTENSA_SLOT4_ALT
6668 ENUMX
6669   BFD_RELOC_XTENSA_SLOT5_ALT
6670 ENUMX
6671   BFD_RELOC_XTENSA_SLOT6_ALT
6672 ENUMX
6673   BFD_RELOC_XTENSA_SLOT7_ALT
6674 ENUMX
6675   BFD_RELOC_XTENSA_SLOT8_ALT
6676 ENUMX
6677   BFD_RELOC_XTENSA_SLOT9_ALT
6678 ENUMX
6679   BFD_RELOC_XTENSA_SLOT10_ALT
6680 ENUMX
6681   BFD_RELOC_XTENSA_SLOT11_ALT
6682 ENUMX
6683   BFD_RELOC_XTENSA_SLOT12_ALT
6684 ENUMX
6685   BFD_RELOC_XTENSA_SLOT13_ALT
6686 ENUMX
6687   BFD_RELOC_XTENSA_SLOT14_ALT
6688 ENUMDOC
6689   Alternate Xtensa relocations.  Only the slot is encoded in the
6690   relocation.  The meaning of these relocations is opcode-specific.
6691 ENUM
6692   BFD_RELOC_XTENSA_OP0
6693 ENUMX
6694   BFD_RELOC_XTENSA_OP1
6695 ENUMX
6696   BFD_RELOC_XTENSA_OP2
6697 ENUMDOC
6698   Xtensa relocations for backward compatibility.  These have all been
6699   replaced by BFD_RELOC_XTENSA_SLOT0_OP.
6700 ENUM
6701   BFD_RELOC_XTENSA_ASM_EXPAND
6702 ENUMDOC
6703   Xtensa relocation to mark that the assembler expanded the
6704   instructions from an original target.  The expansion size is
6705   encoded in the reloc size.
6706 ENUM
6707   BFD_RELOC_XTENSA_ASM_SIMPLIFY
6708 ENUMDOC
6709   Xtensa relocation to mark that the linker should simplify
6710   assembler-expanded instructions.  This is commonly used
6711   internally by the linker after analysis of a
6712   BFD_RELOC_XTENSA_ASM_EXPAND.
6713 ENUM
6714   BFD_RELOC_XTENSA_TLSDESC_FN
6715 ENUMX
6716   BFD_RELOC_XTENSA_TLSDESC_ARG
6717 ENUMX
6718   BFD_RELOC_XTENSA_TLS_DTPOFF
6719 ENUMX
6720   BFD_RELOC_XTENSA_TLS_TPOFF
6721 ENUMX
6722   BFD_RELOC_XTENSA_TLS_FUNC
6723 ENUMX
6724   BFD_RELOC_XTENSA_TLS_ARG
6725 ENUMX
6726   BFD_RELOC_XTENSA_TLS_CALL
6727 ENUMDOC
6728   Xtensa TLS relocations.
6729
6730 ENUM
6731   BFD_RELOC_Z80_DISP8
6732 ENUMDOC
6733   8 bit signed offset in (ix+d) or (iy+d).
6734
6735 ENUM
6736   BFD_RELOC_Z8K_DISP7
6737 ENUMDOC
6738   DJNZ offset.
6739 ENUM
6740   BFD_RELOC_Z8K_CALLR
6741 ENUMDOC
6742   CALR offset.
6743 ENUM
6744   BFD_RELOC_Z8K_IMM4L
6745 ENUMDOC
6746   4 bit value.
6747
6748 ENUM
6749    BFD_RELOC_LM32_CALL
6750 ENUMX
6751    BFD_RELOC_LM32_BRANCH
6752 ENUMX
6753    BFD_RELOC_LM32_16_GOT
6754 ENUMX
6755    BFD_RELOC_LM32_GOTOFF_HI16
6756 ENUMX
6757    BFD_RELOC_LM32_GOTOFF_LO16
6758 ENUMX
6759    BFD_RELOC_LM32_COPY
6760 ENUMX
6761    BFD_RELOC_LM32_GLOB_DAT
6762 ENUMX
6763    BFD_RELOC_LM32_JMP_SLOT
6764 ENUMX
6765    BFD_RELOC_LM32_RELATIVE
6766 ENUMDOC
6767  Lattice Mico32 relocations.
6768
6769 ENUM
6770   BFD_RELOC_MACH_O_SECTDIFF
6771 ENUMDOC
6772   Difference between two section addreses.  Must be followed by a
6773   BFD_RELOC_MACH_O_PAIR.
6774 ENUM
6775   BFD_RELOC_MACH_O_LOCAL_SECTDIFF
6776 ENUMDOC
6777   Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.
6778 ENUM
6779   BFD_RELOC_MACH_O_PAIR
6780 ENUMDOC
6781   Pair of relocation.  Contains the first symbol.
6782 ENUM
6783   BFD_RELOC_MACH_O_SUBTRACTOR32
6784 ENUMDOC
6785   Symbol will be substracted.  Must be followed by a BFD_RELOC_32.
6786 ENUM
6787   BFD_RELOC_MACH_O_SUBTRACTOR64
6788 ENUMDOC
6789   Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
6790
6791 ENUM
6792   BFD_RELOC_MACH_O_X86_64_BRANCH32
6793 ENUMX
6794   BFD_RELOC_MACH_O_X86_64_BRANCH8
6795 ENUMDOC
6796   PCREL relocations.  They are marked as branch to create PLT entry if
6797   required.
6798 ENUM
6799   BFD_RELOC_MACH_O_X86_64_GOT
6800 ENUMDOC
6801   Used when referencing a GOT entry.
6802 ENUM
6803   BFD_RELOC_MACH_O_X86_64_GOT_LOAD
6804 ENUMDOC
6805   Used when loading a GOT entry with movq.  It is specially marked so that
6806   the linker could optimize the movq to a leaq if possible.
6807 ENUM
6808   BFD_RELOC_MACH_O_X86_64_PCREL32_1
6809 ENUMDOC
6810   Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
6811 ENUM
6812   BFD_RELOC_MACH_O_X86_64_PCREL32_2
6813 ENUMDOC
6814   Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.
6815 ENUM
6816   BFD_RELOC_MACH_O_X86_64_PCREL32_4
6817 ENUMDOC
6818   Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
6819 ENUM
6820   BFD_RELOC_MACH_O_X86_64_TLV
6821 ENUMDOC
6822   Used when referencing a TLV entry.
6823
6824
6825 ENUM
6826   BFD_RELOC_MACH_O_ARM64_ADDEND
6827 ENUMDOC
6828   Addend for PAGE or PAGEOFF.
6829 ENUM
6830   BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21
6831 ENUMDOC
6832   Relative offset to page of GOT slot.
6833 ENUM
6834   BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12
6835 ENUMDOC
6836   Relative offset within page of GOT slot.
6837 ENUM
6838   BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT
6839 ENUMDOC
6840   Address of a GOT entry.
6841
6842 ENUM
6843   BFD_RELOC_MICROBLAZE_32_LO
6844 ENUMDOC
6845   This is a 32 bit reloc for the microblaze that stores the
6846   low 16 bits of a value
6847 ENUM
6848   BFD_RELOC_MICROBLAZE_32_LO_PCREL
6849 ENUMDOC
6850   This is a 32 bit pc-relative reloc for the microblaze that
6851   stores the low 16 bits of a value
6852 ENUM
6853   BFD_RELOC_MICROBLAZE_32_ROSDA
6854 ENUMDOC
6855   This is a 32 bit reloc for the microblaze that stores a
6856   value relative to the read-only small data area anchor
6857 ENUM
6858   BFD_RELOC_MICROBLAZE_32_RWSDA
6859 ENUMDOC
6860   This is a 32 bit reloc for the microblaze that stores a
6861   value relative to the read-write small data area anchor
6862 ENUM
6863   BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
6864 ENUMDOC
6865   This is a 32 bit reloc for the microblaze to handle
6866   expressions of the form "Symbol Op Symbol"
6867 ENUM
6868   BFD_RELOC_MICROBLAZE_64_NONE
6869 ENUMDOC
6870   This is a 64 bit reloc that stores the 32 bit pc relative
6871   value in two words (with an imm instruction).  No relocation is
6872   done here - only used for relaxing
6873 ENUM
6874   BFD_RELOC_MICROBLAZE_64_GOTPC
6875 ENUMDOC
6876   This is a 64 bit reloc that stores the 32 bit pc relative
6877   value in two words (with an imm instruction).  The relocation is
6878   PC-relative GOT offset
6879 ENUM
6880   BFD_RELOC_MICROBLAZE_64_GOT
6881 ENUMDOC
6882   This is a 64 bit reloc that stores the 32 bit pc relative
6883   value in two words (with an imm instruction).  The relocation is
6884   GOT offset
6885 ENUM
6886   BFD_RELOC_MICROBLAZE_64_PLT
6887 ENUMDOC
6888   This is a 64 bit reloc that stores the 32 bit pc relative
6889   value in two words (with an imm instruction).  The relocation is
6890   PC-relative offset into PLT
6891 ENUM
6892   BFD_RELOC_MICROBLAZE_64_GOTOFF
6893 ENUMDOC
6894   This is a 64 bit reloc that stores the 32 bit GOT relative
6895   value in two words (with an imm instruction).  The relocation is
6896   relative offset from _GLOBAL_OFFSET_TABLE_
6897 ENUM
6898   BFD_RELOC_MICROBLAZE_32_GOTOFF
6899 ENUMDOC
6900   This is a 32 bit reloc that stores the 32 bit GOT relative
6901   value in a word.  The relocation is relative offset from
6902   _GLOBAL_OFFSET_TABLE_
6903 ENUM
6904   BFD_RELOC_MICROBLAZE_COPY
6905 ENUMDOC
6906   This is used to tell the dynamic linker to copy the value out of
6907   the dynamic object into the runtime process image.
6908 ENUM
6909   BFD_RELOC_MICROBLAZE_64_TLS
6910 ENUMDOC
6911   Unused Reloc
6912 ENUM
6913   BFD_RELOC_MICROBLAZE_64_TLSGD
6914 ENUMDOC
6915   This is a 64 bit reloc that stores the 32 bit GOT relative value
6916   of the GOT TLS GD info entry in two words (with an imm instruction). The
6917   relocation is GOT offset.
6918 ENUM
6919   BFD_RELOC_MICROBLAZE_64_TLSLD
6920 ENUMDOC
6921   This is a 64 bit reloc that stores the 32 bit GOT relative value
6922   of the GOT TLS LD info entry in two words (with an imm instruction). The
6923   relocation is GOT offset.
6924 ENUM
6925   BFD_RELOC_MICROBLAZE_32_TLSDTPMOD
6926 ENUMDOC
6927   This is a 32 bit reloc that stores the Module ID to GOT(n).
6928 ENUM
6929   BFD_RELOC_MICROBLAZE_32_TLSDTPREL
6930 ENUMDOC
6931   This is a 32 bit reloc that stores TLS offset to GOT(n+1).
6932 ENUM
6933   BFD_RELOC_MICROBLAZE_64_TLSDTPREL
6934 ENUMDOC
6935   This is a 32 bit reloc for storing TLS offset to two words (uses imm
6936   instruction)
6937 ENUM
6938   BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL
6939 ENUMDOC
6940   This is a 64 bit reloc that stores 32-bit thread pointer relative offset
6941   to two words (uses imm instruction).
6942 ENUM
6943   BFD_RELOC_MICROBLAZE_64_TLSTPREL
6944 ENUMDOC
6945   This is a 64 bit reloc that stores 32-bit thread pointer relative offset
6946   to two words (uses imm instruction).
6947 ENUM
6948   BFD_RELOC_MICROBLAZE_64_TEXTPCREL
6949 ENUMDOC
6950   This is a 64 bit reloc that stores the 32 bit pc relative
6951   value in two words (with an imm instruction).  The relocation is
6952   PC-relative offset from start of TEXT.
6953 ENUM
6954   BFD_RELOC_MICROBLAZE_64_TEXTREL
6955 ENUMDOC
6956   This is a 64 bit reloc that stores the 32 bit offset
6957   value in two words (with an imm instruction).  The relocation is
6958   relative offset from start of TEXT.
6959
6960 ENUM
6961   BFD_RELOC_AARCH64_RELOC_START
6962 ENUMDOC
6963   AArch64 pseudo relocation code to mark the start of the AArch64
6964   relocation enumerators.  N.B. the order of the enumerators is
6965   important as several tables in the AArch64 bfd backend are indexed
6966   by these enumerators; make sure they are all synced.
6967 ENUM
6968   BFD_RELOC_AARCH64_NULL
6969 ENUMDOC
6970   Deprecated AArch64 null relocation code.
6971 ENUM
6972   BFD_RELOC_AARCH64_NONE
6973 ENUMDOC
6974   AArch64 null relocation code.
6975 ENUM
6976   BFD_RELOC_AARCH64_64
6977 ENUMX
6978   BFD_RELOC_AARCH64_32
6979 ENUMX
6980   BFD_RELOC_AARCH64_16
6981 ENUMDOC
6982   Basic absolute relocations of N bits.  These are equivalent to
6983 BFD_RELOC_N and they were added to assist the indexing of the howto
6984 table.
6985 ENUM
6986   BFD_RELOC_AARCH64_64_PCREL
6987 ENUMX
6988   BFD_RELOC_AARCH64_32_PCREL
6989 ENUMX
6990   BFD_RELOC_AARCH64_16_PCREL
6991 ENUMDOC
6992   PC-relative relocations.  These are equivalent to BFD_RELOC_N_PCREL
6993 and they were added to assist the indexing of the howto table.
6994 ENUM
6995   BFD_RELOC_AARCH64_MOVW_G0
6996 ENUMDOC
6997   AArch64 MOV[NZK] instruction with most significant bits 0 to 15
6998   of an unsigned address/value.
6999 ENUM
7000   BFD_RELOC_AARCH64_MOVW_G0_NC
7001 ENUMDOC
7002   AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
7003   an address/value.  No overflow checking.
7004 ENUM
7005   BFD_RELOC_AARCH64_MOVW_G1
7006 ENUMDOC
7007   AArch64 MOV[NZK] instruction with most significant bits 16 to 31
7008   of an unsigned address/value.
7009 ENUM
7010   BFD_RELOC_AARCH64_MOVW_G1_NC
7011 ENUMDOC
7012   AArch64 MOV[NZK] instruction with less significant bits 16 to 31
7013   of an address/value.  No overflow checking.
7014 ENUM
7015   BFD_RELOC_AARCH64_MOVW_G2
7016 ENUMDOC
7017   AArch64 MOV[NZK] instruction with most significant bits 32 to 47
7018   of an unsigned address/value.
7019 ENUM
7020   BFD_RELOC_AARCH64_MOVW_G2_NC
7021 ENUMDOC
7022   AArch64 MOV[NZK] instruction with less significant bits 32 to 47
7023   of an address/value.  No overflow checking.
7024 ENUM
7025   BFD_RELOC_AARCH64_MOVW_G3
7026 ENUMDOC
7027   AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
7028   of a signed or unsigned address/value.
7029 ENUM
7030   BFD_RELOC_AARCH64_MOVW_G0_S
7031 ENUMDOC
7032   AArch64 MOV[NZ] instruction with most significant bits 0 to 15
7033   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
7034   value's sign.
7035 ENUM
7036   BFD_RELOC_AARCH64_MOVW_G1_S
7037 ENUMDOC
7038   AArch64 MOV[NZ] instruction with most significant bits 16 to 31
7039   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
7040   value's sign.
7041 ENUM
7042   BFD_RELOC_AARCH64_MOVW_G2_S
7043 ENUMDOC
7044   AArch64 MOV[NZ] instruction with most significant bits 32 to 47
7045   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
7046   value's sign.
7047 ENUM
7048   BFD_RELOC_AARCH64_MOVW_PREL_G0
7049 ENUMDOC
7050   AArch64 MOV[NZ] instruction with most significant bits 0 to 15
7051   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
7052   value's sign.
7053 ENUM
7054   BFD_RELOC_AARCH64_MOVW_PREL_G0_NC
7055 ENUMDOC
7056   AArch64 MOV[NZ] instruction with most significant bits 0 to 15
7057   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
7058   value's sign.
7059 ENUM
7060   BFD_RELOC_AARCH64_MOVW_PREL_G1
7061 ENUMDOC
7062   AArch64 MOVK instruction with most significant bits 16 to 31
7063   of a signed value.
7064 ENUM
7065   BFD_RELOC_AARCH64_MOVW_PREL_G1_NC
7066 ENUMDOC
7067   AArch64 MOVK instruction with most significant bits 16 to 31
7068   of a signed value.
7069 ENUM
7070   BFD_RELOC_AARCH64_MOVW_PREL_G2
7071 ENUMDOC
7072   AArch64 MOVK instruction with most significant bits 32 to 47
7073   of a signed value.
7074 ENUM
7075   BFD_RELOC_AARCH64_MOVW_PREL_G2_NC
7076 ENUMDOC
7077   AArch64 MOVK instruction with most significant bits 32 to 47
7078   of a signed value.
7079 ENUM
7080   BFD_RELOC_AARCH64_MOVW_PREL_G3
7081 ENUMDOC
7082   AArch64 MOVK instruction with most significant bits 47 to 63
7083   of a signed value.
7084 ENUM
7085   BFD_RELOC_AARCH64_LD_LO19_PCREL
7086 ENUMDOC
7087   AArch64 Load Literal instruction, holding a 19 bit pc-relative word
7088   offset.  The lowest two bits must be zero and are not stored in the
7089   instruction, giving a 21 bit signed byte offset.
7090 ENUM
7091   BFD_RELOC_AARCH64_ADR_LO21_PCREL
7092 ENUMDOC
7093   AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.
7094 ENUM
7095   BFD_RELOC_AARCH64_ADR_HI21_PCREL
7096 ENUMDOC
7097   AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
7098   offset, giving a 4KB aligned page base address.
7099 ENUM
7100   BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL
7101 ENUMDOC
7102   AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
7103   offset, giving a 4KB aligned page base address, but with no overflow
7104   checking.
7105 ENUM
7106   BFD_RELOC_AARCH64_ADD_LO12
7107 ENUMDOC
7108   AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
7109   Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7110 ENUM
7111   BFD_RELOC_AARCH64_LDST8_LO12
7112 ENUMDOC
7113   AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
7114   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7115 ENUM
7116   BFD_RELOC_AARCH64_TSTBR14
7117 ENUMDOC
7118   AArch64 14 bit pc-relative test bit and branch.
7119   The lowest two bits must be zero and are not stored in the instruction,
7120   giving a 16 bit signed byte offset.
7121 ENUM
7122   BFD_RELOC_AARCH64_BRANCH19
7123 ENUMDOC
7124   AArch64 19 bit pc-relative conditional branch and compare & branch.
7125   The lowest two bits must be zero and are not stored in the instruction,
7126   giving a 21 bit signed byte offset.
7127 ENUM
7128   BFD_RELOC_AARCH64_JUMP26
7129 ENUMDOC
7130   AArch64 26 bit pc-relative unconditional branch.
7131   The lowest two bits must be zero and are not stored in the instruction,
7132   giving a 28 bit signed byte offset.
7133 ENUM
7134   BFD_RELOC_AARCH64_CALL26
7135 ENUMDOC
7136   AArch64 26 bit pc-relative unconditional branch and link.
7137   The lowest two bits must be zero and are not stored in the instruction,
7138   giving a 28 bit signed byte offset.
7139 ENUM
7140   BFD_RELOC_AARCH64_LDST16_LO12
7141 ENUMDOC
7142   AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
7143   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7144 ENUM
7145   BFD_RELOC_AARCH64_LDST32_LO12
7146 ENUMDOC
7147   AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
7148   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7149 ENUM
7150   BFD_RELOC_AARCH64_LDST64_LO12
7151 ENUMDOC
7152   AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
7153   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7154 ENUM
7155   BFD_RELOC_AARCH64_LDST128_LO12
7156 ENUMDOC
7157   AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
7158   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7159 ENUM
7160   BFD_RELOC_AARCH64_GOT_LD_PREL19
7161 ENUMDOC
7162   AArch64 Load Literal instruction, holding a 19 bit PC relative word
7163   offset of the global offset table entry for a symbol.  The lowest two
7164   bits must be zero and are not stored in the instruction, giving a 21
7165   bit signed byte offset.  This relocation type requires signed overflow
7166   checking.
7167 ENUM
7168   BFD_RELOC_AARCH64_ADR_GOT_PAGE
7169 ENUMDOC
7170   Get to the page base of the global offset table entry for a symbol as
7171   part of an ADRP instruction using a 21 bit PC relative value.Used in
7172   conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
7173 ENUM
7174   BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
7175 ENUMDOC
7176   Unsigned 12 bit byte offset for 64 bit load/store from the page of
7177   the GOT entry for this symbol.  Used in conjunction with
7178   BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in LP64 ABI only.
7179 ENUM
7180   BFD_RELOC_AARCH64_LD32_GOT_LO12_NC
7181 ENUMDOC
7182   Unsigned 12 bit byte offset for 32 bit load/store from the page of
7183   the GOT entry for this symbol.  Used in conjunction with
7184   BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in ILP32 ABI only.
7185  ENUM
7186   BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC
7187 ENUMDOC
7188   Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry
7189   for this symbol.  Valid in LP64 ABI only.
7190 ENUM
7191   BFD_RELOC_AARCH64_MOVW_GOTOFF_G1
7192 ENUMDOC
7193   Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
7194   for this symbol.  Valid in LP64 ABI only.
7195 ENUM
7196   BFD_RELOC_AARCH64_LD64_GOTOFF_LO15
7197 ENUMDOC
7198   Unsigned 15 bit byte offset for 64 bit load/store from the page of
7199   the GOT entry for this symbol.  Valid in LP64 ABI only.
7200 ENUM
7201   BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14
7202 ENUMDOC
7203   Scaled 14 bit byte offset to the page base of the global offset table.
7204 ENUM
7205   BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
7206 ENUMDOC
7207   Scaled 15 bit byte offset to the page base of the global offset table.
7208 ENUM
7209   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
7210 ENUMDOC
7211   Get to the page base of the global offset table entry for a symbols
7212   tls_index structure as part of an adrp instruction using a 21 bit PC
7213   relative value.  Used in conjunction with
7214   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
7215 ENUM
7216   BFD_RELOC_AARCH64_TLSGD_ADR_PREL21
7217 ENUMDOC
7218   AArch64 TLS General Dynamic
7219 ENUM
7220   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
7221 ENUMDOC
7222   Unsigned 12 bit byte offset to global offset table entry for a symbols
7223   tls_index structure.  Used in conjunction with
7224   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
7225 ENUM
7226   BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC
7227 ENUMDOC
7228   AArch64 TLS General Dynamic relocation.
7229 ENUM
7230   BFD_RELOC_AARCH64_TLSGD_MOVW_G1
7231 ENUMDOC
7232   AArch64 TLS General Dynamic relocation.
7233 ENUM
7234   BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
7235 ENUMDOC
7236   AArch64 TLS INITIAL EXEC relocation.
7237 ENUM
7238   BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
7239 ENUMDOC
7240   AArch64 TLS INITIAL EXEC relocation.
7241 ENUM
7242   BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC
7243 ENUMDOC
7244   AArch64 TLS INITIAL EXEC relocation.
7245 ENUM
7246   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19
7247 ENUMDOC
7248   AArch64 TLS INITIAL EXEC relocation.
7249 ENUM
7250   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
7251 ENUMDOC
7252   AArch64 TLS INITIAL EXEC relocation.
7253 ENUM
7254   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1
7255 ENUMDOC
7256   AArch64 TLS INITIAL EXEC relocation.
7257 ENUM
7258   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12
7259 ENUMDOC
7260   bit[23:12] of byte offset to module TLS base address.
7261 ENUM
7262   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12
7263 ENUMDOC
7264   Unsigned 12 bit byte offset to module TLS base address.
7265 ENUM
7266   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
7267 ENUMDOC
7268   No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.
7269 ENUM
7270   BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC
7271 ENUMDOC
7272   Unsigned 12 bit byte offset to global offset table entry for a symbols
7273   tls_index structure.  Used in conjunction with
7274   BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.
7275 ENUM
7276   BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21
7277 ENUMDOC
7278   GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP
7279   instruction.
7280 ENUM
7281   BFD_RELOC_AARCH64_TLSLD_ADR_PREL21
7282 ENUMDOC
7283   GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction.
7284 ENUM
7285   BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12
7286 ENUMDOC
7287   bit[11:1] of byte offset to module TLS base address, encoded in ldst
7288   instructions.
7289 ENUM
7290   BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
7291 ENUMDOC
7292   Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check.
7293 ENUM
7294   BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12
7295 ENUMDOC
7296   bit[11:2] of byte offset to module TLS base address, encoded in ldst
7297   instructions.
7298 ENUM
7299   BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
7300 ENUMDOC
7301   Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check.
7302 ENUM
7303   BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12
7304 ENUMDOC
7305   bit[11:3] of byte offset to module TLS base address, encoded in ldst
7306   instructions.
7307 ENUM
7308   BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
7309 ENUMDOC
7310   Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check.
7311 ENUM
7312   BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12
7313 ENUMDOC
7314   bit[11:0] of byte offset to module TLS base address, encoded in ldst
7315   instructions.
7316 ENUM
7317   BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
7318 ENUMDOC
7319   Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check.
7320 ENUM
7321   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
7322 ENUMDOC
7323   bit[15:0] of byte offset to module TLS base address.
7324 ENUM
7325   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
7326 ENUMDOC
7327   No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
7328 ENUM
7329   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
7330 ENUMDOC
7331   bit[31:16] of byte offset to module TLS base address.
7332 ENUM
7333   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
7334 ENUMDOC
7335   No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
7336 ENUM
7337   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2
7338 ENUMDOC
7339   bit[47:32] of byte offset to module TLS base address.
7340 ENUM
7341   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
7342 ENUMDOC
7343   AArch64 TLS LOCAL EXEC relocation.
7344 ENUM
7345   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
7346 ENUMDOC
7347   AArch64 TLS LOCAL EXEC relocation.
7348 ENUM
7349   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
7350 ENUMDOC
7351   AArch64 TLS LOCAL EXEC relocation.
7352 ENUM
7353   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0
7354 ENUMDOC
7355   AArch64 TLS LOCAL EXEC relocation.
7356 ENUM
7357   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
7358 ENUMDOC
7359   AArch64 TLS LOCAL EXEC relocation.
7360 ENUM
7361   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
7362 ENUMDOC
7363   AArch64 TLS LOCAL EXEC relocation.
7364 ENUM
7365   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12
7366 ENUMDOC
7367   AArch64 TLS LOCAL EXEC relocation.
7368 ENUM
7369   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC
7370 ENUMDOC
7371   AArch64 TLS LOCAL EXEC relocation.
7372 ENUM
7373   BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12
7374 ENUMDOC
7375   bit[11:1] of byte offset to module TLS base address, encoded in ldst
7376   instructions.
7377 ENUM
7378   BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
7379 ENUMDOC
7380   Similar as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no overflow check.
7381 ENUM
7382   BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12
7383 ENUMDOC
7384   bit[11:2] of byte offset to module TLS base address, encoded in ldst
7385   instructions.
7386 ENUM
7387   BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
7388 ENUMDOC
7389   Similar as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no overflow check.
7390 ENUM
7391   BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12
7392 ENUMDOC
7393   bit[11:3] of byte offset to module TLS base address, encoded in ldst
7394   instructions.
7395 ENUM
7396   BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
7397 ENUMDOC
7398   Similar as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no overflow check.
7399 ENUM
7400   BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12
7401 ENUMDOC
7402   bit[11:0] of byte offset to module TLS base address, encoded in ldst
7403   instructions.
7404 ENUM
7405   BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
7406 ENUMDOC
7407   Similar as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow check.
7408 ENUM
7409   BFD_RELOC_AARCH64_TLSDESC_LD_PREL19
7410 ENUMDOC
7411   AArch64 TLS DESC relocation.
7412 ENUM
7413   BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
7414 ENUMDOC
7415   AArch64 TLS DESC relocation.
7416 ENUM
7417   BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21
7418 ENUMDOC
7419   AArch64 TLS DESC relocation.
7420 ENUM
7421   BFD_RELOC_AARCH64_TLSDESC_LD64_LO12
7422 ENUMDOC
7423   AArch64 TLS DESC relocation.
7424 ENUM
7425   BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
7426 ENUMDOC
7427   AArch64 TLS DESC relocation.
7428 ENUM
7429   BFD_RELOC_AARCH64_TLSDESC_ADD_LO12
7430 ENUMDOC
7431   AArch64 TLS DESC relocation.
7432 ENUM
7433   BFD_RELOC_AARCH64_TLSDESC_OFF_G1
7434 ENUMDOC
7435   AArch64 TLS DESC relocation.
7436 ENUM
7437   BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
7438 ENUMDOC
7439   AArch64 TLS DESC relocation.
7440 ENUM
7441   BFD_RELOC_AARCH64_TLSDESC_LDR
7442 ENUMDOC
7443   AArch64 TLS DESC relocation.
7444 ENUM
7445   BFD_RELOC_AARCH64_TLSDESC_ADD
7446 ENUMDOC
7447   AArch64 TLS DESC relocation.
7448 ENUM
7449   BFD_RELOC_AARCH64_TLSDESC_CALL
7450 ENUMDOC
7451   AArch64 TLS DESC relocation.
7452 ENUM
7453   BFD_RELOC_AARCH64_COPY
7454 ENUMDOC
7455   AArch64 TLS relocation.
7456 ENUM
7457   BFD_RELOC_AARCH64_GLOB_DAT
7458 ENUMDOC
7459   AArch64 TLS relocation.
7460 ENUM
7461   BFD_RELOC_AARCH64_JUMP_SLOT
7462 ENUMDOC
7463   AArch64 TLS relocation.
7464 ENUM
7465   BFD_RELOC_AARCH64_RELATIVE
7466 ENUMDOC
7467   AArch64 TLS relocation.
7468 ENUM
7469   BFD_RELOC_AARCH64_TLS_DTPMOD
7470 ENUMDOC
7471   AArch64 TLS relocation.
7472 ENUM
7473   BFD_RELOC_AARCH64_TLS_DTPREL
7474 ENUMDOC
7475   AArch64 TLS relocation.
7476 ENUM
7477   BFD_RELOC_AARCH64_TLS_TPREL
7478 ENUMDOC
7479   AArch64 TLS relocation.
7480 ENUM
7481   BFD_RELOC_AARCH64_TLSDESC
7482 ENUMDOC
7483   AArch64 TLS relocation.
7484 ENUM
7485   BFD_RELOC_AARCH64_IRELATIVE
7486 ENUMDOC
7487   AArch64 support for STT_GNU_IFUNC.
7488 ENUM
7489   BFD_RELOC_AARCH64_RELOC_END
7490 ENUMDOC
7491   AArch64 pseudo relocation code to mark the end of the AArch64
7492   relocation enumerators that have direct mapping to ELF reloc codes.
7493   There are a few more enumerators after this one; those are mainly
7494   used by the AArch64 assembler for the internal fixup or to select
7495   one of the above enumerators.
7496 ENUM
7497   BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP
7498 ENUMDOC
7499   AArch64 pseudo relocation code to be used internally by the AArch64
7500   assembler and not (currently) written to any object files.
7501 ENUM
7502   BFD_RELOC_AARCH64_LDST_LO12
7503 ENUMDOC
7504   AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
7505   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7506 ENUM
7507   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12
7508 ENUMDOC
7509   AArch64 pseudo relocation code for TLS local dynamic mode.  It's to be
7510   used internally by the AArch64 assembler and not (currently) written to
7511   any object files.
7512 ENUM
7513   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC
7514 ENUMDOC
7515   Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check.
7516 ENUM
7517   BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12
7518 ENUMDOC
7519   AArch64 pseudo relocation code for TLS local exec mode.  It's to be
7520   used internally by the AArch64 assembler and not (currently) written to
7521   any object files.
7522 ENUM
7523   BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC
7524 ENUMDOC
7525   Similar as BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow check.
7526 ENUM
7527   BFD_RELOC_AARCH64_LD_GOT_LO12_NC
7528 ENUMDOC
7529   AArch64 pseudo relocation code to be used internally by the AArch64
7530   assembler and not (currently) written to any object files.
7531 ENUM
7532   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC
7533 ENUMDOC
7534   AArch64 pseudo relocation code to be used internally by the AArch64
7535   assembler and not (currently) written to any object files.
7536 ENUM
7537   BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC
7538 ENUMDOC
7539   AArch64 pseudo relocation code to be used internally by the AArch64
7540   assembler and not (currently) written to any object files.
7541 ENUM
7542   BFD_RELOC_TILEPRO_COPY
7543 ENUMX
7544   BFD_RELOC_TILEPRO_GLOB_DAT
7545 ENUMX
7546   BFD_RELOC_TILEPRO_JMP_SLOT
7547 ENUMX
7548   BFD_RELOC_TILEPRO_RELATIVE
7549 ENUMX
7550   BFD_RELOC_TILEPRO_BROFF_X1
7551 ENUMX
7552   BFD_RELOC_TILEPRO_JOFFLONG_X1
7553 ENUMX
7554   BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT
7555 ENUMX
7556   BFD_RELOC_TILEPRO_IMM8_X0
7557 ENUMX
7558   BFD_RELOC_TILEPRO_IMM8_Y0
7559 ENUMX
7560   BFD_RELOC_TILEPRO_IMM8_X1
7561 ENUMX
7562   BFD_RELOC_TILEPRO_IMM8_Y1
7563 ENUMX
7564   BFD_RELOC_TILEPRO_DEST_IMM8_X1
7565 ENUMX
7566   BFD_RELOC_TILEPRO_MT_IMM15_X1
7567 ENUMX
7568   BFD_RELOC_TILEPRO_MF_IMM15_X1
7569 ENUMX
7570   BFD_RELOC_TILEPRO_IMM16_X0
7571 ENUMX
7572   BFD_RELOC_TILEPRO_IMM16_X1
7573 ENUMX
7574   BFD_RELOC_TILEPRO_IMM16_X0_LO
7575 ENUMX
7576   BFD_RELOC_TILEPRO_IMM16_X1_LO
7577 ENUMX
7578   BFD_RELOC_TILEPRO_IMM16_X0_HI
7579 ENUMX
7580   BFD_RELOC_TILEPRO_IMM16_X1_HI
7581 ENUMX
7582   BFD_RELOC_TILEPRO_IMM16_X0_HA
7583 ENUMX
7584   BFD_RELOC_TILEPRO_IMM16_X1_HA
7585 ENUMX
7586   BFD_RELOC_TILEPRO_IMM16_X0_PCREL
7587 ENUMX
7588   BFD_RELOC_TILEPRO_IMM16_X1_PCREL
7589 ENUMX
7590   BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL
7591 ENUMX
7592   BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL
7593 ENUMX
7594   BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL
7595 ENUMX
7596   BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL
7597 ENUMX
7598   BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL
7599 ENUMX
7600   BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL
7601 ENUMX
7602   BFD_RELOC_TILEPRO_IMM16_X0_GOT
7603 ENUMX
7604   BFD_RELOC_TILEPRO_IMM16_X1_GOT
7605 ENUMX
7606   BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO
7607 ENUMX
7608   BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO
7609 ENUMX
7610   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI
7611 ENUMX
7612   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI
7613 ENUMX
7614   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA
7615 ENUMX
7616   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA
7617 ENUMX
7618   BFD_RELOC_TILEPRO_MMSTART_X0
7619 ENUMX
7620   BFD_RELOC_TILEPRO_MMEND_X0
7621 ENUMX
7622   BFD_RELOC_TILEPRO_MMSTART_X1
7623 ENUMX
7624   BFD_RELOC_TILEPRO_MMEND_X1
7625 ENUMX
7626   BFD_RELOC_TILEPRO_SHAMT_X0
7627 ENUMX
7628   BFD_RELOC_TILEPRO_SHAMT_X1
7629 ENUMX
7630   BFD_RELOC_TILEPRO_SHAMT_Y0
7631 ENUMX
7632   BFD_RELOC_TILEPRO_SHAMT_Y1
7633 ENUMX
7634   BFD_RELOC_TILEPRO_TLS_GD_CALL
7635 ENUMX
7636   BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD
7637 ENUMX
7638   BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD
7639 ENUMX
7640   BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD
7641 ENUMX
7642   BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD
7643 ENUMX
7644   BFD_RELOC_TILEPRO_TLS_IE_LOAD
7645 ENUMX
7646   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD
7647 ENUMX
7648   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD
7649 ENUMX
7650   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO
7651 ENUMX
7652   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO
7653 ENUMX
7654   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI
7655 ENUMX
7656   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI
7657 ENUMX
7658   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA
7659 ENUMX
7660   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA
7661 ENUMX
7662   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE
7663 ENUMX
7664   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE
7665 ENUMX
7666   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO
7667 ENUMX
7668   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO
7669 ENUMX
7670   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI
7671 ENUMX
7672   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI
7673 ENUMX
7674   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA
7675 ENUMX
7676   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA
7677 ENUMX
7678   BFD_RELOC_TILEPRO_TLS_DTPMOD32
7679 ENUMX
7680   BFD_RELOC_TILEPRO_TLS_DTPOFF32
7681 ENUMX
7682   BFD_RELOC_TILEPRO_TLS_TPOFF32
7683 ENUMX
7684   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE
7685 ENUMX
7686   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE
7687 ENUMX
7688   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO
7689 ENUMX
7690   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO
7691 ENUMX
7692   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI
7693 ENUMX
7694   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI
7695 ENUMX
7696   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA
7697 ENUMX
7698   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA
7699 ENUMDOC
7700   Tilera TILEPro Relocations.
7701 ENUM
7702   BFD_RELOC_TILEGX_HW0
7703 ENUMX
7704   BFD_RELOC_TILEGX_HW1
7705 ENUMX
7706   BFD_RELOC_TILEGX_HW2
7707 ENUMX
7708   BFD_RELOC_TILEGX_HW3
7709 ENUMX
7710   BFD_RELOC_TILEGX_HW0_LAST
7711 ENUMX
7712   BFD_RELOC_TILEGX_HW1_LAST
7713 ENUMX
7714   BFD_RELOC_TILEGX_HW2_LAST
7715 ENUMX
7716   BFD_RELOC_TILEGX_COPY
7717 ENUMX
7718   BFD_RELOC_TILEGX_GLOB_DAT
7719 ENUMX
7720   BFD_RELOC_TILEGX_JMP_SLOT
7721 ENUMX
7722   BFD_RELOC_TILEGX_RELATIVE
7723 ENUMX
7724   BFD_RELOC_TILEGX_BROFF_X1
7725 ENUMX
7726   BFD_RELOC_TILEGX_JUMPOFF_X1
7727 ENUMX
7728   BFD_RELOC_TILEGX_JUMPOFF_X1_PLT
7729 ENUMX
7730   BFD_RELOC_TILEGX_IMM8_X0
7731 ENUMX
7732   BFD_RELOC_TILEGX_IMM8_Y0
7733 ENUMX
7734   BFD_RELOC_TILEGX_IMM8_X1
7735 ENUMX
7736   BFD_RELOC_TILEGX_IMM8_Y1
7737 ENUMX
7738   BFD_RELOC_TILEGX_DEST_IMM8_X1
7739 ENUMX
7740   BFD_RELOC_TILEGX_MT_IMM14_X1
7741 ENUMX
7742   BFD_RELOC_TILEGX_MF_IMM14_X1
7743 ENUMX
7744   BFD_RELOC_TILEGX_MMSTART_X0
7745 ENUMX
7746   BFD_RELOC_TILEGX_MMEND_X0
7747 ENUMX
7748   BFD_RELOC_TILEGX_SHAMT_X0
7749 ENUMX
7750   BFD_RELOC_TILEGX_SHAMT_X1
7751 ENUMX
7752   BFD_RELOC_TILEGX_SHAMT_Y0
7753 ENUMX
7754   BFD_RELOC_TILEGX_SHAMT_Y1
7755 ENUMX
7756   BFD_RELOC_TILEGX_IMM16_X0_HW0
7757 ENUMX
7758   BFD_RELOC_TILEGX_IMM16_X1_HW0
7759 ENUMX
7760   BFD_RELOC_TILEGX_IMM16_X0_HW1
7761 ENUMX
7762   BFD_RELOC_TILEGX_IMM16_X1_HW1
7763 ENUMX
7764   BFD_RELOC_TILEGX_IMM16_X0_HW2
7765 ENUMX
7766   BFD_RELOC_TILEGX_IMM16_X1_HW2
7767 ENUMX
7768   BFD_RELOC_TILEGX_IMM16_X0_HW3
7769 ENUMX
7770   BFD_RELOC_TILEGX_IMM16_X1_HW3
7771 ENUMX
7772   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST
7773 ENUMX
7774   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST
7775 ENUMX
7776   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST
7777 ENUMX
7778   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST
7779 ENUMX
7780   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST
7781 ENUMX
7782   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST
7783 ENUMX
7784   BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL
7785 ENUMX
7786   BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL
7787 ENUMX
7788   BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL
7789 ENUMX
7790   BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL
7791 ENUMX
7792   BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL
7793 ENUMX
7794   BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL
7795 ENUMX
7796   BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL
7797 ENUMX
7798   BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL
7799 ENUMX
7800   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL
7801 ENUMX
7802   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL
7803 ENUMX
7804   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL
7805 ENUMX
7806   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL
7807 ENUMX
7808   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL
7809 ENUMX
7810   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL
7811 ENUMX
7812   BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT
7813 ENUMX
7814   BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT
7815 ENUMX
7816   BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL
7817 ENUMX
7818   BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL
7819 ENUMX
7820   BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL
7821 ENUMX
7822   BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL
7823 ENUMX
7824   BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL
7825 ENUMX
7826   BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL
7827 ENUMX
7828   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT
7829 ENUMX
7830   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT
7831 ENUMX
7832   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT
7833 ENUMX
7834   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT
7835 ENUMX
7836   BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL
7837 ENUMX
7838   BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL
7839 ENUMX
7840   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD
7841 ENUMX
7842   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD
7843 ENUMX
7844   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE
7845 ENUMX
7846   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE
7847 ENUMX
7848   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE
7849 ENUMX
7850   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE
7851 ENUMX
7852   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE
7853 ENUMX
7854   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE
7855 ENUMX
7856   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD
7857 ENUMX
7858   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD
7859 ENUMX
7860   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD
7861 ENUMX
7862   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD
7863 ENUMX
7864   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE
7865 ENUMX
7866   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE
7867 ENUMX
7868   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL
7869 ENUMX
7870   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL
7871 ENUMX
7872   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL
7873 ENUMX
7874   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL
7875 ENUMX
7876   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL
7877 ENUMX
7878   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL
7879 ENUMX
7880   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE
7881 ENUMX
7882   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE
7883 ENUMX
7884   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE
7885 ENUMX
7886   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE
7887 ENUMX
7888   BFD_RELOC_TILEGX_TLS_DTPMOD64
7889 ENUMX
7890   BFD_RELOC_TILEGX_TLS_DTPOFF64
7891 ENUMX
7892   BFD_RELOC_TILEGX_TLS_TPOFF64
7893 ENUMX
7894   BFD_RELOC_TILEGX_TLS_DTPMOD32
7895 ENUMX
7896   BFD_RELOC_TILEGX_TLS_DTPOFF32
7897 ENUMX
7898   BFD_RELOC_TILEGX_TLS_TPOFF32
7899 ENUMX
7900   BFD_RELOC_TILEGX_TLS_GD_CALL
7901 ENUMX
7902   BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD
7903 ENUMX
7904   BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD
7905 ENUMX
7906   BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD
7907 ENUMX
7908   BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD
7909 ENUMX
7910   BFD_RELOC_TILEGX_TLS_IE_LOAD
7911 ENUMX
7912   BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD
7913 ENUMX
7914   BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD
7915 ENUMX
7916   BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD
7917 ENUMX
7918   BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
7919 ENUMDOC
7920   Tilera TILE-Gx Relocations.
7921
7922 ENUM
7923   BFD_RELOC_EPIPHANY_SIMM8
7924 ENUMDOC
7925   Adapteva EPIPHANY - 8 bit signed pc-relative displacement
7926 ENUM
7927   BFD_RELOC_EPIPHANY_SIMM24
7928 ENUMDOC
7929   Adapteva EPIPHANY - 24 bit signed pc-relative displacement
7930 ENUM
7931   BFD_RELOC_EPIPHANY_HIGH
7932 ENUMDOC
7933   Adapteva EPIPHANY - 16 most-significant bits of absolute address
7934 ENUM
7935   BFD_RELOC_EPIPHANY_LOW
7936 ENUMDOC
7937   Adapteva EPIPHANY - 16 least-significant bits of absolute address
7938 ENUM
7939   BFD_RELOC_EPIPHANY_SIMM11
7940 ENUMDOC
7941   Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
7942 ENUM
7943   BFD_RELOC_EPIPHANY_IMM11
7944 ENUMDOC
7945   Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)
7946 ENUM
7947   BFD_RELOC_EPIPHANY_IMM8
7948 ENUMDOC
7949   Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
7950
7951 ENUM
7952   BFD_RELOC_VISIUM_HI16
7953 ENUMX
7954   BFD_RELOC_VISIUM_LO16
7955 ENUMX
7956   BFD_RELOC_VISIUM_IM16
7957 ENUMX
7958   BFD_RELOC_VISIUM_REL16
7959 ENUMX
7960   BFD_RELOC_VISIUM_HI16_PCREL
7961 ENUMX
7962   BFD_RELOC_VISIUM_LO16_PCREL
7963 ENUMX
7964   BFD_RELOC_VISIUM_IM16_PCREL
7965 ENUMDOC
7966   Visium Relocations.
7967
7968 ENUM
7969   BFD_RELOC_WASM32_LEB128
7970 ENUMX
7971   BFD_RELOC_WASM32_LEB128_GOT
7972 ENUMX
7973   BFD_RELOC_WASM32_LEB128_GOT_CODE
7974 ENUMX
7975   BFD_RELOC_WASM32_LEB128_PLT
7976 ENUMX
7977   BFD_RELOC_WASM32_PLT_INDEX
7978 ENUMX
7979   BFD_RELOC_WASM32_ABS32_CODE
7980 ENUMX
7981   BFD_RELOC_WASM32_COPY
7982 ENUMX
7983   BFD_RELOC_WASM32_CODE_POINTER
7984 ENUMX
7985   BFD_RELOC_WASM32_INDEX
7986 ENUMX
7987   BFD_RELOC_WASM32_PLT_SIG
7988 ENUMDOC
7989   WebAssembly relocations.
7990
7991 ENDSENUM
7992   BFD_RELOC_UNUSED
7993 CODE_FRAGMENT
7994 .
7995 .typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
7996 */
7997
7998 /*
7999 FUNCTION
8000         bfd_reloc_type_lookup
8001         bfd_reloc_name_lookup
8002
8003 SYNOPSIS
8004         reloc_howto_type *bfd_reloc_type_lookup
8005           (bfd *abfd, bfd_reloc_code_real_type code);
8006         reloc_howto_type *bfd_reloc_name_lookup
8007           (bfd *abfd, const char *reloc_name);
8008
8009 DESCRIPTION
8010         Return a pointer to a howto structure which, when
8011         invoked, will perform the relocation @var{code} on data from the
8012         architecture noted.
8013
8014 */
8015
8016 reloc_howto_type *
8017 bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
8018 {
8019   return BFD_SEND (abfd, reloc_type_lookup, (abfd, code));
8020 }
8021
8022 reloc_howto_type *
8023 bfd_reloc_name_lookup (bfd *abfd, const char *reloc_name)
8024 {
8025   return BFD_SEND (abfd, reloc_name_lookup, (abfd, reloc_name));
8026 }
8027
8028 static reloc_howto_type bfd_howto_32 =
8029 HOWTO (0, 00, 2, 32, FALSE, 0, complain_overflow_dont, 0, "VRT32", FALSE, 0xffffffff, 0xffffffff, TRUE);
8030
8031 /*
8032 INTERNAL_FUNCTION
8033         bfd_default_reloc_type_lookup
8034
8035 SYNOPSIS
8036         reloc_howto_type *bfd_default_reloc_type_lookup
8037           (bfd *abfd, bfd_reloc_code_real_type  code);
8038
8039 DESCRIPTION
8040         Provides a default relocation lookup routine for any architecture.
8041
8042 */
8043
8044 reloc_howto_type *
8045 bfd_default_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
8046 {
8047   switch (code)
8048     {
8049     case BFD_RELOC_CTOR:
8050       /* The type of reloc used in a ctor, which will be as wide as the
8051          address - so either a 64, 32, or 16 bitter.  */
8052       switch (bfd_arch_bits_per_address (abfd))
8053         {
8054         case 64:
8055           BFD_FAIL ();
8056           break;
8057         case 32:
8058           return &bfd_howto_32;
8059         case 16:
8060           BFD_FAIL ();
8061           break;
8062         default:
8063           BFD_FAIL ();
8064         }
8065       break;
8066     default:
8067       BFD_FAIL ();
8068     }
8069   return NULL;
8070 }
8071
8072 /*
8073 FUNCTION
8074         bfd_get_reloc_code_name
8075
8076 SYNOPSIS
8077         const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
8078
8079 DESCRIPTION
8080         Provides a printable name for the supplied relocation code.
8081         Useful mainly for printing error messages.
8082 */
8083
8084 const char *
8085 bfd_get_reloc_code_name (bfd_reloc_code_real_type code)
8086 {
8087   if (code > BFD_RELOC_UNUSED)
8088     return 0;
8089   return bfd_reloc_code_real_names[code];
8090 }
8091
8092 /*
8093 INTERNAL_FUNCTION
8094         bfd_generic_relax_section
8095
8096 SYNOPSIS
8097         bfd_boolean bfd_generic_relax_section
8098           (bfd *abfd,
8099            asection *section,
8100            struct bfd_link_info *,
8101            bfd_boolean *);
8102
8103 DESCRIPTION
8104         Provides default handling for relaxing for back ends which
8105         don't do relaxing.
8106 */
8107
8108 bfd_boolean
8109 bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
8110                            asection *section ATTRIBUTE_UNUSED,
8111                            struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
8112                            bfd_boolean *again)
8113 {
8114   if (bfd_link_relocatable (link_info))
8115     (*link_info->callbacks->einfo)
8116       (_("%P%F: --relax and -r may not be used together\n"));
8117
8118   *again = FALSE;
8119   return TRUE;
8120 }
8121
8122 /*
8123 INTERNAL_FUNCTION
8124         bfd_generic_gc_sections
8125
8126 SYNOPSIS
8127         bfd_boolean bfd_generic_gc_sections
8128           (bfd *, struct bfd_link_info *);
8129
8130 DESCRIPTION
8131         Provides default handling for relaxing for back ends which
8132         don't do section gc -- i.e., does nothing.
8133 */
8134
8135 bfd_boolean
8136 bfd_generic_gc_sections (bfd *abfd ATTRIBUTE_UNUSED,
8137                          struct bfd_link_info *info ATTRIBUTE_UNUSED)
8138 {
8139   return TRUE;
8140 }
8141
8142 /*
8143 INTERNAL_FUNCTION
8144         bfd_generic_lookup_section_flags
8145
8146 SYNOPSIS
8147         bfd_boolean bfd_generic_lookup_section_flags
8148           (struct bfd_link_info *, struct flag_info *, asection *);
8149
8150 DESCRIPTION
8151         Provides default handling for section flags lookup
8152         -- i.e., does nothing.
8153         Returns FALSE if the section should be omitted, otherwise TRUE.
8154 */
8155
8156 bfd_boolean
8157 bfd_generic_lookup_section_flags (struct bfd_link_info *info ATTRIBUTE_UNUSED,
8158                                   struct flag_info *flaginfo,
8159                                   asection *section ATTRIBUTE_UNUSED)
8160 {
8161   if (flaginfo != NULL)
8162     {
8163       _bfd_error_handler (_("INPUT_SECTION_FLAGS are not supported"));
8164       return FALSE;
8165     }
8166   return TRUE;
8167 }
8168
8169 /*
8170 INTERNAL_FUNCTION
8171         bfd_generic_merge_sections
8172
8173 SYNOPSIS
8174         bfd_boolean bfd_generic_merge_sections
8175           (bfd *, struct bfd_link_info *);
8176
8177 DESCRIPTION
8178         Provides default handling for SEC_MERGE section merging for back ends
8179         which don't have SEC_MERGE support -- i.e., does nothing.
8180 */
8181
8182 bfd_boolean
8183 bfd_generic_merge_sections (bfd *abfd ATTRIBUTE_UNUSED,
8184                             struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
8185 {
8186   return TRUE;
8187 }
8188
8189 /*
8190 INTERNAL_FUNCTION
8191         bfd_generic_get_relocated_section_contents
8192
8193 SYNOPSIS
8194         bfd_byte *bfd_generic_get_relocated_section_contents
8195           (bfd *abfd,
8196            struct bfd_link_info *link_info,
8197            struct bfd_link_order *link_order,
8198            bfd_byte *data,
8199            bfd_boolean relocatable,
8200            asymbol **symbols);
8201
8202 DESCRIPTION
8203         Provides default handling of relocation effort for back ends
8204         which can't be bothered to do it efficiently.
8205
8206 */
8207
8208 bfd_byte *
8209 bfd_generic_get_relocated_section_contents (bfd *abfd,
8210                                             struct bfd_link_info *link_info,
8211                                             struct bfd_link_order *link_order,
8212                                             bfd_byte *data,
8213                                             bfd_boolean relocatable,
8214                                             asymbol **symbols)
8215 {
8216   bfd *input_bfd = link_order->u.indirect.section->owner;
8217   asection *input_section = link_order->u.indirect.section;
8218   long reloc_size;
8219   arelent **reloc_vector;
8220   long reloc_count;
8221
8222   reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
8223   if (reloc_size < 0)
8224     return NULL;
8225
8226   /* Read in the section.  */
8227   if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
8228     return NULL;
8229
8230   if (data == NULL)
8231     return NULL;
8232
8233   if (reloc_size == 0)
8234     return data;
8235
8236   reloc_vector = (arelent **) bfd_malloc (reloc_size);
8237   if (reloc_vector == NULL)
8238     return NULL;
8239
8240   reloc_count = bfd_canonicalize_reloc (input_bfd,
8241                                         input_section,
8242                                         reloc_vector,
8243                                         symbols);
8244   if (reloc_count < 0)
8245     goto error_return;
8246
8247   if (reloc_count > 0)
8248     {
8249       arelent **parent;
8250
8251       for (parent = reloc_vector; *parent != NULL; parent++)
8252         {
8253           char *error_message = NULL;
8254           asymbol *symbol;
8255           bfd_reloc_status_type r;
8256
8257           symbol = *(*parent)->sym_ptr_ptr;
8258           /* PR ld/19628: A specially crafted input file
8259              can result in a NULL symbol pointer here.  */
8260           if (symbol == NULL)
8261             {
8262               link_info->callbacks->einfo
8263                 /* xgettext:c-format */
8264                 (_("%X%P: %pB(%pA): error: relocation for offset %V has no value\n"),
8265                  abfd, input_section, (* parent)->address);
8266               goto error_return;
8267             }
8268
8269           if (symbol->section && discarded_section (symbol->section))
8270             {
8271               bfd_byte *p;
8272               static reloc_howto_type none_howto
8273                 = HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL,
8274                          "unused", FALSE, 0, 0, FALSE);
8275
8276               p = data + (*parent)->address * bfd_octets_per_byte (input_bfd);
8277               _bfd_clear_contents ((*parent)->howto, input_bfd, input_section,
8278                                    p);
8279               (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
8280               (*parent)->addend = 0;
8281               (*parent)->howto = &none_howto;
8282               r = bfd_reloc_ok;
8283             }
8284           else
8285             r = bfd_perform_relocation (input_bfd,
8286                                         *parent,
8287                                         data,
8288                                         input_section,
8289                                         relocatable ? abfd : NULL,
8290                                         &error_message);
8291
8292           if (relocatable)
8293             {
8294               asection *os = input_section->output_section;
8295
8296               /* A partial link, so keep the relocs.  */
8297               os->orelocation[os->reloc_count] = *parent;
8298               os->reloc_count++;
8299             }
8300
8301           if (r != bfd_reloc_ok)
8302             {
8303               switch (r)
8304                 {
8305                 case bfd_reloc_undefined:
8306                   (*link_info->callbacks->undefined_symbol)
8307                     (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
8308                      input_bfd, input_section, (*parent)->address, TRUE);
8309                   break;
8310                 case bfd_reloc_dangerous:
8311                   BFD_ASSERT (error_message != NULL);
8312                   (*link_info->callbacks->reloc_dangerous)
8313                     (link_info, error_message,
8314                      input_bfd, input_section, (*parent)->address);
8315                   break;
8316                 case bfd_reloc_overflow:
8317                   (*link_info->callbacks->reloc_overflow)
8318                     (link_info, NULL,
8319                      bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
8320                      (*parent)->howto->name, (*parent)->addend,
8321                      input_bfd, input_section, (*parent)->address);
8322                   break;
8323                 case bfd_reloc_outofrange:
8324                   /* PR ld/13730:
8325                      This error can result when processing some partially
8326                      complete binaries.  Do not abort, but issue an error
8327                      message instead.  */
8328                   link_info->callbacks->einfo
8329                     /* xgettext:c-format */
8330                     (_("%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"),
8331                      abfd, input_section, * parent);
8332                   goto error_return;
8333
8334                 case bfd_reloc_notsupported:
8335                   /* PR ld/17512
8336                      This error can result when processing a corrupt binary.
8337                      Do not abort.  Issue an error message instead.  */
8338                   link_info->callbacks->einfo
8339                     /* xgettext:c-format */
8340                     (_("%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"),
8341                      abfd, input_section, * parent);
8342                   goto error_return;
8343
8344                 default:
8345                   /* PR 17512; file: 90c2a92e.
8346                      Report unexpected results, without aborting.  */
8347                   link_info->callbacks->einfo
8348                     /* xgettext:c-format */
8349                     (_("%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"),
8350                      abfd, input_section, * parent, r);
8351                   break;
8352                 }
8353
8354             }
8355         }
8356     }
8357
8358   free (reloc_vector);
8359   return data;
8360
8361 error_return:
8362   free (reloc_vector);
8363   return NULL;
8364 }
8365
8366 /*
8367 INTERNAL_FUNCTION
8368         _bfd_generic_set_reloc
8369
8370 SYNOPSIS
8371         void _bfd_generic_set_reloc
8372           (bfd *abfd,
8373            sec_ptr section,
8374            arelent **relptr,
8375            unsigned int count);
8376
8377 DESCRIPTION
8378         Installs a new set of internal relocations in SECTION.
8379 */
8380
8381 void
8382 _bfd_generic_set_reloc (bfd *abfd ATTRIBUTE_UNUSED,
8383                         sec_ptr section,
8384                         arelent **relptr,
8385                         unsigned int count)
8386 {
8387   section->orelocation = relptr;
8388   section->reloc_count = count;
8389 }
8390
8391 /*
8392 INTERNAL_FUNCTION
8393         _bfd_unrecognized_reloc
8394
8395 SYNOPSIS
8396         bfd_boolean _bfd_unrecognized_reloc
8397           (bfd * abfd,
8398            sec_ptr section,
8399            unsigned int r_type);
8400
8401 DESCRIPTION
8402         Reports an unrecognized reloc.
8403         Written as a function in order to reduce code duplication.
8404         Returns FALSE so that it can be called from a return statement.
8405 */
8406
8407 bfd_boolean
8408 _bfd_unrecognized_reloc (bfd * abfd, sec_ptr section, unsigned int r_type)
8409 {
8410    /* xgettext:c-format */
8411   _bfd_error_handler (_("%pB: unrecognized relocation type %#x in section `%pA'"),
8412                       abfd, r_type, section);
8413
8414   /* PR 21803: Suggest the most likely cause of this error.  */
8415   _bfd_error_handler (_("is this version of the linker - %s - out of date ?"),
8416                       BFD_VERSION_STRING);
8417
8418   bfd_set_error (bfd_error_bad_value);
8419   return FALSE;
8420 }
8421
8422 reloc_howto_type *
8423 _bfd_norelocs_bfd_reloc_type_lookup
8424     (bfd *abfd,
8425      bfd_reloc_code_real_type code ATTRIBUTE_UNUSED)
8426 {
8427   return (reloc_howto_type *) _bfd_ptr_bfd_null_error (abfd);
8428 }
8429
8430 reloc_howto_type *
8431 _bfd_norelocs_bfd_reloc_name_lookup (bfd *abfd,
8432                                      const char *reloc_name ATTRIBUTE_UNUSED)
8433 {
8434   return (reloc_howto_type *) _bfd_ptr_bfd_null_error (abfd);
8435 }
8436
8437 long
8438 _bfd_nodynamic_canonicalize_dynamic_reloc (bfd *abfd,
8439                                            arelent **relp ATTRIBUTE_UNUSED,
8440                                            asymbol **symp ATTRIBUTE_UNUSED)
8441 {
8442   return _bfd_long_bfd_n1_error (abfd);
8443 }