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