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