Coverage Report

Created: 2026-05-11 07:54

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
10.6k
#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
5.29k
{
452
5.29k
  bfd_vma fieldmask, addrmask, signmask, ss, a;
453
5.29k
  bfd_reloc_status_type flag = bfd_reloc_ok;
454
455
5.29k
  if (bitsize == 0)
456
8
    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
5.29k
  fieldmask = N_ONES (bitsize);
463
5.29k
  signmask = ~fieldmask;
464
5.29k
  addrmask = N_ONES (addrsize) | (fieldmask << rightshift);
465
5.29k
  a = (relocation & addrmask) >> rightshift;
466
467
5.29k
  switch (how)
468
5.29k
    {
469
0
    case complain_overflow_dont:
470
0
      break;
471
472
691
    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
691
      signmask = ~ (fieldmask >> 1);
476
      /* Fall thru */
477
478
973
    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
973
      ss = a & signmask;
485
973
      if (ss != 0 && ss != ((addrmask >> rightshift) & signmask))
486
121
  flag = bfd_reloc_overflow;
487
973
      break;
488
489
4.31k
    case complain_overflow_unsigned:
490
      /* We have an overflow if the address does not fit in the field.  */
491
4.31k
      if ((a & signmask) != 0)
492
301
  flag = bfd_reloc_overflow;
493
4.31k
      break;
494
495
0
    default:
496
0
      abort ();
497
5.29k
    }
498
499
5.29k
  return flag;
500
5.29k
}
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
25.6k
{
528
25.6k
  bfd_size_type octet_end = bfd_get_section_limit_octets (abfd, section);
529
25.6k
  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
25.6k
  return octet <= octet_end && reloc_size <= octet_end - octet;
535
25.6k
}
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
20.8k
{
543
20.8k
  switch (bfd_get_reloc_size (howto))
544
20.8k
    {
545
7.86k
    case 0:
546
7.86k
      break;
547
548
7
    case 1:
549
7
      return bfd_get_8 (abfd, data);
550
551
103
    case 2:
552
103
      return bfd_get_16 (abfd, data);
553
554
0
    case 3:
555
0
      return bfd_get_24 (abfd, data);
556
557
6.63k
    case 4:
558
6.63k
      return bfd_get_32 (abfd, data);
559
560
0
#ifdef BFD64
561
6.27k
    case 8:
562
6.27k
      return bfd_get_64 (abfd, data);
563
0
#endif
564
565
0
    default:
566
0
      abort ();
567
20.8k
    }
568
7.86k
  return 0;
569
20.8k
}
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
20.8k
{
577
20.8k
  switch (bfd_get_reloc_size (howto))
578
20.8k
    {
579
7.86k
    case 0:
580
7.86k
      break;
581
582
7
    case 1:
583
7
      bfd_put_8 (abfd, val, data);
584
7
      break;
585
586
103
    case 2:
587
103
      bfd_put_16 (abfd, val, data);
588
103
      break;
589
590
0
    case 3:
591
0
      bfd_put_24 (abfd, val, data);
592
0
      break;
593
594
6.63k
    case 4:
595
6.63k
      bfd_put_32 (abfd, val, data);
596
6.63k
      break;
597
598
0
#ifdef BFD64
599
6.27k
    case 8:
600
6.27k
      bfd_put_64 (abfd, val, data);
601
6.27k
      break;
602
0
#endif
603
604
0
    default:
605
0
      abort ();
606
20.8k
    }
607
20.8k
}
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
18.6k
{
616
18.6k
  bfd_vma val = read_reloc (abfd, data, howto);
617
618
18.6k
  if (howto->negate)
619
0
    relocation = -relocation;
620
621
18.6k
  val = ((val & ~howto->dst_mask)
622
18.6k
   | (((val & howto->src_mask) + relocation) & howto->dst_mask));
623
624
18.6k
  write_reloc (abfd, val, data, howto);
625
18.6k
}
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
24.5k
{
669
24.5k
  bfd_vma relocation;
670
24.5k
  bfd_reloc_status_type flag = bfd_reloc_ok;
671
24.5k
  bfd_size_type octets;
672
24.5k
  bfd_vma output_base = 0;
673
24.5k
  reloc_howto_type *howto = reloc_entry->howto;
674
24.5k
  asection *reloc_target_output_section;
675
24.5k
  asymbol *symbol;
676
677
24.5k
  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
24.5k
  if (bfd_is_und_section (symbol->section)
683
1.08k
      && (symbol->flags & BSF_WEAK) == 0
684
1.00k
      && output_bfd == NULL)
685
1.00k
    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
24.5k
  if (howto && howto->special_function)
691
17.3k
    {
692
17.3k
      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
17.3k
      cont = howto->special_function (abfd, reloc_entry, symbol, data,
699
17.3k
              input_section, output_bfd,
700
17.3k
              error_message);
701
17.3k
      if (cont != bfd_reloc_continue)
702
5.07k
  return cont;
703
17.3k
    }
704
705
19.4k
  if (bfd_is_abs_section (symbol->section)
706
2.73k
      && 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
19.4k
  if (howto == NULL)
714
142
    return bfd_reloc_undefined;
715
716
  /* Is the address of the relocation really within the section?  */
717
19.3k
  octets = reloc_entry->address * bfd_octets_per_byte (abfd, input_section);
718
19.3k
  if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
719
678
    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
18.6k
  if (bfd_is_com_section (symbol->section))
726
18
    relocation = 0;
727
18.6k
  else
728
18.6k
    relocation = symbol->value;
729
730
18.6k
  reloc_target_output_section = symbol->section->output_section;
731
732
  /* Convert input-section-relative symbol value to absolute.  */
733
18.6k
  if ((output_bfd && ! howto->partial_inplace)
734
18.6k
      || reloc_target_output_section == NULL)
735
0
    output_base = 0;
736
18.6k
  else
737
18.6k
    output_base = reloc_target_output_section->vma;
738
739
18.6k
  output_base += symbol->section->output_offset;
740
741
  /* If symbol addresses are in octets, convert to bytes.  */
742
18.6k
  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
743
18.6k
      && (symbol->section->flags & SEC_ELF_OCTETS))
744
6.60k
    output_base *= bfd_octets_per_byte (abfd, input_section);
745
746
18.6k
  relocation += output_base;
747
748
  /* Add in supplied addend.  */
749
18.6k
  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
18.6k
  if (howto->pc_relative)
755
697
    {
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
697
      relocation -=
785
697
  input_section->output_section->vma + input_section->output_offset;
786
787
697
      if (howto->pcrel_offset)
788
680
  relocation -= reloc_entry->address;
789
697
    }
790
791
18.6k
  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
18.6k
  if (howto->complain_on_overflow != complain_overflow_dont
902
5.37k
      && flag == bfd_reloc_ok)
903
5.20k
    flag = bfd_check_overflow (howto->complain_on_overflow,
904
5.20k
             howto->bitsize,
905
5.20k
             howto->rightshift,
906
5.20k
             bfd_arch_bits_per_address (abfd),
907
5.20k
             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
18.6k
  relocation >>= (bfd_vma) howto->rightshift;
937
938
  /* Shift everything up to where it's going to be used.  */
939
18.6k
  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
18.6k
  data = (bfd_byte *) data + octets;
975
18.6k
  apply_reloc (abfd, data, howto, relocation);
976
18.6k
  return flag;
977
18.6k
}
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
0
{
1163
0
  bfd_vma relocation;
1164
0
  bfd_size_type octets = (address
1165
0
        * bfd_octets_per_byte (input_bfd, input_section));
1166
1167
  /* Sanity check the address.  */
1168
0
  if (!bfd_reloc_offset_in_range (howto, input_bfd, input_section, octets))
1169
0
    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
0
}
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
358
{
1207
358
  bfd_vma x;
1208
358
  bfd_reloc_status_type flag;
1209
358
  unsigned int rightshift = howto->rightshift;
1210
358
  unsigned int bitpos = howto->bitpos;
1211
1212
358
  if (howto->negate)
1213
0
    relocation = -relocation;
1214
1215
  /* Get the value we are going to relocate.  */
1216
358
  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
358
  flag = bfd_reloc_ok;
1223
358
  if (howto->complain_on_overflow != complain_overflow_dont)
1224
53
    {
1225
53
      bfd_vma addrmask, fieldmask, signmask, ss;
1226
53
      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
53
      fieldmask = N_ONES (howto->bitsize);
1233
53
      signmask = ~fieldmask;
1234
53
      addrmask = (N_ONES (bfd_arch_bits_per_address (input_bfd))
1235
53
      | (fieldmask << rightshift));
1236
53
      a = (relocation & addrmask) >> rightshift;
1237
53
      b = (x & howto->src_mask & addrmask) >> bitpos;
1238
53
      addrmask >>= rightshift;
1239
1240
53
      switch (howto->complain_on_overflow)
1241
53
  {
1242
44
  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
44
    signmask = ~(fieldmask >> 1);
1247
    /* Fall thru */
1248
1249
53
  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
53
    ss = a & signmask;
1256
53
    if (ss != 0 && ss != (addrmask & signmask))
1257
22
      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
53
    ss = ((~howto->src_mask) >> 1) & howto->src_mask;
1266
53
    ss >>= bitpos;
1267
1268
    /* Set all the bits above the sign bit.  */
1269
53
    b = (b ^ ss) - ss;
1270
1271
    /* Now we can do the addition.  */
1272
53
    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
53
    if (((~(a ^ b)) & (a ^ sum)) & signmask & addrmask)
1288
0
      flag = bfd_reloc_overflow;
1289
53
    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
53
  }
1311
53
    }
1312
1313
  /* Put RELOCATION in the right bits.  */
1314
358
  relocation >>= (bfd_vma) rightshift;
1315
358
  relocation <<= (bfd_vma) bitpos;
1316
1317
  /* Add RELOCATION to the right bits of X.  */
1318
358
  x = ((x & ~howto->dst_mask)
1319
358
       | (((x & howto->src_mask) + relocation) & howto->dst_mask));
1320
1321
  /* Put the relocated value back in the object file.  */
1322
358
  write_reloc (input_bfd, x, location, howto);
1323
358
  return flag;
1324
358
}
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
1.95k
{
1338
1.95k
  bfd_vma x;
1339
1.95k
  bfd_byte *location;
1340
1341
1.95k
  if (!bfd_reloc_offset_in_range (howto, input_bfd, input_section, off))
1342
96
    return bfd_reloc_outofrange;
1343
1344
  /* Get the value we are going to relocate.  */
1345
1.86k
  location = buf + off;
1346
1.86k
  x = read_reloc (input_bfd, location, howto);
1347
1348
  /* Zero out the unwanted bits of X.  */
1349
1.86k
  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
1.86k
  if (strcmp (bfd_section_name (input_section), ".debug_ranges") == 0
1354
754
      && (howto->dst_mask & 1) != 0)
1355
549
    x |= 1;
1356
1357
  /* Put the relocated value back in the object file.  */
1358
1.86k
  write_reloc (input_bfd, x, location, howto);
1359
1.86k
  return bfd_reloc_ok;
1360
1.95k
}
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_TLS_TPOFF
2324
ENUMX
2325
  BFD_RELOC_386_TLS_IE
2326
ENUMX
2327
  BFD_RELOC_386_TLS_GOTIE
2328
ENUMX
2329
  BFD_RELOC_386_TLS_LE
2330
ENUMX
2331
  BFD_RELOC_386_TLS_GD
2332
ENUMX
2333
  BFD_RELOC_386_TLS_LDM
2334
ENUMX
2335
  BFD_RELOC_386_TLS_LDO_32
2336
ENUMX
2337
  BFD_RELOC_386_TLS_IE_32
2338
ENUMX
2339
  BFD_RELOC_386_TLS_LE_32
2340
ENUMX
2341
  BFD_RELOC_386_TLS_DTPMOD32
2342
ENUMX
2343
  BFD_RELOC_386_TLS_DTPOFF32
2344
ENUMX
2345
  BFD_RELOC_386_TLS_TPOFF32
2346
ENUMX
2347
  BFD_RELOC_386_TLS_GOTDESC
2348
ENUMX
2349
  BFD_RELOC_386_TLS_DESC_CALL
2350
ENUMX
2351
  BFD_RELOC_386_TLS_DESC
2352
ENUMX
2353
  BFD_RELOC_386_GOT32X
2354
ENUMDOC
2355
  i386/elf relocations.
2356
2357
ENUM
2358
  BFD_RELOC_X86_64_GOT32
2359
ENUMX
2360
  BFD_RELOC_X86_64_GOTPCREL
2361
ENUMX
2362
  BFD_RELOC_X86_64_32S
2363
ENUMX
2364
  BFD_RELOC_X86_64_DTPMOD64
2365
ENUMX
2366
  BFD_RELOC_X86_64_DTPOFF64
2367
ENUMX
2368
  BFD_RELOC_X86_64_TPOFF64
2369
ENUMX
2370
  BFD_RELOC_X86_64_TLSGD
2371
ENUMX
2372
  BFD_RELOC_X86_64_TLSLD
2373
ENUMX
2374
  BFD_RELOC_X86_64_DTPOFF32
2375
ENUMX
2376
  BFD_RELOC_X86_64_GOTTPOFF
2377
ENUMX
2378
  BFD_RELOC_X86_64_TPOFF32
2379
ENUMX
2380
  BFD_RELOC_X86_64_GOTPC32
2381
ENUMX
2382
  BFD_RELOC_X86_64_GOT64
2383
ENUMX
2384
  BFD_RELOC_X86_64_GOTPCREL64
2385
ENUMX
2386
  BFD_RELOC_X86_64_GOTPLT64
2387
ENUMX
2388
  BFD_RELOC_X86_64_GOTPC32_TLSDESC
2389
ENUMX
2390
  BFD_RELOC_X86_64_TLSDESC_CALL
2391
ENUMX
2392
  BFD_RELOC_X86_64_TLSDESC
2393
ENUMX
2394
  BFD_RELOC_X86_64_PC32_BND
2395
ENUMX
2396
  BFD_RELOC_X86_64_PLT32_BND
2397
ENUMX
2398
  BFD_RELOC_X86_64_GOTPCRELX
2399
ENUMX
2400
  BFD_RELOC_X86_64_REX_GOTPCRELX
2401
ENUMX
2402
  BFD_RELOC_X86_64_CODE_4_GOTPCRELX
2403
ENUMX
2404
  BFD_RELOC_X86_64_CODE_4_GOTTPOFF
2405
ENUMX
2406
  BFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC
2407
ENUMX
2408
  BFD_RELOC_X86_64_CODE_5_GOTPCRELX
2409
ENUMX
2410
  BFD_RELOC_X86_64_CODE_5_GOTTPOFF
2411
ENUMX
2412
  BFD_RELOC_X86_64_CODE_5_GOTPC32_TLSDESC
2413
ENUMX
2414
  BFD_RELOC_X86_64_CODE_6_GOTPCRELX
2415
ENUMX
2416
  BFD_RELOC_X86_64_CODE_6_GOTTPOFF
2417
ENUMX
2418
  BFD_RELOC_X86_64_CODE_6_GOTPC32_TLSDESC
2419
ENUMDOC
2420
  x86-64/elf relocations.
2421
2422
ENUM
2423
  BFD_RELOC_NS32K_IMM_8
2424
ENUMX
2425
  BFD_RELOC_NS32K_IMM_16
2426
ENUMX
2427
  BFD_RELOC_NS32K_IMM_32
2428
ENUMX
2429
  BFD_RELOC_NS32K_IMM_8_PCREL
2430
ENUMX
2431
  BFD_RELOC_NS32K_IMM_16_PCREL
2432
ENUMX
2433
  BFD_RELOC_NS32K_IMM_32_PCREL
2434
ENUMX
2435
  BFD_RELOC_NS32K_DISP_8
2436
ENUMX
2437
  BFD_RELOC_NS32K_DISP_16
2438
ENUMX
2439
  BFD_RELOC_NS32K_DISP_32
2440
ENUMX
2441
  BFD_RELOC_NS32K_DISP_8_PCREL
2442
ENUMX
2443
  BFD_RELOC_NS32K_DISP_16_PCREL
2444
ENUMX
2445
  BFD_RELOC_NS32K_DISP_32_PCREL
2446
ENUMDOC
2447
  ns32k relocations.
2448
2449
ENUM
2450
  BFD_RELOC_PDP11_DISP_6_PCREL
2451
ENUMDOC
2452
  PDP11 relocation(s).
2453
2454
ENUM
2455
  BFD_RELOC_PJ_CODE_HI16
2456
ENUMX
2457
  BFD_RELOC_PJ_CODE_LO16
2458
ENUMX
2459
  BFD_RELOC_PJ_CODE_DIR16
2460
ENUMX
2461
  BFD_RELOC_PJ_CODE_DIR32
2462
ENUMDOC
2463
  Picojava relocs.  Not all of these appear in object files.
2464
2465
ENUM
2466
  BFD_RELOC_PPC_B26
2467
ENUMX
2468
  BFD_RELOC_PPC_BA26
2469
ENUMX
2470
  BFD_RELOC_PPC_TOC16
2471
ENUMX
2472
  BFD_RELOC_PPC_TOC16_LO
2473
ENUMX
2474
  BFD_RELOC_PPC_TOC16_HI
2475
ENUMX
2476
  BFD_RELOC_PPC_B16
2477
ENUMX
2478
  BFD_RELOC_PPC_B16_BRTAKEN
2479
ENUMX
2480
  BFD_RELOC_PPC_B16_BRNTAKEN
2481
ENUMX
2482
  BFD_RELOC_PPC_BA16
2483
ENUMX
2484
  BFD_RELOC_PPC_BA16_BRTAKEN
2485
ENUMX
2486
  BFD_RELOC_PPC_BA16_BRNTAKEN
2487
ENUMX
2488
  BFD_RELOC_PPC_LOCAL24PC
2489
ENUMX
2490
  BFD_RELOC_PPC_EMB_NADDR32
2491
ENUMX
2492
  BFD_RELOC_PPC_EMB_NADDR16
2493
ENUMX
2494
  BFD_RELOC_PPC_EMB_NADDR16_LO
2495
ENUMX
2496
  BFD_RELOC_PPC_EMB_NADDR16_HI
2497
ENUMX
2498
  BFD_RELOC_PPC_EMB_NADDR16_HA
2499
ENUMX
2500
  BFD_RELOC_PPC_EMB_SDAI16
2501
ENUMX
2502
  BFD_RELOC_PPC_EMB_SDA2I16
2503
ENUMX
2504
  BFD_RELOC_PPC_EMB_SDA2REL
2505
ENUMX
2506
  BFD_RELOC_PPC_EMB_SDA21
2507
ENUMX
2508
  BFD_RELOC_PPC_EMB_MRKREF
2509
ENUMX
2510
  BFD_RELOC_PPC_EMB_RELSEC16
2511
ENUMX
2512
  BFD_RELOC_PPC_EMB_RELST_LO
2513
ENUMX
2514
  BFD_RELOC_PPC_EMB_RELST_HI
2515
ENUMX
2516
  BFD_RELOC_PPC_EMB_RELST_HA
2517
ENUMX
2518
  BFD_RELOC_PPC_EMB_BIT_FLD
2519
ENUMX
2520
  BFD_RELOC_PPC_EMB_RELSDA
2521
ENUMX
2522
  BFD_RELOC_PPC_VLE_REL8
2523
ENUMX
2524
  BFD_RELOC_PPC_VLE_REL15
2525
ENUMX
2526
  BFD_RELOC_PPC_VLE_REL24
2527
ENUMX
2528
  BFD_RELOC_PPC_VLE_LO16A
2529
ENUMX
2530
  BFD_RELOC_PPC_VLE_LO16D
2531
ENUMX
2532
  BFD_RELOC_PPC_VLE_HI16A
2533
ENUMX
2534
  BFD_RELOC_PPC_VLE_HI16D
2535
ENUMX
2536
  BFD_RELOC_PPC_VLE_HA16A
2537
ENUMX
2538
  BFD_RELOC_PPC_VLE_HA16D
2539
ENUMX
2540
  BFD_RELOC_PPC_VLE_SDA21
2541
ENUMX
2542
  BFD_RELOC_PPC_VLE_SDA21_LO
2543
ENUMX
2544
  BFD_RELOC_PPC_VLE_SDAREL_LO16A
2545
ENUMX
2546
  BFD_RELOC_PPC_VLE_SDAREL_LO16D
2547
ENUMX
2548
  BFD_RELOC_PPC_VLE_SDAREL_HI16A
2549
ENUMX
2550
  BFD_RELOC_PPC_VLE_SDAREL_HI16D
2551
ENUMX
2552
  BFD_RELOC_PPC_VLE_SDAREL_HA16A
2553
ENUMX
2554
  BFD_RELOC_PPC_VLE_SDAREL_HA16D
2555
ENUMX
2556
  BFD_RELOC_PPC_16DX_HA
2557
ENUMX
2558
  BFD_RELOC_PPC_REL16DX_HA
2559
ENUMX
2560
  BFD_RELOC_PPC_NEG
2561
ENUMX
2562
  BFD_RELOC_PPC64_HIGHER
2563
ENUMX
2564
  BFD_RELOC_PPC64_HIGHER_S
2565
ENUMX
2566
  BFD_RELOC_PPC64_HIGHEST
2567
ENUMX
2568
  BFD_RELOC_PPC64_HIGHEST_S
2569
ENUMX
2570
  BFD_RELOC_PPC64_TOC16_LO
2571
ENUMX
2572
  BFD_RELOC_PPC64_TOC16_HI
2573
ENUMX
2574
  BFD_RELOC_PPC64_TOC16_HA
2575
ENUMX
2576
  BFD_RELOC_PPC64_TOC
2577
ENUMX
2578
  BFD_RELOC_PPC64_PLTGOT16
2579
ENUMX
2580
  BFD_RELOC_PPC64_PLTGOT16_LO
2581
ENUMX
2582
  BFD_RELOC_PPC64_PLTGOT16_HI
2583
ENUMX
2584
  BFD_RELOC_PPC64_PLTGOT16_HA
2585
ENUMX
2586
  BFD_RELOC_PPC64_ADDR16_DS
2587
ENUMX
2588
  BFD_RELOC_PPC64_ADDR16_LO_DS
2589
ENUMX
2590
  BFD_RELOC_PPC64_GOT16_DS
2591
ENUMX
2592
  BFD_RELOC_PPC64_GOT16_LO_DS
2593
ENUMX
2594
  BFD_RELOC_PPC64_PLT16_LO_DS
2595
ENUMX
2596
  BFD_RELOC_PPC64_SECTOFF_DS
2597
ENUMX
2598
  BFD_RELOC_PPC64_SECTOFF_LO_DS
2599
ENUMX
2600
  BFD_RELOC_PPC64_TOC16_DS
2601
ENUMX
2602
  BFD_RELOC_PPC64_TOC16_LO_DS
2603
ENUMX
2604
  BFD_RELOC_PPC64_PLTGOT16_DS
2605
ENUMX
2606
  BFD_RELOC_PPC64_PLTGOT16_LO_DS
2607
ENUMX
2608
  BFD_RELOC_PPC64_ADDR16_HIGH
2609
ENUMX
2610
  BFD_RELOC_PPC64_ADDR16_HIGHA
2611
ENUMX
2612
  BFD_RELOC_PPC64_REL16_HIGH
2613
ENUMX
2614
  BFD_RELOC_PPC64_REL16_HIGHA
2615
ENUMX
2616
  BFD_RELOC_PPC64_REL16_HIGHER
2617
ENUMX
2618
  BFD_RELOC_PPC64_REL16_HIGHERA
2619
ENUMX
2620
  BFD_RELOC_PPC64_REL16_HIGHEST
2621
ENUMX
2622
  BFD_RELOC_PPC64_REL16_HIGHESTA
2623
ENUMX
2624
  BFD_RELOC_PPC64_ADDR64_LOCAL
2625
ENUMX
2626
  BFD_RELOC_PPC64_ENTRY
2627
ENUMX
2628
  BFD_RELOC_PPC64_REL24_NOTOC
2629
ENUMX
2630
  BFD_RELOC_PPC64_REL24_P9NOTOC
2631
ENUMX
2632
  BFD_RELOC_PPC64_D34
2633
ENUMX
2634
  BFD_RELOC_PPC64_D34_LO
2635
ENUMX
2636
  BFD_RELOC_PPC64_D34_HI30
2637
ENUMX
2638
  BFD_RELOC_PPC64_D34_HA30
2639
ENUMX
2640
  BFD_RELOC_PPC64_PCREL34
2641
ENUMX
2642
  BFD_RELOC_PPC64_GOT_PCREL34
2643
ENUMX
2644
  BFD_RELOC_PPC64_PLT_PCREL34
2645
ENUMX
2646
  BFD_RELOC_PPC64_ADDR16_HIGHER34
2647
ENUMX
2648
  BFD_RELOC_PPC64_ADDR16_HIGHERA34
2649
ENUMX
2650
  BFD_RELOC_PPC64_ADDR16_HIGHEST34
2651
ENUMX
2652
  BFD_RELOC_PPC64_ADDR16_HIGHESTA34
2653
ENUMX
2654
  BFD_RELOC_PPC64_REL16_HIGHER34
2655
ENUMX
2656
  BFD_RELOC_PPC64_REL16_HIGHERA34
2657
ENUMX
2658
  BFD_RELOC_PPC64_REL16_HIGHEST34
2659
ENUMX
2660
  BFD_RELOC_PPC64_REL16_HIGHESTA34
2661
ENUMX
2662
  BFD_RELOC_PPC64_D28
2663
ENUMX
2664
  BFD_RELOC_PPC64_PCREL28
2665
ENUMDOC
2666
  Power(rs6000) and PowerPC relocations.
2667
2668
ENUM
2669
  BFD_RELOC_PPC_TLS
2670
ENUMX
2671
  BFD_RELOC_PPC_TLSGD
2672
ENUMX
2673
  BFD_RELOC_PPC_TLSLD
2674
ENUMX
2675
  BFD_RELOC_PPC_TLSLE
2676
ENUMX
2677
  BFD_RELOC_PPC_TLSIE
2678
ENUMX
2679
  BFD_RELOC_PPC_TLSM
2680
ENUMX
2681
  BFD_RELOC_PPC_TLSML
2682
ENUMX
2683
  BFD_RELOC_PPC_DTPMOD
2684
ENUMX
2685
  BFD_RELOC_PPC_TPREL16
2686
ENUMX
2687
  BFD_RELOC_PPC_TPREL16_LO
2688
ENUMX
2689
  BFD_RELOC_PPC_TPREL16_HI
2690
ENUMX
2691
  BFD_RELOC_PPC_TPREL16_HA
2692
ENUMX
2693
  BFD_RELOC_PPC_TPREL
2694
ENUMX
2695
  BFD_RELOC_PPC_DTPREL16
2696
ENUMX
2697
  BFD_RELOC_PPC_DTPREL16_LO
2698
ENUMX
2699
  BFD_RELOC_PPC_DTPREL16_HI
2700
ENUMX
2701
  BFD_RELOC_PPC_DTPREL16_HA
2702
ENUMX
2703
  BFD_RELOC_PPC_DTPREL
2704
ENUMX
2705
  BFD_RELOC_PPC_GOT_TLSGD16
2706
ENUMX
2707
  BFD_RELOC_PPC_GOT_TLSGD16_LO
2708
ENUMX
2709
  BFD_RELOC_PPC_GOT_TLSGD16_HI
2710
ENUMX
2711
  BFD_RELOC_PPC_GOT_TLSGD16_HA
2712
ENUMX
2713
  BFD_RELOC_PPC_GOT_TLSLD16
2714
ENUMX
2715
  BFD_RELOC_PPC_GOT_TLSLD16_LO
2716
ENUMX
2717
  BFD_RELOC_PPC_GOT_TLSLD16_HI
2718
ENUMX
2719
  BFD_RELOC_PPC_GOT_TLSLD16_HA
2720
ENUMX
2721
  BFD_RELOC_PPC_GOT_TPREL16
2722
ENUMX
2723
  BFD_RELOC_PPC_GOT_TPREL16_LO
2724
ENUMX
2725
  BFD_RELOC_PPC_GOT_TPREL16_HI
2726
ENUMX
2727
  BFD_RELOC_PPC_GOT_TPREL16_HA
2728
ENUMX
2729
  BFD_RELOC_PPC_GOT_DTPREL16
2730
ENUMX
2731
  BFD_RELOC_PPC_GOT_DTPREL16_LO
2732
ENUMX
2733
  BFD_RELOC_PPC_GOT_DTPREL16_HI
2734
ENUMX
2735
  BFD_RELOC_PPC_GOT_DTPREL16_HA
2736
ENUMX
2737
  BFD_RELOC_PPC64_TLSGD
2738
ENUMX
2739
  BFD_RELOC_PPC64_TLSLD
2740
ENUMX
2741
  BFD_RELOC_PPC64_TLSLE
2742
ENUMX
2743
  BFD_RELOC_PPC64_TLSIE
2744
ENUMX
2745
  BFD_RELOC_PPC64_TLSM
2746
ENUMX
2747
  BFD_RELOC_PPC64_TLSML
2748
ENUMX
2749
  BFD_RELOC_PPC64_TPREL16_DS
2750
ENUMX
2751
  BFD_RELOC_PPC64_TPREL16_LO_DS
2752
ENUMX
2753
  BFD_RELOC_PPC64_TPREL16_HIGH
2754
ENUMX
2755
  BFD_RELOC_PPC64_TPREL16_HIGHA
2756
ENUMX
2757
  BFD_RELOC_PPC64_TPREL16_HIGHER
2758
ENUMX
2759
  BFD_RELOC_PPC64_TPREL16_HIGHERA
2760
ENUMX
2761
  BFD_RELOC_PPC64_TPREL16_HIGHEST
2762
ENUMX
2763
  BFD_RELOC_PPC64_TPREL16_HIGHESTA
2764
ENUMX
2765
  BFD_RELOC_PPC64_DTPREL16_DS
2766
ENUMX
2767
  BFD_RELOC_PPC64_DTPREL16_LO_DS
2768
ENUMX
2769
  BFD_RELOC_PPC64_DTPREL16_HIGH
2770
ENUMX
2771
  BFD_RELOC_PPC64_DTPREL16_HIGHA
2772
ENUMX
2773
  BFD_RELOC_PPC64_DTPREL16_HIGHER
2774
ENUMX
2775
  BFD_RELOC_PPC64_DTPREL16_HIGHERA
2776
ENUMX
2777
  BFD_RELOC_PPC64_DTPREL16_HIGHEST
2778
ENUMX
2779
  BFD_RELOC_PPC64_DTPREL16_HIGHESTA
2780
ENUMX
2781
  BFD_RELOC_PPC64_TPREL34
2782
ENUMX
2783
  BFD_RELOC_PPC64_DTPREL34
2784
ENUMX
2785
  BFD_RELOC_PPC64_GOT_TLSGD_PCREL34
2786
ENUMX
2787
  BFD_RELOC_PPC64_GOT_TLSLD_PCREL34
2788
ENUMX
2789
  BFD_RELOC_PPC64_GOT_TPREL_PCREL34
2790
ENUMX
2791
  BFD_RELOC_PPC64_GOT_DTPREL_PCREL34
2792
ENUMX
2793
  BFD_RELOC_PPC64_TLS_PCREL
2794
ENUMDOC
2795
  PowerPC and PowerPC64 thread-local storage relocations.
2796
2797
ENUM
2798
  BFD_RELOC_CTOR
2799
ENUMDOC
2800
  The type of reloc used to build a constructor table - at the moment
2801
  probably a 32 bit wide absolute relocation, but the target can choose.
2802
  It generally does map to one of the other relocation types.
2803
2804
ENUM
2805
  BFD_RELOC_ARM_PCREL_BRANCH
2806
ENUMDOC
2807
  ARM 26 bit pc-relative branch.  The lowest two bits must be zero and
2808
  are not stored in the instruction.
2809
ENUM
2810
  BFD_RELOC_ARM_PCREL_BLX
2811
ENUMDOC
2812
  ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
2813
  not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
2814
  field in the instruction.
2815
ENUM
2816
  BFD_RELOC_THUMB_PCREL_BLX
2817
ENUMDOC
2818
  Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
2819
  not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
2820
  field in the instruction.
2821
ENUM
2822
  BFD_RELOC_ARM_PCREL_CALL
2823
ENUMDOC
2824
  ARM 26-bit pc-relative branch for an unconditional BL or BLX
2825
  instruction.
2826
ENUM
2827
  BFD_RELOC_ARM_PCREL_JUMP
2828
ENUMDOC
2829
  ARM 26-bit pc-relative branch for B or conditional BL instruction.
2830
2831
ENUM
2832
  BFD_RELOC_THUMB_PCREL_BRANCH5
2833
ENUMDOC
2834
  ARM 5-bit pc-relative branch for Branch Future instructions.
2835
2836
ENUM
2837
  BFD_RELOC_THUMB_PCREL_BFCSEL
2838
ENUMDOC
2839
  ARM 6-bit pc-relative branch for BFCSEL instruction.
2840
2841
ENUM
2842
  BFD_RELOC_ARM_THUMB_BF17
2843
ENUMDOC
2844
  ARM 17-bit pc-relative branch for Branch Future instructions.
2845
2846
ENUM
2847
  BFD_RELOC_ARM_THUMB_BF13
2848
ENUMDOC
2849
  ARM 13-bit pc-relative branch for BFCSEL instruction.
2850
2851
ENUM
2852
  BFD_RELOC_ARM_THUMB_BF19
2853
ENUMDOC
2854
  ARM 19-bit pc-relative branch for Branch Future Link instruction.
2855
2856
ENUM
2857
  BFD_RELOC_ARM_THUMB_LOOP12
2858
ENUMDOC
2859
  ARM 12-bit pc-relative branch for Low Overhead Loop instructions.
2860
2861
ENUM
2862
  BFD_RELOC_THUMB_PCREL_BRANCH7
2863
ENUMX
2864
  BFD_RELOC_THUMB_PCREL_BRANCH9
2865
ENUMX
2866
  BFD_RELOC_THUMB_PCREL_BRANCH12
2867
ENUMX
2868
  BFD_RELOC_THUMB_PCREL_BRANCH20
2869
ENUMX
2870
  BFD_RELOC_THUMB_PCREL_BRANCH23
2871
ENUMX
2872
  BFD_RELOC_THUMB_PCREL_BRANCH25
2873
ENUMDOC
2874
  Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
2875
  The lowest bit must be zero and is not stored in the instruction.
2876
  Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
2877
  "nn" one smaller in all cases.  Note further that BRANCH23
2878
  corresponds to R_ARM_THM_CALL.
2879
2880
ENUM
2881
  BFD_RELOC_ARM_OFFSET_IMM
2882
ENUMDOC
2883
  12-bit immediate offset, used in ARM-format ldr and str instructions.
2884
2885
ENUM
2886
  BFD_RELOC_ARM_THUMB_OFFSET
2887
ENUMDOC
2888
  5-bit immediate offset, used in Thumb-format ldr and str instructions.
2889
2890
ENUM
2891
  BFD_RELOC_ARM_TARGET1
2892
ENUMDOC
2893
  Pc-relative or absolute relocation depending on target.  Used for
2894
  entries in .init_array sections.
2895
ENUM
2896
  BFD_RELOC_ARM_ROSEGREL32
2897
ENUMDOC
2898
  Read-only segment base relative address.
2899
ENUM
2900
  BFD_RELOC_ARM_SBREL32
2901
ENUMDOC
2902
  Data segment base relative address.
2903
ENUM
2904
  BFD_RELOC_ARM_TARGET2
2905
ENUMDOC
2906
  This reloc is used for references to RTTI data from exception
2907
  handling tables.  The actual definition depends on the target.  It
2908
  may be a pc-relative or some form of GOT-indirect relocation.
2909
ENUM
2910
  BFD_RELOC_ARM_PREL31
2911
ENUMDOC
2912
  31-bit PC relative address.
2913
ENUM
2914
  BFD_RELOC_ARM_MOVW
2915
ENUMX
2916
  BFD_RELOC_ARM_MOVT
2917
ENUMX
2918
  BFD_RELOC_ARM_MOVW_PCREL
2919
ENUMX
2920
  BFD_RELOC_ARM_MOVT_PCREL
2921
ENUMX
2922
  BFD_RELOC_ARM_THUMB_MOVW
2923
ENUMX
2924
  BFD_RELOC_ARM_THUMB_MOVT
2925
ENUMX
2926
  BFD_RELOC_ARM_THUMB_MOVW_PCREL
2927
ENUMX
2928
  BFD_RELOC_ARM_THUMB_MOVT_PCREL
2929
ENUMDOC
2930
  Low and High halfword relocations for MOVW and MOVT instructions.
2931
2932
ENUM
2933
  BFD_RELOC_ARM_GOTFUNCDESC
2934
ENUMX
2935
  BFD_RELOC_ARM_GOTOFFFUNCDESC
2936
ENUMX
2937
  BFD_RELOC_ARM_FUNCDESC
2938
ENUMX
2939
  BFD_RELOC_ARM_FUNCDESC_VALUE
2940
ENUMX
2941
  BFD_RELOC_ARM_TLS_GD32_FDPIC
2942
ENUMX
2943
  BFD_RELOC_ARM_TLS_LDM32_FDPIC
2944
ENUMX
2945
  BFD_RELOC_ARM_TLS_IE32_FDPIC
2946
ENUMDOC
2947
  ARM FDPIC specific relocations.
2948
2949
ENUM
2950
  BFD_RELOC_ARM_GOT32
2951
ENUMX
2952
  BFD_RELOC_ARM_GOT_PREL
2953
ENUMDOC
2954
  Relocations for setting up GOTs and PLTs for shared libraries.
2955
2956
ENUM
2957
  BFD_RELOC_ARM_TLS_GD32
2958
ENUMX
2959
  BFD_RELOC_ARM_TLS_LDO32
2960
ENUMX
2961
  BFD_RELOC_ARM_TLS_LDM32
2962
ENUMX
2963
  BFD_RELOC_ARM_TLS_DTPOFF32
2964
ENUMX
2965
  BFD_RELOC_ARM_TLS_DTPMOD32
2966
ENUMX
2967
  BFD_RELOC_ARM_TLS_TPOFF32
2968
ENUMX
2969
  BFD_RELOC_ARM_TLS_IE32
2970
ENUMX
2971
  BFD_RELOC_ARM_TLS_LE32
2972
ENUMX
2973
  BFD_RELOC_ARM_TLS_GOTDESC
2974
ENUMX
2975
  BFD_RELOC_ARM_TLS_CALL
2976
ENUMX
2977
  BFD_RELOC_ARM_THM_TLS_CALL
2978
ENUMX
2979
  BFD_RELOC_ARM_TLS_DESCSEQ
2980
ENUMX
2981
  BFD_RELOC_ARM_THM_TLS_DESCSEQ
2982
ENUMX
2983
  BFD_RELOC_ARM_TLS_DESC
2984
ENUMDOC
2985
  ARM thread-local storage relocations.
2986
2987
ENUM
2988
  BFD_RELOC_ARM_ALU_PC_G0_NC
2989
ENUMX
2990
  BFD_RELOC_ARM_ALU_PC_G0
2991
ENUMX
2992
  BFD_RELOC_ARM_ALU_PC_G1_NC
2993
ENUMX
2994
  BFD_RELOC_ARM_ALU_PC_G1
2995
ENUMX
2996
  BFD_RELOC_ARM_ALU_PC_G2
2997
ENUMX
2998
  BFD_RELOC_ARM_LDR_PC_G0
2999
ENUMX
3000
  BFD_RELOC_ARM_LDR_PC_G1
3001
ENUMX
3002
  BFD_RELOC_ARM_LDR_PC_G2
3003
ENUMX
3004
  BFD_RELOC_ARM_LDRS_PC_G0
3005
ENUMX
3006
  BFD_RELOC_ARM_LDRS_PC_G1
3007
ENUMX
3008
  BFD_RELOC_ARM_LDRS_PC_G2
3009
ENUMX
3010
  BFD_RELOC_ARM_LDC_PC_G0
3011
ENUMX
3012
  BFD_RELOC_ARM_LDC_PC_G1
3013
ENUMX
3014
  BFD_RELOC_ARM_LDC_PC_G2
3015
ENUMX
3016
  BFD_RELOC_ARM_ALU_SB_G0_NC
3017
ENUMX
3018
  BFD_RELOC_ARM_ALU_SB_G0
3019
ENUMX
3020
  BFD_RELOC_ARM_ALU_SB_G1_NC
3021
ENUMX
3022
  BFD_RELOC_ARM_ALU_SB_G1
3023
ENUMX
3024
  BFD_RELOC_ARM_ALU_SB_G2
3025
ENUMX
3026
  BFD_RELOC_ARM_LDR_SB_G0
3027
ENUMX
3028
  BFD_RELOC_ARM_LDR_SB_G1
3029
ENUMX
3030
  BFD_RELOC_ARM_LDR_SB_G2
3031
ENUMX
3032
  BFD_RELOC_ARM_LDRS_SB_G0
3033
ENUMX
3034
  BFD_RELOC_ARM_LDRS_SB_G1
3035
ENUMX
3036
  BFD_RELOC_ARM_LDRS_SB_G2
3037
ENUMX
3038
  BFD_RELOC_ARM_LDC_SB_G0
3039
ENUMX
3040
  BFD_RELOC_ARM_LDC_SB_G1
3041
ENUMX
3042
  BFD_RELOC_ARM_LDC_SB_G2
3043
ENUMDOC
3044
  ARM group relocations.
3045
3046
ENUM
3047
  BFD_RELOC_ARM_V4BX
3048
ENUMDOC
3049
  Annotation of BX instructions.
3050
3051
ENUM
3052
  BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC
3053
ENUMX
3054
  BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC
3055
ENUMX
3056
  BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC
3057
ENUMX
3058
  BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC
3059
ENUMDOC
3060
  Thumb1 relocations to support execute-only code.
3061
3062
ENUM
3063
  BFD_RELOC_ARM_IMMEDIATE
3064
ENUMX
3065
  BFD_RELOC_ARM_ADRL_IMMEDIATE
3066
ENUMX
3067
  BFD_RELOC_ARM_T32_IMMEDIATE
3068
ENUMX
3069
  BFD_RELOC_ARM_T32_ADD_IMM
3070
ENUMX
3071
  BFD_RELOC_ARM_T32_IMM12
3072
ENUMX
3073
  BFD_RELOC_ARM_T32_ADD_PC12
3074
ENUMX
3075
  BFD_RELOC_ARM_SHIFT_IMM
3076
ENUMX
3077
  BFD_RELOC_ARM_SMC
3078
ENUMX
3079
  BFD_RELOC_ARM_HVC
3080
ENUMX
3081
  BFD_RELOC_ARM_SWI
3082
ENUMX
3083
  BFD_RELOC_ARM_MULTI
3084
ENUMX
3085
  BFD_RELOC_ARM_CP_OFF_IMM
3086
ENUMX
3087
  BFD_RELOC_ARM_CP_OFF_IMM_S2
3088
ENUMX
3089
  BFD_RELOC_ARM_T32_CP_OFF_IMM
3090
ENUMX
3091
  BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
3092
ENUMX
3093
  BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM
3094
ENUMX
3095
  BFD_RELOC_ARM_ADR_IMM
3096
ENUMX
3097
  BFD_RELOC_ARM_LDR_IMM
3098
ENUMX
3099
  BFD_RELOC_ARM_LITERAL
3100
ENUMX
3101
  BFD_RELOC_ARM_IN_POOL
3102
ENUMX
3103
  BFD_RELOC_ARM_OFFSET_IMM8
3104
ENUMX
3105
  BFD_RELOC_ARM_T32_OFFSET_U8
3106
ENUMX
3107
  BFD_RELOC_ARM_T32_OFFSET_IMM
3108
ENUMX
3109
  BFD_RELOC_ARM_HWLITERAL
3110
ENUMX
3111
  BFD_RELOC_ARM_THUMB_ADD
3112
ENUMX
3113
  BFD_RELOC_ARM_THUMB_IMM
3114
ENUMX
3115
  BFD_RELOC_ARM_THUMB_SHIFT
3116
ENUMDOC
3117
  These relocs are only used within the ARM assembler.  They are not
3118
  (at present) written to any object files.
3119
3120
ENUM
3121
  BFD_RELOC_SH_PCDISP8BY2
3122
ENUMX
3123
  BFD_RELOC_SH_PCDISP12BY2
3124
ENUMX
3125
  BFD_RELOC_SH_IMM3
3126
ENUMX
3127
  BFD_RELOC_SH_IMM3U
3128
ENUMX
3129
  BFD_RELOC_SH_DISP12
3130
ENUMX
3131
  BFD_RELOC_SH_DISP12BY2
3132
ENUMX
3133
  BFD_RELOC_SH_DISP12BY4
3134
ENUMX
3135
  BFD_RELOC_SH_DISP12BY8
3136
ENUMX
3137
  BFD_RELOC_SH_DISP20
3138
ENUMX
3139
  BFD_RELOC_SH_DISP20BY8
3140
ENUMX
3141
  BFD_RELOC_SH_IMM4
3142
ENUMX
3143
  BFD_RELOC_SH_IMM4BY2
3144
ENUMX
3145
  BFD_RELOC_SH_IMM4BY4
3146
ENUMX
3147
  BFD_RELOC_SH_IMM8
3148
ENUMX
3149
  BFD_RELOC_SH_IMM8BY2
3150
ENUMX
3151
  BFD_RELOC_SH_IMM8BY4
3152
ENUMX
3153
  BFD_RELOC_SH_PCRELIMM8BY2
3154
ENUMX
3155
  BFD_RELOC_SH_PCRELIMM8BY4
3156
ENUMX
3157
  BFD_RELOC_SH_SWITCH16
3158
ENUMX
3159
  BFD_RELOC_SH_SWITCH32
3160
ENUMX
3161
  BFD_RELOC_SH_USES
3162
ENUMX
3163
  BFD_RELOC_SH_COUNT
3164
ENUMX
3165
  BFD_RELOC_SH_ALIGN
3166
ENUMX
3167
  BFD_RELOC_SH_CODE
3168
ENUMX
3169
  BFD_RELOC_SH_DATA
3170
ENUMX
3171
  BFD_RELOC_SH_LABEL
3172
ENUMX
3173
  BFD_RELOC_SH_LOOP_START
3174
ENUMX
3175
  BFD_RELOC_SH_LOOP_END
3176
ENUMX
3177
  BFD_RELOC_SH_COPY64
3178
ENUMX
3179
  BFD_RELOC_SH_GLOB_DAT64
3180
ENUMX
3181
  BFD_RELOC_SH_JMP_SLOT64
3182
ENUMX
3183
  BFD_RELOC_SH_RELATIVE64
3184
ENUMX
3185
  BFD_RELOC_SH_GOT10BY4
3186
ENUMX
3187
  BFD_RELOC_SH_GOT10BY8
3188
ENUMX
3189
  BFD_RELOC_SH_GOT32
3190
ENUMX
3191
  BFD_RELOC_SH_GOTPLT10BY4
3192
ENUMX
3193
  BFD_RELOC_SH_GOTPLT10BY8
3194
ENUMX
3195
  BFD_RELOC_SH_GOTPLT32
3196
ENUMX
3197
  BFD_RELOC_SH_SHMEDIA_CODE
3198
ENUMX
3199
  BFD_RELOC_SH_PT_16
3200
ENUMX
3201
  BFD_RELOC_SH_TLS_GD_32
3202
ENUMX
3203
  BFD_RELOC_SH_TLS_LD_32
3204
ENUMX
3205
  BFD_RELOC_SH_TLS_LDO_32
3206
ENUMX
3207
  BFD_RELOC_SH_TLS_IE_32
3208
ENUMX
3209
  BFD_RELOC_SH_TLS_LE_32
3210
ENUMX
3211
  BFD_RELOC_SH_TLS_DTPMOD32
3212
ENUMX
3213
  BFD_RELOC_SH_TLS_DTPOFF32
3214
ENUMX
3215
  BFD_RELOC_SH_TLS_TPOFF32
3216
ENUMX
3217
  BFD_RELOC_SH_GOT20
3218
ENUMX
3219
  BFD_RELOC_SH_GOTOFF20
3220
ENUMX
3221
  BFD_RELOC_SH_GOTFUNCDESC
3222
ENUMX
3223
  BFD_RELOC_SH_GOTFUNCDESC20
3224
ENUMX
3225
  BFD_RELOC_SH_GOTOFFFUNCDESC
3226
ENUMX
3227
  BFD_RELOC_SH_GOTOFFFUNCDESC20
3228
ENUMX
3229
  BFD_RELOC_SH_FUNCDESC
3230
ENUMDOC
3231
  Renesas / SuperH SH relocs.  Not all of these appear in object files.
3232
3233
ENUM
3234
  BFD_RELOC_ARC_N8
3235
ENUMX
3236
  BFD_RELOC_ARC_N16
3237
ENUMX
3238
  BFD_RELOC_ARC_N24
3239
ENUMX
3240
  BFD_RELOC_ARC_N32
3241
ENUMX
3242
  BFD_RELOC_ARC_SDA
3243
ENUMX
3244
  BFD_RELOC_ARC_SECTOFF
3245
ENUMX
3246
  BFD_RELOC_ARC_S21H_PCREL
3247
ENUMX
3248
  BFD_RELOC_ARC_S21W_PCREL
3249
ENUMX
3250
  BFD_RELOC_ARC_S25H_PCREL
3251
ENUMX
3252
  BFD_RELOC_ARC_S25W_PCREL
3253
ENUMX
3254
  BFD_RELOC_ARC_SDA32
3255
ENUMX
3256
  BFD_RELOC_ARC_SDA_LDST
3257
ENUMX
3258
  BFD_RELOC_ARC_SDA_LDST1
3259
ENUMX
3260
  BFD_RELOC_ARC_SDA_LDST2
3261
ENUMX
3262
  BFD_RELOC_ARC_SDA16_LD
3263
ENUMX
3264
  BFD_RELOC_ARC_SDA16_LD1
3265
ENUMX
3266
  BFD_RELOC_ARC_SDA16_LD2
3267
ENUMX
3268
  BFD_RELOC_ARC_S13_PCREL
3269
ENUMX
3270
  BFD_RELOC_ARC_W
3271
ENUMX
3272
  BFD_RELOC_ARC_32_ME
3273
ENUMX
3274
  BFD_RELOC_ARC_32_ME_S
3275
ENUMX
3276
  BFD_RELOC_ARC_N32_ME
3277
ENUMX
3278
  BFD_RELOC_ARC_SECTOFF_ME
3279
ENUMX
3280
  BFD_RELOC_ARC_SDA32_ME
3281
ENUMX
3282
  BFD_RELOC_ARC_W_ME
3283
ENUMX
3284
  BFD_RELOC_AC_SECTOFF_U8
3285
ENUMX
3286
  BFD_RELOC_AC_SECTOFF_U8_1
3287
ENUMX
3288
  BFD_RELOC_AC_SECTOFF_U8_2
3289
ENUMX
3290
  BFD_RELOC_AC_SECTOFF_S9
3291
ENUMX
3292
  BFD_RELOC_AC_SECTOFF_S9_1
3293
ENUMX
3294
  BFD_RELOC_AC_SECTOFF_S9_2
3295
ENUMX
3296
  BFD_RELOC_ARC_SECTOFF_ME_1
3297
ENUMX
3298
  BFD_RELOC_ARC_SECTOFF_ME_2
3299
ENUMX
3300
  BFD_RELOC_ARC_SECTOFF_1
3301
ENUMX
3302
  BFD_RELOC_ARC_SECTOFF_2
3303
ENUMX
3304
  BFD_RELOC_ARC_SDA_12
3305
ENUMX
3306
  BFD_RELOC_ARC_SDA16_ST2
3307
ENUMX
3308
  BFD_RELOC_ARC_32_PCREL
3309
ENUMX
3310
  BFD_RELOC_ARC_GOT32
3311
ENUMX
3312
  BFD_RELOC_ARC_GOTPC
3313
ENUMX
3314
  BFD_RELOC_ARC_S21W_PCREL_PLT
3315
ENUMX
3316
  BFD_RELOC_ARC_S25H_PCREL_PLT
3317
ENUMX
3318
  BFD_RELOC_ARC_TLS_DTPMOD
3319
ENUMX
3320
  BFD_RELOC_ARC_TLS_TPOFF
3321
ENUMX
3322
  BFD_RELOC_ARC_TLS_GD_GOT
3323
ENUMX
3324
  BFD_RELOC_ARC_TLS_GD_LD
3325
ENUMX
3326
  BFD_RELOC_ARC_TLS_GD_CALL
3327
ENUMX
3328
  BFD_RELOC_ARC_TLS_IE_GOT
3329
ENUMX
3330
  BFD_RELOC_ARC_TLS_DTPOFF
3331
ENUMX
3332
  BFD_RELOC_ARC_TLS_DTPOFF_S9
3333
ENUMX
3334
  BFD_RELOC_ARC_TLS_LE_S9
3335
ENUMX
3336
  BFD_RELOC_ARC_TLS_LE_32
3337
ENUMX
3338
  BFD_RELOC_ARC_S25W_PCREL_PLT
3339
ENUMX
3340
  BFD_RELOC_ARC_S21H_PCREL_PLT
3341
ENUMX
3342
  BFD_RELOC_ARC_NPS_CMEM16
3343
ENUMX
3344
  BFD_RELOC_ARC_JLI_SECTOFF
3345
ENUMDOC
3346
  ARC relocs.
3347
3348
ENUM
3349
  BFD_RELOC_BFIN_16_IMM
3350
ENUMDOC
3351
  ADI Blackfin 16 bit immediate absolute reloc.
3352
ENUM
3353
  BFD_RELOC_BFIN_16_HIGH
3354
ENUMDOC
3355
  ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
3356
ENUM
3357
  BFD_RELOC_BFIN_4_PCREL
3358
ENUMDOC
3359
  ADI Blackfin 'a' part of LSETUP.
3360
ENUM
3361
  BFD_RELOC_BFIN_5_PCREL
3362
ENUMDOC
3363
  ADI Blackfin.
3364
ENUM
3365
  BFD_RELOC_BFIN_16_LOW
3366
ENUMDOC
3367
  ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
3368
ENUM
3369
  BFD_RELOC_BFIN_10_PCREL
3370
ENUMDOC
3371
  ADI Blackfin.
3372
ENUM
3373
  BFD_RELOC_BFIN_11_PCREL
3374
ENUMDOC
3375
  ADI Blackfin 'b' part of LSETUP.
3376
ENUM
3377
  BFD_RELOC_BFIN_12_PCREL_JUMP
3378
ENUMDOC
3379
  ADI Blackfin.
3380
ENUM
3381
  BFD_RELOC_BFIN_12_PCREL_JUMP_S
3382
ENUMDOC
3383
  ADI Blackfin Short jump, pcrel.
3384
ENUM
3385
  BFD_RELOC_BFIN_24_PCREL_CALL_X
3386
ENUMDOC
3387
  ADI Blackfin Call.x not implemented.
3388
ENUM
3389
  BFD_RELOC_BFIN_24_PCREL_JUMP_L
3390
ENUMDOC
3391
  ADI Blackfin Long Jump pcrel.
3392
ENUM
3393
  BFD_RELOC_BFIN_GOT17M4
3394
ENUMX
3395
  BFD_RELOC_BFIN_GOTHI
3396
ENUMX
3397
  BFD_RELOC_BFIN_GOTLO
3398
ENUMX
3399
  BFD_RELOC_BFIN_FUNCDESC
3400
ENUMX
3401
  BFD_RELOC_BFIN_FUNCDESC_GOT17M4
3402
ENUMX
3403
  BFD_RELOC_BFIN_FUNCDESC_GOTHI
3404
ENUMX
3405
  BFD_RELOC_BFIN_FUNCDESC_GOTLO
3406
ENUMX
3407
  BFD_RELOC_BFIN_FUNCDESC_VALUE
3408
ENUMX
3409
  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
3410
ENUMX
3411
  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
3412
ENUMX
3413
  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
3414
ENUMX
3415
  BFD_RELOC_BFIN_GOTOFF17M4
3416
ENUMDOC
3417
  ADI Blackfin FD-PIC relocations.
3418
ENUM
3419
  BFD_RELOC_BFIN_GOT
3420
ENUMDOC
3421
  ADI Blackfin GOT relocation.
3422
ENUM
3423
  BFD_RELOC_BFIN_PLTPC
3424
ENUMDOC
3425
  ADI Blackfin PLTPC relocation.
3426
ENUM
3427
  BFD_ARELOC_BFIN_PUSH
3428
ENUMDOC
3429
  ADI Blackfin arithmetic relocation.
3430
ENUM
3431
  BFD_ARELOC_BFIN_CONST
3432
ENUMDOC
3433
  ADI Blackfin arithmetic relocation.
3434
ENUM
3435
  BFD_ARELOC_BFIN_ADD
3436
ENUMDOC
3437
  ADI Blackfin arithmetic relocation.
3438
ENUM
3439
  BFD_ARELOC_BFIN_SUB
3440
ENUMDOC
3441
  ADI Blackfin arithmetic relocation.
3442
ENUM
3443
  BFD_ARELOC_BFIN_MULT
3444
ENUMDOC
3445
  ADI Blackfin arithmetic relocation.
3446
ENUM
3447
  BFD_ARELOC_BFIN_DIV
3448
ENUMDOC
3449
  ADI Blackfin arithmetic relocation.
3450
ENUM
3451
  BFD_ARELOC_BFIN_MOD
3452
ENUMDOC
3453
  ADI Blackfin arithmetic relocation.
3454
ENUM
3455
  BFD_ARELOC_BFIN_LSHIFT
3456
ENUMDOC
3457
  ADI Blackfin arithmetic relocation.
3458
ENUM
3459
  BFD_ARELOC_BFIN_RSHIFT
3460
ENUMDOC
3461
  ADI Blackfin arithmetic relocation.
3462
ENUM
3463
  BFD_ARELOC_BFIN_AND
3464
ENUMDOC
3465
  ADI Blackfin arithmetic relocation.
3466
ENUM
3467
  BFD_ARELOC_BFIN_OR
3468
ENUMDOC
3469
  ADI Blackfin arithmetic relocation.
3470
ENUM
3471
  BFD_ARELOC_BFIN_XOR
3472
ENUMDOC
3473
  ADI Blackfin arithmetic relocation.
3474
ENUM
3475
  BFD_ARELOC_BFIN_LAND
3476
ENUMDOC
3477
  ADI Blackfin arithmetic relocation.
3478
ENUM
3479
  BFD_ARELOC_BFIN_LOR
3480
ENUMDOC
3481
  ADI Blackfin arithmetic relocation.
3482
ENUM
3483
  BFD_ARELOC_BFIN_LEN
3484
ENUMDOC
3485
  ADI Blackfin arithmetic relocation.
3486
ENUM
3487
  BFD_ARELOC_BFIN_NEG
3488
ENUMDOC
3489
  ADI Blackfin arithmetic relocation.
3490
ENUM
3491
  BFD_ARELOC_BFIN_COMP
3492
ENUMDOC
3493
  ADI Blackfin arithmetic relocation.
3494
ENUM
3495
  BFD_ARELOC_BFIN_PAGE
3496
ENUMDOC
3497
  ADI Blackfin arithmetic relocation.
3498
ENUM
3499
  BFD_ARELOC_BFIN_HWPAGE
3500
ENUMDOC
3501
  ADI Blackfin arithmetic relocation.
3502
ENUM
3503
  BFD_ARELOC_BFIN_ADDR
3504
ENUMDOC
3505
  ADI Blackfin arithmetic relocation.
3506
3507
ENUM
3508
  BFD_RELOC_D10V_10_PCREL_R
3509
ENUMDOC
3510
  Mitsubishi D10V relocs.
3511
  This is a 10-bit reloc with the right 2 bits assumed to be 0.
3512
ENUM
3513
  BFD_RELOC_D10V_10_PCREL_L
3514
ENUMDOC
3515
  Mitsubishi D10V relocs.
3516
  This is a 10-bit reloc with the right 2 bits assumed to be 0.  This
3517
  is the same as the previous reloc except it is in the left
3518
  container, i.e., shifted left 15 bits.
3519
ENUM
3520
  BFD_RELOC_D10V_18
3521
ENUMDOC
3522
  This is an 18-bit reloc with the right 2 bits assumed to be 0.
3523
ENUM
3524
  BFD_RELOC_D10V_18_PCREL
3525
ENUMDOC
3526
  This is an 18-bit reloc with the right 2 bits assumed to be 0.
3527
3528
ENUM
3529
  BFD_RELOC_D30V_6
3530
ENUMDOC
3531
  Mitsubishi D30V relocs.
3532
  This is a 6-bit absolute reloc.
3533
ENUM
3534
  BFD_RELOC_D30V_9_PCREL
3535
ENUMDOC
3536
  This is a 6-bit pc-relative reloc with the right 3 bits assumed to
3537
  be 0.
3538
ENUM
3539
  BFD_RELOC_D30V_9_PCREL_R
3540
ENUMDOC
3541
  This is a 6-bit pc-relative reloc with the right 3 bits assumed to
3542
  be 0.  Same as the previous reloc but on the right side of the
3543
  container.
3544
ENUM
3545
  BFD_RELOC_D30V_15
3546
ENUMDOC
3547
  This is a 12-bit absolute reloc with the right 3 bitsassumed to
3548
  be 0.
3549
ENUM
3550
  BFD_RELOC_D30V_15_PCREL
3551
ENUMDOC
3552
  This is a 12-bit pc-relative reloc with the right 3 bits assumed to
3553
  be 0.
3554
ENUM
3555
  BFD_RELOC_D30V_15_PCREL_R
3556
ENUMDOC
3557
  This is a 12-bit pc-relative reloc with the right 3 bits assumed to
3558
  be 0.  Same as the previous reloc but on the right side of the
3559
  container.
3560
ENUM
3561
  BFD_RELOC_D30V_21
3562
ENUMDOC
3563
  This is an 18-bit absolute reloc with the right 3 bits assumed to
3564
  be 0.
3565
ENUM
3566
  BFD_RELOC_D30V_21_PCREL
3567
ENUMDOC
3568
  This is an 18-bit pc-relative reloc with the right 3 bits assumed to
3569
  be 0.
3570
ENUM
3571
  BFD_RELOC_D30V_21_PCREL_R
3572
ENUMDOC
3573
  This is an 18-bit pc-relative reloc with the right 3 bits assumed to
3574
  be 0.  Same as the previous reloc but on the right side of the
3575
  container.
3576
ENUM
3577
  BFD_RELOC_D30V_32
3578
ENUMDOC
3579
  This is a 32-bit absolute reloc.
3580
ENUM
3581
  BFD_RELOC_D30V_32_PCREL
3582
ENUMDOC
3583
  This is a 32-bit pc-relative reloc.
3584
3585
ENUM
3586
  BFD_RELOC_DLX_HI16_S
3587
ENUMX
3588
  BFD_RELOC_DLX_LO16
3589
ENUMX
3590
  BFD_RELOC_DLX_JMP26
3591
ENUMDOC
3592
  DLX relocs.
3593
3594
ENUM
3595
  BFD_RELOC_M32C_HI8
3596
ENUMX
3597
  BFD_RELOC_M32C_RL_JUMP
3598
ENUMX
3599
  BFD_RELOC_M32C_RL_1ADDR
3600
ENUMX
3601
  BFD_RELOC_M32C_RL_2ADDR
3602
ENUMDOC
3603
  Renesas M16C/M32C Relocations.
3604
3605
ENUM
3606
  BFD_RELOC_M32R_24
3607
ENUMDOC
3608
  Renesas M32R (formerly Mitsubishi M32R) relocs.
3609
  This is a 24 bit absolute address.
3610
ENUM
3611
  BFD_RELOC_M32R_10_PCREL
3612
ENUMDOC
3613
  This is a 10-bit pc-relative reloc with the right 2 bits assumed to
3614
  be 0.
3615
ENUM
3616
  BFD_RELOC_M32R_18_PCREL
3617
ENUMDOC
3618
  This is an 18-bit reloc with the right 2 bits assumed to be 0.
3619
ENUM
3620
  BFD_RELOC_M32R_26_PCREL
3621
ENUMDOC
3622
  This is a 26-bit reloc with the right 2 bits assumed to be 0.
3623
ENUM
3624
  BFD_RELOC_M32R_HI16_ULO
3625
ENUMDOC
3626
  This is a 16-bit reloc containing the high 16 bits of an address
3627
  used when the lower 16 bits are treated as unsigned.
3628
ENUM
3629
  BFD_RELOC_M32R_HI16_SLO
3630
ENUMDOC
3631
  This is a 16-bit reloc containing the high 16 bits of an address
3632
  used when the lower 16 bits are treated as signed.
3633
ENUM
3634
  BFD_RELOC_M32R_LO16
3635
ENUMDOC
3636
  This is a 16-bit reloc containing the lower 16 bits of an address.
3637
ENUM
3638
  BFD_RELOC_M32R_SDA16
3639
ENUMDOC
3640
  This is a 16-bit reloc containing the small data area offset for use
3641
  in add3, load, and store instructions.
3642
ENUM
3643
  BFD_RELOC_M32R_GOT24
3644
ENUMX
3645
  BFD_RELOC_M32R_26_PLTREL
3646
ENUMX
3647
  BFD_RELOC_M32R_GOTOFF
3648
ENUMX
3649
  BFD_RELOC_M32R_GOTPC24
3650
ENUMX
3651
  BFD_RELOC_M32R_GOT16_HI_ULO
3652
ENUMX
3653
  BFD_RELOC_M32R_GOT16_HI_SLO
3654
ENUMX
3655
  BFD_RELOC_M32R_GOT16_LO
3656
ENUMX
3657
  BFD_RELOC_M32R_GOTPC_HI_ULO
3658
ENUMX
3659
  BFD_RELOC_M32R_GOTPC_HI_SLO
3660
ENUMX
3661
  BFD_RELOC_M32R_GOTPC_LO
3662
ENUMDOC
3663
  For PIC.
3664
3665
3666
ENUM
3667
  BFD_RELOC_NDS32_20
3668
ENUMDOC
3669
  NDS32 relocs.
3670
  This is a 20 bit absolute address.
3671
ENUM
3672
  BFD_RELOC_NDS32_9_PCREL
3673
ENUMDOC
3674
  This is a 9-bit pc-relative reloc with the right 1 bit assumed to
3675
  be 0.
3676
ENUM
3677
  BFD_RELOC_NDS32_WORD_9_PCREL
3678
ENUMDOC
3679
  This is a 9-bit pc-relative reloc with the right 1 bit assumed to
3680
  be 0.
3681
ENUM
3682
  BFD_RELOC_NDS32_15_PCREL
3683
ENUMDOC
3684
  This is an 15-bit reloc with the right 1 bit assumed to be 0.
3685
ENUM
3686
  BFD_RELOC_NDS32_17_PCREL
3687
ENUMDOC
3688
  This is an 17-bit reloc with the right 1 bit assumed to be 0.
3689
ENUM
3690
  BFD_RELOC_NDS32_25_PCREL
3691
ENUMDOC
3692
  This is a 25-bit reloc with the right 1 bit assumed to be 0.
3693
ENUM
3694
  BFD_RELOC_NDS32_HI20
3695
ENUMDOC
3696
  This is a 20-bit reloc containing the high 20 bits of an address
3697
  used with the lower 12 bits.
3698
ENUM
3699
  BFD_RELOC_NDS32_LO12S3
3700
ENUMDOC
3701
  This is a 12-bit reloc containing the lower 12 bits of an address
3702
  then shift right by 3.  This is used with ldi,sdi.
3703
ENUM
3704
  BFD_RELOC_NDS32_LO12S2
3705
ENUMDOC
3706
  This is a 12-bit reloc containing the lower 12 bits of an address
3707
  then shift left by 2.  This is used with lwi,swi.
3708
ENUM
3709
  BFD_RELOC_NDS32_LO12S1
3710
ENUMDOC
3711
  This is a 12-bit reloc containing the lower 12 bits of an address
3712
  then shift left by 1.  This is used with lhi,shi.
3713
ENUM
3714
  BFD_RELOC_NDS32_LO12S0
3715
ENUMDOC
3716
  This is a 12-bit reloc containing the lower 12 bits of an address
3717
  then shift left by 0.  This is used with lbisbi.
3718
ENUM
3719
  BFD_RELOC_NDS32_LO12S0_ORI
3720
ENUMDOC
3721
  This is a 12-bit reloc containing the lower 12 bits of an address
3722
  then shift left by 0.  This is only used with branch relaxations.
3723
ENUM
3724
  BFD_RELOC_NDS32_SDA15S3
3725
ENUMDOC
3726
  This is a 15-bit reloc containing the small data area 18-bit signed
3727
  offset and shift left by 3 for use in ldi, sdi.
3728
ENUM
3729
  BFD_RELOC_NDS32_SDA15S2
3730
ENUMDOC
3731
  This is a 15-bit reloc containing the small data area 17-bit signed
3732
  offset and shift left by 2 for use in lwi, swi.
3733
ENUM
3734
  BFD_RELOC_NDS32_SDA15S1
3735
ENUMDOC
3736
  This is a 15-bit reloc containing the small data area 16-bit signed
3737
  offset and shift left by 1 for use in lhi, shi.
3738
ENUM
3739
  BFD_RELOC_NDS32_SDA15S0
3740
ENUMDOC
3741
  This is a 15-bit reloc containing the small data area 15-bit signed
3742
  offset and shift left by 0 for use in lbi, sbi.
3743
ENUM
3744
  BFD_RELOC_NDS32_SDA16S3
3745
ENUMDOC
3746
  This is a 16-bit reloc containing the small data area 16-bit signed
3747
  offset and shift left by 3.
3748
ENUM
3749
  BFD_RELOC_NDS32_SDA17S2
3750
ENUMDOC
3751
  This is a 17-bit reloc containing the small data area 17-bit signed
3752
  offset and shift left by 2 for use in lwi.gp, swi.gp.
3753
ENUM
3754
  BFD_RELOC_NDS32_SDA18S1
3755
ENUMDOC
3756
  This is a 18-bit reloc containing the small data area 18-bit signed
3757
  offset and shift left by 1 for use in lhi.gp, shi.gp.
3758
ENUM
3759
  BFD_RELOC_NDS32_SDA19S0
3760
ENUMDOC
3761
  This is a 19-bit reloc containing the small data area 19-bit signed
3762
  offset and shift left by 0 for use in lbi.gp, sbi.gp.
3763
ENUM
3764
  BFD_RELOC_NDS32_GOT20
3765
ENUMX
3766
  BFD_RELOC_NDS32_9_PLTREL
3767
ENUMX
3768
  BFD_RELOC_NDS32_25_PLTREL
3769
ENUMX
3770
  BFD_RELOC_NDS32_GOTOFF
3771
ENUMX
3772
  BFD_RELOC_NDS32_GOTOFF_HI20
3773
ENUMX
3774
  BFD_RELOC_NDS32_GOTOFF_LO12
3775
ENUMX
3776
  BFD_RELOC_NDS32_GOTPC20
3777
ENUMX
3778
  BFD_RELOC_NDS32_GOT_HI20
3779
ENUMX
3780
  BFD_RELOC_NDS32_GOT_LO12
3781
ENUMX
3782
  BFD_RELOC_NDS32_GOTPC_HI20
3783
ENUMX
3784
  BFD_RELOC_NDS32_GOTPC_LO12
3785
ENUMDOC
3786
  For PIC.
3787
ENUM
3788
  BFD_RELOC_NDS32_INSN16
3789
ENUMX
3790
  BFD_RELOC_NDS32_LABEL
3791
ENUMX
3792
  BFD_RELOC_NDS32_LONGCALL1
3793
ENUMX
3794
  BFD_RELOC_NDS32_LONGCALL2
3795
ENUMX
3796
  BFD_RELOC_NDS32_LONGCALL3
3797
ENUMX
3798
  BFD_RELOC_NDS32_LONGJUMP1
3799
ENUMX
3800
  BFD_RELOC_NDS32_LONGJUMP2
3801
ENUMX
3802
  BFD_RELOC_NDS32_LONGJUMP3
3803
ENUMX
3804
  BFD_RELOC_NDS32_LOADSTORE
3805
ENUMX
3806
  BFD_RELOC_NDS32_9_FIXED
3807
ENUMX
3808
  BFD_RELOC_NDS32_15_FIXED
3809
ENUMX
3810
  BFD_RELOC_NDS32_17_FIXED
3811
ENUMX
3812
  BFD_RELOC_NDS32_25_FIXED
3813
ENUMX
3814
  BFD_RELOC_NDS32_LONGCALL4
3815
ENUMX
3816
  BFD_RELOC_NDS32_LONGCALL5
3817
ENUMX
3818
  BFD_RELOC_NDS32_LONGCALL6
3819
ENUMX
3820
  BFD_RELOC_NDS32_LONGJUMP4
3821
ENUMX
3822
  BFD_RELOC_NDS32_LONGJUMP5
3823
ENUMX
3824
  BFD_RELOC_NDS32_LONGJUMP6
3825
ENUMX
3826
  BFD_RELOC_NDS32_LONGJUMP7
3827
ENUMDOC
3828
  For relax.
3829
ENUM
3830
  BFD_RELOC_NDS32_PLTREL_HI20
3831
ENUMX
3832
  BFD_RELOC_NDS32_PLTREL_LO12
3833
ENUMX
3834
  BFD_RELOC_NDS32_PLT_GOTREL_HI20
3835
ENUMX
3836
  BFD_RELOC_NDS32_PLT_GOTREL_LO12
3837
ENUMDOC
3838
  For PIC.
3839
ENUM
3840
  BFD_RELOC_NDS32_SDA12S2_DP
3841
ENUMX
3842
  BFD_RELOC_NDS32_SDA12S2_SP
3843
ENUMX
3844
  BFD_RELOC_NDS32_LO12S2_DP
3845
ENUMX
3846
  BFD_RELOC_NDS32_LO12S2_SP
3847
ENUMDOC
3848
  For floating point.
3849
ENUM
3850
  BFD_RELOC_NDS32_DWARF2_OP1
3851
ENUMX
3852
  BFD_RELOC_NDS32_DWARF2_OP2
3853
ENUMX
3854
  BFD_RELOC_NDS32_DWARF2_LEB
3855
ENUMDOC
3856
  For dwarf2 debug_line.
3857
ENUM
3858
  BFD_RELOC_NDS32_UPDATE_TA
3859
ENUMDOC
3860
  For eliminating 16-bit instructions.
3861
ENUM
3862
  BFD_RELOC_NDS32_PLT_GOTREL_LO20
3863
ENUMX
3864
  BFD_RELOC_NDS32_PLT_GOTREL_LO15
3865
ENUMX
3866
  BFD_RELOC_NDS32_PLT_GOTREL_LO19
3867
ENUMX
3868
  BFD_RELOC_NDS32_GOT_LO15
3869
ENUMX
3870
  BFD_RELOC_NDS32_GOT_LO19
3871
ENUMX
3872
  BFD_RELOC_NDS32_GOTOFF_LO15
3873
ENUMX
3874
  BFD_RELOC_NDS32_GOTOFF_LO19
3875
ENUMX
3876
  BFD_RELOC_NDS32_GOT15S2
3877
ENUMX
3878
  BFD_RELOC_NDS32_GOT17S2
3879
ENUMDOC
3880
  For PIC object relaxation.
3881
ENUM
3882
  BFD_RELOC_NDS32_5
3883
ENUMDOC
3884
  NDS32 relocs.
3885
  This is a 5 bit absolute address.
3886
ENUM
3887
  BFD_RELOC_NDS32_10_UPCREL
3888
ENUMDOC
3889
  This is a 10-bit unsigned pc-relative reloc with the right 1 bit
3890
  assumed to be 0.
3891
ENUM
3892
  BFD_RELOC_NDS32_SDA_FP7U2_RELA
3893
ENUMDOC
3894
  If fp were omitted, fp can used as another gp.
3895
ENUM
3896
  BFD_RELOC_NDS32_RELAX_ENTRY
3897
ENUMX
3898
  BFD_RELOC_NDS32_GOT_SUFF
3899
ENUMX
3900
  BFD_RELOC_NDS32_GOTOFF_SUFF
3901
ENUMX
3902
  BFD_RELOC_NDS32_PLT_GOT_SUFF
3903
ENUMX
3904
  BFD_RELOC_NDS32_MULCALL_SUFF
3905
ENUMX
3906
  BFD_RELOC_NDS32_PTR
3907
ENUMX
3908
  BFD_RELOC_NDS32_PTR_COUNT
3909
ENUMX
3910
  BFD_RELOC_NDS32_PTR_RESOLVED
3911
ENUMX
3912
  BFD_RELOC_NDS32_PLTBLOCK
3913
ENUMX
3914
  BFD_RELOC_NDS32_RELAX_REGION_BEGIN
3915
ENUMX
3916
  BFD_RELOC_NDS32_RELAX_REGION_END
3917
ENUMX
3918
  BFD_RELOC_NDS32_MINUEND
3919
ENUMX
3920
  BFD_RELOC_NDS32_SUBTRAHEND
3921
ENUMX
3922
  BFD_RELOC_NDS32_DIFF8
3923
ENUMX
3924
  BFD_RELOC_NDS32_DIFF16
3925
ENUMX
3926
  BFD_RELOC_NDS32_DIFF32
3927
ENUMX
3928
  BFD_RELOC_NDS32_DIFF_ULEB128
3929
ENUMX
3930
  BFD_RELOC_NDS32_EMPTY
3931
ENUMDOC
3932
  Relaxation relative relocation types.
3933
ENUM
3934
  BFD_RELOC_NDS32_25_ABS
3935
ENUMDOC
3936
  This is a 25 bit absolute address.
3937
ENUM
3938
  BFD_RELOC_NDS32_DATA
3939
ENUMX
3940
  BFD_RELOC_NDS32_TRAN
3941
ENUMX
3942
  BFD_RELOC_NDS32_17IFC_PCREL
3943
ENUMX
3944
  BFD_RELOC_NDS32_10IFCU_PCREL
3945
ENUMDOC
3946
  For ex9 and ifc using.
3947
ENUM
3948
  BFD_RELOC_NDS32_TPOFF
3949
ENUMX
3950
  BFD_RELOC_NDS32_GOTTPOFF
3951
ENUMX
3952
  BFD_RELOC_NDS32_TLS_LE_HI20
3953
ENUMX
3954
  BFD_RELOC_NDS32_TLS_LE_LO12
3955
ENUMX
3956
  BFD_RELOC_NDS32_TLS_LE_20
3957
ENUMX
3958
  BFD_RELOC_NDS32_TLS_LE_15S0
3959
ENUMX
3960
  BFD_RELOC_NDS32_TLS_LE_15S1
3961
ENUMX
3962
  BFD_RELOC_NDS32_TLS_LE_15S2
3963
ENUMX
3964
  BFD_RELOC_NDS32_TLS_LE_ADD
3965
ENUMX
3966
  BFD_RELOC_NDS32_TLS_LE_LS
3967
ENUMX
3968
  BFD_RELOC_NDS32_TLS_IE_HI20
3969
ENUMX
3970
  BFD_RELOC_NDS32_TLS_IE_LO12
3971
ENUMX
3972
  BFD_RELOC_NDS32_TLS_IE_LO12S2
3973
ENUMX
3974
  BFD_RELOC_NDS32_TLS_IEGP_HI20
3975
ENUMX
3976
  BFD_RELOC_NDS32_TLS_IEGP_LO12
3977
ENUMX
3978
  BFD_RELOC_NDS32_TLS_IEGP_LO12S2
3979
ENUMX
3980
  BFD_RELOC_NDS32_TLS_IEGP_LW
3981
ENUMX
3982
  BFD_RELOC_NDS32_TLS_DESC
3983
ENUMX
3984
  BFD_RELOC_NDS32_TLS_DESC_HI20
3985
ENUMX
3986
  BFD_RELOC_NDS32_TLS_DESC_LO12
3987
ENUMX
3988
  BFD_RELOC_NDS32_TLS_DESC_20
3989
ENUMX
3990
  BFD_RELOC_NDS32_TLS_DESC_SDA17S2
3991
ENUMX
3992
  BFD_RELOC_NDS32_TLS_DESC_ADD
3993
ENUMX
3994
  BFD_RELOC_NDS32_TLS_DESC_FUNC
3995
ENUMX
3996
  BFD_RELOC_NDS32_TLS_DESC_CALL
3997
ENUMX
3998
  BFD_RELOC_NDS32_TLS_DESC_MEM
3999
ENUMX
4000
  BFD_RELOC_NDS32_REMOVE
4001
ENUMX
4002
  BFD_RELOC_NDS32_GROUP
4003
ENUMDOC
4004
  For TLS.
4005
ENUM
4006
  BFD_RELOC_NDS32_LSI
4007
ENUMDOC
4008
  For floating load store relaxation.
4009
4010
4011
ENUM
4012
  BFD_RELOC_V850_9_PCREL
4013
ENUMDOC
4014
  This is a 9-bit reloc.
4015
ENUM
4016
  BFD_RELOC_V850_22_PCREL
4017
ENUMDOC
4018
  This is a 22-bit reloc.
4019
4020
ENUM
4021
  BFD_RELOC_V850_SDA_16_16_OFFSET
4022
ENUMDOC
4023
  This is a 16 bit offset from the short data area pointer.
4024
ENUM
4025
  BFD_RELOC_V850_SDA_15_16_OFFSET
4026
ENUMDOC
4027
  This is a 16 bit offset (of which only 15 bits are used) from the
4028
  short data area pointer.
4029
ENUM
4030
  BFD_RELOC_V850_ZDA_16_16_OFFSET
4031
ENUMDOC
4032
  This is a 16 bit offset from the zero data area pointer.
4033
ENUM
4034
  BFD_RELOC_V850_ZDA_15_16_OFFSET
4035
ENUMDOC
4036
  This is a 16 bit offset (of which only 15 bits are used) from the
4037
  zero data area pointer.
4038
ENUM
4039
  BFD_RELOC_V850_TDA_6_8_OFFSET
4040
ENUMDOC
4041
  This is an 8 bit offset (of which only 6 bits are used) from the
4042
  tiny data area pointer.
4043
ENUM
4044
  BFD_RELOC_V850_TDA_7_8_OFFSET
4045
ENUMDOC
4046
  This is an 8bit offset (of which only 7 bits are used) from the tiny
4047
  data area pointer.
4048
ENUM
4049
  BFD_RELOC_V850_TDA_7_7_OFFSET
4050
ENUMDOC
4051
  This is a 7 bit offset from the tiny data area pointer.
4052
ENUM
4053
  BFD_RELOC_V850_TDA_16_16_OFFSET
4054
ENUMDOC
4055
  This is a 16 bit offset from the tiny data area pointer.
4056
ENUM
4057
  BFD_RELOC_V850_TDA_4_5_OFFSET
4058
ENUMDOC
4059
  This is a 5 bit offset (of which only 4 bits are used) from the tiny
4060
  data area pointer.
4061
ENUM
4062
  BFD_RELOC_V850_TDA_4_4_OFFSET
4063
ENUMDOC
4064
  This is a 4 bit offset from the tiny data area pointer.
4065
ENUM
4066
  BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
4067
ENUMDOC
4068
  This is a 16 bit offset from the short data area pointer, with the
4069
  bits placed non-contiguously in the instruction.
4070
ENUM
4071
  BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
4072
ENUMDOC
4073
  This is a 16 bit offset from the zero data area pointer, with the
4074
  bits placed non-contiguously in the instruction.
4075
ENUM
4076
  BFD_RELOC_V850_CALLT_6_7_OFFSET
4077
ENUMDOC
4078
  This is a 6 bit offset from the call table base pointer.
4079
ENUM
4080
  BFD_RELOC_V850_CALLT_16_16_OFFSET
4081
ENUMDOC
4082
  This is a 16 bit offset from the call table base pointer.
4083
ENUM
4084
  BFD_RELOC_V850_LONGCALL
4085
ENUMDOC
4086
  Used for relaxing indirect function calls.
4087
ENUM
4088
  BFD_RELOC_V850_LONGJUMP
4089
ENUMDOC
4090
  Used for relaxing indirect jumps.
4091
ENUM
4092
  BFD_RELOC_V850_ALIGN
4093
ENUMDOC
4094
  Used to maintain alignment whilst relaxing.
4095
ENUM
4096
  BFD_RELOC_V850_LO16_SPLIT_OFFSET
4097
ENUMDOC
4098
  This is a variation of BFD_RELOC_LO16 that can be used in v850e
4099
  ld.bu instructions.
4100
ENUM
4101
  BFD_RELOC_V850_16_PCREL
4102
ENUMDOC
4103
  This is a 16-bit reloc.
4104
ENUM
4105
  BFD_RELOC_V850_17_PCREL
4106
ENUMDOC
4107
  This is a 17-bit reloc.
4108
ENUM
4109
  BFD_RELOC_V850_23
4110
ENUMDOC
4111
  This is a 23-bit reloc.
4112
ENUM
4113
  BFD_RELOC_V850_32_PCREL
4114
ENUMDOC
4115
  This is a 32-bit reloc.
4116
ENUM
4117
  BFD_RELOC_V850_32_ABS
4118
ENUMDOC
4119
  This is a 32-bit reloc.
4120
ENUM
4121
  BFD_RELOC_V850_16_SPLIT_OFFSET
4122
ENUMDOC
4123
  This is a 16-bit reloc.
4124
ENUM
4125
  BFD_RELOC_V850_16_S1
4126
ENUMDOC
4127
  This is a 16-bit reloc.
4128
ENUM
4129
  BFD_RELOC_V850_LO16_S1
4130
ENUMDOC
4131
  Low 16 bits.  16 bit shifted by 1.
4132
ENUM
4133
  BFD_RELOC_V850_CALLT_15_16_OFFSET
4134
ENUMDOC
4135
  This is a 16 bit offset from the call table base pointer.
4136
ENUM
4137
  BFD_RELOC_V850_16_GOT
4138
ENUMX
4139
  BFD_RELOC_V850_32_GOT
4140
ENUMX
4141
  BFD_RELOC_V850_22_PLT_PCREL
4142
ENUMX
4143
  BFD_RELOC_V850_32_PLT_PCREL
4144
ENUMDOC
4145
  DSO relocations.
4146
ENUM
4147
  BFD_RELOC_V850_CODE
4148
ENUMDOC
4149
  Start code.
4150
ENUM
4151
  BFD_RELOC_V850_DATA
4152
ENUMDOC
4153
  Start data in text.
4154
4155
ENUM
4156
  BFD_RELOC_TIC30_LDP
4157
ENUMDOC
4158
  This is a 8bit DP reloc for the tms320c30, where the most
4159
  significant 8 bits of a 24 bit word are placed into the least
4160
  significant 8 bits of the opcode.
4161
4162
ENUM
4163
  BFD_RELOC_TIC54X_PARTLS7
4164
ENUMDOC
4165
  This is a 7bit reloc for the tms320c54x, where the least
4166
  significant 7 bits of a 16 bit word are placed into the least
4167
  significant 7 bits of the opcode.
4168
4169
ENUM
4170
  BFD_RELOC_TIC54X_PARTMS9
4171
ENUMDOC
4172
  This is a 9bit DP reloc for the tms320c54x, where the most
4173
  significant 9 bits of a 16 bit word are placed into the least
4174
  significant 9 bits of the opcode.
4175
4176
ENUM
4177
  BFD_RELOC_TIC54X_23
4178
ENUMDOC
4179
  This is an extended address 23-bit reloc for the tms320c54x.
4180
4181
ENUM
4182
  BFD_RELOC_TIC54X_16_OF_23
4183
ENUMDOC
4184
  This is a 16-bit reloc for the tms320c54x, where the least
4185
  significant 16 bits of a 23-bit extended address are placed into
4186
  the opcode.
4187
4188
ENUM
4189
  BFD_RELOC_TIC54X_MS7_OF_23
4190
ENUMDOC
4191
  This is a reloc for the tms320c54x, where the most
4192
  significant 7 bits of a 23-bit extended address are placed into
4193
  the opcode.
4194
4195
ENUM
4196
  BFD_RELOC_C6000_PCR_S21
4197
ENUMX
4198
  BFD_RELOC_C6000_PCR_S12
4199
ENUMX
4200
  BFD_RELOC_C6000_PCR_S10
4201
ENUMX
4202
  BFD_RELOC_C6000_PCR_S7
4203
ENUMX
4204
  BFD_RELOC_C6000_ABS_S16
4205
ENUMX
4206
  BFD_RELOC_C6000_ABS_L16
4207
ENUMX
4208
  BFD_RELOC_C6000_ABS_H16
4209
ENUMX
4210
  BFD_RELOC_C6000_SBR_U15_B
4211
ENUMX
4212
  BFD_RELOC_C6000_SBR_U15_H
4213
ENUMX
4214
  BFD_RELOC_C6000_SBR_U15_W
4215
ENUMX
4216
  BFD_RELOC_C6000_SBR_S16
4217
ENUMX
4218
  BFD_RELOC_C6000_SBR_L16_B
4219
ENUMX
4220
  BFD_RELOC_C6000_SBR_L16_H
4221
ENUMX
4222
  BFD_RELOC_C6000_SBR_L16_W
4223
ENUMX
4224
  BFD_RELOC_C6000_SBR_H16_B
4225
ENUMX
4226
  BFD_RELOC_C6000_SBR_H16_H
4227
ENUMX
4228
  BFD_RELOC_C6000_SBR_H16_W
4229
ENUMX
4230
  BFD_RELOC_C6000_SBR_GOT_U15_W
4231
ENUMX
4232
  BFD_RELOC_C6000_SBR_GOT_L16_W
4233
ENUMX
4234
  BFD_RELOC_C6000_SBR_GOT_H16_W
4235
ENUMX
4236
  BFD_RELOC_C6000_DSBT_INDEX
4237
ENUMX
4238
  BFD_RELOC_C6000_PREL31
4239
ENUMX
4240
  BFD_RELOC_C6000_EHTYPE
4241
ENUMX
4242
  BFD_RELOC_C6000_PCR_H16
4243
ENUMX
4244
  BFD_RELOC_C6000_PCR_L16
4245
ENUMX
4246
  BFD_RELOC_C6000_ALIGN
4247
ENUMX
4248
  BFD_RELOC_C6000_FPHEAD
4249
ENUMX
4250
  BFD_RELOC_C6000_NOCMP
4251
ENUMDOC
4252
  TMS320C6000 relocations.
4253
4254
ENUM
4255
  BFD_RELOC_FR30_48
4256
ENUMDOC
4257
  This is a 48 bit reloc for the FR30 that stores 32 bits.
4258
ENUM
4259
  BFD_RELOC_FR30_20
4260
ENUMDOC
4261
  This is a 32 bit reloc for the FR30 that stores 20 bits split up
4262
  into two sections.
4263
ENUM
4264
  BFD_RELOC_FR30_6_IN_4
4265
ENUMDOC
4266
  This is a 16 bit reloc for the FR30 that stores a 6 bit word offset
4267
  in 4 bits.
4268
ENUM
4269
  BFD_RELOC_FR30_8_IN_8
4270
ENUMDOC
4271
  This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
4272
  into 8 bits.
4273
ENUM
4274
  BFD_RELOC_FR30_9_IN_8
4275
ENUMDOC
4276
  This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
4277
  into 8 bits.
4278
ENUM
4279
  BFD_RELOC_FR30_10_IN_8
4280
ENUMDOC
4281
  This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
4282
  into 8 bits.
4283
ENUM
4284
  BFD_RELOC_FR30_9_PCREL
4285
ENUMDOC
4286
  This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
4287
  short offset into 8 bits.
4288
ENUM
4289
  BFD_RELOC_FR30_12_PCREL
4290
ENUMDOC
4291
  This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
4292
  short offset into 11 bits.
4293
4294
ENUM
4295
  BFD_RELOC_MCORE_PCREL_IMM8BY4
4296
ENUMX
4297
  BFD_RELOC_MCORE_PCREL_IMM11BY2
4298
ENUMX
4299
  BFD_RELOC_MCORE_PCREL_IMM4BY2
4300
ENUMX
4301
  BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
4302
ENUMDOC
4303
  Motorola Mcore relocations.
4304
4305
ENUM
4306
  BFD_RELOC_MEP_8
4307
ENUMX
4308
  BFD_RELOC_MEP_16
4309
ENUMX
4310
  BFD_RELOC_MEP_32
4311
ENUMX
4312
  BFD_RELOC_MEP_PCREL8A2
4313
ENUMX
4314
  BFD_RELOC_MEP_PCREL12A2
4315
ENUMX
4316
  BFD_RELOC_MEP_PCREL17A2
4317
ENUMX
4318
  BFD_RELOC_MEP_PCREL24A2
4319
ENUMX
4320
  BFD_RELOC_MEP_PCABS24A2
4321
ENUMX
4322
  BFD_RELOC_MEP_LOW16
4323
ENUMX
4324
  BFD_RELOC_MEP_HI16U
4325
ENUMX
4326
  BFD_RELOC_MEP_HI16S
4327
ENUMX
4328
  BFD_RELOC_MEP_GPREL
4329
ENUMX
4330
  BFD_RELOC_MEP_TPREL
4331
ENUMX
4332
  BFD_RELOC_MEP_TPREL7
4333
ENUMX
4334
  BFD_RELOC_MEP_TPREL7A2
4335
ENUMX
4336
  BFD_RELOC_MEP_TPREL7A4
4337
ENUMX
4338
  BFD_RELOC_MEP_UIMM24
4339
ENUMX
4340
  BFD_RELOC_MEP_ADDR24A4
4341
ENUMX
4342
  BFD_RELOC_MEP_GNU_VTINHERIT
4343
ENUMX
4344
  BFD_RELOC_MEP_GNU_VTENTRY
4345
ENUMDOC
4346
  Toshiba Media Processor Relocations.
4347
4348
ENUM
4349
  BFD_RELOC_METAG_HIADDR16
4350
ENUMX
4351
  BFD_RELOC_METAG_LOADDR16
4352
ENUMX
4353
  BFD_RELOC_METAG_RELBRANCH
4354
ENUMX
4355
  BFD_RELOC_METAG_GETSETOFF
4356
ENUMX
4357
  BFD_RELOC_METAG_HIOG
4358
ENUMX
4359
  BFD_RELOC_METAG_LOOG
4360
ENUMX
4361
  BFD_RELOC_METAG_REL8
4362
ENUMX
4363
  BFD_RELOC_METAG_REL16
4364
ENUMX
4365
  BFD_RELOC_METAG_GETSET_GOTOFF
4366
ENUMX
4367
  BFD_RELOC_METAG_GETSET_GOT
4368
ENUMX
4369
  BFD_RELOC_METAG_HI16_GOTPC
4370
ENUMX
4371
  BFD_RELOC_METAG_LO16_GOTPC
4372
ENUMX
4373
  BFD_RELOC_METAG_HI16_PLT
4374
ENUMX
4375
  BFD_RELOC_METAG_LO16_PLT
4376
ENUMX
4377
  BFD_RELOC_METAG_RELBRANCH_PLT
4378
ENUMX
4379
  BFD_RELOC_METAG_PLT
4380
ENUMX
4381
  BFD_RELOC_METAG_TLS_GD
4382
ENUMX
4383
  BFD_RELOC_METAG_TLS_LDM
4384
ENUMX
4385
  BFD_RELOC_METAG_TLS_LDO_HI16
4386
ENUMX
4387
  BFD_RELOC_METAG_TLS_LDO_LO16
4388
ENUMX
4389
  BFD_RELOC_METAG_TLS_LDO
4390
ENUMX
4391
  BFD_RELOC_METAG_TLS_IE
4392
ENUMX
4393
  BFD_RELOC_METAG_TLS_IENONPIC
4394
ENUMX
4395
  BFD_RELOC_METAG_TLS_IENONPIC_HI16
4396
ENUMX
4397
  BFD_RELOC_METAG_TLS_IENONPIC_LO16
4398
ENUMX
4399
  BFD_RELOC_METAG_TLS_TPOFF
4400
ENUMX
4401
  BFD_RELOC_METAG_TLS_DTPMOD
4402
ENUMX
4403
  BFD_RELOC_METAG_TLS_DTPOFF
4404
ENUMX
4405
  BFD_RELOC_METAG_TLS_LE
4406
ENUMX
4407
  BFD_RELOC_METAG_TLS_LE_HI16
4408
ENUMX
4409
  BFD_RELOC_METAG_TLS_LE_LO16
4410
ENUMDOC
4411
  Imagination Technologies Meta relocations.
4412
4413
ENUM
4414
  BFD_RELOC_MMIX_GETA
4415
ENUMX
4416
  BFD_RELOC_MMIX_GETA_1
4417
ENUMX
4418
  BFD_RELOC_MMIX_GETA_2
4419
ENUMX
4420
  BFD_RELOC_MMIX_GETA_3
4421
ENUMDOC
4422
  These are relocations for the GETA instruction.
4423
ENUM
4424
  BFD_RELOC_MMIX_CBRANCH
4425
ENUMX
4426
  BFD_RELOC_MMIX_CBRANCH_J
4427
ENUMX
4428
  BFD_RELOC_MMIX_CBRANCH_1
4429
ENUMX
4430
  BFD_RELOC_MMIX_CBRANCH_2
4431
ENUMX
4432
  BFD_RELOC_MMIX_CBRANCH_3
4433
ENUMDOC
4434
  These are relocations for a conditional branch instruction.
4435
ENUM
4436
  BFD_RELOC_MMIX_PUSHJ
4437
ENUMX
4438
  BFD_RELOC_MMIX_PUSHJ_1
4439
ENUMX
4440
  BFD_RELOC_MMIX_PUSHJ_2
4441
ENUMX
4442
  BFD_RELOC_MMIX_PUSHJ_3
4443
ENUMX
4444
  BFD_RELOC_MMIX_PUSHJ_STUBBABLE
4445
ENUMDOC
4446
  These are relocations for the PUSHJ instruction.
4447
ENUM
4448
  BFD_RELOC_MMIX_JMP
4449
ENUMX
4450
  BFD_RELOC_MMIX_JMP_1
4451
ENUMX
4452
  BFD_RELOC_MMIX_JMP_2
4453
ENUMX
4454
  BFD_RELOC_MMIX_JMP_3
4455
ENUMDOC
4456
  These are relocations for the JMP instruction.
4457
ENUM
4458
  BFD_RELOC_MMIX_ADDR19
4459
ENUMDOC
4460
  This is a relocation for a relative address as in a GETA instruction
4461
  or a branch.
4462
ENUM
4463
  BFD_RELOC_MMIX_ADDR27
4464
ENUMDOC
4465
  This is a relocation for a relative address as in a JMP instruction.
4466
ENUM
4467
  BFD_RELOC_MMIX_REG_OR_BYTE
4468
ENUMDOC
4469
  This is a relocation for an instruction field that may be a general
4470
  register or a value 0..255.
4471
ENUM
4472
  BFD_RELOC_MMIX_REG
4473
ENUMDOC
4474
  This is a relocation for an instruction field that may be a general
4475
  register.
4476
ENUM
4477
  BFD_RELOC_MMIX_BASE_PLUS_OFFSET
4478
ENUMDOC
4479
  This is a relocation for two instruction fields holding a register
4480
  and an offset, the equivalent of the relocation.
4481
ENUM
4482
  BFD_RELOC_MMIX_LOCAL
4483
ENUMDOC
4484
  This relocation is an assertion that the expression is not allocated
4485
  as a global register.  It does not modify contents.
4486
4487
ENUM
4488
  BFD_RELOC_AVR_7_PCREL
4489
ENUMDOC
4490
  This is a 16 bit reloc for the AVR that stores 8 bit pc relative
4491
  short offset into 7 bits.
4492
ENUM
4493
  BFD_RELOC_AVR_13_PCREL
4494
ENUMDOC
4495
  This is a 16 bit reloc for the AVR that stores 13 bit pc relative
4496
  short offset into 12 bits.
4497
ENUM
4498
  BFD_RELOC_AVR_16_PM
4499
ENUMDOC
4500
  This is a 16 bit reloc for the AVR that stores 17 bit value (usually
4501
  program memory address) into 16 bits.
4502
ENUM
4503
  BFD_RELOC_AVR_LO8_LDI
4504
ENUMDOC
4505
  This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4506
  data memory address) into 8 bit immediate value of LDI insn.
4507
ENUM
4508
  BFD_RELOC_AVR_HI8_LDI
4509
ENUMDOC
4510
  This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4511
  of data memory address) into 8 bit immediate value of LDI insn.
4512
ENUM
4513
  BFD_RELOC_AVR_HH8_LDI
4514
ENUMDOC
4515
  This is a 16 bit reloc for the AVR that stores 8 bit value (most
4516
  high 8 bit of program memory address) into 8 bit immediate value of
4517
  LDI insn.
4518
ENUM
4519
  BFD_RELOC_AVR_MS8_LDI
4520
ENUMDOC
4521
  This is a 16 bit reloc for the AVR that stores 8 bit value (most
4522
  high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.
4523
ENUM
4524
  BFD_RELOC_AVR_LO8_LDI_NEG
4525
ENUMDOC
4526
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4527
  (usually data memory address) into 8 bit immediate value of SUBI insn.
4528
ENUM
4529
  BFD_RELOC_AVR_HI8_LDI_NEG
4530
ENUMDOC
4531
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4532
  (high 8 bit of data memory address) into 8 bit immediate value of
4533
  SUBI insn.
4534
ENUM
4535
  BFD_RELOC_AVR_HH8_LDI_NEG
4536
ENUMDOC
4537
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4538
  (most high 8 bit of program memory address) into 8 bit immediate
4539
  value of LDI or SUBI insn.
4540
ENUM
4541
  BFD_RELOC_AVR_MS8_LDI_NEG
4542
ENUMDOC
4543
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4544
  (msb of 32 bit value) into 8 bit immediate value of LDI insn.
4545
ENUM
4546
  BFD_RELOC_AVR_LO8_LDI_PM
4547
ENUMDOC
4548
  This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4549
  command address) into 8 bit immediate value of LDI insn.
4550
ENUM
4551
  BFD_RELOC_AVR_LO8_LDI_GS
4552
ENUMDOC
4553
  This is a 16 bit reloc for the AVR that stores 8 bit value
4554
  (command address) into 8 bit immediate value of LDI insn. If the
4555
  address is beyond the 128k boundary, the linker inserts a jump stub
4556
  for this reloc in the lower 128k.
4557
ENUM
4558
  BFD_RELOC_AVR_HI8_LDI_PM
4559
ENUMDOC
4560
  This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4561
  of command address) into 8 bit immediate value of LDI insn.
4562
ENUM
4563
  BFD_RELOC_AVR_HI8_LDI_GS
4564
ENUMDOC
4565
  This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4566
  of command address) into 8 bit immediate value of LDI insn.  If the
4567
  address is beyond the 128k boundary, the linker inserts a jump stub
4568
  for this reloc below 128k.
4569
ENUM
4570
  BFD_RELOC_AVR_HH8_LDI_PM
4571
ENUMDOC
4572
  This is a 16 bit reloc for the AVR that stores 8 bit value (most
4573
  high 8 bit of command address) into 8 bit immediate value of LDI
4574
  insn.
4575
ENUM
4576
  BFD_RELOC_AVR_LO8_LDI_PM_NEG
4577
ENUMDOC
4578
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4579
  (usually command address) into 8 bit immediate value of SUBI insn.
4580
ENUM
4581
  BFD_RELOC_AVR_HI8_LDI_PM_NEG
4582
ENUMDOC
4583
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4584
  (high 8 bit of 16 bit command address) into 8 bit immediate value
4585
  of SUBI insn.
4586
ENUM
4587
  BFD_RELOC_AVR_HH8_LDI_PM_NEG
4588
ENUMDOC
4589
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4590
  (high 6 bit of 22 bit command address) into 8 bit immediate
4591
  value of SUBI insn.
4592
ENUM
4593
  BFD_RELOC_AVR_CALL
4594
ENUMDOC
4595
  This is a 32 bit reloc for the AVR that stores 23 bit value
4596
  into 22 bits.
4597
ENUM
4598
  BFD_RELOC_AVR_LDI
4599
ENUMDOC
4600
  This is a 16 bit reloc for the AVR that stores all needed bits
4601
  for absolute addressing with ldi with overflow check to linktime.
4602
ENUM
4603
  BFD_RELOC_AVR_6
4604
ENUMDOC
4605
  This is a 6 bit reloc for the AVR that stores offset for ldd/std
4606
  instructions.
4607
ENUM
4608
  BFD_RELOC_AVR_6_ADIW
4609
ENUMDOC
4610
  This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
4611
  instructions.
4612
ENUM
4613
  BFD_RELOC_AVR_8_LO
4614
ENUMDOC
4615
  This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
4616
  in .byte lo8(symbol).
4617
ENUM
4618
  BFD_RELOC_AVR_8_HI
4619
ENUMDOC
4620
  This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
4621
  in .byte hi8(symbol).
4622
ENUM
4623
  BFD_RELOC_AVR_8_HLO
4624
ENUMDOC
4625
  This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
4626
  in .byte hlo8(symbol).
4627
ENUM
4628
  BFD_RELOC_AVR_DIFF8
4629
ENUMX
4630
  BFD_RELOC_AVR_DIFF16
4631
ENUMX
4632
  BFD_RELOC_AVR_DIFF32
4633
ENUMDOC
4634
  AVR relocations to mark the difference of two local symbols.
4635
  These are only needed to support linker relaxation and can be ignored
4636
  when not relaxing.  The field is set to the value of the difference
4637
  assuming no relaxation.  The relocation encodes the position of the
4638
  second symbol so the linker can determine whether to adjust the field
4639
  value.
4640
ENUM
4641
  BFD_RELOC_AVR_LDS_STS_16
4642
ENUMDOC
4643
  This is a 7 bit reloc for the AVR that stores SRAM address for 16bit
4644
  lds and sts instructions supported only tiny core.
4645
ENUM
4646
  BFD_RELOC_AVR_PORT6
4647
ENUMDOC
4648
  This is a 6 bit reloc for the AVR that stores an I/O register
4649
  number for the IN and OUT instructions.
4650
ENUM
4651
  BFD_RELOC_AVR_PORT5
4652
ENUMDOC
4653
  This is a 5 bit reloc for the AVR that stores an I/O register
4654
  number for the SBIC, SBIS, SBI and CBI instructions.
4655
4656
ENUM
4657
  BFD_RELOC_RISCV_HI20
4658
ENUMX
4659
  BFD_RELOC_RISCV_PCREL_HI20
4660
ENUMX
4661
  BFD_RELOC_RISCV_PCREL_LO12_I
4662
ENUMX
4663
  BFD_RELOC_RISCV_PCREL_LO12_S
4664
ENUMX
4665
  BFD_RELOC_RISCV_LO12_I
4666
ENUMX
4667
  BFD_RELOC_RISCV_LO12_S
4668
ENUMX
4669
  BFD_RELOC_RISCV_GPREL12_I
4670
ENUMX
4671
  BFD_RELOC_RISCV_GPREL12_S
4672
ENUMX
4673
  BFD_RELOC_RISCV_TPREL_HI20
4674
ENUMX
4675
  BFD_RELOC_RISCV_TPREL_LO12_I
4676
ENUMX
4677
  BFD_RELOC_RISCV_TPREL_LO12_S
4678
ENUMX
4679
  BFD_RELOC_RISCV_TPREL_ADD
4680
ENUMX
4681
  BFD_RELOC_RISCV_CALL
4682
ENUMX
4683
  BFD_RELOC_RISCV_CALL_PLT
4684
ENUMX
4685
  BFD_RELOC_RISCV_ADD8
4686
ENUMX
4687
  BFD_RELOC_RISCV_ADD16
4688
ENUMX
4689
  BFD_RELOC_RISCV_ADD32
4690
ENUMX
4691
  BFD_RELOC_RISCV_ADD64
4692
ENUMX
4693
  BFD_RELOC_RISCV_SUB8
4694
ENUMX
4695
  BFD_RELOC_RISCV_SUB16
4696
ENUMX
4697
  BFD_RELOC_RISCV_SUB32
4698
ENUMX
4699
  BFD_RELOC_RISCV_SUB64
4700
ENUMX
4701
  BFD_RELOC_RISCV_GOT_HI20
4702
ENUMX
4703
  BFD_RELOC_RISCV_TLS_GOT_HI20
4704
ENUMX
4705
  BFD_RELOC_RISCV_TLS_GD_HI20
4706
ENUMX
4707
  BFD_RELOC_RISCV_JMP
4708
ENUMX
4709
  BFD_RELOC_RISCV_TLS_DTPMOD32
4710
ENUMX
4711
  BFD_RELOC_RISCV_TLS_DTPREL32
4712
ENUMX
4713
  BFD_RELOC_RISCV_TLS_DTPMOD64
4714
ENUMX
4715
  BFD_RELOC_RISCV_TLS_DTPREL64
4716
ENUMX
4717
  BFD_RELOC_RISCV_TLS_TPREL32
4718
ENUMX
4719
  BFD_RELOC_RISCV_TLS_TPREL64
4720
ENUMX
4721
  BFD_RELOC_RISCV_TLSDESC_HI20
4722
ENUMX
4723
  BFD_RELOC_RISCV_TLSDESC_LOAD_LO12
4724
ENUMX
4725
  BFD_RELOC_RISCV_TLSDESC_ADD_LO12
4726
ENUMX
4727
  BFD_RELOC_RISCV_TLSDESC_CALL
4728
ENUMX
4729
  BFD_RELOC_RISCV_ALIGN
4730
ENUMX
4731
  BFD_RELOC_RISCV_RVC_BRANCH
4732
ENUMX
4733
  BFD_RELOC_RISCV_RVC_JUMP
4734
ENUMX
4735
  BFD_RELOC_RISCV_RELAX
4736
ENUMX
4737
  BFD_RELOC_RISCV_CFA
4738
ENUMX
4739
  BFD_RELOC_RISCV_SUB6
4740
ENUMX
4741
  BFD_RELOC_RISCV_SET6
4742
ENUMX
4743
  BFD_RELOC_RISCV_SET8
4744
ENUMX
4745
  BFD_RELOC_RISCV_SET16
4746
ENUMX
4747
  BFD_RELOC_RISCV_SET32
4748
ENUMX
4749
  BFD_RELOC_RISCV_SET_ULEB128
4750
ENUMX
4751
  BFD_RELOC_RISCV_SUB_ULEB128
4752
ENUMDOC
4753
  RISC-V relocations.
4754
4755
ENUM
4756
  BFD_RELOC_RL78_NEG8
4757
ENUMX
4758
  BFD_RELOC_RL78_NEG16
4759
ENUMX
4760
  BFD_RELOC_RL78_NEG24
4761
ENUMX
4762
  BFD_RELOC_RL78_NEG32
4763
ENUMX
4764
  BFD_RELOC_RL78_16_OP
4765
ENUMX
4766
  BFD_RELOC_RL78_24_OP
4767
ENUMX
4768
  BFD_RELOC_RL78_32_OP
4769
ENUMX
4770
  BFD_RELOC_RL78_8U
4771
ENUMX
4772
  BFD_RELOC_RL78_16U
4773
ENUMX
4774
  BFD_RELOC_RL78_24U
4775
ENUMX
4776
  BFD_RELOC_RL78_DIR3U_PCREL
4777
ENUMX
4778
  BFD_RELOC_RL78_DIFF
4779
ENUMX
4780
  BFD_RELOC_RL78_GPRELB
4781
ENUMX
4782
  BFD_RELOC_RL78_GPRELW
4783
ENUMX
4784
  BFD_RELOC_RL78_GPRELL
4785
ENUMX
4786
  BFD_RELOC_RL78_SYM
4787
ENUMX
4788
  BFD_RELOC_RL78_OP_SUBTRACT
4789
ENUMX
4790
  BFD_RELOC_RL78_OP_NEG
4791
ENUMX
4792
  BFD_RELOC_RL78_OP_AND
4793
ENUMX
4794
  BFD_RELOC_RL78_OP_SHRA
4795
ENUMX
4796
  BFD_RELOC_RL78_ABS8
4797
ENUMX
4798
  BFD_RELOC_RL78_ABS16
4799
ENUMX
4800
  BFD_RELOC_RL78_ABS16_REV
4801
ENUMX
4802
  BFD_RELOC_RL78_ABS32
4803
ENUMX
4804
  BFD_RELOC_RL78_ABS32_REV
4805
ENUMX
4806
  BFD_RELOC_RL78_ABS16U
4807
ENUMX
4808
  BFD_RELOC_RL78_ABS16UW
4809
ENUMX
4810
  BFD_RELOC_RL78_ABS16UL
4811
ENUMX
4812
  BFD_RELOC_RL78_RELAX
4813
ENUMX
4814
  BFD_RELOC_RL78_HI16
4815
ENUMX
4816
  BFD_RELOC_RL78_HI8
4817
ENUMX
4818
  BFD_RELOC_RL78_LO16
4819
ENUMX
4820
  BFD_RELOC_RL78_CODE
4821
ENUMX
4822
  BFD_RELOC_RL78_SADDR
4823
ENUMDOC
4824
  Renesas RL78 Relocations.
4825
4826
ENUM
4827
  BFD_RELOC_RX_NEG8
4828
ENUMX
4829
  BFD_RELOC_RX_NEG16
4830
ENUMX
4831
  BFD_RELOC_RX_NEG24
4832
ENUMX
4833
  BFD_RELOC_RX_NEG32
4834
ENUMX
4835
  BFD_RELOC_RX_16_OP
4836
ENUMX
4837
  BFD_RELOC_RX_24_OP
4838
ENUMX
4839
  BFD_RELOC_RX_32_OP
4840
ENUMX
4841
  BFD_RELOC_RX_8U
4842
ENUMX
4843
  BFD_RELOC_RX_16U
4844
ENUMX
4845
  BFD_RELOC_RX_24U
4846
ENUMX
4847
  BFD_RELOC_RX_DIR3U_PCREL
4848
ENUMX
4849
  BFD_RELOC_RX_DIFF
4850
ENUMX
4851
  BFD_RELOC_RX_GPRELB
4852
ENUMX
4853
  BFD_RELOC_RX_GPRELW
4854
ENUMX
4855
  BFD_RELOC_RX_GPRELL
4856
ENUMX
4857
  BFD_RELOC_RX_SYM
4858
ENUMX
4859
  BFD_RELOC_RX_OP_SUBTRACT
4860
ENUMX
4861
  BFD_RELOC_RX_OP_NEG
4862
ENUMX
4863
  BFD_RELOC_RX_ABS8
4864
ENUMX
4865
  BFD_RELOC_RX_ABS16
4866
ENUMX
4867
  BFD_RELOC_RX_ABS16_REV
4868
ENUMX
4869
  BFD_RELOC_RX_ABS32
4870
ENUMX
4871
  BFD_RELOC_RX_ABS32_REV
4872
ENUMX
4873
  BFD_RELOC_RX_ABS16U
4874
ENUMX
4875
  BFD_RELOC_RX_ABS16UW
4876
ENUMX
4877
  BFD_RELOC_RX_ABS16UL
4878
ENUMX
4879
  BFD_RELOC_RX_RELAX
4880
ENUMDOC
4881
  Renesas RX Relocations.
4882
4883
ENUM
4884
  BFD_RELOC_390_12
4885
ENUMDOC
4886
  Direct 12 bit.
4887
ENUM
4888
  BFD_RELOC_390_GOT12
4889
ENUMDOC
4890
  12 bit GOT offset.
4891
ENUM
4892
  BFD_RELOC_390_GOT16
4893
ENUMDOC
4894
  16 bit GOT offset.
4895
ENUM
4896
  BFD_RELOC_390_GOT32
4897
ENUMDOC
4898
  32 bit GOT offset.
4899
ENUM
4900
  BFD_RELOC_390_PC12DBL
4901
ENUMDOC
4902
  PC relative 12 bit shifted by 1.
4903
ENUM
4904
  BFD_RELOC_390_PLT12DBL
4905
ENUMDOC
4906
  12 bit PC rel. PLT shifted by 1.
4907
ENUM
4908
  BFD_RELOC_390_PC16DBL
4909
ENUMDOC
4910
  PC relative 16 bit shifted by 1.
4911
ENUM
4912
  BFD_RELOC_390_PLT16DBL
4913
ENUMDOC
4914
  16 bit PC rel. PLT shifted by 1.
4915
ENUM
4916
  BFD_RELOC_390_PC24DBL
4917
ENUMDOC
4918
  PC relative 24 bit shifted by 1.
4919
ENUM
4920
  BFD_RELOC_390_PLT24DBL
4921
ENUMDOC
4922
  24 bit PC rel. PLT shifted by 1.
4923
ENUM
4924
  BFD_RELOC_390_PC32DBL
4925
ENUMDOC
4926
  PC relative 32 bit shifted by 1.
4927
ENUM
4928
  BFD_RELOC_390_PLT32DBL
4929
ENUMDOC
4930
  32 bit PC rel. PLT shifted by 1.
4931
ENUM
4932
  BFD_RELOC_390_GOTPCDBL
4933
ENUMDOC
4934
  32 bit PC rel. GOT shifted by 1.
4935
ENUM
4936
  BFD_RELOC_390_GOT64
4937
ENUMDOC
4938
  64 bit GOT offset.
4939
ENUM
4940
  BFD_RELOC_390_GOTENT
4941
ENUMDOC
4942
  32 bit rel. offset to GOT entry.
4943
ENUM
4944
  BFD_RELOC_390_GOTPLT12
4945
ENUMDOC
4946
  12-bit offset to symbol-entry within GOT, with PLT handling.
4947
ENUM
4948
  BFD_RELOC_390_GOTPLT16
4949
ENUMDOC
4950
  16-bit offset to symbol-entry within GOT, with PLT handling.
4951
ENUM
4952
  BFD_RELOC_390_GOTPLT32
4953
ENUMDOC
4954
  32-bit offset to symbol-entry within GOT, with PLT handling.
4955
ENUM
4956
  BFD_RELOC_390_GOTPLT64
4957
ENUMDOC
4958
  64-bit offset to symbol-entry within GOT, with PLT handling.
4959
ENUM
4960
  BFD_RELOC_390_GOTPLTENT
4961
ENUMDOC
4962
  32-bit rel. offset to symbol-entry within GOT, with PLT handling.
4963
ENUM
4964
  BFD_RELOC_390_PLTOFF16
4965
ENUMDOC
4966
  16-bit rel. offset from the GOT to a PLT entry.
4967
ENUM
4968
  BFD_RELOC_390_PLTOFF32
4969
ENUMDOC
4970
  32-bit rel. offset from the GOT to a PLT entry.
4971
ENUM
4972
  BFD_RELOC_390_PLTOFF64
4973
ENUMDOC
4974
  64-bit rel. offset from the GOT to a PLT entry.
4975
4976
ENUM
4977
  BFD_RELOC_390_TLS_LOAD
4978
ENUMX
4979
  BFD_RELOC_390_TLS_GDCALL
4980
ENUMX
4981
  BFD_RELOC_390_TLS_LDCALL
4982
ENUMX
4983
  BFD_RELOC_390_TLS_GD32
4984
ENUMX
4985
  BFD_RELOC_390_TLS_GD64
4986
ENUMX
4987
  BFD_RELOC_390_TLS_GOTIE12
4988
ENUMX
4989
  BFD_RELOC_390_TLS_GOTIE32
4990
ENUMX
4991
  BFD_RELOC_390_TLS_GOTIE64
4992
ENUMX
4993
  BFD_RELOC_390_TLS_LDM32
4994
ENUMX
4995
  BFD_RELOC_390_TLS_LDM64
4996
ENUMX
4997
  BFD_RELOC_390_TLS_IE32
4998
ENUMX
4999
  BFD_RELOC_390_TLS_IE64
5000
ENUMX
5001
  BFD_RELOC_390_TLS_IEENT
5002
ENUMX
5003
  BFD_RELOC_390_TLS_LE32
5004
ENUMX
5005
  BFD_RELOC_390_TLS_LE64
5006
ENUMX
5007
  BFD_RELOC_390_TLS_LDO32
5008
ENUMX
5009
  BFD_RELOC_390_TLS_LDO64
5010
ENUMX
5011
  BFD_RELOC_390_TLS_DTPMOD
5012
ENUMX
5013
  BFD_RELOC_390_TLS_DTPOFF
5014
ENUMX
5015
  BFD_RELOC_390_TLS_TPOFF
5016
ENUMDOC
5017
  s390 tls relocations.
5018
5019
ENUM
5020
  BFD_RELOC_390_20
5021
ENUMX
5022
  BFD_RELOC_390_GOT20
5023
ENUMX
5024
  BFD_RELOC_390_GOTPLT20
5025
ENUMX
5026
  BFD_RELOC_390_TLS_GOTIE20
5027
ENUMDOC
5028
  Long displacement extension.
5029
5030
ENUM
5031
  BFD_RELOC_SCORE_GPREL15
5032
ENUMDOC
5033
  Score relocations.
5034
  Low 16 bit for load/store.
5035
ENUM
5036
  BFD_RELOC_SCORE_DUMMY2
5037
ENUMX
5038
  BFD_RELOC_SCORE_JMP
5039
ENUMDOC
5040
  This is a 24-bit reloc with the right 1 bit assumed to be 0.
5041
ENUM
5042
  BFD_RELOC_SCORE_BRANCH
5043
ENUMDOC
5044
  This is a 19-bit reloc with the right 1 bit assumed to be 0.
5045
ENUM
5046
  BFD_RELOC_SCORE_IMM30
5047
ENUMDOC
5048
  This is a 32-bit reloc for 48-bit instructions.
5049
ENUM
5050
  BFD_RELOC_SCORE_IMM32
5051
ENUMDOC
5052
  This is a 32-bit reloc for 48-bit instructions.
5053
ENUM
5054
  BFD_RELOC_SCORE16_JMP
5055
ENUMDOC
5056
  This is a 11-bit reloc with the right 1 bit assumed to be 0.
5057
ENUM
5058
  BFD_RELOC_SCORE16_BRANCH
5059
ENUMDOC
5060
  This is a 8-bit reloc with the right 1 bit assumed to be 0.
5061
ENUM
5062
  BFD_RELOC_SCORE_BCMP
5063
ENUMDOC
5064
  This is a 9-bit reloc with the right 1 bit assumed to be 0.
5065
ENUM
5066
  BFD_RELOC_SCORE_GOT15
5067
ENUMX
5068
  BFD_RELOC_SCORE_GOT_LO16
5069
ENUMX
5070
  BFD_RELOC_SCORE_CALL15
5071
ENUMX
5072
  BFD_RELOC_SCORE_DUMMY_HI16
5073
ENUMDOC
5074
  Undocumented Score relocs.
5075
5076
ENUM
5077
  BFD_RELOC_IP2K_FR9
5078
ENUMDOC
5079
  Scenix IP2K - 9-bit register number / data address.
5080
ENUM
5081
  BFD_RELOC_IP2K_BANK
5082
ENUMDOC
5083
  Scenix IP2K - 4-bit register/data bank number.
5084
ENUM
5085
  BFD_RELOC_IP2K_ADDR16CJP
5086
ENUMDOC
5087
  Scenix IP2K - low 13 bits of instruction word address.
5088
ENUM
5089
  BFD_RELOC_IP2K_PAGE3
5090
ENUMDOC
5091
  Scenix IP2K - high 3 bits of instruction word address.
5092
ENUM
5093
  BFD_RELOC_IP2K_LO8DATA
5094
ENUMX
5095
  BFD_RELOC_IP2K_HI8DATA
5096
ENUMX
5097
  BFD_RELOC_IP2K_EX8DATA
5098
ENUMDOC
5099
  Scenix IP2K - ext/low/high 8 bits of data address.
5100
ENUM
5101
  BFD_RELOC_IP2K_LO8INSN
5102
ENUMX
5103
  BFD_RELOC_IP2K_HI8INSN
5104
ENUMDOC
5105
  Scenix IP2K - low/high 8 bits of instruction word address.
5106
ENUM
5107
  BFD_RELOC_IP2K_PC_SKIP
5108
ENUMDOC
5109
  Scenix IP2K - even/odd PC modifier to modify snb pcl.0.
5110
ENUM
5111
  BFD_RELOC_IP2K_TEXT
5112
ENUMDOC
5113
  Scenix IP2K - 16 bit word address in text section.
5114
ENUM
5115
  BFD_RELOC_IP2K_FR_OFFSET
5116
ENUMDOC
5117
  Scenix IP2K - 7-bit sp or dp offset.
5118
5119
ENUM
5120
  BFD_RELOC_VTABLE_INHERIT
5121
ENUMX
5122
  BFD_RELOC_VTABLE_ENTRY
5123
ENUMDOC
5124
  These two relocations are used by the linker to determine which of
5125
  the entries in a C++ virtual function table are actually used.  When
5126
  the --gc-sections option is given, the linker will zero out the
5127
  entries that are not used, so that the code for those functions need
5128
  not be included in the output.
5129
5130
  VTABLE_INHERIT is a zero-space relocation used to describe to the
5131
  linker the inheritance tree of a C++ virtual function table.  The
5132
  relocation's symbol should be the parent class' vtable, and the
5133
  relocation should be located at the child vtable.
5134
5135
  VTABLE_ENTRY is a zero-space relocation that describes the use of a
5136
  virtual function table entry.  The reloc's symbol should refer to
5137
  the table of the class mentioned in the code.  Off of that base, an
5138
  offset describes the entry that is being used.  For Rela hosts, this
5139
  offset is stored in the reloc's addend.  For Rel hosts, we are
5140
  forced to put this offset in the reloc's section offset.
5141
5142
ENUM
5143
  BFD_RELOC_IA64_IMM14
5144
ENUMX
5145
  BFD_RELOC_IA64_IMM22
5146
ENUMX
5147
  BFD_RELOC_IA64_IMM64
5148
ENUMX
5149
  BFD_RELOC_IA64_DIR32MSB
5150
ENUMX
5151
  BFD_RELOC_IA64_DIR32LSB
5152
ENUMX
5153
  BFD_RELOC_IA64_DIR64MSB
5154
ENUMX
5155
  BFD_RELOC_IA64_DIR64LSB
5156
ENUMX
5157
  BFD_RELOC_IA64_GPREL22
5158
ENUMX
5159
  BFD_RELOC_IA64_GPREL64I
5160
ENUMX
5161
  BFD_RELOC_IA64_GPREL32MSB
5162
ENUMX
5163
  BFD_RELOC_IA64_GPREL32LSB
5164
ENUMX
5165
  BFD_RELOC_IA64_GPREL64MSB
5166
ENUMX
5167
  BFD_RELOC_IA64_GPREL64LSB
5168
ENUMX
5169
  BFD_RELOC_IA64_LTOFF22
5170
ENUMX
5171
  BFD_RELOC_IA64_LTOFF64I
5172
ENUMX
5173
  BFD_RELOC_IA64_PLTOFF22
5174
ENUMX
5175
  BFD_RELOC_IA64_PLTOFF64I
5176
ENUMX
5177
  BFD_RELOC_IA64_PLTOFF64MSB
5178
ENUMX
5179
  BFD_RELOC_IA64_PLTOFF64LSB
5180
ENUMX
5181
  BFD_RELOC_IA64_FPTR64I
5182
ENUMX
5183
  BFD_RELOC_IA64_FPTR32MSB
5184
ENUMX
5185
  BFD_RELOC_IA64_FPTR32LSB
5186
ENUMX
5187
  BFD_RELOC_IA64_FPTR64MSB
5188
ENUMX
5189
  BFD_RELOC_IA64_FPTR64LSB
5190
ENUMX
5191
  BFD_RELOC_IA64_PCREL21B
5192
ENUMX
5193
  BFD_RELOC_IA64_PCREL21BI
5194
ENUMX
5195
  BFD_RELOC_IA64_PCREL21M
5196
ENUMX
5197
  BFD_RELOC_IA64_PCREL21F
5198
ENUMX
5199
  BFD_RELOC_IA64_PCREL22
5200
ENUMX
5201
  BFD_RELOC_IA64_PCREL60B
5202
ENUMX
5203
  BFD_RELOC_IA64_PCREL64I
5204
ENUMX
5205
  BFD_RELOC_IA64_PCREL32MSB
5206
ENUMX
5207
  BFD_RELOC_IA64_PCREL32LSB
5208
ENUMX
5209
  BFD_RELOC_IA64_PCREL64MSB
5210
ENUMX
5211
  BFD_RELOC_IA64_PCREL64LSB
5212
ENUMX
5213
  BFD_RELOC_IA64_LTOFF_FPTR22
5214
ENUMX
5215
  BFD_RELOC_IA64_LTOFF_FPTR64I
5216
ENUMX
5217
  BFD_RELOC_IA64_LTOFF_FPTR32MSB
5218
ENUMX
5219
  BFD_RELOC_IA64_LTOFF_FPTR32LSB
5220
ENUMX
5221
  BFD_RELOC_IA64_LTOFF_FPTR64MSB
5222
ENUMX
5223
  BFD_RELOC_IA64_LTOFF_FPTR64LSB
5224
ENUMX
5225
  BFD_RELOC_IA64_SEGREL32MSB
5226
ENUMX
5227
  BFD_RELOC_IA64_SEGREL32LSB
5228
ENUMX
5229
  BFD_RELOC_IA64_SEGREL64MSB
5230
ENUMX
5231
  BFD_RELOC_IA64_SEGREL64LSB
5232
ENUMX
5233
  BFD_RELOC_IA64_SECREL32MSB
5234
ENUMX
5235
  BFD_RELOC_IA64_SECREL32LSB
5236
ENUMX
5237
  BFD_RELOC_IA64_SECREL64MSB
5238
ENUMX
5239
  BFD_RELOC_IA64_SECREL64LSB
5240
ENUMX
5241
  BFD_RELOC_IA64_REL32MSB
5242
ENUMX
5243
  BFD_RELOC_IA64_REL32LSB
5244
ENUMX
5245
  BFD_RELOC_IA64_REL64MSB
5246
ENUMX
5247
  BFD_RELOC_IA64_REL64LSB
5248
ENUMX
5249
  BFD_RELOC_IA64_LTV32MSB
5250
ENUMX
5251
  BFD_RELOC_IA64_LTV32LSB
5252
ENUMX
5253
  BFD_RELOC_IA64_LTV64MSB
5254
ENUMX
5255
  BFD_RELOC_IA64_LTV64LSB
5256
ENUMX
5257
  BFD_RELOC_IA64_IPLTMSB
5258
ENUMX
5259
  BFD_RELOC_IA64_IPLTLSB
5260
ENUMX
5261
  BFD_RELOC_IA64_LTOFF22X
5262
ENUMX
5263
  BFD_RELOC_IA64_LDXMOV
5264
ENUMX
5265
  BFD_RELOC_IA64_TPREL14
5266
ENUMX
5267
  BFD_RELOC_IA64_TPREL22
5268
ENUMX
5269
  BFD_RELOC_IA64_TPREL64I
5270
ENUMX
5271
  BFD_RELOC_IA64_TPREL64MSB
5272
ENUMX
5273
  BFD_RELOC_IA64_TPREL64LSB
5274
ENUMX
5275
  BFD_RELOC_IA64_LTOFF_TPREL22
5276
ENUMX
5277
  BFD_RELOC_IA64_DTPMOD64MSB
5278
ENUMX
5279
  BFD_RELOC_IA64_DTPMOD64LSB
5280
ENUMX
5281
  BFD_RELOC_IA64_LTOFF_DTPMOD22
5282
ENUMX
5283
  BFD_RELOC_IA64_DTPREL14
5284
ENUMX
5285
  BFD_RELOC_IA64_DTPREL22
5286
ENUMX
5287
  BFD_RELOC_IA64_DTPREL64I
5288
ENUMX
5289
  BFD_RELOC_IA64_DTPREL32MSB
5290
ENUMX
5291
  BFD_RELOC_IA64_DTPREL32LSB
5292
ENUMX
5293
  BFD_RELOC_IA64_DTPREL64MSB
5294
ENUMX
5295
  BFD_RELOC_IA64_DTPREL64LSB
5296
ENUMX
5297
  BFD_RELOC_IA64_LTOFF_DTPREL22
5298
ENUMDOC
5299
  Intel IA64 Relocations.
5300
5301
ENUM
5302
  BFD_RELOC_M68HC11_HI8
5303
ENUMDOC
5304
  Motorola 68HC11 reloc.
5305
  This is the 8 bit high part of an absolute address.
5306
ENUM
5307
  BFD_RELOC_M68HC11_LO8
5308
ENUMDOC
5309
  Motorola 68HC11 reloc.
5310
  This is the 8 bit low part of an absolute address.
5311
ENUM
5312
  BFD_RELOC_M68HC11_3B
5313
ENUMDOC
5314
  Motorola 68HC11 reloc.
5315
  This is the 3 bit of a value.
5316
ENUM
5317
  BFD_RELOC_M68HC11_RL_JUMP
5318
ENUMDOC
5319
  Motorola 68HC11 reloc.
5320
  This reloc marks the beginning of a jump/call instruction.
5321
  It is used for linker relaxation to correctly identify beginning
5322
  of instruction and change some branches to use PC-relative
5323
  addressing mode.
5324
ENUM
5325
  BFD_RELOC_M68HC11_RL_GROUP
5326
ENUMDOC
5327
  Motorola 68HC11 reloc.
5328
  This reloc marks a group of several instructions that gcc generates
5329
  and for which the linker relaxation pass can modify and/or remove
5330
  some of them.
5331
ENUM
5332
  BFD_RELOC_M68HC11_LO16
5333
ENUMDOC
5334
  Motorola 68HC11 reloc.
5335
  This is the 16-bit lower part of an address.  It is used for 'call'
5336
  instruction to specify the symbol address without any special
5337
  transformation (due to memory bank window).
5338
ENUM
5339
  BFD_RELOC_M68HC11_PAGE
5340
ENUMDOC
5341
  Motorola 68HC11 reloc.
5342
  This is a 8-bit reloc that specifies the page number of an address.
5343
  It is used by 'call' instruction to specify the page number of
5344
  the symbol.
5345
ENUM
5346
  BFD_RELOC_M68HC11_24
5347
ENUMDOC
5348
  Motorola 68HC11 reloc.
5349
  This is a 24-bit reloc that represents the address with a 16-bit
5350
  value and a 8-bit page number.  The symbol address is transformed
5351
  to follow the 16K memory bank of 68HC12 (seen as mapped in the
5352
  window).
5353
ENUM
5354
  BFD_RELOC_M68HC12_5B
5355
ENUMDOC
5356
  Motorola 68HC12 reloc.
5357
  This is the 5 bits of a value.
5358
ENUM
5359
  BFD_RELOC_XGATE_RL_JUMP
5360
ENUMDOC
5361
  Freescale XGATE reloc.
5362
  This reloc marks the beginning of a bra/jal instruction.
5363
ENUM
5364
  BFD_RELOC_XGATE_RL_GROUP
5365
ENUMDOC
5366
  Freescale XGATE reloc.
5367
  This reloc marks a group of several instructions that gcc generates
5368
  and for which the linker relaxation pass can modify and/or remove
5369
  some of them.
5370
ENUM
5371
  BFD_RELOC_XGATE_LO16
5372
ENUMDOC
5373
  Freescale XGATE reloc.
5374
  This is the 16-bit lower part of an address.  It is used for the
5375
  '16-bit' instructions.
5376
ENUM
5377
  BFD_RELOC_XGATE_GPAGE
5378
ENUMDOC
5379
  Freescale XGATE reloc.
5380
ENUM
5381
  BFD_RELOC_XGATE_24
5382
ENUMDOC
5383
  Freescale XGATE reloc.
5384
ENUM
5385
  BFD_RELOC_XGATE_PCREL_9
5386
ENUMDOC
5387
  Freescale XGATE reloc.
5388
  This is a 9-bit pc-relative reloc.
5389
ENUM
5390
  BFD_RELOC_XGATE_PCREL_10
5391
ENUMDOC
5392
  Freescale XGATE reloc.
5393
  This is a 10-bit pc-relative reloc.
5394
ENUM
5395
  BFD_RELOC_XGATE_IMM8_LO
5396
ENUMDOC
5397
  Freescale XGATE reloc.
5398
  This is the 16-bit lower part of an address.  It is used for the
5399
  '16-bit' instructions.
5400
ENUM
5401
  BFD_RELOC_XGATE_IMM8_HI
5402
ENUMDOC
5403
  Freescale XGATE reloc.
5404
  This is the 16-bit higher part of an address.  It is used for the
5405
  '16-bit' instructions.
5406
ENUM
5407
  BFD_RELOC_XGATE_IMM3
5408
ENUMDOC
5409
  Freescale XGATE reloc.
5410
  This is a 3-bit pc-relative reloc.
5411
ENUM
5412
  BFD_RELOC_XGATE_IMM4
5413
ENUMDOC
5414
  Freescale XGATE reloc.
5415
  This is a 4-bit pc-relative reloc.
5416
ENUM
5417
  BFD_RELOC_XGATE_IMM5
5418
ENUMDOC
5419
  Freescale XGATE reloc.
5420
  This is a 5-bit pc-relative reloc.
5421
ENUM
5422
  BFD_RELOC_M68HC12_9B
5423
ENUMDOC
5424
  Motorola 68HC12 reloc.
5425
  This is the 9 bits of a value.
5426
ENUM
5427
  BFD_RELOC_M68HC12_16B
5428
ENUMDOC
5429
  Motorola 68HC12 reloc.
5430
  This is the 16 bits of a value.
5431
ENUM
5432
  BFD_RELOC_M68HC12_9_PCREL
5433
ENUMDOC
5434
  Motorola 68HC12/XGATE reloc.
5435
  This is a PCREL9 branch.
5436
ENUM
5437
  BFD_RELOC_M68HC12_10_PCREL
5438
ENUMDOC
5439
  Motorola 68HC12/XGATE reloc.
5440
  This is a PCREL10 branch.
5441
ENUM
5442
  BFD_RELOC_M68HC12_LO8XG
5443
ENUMDOC
5444
  Motorola 68HC12/XGATE reloc.
5445
  This is the 8 bit low part of an absolute address and immediately
5446
  precedes a matching HI8XG part.
5447
ENUM
5448
  BFD_RELOC_M68HC12_HI8XG
5449
ENUMDOC
5450
  Motorola 68HC12/XGATE reloc.
5451
  This is the 8 bit high part of an absolute address and immediately
5452
  follows a matching LO8XG part.
5453
5454
ENUM
5455
  BFD_RELOC_CR16_NUM8
5456
ENUMX
5457
  BFD_RELOC_CR16_NUM16
5458
ENUMX
5459
  BFD_RELOC_CR16_NUM32
5460
ENUMX
5461
  BFD_RELOC_CR16_NUM32a
5462
ENUMX
5463
  BFD_RELOC_CR16_REGREL0
5464
ENUMX
5465
  BFD_RELOC_CR16_REGREL4
5466
ENUMX
5467
  BFD_RELOC_CR16_REGREL4a
5468
ENUMX
5469
  BFD_RELOC_CR16_REGREL14
5470
ENUMX
5471
  BFD_RELOC_CR16_REGREL14a
5472
ENUMX
5473
  BFD_RELOC_CR16_REGREL16
5474
ENUMX
5475
  BFD_RELOC_CR16_REGREL20
5476
ENUMX
5477
  BFD_RELOC_CR16_REGREL20a
5478
ENUMX
5479
  BFD_RELOC_CR16_ABS20
5480
ENUMX
5481
  BFD_RELOC_CR16_ABS24
5482
ENUMX
5483
  BFD_RELOC_CR16_IMM4
5484
ENUMX
5485
  BFD_RELOC_CR16_IMM8
5486
ENUMX
5487
  BFD_RELOC_CR16_IMM16
5488
ENUMX
5489
  BFD_RELOC_CR16_IMM20
5490
ENUMX
5491
  BFD_RELOC_CR16_IMM24
5492
ENUMX
5493
  BFD_RELOC_CR16_IMM32
5494
ENUMX
5495
  BFD_RELOC_CR16_IMM32a
5496
ENUMX
5497
  BFD_RELOC_CR16_DISP4
5498
ENUMX
5499
  BFD_RELOC_CR16_DISP8
5500
ENUMX
5501
  BFD_RELOC_CR16_DISP16
5502
ENUMX
5503
  BFD_RELOC_CR16_DISP20
5504
ENUMX
5505
  BFD_RELOC_CR16_DISP24
5506
ENUMX
5507
  BFD_RELOC_CR16_DISP24a
5508
ENUMX
5509
  BFD_RELOC_CR16_SWITCH8
5510
ENUMX
5511
  BFD_RELOC_CR16_SWITCH16
5512
ENUMX
5513
  BFD_RELOC_CR16_SWITCH32
5514
ENUMX
5515
  BFD_RELOC_CR16_GOT_REGREL20
5516
ENUMX
5517
  BFD_RELOC_CR16_GOTC_REGREL20
5518
ENUMDOC
5519
  NS CR16 Relocations.
5520
5521
ENUM
5522
  BFD_RELOC_CRX_REL4
5523
ENUMX
5524
  BFD_RELOC_CRX_REL8
5525
ENUMX
5526
  BFD_RELOC_CRX_REL8_CMP
5527
ENUMX
5528
  BFD_RELOC_CRX_REL16
5529
ENUMX
5530
  BFD_RELOC_CRX_REL24
5531
ENUMX
5532
  BFD_RELOC_CRX_REL32
5533
ENUMX
5534
  BFD_RELOC_CRX_REGREL12
5535
ENUMX
5536
  BFD_RELOC_CRX_REGREL22
5537
ENUMX
5538
  BFD_RELOC_CRX_REGREL28
5539
ENUMX
5540
  BFD_RELOC_CRX_REGREL32
5541
ENUMX
5542
  BFD_RELOC_CRX_ABS16
5543
ENUMX
5544
  BFD_RELOC_CRX_ABS32
5545
ENUMX
5546
  BFD_RELOC_CRX_NUM8
5547
ENUMX
5548
  BFD_RELOC_CRX_NUM16
5549
ENUMX
5550
  BFD_RELOC_CRX_NUM32
5551
ENUMX
5552
  BFD_RELOC_CRX_IMM16
5553
ENUMX
5554
  BFD_RELOC_CRX_IMM32
5555
ENUMX
5556
  BFD_RELOC_CRX_SWITCH8
5557
ENUMX
5558
  BFD_RELOC_CRX_SWITCH16
5559
ENUMX
5560
  BFD_RELOC_CRX_SWITCH32
5561
ENUMDOC
5562
  NS CRX Relocations.
5563
5564
ENUM
5565
  BFD_RELOC_CRIS_BDISP8
5566
ENUMX
5567
  BFD_RELOC_CRIS_UNSIGNED_5
5568
ENUMX
5569
  BFD_RELOC_CRIS_SIGNED_6
5570
ENUMX
5571
  BFD_RELOC_CRIS_UNSIGNED_6
5572
ENUMX
5573
  BFD_RELOC_CRIS_SIGNED_8
5574
ENUMX
5575
  BFD_RELOC_CRIS_UNSIGNED_8
5576
ENUMX
5577
  BFD_RELOC_CRIS_SIGNED_16
5578
ENUMX
5579
  BFD_RELOC_CRIS_UNSIGNED_16
5580
ENUMX
5581
  BFD_RELOC_CRIS_LAPCQ_OFFSET
5582
ENUMX
5583
  BFD_RELOC_CRIS_UNSIGNED_4
5584
ENUMDOC
5585
  These relocs are only used within the CRIS assembler.  They are not
5586
  (at present) written to any object files.
5587
ENUM
5588
  BFD_RELOC_CRIS_32_GOT
5589
ENUMDOC
5590
  32-bit offset to symbol-entry within GOT.
5591
ENUM
5592
  BFD_RELOC_CRIS_16_GOT
5593
ENUMDOC
5594
  16-bit offset to symbol-entry within GOT.
5595
ENUM
5596
  BFD_RELOC_CRIS_32_GOTPLT
5597
ENUMDOC
5598
  32-bit offset to symbol-entry within GOT, with PLT handling.
5599
ENUM
5600
  BFD_RELOC_CRIS_16_GOTPLT
5601
ENUMDOC
5602
  16-bit offset to symbol-entry within GOT, with PLT handling.
5603
ENUM
5604
  BFD_RELOC_CRIS_32_GOTREL
5605
ENUMDOC
5606
  32-bit offset to symbol, relative to GOT.
5607
ENUM
5608
  BFD_RELOC_CRIS_32_PLT_GOTREL
5609
ENUMDOC
5610
  32-bit offset to symbol with PLT entry, relative to GOT.
5611
5612
ENUM
5613
  BFD_RELOC_CRIS_32_GOT_GD
5614
ENUMX
5615
  BFD_RELOC_CRIS_16_GOT_GD
5616
ENUMX
5617
  BFD_RELOC_CRIS_32_GD
5618
ENUMX
5619
  BFD_RELOC_CRIS_DTP
5620
ENUMX
5621
  BFD_RELOC_CRIS_32_DTPREL
5622
ENUMX
5623
  BFD_RELOC_CRIS_16_DTPREL
5624
ENUMX
5625
  BFD_RELOC_CRIS_32_GOT_TPREL
5626
ENUMX
5627
  BFD_RELOC_CRIS_16_GOT_TPREL
5628
ENUMX
5629
  BFD_RELOC_CRIS_32_TPREL
5630
ENUMX
5631
  BFD_RELOC_CRIS_16_TPREL
5632
ENUMX
5633
  BFD_RELOC_CRIS_DTPMOD
5634
ENUMX
5635
  BFD_RELOC_CRIS_32_IE
5636
ENUMDOC
5637
  Relocs used in TLS code for CRIS.
5638
5639
ENUM
5640
  BFD_RELOC_OR1K_REL_26
5641
ENUMX
5642
  BFD_RELOC_OR1K_SLO16
5643
ENUMX
5644
  BFD_RELOC_OR1K_PCREL_PG21
5645
ENUMX
5646
  BFD_RELOC_OR1K_LO13
5647
ENUMX
5648
  BFD_RELOC_OR1K_SLO13
5649
ENUMX
5650
  BFD_RELOC_OR1K_GOTPC_HI16
5651
ENUMX
5652
  BFD_RELOC_OR1K_GOTPC_LO16
5653
ENUMX
5654
  BFD_RELOC_OR1K_GOT_AHI16
5655
ENUMX
5656
  BFD_RELOC_OR1K_GOT16
5657
ENUMX
5658
  BFD_RELOC_OR1K_GOT_PG21
5659
ENUMX
5660
  BFD_RELOC_OR1K_GOT_LO13
5661
ENUMX
5662
  BFD_RELOC_OR1K_PLT26
5663
ENUMX
5664
  BFD_RELOC_OR1K_PLTA26
5665
ENUMX
5666
  BFD_RELOC_OR1K_GOTOFF_SLO16
5667
ENUMX
5668
  BFD_RELOC_OR1K_TLS_GD_HI16
5669
ENUMX
5670
  BFD_RELOC_OR1K_TLS_GD_LO16
5671
ENUMX
5672
  BFD_RELOC_OR1K_TLS_GD_PG21
5673
ENUMX
5674
  BFD_RELOC_OR1K_TLS_GD_LO13
5675
ENUMX
5676
  BFD_RELOC_OR1K_TLS_LDM_HI16
5677
ENUMX
5678
  BFD_RELOC_OR1K_TLS_LDM_LO16
5679
ENUMX
5680
  BFD_RELOC_OR1K_TLS_LDM_PG21
5681
ENUMX
5682
  BFD_RELOC_OR1K_TLS_LDM_LO13
5683
ENUMX
5684
  BFD_RELOC_OR1K_TLS_LDO_HI16
5685
ENUMX
5686
  BFD_RELOC_OR1K_TLS_LDO_LO16
5687
ENUMX
5688
  BFD_RELOC_OR1K_TLS_IE_HI16
5689
ENUMX
5690
  BFD_RELOC_OR1K_TLS_IE_AHI16
5691
ENUMX
5692
  BFD_RELOC_OR1K_TLS_IE_LO16
5693
ENUMX
5694
  BFD_RELOC_OR1K_TLS_IE_PG21
5695
ENUMX
5696
  BFD_RELOC_OR1K_TLS_IE_LO13
5697
ENUMX
5698
  BFD_RELOC_OR1K_TLS_LE_HI16
5699
ENUMX
5700
  BFD_RELOC_OR1K_TLS_LE_AHI16
5701
ENUMX
5702
  BFD_RELOC_OR1K_TLS_LE_LO16
5703
ENUMX
5704
  BFD_RELOC_OR1K_TLS_LE_SLO16
5705
ENUMX
5706
  BFD_RELOC_OR1K_TLS_TPOFF
5707
ENUMX
5708
  BFD_RELOC_OR1K_TLS_DTPOFF
5709
ENUMX
5710
  BFD_RELOC_OR1K_TLS_DTPMOD
5711
ENUMDOC
5712
  OpenRISC 1000 Relocations.
5713
5714
ENUM
5715
  BFD_RELOC_H8_DIR16A8
5716
ENUMX
5717
  BFD_RELOC_H8_DIR16R8
5718
ENUMX
5719
  BFD_RELOC_H8_DIR24A8
5720
ENUMX
5721
  BFD_RELOC_H8_DIR24R8
5722
ENUMX
5723
  BFD_RELOC_H8_DIR32A16
5724
ENUMX
5725
  BFD_RELOC_H8_DISP32A16
5726
ENUMDOC
5727
  H8 elf Relocations.
5728
5729
ENUM
5730
  BFD_RELOC_XSTORMY16_REL_12
5731
ENUMX
5732
  BFD_RELOC_XSTORMY16_12
5733
ENUMX
5734
  BFD_RELOC_XSTORMY16_24
5735
ENUMX
5736
  BFD_RELOC_XSTORMY16_FPTR16
5737
ENUMDOC
5738
  Sony Xstormy16 Relocations.
5739
5740
ENUM
5741
  BFD_RELOC_RELC
5742
ENUMDOC
5743
  Self-describing complex relocations.
5744
5745
ENUM
5746
  BFD_RELOC_MT_PC16
5747
ENUMDOC
5748
  Morpho MT - 16 bit immediate relocation.
5749
ENUM
5750
  BFD_RELOC_MT_HI16
5751
ENUMDOC
5752
  Morpho MT - Hi 16 bits of an address.
5753
ENUM
5754
  BFD_RELOC_MT_LO16
5755
ENUMDOC
5756
  Morpho MT - Low 16 bits of an address.
5757
ENUM
5758
  BFD_RELOC_MT_GNU_VTINHERIT
5759
ENUMDOC
5760
  Morpho MT - Used to tell the linker which vtable entries are used.
5761
ENUM
5762
  BFD_RELOC_MT_GNU_VTENTRY
5763
ENUMDOC
5764
  Morpho MT - Used to tell the linker which vtable entries are used.
5765
ENUM
5766
  BFD_RELOC_MT_PCINSN8
5767
ENUMDOC
5768
  Morpho MT - 8 bit immediate relocation.
5769
5770
ENUM
5771
  BFD_RELOC_MSP430_10_PCREL
5772
ENUMX
5773
  BFD_RELOC_MSP430_16_PCREL
5774
ENUMX
5775
  BFD_RELOC_MSP430_16
5776
ENUMX
5777
  BFD_RELOC_MSP430_2X_PCREL
5778
ENUMX
5779
  BFD_RELOC_MSP430_RL_PCREL
5780
ENUMX
5781
  BFD_RELOC_MSP430_ABS8
5782
ENUMX
5783
  BFD_RELOC_MSP430X_PCR20_EXT_SRC
5784
ENUMX
5785
  BFD_RELOC_MSP430X_PCR20_EXT_DST
5786
ENUMX
5787
  BFD_RELOC_MSP430X_PCR20_EXT_ODST
5788
ENUMX
5789
  BFD_RELOC_MSP430X_ABS20_EXT_SRC
5790
ENUMX
5791
  BFD_RELOC_MSP430X_ABS20_EXT_DST
5792
ENUMX
5793
  BFD_RELOC_MSP430X_ABS20_EXT_ODST
5794
ENUMX
5795
  BFD_RELOC_MSP430X_ABS20_ADR_SRC
5796
ENUMX
5797
  BFD_RELOC_MSP430X_ABS20_ADR_DST
5798
ENUMX
5799
  BFD_RELOC_MSP430X_PCR16
5800
ENUMX
5801
  BFD_RELOC_MSP430X_PCR20_CALL
5802
ENUMX
5803
  BFD_RELOC_MSP430X_ABS16
5804
ENUMX
5805
  BFD_RELOC_MSP430_ABS_HI16
5806
ENUMX
5807
  BFD_RELOC_MSP430_PREL31
5808
ENUMX
5809
  BFD_RELOC_MSP430_SYM_DIFF
5810
ENUMX
5811
  BFD_RELOC_MSP430_SET_ULEB128
5812
ENUMX
5813
  BFD_RELOC_MSP430_SUB_ULEB128
5814
ENUMDOC
5815
  msp430 specific relocation codes.
5816
5817
ENUM
5818
  BFD_RELOC_PRU_U16
5819
ENUMDOC
5820
  PRU LDI 16-bit unsigned data-memory relocation.
5821
ENUM
5822
  BFD_RELOC_PRU_U16_PMEMIMM
5823
ENUMDOC
5824
  PRU LDI 16-bit unsigned instruction-memory relocation.
5825
ENUM
5826
  BFD_RELOC_PRU_LDI32
5827
ENUMDOC
5828
  PRU relocation for two consecutive LDI load instructions that load a
5829
  32 bit value into a register. If the higher bits are all zero, then
5830
  the second instruction may be relaxed.
5831
ENUM
5832
  BFD_RELOC_PRU_S10_PCREL
5833
ENUMDOC
5834
  PRU QBBx 10-bit signed PC-relative relocation.
5835
ENUM
5836
  BFD_RELOC_PRU_U8_PCREL
5837
ENUMDOC
5838
  PRU 8-bit unsigned relocation used for the LOOP instruction.
5839
ENUM
5840
  BFD_RELOC_PRU_32_PMEM
5841
ENUMX
5842
  BFD_RELOC_PRU_16_PMEM
5843
ENUMDOC
5844
  PRU Program Memory relocations.  Used to convert from byte
5845
  addressing to 32-bit word addressing.
5846
ENUM
5847
  BFD_RELOC_PRU_GNU_DIFF8
5848
ENUMX
5849
  BFD_RELOC_PRU_GNU_DIFF16
5850
ENUMX
5851
  BFD_RELOC_PRU_GNU_DIFF32
5852
ENUMX
5853
  BFD_RELOC_PRU_GNU_DIFF16_PMEM
5854
ENUMX
5855
  BFD_RELOC_PRU_GNU_DIFF32_PMEM
5856
ENUMDOC
5857
  PRU relocations to mark the difference of two local symbols.
5858
  These are only needed to support linker relaxation and can be
5859
  ignored when not relaxing.  The field is set to the value of the
5860
  difference assuming no relaxation.  The relocation encodes the
5861
  position of the second symbol so the linker can determine whether to
5862
  adjust the field value.  The PMEM variants encode the word
5863
  difference, instead of byte difference between symbols.
5864
5865
ENUM
5866
  BFD_RELOC_IQ2000_OFFSET_16
5867
ENUMX
5868
  BFD_RELOC_IQ2000_OFFSET_21
5869
ENUMX
5870
  BFD_RELOC_IQ2000_UHI16
5871
ENUMDOC
5872
  IQ2000 Relocations.
5873
5874
ENUM
5875
  BFD_RELOC_XTENSA_RTLD
5876
ENUMDOC
5877
  Special Xtensa relocation used only by PLT entries in ELF shared
5878
  objects to indicate that the runtime linker should set the value
5879
  to one of its own internal functions or data structures.
5880
ENUM
5881
  BFD_RELOC_XTENSA_PLT
5882
ENUMDOC
5883
  Xtensa relocation used in ELF object files for symbols that may
5884
  require PLT entries.  Otherwise, this is just a generic 32-bit
5885
  relocation.
5886
ENUM
5887
  BFD_RELOC_XTENSA_DIFF8
5888
ENUMX
5889
  BFD_RELOC_XTENSA_DIFF16
5890
ENUMX
5891
  BFD_RELOC_XTENSA_DIFF32
5892
ENUMDOC
5893
  Xtensa relocations for backward compatibility.  These have been
5894
  replaced by BFD_RELOC_XTENSA_PDIFF and BFD_RELOC_XTENSA_NDIFF.
5895
  Xtensa relocations to mark the difference of two local symbols.
5896
  These are only needed to support linker relaxation and can be
5897
  ignored when not relaxing.  The field is set to the value of the
5898
  difference assuming no relaxation.  The relocation encodes the
5899
  position of the first symbol so the linker can determine whether to
5900
  adjust the field value.
5901
ENUM
5902
  BFD_RELOC_XTENSA_SLOT0_OP
5903
ENUMX
5904
  BFD_RELOC_XTENSA_SLOT1_OP
5905
ENUMX
5906
  BFD_RELOC_XTENSA_SLOT2_OP
5907
ENUMX
5908
  BFD_RELOC_XTENSA_SLOT3_OP
5909
ENUMX
5910
  BFD_RELOC_XTENSA_SLOT4_OP
5911
ENUMX
5912
  BFD_RELOC_XTENSA_SLOT5_OP
5913
ENUMX
5914
  BFD_RELOC_XTENSA_SLOT6_OP
5915
ENUMX
5916
  BFD_RELOC_XTENSA_SLOT7_OP
5917
ENUMX
5918
  BFD_RELOC_XTENSA_SLOT8_OP
5919
ENUMX
5920
  BFD_RELOC_XTENSA_SLOT9_OP
5921
ENUMX
5922
  BFD_RELOC_XTENSA_SLOT10_OP
5923
ENUMX
5924
  BFD_RELOC_XTENSA_SLOT11_OP
5925
ENUMX
5926
  BFD_RELOC_XTENSA_SLOT12_OP
5927
ENUMX
5928
  BFD_RELOC_XTENSA_SLOT13_OP
5929
ENUMX
5930
  BFD_RELOC_XTENSA_SLOT14_OP
5931
ENUMDOC
5932
  Generic Xtensa relocations for instruction operands.  Only the slot
5933
  number is encoded in the relocation.  The relocation applies to the
5934
  last PC-relative immediate operand, or if there are no PC-relative
5935
  immediates, to the last immediate operand.
5936
ENUM
5937
  BFD_RELOC_XTENSA_SLOT0_ALT
5938
ENUMX
5939
  BFD_RELOC_XTENSA_SLOT1_ALT
5940
ENUMX
5941
  BFD_RELOC_XTENSA_SLOT2_ALT
5942
ENUMX
5943
  BFD_RELOC_XTENSA_SLOT3_ALT
5944
ENUMX
5945
  BFD_RELOC_XTENSA_SLOT4_ALT
5946
ENUMX
5947
  BFD_RELOC_XTENSA_SLOT5_ALT
5948
ENUMX
5949
  BFD_RELOC_XTENSA_SLOT6_ALT
5950
ENUMX
5951
  BFD_RELOC_XTENSA_SLOT7_ALT
5952
ENUMX
5953
  BFD_RELOC_XTENSA_SLOT8_ALT
5954
ENUMX
5955
  BFD_RELOC_XTENSA_SLOT9_ALT
5956
ENUMX
5957
  BFD_RELOC_XTENSA_SLOT10_ALT
5958
ENUMX
5959
  BFD_RELOC_XTENSA_SLOT11_ALT
5960
ENUMX
5961
  BFD_RELOC_XTENSA_SLOT12_ALT
5962
ENUMX
5963
  BFD_RELOC_XTENSA_SLOT13_ALT
5964
ENUMX
5965
  BFD_RELOC_XTENSA_SLOT14_ALT
5966
ENUMDOC
5967
  Alternate Xtensa relocations.  Only the slot is encoded in the
5968
  relocation.  The meaning of these relocations is opcode-specific.
5969
ENUM
5970
  BFD_RELOC_XTENSA_OP0
5971
ENUMX
5972
  BFD_RELOC_XTENSA_OP1
5973
ENUMX
5974
  BFD_RELOC_XTENSA_OP2
5975
ENUMDOC
5976
  Xtensa relocations for backward compatibility.  These have all been
5977
  replaced by BFD_RELOC_XTENSA_SLOT0_OP.
5978
ENUM
5979
  BFD_RELOC_XTENSA_ASM_EXPAND
5980
ENUMDOC
5981
  Xtensa relocation to mark that the assembler expanded the
5982
  instructions from an original target.  The expansion size is
5983
  encoded in the reloc size.
5984
ENUM
5985
  BFD_RELOC_XTENSA_ASM_SIMPLIFY
5986
ENUMDOC
5987
  Xtensa relocation to mark that the linker should simplify
5988
  assembler-expanded instructions.  This is commonly used
5989
  internally by the linker after analysis of a
5990
  BFD_RELOC_XTENSA_ASM_EXPAND.
5991
ENUM
5992
  BFD_RELOC_XTENSA_TLSDESC_FN
5993
ENUMX
5994
  BFD_RELOC_XTENSA_TLSDESC_ARG
5995
ENUMX
5996
  BFD_RELOC_XTENSA_TLS_DTPOFF
5997
ENUMX
5998
  BFD_RELOC_XTENSA_TLS_TPOFF
5999
ENUMX
6000
  BFD_RELOC_XTENSA_TLS_FUNC
6001
ENUMX
6002
  BFD_RELOC_XTENSA_TLS_ARG
6003
ENUMX
6004
  BFD_RELOC_XTENSA_TLS_CALL
6005
ENUMDOC
6006
  Xtensa TLS relocations.
6007
ENUM
6008
  BFD_RELOC_XTENSA_PDIFF8
6009
ENUMX
6010
  BFD_RELOC_XTENSA_PDIFF16
6011
ENUMX
6012
  BFD_RELOC_XTENSA_PDIFF32
6013
ENUMX
6014
  BFD_RELOC_XTENSA_NDIFF8
6015
ENUMX
6016
  BFD_RELOC_XTENSA_NDIFF16
6017
ENUMX
6018
  BFD_RELOC_XTENSA_NDIFF32
6019
ENUMDOC
6020
  Xtensa relocations to mark the difference of two local symbols.
6021
  These are only needed to support linker relaxation and can be
6022
  ignored when not relaxing.  The field is set to the value of the
6023
  difference assuming no relaxation.  The relocation encodes the
6024
  position of the subtracted symbol so the linker can determine
6025
  whether to adjust the field value.  PDIFF relocations are used for
6026
  positive differences, NDIFF relocations are used for negative
6027
  differences.  The difference value is treated as unsigned with these
6028
  relocation types, giving full 8/16 value ranges.
6029
6030
ENUM
6031
  BFD_RELOC_Z80_DISP8
6032
ENUMDOC
6033
  8 bit signed offset in (ix+d) or (iy+d).
6034
ENUM
6035
  BFD_RELOC_Z80_BYTE0
6036
ENUMDOC
6037
  First 8 bits of multibyte (32, 24 or 16 bit) value.
6038
ENUM
6039
  BFD_RELOC_Z80_BYTE1
6040
ENUMDOC
6041
  Second 8 bits of multibyte (32, 24 or 16 bit) value.
6042
ENUM
6043
  BFD_RELOC_Z80_BYTE2
6044
ENUMDOC
6045
  Third 8 bits of multibyte (32 or 24 bit) value.
6046
ENUM
6047
  BFD_RELOC_Z80_BYTE3
6048
ENUMDOC
6049
  Fourth 8 bits of multibyte (32 bit) value.
6050
ENUM
6051
  BFD_RELOC_Z80_WORD0
6052
ENUMDOC
6053
  Lowest 16 bits of multibyte (32 or 24 bit) value.
6054
ENUM
6055
  BFD_RELOC_Z80_WORD1
6056
ENUMDOC
6057
  Highest 16 bits of multibyte (32 or 24 bit) value.
6058
ENUM
6059
  BFD_RELOC_Z80_16_BE
6060
ENUMDOC
6061
  Like BFD_RELOC_16 but big-endian.
6062
6063
ENUM
6064
  BFD_RELOC_Z8K_DISP7
6065
ENUMDOC
6066
  DJNZ offset.
6067
ENUM
6068
  BFD_RELOC_Z8K_CALLR
6069
ENUMDOC
6070
  CALR offset.
6071
ENUM
6072
  BFD_RELOC_Z8K_IMM4L
6073
ENUMDOC
6074
  4 bit value.
6075
6076
ENUM
6077
  BFD_RELOC_LM32_CALL
6078
ENUMX
6079
  BFD_RELOC_LM32_BRANCH
6080
ENUMX
6081
  BFD_RELOC_LM32_16_GOT
6082
ENUMDOC
6083
  Lattice Mico32 relocations.
6084
6085
ENUM
6086
  BFD_RELOC_MACH_O_SECTDIFF
6087
ENUMDOC
6088
  Difference between two section addreses.  Must be followed by a
6089
  BFD_RELOC_MACH_O_PAIR.
6090
ENUM
6091
  BFD_RELOC_MACH_O_LOCAL_SECTDIFF
6092
ENUMDOC
6093
  Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.
6094
ENUM
6095
  BFD_RELOC_MACH_O_PAIR
6096
ENUMDOC
6097
  Pair of relocation.  Contains the first symbol.
6098
ENUM
6099
  BFD_RELOC_MACH_O_SUBTRACTOR32
6100
ENUMDOC
6101
  Symbol will be substracted.  Must be followed by a BFD_RELOC_32.
6102
ENUM
6103
  BFD_RELOC_MACH_O_SUBTRACTOR64
6104
ENUMDOC
6105
  Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
6106
6107
ENUM
6108
  BFD_RELOC_MACH_O_X86_64_BRANCH32
6109
ENUMX
6110
  BFD_RELOC_MACH_O_X86_64_BRANCH8
6111
ENUMDOC
6112
  PCREL relocations.  They are marked as branch to create PLT entry if
6113
  required.
6114
ENUM
6115
  BFD_RELOC_MACH_O_X86_64_GOT
6116
ENUMDOC
6117
  Used when referencing a GOT entry.
6118
ENUM
6119
  BFD_RELOC_MACH_O_X86_64_GOT_LOAD
6120
ENUMDOC
6121
  Used when loading a GOT entry with movq.  It is specially marked so
6122
  that the linker could optimize the movq to a leaq if possible.
6123
ENUM
6124
  BFD_RELOC_MACH_O_X86_64_PCREL32_1
6125
ENUMDOC
6126
  Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
6127
ENUM
6128
  BFD_RELOC_MACH_O_X86_64_PCREL32_2
6129
ENUMDOC
6130
  Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.
6131
ENUM
6132
  BFD_RELOC_MACH_O_X86_64_PCREL32_4
6133
ENUMDOC
6134
  Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
6135
ENUM
6136
  BFD_RELOC_MACH_O_X86_64_TLV
6137
ENUMDOC
6138
  Used when referencing a TLV entry.
6139
6140
6141
ENUM
6142
  BFD_RELOC_MACH_O_ARM64_ADDEND
6143
ENUMDOC
6144
  Addend for PAGE or PAGEOFF.
6145
ENUM
6146
  BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21
6147
ENUMDOC
6148
  Relative offset to page of GOT slot.
6149
ENUM
6150
  BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12
6151
ENUMDOC
6152
  Relative offset within page of GOT slot.
6153
ENUM
6154
  BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT
6155
ENUMDOC
6156
  Address of a GOT entry.
6157
6158
ENUM
6159
  BFD_RELOC_MICROBLAZE_32_LO
6160
ENUMDOC
6161
  This is a 32 bit reloc for the microblaze that stores the low 16
6162
  bits of a value.
6163
ENUM
6164
  BFD_RELOC_MICROBLAZE_32_LO_PCREL
6165
ENUMDOC
6166
  This is a 32 bit pc-relative reloc for the microblaze that stores
6167
  the low 16 bits of a value.
6168
ENUM
6169
  BFD_RELOC_MICROBLAZE_32_ROSDA
6170
ENUMDOC
6171
  This is a 32 bit reloc for the microblaze that stores a value
6172
  relative to the read-only small data area anchor.
6173
ENUM
6174
  BFD_RELOC_MICROBLAZE_32_RWSDA
6175
ENUMDOC
6176
  This is a 32 bit reloc for the microblaze that stores a value
6177
  relative to the read-write small data area anchor.
6178
ENUM
6179
  BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
6180
ENUMDOC
6181
  This is a 32 bit reloc for the microblaze to handle expressions of
6182
  the form "Symbol Op Symbol".
6183
ENUM
6184
  BFD_RELOC_MICROBLAZE_32_NONE
6185
ENUMDOC
6186
  This is a 32 bit reloc that stores the 32 bit pc relative value in
6187
  two words (with an imm instruction).  No relocation is done here -
6188
  only used for relaxing.
6189
ENUM
6190
  BFD_RELOC_MICROBLAZE_64_NONE
6191
ENUMDOC
6192
  This is a 64 bit reloc that stores the 32 bit pc relative value in
6193
  two words (with an imm instruction).  No relocation is done here -
6194
  only used for relaxing.
6195
ENUM
6196
  BFD_RELOC_MICROBLAZE_64_GOTPC
6197
ENUMDOC
6198
  This is a 64 bit reloc that stores the 32 bit pc relative value in
6199
  two words (with an imm instruction).  The relocation is PC-relative
6200
  GOT offset.
6201
ENUM
6202
  BFD_RELOC_MICROBLAZE_64_GOT
6203
ENUMDOC
6204
  This is a 64 bit reloc that stores the 32 bit pc relative value in
6205
  two words (with an imm instruction).  The relocation is GOT offset.
6206
ENUM
6207
  BFD_RELOC_MICROBLAZE_64_PLT
6208
ENUMDOC
6209
  This is a 64 bit reloc that stores the 32 bit pc relative value in
6210
  two words (with an imm instruction).  The relocation is PC-relative
6211
  offset into PLT.
6212
ENUM
6213
  BFD_RELOC_MICROBLAZE_64_GOTOFF
6214
ENUMDOC
6215
  This is a 64 bit reloc that stores the 32 bit GOT relative value in
6216
  two words (with an imm instruction).  The relocation is relative
6217
  offset from _GLOBAL_OFFSET_TABLE_.
6218
ENUM
6219
  BFD_RELOC_MICROBLAZE_32_GOTOFF
6220
ENUMDOC
6221
  This is a 32 bit reloc that stores the 32 bit GOT relative value in
6222
  a word.  The relocation is relative offset from
6223
  _GLOBAL_OFFSET_TABLE_.
6224
ENUM
6225
  BFD_RELOC_MICROBLAZE_64_TLS
6226
ENUMDOC
6227
  Unused Reloc.
6228
ENUM
6229
  BFD_RELOC_MICROBLAZE_64_TLSGD
6230
ENUMDOC
6231
  This is a 64 bit reloc that stores the 32 bit GOT relative value
6232
  of the GOT TLS GD info entry in two words (with an imm instruction).
6233
  The relocation is GOT offset.
6234
ENUM
6235
  BFD_RELOC_MICROBLAZE_64_TLSLD
6236
ENUMDOC
6237
  This is a 64 bit reloc that stores the 32 bit GOT relative value
6238
  of the GOT TLS LD info entry in two words (with an imm instruction).
6239
  The relocation is GOT offset.
6240
ENUM
6241
  BFD_RELOC_MICROBLAZE_32_TLSDTPMOD
6242
ENUMDOC
6243
  This is a 32 bit reloc that stores the Module ID to GOT(n).
6244
ENUM
6245
  BFD_RELOC_MICROBLAZE_32_TLSDTPREL
6246
ENUMDOC
6247
  This is a 32 bit reloc that stores TLS offset to GOT(n+1).
6248
ENUM
6249
  BFD_RELOC_MICROBLAZE_64_TLSDTPREL
6250
ENUMDOC
6251
  This is a 32 bit reloc for storing TLS offset to two words (uses imm
6252
  instruction).
6253
ENUM
6254
  BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL
6255
ENUMDOC
6256
  This is a 64 bit reloc that stores 32-bit thread pointer relative
6257
  offset to two words (uses imm instruction).
6258
ENUM
6259
  BFD_RELOC_MICROBLAZE_64_TLSTPREL
6260
ENUMDOC
6261
  This is a 64 bit reloc that stores 32-bit thread pointer relative
6262
  offset to two words (uses imm instruction).
6263
ENUM
6264
  BFD_RELOC_MICROBLAZE_64_TEXTPCREL
6265
ENUMDOC
6266
  This is a 64 bit reloc that stores the 32 bit pc relative value in
6267
  two words (with an imm instruction).  The relocation is PC-relative
6268
  offset from start of TEXT.
6269
ENUM
6270
  BFD_RELOC_MICROBLAZE_64_TEXTREL
6271
ENUMDOC
6272
  This is a 64 bit reloc that stores the 32 bit offset value in two
6273
  words (with an imm instruction).  The relocation is relative offset
6274
  from start of TEXT.
6275
ENUM
6276
  BFD_RELOC_KVX_RELOC_START
6277
ENUMDOC
6278
  KVX pseudo relocation code to mark the start of the KVX relocation
6279
  enumerators.  N.B. the order of the enumerators is important as
6280
  several tables in the KVX bfd backend are indexed by these
6281
  enumerators; make sure they are all synced.
6282
ENUM
6283
  BFD_RELOC_KVX_NONE
6284
ENUMDOC
6285
  KVX null relocation code.
6286
ENUM
6287
BFD_RELOC_KVX_16
6288
ENUMX
6289
BFD_RELOC_KVX_32
6290
ENUMX
6291
BFD_RELOC_KVX_64
6292
ENUMX
6293
BFD_RELOC_KVX_S16_PCREL
6294
ENUMX
6295
BFD_RELOC_KVX_PCREL17
6296
ENUMX
6297
BFD_RELOC_KVX_PCREL27
6298
ENUMX
6299
BFD_RELOC_KVX_32_PCREL
6300
ENUMX
6301
BFD_RELOC_KVX_S37_PCREL_LO10
6302
ENUMX
6303
BFD_RELOC_KVX_S37_PCREL_UP27
6304
ENUMX
6305
BFD_RELOC_KVX_S43_PCREL_LO10
6306
ENUMX
6307
BFD_RELOC_KVX_S43_PCREL_UP27
6308
ENUMX
6309
BFD_RELOC_KVX_S43_PCREL_EX6
6310
ENUMX
6311
BFD_RELOC_KVX_S64_PCREL_LO10
6312
ENUMX
6313
BFD_RELOC_KVX_S64_PCREL_UP27
6314
ENUMX
6315
BFD_RELOC_KVX_S64_PCREL_EX27
6316
ENUMX
6317
BFD_RELOC_KVX_64_PCREL
6318
ENUMX
6319
BFD_RELOC_KVX_S16
6320
ENUMX
6321
BFD_RELOC_KVX_S32_LO5
6322
ENUMX
6323
BFD_RELOC_KVX_S32_UP27
6324
ENUMX
6325
BFD_RELOC_KVX_S37_LO10
6326
ENUMX
6327
BFD_RELOC_KVX_S37_UP27
6328
ENUMX
6329
BFD_RELOC_KVX_S37_GOTOFF_LO10
6330
ENUMX
6331
BFD_RELOC_KVX_S37_GOTOFF_UP27
6332
ENUMX
6333
BFD_RELOC_KVX_S43_GOTOFF_LO10
6334
ENUMX
6335
BFD_RELOC_KVX_S43_GOTOFF_UP27
6336
ENUMX
6337
BFD_RELOC_KVX_S43_GOTOFF_EX6
6338
ENUMX
6339
BFD_RELOC_KVX_32_GOTOFF
6340
ENUMX
6341
BFD_RELOC_KVX_64_GOTOFF
6342
ENUMX
6343
BFD_RELOC_KVX_32_GOT
6344
ENUMX
6345
BFD_RELOC_KVX_S37_GOT_LO10
6346
ENUMX
6347
BFD_RELOC_KVX_S37_GOT_UP27
6348
ENUMX
6349
BFD_RELOC_KVX_S43_GOT_LO10
6350
ENUMX
6351
BFD_RELOC_KVX_S43_GOT_UP27
6352
ENUMX
6353
BFD_RELOC_KVX_S43_GOT_EX6
6354
ENUMX
6355
BFD_RELOC_KVX_64_GOT
6356
ENUMX
6357
BFD_RELOC_KVX_GLOB_DAT
6358
ENUMX
6359
BFD_RELOC_KVX_COPY
6360
ENUMX
6361
BFD_RELOC_KVX_JMP_SLOT
6362
ENUMX
6363
BFD_RELOC_KVX_RELATIVE
6364
ENUMX
6365
BFD_RELOC_KVX_S43_LO10
6366
ENUMX
6367
BFD_RELOC_KVX_S43_UP27
6368
ENUMX
6369
BFD_RELOC_KVX_S43_EX6
6370
ENUMX
6371
BFD_RELOC_KVX_S64_LO10
6372
ENUMX
6373
BFD_RELOC_KVX_S64_UP27
6374
ENUMX
6375
BFD_RELOC_KVX_S64_EX27
6376
ENUMX
6377
BFD_RELOC_KVX_S37_GOTADDR_LO10
6378
ENUMX
6379
BFD_RELOC_KVX_S37_GOTADDR_UP27
6380
ENUMX
6381
BFD_RELOC_KVX_S43_GOTADDR_LO10
6382
ENUMX
6383
BFD_RELOC_KVX_S43_GOTADDR_UP27
6384
ENUMX
6385
BFD_RELOC_KVX_S43_GOTADDR_EX6
6386
ENUMX
6387
BFD_RELOC_KVX_S64_GOTADDR_LO10
6388
ENUMX
6389
BFD_RELOC_KVX_S64_GOTADDR_UP27
6390
ENUMX
6391
BFD_RELOC_KVX_S64_GOTADDR_EX27
6392
ENUMX
6393
BFD_RELOC_KVX_64_DTPMOD
6394
ENUMX
6395
BFD_RELOC_KVX_64_DTPOFF
6396
ENUMX
6397
BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10
6398
ENUMX
6399
BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27
6400
ENUMX
6401
BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10
6402
ENUMX
6403
BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27
6404
ENUMX
6405
BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6
6406
ENUMX
6407
BFD_RELOC_KVX_S37_TLS_GD_LO10
6408
ENUMX
6409
BFD_RELOC_KVX_S37_TLS_GD_UP27
6410
ENUMX
6411
BFD_RELOC_KVX_S43_TLS_GD_LO10
6412
ENUMX
6413
BFD_RELOC_KVX_S43_TLS_GD_UP27
6414
ENUMX
6415
BFD_RELOC_KVX_S43_TLS_GD_EX6
6416
ENUMX
6417
BFD_RELOC_KVX_S37_TLS_LD_LO10
6418
ENUMX
6419
BFD_RELOC_KVX_S37_TLS_LD_UP27
6420
ENUMX
6421
BFD_RELOC_KVX_S43_TLS_LD_LO10
6422
ENUMX
6423
BFD_RELOC_KVX_S43_TLS_LD_UP27
6424
ENUMX
6425
BFD_RELOC_KVX_S43_TLS_LD_EX6
6426
ENUMX
6427
BFD_RELOC_KVX_64_TPOFF
6428
ENUMX
6429
BFD_RELOC_KVX_S37_TLS_IE_LO10
6430
ENUMX
6431
BFD_RELOC_KVX_S37_TLS_IE_UP27
6432
ENUMX
6433
BFD_RELOC_KVX_S43_TLS_IE_LO10
6434
ENUMX
6435
BFD_RELOC_KVX_S43_TLS_IE_UP27
6436
ENUMX
6437
BFD_RELOC_KVX_S43_TLS_IE_EX6
6438
ENUMX
6439
BFD_RELOC_KVX_S37_TLS_LE_LO10
6440
ENUMX
6441
BFD_RELOC_KVX_S37_TLS_LE_UP27
6442
ENUMX
6443
BFD_RELOC_KVX_S43_TLS_LE_LO10
6444
ENUMX
6445
BFD_RELOC_KVX_S43_TLS_LE_UP27
6446
ENUMX
6447
BFD_RELOC_KVX_S43_TLS_LE_EX6
6448
ENUMX
6449
BFD_RELOC_KVX_8
6450
ENUMDOC
6451
  KVX Relocations.
6452
ENUM
6453
  BFD_RELOC_KVX_RELOC_END
6454
ENUMDOC
6455
  KVX pseudo relocation code to mark the end of the KVX relocation
6456
  enumerators that have direct mapping to ELF reloc codes.  There are
6457
  a few more enumerators after this one; those are mainly used by the
6458
  KVX assembler for the internal fixup or to select one of the above
6459
  enumerators.
6460
ENUM
6461
  BFD_RELOC_AARCH64_RELOC_START
6462
ENUMDOC
6463
  AArch64 pseudo relocation code to mark the start of the AArch64
6464
  relocation enumerators.  N.B. the order of the enumerators is
6465
  important as several tables in the AArch64 bfd backend are indexed
6466
  by these enumerators; make sure they are all synced.
6467
ENUM
6468
  BFD_RELOC_AARCH64_NULL
6469
ENUMDOC
6470
  Deprecated AArch64 null relocation code.
6471
ENUM
6472
  BFD_RELOC_AARCH64_NONE
6473
ENUMDOC
6474
  AArch64 null relocation code.
6475
ENUM
6476
  BFD_RELOC_AARCH64_64
6477
ENUMX
6478
  BFD_RELOC_AARCH64_32
6479
ENUMX
6480
  BFD_RELOC_AARCH64_16
6481
ENUMDOC
6482
  Basic absolute relocations of N bits.  These are equivalent to
6483
  BFD_RELOC_N and they were added to assist the indexing of the howto
6484
  table.
6485
ENUM
6486
  BFD_RELOC_AARCH64_64_PCREL
6487
ENUMX
6488
  BFD_RELOC_AARCH64_32_PCREL
6489
ENUMX
6490
  BFD_RELOC_AARCH64_16_PCREL
6491
ENUMDOC
6492
  PC-relative relocations.  These are equivalent to BFD_RELOC_N_PCREL
6493
  and they were added to assist the indexing of the howto table.
6494
ENUM
6495
  BFD_RELOC_AARCH64_MOVW_G0
6496
ENUMDOC
6497
  AArch64 MOV[NZK] instruction with most significant bits 0 to 15 of
6498
  an unsigned address/value.
6499
ENUM
6500
  BFD_RELOC_AARCH64_MOVW_G0_NC
6501
ENUMDOC
6502
  AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
6503
  an address/value.  No overflow checking.
6504
ENUM
6505
  BFD_RELOC_AARCH64_MOVW_G1
6506
ENUMDOC
6507
  AArch64 MOV[NZK] instruction with most significant bits 16 to 31 of
6508
  an unsigned address/value.
6509
ENUM
6510
  BFD_RELOC_AARCH64_MOVW_G1_NC
6511
ENUMDOC
6512
  AArch64 MOV[NZK] instruction with less significant bits 16 to 31 of
6513
  an address/value.  No overflow checking.
6514
ENUM
6515
  BFD_RELOC_AARCH64_MOVW_G2
6516
ENUMDOC
6517
  AArch64 MOV[NZK] instruction with most significant bits 32 to 47 of
6518
  an unsigned address/value.
6519
ENUM
6520
  BFD_RELOC_AARCH64_MOVW_G2_NC
6521
ENUMDOC
6522
  AArch64 MOV[NZK] instruction with less significant bits 32 to 47 of
6523
  an address/value.  No overflow checking.
6524
ENUM
6525
  BFD_RELOC_AARCH64_MOVW_G3
6526
ENUMDOC
6527
  AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 of a
6528
  signed or unsigned address/value.
6529
ENUM
6530
  BFD_RELOC_AARCH64_MOVW_G0_S
6531
ENUMDOC
6532
  AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
6533
  signed value.  Changes instruction to MOVZ or MOVN depending on the
6534
  value's sign.
6535
ENUM
6536
  BFD_RELOC_AARCH64_MOVW_G1_S
6537
ENUMDOC
6538
  AArch64 MOV[NZ] instruction with most significant bits 16 to 31 of a
6539
  signed value.  Changes instruction to MOVZ or MOVN depending on the
6540
  value's sign.
6541
ENUM
6542
  BFD_RELOC_AARCH64_MOVW_G2_S
6543
ENUMDOC
6544
  AArch64 MOV[NZ] instruction with most significant bits 32 to 47 of a
6545
  signed value.  Changes instruction to MOVZ or MOVN depending on the
6546
  value's sign.
6547
ENUM
6548
  BFD_RELOC_AARCH64_MOVW_PREL_G0
6549
ENUMDOC
6550
  AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
6551
  signed value.  Changes instruction to MOVZ or MOVN depending on the
6552
  value's sign.
6553
ENUM
6554
  BFD_RELOC_AARCH64_MOVW_PREL_G0_NC
6555
ENUMDOC
6556
  AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
6557
  signed value.  Changes instruction to MOVZ or MOVN depending on the
6558
  value's sign.
6559
ENUM
6560
  BFD_RELOC_AARCH64_MOVW_PREL_G1
6561
ENUMDOC
6562
  AArch64 MOVK instruction with most significant bits 16 to 31 of a
6563
  signed value.
6564
ENUM
6565
  BFD_RELOC_AARCH64_MOVW_PREL_G1_NC
6566
ENUMDOC
6567
  AArch64 MOVK instruction with most significant bits 16 to 31 of a
6568
  signed value.
6569
ENUM
6570
  BFD_RELOC_AARCH64_MOVW_PREL_G2
6571
ENUMDOC
6572
  AArch64 MOVK instruction with most significant bits 32 to 47 of a
6573
  signed value.
6574
ENUM
6575
  BFD_RELOC_AARCH64_MOVW_PREL_G2_NC
6576
ENUMDOC
6577
  AArch64 MOVK instruction with most significant bits 32 to 47 of a
6578
  signed value.
6579
ENUM
6580
  BFD_RELOC_AARCH64_MOVW_PREL_G3
6581
ENUMDOC
6582
  AArch64 MOVK instruction with most significant bits 47 to 63 of a
6583
  signed value.
6584
ENUM
6585
  BFD_RELOC_AARCH64_LD_LO19_PCREL
6586
ENUMDOC
6587
  AArch64 Load Literal instruction, holding a 19 bit pc-relative word
6588
  offset.  The lowest two bits must be zero and are not stored in the
6589
  instruction, giving a 21 bit signed byte offset.
6590
ENUM
6591
  BFD_RELOC_AARCH64_ADR_LO21_PCREL
6592
ENUMDOC
6593
  AArch64 ADR instruction, holding a simple 21 bit pc-relative byte
6594
  offset.
6595
ENUM
6596
  BFD_RELOC_AARCH64_ADR_HI21_PCREL
6597
ENUMDOC
6598
  AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
6599
  offset, giving a 4KB aligned page base address.
6600
ENUM
6601
  BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL
6602
ENUMDOC
6603
  AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
6604
  offset, giving a 4KB aligned page base address, but with no overflow
6605
  checking.
6606
ENUM
6607
  BFD_RELOC_AARCH64_ADD_LO12
6608
ENUMDOC
6609
  AArch64 ADD immediate instruction, holding bits 0 to 11 of the
6610
  address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6611
ENUM
6612
  BFD_RELOC_AARCH64_LDST8_LO12
6613
ENUMDOC
6614
  AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
6615
  address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6616
ENUM
6617
  BFD_RELOC_AARCH64_TSTBR14
6618
ENUMDOC
6619
  AArch64 14 bit pc-relative test bit and branch.
6620
  The lowest two bits must be zero and are not stored in the
6621
  instruction, giving a 16 bit signed byte offset.
6622
ENUM
6623
  BFD_RELOC_AARCH64_BRANCH19
6624
ENUMDOC
6625
  AArch64 19 bit pc-relative conditional branch and compare & branch.
6626
  The lowest two bits must be zero and are not stored in the
6627
  instruction, giving a 21 bit signed byte offset.
6628
ENUM
6629
  BFD_RELOC_AARCH64_JUMP26
6630
ENUMDOC
6631
  AArch64 26 bit pc-relative unconditional branch.
6632
  The lowest two bits must be zero and are not stored in the
6633
  instruction, giving a 28 bit signed byte offset.
6634
ENUM
6635
  BFD_RELOC_AARCH64_CALL26
6636
ENUMDOC
6637
  AArch64 26 bit pc-relative unconditional branch and link.
6638
  The lowest two bits must be zero and are not stored in the
6639
  instruction, giving a 28 bit signed byte offset.
6640
ENUM
6641
  BFD_RELOC_AARCH64_LDST16_LO12
6642
ENUMDOC
6643
  AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
6644
  address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6645
ENUM
6646
  BFD_RELOC_AARCH64_LDST32_LO12
6647
ENUMDOC
6648
  AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
6649
  address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6650
ENUM
6651
  BFD_RELOC_AARCH64_LDST64_LO12
6652
ENUMDOC
6653
  AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
6654
  address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6655
ENUM
6656
  BFD_RELOC_AARCH64_LDST128_LO12
6657
ENUMDOC
6658
  AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
6659
  address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6660
ENUM
6661
  BFD_RELOC_AARCH64_GOT_LD_PREL19
6662
ENUMDOC
6663
  AArch64 Load Literal instruction, holding a 19 bit PC relative word
6664
  offset of the global offset table entry for a symbol.  The lowest
6665
  two bits must be zero and are not stored in the instruction, giving
6666
  a 21 bit signed byte offset.  This relocation type requires signed
6667
  overflow checking.
6668
ENUM
6669
  BFD_RELOC_AARCH64_ADR_GOT_PAGE
6670
ENUMDOC
6671
  Get to the page base of the global offset table entry for a symbol
6672
  as part of an ADRP instruction using a 21 bit PC relative value.
6673
  Used in conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
6674
ENUM
6675
  BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
6676
ENUMDOC
6677
  Unsigned 12 bit byte offset for 64 bit load/store from the page of
6678
  the GOT entry for this symbol.  Used in conjunction with
6679
  BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in LP64 ABI only.
6680
ENUM
6681
  BFD_RELOC_AARCH64_LD32_GOT_LO12_NC
6682
ENUMDOC
6683
  Unsigned 12 bit byte offset for 32 bit load/store from the page of
6684
  the GOT entry for this symbol.  Used in conjunction with
6685
  BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in ILP32 ABI only.
6686
 ENUM
6687
  BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC
6688
ENUMDOC
6689
  Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry
6690
  for this symbol.  Valid in LP64 ABI only.
6691
ENUM
6692
  BFD_RELOC_AARCH64_MOVW_GOTOFF_G1
6693
ENUMDOC
6694
  Unsigned 16 bit byte higher offset for 64 bit load/store from the
6695
  GOT entry for this symbol.  Valid in LP64 ABI only.
6696
ENUM
6697
  BFD_RELOC_AARCH64_LD64_GOTOFF_LO15
6698
ENUMDOC
6699
  Unsigned 15 bit byte offset for 64 bit load/store from the page of
6700
  the GOT entry for this symbol.  Valid in LP64 ABI only.
6701
ENUM
6702
  BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14
6703
ENUMDOC
6704
  Scaled 14 bit byte offset to the page base of the global offset
6705
  table.
6706
ENUM
6707
  BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
6708
ENUMDOC
6709
  Scaled 15 bit byte offset to the page base of the global offset
6710
  table.
6711
ENUM
6712
  BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
6713
ENUMDOC
6714
  Get to the page base of the global offset table entry for a symbols
6715
  tls_index structure as part of an adrp instruction using a 21 bit PC
6716
  relative value.  Used in conjunction with
6717
  BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
6718
ENUM
6719
  BFD_RELOC_AARCH64_TLSGD_ADR_PREL21
6720
ENUMDOC
6721
  AArch64 TLS General Dynamic.
6722
ENUM
6723
  BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
6724
ENUMDOC
6725
  Unsigned 12 bit byte offset to global offset table entry for a
6726
  symbol's tls_index structure.  Used in conjunction with
6727
  BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
6728
ENUM
6729
  BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC
6730
ENUMDOC
6731
  AArch64 TLS General Dynamic relocation.
6732
ENUM
6733
  BFD_RELOC_AARCH64_TLSGD_MOVW_G1
6734
ENUMDOC
6735
  AArch64 TLS General Dynamic relocation.
6736
ENUM
6737
  BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
6738
ENUMDOC
6739
  AArch64 TLS INITIAL EXEC relocation.
6740
ENUM
6741
  BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
6742
ENUMDOC
6743
  AArch64 TLS INITIAL EXEC relocation.
6744
ENUM
6745
  BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC
6746
ENUMDOC
6747
  AArch64 TLS INITIAL EXEC relocation.
6748
ENUM
6749
  BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19
6750
ENUMDOC
6751
  AArch64 TLS INITIAL EXEC relocation.
6752
ENUM
6753
  BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
6754
ENUMDOC
6755
  AArch64 TLS INITIAL EXEC relocation.
6756
ENUM
6757
  BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1
6758
ENUMDOC
6759
  AArch64 TLS INITIAL EXEC relocation.
6760
ENUM
6761
  BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12
6762
ENUMDOC
6763
  bit[23:12] of byte offset to module TLS base address.
6764
ENUM
6765
  BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12
6766
ENUMDOC
6767
  Unsigned 12 bit byte offset to module TLS base address.
6768
ENUM
6769
  BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
6770
ENUMDOC
6771
  No overflow check version of
6772
  BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.
6773
ENUM
6774
  BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC
6775
ENUMDOC
6776
  Unsigned 12 bit byte offset to global offset table entry for a
6777
  symbol's tls_index structure.  Used in conjunction with
6778
  BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.
6779
ENUM
6780
  BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21
6781
ENUMDOC
6782
  GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP
6783
  instruction.
6784
ENUM
6785
  BFD_RELOC_AARCH64_TLSLD_ADR_PREL21
6786
ENUMDOC
6787
  GOT entry address for AArch64 TLS Local Dynamic, used with ADR
6788
  instruction.
6789
ENUM
6790
  BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12
6791
ENUMDOC
6792
  bit[11:1] of byte offset to module TLS base address, encoded in ldst
6793
  instructions.
6794
ENUM
6795
  BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
6796
ENUMDOC
6797
  Similar to BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no
6798
  overflow check.
6799
ENUM
6800
  BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12
6801
ENUMDOC
6802
  bit[11:2] of byte offset to module TLS base address, encoded in ldst
6803
  instructions.
6804
ENUM
6805
  BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
6806
ENUMDOC
6807
  Similar to BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no
6808
  overflow check. 
6809
ENUM
6810
  BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12
6811
ENUMDOC
6812
  bit[11:3] of byte offset to module TLS base address, encoded in ldst
6813
  instructions.
6814
ENUM
6815
  BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
6816
ENUMDOC
6817
  Similar to BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no
6818
  overflow check.
6819
ENUM
6820
  BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12
6821
ENUMDOC
6822
  bit[11:0] of byte offset to module TLS base address, encoded in ldst
6823
  instructions.
6824
ENUM
6825
  BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
6826
ENUMDOC
6827
  Similar to BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no
6828
  overflow check.
6829
ENUM
6830
  BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
6831
ENUMDOC
6832
  bit[15:0] of byte offset to module TLS base address.
6833
ENUM
6834
  BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
6835
ENUMDOC
6836
  No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0.
6837
ENUM
6838
  BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
6839
ENUMDOC
6840
  bit[31:16] of byte offset to module TLS base address.
6841
ENUM
6842
  BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
6843
ENUMDOC
6844
  No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1.
6845
ENUM
6846
  BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2
6847
ENUMDOC
6848
  bit[47:32] of byte offset to module TLS base address.
6849
ENUM
6850
  BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
6851
ENUMDOC
6852
  AArch64 TLS LOCAL EXEC relocation.
6853
ENUM
6854
  BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
6855
ENUMDOC
6856
  AArch64 TLS LOCAL EXEC relocation.
6857
ENUM
6858
  BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
6859
ENUMDOC
6860
  AArch64 TLS LOCAL EXEC relocation.
6861
ENUM
6862
  BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0
6863
ENUMDOC
6864
  AArch64 TLS LOCAL EXEC relocation.
6865
ENUM
6866
  BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
6867
ENUMDOC
6868
  AArch64 TLS LOCAL EXEC relocation.
6869
ENUM
6870
  BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
6871
ENUMDOC
6872
  AArch64 TLS LOCAL EXEC relocation.
6873
ENUM
6874
  BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12
6875
ENUMDOC
6876
  AArch64 TLS LOCAL EXEC relocation.
6877
ENUM
6878
  BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC
6879
ENUMDOC
6880
  AArch64 TLS LOCAL EXEC relocation.
6881
ENUM
6882
  BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12
6883
ENUMDOC
6884
  bit[11:1] of byte offset to module TLS base address, encoded in ldst
6885
  instructions.
6886
ENUM
6887
  BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
6888
ENUMDOC
6889
  Similar to BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no
6890
  overflow check.
6891
ENUM
6892
  BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12
6893
ENUMDOC
6894
  bit[11:2] of byte offset to module TLS base address, encoded in ldst
6895
  instructions.
6896
ENUM
6897
  BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
6898
ENUMDOC
6899
  Similar to BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no
6900
  overflow check.
6901
ENUM
6902
  BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12
6903
ENUMDOC
6904
  bit[11:3] of byte offset to module TLS base address, encoded in ldst
6905
  instructions.
6906
ENUM
6907
  BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
6908
ENUMDOC
6909
  Similar to BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no
6910
  overflow check.
6911
ENUM
6912
  BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12
6913
ENUMDOC
6914
  bit[11:0] of byte offset to module TLS base address, encoded in ldst
6915
  instructions.
6916
ENUM
6917
  BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
6918
ENUMDOC
6919
  Similar to BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow
6920
  check.
6921
ENUM
6922
  BFD_RELOC_AARCH64_TLSDESC_LD_PREL19
6923
ENUMX
6924
  BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
6925
ENUMX
6926
  BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21
6927
ENUMX
6928
  BFD_RELOC_AARCH64_TLSDESC_LD64_LO12
6929
ENUMX
6930
  BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
6931
ENUMX
6932
  BFD_RELOC_AARCH64_TLSDESC_ADD_LO12
6933
ENUMX
6934
  BFD_RELOC_AARCH64_TLSDESC_OFF_G1
6935
ENUMX
6936
  BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
6937
ENUMX
6938
  BFD_RELOC_AARCH64_TLSDESC_LDR
6939
ENUMX
6940
  BFD_RELOC_AARCH64_TLSDESC_ADD
6941
ENUMX
6942
  BFD_RELOC_AARCH64_TLSDESC_CALL
6943
ENUMDOC
6944
  AArch64 TLS DESC relocations.
6945
ENUM
6946
  BFD_RELOC_AARCH64_COPY
6947
ENUMX
6948
  BFD_RELOC_AARCH64_GLOB_DAT
6949
ENUMX
6950
  BFD_RELOC_AARCH64_JUMP_SLOT
6951
ENUMX
6952
  BFD_RELOC_AARCH64_RELATIVE
6953
ENUMDOC
6954
  AArch64 DSO relocations.
6955
ENUM
6956
  BFD_RELOC_AARCH64_TLS_DTPMOD
6957
ENUMX
6958
  BFD_RELOC_AARCH64_TLS_DTPREL
6959
ENUMX
6960
  BFD_RELOC_AARCH64_TLS_TPREL
6961
ENUMX
6962
  BFD_RELOC_AARCH64_TLSDESC
6963
ENUMDOC
6964
  AArch64 TLS relocations.
6965
ENUM
6966
  BFD_RELOC_AARCH64_IRELATIVE
6967
ENUMDOC
6968
  AArch64 support for STT_GNU_IFUNC.
6969
ENUM
6970
  BFD_RELOC_AARCH64_RELOC_END
6971
ENUMDOC
6972
  AArch64 pseudo relocation code to mark the end of the AArch64
6973
  relocation enumerators that have direct mapping to ELF reloc codes.
6974
  There are a few more enumerators after this one; those are mainly
6975
  used by the AArch64 assembler for the internal fixup or to select
6976
  one of the above enumerators.
6977
ENUM
6978
  BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP
6979
ENUMDOC
6980
  AArch64 pseudo relocation code to be used internally by the AArch64
6981
  assembler and not (currently) written to any object files.
6982
ENUM
6983
  BFD_RELOC_AARCH64_LDST_LO12
6984
ENUMDOC
6985
  AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
6986
  address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6987
ENUM
6988
  BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12
6989
ENUMDOC
6990
  AArch64 pseudo relocation code for TLS local dynamic mode.  It's to
6991
  be used internally by the AArch64 assembler and not (currently)
6992
  written to any object files.
6993
ENUM
6994
  BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC
6995
ENUMDOC
6996
  Similar to BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow
6997
  check.
6998
ENUM
6999
  BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12
7000
ENUMDOC
7001
  AArch64 pseudo relocation code for TLS local exec mode.  It's to be
7002
  used internally by the AArch64 assembler and not (currently) written
7003
  to any object files.
7004
ENUM
7005
  BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC
7006
ENUMDOC
7007
  Similar to BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow
7008
  check.
7009
ENUM
7010
  BFD_RELOC_AARCH64_LD_GOT_LO12_NC
7011
ENUMDOC
7012
  AArch64 pseudo relocation code to be used internally by the AArch64
7013
  assembler and not (currently) written to any object files.
7014
ENUM
7015
  BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC
7016
ENUMDOC
7017
  AArch64 pseudo relocation code to be used internally by the AArch64
7018
  assembler and not (currently) written to any object files.
7019
ENUM
7020
  BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC
7021
ENUMDOC
7022
  AArch64 pseudo relocation code to be used internally by the AArch64
7023
  assembler and not (currently) written to any object files.
7024
ENUM
7025
  BFD_RELOC_AARCH64_BRANCH9
7026
ENUMDOC
7027
  AArch64 9 bit pc-relative conditional branch and compare & branch.
7028
  The lowest two bits must be zero and are not stored in the
7029
  instruction, giving an 11 bit signed byte offset.
7030
ENUM
7031
  BFD_RELOC_TILEPRO_BROFF_X1
7032
ENUMX
7033
  BFD_RELOC_TILEPRO_JOFFLONG_X1
7034
ENUMX
7035
  BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT
7036
ENUMX
7037
  BFD_RELOC_TILEPRO_IMM8_X0
7038
ENUMX
7039
  BFD_RELOC_TILEPRO_IMM8_Y0
7040
ENUMX
7041
  BFD_RELOC_TILEPRO_IMM8_X1
7042
ENUMX
7043
  BFD_RELOC_TILEPRO_IMM8_Y1
7044
ENUMX
7045
  BFD_RELOC_TILEPRO_DEST_IMM8_X1
7046
ENUMX
7047
  BFD_RELOC_TILEPRO_MT_IMM15_X1
7048
ENUMX
7049
  BFD_RELOC_TILEPRO_MF_IMM15_X1
7050
ENUMX
7051
  BFD_RELOC_TILEPRO_IMM16_X0
7052
ENUMX
7053
  BFD_RELOC_TILEPRO_IMM16_X1
7054
ENUMX
7055
  BFD_RELOC_TILEPRO_IMM16_X0_LO
7056
ENUMX
7057
  BFD_RELOC_TILEPRO_IMM16_X1_LO
7058
ENUMX
7059
  BFD_RELOC_TILEPRO_IMM16_X0_HI
7060
ENUMX
7061
  BFD_RELOC_TILEPRO_IMM16_X1_HI
7062
ENUMX
7063
  BFD_RELOC_TILEPRO_IMM16_X0_HA
7064
ENUMX
7065
  BFD_RELOC_TILEPRO_IMM16_X1_HA
7066
ENUMX
7067
  BFD_RELOC_TILEPRO_IMM16_X0_PCREL
7068
ENUMX
7069
  BFD_RELOC_TILEPRO_IMM16_X1_PCREL
7070
ENUMX
7071
  BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL
7072
ENUMX
7073
  BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL
7074
ENUMX
7075
  BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL
7076
ENUMX
7077
  BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL
7078
ENUMX
7079
  BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL
7080
ENUMX
7081
  BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL
7082
ENUMX
7083
  BFD_RELOC_TILEPRO_IMM16_X0_GOT
7084
ENUMX
7085
  BFD_RELOC_TILEPRO_IMM16_X1_GOT
7086
ENUMX
7087
  BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO
7088
ENUMX
7089
  BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO
7090
ENUMX
7091
  BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI
7092
ENUMX
7093
  BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI
7094
ENUMX
7095
  BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA
7096
ENUMX
7097
  BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA
7098
ENUMX
7099
  BFD_RELOC_TILEPRO_MMSTART_X0
7100
ENUMX
7101
  BFD_RELOC_TILEPRO_MMEND_X0
7102
ENUMX
7103
  BFD_RELOC_TILEPRO_MMSTART_X1
7104
ENUMX
7105
  BFD_RELOC_TILEPRO_MMEND_X1
7106
ENUMX
7107
  BFD_RELOC_TILEPRO_SHAMT_X0
7108
ENUMX
7109
  BFD_RELOC_TILEPRO_SHAMT_X1
7110
ENUMX
7111
  BFD_RELOC_TILEPRO_SHAMT_Y0
7112
ENUMX
7113
  BFD_RELOC_TILEPRO_SHAMT_Y1
7114
ENUMX
7115
  BFD_RELOC_TILEPRO_TLS_GD_CALL
7116
ENUMX
7117
  BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD
7118
ENUMX
7119
  BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD
7120
ENUMX
7121
  BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD
7122
ENUMX
7123
  BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD
7124
ENUMX
7125
  BFD_RELOC_TILEPRO_TLS_IE_LOAD
7126
ENUMX
7127
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD
7128
ENUMX
7129
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD
7130
ENUMX
7131
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO
7132
ENUMX
7133
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO
7134
ENUMX
7135
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI
7136
ENUMX
7137
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI
7138
ENUMX
7139
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA
7140
ENUMX
7141
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA
7142
ENUMX
7143
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE
7144
ENUMX
7145
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE
7146
ENUMX
7147
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO
7148
ENUMX
7149
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO
7150
ENUMX
7151
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI
7152
ENUMX
7153
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI
7154
ENUMX
7155
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA
7156
ENUMX
7157
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA
7158
ENUMX
7159
  BFD_RELOC_TILEPRO_TLS_DTPMOD32
7160
ENUMX
7161
  BFD_RELOC_TILEPRO_TLS_DTPOFF32
7162
ENUMX
7163
  BFD_RELOC_TILEPRO_TLS_TPOFF32
7164
ENUMX
7165
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE
7166
ENUMX
7167
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE
7168
ENUMX
7169
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO
7170
ENUMX
7171
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO
7172
ENUMX
7173
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI
7174
ENUMX
7175
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI
7176
ENUMX
7177
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA
7178
ENUMX
7179
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA
7180
ENUMDOC
7181
  Tilera TILEPro Relocations.
7182
ENUM
7183
  BFD_RELOC_TILEGX_HW0
7184
ENUMX
7185
  BFD_RELOC_TILEGX_HW1
7186
ENUMX
7187
  BFD_RELOC_TILEGX_HW2
7188
ENUMX
7189
  BFD_RELOC_TILEGX_HW3
7190
ENUMX
7191
  BFD_RELOC_TILEGX_HW0_LAST
7192
ENUMX
7193
  BFD_RELOC_TILEGX_HW1_LAST
7194
ENUMX
7195
  BFD_RELOC_TILEGX_HW2_LAST
7196
ENUMX
7197
  BFD_RELOC_TILEGX_BROFF_X1
7198
ENUMX
7199
  BFD_RELOC_TILEGX_JUMPOFF_X1
7200
ENUMX
7201
  BFD_RELOC_TILEGX_JUMPOFF_X1_PLT
7202
ENUMX
7203
  BFD_RELOC_TILEGX_IMM8_X0
7204
ENUMX
7205
  BFD_RELOC_TILEGX_IMM8_Y0
7206
ENUMX
7207
  BFD_RELOC_TILEGX_IMM8_X1
7208
ENUMX
7209
  BFD_RELOC_TILEGX_IMM8_Y1
7210
ENUMX
7211
  BFD_RELOC_TILEGX_DEST_IMM8_X1
7212
ENUMX
7213
  BFD_RELOC_TILEGX_MT_IMM14_X1
7214
ENUMX
7215
  BFD_RELOC_TILEGX_MF_IMM14_X1
7216
ENUMX
7217
  BFD_RELOC_TILEGX_MMSTART_X0
7218
ENUMX
7219
  BFD_RELOC_TILEGX_MMEND_X0
7220
ENUMX
7221
  BFD_RELOC_TILEGX_SHAMT_X0
7222
ENUMX
7223
  BFD_RELOC_TILEGX_SHAMT_X1
7224
ENUMX
7225
  BFD_RELOC_TILEGX_SHAMT_Y0
7226
ENUMX
7227
  BFD_RELOC_TILEGX_SHAMT_Y1
7228
ENUMX
7229
  BFD_RELOC_TILEGX_IMM16_X0_HW0
7230
ENUMX
7231
  BFD_RELOC_TILEGX_IMM16_X1_HW0
7232
ENUMX
7233
  BFD_RELOC_TILEGX_IMM16_X0_HW1
7234
ENUMX
7235
  BFD_RELOC_TILEGX_IMM16_X1_HW1
7236
ENUMX
7237
  BFD_RELOC_TILEGX_IMM16_X0_HW2
7238
ENUMX
7239
  BFD_RELOC_TILEGX_IMM16_X1_HW2
7240
ENUMX
7241
  BFD_RELOC_TILEGX_IMM16_X0_HW3
7242
ENUMX
7243
  BFD_RELOC_TILEGX_IMM16_X1_HW3
7244
ENUMX
7245
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST
7246
ENUMX
7247
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST
7248
ENUMX
7249
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST
7250
ENUMX
7251
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST
7252
ENUMX
7253
  BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST
7254
ENUMX
7255
  BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST
7256
ENUMX
7257
  BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL
7258
ENUMX
7259
  BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL
7260
ENUMX
7261
  BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL
7262
ENUMX
7263
  BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL
7264
ENUMX
7265
  BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL
7266
ENUMX
7267
  BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL
7268
ENUMX
7269
  BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL
7270
ENUMX
7271
  BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL
7272
ENUMX
7273
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL
7274
ENUMX
7275
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL
7276
ENUMX
7277
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL
7278
ENUMX
7279
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL
7280
ENUMX
7281
  BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL
7282
ENUMX
7283
  BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL
7284
ENUMX
7285
  BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT
7286
ENUMX
7287
  BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT
7288
ENUMX
7289
  BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL
7290
ENUMX
7291
  BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL
7292
ENUMX
7293
  BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL
7294
ENUMX
7295
  BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL
7296
ENUMX
7297
  BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL
7298
ENUMX
7299
  BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL
7300
ENUMX
7301
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT
7302
ENUMX
7303
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT
7304
ENUMX
7305
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT
7306
ENUMX
7307
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT
7308
ENUMX
7309
  BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL
7310
ENUMX
7311
  BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL
7312
ENUMX
7313
  BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD
7314
ENUMX
7315
  BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD
7316
ENUMX
7317
  BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE
7318
ENUMX
7319
  BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE
7320
ENUMX
7321
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE
7322
ENUMX
7323
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE
7324
ENUMX
7325
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE
7326
ENUMX
7327
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE
7328
ENUMX
7329
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD
7330
ENUMX
7331
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD
7332
ENUMX
7333
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD
7334
ENUMX
7335
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD
7336
ENUMX
7337
  BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE
7338
ENUMX
7339
  BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE
7340
ENUMX
7341
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL
7342
ENUMX
7343
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL
7344
ENUMX
7345
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL
7346
ENUMX
7347
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL
7348
ENUMX
7349
  BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL
7350
ENUMX
7351
  BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL
7352
ENUMX
7353
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE
7354
ENUMX
7355
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE
7356
ENUMX
7357
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE
7358
ENUMX
7359
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE
7360
ENUMX
7361
  BFD_RELOC_TILEGX_TLS_DTPMOD64
7362
ENUMX
7363
  BFD_RELOC_TILEGX_TLS_DTPOFF64
7364
ENUMX
7365
  BFD_RELOC_TILEGX_TLS_TPOFF64
7366
ENUMX
7367
  BFD_RELOC_TILEGX_TLS_DTPMOD32
7368
ENUMX
7369
  BFD_RELOC_TILEGX_TLS_DTPOFF32
7370
ENUMX
7371
  BFD_RELOC_TILEGX_TLS_TPOFF32
7372
ENUMX
7373
  BFD_RELOC_TILEGX_TLS_GD_CALL
7374
ENUMX
7375
  BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD
7376
ENUMX
7377
  BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD
7378
ENUMX
7379
  BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD
7380
ENUMX
7381
  BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD
7382
ENUMX
7383
  BFD_RELOC_TILEGX_TLS_IE_LOAD
7384
ENUMX
7385
  BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD
7386
ENUMX
7387
  BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD
7388
ENUMX
7389
  BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD
7390
ENUMX
7391
  BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
7392
ENUMDOC
7393
  Tilera TILE-Gx Relocations.
7394
7395
ENUM
7396
  BFD_RELOC_BPF_64
7397
ENUMX
7398
  BFD_RELOC_BPF_DISP32
7399
ENUMX
7400
  BFD_RELOC_BPF_DISPCALL32
7401
ENUMX
7402
  BFD_RELOC_BPF_DISP16
7403
ENUMDOC
7404
  Linux eBPF relocations.
7405
7406
ENUM
7407
  BFD_RELOC_EPIPHANY_SIMM8
7408
ENUMDOC
7409
  Adapteva EPIPHANY - 8 bit signed pc-relative displacement.
7410
ENUM
7411
  BFD_RELOC_EPIPHANY_SIMM24
7412
ENUMDOC
7413
  Adapteva EPIPHANY - 24 bit signed pc-relative displacement.
7414
ENUM
7415
  BFD_RELOC_EPIPHANY_HIGH
7416
ENUMDOC
7417
  Adapteva EPIPHANY - 16 most-significant bits of absolute address.
7418
ENUM
7419
  BFD_RELOC_EPIPHANY_LOW
7420
ENUMDOC
7421
  Adapteva EPIPHANY - 16 least-significant bits of absolute address.
7422
ENUM
7423
  BFD_RELOC_EPIPHANY_SIMM11
7424
ENUMDOC
7425
  Adapteva EPIPHANY - 11 bit signed number - add/sub immediate.
7426
ENUM
7427
  BFD_RELOC_EPIPHANY_IMM11
7428
ENUMDOC
7429
  Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st
7430
  displacement).
7431
ENUM
7432
  BFD_RELOC_EPIPHANY_IMM8
7433
ENUMDOC
7434
  Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
7435
7436
ENUM
7437
  BFD_RELOC_VISIUM_HI16
7438
ENUMX
7439
  BFD_RELOC_VISIUM_LO16
7440
ENUMX
7441
  BFD_RELOC_VISIUM_IM16
7442
ENUMX
7443
  BFD_RELOC_VISIUM_REL16
7444
ENUMX
7445
  BFD_RELOC_VISIUM_HI16_PCREL
7446
ENUMX
7447
  BFD_RELOC_VISIUM_LO16_PCREL
7448
ENUMX
7449
  BFD_RELOC_VISIUM_IM16_PCREL
7450
ENUMDOC
7451
  Visium Relocations.
7452
7453
ENUM
7454
  BFD_RELOC_WASM32_LEB128
7455
ENUMX
7456
  BFD_RELOC_WASM32_LEB128_GOT
7457
ENUMX
7458
  BFD_RELOC_WASM32_LEB128_GOT_CODE
7459
ENUMX
7460
  BFD_RELOC_WASM32_LEB128_PLT
7461
ENUMX
7462
  BFD_RELOC_WASM32_PLT_INDEX
7463
ENUMX
7464
  BFD_RELOC_WASM32_ABS32_CODE
7465
ENUMX
7466
  BFD_RELOC_WASM32_CODE_POINTER
7467
ENUMX
7468
  BFD_RELOC_WASM32_INDEX
7469
ENUMX
7470
  BFD_RELOC_WASM32_PLT_SIG
7471
ENUMDOC
7472
  WebAssembly relocations.
7473
7474
ENUM
7475
  BFD_RELOC_CKCORE_NONE
7476
ENUMX
7477
  BFD_RELOC_CKCORE_ADDR32
7478
ENUMX
7479
  BFD_RELOC_CKCORE_PCREL_IMM8BY4
7480
ENUMX
7481
  BFD_RELOC_CKCORE_PCREL_IMM11BY2
7482
ENUMX
7483
  BFD_RELOC_CKCORE_PCREL_IMM4BY2
7484
ENUMX
7485
  BFD_RELOC_CKCORE_PCREL32
7486
ENUMX
7487
  BFD_RELOC_CKCORE_PCREL_JSR_IMM11BY2
7488
ENUMX
7489
  BFD_RELOC_CKCORE_GNU_VTINHERIT
7490
ENUMX
7491
  BFD_RELOC_CKCORE_GNU_VTENTRY
7492
ENUMX
7493
  BFD_RELOC_CKCORE_RELATIVE
7494
ENUMX
7495
  BFD_RELOC_CKCORE_COPY
7496
ENUMX
7497
  BFD_RELOC_CKCORE_GLOB_DAT
7498
ENUMX
7499
  BFD_RELOC_CKCORE_JUMP_SLOT
7500
ENUMX
7501
  BFD_RELOC_CKCORE_GOTOFF
7502
ENUMX
7503
  BFD_RELOC_CKCORE_GOTPC
7504
ENUMX
7505
  BFD_RELOC_CKCORE_GOT32
7506
ENUMX
7507
  BFD_RELOC_CKCORE_PLT32
7508
ENUMX
7509
  BFD_RELOC_CKCORE_ADDRGOT
7510
ENUMX
7511
  BFD_RELOC_CKCORE_ADDRPLT
7512
ENUMX
7513
  BFD_RELOC_CKCORE_PCREL_IMM26BY2
7514
ENUMX
7515
  BFD_RELOC_CKCORE_PCREL_IMM16BY2
7516
ENUMX
7517
  BFD_RELOC_CKCORE_PCREL_IMM16BY4
7518
ENUMX
7519
  BFD_RELOC_CKCORE_PCREL_IMM10BY2
7520
ENUMX
7521
  BFD_RELOC_CKCORE_PCREL_IMM10BY4
7522
ENUMX
7523
  BFD_RELOC_CKCORE_ADDR_HI16
7524
ENUMX
7525
  BFD_RELOC_CKCORE_ADDR_LO16
7526
ENUMX
7527
  BFD_RELOC_CKCORE_GOTPC_HI16
7528
ENUMX
7529
  BFD_RELOC_CKCORE_GOTPC_LO16
7530
ENUMX
7531
  BFD_RELOC_CKCORE_GOTOFF_HI16
7532
ENUMX
7533
  BFD_RELOC_CKCORE_GOTOFF_LO16
7534
ENUMX
7535
  BFD_RELOC_CKCORE_GOT12
7536
ENUMX
7537
  BFD_RELOC_CKCORE_GOT_HI16
7538
ENUMX
7539
  BFD_RELOC_CKCORE_GOT_LO16
7540
ENUMX
7541
  BFD_RELOC_CKCORE_PLT12
7542
ENUMX
7543
  BFD_RELOC_CKCORE_PLT_HI16
7544
ENUMX
7545
  BFD_RELOC_CKCORE_PLT_LO16
7546
ENUMX
7547
  BFD_RELOC_CKCORE_ADDRGOT_HI16
7548
ENUMX
7549
  BFD_RELOC_CKCORE_ADDRGOT_LO16
7550
ENUMX
7551
  BFD_RELOC_CKCORE_ADDRPLT_HI16
7552
ENUMX
7553
  BFD_RELOC_CKCORE_ADDRPLT_LO16
7554
ENUMX
7555
  BFD_RELOC_CKCORE_PCREL_JSR_IMM26BY2
7556
ENUMX
7557
  BFD_RELOC_CKCORE_TOFFSET_LO16
7558
ENUMX
7559
  BFD_RELOC_CKCORE_DOFFSET_LO16
7560
ENUMX
7561
  BFD_RELOC_CKCORE_PCREL_IMM18BY2
7562
ENUMX
7563
  BFD_RELOC_CKCORE_DOFFSET_IMM18
7564
ENUMX
7565
  BFD_RELOC_CKCORE_DOFFSET_IMM18BY2
7566
ENUMX
7567
  BFD_RELOC_CKCORE_DOFFSET_IMM18BY4
7568
ENUMX
7569
  BFD_RELOC_CKCORE_GOTOFF_IMM18
7570
ENUMX
7571
  BFD_RELOC_CKCORE_GOT_IMM18BY4
7572
ENUMX
7573
  BFD_RELOC_CKCORE_PLT_IMM18BY4
7574
ENUMX
7575
  BFD_RELOC_CKCORE_PCREL_IMM7BY4
7576
ENUMX
7577
  BFD_RELOC_CKCORE_TLS_LE32
7578
ENUMX
7579
  BFD_RELOC_CKCORE_TLS_IE32
7580
ENUMX
7581
  BFD_RELOC_CKCORE_TLS_GD32
7582
ENUMX
7583
  BFD_RELOC_CKCORE_TLS_LDM32
7584
ENUMX
7585
  BFD_RELOC_CKCORE_TLS_LDO32
7586
ENUMX
7587
  BFD_RELOC_CKCORE_TLS_DTPMOD32
7588
ENUMX
7589
  BFD_RELOC_CKCORE_TLS_DTPOFF32
7590
ENUMX
7591
  BFD_RELOC_CKCORE_TLS_TPOFF32
7592
ENUMX
7593
  BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4
7594
ENUMX
7595
  BFD_RELOC_CKCORE_NOJSRI
7596
ENUMX
7597
  BFD_RELOC_CKCORE_CALLGRAPH
7598
ENUMX
7599
  BFD_RELOC_CKCORE_IRELATIVE
7600
ENUMX
7601
  BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4
7602
ENUMX
7603
  BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4
7604
ENUMDOC
7605
  C-SKY relocations.
7606
7607
ENUM
7608
  BFD_RELOC_S12Z_OPR
7609
ENUMDOC
7610
  Freescale S12Z relocations.
7611
ENUM
7612
  BFD_RELOC_S12Z_15_PCREL
7613
ENUMDOC
7614
  This is a 15 bit relative address.  If the most significant bits are
7615
  all zero then it may be truncated to 8 bits.
7616
7617
ENUM
7618
  BFD_RELOC_LARCH_TLS_DTPMOD32
7619
ENUMX
7620
  BFD_RELOC_LARCH_TLS_DTPREL32
7621
ENUMX
7622
  BFD_RELOC_LARCH_TLS_DTPMOD64
7623
ENUMX
7624
  BFD_RELOC_LARCH_TLS_DTPREL64
7625
ENUMX
7626
  BFD_RELOC_LARCH_TLS_TPREL32
7627
ENUMX
7628
  BFD_RELOC_LARCH_TLS_TPREL64
7629
ENUMX
7630
  BFD_RELOC_LARCH_TLS_DESC32
7631
ENUMX
7632
  BFD_RELOC_LARCH_TLS_DESC64
7633
ENUMX
7634
  BFD_RELOC_LARCH_MARK_LA
7635
ENUMX
7636
  BFD_RELOC_LARCH_MARK_PCREL
7637
ENUMX
7638
  BFD_RELOC_LARCH_SOP_PUSH_PCREL
7639
ENUMX
7640
  BFD_RELOC_LARCH_SOP_PUSH_ABSOLUTE
7641
ENUMX
7642
  BFD_RELOC_LARCH_SOP_PUSH_DUP
7643
ENUMX
7644
  BFD_RELOC_LARCH_SOP_PUSH_GPREL
7645
ENUMX
7646
  BFD_RELOC_LARCH_SOP_PUSH_TLS_TPREL
7647
ENUMX
7648
  BFD_RELOC_LARCH_SOP_PUSH_TLS_GOT
7649
ENUMX
7650
  BFD_RELOC_LARCH_SOP_PUSH_TLS_GD
7651
ENUMX
7652
  BFD_RELOC_LARCH_SOP_PUSH_PLT_PCREL
7653
ENUMX
7654
  BFD_RELOC_LARCH_SOP_ASSERT
7655
ENUMX
7656
  BFD_RELOC_LARCH_SOP_NOT
7657
ENUMX
7658
  BFD_RELOC_LARCH_SOP_SUB
7659
ENUMX
7660
  BFD_RELOC_LARCH_SOP_SL
7661
ENUMX
7662
  BFD_RELOC_LARCH_SOP_SR
7663
ENUMX
7664
  BFD_RELOC_LARCH_SOP_ADD
7665
ENUMX
7666
  BFD_RELOC_LARCH_SOP_AND
7667
ENUMX
7668
  BFD_RELOC_LARCH_SOP_IF_ELSE
7669
ENUMX
7670
  BFD_RELOC_LARCH_SOP_POP_32_S_10_5
7671
ENUMX
7672
  BFD_RELOC_LARCH_SOP_POP_32_U_10_12
7673
ENUMX
7674
  BFD_RELOC_LARCH_SOP_POP_32_S_10_12
7675
ENUMX
7676
  BFD_RELOC_LARCH_SOP_POP_32_S_10_16
7677
ENUMX
7678
  BFD_RELOC_LARCH_SOP_POP_32_S_10_16_S2
7679
ENUMX
7680
  BFD_RELOC_LARCH_SOP_POP_32_S_5_20
7681
ENUMX
7682
  BFD_RELOC_LARCH_SOP_POP_32_S_0_5_10_16_S2
7683
ENUMX
7684
  BFD_RELOC_LARCH_SOP_POP_32_S_0_10_10_16_S2
7685
ENUMX
7686
  BFD_RELOC_LARCH_SOP_POP_32_U
7687
ENUMX
7688
  BFD_RELOC_LARCH_ADD8
7689
ENUMX
7690
  BFD_RELOC_LARCH_ADD16
7691
ENUMX
7692
  BFD_RELOC_LARCH_ADD24
7693
ENUMX
7694
  BFD_RELOC_LARCH_ADD32
7695
ENUMX
7696
  BFD_RELOC_LARCH_ADD64
7697
ENUMX
7698
  BFD_RELOC_LARCH_SUB8
7699
ENUMX
7700
  BFD_RELOC_LARCH_SUB16
7701
ENUMX
7702
  BFD_RELOC_LARCH_SUB24
7703
ENUMX
7704
  BFD_RELOC_LARCH_SUB32
7705
ENUMX
7706
  BFD_RELOC_LARCH_SUB64
7707
7708
ENUMX
7709
  BFD_RELOC_LARCH_B16
7710
ENUMX
7711
  BFD_RELOC_LARCH_B21
7712
ENUMX
7713
  BFD_RELOC_LARCH_B26
7714
7715
ENUMX
7716
  BFD_RELOC_LARCH_ABS_HI20
7717
ENUMX
7718
  BFD_RELOC_LARCH_ABS_LO12
7719
ENUMX
7720
  BFD_RELOC_LARCH_ABS64_LO20
7721
ENUMX
7722
  BFD_RELOC_LARCH_ABS64_HI12
7723
7724
ENUMX
7725
  BFD_RELOC_LARCH_PCALA_HI20
7726
ENUMX
7727
  BFD_RELOC_LARCH_PCALA_LO12
7728
ENUMX
7729
  BFD_RELOC_LARCH_PCALA64_LO20
7730
ENUMX
7731
  BFD_RELOC_LARCH_PCALA64_HI12
7732
7733
ENUMX
7734
  BFD_RELOC_LARCH_GOT_PC_HI20
7735
ENUMX
7736
  BFD_RELOC_LARCH_GOT_PC_LO12
7737
ENUMX
7738
  BFD_RELOC_LARCH_GOT64_PC_LO20
7739
ENUMX
7740
  BFD_RELOC_LARCH_GOT64_PC_HI12
7741
ENUMX
7742
  BFD_RELOC_LARCH_GOT_HI20
7743
ENUMX
7744
  BFD_RELOC_LARCH_GOT_LO12
7745
ENUMX
7746
  BFD_RELOC_LARCH_GOT64_LO20
7747
ENUMX
7748
  BFD_RELOC_LARCH_GOT64_HI12
7749
7750
ENUMX
7751
  BFD_RELOC_LARCH_TLS_LE_HI20
7752
ENUMX
7753
  BFD_RELOC_LARCH_TLS_LE_LO12
7754
ENUMX
7755
  BFD_RELOC_LARCH_TLS_LE64_LO20
7756
ENUMX
7757
  BFD_RELOC_LARCH_TLS_LE64_HI12
7758
ENUMX
7759
  BFD_RELOC_LARCH_TLS_IE_PC_HI20
7760
ENUMX
7761
  BFD_RELOC_LARCH_TLS_IE_PC_LO12
7762
ENUMX
7763
  BFD_RELOC_LARCH_TLS_IE64_PC_LO20
7764
ENUMX
7765
  BFD_RELOC_LARCH_TLS_IE64_PC_HI12
7766
ENUMX
7767
  BFD_RELOC_LARCH_TLS_IE_HI20
7768
ENUMX
7769
  BFD_RELOC_LARCH_TLS_IE_LO12
7770
ENUMX
7771
  BFD_RELOC_LARCH_TLS_IE64_LO20
7772
ENUMX
7773
  BFD_RELOC_LARCH_TLS_IE64_HI12
7774
ENUMX
7775
  BFD_RELOC_LARCH_TLS_LD_PC_HI20
7776
ENUMX
7777
  BFD_RELOC_LARCH_TLS_LD_HI20
7778
ENUMX
7779
  BFD_RELOC_LARCH_TLS_GD_PC_HI20
7780
ENUMX
7781
  BFD_RELOC_LARCH_TLS_GD_HI20
7782
7783
ENUMX
7784
  BFD_RELOC_LARCH_RELAX
7785
7786
ENUMX
7787
  BFD_RELOC_LARCH_DELETE
7788
7789
ENUMX
7790
  BFD_RELOC_LARCH_ALIGN
7791
7792
ENUMX
7793
  BFD_RELOC_LARCH_PCREL20_S2
7794
7795
ENUMX
7796
  BFD_RELOC_LARCH_CFA
7797
7798
ENUMX
7799
  BFD_RELOC_LARCH_ADD6
7800
ENUMX
7801
  BFD_RELOC_LARCH_SUB6
7802
7803
ENUMX
7804
  BFD_RELOC_LARCH_ADD_ULEB128
7805
ENUMX
7806
  BFD_RELOC_LARCH_SUB_ULEB128
7807
7808
ENUMX
7809
  BFD_RELOC_LARCH_CALL36
7810
7811
ENUMX
7812
  BFD_RELOC_LARCH_TLS_DESC_PC_HI20
7813
ENUMX
7814
  BFD_RELOC_LARCH_TLS_DESC_PC_LO12
7815
7816
ENUMX
7817
  BFD_RELOC_LARCH_TLS_DESC64_PC_LO20
7818
ENUMX
7819
  BFD_RELOC_LARCH_TLS_DESC64_PC_HI12
7820
7821
ENUMX
7822
  BFD_RELOC_LARCH_TLS_DESC_HI20
7823
ENUMX
7824
  BFD_RELOC_LARCH_TLS_DESC_LO12
7825
7826
ENUMX
7827
  BFD_RELOC_LARCH_TLS_DESC64_LO20
7828
ENUMX
7829
  BFD_RELOC_LARCH_TLS_DESC64_HI12
7830
7831
ENUMX
7832
  BFD_RELOC_LARCH_TLS_DESC_LD
7833
ENUMX
7834
  BFD_RELOC_LARCH_TLS_DESC_CALL
7835
7836
ENUMX
7837
  BFD_RELOC_LARCH_TLS_LE_HI20_R
7838
ENUMX
7839
  BFD_RELOC_LARCH_TLS_LE_ADD_R
7840
ENUMX
7841
  BFD_RELOC_LARCH_TLS_LE_LO12_R
7842
7843
ENUMX
7844
  BFD_RELOC_LARCH_TLS_LD_PCREL20_S2
7845
ENUMX
7846
  BFD_RELOC_LARCH_TLS_GD_PCREL20_S2
7847
ENUMX
7848
  BFD_RELOC_LARCH_TLS_DESC_PCREL20_S2
7849
7850
ENUMX
7851
  BFD_RELOC_LARCH_CALL30
7852
ENUMX
7853
  BFD_RELOC_LARCH_PCADD_HI20
7854
ENUMX
7855
  BFD_RELOC_LARCH_PCADD_LO12
7856
ENUMX
7857
  BFD_RELOC_LARCH_GOT_PCADD_HI20
7858
ENUMX
7859
  BFD_RELOC_LARCH_GOT_PCADD_LO12
7860
ENUMX
7861
  BFD_RELOC_LARCH_TLS_IE_PCADD_HI20
7862
ENUMX
7863
  BFD_RELOC_LARCH_TLS_IE_PCADD_LO12
7864
ENUMX
7865
  BFD_RELOC_LARCH_TLS_LD_PCADD_HI20
7866
ENUMX
7867
  BFD_RELOC_LARCH_TLS_LD_PCADD_LO12
7868
ENUMX
7869
  BFD_RELOC_LARCH_TLS_GD_PCADD_HI20
7870
ENUMX
7871
  BFD_RELOC_LARCH_TLS_GD_PCADD_LO12
7872
ENUMX
7873
  BFD_RELOC_LARCH_TLS_DESC_PCADD_HI20
7874
ENUMX
7875
  BFD_RELOC_LARCH_TLS_DESC_PCADD_LO12
7876
7877
ENUMDOC
7878
  LARCH relocations.
7879
7880
ENDSENUM
7881
  BFD_RELOC_UNUSED
7882
7883
CODE_FRAGMENT
7884
.typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
7885
.
7886
*/
7887
7888
/*
7889
FUNCTION
7890
  bfd_reloc_type_lookup
7891
  bfd_reloc_name_lookup
7892
7893
SYNOPSIS
7894
  reloc_howto_type *bfd_reloc_type_lookup
7895
    (bfd *abfd, bfd_reloc_code_real_type code);
7896
  reloc_howto_type *bfd_reloc_name_lookup
7897
    (bfd *abfd, const char *reloc_name);
7898
7899
DESCRIPTION
7900
  Return a pointer to a howto structure which, when
7901
  invoked, will perform the relocation @var{code} on data from the
7902
  architecture noted.
7903
*/
7904
7905
reloc_howto_type *
7906
bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
7907
9.20k
{
7908
9.20k
  return BFD_SEND (abfd, reloc_type_lookup, (abfd, code));
7909
9.20k
}
7910
7911
reloc_howto_type *
7912
bfd_reloc_name_lookup (bfd *abfd, const char *reloc_name)
7913
228
{
7914
228
  return BFD_SEND (abfd, reloc_name_lookup, (abfd, reloc_name));
7915
228
}
7916
7917
static reloc_howto_type bfd_howto_32 =
7918
HOWTO (0, 00, 4, 32, false, 0, complain_overflow_dont, 0, "VRT32", false, 0xffffffff, 0xffffffff, true);
7919
7920
/*
7921
INTERNAL_FUNCTION
7922
  bfd_default_reloc_type_lookup
7923
7924
SYNOPSIS
7925
  reloc_howto_type *bfd_default_reloc_type_lookup
7926
    (bfd *abfd, bfd_reloc_code_real_type  code);
7927
7928
DESCRIPTION
7929
  Provides a default relocation lookup routine for any architecture.
7930
*/
7931
7932
reloc_howto_type *
7933
bfd_default_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
7934
0
{
7935
  /* Very limited support is provided for relocs in generic targets
7936
     such as elf32-little.  FIXME: Should we always return NULL?  */
7937
0
  if (code == BFD_RELOC_CTOR
7938
0
      && bfd_arch_bits_per_address (abfd) == 32)
7939
0
    return &bfd_howto_32;
7940
0
  return NULL;
7941
0
}
7942
7943
/*
7944
FUNCTION
7945
  bfd_get_reloc_code_name
7946
7947
SYNOPSIS
7948
  const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
7949
7950
DESCRIPTION
7951
  Provides a printable name for the supplied relocation code.
7952
  Useful mainly for printing error messages.
7953
*/
7954
7955
const char *
7956
bfd_get_reloc_code_name (bfd_reloc_code_real_type code)
7957
0
{
7958
0
  if (code > BFD_RELOC_UNUSED)
7959
0
    return 0;
7960
0
  return bfd_reloc_code_real_names[code];
7961
0
}
7962
7963
/*
7964
INTERNAL_FUNCTION
7965
  bfd_generic_relax_section
7966
7967
SYNOPSIS
7968
  bool bfd_generic_relax_section
7969
    (bfd *abfd,
7970
     asection *section,
7971
     struct bfd_link_info *,
7972
     bool *);
7973
7974
DESCRIPTION
7975
  Provides default handling for relaxing for back ends which
7976
  don't do relaxing.
7977
*/
7978
7979
bool
7980
bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
7981
         asection *section ATTRIBUTE_UNUSED,
7982
         struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
7983
         bool *again)
7984
0
{
7985
0
  if (bfd_link_relocatable (link_info))
7986
0
    link_info->callbacks->fatal
7987
0
      (_("%P: --relax and -r may not be used together\n"));
7988
7989
0
  *again = false;
7990
0
  return true;
7991
0
}
7992
7993
/*
7994
INTERNAL_FUNCTION
7995
  bfd_generic_gc_sections
7996
7997
SYNOPSIS
7998
  bool bfd_generic_gc_sections
7999
    (bfd *, struct bfd_link_info *);
8000
8001
DESCRIPTION
8002
  Provides default handling for relaxing for back ends which
8003
  don't do section gc -- i.e., does nothing.
8004
*/
8005
8006
bool
8007
bfd_generic_gc_sections (bfd *abfd ATTRIBUTE_UNUSED,
8008
       struct bfd_link_info *info ATTRIBUTE_UNUSED)
8009
0
{
8010
0
  return true;
8011
0
}
8012
8013
/*
8014
INTERNAL_FUNCTION
8015
  bfd_generic_lookup_section_flags
8016
8017
SYNOPSIS
8018
  bool bfd_generic_lookup_section_flags
8019
    (struct bfd_link_info *, struct flag_info *, asection *);
8020
8021
DESCRIPTION
8022
  Provides default handling for section flags lookup
8023
  -- i.e., does nothing.
8024
  Returns FALSE if the section should be omitted, otherwise TRUE.
8025
*/
8026
8027
bool
8028
bfd_generic_lookup_section_flags (struct bfd_link_info *info ATTRIBUTE_UNUSED,
8029
          struct flag_info *flaginfo,
8030
          asection *section ATTRIBUTE_UNUSED)
8031
0
{
8032
0
  if (flaginfo != NULL)
8033
0
    {
8034
0
      _bfd_error_handler (_("INPUT_SECTION_FLAGS are not supported"));
8035
0
      return false;
8036
0
    }
8037
0
  return true;
8038
0
}
8039
8040
/*
8041
INTERNAL_FUNCTION
8042
  bfd_generic_get_relocated_section_contents
8043
8044
SYNOPSIS
8045
  bfd_byte *bfd_generic_get_relocated_section_contents
8046
    (bfd *abfd,
8047
     struct bfd_link_info *link_info,
8048
     struct bfd_link_order *link_order,
8049
     bfd_byte *data,
8050
     bool relocatable,
8051
     asymbol **symbols);
8052
8053
DESCRIPTION
8054
  Provides default handling of relocation effort for back ends
8055
  which can't be bothered to do it efficiently.
8056
*/
8057
8058
bfd_byte *
8059
bfd_generic_get_relocated_section_contents (bfd *abfd,
8060
              struct bfd_link_info *link_info,
8061
              struct bfd_link_order *link_order,
8062
              bfd_byte *data,
8063
              bool relocatable,
8064
              asymbol **symbols)
8065
3.82k
{
8066
3.82k
  bfd *input_bfd = link_order->u.indirect.section->owner;
8067
3.82k
  asection *input_section = link_order->u.indirect.section;
8068
3.82k
  long reloc_size;
8069
3.82k
  arelent **reloc_vector;
8070
3.82k
  long reloc_count;
8071
8072
3.82k
  reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
8073
3.82k
  if (reloc_size < 0)
8074
106
    return NULL;
8075
8076
  /* Read in the section.  */
8077
3.71k
  bfd_byte *orig_data = data;
8078
3.71k
  if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
8079
23
    return NULL;
8080
8081
3.69k
  if (data == NULL)
8082
62
    return NULL;
8083
8084
3.63k
  if (reloc_size == 0)
8085
0
    return data;
8086
8087
3.63k
  reloc_vector = (arelent **) bfd_malloc (reloc_size);
8088
3.63k
  if (reloc_vector == NULL)
8089
0
    goto error_return;
8090
8091
3.63k
  reloc_count = bfd_canonicalize_reloc (input_bfd,
8092
3.63k
          input_section,
8093
3.63k
          reloc_vector,
8094
3.63k
          symbols);
8095
3.63k
  if (reloc_count < 0)
8096
660
    goto error_return;
8097
8098
2.97k
  if (reloc_count > 0)
8099
2.92k
    {
8100
2.92k
      arelent **parent;
8101
8102
27.7k
      for (parent = reloc_vector; *parent != NULL; parent++)
8103
25.9k
  {
8104
25.9k
    char *error_message = NULL;
8105
25.9k
    asymbol *symbol;
8106
25.9k
    bfd_reloc_status_type r;
8107
8108
25.9k
    symbol = *(*parent)->sym_ptr_ptr;
8109
    /* PR ld/19628: A specially crafted input file
8110
       can result in a NULL symbol pointer here.  */
8111
25.9k
    if (symbol == NULL)
8112
0
      {
8113
0
        link_info->callbacks->einfo
8114
    /* xgettext:c-format */
8115
0
    (_("%X%P: %pB(%pA): error: relocation for offset %V has no value\n"),
8116
0
     abfd, input_section, (* parent)->address);
8117
0
        goto error_return;
8118
0
      }
8119
8120
    /* Zap reloc field when the symbol is from a discarded
8121
       section, ignoring any addend.  Do the same when called
8122
       from bfd_simple_get_relocated_section_contents for
8123
       undefined symbols in debug sections.  This is to keep
8124
       debug info reasonably sane, in particular so that
8125
       DW_FORM_ref_addr to another file's .debug_info isn't
8126
       confused with an offset into the current file's
8127
       .debug_info.  */
8128
25.9k
    if ((symbol->section != NULL && discarded_section (symbol->section))
8129
25.9k
        || (symbol->section == bfd_und_section_ptr
8130
3.02k
      && (input_section->flags & SEC_DEBUGGING) != 0
8131
1.94k
      && link_info->input_bfds == link_info->output_bfd))
8132
1.94k
      {
8133
1.94k
        bfd_vma off;
8134
1.94k
        static reloc_howto_type none_howto
8135
1.94k
    = HOWTO (0, 0, 0, 0, false, 0, complain_overflow_dont, NULL,
8136
1.94k
       "unused", false, 0, 0, false);
8137
8138
1.94k
        off = ((*parent)->address
8139
1.94k
         * bfd_octets_per_byte (input_bfd, input_section));
8140
1.94k
        _bfd_clear_contents ((*parent)->howto, input_bfd,
8141
1.94k
           input_section, data, off);
8142
1.94k
        (*parent)->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
8143
1.94k
        (*parent)->addend = 0;
8144
1.94k
        (*parent)->howto = &none_howto;
8145
1.94k
        r = bfd_reloc_ok;
8146
1.94k
      }
8147
23.9k
    else
8148
23.9k
      {
8149
23.9k
        if ((symbol->flags & BSF_SECTION_SYM)
8150
22.1k
      && symbol->section->sec_info_type == SEC_INFO_TYPE_MERGE
8151
      /* This, while apparently necessary, feels bogus.  */
8152
0
      && !(symbol->section->flags & SEC_DEBUGGING))
8153
0
    {
8154
0
      asection *sec = symbol->section;
8155
8156
0
      (*parent)->addend =
8157
0
        _bfd_merged_section_offset (abfd, &sec, (*parent)->addend);
8158
      /* We may not change symbol->section, so the output_offset
8159
         adjustment done in bfd_perform_relocation() needs taking
8160
         care of (and compensating) here.  */
8161
0
      (*parent)->addend +=
8162
0
        sec->output_offset - symbol->section->output_offset;
8163
0
    }
8164
8165
23.9k
        r = bfd_perform_relocation (input_bfd,
8166
23.9k
            *parent,
8167
23.9k
            data,
8168
23.9k
            input_section,
8169
23.9k
            relocatable ? abfd : NULL,
8170
23.9k
            &error_message);
8171
23.9k
      }
8172
8173
25.9k
    if (relocatable)
8174
0
      {
8175
0
        asection *os = input_section->output_section;
8176
8177
        /* A partial link, so keep the relocs.  */
8178
0
        os->orelocation[os->reloc_count] = *parent;
8179
0
        os->reloc_count++;
8180
0
      }
8181
8182
25.9k
    if (r != bfd_reloc_ok)
8183
3.34k
      {
8184
3.34k
        _bfd_link_reloc_status_error (abfd, link_info, input_section,
8185
3.34k
              *parent, error_message, r);
8186
3.34k
        if (r == bfd_reloc_outofrange || r == bfd_reloc_notsupported)
8187
1.11k
    goto error_return;
8188
3.34k
      }
8189
25.9k
  }
8190
2.92k
    }
8191
8192
1.85k
  free (reloc_vector);
8193
1.85k
  return data;
8194
8195
1.77k
 error_return:
8196
1.77k
  free (reloc_vector);
8197
1.77k
  if (orig_data == NULL)
8198
7
    free (data);
8199
1.77k
  return NULL;
8200
2.97k
}
8201
8202
/*
8203
INTERNAL_FUNCTION
8204
  _bfd_generic_finalize_section_relocs
8205
8206
SYNOPSIS
8207
  bool _bfd_generic_finalize_section_relocs
8208
    (bfd *abfd,
8209
     sec_ptr section,
8210
     arelent **relptr,
8211
     unsigned int count);
8212
8213
DESCRIPTION
8214
  Installs a new set of internal relocations in SECTION.
8215
*/
8216
8217
bool
8218
_bfd_generic_finalize_section_relocs (bfd *abfd ATTRIBUTE_UNUSED,
8219
              sec_ptr section,
8220
              arelent **relptr,
8221
              unsigned int count)
8222
1.62k
{
8223
1.62k
  section->orelocation = relptr;
8224
1.62k
  section->reloc_count = count;
8225
1.62k
  if (count != 0)
8226
373
    section->flags |= SEC_RELOC;
8227
1.25k
  else
8228
1.25k
    section->flags &= ~SEC_RELOC;
8229
1.62k
  return true;
8230
1.62k
}
8231
8232
/*
8233
INTERNAL_FUNCTION
8234
  _bfd_unrecognized_reloc
8235
8236
SYNOPSIS
8237
  bool _bfd_unrecognized_reloc
8238
    (bfd * abfd,
8239
     sec_ptr section,
8240
     unsigned int r_type);
8241
8242
DESCRIPTION
8243
  Reports an unrecognized reloc.
8244
  Written as a function in order to reduce code duplication.
8245
  Returns FALSE so that it can be called from a return statement.
8246
*/
8247
8248
bool
8249
_bfd_unrecognized_reloc (bfd * abfd, sec_ptr section, unsigned int r_type)
8250
0
{
8251
   /* xgettext:c-format */
8252
0
  _bfd_error_handler (_("%pB: unrecognized relocation type %#x in section `%pA'"),
8253
0
          abfd, r_type, section);
8254
8255
  /* PR 21803: Suggest the most likely cause of this error.  */
8256
0
  _bfd_error_handler (_("is this version of the linker - %s - out of date ?"),
8257
0
          BFD_VERSION_STRING);
8258
8259
0
  bfd_set_error (bfd_error_bad_value);
8260
0
  return false;
8261
0
}
8262
8263
/*
8264
INTERNAL_FUNCTION
8265
  _bfd_link_reloc_status_error
8266
8267
SYNOPSIS
8268
  void _bfd_link_reloc_status_error
8269
     (bfd *abfd,
8270
      struct bfd_link_info *link_info,
8271
      asection *input_section,
8272
      arelent *reloc_entry,
8273
      char *error_message,
8274
      bfd_reloc_status_type r);
8275
8276
DESCRIPTION
8277
  Mark a link relocation error according to R, with a suitable
8278
  message as applicable.
8279
  Written as a function in order to reduce code duplication.
8280
*/
8281
8282
void
8283
_bfd_link_reloc_status_error (bfd *abfd, struct bfd_link_info *link_info,
8284
            asection *input_section, arelent *reloc_entry,
8285
            char *error_message, bfd_reloc_status_type r)
8286
3.55k
{
8287
3.55k
  bfd_size_type reloc_address = reloc_entry->address;
8288
3.55k
  bfd *input_bfd = input_section->owner;
8289
8290
3.55k
  switch (r)
8291
3.55k
    {
8292
0
    case bfd_reloc_ok:
8293
0
      break;
8294
487
    case bfd_reloc_undefined:
8295
487
      (*link_info->callbacks->undefined_symbol)
8296
487
  (link_info, bfd_asymbol_name (*reloc_entry->sym_ptr_ptr),
8297
487
   input_bfd, input_section, reloc_address, true);
8298
487
      break;
8299
1.36k
    case bfd_reloc_dangerous:
8300
1.36k
      BFD_ASSERT (error_message != NULL);
8301
1.36k
      (*link_info->callbacks->reloc_dangerous)
8302
1.36k
  (link_info, error_message,
8303
1.36k
   input_bfd, input_section, reloc_address);
8304
1.36k
      break;
8305
445
    case bfd_reloc_overflow:
8306
445
      (*link_info->callbacks->reloc_overflow)
8307
445
  (link_info, NULL,
8308
445
   bfd_asymbol_name (*reloc_entry->sym_ptr_ptr),
8309
445
   reloc_entry->howto->name, reloc_entry->addend,
8310
445
   input_bfd, input_section, reloc_address);
8311
445
      break;
8312
1.24k
    case bfd_reloc_outofrange:
8313
      /* PR ld/13730:
8314
   This error can result when processing some partially
8315
   complete binaries.  Do not abort, but issue an error
8316
   message instead.  */
8317
1.24k
      link_info->callbacks->einfo
8318
  /* xgettext:c-format */
8319
1.24k
  (_("%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"),
8320
1.24k
   abfd, input_section, reloc_entry);
8321
1.24k
      break;
8322
4
    case bfd_reloc_notsupported:
8323
      /* PR ld/17512
8324
   This error can result when processing a corrupt binary.
8325
   Do not abort.  Issue an error message instead.  */
8326
4
      link_info->callbacks->einfo
8327
  /* xgettext:c-format */
8328
4
  (_("%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"),
8329
4
   abfd, input_section, reloc_entry);
8330
4
      break;
8331
0
    default:
8332
      /* PR 17512; file: 90c2a92e.
8333
   Report unexpected results, without aborting.  */
8334
0
      link_info->callbacks->einfo
8335
  /* xgettext:c-format */
8336
0
  (_("%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"),
8337
0
   abfd, input_section, reloc_entry, r);
8338
0
      break;
8339
3.55k
    }
8340
3.55k
}
8341
8342
reloc_howto_type *
8343
_bfd_norelocs_bfd_reloc_type_lookup
8344
    (bfd *abfd,
8345
     bfd_reloc_code_real_type code ATTRIBUTE_UNUSED)
8346
253
{
8347
253
  return (reloc_howto_type *) _bfd_ptr_bfd_null_error (abfd);
8348
253
}
8349
8350
reloc_howto_type *
8351
_bfd_norelocs_bfd_reloc_name_lookup (bfd *abfd,
8352
             const char *reloc_name ATTRIBUTE_UNUSED)
8353
0
{
8354
0
  return (reloc_howto_type *) _bfd_ptr_bfd_null_error (abfd);
8355
0
}
8356
8357
long
8358
_bfd_nodynamic_canonicalize_dynamic_reloc (bfd *abfd,
8359
             arelent **relp ATTRIBUTE_UNUSED,
8360
             asymbol **symp ATTRIBUTE_UNUSED)
8361
0
{
8362
0
  return _bfd_long_bfd_n1_error (abfd);
8363
0
}