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