Coverage Report

Created: 2026-09-14 08:07

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