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