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