Coverage Report

Created: 2026-03-10 08:46

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