gdb: Make infrun.c:resume function static
[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 ENUMX
3015   BFD_RELOC_PPC64_REL24_NOTOC
3016 ENUMDOC
3017   Power(rs6000) and PowerPC relocations.
3018
3019 ENUM
3020   BFD_RELOC_PPC_TLS
3021 ENUMX
3022   BFD_RELOC_PPC_TLSGD
3023 ENUMX
3024   BFD_RELOC_PPC_TLSLD
3025 ENUMX
3026   BFD_RELOC_PPC_DTPMOD
3027 ENUMX
3028   BFD_RELOC_PPC_TPREL16
3029 ENUMX
3030   BFD_RELOC_PPC_TPREL16_LO
3031 ENUMX
3032   BFD_RELOC_PPC_TPREL16_HI
3033 ENUMX
3034   BFD_RELOC_PPC_TPREL16_HA
3035 ENUMX
3036   BFD_RELOC_PPC_TPREL
3037 ENUMX
3038   BFD_RELOC_PPC_DTPREL16
3039 ENUMX
3040   BFD_RELOC_PPC_DTPREL16_LO
3041 ENUMX
3042   BFD_RELOC_PPC_DTPREL16_HI
3043 ENUMX
3044   BFD_RELOC_PPC_DTPREL16_HA
3045 ENUMX
3046   BFD_RELOC_PPC_DTPREL
3047 ENUMX
3048   BFD_RELOC_PPC_GOT_TLSGD16
3049 ENUMX
3050   BFD_RELOC_PPC_GOT_TLSGD16_LO
3051 ENUMX
3052   BFD_RELOC_PPC_GOT_TLSGD16_HI
3053 ENUMX
3054   BFD_RELOC_PPC_GOT_TLSGD16_HA
3055 ENUMX
3056   BFD_RELOC_PPC_GOT_TLSLD16
3057 ENUMX
3058   BFD_RELOC_PPC_GOT_TLSLD16_LO
3059 ENUMX
3060   BFD_RELOC_PPC_GOT_TLSLD16_HI
3061 ENUMX
3062   BFD_RELOC_PPC_GOT_TLSLD16_HA
3063 ENUMX
3064   BFD_RELOC_PPC_GOT_TPREL16
3065 ENUMX
3066   BFD_RELOC_PPC_GOT_TPREL16_LO
3067 ENUMX
3068   BFD_RELOC_PPC_GOT_TPREL16_HI
3069 ENUMX
3070   BFD_RELOC_PPC_GOT_TPREL16_HA
3071 ENUMX
3072   BFD_RELOC_PPC_GOT_DTPREL16
3073 ENUMX
3074   BFD_RELOC_PPC_GOT_DTPREL16_LO
3075 ENUMX
3076   BFD_RELOC_PPC_GOT_DTPREL16_HI
3077 ENUMX
3078   BFD_RELOC_PPC_GOT_DTPREL16_HA
3079 ENUMX
3080   BFD_RELOC_PPC64_TPREL16_DS
3081 ENUMX
3082   BFD_RELOC_PPC64_TPREL16_LO_DS
3083 ENUMX
3084   BFD_RELOC_PPC64_TPREL16_HIGHER
3085 ENUMX
3086   BFD_RELOC_PPC64_TPREL16_HIGHERA
3087 ENUMX
3088   BFD_RELOC_PPC64_TPREL16_HIGHEST
3089 ENUMX
3090   BFD_RELOC_PPC64_TPREL16_HIGHESTA
3091 ENUMX
3092   BFD_RELOC_PPC64_DTPREL16_DS
3093 ENUMX
3094   BFD_RELOC_PPC64_DTPREL16_LO_DS
3095 ENUMX
3096   BFD_RELOC_PPC64_DTPREL16_HIGHER
3097 ENUMX
3098   BFD_RELOC_PPC64_DTPREL16_HIGHERA
3099 ENUMX
3100   BFD_RELOC_PPC64_DTPREL16_HIGHEST
3101 ENUMX
3102   BFD_RELOC_PPC64_DTPREL16_HIGHESTA
3103 ENUMX
3104   BFD_RELOC_PPC64_TPREL16_HIGH
3105 ENUMX
3106   BFD_RELOC_PPC64_TPREL16_HIGHA
3107 ENUMX
3108   BFD_RELOC_PPC64_DTPREL16_HIGH
3109 ENUMX
3110   BFD_RELOC_PPC64_DTPREL16_HIGHA
3111 ENUMDOC
3112   PowerPC and PowerPC64 thread-local storage relocations.
3113
3114 ENUM
3115   BFD_RELOC_I370_D12
3116 ENUMDOC
3117   IBM 370/390 relocations
3118
3119 ENUM
3120   BFD_RELOC_CTOR
3121 ENUMDOC
3122   The type of reloc used to build a constructor table - at the moment
3123   probably a 32 bit wide absolute relocation, but the target can choose.
3124   It generally does map to one of the other relocation types.
3125
3126 ENUM
3127   BFD_RELOC_ARM_PCREL_BRANCH
3128 ENUMDOC
3129   ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
3130   not stored in the instruction.
3131 ENUM
3132   BFD_RELOC_ARM_PCREL_BLX
3133 ENUMDOC
3134   ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
3135   not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
3136   field in the instruction.
3137 ENUM
3138   BFD_RELOC_THUMB_PCREL_BLX
3139 ENUMDOC
3140   Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
3141   not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
3142   field in the instruction.
3143 ENUM
3144   BFD_RELOC_ARM_PCREL_CALL
3145 ENUMDOC
3146   ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.
3147 ENUM
3148   BFD_RELOC_ARM_PCREL_JUMP
3149 ENUMDOC
3150   ARM 26-bit pc-relative branch for B or conditional BL instruction.
3151
3152 ENUM
3153   BFD_RELOC_THUMB_PCREL_BRANCH7
3154 ENUMX
3155   BFD_RELOC_THUMB_PCREL_BRANCH9
3156 ENUMX
3157   BFD_RELOC_THUMB_PCREL_BRANCH12
3158 ENUMX
3159   BFD_RELOC_THUMB_PCREL_BRANCH20
3160 ENUMX
3161   BFD_RELOC_THUMB_PCREL_BRANCH23
3162 ENUMX
3163   BFD_RELOC_THUMB_PCREL_BRANCH25
3164 ENUMDOC
3165   Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
3166   The lowest bit must be zero and is not stored in the instruction.
3167   Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
3168   "nn" one smaller in all cases.  Note further that BRANCH23
3169   corresponds to R_ARM_THM_CALL.
3170
3171 ENUM
3172   BFD_RELOC_ARM_OFFSET_IMM
3173 ENUMDOC
3174   12-bit immediate offset, used in ARM-format ldr and str instructions.
3175
3176 ENUM
3177   BFD_RELOC_ARM_THUMB_OFFSET
3178 ENUMDOC
3179   5-bit immediate offset, used in Thumb-format ldr and str instructions.
3180
3181 ENUM
3182   BFD_RELOC_ARM_TARGET1
3183 ENUMDOC
3184   Pc-relative or absolute relocation depending on target.  Used for
3185   entries in .init_array sections.
3186 ENUM
3187   BFD_RELOC_ARM_ROSEGREL32
3188 ENUMDOC
3189   Read-only segment base relative address.
3190 ENUM
3191   BFD_RELOC_ARM_SBREL32
3192 ENUMDOC
3193   Data segment base relative address.
3194 ENUM
3195   BFD_RELOC_ARM_TARGET2
3196 ENUMDOC
3197   This reloc is used for references to RTTI data from exception handling
3198   tables.  The actual definition depends on the target.  It may be a
3199   pc-relative or some form of GOT-indirect relocation.
3200 ENUM
3201   BFD_RELOC_ARM_PREL31
3202 ENUMDOC
3203   31-bit PC relative address.
3204 ENUM
3205   BFD_RELOC_ARM_MOVW
3206 ENUMX
3207   BFD_RELOC_ARM_MOVT
3208 ENUMX
3209   BFD_RELOC_ARM_MOVW_PCREL
3210 ENUMX
3211   BFD_RELOC_ARM_MOVT_PCREL
3212 ENUMX
3213   BFD_RELOC_ARM_THUMB_MOVW
3214 ENUMX
3215   BFD_RELOC_ARM_THUMB_MOVT
3216 ENUMX
3217   BFD_RELOC_ARM_THUMB_MOVW_PCREL
3218 ENUMX
3219   BFD_RELOC_ARM_THUMB_MOVT_PCREL
3220 ENUMDOC
3221   Low and High halfword relocations for MOVW and MOVT instructions.
3222
3223 ENUM
3224   BFD_RELOC_ARM_GOTFUNCDESC
3225 ENUMX
3226   BFD_RELOC_ARM_GOTOFFFUNCDESC
3227 ENUMX
3228   BFD_RELOC_ARM_FUNCDESC
3229 ENUMX
3230   BFD_RELOC_ARM_FUNCDESC_VALUE
3231 ENUMX
3232   BFD_RELOC_ARM_TLS_GD32_FDPIC
3233 ENUMX
3234   BFD_RELOC_ARM_TLS_LDM32_FDPIC
3235 ENUMX
3236   BFD_RELOC_ARM_TLS_IE32_FDPIC
3237 ENUMDOC
3238   ARM FDPIC specific relocations.
3239
3240 ENUM
3241   BFD_RELOC_ARM_JUMP_SLOT
3242 ENUMX
3243   BFD_RELOC_ARM_GLOB_DAT
3244 ENUMX
3245   BFD_RELOC_ARM_GOT32
3246 ENUMX
3247   BFD_RELOC_ARM_PLT32
3248 ENUMX
3249   BFD_RELOC_ARM_RELATIVE
3250 ENUMX
3251   BFD_RELOC_ARM_GOTOFF
3252 ENUMX
3253   BFD_RELOC_ARM_GOTPC
3254 ENUMX
3255   BFD_RELOC_ARM_GOT_PREL
3256 ENUMDOC
3257   Relocations for setting up GOTs and PLTs for shared libraries.
3258
3259 ENUM
3260   BFD_RELOC_ARM_TLS_GD32
3261 ENUMX
3262   BFD_RELOC_ARM_TLS_LDO32
3263 ENUMX
3264   BFD_RELOC_ARM_TLS_LDM32
3265 ENUMX
3266   BFD_RELOC_ARM_TLS_DTPOFF32
3267 ENUMX
3268   BFD_RELOC_ARM_TLS_DTPMOD32
3269 ENUMX
3270   BFD_RELOC_ARM_TLS_TPOFF32
3271 ENUMX
3272   BFD_RELOC_ARM_TLS_IE32
3273 ENUMX
3274   BFD_RELOC_ARM_TLS_LE32
3275 ENUMX
3276   BFD_RELOC_ARM_TLS_GOTDESC
3277 ENUMX
3278   BFD_RELOC_ARM_TLS_CALL
3279 ENUMX
3280   BFD_RELOC_ARM_THM_TLS_CALL
3281 ENUMX
3282   BFD_RELOC_ARM_TLS_DESCSEQ
3283 ENUMX
3284   BFD_RELOC_ARM_THM_TLS_DESCSEQ
3285 ENUMX
3286   BFD_RELOC_ARM_TLS_DESC
3287 ENUMDOC
3288   ARM thread-local storage relocations.
3289
3290 ENUM
3291   BFD_RELOC_ARM_ALU_PC_G0_NC
3292 ENUMX
3293   BFD_RELOC_ARM_ALU_PC_G0
3294 ENUMX
3295   BFD_RELOC_ARM_ALU_PC_G1_NC
3296 ENUMX
3297   BFD_RELOC_ARM_ALU_PC_G1
3298 ENUMX
3299   BFD_RELOC_ARM_ALU_PC_G2
3300 ENUMX
3301   BFD_RELOC_ARM_LDR_PC_G0
3302 ENUMX
3303   BFD_RELOC_ARM_LDR_PC_G1
3304 ENUMX
3305   BFD_RELOC_ARM_LDR_PC_G2
3306 ENUMX
3307   BFD_RELOC_ARM_LDRS_PC_G0
3308 ENUMX
3309   BFD_RELOC_ARM_LDRS_PC_G1
3310 ENUMX
3311   BFD_RELOC_ARM_LDRS_PC_G2
3312 ENUMX
3313   BFD_RELOC_ARM_LDC_PC_G0
3314 ENUMX
3315   BFD_RELOC_ARM_LDC_PC_G1
3316 ENUMX
3317   BFD_RELOC_ARM_LDC_PC_G2
3318 ENUMX
3319   BFD_RELOC_ARM_ALU_SB_G0_NC
3320 ENUMX
3321   BFD_RELOC_ARM_ALU_SB_G0
3322 ENUMX
3323   BFD_RELOC_ARM_ALU_SB_G1_NC
3324 ENUMX
3325   BFD_RELOC_ARM_ALU_SB_G1
3326 ENUMX
3327   BFD_RELOC_ARM_ALU_SB_G2
3328 ENUMX
3329   BFD_RELOC_ARM_LDR_SB_G0
3330 ENUMX
3331   BFD_RELOC_ARM_LDR_SB_G1
3332 ENUMX
3333   BFD_RELOC_ARM_LDR_SB_G2
3334 ENUMX
3335   BFD_RELOC_ARM_LDRS_SB_G0
3336 ENUMX
3337   BFD_RELOC_ARM_LDRS_SB_G1
3338 ENUMX
3339   BFD_RELOC_ARM_LDRS_SB_G2
3340 ENUMX
3341   BFD_RELOC_ARM_LDC_SB_G0
3342 ENUMX
3343   BFD_RELOC_ARM_LDC_SB_G1
3344 ENUMX
3345   BFD_RELOC_ARM_LDC_SB_G2
3346 ENUMDOC
3347   ARM group relocations.
3348
3349 ENUM
3350   BFD_RELOC_ARM_V4BX
3351 ENUMDOC
3352   Annotation of BX instructions.
3353
3354 ENUM
3355   BFD_RELOC_ARM_IRELATIVE
3356 ENUMDOC
3357   ARM support for STT_GNU_IFUNC.
3358
3359 ENUM
3360   BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC
3361 ENUMX
3362   BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC
3363 ENUMX
3364   BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC
3365 ENUMX
3366   BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC
3367 ENUMDOC
3368   Thumb1 relocations to support execute-only code.
3369
3370 ENUM
3371   BFD_RELOC_ARM_IMMEDIATE
3372 ENUMX
3373   BFD_RELOC_ARM_ADRL_IMMEDIATE
3374 ENUMX
3375   BFD_RELOC_ARM_T32_IMMEDIATE
3376 ENUMX
3377   BFD_RELOC_ARM_T32_ADD_IMM
3378 ENUMX
3379   BFD_RELOC_ARM_T32_IMM12
3380 ENUMX
3381   BFD_RELOC_ARM_T32_ADD_PC12
3382 ENUMX
3383   BFD_RELOC_ARM_SHIFT_IMM
3384 ENUMX
3385   BFD_RELOC_ARM_SMC
3386 ENUMX
3387   BFD_RELOC_ARM_HVC
3388 ENUMX
3389   BFD_RELOC_ARM_SWI
3390 ENUMX
3391   BFD_RELOC_ARM_MULTI
3392 ENUMX
3393   BFD_RELOC_ARM_CP_OFF_IMM
3394 ENUMX
3395   BFD_RELOC_ARM_CP_OFF_IMM_S2
3396 ENUMX
3397   BFD_RELOC_ARM_T32_CP_OFF_IMM
3398 ENUMX
3399   BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
3400 ENUMX
3401   BFD_RELOC_ARM_ADR_IMM
3402 ENUMX
3403   BFD_RELOC_ARM_LDR_IMM
3404 ENUMX
3405   BFD_RELOC_ARM_LITERAL
3406 ENUMX
3407   BFD_RELOC_ARM_IN_POOL
3408 ENUMX
3409   BFD_RELOC_ARM_OFFSET_IMM8
3410 ENUMX
3411   BFD_RELOC_ARM_T32_OFFSET_U8
3412 ENUMX
3413   BFD_RELOC_ARM_T32_OFFSET_IMM
3414 ENUMX
3415   BFD_RELOC_ARM_HWLITERAL
3416 ENUMX
3417   BFD_RELOC_ARM_THUMB_ADD
3418 ENUMX
3419   BFD_RELOC_ARM_THUMB_IMM
3420 ENUMX
3421   BFD_RELOC_ARM_THUMB_SHIFT
3422 ENUMDOC
3423   These relocs are only used within the ARM assembler.  They are not
3424   (at present) written to any object files.
3425
3426 ENUM
3427   BFD_RELOC_SH_PCDISP8BY2
3428 ENUMX
3429   BFD_RELOC_SH_PCDISP12BY2
3430 ENUMX
3431   BFD_RELOC_SH_IMM3
3432 ENUMX
3433   BFD_RELOC_SH_IMM3U
3434 ENUMX
3435   BFD_RELOC_SH_DISP12
3436 ENUMX
3437   BFD_RELOC_SH_DISP12BY2
3438 ENUMX
3439   BFD_RELOC_SH_DISP12BY4
3440 ENUMX
3441   BFD_RELOC_SH_DISP12BY8
3442 ENUMX
3443   BFD_RELOC_SH_DISP20
3444 ENUMX
3445   BFD_RELOC_SH_DISP20BY8
3446 ENUMX
3447   BFD_RELOC_SH_IMM4
3448 ENUMX
3449   BFD_RELOC_SH_IMM4BY2
3450 ENUMX
3451   BFD_RELOC_SH_IMM4BY4
3452 ENUMX
3453   BFD_RELOC_SH_IMM8
3454 ENUMX
3455   BFD_RELOC_SH_IMM8BY2
3456 ENUMX
3457   BFD_RELOC_SH_IMM8BY4
3458 ENUMX
3459   BFD_RELOC_SH_PCRELIMM8BY2
3460 ENUMX
3461   BFD_RELOC_SH_PCRELIMM8BY4
3462 ENUMX
3463   BFD_RELOC_SH_SWITCH16
3464 ENUMX
3465   BFD_RELOC_SH_SWITCH32
3466 ENUMX
3467   BFD_RELOC_SH_USES
3468 ENUMX
3469   BFD_RELOC_SH_COUNT
3470 ENUMX
3471   BFD_RELOC_SH_ALIGN
3472 ENUMX
3473   BFD_RELOC_SH_CODE
3474 ENUMX
3475   BFD_RELOC_SH_DATA
3476 ENUMX
3477   BFD_RELOC_SH_LABEL
3478 ENUMX
3479   BFD_RELOC_SH_LOOP_START
3480 ENUMX
3481   BFD_RELOC_SH_LOOP_END
3482 ENUMX
3483   BFD_RELOC_SH_COPY
3484 ENUMX
3485   BFD_RELOC_SH_GLOB_DAT
3486 ENUMX
3487   BFD_RELOC_SH_JMP_SLOT
3488 ENUMX
3489   BFD_RELOC_SH_RELATIVE
3490 ENUMX
3491   BFD_RELOC_SH_GOTPC
3492 ENUMX
3493   BFD_RELOC_SH_GOT_LOW16
3494 ENUMX
3495   BFD_RELOC_SH_GOT_MEDLOW16
3496 ENUMX
3497   BFD_RELOC_SH_GOT_MEDHI16
3498 ENUMX
3499   BFD_RELOC_SH_GOT_HI16
3500 ENUMX
3501   BFD_RELOC_SH_GOTPLT_LOW16
3502 ENUMX
3503   BFD_RELOC_SH_GOTPLT_MEDLOW16
3504 ENUMX
3505   BFD_RELOC_SH_GOTPLT_MEDHI16
3506 ENUMX
3507   BFD_RELOC_SH_GOTPLT_HI16
3508 ENUMX
3509   BFD_RELOC_SH_PLT_LOW16
3510 ENUMX
3511   BFD_RELOC_SH_PLT_MEDLOW16
3512 ENUMX
3513   BFD_RELOC_SH_PLT_MEDHI16
3514 ENUMX
3515   BFD_RELOC_SH_PLT_HI16
3516 ENUMX
3517   BFD_RELOC_SH_GOTOFF_LOW16
3518 ENUMX
3519   BFD_RELOC_SH_GOTOFF_MEDLOW16
3520 ENUMX
3521   BFD_RELOC_SH_GOTOFF_MEDHI16
3522 ENUMX
3523   BFD_RELOC_SH_GOTOFF_HI16
3524 ENUMX
3525   BFD_RELOC_SH_GOTPC_LOW16
3526 ENUMX
3527   BFD_RELOC_SH_GOTPC_MEDLOW16
3528 ENUMX
3529   BFD_RELOC_SH_GOTPC_MEDHI16
3530 ENUMX
3531   BFD_RELOC_SH_GOTPC_HI16
3532 ENUMX
3533   BFD_RELOC_SH_COPY64
3534 ENUMX
3535   BFD_RELOC_SH_GLOB_DAT64
3536 ENUMX
3537   BFD_RELOC_SH_JMP_SLOT64
3538 ENUMX
3539   BFD_RELOC_SH_RELATIVE64
3540 ENUMX
3541   BFD_RELOC_SH_GOT10BY4
3542 ENUMX
3543   BFD_RELOC_SH_GOT10BY8
3544 ENUMX
3545   BFD_RELOC_SH_GOTPLT10BY4
3546 ENUMX
3547   BFD_RELOC_SH_GOTPLT10BY8
3548 ENUMX
3549   BFD_RELOC_SH_GOTPLT32
3550 ENUMX
3551   BFD_RELOC_SH_SHMEDIA_CODE
3552 ENUMX
3553   BFD_RELOC_SH_IMMU5
3554 ENUMX
3555   BFD_RELOC_SH_IMMS6
3556 ENUMX
3557   BFD_RELOC_SH_IMMS6BY32
3558 ENUMX
3559   BFD_RELOC_SH_IMMU6
3560 ENUMX
3561   BFD_RELOC_SH_IMMS10
3562 ENUMX
3563   BFD_RELOC_SH_IMMS10BY2
3564 ENUMX
3565   BFD_RELOC_SH_IMMS10BY4
3566 ENUMX
3567   BFD_RELOC_SH_IMMS10BY8
3568 ENUMX
3569   BFD_RELOC_SH_IMMS16
3570 ENUMX
3571   BFD_RELOC_SH_IMMU16
3572 ENUMX
3573   BFD_RELOC_SH_IMM_LOW16
3574 ENUMX
3575   BFD_RELOC_SH_IMM_LOW16_PCREL
3576 ENUMX
3577   BFD_RELOC_SH_IMM_MEDLOW16
3578 ENUMX
3579   BFD_RELOC_SH_IMM_MEDLOW16_PCREL
3580 ENUMX
3581   BFD_RELOC_SH_IMM_MEDHI16
3582 ENUMX
3583   BFD_RELOC_SH_IMM_MEDHI16_PCREL
3584 ENUMX
3585   BFD_RELOC_SH_IMM_HI16
3586 ENUMX
3587   BFD_RELOC_SH_IMM_HI16_PCREL
3588 ENUMX
3589   BFD_RELOC_SH_PT_16
3590 ENUMX
3591   BFD_RELOC_SH_TLS_GD_32
3592 ENUMX
3593   BFD_RELOC_SH_TLS_LD_32
3594 ENUMX
3595   BFD_RELOC_SH_TLS_LDO_32
3596 ENUMX
3597   BFD_RELOC_SH_TLS_IE_32
3598 ENUMX
3599   BFD_RELOC_SH_TLS_LE_32
3600 ENUMX
3601   BFD_RELOC_SH_TLS_DTPMOD32
3602 ENUMX
3603   BFD_RELOC_SH_TLS_DTPOFF32
3604 ENUMX
3605   BFD_RELOC_SH_TLS_TPOFF32
3606 ENUMX
3607   BFD_RELOC_SH_GOT20
3608 ENUMX
3609   BFD_RELOC_SH_GOTOFF20
3610 ENUMX
3611   BFD_RELOC_SH_GOTFUNCDESC
3612 ENUMX
3613   BFD_RELOC_SH_GOTFUNCDESC20
3614 ENUMX
3615   BFD_RELOC_SH_GOTOFFFUNCDESC
3616 ENUMX
3617   BFD_RELOC_SH_GOTOFFFUNCDESC20
3618 ENUMX
3619   BFD_RELOC_SH_FUNCDESC
3620 ENUMDOC
3621   Renesas / SuperH SH relocs.  Not all of these appear in object files.
3622
3623 ENUM
3624   BFD_RELOC_ARC_NONE
3625 ENUMX
3626   BFD_RELOC_ARC_8
3627 ENUMX
3628   BFD_RELOC_ARC_16
3629 ENUMX
3630   BFD_RELOC_ARC_24
3631 ENUMX
3632   BFD_RELOC_ARC_32
3633 ENUMX
3634   BFD_RELOC_ARC_N8
3635 ENUMX
3636   BFD_RELOC_ARC_N16
3637 ENUMX
3638   BFD_RELOC_ARC_N24
3639 ENUMX
3640   BFD_RELOC_ARC_N32
3641 ENUMX
3642   BFD_RELOC_ARC_SDA
3643 ENUMX
3644   BFD_RELOC_ARC_SECTOFF
3645 ENUMX
3646   BFD_RELOC_ARC_S21H_PCREL
3647 ENUMX
3648   BFD_RELOC_ARC_S21W_PCREL
3649 ENUMX
3650   BFD_RELOC_ARC_S25H_PCREL
3651 ENUMX
3652   BFD_RELOC_ARC_S25W_PCREL
3653 ENUMX
3654   BFD_RELOC_ARC_SDA32
3655 ENUMX
3656   BFD_RELOC_ARC_SDA_LDST
3657 ENUMX
3658   BFD_RELOC_ARC_SDA_LDST1
3659 ENUMX
3660   BFD_RELOC_ARC_SDA_LDST2
3661 ENUMX
3662   BFD_RELOC_ARC_SDA16_LD
3663 ENUMX
3664   BFD_RELOC_ARC_SDA16_LD1
3665 ENUMX
3666   BFD_RELOC_ARC_SDA16_LD2
3667 ENUMX
3668   BFD_RELOC_ARC_S13_PCREL
3669 ENUMX
3670   BFD_RELOC_ARC_W
3671 ENUMX
3672   BFD_RELOC_ARC_32_ME
3673 ENUMX
3674   BFD_RELOC_ARC_32_ME_S
3675 ENUMX
3676   BFD_RELOC_ARC_N32_ME
3677 ENUMX
3678   BFD_RELOC_ARC_SECTOFF_ME
3679 ENUMX
3680   BFD_RELOC_ARC_SDA32_ME
3681 ENUMX
3682   BFD_RELOC_ARC_W_ME
3683 ENUMX
3684   BFD_RELOC_AC_SECTOFF_U8
3685 ENUMX
3686   BFD_RELOC_AC_SECTOFF_U8_1
3687 ENUMX
3688   BFD_RELOC_AC_SECTOFF_U8_2
3689 ENUMX
3690   BFD_RELOC_AC_SECTOFF_S9
3691 ENUMX
3692   BFD_RELOC_AC_SECTOFF_S9_1
3693 ENUMX
3694   BFD_RELOC_AC_SECTOFF_S9_2
3695 ENUMX
3696   BFD_RELOC_ARC_SECTOFF_ME_1
3697 ENUMX
3698   BFD_RELOC_ARC_SECTOFF_ME_2
3699 ENUMX
3700   BFD_RELOC_ARC_SECTOFF_1
3701 ENUMX
3702   BFD_RELOC_ARC_SECTOFF_2
3703 ENUMX
3704   BFD_RELOC_ARC_SDA_12
3705 ENUMX
3706   BFD_RELOC_ARC_SDA16_ST2
3707 ENUMX
3708   BFD_RELOC_ARC_32_PCREL
3709 ENUMX
3710   BFD_RELOC_ARC_PC32
3711 ENUMX
3712   BFD_RELOC_ARC_GOT32
3713 ENUMX
3714   BFD_RELOC_ARC_GOTPC32
3715 ENUMX
3716   BFD_RELOC_ARC_PLT32
3717 ENUMX
3718   BFD_RELOC_ARC_COPY
3719 ENUMX
3720   BFD_RELOC_ARC_GLOB_DAT
3721 ENUMX
3722   BFD_RELOC_ARC_JMP_SLOT
3723 ENUMX
3724   BFD_RELOC_ARC_RELATIVE
3725 ENUMX
3726   BFD_RELOC_ARC_GOTOFF
3727 ENUMX
3728   BFD_RELOC_ARC_GOTPC
3729 ENUMX
3730   BFD_RELOC_ARC_S21W_PCREL_PLT
3731 ENUMX
3732   BFD_RELOC_ARC_S25H_PCREL_PLT
3733 ENUMX
3734   BFD_RELOC_ARC_TLS_DTPMOD
3735 ENUMX
3736   BFD_RELOC_ARC_TLS_TPOFF
3737 ENUMX
3738   BFD_RELOC_ARC_TLS_GD_GOT
3739 ENUMX
3740   BFD_RELOC_ARC_TLS_GD_LD
3741 ENUMX
3742   BFD_RELOC_ARC_TLS_GD_CALL
3743 ENUMX
3744   BFD_RELOC_ARC_TLS_IE_GOT
3745 ENUMX
3746   BFD_RELOC_ARC_TLS_DTPOFF
3747 ENUMX
3748   BFD_RELOC_ARC_TLS_DTPOFF_S9
3749 ENUMX
3750   BFD_RELOC_ARC_TLS_LE_S9
3751 ENUMX
3752   BFD_RELOC_ARC_TLS_LE_32
3753 ENUMX
3754   BFD_RELOC_ARC_S25W_PCREL_PLT
3755 ENUMX
3756   BFD_RELOC_ARC_S21H_PCREL_PLT
3757 ENUMX
3758   BFD_RELOC_ARC_NPS_CMEM16
3759 ENUMX
3760   BFD_RELOC_ARC_JLI_SECTOFF
3761 ENUMDOC
3762   ARC relocs.
3763
3764 ENUM
3765   BFD_RELOC_BFIN_16_IMM
3766 ENUMDOC
3767   ADI Blackfin 16 bit immediate absolute reloc.
3768 ENUM
3769   BFD_RELOC_BFIN_16_HIGH
3770 ENUMDOC
3771   ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
3772 ENUM
3773   BFD_RELOC_BFIN_4_PCREL
3774 ENUMDOC
3775   ADI Blackfin 'a' part of LSETUP.
3776 ENUM
3777   BFD_RELOC_BFIN_5_PCREL
3778 ENUMDOC
3779   ADI Blackfin.
3780 ENUM
3781   BFD_RELOC_BFIN_16_LOW
3782 ENUMDOC
3783   ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
3784 ENUM
3785   BFD_RELOC_BFIN_10_PCREL
3786 ENUMDOC
3787   ADI Blackfin.
3788 ENUM
3789   BFD_RELOC_BFIN_11_PCREL
3790 ENUMDOC
3791   ADI Blackfin 'b' part of LSETUP.
3792 ENUM
3793   BFD_RELOC_BFIN_12_PCREL_JUMP
3794 ENUMDOC
3795   ADI Blackfin.
3796 ENUM
3797   BFD_RELOC_BFIN_12_PCREL_JUMP_S
3798 ENUMDOC
3799   ADI Blackfin Short jump, pcrel.
3800 ENUM
3801   BFD_RELOC_BFIN_24_PCREL_CALL_X
3802 ENUMDOC
3803   ADI Blackfin Call.x not implemented.
3804 ENUM
3805   BFD_RELOC_BFIN_24_PCREL_JUMP_L
3806 ENUMDOC
3807   ADI Blackfin Long Jump pcrel.
3808 ENUM
3809   BFD_RELOC_BFIN_GOT17M4
3810 ENUMX
3811   BFD_RELOC_BFIN_GOTHI
3812 ENUMX
3813   BFD_RELOC_BFIN_GOTLO
3814 ENUMX
3815   BFD_RELOC_BFIN_FUNCDESC
3816 ENUMX
3817   BFD_RELOC_BFIN_FUNCDESC_GOT17M4
3818 ENUMX
3819   BFD_RELOC_BFIN_FUNCDESC_GOTHI
3820 ENUMX
3821   BFD_RELOC_BFIN_FUNCDESC_GOTLO
3822 ENUMX
3823   BFD_RELOC_BFIN_FUNCDESC_VALUE
3824 ENUMX
3825   BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
3826 ENUMX
3827   BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
3828 ENUMX
3829   BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
3830 ENUMX
3831   BFD_RELOC_BFIN_GOTOFF17M4
3832 ENUMX
3833   BFD_RELOC_BFIN_GOTOFFHI
3834 ENUMX
3835   BFD_RELOC_BFIN_GOTOFFLO
3836 ENUMDOC
3837   ADI Blackfin FD-PIC relocations.
3838 ENUM
3839   BFD_RELOC_BFIN_GOT
3840 ENUMDOC
3841   ADI Blackfin GOT relocation.
3842 ENUM
3843   BFD_RELOC_BFIN_PLTPC
3844 ENUMDOC
3845   ADI Blackfin PLTPC relocation.
3846 ENUM
3847   BFD_ARELOC_BFIN_PUSH
3848 ENUMDOC
3849   ADI Blackfin arithmetic relocation.
3850 ENUM
3851   BFD_ARELOC_BFIN_CONST
3852 ENUMDOC
3853   ADI Blackfin arithmetic relocation.
3854 ENUM
3855   BFD_ARELOC_BFIN_ADD
3856 ENUMDOC
3857   ADI Blackfin arithmetic relocation.
3858 ENUM
3859   BFD_ARELOC_BFIN_SUB
3860 ENUMDOC
3861   ADI Blackfin arithmetic relocation.
3862 ENUM
3863   BFD_ARELOC_BFIN_MULT
3864 ENUMDOC
3865   ADI Blackfin arithmetic relocation.
3866 ENUM
3867   BFD_ARELOC_BFIN_DIV
3868 ENUMDOC
3869   ADI Blackfin arithmetic relocation.
3870 ENUM
3871   BFD_ARELOC_BFIN_MOD
3872 ENUMDOC
3873   ADI Blackfin arithmetic relocation.
3874 ENUM
3875   BFD_ARELOC_BFIN_LSHIFT
3876 ENUMDOC
3877   ADI Blackfin arithmetic relocation.
3878 ENUM
3879   BFD_ARELOC_BFIN_RSHIFT
3880 ENUMDOC
3881   ADI Blackfin arithmetic relocation.
3882 ENUM
3883   BFD_ARELOC_BFIN_AND
3884 ENUMDOC
3885   ADI Blackfin arithmetic relocation.
3886 ENUM
3887   BFD_ARELOC_BFIN_OR
3888 ENUMDOC
3889   ADI Blackfin arithmetic relocation.
3890 ENUM
3891   BFD_ARELOC_BFIN_XOR
3892 ENUMDOC
3893   ADI Blackfin arithmetic relocation.
3894 ENUM
3895   BFD_ARELOC_BFIN_LAND
3896 ENUMDOC
3897   ADI Blackfin arithmetic relocation.
3898 ENUM
3899   BFD_ARELOC_BFIN_LOR
3900 ENUMDOC
3901   ADI Blackfin arithmetic relocation.
3902 ENUM
3903   BFD_ARELOC_BFIN_LEN
3904 ENUMDOC
3905   ADI Blackfin arithmetic relocation.
3906 ENUM
3907   BFD_ARELOC_BFIN_NEG
3908 ENUMDOC
3909   ADI Blackfin arithmetic relocation.
3910 ENUM
3911   BFD_ARELOC_BFIN_COMP
3912 ENUMDOC
3913   ADI Blackfin arithmetic relocation.
3914 ENUM
3915   BFD_ARELOC_BFIN_PAGE
3916 ENUMDOC
3917   ADI Blackfin arithmetic relocation.
3918 ENUM
3919   BFD_ARELOC_BFIN_HWPAGE
3920 ENUMDOC
3921   ADI Blackfin arithmetic relocation.
3922 ENUM
3923   BFD_ARELOC_BFIN_ADDR
3924 ENUMDOC
3925   ADI Blackfin arithmetic relocation.
3926
3927 ENUM
3928   BFD_RELOC_D10V_10_PCREL_R
3929 ENUMDOC
3930   Mitsubishi D10V relocs.
3931   This is a 10-bit reloc with the right 2 bits
3932   assumed to be 0.
3933 ENUM
3934   BFD_RELOC_D10V_10_PCREL_L
3935 ENUMDOC
3936   Mitsubishi D10V relocs.
3937   This is a 10-bit reloc with the right 2 bits
3938   assumed to be 0.  This is the same as the previous reloc
3939   except it is in the left container, i.e.,
3940   shifted left 15 bits.
3941 ENUM
3942   BFD_RELOC_D10V_18
3943 ENUMDOC
3944   This is an 18-bit reloc with the right 2 bits
3945   assumed to be 0.
3946 ENUM
3947   BFD_RELOC_D10V_18_PCREL
3948 ENUMDOC
3949   This is an 18-bit reloc with the right 2 bits
3950   assumed to be 0.
3951
3952 ENUM
3953   BFD_RELOC_D30V_6
3954 ENUMDOC
3955   Mitsubishi D30V relocs.
3956   This is a 6-bit absolute reloc.
3957 ENUM
3958   BFD_RELOC_D30V_9_PCREL
3959 ENUMDOC
3960   This is a 6-bit pc-relative reloc with
3961   the right 3 bits assumed to be 0.
3962 ENUM
3963   BFD_RELOC_D30V_9_PCREL_R
3964 ENUMDOC
3965   This is a 6-bit pc-relative reloc with
3966   the right 3 bits assumed to be 0. Same
3967   as the previous reloc but on the right side
3968   of the container.
3969 ENUM
3970   BFD_RELOC_D30V_15
3971 ENUMDOC
3972   This is a 12-bit absolute reloc with the
3973   right 3 bitsassumed to be 0.
3974 ENUM
3975   BFD_RELOC_D30V_15_PCREL
3976 ENUMDOC
3977   This is a 12-bit pc-relative reloc with
3978   the right 3 bits assumed to be 0.
3979 ENUM
3980   BFD_RELOC_D30V_15_PCREL_R
3981 ENUMDOC
3982   This is a 12-bit pc-relative reloc with
3983   the right 3 bits assumed to be 0. Same
3984   as the previous reloc but on the right side
3985   of the container.
3986 ENUM
3987   BFD_RELOC_D30V_21
3988 ENUMDOC
3989   This is an 18-bit absolute reloc with
3990   the right 3 bits assumed to be 0.
3991 ENUM
3992   BFD_RELOC_D30V_21_PCREL
3993 ENUMDOC
3994   This is an 18-bit pc-relative reloc with
3995   the right 3 bits assumed to be 0.
3996 ENUM
3997   BFD_RELOC_D30V_21_PCREL_R
3998 ENUMDOC
3999   This is an 18-bit pc-relative reloc with
4000   the right 3 bits assumed to be 0. Same
4001   as the previous reloc but on the right side
4002   of the container.
4003 ENUM
4004   BFD_RELOC_D30V_32
4005 ENUMDOC
4006   This is a 32-bit absolute reloc.
4007 ENUM
4008   BFD_RELOC_D30V_32_PCREL
4009 ENUMDOC
4010   This is a 32-bit pc-relative reloc.
4011
4012 ENUM
4013   BFD_RELOC_DLX_HI16_S
4014 ENUMDOC
4015   DLX relocs
4016 ENUM
4017   BFD_RELOC_DLX_LO16
4018 ENUMDOC
4019   DLX relocs
4020 ENUM
4021   BFD_RELOC_DLX_JMP26
4022 ENUMDOC
4023   DLX relocs
4024
4025 ENUM
4026   BFD_RELOC_M32C_HI8
4027 ENUMX
4028   BFD_RELOC_M32C_RL_JUMP
4029 ENUMX
4030   BFD_RELOC_M32C_RL_1ADDR
4031 ENUMX
4032   BFD_RELOC_M32C_RL_2ADDR
4033 ENUMDOC
4034   Renesas M16C/M32C Relocations.
4035
4036 ENUM
4037   BFD_RELOC_M32R_24
4038 ENUMDOC
4039   Renesas M32R (formerly Mitsubishi M32R) relocs.
4040   This is a 24 bit absolute address.
4041 ENUM
4042   BFD_RELOC_M32R_10_PCREL
4043 ENUMDOC
4044   This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.
4045 ENUM
4046   BFD_RELOC_M32R_18_PCREL
4047 ENUMDOC
4048   This is an 18-bit reloc with the right 2 bits assumed to be 0.
4049 ENUM
4050   BFD_RELOC_M32R_26_PCREL
4051 ENUMDOC
4052   This is a 26-bit reloc with the right 2 bits assumed to be 0.
4053 ENUM
4054   BFD_RELOC_M32R_HI16_ULO
4055 ENUMDOC
4056   This is a 16-bit reloc containing the high 16 bits of an address
4057   used when the lower 16 bits are treated as unsigned.
4058 ENUM
4059   BFD_RELOC_M32R_HI16_SLO
4060 ENUMDOC
4061   This is a 16-bit reloc containing the high 16 bits of an address
4062   used when the lower 16 bits are treated as signed.
4063 ENUM
4064   BFD_RELOC_M32R_LO16
4065 ENUMDOC
4066   This is a 16-bit reloc containing the lower 16 bits of an address.
4067 ENUM
4068   BFD_RELOC_M32R_SDA16
4069 ENUMDOC
4070   This is a 16-bit reloc containing the small data area offset for use in
4071   add3, load, and store instructions.
4072 ENUM
4073   BFD_RELOC_M32R_GOT24
4074 ENUMX
4075   BFD_RELOC_M32R_26_PLTREL
4076 ENUMX
4077   BFD_RELOC_M32R_COPY
4078 ENUMX
4079   BFD_RELOC_M32R_GLOB_DAT
4080 ENUMX
4081   BFD_RELOC_M32R_JMP_SLOT
4082 ENUMX
4083   BFD_RELOC_M32R_RELATIVE
4084 ENUMX
4085   BFD_RELOC_M32R_GOTOFF
4086 ENUMX
4087   BFD_RELOC_M32R_GOTOFF_HI_ULO
4088 ENUMX
4089   BFD_RELOC_M32R_GOTOFF_HI_SLO
4090 ENUMX
4091   BFD_RELOC_M32R_GOTOFF_LO
4092 ENUMX
4093   BFD_RELOC_M32R_GOTPC24
4094 ENUMX
4095   BFD_RELOC_M32R_GOT16_HI_ULO
4096 ENUMX
4097   BFD_RELOC_M32R_GOT16_HI_SLO
4098 ENUMX
4099   BFD_RELOC_M32R_GOT16_LO
4100 ENUMX
4101   BFD_RELOC_M32R_GOTPC_HI_ULO
4102 ENUMX
4103   BFD_RELOC_M32R_GOTPC_HI_SLO
4104 ENUMX
4105   BFD_RELOC_M32R_GOTPC_LO
4106 ENUMDOC
4107   For PIC.
4108
4109
4110 ENUM
4111   BFD_RELOC_NDS32_20
4112 ENUMDOC
4113   NDS32 relocs.
4114   This is a 20 bit absolute address.
4115 ENUM
4116   BFD_RELOC_NDS32_9_PCREL
4117 ENUMDOC
4118   This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.
4119 ENUM
4120   BFD_RELOC_NDS32_WORD_9_PCREL
4121 ENUMDOC
4122   This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.
4123 ENUM
4124   BFD_RELOC_NDS32_15_PCREL
4125 ENUMDOC
4126   This is an 15-bit reloc with the right 1 bit assumed to be 0.
4127 ENUM
4128   BFD_RELOC_NDS32_17_PCREL
4129 ENUMDOC
4130   This is an 17-bit reloc with the right 1 bit assumed to be 0.
4131 ENUM
4132   BFD_RELOC_NDS32_25_PCREL
4133 ENUMDOC
4134   This is a 25-bit reloc with the right 1 bit assumed to be 0.
4135 ENUM
4136   BFD_RELOC_NDS32_HI20
4137 ENUMDOC
4138   This is a 20-bit reloc containing the high 20 bits of an address
4139   used with the lower 12 bits
4140 ENUM
4141   BFD_RELOC_NDS32_LO12S3
4142 ENUMDOC
4143   This is a 12-bit reloc containing the lower 12 bits of an address
4144   then shift right by 3. This is used with ldi,sdi...
4145 ENUM
4146   BFD_RELOC_NDS32_LO12S2
4147 ENUMDOC
4148   This is a 12-bit reloc containing the lower 12 bits of an address
4149   then shift left by 2. This is used with lwi,swi...
4150 ENUM
4151   BFD_RELOC_NDS32_LO12S1
4152 ENUMDOC
4153   This is a 12-bit reloc containing the lower 12 bits of an address
4154   then shift left by 1. This is used with lhi,shi...
4155 ENUM
4156   BFD_RELOC_NDS32_LO12S0
4157 ENUMDOC
4158   This is a 12-bit reloc containing the lower 12 bits of an address
4159   then shift left by 0. This is used with lbisbi...
4160 ENUM
4161   BFD_RELOC_NDS32_LO12S0_ORI
4162 ENUMDOC
4163   This is a 12-bit reloc containing the lower 12 bits of an address
4164   then shift left by 0. This is only used with branch relaxations
4165 ENUM
4166   BFD_RELOC_NDS32_SDA15S3
4167 ENUMDOC
4168   This is a 15-bit reloc containing the small data area 18-bit signed offset
4169   and shift left by 3 for use in ldi, sdi...
4170 ENUM
4171   BFD_RELOC_NDS32_SDA15S2
4172 ENUMDOC
4173   This is a 15-bit reloc containing the small data area 17-bit signed offset
4174   and shift left by 2 for use in lwi, swi...
4175 ENUM
4176   BFD_RELOC_NDS32_SDA15S1
4177 ENUMDOC
4178   This is a 15-bit reloc containing the small data area 16-bit signed offset
4179   and shift left by 1 for use in lhi, shi...
4180 ENUM
4181   BFD_RELOC_NDS32_SDA15S0
4182 ENUMDOC
4183   This is a 15-bit reloc containing the small data area 15-bit signed offset
4184   and shift left by 0 for use in lbi, sbi...
4185 ENUM
4186   BFD_RELOC_NDS32_SDA16S3
4187 ENUMDOC
4188   This is a 16-bit reloc containing the small data area 16-bit signed offset
4189   and shift left by 3
4190 ENUM
4191   BFD_RELOC_NDS32_SDA17S2
4192 ENUMDOC
4193   This is a 17-bit reloc containing the small data area 17-bit signed offset
4194   and shift left by 2 for use in lwi.gp, swi.gp...
4195 ENUM
4196   BFD_RELOC_NDS32_SDA18S1
4197 ENUMDOC
4198   This is a 18-bit reloc containing the small data area 18-bit signed offset
4199   and shift left by 1 for use in lhi.gp, shi.gp...
4200 ENUM
4201   BFD_RELOC_NDS32_SDA19S0
4202 ENUMDOC
4203   This is a 19-bit reloc containing the small data area 19-bit signed offset
4204   and shift left by 0 for use in lbi.gp, sbi.gp...
4205 ENUM
4206   BFD_RELOC_NDS32_GOT20
4207 ENUMX
4208   BFD_RELOC_NDS32_9_PLTREL
4209 ENUMX
4210   BFD_RELOC_NDS32_25_PLTREL
4211 ENUMX
4212   BFD_RELOC_NDS32_COPY
4213 ENUMX
4214   BFD_RELOC_NDS32_GLOB_DAT
4215 ENUMX
4216   BFD_RELOC_NDS32_JMP_SLOT
4217 ENUMX
4218   BFD_RELOC_NDS32_RELATIVE
4219 ENUMX
4220   BFD_RELOC_NDS32_GOTOFF
4221 ENUMX
4222   BFD_RELOC_NDS32_GOTOFF_HI20
4223 ENUMX
4224   BFD_RELOC_NDS32_GOTOFF_LO12
4225 ENUMX
4226   BFD_RELOC_NDS32_GOTPC20
4227 ENUMX
4228   BFD_RELOC_NDS32_GOT_HI20
4229 ENUMX
4230   BFD_RELOC_NDS32_GOT_LO12
4231 ENUMX
4232   BFD_RELOC_NDS32_GOTPC_HI20
4233 ENUMX
4234   BFD_RELOC_NDS32_GOTPC_LO12
4235 ENUMDOC
4236   for PIC
4237 ENUM
4238   BFD_RELOC_NDS32_INSN16
4239 ENUMX
4240   BFD_RELOC_NDS32_LABEL
4241 ENUMX
4242   BFD_RELOC_NDS32_LONGCALL1
4243 ENUMX
4244   BFD_RELOC_NDS32_LONGCALL2
4245 ENUMX
4246   BFD_RELOC_NDS32_LONGCALL3
4247 ENUMX
4248   BFD_RELOC_NDS32_LONGJUMP1
4249 ENUMX
4250   BFD_RELOC_NDS32_LONGJUMP2
4251 ENUMX
4252   BFD_RELOC_NDS32_LONGJUMP3
4253 ENUMX
4254   BFD_RELOC_NDS32_LOADSTORE
4255 ENUMX
4256   BFD_RELOC_NDS32_9_FIXED
4257 ENUMX
4258   BFD_RELOC_NDS32_15_FIXED
4259 ENUMX
4260   BFD_RELOC_NDS32_17_FIXED
4261 ENUMX
4262   BFD_RELOC_NDS32_25_FIXED
4263 ENUMX
4264   BFD_RELOC_NDS32_LONGCALL4
4265 ENUMX
4266   BFD_RELOC_NDS32_LONGCALL5
4267 ENUMX
4268   BFD_RELOC_NDS32_LONGCALL6
4269 ENUMX
4270   BFD_RELOC_NDS32_LONGJUMP4
4271 ENUMX
4272   BFD_RELOC_NDS32_LONGJUMP5
4273 ENUMX
4274   BFD_RELOC_NDS32_LONGJUMP6
4275 ENUMX
4276   BFD_RELOC_NDS32_LONGJUMP7
4277 ENUMDOC
4278   for relax
4279 ENUM
4280   BFD_RELOC_NDS32_PLTREL_HI20
4281 ENUMX
4282   BFD_RELOC_NDS32_PLTREL_LO12
4283 ENUMX
4284   BFD_RELOC_NDS32_PLT_GOTREL_HI20
4285 ENUMX
4286   BFD_RELOC_NDS32_PLT_GOTREL_LO12
4287 ENUMDOC
4288   for PIC
4289 ENUM
4290   BFD_RELOC_NDS32_SDA12S2_DP
4291 ENUMX
4292   BFD_RELOC_NDS32_SDA12S2_SP
4293 ENUMX
4294   BFD_RELOC_NDS32_LO12S2_DP
4295 ENUMX
4296   BFD_RELOC_NDS32_LO12S2_SP
4297 ENUMDOC
4298   for floating point
4299 ENUM
4300   BFD_RELOC_NDS32_DWARF2_OP1
4301 ENUMX
4302   BFD_RELOC_NDS32_DWARF2_OP2
4303 ENUMX
4304   BFD_RELOC_NDS32_DWARF2_LEB
4305 ENUMDOC
4306   for dwarf2 debug_line.
4307 ENUM
4308   BFD_RELOC_NDS32_UPDATE_TA
4309 ENUMDOC
4310   for eliminate 16-bit instructions
4311 ENUM
4312   BFD_RELOC_NDS32_PLT_GOTREL_LO20
4313 ENUMX
4314   BFD_RELOC_NDS32_PLT_GOTREL_LO15
4315 ENUMX
4316   BFD_RELOC_NDS32_PLT_GOTREL_LO19
4317 ENUMX
4318   BFD_RELOC_NDS32_GOT_LO15
4319 ENUMX
4320   BFD_RELOC_NDS32_GOT_LO19
4321 ENUMX
4322   BFD_RELOC_NDS32_GOTOFF_LO15
4323 ENUMX
4324   BFD_RELOC_NDS32_GOTOFF_LO19
4325 ENUMX
4326   BFD_RELOC_NDS32_GOT15S2
4327 ENUMX
4328   BFD_RELOC_NDS32_GOT17S2
4329 ENUMDOC
4330   for PIC object relaxation
4331 ENUM
4332   BFD_RELOC_NDS32_5
4333 ENUMDOC
4334   NDS32 relocs.
4335   This is a 5 bit absolute address.
4336 ENUM
4337   BFD_RELOC_NDS32_10_UPCREL
4338 ENUMDOC
4339   This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0.
4340 ENUM
4341   BFD_RELOC_NDS32_SDA_FP7U2_RELA
4342 ENUMDOC
4343   If fp were omitted, fp can used as another gp.
4344 ENUM
4345   BFD_RELOC_NDS32_RELAX_ENTRY
4346 ENUMX
4347   BFD_RELOC_NDS32_GOT_SUFF
4348 ENUMX
4349   BFD_RELOC_NDS32_GOTOFF_SUFF
4350 ENUMX
4351   BFD_RELOC_NDS32_PLT_GOT_SUFF
4352 ENUMX
4353   BFD_RELOC_NDS32_MULCALL_SUFF
4354 ENUMX
4355   BFD_RELOC_NDS32_PTR
4356 ENUMX
4357   BFD_RELOC_NDS32_PTR_COUNT
4358 ENUMX
4359   BFD_RELOC_NDS32_PTR_RESOLVED
4360 ENUMX
4361   BFD_RELOC_NDS32_PLTBLOCK
4362 ENUMX
4363   BFD_RELOC_NDS32_RELAX_REGION_BEGIN
4364 ENUMX
4365   BFD_RELOC_NDS32_RELAX_REGION_END
4366 ENUMX
4367   BFD_RELOC_NDS32_MINUEND
4368 ENUMX
4369   BFD_RELOC_NDS32_SUBTRAHEND
4370 ENUMX
4371   BFD_RELOC_NDS32_DIFF8
4372 ENUMX
4373   BFD_RELOC_NDS32_DIFF16
4374 ENUMX
4375   BFD_RELOC_NDS32_DIFF32
4376 ENUMX
4377   BFD_RELOC_NDS32_DIFF_ULEB128
4378 ENUMX
4379   BFD_RELOC_NDS32_EMPTY
4380 ENUMDOC
4381   relaxation relative relocation types
4382 ENUM
4383   BFD_RELOC_NDS32_25_ABS
4384 ENUMDOC
4385   This is a 25 bit absolute address.
4386 ENUM
4387   BFD_RELOC_NDS32_DATA
4388 ENUMX
4389   BFD_RELOC_NDS32_TRAN
4390 ENUMX
4391   BFD_RELOC_NDS32_17IFC_PCREL
4392 ENUMX
4393   BFD_RELOC_NDS32_10IFCU_PCREL
4394 ENUMDOC
4395   For ex9 and ifc using.
4396 ENUM
4397   BFD_RELOC_NDS32_TPOFF
4398 ENUMX
4399   BFD_RELOC_NDS32_TLS_LE_HI20
4400 ENUMX
4401   BFD_RELOC_NDS32_TLS_LE_LO12
4402 ENUMX
4403   BFD_RELOC_NDS32_TLS_LE_ADD
4404 ENUMX
4405   BFD_RELOC_NDS32_TLS_LE_LS
4406 ENUMX
4407   BFD_RELOC_NDS32_GOTTPOFF
4408 ENUMX
4409   BFD_RELOC_NDS32_TLS_IE_HI20
4410 ENUMX
4411   BFD_RELOC_NDS32_TLS_IE_LO12S2
4412 ENUMX
4413   BFD_RELOC_NDS32_TLS_TPOFF
4414 ENUMX
4415   BFD_RELOC_NDS32_TLS_LE_20
4416 ENUMX
4417   BFD_RELOC_NDS32_TLS_LE_15S0
4418 ENUMX
4419   BFD_RELOC_NDS32_TLS_LE_15S1
4420 ENUMX
4421   BFD_RELOC_NDS32_TLS_LE_15S2
4422 ENUMDOC
4423   For TLS.
4424
4425
4426 ENUM
4427   BFD_RELOC_V850_9_PCREL
4428 ENUMDOC
4429   This is a 9-bit reloc
4430 ENUM
4431   BFD_RELOC_V850_22_PCREL
4432 ENUMDOC
4433   This is a 22-bit reloc
4434
4435 ENUM
4436   BFD_RELOC_V850_SDA_16_16_OFFSET
4437 ENUMDOC
4438   This is a 16 bit offset from the short data area pointer.
4439 ENUM
4440   BFD_RELOC_V850_SDA_15_16_OFFSET
4441 ENUMDOC
4442   This is a 16 bit offset (of which only 15 bits are used) from the
4443   short data area pointer.
4444 ENUM
4445   BFD_RELOC_V850_ZDA_16_16_OFFSET
4446 ENUMDOC
4447   This is a 16 bit offset from the zero data area pointer.
4448 ENUM
4449   BFD_RELOC_V850_ZDA_15_16_OFFSET
4450 ENUMDOC
4451   This is a 16 bit offset (of which only 15 bits are used) from the
4452   zero data area pointer.
4453 ENUM
4454   BFD_RELOC_V850_TDA_6_8_OFFSET
4455 ENUMDOC
4456   This is an 8 bit offset (of which only 6 bits are used) from the
4457   tiny data area pointer.
4458 ENUM
4459   BFD_RELOC_V850_TDA_7_8_OFFSET
4460 ENUMDOC
4461   This is an 8bit offset (of which only 7 bits are used) from the tiny
4462   data area pointer.
4463 ENUM
4464   BFD_RELOC_V850_TDA_7_7_OFFSET
4465 ENUMDOC
4466   This is a 7 bit offset from the tiny data area pointer.
4467 ENUM
4468   BFD_RELOC_V850_TDA_16_16_OFFSET
4469 ENUMDOC
4470   This is a 16 bit offset from the tiny data area pointer.
4471 COMMENT
4472 ENUM
4473   BFD_RELOC_V850_TDA_4_5_OFFSET
4474 ENUMDOC
4475   This is a 5 bit offset (of which only 4 bits are used) from the tiny
4476   data area pointer.
4477 ENUM
4478   BFD_RELOC_V850_TDA_4_4_OFFSET
4479 ENUMDOC
4480   This is a 4 bit offset from the tiny data area pointer.
4481 ENUM
4482   BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
4483 ENUMDOC
4484   This is a 16 bit offset from the short data area pointer, with the
4485   bits placed non-contiguously in the instruction.
4486 ENUM
4487   BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
4488 ENUMDOC
4489   This is a 16 bit offset from the zero data area pointer, with the
4490   bits placed non-contiguously in the instruction.
4491 ENUM
4492   BFD_RELOC_V850_CALLT_6_7_OFFSET
4493 ENUMDOC
4494   This is a 6 bit offset from the call table base pointer.
4495 ENUM
4496   BFD_RELOC_V850_CALLT_16_16_OFFSET
4497 ENUMDOC
4498   This is a 16 bit offset from the call table base pointer.
4499 ENUM
4500   BFD_RELOC_V850_LONGCALL
4501 ENUMDOC
4502   Used for relaxing indirect function calls.
4503 ENUM
4504   BFD_RELOC_V850_LONGJUMP
4505 ENUMDOC
4506   Used for relaxing indirect jumps.
4507 ENUM
4508   BFD_RELOC_V850_ALIGN
4509 ENUMDOC
4510   Used to maintain alignment whilst relaxing.
4511 ENUM
4512   BFD_RELOC_V850_LO16_SPLIT_OFFSET
4513 ENUMDOC
4514   This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
4515   instructions.
4516 ENUM
4517   BFD_RELOC_V850_16_PCREL
4518 ENUMDOC
4519   This is a 16-bit reloc.
4520 ENUM
4521   BFD_RELOC_V850_17_PCREL
4522 ENUMDOC
4523   This is a 17-bit reloc.
4524 ENUM
4525   BFD_RELOC_V850_23
4526 ENUMDOC
4527   This is a 23-bit reloc.
4528 ENUM
4529   BFD_RELOC_V850_32_PCREL
4530 ENUMDOC
4531   This is a 32-bit reloc.
4532 ENUM
4533   BFD_RELOC_V850_32_ABS
4534 ENUMDOC
4535   This is a 32-bit reloc.
4536 ENUM
4537   BFD_RELOC_V850_16_SPLIT_OFFSET
4538 ENUMDOC
4539   This is a 16-bit reloc.
4540 ENUM
4541   BFD_RELOC_V850_16_S1
4542 ENUMDOC
4543   This is a 16-bit reloc.
4544 ENUM
4545   BFD_RELOC_V850_LO16_S1
4546 ENUMDOC
4547   Low 16 bits. 16 bit shifted by 1.
4548 ENUM
4549   BFD_RELOC_V850_CALLT_15_16_OFFSET
4550 ENUMDOC
4551   This is a 16 bit offset from the call table base pointer.
4552 ENUM
4553   BFD_RELOC_V850_32_GOTPCREL
4554 ENUMDOC
4555   DSO relocations.
4556 ENUM
4557   BFD_RELOC_V850_16_GOT
4558 ENUMDOC
4559   DSO relocations.
4560 ENUM
4561   BFD_RELOC_V850_32_GOT
4562 ENUMDOC
4563   DSO relocations.
4564 ENUM
4565   BFD_RELOC_V850_22_PLT_PCREL
4566 ENUMDOC
4567   DSO relocations.
4568 ENUM
4569   BFD_RELOC_V850_32_PLT_PCREL
4570 ENUMDOC
4571   DSO relocations.
4572 ENUM
4573   BFD_RELOC_V850_COPY
4574 ENUMDOC
4575   DSO relocations.
4576 ENUM
4577   BFD_RELOC_V850_GLOB_DAT
4578 ENUMDOC
4579   DSO relocations.
4580 ENUM
4581   BFD_RELOC_V850_JMP_SLOT
4582 ENUMDOC
4583   DSO relocations.
4584 ENUM
4585   BFD_RELOC_V850_RELATIVE
4586 ENUMDOC
4587   DSO relocations.
4588 ENUM
4589   BFD_RELOC_V850_16_GOTOFF
4590 ENUMDOC
4591   DSO relocations.
4592 ENUM
4593   BFD_RELOC_V850_32_GOTOFF
4594 ENUMDOC
4595   DSO relocations.
4596 ENUM
4597   BFD_RELOC_V850_CODE
4598 ENUMDOC
4599   start code.
4600 ENUM
4601   BFD_RELOC_V850_DATA
4602 ENUMDOC
4603   start data in text.
4604
4605 ENUM
4606   BFD_RELOC_TIC30_LDP
4607 ENUMDOC
4608   This is a 8bit DP reloc for the tms320c30, where the most
4609   significant 8 bits of a 24 bit word are placed into the least
4610   significant 8 bits of the opcode.
4611
4612 ENUM
4613   BFD_RELOC_TIC54X_PARTLS7
4614 ENUMDOC
4615   This is a 7bit reloc for the tms320c54x, where the least
4616   significant 7 bits of a 16 bit word are placed into the least
4617   significant 7 bits of the opcode.
4618
4619 ENUM
4620   BFD_RELOC_TIC54X_PARTMS9
4621 ENUMDOC
4622   This is a 9bit DP reloc for the tms320c54x, where the most
4623   significant 9 bits of a 16 bit word are placed into the least
4624   significant 9 bits of the opcode.
4625
4626 ENUM
4627   BFD_RELOC_TIC54X_23
4628 ENUMDOC
4629   This is an extended address 23-bit reloc for the tms320c54x.
4630
4631 ENUM
4632   BFD_RELOC_TIC54X_16_OF_23
4633 ENUMDOC
4634   This is a 16-bit reloc for the tms320c54x, where the least
4635   significant 16 bits of a 23-bit extended address are placed into
4636   the opcode.
4637
4638 ENUM
4639   BFD_RELOC_TIC54X_MS7_OF_23
4640 ENUMDOC
4641   This is a reloc for the tms320c54x, where the most
4642   significant 7 bits of a 23-bit extended address are placed into
4643   the opcode.
4644
4645 ENUM
4646   BFD_RELOC_C6000_PCR_S21
4647 ENUMX
4648   BFD_RELOC_C6000_PCR_S12
4649 ENUMX
4650   BFD_RELOC_C6000_PCR_S10
4651 ENUMX
4652   BFD_RELOC_C6000_PCR_S7
4653 ENUMX
4654   BFD_RELOC_C6000_ABS_S16
4655 ENUMX
4656   BFD_RELOC_C6000_ABS_L16
4657 ENUMX
4658   BFD_RELOC_C6000_ABS_H16
4659 ENUMX
4660   BFD_RELOC_C6000_SBR_U15_B
4661 ENUMX
4662   BFD_RELOC_C6000_SBR_U15_H
4663 ENUMX
4664   BFD_RELOC_C6000_SBR_U15_W
4665 ENUMX
4666   BFD_RELOC_C6000_SBR_S16
4667 ENUMX
4668   BFD_RELOC_C6000_SBR_L16_B
4669 ENUMX
4670   BFD_RELOC_C6000_SBR_L16_H
4671 ENUMX
4672   BFD_RELOC_C6000_SBR_L16_W
4673 ENUMX
4674   BFD_RELOC_C6000_SBR_H16_B
4675 ENUMX
4676   BFD_RELOC_C6000_SBR_H16_H
4677 ENUMX
4678   BFD_RELOC_C6000_SBR_H16_W
4679 ENUMX
4680   BFD_RELOC_C6000_SBR_GOT_U15_W
4681 ENUMX
4682   BFD_RELOC_C6000_SBR_GOT_L16_W
4683 ENUMX
4684   BFD_RELOC_C6000_SBR_GOT_H16_W
4685 ENUMX
4686   BFD_RELOC_C6000_DSBT_INDEX
4687 ENUMX
4688   BFD_RELOC_C6000_PREL31
4689 ENUMX
4690   BFD_RELOC_C6000_COPY
4691 ENUMX
4692   BFD_RELOC_C6000_JUMP_SLOT
4693 ENUMX
4694   BFD_RELOC_C6000_EHTYPE
4695 ENUMX
4696   BFD_RELOC_C6000_PCR_H16
4697 ENUMX
4698   BFD_RELOC_C6000_PCR_L16
4699 ENUMX
4700   BFD_RELOC_C6000_ALIGN
4701 ENUMX
4702   BFD_RELOC_C6000_FPHEAD
4703 ENUMX
4704   BFD_RELOC_C6000_NOCMP
4705 ENUMDOC
4706   TMS320C6000 relocations.
4707
4708 ENUM
4709   BFD_RELOC_FR30_48
4710 ENUMDOC
4711   This is a 48 bit reloc for the FR30 that stores 32 bits.
4712 ENUM
4713   BFD_RELOC_FR30_20
4714 ENUMDOC
4715   This is a 32 bit reloc for the FR30 that stores 20 bits split up into
4716   two sections.
4717 ENUM
4718   BFD_RELOC_FR30_6_IN_4
4719 ENUMDOC
4720   This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
4721   4 bits.
4722 ENUM
4723   BFD_RELOC_FR30_8_IN_8
4724 ENUMDOC
4725   This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
4726   into 8 bits.
4727 ENUM
4728   BFD_RELOC_FR30_9_IN_8
4729 ENUMDOC
4730   This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
4731   into 8 bits.
4732 ENUM
4733   BFD_RELOC_FR30_10_IN_8
4734 ENUMDOC
4735   This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
4736   into 8 bits.
4737 ENUM
4738   BFD_RELOC_FR30_9_PCREL
4739 ENUMDOC
4740   This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
4741   short offset into 8 bits.
4742 ENUM
4743   BFD_RELOC_FR30_12_PCREL
4744 ENUMDOC
4745   This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
4746   short offset into 11 bits.
4747
4748 ENUM
4749   BFD_RELOC_MCORE_PCREL_IMM8BY4
4750 ENUMX
4751   BFD_RELOC_MCORE_PCREL_IMM11BY2
4752 ENUMX
4753   BFD_RELOC_MCORE_PCREL_IMM4BY2
4754 ENUMX
4755   BFD_RELOC_MCORE_PCREL_32
4756 ENUMX
4757   BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
4758 ENUMX
4759   BFD_RELOC_MCORE_RVA
4760 ENUMDOC
4761   Motorola Mcore relocations.
4762
4763 ENUM
4764   BFD_RELOC_MEP_8
4765 ENUMX
4766   BFD_RELOC_MEP_16
4767 ENUMX
4768   BFD_RELOC_MEP_32
4769 ENUMX
4770   BFD_RELOC_MEP_PCREL8A2
4771 ENUMX
4772   BFD_RELOC_MEP_PCREL12A2
4773 ENUMX
4774   BFD_RELOC_MEP_PCREL17A2
4775 ENUMX
4776   BFD_RELOC_MEP_PCREL24A2
4777 ENUMX
4778   BFD_RELOC_MEP_PCABS24A2
4779 ENUMX
4780   BFD_RELOC_MEP_LOW16
4781 ENUMX
4782   BFD_RELOC_MEP_HI16U
4783 ENUMX
4784   BFD_RELOC_MEP_HI16S
4785 ENUMX
4786   BFD_RELOC_MEP_GPREL
4787 ENUMX
4788   BFD_RELOC_MEP_TPREL
4789 ENUMX
4790   BFD_RELOC_MEP_TPREL7
4791 ENUMX
4792   BFD_RELOC_MEP_TPREL7A2
4793 ENUMX
4794   BFD_RELOC_MEP_TPREL7A4
4795 ENUMX
4796   BFD_RELOC_MEP_UIMM24
4797 ENUMX
4798   BFD_RELOC_MEP_ADDR24A4
4799 ENUMX
4800   BFD_RELOC_MEP_GNU_VTINHERIT
4801 ENUMX
4802   BFD_RELOC_MEP_GNU_VTENTRY
4803 ENUMDOC
4804   Toshiba Media Processor Relocations.
4805 COMMENT
4806
4807 ENUM
4808   BFD_RELOC_METAG_HIADDR16
4809 ENUMX
4810   BFD_RELOC_METAG_LOADDR16
4811 ENUMX
4812   BFD_RELOC_METAG_RELBRANCH
4813 ENUMX
4814   BFD_RELOC_METAG_GETSETOFF
4815 ENUMX
4816   BFD_RELOC_METAG_HIOG
4817 ENUMX
4818   BFD_RELOC_METAG_LOOG
4819 ENUMX
4820   BFD_RELOC_METAG_REL8
4821 ENUMX
4822   BFD_RELOC_METAG_REL16
4823 ENUMX
4824   BFD_RELOC_METAG_HI16_GOTOFF
4825 ENUMX
4826   BFD_RELOC_METAG_LO16_GOTOFF
4827 ENUMX
4828   BFD_RELOC_METAG_GETSET_GOTOFF
4829 ENUMX
4830   BFD_RELOC_METAG_GETSET_GOT
4831 ENUMX
4832   BFD_RELOC_METAG_HI16_GOTPC
4833 ENUMX
4834   BFD_RELOC_METAG_LO16_GOTPC
4835 ENUMX
4836   BFD_RELOC_METAG_HI16_PLT
4837 ENUMX
4838   BFD_RELOC_METAG_LO16_PLT
4839 ENUMX
4840   BFD_RELOC_METAG_RELBRANCH_PLT
4841 ENUMX
4842   BFD_RELOC_METAG_GOTOFF
4843 ENUMX
4844   BFD_RELOC_METAG_PLT
4845 ENUMX
4846   BFD_RELOC_METAG_COPY
4847 ENUMX
4848   BFD_RELOC_METAG_JMP_SLOT
4849 ENUMX
4850   BFD_RELOC_METAG_RELATIVE
4851 ENUMX
4852   BFD_RELOC_METAG_GLOB_DAT
4853 ENUMX
4854   BFD_RELOC_METAG_TLS_GD
4855 ENUMX
4856   BFD_RELOC_METAG_TLS_LDM
4857 ENUMX
4858   BFD_RELOC_METAG_TLS_LDO_HI16
4859 ENUMX
4860   BFD_RELOC_METAG_TLS_LDO_LO16
4861 ENUMX
4862   BFD_RELOC_METAG_TLS_LDO
4863 ENUMX
4864   BFD_RELOC_METAG_TLS_IE
4865 ENUMX
4866   BFD_RELOC_METAG_TLS_IENONPIC
4867 ENUMX
4868   BFD_RELOC_METAG_TLS_IENONPIC_HI16
4869 ENUMX
4870   BFD_RELOC_METAG_TLS_IENONPIC_LO16
4871 ENUMX
4872   BFD_RELOC_METAG_TLS_TPOFF
4873 ENUMX
4874   BFD_RELOC_METAG_TLS_DTPMOD
4875 ENUMX
4876   BFD_RELOC_METAG_TLS_DTPOFF
4877 ENUMX
4878   BFD_RELOC_METAG_TLS_LE
4879 ENUMX
4880   BFD_RELOC_METAG_TLS_LE_HI16
4881 ENUMX
4882   BFD_RELOC_METAG_TLS_LE_LO16
4883 ENUMDOC
4884   Imagination Technologies Meta relocations.
4885
4886 ENUM
4887   BFD_RELOC_MMIX_GETA
4888 ENUMX
4889   BFD_RELOC_MMIX_GETA_1
4890 ENUMX
4891   BFD_RELOC_MMIX_GETA_2
4892 ENUMX
4893   BFD_RELOC_MMIX_GETA_3
4894 ENUMDOC
4895   These are relocations for the GETA instruction.
4896 ENUM
4897   BFD_RELOC_MMIX_CBRANCH
4898 ENUMX
4899   BFD_RELOC_MMIX_CBRANCH_J
4900 ENUMX
4901   BFD_RELOC_MMIX_CBRANCH_1
4902 ENUMX
4903   BFD_RELOC_MMIX_CBRANCH_2
4904 ENUMX
4905   BFD_RELOC_MMIX_CBRANCH_3
4906 ENUMDOC
4907   These are relocations for a conditional branch instruction.
4908 ENUM
4909   BFD_RELOC_MMIX_PUSHJ
4910 ENUMX
4911   BFD_RELOC_MMIX_PUSHJ_1
4912 ENUMX
4913   BFD_RELOC_MMIX_PUSHJ_2
4914 ENUMX
4915   BFD_RELOC_MMIX_PUSHJ_3
4916 ENUMX
4917   BFD_RELOC_MMIX_PUSHJ_STUBBABLE
4918 ENUMDOC
4919   These are relocations for the PUSHJ instruction.
4920 ENUM
4921   BFD_RELOC_MMIX_JMP
4922 ENUMX
4923   BFD_RELOC_MMIX_JMP_1
4924 ENUMX
4925   BFD_RELOC_MMIX_JMP_2
4926 ENUMX
4927   BFD_RELOC_MMIX_JMP_3
4928 ENUMDOC
4929   These are relocations for the JMP instruction.
4930 ENUM
4931   BFD_RELOC_MMIX_ADDR19
4932 ENUMDOC
4933   This is a relocation for a relative address as in a GETA instruction or
4934   a branch.
4935 ENUM
4936   BFD_RELOC_MMIX_ADDR27
4937 ENUMDOC
4938   This is a relocation for a relative address as in a JMP instruction.
4939 ENUM
4940   BFD_RELOC_MMIX_REG_OR_BYTE
4941 ENUMDOC
4942   This is a relocation for an instruction field that may be a general
4943   register or a value 0..255.
4944 ENUM
4945   BFD_RELOC_MMIX_REG
4946 ENUMDOC
4947   This is a relocation for an instruction field that may be a general
4948   register.
4949 ENUM
4950   BFD_RELOC_MMIX_BASE_PLUS_OFFSET
4951 ENUMDOC
4952   This is a relocation for two instruction fields holding a register and
4953   an offset, the equivalent of the relocation.
4954 ENUM
4955   BFD_RELOC_MMIX_LOCAL
4956 ENUMDOC
4957   This relocation is an assertion that the expression is not allocated as
4958   a global register.  It does not modify contents.
4959
4960 ENUM
4961   BFD_RELOC_AVR_7_PCREL
4962 ENUMDOC
4963   This is a 16 bit reloc for the AVR that stores 8 bit pc relative
4964   short offset into 7 bits.
4965 ENUM
4966   BFD_RELOC_AVR_13_PCREL
4967 ENUMDOC
4968   This is a 16 bit reloc for the AVR that stores 13 bit pc relative
4969   short offset into 12 bits.
4970 ENUM
4971   BFD_RELOC_AVR_16_PM
4972 ENUMDOC
4973   This is a 16 bit reloc for the AVR that stores 17 bit value (usually
4974   program memory address) into 16 bits.
4975 ENUM
4976   BFD_RELOC_AVR_LO8_LDI
4977 ENUMDOC
4978   This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4979   data memory address) into 8 bit immediate value of LDI insn.
4980 ENUM
4981   BFD_RELOC_AVR_HI8_LDI
4982 ENUMDOC
4983   This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4984   of data memory address) into 8 bit immediate value of LDI insn.
4985 ENUM
4986   BFD_RELOC_AVR_HH8_LDI
4987 ENUMDOC
4988   This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4989   of program memory address) into 8 bit immediate value of LDI insn.
4990 ENUM
4991   BFD_RELOC_AVR_MS8_LDI
4992 ENUMDOC
4993   This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4994   of 32 bit value) into 8 bit immediate value of LDI insn.
4995 ENUM
4996   BFD_RELOC_AVR_LO8_LDI_NEG
4997 ENUMDOC
4998   This is a 16 bit reloc for the AVR that stores negated 8 bit value
4999   (usually data memory address) into 8 bit immediate value of SUBI insn.
5000 ENUM
5001   BFD_RELOC_AVR_HI8_LDI_NEG
5002 ENUMDOC
5003   This is a 16 bit reloc for the AVR that stores negated 8 bit value
5004   (high 8 bit of data memory address) into 8 bit immediate value of
5005   SUBI insn.
5006 ENUM
5007   BFD_RELOC_AVR_HH8_LDI_NEG
5008 ENUMDOC
5009   This is a 16 bit reloc for the AVR that stores negated 8 bit value
5010   (most high 8 bit of program memory address) into 8 bit immediate value
5011   of LDI or SUBI insn.
5012 ENUM
5013   BFD_RELOC_AVR_MS8_LDI_NEG
5014 ENUMDOC
5015   This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
5016   of 32 bit value) into 8 bit immediate value of LDI insn.
5017 ENUM
5018   BFD_RELOC_AVR_LO8_LDI_PM
5019 ENUMDOC
5020   This is a 16 bit reloc for the AVR that stores 8 bit value (usually
5021   command address) into 8 bit immediate value of LDI insn.
5022 ENUM
5023   BFD_RELOC_AVR_LO8_LDI_GS
5024 ENUMDOC
5025   This is a 16 bit reloc for the AVR that stores 8 bit value
5026   (command address) into 8 bit immediate value of LDI insn. If the address
5027   is beyond the 128k boundary, the linker inserts a jump stub for this reloc
5028   in the lower 128k.
5029 ENUM
5030   BFD_RELOC_AVR_HI8_LDI_PM
5031 ENUMDOC
5032   This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
5033   of command address) into 8 bit immediate value of LDI insn.
5034 ENUM
5035   BFD_RELOC_AVR_HI8_LDI_GS
5036 ENUMDOC
5037   This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
5038   of command address) into 8 bit immediate value of LDI insn.  If the address
5039   is beyond the 128k boundary, the linker inserts a jump stub for this reloc
5040   below 128k.
5041 ENUM
5042   BFD_RELOC_AVR_HH8_LDI_PM
5043 ENUMDOC
5044   This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
5045   of command address) into 8 bit immediate value of LDI insn.
5046 ENUM
5047   BFD_RELOC_AVR_LO8_LDI_PM_NEG
5048 ENUMDOC
5049   This is a 16 bit reloc for the AVR that stores negated 8 bit value
5050   (usually command address) into 8 bit immediate value of SUBI insn.
5051 ENUM
5052   BFD_RELOC_AVR_HI8_LDI_PM_NEG
5053 ENUMDOC
5054   This is a 16 bit reloc for the AVR that stores negated 8 bit value
5055   (high 8 bit of 16 bit command address) into 8 bit immediate value
5056   of SUBI insn.
5057 ENUM
5058   BFD_RELOC_AVR_HH8_LDI_PM_NEG
5059 ENUMDOC
5060   This is a 16 bit reloc for the AVR that stores negated 8 bit value
5061   (high 6 bit of 22 bit command address) into 8 bit immediate
5062   value of SUBI insn.
5063 ENUM
5064   BFD_RELOC_AVR_CALL
5065 ENUMDOC
5066   This is a 32 bit reloc for the AVR that stores 23 bit value
5067   into 22 bits.
5068 ENUM
5069   BFD_RELOC_AVR_LDI
5070 ENUMDOC
5071   This is a 16 bit reloc for the AVR that stores all needed bits
5072   for absolute addressing with ldi with overflow check to linktime
5073 ENUM
5074   BFD_RELOC_AVR_6
5075 ENUMDOC
5076   This is a 6 bit reloc for the AVR that stores offset for ldd/std
5077   instructions
5078 ENUM
5079   BFD_RELOC_AVR_6_ADIW
5080 ENUMDOC
5081   This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
5082   instructions
5083 ENUM
5084   BFD_RELOC_AVR_8_LO
5085 ENUMDOC
5086   This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
5087   in .byte lo8(symbol)
5088 ENUM
5089   BFD_RELOC_AVR_8_HI
5090 ENUMDOC
5091   This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
5092   in .byte hi8(symbol)
5093 ENUM
5094   BFD_RELOC_AVR_8_HLO
5095 ENUMDOC
5096   This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
5097   in .byte hlo8(symbol)
5098 ENUM
5099   BFD_RELOC_AVR_DIFF8
5100 ENUMX
5101   BFD_RELOC_AVR_DIFF16
5102 ENUMX
5103   BFD_RELOC_AVR_DIFF32
5104 ENUMDOC
5105   AVR relocations to mark the difference of two local symbols.
5106   These are only needed to support linker relaxation and can be ignored
5107   when not relaxing.  The field is set to the value of the difference
5108   assuming no relaxation.  The relocation encodes the position of the
5109   second symbol so the linker can determine whether to adjust the field
5110   value.
5111 ENUM
5112   BFD_RELOC_AVR_LDS_STS_16
5113 ENUMDOC
5114   This is a 7 bit reloc for the AVR that stores SRAM address for 16bit
5115   lds and sts instructions supported only tiny core.
5116 ENUM
5117   BFD_RELOC_AVR_PORT6
5118 ENUMDOC
5119   This is a 6 bit reloc for the AVR that stores an I/O register
5120   number for the IN and OUT instructions
5121 ENUM
5122   BFD_RELOC_AVR_PORT5
5123 ENUMDOC
5124   This is a 5 bit reloc for the AVR that stores an I/O register
5125   number for the SBIC, SBIS, SBI and CBI instructions
5126
5127 ENUM
5128   BFD_RELOC_RISCV_HI20
5129 ENUMX
5130   BFD_RELOC_RISCV_PCREL_HI20
5131 ENUMX
5132   BFD_RELOC_RISCV_PCREL_LO12_I
5133 ENUMX
5134   BFD_RELOC_RISCV_PCREL_LO12_S
5135 ENUMX
5136   BFD_RELOC_RISCV_LO12_I
5137 ENUMX
5138   BFD_RELOC_RISCV_LO12_S
5139 ENUMX
5140   BFD_RELOC_RISCV_GPREL12_I
5141 ENUMX
5142   BFD_RELOC_RISCV_GPREL12_S
5143 ENUMX
5144   BFD_RELOC_RISCV_TPREL_HI20
5145 ENUMX
5146   BFD_RELOC_RISCV_TPREL_LO12_I
5147 ENUMX
5148   BFD_RELOC_RISCV_TPREL_LO12_S
5149 ENUMX
5150   BFD_RELOC_RISCV_TPREL_ADD
5151 ENUMX
5152   BFD_RELOC_RISCV_CALL
5153 ENUMX
5154   BFD_RELOC_RISCV_CALL_PLT
5155 ENUMX
5156   BFD_RELOC_RISCV_ADD8
5157 ENUMX
5158   BFD_RELOC_RISCV_ADD16
5159 ENUMX
5160   BFD_RELOC_RISCV_ADD32
5161 ENUMX
5162   BFD_RELOC_RISCV_ADD64
5163 ENUMX
5164   BFD_RELOC_RISCV_SUB8
5165 ENUMX
5166   BFD_RELOC_RISCV_SUB16
5167 ENUMX
5168   BFD_RELOC_RISCV_SUB32
5169 ENUMX
5170   BFD_RELOC_RISCV_SUB64
5171 ENUMX
5172   BFD_RELOC_RISCV_GOT_HI20
5173 ENUMX
5174   BFD_RELOC_RISCV_TLS_GOT_HI20
5175 ENUMX
5176   BFD_RELOC_RISCV_TLS_GD_HI20
5177 ENUMX
5178   BFD_RELOC_RISCV_JMP
5179 ENUMX
5180   BFD_RELOC_RISCV_TLS_DTPMOD32
5181 ENUMX
5182   BFD_RELOC_RISCV_TLS_DTPREL32
5183 ENUMX
5184   BFD_RELOC_RISCV_TLS_DTPMOD64
5185 ENUMX
5186   BFD_RELOC_RISCV_TLS_DTPREL64
5187 ENUMX
5188   BFD_RELOC_RISCV_TLS_TPREL32
5189 ENUMX
5190   BFD_RELOC_RISCV_TLS_TPREL64
5191 ENUMX
5192   BFD_RELOC_RISCV_ALIGN
5193 ENUMX
5194   BFD_RELOC_RISCV_RVC_BRANCH
5195 ENUMX
5196   BFD_RELOC_RISCV_RVC_JUMP
5197 ENUMX
5198   BFD_RELOC_RISCV_RVC_LUI
5199 ENUMX
5200   BFD_RELOC_RISCV_GPREL_I
5201 ENUMX
5202   BFD_RELOC_RISCV_GPREL_S
5203 ENUMX
5204   BFD_RELOC_RISCV_TPREL_I
5205 ENUMX
5206   BFD_RELOC_RISCV_TPREL_S
5207 ENUMX
5208   BFD_RELOC_RISCV_RELAX
5209 ENUMX
5210   BFD_RELOC_RISCV_CFA
5211 ENUMX
5212   BFD_RELOC_RISCV_SUB6
5213 ENUMX
5214   BFD_RELOC_RISCV_SET6
5215 ENUMX
5216   BFD_RELOC_RISCV_SET8
5217 ENUMX
5218   BFD_RELOC_RISCV_SET16
5219 ENUMX
5220   BFD_RELOC_RISCV_SET32
5221 ENUMX
5222   BFD_RELOC_RISCV_32_PCREL
5223 ENUMDOC
5224   RISC-V relocations.
5225
5226 ENUM
5227   BFD_RELOC_RL78_NEG8
5228 ENUMX
5229   BFD_RELOC_RL78_NEG16
5230 ENUMX
5231   BFD_RELOC_RL78_NEG24
5232 ENUMX
5233   BFD_RELOC_RL78_NEG32
5234 ENUMX
5235   BFD_RELOC_RL78_16_OP
5236 ENUMX
5237   BFD_RELOC_RL78_24_OP
5238 ENUMX
5239   BFD_RELOC_RL78_32_OP
5240 ENUMX
5241   BFD_RELOC_RL78_8U
5242 ENUMX
5243   BFD_RELOC_RL78_16U
5244 ENUMX
5245   BFD_RELOC_RL78_24U
5246 ENUMX
5247   BFD_RELOC_RL78_DIR3U_PCREL
5248 ENUMX
5249   BFD_RELOC_RL78_DIFF
5250 ENUMX
5251   BFD_RELOC_RL78_GPRELB
5252 ENUMX
5253   BFD_RELOC_RL78_GPRELW
5254 ENUMX
5255   BFD_RELOC_RL78_GPRELL
5256 ENUMX
5257   BFD_RELOC_RL78_SYM
5258 ENUMX
5259   BFD_RELOC_RL78_OP_SUBTRACT
5260 ENUMX
5261   BFD_RELOC_RL78_OP_NEG
5262 ENUMX
5263   BFD_RELOC_RL78_OP_AND
5264 ENUMX
5265   BFD_RELOC_RL78_OP_SHRA
5266 ENUMX
5267   BFD_RELOC_RL78_ABS8
5268 ENUMX
5269   BFD_RELOC_RL78_ABS16
5270 ENUMX
5271   BFD_RELOC_RL78_ABS16_REV
5272 ENUMX
5273   BFD_RELOC_RL78_ABS32
5274 ENUMX
5275   BFD_RELOC_RL78_ABS32_REV
5276 ENUMX
5277   BFD_RELOC_RL78_ABS16U
5278 ENUMX
5279   BFD_RELOC_RL78_ABS16UW
5280 ENUMX
5281   BFD_RELOC_RL78_ABS16UL
5282 ENUMX
5283   BFD_RELOC_RL78_RELAX
5284 ENUMX
5285   BFD_RELOC_RL78_HI16
5286 ENUMX
5287   BFD_RELOC_RL78_HI8
5288 ENUMX
5289   BFD_RELOC_RL78_LO16
5290 ENUMX
5291   BFD_RELOC_RL78_CODE
5292 ENUMX
5293   BFD_RELOC_RL78_SADDR
5294 ENUMDOC
5295   Renesas RL78 Relocations.
5296
5297 ENUM
5298   BFD_RELOC_RX_NEG8
5299 ENUMX
5300   BFD_RELOC_RX_NEG16
5301 ENUMX
5302   BFD_RELOC_RX_NEG24
5303 ENUMX
5304   BFD_RELOC_RX_NEG32
5305 ENUMX
5306   BFD_RELOC_RX_16_OP
5307 ENUMX
5308   BFD_RELOC_RX_24_OP
5309 ENUMX
5310   BFD_RELOC_RX_32_OP
5311 ENUMX
5312   BFD_RELOC_RX_8U
5313 ENUMX
5314   BFD_RELOC_RX_16U
5315 ENUMX
5316   BFD_RELOC_RX_24U
5317 ENUMX
5318   BFD_RELOC_RX_DIR3U_PCREL
5319 ENUMX
5320   BFD_RELOC_RX_DIFF
5321 ENUMX
5322   BFD_RELOC_RX_GPRELB
5323 ENUMX
5324   BFD_RELOC_RX_GPRELW
5325 ENUMX
5326   BFD_RELOC_RX_GPRELL
5327 ENUMX
5328   BFD_RELOC_RX_SYM
5329 ENUMX
5330   BFD_RELOC_RX_OP_SUBTRACT
5331 ENUMX
5332   BFD_RELOC_RX_OP_NEG
5333 ENUMX
5334   BFD_RELOC_RX_ABS8
5335 ENUMX
5336   BFD_RELOC_RX_ABS16
5337 ENUMX
5338   BFD_RELOC_RX_ABS16_REV
5339 ENUMX
5340   BFD_RELOC_RX_ABS32
5341 ENUMX
5342   BFD_RELOC_RX_ABS32_REV
5343 ENUMX
5344   BFD_RELOC_RX_ABS16U
5345 ENUMX
5346   BFD_RELOC_RX_ABS16UW
5347 ENUMX
5348   BFD_RELOC_RX_ABS16UL
5349 ENUMX
5350   BFD_RELOC_RX_RELAX
5351 ENUMDOC
5352   Renesas RX Relocations.
5353
5354 ENUM
5355   BFD_RELOC_390_12
5356 ENUMDOC
5357    Direct 12 bit.
5358 ENUM
5359   BFD_RELOC_390_GOT12
5360 ENUMDOC
5361   12 bit GOT offset.
5362 ENUM
5363   BFD_RELOC_390_PLT32
5364 ENUMDOC
5365   32 bit PC relative PLT address.
5366 ENUM
5367   BFD_RELOC_390_COPY
5368 ENUMDOC
5369   Copy symbol at runtime.
5370 ENUM
5371   BFD_RELOC_390_GLOB_DAT
5372 ENUMDOC
5373   Create GOT entry.
5374 ENUM
5375   BFD_RELOC_390_JMP_SLOT
5376 ENUMDOC
5377   Create PLT entry.
5378 ENUM
5379   BFD_RELOC_390_RELATIVE
5380 ENUMDOC
5381   Adjust by program base.
5382 ENUM
5383   BFD_RELOC_390_GOTPC
5384 ENUMDOC
5385   32 bit PC relative offset to GOT.
5386 ENUM
5387   BFD_RELOC_390_GOT16
5388 ENUMDOC
5389   16 bit GOT offset.
5390 ENUM
5391   BFD_RELOC_390_PC12DBL
5392 ENUMDOC
5393   PC relative 12 bit shifted by 1.
5394 ENUM
5395   BFD_RELOC_390_PLT12DBL
5396 ENUMDOC
5397   12 bit PC rel. PLT shifted by 1.
5398 ENUM
5399   BFD_RELOC_390_PC16DBL
5400 ENUMDOC
5401   PC relative 16 bit shifted by 1.
5402 ENUM
5403   BFD_RELOC_390_PLT16DBL
5404 ENUMDOC
5405   16 bit PC rel. PLT shifted by 1.
5406 ENUM
5407   BFD_RELOC_390_PC24DBL
5408 ENUMDOC
5409   PC relative 24 bit shifted by 1.
5410 ENUM
5411   BFD_RELOC_390_PLT24DBL
5412 ENUMDOC
5413   24 bit PC rel. PLT shifted by 1.
5414 ENUM
5415   BFD_RELOC_390_PC32DBL
5416 ENUMDOC
5417   PC relative 32 bit shifted by 1.
5418 ENUM
5419   BFD_RELOC_390_PLT32DBL
5420 ENUMDOC
5421   32 bit PC rel. PLT shifted by 1.
5422 ENUM
5423   BFD_RELOC_390_GOTPCDBL
5424 ENUMDOC
5425   32 bit PC rel. GOT shifted by 1.
5426 ENUM
5427   BFD_RELOC_390_GOT64
5428 ENUMDOC
5429   64 bit GOT offset.
5430 ENUM
5431   BFD_RELOC_390_PLT64
5432 ENUMDOC
5433   64 bit PC relative PLT address.
5434 ENUM
5435   BFD_RELOC_390_GOTENT
5436 ENUMDOC
5437   32 bit rel. offset to GOT entry.
5438 ENUM
5439   BFD_RELOC_390_GOTOFF64
5440 ENUMDOC
5441   64 bit offset to GOT.
5442 ENUM
5443   BFD_RELOC_390_GOTPLT12
5444 ENUMDOC
5445   12-bit offset to symbol-entry within GOT, with PLT handling.
5446 ENUM
5447   BFD_RELOC_390_GOTPLT16
5448 ENUMDOC
5449   16-bit offset to symbol-entry within GOT, with PLT handling.
5450 ENUM
5451   BFD_RELOC_390_GOTPLT32
5452 ENUMDOC
5453   32-bit offset to symbol-entry within GOT, with PLT handling.
5454 ENUM
5455   BFD_RELOC_390_GOTPLT64
5456 ENUMDOC
5457   64-bit offset to symbol-entry within GOT, with PLT handling.
5458 ENUM
5459   BFD_RELOC_390_GOTPLTENT
5460 ENUMDOC
5461   32-bit rel. offset to symbol-entry within GOT, with PLT handling.
5462 ENUM
5463   BFD_RELOC_390_PLTOFF16
5464 ENUMDOC
5465   16-bit rel. offset from the GOT to a PLT entry.
5466 ENUM
5467   BFD_RELOC_390_PLTOFF32
5468 ENUMDOC
5469   32-bit rel. offset from the GOT to a PLT entry.
5470 ENUM
5471   BFD_RELOC_390_PLTOFF64
5472 ENUMDOC
5473   64-bit rel. offset from the GOT to a PLT entry.
5474
5475 ENUM
5476   BFD_RELOC_390_TLS_LOAD
5477 ENUMX
5478   BFD_RELOC_390_TLS_GDCALL
5479 ENUMX
5480   BFD_RELOC_390_TLS_LDCALL
5481 ENUMX
5482   BFD_RELOC_390_TLS_GD32
5483 ENUMX
5484   BFD_RELOC_390_TLS_GD64
5485 ENUMX
5486   BFD_RELOC_390_TLS_GOTIE12
5487 ENUMX
5488   BFD_RELOC_390_TLS_GOTIE32
5489 ENUMX
5490   BFD_RELOC_390_TLS_GOTIE64
5491 ENUMX
5492   BFD_RELOC_390_TLS_LDM32
5493 ENUMX
5494   BFD_RELOC_390_TLS_LDM64
5495 ENUMX
5496   BFD_RELOC_390_TLS_IE32
5497 ENUMX
5498   BFD_RELOC_390_TLS_IE64
5499 ENUMX
5500   BFD_RELOC_390_TLS_IEENT
5501 ENUMX
5502   BFD_RELOC_390_TLS_LE32
5503 ENUMX
5504   BFD_RELOC_390_TLS_LE64
5505 ENUMX
5506   BFD_RELOC_390_TLS_LDO32
5507 ENUMX
5508   BFD_RELOC_390_TLS_LDO64
5509 ENUMX
5510   BFD_RELOC_390_TLS_DTPMOD
5511 ENUMX
5512   BFD_RELOC_390_TLS_DTPOFF
5513 ENUMX
5514   BFD_RELOC_390_TLS_TPOFF
5515 ENUMDOC
5516   s390 tls relocations.
5517
5518 ENUM
5519   BFD_RELOC_390_20
5520 ENUMX
5521   BFD_RELOC_390_GOT20
5522 ENUMX
5523   BFD_RELOC_390_GOTPLT20
5524 ENUMX
5525   BFD_RELOC_390_TLS_GOTIE20
5526 ENUMDOC
5527   Long displacement extension.
5528
5529 ENUM
5530   BFD_RELOC_390_IRELATIVE
5531 ENUMDOC
5532   STT_GNU_IFUNC relocation.
5533
5534 ENUM
5535   BFD_RELOC_SCORE_GPREL15
5536 ENUMDOC
5537   Score relocations
5538   Low 16 bit for load/store
5539 ENUM
5540   BFD_RELOC_SCORE_DUMMY2
5541 ENUMX
5542   BFD_RELOC_SCORE_JMP
5543 ENUMDOC
5544   This is a 24-bit reloc with the right 1 bit assumed to be 0
5545 ENUM
5546   BFD_RELOC_SCORE_BRANCH
5547 ENUMDOC
5548   This is a 19-bit reloc with the right 1 bit assumed to be 0
5549 ENUM
5550   BFD_RELOC_SCORE_IMM30
5551 ENUMDOC
5552   This is a 32-bit reloc for 48-bit instructions.
5553 ENUM
5554   BFD_RELOC_SCORE_IMM32
5555 ENUMDOC
5556   This is a 32-bit reloc for 48-bit instructions.
5557 ENUM
5558   BFD_RELOC_SCORE16_JMP
5559 ENUMDOC
5560   This is a 11-bit reloc with the right 1 bit assumed to be 0
5561 ENUM
5562   BFD_RELOC_SCORE16_BRANCH
5563 ENUMDOC
5564   This is a 8-bit reloc with the right 1 bit assumed to be 0
5565 ENUM
5566   BFD_RELOC_SCORE_BCMP
5567 ENUMDOC
5568    This is a 9-bit reloc with the right 1 bit assumed to be 0
5569 ENUM
5570   BFD_RELOC_SCORE_GOT15
5571 ENUMX
5572   BFD_RELOC_SCORE_GOT_LO16
5573 ENUMX
5574   BFD_RELOC_SCORE_CALL15
5575 ENUMX
5576   BFD_RELOC_SCORE_DUMMY_HI16
5577 ENUMDOC
5578   Undocumented Score relocs
5579
5580 ENUM
5581   BFD_RELOC_IP2K_FR9
5582 ENUMDOC
5583   Scenix IP2K - 9-bit register number / data address
5584 ENUM
5585   BFD_RELOC_IP2K_BANK
5586 ENUMDOC
5587   Scenix IP2K - 4-bit register/data bank number
5588 ENUM
5589   BFD_RELOC_IP2K_ADDR16CJP
5590 ENUMDOC
5591   Scenix IP2K - low 13 bits of instruction word address
5592 ENUM
5593   BFD_RELOC_IP2K_PAGE3
5594 ENUMDOC
5595   Scenix IP2K - high 3 bits of instruction word address
5596 ENUM
5597   BFD_RELOC_IP2K_LO8DATA
5598 ENUMX
5599   BFD_RELOC_IP2K_HI8DATA
5600 ENUMX
5601   BFD_RELOC_IP2K_EX8DATA
5602 ENUMDOC
5603   Scenix IP2K - ext/low/high 8 bits of data address
5604 ENUM
5605   BFD_RELOC_IP2K_LO8INSN
5606 ENUMX
5607   BFD_RELOC_IP2K_HI8INSN
5608 ENUMDOC
5609   Scenix IP2K - low/high 8 bits of instruction word address
5610 ENUM
5611   BFD_RELOC_IP2K_PC_SKIP
5612 ENUMDOC
5613   Scenix IP2K - even/odd PC modifier to modify snb pcl.0
5614 ENUM
5615   BFD_RELOC_IP2K_TEXT
5616 ENUMDOC
5617   Scenix IP2K - 16 bit word address in text section.
5618 ENUM
5619   BFD_RELOC_IP2K_FR_OFFSET
5620 ENUMDOC
5621   Scenix IP2K - 7-bit sp or dp offset
5622 ENUM
5623   BFD_RELOC_VPE4KMATH_DATA
5624 ENUMX
5625   BFD_RELOC_VPE4KMATH_INSN
5626 ENUMDOC
5627   Scenix VPE4K coprocessor - data/insn-space addressing
5628
5629 ENUM
5630   BFD_RELOC_VTABLE_INHERIT
5631 ENUMX
5632   BFD_RELOC_VTABLE_ENTRY
5633 ENUMDOC
5634   These two relocations are used by the linker to determine which of
5635   the entries in a C++ virtual function table are actually used.  When
5636   the --gc-sections option is given, the linker will zero out the entries
5637   that are not used, so that the code for those functions need not be
5638   included in the output.
5639
5640   VTABLE_INHERIT is a zero-space relocation used to describe to the
5641   linker the inheritance tree of a C++ virtual function table.  The
5642   relocation's symbol should be the parent class' vtable, and the
5643   relocation should be located at the child vtable.
5644
5645   VTABLE_ENTRY is a zero-space relocation that describes the use of a
5646   virtual function table entry.  The reloc's symbol should refer to the
5647   table of the class mentioned in the code.  Off of that base, an offset
5648   describes the entry that is being used.  For Rela hosts, this offset
5649   is stored in the reloc's addend.  For Rel hosts, we are forced to put
5650   this offset in the reloc's section offset.
5651
5652 ENUM
5653   BFD_RELOC_IA64_IMM14
5654 ENUMX
5655   BFD_RELOC_IA64_IMM22
5656 ENUMX
5657   BFD_RELOC_IA64_IMM64
5658 ENUMX
5659   BFD_RELOC_IA64_DIR32MSB
5660 ENUMX
5661   BFD_RELOC_IA64_DIR32LSB
5662 ENUMX
5663   BFD_RELOC_IA64_DIR64MSB
5664 ENUMX
5665   BFD_RELOC_IA64_DIR64LSB
5666 ENUMX
5667   BFD_RELOC_IA64_GPREL22
5668 ENUMX
5669   BFD_RELOC_IA64_GPREL64I
5670 ENUMX
5671   BFD_RELOC_IA64_GPREL32MSB
5672 ENUMX
5673   BFD_RELOC_IA64_GPREL32LSB
5674 ENUMX
5675   BFD_RELOC_IA64_GPREL64MSB
5676 ENUMX
5677   BFD_RELOC_IA64_GPREL64LSB
5678 ENUMX
5679   BFD_RELOC_IA64_LTOFF22
5680 ENUMX
5681   BFD_RELOC_IA64_LTOFF64I
5682 ENUMX
5683   BFD_RELOC_IA64_PLTOFF22
5684 ENUMX
5685   BFD_RELOC_IA64_PLTOFF64I
5686 ENUMX
5687   BFD_RELOC_IA64_PLTOFF64MSB
5688 ENUMX
5689   BFD_RELOC_IA64_PLTOFF64LSB
5690 ENUMX
5691   BFD_RELOC_IA64_FPTR64I
5692 ENUMX
5693   BFD_RELOC_IA64_FPTR32MSB
5694 ENUMX
5695   BFD_RELOC_IA64_FPTR32LSB
5696 ENUMX
5697   BFD_RELOC_IA64_FPTR64MSB
5698 ENUMX
5699   BFD_RELOC_IA64_FPTR64LSB
5700 ENUMX
5701   BFD_RELOC_IA64_PCREL21B
5702 ENUMX
5703   BFD_RELOC_IA64_PCREL21BI
5704 ENUMX
5705   BFD_RELOC_IA64_PCREL21M
5706 ENUMX
5707   BFD_RELOC_IA64_PCREL21F
5708 ENUMX
5709   BFD_RELOC_IA64_PCREL22
5710 ENUMX
5711   BFD_RELOC_IA64_PCREL60B
5712 ENUMX
5713   BFD_RELOC_IA64_PCREL64I
5714 ENUMX
5715   BFD_RELOC_IA64_PCREL32MSB
5716 ENUMX
5717   BFD_RELOC_IA64_PCREL32LSB
5718 ENUMX
5719   BFD_RELOC_IA64_PCREL64MSB
5720 ENUMX
5721   BFD_RELOC_IA64_PCREL64LSB
5722 ENUMX
5723   BFD_RELOC_IA64_LTOFF_FPTR22
5724 ENUMX
5725   BFD_RELOC_IA64_LTOFF_FPTR64I
5726 ENUMX
5727   BFD_RELOC_IA64_LTOFF_FPTR32MSB
5728 ENUMX
5729   BFD_RELOC_IA64_LTOFF_FPTR32LSB
5730 ENUMX
5731   BFD_RELOC_IA64_LTOFF_FPTR64MSB
5732 ENUMX
5733   BFD_RELOC_IA64_LTOFF_FPTR64LSB
5734 ENUMX
5735   BFD_RELOC_IA64_SEGREL32MSB
5736 ENUMX
5737   BFD_RELOC_IA64_SEGREL32LSB
5738 ENUMX
5739   BFD_RELOC_IA64_SEGREL64MSB
5740 ENUMX
5741   BFD_RELOC_IA64_SEGREL64LSB
5742 ENUMX
5743   BFD_RELOC_IA64_SECREL32MSB
5744 ENUMX
5745   BFD_RELOC_IA64_SECREL32LSB
5746 ENUMX
5747   BFD_RELOC_IA64_SECREL64MSB
5748 ENUMX
5749   BFD_RELOC_IA64_SECREL64LSB
5750 ENUMX
5751   BFD_RELOC_IA64_REL32MSB
5752 ENUMX
5753   BFD_RELOC_IA64_REL32LSB
5754 ENUMX
5755   BFD_RELOC_IA64_REL64MSB
5756 ENUMX
5757   BFD_RELOC_IA64_REL64LSB
5758 ENUMX
5759   BFD_RELOC_IA64_LTV32MSB
5760 ENUMX
5761   BFD_RELOC_IA64_LTV32LSB
5762 ENUMX
5763   BFD_RELOC_IA64_LTV64MSB
5764 ENUMX
5765   BFD_RELOC_IA64_LTV64LSB
5766 ENUMX
5767   BFD_RELOC_IA64_IPLTMSB
5768 ENUMX
5769   BFD_RELOC_IA64_IPLTLSB
5770 ENUMX
5771   BFD_RELOC_IA64_COPY
5772 ENUMX
5773   BFD_RELOC_IA64_LTOFF22X
5774 ENUMX
5775   BFD_RELOC_IA64_LDXMOV
5776 ENUMX
5777   BFD_RELOC_IA64_TPREL14
5778 ENUMX
5779   BFD_RELOC_IA64_TPREL22
5780 ENUMX
5781   BFD_RELOC_IA64_TPREL64I
5782 ENUMX
5783   BFD_RELOC_IA64_TPREL64MSB
5784 ENUMX
5785   BFD_RELOC_IA64_TPREL64LSB
5786 ENUMX
5787   BFD_RELOC_IA64_LTOFF_TPREL22
5788 ENUMX
5789   BFD_RELOC_IA64_DTPMOD64MSB
5790 ENUMX
5791   BFD_RELOC_IA64_DTPMOD64LSB
5792 ENUMX
5793   BFD_RELOC_IA64_LTOFF_DTPMOD22
5794 ENUMX
5795   BFD_RELOC_IA64_DTPREL14
5796 ENUMX
5797   BFD_RELOC_IA64_DTPREL22
5798 ENUMX
5799   BFD_RELOC_IA64_DTPREL64I
5800 ENUMX
5801   BFD_RELOC_IA64_DTPREL32MSB
5802 ENUMX
5803   BFD_RELOC_IA64_DTPREL32LSB
5804 ENUMX
5805   BFD_RELOC_IA64_DTPREL64MSB
5806 ENUMX
5807   BFD_RELOC_IA64_DTPREL64LSB
5808 ENUMX
5809   BFD_RELOC_IA64_LTOFF_DTPREL22
5810 ENUMDOC
5811   Intel IA64 Relocations.
5812
5813 ENUM
5814   BFD_RELOC_M68HC11_HI8
5815 ENUMDOC
5816   Motorola 68HC11 reloc.
5817   This is the 8 bit high part of an absolute address.
5818 ENUM
5819   BFD_RELOC_M68HC11_LO8
5820 ENUMDOC
5821   Motorola 68HC11 reloc.
5822   This is the 8 bit low part of an absolute address.
5823 ENUM
5824   BFD_RELOC_M68HC11_3B
5825 ENUMDOC
5826   Motorola 68HC11 reloc.
5827   This is the 3 bit of a value.
5828 ENUM
5829   BFD_RELOC_M68HC11_RL_JUMP
5830 ENUMDOC
5831   Motorola 68HC11 reloc.
5832   This reloc marks the beginning of a jump/call instruction.
5833   It is used for linker relaxation to correctly identify beginning
5834   of instruction and change some branches to use PC-relative
5835   addressing mode.
5836 ENUM
5837   BFD_RELOC_M68HC11_RL_GROUP
5838 ENUMDOC
5839   Motorola 68HC11 reloc.
5840   This reloc marks a group of several instructions that gcc generates
5841   and for which the linker relaxation pass can modify and/or remove
5842   some of them.
5843 ENUM
5844   BFD_RELOC_M68HC11_LO16
5845 ENUMDOC
5846   Motorola 68HC11 reloc.
5847   This is the 16-bit lower part of an address.  It is used for 'call'
5848   instruction to specify the symbol address without any special
5849   transformation (due to memory bank window).
5850 ENUM
5851   BFD_RELOC_M68HC11_PAGE
5852 ENUMDOC
5853   Motorola 68HC11 reloc.
5854   This is a 8-bit reloc that specifies the page number of an address.
5855   It is used by 'call' instruction to specify the page number of
5856   the symbol.
5857 ENUM
5858   BFD_RELOC_M68HC11_24
5859 ENUMDOC
5860   Motorola 68HC11 reloc.
5861   This is a 24-bit reloc that represents the address with a 16-bit
5862   value and a 8-bit page number.  The symbol address is transformed
5863   to follow the 16K memory bank of 68HC12 (seen as mapped in the window).
5864 ENUM
5865   BFD_RELOC_M68HC12_5B
5866 ENUMDOC
5867   Motorola 68HC12 reloc.
5868   This is the 5 bits of a value.
5869 ENUM
5870   BFD_RELOC_XGATE_RL_JUMP
5871 ENUMDOC
5872   Freescale XGATE reloc.
5873   This reloc marks the beginning of a bra/jal instruction.
5874 ENUM
5875   BFD_RELOC_XGATE_RL_GROUP
5876 ENUMDOC
5877   Freescale XGATE reloc.
5878   This reloc marks a group of several instructions that gcc generates
5879   and for which the linker relaxation pass can modify and/or remove
5880   some of them.
5881 ENUM
5882   BFD_RELOC_XGATE_LO16
5883 ENUMDOC
5884   Freescale XGATE reloc.
5885   This is the 16-bit lower part of an address.  It is used for the '16-bit'
5886   instructions.
5887 ENUM
5888   BFD_RELOC_XGATE_GPAGE
5889 ENUMDOC
5890   Freescale XGATE reloc.
5891 ENUM
5892   BFD_RELOC_XGATE_24
5893 ENUMDOC
5894   Freescale XGATE reloc.
5895 ENUM
5896   BFD_RELOC_XGATE_PCREL_9
5897 ENUMDOC
5898   Freescale XGATE reloc.
5899   This is a 9-bit pc-relative reloc.
5900 ENUM
5901   BFD_RELOC_XGATE_PCREL_10
5902 ENUMDOC
5903   Freescale XGATE reloc.
5904   This is a 10-bit pc-relative reloc.
5905 ENUM
5906   BFD_RELOC_XGATE_IMM8_LO
5907 ENUMDOC
5908   Freescale XGATE reloc.
5909   This is the 16-bit lower part of an address.  It is used for the '16-bit'
5910   instructions.
5911 ENUM
5912   BFD_RELOC_XGATE_IMM8_HI
5913 ENUMDOC
5914   Freescale XGATE reloc.
5915   This is the 16-bit higher part of an address.  It is used for the '16-bit'
5916   instructions.
5917 ENUM
5918   BFD_RELOC_XGATE_IMM3
5919 ENUMDOC
5920   Freescale XGATE reloc.
5921   This is a 3-bit pc-relative reloc.
5922 ENUM
5923   BFD_RELOC_XGATE_IMM4
5924 ENUMDOC
5925   Freescale XGATE reloc.
5926   This is a 4-bit pc-relative reloc.
5927 ENUM
5928   BFD_RELOC_XGATE_IMM5
5929 ENUMDOC
5930   Freescale XGATE reloc.
5931   This is a 5-bit pc-relative reloc.
5932 ENUM
5933   BFD_RELOC_M68HC12_9B
5934 ENUMDOC
5935   Motorola 68HC12 reloc.
5936   This is the 9 bits of a value.
5937 ENUM
5938   BFD_RELOC_M68HC12_16B
5939 ENUMDOC
5940   Motorola 68HC12 reloc.
5941   This is the 16 bits of a value.
5942 ENUM
5943   BFD_RELOC_M68HC12_9_PCREL
5944 ENUMDOC
5945   Motorola 68HC12/XGATE reloc.
5946   This is a PCREL9 branch.
5947 ENUM
5948   BFD_RELOC_M68HC12_10_PCREL
5949 ENUMDOC
5950   Motorola 68HC12/XGATE reloc.
5951   This is a PCREL10 branch.
5952 ENUM
5953   BFD_RELOC_M68HC12_LO8XG
5954 ENUMDOC
5955   Motorola 68HC12/XGATE reloc.
5956   This is the 8 bit low part of an absolute address and immediately precedes
5957   a matching HI8XG part.
5958 ENUM
5959   BFD_RELOC_M68HC12_HI8XG
5960 ENUMDOC
5961   Motorola 68HC12/XGATE reloc.
5962   This is the 8 bit high part of an absolute address and immediately follows
5963   a matching LO8XG part.
5964 ENUM
5965   BFD_RELOC_S12Z_15_PCREL
5966 ENUMDOC
5967   Freescale S12Z reloc.
5968   This is a 15 bit relative address.  If the most significant bits are all zero
5969   then it may be truncated to 8 bits.
5970 ENUM
5971   BFD_RELOC_16C_NUM08
5972 ENUMX
5973   BFD_RELOC_16C_NUM08_C
5974 ENUMX
5975   BFD_RELOC_16C_NUM16
5976 ENUMX
5977   BFD_RELOC_16C_NUM16_C
5978 ENUMX
5979   BFD_RELOC_16C_NUM32
5980 ENUMX
5981   BFD_RELOC_16C_NUM32_C
5982 ENUMX
5983   BFD_RELOC_16C_DISP04
5984 ENUMX
5985   BFD_RELOC_16C_DISP04_C
5986 ENUMX
5987   BFD_RELOC_16C_DISP08
5988 ENUMX
5989   BFD_RELOC_16C_DISP08_C
5990 ENUMX
5991   BFD_RELOC_16C_DISP16
5992 ENUMX
5993   BFD_RELOC_16C_DISP16_C
5994 ENUMX
5995   BFD_RELOC_16C_DISP24
5996 ENUMX
5997   BFD_RELOC_16C_DISP24_C
5998 ENUMX
5999   BFD_RELOC_16C_DISP24a
6000 ENUMX
6001   BFD_RELOC_16C_DISP24a_C
6002 ENUMX
6003   BFD_RELOC_16C_REG04
6004 ENUMX
6005   BFD_RELOC_16C_REG04_C
6006 ENUMX
6007   BFD_RELOC_16C_REG04a
6008 ENUMX
6009   BFD_RELOC_16C_REG04a_C
6010 ENUMX
6011   BFD_RELOC_16C_REG14
6012 ENUMX
6013   BFD_RELOC_16C_REG14_C
6014 ENUMX
6015   BFD_RELOC_16C_REG16
6016 ENUMX
6017   BFD_RELOC_16C_REG16_C
6018 ENUMX
6019   BFD_RELOC_16C_REG20
6020 ENUMX
6021   BFD_RELOC_16C_REG20_C
6022 ENUMX
6023   BFD_RELOC_16C_ABS20
6024 ENUMX
6025   BFD_RELOC_16C_ABS20_C
6026 ENUMX
6027   BFD_RELOC_16C_ABS24
6028 ENUMX
6029   BFD_RELOC_16C_ABS24_C
6030 ENUMX
6031   BFD_RELOC_16C_IMM04
6032 ENUMX
6033   BFD_RELOC_16C_IMM04_C
6034 ENUMX
6035   BFD_RELOC_16C_IMM16
6036 ENUMX
6037   BFD_RELOC_16C_IMM16_C
6038 ENUMX
6039   BFD_RELOC_16C_IMM20
6040 ENUMX
6041   BFD_RELOC_16C_IMM20_C
6042 ENUMX
6043   BFD_RELOC_16C_IMM24
6044 ENUMX
6045   BFD_RELOC_16C_IMM24_C
6046 ENUMX
6047   BFD_RELOC_16C_IMM32
6048 ENUMX
6049   BFD_RELOC_16C_IMM32_C
6050 ENUMDOC
6051   NS CR16C Relocations.
6052
6053 ENUM
6054   BFD_RELOC_CR16_NUM8
6055 ENUMX
6056   BFD_RELOC_CR16_NUM16
6057 ENUMX
6058   BFD_RELOC_CR16_NUM32
6059 ENUMX
6060   BFD_RELOC_CR16_NUM32a
6061 ENUMX
6062   BFD_RELOC_CR16_REGREL0
6063 ENUMX
6064   BFD_RELOC_CR16_REGREL4
6065 ENUMX
6066   BFD_RELOC_CR16_REGREL4a
6067 ENUMX
6068   BFD_RELOC_CR16_REGREL14
6069 ENUMX
6070   BFD_RELOC_CR16_REGREL14a
6071 ENUMX
6072   BFD_RELOC_CR16_REGREL16
6073 ENUMX
6074   BFD_RELOC_CR16_REGREL20
6075 ENUMX
6076   BFD_RELOC_CR16_REGREL20a
6077 ENUMX
6078   BFD_RELOC_CR16_ABS20
6079 ENUMX
6080   BFD_RELOC_CR16_ABS24
6081 ENUMX
6082   BFD_RELOC_CR16_IMM4
6083 ENUMX
6084   BFD_RELOC_CR16_IMM8
6085 ENUMX
6086   BFD_RELOC_CR16_IMM16
6087 ENUMX
6088   BFD_RELOC_CR16_IMM20
6089 ENUMX
6090   BFD_RELOC_CR16_IMM24
6091 ENUMX
6092   BFD_RELOC_CR16_IMM32
6093 ENUMX
6094   BFD_RELOC_CR16_IMM32a
6095 ENUMX
6096   BFD_RELOC_CR16_DISP4
6097 ENUMX
6098   BFD_RELOC_CR16_DISP8
6099 ENUMX
6100   BFD_RELOC_CR16_DISP16
6101 ENUMX
6102   BFD_RELOC_CR16_DISP20
6103 ENUMX
6104   BFD_RELOC_CR16_DISP24
6105 ENUMX
6106   BFD_RELOC_CR16_DISP24a
6107 ENUMX
6108   BFD_RELOC_CR16_SWITCH8
6109 ENUMX
6110   BFD_RELOC_CR16_SWITCH16
6111 ENUMX
6112   BFD_RELOC_CR16_SWITCH32
6113 ENUMX
6114   BFD_RELOC_CR16_GOT_REGREL20
6115 ENUMX
6116   BFD_RELOC_CR16_GOTC_REGREL20
6117 ENUMX
6118   BFD_RELOC_CR16_GLOB_DAT
6119 ENUMDOC
6120   NS CR16 Relocations.
6121
6122 ENUM
6123   BFD_RELOC_CRX_REL4
6124 ENUMX
6125   BFD_RELOC_CRX_REL8
6126 ENUMX
6127   BFD_RELOC_CRX_REL8_CMP
6128 ENUMX
6129   BFD_RELOC_CRX_REL16
6130 ENUMX
6131   BFD_RELOC_CRX_REL24
6132 ENUMX
6133   BFD_RELOC_CRX_REL32
6134 ENUMX
6135   BFD_RELOC_CRX_REGREL12
6136 ENUMX
6137   BFD_RELOC_CRX_REGREL22
6138 ENUMX
6139   BFD_RELOC_CRX_REGREL28
6140 ENUMX
6141   BFD_RELOC_CRX_REGREL32
6142 ENUMX
6143   BFD_RELOC_CRX_ABS16
6144 ENUMX
6145   BFD_RELOC_CRX_ABS32
6146 ENUMX
6147   BFD_RELOC_CRX_NUM8
6148 ENUMX
6149   BFD_RELOC_CRX_NUM16
6150 ENUMX
6151   BFD_RELOC_CRX_NUM32
6152 ENUMX
6153   BFD_RELOC_CRX_IMM16
6154 ENUMX
6155   BFD_RELOC_CRX_IMM32
6156 ENUMX
6157   BFD_RELOC_CRX_SWITCH8
6158 ENUMX
6159   BFD_RELOC_CRX_SWITCH16
6160 ENUMX
6161   BFD_RELOC_CRX_SWITCH32
6162 ENUMDOC
6163   NS CRX Relocations.
6164
6165 ENUM
6166   BFD_RELOC_CRIS_BDISP8
6167 ENUMX
6168   BFD_RELOC_CRIS_UNSIGNED_5
6169 ENUMX
6170   BFD_RELOC_CRIS_SIGNED_6
6171 ENUMX
6172   BFD_RELOC_CRIS_UNSIGNED_6
6173 ENUMX
6174   BFD_RELOC_CRIS_SIGNED_8
6175 ENUMX
6176   BFD_RELOC_CRIS_UNSIGNED_8
6177 ENUMX
6178   BFD_RELOC_CRIS_SIGNED_16
6179 ENUMX
6180   BFD_RELOC_CRIS_UNSIGNED_16
6181 ENUMX
6182   BFD_RELOC_CRIS_LAPCQ_OFFSET
6183 ENUMX
6184   BFD_RELOC_CRIS_UNSIGNED_4
6185 ENUMDOC
6186   These relocs are only used within the CRIS assembler.  They are not
6187   (at present) written to any object files.
6188 ENUM
6189   BFD_RELOC_CRIS_COPY
6190 ENUMX
6191   BFD_RELOC_CRIS_GLOB_DAT
6192 ENUMX
6193   BFD_RELOC_CRIS_JUMP_SLOT
6194 ENUMX
6195   BFD_RELOC_CRIS_RELATIVE
6196 ENUMDOC
6197   Relocs used in ELF shared libraries for CRIS.
6198 ENUM
6199   BFD_RELOC_CRIS_32_GOT
6200 ENUMDOC
6201   32-bit offset to symbol-entry within GOT.
6202 ENUM
6203   BFD_RELOC_CRIS_16_GOT
6204 ENUMDOC
6205   16-bit offset to symbol-entry within GOT.
6206 ENUM
6207   BFD_RELOC_CRIS_32_GOTPLT
6208 ENUMDOC
6209   32-bit offset to symbol-entry within GOT, with PLT handling.
6210 ENUM
6211   BFD_RELOC_CRIS_16_GOTPLT
6212 ENUMDOC
6213   16-bit offset to symbol-entry within GOT, with PLT handling.
6214 ENUM
6215   BFD_RELOC_CRIS_32_GOTREL
6216 ENUMDOC
6217   32-bit offset to symbol, relative to GOT.
6218 ENUM
6219   BFD_RELOC_CRIS_32_PLT_GOTREL
6220 ENUMDOC
6221   32-bit offset to symbol with PLT entry, relative to GOT.
6222 ENUM
6223   BFD_RELOC_CRIS_32_PLT_PCREL
6224 ENUMDOC
6225   32-bit offset to symbol with PLT entry, relative to this relocation.
6226
6227 ENUM
6228   BFD_RELOC_CRIS_32_GOT_GD
6229 ENUMX
6230   BFD_RELOC_CRIS_16_GOT_GD
6231 ENUMX
6232   BFD_RELOC_CRIS_32_GD
6233 ENUMX
6234   BFD_RELOC_CRIS_DTP
6235 ENUMX
6236   BFD_RELOC_CRIS_32_DTPREL
6237 ENUMX
6238   BFD_RELOC_CRIS_16_DTPREL
6239 ENUMX
6240   BFD_RELOC_CRIS_32_GOT_TPREL
6241 ENUMX
6242   BFD_RELOC_CRIS_16_GOT_TPREL
6243 ENUMX
6244   BFD_RELOC_CRIS_32_TPREL
6245 ENUMX
6246   BFD_RELOC_CRIS_16_TPREL
6247 ENUMX
6248   BFD_RELOC_CRIS_DTPMOD
6249 ENUMX
6250   BFD_RELOC_CRIS_32_IE
6251 ENUMDOC
6252   Relocs used in TLS code for CRIS.
6253
6254 ENUM
6255   BFD_RELOC_OR1K_REL_26
6256 ENUMX
6257   BFD_RELOC_OR1K_GOTPC_HI16
6258 ENUMX
6259   BFD_RELOC_OR1K_GOTPC_LO16
6260 ENUMX
6261   BFD_RELOC_OR1K_GOT16
6262 ENUMX
6263   BFD_RELOC_OR1K_PLT26
6264 ENUMX
6265   BFD_RELOC_OR1K_GOTOFF_HI16
6266 ENUMX
6267   BFD_RELOC_OR1K_GOTOFF_LO16
6268 ENUMX
6269   BFD_RELOC_OR1K_COPY
6270 ENUMX
6271   BFD_RELOC_OR1K_GLOB_DAT
6272 ENUMX
6273   BFD_RELOC_OR1K_JMP_SLOT
6274 ENUMX
6275   BFD_RELOC_OR1K_RELATIVE
6276 ENUMX
6277   BFD_RELOC_OR1K_TLS_GD_HI16
6278 ENUMX
6279   BFD_RELOC_OR1K_TLS_GD_LO16
6280 ENUMX
6281   BFD_RELOC_OR1K_TLS_LDM_HI16
6282 ENUMX
6283   BFD_RELOC_OR1K_TLS_LDM_LO16
6284 ENUMX
6285   BFD_RELOC_OR1K_TLS_LDO_HI16
6286 ENUMX
6287   BFD_RELOC_OR1K_TLS_LDO_LO16
6288 ENUMX
6289   BFD_RELOC_OR1K_TLS_IE_HI16
6290 ENUMX
6291   BFD_RELOC_OR1K_TLS_IE_LO16
6292 ENUMX
6293   BFD_RELOC_OR1K_TLS_LE_HI16
6294 ENUMX
6295   BFD_RELOC_OR1K_TLS_LE_LO16
6296 ENUMX
6297   BFD_RELOC_OR1K_TLS_TPOFF
6298 ENUMX
6299   BFD_RELOC_OR1K_TLS_DTPOFF
6300 ENUMX
6301   BFD_RELOC_OR1K_TLS_DTPMOD
6302 ENUMDOC
6303   OpenRISC 1000 Relocations.
6304
6305 ENUM
6306   BFD_RELOC_H8_DIR16A8
6307 ENUMX
6308   BFD_RELOC_H8_DIR16R8
6309 ENUMX
6310   BFD_RELOC_H8_DIR24A8
6311 ENUMX
6312   BFD_RELOC_H8_DIR24R8
6313 ENUMX
6314   BFD_RELOC_H8_DIR32A16
6315 ENUMX
6316   BFD_RELOC_H8_DISP32A16
6317 ENUMDOC
6318   H8 elf Relocations.
6319
6320 ENUM
6321   BFD_RELOC_XSTORMY16_REL_12
6322 ENUMX
6323   BFD_RELOC_XSTORMY16_12
6324 ENUMX
6325   BFD_RELOC_XSTORMY16_24
6326 ENUMX
6327   BFD_RELOC_XSTORMY16_FPTR16
6328 ENUMDOC
6329   Sony Xstormy16 Relocations.
6330
6331 ENUM
6332   BFD_RELOC_RELC
6333 ENUMDOC
6334   Self-describing complex relocations.
6335 COMMENT
6336
6337 ENUM
6338   BFD_RELOC_XC16X_PAG
6339 ENUMX
6340   BFD_RELOC_XC16X_POF
6341 ENUMX
6342   BFD_RELOC_XC16X_SEG
6343 ENUMX
6344   BFD_RELOC_XC16X_SOF
6345 ENUMDOC
6346   Infineon Relocations.
6347
6348 ENUM
6349   BFD_RELOC_VAX_GLOB_DAT
6350 ENUMX
6351   BFD_RELOC_VAX_JMP_SLOT
6352 ENUMX
6353   BFD_RELOC_VAX_RELATIVE
6354 ENUMDOC
6355   Relocations used by VAX ELF.
6356
6357 ENUM
6358   BFD_RELOC_MT_PC16
6359 ENUMDOC
6360   Morpho MT - 16 bit immediate relocation.
6361 ENUM
6362   BFD_RELOC_MT_HI16
6363 ENUMDOC
6364   Morpho MT - Hi 16 bits of an address.
6365 ENUM
6366   BFD_RELOC_MT_LO16
6367 ENUMDOC
6368   Morpho MT - Low 16 bits of an address.
6369 ENUM
6370   BFD_RELOC_MT_GNU_VTINHERIT
6371 ENUMDOC
6372   Morpho MT - Used to tell the linker which vtable entries are used.
6373 ENUM
6374   BFD_RELOC_MT_GNU_VTENTRY
6375 ENUMDOC
6376   Morpho MT - Used to tell the linker which vtable entries are used.
6377 ENUM
6378   BFD_RELOC_MT_PCINSN8
6379 ENUMDOC
6380   Morpho MT - 8 bit immediate relocation.
6381
6382 ENUM
6383   BFD_RELOC_MSP430_10_PCREL
6384 ENUMX
6385   BFD_RELOC_MSP430_16_PCREL
6386 ENUMX
6387   BFD_RELOC_MSP430_16
6388 ENUMX
6389   BFD_RELOC_MSP430_16_PCREL_BYTE
6390 ENUMX
6391   BFD_RELOC_MSP430_16_BYTE
6392 ENUMX
6393   BFD_RELOC_MSP430_2X_PCREL
6394 ENUMX
6395   BFD_RELOC_MSP430_RL_PCREL
6396 ENUMX
6397   BFD_RELOC_MSP430_ABS8
6398 ENUMX
6399   BFD_RELOC_MSP430X_PCR20_EXT_SRC
6400 ENUMX
6401   BFD_RELOC_MSP430X_PCR20_EXT_DST
6402 ENUMX
6403   BFD_RELOC_MSP430X_PCR20_EXT_ODST
6404 ENUMX
6405   BFD_RELOC_MSP430X_ABS20_EXT_SRC
6406 ENUMX
6407   BFD_RELOC_MSP430X_ABS20_EXT_DST
6408 ENUMX
6409   BFD_RELOC_MSP430X_ABS20_EXT_ODST
6410 ENUMX
6411   BFD_RELOC_MSP430X_ABS20_ADR_SRC
6412 ENUMX
6413   BFD_RELOC_MSP430X_ABS20_ADR_DST
6414 ENUMX
6415   BFD_RELOC_MSP430X_PCR16
6416 ENUMX
6417   BFD_RELOC_MSP430X_PCR20_CALL
6418 ENUMX
6419   BFD_RELOC_MSP430X_ABS16
6420 ENUMX
6421   BFD_RELOC_MSP430_ABS_HI16
6422 ENUMX
6423   BFD_RELOC_MSP430_PREL31
6424 ENUMX
6425   BFD_RELOC_MSP430_SYM_DIFF
6426 ENUMDOC
6427   msp430 specific relocation codes
6428
6429 ENUM
6430   BFD_RELOC_NIOS2_S16
6431 ENUMX
6432   BFD_RELOC_NIOS2_U16
6433 ENUMX
6434   BFD_RELOC_NIOS2_CALL26
6435 ENUMX
6436   BFD_RELOC_NIOS2_IMM5
6437 ENUMX
6438   BFD_RELOC_NIOS2_CACHE_OPX
6439 ENUMX
6440   BFD_RELOC_NIOS2_IMM6
6441 ENUMX
6442   BFD_RELOC_NIOS2_IMM8
6443 ENUMX
6444   BFD_RELOC_NIOS2_HI16
6445 ENUMX
6446   BFD_RELOC_NIOS2_LO16
6447 ENUMX
6448   BFD_RELOC_NIOS2_HIADJ16
6449 ENUMX
6450   BFD_RELOC_NIOS2_GPREL
6451 ENUMX
6452   BFD_RELOC_NIOS2_UJMP
6453 ENUMX
6454   BFD_RELOC_NIOS2_CJMP
6455 ENUMX
6456   BFD_RELOC_NIOS2_CALLR
6457 ENUMX
6458   BFD_RELOC_NIOS2_ALIGN
6459 ENUMX
6460   BFD_RELOC_NIOS2_GOT16
6461 ENUMX
6462   BFD_RELOC_NIOS2_CALL16
6463 ENUMX
6464   BFD_RELOC_NIOS2_GOTOFF_LO
6465 ENUMX
6466   BFD_RELOC_NIOS2_GOTOFF_HA
6467 ENUMX
6468   BFD_RELOC_NIOS2_PCREL_LO
6469 ENUMX
6470   BFD_RELOC_NIOS2_PCREL_HA
6471 ENUMX
6472   BFD_RELOC_NIOS2_TLS_GD16
6473 ENUMX
6474   BFD_RELOC_NIOS2_TLS_LDM16
6475 ENUMX
6476   BFD_RELOC_NIOS2_TLS_LDO16
6477 ENUMX
6478   BFD_RELOC_NIOS2_TLS_IE16
6479 ENUMX
6480   BFD_RELOC_NIOS2_TLS_LE16
6481 ENUMX
6482   BFD_RELOC_NIOS2_TLS_DTPMOD
6483 ENUMX
6484   BFD_RELOC_NIOS2_TLS_DTPREL
6485 ENUMX
6486   BFD_RELOC_NIOS2_TLS_TPREL
6487 ENUMX
6488   BFD_RELOC_NIOS2_COPY
6489 ENUMX
6490   BFD_RELOC_NIOS2_GLOB_DAT
6491 ENUMX
6492   BFD_RELOC_NIOS2_JUMP_SLOT
6493 ENUMX
6494   BFD_RELOC_NIOS2_RELATIVE
6495 ENUMX
6496   BFD_RELOC_NIOS2_GOTOFF
6497 ENUMX
6498   BFD_RELOC_NIOS2_CALL26_NOAT
6499 ENUMX
6500   BFD_RELOC_NIOS2_GOT_LO
6501 ENUMX
6502   BFD_RELOC_NIOS2_GOT_HA
6503 ENUMX
6504   BFD_RELOC_NIOS2_CALL_LO
6505 ENUMX
6506   BFD_RELOC_NIOS2_CALL_HA
6507 ENUMX
6508   BFD_RELOC_NIOS2_R2_S12
6509 ENUMX
6510   BFD_RELOC_NIOS2_R2_I10_1_PCREL
6511 ENUMX
6512   BFD_RELOC_NIOS2_R2_T1I7_1_PCREL
6513 ENUMX
6514   BFD_RELOC_NIOS2_R2_T1I7_2
6515 ENUMX
6516   BFD_RELOC_NIOS2_R2_T2I4
6517 ENUMX
6518   BFD_RELOC_NIOS2_R2_T2I4_1
6519 ENUMX
6520   BFD_RELOC_NIOS2_R2_T2I4_2
6521 ENUMX
6522   BFD_RELOC_NIOS2_R2_X1I7_2
6523 ENUMX
6524   BFD_RELOC_NIOS2_R2_X2L5
6525 ENUMX
6526   BFD_RELOC_NIOS2_R2_F1I5_2
6527 ENUMX
6528   BFD_RELOC_NIOS2_R2_L5I4X1
6529 ENUMX
6530   BFD_RELOC_NIOS2_R2_T1X1I6
6531 ENUMX
6532   BFD_RELOC_NIOS2_R2_T1X1I6_2
6533 ENUMDOC
6534   Relocations used by the Altera Nios II core.
6535
6536 ENUM
6537   BFD_RELOC_PRU_U16
6538 ENUMDOC
6539   PRU LDI 16-bit unsigned data-memory relocation.
6540 ENUM
6541   BFD_RELOC_PRU_U16_PMEMIMM
6542 ENUMDOC
6543   PRU LDI 16-bit unsigned instruction-memory relocation.
6544 ENUM
6545   BFD_RELOC_PRU_LDI32
6546 ENUMDOC
6547   PRU relocation for two consecutive LDI load instructions that load a
6548   32 bit value into a register. If the higher bits are all zero, then
6549   the second instruction may be relaxed.
6550 ENUM
6551   BFD_RELOC_PRU_S10_PCREL
6552 ENUMDOC
6553   PRU QBBx 10-bit signed PC-relative relocation.
6554 ENUM
6555   BFD_RELOC_PRU_U8_PCREL
6556 ENUMDOC
6557   PRU 8-bit unsigned relocation used for the LOOP instruction.
6558 ENUM
6559   BFD_RELOC_PRU_32_PMEM
6560 ENUMX
6561   BFD_RELOC_PRU_16_PMEM
6562 ENUMDOC
6563   PRU Program Memory relocations.  Used to convert from byte addressing to
6564   32-bit word addressing.
6565 ENUM
6566   BFD_RELOC_PRU_GNU_DIFF8
6567 ENUMX
6568   BFD_RELOC_PRU_GNU_DIFF16
6569 ENUMX
6570   BFD_RELOC_PRU_GNU_DIFF32
6571 ENUMX
6572   BFD_RELOC_PRU_GNU_DIFF16_PMEM
6573 ENUMX
6574   BFD_RELOC_PRU_GNU_DIFF32_PMEM
6575 ENUMDOC
6576   PRU relocations to mark the difference of two local symbols.
6577   These are only needed to support linker relaxation and can be ignored
6578   when not relaxing.  The field is set to the value of the difference
6579   assuming no relaxation.  The relocation encodes the position of the
6580   second symbol so the linker can determine whether to adjust the field
6581   value. The PMEM variants encode the word difference, instead of byte
6582   difference between symbols.
6583
6584 ENUM
6585   BFD_RELOC_IQ2000_OFFSET_16
6586 ENUMX
6587   BFD_RELOC_IQ2000_OFFSET_21
6588 ENUMX
6589   BFD_RELOC_IQ2000_UHI16
6590 ENUMDOC
6591   IQ2000 Relocations.
6592
6593 ENUM
6594   BFD_RELOC_XTENSA_RTLD
6595 ENUMDOC
6596   Special Xtensa relocation used only by PLT entries in ELF shared
6597   objects to indicate that the runtime linker should set the value
6598   to one of its own internal functions or data structures.
6599 ENUM
6600   BFD_RELOC_XTENSA_GLOB_DAT
6601 ENUMX
6602   BFD_RELOC_XTENSA_JMP_SLOT
6603 ENUMX
6604   BFD_RELOC_XTENSA_RELATIVE
6605 ENUMDOC
6606   Xtensa relocations for ELF shared objects.
6607 ENUM
6608   BFD_RELOC_XTENSA_PLT
6609 ENUMDOC
6610   Xtensa relocation used in ELF object files for symbols that may require
6611   PLT entries.  Otherwise, this is just a generic 32-bit relocation.
6612 ENUM
6613   BFD_RELOC_XTENSA_DIFF8
6614 ENUMX
6615   BFD_RELOC_XTENSA_DIFF16
6616 ENUMX
6617   BFD_RELOC_XTENSA_DIFF32
6618 ENUMDOC
6619   Xtensa relocations to mark the difference of two local symbols.
6620   These are only needed to support linker relaxation and can be ignored
6621   when not relaxing.  The field is set to the value of the difference
6622   assuming no relaxation.  The relocation encodes the position of the
6623   first symbol so the linker can determine whether to adjust the field
6624   value.
6625 ENUM
6626   BFD_RELOC_XTENSA_SLOT0_OP
6627 ENUMX
6628   BFD_RELOC_XTENSA_SLOT1_OP
6629 ENUMX
6630   BFD_RELOC_XTENSA_SLOT2_OP
6631 ENUMX
6632   BFD_RELOC_XTENSA_SLOT3_OP
6633 ENUMX
6634   BFD_RELOC_XTENSA_SLOT4_OP
6635 ENUMX
6636   BFD_RELOC_XTENSA_SLOT5_OP
6637 ENUMX
6638   BFD_RELOC_XTENSA_SLOT6_OP
6639 ENUMX
6640   BFD_RELOC_XTENSA_SLOT7_OP
6641 ENUMX
6642   BFD_RELOC_XTENSA_SLOT8_OP
6643 ENUMX
6644   BFD_RELOC_XTENSA_SLOT9_OP
6645 ENUMX
6646   BFD_RELOC_XTENSA_SLOT10_OP
6647 ENUMX
6648   BFD_RELOC_XTENSA_SLOT11_OP
6649 ENUMX
6650   BFD_RELOC_XTENSA_SLOT12_OP
6651 ENUMX
6652   BFD_RELOC_XTENSA_SLOT13_OP
6653 ENUMX
6654   BFD_RELOC_XTENSA_SLOT14_OP
6655 ENUMDOC
6656   Generic Xtensa relocations for instruction operands.  Only the slot
6657   number is encoded in the relocation.  The relocation applies to the
6658   last PC-relative immediate operand, or if there are no PC-relative
6659   immediates, to the last immediate operand.
6660 ENUM
6661   BFD_RELOC_XTENSA_SLOT0_ALT
6662 ENUMX
6663   BFD_RELOC_XTENSA_SLOT1_ALT
6664 ENUMX
6665   BFD_RELOC_XTENSA_SLOT2_ALT
6666 ENUMX
6667   BFD_RELOC_XTENSA_SLOT3_ALT
6668 ENUMX
6669   BFD_RELOC_XTENSA_SLOT4_ALT
6670 ENUMX
6671   BFD_RELOC_XTENSA_SLOT5_ALT
6672 ENUMX
6673   BFD_RELOC_XTENSA_SLOT6_ALT
6674 ENUMX
6675   BFD_RELOC_XTENSA_SLOT7_ALT
6676 ENUMX
6677   BFD_RELOC_XTENSA_SLOT8_ALT
6678 ENUMX
6679   BFD_RELOC_XTENSA_SLOT9_ALT
6680 ENUMX
6681   BFD_RELOC_XTENSA_SLOT10_ALT
6682 ENUMX
6683   BFD_RELOC_XTENSA_SLOT11_ALT
6684 ENUMX
6685   BFD_RELOC_XTENSA_SLOT12_ALT
6686 ENUMX
6687   BFD_RELOC_XTENSA_SLOT13_ALT
6688 ENUMX
6689   BFD_RELOC_XTENSA_SLOT14_ALT
6690 ENUMDOC
6691   Alternate Xtensa relocations.  Only the slot is encoded in the
6692   relocation.  The meaning of these relocations is opcode-specific.
6693 ENUM
6694   BFD_RELOC_XTENSA_OP0
6695 ENUMX
6696   BFD_RELOC_XTENSA_OP1
6697 ENUMX
6698   BFD_RELOC_XTENSA_OP2
6699 ENUMDOC
6700   Xtensa relocations for backward compatibility.  These have all been
6701   replaced by BFD_RELOC_XTENSA_SLOT0_OP.
6702 ENUM
6703   BFD_RELOC_XTENSA_ASM_EXPAND
6704 ENUMDOC
6705   Xtensa relocation to mark that the assembler expanded the
6706   instructions from an original target.  The expansion size is
6707   encoded in the reloc size.
6708 ENUM
6709   BFD_RELOC_XTENSA_ASM_SIMPLIFY
6710 ENUMDOC
6711   Xtensa relocation to mark that the linker should simplify
6712   assembler-expanded instructions.  This is commonly used
6713   internally by the linker after analysis of a
6714   BFD_RELOC_XTENSA_ASM_EXPAND.
6715 ENUM
6716   BFD_RELOC_XTENSA_TLSDESC_FN
6717 ENUMX
6718   BFD_RELOC_XTENSA_TLSDESC_ARG
6719 ENUMX
6720   BFD_RELOC_XTENSA_TLS_DTPOFF
6721 ENUMX
6722   BFD_RELOC_XTENSA_TLS_TPOFF
6723 ENUMX
6724   BFD_RELOC_XTENSA_TLS_FUNC
6725 ENUMX
6726   BFD_RELOC_XTENSA_TLS_ARG
6727 ENUMX
6728   BFD_RELOC_XTENSA_TLS_CALL
6729 ENUMDOC
6730   Xtensa TLS relocations.
6731
6732 ENUM
6733   BFD_RELOC_Z80_DISP8
6734 ENUMDOC
6735   8 bit signed offset in (ix+d) or (iy+d).
6736
6737 ENUM
6738   BFD_RELOC_Z8K_DISP7
6739 ENUMDOC
6740   DJNZ offset.
6741 ENUM
6742   BFD_RELOC_Z8K_CALLR
6743 ENUMDOC
6744   CALR offset.
6745 ENUM
6746   BFD_RELOC_Z8K_IMM4L
6747 ENUMDOC
6748   4 bit value.
6749
6750 ENUM
6751    BFD_RELOC_LM32_CALL
6752 ENUMX
6753    BFD_RELOC_LM32_BRANCH
6754 ENUMX
6755    BFD_RELOC_LM32_16_GOT
6756 ENUMX
6757    BFD_RELOC_LM32_GOTOFF_HI16
6758 ENUMX
6759    BFD_RELOC_LM32_GOTOFF_LO16
6760 ENUMX
6761    BFD_RELOC_LM32_COPY
6762 ENUMX
6763    BFD_RELOC_LM32_GLOB_DAT
6764 ENUMX
6765    BFD_RELOC_LM32_JMP_SLOT
6766 ENUMX
6767    BFD_RELOC_LM32_RELATIVE
6768 ENUMDOC
6769  Lattice Mico32 relocations.
6770
6771 ENUM
6772   BFD_RELOC_MACH_O_SECTDIFF
6773 ENUMDOC
6774   Difference between two section addreses.  Must be followed by a
6775   BFD_RELOC_MACH_O_PAIR.
6776 ENUM
6777   BFD_RELOC_MACH_O_LOCAL_SECTDIFF
6778 ENUMDOC
6779   Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.
6780 ENUM
6781   BFD_RELOC_MACH_O_PAIR
6782 ENUMDOC
6783   Pair of relocation.  Contains the first symbol.
6784 ENUM
6785   BFD_RELOC_MACH_O_SUBTRACTOR32
6786 ENUMDOC
6787   Symbol will be substracted.  Must be followed by a BFD_RELOC_32.
6788 ENUM
6789   BFD_RELOC_MACH_O_SUBTRACTOR64
6790 ENUMDOC
6791   Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
6792
6793 ENUM
6794   BFD_RELOC_MACH_O_X86_64_BRANCH32
6795 ENUMX
6796   BFD_RELOC_MACH_O_X86_64_BRANCH8
6797 ENUMDOC
6798   PCREL relocations.  They are marked as branch to create PLT entry if
6799   required.
6800 ENUM
6801   BFD_RELOC_MACH_O_X86_64_GOT
6802 ENUMDOC
6803   Used when referencing a GOT entry.
6804 ENUM
6805   BFD_RELOC_MACH_O_X86_64_GOT_LOAD
6806 ENUMDOC
6807   Used when loading a GOT entry with movq.  It is specially marked so that
6808   the linker could optimize the movq to a leaq if possible.
6809 ENUM
6810   BFD_RELOC_MACH_O_X86_64_PCREL32_1
6811 ENUMDOC
6812   Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
6813 ENUM
6814   BFD_RELOC_MACH_O_X86_64_PCREL32_2
6815 ENUMDOC
6816   Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.
6817 ENUM
6818   BFD_RELOC_MACH_O_X86_64_PCREL32_4
6819 ENUMDOC
6820   Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
6821 ENUM
6822   BFD_RELOC_MACH_O_X86_64_TLV
6823 ENUMDOC
6824   Used when referencing a TLV entry.
6825
6826
6827 ENUM
6828   BFD_RELOC_MACH_O_ARM64_ADDEND
6829 ENUMDOC
6830   Addend for PAGE or PAGEOFF.
6831 ENUM
6832   BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21
6833 ENUMDOC
6834   Relative offset to page of GOT slot.
6835 ENUM
6836   BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12
6837 ENUMDOC
6838   Relative offset within page of GOT slot.
6839 ENUM
6840   BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT
6841 ENUMDOC
6842   Address of a GOT entry.
6843
6844 ENUM
6845   BFD_RELOC_MICROBLAZE_32_LO
6846 ENUMDOC
6847   This is a 32 bit reloc for the microblaze that stores the
6848   low 16 bits of a value
6849 ENUM
6850   BFD_RELOC_MICROBLAZE_32_LO_PCREL
6851 ENUMDOC
6852   This is a 32 bit pc-relative reloc for the microblaze that
6853   stores the low 16 bits of a value
6854 ENUM
6855   BFD_RELOC_MICROBLAZE_32_ROSDA
6856 ENUMDOC
6857   This is a 32 bit reloc for the microblaze that stores a
6858   value relative to the read-only small data area anchor
6859 ENUM
6860   BFD_RELOC_MICROBLAZE_32_RWSDA
6861 ENUMDOC
6862   This is a 32 bit reloc for the microblaze that stores a
6863   value relative to the read-write small data area anchor
6864 ENUM
6865   BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
6866 ENUMDOC
6867   This is a 32 bit reloc for the microblaze to handle
6868   expressions of the form "Symbol Op Symbol"
6869 ENUM
6870   BFD_RELOC_MICROBLAZE_64_NONE
6871 ENUMDOC
6872   This is a 64 bit reloc that stores the 32 bit pc relative
6873   value in two words (with an imm instruction).  No relocation is
6874   done here - only used for relaxing
6875 ENUM
6876   BFD_RELOC_MICROBLAZE_64_GOTPC
6877 ENUMDOC
6878   This is a 64 bit reloc that stores the 32 bit pc relative
6879   value in two words (with an imm instruction).  The relocation is
6880   PC-relative GOT offset
6881 ENUM
6882   BFD_RELOC_MICROBLAZE_64_GOT
6883 ENUMDOC
6884   This is a 64 bit reloc that stores the 32 bit pc relative
6885   value in two words (with an imm instruction).  The relocation is
6886   GOT offset
6887 ENUM
6888   BFD_RELOC_MICROBLAZE_64_PLT
6889 ENUMDOC
6890   This is a 64 bit reloc that stores the 32 bit pc relative
6891   value in two words (with an imm instruction).  The relocation is
6892   PC-relative offset into PLT
6893 ENUM
6894   BFD_RELOC_MICROBLAZE_64_GOTOFF
6895 ENUMDOC
6896   This is a 64 bit reloc that stores the 32 bit GOT relative
6897   value in two words (with an imm instruction).  The relocation is
6898   relative offset from _GLOBAL_OFFSET_TABLE_
6899 ENUM
6900   BFD_RELOC_MICROBLAZE_32_GOTOFF
6901 ENUMDOC
6902   This is a 32 bit reloc that stores the 32 bit GOT relative
6903   value in a word.  The relocation is relative offset from
6904   _GLOBAL_OFFSET_TABLE_
6905 ENUM
6906   BFD_RELOC_MICROBLAZE_COPY
6907 ENUMDOC
6908   This is used to tell the dynamic linker to copy the value out of
6909   the dynamic object into the runtime process image.
6910 ENUM
6911   BFD_RELOC_MICROBLAZE_64_TLS
6912 ENUMDOC
6913   Unused Reloc
6914 ENUM
6915   BFD_RELOC_MICROBLAZE_64_TLSGD
6916 ENUMDOC
6917   This is a 64 bit reloc that stores the 32 bit GOT relative value
6918   of the GOT TLS GD info entry in two words (with an imm instruction). The
6919   relocation is GOT offset.
6920 ENUM
6921   BFD_RELOC_MICROBLAZE_64_TLSLD
6922 ENUMDOC
6923   This is a 64 bit reloc that stores the 32 bit GOT relative value
6924   of the GOT TLS LD info entry in two words (with an imm instruction). The
6925   relocation is GOT offset.
6926 ENUM
6927   BFD_RELOC_MICROBLAZE_32_TLSDTPMOD
6928 ENUMDOC
6929   This is a 32 bit reloc that stores the Module ID to GOT(n).
6930 ENUM
6931   BFD_RELOC_MICROBLAZE_32_TLSDTPREL
6932 ENUMDOC
6933   This is a 32 bit reloc that stores TLS offset to GOT(n+1).
6934 ENUM
6935   BFD_RELOC_MICROBLAZE_64_TLSDTPREL
6936 ENUMDOC
6937   This is a 32 bit reloc for storing TLS offset to two words (uses imm
6938   instruction)
6939 ENUM
6940   BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL
6941 ENUMDOC
6942   This is a 64 bit reloc that stores 32-bit thread pointer relative offset
6943   to two words (uses imm instruction).
6944 ENUM
6945   BFD_RELOC_MICROBLAZE_64_TLSTPREL
6946 ENUMDOC
6947   This is a 64 bit reloc that stores 32-bit thread pointer relative offset
6948   to two words (uses imm instruction).
6949 ENUM
6950   BFD_RELOC_MICROBLAZE_64_TEXTPCREL
6951 ENUMDOC
6952   This is a 64 bit reloc that stores the 32 bit pc relative
6953   value in two words (with an imm instruction).  The relocation is
6954   PC-relative offset from start of TEXT.
6955 ENUM
6956   BFD_RELOC_MICROBLAZE_64_TEXTREL
6957 ENUMDOC
6958   This is a 64 bit reloc that stores the 32 bit offset
6959   value in two words (with an imm instruction).  The relocation is
6960   relative offset from start of TEXT.
6961
6962 ENUM
6963   BFD_RELOC_AARCH64_RELOC_START
6964 ENUMDOC
6965   AArch64 pseudo relocation code to mark the start of the AArch64
6966   relocation enumerators.  N.B. the order of the enumerators is
6967   important as several tables in the AArch64 bfd backend are indexed
6968   by these enumerators; make sure they are all synced.
6969 ENUM
6970   BFD_RELOC_AARCH64_NULL
6971 ENUMDOC
6972   Deprecated AArch64 null relocation code.
6973 ENUM
6974   BFD_RELOC_AARCH64_NONE
6975 ENUMDOC
6976   AArch64 null relocation code.
6977 ENUM
6978   BFD_RELOC_AARCH64_64
6979 ENUMX
6980   BFD_RELOC_AARCH64_32
6981 ENUMX
6982   BFD_RELOC_AARCH64_16
6983 ENUMDOC
6984   Basic absolute relocations of N bits.  These are equivalent to
6985 BFD_RELOC_N and they were added to assist the indexing of the howto
6986 table.
6987 ENUM
6988   BFD_RELOC_AARCH64_64_PCREL
6989 ENUMX
6990   BFD_RELOC_AARCH64_32_PCREL
6991 ENUMX
6992   BFD_RELOC_AARCH64_16_PCREL
6993 ENUMDOC
6994   PC-relative relocations.  These are equivalent to BFD_RELOC_N_PCREL
6995 and they were added to assist the indexing of the howto table.
6996 ENUM
6997   BFD_RELOC_AARCH64_MOVW_G0
6998 ENUMDOC
6999   AArch64 MOV[NZK] instruction with most significant bits 0 to 15
7000   of an unsigned address/value.
7001 ENUM
7002   BFD_RELOC_AARCH64_MOVW_G0_NC
7003 ENUMDOC
7004   AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
7005   an address/value.  No overflow checking.
7006 ENUM
7007   BFD_RELOC_AARCH64_MOVW_G1
7008 ENUMDOC
7009   AArch64 MOV[NZK] instruction with most significant bits 16 to 31
7010   of an unsigned address/value.
7011 ENUM
7012   BFD_RELOC_AARCH64_MOVW_G1_NC
7013 ENUMDOC
7014   AArch64 MOV[NZK] instruction with less significant bits 16 to 31
7015   of an address/value.  No overflow checking.
7016 ENUM
7017   BFD_RELOC_AARCH64_MOVW_G2
7018 ENUMDOC
7019   AArch64 MOV[NZK] instruction with most significant bits 32 to 47
7020   of an unsigned address/value.
7021 ENUM
7022   BFD_RELOC_AARCH64_MOVW_G2_NC
7023 ENUMDOC
7024   AArch64 MOV[NZK] instruction with less significant bits 32 to 47
7025   of an address/value.  No overflow checking.
7026 ENUM
7027   BFD_RELOC_AARCH64_MOVW_G3
7028 ENUMDOC
7029   AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
7030   of a signed or unsigned address/value.
7031 ENUM
7032   BFD_RELOC_AARCH64_MOVW_G0_S
7033 ENUMDOC
7034   AArch64 MOV[NZ] instruction with most significant bits 0 to 15
7035   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
7036   value's sign.
7037 ENUM
7038   BFD_RELOC_AARCH64_MOVW_G1_S
7039 ENUMDOC
7040   AArch64 MOV[NZ] instruction with most significant bits 16 to 31
7041   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
7042   value's sign.
7043 ENUM
7044   BFD_RELOC_AARCH64_MOVW_G2_S
7045 ENUMDOC
7046   AArch64 MOV[NZ] instruction with most significant bits 32 to 47
7047   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
7048   value's sign.
7049 ENUM
7050   BFD_RELOC_AARCH64_MOVW_PREL_G0
7051 ENUMDOC
7052   AArch64 MOV[NZ] instruction with most significant bits 0 to 15
7053   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
7054   value's sign.
7055 ENUM
7056   BFD_RELOC_AARCH64_MOVW_PREL_G0_NC
7057 ENUMDOC
7058   AArch64 MOV[NZ] instruction with most significant bits 0 to 15
7059   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
7060   value's sign.
7061 ENUM
7062   BFD_RELOC_AARCH64_MOVW_PREL_G1
7063 ENUMDOC
7064   AArch64 MOVK instruction with most significant bits 16 to 31
7065   of a signed value.
7066 ENUM
7067   BFD_RELOC_AARCH64_MOVW_PREL_G1_NC
7068 ENUMDOC
7069   AArch64 MOVK instruction with most significant bits 16 to 31
7070   of a signed value.
7071 ENUM
7072   BFD_RELOC_AARCH64_MOVW_PREL_G2
7073 ENUMDOC
7074   AArch64 MOVK instruction with most significant bits 32 to 47
7075   of a signed value.
7076 ENUM
7077   BFD_RELOC_AARCH64_MOVW_PREL_G2_NC
7078 ENUMDOC
7079   AArch64 MOVK instruction with most significant bits 32 to 47
7080   of a signed value.
7081 ENUM
7082   BFD_RELOC_AARCH64_MOVW_PREL_G3
7083 ENUMDOC
7084   AArch64 MOVK instruction with most significant bits 47 to 63
7085   of a signed value.
7086 ENUM
7087   BFD_RELOC_AARCH64_LD_LO19_PCREL
7088 ENUMDOC
7089   AArch64 Load Literal instruction, holding a 19 bit pc-relative word
7090   offset.  The lowest two bits must be zero and are not stored in the
7091   instruction, giving a 21 bit signed byte offset.
7092 ENUM
7093   BFD_RELOC_AARCH64_ADR_LO21_PCREL
7094 ENUMDOC
7095   AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.
7096 ENUM
7097   BFD_RELOC_AARCH64_ADR_HI21_PCREL
7098 ENUMDOC
7099   AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
7100   offset, giving a 4KB aligned page base address.
7101 ENUM
7102   BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL
7103 ENUMDOC
7104   AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
7105   offset, giving a 4KB aligned page base address, but with no overflow
7106   checking.
7107 ENUM
7108   BFD_RELOC_AARCH64_ADD_LO12
7109 ENUMDOC
7110   AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
7111   Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7112 ENUM
7113   BFD_RELOC_AARCH64_LDST8_LO12
7114 ENUMDOC
7115   AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
7116   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7117 ENUM
7118   BFD_RELOC_AARCH64_TSTBR14
7119 ENUMDOC
7120   AArch64 14 bit pc-relative test bit and branch.
7121   The lowest two bits must be zero and are not stored in the instruction,
7122   giving a 16 bit signed byte offset.
7123 ENUM
7124   BFD_RELOC_AARCH64_BRANCH19
7125 ENUMDOC
7126   AArch64 19 bit pc-relative conditional branch and compare & branch.
7127   The lowest two bits must be zero and are not stored in the instruction,
7128   giving a 21 bit signed byte offset.
7129 ENUM
7130   BFD_RELOC_AARCH64_JUMP26
7131 ENUMDOC
7132   AArch64 26 bit pc-relative unconditional branch.
7133   The lowest two bits must be zero and are not stored in the instruction,
7134   giving a 28 bit signed byte offset.
7135 ENUM
7136   BFD_RELOC_AARCH64_CALL26
7137 ENUMDOC
7138   AArch64 26 bit pc-relative unconditional branch and link.
7139   The lowest two bits must be zero and are not stored in the instruction,
7140   giving a 28 bit signed byte offset.
7141 ENUM
7142   BFD_RELOC_AARCH64_LDST16_LO12
7143 ENUMDOC
7144   AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
7145   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7146 ENUM
7147   BFD_RELOC_AARCH64_LDST32_LO12
7148 ENUMDOC
7149   AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
7150   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7151 ENUM
7152   BFD_RELOC_AARCH64_LDST64_LO12
7153 ENUMDOC
7154   AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
7155   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7156 ENUM
7157   BFD_RELOC_AARCH64_LDST128_LO12
7158 ENUMDOC
7159   AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
7160   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7161 ENUM
7162   BFD_RELOC_AARCH64_GOT_LD_PREL19
7163 ENUMDOC
7164   AArch64 Load Literal instruction, holding a 19 bit PC relative word
7165   offset of the global offset table entry for a symbol.  The lowest two
7166   bits must be zero and are not stored in the instruction, giving a 21
7167   bit signed byte offset.  This relocation type requires signed overflow
7168   checking.
7169 ENUM
7170   BFD_RELOC_AARCH64_ADR_GOT_PAGE
7171 ENUMDOC
7172   Get to the page base of the global offset table entry for a symbol as
7173   part of an ADRP instruction using a 21 bit PC relative value.Used in
7174   conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
7175 ENUM
7176   BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
7177 ENUMDOC
7178   Unsigned 12 bit byte offset for 64 bit load/store from the page of
7179   the GOT entry for this symbol.  Used in conjunction with
7180   BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in LP64 ABI only.
7181 ENUM
7182   BFD_RELOC_AARCH64_LD32_GOT_LO12_NC
7183 ENUMDOC
7184   Unsigned 12 bit byte offset for 32 bit load/store from the page of
7185   the GOT entry for this symbol.  Used in conjunction with
7186   BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in ILP32 ABI only.
7187  ENUM
7188   BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC
7189 ENUMDOC
7190   Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry
7191   for this symbol.  Valid in LP64 ABI only.
7192 ENUM
7193   BFD_RELOC_AARCH64_MOVW_GOTOFF_G1
7194 ENUMDOC
7195   Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
7196   for this symbol.  Valid in LP64 ABI only.
7197 ENUM
7198   BFD_RELOC_AARCH64_LD64_GOTOFF_LO15
7199 ENUMDOC
7200   Unsigned 15 bit byte offset for 64 bit load/store from the page of
7201   the GOT entry for this symbol.  Valid in LP64 ABI only.
7202 ENUM
7203   BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14
7204 ENUMDOC
7205   Scaled 14 bit byte offset to the page base of the global offset table.
7206 ENUM
7207   BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
7208 ENUMDOC
7209   Scaled 15 bit byte offset to the page base of the global offset table.
7210 ENUM
7211   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
7212 ENUMDOC
7213   Get to the page base of the global offset table entry for a symbols
7214   tls_index structure as part of an adrp instruction using a 21 bit PC
7215   relative value.  Used in conjunction with
7216   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
7217 ENUM
7218   BFD_RELOC_AARCH64_TLSGD_ADR_PREL21
7219 ENUMDOC
7220   AArch64 TLS General Dynamic
7221 ENUM
7222   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
7223 ENUMDOC
7224   Unsigned 12 bit byte offset to global offset table entry for a symbols
7225   tls_index structure.  Used in conjunction with
7226   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
7227 ENUM
7228   BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC
7229 ENUMDOC
7230   AArch64 TLS General Dynamic relocation.
7231 ENUM
7232   BFD_RELOC_AARCH64_TLSGD_MOVW_G1
7233 ENUMDOC
7234   AArch64 TLS General Dynamic relocation.
7235 ENUM
7236   BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
7237 ENUMDOC
7238   AArch64 TLS INITIAL EXEC relocation.
7239 ENUM
7240   BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
7241 ENUMDOC
7242   AArch64 TLS INITIAL EXEC relocation.
7243 ENUM
7244   BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC
7245 ENUMDOC
7246   AArch64 TLS INITIAL EXEC relocation.
7247 ENUM
7248   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19
7249 ENUMDOC
7250   AArch64 TLS INITIAL EXEC relocation.
7251 ENUM
7252   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
7253 ENUMDOC
7254   AArch64 TLS INITIAL EXEC relocation.
7255 ENUM
7256   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1
7257 ENUMDOC
7258   AArch64 TLS INITIAL EXEC relocation.
7259 ENUM
7260   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12
7261 ENUMDOC
7262   bit[23:12] of byte offset to module TLS base address.
7263 ENUM
7264   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12
7265 ENUMDOC
7266   Unsigned 12 bit byte offset to module TLS base address.
7267 ENUM
7268   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
7269 ENUMDOC
7270   No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.
7271 ENUM
7272   BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC
7273 ENUMDOC
7274   Unsigned 12 bit byte offset to global offset table entry for a symbols
7275   tls_index structure.  Used in conjunction with
7276   BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.
7277 ENUM
7278   BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21
7279 ENUMDOC
7280   GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP
7281   instruction.
7282 ENUM
7283   BFD_RELOC_AARCH64_TLSLD_ADR_PREL21
7284 ENUMDOC
7285   GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction.
7286 ENUM
7287   BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12
7288 ENUMDOC
7289   bit[11:1] of byte offset to module TLS base address, encoded in ldst
7290   instructions.
7291 ENUM
7292   BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
7293 ENUMDOC
7294   Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check.
7295 ENUM
7296   BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12
7297 ENUMDOC
7298   bit[11:2] of byte offset to module TLS base address, encoded in ldst
7299   instructions.
7300 ENUM
7301   BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
7302 ENUMDOC
7303   Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check.
7304 ENUM
7305   BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12
7306 ENUMDOC
7307   bit[11:3] of byte offset to module TLS base address, encoded in ldst
7308   instructions.
7309 ENUM
7310   BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
7311 ENUMDOC
7312   Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check.
7313 ENUM
7314   BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12
7315 ENUMDOC
7316   bit[11:0] of byte offset to module TLS base address, encoded in ldst
7317   instructions.
7318 ENUM
7319   BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
7320 ENUMDOC
7321   Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check.
7322 ENUM
7323   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
7324 ENUMDOC
7325   bit[15:0] of byte offset to module TLS base address.
7326 ENUM
7327   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
7328 ENUMDOC
7329   No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
7330 ENUM
7331   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
7332 ENUMDOC
7333   bit[31:16] of byte offset to module TLS base address.
7334 ENUM
7335   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
7336 ENUMDOC
7337   No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
7338 ENUM
7339   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2
7340 ENUMDOC
7341   bit[47:32] of byte offset to module TLS base address.
7342 ENUM
7343   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
7344 ENUMDOC
7345   AArch64 TLS LOCAL EXEC relocation.
7346 ENUM
7347   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
7348 ENUMDOC
7349   AArch64 TLS LOCAL EXEC relocation.
7350 ENUM
7351   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
7352 ENUMDOC
7353   AArch64 TLS LOCAL EXEC relocation.
7354 ENUM
7355   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0
7356 ENUMDOC
7357   AArch64 TLS LOCAL EXEC relocation.
7358 ENUM
7359   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
7360 ENUMDOC
7361   AArch64 TLS LOCAL EXEC relocation.
7362 ENUM
7363   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
7364 ENUMDOC
7365   AArch64 TLS LOCAL EXEC relocation.
7366 ENUM
7367   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12
7368 ENUMDOC
7369   AArch64 TLS LOCAL EXEC relocation.
7370 ENUM
7371   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC
7372 ENUMDOC
7373   AArch64 TLS LOCAL EXEC relocation.
7374 ENUM
7375   BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12
7376 ENUMDOC
7377   bit[11:1] of byte offset to module TLS base address, encoded in ldst
7378   instructions.
7379 ENUM
7380   BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
7381 ENUMDOC
7382   Similar as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no overflow check.
7383 ENUM
7384   BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12
7385 ENUMDOC
7386   bit[11:2] of byte offset to module TLS base address, encoded in ldst
7387   instructions.
7388 ENUM
7389   BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
7390 ENUMDOC
7391   Similar as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no overflow check.
7392 ENUM
7393   BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12
7394 ENUMDOC
7395   bit[11:3] of byte offset to module TLS base address, encoded in ldst
7396   instructions.
7397 ENUM
7398   BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
7399 ENUMDOC
7400   Similar as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no overflow check.
7401 ENUM
7402   BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12
7403 ENUMDOC
7404   bit[11:0] of byte offset to module TLS base address, encoded in ldst
7405   instructions.
7406 ENUM
7407   BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
7408 ENUMDOC
7409   Similar as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow check.
7410 ENUM
7411   BFD_RELOC_AARCH64_TLSDESC_LD_PREL19
7412 ENUMDOC
7413   AArch64 TLS DESC relocation.
7414 ENUM
7415   BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
7416 ENUMDOC
7417   AArch64 TLS DESC relocation.
7418 ENUM
7419   BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21
7420 ENUMDOC
7421   AArch64 TLS DESC relocation.
7422 ENUM
7423   BFD_RELOC_AARCH64_TLSDESC_LD64_LO12
7424 ENUMDOC
7425   AArch64 TLS DESC relocation.
7426 ENUM
7427   BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
7428 ENUMDOC
7429   AArch64 TLS DESC relocation.
7430 ENUM
7431   BFD_RELOC_AARCH64_TLSDESC_ADD_LO12
7432 ENUMDOC
7433   AArch64 TLS DESC relocation.
7434 ENUM
7435   BFD_RELOC_AARCH64_TLSDESC_OFF_G1
7436 ENUMDOC
7437   AArch64 TLS DESC relocation.
7438 ENUM
7439   BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
7440 ENUMDOC
7441   AArch64 TLS DESC relocation.
7442 ENUM
7443   BFD_RELOC_AARCH64_TLSDESC_LDR
7444 ENUMDOC
7445   AArch64 TLS DESC relocation.
7446 ENUM
7447   BFD_RELOC_AARCH64_TLSDESC_ADD
7448 ENUMDOC
7449   AArch64 TLS DESC relocation.
7450 ENUM
7451   BFD_RELOC_AARCH64_TLSDESC_CALL
7452 ENUMDOC
7453   AArch64 TLS DESC relocation.
7454 ENUM
7455   BFD_RELOC_AARCH64_COPY
7456 ENUMDOC
7457   AArch64 TLS relocation.
7458 ENUM
7459   BFD_RELOC_AARCH64_GLOB_DAT
7460 ENUMDOC
7461   AArch64 TLS relocation.
7462 ENUM
7463   BFD_RELOC_AARCH64_JUMP_SLOT
7464 ENUMDOC
7465   AArch64 TLS relocation.
7466 ENUM
7467   BFD_RELOC_AARCH64_RELATIVE
7468 ENUMDOC
7469   AArch64 TLS relocation.
7470 ENUM
7471   BFD_RELOC_AARCH64_TLS_DTPMOD
7472 ENUMDOC
7473   AArch64 TLS relocation.
7474 ENUM
7475   BFD_RELOC_AARCH64_TLS_DTPREL
7476 ENUMDOC
7477   AArch64 TLS relocation.
7478 ENUM
7479   BFD_RELOC_AARCH64_TLS_TPREL
7480 ENUMDOC
7481   AArch64 TLS relocation.
7482 ENUM
7483   BFD_RELOC_AARCH64_TLSDESC
7484 ENUMDOC
7485   AArch64 TLS relocation.
7486 ENUM
7487   BFD_RELOC_AARCH64_IRELATIVE
7488 ENUMDOC
7489   AArch64 support for STT_GNU_IFUNC.
7490 ENUM
7491   BFD_RELOC_AARCH64_RELOC_END
7492 ENUMDOC
7493   AArch64 pseudo relocation code to mark the end of the AArch64
7494   relocation enumerators that have direct mapping to ELF reloc codes.
7495   There are a few more enumerators after this one; those are mainly
7496   used by the AArch64 assembler for the internal fixup or to select
7497   one of the above enumerators.
7498 ENUM
7499   BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP
7500 ENUMDOC
7501   AArch64 pseudo relocation code to be used internally by the AArch64
7502   assembler and not (currently) written to any object files.
7503 ENUM
7504   BFD_RELOC_AARCH64_LDST_LO12
7505 ENUMDOC
7506   AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
7507   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
7508 ENUM
7509   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12
7510 ENUMDOC
7511   AArch64 pseudo relocation code for TLS local dynamic mode.  It's to be
7512   used internally by the AArch64 assembler and not (currently) written to
7513   any object files.
7514 ENUM
7515   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC
7516 ENUMDOC
7517   Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check.
7518 ENUM
7519   BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12
7520 ENUMDOC
7521   AArch64 pseudo relocation code for TLS local exec mode.  It's to be
7522   used internally by the AArch64 assembler and not (currently) written to
7523   any object files.
7524 ENUM
7525   BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC
7526 ENUMDOC
7527   Similar as BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow check.
7528 ENUM
7529   BFD_RELOC_AARCH64_LD_GOT_LO12_NC
7530 ENUMDOC
7531   AArch64 pseudo relocation code to be used internally by the AArch64
7532   assembler and not (currently) written to any object files.
7533 ENUM
7534   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC
7535 ENUMDOC
7536   AArch64 pseudo relocation code to be used internally by the AArch64
7537   assembler and not (currently) written to any object files.
7538 ENUM
7539   BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC
7540 ENUMDOC
7541   AArch64 pseudo relocation code to be used internally by the AArch64
7542   assembler and not (currently) written to any object files.
7543 ENUM
7544   BFD_RELOC_TILEPRO_COPY
7545 ENUMX
7546   BFD_RELOC_TILEPRO_GLOB_DAT
7547 ENUMX
7548   BFD_RELOC_TILEPRO_JMP_SLOT
7549 ENUMX
7550   BFD_RELOC_TILEPRO_RELATIVE
7551 ENUMX
7552   BFD_RELOC_TILEPRO_BROFF_X1
7553 ENUMX
7554   BFD_RELOC_TILEPRO_JOFFLONG_X1
7555 ENUMX
7556   BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT
7557 ENUMX
7558   BFD_RELOC_TILEPRO_IMM8_X0
7559 ENUMX
7560   BFD_RELOC_TILEPRO_IMM8_Y0
7561 ENUMX
7562   BFD_RELOC_TILEPRO_IMM8_X1
7563 ENUMX
7564   BFD_RELOC_TILEPRO_IMM8_Y1
7565 ENUMX
7566   BFD_RELOC_TILEPRO_DEST_IMM8_X1
7567 ENUMX
7568   BFD_RELOC_TILEPRO_MT_IMM15_X1
7569 ENUMX
7570   BFD_RELOC_TILEPRO_MF_IMM15_X1
7571 ENUMX
7572   BFD_RELOC_TILEPRO_IMM16_X0
7573 ENUMX
7574   BFD_RELOC_TILEPRO_IMM16_X1
7575 ENUMX
7576   BFD_RELOC_TILEPRO_IMM16_X0_LO
7577 ENUMX
7578   BFD_RELOC_TILEPRO_IMM16_X1_LO
7579 ENUMX
7580   BFD_RELOC_TILEPRO_IMM16_X0_HI
7581 ENUMX
7582   BFD_RELOC_TILEPRO_IMM16_X1_HI
7583 ENUMX
7584   BFD_RELOC_TILEPRO_IMM16_X0_HA
7585 ENUMX
7586   BFD_RELOC_TILEPRO_IMM16_X1_HA
7587 ENUMX
7588   BFD_RELOC_TILEPRO_IMM16_X0_PCREL
7589 ENUMX
7590   BFD_RELOC_TILEPRO_IMM16_X1_PCREL
7591 ENUMX
7592   BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL
7593 ENUMX
7594   BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL
7595 ENUMX
7596   BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL
7597 ENUMX
7598   BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL
7599 ENUMX
7600   BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL
7601 ENUMX
7602   BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL
7603 ENUMX
7604   BFD_RELOC_TILEPRO_IMM16_X0_GOT
7605 ENUMX
7606   BFD_RELOC_TILEPRO_IMM16_X1_GOT
7607 ENUMX
7608   BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO
7609 ENUMX
7610   BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO
7611 ENUMX
7612   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI
7613 ENUMX
7614   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI
7615 ENUMX
7616   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA
7617 ENUMX
7618   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA
7619 ENUMX
7620   BFD_RELOC_TILEPRO_MMSTART_X0
7621 ENUMX
7622   BFD_RELOC_TILEPRO_MMEND_X0
7623 ENUMX
7624   BFD_RELOC_TILEPRO_MMSTART_X1
7625 ENUMX
7626   BFD_RELOC_TILEPRO_MMEND_X1
7627 ENUMX
7628   BFD_RELOC_TILEPRO_SHAMT_X0
7629 ENUMX
7630   BFD_RELOC_TILEPRO_SHAMT_X1
7631 ENUMX
7632   BFD_RELOC_TILEPRO_SHAMT_Y0
7633 ENUMX
7634   BFD_RELOC_TILEPRO_SHAMT_Y1
7635 ENUMX
7636   BFD_RELOC_TILEPRO_TLS_GD_CALL
7637 ENUMX
7638   BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD
7639 ENUMX
7640   BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD
7641 ENUMX
7642   BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD
7643 ENUMX
7644   BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD
7645 ENUMX
7646   BFD_RELOC_TILEPRO_TLS_IE_LOAD
7647 ENUMX
7648   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD
7649 ENUMX
7650   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD
7651 ENUMX
7652   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO
7653 ENUMX
7654   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO
7655 ENUMX
7656   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI
7657 ENUMX
7658   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI
7659 ENUMX
7660   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA
7661 ENUMX
7662   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA
7663 ENUMX
7664   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE
7665 ENUMX
7666   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE
7667 ENUMX
7668   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO
7669 ENUMX
7670   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO
7671 ENUMX
7672   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI
7673 ENUMX
7674   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI
7675 ENUMX
7676   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA
7677 ENUMX
7678   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA
7679 ENUMX
7680   BFD_RELOC_TILEPRO_TLS_DTPMOD32
7681 ENUMX
7682   BFD_RELOC_TILEPRO_TLS_DTPOFF32
7683 ENUMX
7684   BFD_RELOC_TILEPRO_TLS_TPOFF32
7685 ENUMX
7686   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE
7687 ENUMX
7688   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE
7689 ENUMX
7690   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO
7691 ENUMX
7692   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO
7693 ENUMX
7694   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI
7695 ENUMX
7696   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI
7697 ENUMX
7698   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA
7699 ENUMX
7700   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA
7701 ENUMDOC
7702   Tilera TILEPro Relocations.
7703 ENUM
7704   BFD_RELOC_TILEGX_HW0
7705 ENUMX
7706   BFD_RELOC_TILEGX_HW1
7707 ENUMX
7708   BFD_RELOC_TILEGX_HW2
7709 ENUMX
7710   BFD_RELOC_TILEGX_HW3
7711 ENUMX
7712   BFD_RELOC_TILEGX_HW0_LAST
7713 ENUMX
7714   BFD_RELOC_TILEGX_HW1_LAST
7715 ENUMX
7716   BFD_RELOC_TILEGX_HW2_LAST
7717 ENUMX
7718   BFD_RELOC_TILEGX_COPY
7719 ENUMX
7720   BFD_RELOC_TILEGX_GLOB_DAT
7721 ENUMX
7722   BFD_RELOC_TILEGX_JMP_SLOT
7723 ENUMX
7724   BFD_RELOC_TILEGX_RELATIVE
7725 ENUMX
7726   BFD_RELOC_TILEGX_BROFF_X1
7727 ENUMX
7728   BFD_RELOC_TILEGX_JUMPOFF_X1
7729 ENUMX
7730   BFD_RELOC_TILEGX_JUMPOFF_X1_PLT
7731 ENUMX
7732   BFD_RELOC_TILEGX_IMM8_X0
7733 ENUMX
7734   BFD_RELOC_TILEGX_IMM8_Y0
7735 ENUMX
7736   BFD_RELOC_TILEGX_IMM8_X1
7737 ENUMX
7738   BFD_RELOC_TILEGX_IMM8_Y1
7739 ENUMX
7740   BFD_RELOC_TILEGX_DEST_IMM8_X1
7741 ENUMX
7742   BFD_RELOC_TILEGX_MT_IMM14_X1
7743 ENUMX
7744   BFD_RELOC_TILEGX_MF_IMM14_X1
7745 ENUMX
7746   BFD_RELOC_TILEGX_MMSTART_X0
7747 ENUMX
7748   BFD_RELOC_TILEGX_MMEND_X0
7749 ENUMX
7750   BFD_RELOC_TILEGX_SHAMT_X0
7751 ENUMX
7752   BFD_RELOC_TILEGX_SHAMT_X1
7753 ENUMX
7754   BFD_RELOC_TILEGX_SHAMT_Y0
7755 ENUMX
7756   BFD_RELOC_TILEGX_SHAMT_Y1
7757 ENUMX
7758   BFD_RELOC_TILEGX_IMM16_X0_HW0
7759 ENUMX
7760   BFD_RELOC_TILEGX_IMM16_X1_HW0
7761 ENUMX
7762   BFD_RELOC_TILEGX_IMM16_X0_HW1
7763 ENUMX
7764   BFD_RELOC_TILEGX_IMM16_X1_HW1
7765 ENUMX
7766   BFD_RELOC_TILEGX_IMM16_X0_HW2
7767 ENUMX
7768   BFD_RELOC_TILEGX_IMM16_X1_HW2
7769 ENUMX
7770   BFD_RELOC_TILEGX_IMM16_X0_HW3
7771 ENUMX
7772   BFD_RELOC_TILEGX_IMM16_X1_HW3
7773 ENUMX
7774   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST
7775 ENUMX
7776   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST
7777 ENUMX
7778   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST
7779 ENUMX
7780   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST
7781 ENUMX
7782   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST
7783 ENUMX
7784   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST
7785 ENUMX
7786   BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL
7787 ENUMX
7788   BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL
7789 ENUMX
7790   BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL
7791 ENUMX
7792   BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL
7793 ENUMX
7794   BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL
7795 ENUMX
7796   BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL
7797 ENUMX
7798   BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL
7799 ENUMX
7800   BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL
7801 ENUMX
7802   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL
7803 ENUMX
7804   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL
7805 ENUMX
7806   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL
7807 ENUMX
7808   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL
7809 ENUMX
7810   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL
7811 ENUMX
7812   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL
7813 ENUMX
7814   BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT
7815 ENUMX
7816   BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT
7817 ENUMX
7818   BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL
7819 ENUMX
7820   BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL
7821 ENUMX
7822   BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL
7823 ENUMX
7824   BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL
7825 ENUMX
7826   BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL
7827 ENUMX
7828   BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL
7829 ENUMX
7830   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT
7831 ENUMX
7832   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT
7833 ENUMX
7834   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT
7835 ENUMX
7836   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT
7837 ENUMX
7838   BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL
7839 ENUMX
7840   BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL
7841 ENUMX
7842   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD
7843 ENUMX
7844   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD
7845 ENUMX
7846   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE
7847 ENUMX
7848   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE
7849 ENUMX
7850   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE
7851 ENUMX
7852   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE
7853 ENUMX
7854   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE
7855 ENUMX
7856   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE
7857 ENUMX
7858   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD
7859 ENUMX
7860   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD
7861 ENUMX
7862   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD
7863 ENUMX
7864   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD
7865 ENUMX
7866   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE
7867 ENUMX
7868   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE
7869 ENUMX
7870   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL
7871 ENUMX
7872   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL
7873 ENUMX
7874   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL
7875 ENUMX
7876   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL
7877 ENUMX
7878   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL
7879 ENUMX
7880   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL
7881 ENUMX
7882   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE
7883 ENUMX
7884   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE
7885 ENUMX
7886   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE
7887 ENUMX
7888   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE
7889 ENUMX
7890   BFD_RELOC_TILEGX_TLS_DTPMOD64
7891 ENUMX
7892   BFD_RELOC_TILEGX_TLS_DTPOFF64
7893 ENUMX
7894   BFD_RELOC_TILEGX_TLS_TPOFF64
7895 ENUMX
7896   BFD_RELOC_TILEGX_TLS_DTPMOD32
7897 ENUMX
7898   BFD_RELOC_TILEGX_TLS_DTPOFF32
7899 ENUMX
7900   BFD_RELOC_TILEGX_TLS_TPOFF32
7901 ENUMX
7902   BFD_RELOC_TILEGX_TLS_GD_CALL
7903 ENUMX
7904   BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD
7905 ENUMX
7906   BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD
7907 ENUMX
7908   BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD
7909 ENUMX
7910   BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD
7911 ENUMX
7912   BFD_RELOC_TILEGX_TLS_IE_LOAD
7913 ENUMX
7914   BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD
7915 ENUMX
7916   BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD
7917 ENUMX
7918   BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD
7919 ENUMX
7920   BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
7921 ENUMDOC
7922   Tilera TILE-Gx Relocations.
7923
7924 ENUM
7925   BFD_RELOC_EPIPHANY_SIMM8
7926 ENUMDOC
7927   Adapteva EPIPHANY - 8 bit signed pc-relative displacement
7928 ENUM
7929   BFD_RELOC_EPIPHANY_SIMM24
7930 ENUMDOC
7931   Adapteva EPIPHANY - 24 bit signed pc-relative displacement
7932 ENUM
7933   BFD_RELOC_EPIPHANY_HIGH
7934 ENUMDOC
7935   Adapteva EPIPHANY - 16 most-significant bits of absolute address
7936 ENUM
7937   BFD_RELOC_EPIPHANY_LOW
7938 ENUMDOC
7939   Adapteva EPIPHANY - 16 least-significant bits of absolute address
7940 ENUM
7941   BFD_RELOC_EPIPHANY_SIMM11
7942 ENUMDOC
7943   Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
7944 ENUM
7945   BFD_RELOC_EPIPHANY_IMM11
7946 ENUMDOC
7947   Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)
7948 ENUM
7949   BFD_RELOC_EPIPHANY_IMM8
7950 ENUMDOC
7951   Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
7952
7953 ENUM
7954   BFD_RELOC_VISIUM_HI16
7955 ENUMX
7956   BFD_RELOC_VISIUM_LO16
7957 ENUMX
7958   BFD_RELOC_VISIUM_IM16
7959 ENUMX
7960   BFD_RELOC_VISIUM_REL16
7961 ENUMX
7962   BFD_RELOC_VISIUM_HI16_PCREL
7963 ENUMX
7964   BFD_RELOC_VISIUM_LO16_PCREL
7965 ENUMX
7966   BFD_RELOC_VISIUM_IM16_PCREL
7967 ENUMDOC
7968   Visium Relocations.
7969
7970 ENUM
7971   BFD_RELOC_WASM32_LEB128
7972 ENUMX
7973   BFD_RELOC_WASM32_LEB128_GOT
7974 ENUMX
7975   BFD_RELOC_WASM32_LEB128_GOT_CODE
7976 ENUMX
7977   BFD_RELOC_WASM32_LEB128_PLT
7978 ENUMX
7979   BFD_RELOC_WASM32_PLT_INDEX
7980 ENUMX
7981   BFD_RELOC_WASM32_ABS32_CODE
7982 ENUMX
7983   BFD_RELOC_WASM32_COPY
7984 ENUMX
7985   BFD_RELOC_WASM32_CODE_POINTER
7986 ENUMX
7987   BFD_RELOC_WASM32_INDEX
7988 ENUMX
7989   BFD_RELOC_WASM32_PLT_SIG
7990 ENUMDOC
7991   WebAssembly relocations.
7992
7993 ENUM
7994   BFD_RELOC_CKCORE_NONE
7995 ENUMX
7996   BFD_RELOC_CKCORE_ADDR32
7997 ENUMX
7998   BFD_RELOC_CKCORE_PCREL_IMM8BY4
7999 ENUMX
8000   BFD_RELOC_CKCORE_PCREL_IMM11BY2
8001 ENUMX
8002   BFD_RELOC_CKCORE_PCREL_IMM4BY2
8003 ENUMX
8004   BFD_RELOC_CKCORE_PCREL32
8005 ENUMX
8006   BFD_RELOC_CKCORE_PCREL_JSR_IMM11BY2
8007 ENUMX
8008   BFD_RELOC_CKCORE_GNU_VTINHERIT
8009 ENUMX
8010   BFD_RELOC_CKCORE_GNU_VTENTRY
8011 ENUMX
8012   BFD_RELOC_CKCORE_RELATIVE
8013 ENUMX
8014   BFD_RELOC_CKCORE_COPY
8015 ENUMX
8016   BFD_RELOC_CKCORE_GLOB_DAT
8017 ENUMX
8018   BFD_RELOC_CKCORE_JUMP_SLOT
8019 ENUMX
8020   BFD_RELOC_CKCORE_GOTOFF
8021 ENUMX
8022   BFD_RELOC_CKCORE_GOTPC
8023 ENUMX
8024   BFD_RELOC_CKCORE_GOT32
8025 ENUMX
8026   BFD_RELOC_CKCORE_PLT32
8027 ENUMX
8028   BFD_RELOC_CKCORE_ADDRGOT
8029 ENUMX
8030   BFD_RELOC_CKCORE_ADDRPLT
8031 ENUMX
8032   BFD_RELOC_CKCORE_PCREL_IMM26BY2
8033 ENUMX
8034   BFD_RELOC_CKCORE_PCREL_IMM16BY2
8035 ENUMX
8036   BFD_RELOC_CKCORE_PCREL_IMM16BY4
8037 ENUMX
8038   BFD_RELOC_CKCORE_PCREL_IMM10BY2
8039 ENUMX
8040   BFD_RELOC_CKCORE_PCREL_IMM10BY4
8041 ENUMX
8042   BFD_RELOC_CKCORE_ADDR_HI16
8043 ENUMX
8044   BFD_RELOC_CKCORE_ADDR_LO16
8045 ENUMX
8046   BFD_RELOC_CKCORE_GOTPC_HI16
8047 ENUMX
8048   BFD_RELOC_CKCORE_GOTPC_LO16
8049 ENUMX
8050   BFD_RELOC_CKCORE_GOTOFF_HI16
8051 ENUMX
8052   BFD_RELOC_CKCORE_GOTOFF_LO16
8053 ENUMX
8054   BFD_RELOC_CKCORE_GOT12
8055 ENUMX
8056   BFD_RELOC_CKCORE_GOT_HI16
8057 ENUMX
8058   BFD_RELOC_CKCORE_GOT_LO16
8059 ENUMX
8060   BFD_RELOC_CKCORE_PLT12
8061 ENUMX
8062   BFD_RELOC_CKCORE_PLT_HI16
8063 ENUMX
8064   BFD_RELOC_CKCORE_PLT_LO16
8065 ENUMX
8066   BFD_RELOC_CKCORE_ADDRGOT_HI16
8067 ENUMX
8068   BFD_RELOC_CKCORE_ADDRGOT_LO16
8069 ENUMX
8070   BFD_RELOC_CKCORE_ADDRPLT_HI16
8071 ENUMX
8072   BFD_RELOC_CKCORE_ADDRPLT_LO16
8073 ENUMX
8074   BFD_RELOC_CKCORE_PCREL_JSR_IMM26BY2
8075 ENUMX
8076   BFD_RELOC_CKCORE_TOFFSET_LO16
8077 ENUMX
8078   BFD_RELOC_CKCORE_DOFFSET_LO16
8079 ENUMX
8080   BFD_RELOC_CKCORE_PCREL_IMM18BY2
8081 ENUMX
8082   BFD_RELOC_CKCORE_DOFFSET_IMM18
8083 ENUMX
8084   BFD_RELOC_CKCORE_DOFFSET_IMM18BY2
8085 ENUMX
8086   BFD_RELOC_CKCORE_DOFFSET_IMM18BY4
8087 ENUMX
8088   BFD_RELOC_CKCORE_GOTOFF_IMM18
8089 ENUMX
8090   BFD_RELOC_CKCORE_GOT_IMM18BY4
8091 ENUMX
8092   BFD_RELOC_CKCORE_PLT_IMM18BY4
8093 ENUMX
8094   BFD_RELOC_CKCORE_PCREL_IMM7BY4
8095 ENUMX
8096   BFD_RELOC_CKCORE_TLS_LE32
8097 ENUMX
8098   BFD_RELOC_CKCORE_TLS_IE32
8099 ENUMX
8100   BFD_RELOC_CKCORE_TLS_GD32
8101 ENUMX
8102   BFD_RELOC_CKCORE_TLS_LDM32
8103 ENUMX
8104   BFD_RELOC_CKCORE_TLS_LDO32
8105 ENUMX
8106   BFD_RELOC_CKCORE_TLS_DTPMOD32
8107 ENUMX
8108   BFD_RELOC_CKCORE_TLS_DTPOFF32
8109 ENUMX
8110   BFD_RELOC_CKCORE_TLS_TPOFF32
8111 ENUMX
8112   BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4
8113 ENUMX
8114   BFD_RELOC_CKCORE_NOJSRI
8115 ENUMX
8116   BFD_RELOC_CKCORE_CALLGRAPH
8117 ENUMX
8118   BFD_RELOC_CKCORE_IRELATIVE
8119 ENUMX
8120   BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4
8121 ENUMX
8122   BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4
8123 ENUMDOC
8124   C-SKY relocations.
8125
8126 ENDSENUM
8127   BFD_RELOC_UNUSED
8128 CODE_FRAGMENT
8129 .
8130 .typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
8131 */
8132
8133 /*
8134 FUNCTION
8135         bfd_reloc_type_lookup
8136         bfd_reloc_name_lookup
8137
8138 SYNOPSIS
8139         reloc_howto_type *bfd_reloc_type_lookup
8140           (bfd *abfd, bfd_reloc_code_real_type code);
8141         reloc_howto_type *bfd_reloc_name_lookup
8142           (bfd *abfd, const char *reloc_name);
8143
8144 DESCRIPTION
8145         Return a pointer to a howto structure which, when
8146         invoked, will perform the relocation @var{code} on data from the
8147         architecture noted.
8148
8149 */
8150
8151 reloc_howto_type *
8152 bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
8153 {
8154   return BFD_SEND (abfd, reloc_type_lookup, (abfd, code));
8155 }
8156
8157 reloc_howto_type *
8158 bfd_reloc_name_lookup (bfd *abfd, const char *reloc_name)
8159 {
8160   return BFD_SEND (abfd, reloc_name_lookup, (abfd, reloc_name));
8161 }
8162
8163 static reloc_howto_type bfd_howto_32 =
8164 HOWTO (0, 00, 2, 32, FALSE, 0, complain_overflow_dont, 0, "VRT32", FALSE, 0xffffffff, 0xffffffff, TRUE);
8165
8166 /*
8167 INTERNAL_FUNCTION
8168         bfd_default_reloc_type_lookup
8169
8170 SYNOPSIS
8171         reloc_howto_type *bfd_default_reloc_type_lookup
8172           (bfd *abfd, bfd_reloc_code_real_type  code);
8173
8174 DESCRIPTION
8175         Provides a default relocation lookup routine for any architecture.
8176
8177 */
8178
8179 reloc_howto_type *
8180 bfd_default_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
8181 {
8182   switch (code)
8183     {
8184     case BFD_RELOC_CTOR:
8185       /* The type of reloc used in a ctor, which will be as wide as the
8186          address - so either a 64, 32, or 16 bitter.  */
8187       switch (bfd_arch_bits_per_address (abfd))
8188         {
8189         case 64:
8190           BFD_FAIL ();
8191           break;
8192         case 32:
8193           return &bfd_howto_32;
8194         case 16:
8195           BFD_FAIL ();
8196           break;
8197         default:
8198           BFD_FAIL ();
8199         }
8200       break;
8201     default:
8202       BFD_FAIL ();
8203     }
8204   return NULL;
8205 }
8206
8207 /*
8208 FUNCTION
8209         bfd_get_reloc_code_name
8210
8211 SYNOPSIS
8212         const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
8213
8214 DESCRIPTION
8215         Provides a printable name for the supplied relocation code.
8216         Useful mainly for printing error messages.
8217 */
8218
8219 const char *
8220 bfd_get_reloc_code_name (bfd_reloc_code_real_type code)
8221 {
8222   if (code > BFD_RELOC_UNUSED)
8223     return 0;
8224   return bfd_reloc_code_real_names[code];
8225 }
8226
8227 /*
8228 INTERNAL_FUNCTION
8229         bfd_generic_relax_section
8230
8231 SYNOPSIS
8232         bfd_boolean bfd_generic_relax_section
8233           (bfd *abfd,
8234            asection *section,
8235            struct bfd_link_info *,
8236            bfd_boolean *);
8237
8238 DESCRIPTION
8239         Provides default handling for relaxing for back ends which
8240         don't do relaxing.
8241 */
8242
8243 bfd_boolean
8244 bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
8245                            asection *section ATTRIBUTE_UNUSED,
8246                            struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
8247                            bfd_boolean *again)
8248 {
8249   if (bfd_link_relocatable (link_info))
8250     (*link_info->callbacks->einfo)
8251       (_("%P%F: --relax and -r may not be used together\n"));
8252
8253   *again = FALSE;
8254   return TRUE;
8255 }
8256
8257 /*
8258 INTERNAL_FUNCTION
8259         bfd_generic_gc_sections
8260
8261 SYNOPSIS
8262         bfd_boolean bfd_generic_gc_sections
8263           (bfd *, struct bfd_link_info *);
8264
8265 DESCRIPTION
8266         Provides default handling for relaxing for back ends which
8267         don't do section gc -- i.e., does nothing.
8268 */
8269
8270 bfd_boolean
8271 bfd_generic_gc_sections (bfd *abfd ATTRIBUTE_UNUSED,
8272                          struct bfd_link_info *info ATTRIBUTE_UNUSED)
8273 {
8274   return TRUE;
8275 }
8276
8277 /*
8278 INTERNAL_FUNCTION
8279         bfd_generic_lookup_section_flags
8280
8281 SYNOPSIS
8282         bfd_boolean bfd_generic_lookup_section_flags
8283           (struct bfd_link_info *, struct flag_info *, asection *);
8284
8285 DESCRIPTION
8286         Provides default handling for section flags lookup
8287         -- i.e., does nothing.
8288         Returns FALSE if the section should be omitted, otherwise TRUE.
8289 */
8290
8291 bfd_boolean
8292 bfd_generic_lookup_section_flags (struct bfd_link_info *info ATTRIBUTE_UNUSED,
8293                                   struct flag_info *flaginfo,
8294                                   asection *section ATTRIBUTE_UNUSED)
8295 {
8296   if (flaginfo != NULL)
8297     {
8298       _bfd_error_handler (_("INPUT_SECTION_FLAGS are not supported"));
8299       return FALSE;
8300     }
8301   return TRUE;
8302 }
8303
8304 /*
8305 INTERNAL_FUNCTION
8306         bfd_generic_merge_sections
8307
8308 SYNOPSIS
8309         bfd_boolean bfd_generic_merge_sections
8310           (bfd *, struct bfd_link_info *);
8311
8312 DESCRIPTION
8313         Provides default handling for SEC_MERGE section merging for back ends
8314         which don't have SEC_MERGE support -- i.e., does nothing.
8315 */
8316
8317 bfd_boolean
8318 bfd_generic_merge_sections (bfd *abfd ATTRIBUTE_UNUSED,
8319                             struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
8320 {
8321   return TRUE;
8322 }
8323
8324 /*
8325 INTERNAL_FUNCTION
8326         bfd_generic_get_relocated_section_contents
8327
8328 SYNOPSIS
8329         bfd_byte *bfd_generic_get_relocated_section_contents
8330           (bfd *abfd,
8331            struct bfd_link_info *link_info,
8332            struct bfd_link_order *link_order,
8333            bfd_byte *data,
8334            bfd_boolean relocatable,
8335            asymbol **symbols);
8336
8337 DESCRIPTION
8338         Provides default handling of relocation effort for back ends
8339         which can't be bothered to do it efficiently.
8340
8341 */
8342
8343 bfd_byte *
8344 bfd_generic_get_relocated_section_contents (bfd *abfd,
8345                                             struct bfd_link_info *link_info,
8346                                             struct bfd_link_order *link_order,
8347                                             bfd_byte *data,
8348                                             bfd_boolean relocatable,
8349                                             asymbol **symbols)
8350 {
8351   bfd *input_bfd = link_order->u.indirect.section->owner;
8352   asection *input_section = link_order->u.indirect.section;
8353   long reloc_size;
8354   arelent **reloc_vector;
8355   long reloc_count;
8356
8357   reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
8358   if (reloc_size < 0)
8359     return NULL;
8360
8361   /* Read in the section.  */
8362   if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
8363     return NULL;
8364
8365   if (data == NULL)
8366     return NULL;
8367
8368   if (reloc_size == 0)
8369     return data;
8370
8371   reloc_vector = (arelent **) bfd_malloc (reloc_size);
8372   if (reloc_vector == NULL)
8373     return NULL;
8374
8375   reloc_count = bfd_canonicalize_reloc (input_bfd,
8376                                         input_section,
8377                                         reloc_vector,
8378                                         symbols);
8379   if (reloc_count < 0)
8380     goto error_return;
8381
8382   if (reloc_count > 0)
8383     {
8384       arelent **parent;
8385
8386       for (parent = reloc_vector; *parent != NULL; parent++)
8387         {
8388           char *error_message = NULL;
8389           asymbol *symbol;
8390           bfd_reloc_status_type r;
8391
8392           symbol = *(*parent)->sym_ptr_ptr;
8393           /* PR ld/19628: A specially crafted input file
8394              can result in a NULL symbol pointer here.  */
8395           if (symbol == NULL)
8396             {
8397               link_info->callbacks->einfo
8398                 /* xgettext:c-format */
8399                 (_("%X%P: %pB(%pA): error: relocation for offset %V has no value\n"),
8400                  abfd, input_section, (* parent)->address);
8401               goto error_return;
8402             }
8403
8404           if (symbol->section && discarded_section (symbol->section))
8405             {
8406               bfd_byte *p;
8407               static reloc_howto_type none_howto
8408                 = HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL,
8409                          "unused", FALSE, 0, 0, FALSE);
8410
8411               p = data + (*parent)->address * bfd_octets_per_byte (input_bfd);
8412               _bfd_clear_contents ((*parent)->howto, input_bfd, input_section,
8413                                    p);
8414               (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
8415               (*parent)->addend = 0;
8416               (*parent)->howto = &none_howto;
8417               r = bfd_reloc_ok;
8418             }
8419           else
8420             r = bfd_perform_relocation (input_bfd,
8421                                         *parent,
8422                                         data,
8423                                         input_section,
8424                                         relocatable ? abfd : NULL,
8425                                         &error_message);
8426
8427           if (relocatable)
8428             {
8429               asection *os = input_section->output_section;
8430
8431               /* A partial link, so keep the relocs.  */
8432               os->orelocation[os->reloc_count] = *parent;
8433               os->reloc_count++;
8434             }
8435
8436           if (r != bfd_reloc_ok)
8437             {
8438               switch (r)
8439                 {
8440                 case bfd_reloc_undefined:
8441                   (*link_info->callbacks->undefined_symbol)
8442                     (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
8443                      input_bfd, input_section, (*parent)->address, TRUE);
8444                   break;
8445                 case bfd_reloc_dangerous:
8446                   BFD_ASSERT (error_message != NULL);
8447                   (*link_info->callbacks->reloc_dangerous)
8448                     (link_info, error_message,
8449                      input_bfd, input_section, (*parent)->address);
8450                   break;
8451                 case bfd_reloc_overflow:
8452                   (*link_info->callbacks->reloc_overflow)
8453                     (link_info, NULL,
8454                      bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
8455                      (*parent)->howto->name, (*parent)->addend,
8456                      input_bfd, input_section, (*parent)->address);
8457                   break;
8458                 case bfd_reloc_outofrange:
8459                   /* PR ld/13730:
8460                      This error can result when processing some partially
8461                      complete binaries.  Do not abort, but issue an error
8462                      message instead.  */
8463                   link_info->callbacks->einfo
8464                     /* xgettext:c-format */
8465                     (_("%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"),
8466                      abfd, input_section, * parent);
8467                   goto error_return;
8468
8469                 case bfd_reloc_notsupported:
8470                   /* PR ld/17512
8471                      This error can result when processing a corrupt binary.
8472                      Do not abort.  Issue an error message instead.  */
8473                   link_info->callbacks->einfo
8474                     /* xgettext:c-format */
8475                     (_("%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"),
8476                      abfd, input_section, * parent);
8477                   goto error_return;
8478
8479                 default:
8480                   /* PR 17512; file: 90c2a92e.
8481                      Report unexpected results, without aborting.  */
8482                   link_info->callbacks->einfo
8483                     /* xgettext:c-format */
8484                     (_("%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"),
8485                      abfd, input_section, * parent, r);
8486                   break;
8487                 }
8488
8489             }
8490         }
8491     }
8492
8493   free (reloc_vector);
8494   return data;
8495
8496 error_return:
8497   free (reloc_vector);
8498   return NULL;
8499 }
8500
8501 /*
8502 INTERNAL_FUNCTION
8503         _bfd_generic_set_reloc
8504
8505 SYNOPSIS
8506         void _bfd_generic_set_reloc
8507           (bfd *abfd,
8508            sec_ptr section,
8509            arelent **relptr,
8510            unsigned int count);
8511
8512 DESCRIPTION
8513         Installs a new set of internal relocations in SECTION.
8514 */
8515
8516 void
8517 _bfd_generic_set_reloc (bfd *abfd ATTRIBUTE_UNUSED,
8518                         sec_ptr section,
8519                         arelent **relptr,
8520                         unsigned int count)
8521 {
8522   section->orelocation = relptr;
8523   section->reloc_count = count;
8524 }
8525
8526 /*
8527 INTERNAL_FUNCTION
8528         _bfd_unrecognized_reloc
8529
8530 SYNOPSIS
8531         bfd_boolean _bfd_unrecognized_reloc
8532           (bfd * abfd,
8533            sec_ptr section,
8534            unsigned int r_type);
8535
8536 DESCRIPTION
8537         Reports an unrecognized reloc.
8538         Written as a function in order to reduce code duplication.
8539         Returns FALSE so that it can be called from a return statement.
8540 */
8541
8542 bfd_boolean
8543 _bfd_unrecognized_reloc (bfd * abfd, sec_ptr section, unsigned int r_type)
8544 {
8545    /* xgettext:c-format */
8546   _bfd_error_handler (_("%pB: unrecognized relocation type %#x in section `%pA'"),
8547                       abfd, r_type, section);
8548
8549   /* PR 21803: Suggest the most likely cause of this error.  */
8550   _bfd_error_handler (_("is this version of the linker - %s - out of date ?"),
8551                       BFD_VERSION_STRING);
8552
8553   bfd_set_error (bfd_error_bad_value);
8554   return FALSE;
8555 }
8556
8557 reloc_howto_type *
8558 _bfd_norelocs_bfd_reloc_type_lookup
8559     (bfd *abfd,
8560      bfd_reloc_code_real_type code ATTRIBUTE_UNUSED)
8561 {
8562   return (reloc_howto_type *) _bfd_ptr_bfd_null_error (abfd);
8563 }
8564
8565 reloc_howto_type *
8566 _bfd_norelocs_bfd_reloc_name_lookup (bfd *abfd,
8567                                      const char *reloc_name ATTRIBUTE_UNUSED)
8568 {
8569   return (reloc_howto_type *) _bfd_ptr_bfd_null_error (abfd);
8570 }
8571
8572 long
8573 _bfd_nodynamic_canonicalize_dynamic_reloc (bfd *abfd,
8574                                            arelent **relp ATTRIBUTE_UNUSED,
8575                                            asymbol **symp ATTRIBUTE_UNUSED)
8576 {
8577   return _bfd_long_bfd_n1_error (abfd);
8578 }