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