Coverage Report

Created: 2026-04-04 08:16

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