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