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