OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [bfd/] [reloc.c] - Blame information for rev 299

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 khays
/* BFD support for handling relocation entries.
2
   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3
   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
4
   Free Software Foundation, Inc.
5
   Written by Cygnus Support.
6
 
7
   This file is part of BFD, the Binary File Descriptor library.
8
 
9
   This program is free software; you can redistribute it and/or modify
10
   it under the terms of the GNU General Public License as published by
11
   the Free Software Foundation; either version 3 of the License, or
12
   (at your option) any later version.
13
 
14
   This program is distributed in the hope that it will be useful,
15
   but WITHOUT ANY WARRANTY; without even the implied warranty of
16
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
   GNU General Public License for more details.
18
 
19
   You should have received a copy of the GNU General Public License
20
   along with this program; if not, write to the Free Software
21
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
22
   MA 02110-1301, USA.  */
23
 
24
/*
25
SECTION
26
        Relocations
27
 
28
        BFD maintains relocations in much the same way it maintains
29
        symbols: they are left alone until required, then read in
30
        en-masse and translated into an internal form.  A common
31
        routine <<bfd_perform_relocation>> acts upon the
32
        canonical form to do the fixup.
33
 
34
        Relocations are maintained on a per section basis,
35
        while symbols are maintained on a per BFD basis.
36
 
37
        All that a back end has to do to fit the BFD interface is to create
38
        a <<struct reloc_cache_entry>> for each relocation
39
        in a particular section, and fill in the right bits of the structures.
40
 
41
@menu
42
@* typedef arelent::
43
@* howto manager::
44
@end menu
45
 
46
*/
47
 
48
/* DO compile in the reloc_code name table from libbfd.h.  */
49
#define _BFD_MAKE_TABLE_bfd_reloc_code_real
50
 
51
#include "sysdep.h"
52
#include "bfd.h"
53
#include "bfdlink.h"
54
#include "libbfd.h"
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
CODE_FRAGMENT
66
.
67
.typedef enum bfd_reloc_status
68
.{
69
.  {* No errors detected.  *}
70
.  bfd_reloc_ok,
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
.  {* Unused.  *}
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 - presently
91
.     generated only when linking i960 coff files with i960 b.out
92
.     symbols.  If this type is returned, the error_message argument
93
.     to bfd_perform_relocation will be set.  *}
94
.  bfd_reloc_dangerous
95
. }
96
. bfd_reloc_status_type;
97
.
98
.
99
.typedef struct reloc_cache_entry
100
.{
101
.  {* A pointer into the canonical table of pointers.  *}
102
.  struct bfd_symbol **sym_ptr_ptr;
103
.
104
.  {* offset in section.  *}
105
.  bfd_size_type address;
106
.
107
.  {* addend for relocation value.  *}
108
.  bfd_vma addend;
109
.
110
.  {* Pointer to how to perform the required relocation.  *}
111
.  reloc_howto_type *howto;
112
.
113
.}
114
.arelent;
115
.
116
*/
117
 
118
/*
119
DESCRIPTION
120
 
121
        Here is a description of each of the fields within an <<arelent>>:
122
 
123
        o <<sym_ptr_ptr>>
124
 
125
        The symbol table pointer points to a pointer to the symbol
126
        associated with the relocation request.  It is the pointer
127
        into the table returned by the back end's
128
        <<canonicalize_symtab>> action. @xref{Symbols}. The symbol is
129
        referenced through a pointer to a pointer so that tools like
130
        the linker can fix up all the symbols of the same name by
131
        modifying only one pointer. The relocation routine looks in
132
        the symbol and uses the base of the section the symbol is
133
        attached to and the value of the symbol as the initial
134
        relocation offset. If the symbol pointer is zero, then the
135
        section provided is looked up.
136
 
137
        o <<address>>
138
 
139
        The <<address>> field gives the offset in bytes from the base of
140
        the section data which owns the relocation record to the first
141
        byte of relocatable information. The actual data relocated
142
        will be relative to this point; for example, a relocation
143
        type which modifies the bottom two bytes of a four byte word
144
        would not touch the first byte pointed to in a big endian
145
        world.
146
 
147
        o <<addend>>
148
 
149
        The <<addend>> is a value provided by the back end to be added (!)
150
        to the relocation offset. Its interpretation is dependent upon
151
        the howto. For example, on the 68k the code:
152
 
153
|        char foo[];
154
|        main()
155
|                {
156
|                return foo[0x12345678];
157
|                }
158
 
159
        Could be compiled into:
160
 
161
|        linkw fp,#-4
162
|        moveb @@#12345678,d0
163
|        extbl d0
164
|        unlk fp
165
|        rts
166
 
167
        This could create a reloc pointing to <<foo>>, but leave the
168
        offset in the data, something like:
169
 
170
|RELOCATION RECORDS FOR [.text]:
171
|offset   type      value
172
|00000006 32        _foo
173
|
174
|00000000 4e56 fffc          ; linkw fp,#-4
175
|00000004 1039 1234 5678     ; moveb @@#12345678,d0
176
|0000000a 49c0               ; extbl d0
177
|0000000c 4e5e               ; unlk fp
178
|0000000e 4e75               ; rts
179
 
180
        Using coff and an 88k, some instructions don't have enough
181
        space in them to represent the full address range, and
182
        pointers have to be loaded in two parts. So you'd get something like:
183
 
184
|        or.u     r13,r0,hi16(_foo+0x12345678)
185
|        ld.b     r2,r13,lo16(_foo+0x12345678)
186
|        jmp      r1
187
 
188
        This should create two relocs, both pointing to <<_foo>>, and with
189
        0x12340000 in their addend field. The data would consist of:
190
 
191
|RELOCATION RECORDS FOR [.text]:
192
|offset   type      value
193
|00000002 HVRT16    _foo+0x12340000
194
|00000006 LVRT16    _foo+0x12340000
195
|
196
|00000000 5da05678           ; or.u r13,r0,0x5678
197
|00000004 1c4d5678           ; ld.b r2,r13,0x5678
198
|00000008 f400c001           ; jmp r1
199
 
200
        The relocation routine digs out the value from the data, adds
201
        it to the addend to get the original offset, and then adds the
202
        value of <<_foo>>. Note that all 32 bits have to be kept around
203
        somewhere, to cope with carry from bit 15 to bit 16.
204
 
205
        One further example is the sparc and the a.out format. The
206
        sparc has a similar problem to the 88k, in that some
207
        instructions don't have room for an entire offset, but on the
208
        sparc the parts are created in odd sized lumps. The designers of
209
        the a.out format chose to not use the data within the section
210
        for storing part of the offset; all the offset is kept within
211
        the reloc. Anything in the data should be ignored.
212
 
213
|        save %sp,-112,%sp
214
|        sethi %hi(_foo+0x12345678),%g2
215
|        ldsb [%g2+%lo(_foo+0x12345678)],%i0
216
|        ret
217
|        restore
218
 
219
        Both relocs contain a pointer to <<foo>>, and the offsets
220
        contain junk.
221
 
222
|RELOCATION RECORDS FOR [.text]:
223
|offset   type      value
224
|00000004 HI22      _foo+0x12345678
225
|00000008 LO10      _foo+0x12345678
226
|
227
|00000000 9de3bf90     ; save %sp,-112,%sp
228
|00000004 05000000     ; sethi %hi(_foo+0),%g2
229
|00000008 f048a000     ; ldsb [%g2+%lo(_foo+0)],%i0
230
|0000000c 81c7e008     ; ret
231
|00000010 81e80000     ; restore
232
 
233
        o <<howto>>
234
 
235
        The <<howto>> field can be imagined as a
236
        relocation instruction. It is a pointer to a structure which
237
        contains information on what to do with all of the other
238
        information in the reloc record and data section. A back end
239
        would normally have a relocation instruction set and turn
240
        relocations into pointers to the correct structure on input -
241
        but it would be possible to create each howto field on demand.
242
 
243
*/
244
 
245
/*
246
SUBSUBSECTION
247
        <<enum complain_overflow>>
248
 
249
        Indicates what sort of overflow checking should be done when
250
        performing a relocation.
251
 
252
CODE_FRAGMENT
253
.
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 bfd_symbol;             {* Forward declaration.  *}
284
.
285
.struct reloc_howto_struct
286
.{
287
.  {*  The type field has mainly a documentary use - the back end can
288
.      do what it wants with it, though normally the back end's
289
.      external idea of what a reloc number is stored
290
.      in this field.  For example, a PC relative word relocation
291
.      in a coff environment has the type 023 - because that's
292
.      what the outside world calls a R_PCRWORD reloc.  *}
293
.  unsigned int type;
294
.
295
.  {*  The value the final relocation is shifted right by.  This drops
296
.      unwanted data from the relocation.  *}
297
.  unsigned int rightshift;
298
.
299
.  {*  The size of the item to be relocated.  This is *not* a
300
.      power-of-two measure.  To get the number of bytes operated
301
.      on by a type of relocation, use bfd_get_reloc_size.  *}
302
.  int size;
303
.
304
.  {*  The number of bits in the item to be relocated.  This is used
305
.      when doing overflow checking.  *}
306
.  unsigned int bitsize;
307
.
308
.  {*  The relocation is relative to the field being relocated.  *}
309
.  bfd_boolean pc_relative;
310
.
311
.  {*  The bit position of the reloc value in the destination.
312
.      The relocated value is left shifted by this amount.  *}
313
.  unsigned int bitpos;
314
.
315
.  {* What type of overflow error should be checked for when
316
.     relocating.  *}
317
.  enum complain_overflow complain_on_overflow;
318
.
319
.  {* If this field is non null, then the supplied function is
320
.     called rather than the normal function.  This allows really
321
.     strange relocation methods to be accommodated (e.g., i960 callj
322
.     instructions).  *}
323
.  bfd_reloc_status_type (*special_function)
324
.    (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
325
.     bfd *, char **);
326
.
327
.  {* The textual name of the relocation type.  *}
328
.  char *name;
329
.
330
.  {* Some formats record a relocation addend in the section contents
331
.     rather than with the relocation.  For ELF formats this is the
332
.     distinction between USE_REL and USE_RELA (though the code checks
333
.     for USE_REL == 1/0).  The value of this field is TRUE if the
334
.     addend is recorded with the section contents; when performing a
335
.     partial link (ld -r) the section contents (the data) will be
336
.     modified.  The value of this field is FALSE if addends are
337
.     recorded with the relocation (in arelent.addend); when performing
338
.     a partial link the relocation will be modified.
339
.     All relocations for all ELF USE_RELA targets should set this field
340
.     to FALSE (values of TRUE should be looked on with suspicion).
341
.     However, the converse is not true: not all relocations of all ELF
342
.     USE_REL targets set this field to TRUE.  Why this is so is peculiar
343
.     to each particular target.  For relocs that aren't used in partial
344
.     links (e.g. GOT stuff) it doesn't matter what this is set to.  *}
345
.  bfd_boolean partial_inplace;
346
.
347
.  {* src_mask selects the part of the instruction (or data) to be used
348
.     in the relocation sum.  If the target relocations don't have an
349
.     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
350
.     dst_mask to extract the addend from the section contents.  If
351
.     relocations do have an addend in the reloc, eg. ELF USE_RELA, this
352
.     field should be zero.  Non-zero values for ELF USE_RELA targets are
353
.     bogus as in those cases the value in the dst_mask part of the
354
.     section contents should be treated as garbage.  *}
355
.  bfd_vma src_mask;
356
.
357
.  {* dst_mask selects which parts of the instruction (or data) are
358
.     replaced with a relocated value.  *}
359
.  bfd_vma dst_mask;
360
.
361
.  {* When some formats create PC relative instructions, they leave
362
.     the value of the pc of the place being relocated in the offset
363
.     slot of the instruction, so that a PC relative relocation can
364
.     be made just by adding in an ordinary offset (e.g., sun3 a.out).
365
.     Some formats leave the displacement part of an instruction
366
.     empty (e.g., m88k bcs); this flag signals the fact.  *}
367
.  bfd_boolean pcrel_offset;
368
.};
369
.
370
*/
371
 
372
/*
373
FUNCTION
374
        The HOWTO Macro
375
 
376
DESCRIPTION
377
        The HOWTO define is horrible and will go away.
378
 
379
.#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
380
.  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
381
 
382
DESCRIPTION
383
        And will be replaced with the totally magic way. But for the
384
        moment, we are compatible, so do it this way.
385
 
386
.#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
387
.  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
388
.         NAME, FALSE, 0, 0, IN)
389
.
390
 
391
DESCRIPTION
392
        This is used to fill in an empty howto entry in an array.
393
 
394
.#define EMPTY_HOWTO(C) \
395
.  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
396
.         NULL, FALSE, 0, 0, FALSE)
397
.
398
 
399
DESCRIPTION
400
        Helper routine to turn a symbol into a relocation value.
401
 
402
.#define HOWTO_PREPARE(relocation, symbol)               \
403
.  {                                                     \
404
.    if (symbol != NULL)                                 \
405
.      {                                                 \
406
.        if (bfd_is_com_section (symbol->section))       \
407
.          {                                             \
408
.            relocation = 0;                             \
409
.          }                                             \
410
.        else                                            \
411
.          {                                             \
412
.            relocation = symbol->value;                 \
413
.          }                                             \
414
.      }                                                 \
415
.  }
416
.
417
*/
418
 
419
/*
420
FUNCTION
421
        bfd_get_reloc_size
422
 
423
SYNOPSIS
424
        unsigned int bfd_get_reloc_size (reloc_howto_type *);
425
 
426
DESCRIPTION
427
        For a reloc_howto_type that operates on a fixed number of bytes,
428
        this returns the number of bytes operated on.
429
 */
430
 
431
unsigned int
432
bfd_get_reloc_size (reloc_howto_type *howto)
433
{
434
  switch (howto->size)
435
    {
436
    case 0: return 1;
437
    case 1: return 2;
438
    case 2: return 4;
439
    case 3: return 0;
440
    case 4: return 8;
441
    case 8: return 16;
442
    case -2: return 4;
443
    default: abort ();
444
    }
445
}
446
 
447
/*
448
TYPEDEF
449
        arelent_chain
450
 
451
DESCRIPTION
452
 
453
        How relocs are tied together in an <<asection>>:
454
 
455
.typedef struct relent_chain
456
.{
457
.  arelent relent;
458
.  struct relent_chain *next;
459
.}
460
.arelent_chain;
461
.
462
*/
463
 
464
/* N_ONES produces N one bits, without overflowing machine arithmetic.  */
465
#define N_ONES(n) (((((bfd_vma) 1 << ((n) - 1)) - 1) << 1) | 1)
466
 
467
/*
468
FUNCTION
469
        bfd_check_overflow
470
 
471
SYNOPSIS
472
        bfd_reloc_status_type bfd_check_overflow
473
          (enum complain_overflow how,
474
           unsigned int bitsize,
475
           unsigned int rightshift,
476
           unsigned int addrsize,
477
           bfd_vma relocation);
478
 
479
DESCRIPTION
480
        Perform overflow checking on @var{relocation} which has
481
        @var{bitsize} significant bits and will be shifted right by
482
        @var{rightshift} bits, on a machine with addresses containing
483
        @var{addrsize} significant bits.  The result is either of
484
        @code{bfd_reloc_ok} or @code{bfd_reloc_overflow}.
485
 
486
*/
487
 
488
bfd_reloc_status_type
489
bfd_check_overflow (enum complain_overflow how,
490
                    unsigned int bitsize,
491
                    unsigned int rightshift,
492
                    unsigned int addrsize,
493
                    bfd_vma relocation)
494
{
495
  bfd_vma fieldmask, addrmask, signmask, ss, a;
496
  bfd_reloc_status_type flag = bfd_reloc_ok;
497
 
498
  /* Note: BITSIZE should always be <= ADDRSIZE, but in case it's not,
499
     we'll be permissive: extra bits in the field mask will
500
     automatically extend the address mask for purposes of the
501
     overflow check.  */
502
  fieldmask = N_ONES (bitsize);
503
  signmask = ~fieldmask;
504
  addrmask = N_ONES (addrsize) | (fieldmask << rightshift);
505
  a = (relocation & addrmask) >> rightshift;;
506
 
507
  switch (how)
508
    {
509
    case complain_overflow_dont:
510
      break;
511
 
512
    case complain_overflow_signed:
513
      /* If any sign bits are set, all sign bits must be set.  That
514
         is, A must be a valid negative address after shifting.  */
515
      signmask = ~ (fieldmask >> 1);
516
      /* Fall thru */
517
 
518
    case complain_overflow_bitfield:
519
      /* Bitfields are sometimes signed, sometimes unsigned.  We
520
         explicitly allow an address wrap too, which means a bitfield
521
         of n bits is allowed to store -2**n to 2**n-1.  Thus overflow
522
         if the value has some, but not all, bits set outside the
523
         field.  */
524
      ss = a & signmask;
525
      if (ss != 0 && ss != ((addrmask >> rightshift) & signmask))
526
        flag = bfd_reloc_overflow;
527
      break;
528
 
529
    case complain_overflow_unsigned:
530
      /* We have an overflow if the address does not fit in the field.  */
531
      if ((a & signmask) != 0)
532
        flag = bfd_reloc_overflow;
533
      break;
534
 
535
    default:
536
      abort ();
537
    }
538
 
539
  return flag;
540
}
541
 
542
/*
543
FUNCTION
544
        bfd_perform_relocation
545
 
546
SYNOPSIS
547
        bfd_reloc_status_type bfd_perform_relocation
548
          (bfd *abfd,
549
           arelent *reloc_entry,
550
           void *data,
551
           asection *input_section,
552
           bfd *output_bfd,
553
           char **error_message);
554
 
555
DESCRIPTION
556
        If @var{output_bfd} is supplied to this function, the
557
        generated image will be relocatable; the relocations are
558
        copied to the output file after they have been changed to
559
        reflect the new state of the world. There are two ways of
560
        reflecting the results of partial linkage in an output file:
561
        by modifying the output data in place, and by modifying the
562
        relocation record.  Some native formats (e.g., basic a.out and
563
        basic coff) have no way of specifying an addend in the
564
        relocation type, so the addend has to go in the output data.
565
        This is no big deal since in these formats the output data
566
        slot will always be big enough for the addend. Complex reloc
567
        types with addends were invented to solve just this problem.
568
        The @var{error_message} argument is set to an error message if
569
        this return @code{bfd_reloc_dangerous}.
570
 
571
*/
572
 
573
bfd_reloc_status_type
574
bfd_perform_relocation (bfd *abfd,
575
                        arelent *reloc_entry,
576
                        void *data,
577
                        asection *input_section,
578
                        bfd *output_bfd,
579
                        char **error_message)
580
{
581
  bfd_vma relocation;
582
  bfd_reloc_status_type flag = bfd_reloc_ok;
583
  bfd_size_type octets = reloc_entry->address * bfd_octets_per_byte (abfd);
584
  bfd_vma output_base = 0;
585
  reloc_howto_type *howto = reloc_entry->howto;
586
  asection *reloc_target_output_section;
587
  asymbol *symbol;
588
 
589
  symbol = *(reloc_entry->sym_ptr_ptr);
590
  if (bfd_is_abs_section (symbol->section)
591
      && output_bfd != NULL)
592
    {
593
      reloc_entry->address += input_section->output_offset;
594
      return bfd_reloc_ok;
595
    }
596
 
597
  /* If we are not producing relocatable output, return an error if
598
     the symbol is not defined.  An undefined weak symbol is
599
     considered to have a value of zero (SVR4 ABI, p. 4-27).  */
600
  if (bfd_is_und_section (symbol->section)
601
      && (symbol->flags & BSF_WEAK) == 0
602
      && output_bfd == NULL)
603
    flag = bfd_reloc_undefined;
604
 
605
  /* If there is a function supplied to handle this relocation type,
606
     call it.  It'll return `bfd_reloc_continue' if further processing
607
     can be done.  */
608
  if (howto->special_function)
609
    {
610
      bfd_reloc_status_type cont;
611
      cont = howto->special_function (abfd, reloc_entry, symbol, data,
612
                                      input_section, output_bfd,
613
                                      error_message);
614
      if (cont != bfd_reloc_continue)
615
        return cont;
616
    }
617
 
618
  /* Is the address of the relocation really within the section?  */
619
  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
620
    return bfd_reloc_outofrange;
621
 
622
  /* Work out which section the relocation is targeted at and the
623
     initial relocation command value.  */
624
 
625
  /* Get symbol value.  (Common symbols are special.)  */
626
  if (bfd_is_com_section (symbol->section))
627
    relocation = 0;
628
  else
629
    relocation = symbol->value;
630
 
631
  reloc_target_output_section = symbol->section->output_section;
632
 
633
  /* Convert input-section-relative symbol value to absolute.  */
634
  if ((output_bfd && ! howto->partial_inplace)
635
      || reloc_target_output_section == NULL)
636
    output_base = 0;
637
  else
638
    output_base = reloc_target_output_section->vma;
639
 
640
  relocation += output_base + symbol->section->output_offset;
641
 
642
  /* Add in supplied addend.  */
643
  relocation += reloc_entry->addend;
644
 
645
  /* Here the variable relocation holds the final address of the
646
     symbol we are relocating against, plus any addend.  */
647
 
648
  if (howto->pc_relative)
649
    {
650
      /* This is a PC relative relocation.  We want to set RELOCATION
651
         to the distance between the address of the symbol and the
652
         location.  RELOCATION is already the address of the symbol.
653
 
654
         We start by subtracting the address of the section containing
655
         the location.
656
 
657
         If pcrel_offset is set, we must further subtract the position
658
         of the location within the section.  Some targets arrange for
659
         the addend to be the negative of the position of the location
660
         within the section; for example, i386-aout does this.  For
661
         i386-aout, pcrel_offset is FALSE.  Some other targets do not
662
         include the position of the location; for example, m88kbcs,
663
         or ELF.  For those targets, pcrel_offset is TRUE.
664
 
665
         If we are producing relocatable output, then we must ensure
666
         that this reloc will be correctly computed when the final
667
         relocation is done.  If pcrel_offset is FALSE we want to wind
668
         up with the negative of the location within the section,
669
         which means we must adjust the existing addend by the change
670
         in the location within the section.  If pcrel_offset is TRUE
671
         we do not want to adjust the existing addend at all.
672
 
673
         FIXME: This seems logical to me, but for the case of
674
         producing relocatable output it is not what the code
675
         actually does.  I don't want to change it, because it seems
676
         far too likely that something will break.  */
677
 
678
      relocation -=
679
        input_section->output_section->vma + input_section->output_offset;
680
 
681
      if (howto->pcrel_offset)
682
        relocation -= reloc_entry->address;
683
    }
684
 
685
  if (output_bfd != NULL)
686
    {
687
      if (! howto->partial_inplace)
688
        {
689
          /* This is a partial relocation, and we want to apply the relocation
690
             to the reloc entry rather than the raw data. Modify the reloc
691
             inplace to reflect what we now know.  */
692
          reloc_entry->addend = relocation;
693
          reloc_entry->address += input_section->output_offset;
694
          return flag;
695
        }
696
      else
697
        {
698
          /* This is a partial relocation, but inplace, so modify the
699
             reloc record a bit.
700
 
701
             If we've relocated with a symbol with a section, change
702
             into a ref to the section belonging to the symbol.  */
703
 
704
          reloc_entry->address += input_section->output_offset;
705
 
706
          /* WTF?? */
707
          if (abfd->xvec->flavour == bfd_target_coff_flavour
708
              && strcmp (abfd->xvec->name, "coff-Intel-little") != 0
709
              && strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
710
            {
711
              /* For m68k-coff, the addend was being subtracted twice during
712
                 relocation with -r.  Removing the line below this comment
713
                 fixes that problem; see PR 2953.
714
 
715
However, Ian wrote the following, regarding removing the line below,
716
which explains why it is still enabled:  --djm
717
 
718
If you put a patch like that into BFD you need to check all the COFF
719
linkers.  I am fairly certain that patch will break coff-i386 (e.g.,
720
SCO); see coff_i386_reloc in coff-i386.c where I worked around the
721
problem in a different way.  There may very well be a reason that the
722
code works as it does.
723
 
724
Hmmm.  The first obvious point is that bfd_perform_relocation should
725
not have any tests that depend upon the flavour.  It's seem like
726
entirely the wrong place for such a thing.  The second obvious point
727
is that the current code ignores the reloc addend when producing
728
relocatable output for COFF.  That's peculiar.  In fact, I really
729
have no idea what the point of the line you want to remove is.
730
 
731
A typical COFF reloc subtracts the old value of the symbol and adds in
732
the new value to the location in the object file (if it's a pc
733
relative reloc it adds the difference between the symbol value and the
734
location).  When relocating we need to preserve that property.
735
 
736
BFD handles this by setting the addend to the negative of the old
737
value of the symbol.  Unfortunately it handles common symbols in a
738
non-standard way (it doesn't subtract the old value) but that's a
739
different story (we can't change it without losing backward
740
compatibility with old object files) (coff-i386 does subtract the old
741
value, to be compatible with existing coff-i386 targets, like SCO).
742
 
743
So everything works fine when not producing relocatable output.  When
744
we are producing relocatable output, logically we should do exactly
745
what we do when not producing relocatable output.  Therefore, your
746
patch is correct.  In fact, it should probably always just set
747
reloc_entry->addend to 0 for all cases, since it is, in fact, going to
748
add the value into the object file.  This won't hurt the COFF code,
749
which doesn't use the addend; I'm not sure what it will do to other
750
formats (the thing to check for would be whether any formats both use
751
the addend and set partial_inplace).
752
 
753
When I wanted to make coff-i386 produce relocatable output, I ran
754
into the problem that you are running into: I wanted to remove that
755
line.  Rather than risk it, I made the coff-i386 relocs use a special
756
function; it's coff_i386_reloc in coff-i386.c.  The function
757
specifically adds the addend field into the object file, knowing that
758
bfd_perform_relocation is not going to.  If you remove that line, then
759
coff-i386.c will wind up adding the addend field in twice.  It's
760
trivial to fix; it just needs to be done.
761
 
762
The problem with removing the line is just that it may break some
763
working code.  With BFD it's hard to be sure of anything.  The right
764
way to deal with this is simply to build and test at least all the
765
supported COFF targets.  It should be straightforward if time and disk
766
space consuming.  For each target:
767
    1) build the linker
768
    2) generate some executable, and link it using -r (I would
769
       probably use paranoia.o and link against newlib/libc.a, which
770
       for all the supported targets would be available in
771
       /usr/cygnus/progressive/H-host/target/lib/libc.a).
772
    3) make the change to reloc.c
773
    4) rebuild the linker
774
    5) repeat step 2
775
    6) if the resulting object files are the same, you have at least
776
       made it no worse
777
    7) if they are different you have to figure out which version is
778
       right
779
*/
780
              relocation -= reloc_entry->addend;
781
              reloc_entry->addend = 0;
782
            }
783
          else
784
            {
785
              reloc_entry->addend = relocation;
786
            }
787
        }
788
    }
789
  else
790
    {
791
      reloc_entry->addend = 0;
792
    }
793
 
794
  /* FIXME: This overflow checking is incomplete, because the value
795
     might have overflowed before we get here.  For a correct check we
796
     need to compute the value in a size larger than bitsize, but we
797
     can't reasonably do that for a reloc the same size as a host
798
     machine word.
799
     FIXME: We should also do overflow checking on the result after
800
     adding in the value contained in the object file.  */
801
  if (howto->complain_on_overflow != complain_overflow_dont
802
      && flag == bfd_reloc_ok)
803
    flag = bfd_check_overflow (howto->complain_on_overflow,
804
                               howto->bitsize,
805
                               howto->rightshift,
806
                               bfd_arch_bits_per_address (abfd),
807
                               relocation);
808
 
809
  /* Either we are relocating all the way, or we don't want to apply
810
     the relocation to the reloc entry (probably because there isn't
811
     any room in the output format to describe addends to relocs).  */
812
 
813
  /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler
814
     (OSF version 1.3, compiler version 3.11).  It miscompiles the
815
     following program:
816
 
817
     struct str
818
     {
819
       unsigned int i0;
820
     } s = { 0 };
821
 
822
     int
823
     main ()
824
     {
825
       unsigned long x;
826
 
827
       x = 0x100000000;
828
       x <<= (unsigned long) s.i0;
829
       if (x == 0)
830
         printf ("failed\n");
831
       else
832
         printf ("succeeded (%lx)\n", x);
833
     }
834
     */
835
 
836
  relocation >>= (bfd_vma) howto->rightshift;
837
 
838
  /* Shift everything up to where it's going to be used.  */
839
  relocation <<= (bfd_vma) howto->bitpos;
840
 
841
  /* Wait for the day when all have the mask in them.  */
842
 
843
  /* What we do:
844
     i instruction to be left alone
845
     o offset within instruction
846
     r relocation offset to apply
847
     S src mask
848
     D dst mask
849
     N ~dst mask
850
     A part 1
851
     B part 2
852
     R result
853
 
854
     Do this:
855
     ((  i i i i i o o o o o  from bfd_get<size>
856
     and           S S S S S) to get the size offset we want
857
     +   r r r r r r r r r r) to get the final value to place
858
     and           D D D D D  to chop to right size
859
     -----------------------
860
     =             A A A A A
861
     And this:
862
     (   i i i i i o o o o o  from bfd_get<size>
863
     and N N N N N          ) get instruction
864
     -----------------------
865
     =   B B B B B
866
 
867
     And then:
868
     (   B B B B B
869
     or            A A A A A)
870
     -----------------------
871
     =   R R R R R R R R R R  put into bfd_put<size>
872
     */
873
 
874
#define DOIT(x) \
875
  x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) +  relocation) & howto->dst_mask))
876
 
877
  switch (howto->size)
878
    {
879
    case 0:
880
      {
881
        char x = bfd_get_8 (abfd, (char *) data + octets);
882
        DOIT (x);
883
        bfd_put_8 (abfd, x, (unsigned char *) data + octets);
884
      }
885
      break;
886
 
887
    case 1:
888
      {
889
        short x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
890
        DOIT (x);
891
        bfd_put_16 (abfd, (bfd_vma) x, (unsigned char *) data + octets);
892
      }
893
      break;
894
    case 2:
895
      {
896
        long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
897
        DOIT (x);
898
        bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
899
      }
900
      break;
901
    case -2:
902
      {
903
        long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
904
        relocation = -relocation;
905
        DOIT (x);
906
        bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
907
      }
908
      break;
909
 
910
    case -1:
911
      {
912
        long x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
913
        relocation = -relocation;
914
        DOIT (x);
915
        bfd_put_16 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
916
      }
917
      break;
918
 
919
    case 3:
920
      /* Do nothing */
921
      break;
922
 
923
    case 4:
924
#ifdef BFD64
925
      {
926
        bfd_vma x = bfd_get_64 (abfd, (bfd_byte *) data + octets);
927
        DOIT (x);
928
        bfd_put_64 (abfd, x, (bfd_byte *) data + octets);
929
      }
930
#else
931
      abort ();
932
#endif
933
      break;
934
    default:
935
      return bfd_reloc_other;
936
    }
937
 
938
  return flag;
939
}
940
 
941
/*
942
FUNCTION
943
        bfd_install_relocation
944
 
945
SYNOPSIS
946
        bfd_reloc_status_type bfd_install_relocation
947
          (bfd *abfd,
948
           arelent *reloc_entry,
949
           void *data, bfd_vma data_start,
950
           asection *input_section,
951
           char **error_message);
952
 
953
DESCRIPTION
954
        This looks remarkably like <<bfd_perform_relocation>>, except it
955
        does not expect that the section contents have been filled in.
956
        I.e., it's suitable for use when creating, rather than applying
957
        a relocation.
958
 
959
        For now, this function should be considered reserved for the
960
        assembler.
961
*/
962
 
963
bfd_reloc_status_type
964
bfd_install_relocation (bfd *abfd,
965
                        arelent *reloc_entry,
966
                        void *data_start,
967
                        bfd_vma data_start_offset,
968
                        asection *input_section,
969
                        char **error_message)
970
{
971
  bfd_vma relocation;
972
  bfd_reloc_status_type flag = bfd_reloc_ok;
973
  bfd_size_type octets = reloc_entry->address * bfd_octets_per_byte (abfd);
974
  bfd_vma output_base = 0;
975
  reloc_howto_type *howto = reloc_entry->howto;
976
  asection *reloc_target_output_section;
977
  asymbol *symbol;
978
  bfd_byte *data;
979
 
980
  symbol = *(reloc_entry->sym_ptr_ptr);
981
  if (bfd_is_abs_section (symbol->section))
982
    {
983
      reloc_entry->address += input_section->output_offset;
984
      return bfd_reloc_ok;
985
    }
986
 
987
  /* If there is a function supplied to handle this relocation type,
988
     call it.  It'll return `bfd_reloc_continue' if further processing
989
     can be done.  */
990
  if (howto->special_function)
991
    {
992
      bfd_reloc_status_type cont;
993
 
994
      /* XXX - The special_function calls haven't been fixed up to deal
995
         with creating new relocations and section contents.  */
996
      cont = howto->special_function (abfd, reloc_entry, symbol,
997
                                      /* XXX - Non-portable! */
998
                                      ((bfd_byte *) data_start
999
                                       - data_start_offset),
1000
                                      input_section, abfd, error_message);
1001
      if (cont != bfd_reloc_continue)
1002
        return cont;
1003
    }
1004
 
1005
  /* Is the address of the relocation really within the section?  */
1006
  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
1007
    return bfd_reloc_outofrange;
1008
 
1009
  /* Work out which section the relocation is targeted at and the
1010
     initial relocation command value.  */
1011
 
1012
  /* Get symbol value.  (Common symbols are special.)  */
1013
  if (bfd_is_com_section (symbol->section))
1014
    relocation = 0;
1015
  else
1016
    relocation = symbol->value;
1017
 
1018
  reloc_target_output_section = symbol->section->output_section;
1019
 
1020
  /* Convert input-section-relative symbol value to absolute.  */
1021
  if (! howto->partial_inplace)
1022
    output_base = 0;
1023
  else
1024
    output_base = reloc_target_output_section->vma;
1025
 
1026
  relocation += output_base + symbol->section->output_offset;
1027
 
1028
  /* Add in supplied addend.  */
1029
  relocation += reloc_entry->addend;
1030
 
1031
  /* Here the variable relocation holds the final address of the
1032
     symbol we are relocating against, plus any addend.  */
1033
 
1034
  if (howto->pc_relative)
1035
    {
1036
      /* This is a PC relative relocation.  We want to set RELOCATION
1037
         to the distance between the address of the symbol and the
1038
         location.  RELOCATION is already the address of the symbol.
1039
 
1040
         We start by subtracting the address of the section containing
1041
         the location.
1042
 
1043
         If pcrel_offset is set, we must further subtract the position
1044
         of the location within the section.  Some targets arrange for
1045
         the addend to be the negative of the position of the location
1046
         within the section; for example, i386-aout does this.  For
1047
         i386-aout, pcrel_offset is FALSE.  Some other targets do not
1048
         include the position of the location; for example, m88kbcs,
1049
         or ELF.  For those targets, pcrel_offset is TRUE.
1050
 
1051
         If we are producing relocatable output, then we must ensure
1052
         that this reloc will be correctly computed when the final
1053
         relocation is done.  If pcrel_offset is FALSE we want to wind
1054
         up with the negative of the location within the section,
1055
         which means we must adjust the existing addend by the change
1056
         in the location within the section.  If pcrel_offset is TRUE
1057
         we do not want to adjust the existing addend at all.
1058
 
1059
         FIXME: This seems logical to me, but for the case of
1060
         producing relocatable output it is not what the code
1061
         actually does.  I don't want to change it, because it seems
1062
         far too likely that something will break.  */
1063
 
1064
      relocation -=
1065
        input_section->output_section->vma + input_section->output_offset;
1066
 
1067
      if (howto->pcrel_offset && howto->partial_inplace)
1068
        relocation -= reloc_entry->address;
1069
    }
1070
 
1071
  if (! howto->partial_inplace)
1072
    {
1073
      /* This is a partial relocation, and we want to apply the relocation
1074
         to the reloc entry rather than the raw data. Modify the reloc
1075
         inplace to reflect what we now know.  */
1076
      reloc_entry->addend = relocation;
1077
      reloc_entry->address += input_section->output_offset;
1078
      return flag;
1079
    }
1080
  else
1081
    {
1082
      /* This is a partial relocation, but inplace, so modify the
1083
         reloc record a bit.
1084
 
1085
         If we've relocated with a symbol with a section, change
1086
         into a ref to the section belonging to the symbol.  */
1087
      reloc_entry->address += input_section->output_offset;
1088
 
1089
      /* WTF?? */
1090
      if (abfd->xvec->flavour == bfd_target_coff_flavour
1091
          && strcmp (abfd->xvec->name, "coff-Intel-little") != 0
1092
          && strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
1093
        {
1094
 
1095
          /* For m68k-coff, the addend was being subtracted twice during
1096
             relocation with -r.  Removing the line below this comment
1097
             fixes that problem; see PR 2953.
1098
 
1099
However, Ian wrote the following, regarding removing the line below,
1100
which explains why it is still enabled:  --djm
1101
 
1102
If you put a patch like that into BFD you need to check all the COFF
1103
linkers.  I am fairly certain that patch will break coff-i386 (e.g.,
1104
SCO); see coff_i386_reloc in coff-i386.c where I worked around the
1105
problem in a different way.  There may very well be a reason that the
1106
code works as it does.
1107
 
1108
Hmmm.  The first obvious point is that bfd_install_relocation should
1109
not have any tests that depend upon the flavour.  It's seem like
1110
entirely the wrong place for such a thing.  The second obvious point
1111
is that the current code ignores the reloc addend when producing
1112
relocatable output for COFF.  That's peculiar.  In fact, I really
1113
have no idea what the point of the line you want to remove is.
1114
 
1115
A typical COFF reloc subtracts the old value of the symbol and adds in
1116
the new value to the location in the object file (if it's a pc
1117
relative reloc it adds the difference between the symbol value and the
1118
location).  When relocating we need to preserve that property.
1119
 
1120
BFD handles this by setting the addend to the negative of the old
1121
value of the symbol.  Unfortunately it handles common symbols in a
1122
non-standard way (it doesn't subtract the old value) but that's a
1123
different story (we can't change it without losing backward
1124
compatibility with old object files) (coff-i386 does subtract the old
1125
value, to be compatible with existing coff-i386 targets, like SCO).
1126
 
1127
So everything works fine when not producing relocatable output.  When
1128
we are producing relocatable output, logically we should do exactly
1129
what we do when not producing relocatable output.  Therefore, your
1130
patch is correct.  In fact, it should probably always just set
1131
reloc_entry->addend to 0 for all cases, since it is, in fact, going to
1132
add the value into the object file.  This won't hurt the COFF code,
1133
which doesn't use the addend; I'm not sure what it will do to other
1134
formats (the thing to check for would be whether any formats both use
1135
the addend and set partial_inplace).
1136
 
1137
When I wanted to make coff-i386 produce relocatable output, I ran
1138
into the problem that you are running into: I wanted to remove that
1139
line.  Rather than risk it, I made the coff-i386 relocs use a special
1140
function; it's coff_i386_reloc in coff-i386.c.  The function
1141
specifically adds the addend field into the object file, knowing that
1142
bfd_install_relocation is not going to.  If you remove that line, then
1143
coff-i386.c will wind up adding the addend field in twice.  It's
1144
trivial to fix; it just needs to be done.
1145
 
1146
The problem with removing the line is just that it may break some
1147
working code.  With BFD it's hard to be sure of anything.  The right
1148
way to deal with this is simply to build and test at least all the
1149
supported COFF targets.  It should be straightforward if time and disk
1150
space consuming.  For each target:
1151
    1) build the linker
1152
    2) generate some executable, and link it using -r (I would
1153
       probably use paranoia.o and link against newlib/libc.a, which
1154
       for all the supported targets would be available in
1155
       /usr/cygnus/progressive/H-host/target/lib/libc.a).
1156
    3) make the change to reloc.c
1157
    4) rebuild the linker
1158
    5) repeat step 2
1159
    6) if the resulting object files are the same, you have at least
1160
       made it no worse
1161
    7) if they are different you have to figure out which version is
1162
       right.  */
1163
          relocation -= reloc_entry->addend;
1164
          /* FIXME: There should be no target specific code here...  */
1165
          if (strcmp (abfd->xvec->name, "coff-z8k") != 0)
1166
            reloc_entry->addend = 0;
1167
        }
1168
      else
1169
        {
1170
          reloc_entry->addend = relocation;
1171
        }
1172
    }
1173
 
1174
  /* FIXME: This overflow checking is incomplete, because the value
1175
     might have overflowed before we get here.  For a correct check we
1176
     need to compute the value in a size larger than bitsize, but we
1177
     can't reasonably do that for a reloc the same size as a host
1178
     machine word.
1179
     FIXME: We should also do overflow checking on the result after
1180
     adding in the value contained in the object file.  */
1181
  if (howto->complain_on_overflow != complain_overflow_dont)
1182
    flag = bfd_check_overflow (howto->complain_on_overflow,
1183
                               howto->bitsize,
1184
                               howto->rightshift,
1185
                               bfd_arch_bits_per_address (abfd),
1186
                               relocation);
1187
 
1188
  /* Either we are relocating all the way, or we don't want to apply
1189
     the relocation to the reloc entry (probably because there isn't
1190
     any room in the output format to describe addends to relocs).  */
1191
 
1192
  /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler
1193
     (OSF version 1.3, compiler version 3.11).  It miscompiles the
1194
     following program:
1195
 
1196
     struct str
1197
     {
1198
       unsigned int i0;
1199
     } s = { 0 };
1200
 
1201
     int
1202
     main ()
1203
     {
1204
       unsigned long x;
1205
 
1206
       x = 0x100000000;
1207
       x <<= (unsigned long) s.i0;
1208
       if (x == 0)
1209
         printf ("failed\n");
1210
       else
1211
         printf ("succeeded (%lx)\n", x);
1212
     }
1213
     */
1214
 
1215
  relocation >>= (bfd_vma) howto->rightshift;
1216
 
1217
  /* Shift everything up to where it's going to be used.  */
1218
  relocation <<= (bfd_vma) howto->bitpos;
1219
 
1220
  /* Wait for the day when all have the mask in them.  */
1221
 
1222
  /* What we do:
1223
     i instruction to be left alone
1224
     o offset within instruction
1225
     r relocation offset to apply
1226
     S src mask
1227
     D dst mask
1228
     N ~dst mask
1229
     A part 1
1230
     B part 2
1231
     R result
1232
 
1233
     Do this:
1234
     ((  i i i i i o o o o o  from bfd_get<size>
1235
     and           S S S S S) to get the size offset we want
1236
     +   r r r r r r r r r r) to get the final value to place
1237
     and           D D D D D  to chop to right size
1238
     -----------------------
1239
     =             A A A A A
1240
     And this:
1241
     (   i i i i i o o o o o  from bfd_get<size>
1242
     and N N N N N          ) get instruction
1243
     -----------------------
1244
     =   B B B B B
1245
 
1246
     And then:
1247
     (   B B B B B
1248
     or            A A A A A)
1249
     -----------------------
1250
     =   R R R R R R R R R R  put into bfd_put<size>
1251
     */
1252
 
1253
#define DOIT(x) \
1254
  x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) +  relocation) & howto->dst_mask))
1255
 
1256
  data = (bfd_byte *) data_start + (octets - data_start_offset);
1257
 
1258
  switch (howto->size)
1259
    {
1260
    case 0:
1261
      {
1262
        char x = bfd_get_8 (abfd, data);
1263
        DOIT (x);
1264
        bfd_put_8 (abfd, x, data);
1265
      }
1266
      break;
1267
 
1268
    case 1:
1269
      {
1270
        short x = bfd_get_16 (abfd, data);
1271
        DOIT (x);
1272
        bfd_put_16 (abfd, (bfd_vma) x, data);
1273
      }
1274
      break;
1275
    case 2:
1276
      {
1277
        long x = bfd_get_32 (abfd, data);
1278
        DOIT (x);
1279
        bfd_put_32 (abfd, (bfd_vma) x, data);
1280
      }
1281
      break;
1282
    case -2:
1283
      {
1284
        long x = bfd_get_32 (abfd, data);
1285
        relocation = -relocation;
1286
        DOIT (x);
1287
        bfd_put_32 (abfd, (bfd_vma) x, data);
1288
      }
1289
      break;
1290
 
1291
    case 3:
1292
      /* Do nothing */
1293
      break;
1294
 
1295
    case 4:
1296
      {
1297
        bfd_vma x = bfd_get_64 (abfd, data);
1298
        DOIT (x);
1299
        bfd_put_64 (abfd, x, data);
1300
      }
1301
      break;
1302
    default:
1303
      return bfd_reloc_other;
1304
    }
1305
 
1306
  return flag;
1307
}
1308
 
1309
/* This relocation routine is used by some of the backend linkers.
1310
   They do not construct asymbol or arelent structures, so there is no
1311
   reason for them to use bfd_perform_relocation.  Also,
1312
   bfd_perform_relocation is so hacked up it is easier to write a new
1313
   function than to try to deal with it.
1314
 
1315
   This routine does a final relocation.  Whether it is useful for a
1316
   relocatable link depends upon how the object format defines
1317
   relocations.
1318
 
1319
   FIXME: This routine ignores any special_function in the HOWTO,
1320
   since the existing special_function values have been written for
1321
   bfd_perform_relocation.
1322
 
1323
   HOWTO is the reloc howto information.
1324
   INPUT_BFD is the BFD which the reloc applies to.
1325
   INPUT_SECTION is the section which the reloc applies to.
1326
   CONTENTS is the contents of the section.
1327
   ADDRESS is the address of the reloc within INPUT_SECTION.
1328
   VALUE is the value of the symbol the reloc refers to.
1329
   ADDEND is the addend of the reloc.  */
1330
 
1331
bfd_reloc_status_type
1332
_bfd_final_link_relocate (reloc_howto_type *howto,
1333
                          bfd *input_bfd,
1334
                          asection *input_section,
1335
                          bfd_byte *contents,
1336
                          bfd_vma address,
1337
                          bfd_vma value,
1338
                          bfd_vma addend)
1339
{
1340
  bfd_vma relocation;
1341
 
1342
  /* Sanity check the address.  */
1343
  if (address > bfd_get_section_limit (input_bfd, input_section))
1344
    return bfd_reloc_outofrange;
1345
 
1346
  /* This function assumes that we are dealing with a basic relocation
1347
     against a symbol.  We want to compute the value of the symbol to
1348
     relocate to.  This is just VALUE, the value of the symbol, plus
1349
     ADDEND, any addend associated with the reloc.  */
1350
  relocation = value + addend;
1351
 
1352
  /* If the relocation is PC relative, we want to set RELOCATION to
1353
     the distance between the symbol (currently in RELOCATION) and the
1354
     location we are relocating.  Some targets (e.g., i386-aout)
1355
     arrange for the contents of the section to be the negative of the
1356
     offset of the location within the section; for such targets
1357
     pcrel_offset is FALSE.  Other targets (e.g., m88kbcs or ELF)
1358
     simply leave the contents of the section as zero; for such
1359
     targets pcrel_offset is TRUE.  If pcrel_offset is FALSE we do not
1360
     need to subtract out the offset of the location within the
1361
     section (which is just ADDRESS).  */
1362
  if (howto->pc_relative)
1363
    {
1364
      relocation -= (input_section->output_section->vma
1365
                     + input_section->output_offset);
1366
      if (howto->pcrel_offset)
1367
        relocation -= address;
1368
    }
1369
 
1370
  return _bfd_relocate_contents (howto, input_bfd, relocation,
1371
                                 contents + address);
1372
}
1373
 
1374
/* Relocate a given location using a given value and howto.  */
1375
 
1376
bfd_reloc_status_type
1377
_bfd_relocate_contents (reloc_howto_type *howto,
1378
                        bfd *input_bfd,
1379
                        bfd_vma relocation,
1380
                        bfd_byte *location)
1381
{
1382
  int size;
1383
  bfd_vma x = 0;
1384
  bfd_reloc_status_type flag;
1385
  unsigned int rightshift = howto->rightshift;
1386
  unsigned int bitpos = howto->bitpos;
1387
 
1388
  /* If the size is negative, negate RELOCATION.  This isn't very
1389
     general.  */
1390
  if (howto->size < 0)
1391
    relocation = -relocation;
1392
 
1393
  /* Get the value we are going to relocate.  */
1394
  size = bfd_get_reloc_size (howto);
1395
  switch (size)
1396
    {
1397
    default:
1398
    case 0:
1399
      abort ();
1400
    case 1:
1401
      x = bfd_get_8 (input_bfd, location);
1402
      break;
1403
    case 2:
1404
      x = bfd_get_16 (input_bfd, location);
1405
      break;
1406
    case 4:
1407
      x = bfd_get_32 (input_bfd, location);
1408
      break;
1409
    case 8:
1410
#ifdef BFD64
1411
      x = bfd_get_64 (input_bfd, location);
1412
#else
1413
      abort ();
1414
#endif
1415
      break;
1416
    }
1417
 
1418
  /* Check for overflow.  FIXME: We may drop bits during the addition
1419
     which we don't check for.  We must either check at every single
1420
     operation, which would be tedious, or we must do the computations
1421
     in a type larger than bfd_vma, which would be inefficient.  */
1422
  flag = bfd_reloc_ok;
1423
  if (howto->complain_on_overflow != complain_overflow_dont)
1424
    {
1425
      bfd_vma addrmask, fieldmask, signmask, ss;
1426
      bfd_vma a, b, sum;
1427
 
1428
      /* Get the values to be added together.  For signed and unsigned
1429
         relocations, we assume that all values should be truncated to
1430
         the size of an address.  For bitfields, all the bits matter.
1431
         See also bfd_check_overflow.  */
1432
      fieldmask = N_ONES (howto->bitsize);
1433
      signmask = ~fieldmask;
1434
      addrmask = (N_ONES (bfd_arch_bits_per_address (input_bfd))
1435
                  | (fieldmask << rightshift));
1436
      a = (relocation & addrmask) >> rightshift;
1437
      b = (x & howto->src_mask & addrmask) >> bitpos;
1438
      addrmask >>= rightshift;
1439
 
1440
      switch (howto->complain_on_overflow)
1441
        {
1442
        case complain_overflow_signed:
1443
          /* If any sign bits are set, all sign bits must be set.
1444
             That is, A must be a valid negative address after
1445
             shifting.  */
1446
          signmask = ~(fieldmask >> 1);
1447
          /* Fall thru */
1448
 
1449
        case complain_overflow_bitfield:
1450
          /* Much like the signed check, but for a field one bit
1451
             wider.  We allow a bitfield to represent numbers in the
1452
             range -2**n to 2**n-1, where n is the number of bits in the
1453
             field.  Note that when bfd_vma is 32 bits, a 32-bit reloc
1454
             can't overflow, which is exactly what we want.  */
1455
          ss = a & signmask;
1456
          if (ss != 0 && ss != (addrmask & signmask))
1457
            flag = bfd_reloc_overflow;
1458
 
1459
          /* We only need this next bit of code if the sign bit of B
1460
             is below the sign bit of A.  This would only happen if
1461
             SRC_MASK had fewer bits than BITSIZE.  Note that if
1462
             SRC_MASK has more bits than BITSIZE, we can get into
1463
             trouble; we would need to verify that B is in range, as
1464
             we do for A above.  */
1465
          ss = ((~howto->src_mask) >> 1) & howto->src_mask;
1466
          ss >>= bitpos;
1467
 
1468
          /* Set all the bits above the sign bit.  */
1469
          b = (b ^ ss) - ss;
1470
 
1471
          /* Now we can do the addition.  */
1472
          sum = a + b;
1473
 
1474
          /* See if the result has the correct sign.  Bits above the
1475
             sign bit are junk now; ignore them.  If the sum is
1476
             positive, make sure we did not have all negative inputs;
1477
             if the sum is negative, make sure we did not have all
1478
             positive inputs.  The test below looks only at the sign
1479
             bits, and it really just
1480
                 SIGN (A) == SIGN (B) && SIGN (A) != SIGN (SUM)
1481
 
1482
             We mask with addrmask here to explicitly allow an address
1483
             wrap-around.  The Linux kernel relies on it, and it is
1484
             the only way to write assembler code which can run when
1485
             loaded at a location 0x80000000 away from the location at
1486
             which it is linked.  */
1487
          if (((~(a ^ b)) & (a ^ sum)) & signmask & addrmask)
1488
            flag = bfd_reloc_overflow;
1489
          break;
1490
 
1491
        case complain_overflow_unsigned:
1492
          /* Checking for an unsigned overflow is relatively easy:
1493
             trim the addresses and add, and trim the result as well.
1494
             Overflow is normally indicated when the result does not
1495
             fit in the field.  However, we also need to consider the
1496
             case when, e.g., fieldmask is 0x7fffffff or smaller, an
1497
             input is 0x80000000, and bfd_vma is only 32 bits; then we
1498
             will get sum == 0, but there is an overflow, since the
1499
             inputs did not fit in the field.  Instead of doing a
1500
             separate test, we can check for this by or-ing in the
1501
             operands when testing for the sum overflowing its final
1502
             field.  */
1503
          sum = (a + b) & addrmask;
1504
          if ((a | b | sum) & signmask)
1505
            flag = bfd_reloc_overflow;
1506
          break;
1507
 
1508
        default:
1509
          abort ();
1510
        }
1511
    }
1512
 
1513
  /* Put RELOCATION in the right bits.  */
1514
  relocation >>= (bfd_vma) rightshift;
1515
  relocation <<= (bfd_vma) bitpos;
1516
 
1517
  /* Add RELOCATION to the right bits of X.  */
1518
  x = ((x & ~howto->dst_mask)
1519
       | (((x & howto->src_mask) + relocation) & howto->dst_mask));
1520
 
1521
  /* Put the relocated value back in the object file.  */
1522
  switch (size)
1523
    {
1524
    default:
1525
      abort ();
1526
    case 1:
1527
      bfd_put_8 (input_bfd, x, location);
1528
      break;
1529
    case 2:
1530
      bfd_put_16 (input_bfd, x, location);
1531
      break;
1532
    case 4:
1533
      bfd_put_32 (input_bfd, x, location);
1534
      break;
1535
    case 8:
1536
#ifdef BFD64
1537
      bfd_put_64 (input_bfd, x, location);
1538
#else
1539
      abort ();
1540
#endif
1541
      break;
1542
    }
1543
 
1544
  return flag;
1545
}
1546
 
1547
/* Clear a given location using a given howto, by applying a fixed relocation
1548
   value and discarding any in-place addend.  This is used for fixed-up
1549
   relocations against discarded symbols, to make ignorable debug or unwind
1550
   information more obvious.  */
1551
 
1552
void
1553
_bfd_clear_contents (reloc_howto_type *howto,
1554
                     bfd *input_bfd,
1555
                     asection *input_section,
1556
                     bfd_byte *location)
1557
{
1558
  int size;
1559
  bfd_vma x = 0;
1560
 
1561
  /* Get the value we are going to relocate.  */
1562
  size = bfd_get_reloc_size (howto);
1563
  switch (size)
1564
    {
1565
    default:
1566
    case 0:
1567
      abort ();
1568
    case 1:
1569
      x = bfd_get_8 (input_bfd, location);
1570
      break;
1571
    case 2:
1572
      x = bfd_get_16 (input_bfd, location);
1573
      break;
1574
    case 4:
1575
      x = bfd_get_32 (input_bfd, location);
1576
      break;
1577
    case 8:
1578
#ifdef BFD64
1579
      x = bfd_get_64 (input_bfd, location);
1580
#else
1581
      abort ();
1582
#endif
1583
      break;
1584
    }
1585
 
1586
  /* Zero out the unwanted bits of X.  */
1587
  x &= ~howto->dst_mask;
1588
 
1589
  /* For a range list, use 1 instead of 0 as placeholder.  0
1590
     would terminate the list, hiding any later entries.  */
1591
  if (strcmp (bfd_get_section_name (input_bfd, input_section),
1592
              ".debug_ranges") == 0
1593
      && (howto->dst_mask & 1) != 0)
1594
    x |= 1;
1595
 
1596
  /* Put the relocated value back in the object file.  */
1597
  switch (size)
1598
    {
1599
    default:
1600
    case 0:
1601
      abort ();
1602
    case 1:
1603
      bfd_put_8 (input_bfd, x, location);
1604
      break;
1605
    case 2:
1606
      bfd_put_16 (input_bfd, x, location);
1607
      break;
1608
    case 4:
1609
      bfd_put_32 (input_bfd, x, location);
1610
      break;
1611
    case 8:
1612
#ifdef BFD64
1613
      bfd_put_64 (input_bfd, x, location);
1614
#else
1615
      abort ();
1616
#endif
1617
      break;
1618
    }
1619
}
1620
 
1621
/*
1622
DOCDD
1623
INODE
1624
        howto manager,  , typedef arelent, Relocations
1625
 
1626
SUBSECTION
1627
        The howto manager
1628
 
1629
        When an application wants to create a relocation, but doesn't
1630
        know what the target machine might call it, it can find out by
1631
        using this bit of code.
1632
 
1633
*/
1634
 
1635
/*
1636
TYPEDEF
1637
        bfd_reloc_code_type
1638
 
1639
DESCRIPTION
1640
        The insides of a reloc code.  The idea is that, eventually, there
1641
        will be one enumerator for every type of relocation we ever do.
1642
        Pass one of these values to <<bfd_reloc_type_lookup>>, and it'll
1643
        return a howto pointer.
1644
 
1645
        This does mean that the application must determine the correct
1646
        enumerator value; you can't get a howto pointer from a random set
1647
        of attributes.
1648
 
1649
SENUM
1650
   bfd_reloc_code_real
1651
 
1652
ENUM
1653
  BFD_RELOC_64
1654
ENUMX
1655
  BFD_RELOC_32
1656
ENUMX
1657
  BFD_RELOC_26
1658
ENUMX
1659
  BFD_RELOC_24
1660
ENUMX
1661
  BFD_RELOC_16
1662
ENUMX
1663
  BFD_RELOC_14
1664
ENUMX
1665
  BFD_RELOC_8
1666
ENUMDOC
1667
  Basic absolute relocations of N bits.
1668
 
1669
ENUM
1670
  BFD_RELOC_64_PCREL
1671
ENUMX
1672
  BFD_RELOC_32_PCREL
1673
ENUMX
1674
  BFD_RELOC_24_PCREL
1675
ENUMX
1676
  BFD_RELOC_16_PCREL
1677
ENUMX
1678
  BFD_RELOC_12_PCREL
1679
ENUMX
1680
  BFD_RELOC_8_PCREL
1681
ENUMDOC
1682
  PC-relative relocations.  Sometimes these are relative to the address
1683
of the relocation itself; sometimes they are relative to the start of
1684
the section containing the relocation.  It depends on the specific target.
1685
 
1686
The 24-bit relocation is used in some Intel 960 configurations.
1687
 
1688
ENUM
1689
  BFD_RELOC_32_SECREL
1690
ENUMDOC
1691
  Section relative relocations.  Some targets need this for DWARF2.
1692
 
1693
ENUM
1694
  BFD_RELOC_32_GOT_PCREL
1695
ENUMX
1696
  BFD_RELOC_16_GOT_PCREL
1697
ENUMX
1698
  BFD_RELOC_8_GOT_PCREL
1699
ENUMX
1700
  BFD_RELOC_32_GOTOFF
1701
ENUMX
1702
  BFD_RELOC_16_GOTOFF
1703
ENUMX
1704
  BFD_RELOC_LO16_GOTOFF
1705
ENUMX
1706
  BFD_RELOC_HI16_GOTOFF
1707
ENUMX
1708
  BFD_RELOC_HI16_S_GOTOFF
1709
ENUMX
1710
  BFD_RELOC_8_GOTOFF
1711
ENUMX
1712
  BFD_RELOC_64_PLT_PCREL
1713
ENUMX
1714
  BFD_RELOC_32_PLT_PCREL
1715
ENUMX
1716
  BFD_RELOC_24_PLT_PCREL
1717
ENUMX
1718
  BFD_RELOC_16_PLT_PCREL
1719
ENUMX
1720
  BFD_RELOC_8_PLT_PCREL
1721
ENUMX
1722
  BFD_RELOC_64_PLTOFF
1723
ENUMX
1724
  BFD_RELOC_32_PLTOFF
1725
ENUMX
1726
  BFD_RELOC_16_PLTOFF
1727
ENUMX
1728
  BFD_RELOC_LO16_PLTOFF
1729
ENUMX
1730
  BFD_RELOC_HI16_PLTOFF
1731
ENUMX
1732
  BFD_RELOC_HI16_S_PLTOFF
1733
ENUMX
1734
  BFD_RELOC_8_PLTOFF
1735
ENUMDOC
1736
  For ELF.
1737
 
1738
ENUM
1739
  BFD_RELOC_68K_GLOB_DAT
1740
ENUMX
1741
  BFD_RELOC_68K_JMP_SLOT
1742
ENUMX
1743
  BFD_RELOC_68K_RELATIVE
1744
ENUMX
1745
  BFD_RELOC_68K_TLS_GD32
1746
ENUMX
1747
  BFD_RELOC_68K_TLS_GD16
1748
ENUMX
1749
  BFD_RELOC_68K_TLS_GD8
1750
ENUMX
1751
  BFD_RELOC_68K_TLS_LDM32
1752
ENUMX
1753
  BFD_RELOC_68K_TLS_LDM16
1754
ENUMX
1755
  BFD_RELOC_68K_TLS_LDM8
1756
ENUMX
1757
  BFD_RELOC_68K_TLS_LDO32
1758
ENUMX
1759
  BFD_RELOC_68K_TLS_LDO16
1760
ENUMX
1761
  BFD_RELOC_68K_TLS_LDO8
1762
ENUMX
1763
  BFD_RELOC_68K_TLS_IE32
1764
ENUMX
1765
  BFD_RELOC_68K_TLS_IE16
1766
ENUMX
1767
  BFD_RELOC_68K_TLS_IE8
1768
ENUMX
1769
  BFD_RELOC_68K_TLS_LE32
1770
ENUMX
1771
  BFD_RELOC_68K_TLS_LE16
1772
ENUMX
1773
  BFD_RELOC_68K_TLS_LE8
1774
ENUMDOC
1775
  Relocations used by 68K ELF.
1776
 
1777
ENUM
1778
  BFD_RELOC_32_BASEREL
1779
ENUMX
1780
  BFD_RELOC_16_BASEREL
1781
ENUMX
1782
  BFD_RELOC_LO16_BASEREL
1783
ENUMX
1784
  BFD_RELOC_HI16_BASEREL
1785
ENUMX
1786
  BFD_RELOC_HI16_S_BASEREL
1787
ENUMX
1788
  BFD_RELOC_8_BASEREL
1789
ENUMX
1790
  BFD_RELOC_RVA
1791
ENUMDOC
1792
  Linkage-table relative.
1793
 
1794
ENUM
1795
  BFD_RELOC_8_FFnn
1796
ENUMDOC
1797
  Absolute 8-bit relocation, but used to form an address like 0xFFnn.
1798
 
1799
ENUM
1800
  BFD_RELOC_32_PCREL_S2
1801
ENUMX
1802
  BFD_RELOC_16_PCREL_S2
1803
ENUMX
1804
  BFD_RELOC_23_PCREL_S2
1805
ENUMDOC
1806
  These PC-relative relocations are stored as word displacements --
1807
i.e., byte displacements shifted right two bits.  The 30-bit word
1808
displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
1809
SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
1810
signed 16-bit displacement is used on the MIPS, and the 23-bit
1811
displacement is used on the Alpha.
1812
 
1813
ENUM
1814
  BFD_RELOC_HI22
1815
ENUMX
1816
  BFD_RELOC_LO10
1817
ENUMDOC
1818
  High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
1819
the target word.  These are used on the SPARC.
1820
 
1821
ENUM
1822
  BFD_RELOC_GPREL16
1823
ENUMX
1824
  BFD_RELOC_GPREL32
1825
ENUMDOC
1826
  For systems that allocate a Global Pointer register, these are
1827
displacements off that register.  These relocation types are
1828
handled specially, because the value the register will have is
1829
decided relatively late.
1830
 
1831
ENUM
1832
  BFD_RELOC_I960_CALLJ
1833
ENUMDOC
1834
  Reloc types used for i960/b.out.
1835
 
1836
ENUM
1837
  BFD_RELOC_NONE
1838
ENUMX
1839
  BFD_RELOC_SPARC_WDISP22
1840
ENUMX
1841
  BFD_RELOC_SPARC22
1842
ENUMX
1843
  BFD_RELOC_SPARC13
1844
ENUMX
1845
  BFD_RELOC_SPARC_GOT10
1846
ENUMX
1847
  BFD_RELOC_SPARC_GOT13
1848
ENUMX
1849
  BFD_RELOC_SPARC_GOT22
1850
ENUMX
1851
  BFD_RELOC_SPARC_PC10
1852
ENUMX
1853
  BFD_RELOC_SPARC_PC22
1854
ENUMX
1855
  BFD_RELOC_SPARC_WPLT30
1856
ENUMX
1857
  BFD_RELOC_SPARC_COPY
1858
ENUMX
1859
  BFD_RELOC_SPARC_GLOB_DAT
1860
ENUMX
1861
  BFD_RELOC_SPARC_JMP_SLOT
1862
ENUMX
1863
  BFD_RELOC_SPARC_RELATIVE
1864
ENUMX
1865
  BFD_RELOC_SPARC_UA16
1866
ENUMX
1867
  BFD_RELOC_SPARC_UA32
1868
ENUMX
1869
  BFD_RELOC_SPARC_UA64
1870
ENUMX
1871
  BFD_RELOC_SPARC_GOTDATA_HIX22
1872
ENUMX
1873
  BFD_RELOC_SPARC_GOTDATA_LOX10
1874
ENUMX
1875
  BFD_RELOC_SPARC_GOTDATA_OP_HIX22
1876
ENUMX
1877
  BFD_RELOC_SPARC_GOTDATA_OP_LOX10
1878
ENUMX
1879
  BFD_RELOC_SPARC_GOTDATA_OP
1880
ENUMX
1881
  BFD_RELOC_SPARC_JMP_IREL
1882
ENUMX
1883
  BFD_RELOC_SPARC_IRELATIVE
1884
ENUMDOC
1885
  SPARC ELF relocations.  There is probably some overlap with other
1886
  relocation types already defined.
1887
 
1888
ENUM
1889
  BFD_RELOC_SPARC_BASE13
1890
ENUMX
1891
  BFD_RELOC_SPARC_BASE22
1892
ENUMDOC
1893
  I think these are specific to SPARC a.out (e.g., Sun 4).
1894
 
1895
ENUMEQ
1896
  BFD_RELOC_SPARC_64
1897
  BFD_RELOC_64
1898
ENUMX
1899
  BFD_RELOC_SPARC_10
1900
ENUMX
1901
  BFD_RELOC_SPARC_11
1902
ENUMX
1903
  BFD_RELOC_SPARC_OLO10
1904
ENUMX
1905
  BFD_RELOC_SPARC_HH22
1906
ENUMX
1907
  BFD_RELOC_SPARC_HM10
1908
ENUMX
1909
  BFD_RELOC_SPARC_LM22
1910
ENUMX
1911
  BFD_RELOC_SPARC_PC_HH22
1912
ENUMX
1913
  BFD_RELOC_SPARC_PC_HM10
1914
ENUMX
1915
  BFD_RELOC_SPARC_PC_LM22
1916
ENUMX
1917
  BFD_RELOC_SPARC_WDISP16
1918
ENUMX
1919
  BFD_RELOC_SPARC_WDISP19
1920
ENUMX
1921
  BFD_RELOC_SPARC_7
1922
ENUMX
1923
  BFD_RELOC_SPARC_6
1924
ENUMX
1925
  BFD_RELOC_SPARC_5
1926
ENUMEQX
1927
  BFD_RELOC_SPARC_DISP64
1928
  BFD_RELOC_64_PCREL
1929
ENUMX
1930
  BFD_RELOC_SPARC_PLT32
1931
ENUMX
1932
  BFD_RELOC_SPARC_PLT64
1933
ENUMX
1934
  BFD_RELOC_SPARC_HIX22
1935
ENUMX
1936
  BFD_RELOC_SPARC_LOX10
1937
ENUMX
1938
  BFD_RELOC_SPARC_H44
1939
ENUMX
1940
  BFD_RELOC_SPARC_M44
1941
ENUMX
1942
  BFD_RELOC_SPARC_L44
1943
ENUMX
1944
  BFD_RELOC_SPARC_REGISTER
1945
ENUMDOC
1946
  SPARC64 relocations
1947
 
1948
ENUM
1949
  BFD_RELOC_SPARC_REV32
1950
ENUMDOC
1951
  SPARC little endian relocation
1952
ENUM
1953
  BFD_RELOC_SPARC_TLS_GD_HI22
1954
ENUMX
1955
  BFD_RELOC_SPARC_TLS_GD_LO10
1956
ENUMX
1957
  BFD_RELOC_SPARC_TLS_GD_ADD
1958
ENUMX
1959
  BFD_RELOC_SPARC_TLS_GD_CALL
1960
ENUMX
1961
  BFD_RELOC_SPARC_TLS_LDM_HI22
1962
ENUMX
1963
  BFD_RELOC_SPARC_TLS_LDM_LO10
1964
ENUMX
1965
  BFD_RELOC_SPARC_TLS_LDM_ADD
1966
ENUMX
1967
  BFD_RELOC_SPARC_TLS_LDM_CALL
1968
ENUMX
1969
  BFD_RELOC_SPARC_TLS_LDO_HIX22
1970
ENUMX
1971
  BFD_RELOC_SPARC_TLS_LDO_LOX10
1972
ENUMX
1973
  BFD_RELOC_SPARC_TLS_LDO_ADD
1974
ENUMX
1975
  BFD_RELOC_SPARC_TLS_IE_HI22
1976
ENUMX
1977
  BFD_RELOC_SPARC_TLS_IE_LO10
1978
ENUMX
1979
  BFD_RELOC_SPARC_TLS_IE_LD
1980
ENUMX
1981
  BFD_RELOC_SPARC_TLS_IE_LDX
1982
ENUMX
1983
  BFD_RELOC_SPARC_TLS_IE_ADD
1984
ENUMX
1985
  BFD_RELOC_SPARC_TLS_LE_HIX22
1986
ENUMX
1987
  BFD_RELOC_SPARC_TLS_LE_LOX10
1988
ENUMX
1989
  BFD_RELOC_SPARC_TLS_DTPMOD32
1990
ENUMX
1991
  BFD_RELOC_SPARC_TLS_DTPMOD64
1992
ENUMX
1993
  BFD_RELOC_SPARC_TLS_DTPOFF32
1994
ENUMX
1995
  BFD_RELOC_SPARC_TLS_DTPOFF64
1996
ENUMX
1997
  BFD_RELOC_SPARC_TLS_TPOFF32
1998
ENUMX
1999
  BFD_RELOC_SPARC_TLS_TPOFF64
2000
ENUMDOC
2001
  SPARC TLS relocations
2002
 
2003
ENUM
2004
  BFD_RELOC_SPU_IMM7
2005
ENUMX
2006
  BFD_RELOC_SPU_IMM8
2007
ENUMX
2008
  BFD_RELOC_SPU_IMM10
2009
ENUMX
2010
  BFD_RELOC_SPU_IMM10W
2011
ENUMX
2012
  BFD_RELOC_SPU_IMM16
2013
ENUMX
2014
  BFD_RELOC_SPU_IMM16W
2015
ENUMX
2016
  BFD_RELOC_SPU_IMM18
2017
ENUMX
2018
  BFD_RELOC_SPU_PCREL9a
2019
ENUMX
2020
  BFD_RELOC_SPU_PCREL9b
2021
ENUMX
2022
  BFD_RELOC_SPU_PCREL16
2023
ENUMX
2024
  BFD_RELOC_SPU_LO16
2025
ENUMX
2026
  BFD_RELOC_SPU_HI16
2027
ENUMX
2028
  BFD_RELOC_SPU_PPU32
2029
ENUMX
2030
  BFD_RELOC_SPU_PPU64
2031
ENUMX
2032
  BFD_RELOC_SPU_ADD_PIC
2033
ENUMDOC
2034
  SPU Relocations.
2035
 
2036
ENUM
2037
  BFD_RELOC_ALPHA_GPDISP_HI16
2038
ENUMDOC
2039
  Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
2040
     "addend" in some special way.
2041
  For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
2042
     writing; when reading, it will be the absolute section symbol.  The
2043
     addend is the displacement in bytes of the "lda" instruction from
2044
     the "ldah" instruction (which is at the address of this reloc).
2045
ENUM
2046
  BFD_RELOC_ALPHA_GPDISP_LO16
2047
ENUMDOC
2048
  For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
2049
     with GPDISP_HI16 relocs.  The addend is ignored when writing the
2050
     relocations out, and is filled in with the file's GP value on
2051
     reading, for convenience.
2052
 
2053
ENUM
2054
  BFD_RELOC_ALPHA_GPDISP
2055
ENUMDOC
2056
  The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
2057
     relocation except that there is no accompanying GPDISP_LO16
2058
     relocation.
2059
 
2060
ENUM
2061
  BFD_RELOC_ALPHA_LITERAL
2062
ENUMX
2063
  BFD_RELOC_ALPHA_ELF_LITERAL
2064
ENUMX
2065
  BFD_RELOC_ALPHA_LITUSE
2066
ENUMDOC
2067
  The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
2068
     the assembler turns it into a LDQ instruction to load the address of
2069
     the symbol, and then fills in a register in the real instruction.
2070
 
2071
     The LITERAL reloc, at the LDQ instruction, refers to the .lita
2072
     section symbol.  The addend is ignored when writing, but is filled
2073
     in with the file's GP value on reading, for convenience, as with the
2074
     GPDISP_LO16 reloc.
2075
 
2076
     The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
2077
     It should refer to the symbol to be referenced, as with 16_GOTOFF,
2078
     but it generates output not based on the position within the .got
2079
     section, but relative to the GP value chosen for the file during the
2080
     final link stage.
2081
 
2082
     The LITUSE reloc, on the instruction using the loaded address, gives
2083
     information to the linker that it might be able to use to optimize
2084
     away some literal section references.  The symbol is ignored (read
2085
     as the absolute section symbol), and the "addend" indicates the type
2086
     of instruction using the register:
2087
              1 - "memory" fmt insn
2088
              2 - byte-manipulation (byte offset reg)
2089
              3 - jsr (target of branch)
2090
 
2091
ENUM
2092
  BFD_RELOC_ALPHA_HINT
2093
ENUMDOC
2094
  The HINT relocation indicates a value that should be filled into the
2095
     "hint" field of a jmp/jsr/ret instruction, for possible branch-
2096
     prediction logic which may be provided on some processors.
2097
 
2098
ENUM
2099
  BFD_RELOC_ALPHA_LINKAGE
2100
ENUMDOC
2101
  The LINKAGE relocation outputs a linkage pair in the object file,
2102
     which is filled by the linker.
2103
 
2104
ENUM
2105
  BFD_RELOC_ALPHA_CODEADDR
2106
ENUMDOC
2107
  The CODEADDR relocation outputs a STO_CA in the object file,
2108
     which is filled by the linker.
2109
 
2110
ENUM
2111
  BFD_RELOC_ALPHA_GPREL_HI16
2112
ENUMX
2113
  BFD_RELOC_ALPHA_GPREL_LO16
2114
ENUMDOC
2115
  The GPREL_HI/LO relocations together form a 32-bit offset from the
2116
     GP register.
2117
 
2118
ENUM
2119
  BFD_RELOC_ALPHA_BRSGP
2120
ENUMDOC
2121
  Like BFD_RELOC_23_PCREL_S2, except that the source and target must
2122
  share a common GP, and the target address is adjusted for
2123
  STO_ALPHA_STD_GPLOAD.
2124
 
2125
ENUM
2126
  BFD_RELOC_ALPHA_NOP
2127
ENUMDOC
2128
  The NOP relocation outputs a NOP if the longword displacement
2129
     between two procedure entry points is < 2^21.
2130
 
2131
ENUM
2132
  BFD_RELOC_ALPHA_BSR
2133
ENUMDOC
2134
  The BSR relocation outputs a BSR if the longword displacement
2135
     between two procedure entry points is < 2^21.
2136
 
2137
ENUM
2138
  BFD_RELOC_ALPHA_LDA
2139
ENUMDOC
2140
  The LDA relocation outputs a LDA if the longword displacement
2141
     between two procedure entry points is < 2^16.
2142
 
2143
ENUM
2144
  BFD_RELOC_ALPHA_BOH
2145
ENUMDOC
2146
  The BOH relocation outputs a BSR if the longword displacement
2147
     between two procedure entry points is < 2^21, or else a hint.
2148
 
2149
ENUM
2150
  BFD_RELOC_ALPHA_TLSGD
2151
ENUMX
2152
  BFD_RELOC_ALPHA_TLSLDM
2153
ENUMX
2154
  BFD_RELOC_ALPHA_DTPMOD64
2155
ENUMX
2156
  BFD_RELOC_ALPHA_GOTDTPREL16
2157
ENUMX
2158
  BFD_RELOC_ALPHA_DTPREL64
2159
ENUMX
2160
  BFD_RELOC_ALPHA_DTPREL_HI16
2161
ENUMX
2162
  BFD_RELOC_ALPHA_DTPREL_LO16
2163
ENUMX
2164
  BFD_RELOC_ALPHA_DTPREL16
2165
ENUMX
2166
  BFD_RELOC_ALPHA_GOTTPREL16
2167
ENUMX
2168
  BFD_RELOC_ALPHA_TPREL64
2169
ENUMX
2170
  BFD_RELOC_ALPHA_TPREL_HI16
2171
ENUMX
2172
  BFD_RELOC_ALPHA_TPREL_LO16
2173
ENUMX
2174
  BFD_RELOC_ALPHA_TPREL16
2175
ENUMDOC
2176
  Alpha thread-local storage relocations.
2177
 
2178
ENUM
2179
  BFD_RELOC_MIPS_JMP
2180 161 khays
ENUMX
2181
  BFD_RELOC_MICROMIPS_JMP
2182 14 khays
ENUMDOC
2183 161 khays
  The MIPS jump instruction.
2184 14 khays
 
2185
ENUM
2186
  BFD_RELOC_MIPS16_JMP
2187
ENUMDOC
2188
  The MIPS16 jump instruction.
2189
 
2190
ENUM
2191
  BFD_RELOC_MIPS16_GPREL
2192
ENUMDOC
2193
  MIPS16 GP relative reloc.
2194
 
2195
ENUM
2196
  BFD_RELOC_HI16
2197
ENUMDOC
2198
  High 16 bits of 32-bit value; simple reloc.
2199 161 khays
 
2200 14 khays
ENUM
2201
  BFD_RELOC_HI16_S
2202
ENUMDOC
2203
  High 16 bits of 32-bit value but the low 16 bits will be sign
2204
     extended and added to form the final result.  If the low 16
2205
     bits form a negative number, we need to add one to the high value
2206
     to compensate for the borrow when the low bits are added.
2207 161 khays
 
2208 14 khays
ENUM
2209
  BFD_RELOC_LO16
2210
ENUMDOC
2211
  Low 16 bits.
2212
 
2213
ENUM
2214
  BFD_RELOC_HI16_PCREL
2215
ENUMDOC
2216
  High 16 bits of 32-bit pc-relative value
2217
ENUM
2218
  BFD_RELOC_HI16_S_PCREL
2219
ENUMDOC
2220
  High 16 bits of 32-bit pc-relative value, adjusted
2221
ENUM
2222
  BFD_RELOC_LO16_PCREL
2223
ENUMDOC
2224
  Low 16 bits of pc-relative value
2225
 
2226
ENUM
2227
  BFD_RELOC_MIPS16_GOT16
2228
ENUMX
2229
  BFD_RELOC_MIPS16_CALL16
2230
ENUMDOC
2231
  Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
2232
     16-bit immediate fields
2233
ENUM
2234
  BFD_RELOC_MIPS16_HI16
2235
ENUMDOC
2236
  MIPS16 high 16 bits of 32-bit value.
2237
ENUM
2238
  BFD_RELOC_MIPS16_HI16_S
2239
ENUMDOC
2240
  MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
2241
     extended and added to form the final result.  If the low 16
2242
     bits form a negative number, we need to add one to the high value
2243
     to compensate for the borrow when the low bits are added.
2244
ENUM
2245
  BFD_RELOC_MIPS16_LO16
2246
ENUMDOC
2247
  MIPS16 low 16 bits.
2248
 
2249
ENUM
2250 166 khays
  BFD_RELOC_MIPS16_TLS_GD
2251
ENUMX
2252
  BFD_RELOC_MIPS16_TLS_LDM
2253
ENUMX
2254
  BFD_RELOC_MIPS16_TLS_DTPREL_HI16
2255
ENUMX
2256
  BFD_RELOC_MIPS16_TLS_DTPREL_LO16
2257
ENUMX
2258
  BFD_RELOC_MIPS16_TLS_GOTTPREL
2259
ENUMX
2260
  BFD_RELOC_MIPS16_TLS_TPREL_HI16
2261
ENUMX
2262
  BFD_RELOC_MIPS16_TLS_TPREL_LO16
2263
ENUMDOC
2264
  MIPS16 TLS relocations
2265
 
2266
ENUM
2267 14 khays
  BFD_RELOC_MIPS_LITERAL
2268 161 khays
ENUMX
2269
  BFD_RELOC_MICROMIPS_LITERAL
2270 14 khays
ENUMDOC
2271
  Relocation against a MIPS literal section.
2272
 
2273
ENUM
2274 161 khays
  BFD_RELOC_MICROMIPS_7_PCREL_S1
2275
ENUMX
2276
  BFD_RELOC_MICROMIPS_10_PCREL_S1
2277
ENUMX
2278
  BFD_RELOC_MICROMIPS_16_PCREL_S1
2279
ENUMDOC
2280
  microMIPS PC-relative relocations.
2281
 
2282
ENUM
2283
  BFD_RELOC_MICROMIPS_GPREL16
2284
ENUMX
2285
  BFD_RELOC_MICROMIPS_HI16
2286
ENUMX
2287
  BFD_RELOC_MICROMIPS_HI16_S
2288
ENUMX
2289
  BFD_RELOC_MICROMIPS_LO16
2290
ENUMDOC
2291
  microMIPS versions of generic BFD relocs.
2292
 
2293
ENUM
2294 14 khays
  BFD_RELOC_MIPS_GOT16
2295
ENUMX
2296 161 khays
  BFD_RELOC_MICROMIPS_GOT16
2297
ENUMX
2298 14 khays
  BFD_RELOC_MIPS_CALL16
2299
ENUMX
2300 161 khays
  BFD_RELOC_MICROMIPS_CALL16
2301
ENUMX
2302 14 khays
  BFD_RELOC_MIPS_GOT_HI16
2303
ENUMX
2304 161 khays
  BFD_RELOC_MICROMIPS_GOT_HI16
2305
ENUMX
2306 14 khays
  BFD_RELOC_MIPS_GOT_LO16
2307
ENUMX
2308 161 khays
  BFD_RELOC_MICROMIPS_GOT_LO16
2309
ENUMX
2310 14 khays
  BFD_RELOC_MIPS_CALL_HI16
2311
ENUMX
2312 161 khays
  BFD_RELOC_MICROMIPS_CALL_HI16
2313
ENUMX
2314 14 khays
  BFD_RELOC_MIPS_CALL_LO16
2315
ENUMX
2316 161 khays
  BFD_RELOC_MICROMIPS_CALL_LO16
2317
ENUMX
2318 14 khays
  BFD_RELOC_MIPS_SUB
2319
ENUMX
2320 161 khays
  BFD_RELOC_MICROMIPS_SUB
2321
ENUMX
2322 14 khays
  BFD_RELOC_MIPS_GOT_PAGE
2323
ENUMX
2324 161 khays
  BFD_RELOC_MICROMIPS_GOT_PAGE
2325
ENUMX
2326 14 khays
  BFD_RELOC_MIPS_GOT_OFST
2327
ENUMX
2328 161 khays
  BFD_RELOC_MICROMIPS_GOT_OFST
2329
ENUMX
2330 14 khays
  BFD_RELOC_MIPS_GOT_DISP
2331
ENUMX
2332 161 khays
  BFD_RELOC_MICROMIPS_GOT_DISP
2333
ENUMX
2334 14 khays
  BFD_RELOC_MIPS_SHIFT5
2335
ENUMX
2336
  BFD_RELOC_MIPS_SHIFT6
2337
ENUMX
2338
  BFD_RELOC_MIPS_INSERT_A
2339
ENUMX
2340
  BFD_RELOC_MIPS_INSERT_B
2341
ENUMX
2342
  BFD_RELOC_MIPS_DELETE
2343
ENUMX
2344
  BFD_RELOC_MIPS_HIGHEST
2345
ENUMX
2346 161 khays
  BFD_RELOC_MICROMIPS_HIGHEST
2347
ENUMX
2348 14 khays
  BFD_RELOC_MIPS_HIGHER
2349
ENUMX
2350 161 khays
  BFD_RELOC_MICROMIPS_HIGHER
2351
ENUMX
2352 14 khays
  BFD_RELOC_MIPS_SCN_DISP
2353
ENUMX
2354 161 khays
  BFD_RELOC_MICROMIPS_SCN_DISP
2355
ENUMX
2356 14 khays
  BFD_RELOC_MIPS_REL16
2357
ENUMX
2358
  BFD_RELOC_MIPS_RELGOT
2359
ENUMX
2360
  BFD_RELOC_MIPS_JALR
2361
ENUMX
2362 161 khays
  BFD_RELOC_MICROMIPS_JALR
2363
ENUMX
2364 14 khays
  BFD_RELOC_MIPS_TLS_DTPMOD32
2365
ENUMX
2366
  BFD_RELOC_MIPS_TLS_DTPREL32
2367
ENUMX
2368
  BFD_RELOC_MIPS_TLS_DTPMOD64
2369
ENUMX
2370
  BFD_RELOC_MIPS_TLS_DTPREL64
2371
ENUMX
2372
  BFD_RELOC_MIPS_TLS_GD
2373
ENUMX
2374 161 khays
  BFD_RELOC_MICROMIPS_TLS_GD
2375
ENUMX
2376 14 khays
  BFD_RELOC_MIPS_TLS_LDM
2377
ENUMX
2378 161 khays
  BFD_RELOC_MICROMIPS_TLS_LDM
2379
ENUMX
2380 14 khays
  BFD_RELOC_MIPS_TLS_DTPREL_HI16
2381
ENUMX
2382 161 khays
  BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16
2383
ENUMX
2384 14 khays
  BFD_RELOC_MIPS_TLS_DTPREL_LO16
2385
ENUMX
2386 161 khays
  BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16
2387
ENUMX
2388 14 khays
  BFD_RELOC_MIPS_TLS_GOTTPREL
2389
ENUMX
2390 161 khays
  BFD_RELOC_MICROMIPS_TLS_GOTTPREL
2391
ENUMX
2392 14 khays
  BFD_RELOC_MIPS_TLS_TPREL32
2393
ENUMX
2394
  BFD_RELOC_MIPS_TLS_TPREL64
2395
ENUMX
2396
  BFD_RELOC_MIPS_TLS_TPREL_HI16
2397
ENUMX
2398 161 khays
  BFD_RELOC_MICROMIPS_TLS_TPREL_HI16
2399
ENUMX
2400 14 khays
  BFD_RELOC_MIPS_TLS_TPREL_LO16
2401 161 khays
ENUMX
2402
  BFD_RELOC_MICROMIPS_TLS_TPREL_LO16
2403 14 khays
ENUMDOC
2404
  MIPS ELF relocations.
2405
COMMENT
2406
 
2407
ENUM
2408
  BFD_RELOC_MIPS_COPY
2409
ENUMX
2410
  BFD_RELOC_MIPS_JUMP_SLOT
2411
ENUMDOC
2412
  MIPS ELF relocations (VxWorks and PLT extensions).
2413
COMMENT
2414
 
2415
ENUM
2416
  BFD_RELOC_MOXIE_10_PCREL
2417
ENUMDOC
2418
  Moxie ELF relocations.
2419
COMMENT
2420
 
2421
ENUM
2422
  BFD_RELOC_FRV_LABEL16
2423
ENUMX
2424
  BFD_RELOC_FRV_LABEL24
2425
ENUMX
2426
  BFD_RELOC_FRV_LO16
2427
ENUMX
2428
  BFD_RELOC_FRV_HI16
2429
ENUMX
2430
  BFD_RELOC_FRV_GPREL12
2431
ENUMX
2432
  BFD_RELOC_FRV_GPRELU12
2433
ENUMX
2434
  BFD_RELOC_FRV_GPREL32
2435
ENUMX
2436
  BFD_RELOC_FRV_GPRELHI
2437
ENUMX
2438
  BFD_RELOC_FRV_GPRELLO
2439
ENUMX
2440
  BFD_RELOC_FRV_GOT12
2441
ENUMX
2442
  BFD_RELOC_FRV_GOTHI
2443
ENUMX
2444
  BFD_RELOC_FRV_GOTLO
2445
ENUMX
2446
  BFD_RELOC_FRV_FUNCDESC
2447
ENUMX
2448
  BFD_RELOC_FRV_FUNCDESC_GOT12
2449
ENUMX
2450
  BFD_RELOC_FRV_FUNCDESC_GOTHI
2451
ENUMX
2452
  BFD_RELOC_FRV_FUNCDESC_GOTLO
2453
ENUMX
2454
  BFD_RELOC_FRV_FUNCDESC_VALUE
2455
ENUMX
2456
  BFD_RELOC_FRV_FUNCDESC_GOTOFF12
2457
ENUMX
2458
  BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
2459
ENUMX
2460
  BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
2461
ENUMX
2462
  BFD_RELOC_FRV_GOTOFF12
2463
ENUMX
2464
  BFD_RELOC_FRV_GOTOFFHI
2465
ENUMX
2466
  BFD_RELOC_FRV_GOTOFFLO
2467
ENUMX
2468
  BFD_RELOC_FRV_GETTLSOFF
2469
ENUMX
2470
  BFD_RELOC_FRV_TLSDESC_VALUE
2471
ENUMX
2472
  BFD_RELOC_FRV_GOTTLSDESC12
2473
ENUMX
2474
  BFD_RELOC_FRV_GOTTLSDESCHI
2475
ENUMX
2476
  BFD_RELOC_FRV_GOTTLSDESCLO
2477
ENUMX
2478
  BFD_RELOC_FRV_TLSMOFF12
2479
ENUMX
2480
  BFD_RELOC_FRV_TLSMOFFHI
2481
ENUMX
2482
  BFD_RELOC_FRV_TLSMOFFLO
2483
ENUMX
2484
  BFD_RELOC_FRV_GOTTLSOFF12
2485
ENUMX
2486
  BFD_RELOC_FRV_GOTTLSOFFHI
2487
ENUMX
2488
  BFD_RELOC_FRV_GOTTLSOFFLO
2489
ENUMX
2490
  BFD_RELOC_FRV_TLSOFF
2491
ENUMX
2492
  BFD_RELOC_FRV_TLSDESC_RELAX
2493
ENUMX
2494
  BFD_RELOC_FRV_GETTLSOFF_RELAX
2495
ENUMX
2496
  BFD_RELOC_FRV_TLSOFF_RELAX
2497
ENUMX
2498
  BFD_RELOC_FRV_TLSMOFF
2499
ENUMDOC
2500
  Fujitsu Frv Relocations.
2501
COMMENT
2502
 
2503
ENUM
2504
  BFD_RELOC_MN10300_GOTOFF24
2505
ENUMDOC
2506
  This is a 24bit GOT-relative reloc for the mn10300.
2507
ENUM
2508
  BFD_RELOC_MN10300_GOT32
2509
ENUMDOC
2510
  This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
2511
  in the instruction.
2512
ENUM
2513
  BFD_RELOC_MN10300_GOT24
2514
ENUMDOC
2515
  This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
2516
  in the instruction.
2517
ENUM
2518
  BFD_RELOC_MN10300_GOT16
2519
ENUMDOC
2520
  This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
2521
  in the instruction.
2522
ENUM
2523
  BFD_RELOC_MN10300_COPY
2524
ENUMDOC
2525
  Copy symbol at runtime.
2526
ENUM
2527
  BFD_RELOC_MN10300_GLOB_DAT
2528
ENUMDOC
2529
  Create GOT entry.
2530
ENUM
2531
  BFD_RELOC_MN10300_JMP_SLOT
2532
ENUMDOC
2533
  Create PLT entry.
2534
ENUM
2535
  BFD_RELOC_MN10300_RELATIVE
2536
ENUMDOC
2537
  Adjust by program base.
2538
ENUM
2539
  BFD_RELOC_MN10300_SYM_DIFF
2540
ENUMDOC
2541
  Together with another reloc targeted at the same location,
2542
  allows for a value that is the difference of two symbols
2543
  in the same section.
2544
ENUM
2545
  BFD_RELOC_MN10300_ALIGN
2546
ENUMDOC
2547
  The addend of this reloc is an alignment power that must
2548
  be honoured at the offset's location, regardless of linker
2549
  relaxation.
2550
COMMENT
2551
 
2552
ENUM
2553
  BFD_RELOC_386_GOT32
2554
ENUMX
2555
  BFD_RELOC_386_PLT32
2556
ENUMX
2557
  BFD_RELOC_386_COPY
2558
ENUMX
2559
  BFD_RELOC_386_GLOB_DAT
2560
ENUMX
2561
  BFD_RELOC_386_JUMP_SLOT
2562
ENUMX
2563
  BFD_RELOC_386_RELATIVE
2564
ENUMX
2565
  BFD_RELOC_386_GOTOFF
2566
ENUMX
2567
  BFD_RELOC_386_GOTPC
2568
ENUMX
2569
  BFD_RELOC_386_TLS_TPOFF
2570
ENUMX
2571
  BFD_RELOC_386_TLS_IE
2572
ENUMX
2573
  BFD_RELOC_386_TLS_GOTIE
2574
ENUMX
2575
  BFD_RELOC_386_TLS_LE
2576
ENUMX
2577
  BFD_RELOC_386_TLS_GD
2578
ENUMX
2579
  BFD_RELOC_386_TLS_LDM
2580
ENUMX
2581
  BFD_RELOC_386_TLS_LDO_32
2582
ENUMX
2583
  BFD_RELOC_386_TLS_IE_32
2584
ENUMX
2585
  BFD_RELOC_386_TLS_LE_32
2586
ENUMX
2587
  BFD_RELOC_386_TLS_DTPMOD32
2588
ENUMX
2589
  BFD_RELOC_386_TLS_DTPOFF32
2590
ENUMX
2591
  BFD_RELOC_386_TLS_TPOFF32
2592
ENUMX
2593
  BFD_RELOC_386_TLS_GOTDESC
2594
ENUMX
2595
  BFD_RELOC_386_TLS_DESC_CALL
2596
ENUMX
2597
  BFD_RELOC_386_TLS_DESC
2598
ENUMX
2599
  BFD_RELOC_386_IRELATIVE
2600
ENUMDOC
2601
  i386/elf relocations
2602
 
2603
ENUM
2604
  BFD_RELOC_X86_64_GOT32
2605
ENUMX
2606
  BFD_RELOC_X86_64_PLT32
2607
ENUMX
2608
  BFD_RELOC_X86_64_COPY
2609
ENUMX
2610
  BFD_RELOC_X86_64_GLOB_DAT
2611
ENUMX
2612
  BFD_RELOC_X86_64_JUMP_SLOT
2613
ENUMX
2614
  BFD_RELOC_X86_64_RELATIVE
2615
ENUMX
2616
  BFD_RELOC_X86_64_GOTPCREL
2617
ENUMX
2618
  BFD_RELOC_X86_64_32S
2619
ENUMX
2620
  BFD_RELOC_X86_64_DTPMOD64
2621
ENUMX
2622
  BFD_RELOC_X86_64_DTPOFF64
2623
ENUMX
2624
  BFD_RELOC_X86_64_TPOFF64
2625
ENUMX
2626
  BFD_RELOC_X86_64_TLSGD
2627
ENUMX
2628
  BFD_RELOC_X86_64_TLSLD
2629
ENUMX
2630
  BFD_RELOC_X86_64_DTPOFF32
2631
ENUMX
2632
  BFD_RELOC_X86_64_GOTTPOFF
2633
ENUMX
2634
  BFD_RELOC_X86_64_TPOFF32
2635
ENUMX
2636
  BFD_RELOC_X86_64_GOTOFF64
2637
ENUMX
2638
  BFD_RELOC_X86_64_GOTPC32
2639
ENUMX
2640
  BFD_RELOC_X86_64_GOT64
2641
ENUMX
2642
  BFD_RELOC_X86_64_GOTPCREL64
2643
ENUMX
2644
  BFD_RELOC_X86_64_GOTPC64
2645
ENUMX
2646
  BFD_RELOC_X86_64_GOTPLT64
2647
ENUMX
2648
  BFD_RELOC_X86_64_PLTOFF64
2649
ENUMX
2650
  BFD_RELOC_X86_64_GOTPC32_TLSDESC
2651
ENUMX
2652
  BFD_RELOC_X86_64_TLSDESC_CALL
2653
ENUMX
2654
  BFD_RELOC_X86_64_TLSDESC
2655
ENUMX
2656
  BFD_RELOC_X86_64_IRELATIVE
2657
ENUMDOC
2658
  x86-64/elf relocations
2659
 
2660
ENUM
2661
  BFD_RELOC_NS32K_IMM_8
2662
ENUMX
2663
  BFD_RELOC_NS32K_IMM_16
2664
ENUMX
2665
  BFD_RELOC_NS32K_IMM_32
2666
ENUMX
2667
  BFD_RELOC_NS32K_IMM_8_PCREL
2668
ENUMX
2669
  BFD_RELOC_NS32K_IMM_16_PCREL
2670
ENUMX
2671
  BFD_RELOC_NS32K_IMM_32_PCREL
2672
ENUMX
2673
  BFD_RELOC_NS32K_DISP_8
2674
ENUMX
2675
  BFD_RELOC_NS32K_DISP_16
2676
ENUMX
2677
  BFD_RELOC_NS32K_DISP_32
2678
ENUMX
2679
  BFD_RELOC_NS32K_DISP_8_PCREL
2680
ENUMX
2681
  BFD_RELOC_NS32K_DISP_16_PCREL
2682
ENUMX
2683
  BFD_RELOC_NS32K_DISP_32_PCREL
2684
ENUMDOC
2685
  ns32k relocations
2686
 
2687
ENUM
2688
  BFD_RELOC_PDP11_DISP_8_PCREL
2689
ENUMX
2690
  BFD_RELOC_PDP11_DISP_6_PCREL
2691
ENUMDOC
2692
  PDP11 relocations
2693
 
2694
ENUM
2695
  BFD_RELOC_PJ_CODE_HI16
2696
ENUMX
2697
  BFD_RELOC_PJ_CODE_LO16
2698
ENUMX
2699
  BFD_RELOC_PJ_CODE_DIR16
2700
ENUMX
2701
  BFD_RELOC_PJ_CODE_DIR32
2702
ENUMX
2703
  BFD_RELOC_PJ_CODE_REL16
2704
ENUMX
2705
  BFD_RELOC_PJ_CODE_REL32
2706
ENUMDOC
2707
  Picojava relocs.  Not all of these appear in object files.
2708
 
2709
ENUM
2710
  BFD_RELOC_PPC_B26
2711
ENUMX
2712
  BFD_RELOC_PPC_BA26
2713
ENUMX
2714
  BFD_RELOC_PPC_TOC16
2715
ENUMX
2716
  BFD_RELOC_PPC_B16
2717
ENUMX
2718
  BFD_RELOC_PPC_B16_BRTAKEN
2719
ENUMX
2720
  BFD_RELOC_PPC_B16_BRNTAKEN
2721
ENUMX
2722
  BFD_RELOC_PPC_BA16
2723
ENUMX
2724
  BFD_RELOC_PPC_BA16_BRTAKEN
2725
ENUMX
2726
  BFD_RELOC_PPC_BA16_BRNTAKEN
2727
ENUMX
2728
  BFD_RELOC_PPC_COPY
2729
ENUMX
2730
  BFD_RELOC_PPC_GLOB_DAT
2731
ENUMX
2732
  BFD_RELOC_PPC_JMP_SLOT
2733
ENUMX
2734
  BFD_RELOC_PPC_RELATIVE
2735
ENUMX
2736
  BFD_RELOC_PPC_LOCAL24PC
2737
ENUMX
2738
  BFD_RELOC_PPC_EMB_NADDR32
2739
ENUMX
2740
  BFD_RELOC_PPC_EMB_NADDR16
2741
ENUMX
2742
  BFD_RELOC_PPC_EMB_NADDR16_LO
2743
ENUMX
2744
  BFD_RELOC_PPC_EMB_NADDR16_HI
2745
ENUMX
2746
  BFD_RELOC_PPC_EMB_NADDR16_HA
2747
ENUMX
2748
  BFD_RELOC_PPC_EMB_SDAI16
2749
ENUMX
2750
  BFD_RELOC_PPC_EMB_SDA2I16
2751
ENUMX
2752
  BFD_RELOC_PPC_EMB_SDA2REL
2753
ENUMX
2754
  BFD_RELOC_PPC_EMB_SDA21
2755
ENUMX
2756
  BFD_RELOC_PPC_EMB_MRKREF
2757
ENUMX
2758
  BFD_RELOC_PPC_EMB_RELSEC16
2759
ENUMX
2760
  BFD_RELOC_PPC_EMB_RELST_LO
2761
ENUMX
2762
  BFD_RELOC_PPC_EMB_RELST_HI
2763
ENUMX
2764
  BFD_RELOC_PPC_EMB_RELST_HA
2765
ENUMX
2766
  BFD_RELOC_PPC_EMB_BIT_FLD
2767
ENUMX
2768
  BFD_RELOC_PPC_EMB_RELSDA
2769
ENUMX
2770
  BFD_RELOC_PPC64_HIGHER
2771
ENUMX
2772
  BFD_RELOC_PPC64_HIGHER_S
2773
ENUMX
2774
  BFD_RELOC_PPC64_HIGHEST
2775
ENUMX
2776
  BFD_RELOC_PPC64_HIGHEST_S
2777
ENUMX
2778
  BFD_RELOC_PPC64_TOC16_LO
2779
ENUMX
2780
  BFD_RELOC_PPC64_TOC16_HI
2781
ENUMX
2782
  BFD_RELOC_PPC64_TOC16_HA
2783
ENUMX
2784
  BFD_RELOC_PPC64_TOC
2785
ENUMX
2786
  BFD_RELOC_PPC64_PLTGOT16
2787
ENUMX
2788
  BFD_RELOC_PPC64_PLTGOT16_LO
2789
ENUMX
2790
  BFD_RELOC_PPC64_PLTGOT16_HI
2791
ENUMX
2792
  BFD_RELOC_PPC64_PLTGOT16_HA
2793
ENUMX
2794
  BFD_RELOC_PPC64_ADDR16_DS
2795
ENUMX
2796
  BFD_RELOC_PPC64_ADDR16_LO_DS
2797
ENUMX
2798
  BFD_RELOC_PPC64_GOT16_DS
2799
ENUMX
2800
  BFD_RELOC_PPC64_GOT16_LO_DS
2801
ENUMX
2802
  BFD_RELOC_PPC64_PLT16_LO_DS
2803
ENUMX
2804
  BFD_RELOC_PPC64_SECTOFF_DS
2805
ENUMX
2806
  BFD_RELOC_PPC64_SECTOFF_LO_DS
2807
ENUMX
2808
  BFD_RELOC_PPC64_TOC16_DS
2809
ENUMX
2810
  BFD_RELOC_PPC64_TOC16_LO_DS
2811
ENUMX
2812
  BFD_RELOC_PPC64_PLTGOT16_DS
2813
ENUMX
2814
  BFD_RELOC_PPC64_PLTGOT16_LO_DS
2815
ENUMDOC
2816
  Power(rs6000) and PowerPC relocations.
2817
 
2818
ENUM
2819
  BFD_RELOC_PPC_TLS
2820
ENUMX
2821
  BFD_RELOC_PPC_TLSGD
2822
ENUMX
2823
  BFD_RELOC_PPC_TLSLD
2824
ENUMX
2825
  BFD_RELOC_PPC_DTPMOD
2826
ENUMX
2827
  BFD_RELOC_PPC_TPREL16
2828
ENUMX
2829
  BFD_RELOC_PPC_TPREL16_LO
2830
ENUMX
2831
  BFD_RELOC_PPC_TPREL16_HI
2832
ENUMX
2833
  BFD_RELOC_PPC_TPREL16_HA
2834
ENUMX
2835
  BFD_RELOC_PPC_TPREL
2836
ENUMX
2837
  BFD_RELOC_PPC_DTPREL16
2838
ENUMX
2839
  BFD_RELOC_PPC_DTPREL16_LO
2840
ENUMX
2841
  BFD_RELOC_PPC_DTPREL16_HI
2842
ENUMX
2843
  BFD_RELOC_PPC_DTPREL16_HA
2844
ENUMX
2845
  BFD_RELOC_PPC_DTPREL
2846
ENUMX
2847
  BFD_RELOC_PPC_GOT_TLSGD16
2848
ENUMX
2849
  BFD_RELOC_PPC_GOT_TLSGD16_LO
2850
ENUMX
2851
  BFD_RELOC_PPC_GOT_TLSGD16_HI
2852
ENUMX
2853
  BFD_RELOC_PPC_GOT_TLSGD16_HA
2854
ENUMX
2855
  BFD_RELOC_PPC_GOT_TLSLD16
2856
ENUMX
2857
  BFD_RELOC_PPC_GOT_TLSLD16_LO
2858
ENUMX
2859
  BFD_RELOC_PPC_GOT_TLSLD16_HI
2860
ENUMX
2861
  BFD_RELOC_PPC_GOT_TLSLD16_HA
2862
ENUMX
2863
  BFD_RELOC_PPC_GOT_TPREL16
2864
ENUMX
2865
  BFD_RELOC_PPC_GOT_TPREL16_LO
2866
ENUMX
2867
  BFD_RELOC_PPC_GOT_TPREL16_HI
2868
ENUMX
2869
  BFD_RELOC_PPC_GOT_TPREL16_HA
2870
ENUMX
2871
  BFD_RELOC_PPC_GOT_DTPREL16
2872
ENUMX
2873
  BFD_RELOC_PPC_GOT_DTPREL16_LO
2874
ENUMX
2875
  BFD_RELOC_PPC_GOT_DTPREL16_HI
2876
ENUMX
2877
  BFD_RELOC_PPC_GOT_DTPREL16_HA
2878
ENUMX
2879
  BFD_RELOC_PPC64_TPREL16_DS
2880
ENUMX
2881
  BFD_RELOC_PPC64_TPREL16_LO_DS
2882
ENUMX
2883
  BFD_RELOC_PPC64_TPREL16_HIGHER
2884
ENUMX
2885
  BFD_RELOC_PPC64_TPREL16_HIGHERA
2886
ENUMX
2887
  BFD_RELOC_PPC64_TPREL16_HIGHEST
2888
ENUMX
2889
  BFD_RELOC_PPC64_TPREL16_HIGHESTA
2890
ENUMX
2891
  BFD_RELOC_PPC64_DTPREL16_DS
2892
ENUMX
2893
  BFD_RELOC_PPC64_DTPREL16_LO_DS
2894
ENUMX
2895
  BFD_RELOC_PPC64_DTPREL16_HIGHER
2896
ENUMX
2897
  BFD_RELOC_PPC64_DTPREL16_HIGHERA
2898
ENUMX
2899
  BFD_RELOC_PPC64_DTPREL16_HIGHEST
2900
ENUMX
2901
  BFD_RELOC_PPC64_DTPREL16_HIGHESTA
2902
ENUMDOC
2903
  PowerPC and PowerPC64 thread-local storage relocations.
2904
 
2905
ENUM
2906
  BFD_RELOC_I370_D12
2907
ENUMDOC
2908
  IBM 370/390 relocations
2909
 
2910
ENUM
2911
  BFD_RELOC_CTOR
2912
ENUMDOC
2913
  The type of reloc used to build a constructor table - at the moment
2914
  probably a 32 bit wide absolute relocation, but the target can choose.
2915
  It generally does map to one of the other relocation types.
2916
 
2917
ENUM
2918
  BFD_RELOC_ARM_PCREL_BRANCH
2919
ENUMDOC
2920
  ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
2921
  not stored in the instruction.
2922
ENUM
2923
  BFD_RELOC_ARM_PCREL_BLX
2924
ENUMDOC
2925
  ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
2926
  not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
2927
  field in the instruction.
2928
ENUM
2929
  BFD_RELOC_THUMB_PCREL_BLX
2930
ENUMDOC
2931
  Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
2932
  not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
2933
  field in the instruction.
2934
ENUM
2935
  BFD_RELOC_ARM_PCREL_CALL
2936
ENUMDOC
2937
  ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.
2938
ENUM
2939
  BFD_RELOC_ARM_PCREL_JUMP
2940
ENUMDOC
2941
  ARM 26-bit pc-relative branch for B or conditional BL instruction.
2942
 
2943
ENUM
2944
  BFD_RELOC_THUMB_PCREL_BRANCH7
2945
ENUMX
2946
  BFD_RELOC_THUMB_PCREL_BRANCH9
2947
ENUMX
2948
  BFD_RELOC_THUMB_PCREL_BRANCH12
2949
ENUMX
2950
  BFD_RELOC_THUMB_PCREL_BRANCH20
2951
ENUMX
2952
  BFD_RELOC_THUMB_PCREL_BRANCH23
2953
ENUMX
2954
  BFD_RELOC_THUMB_PCREL_BRANCH25
2955
ENUMDOC
2956
  Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
2957
  The lowest bit must be zero and is not stored in the instruction.
2958
  Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
2959
  "nn" one smaller in all cases.  Note further that BRANCH23
2960
  corresponds to R_ARM_THM_CALL.
2961
 
2962
ENUM
2963
  BFD_RELOC_ARM_OFFSET_IMM
2964
ENUMDOC
2965
  12-bit immediate offset, used in ARM-format ldr and str instructions.
2966
 
2967
ENUM
2968
  BFD_RELOC_ARM_THUMB_OFFSET
2969
ENUMDOC
2970
  5-bit immediate offset, used in Thumb-format ldr and str instructions.
2971
 
2972
ENUM
2973
  BFD_RELOC_ARM_TARGET1
2974
ENUMDOC
2975
  Pc-relative or absolute relocation depending on target.  Used for
2976
  entries in .init_array sections.
2977
ENUM
2978
  BFD_RELOC_ARM_ROSEGREL32
2979
ENUMDOC
2980
  Read-only segment base relative address.
2981
ENUM
2982
  BFD_RELOC_ARM_SBREL32
2983
ENUMDOC
2984
  Data segment base relative address.
2985
ENUM
2986
  BFD_RELOC_ARM_TARGET2
2987
ENUMDOC
2988
  This reloc is used for references to RTTI data from exception handling
2989
  tables.  The actual definition depends on the target.  It may be a
2990
  pc-relative or some form of GOT-indirect relocation.
2991
ENUM
2992
  BFD_RELOC_ARM_PREL31
2993
ENUMDOC
2994
  31-bit PC relative address.
2995
ENUM
2996
  BFD_RELOC_ARM_MOVW
2997
ENUMX
2998
  BFD_RELOC_ARM_MOVT
2999
ENUMX
3000
  BFD_RELOC_ARM_MOVW_PCREL
3001
ENUMX
3002
  BFD_RELOC_ARM_MOVT_PCREL
3003
ENUMX
3004
  BFD_RELOC_ARM_THUMB_MOVW
3005
ENUMX
3006
  BFD_RELOC_ARM_THUMB_MOVT
3007
ENUMX
3008
  BFD_RELOC_ARM_THUMB_MOVW_PCREL
3009
ENUMX
3010
  BFD_RELOC_ARM_THUMB_MOVT_PCREL
3011
ENUMDOC
3012
  Low and High halfword relocations for MOVW and MOVT instructions.
3013
 
3014
ENUM
3015
  BFD_RELOC_ARM_JUMP_SLOT
3016
ENUMX
3017
  BFD_RELOC_ARM_GLOB_DAT
3018
ENUMX
3019
  BFD_RELOC_ARM_GOT32
3020
ENUMX
3021
  BFD_RELOC_ARM_PLT32
3022
ENUMX
3023
  BFD_RELOC_ARM_RELATIVE
3024
ENUMX
3025
  BFD_RELOC_ARM_GOTOFF
3026
ENUMX
3027
  BFD_RELOC_ARM_GOTPC
3028
ENUMX
3029
  BFD_RELOC_ARM_GOT_PREL
3030
ENUMDOC
3031
  Relocations for setting up GOTs and PLTs for shared libraries.
3032
 
3033
ENUM
3034
  BFD_RELOC_ARM_TLS_GD32
3035
ENUMX
3036
  BFD_RELOC_ARM_TLS_LDO32
3037
ENUMX
3038
  BFD_RELOC_ARM_TLS_LDM32
3039
ENUMX
3040
  BFD_RELOC_ARM_TLS_DTPOFF32
3041
ENUMX
3042
  BFD_RELOC_ARM_TLS_DTPMOD32
3043
ENUMX
3044
  BFD_RELOC_ARM_TLS_TPOFF32
3045
ENUMX
3046
  BFD_RELOC_ARM_TLS_IE32
3047
ENUMX
3048
  BFD_RELOC_ARM_TLS_LE32
3049
ENUMX
3050
  BFD_RELOC_ARM_TLS_GOTDESC
3051
ENUMX
3052
  BFD_RELOC_ARM_TLS_CALL
3053
ENUMX
3054
  BFD_RELOC_ARM_THM_TLS_CALL
3055
ENUMX
3056
  BFD_RELOC_ARM_TLS_DESCSEQ
3057
ENUMX
3058
  BFD_RELOC_ARM_THM_TLS_DESCSEQ
3059
ENUMX
3060
  BFD_RELOC_ARM_TLS_DESC
3061
ENUMDOC
3062
  ARM thread-local storage relocations.
3063
 
3064
ENUM
3065
  BFD_RELOC_ARM_ALU_PC_G0_NC
3066
ENUMX
3067
  BFD_RELOC_ARM_ALU_PC_G0
3068
ENUMX
3069
  BFD_RELOC_ARM_ALU_PC_G1_NC
3070
ENUMX
3071
  BFD_RELOC_ARM_ALU_PC_G1
3072
ENUMX
3073
  BFD_RELOC_ARM_ALU_PC_G2
3074
ENUMX
3075
  BFD_RELOC_ARM_LDR_PC_G0
3076
ENUMX
3077
  BFD_RELOC_ARM_LDR_PC_G1
3078
ENUMX
3079
  BFD_RELOC_ARM_LDR_PC_G2
3080
ENUMX
3081
  BFD_RELOC_ARM_LDRS_PC_G0
3082
ENUMX
3083
  BFD_RELOC_ARM_LDRS_PC_G1
3084
ENUMX
3085
  BFD_RELOC_ARM_LDRS_PC_G2
3086
ENUMX
3087
  BFD_RELOC_ARM_LDC_PC_G0
3088
ENUMX
3089
  BFD_RELOC_ARM_LDC_PC_G1
3090
ENUMX
3091
  BFD_RELOC_ARM_LDC_PC_G2
3092
ENUMX
3093
  BFD_RELOC_ARM_ALU_SB_G0_NC
3094
ENUMX
3095
  BFD_RELOC_ARM_ALU_SB_G0
3096
ENUMX
3097
  BFD_RELOC_ARM_ALU_SB_G1_NC
3098
ENUMX
3099
  BFD_RELOC_ARM_ALU_SB_G1
3100
ENUMX
3101
  BFD_RELOC_ARM_ALU_SB_G2
3102
ENUMX
3103
  BFD_RELOC_ARM_LDR_SB_G0
3104
ENUMX
3105
  BFD_RELOC_ARM_LDR_SB_G1
3106
ENUMX
3107
  BFD_RELOC_ARM_LDR_SB_G2
3108
ENUMX
3109
  BFD_RELOC_ARM_LDRS_SB_G0
3110
ENUMX
3111
  BFD_RELOC_ARM_LDRS_SB_G1
3112
ENUMX
3113
  BFD_RELOC_ARM_LDRS_SB_G2
3114
ENUMX
3115
  BFD_RELOC_ARM_LDC_SB_G0
3116
ENUMX
3117
  BFD_RELOC_ARM_LDC_SB_G1
3118
ENUMX
3119
  BFD_RELOC_ARM_LDC_SB_G2
3120
ENUMDOC
3121
  ARM group relocations.
3122
 
3123
ENUM
3124
  BFD_RELOC_ARM_V4BX
3125
ENUMDOC
3126
  Annotation of BX instructions.
3127
 
3128
ENUM
3129
  BFD_RELOC_ARM_IRELATIVE
3130
ENUMDOC
3131
  ARM support for STT_GNU_IFUNC.
3132
 
3133
ENUM
3134
  BFD_RELOC_ARM_IMMEDIATE
3135
ENUMX
3136
  BFD_RELOC_ARM_ADRL_IMMEDIATE
3137
ENUMX
3138
  BFD_RELOC_ARM_T32_IMMEDIATE
3139
ENUMX
3140
  BFD_RELOC_ARM_T32_ADD_IMM
3141
ENUMX
3142
  BFD_RELOC_ARM_T32_IMM12
3143
ENUMX
3144
  BFD_RELOC_ARM_T32_ADD_PC12
3145
ENUMX
3146
  BFD_RELOC_ARM_SHIFT_IMM
3147
ENUMX
3148
  BFD_RELOC_ARM_SMC
3149
ENUMX
3150
  BFD_RELOC_ARM_HVC
3151
ENUMX
3152
  BFD_RELOC_ARM_SWI
3153
ENUMX
3154
  BFD_RELOC_ARM_MULTI
3155
ENUMX
3156
  BFD_RELOC_ARM_CP_OFF_IMM
3157
ENUMX
3158
  BFD_RELOC_ARM_CP_OFF_IMM_S2
3159
ENUMX
3160
  BFD_RELOC_ARM_T32_CP_OFF_IMM
3161
ENUMX
3162
  BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
3163
ENUMX
3164
  BFD_RELOC_ARM_ADR_IMM
3165
ENUMX
3166
  BFD_RELOC_ARM_LDR_IMM
3167
ENUMX
3168
  BFD_RELOC_ARM_LITERAL
3169
ENUMX
3170
  BFD_RELOC_ARM_IN_POOL
3171
ENUMX
3172
  BFD_RELOC_ARM_OFFSET_IMM8
3173
ENUMX
3174
  BFD_RELOC_ARM_T32_OFFSET_U8
3175
ENUMX
3176
  BFD_RELOC_ARM_T32_OFFSET_IMM
3177
ENUMX
3178
  BFD_RELOC_ARM_HWLITERAL
3179
ENUMX
3180
  BFD_RELOC_ARM_THUMB_ADD
3181
ENUMX
3182
  BFD_RELOC_ARM_THUMB_IMM
3183
ENUMX
3184
  BFD_RELOC_ARM_THUMB_SHIFT
3185
ENUMDOC
3186
  These relocs are only used within the ARM assembler.  They are not
3187
  (at present) written to any object files.
3188
 
3189
ENUM
3190
  BFD_RELOC_SH_PCDISP8BY2
3191
ENUMX
3192
  BFD_RELOC_SH_PCDISP12BY2
3193
ENUMX
3194
  BFD_RELOC_SH_IMM3
3195
ENUMX
3196
  BFD_RELOC_SH_IMM3U
3197
ENUMX
3198
  BFD_RELOC_SH_DISP12
3199
ENUMX
3200
  BFD_RELOC_SH_DISP12BY2
3201
ENUMX
3202
  BFD_RELOC_SH_DISP12BY4
3203
ENUMX
3204
  BFD_RELOC_SH_DISP12BY8
3205
ENUMX
3206
  BFD_RELOC_SH_DISP20
3207
ENUMX
3208
  BFD_RELOC_SH_DISP20BY8
3209
ENUMX
3210
  BFD_RELOC_SH_IMM4
3211
ENUMX
3212
  BFD_RELOC_SH_IMM4BY2
3213
ENUMX
3214
  BFD_RELOC_SH_IMM4BY4
3215
ENUMX
3216
  BFD_RELOC_SH_IMM8
3217
ENUMX
3218
  BFD_RELOC_SH_IMM8BY2
3219
ENUMX
3220
  BFD_RELOC_SH_IMM8BY4
3221
ENUMX
3222
  BFD_RELOC_SH_PCRELIMM8BY2
3223
ENUMX
3224
  BFD_RELOC_SH_PCRELIMM8BY4
3225
ENUMX
3226
  BFD_RELOC_SH_SWITCH16
3227
ENUMX
3228
  BFD_RELOC_SH_SWITCH32
3229
ENUMX
3230
  BFD_RELOC_SH_USES
3231
ENUMX
3232
  BFD_RELOC_SH_COUNT
3233
ENUMX
3234
  BFD_RELOC_SH_ALIGN
3235
ENUMX
3236
  BFD_RELOC_SH_CODE
3237
ENUMX
3238
  BFD_RELOC_SH_DATA
3239
ENUMX
3240
  BFD_RELOC_SH_LABEL
3241
ENUMX
3242
  BFD_RELOC_SH_LOOP_START
3243
ENUMX
3244
  BFD_RELOC_SH_LOOP_END
3245
ENUMX
3246
  BFD_RELOC_SH_COPY
3247
ENUMX
3248
  BFD_RELOC_SH_GLOB_DAT
3249
ENUMX
3250
  BFD_RELOC_SH_JMP_SLOT
3251
ENUMX
3252
  BFD_RELOC_SH_RELATIVE
3253
ENUMX
3254
  BFD_RELOC_SH_GOTPC
3255
ENUMX
3256
  BFD_RELOC_SH_GOT_LOW16
3257
ENUMX
3258
  BFD_RELOC_SH_GOT_MEDLOW16
3259
ENUMX
3260
  BFD_RELOC_SH_GOT_MEDHI16
3261
ENUMX
3262
  BFD_RELOC_SH_GOT_HI16
3263
ENUMX
3264
  BFD_RELOC_SH_GOTPLT_LOW16
3265
ENUMX
3266
  BFD_RELOC_SH_GOTPLT_MEDLOW16
3267
ENUMX
3268
  BFD_RELOC_SH_GOTPLT_MEDHI16
3269
ENUMX
3270
  BFD_RELOC_SH_GOTPLT_HI16
3271
ENUMX
3272
  BFD_RELOC_SH_PLT_LOW16
3273
ENUMX
3274
  BFD_RELOC_SH_PLT_MEDLOW16
3275
ENUMX
3276
  BFD_RELOC_SH_PLT_MEDHI16
3277
ENUMX
3278
  BFD_RELOC_SH_PLT_HI16
3279
ENUMX
3280
  BFD_RELOC_SH_GOTOFF_LOW16
3281
ENUMX
3282
  BFD_RELOC_SH_GOTOFF_MEDLOW16
3283
ENUMX
3284
  BFD_RELOC_SH_GOTOFF_MEDHI16
3285
ENUMX
3286
  BFD_RELOC_SH_GOTOFF_HI16
3287
ENUMX
3288
  BFD_RELOC_SH_GOTPC_LOW16
3289
ENUMX
3290
  BFD_RELOC_SH_GOTPC_MEDLOW16
3291
ENUMX
3292
  BFD_RELOC_SH_GOTPC_MEDHI16
3293
ENUMX
3294
  BFD_RELOC_SH_GOTPC_HI16
3295
ENUMX
3296
  BFD_RELOC_SH_COPY64
3297
ENUMX
3298
  BFD_RELOC_SH_GLOB_DAT64
3299
ENUMX
3300
  BFD_RELOC_SH_JMP_SLOT64
3301
ENUMX
3302
  BFD_RELOC_SH_RELATIVE64
3303
ENUMX
3304
  BFD_RELOC_SH_GOT10BY4
3305
ENUMX
3306
  BFD_RELOC_SH_GOT10BY8
3307
ENUMX
3308
  BFD_RELOC_SH_GOTPLT10BY4
3309
ENUMX
3310
  BFD_RELOC_SH_GOTPLT10BY8
3311
ENUMX
3312
  BFD_RELOC_SH_GOTPLT32
3313
ENUMX
3314
  BFD_RELOC_SH_SHMEDIA_CODE
3315
ENUMX
3316
  BFD_RELOC_SH_IMMU5
3317
ENUMX
3318
  BFD_RELOC_SH_IMMS6
3319
ENUMX
3320
  BFD_RELOC_SH_IMMS6BY32
3321
ENUMX
3322
  BFD_RELOC_SH_IMMU6
3323
ENUMX
3324
  BFD_RELOC_SH_IMMS10
3325
ENUMX
3326
  BFD_RELOC_SH_IMMS10BY2
3327
ENUMX
3328
  BFD_RELOC_SH_IMMS10BY4
3329
ENUMX
3330
  BFD_RELOC_SH_IMMS10BY8
3331
ENUMX
3332
  BFD_RELOC_SH_IMMS16
3333
ENUMX
3334
  BFD_RELOC_SH_IMMU16
3335
ENUMX
3336
  BFD_RELOC_SH_IMM_LOW16
3337
ENUMX
3338
  BFD_RELOC_SH_IMM_LOW16_PCREL
3339
ENUMX
3340
  BFD_RELOC_SH_IMM_MEDLOW16
3341
ENUMX
3342
  BFD_RELOC_SH_IMM_MEDLOW16_PCREL
3343
ENUMX
3344
  BFD_RELOC_SH_IMM_MEDHI16
3345
ENUMX
3346
  BFD_RELOC_SH_IMM_MEDHI16_PCREL
3347
ENUMX
3348
  BFD_RELOC_SH_IMM_HI16
3349
ENUMX
3350
  BFD_RELOC_SH_IMM_HI16_PCREL
3351
ENUMX
3352
  BFD_RELOC_SH_PT_16
3353
ENUMX
3354
  BFD_RELOC_SH_TLS_GD_32
3355
ENUMX
3356
  BFD_RELOC_SH_TLS_LD_32
3357
ENUMX
3358
  BFD_RELOC_SH_TLS_LDO_32
3359
ENUMX
3360
  BFD_RELOC_SH_TLS_IE_32
3361
ENUMX
3362
  BFD_RELOC_SH_TLS_LE_32
3363
ENUMX
3364
  BFD_RELOC_SH_TLS_DTPMOD32
3365
ENUMX
3366
  BFD_RELOC_SH_TLS_DTPOFF32
3367
ENUMX
3368
  BFD_RELOC_SH_TLS_TPOFF32
3369
ENUMX
3370
  BFD_RELOC_SH_GOT20
3371
ENUMX
3372
  BFD_RELOC_SH_GOTOFF20
3373
ENUMX
3374
  BFD_RELOC_SH_GOTFUNCDESC
3375
ENUMX
3376
  BFD_RELOC_SH_GOTFUNCDESC20
3377
ENUMX
3378
  BFD_RELOC_SH_GOTOFFFUNCDESC
3379
ENUMX
3380
  BFD_RELOC_SH_GOTOFFFUNCDESC20
3381
ENUMX
3382
  BFD_RELOC_SH_FUNCDESC
3383
ENUMDOC
3384
  Renesas / SuperH SH relocs.  Not all of these appear in object files.
3385
 
3386
ENUM
3387
  BFD_RELOC_ARC_B22_PCREL
3388
ENUMDOC
3389
  ARC Cores relocs.
3390
  ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
3391
  not stored in the instruction.  The high 20 bits are installed in bits 26
3392
  through 7 of the instruction.
3393
ENUM
3394
  BFD_RELOC_ARC_B26
3395
ENUMDOC
3396
  ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
3397
  stored in the instruction.  The high 24 bits are installed in bits 23
3398
  through 0.
3399
 
3400
ENUM
3401
  BFD_RELOC_BFIN_16_IMM
3402
ENUMDOC
3403
  ADI Blackfin 16 bit immediate absolute reloc.
3404
ENUM
3405
  BFD_RELOC_BFIN_16_HIGH
3406
ENUMDOC
3407
  ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
3408
ENUM
3409
  BFD_RELOC_BFIN_4_PCREL
3410
ENUMDOC
3411
  ADI Blackfin 'a' part of LSETUP.
3412
ENUM
3413
  BFD_RELOC_BFIN_5_PCREL
3414
ENUMDOC
3415
  ADI Blackfin.
3416
ENUM
3417
  BFD_RELOC_BFIN_16_LOW
3418
ENUMDOC
3419
  ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
3420
ENUM
3421
  BFD_RELOC_BFIN_10_PCREL
3422
ENUMDOC
3423
  ADI Blackfin.
3424
ENUM
3425
  BFD_RELOC_BFIN_11_PCREL
3426
ENUMDOC
3427
  ADI Blackfin 'b' part of LSETUP.
3428
ENUM
3429
  BFD_RELOC_BFIN_12_PCREL_JUMP
3430
ENUMDOC
3431
  ADI Blackfin.
3432
ENUM
3433
  BFD_RELOC_BFIN_12_PCREL_JUMP_S
3434
ENUMDOC
3435
  ADI Blackfin Short jump, pcrel.
3436
ENUM
3437
  BFD_RELOC_BFIN_24_PCREL_CALL_X
3438
ENUMDOC
3439
  ADI Blackfin Call.x not implemented.
3440
ENUM
3441
  BFD_RELOC_BFIN_24_PCREL_JUMP_L
3442
ENUMDOC
3443
  ADI Blackfin Long Jump pcrel.
3444
ENUM
3445
  BFD_RELOC_BFIN_GOT17M4
3446
ENUMX
3447
  BFD_RELOC_BFIN_GOTHI
3448
ENUMX
3449
  BFD_RELOC_BFIN_GOTLO
3450
ENUMX
3451
  BFD_RELOC_BFIN_FUNCDESC
3452
ENUMX
3453
  BFD_RELOC_BFIN_FUNCDESC_GOT17M4
3454
ENUMX
3455
  BFD_RELOC_BFIN_FUNCDESC_GOTHI
3456
ENUMX
3457
  BFD_RELOC_BFIN_FUNCDESC_GOTLO
3458
ENUMX
3459
  BFD_RELOC_BFIN_FUNCDESC_VALUE
3460
ENUMX
3461
  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
3462
ENUMX
3463
  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
3464
ENUMX
3465
  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
3466
ENUMX
3467
  BFD_RELOC_BFIN_GOTOFF17M4
3468
ENUMX
3469
  BFD_RELOC_BFIN_GOTOFFHI
3470
ENUMX
3471
  BFD_RELOC_BFIN_GOTOFFLO
3472
ENUMDOC
3473
  ADI Blackfin FD-PIC relocations.
3474
ENUM
3475
  BFD_RELOC_BFIN_GOT
3476
ENUMDOC
3477
  ADI Blackfin GOT relocation.
3478
ENUM
3479
  BFD_RELOC_BFIN_PLTPC
3480
ENUMDOC
3481
  ADI Blackfin PLTPC relocation.
3482
ENUM
3483
  BFD_ARELOC_BFIN_PUSH
3484
ENUMDOC
3485
  ADI Blackfin arithmetic relocation.
3486
ENUM
3487
  BFD_ARELOC_BFIN_CONST
3488
ENUMDOC
3489
  ADI Blackfin arithmetic relocation.
3490
ENUM
3491
  BFD_ARELOC_BFIN_ADD
3492
ENUMDOC
3493
  ADI Blackfin arithmetic relocation.
3494
ENUM
3495
  BFD_ARELOC_BFIN_SUB
3496
ENUMDOC
3497
  ADI Blackfin arithmetic relocation.
3498
ENUM
3499
  BFD_ARELOC_BFIN_MULT
3500
ENUMDOC
3501
  ADI Blackfin arithmetic relocation.
3502
ENUM
3503
  BFD_ARELOC_BFIN_DIV
3504
ENUMDOC
3505
  ADI Blackfin arithmetic relocation.
3506
ENUM
3507
  BFD_ARELOC_BFIN_MOD
3508
ENUMDOC
3509
  ADI Blackfin arithmetic relocation.
3510
ENUM
3511
  BFD_ARELOC_BFIN_LSHIFT
3512
ENUMDOC
3513
  ADI Blackfin arithmetic relocation.
3514
ENUM
3515
  BFD_ARELOC_BFIN_RSHIFT
3516
ENUMDOC
3517
  ADI Blackfin arithmetic relocation.
3518
ENUM
3519
  BFD_ARELOC_BFIN_AND
3520
ENUMDOC
3521
  ADI Blackfin arithmetic relocation.
3522
ENUM
3523
  BFD_ARELOC_BFIN_OR
3524
ENUMDOC
3525
  ADI Blackfin arithmetic relocation.
3526
ENUM
3527
  BFD_ARELOC_BFIN_XOR
3528
ENUMDOC
3529
  ADI Blackfin arithmetic relocation.
3530
ENUM
3531
  BFD_ARELOC_BFIN_LAND
3532
ENUMDOC
3533
  ADI Blackfin arithmetic relocation.
3534
ENUM
3535
  BFD_ARELOC_BFIN_LOR
3536
ENUMDOC
3537
  ADI Blackfin arithmetic relocation.
3538
ENUM
3539
  BFD_ARELOC_BFIN_LEN
3540
ENUMDOC
3541
  ADI Blackfin arithmetic relocation.
3542
ENUM
3543
  BFD_ARELOC_BFIN_NEG
3544
ENUMDOC
3545
  ADI Blackfin arithmetic relocation.
3546
ENUM
3547
  BFD_ARELOC_BFIN_COMP
3548
ENUMDOC
3549
  ADI Blackfin arithmetic relocation.
3550
ENUM
3551
  BFD_ARELOC_BFIN_PAGE
3552
ENUMDOC
3553
  ADI Blackfin arithmetic relocation.
3554
ENUM
3555
  BFD_ARELOC_BFIN_HWPAGE
3556
ENUMDOC
3557
  ADI Blackfin arithmetic relocation.
3558
ENUM
3559
  BFD_ARELOC_BFIN_ADDR
3560
ENUMDOC
3561
  ADI Blackfin arithmetic relocation.
3562
 
3563
ENUM
3564
  BFD_RELOC_D10V_10_PCREL_R
3565
ENUMDOC
3566
  Mitsubishi D10V relocs.
3567
  This is a 10-bit reloc with the right 2 bits
3568
  assumed to be 0.
3569
ENUM
3570
  BFD_RELOC_D10V_10_PCREL_L
3571
ENUMDOC
3572
  Mitsubishi D10V relocs.
3573
  This is a 10-bit reloc with the right 2 bits
3574
  assumed to be 0.  This is the same as the previous reloc
3575
  except it is in the left container, i.e.,
3576
  shifted left 15 bits.
3577
ENUM
3578
  BFD_RELOC_D10V_18
3579
ENUMDOC
3580
  This is an 18-bit reloc with the right 2 bits
3581
  assumed to be 0.
3582
ENUM
3583
  BFD_RELOC_D10V_18_PCREL
3584
ENUMDOC
3585
  This is an 18-bit reloc with the right 2 bits
3586
  assumed to be 0.
3587
 
3588
ENUM
3589
  BFD_RELOC_D30V_6
3590
ENUMDOC
3591
  Mitsubishi D30V relocs.
3592
  This is a 6-bit absolute reloc.
3593
ENUM
3594
  BFD_RELOC_D30V_9_PCREL
3595
ENUMDOC
3596
  This is a 6-bit pc-relative reloc with
3597
  the right 3 bits assumed to be 0.
3598
ENUM
3599
  BFD_RELOC_D30V_9_PCREL_R
3600
ENUMDOC
3601
  This is a 6-bit pc-relative reloc with
3602
  the right 3 bits assumed to be 0. Same
3603
  as the previous reloc but on the right side
3604
  of the container.
3605
ENUM
3606
  BFD_RELOC_D30V_15
3607
ENUMDOC
3608
  This is a 12-bit absolute reloc with the
3609
  right 3 bitsassumed to be 0.
3610
ENUM
3611
  BFD_RELOC_D30V_15_PCREL
3612
ENUMDOC
3613
  This is a 12-bit pc-relative reloc with
3614
  the right 3 bits assumed to be 0.
3615
ENUM
3616
  BFD_RELOC_D30V_15_PCREL_R
3617
ENUMDOC
3618
  This is a 12-bit pc-relative reloc with
3619
  the right 3 bits assumed to be 0. Same
3620
  as the previous reloc but on the right side
3621
  of the container.
3622
ENUM
3623
  BFD_RELOC_D30V_21
3624
ENUMDOC
3625
  This is an 18-bit absolute reloc with
3626
  the right 3 bits assumed to be 0.
3627
ENUM
3628
  BFD_RELOC_D30V_21_PCREL
3629
ENUMDOC
3630
  This is an 18-bit pc-relative reloc with
3631
  the right 3 bits assumed to be 0.
3632
ENUM
3633
  BFD_RELOC_D30V_21_PCREL_R
3634
ENUMDOC
3635
  This is an 18-bit pc-relative reloc with
3636
  the right 3 bits assumed to be 0. Same
3637
  as the previous reloc but on the right side
3638
  of the container.
3639
ENUM
3640
  BFD_RELOC_D30V_32
3641
ENUMDOC
3642
  This is a 32-bit absolute reloc.
3643
ENUM
3644
  BFD_RELOC_D30V_32_PCREL
3645
ENUMDOC
3646
  This is a 32-bit pc-relative reloc.
3647
 
3648
ENUM
3649
  BFD_RELOC_DLX_HI16_S
3650
ENUMDOC
3651
  DLX relocs
3652
ENUM
3653
  BFD_RELOC_DLX_LO16
3654
ENUMDOC
3655
  DLX relocs
3656
ENUM
3657
  BFD_RELOC_DLX_JMP26
3658
ENUMDOC
3659
  DLX relocs
3660
 
3661
ENUM
3662
  BFD_RELOC_M32C_HI8
3663
ENUMX
3664
  BFD_RELOC_M32C_RL_JUMP
3665
ENUMX
3666
  BFD_RELOC_M32C_RL_1ADDR
3667
ENUMX
3668
  BFD_RELOC_M32C_RL_2ADDR
3669
ENUMDOC
3670
  Renesas M16C/M32C Relocations.
3671
 
3672
ENUM
3673
  BFD_RELOC_M32R_24
3674
ENUMDOC
3675
  Renesas M32R (formerly Mitsubishi M32R) relocs.
3676
  This is a 24 bit absolute address.
3677
ENUM
3678
  BFD_RELOC_M32R_10_PCREL
3679
ENUMDOC
3680
  This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.
3681
ENUM
3682
  BFD_RELOC_M32R_18_PCREL
3683
ENUMDOC
3684
  This is an 18-bit reloc with the right 2 bits assumed to be 0.
3685
ENUM
3686
  BFD_RELOC_M32R_26_PCREL
3687
ENUMDOC
3688
  This is a 26-bit reloc with the right 2 bits assumed to be 0.
3689
ENUM
3690
  BFD_RELOC_M32R_HI16_ULO
3691
ENUMDOC
3692
  This is a 16-bit reloc containing the high 16 bits of an address
3693
  used when the lower 16 bits are treated as unsigned.
3694
ENUM
3695
  BFD_RELOC_M32R_HI16_SLO
3696
ENUMDOC
3697
  This is a 16-bit reloc containing the high 16 bits of an address
3698
  used when the lower 16 bits are treated as signed.
3699
ENUM
3700
  BFD_RELOC_M32R_LO16
3701
ENUMDOC
3702
  This is a 16-bit reloc containing the lower 16 bits of an address.
3703
ENUM
3704
  BFD_RELOC_M32R_SDA16
3705
ENUMDOC
3706
  This is a 16-bit reloc containing the small data area offset for use in
3707
  add3, load, and store instructions.
3708
ENUM
3709
  BFD_RELOC_M32R_GOT24
3710
ENUMX
3711
  BFD_RELOC_M32R_26_PLTREL
3712
ENUMX
3713
  BFD_RELOC_M32R_COPY
3714
ENUMX
3715
  BFD_RELOC_M32R_GLOB_DAT
3716
ENUMX
3717
  BFD_RELOC_M32R_JMP_SLOT
3718
ENUMX
3719
  BFD_RELOC_M32R_RELATIVE
3720
ENUMX
3721
  BFD_RELOC_M32R_GOTOFF
3722
ENUMX
3723
  BFD_RELOC_M32R_GOTOFF_HI_ULO
3724
ENUMX
3725
  BFD_RELOC_M32R_GOTOFF_HI_SLO
3726
ENUMX
3727
  BFD_RELOC_M32R_GOTOFF_LO
3728
ENUMX
3729
  BFD_RELOC_M32R_GOTPC24
3730
ENUMX
3731
  BFD_RELOC_M32R_GOT16_HI_ULO
3732
ENUMX
3733
  BFD_RELOC_M32R_GOT16_HI_SLO
3734
ENUMX
3735
  BFD_RELOC_M32R_GOT16_LO
3736
ENUMX
3737
  BFD_RELOC_M32R_GOTPC_HI_ULO
3738
ENUMX
3739
  BFD_RELOC_M32R_GOTPC_HI_SLO
3740
ENUMX
3741
  BFD_RELOC_M32R_GOTPC_LO
3742
ENUMDOC
3743
  For PIC.
3744
 
3745
 
3746
ENUM
3747
  BFD_RELOC_V850_9_PCREL
3748
ENUMDOC
3749
  This is a 9-bit reloc
3750
ENUM
3751
  BFD_RELOC_V850_22_PCREL
3752
ENUMDOC
3753
  This is a 22-bit reloc
3754
 
3755
ENUM
3756
  BFD_RELOC_V850_SDA_16_16_OFFSET
3757
ENUMDOC
3758
  This is a 16 bit offset from the short data area pointer.
3759
ENUM
3760
  BFD_RELOC_V850_SDA_15_16_OFFSET
3761
ENUMDOC
3762
  This is a 16 bit offset (of which only 15 bits are used) from the
3763
  short data area pointer.
3764
ENUM
3765
  BFD_RELOC_V850_ZDA_16_16_OFFSET
3766
ENUMDOC
3767
  This is a 16 bit offset from the zero data area pointer.
3768
ENUM
3769
  BFD_RELOC_V850_ZDA_15_16_OFFSET
3770
ENUMDOC
3771
  This is a 16 bit offset (of which only 15 bits are used) from the
3772
  zero data area pointer.
3773
ENUM
3774
  BFD_RELOC_V850_TDA_6_8_OFFSET
3775
ENUMDOC
3776
  This is an 8 bit offset (of which only 6 bits are used) from the
3777
  tiny data area pointer.
3778
ENUM
3779
  BFD_RELOC_V850_TDA_7_8_OFFSET
3780
ENUMDOC
3781
  This is an 8bit offset (of which only 7 bits are used) from the tiny
3782
  data area pointer.
3783
ENUM
3784
  BFD_RELOC_V850_TDA_7_7_OFFSET
3785
ENUMDOC
3786
  This is a 7 bit offset from the tiny data area pointer.
3787
ENUM
3788
  BFD_RELOC_V850_TDA_16_16_OFFSET
3789
ENUMDOC
3790
  This is a 16 bit offset from the tiny data area pointer.
3791
COMMENT
3792
ENUM
3793
  BFD_RELOC_V850_TDA_4_5_OFFSET
3794
ENUMDOC
3795
  This is a 5 bit offset (of which only 4 bits are used) from the tiny
3796
  data area pointer.
3797
ENUM
3798
  BFD_RELOC_V850_TDA_4_4_OFFSET
3799
ENUMDOC
3800
  This is a 4 bit offset from the tiny data area pointer.
3801
ENUM
3802
  BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
3803
ENUMDOC
3804
  This is a 16 bit offset from the short data area pointer, with the
3805
  bits placed non-contiguously in the instruction.
3806
ENUM
3807
  BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
3808
ENUMDOC
3809
  This is a 16 bit offset from the zero data area pointer, with the
3810
  bits placed non-contiguously in the instruction.
3811
ENUM
3812
  BFD_RELOC_V850_CALLT_6_7_OFFSET
3813
ENUMDOC
3814
  This is a 6 bit offset from the call table base pointer.
3815
ENUM
3816
  BFD_RELOC_V850_CALLT_16_16_OFFSET
3817
ENUMDOC
3818
  This is a 16 bit offset from the call table base pointer.
3819
ENUM
3820
  BFD_RELOC_V850_LONGCALL
3821
ENUMDOC
3822
  Used for relaxing indirect function calls.
3823
ENUM
3824
  BFD_RELOC_V850_LONGJUMP
3825
ENUMDOC
3826
  Used for relaxing indirect jumps.
3827
ENUM
3828
  BFD_RELOC_V850_ALIGN
3829
ENUMDOC
3830
  Used to maintain alignment whilst relaxing.
3831
ENUM
3832
  BFD_RELOC_V850_LO16_SPLIT_OFFSET
3833
ENUMDOC
3834
  This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
3835
  instructions.
3836
ENUM
3837
  BFD_RELOC_V850_16_PCREL
3838
ENUMDOC
3839
  This is a 16-bit reloc.
3840
ENUM
3841
  BFD_RELOC_V850_17_PCREL
3842
ENUMDOC
3843
  This is a 17-bit reloc.
3844
ENUM
3845
  BFD_RELOC_V850_23
3846
ENUMDOC
3847
  This is a 23-bit reloc.
3848
ENUM
3849
  BFD_RELOC_V850_32_PCREL
3850
ENUMDOC
3851
  This is a 32-bit reloc.
3852
ENUM
3853
  BFD_RELOC_V850_32_ABS
3854
ENUMDOC
3855
  This is a 32-bit reloc.
3856
ENUM
3857
  BFD_RELOC_V850_16_SPLIT_OFFSET
3858
ENUMDOC
3859
  This is a 16-bit reloc.
3860
ENUM
3861
  BFD_RELOC_V850_16_S1
3862
ENUMDOC
3863
  This is a 16-bit reloc.
3864
ENUM
3865
  BFD_RELOC_V850_LO16_S1
3866
ENUMDOC
3867
  Low 16 bits. 16 bit shifted by 1.
3868
ENUM
3869
  BFD_RELOC_V850_CALLT_15_16_OFFSET
3870
ENUMDOC
3871
  This is a 16 bit offset from the call table base pointer.
3872
ENUM
3873
  BFD_RELOC_V850_32_GOTPCREL
3874
ENUMDOC
3875
  DSO relocations.
3876
ENUM
3877
  BFD_RELOC_V850_16_GOT
3878
ENUMDOC
3879
  DSO relocations.
3880
ENUM
3881
  BFD_RELOC_V850_32_GOT
3882
ENUMDOC
3883
  DSO relocations.
3884
ENUM
3885
  BFD_RELOC_V850_22_PLT_PCREL
3886
ENUMDOC
3887
  DSO relocations.
3888
ENUM
3889
  BFD_RELOC_V850_32_PLT_PCREL
3890
ENUMDOC
3891
  DSO relocations.
3892
ENUM
3893
  BFD_RELOC_V850_COPY
3894
ENUMDOC
3895
  DSO relocations.
3896
ENUM
3897
  BFD_RELOC_V850_GLOB_DAT
3898
ENUMDOC
3899
  DSO relocations.
3900
ENUM
3901
  BFD_RELOC_V850_JMP_SLOT
3902
ENUMDOC
3903
  DSO relocations.
3904
ENUM
3905
  BFD_RELOC_V850_RELATIVE
3906
ENUMDOC
3907
  DSO relocations.
3908
ENUM
3909
  BFD_RELOC_V850_16_GOTOFF
3910
ENUMDOC
3911
  DSO relocations.
3912
ENUM
3913
  BFD_RELOC_V850_32_GOTOFF
3914
ENUMDOC
3915
  DSO relocations.
3916
ENUM
3917
  BFD_RELOC_V850_CODE
3918
ENUMDOC
3919
  start code.
3920
ENUM
3921
  BFD_RELOC_V850_DATA
3922
ENUMDOC
3923
  start data in text.
3924
ENUM
3925
  BFD_RELOC_MN10300_32_PCREL
3926
ENUMDOC
3927
  This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
3928
  instruction.
3929
ENUM
3930
  BFD_RELOC_MN10300_16_PCREL
3931
ENUMDOC
3932
  This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
3933
  instruction.
3934
 
3935
ENUM
3936
  BFD_RELOC_TIC30_LDP
3937
ENUMDOC
3938
  This is a 8bit DP reloc for the tms320c30, where the most
3939
  significant 8 bits of a 24 bit word are placed into the least
3940
  significant 8 bits of the opcode.
3941
 
3942
ENUM
3943
  BFD_RELOC_TIC54X_PARTLS7
3944
ENUMDOC
3945
  This is a 7bit reloc for the tms320c54x, where the least
3946
  significant 7 bits of a 16 bit word are placed into the least
3947
  significant 7 bits of the opcode.
3948
 
3949
ENUM
3950
  BFD_RELOC_TIC54X_PARTMS9
3951
ENUMDOC
3952
  This is a 9bit DP reloc for the tms320c54x, where the most
3953
  significant 9 bits of a 16 bit word are placed into the least
3954
  significant 9 bits of the opcode.
3955
 
3956
ENUM
3957
  BFD_RELOC_TIC54X_23
3958
ENUMDOC
3959
  This is an extended address 23-bit reloc for the tms320c54x.
3960
 
3961
ENUM
3962
  BFD_RELOC_TIC54X_16_OF_23
3963
ENUMDOC
3964
  This is a 16-bit reloc for the tms320c54x, where the least
3965
  significant 16 bits of a 23-bit extended address are placed into
3966
  the opcode.
3967
 
3968
ENUM
3969
  BFD_RELOC_TIC54X_MS7_OF_23
3970
ENUMDOC
3971
  This is a reloc for the tms320c54x, where the most
3972
  significant 7 bits of a 23-bit extended address are placed into
3973
  the opcode.
3974
 
3975
ENUM
3976
  BFD_RELOC_C6000_PCR_S21
3977
ENUMX
3978
  BFD_RELOC_C6000_PCR_S12
3979
ENUMX
3980
  BFD_RELOC_C6000_PCR_S10
3981
ENUMX
3982
  BFD_RELOC_C6000_PCR_S7
3983
ENUMX
3984
  BFD_RELOC_C6000_ABS_S16
3985
ENUMX
3986
  BFD_RELOC_C6000_ABS_L16
3987
ENUMX
3988
  BFD_RELOC_C6000_ABS_H16
3989
ENUMX
3990
  BFD_RELOC_C6000_SBR_U15_B
3991
ENUMX
3992
  BFD_RELOC_C6000_SBR_U15_H
3993
ENUMX
3994
  BFD_RELOC_C6000_SBR_U15_W
3995
ENUMX
3996
  BFD_RELOC_C6000_SBR_S16
3997
ENUMX
3998
  BFD_RELOC_C6000_SBR_L16_B
3999
ENUMX
4000
  BFD_RELOC_C6000_SBR_L16_H
4001
ENUMX
4002
  BFD_RELOC_C6000_SBR_L16_W
4003
ENUMX
4004
  BFD_RELOC_C6000_SBR_H16_B
4005
ENUMX
4006
  BFD_RELOC_C6000_SBR_H16_H
4007
ENUMX
4008
  BFD_RELOC_C6000_SBR_H16_W
4009
ENUMX
4010
  BFD_RELOC_C6000_SBR_GOT_U15_W
4011
ENUMX
4012
  BFD_RELOC_C6000_SBR_GOT_L16_W
4013
ENUMX
4014
  BFD_RELOC_C6000_SBR_GOT_H16_W
4015
ENUMX
4016
  BFD_RELOC_C6000_DSBT_INDEX
4017
ENUMX
4018
  BFD_RELOC_C6000_PREL31
4019
ENUMX
4020
  BFD_RELOC_C6000_COPY
4021
ENUMX
4022
  BFD_RELOC_C6000_JUMP_SLOT
4023
ENUMX
4024
  BFD_RELOC_C6000_EHTYPE
4025
ENUMX
4026
  BFD_RELOC_C6000_PCR_H16
4027
ENUMX
4028
  BFD_RELOC_C6000_PCR_L16
4029
ENUMX
4030
  BFD_RELOC_C6000_ALIGN
4031
ENUMX
4032
  BFD_RELOC_C6000_FPHEAD
4033
ENUMX
4034
  BFD_RELOC_C6000_NOCMP
4035
ENUMDOC
4036
  TMS320C6000 relocations.
4037
 
4038
ENUM
4039
  BFD_RELOC_FR30_48
4040
ENUMDOC
4041
  This is a 48 bit reloc for the FR30 that stores 32 bits.
4042
ENUM
4043
  BFD_RELOC_FR30_20
4044
ENUMDOC
4045
  This is a 32 bit reloc for the FR30 that stores 20 bits split up into
4046
  two sections.
4047
ENUM
4048
  BFD_RELOC_FR30_6_IN_4
4049
ENUMDOC
4050
  This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
4051
  4 bits.
4052
ENUM
4053
  BFD_RELOC_FR30_8_IN_8
4054
ENUMDOC
4055
  This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
4056
  into 8 bits.
4057
ENUM
4058
  BFD_RELOC_FR30_9_IN_8
4059
ENUMDOC
4060
  This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
4061
  into 8 bits.
4062
ENUM
4063
  BFD_RELOC_FR30_10_IN_8
4064
ENUMDOC
4065
  This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
4066
  into 8 bits.
4067
ENUM
4068
  BFD_RELOC_FR30_9_PCREL
4069
ENUMDOC
4070
  This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
4071
  short offset into 8 bits.
4072
ENUM
4073
  BFD_RELOC_FR30_12_PCREL
4074
ENUMDOC
4075
  This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
4076
  short offset into 11 bits.
4077
 
4078
ENUM
4079
  BFD_RELOC_MCORE_PCREL_IMM8BY4
4080
ENUMX
4081
  BFD_RELOC_MCORE_PCREL_IMM11BY2
4082
ENUMX
4083
  BFD_RELOC_MCORE_PCREL_IMM4BY2
4084
ENUMX
4085
  BFD_RELOC_MCORE_PCREL_32
4086
ENUMX
4087
  BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
4088
ENUMX
4089
  BFD_RELOC_MCORE_RVA
4090
ENUMDOC
4091
  Motorola Mcore relocations.
4092
 
4093
ENUM
4094
  BFD_RELOC_MEP_8
4095
ENUMX
4096
  BFD_RELOC_MEP_16
4097
ENUMX
4098
  BFD_RELOC_MEP_32
4099
ENUMX
4100
  BFD_RELOC_MEP_PCREL8A2
4101
ENUMX
4102
  BFD_RELOC_MEP_PCREL12A2
4103
ENUMX
4104
  BFD_RELOC_MEP_PCREL17A2
4105
ENUMX
4106
  BFD_RELOC_MEP_PCREL24A2
4107
ENUMX
4108
  BFD_RELOC_MEP_PCABS24A2
4109
ENUMX
4110
  BFD_RELOC_MEP_LOW16
4111
ENUMX
4112
  BFD_RELOC_MEP_HI16U
4113
ENUMX
4114
  BFD_RELOC_MEP_HI16S
4115
ENUMX
4116
  BFD_RELOC_MEP_GPREL
4117
ENUMX
4118
  BFD_RELOC_MEP_TPREL
4119
ENUMX
4120
  BFD_RELOC_MEP_TPREL7
4121
ENUMX
4122
  BFD_RELOC_MEP_TPREL7A2
4123
ENUMX
4124
  BFD_RELOC_MEP_TPREL7A4
4125
ENUMX
4126
  BFD_RELOC_MEP_UIMM24
4127
ENUMX
4128
  BFD_RELOC_MEP_ADDR24A4
4129
ENUMX
4130
  BFD_RELOC_MEP_GNU_VTINHERIT
4131
ENUMX
4132
  BFD_RELOC_MEP_GNU_VTENTRY
4133
ENUMDOC
4134
  Toshiba Media Processor Relocations.
4135
COMMENT
4136
 
4137
ENUM
4138
  BFD_RELOC_MMIX_GETA
4139
ENUMX
4140
  BFD_RELOC_MMIX_GETA_1
4141
ENUMX
4142
  BFD_RELOC_MMIX_GETA_2
4143
ENUMX
4144
  BFD_RELOC_MMIX_GETA_3
4145
ENUMDOC
4146
  These are relocations for the GETA instruction.
4147
ENUM
4148
  BFD_RELOC_MMIX_CBRANCH
4149
ENUMX
4150
  BFD_RELOC_MMIX_CBRANCH_J
4151
ENUMX
4152
  BFD_RELOC_MMIX_CBRANCH_1
4153
ENUMX
4154
  BFD_RELOC_MMIX_CBRANCH_2
4155
ENUMX
4156
  BFD_RELOC_MMIX_CBRANCH_3
4157
ENUMDOC
4158
  These are relocations for a conditional branch instruction.
4159
ENUM
4160
  BFD_RELOC_MMIX_PUSHJ
4161
ENUMX
4162
  BFD_RELOC_MMIX_PUSHJ_1
4163
ENUMX
4164
  BFD_RELOC_MMIX_PUSHJ_2
4165
ENUMX
4166
  BFD_RELOC_MMIX_PUSHJ_3
4167
ENUMX
4168
  BFD_RELOC_MMIX_PUSHJ_STUBBABLE
4169
ENUMDOC
4170
  These are relocations for the PUSHJ instruction.
4171
ENUM
4172
  BFD_RELOC_MMIX_JMP
4173
ENUMX
4174
  BFD_RELOC_MMIX_JMP_1
4175
ENUMX
4176
  BFD_RELOC_MMIX_JMP_2
4177
ENUMX
4178
  BFD_RELOC_MMIX_JMP_3
4179
ENUMDOC
4180
  These are relocations for the JMP instruction.
4181
ENUM
4182
  BFD_RELOC_MMIX_ADDR19
4183
ENUMDOC
4184
  This is a relocation for a relative address as in a GETA instruction or
4185
  a branch.
4186
ENUM
4187
  BFD_RELOC_MMIX_ADDR27
4188
ENUMDOC
4189
  This is a relocation for a relative address as in a JMP instruction.
4190
ENUM
4191
  BFD_RELOC_MMIX_REG_OR_BYTE
4192
ENUMDOC
4193
  This is a relocation for an instruction field that may be a general
4194
  register or a value 0..255.
4195
ENUM
4196
  BFD_RELOC_MMIX_REG
4197
ENUMDOC
4198
  This is a relocation for an instruction field that may be a general
4199
  register.
4200
ENUM
4201
  BFD_RELOC_MMIX_BASE_PLUS_OFFSET
4202
ENUMDOC
4203
  This is a relocation for two instruction fields holding a register and
4204
  an offset, the equivalent of the relocation.
4205
ENUM
4206
  BFD_RELOC_MMIX_LOCAL
4207
ENUMDOC
4208
  This relocation is an assertion that the expression is not allocated as
4209
  a global register.  It does not modify contents.
4210
 
4211
ENUM
4212
  BFD_RELOC_AVR_7_PCREL
4213
ENUMDOC
4214
  This is a 16 bit reloc for the AVR that stores 8 bit pc relative
4215
  short offset into 7 bits.
4216
ENUM
4217
  BFD_RELOC_AVR_13_PCREL
4218
ENUMDOC
4219
  This is a 16 bit reloc for the AVR that stores 13 bit pc relative
4220
  short offset into 12 bits.
4221
ENUM
4222
  BFD_RELOC_AVR_16_PM
4223
ENUMDOC
4224
  This is a 16 bit reloc for the AVR that stores 17 bit value (usually
4225
  program memory address) into 16 bits.
4226
ENUM
4227
  BFD_RELOC_AVR_LO8_LDI
4228
ENUMDOC
4229
  This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4230
  data memory address) into 8 bit immediate value of LDI insn.
4231
ENUM
4232
  BFD_RELOC_AVR_HI8_LDI
4233
ENUMDOC
4234
  This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4235
  of data memory address) into 8 bit immediate value of LDI insn.
4236
ENUM
4237
  BFD_RELOC_AVR_HH8_LDI
4238
ENUMDOC
4239
  This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4240
  of program memory address) into 8 bit immediate value of LDI insn.
4241
ENUM
4242
  BFD_RELOC_AVR_MS8_LDI
4243
ENUMDOC
4244
  This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4245
  of 32 bit value) into 8 bit immediate value of LDI insn.
4246
ENUM
4247
  BFD_RELOC_AVR_LO8_LDI_NEG
4248
ENUMDOC
4249
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4250
  (usually data memory address) into 8 bit immediate value of SUBI insn.
4251
ENUM
4252
  BFD_RELOC_AVR_HI8_LDI_NEG
4253
ENUMDOC
4254
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4255
  (high 8 bit of data memory address) into 8 bit immediate value of
4256
  SUBI insn.
4257
ENUM
4258
  BFD_RELOC_AVR_HH8_LDI_NEG
4259
ENUMDOC
4260
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4261
  (most high 8 bit of program memory address) into 8 bit immediate value
4262
  of LDI or SUBI insn.
4263
ENUM
4264
  BFD_RELOC_AVR_MS8_LDI_NEG
4265
ENUMDOC
4266
  This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
4267
  of 32 bit value) into 8 bit immediate value of LDI insn.
4268
ENUM
4269
  BFD_RELOC_AVR_LO8_LDI_PM
4270
ENUMDOC
4271
  This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4272
  command address) into 8 bit immediate value of LDI insn.
4273
ENUM
4274
  BFD_RELOC_AVR_LO8_LDI_GS
4275
ENUMDOC
4276
  This is a 16 bit reloc for the AVR that stores 8 bit value
4277
  (command address) into 8 bit immediate value of LDI insn. If the address
4278
  is beyond the 128k boundary, the linker inserts a jump stub for this reloc
4279
  in the lower 128k.
4280
ENUM
4281
  BFD_RELOC_AVR_HI8_LDI_PM
4282
ENUMDOC
4283
  This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4284
  of command address) into 8 bit immediate value of LDI insn.
4285
ENUM
4286
  BFD_RELOC_AVR_HI8_LDI_GS
4287
ENUMDOC
4288
  This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4289
  of command address) into 8 bit immediate value of LDI insn.  If the address
4290
  is beyond the 128k boundary, the linker inserts a jump stub for this reloc
4291
  below 128k.
4292
ENUM
4293
  BFD_RELOC_AVR_HH8_LDI_PM
4294
ENUMDOC
4295
  This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4296
  of command address) into 8 bit immediate value of LDI insn.
4297
ENUM
4298
  BFD_RELOC_AVR_LO8_LDI_PM_NEG
4299
ENUMDOC
4300
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4301
  (usually command address) into 8 bit immediate value of SUBI insn.
4302
ENUM
4303
  BFD_RELOC_AVR_HI8_LDI_PM_NEG
4304
ENUMDOC
4305
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4306
  (high 8 bit of 16 bit command address) into 8 bit immediate value
4307
  of SUBI insn.
4308
ENUM
4309
  BFD_RELOC_AVR_HH8_LDI_PM_NEG
4310
ENUMDOC
4311
  This is a 16 bit reloc for the AVR that stores negated 8 bit value
4312
  (high 6 bit of 22 bit command address) into 8 bit immediate
4313
  value of SUBI insn.
4314
ENUM
4315
  BFD_RELOC_AVR_CALL
4316
ENUMDOC
4317
  This is a 32 bit reloc for the AVR that stores 23 bit value
4318
  into 22 bits.
4319
ENUM
4320
  BFD_RELOC_AVR_LDI
4321
ENUMDOC
4322
  This is a 16 bit reloc for the AVR that stores all needed bits
4323
  for absolute addressing with ldi with overflow check to linktime
4324
ENUM
4325
  BFD_RELOC_AVR_6
4326
ENUMDOC
4327
  This is a 6 bit reloc for the AVR that stores offset for ldd/std
4328
  instructions
4329
ENUM
4330
  BFD_RELOC_AVR_6_ADIW
4331
ENUMDOC
4332
  This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
4333
  instructions
4334
 
4335
ENUM
4336 163 khays
  BFD_RELOC_RL78_NEG8
4337
ENUMX
4338
  BFD_RELOC_RL78_NEG16
4339
ENUMX
4340
  BFD_RELOC_RL78_NEG24
4341
ENUMX
4342
  BFD_RELOC_RL78_NEG32
4343
ENUMX
4344
  BFD_RELOC_RL78_16_OP
4345
ENUMX
4346
  BFD_RELOC_RL78_24_OP
4347
ENUMX
4348
  BFD_RELOC_RL78_32_OP
4349
ENUMX
4350
  BFD_RELOC_RL78_8U
4351
ENUMX
4352
  BFD_RELOC_RL78_16U
4353
ENUMX
4354
  BFD_RELOC_RL78_24U
4355
ENUMX
4356
  BFD_RELOC_RL78_DIR3U_PCREL
4357
ENUMX
4358
  BFD_RELOC_RL78_DIFF
4359
ENUMX
4360
  BFD_RELOC_RL78_GPRELB
4361
ENUMX
4362
  BFD_RELOC_RL78_GPRELW
4363
ENUMX
4364
  BFD_RELOC_RL78_GPRELL
4365
ENUMX
4366
  BFD_RELOC_RL78_SYM
4367
ENUMX
4368
  BFD_RELOC_RL78_OP_SUBTRACT
4369
ENUMX
4370
  BFD_RELOC_RL78_OP_NEG
4371
ENUMX
4372
  BFD_RELOC_RL78_OP_AND
4373
ENUMX
4374
  BFD_RELOC_RL78_OP_SHRA
4375
ENUMX
4376
  BFD_RELOC_RL78_ABS8
4377
ENUMX
4378
  BFD_RELOC_RL78_ABS16
4379
ENUMX
4380
  BFD_RELOC_RL78_ABS16_REV
4381
ENUMX
4382
  BFD_RELOC_RL78_ABS32
4383
ENUMX
4384
  BFD_RELOC_RL78_ABS32_REV
4385
ENUMX
4386
  BFD_RELOC_RL78_ABS16U
4387
ENUMX
4388
  BFD_RELOC_RL78_ABS16UW
4389
ENUMX
4390
  BFD_RELOC_RL78_ABS16UL
4391
ENUMX
4392
  BFD_RELOC_RL78_RELAX
4393
ENUMX
4394
  BFD_RELOC_RL78_HI16
4395
ENUMX
4396
  BFD_RELOC_RL78_HI8
4397
ENUMX
4398
  BFD_RELOC_RL78_LO16
4399
ENUMDOC
4400
  Renesas RL78 Relocations.
4401
 
4402
ENUM
4403 14 khays
  BFD_RELOC_RX_NEG8
4404
ENUMX
4405
  BFD_RELOC_RX_NEG16
4406
ENUMX
4407
  BFD_RELOC_RX_NEG24
4408
ENUMX
4409
  BFD_RELOC_RX_NEG32
4410
ENUMX
4411
  BFD_RELOC_RX_16_OP
4412
ENUMX
4413
  BFD_RELOC_RX_24_OP
4414
ENUMX
4415
  BFD_RELOC_RX_32_OP
4416
ENUMX
4417
  BFD_RELOC_RX_8U
4418
ENUMX
4419
  BFD_RELOC_RX_16U
4420
ENUMX
4421
  BFD_RELOC_RX_24U
4422
ENUMX
4423
  BFD_RELOC_RX_DIR3U_PCREL
4424
ENUMX
4425
  BFD_RELOC_RX_DIFF
4426
ENUMX
4427
  BFD_RELOC_RX_GPRELB
4428
ENUMX
4429
  BFD_RELOC_RX_GPRELW
4430
ENUMX
4431
  BFD_RELOC_RX_GPRELL
4432
ENUMX
4433
  BFD_RELOC_RX_SYM
4434
ENUMX
4435
  BFD_RELOC_RX_OP_SUBTRACT
4436
ENUMX
4437
  BFD_RELOC_RX_OP_NEG
4438
ENUMX
4439
  BFD_RELOC_RX_ABS8
4440
ENUMX
4441
  BFD_RELOC_RX_ABS16
4442
ENUMX
4443
  BFD_RELOC_RX_ABS16_REV
4444
ENUMX
4445
  BFD_RELOC_RX_ABS32
4446
ENUMX
4447
  BFD_RELOC_RX_ABS32_REV
4448
ENUMX
4449
  BFD_RELOC_RX_ABS16U
4450
ENUMX
4451
  BFD_RELOC_RX_ABS16UW
4452
ENUMX
4453
  BFD_RELOC_RX_ABS16UL
4454
ENUMX
4455
  BFD_RELOC_RX_RELAX
4456
ENUMDOC
4457
  Renesas RX Relocations.
4458
 
4459
ENUM
4460
  BFD_RELOC_390_12
4461
ENUMDOC
4462
   Direct 12 bit.
4463
ENUM
4464
  BFD_RELOC_390_GOT12
4465
ENUMDOC
4466
  12 bit GOT offset.
4467
ENUM
4468
  BFD_RELOC_390_PLT32
4469
ENUMDOC
4470
  32 bit PC relative PLT address.
4471
ENUM
4472
  BFD_RELOC_390_COPY
4473
ENUMDOC
4474
  Copy symbol at runtime.
4475
ENUM
4476
  BFD_RELOC_390_GLOB_DAT
4477
ENUMDOC
4478
  Create GOT entry.
4479
ENUM
4480
  BFD_RELOC_390_JMP_SLOT
4481
ENUMDOC
4482
  Create PLT entry.
4483
ENUM
4484
  BFD_RELOC_390_RELATIVE
4485
ENUMDOC
4486
  Adjust by program base.
4487
ENUM
4488
  BFD_RELOC_390_GOTPC
4489
ENUMDOC
4490
  32 bit PC relative offset to GOT.
4491
ENUM
4492
  BFD_RELOC_390_GOT16
4493
ENUMDOC
4494
  16 bit GOT offset.
4495
ENUM
4496
  BFD_RELOC_390_PC16DBL
4497
ENUMDOC
4498
  PC relative 16 bit shifted by 1.
4499
ENUM
4500
  BFD_RELOC_390_PLT16DBL
4501
ENUMDOC
4502
  16 bit PC rel. PLT shifted by 1.
4503
ENUM
4504
  BFD_RELOC_390_PC32DBL
4505
ENUMDOC
4506
  PC relative 32 bit shifted by 1.
4507
ENUM
4508
  BFD_RELOC_390_PLT32DBL
4509
ENUMDOC
4510
  32 bit PC rel. PLT shifted by 1.
4511
ENUM
4512
  BFD_RELOC_390_GOTPCDBL
4513
ENUMDOC
4514
  32 bit PC rel. GOT shifted by 1.
4515
ENUM
4516
  BFD_RELOC_390_GOT64
4517
ENUMDOC
4518
  64 bit GOT offset.
4519
ENUM
4520
  BFD_RELOC_390_PLT64
4521
ENUMDOC
4522
  64 bit PC relative PLT address.
4523
ENUM
4524
  BFD_RELOC_390_GOTENT
4525
ENUMDOC
4526
  32 bit rel. offset to GOT entry.
4527
ENUM
4528
  BFD_RELOC_390_GOTOFF64
4529
ENUMDOC
4530
  64 bit offset to GOT.
4531
ENUM
4532
  BFD_RELOC_390_GOTPLT12
4533
ENUMDOC
4534
  12-bit offset to symbol-entry within GOT, with PLT handling.
4535
ENUM
4536
  BFD_RELOC_390_GOTPLT16
4537
ENUMDOC
4538
  16-bit offset to symbol-entry within GOT, with PLT handling.
4539
ENUM
4540
  BFD_RELOC_390_GOTPLT32
4541
ENUMDOC
4542
  32-bit offset to symbol-entry within GOT, with PLT handling.
4543
ENUM
4544
  BFD_RELOC_390_GOTPLT64
4545
ENUMDOC
4546
  64-bit offset to symbol-entry within GOT, with PLT handling.
4547
ENUM
4548
  BFD_RELOC_390_GOTPLTENT
4549
ENUMDOC
4550
  32-bit rel. offset to symbol-entry within GOT, with PLT handling.
4551
ENUM
4552
  BFD_RELOC_390_PLTOFF16
4553
ENUMDOC
4554
  16-bit rel. offset from the GOT to a PLT entry.
4555
ENUM
4556
  BFD_RELOC_390_PLTOFF32
4557
ENUMDOC
4558
  32-bit rel. offset from the GOT to a PLT entry.
4559
ENUM
4560
  BFD_RELOC_390_PLTOFF64
4561
ENUMDOC
4562
  64-bit rel. offset from the GOT to a PLT entry.
4563
 
4564
ENUM
4565
  BFD_RELOC_390_TLS_LOAD
4566
ENUMX
4567
  BFD_RELOC_390_TLS_GDCALL
4568
ENUMX
4569
  BFD_RELOC_390_TLS_LDCALL
4570
ENUMX
4571
  BFD_RELOC_390_TLS_GD32
4572
ENUMX
4573
  BFD_RELOC_390_TLS_GD64
4574
ENUMX
4575
  BFD_RELOC_390_TLS_GOTIE12
4576
ENUMX
4577
  BFD_RELOC_390_TLS_GOTIE32
4578
ENUMX
4579
  BFD_RELOC_390_TLS_GOTIE64
4580
ENUMX
4581
  BFD_RELOC_390_TLS_LDM32
4582
ENUMX
4583
  BFD_RELOC_390_TLS_LDM64
4584
ENUMX
4585
  BFD_RELOC_390_TLS_IE32
4586
ENUMX
4587
  BFD_RELOC_390_TLS_IE64
4588
ENUMX
4589
  BFD_RELOC_390_TLS_IEENT
4590
ENUMX
4591
  BFD_RELOC_390_TLS_LE32
4592
ENUMX
4593
  BFD_RELOC_390_TLS_LE64
4594
ENUMX
4595
  BFD_RELOC_390_TLS_LDO32
4596
ENUMX
4597
  BFD_RELOC_390_TLS_LDO64
4598
ENUMX
4599
  BFD_RELOC_390_TLS_DTPMOD
4600
ENUMX
4601
  BFD_RELOC_390_TLS_DTPOFF
4602
ENUMX
4603
  BFD_RELOC_390_TLS_TPOFF
4604
ENUMDOC
4605
  s390 tls relocations.
4606
 
4607
ENUM
4608
  BFD_RELOC_390_20
4609
ENUMX
4610
  BFD_RELOC_390_GOT20
4611
ENUMX
4612
  BFD_RELOC_390_GOTPLT20
4613
ENUMX
4614
  BFD_RELOC_390_TLS_GOTIE20
4615
ENUMDOC
4616
  Long displacement extension.
4617
 
4618
ENUM
4619
  BFD_RELOC_SCORE_GPREL15
4620
ENUMDOC
4621
  Score relocations
4622
  Low 16 bit for load/store
4623
ENUM
4624
  BFD_RELOC_SCORE_DUMMY2
4625
ENUMX
4626
  BFD_RELOC_SCORE_JMP
4627
ENUMDOC
4628
  This is a 24-bit reloc with the right 1 bit assumed to be 0
4629
ENUM
4630
  BFD_RELOC_SCORE_BRANCH
4631
ENUMDOC
4632
  This is a 19-bit reloc with the right 1 bit assumed to be 0
4633
ENUM
4634
  BFD_RELOC_SCORE_IMM30
4635
ENUMDOC
4636
  This is a 32-bit reloc for 48-bit instructions.
4637
ENUM
4638
  BFD_RELOC_SCORE_IMM32
4639
ENUMDOC
4640
  This is a 32-bit reloc for 48-bit instructions.
4641
ENUM
4642
  BFD_RELOC_SCORE16_JMP
4643
ENUMDOC
4644
  This is a 11-bit reloc with the right 1 bit assumed to be 0
4645
ENUM
4646
  BFD_RELOC_SCORE16_BRANCH
4647
ENUMDOC
4648
  This is a 8-bit reloc with the right 1 bit assumed to be 0
4649
ENUM
4650
  BFD_RELOC_SCORE_BCMP
4651
ENUMDOC
4652
   This is a 9-bit reloc with the right 1 bit assumed to be 0
4653
ENUM
4654
  BFD_RELOC_SCORE_GOT15
4655
ENUMX
4656
  BFD_RELOC_SCORE_GOT_LO16
4657
ENUMX
4658
  BFD_RELOC_SCORE_CALL15
4659
ENUMX
4660
  BFD_RELOC_SCORE_DUMMY_HI16
4661
ENUMDOC
4662
  Undocumented Score relocs
4663
 
4664
ENUM
4665
  BFD_RELOC_IP2K_FR9
4666
ENUMDOC
4667
  Scenix IP2K - 9-bit register number / data address
4668
ENUM
4669
  BFD_RELOC_IP2K_BANK
4670
ENUMDOC
4671
  Scenix IP2K - 4-bit register/data bank number
4672
ENUM
4673
  BFD_RELOC_IP2K_ADDR16CJP
4674
ENUMDOC
4675
  Scenix IP2K - low 13 bits of instruction word address
4676
ENUM
4677
  BFD_RELOC_IP2K_PAGE3
4678
ENUMDOC
4679
  Scenix IP2K - high 3 bits of instruction word address
4680
ENUM
4681
  BFD_RELOC_IP2K_LO8DATA
4682
ENUMX
4683
  BFD_RELOC_IP2K_HI8DATA
4684
ENUMX
4685
  BFD_RELOC_IP2K_EX8DATA
4686
ENUMDOC
4687
  Scenix IP2K - ext/low/high 8 bits of data address
4688
ENUM
4689
  BFD_RELOC_IP2K_LO8INSN
4690
ENUMX
4691
  BFD_RELOC_IP2K_HI8INSN
4692
ENUMDOC
4693
  Scenix IP2K - low/high 8 bits of instruction word address
4694
ENUM
4695
  BFD_RELOC_IP2K_PC_SKIP
4696
ENUMDOC
4697
  Scenix IP2K - even/odd PC modifier to modify snb pcl.0
4698
ENUM
4699
  BFD_RELOC_IP2K_TEXT
4700
ENUMDOC
4701
  Scenix IP2K - 16 bit word address in text section.
4702
ENUM
4703
  BFD_RELOC_IP2K_FR_OFFSET
4704
ENUMDOC
4705
  Scenix IP2K - 7-bit sp or dp offset
4706
ENUM
4707
  BFD_RELOC_VPE4KMATH_DATA
4708
ENUMX
4709
  BFD_RELOC_VPE4KMATH_INSN
4710
ENUMDOC
4711
  Scenix VPE4K coprocessor - data/insn-space addressing
4712
 
4713
ENUM
4714
  BFD_RELOC_VTABLE_INHERIT
4715
ENUMX
4716
  BFD_RELOC_VTABLE_ENTRY
4717
ENUMDOC
4718
  These two relocations are used by the linker to determine which of
4719
  the entries in a C++ virtual function table are actually used.  When
4720
  the --gc-sections option is given, the linker will zero out the entries
4721
  that are not used, so that the code for those functions need not be
4722
  included in the output.
4723
 
4724
  VTABLE_INHERIT is a zero-space relocation used to describe to the
4725
  linker the inheritance tree of a C++ virtual function table.  The
4726
  relocation's symbol should be the parent class' vtable, and the
4727
  relocation should be located at the child vtable.
4728
 
4729
  VTABLE_ENTRY is a zero-space relocation that describes the use of a
4730
  virtual function table entry.  The reloc's symbol should refer to the
4731
  table of the class mentioned in the code.  Off of that base, an offset
4732
  describes the entry that is being used.  For Rela hosts, this offset
4733
  is stored in the reloc's addend.  For Rel hosts, we are forced to put
4734
  this offset in the reloc's section offset.
4735
 
4736
ENUM
4737
  BFD_RELOC_IA64_IMM14
4738
ENUMX
4739
  BFD_RELOC_IA64_IMM22
4740
ENUMX
4741
  BFD_RELOC_IA64_IMM64
4742
ENUMX
4743
  BFD_RELOC_IA64_DIR32MSB
4744
ENUMX
4745
  BFD_RELOC_IA64_DIR32LSB
4746
ENUMX
4747
  BFD_RELOC_IA64_DIR64MSB
4748
ENUMX
4749
  BFD_RELOC_IA64_DIR64LSB
4750
ENUMX
4751
  BFD_RELOC_IA64_GPREL22
4752
ENUMX
4753
  BFD_RELOC_IA64_GPREL64I
4754
ENUMX
4755
  BFD_RELOC_IA64_GPREL32MSB
4756
ENUMX
4757
  BFD_RELOC_IA64_GPREL32LSB
4758
ENUMX
4759
  BFD_RELOC_IA64_GPREL64MSB
4760
ENUMX
4761
  BFD_RELOC_IA64_GPREL64LSB
4762
ENUMX
4763
  BFD_RELOC_IA64_LTOFF22
4764
ENUMX
4765
  BFD_RELOC_IA64_LTOFF64I
4766
ENUMX
4767
  BFD_RELOC_IA64_PLTOFF22
4768
ENUMX
4769
  BFD_RELOC_IA64_PLTOFF64I
4770
ENUMX
4771
  BFD_RELOC_IA64_PLTOFF64MSB
4772
ENUMX
4773
  BFD_RELOC_IA64_PLTOFF64LSB
4774
ENUMX
4775
  BFD_RELOC_IA64_FPTR64I
4776
ENUMX
4777
  BFD_RELOC_IA64_FPTR32MSB
4778
ENUMX
4779
  BFD_RELOC_IA64_FPTR32LSB
4780
ENUMX
4781
  BFD_RELOC_IA64_FPTR64MSB
4782
ENUMX
4783
  BFD_RELOC_IA64_FPTR64LSB
4784
ENUMX
4785
  BFD_RELOC_IA64_PCREL21B
4786
ENUMX
4787
  BFD_RELOC_IA64_PCREL21BI
4788
ENUMX
4789
  BFD_RELOC_IA64_PCREL21M
4790
ENUMX
4791
  BFD_RELOC_IA64_PCREL21F
4792
ENUMX
4793
  BFD_RELOC_IA64_PCREL22
4794
ENUMX
4795
  BFD_RELOC_IA64_PCREL60B
4796
ENUMX
4797
  BFD_RELOC_IA64_PCREL64I
4798
ENUMX
4799
  BFD_RELOC_IA64_PCREL32MSB
4800
ENUMX
4801
  BFD_RELOC_IA64_PCREL32LSB
4802
ENUMX
4803
  BFD_RELOC_IA64_PCREL64MSB
4804
ENUMX
4805
  BFD_RELOC_IA64_PCREL64LSB
4806
ENUMX
4807
  BFD_RELOC_IA64_LTOFF_FPTR22
4808
ENUMX
4809
  BFD_RELOC_IA64_LTOFF_FPTR64I
4810
ENUMX
4811
  BFD_RELOC_IA64_LTOFF_FPTR32MSB
4812
ENUMX
4813
  BFD_RELOC_IA64_LTOFF_FPTR32LSB
4814
ENUMX
4815
  BFD_RELOC_IA64_LTOFF_FPTR64MSB
4816
ENUMX
4817
  BFD_RELOC_IA64_LTOFF_FPTR64LSB
4818
ENUMX
4819
  BFD_RELOC_IA64_SEGREL32MSB
4820
ENUMX
4821
  BFD_RELOC_IA64_SEGREL32LSB
4822
ENUMX
4823
  BFD_RELOC_IA64_SEGREL64MSB
4824
ENUMX
4825
  BFD_RELOC_IA64_SEGREL64LSB
4826
ENUMX
4827
  BFD_RELOC_IA64_SECREL32MSB
4828
ENUMX
4829
  BFD_RELOC_IA64_SECREL32LSB
4830
ENUMX
4831
  BFD_RELOC_IA64_SECREL64MSB
4832
ENUMX
4833
  BFD_RELOC_IA64_SECREL64LSB
4834
ENUMX
4835
  BFD_RELOC_IA64_REL32MSB
4836
ENUMX
4837
  BFD_RELOC_IA64_REL32LSB
4838
ENUMX
4839
  BFD_RELOC_IA64_REL64MSB
4840
ENUMX
4841
  BFD_RELOC_IA64_REL64LSB
4842
ENUMX
4843
  BFD_RELOC_IA64_LTV32MSB
4844
ENUMX
4845
  BFD_RELOC_IA64_LTV32LSB
4846
ENUMX
4847
  BFD_RELOC_IA64_LTV64MSB
4848
ENUMX
4849
  BFD_RELOC_IA64_LTV64LSB
4850
ENUMX
4851
  BFD_RELOC_IA64_IPLTMSB
4852
ENUMX
4853
  BFD_RELOC_IA64_IPLTLSB
4854
ENUMX
4855
  BFD_RELOC_IA64_COPY
4856
ENUMX
4857
  BFD_RELOC_IA64_LTOFF22X
4858
ENUMX
4859
  BFD_RELOC_IA64_LDXMOV
4860
ENUMX
4861
  BFD_RELOC_IA64_TPREL14
4862
ENUMX
4863
  BFD_RELOC_IA64_TPREL22
4864
ENUMX
4865
  BFD_RELOC_IA64_TPREL64I
4866
ENUMX
4867
  BFD_RELOC_IA64_TPREL64MSB
4868
ENUMX
4869
  BFD_RELOC_IA64_TPREL64LSB
4870
ENUMX
4871
  BFD_RELOC_IA64_LTOFF_TPREL22
4872
ENUMX
4873
  BFD_RELOC_IA64_DTPMOD64MSB
4874
ENUMX
4875
  BFD_RELOC_IA64_DTPMOD64LSB
4876
ENUMX
4877
  BFD_RELOC_IA64_LTOFF_DTPMOD22
4878
ENUMX
4879
  BFD_RELOC_IA64_DTPREL14
4880
ENUMX
4881
  BFD_RELOC_IA64_DTPREL22
4882
ENUMX
4883
  BFD_RELOC_IA64_DTPREL64I
4884
ENUMX
4885
  BFD_RELOC_IA64_DTPREL32MSB
4886
ENUMX
4887
  BFD_RELOC_IA64_DTPREL32LSB
4888
ENUMX
4889
  BFD_RELOC_IA64_DTPREL64MSB
4890
ENUMX
4891
  BFD_RELOC_IA64_DTPREL64LSB
4892
ENUMX
4893
  BFD_RELOC_IA64_LTOFF_DTPREL22
4894
ENUMDOC
4895
  Intel IA64 Relocations.
4896
 
4897
ENUM
4898
  BFD_RELOC_M68HC11_HI8
4899
ENUMDOC
4900
  Motorola 68HC11 reloc.
4901
  This is the 8 bit high part of an absolute address.
4902
ENUM
4903
  BFD_RELOC_M68HC11_LO8
4904
ENUMDOC
4905
  Motorola 68HC11 reloc.
4906
  This is the 8 bit low part of an absolute address.
4907
ENUM
4908
  BFD_RELOC_M68HC11_3B
4909
ENUMDOC
4910
  Motorola 68HC11 reloc.
4911
  This is the 3 bit of a value.
4912
ENUM
4913
  BFD_RELOC_M68HC11_RL_JUMP
4914
ENUMDOC
4915
  Motorola 68HC11 reloc.
4916
  This reloc marks the beginning of a jump/call instruction.
4917
  It is used for linker relaxation to correctly identify beginning
4918
  of instruction and change some branches to use PC-relative
4919
  addressing mode.
4920
ENUM
4921
  BFD_RELOC_M68HC11_RL_GROUP
4922
ENUMDOC
4923
  Motorola 68HC11 reloc.
4924
  This reloc marks a group of several instructions that gcc generates
4925
  and for which the linker relaxation pass can modify and/or remove
4926
  some of them.
4927
ENUM
4928
  BFD_RELOC_M68HC11_LO16
4929
ENUMDOC
4930
  Motorola 68HC11 reloc.
4931
  This is the 16-bit lower part of an address.  It is used for 'call'
4932
  instruction to specify the symbol address without any special
4933
  transformation (due to memory bank window).
4934
ENUM
4935
  BFD_RELOC_M68HC11_PAGE
4936
ENUMDOC
4937
  Motorola 68HC11 reloc.
4938
  This is a 8-bit reloc that specifies the page number of an address.
4939
  It is used by 'call' instruction to specify the page number of
4940
  the symbol.
4941
ENUM
4942
  BFD_RELOC_M68HC11_24
4943
ENUMDOC
4944
  Motorola 68HC11 reloc.
4945
  This is a 24-bit reloc that represents the address with a 16-bit
4946
  value and a 8-bit page number.  The symbol address is transformed
4947
  to follow the 16K memory bank of 68HC12 (seen as mapped in the window).
4948
ENUM
4949
  BFD_RELOC_M68HC12_5B
4950
ENUMDOC
4951
  Motorola 68HC12 reloc.
4952
  This is the 5 bits of a value.
4953
 
4954
ENUM
4955
  BFD_RELOC_16C_NUM08
4956
ENUMX
4957
  BFD_RELOC_16C_NUM08_C
4958
ENUMX
4959
  BFD_RELOC_16C_NUM16
4960
ENUMX
4961
  BFD_RELOC_16C_NUM16_C
4962
ENUMX
4963
  BFD_RELOC_16C_NUM32
4964
ENUMX
4965
  BFD_RELOC_16C_NUM32_C
4966
ENUMX
4967
  BFD_RELOC_16C_DISP04
4968
ENUMX
4969
  BFD_RELOC_16C_DISP04_C
4970
ENUMX
4971
  BFD_RELOC_16C_DISP08
4972
ENUMX
4973
  BFD_RELOC_16C_DISP08_C
4974
ENUMX
4975
  BFD_RELOC_16C_DISP16
4976
ENUMX
4977
  BFD_RELOC_16C_DISP16_C
4978
ENUMX
4979
  BFD_RELOC_16C_DISP24
4980
ENUMX
4981
  BFD_RELOC_16C_DISP24_C
4982
ENUMX
4983
  BFD_RELOC_16C_DISP24a
4984
ENUMX
4985
  BFD_RELOC_16C_DISP24a_C
4986
ENUMX
4987
  BFD_RELOC_16C_REG04
4988
ENUMX
4989
  BFD_RELOC_16C_REG04_C
4990
ENUMX
4991
  BFD_RELOC_16C_REG04a
4992
ENUMX
4993
  BFD_RELOC_16C_REG04a_C
4994
ENUMX
4995
  BFD_RELOC_16C_REG14
4996
ENUMX
4997
  BFD_RELOC_16C_REG14_C
4998
ENUMX
4999
  BFD_RELOC_16C_REG16
5000
ENUMX
5001
  BFD_RELOC_16C_REG16_C
5002
ENUMX
5003
  BFD_RELOC_16C_REG20
5004
ENUMX
5005
  BFD_RELOC_16C_REG20_C
5006
ENUMX
5007
  BFD_RELOC_16C_ABS20
5008
ENUMX
5009
  BFD_RELOC_16C_ABS20_C
5010
ENUMX
5011
  BFD_RELOC_16C_ABS24
5012
ENUMX
5013
  BFD_RELOC_16C_ABS24_C
5014
ENUMX
5015
  BFD_RELOC_16C_IMM04
5016
ENUMX
5017
  BFD_RELOC_16C_IMM04_C
5018
ENUMX
5019
  BFD_RELOC_16C_IMM16
5020
ENUMX
5021
  BFD_RELOC_16C_IMM16_C
5022
ENUMX
5023
  BFD_RELOC_16C_IMM20
5024
ENUMX
5025
  BFD_RELOC_16C_IMM20_C
5026
ENUMX
5027
  BFD_RELOC_16C_IMM24
5028
ENUMX
5029
  BFD_RELOC_16C_IMM24_C
5030
ENUMX
5031
  BFD_RELOC_16C_IMM32
5032
ENUMX
5033
  BFD_RELOC_16C_IMM32_C
5034
ENUMDOC
5035
  NS CR16C Relocations.
5036
 
5037
ENUM
5038
  BFD_RELOC_CR16_NUM8
5039
ENUMX
5040
  BFD_RELOC_CR16_NUM16
5041
ENUMX
5042
  BFD_RELOC_CR16_NUM32
5043
ENUMX
5044
  BFD_RELOC_CR16_NUM32a
5045
ENUMX
5046
  BFD_RELOC_CR16_REGREL0
5047
ENUMX
5048
  BFD_RELOC_CR16_REGREL4
5049
ENUMX
5050
  BFD_RELOC_CR16_REGREL4a
5051
ENUMX
5052
  BFD_RELOC_CR16_REGREL14
5053
ENUMX
5054
  BFD_RELOC_CR16_REGREL14a
5055
ENUMX
5056
  BFD_RELOC_CR16_REGREL16
5057
ENUMX
5058
  BFD_RELOC_CR16_REGREL20
5059
ENUMX
5060
  BFD_RELOC_CR16_REGREL20a
5061
ENUMX
5062
  BFD_RELOC_CR16_ABS20
5063
ENUMX
5064
  BFD_RELOC_CR16_ABS24
5065
ENUMX
5066
  BFD_RELOC_CR16_IMM4
5067
ENUMX
5068
  BFD_RELOC_CR16_IMM8
5069
ENUMX
5070
  BFD_RELOC_CR16_IMM16
5071
ENUMX
5072
  BFD_RELOC_CR16_IMM20
5073
ENUMX
5074
  BFD_RELOC_CR16_IMM24
5075
ENUMX
5076
  BFD_RELOC_CR16_IMM32
5077
ENUMX
5078
  BFD_RELOC_CR16_IMM32a
5079
ENUMX
5080
  BFD_RELOC_CR16_DISP4
5081
ENUMX
5082
  BFD_RELOC_CR16_DISP8
5083
ENUMX
5084
  BFD_RELOC_CR16_DISP16
5085
ENUMX
5086
  BFD_RELOC_CR16_DISP20
5087
ENUMX
5088
  BFD_RELOC_CR16_DISP24
5089
ENUMX
5090
  BFD_RELOC_CR16_DISP24a
5091
ENUMX
5092
  BFD_RELOC_CR16_SWITCH8
5093
ENUMX
5094
  BFD_RELOC_CR16_SWITCH16
5095
ENUMX
5096
  BFD_RELOC_CR16_SWITCH32
5097
ENUMX
5098
  BFD_RELOC_CR16_GOT_REGREL20
5099
ENUMX
5100
  BFD_RELOC_CR16_GOTC_REGREL20
5101
ENUMX
5102
  BFD_RELOC_CR16_GLOB_DAT
5103
ENUMDOC
5104
  NS CR16 Relocations.
5105
 
5106
ENUM
5107
  BFD_RELOC_CRX_REL4
5108
ENUMX
5109
  BFD_RELOC_CRX_REL8
5110
ENUMX
5111
  BFD_RELOC_CRX_REL8_CMP
5112
ENUMX
5113
  BFD_RELOC_CRX_REL16
5114
ENUMX
5115
  BFD_RELOC_CRX_REL24
5116
ENUMX
5117
  BFD_RELOC_CRX_REL32
5118
ENUMX
5119
  BFD_RELOC_CRX_REGREL12
5120
ENUMX
5121
  BFD_RELOC_CRX_REGREL22
5122
ENUMX
5123
  BFD_RELOC_CRX_REGREL28
5124
ENUMX
5125
  BFD_RELOC_CRX_REGREL32
5126
ENUMX
5127
  BFD_RELOC_CRX_ABS16
5128
ENUMX
5129
  BFD_RELOC_CRX_ABS32
5130
ENUMX
5131
  BFD_RELOC_CRX_NUM8
5132
ENUMX
5133
  BFD_RELOC_CRX_NUM16
5134
ENUMX
5135
  BFD_RELOC_CRX_NUM32
5136
ENUMX
5137
  BFD_RELOC_CRX_IMM16
5138
ENUMX
5139
  BFD_RELOC_CRX_IMM32
5140
ENUMX
5141
  BFD_RELOC_CRX_SWITCH8
5142
ENUMX
5143
  BFD_RELOC_CRX_SWITCH16
5144
ENUMX
5145
  BFD_RELOC_CRX_SWITCH32
5146
ENUMDOC
5147
  NS CRX Relocations.
5148
 
5149
ENUM
5150
  BFD_RELOC_CRIS_BDISP8
5151
ENUMX
5152
  BFD_RELOC_CRIS_UNSIGNED_5
5153
ENUMX
5154
  BFD_RELOC_CRIS_SIGNED_6
5155
ENUMX
5156
  BFD_RELOC_CRIS_UNSIGNED_6
5157
ENUMX
5158
  BFD_RELOC_CRIS_SIGNED_8
5159
ENUMX
5160
  BFD_RELOC_CRIS_UNSIGNED_8
5161
ENUMX
5162
  BFD_RELOC_CRIS_SIGNED_16
5163
ENUMX
5164
  BFD_RELOC_CRIS_UNSIGNED_16
5165
ENUMX
5166
  BFD_RELOC_CRIS_LAPCQ_OFFSET
5167
ENUMX
5168
  BFD_RELOC_CRIS_UNSIGNED_4
5169
ENUMDOC
5170
  These relocs are only used within the CRIS assembler.  They are not
5171
  (at present) written to any object files.
5172
ENUM
5173
  BFD_RELOC_CRIS_COPY
5174
ENUMX
5175
  BFD_RELOC_CRIS_GLOB_DAT
5176
ENUMX
5177
  BFD_RELOC_CRIS_JUMP_SLOT
5178
ENUMX
5179
  BFD_RELOC_CRIS_RELATIVE
5180
ENUMDOC
5181
  Relocs used in ELF shared libraries for CRIS.
5182
ENUM
5183
  BFD_RELOC_CRIS_32_GOT
5184
ENUMDOC
5185
  32-bit offset to symbol-entry within GOT.
5186
ENUM
5187
  BFD_RELOC_CRIS_16_GOT
5188
ENUMDOC
5189
  16-bit offset to symbol-entry within GOT.
5190
ENUM
5191
  BFD_RELOC_CRIS_32_GOTPLT
5192
ENUMDOC
5193
  32-bit offset to symbol-entry within GOT, with PLT handling.
5194
ENUM
5195
  BFD_RELOC_CRIS_16_GOTPLT
5196
ENUMDOC
5197
  16-bit offset to symbol-entry within GOT, with PLT handling.
5198
ENUM
5199
  BFD_RELOC_CRIS_32_GOTREL
5200
ENUMDOC
5201
  32-bit offset to symbol, relative to GOT.
5202
ENUM
5203
  BFD_RELOC_CRIS_32_PLT_GOTREL
5204
ENUMDOC
5205
  32-bit offset to symbol with PLT entry, relative to GOT.
5206
ENUM
5207
  BFD_RELOC_CRIS_32_PLT_PCREL
5208
ENUMDOC
5209
  32-bit offset to symbol with PLT entry, relative to this relocation.
5210
 
5211
ENUM
5212
  BFD_RELOC_CRIS_32_GOT_GD
5213
ENUMX
5214
  BFD_RELOC_CRIS_16_GOT_GD
5215
ENUMX
5216
  BFD_RELOC_CRIS_32_GD
5217
ENUMX
5218
  BFD_RELOC_CRIS_DTP
5219
ENUMX
5220
  BFD_RELOC_CRIS_32_DTPREL
5221
ENUMX
5222
  BFD_RELOC_CRIS_16_DTPREL
5223
ENUMX
5224
  BFD_RELOC_CRIS_32_GOT_TPREL
5225
ENUMX
5226
  BFD_RELOC_CRIS_16_GOT_TPREL
5227
ENUMX
5228
  BFD_RELOC_CRIS_32_TPREL
5229
ENUMX
5230
  BFD_RELOC_CRIS_16_TPREL
5231
ENUMX
5232
  BFD_RELOC_CRIS_DTPMOD
5233
ENUMX
5234
  BFD_RELOC_CRIS_32_IE
5235
ENUMDOC
5236
  Relocs used in TLS code for CRIS.
5237
 
5238
ENUM
5239
  BFD_RELOC_860_COPY
5240
ENUMX
5241
  BFD_RELOC_860_GLOB_DAT
5242
ENUMX
5243
  BFD_RELOC_860_JUMP_SLOT
5244
ENUMX
5245
  BFD_RELOC_860_RELATIVE
5246
ENUMX
5247
  BFD_RELOC_860_PC26
5248
ENUMX
5249
  BFD_RELOC_860_PLT26
5250
ENUMX
5251
  BFD_RELOC_860_PC16
5252
ENUMX
5253
  BFD_RELOC_860_LOW0
5254
ENUMX
5255
  BFD_RELOC_860_SPLIT0
5256
ENUMX
5257
  BFD_RELOC_860_LOW1
5258
ENUMX
5259
  BFD_RELOC_860_SPLIT1
5260
ENUMX
5261
  BFD_RELOC_860_LOW2
5262
ENUMX
5263
  BFD_RELOC_860_SPLIT2
5264
ENUMX
5265
  BFD_RELOC_860_LOW3
5266
ENUMX
5267
  BFD_RELOC_860_LOGOT0
5268
ENUMX
5269
  BFD_RELOC_860_SPGOT0
5270
ENUMX
5271
  BFD_RELOC_860_LOGOT1
5272
ENUMX
5273
  BFD_RELOC_860_SPGOT1
5274
ENUMX
5275
  BFD_RELOC_860_LOGOTOFF0
5276
ENUMX
5277
  BFD_RELOC_860_SPGOTOFF0
5278
ENUMX
5279
  BFD_RELOC_860_LOGOTOFF1
5280
ENUMX
5281
  BFD_RELOC_860_SPGOTOFF1
5282
ENUMX
5283
  BFD_RELOC_860_LOGOTOFF2
5284
ENUMX
5285
  BFD_RELOC_860_LOGOTOFF3
5286
ENUMX
5287
  BFD_RELOC_860_LOPC
5288
ENUMX
5289
  BFD_RELOC_860_HIGHADJ
5290
ENUMX
5291
  BFD_RELOC_860_HAGOT
5292
ENUMX
5293
  BFD_RELOC_860_HAGOTOFF
5294
ENUMX
5295
  BFD_RELOC_860_HAPC
5296
ENUMX
5297
  BFD_RELOC_860_HIGH
5298
ENUMX
5299
  BFD_RELOC_860_HIGOT
5300
ENUMX
5301
  BFD_RELOC_860_HIGOTOFF
5302
ENUMDOC
5303
  Intel i860 Relocations.
5304
 
5305
ENUM
5306
  BFD_RELOC_OPENRISC_ABS_26
5307
ENUMX
5308
  BFD_RELOC_OPENRISC_REL_26
5309
ENUMDOC
5310
  OpenRISC Relocations.
5311
 
5312
ENUM
5313
  BFD_RELOC_H8_DIR16A8
5314
ENUMX
5315
  BFD_RELOC_H8_DIR16R8
5316
ENUMX
5317
  BFD_RELOC_H8_DIR24A8
5318
ENUMX
5319
  BFD_RELOC_H8_DIR24R8
5320
ENUMX
5321
  BFD_RELOC_H8_DIR32A16
5322
ENUMDOC
5323
  H8 elf Relocations.
5324
 
5325
ENUM
5326
  BFD_RELOC_XSTORMY16_REL_12
5327
ENUMX
5328
  BFD_RELOC_XSTORMY16_12
5329
ENUMX
5330
  BFD_RELOC_XSTORMY16_24
5331
ENUMX
5332
  BFD_RELOC_XSTORMY16_FPTR16
5333
ENUMDOC
5334
  Sony Xstormy16 Relocations.
5335
 
5336
ENUM
5337
  BFD_RELOC_RELC
5338
ENUMDOC
5339
  Self-describing complex relocations.
5340
COMMENT
5341
 
5342
ENUM
5343
  BFD_RELOC_XC16X_PAG
5344
ENUMX
5345
  BFD_RELOC_XC16X_POF
5346
ENUMX
5347
  BFD_RELOC_XC16X_SEG
5348
ENUMX
5349
  BFD_RELOC_XC16X_SOF
5350
ENUMDOC
5351
  Infineon Relocations.
5352
 
5353
ENUM
5354
  BFD_RELOC_VAX_GLOB_DAT
5355
ENUMX
5356
  BFD_RELOC_VAX_JMP_SLOT
5357
ENUMX
5358
  BFD_RELOC_VAX_RELATIVE
5359
ENUMDOC
5360
  Relocations used by VAX ELF.
5361
 
5362
ENUM
5363
  BFD_RELOC_MT_PC16
5364
ENUMDOC
5365
  Morpho MT - 16 bit immediate relocation.
5366
ENUM
5367
  BFD_RELOC_MT_HI16
5368
ENUMDOC
5369
  Morpho MT - Hi 16 bits of an address.
5370
ENUM
5371
  BFD_RELOC_MT_LO16
5372
ENUMDOC
5373
  Morpho MT - Low 16 bits of an address.
5374
ENUM
5375
  BFD_RELOC_MT_GNU_VTINHERIT
5376
ENUMDOC
5377
  Morpho MT - Used to tell the linker which vtable entries are used.
5378
ENUM
5379
  BFD_RELOC_MT_GNU_VTENTRY
5380
ENUMDOC
5381
  Morpho MT - Used to tell the linker which vtable entries are used.
5382
ENUM
5383
  BFD_RELOC_MT_PCINSN8
5384
ENUMDOC
5385
  Morpho MT - 8 bit immediate relocation.
5386
 
5387
ENUM
5388
  BFD_RELOC_MSP430_10_PCREL
5389
ENUMX
5390
  BFD_RELOC_MSP430_16_PCREL
5391
ENUMX
5392
  BFD_RELOC_MSP430_16
5393
ENUMX
5394
  BFD_RELOC_MSP430_16_PCREL_BYTE
5395
ENUMX
5396
  BFD_RELOC_MSP430_16_BYTE
5397
ENUMX
5398
  BFD_RELOC_MSP430_2X_PCREL
5399
ENUMX
5400
  BFD_RELOC_MSP430_RL_PCREL
5401
ENUMDOC
5402
  msp430 specific relocation codes
5403
 
5404
ENUM
5405
  BFD_RELOC_IQ2000_OFFSET_16
5406
ENUMX
5407
  BFD_RELOC_IQ2000_OFFSET_21
5408
ENUMX
5409
  BFD_RELOC_IQ2000_UHI16
5410
ENUMDOC
5411
  IQ2000 Relocations.
5412
 
5413
ENUM
5414
  BFD_RELOC_OPEN8_PCREL
5415
ENUMDOC
5416
  This is a 8 bit reloc for the Open8 that stores 8 bit pc relative
5417
  signed short offset into relative branch instructions.
5418
ENUM
5419
  BFD_RELOC_OPEN8_LO8_LDI
5420
ENUMDOC
5421
  This is an 8 bit reloc for the Open8 that stores 8 bit value (usually
5422
  data memory address) into 8 bit immediate value of LDI insn.
5423
ENUM
5424
  BFD_RELOC_OPEN8_HI8_LDI
5425
ENUMDOC
5426
  This is a 8 bit reloc for the Open8 that stores 8 bit value
5427
  (high 8 bits of data memory address) into 8 bit immediate value
5428
  of LDI insn.
5429
ENUM
5430
  BFD_RELOC_OPEN8_LO8_LDI_NEG
5431
ENUMDOC
5432
  This is an 8 bit reloc for the Open8 that stores a negated 8 bit value
5433
  (usually data memory address) into 8 bit immediate value of LDI insn.
5434
ENUM
5435
  BFD_RELOC_OPEN8_HI8_LDI_NEG
5436
ENUMDOC
5437
  This is a 8 bit reloc for the Open8 that stores negated 8 bit value
5438
  (high 8 bits of data memory address) into 8 bit immediate value of
5439
  LDI insn.
5440
ENUM
5441
  BFD_RELOC_OPEN8_CALL
5442
ENUMDOC
5443
  This is a 16 bit reloc for the Open8 that stores targets of jumps
5444
  and calls.
5445
 
5446
ENUM
5447
  BFD_RELOC_XTENSA_RTLD
5448
ENUMDOC
5449
  Special Xtensa relocation used only by PLT entries in ELF shared
5450
  objects to indicate that the runtime linker should set the value
5451
  to one of its own internal functions or data structures.
5452
ENUM
5453
  BFD_RELOC_XTENSA_GLOB_DAT
5454
ENUMX
5455
  BFD_RELOC_XTENSA_JMP_SLOT
5456
ENUMX
5457
  BFD_RELOC_XTENSA_RELATIVE
5458
ENUMDOC
5459
  Xtensa relocations for ELF shared objects.
5460
ENUM
5461
  BFD_RELOC_XTENSA_PLT
5462
ENUMDOC
5463
  Xtensa relocation used in ELF object files for symbols that may require
5464
  PLT entries.  Otherwise, this is just a generic 32-bit relocation.
5465
ENUM
5466
  BFD_RELOC_XTENSA_DIFF8
5467
ENUMX
5468
  BFD_RELOC_XTENSA_DIFF16
5469
ENUMX
5470
  BFD_RELOC_XTENSA_DIFF32
5471
ENUMDOC
5472
  Xtensa relocations to mark the difference of two local symbols.
5473
  These are only needed to support linker relaxation and can be ignored
5474
  when not relaxing.  The field is set to the value of the difference
5475
  assuming no relaxation.  The relocation encodes the position of the
5476
  first symbol so the linker can determine whether to adjust the field
5477
  value.
5478
ENUM
5479
  BFD_RELOC_XTENSA_SLOT0_OP
5480
ENUMX
5481
  BFD_RELOC_XTENSA_SLOT1_OP
5482
ENUMX
5483
  BFD_RELOC_XTENSA_SLOT2_OP
5484
ENUMX
5485
  BFD_RELOC_XTENSA_SLOT3_OP
5486
ENUMX
5487
  BFD_RELOC_XTENSA_SLOT4_OP
5488
ENUMX
5489
  BFD_RELOC_XTENSA_SLOT5_OP
5490
ENUMX
5491
  BFD_RELOC_XTENSA_SLOT6_OP
5492
ENUMX
5493
  BFD_RELOC_XTENSA_SLOT7_OP
5494
ENUMX
5495
  BFD_RELOC_XTENSA_SLOT8_OP
5496
ENUMX
5497
  BFD_RELOC_XTENSA_SLOT9_OP
5498
ENUMX
5499
  BFD_RELOC_XTENSA_SLOT10_OP
5500
ENUMX
5501
  BFD_RELOC_XTENSA_SLOT11_OP
5502
ENUMX
5503
  BFD_RELOC_XTENSA_SLOT12_OP
5504
ENUMX
5505
  BFD_RELOC_XTENSA_SLOT13_OP
5506
ENUMX
5507
  BFD_RELOC_XTENSA_SLOT14_OP
5508
ENUMDOC
5509
  Generic Xtensa relocations for instruction operands.  Only the slot
5510
  number is encoded in the relocation.  The relocation applies to the
5511
  last PC-relative immediate operand, or if there are no PC-relative
5512
  immediates, to the last immediate operand.
5513
ENUM
5514
  BFD_RELOC_XTENSA_SLOT0_ALT
5515
ENUMX
5516
  BFD_RELOC_XTENSA_SLOT1_ALT
5517
ENUMX
5518
  BFD_RELOC_XTENSA_SLOT2_ALT
5519
ENUMX
5520
  BFD_RELOC_XTENSA_SLOT3_ALT
5521
ENUMX
5522
  BFD_RELOC_XTENSA_SLOT4_ALT
5523
ENUMX
5524
  BFD_RELOC_XTENSA_SLOT5_ALT
5525
ENUMX
5526
  BFD_RELOC_XTENSA_SLOT6_ALT
5527
ENUMX
5528
  BFD_RELOC_XTENSA_SLOT7_ALT
5529
ENUMX
5530
  BFD_RELOC_XTENSA_SLOT8_ALT
5531
ENUMX
5532
  BFD_RELOC_XTENSA_SLOT9_ALT
5533
ENUMX
5534
  BFD_RELOC_XTENSA_SLOT10_ALT
5535
ENUMX
5536
  BFD_RELOC_XTENSA_SLOT11_ALT
5537
ENUMX
5538
  BFD_RELOC_XTENSA_SLOT12_ALT
5539
ENUMX
5540
  BFD_RELOC_XTENSA_SLOT13_ALT
5541
ENUMX
5542
  BFD_RELOC_XTENSA_SLOT14_ALT
5543
ENUMDOC
5544
  Alternate Xtensa relocations.  Only the slot is encoded in the
5545
  relocation.  The meaning of these relocations is opcode-specific.
5546
ENUM
5547
  BFD_RELOC_XTENSA_OP0
5548
ENUMX
5549
  BFD_RELOC_XTENSA_OP1
5550
ENUMX
5551
  BFD_RELOC_XTENSA_OP2
5552
ENUMDOC
5553
  Xtensa relocations for backward compatibility.  These have all been
5554
  replaced by BFD_RELOC_XTENSA_SLOT0_OP.
5555
ENUM
5556
  BFD_RELOC_XTENSA_ASM_EXPAND
5557
ENUMDOC
5558
  Xtensa relocation to mark that the assembler expanded the
5559
  instructions from an original target.  The expansion size is
5560
  encoded in the reloc size.
5561
ENUM
5562
  BFD_RELOC_XTENSA_ASM_SIMPLIFY
5563
ENUMDOC
5564
  Xtensa relocation to mark that the linker should simplify
5565
  assembler-expanded instructions.  This is commonly used
5566
  internally by the linker after analysis of a
5567
  BFD_RELOC_XTENSA_ASM_EXPAND.
5568
ENUM
5569
  BFD_RELOC_XTENSA_TLSDESC_FN
5570
ENUMX
5571
  BFD_RELOC_XTENSA_TLSDESC_ARG
5572
ENUMX
5573
  BFD_RELOC_XTENSA_TLS_DTPOFF
5574
ENUMX
5575
  BFD_RELOC_XTENSA_TLS_TPOFF
5576
ENUMX
5577
  BFD_RELOC_XTENSA_TLS_FUNC
5578
ENUMX
5579
  BFD_RELOC_XTENSA_TLS_ARG
5580
ENUMX
5581
  BFD_RELOC_XTENSA_TLS_CALL
5582
ENUMDOC
5583
  Xtensa TLS relocations.
5584
 
5585
ENUM
5586
  BFD_RELOC_Z80_DISP8
5587
ENUMDOC
5588
  8 bit signed offset in (ix+d) or (iy+d).
5589
 
5590
ENUM
5591
  BFD_RELOC_Z8K_DISP7
5592
ENUMDOC
5593
  DJNZ offset.
5594
ENUM
5595
  BFD_RELOC_Z8K_CALLR
5596
ENUMDOC
5597
  CALR offset.
5598
ENUM
5599
  BFD_RELOC_Z8K_IMM4L
5600
ENUMDOC
5601
  4 bit value.
5602
 
5603
ENUM
5604
   BFD_RELOC_LM32_CALL
5605
ENUMX
5606
   BFD_RELOC_LM32_BRANCH
5607
ENUMX
5608
   BFD_RELOC_LM32_16_GOT
5609
ENUMX
5610
   BFD_RELOC_LM32_GOTOFF_HI16
5611
ENUMX
5612
   BFD_RELOC_LM32_GOTOFF_LO16
5613
ENUMX
5614
   BFD_RELOC_LM32_COPY
5615
ENUMX
5616
   BFD_RELOC_LM32_GLOB_DAT
5617
ENUMX
5618
   BFD_RELOC_LM32_JMP_SLOT
5619
ENUMX
5620
   BFD_RELOC_LM32_RELATIVE
5621
ENUMDOC
5622
 Lattice Mico32 relocations.
5623
 
5624
ENUM
5625
  BFD_RELOC_MACH_O_SECTDIFF
5626
ENUMDOC
5627
  Difference between two section addreses.  Must be followed by a
5628
  BFD_RELOC_MACH_O_PAIR.
5629
ENUM
5630 166 khays
  BFD_RELOC_MACH_O_LOCAL_SECTDIFF
5631
ENUMDOC
5632
  Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.
5633
ENUM
5634 14 khays
  BFD_RELOC_MACH_O_PAIR
5635
ENUMDOC
5636
  Pair of relocation.  Contains the first symbol.
5637
 
5638
ENUM
5639
  BFD_RELOC_MACH_O_X86_64_BRANCH32
5640
ENUMX
5641
  BFD_RELOC_MACH_O_X86_64_BRANCH8
5642
ENUMDOC
5643
  PCREL relocations.  They are marked as branch to create PLT entry if
5644
  required.
5645
ENUM
5646
  BFD_RELOC_MACH_O_X86_64_GOT
5647
ENUMDOC
5648
  Used when referencing a GOT entry.
5649
ENUM
5650
  BFD_RELOC_MACH_O_X86_64_GOT_LOAD
5651
ENUMDOC
5652
  Used when loading a GOT entry with movq.  It is specially marked so that
5653
  the linker could optimize the movq to a leaq if possible.
5654
ENUM
5655
  BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32
5656
ENUMDOC
5657
  Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
5658
ENUM
5659
  BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64
5660
ENUMDOC
5661
  Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
5662
ENUM
5663
  BFD_RELOC_MACH_O_X86_64_PCREL32_1
5664
ENUMDOC
5665
  Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
5666
ENUM
5667
  BFD_RELOC_MACH_O_X86_64_PCREL32_2
5668
ENUMDOC
5669
  Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.
5670
ENUM
5671
  BFD_RELOC_MACH_O_X86_64_PCREL32_4
5672
ENUMDOC
5673
  Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
5674
 
5675
ENUM
5676
  BFD_RELOC_MICROBLAZE_32_LO
5677
ENUMDOC
5678
  This is a 32 bit reloc for the microblaze that stores the
5679
  low 16 bits of a value
5680
ENUM
5681
  BFD_RELOC_MICROBLAZE_32_LO_PCREL
5682
ENUMDOC
5683
  This is a 32 bit pc-relative reloc for the microblaze that
5684
  stores the low 16 bits of a value
5685
ENUM
5686
  BFD_RELOC_MICROBLAZE_32_ROSDA
5687
ENUMDOC
5688
  This is a 32 bit reloc for the microblaze that stores a
5689
  value relative to the read-only small data area anchor
5690
ENUM
5691
  BFD_RELOC_MICROBLAZE_32_RWSDA
5692
ENUMDOC
5693
  This is a 32 bit reloc for the microblaze that stores a
5694
  value relative to the read-write small data area anchor
5695
ENUM
5696
  BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
5697
ENUMDOC
5698
  This is a 32 bit reloc for the microblaze to handle
5699
  expressions of the form "Symbol Op Symbol"
5700
ENUM
5701
  BFD_RELOC_MICROBLAZE_64_NONE
5702
ENUMDOC
5703
  This is a 64 bit reloc that stores the 32 bit pc relative
5704
  value in two words (with an imm instruction).  No relocation is
5705
  done here - only used for relaxing
5706
ENUM
5707
  BFD_RELOC_MICROBLAZE_64_GOTPC
5708
ENUMDOC
5709
  This is a 64 bit reloc that stores the 32 bit pc relative
5710
  value in two words (with an imm instruction).  The relocation is
5711
  PC-relative GOT offset
5712
ENUM
5713
  BFD_RELOC_MICROBLAZE_64_GOT
5714
ENUMDOC
5715
  This is a 64 bit reloc that stores the 32 bit pc relative
5716
  value in two words (with an imm instruction).  The relocation is
5717
  GOT offset
5718
ENUM
5719
  BFD_RELOC_MICROBLAZE_64_PLT
5720
ENUMDOC
5721
  This is a 64 bit reloc that stores the 32 bit pc relative
5722
  value in two words (with an imm instruction).  The relocation is
5723
  PC-relative offset into PLT
5724
ENUM
5725
  BFD_RELOC_MICROBLAZE_64_GOTOFF
5726
ENUMDOC
5727
  This is a 64 bit reloc that stores the 32 bit GOT relative
5728
  value in two words (with an imm instruction).  The relocation is
5729
  relative offset from _GLOBAL_OFFSET_TABLE_
5730
ENUM
5731
  BFD_RELOC_MICROBLAZE_32_GOTOFF
5732
ENUMDOC
5733
  This is a 32 bit reloc that stores the 32 bit GOT relative
5734
  value in a word.  The relocation is relative offset from
5735
  _GLOBAL_OFFSET_TABLE_
5736
ENUM
5737
  BFD_RELOC_MICROBLAZE_COPY
5738
ENUMDOC
5739
  This is used to tell the dynamic linker to copy the value out of
5740
  the dynamic object into the runtime process image.
5741
 
5742 148 khays
ENUM
5743
  BFD_RELOC_TILEPRO_COPY
5744
ENUMX
5745
  BFD_RELOC_TILEPRO_GLOB_DAT
5746
ENUMX
5747
  BFD_RELOC_TILEPRO_JMP_SLOT
5748
ENUMX
5749
  BFD_RELOC_TILEPRO_RELATIVE
5750
ENUMX
5751
  BFD_RELOC_TILEPRO_BROFF_X1
5752
ENUMX
5753
  BFD_RELOC_TILEPRO_JOFFLONG_X1
5754
ENUMX
5755
  BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT
5756
ENUMX
5757
  BFD_RELOC_TILEPRO_IMM8_X0
5758
ENUMX
5759
  BFD_RELOC_TILEPRO_IMM8_Y0
5760
ENUMX
5761
  BFD_RELOC_TILEPRO_IMM8_X1
5762
ENUMX
5763
  BFD_RELOC_TILEPRO_IMM8_Y1
5764
ENUMX
5765
  BFD_RELOC_TILEPRO_DEST_IMM8_X1
5766
ENUMX
5767
  BFD_RELOC_TILEPRO_MT_IMM15_X1
5768
ENUMX
5769
  BFD_RELOC_TILEPRO_MF_IMM15_X1
5770
ENUMX
5771
  BFD_RELOC_TILEPRO_IMM16_X0
5772
ENUMX
5773
  BFD_RELOC_TILEPRO_IMM16_X1
5774
ENUMX
5775
  BFD_RELOC_TILEPRO_IMM16_X0_LO
5776
ENUMX
5777
  BFD_RELOC_TILEPRO_IMM16_X1_LO
5778
ENUMX
5779
  BFD_RELOC_TILEPRO_IMM16_X0_HI
5780
ENUMX
5781
  BFD_RELOC_TILEPRO_IMM16_X1_HI
5782
ENUMX
5783
  BFD_RELOC_TILEPRO_IMM16_X0_HA
5784
ENUMX
5785
  BFD_RELOC_TILEPRO_IMM16_X1_HA
5786
ENUMX
5787
  BFD_RELOC_TILEPRO_IMM16_X0_PCREL
5788
ENUMX
5789
  BFD_RELOC_TILEPRO_IMM16_X1_PCREL
5790
ENUMX
5791
  BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL
5792
ENUMX
5793
  BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL
5794
ENUMX
5795
  BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL
5796
ENUMX
5797
  BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL
5798
ENUMX
5799
  BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL
5800
ENUMX
5801
  BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL
5802
ENUMX
5803
  BFD_RELOC_TILEPRO_IMM16_X0_GOT
5804
ENUMX
5805
  BFD_RELOC_TILEPRO_IMM16_X1_GOT
5806
ENUMX
5807
  BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO
5808
ENUMX
5809
  BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO
5810
ENUMX
5811
  BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI
5812
ENUMX
5813
  BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI
5814
ENUMX
5815
  BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA
5816
ENUMX
5817
  BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA
5818
ENUMX
5819
  BFD_RELOC_TILEPRO_MMSTART_X0
5820
ENUMX
5821
  BFD_RELOC_TILEPRO_MMEND_X0
5822
ENUMX
5823
  BFD_RELOC_TILEPRO_MMSTART_X1
5824
ENUMX
5825
  BFD_RELOC_TILEPRO_MMEND_X1
5826
ENUMX
5827
  BFD_RELOC_TILEPRO_SHAMT_X0
5828
ENUMX
5829
  BFD_RELOC_TILEPRO_SHAMT_X1
5830
ENUMX
5831
  BFD_RELOC_TILEPRO_SHAMT_Y0
5832
ENUMX
5833
  BFD_RELOC_TILEPRO_SHAMT_Y1
5834
ENUMX
5835 166 khays
  BFD_RELOC_TILEPRO_TLS_GD_CALL
5836
ENUMX
5837
  BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD
5838
ENUMX
5839
  BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD
5840
ENUMX
5841
  BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD
5842
ENUMX
5843
  BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD
5844
ENUMX
5845
  BFD_RELOC_TILEPRO_TLS_IE_LOAD
5846
ENUMX
5847 148 khays
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD
5848
ENUMX
5849
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD
5850
ENUMX
5851
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO
5852
ENUMX
5853
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO
5854
ENUMX
5855
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI
5856
ENUMX
5857
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI
5858
ENUMX
5859
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA
5860
ENUMX
5861
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA
5862
ENUMX
5863
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE
5864
ENUMX
5865
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE
5866
ENUMX
5867
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO
5868
ENUMX
5869
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO
5870
ENUMX
5871
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI
5872
ENUMX
5873
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI
5874
ENUMX
5875
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA
5876
ENUMX
5877
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA
5878
ENUMX
5879
  BFD_RELOC_TILEPRO_TLS_DTPMOD32
5880
ENUMX
5881
  BFD_RELOC_TILEPRO_TLS_DTPOFF32
5882
ENUMX
5883
  BFD_RELOC_TILEPRO_TLS_TPOFF32
5884 166 khays
ENUMX
5885
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE
5886
ENUMX
5887
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE
5888
ENUMX
5889
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO
5890
ENUMX
5891
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO
5892
ENUMX
5893
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI
5894
ENUMX
5895
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI
5896
ENUMX
5897
  BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA
5898
ENUMX
5899
  BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA
5900 148 khays
ENUMDOC
5901
  Tilera TILEPro Relocations.
5902 14 khays
 
5903 148 khays
ENUM
5904
  BFD_RELOC_TILEGX_HW0
5905
ENUMX
5906
  BFD_RELOC_TILEGX_HW1
5907
ENUMX
5908
  BFD_RELOC_TILEGX_HW2
5909
ENUMX
5910
  BFD_RELOC_TILEGX_HW3
5911
ENUMX
5912
  BFD_RELOC_TILEGX_HW0_LAST
5913
ENUMX
5914
  BFD_RELOC_TILEGX_HW1_LAST
5915
ENUMX
5916
  BFD_RELOC_TILEGX_HW2_LAST
5917
ENUMX
5918
  BFD_RELOC_TILEGX_COPY
5919
ENUMX
5920
  BFD_RELOC_TILEGX_GLOB_DAT
5921
ENUMX
5922
  BFD_RELOC_TILEGX_JMP_SLOT
5923
ENUMX
5924
  BFD_RELOC_TILEGX_RELATIVE
5925
ENUMX
5926
  BFD_RELOC_TILEGX_BROFF_X1
5927
ENUMX
5928
  BFD_RELOC_TILEGX_JUMPOFF_X1
5929
ENUMX
5930
  BFD_RELOC_TILEGX_JUMPOFF_X1_PLT
5931
ENUMX
5932
  BFD_RELOC_TILEGX_IMM8_X0
5933
ENUMX
5934
  BFD_RELOC_TILEGX_IMM8_Y0
5935
ENUMX
5936
  BFD_RELOC_TILEGX_IMM8_X1
5937
ENUMX
5938
  BFD_RELOC_TILEGX_IMM8_Y1
5939
ENUMX
5940
  BFD_RELOC_TILEGX_DEST_IMM8_X1
5941
ENUMX
5942
  BFD_RELOC_TILEGX_MT_IMM14_X1
5943
ENUMX
5944
  BFD_RELOC_TILEGX_MF_IMM14_X1
5945
ENUMX
5946
  BFD_RELOC_TILEGX_MMSTART_X0
5947
ENUMX
5948
  BFD_RELOC_TILEGX_MMEND_X0
5949
ENUMX
5950
  BFD_RELOC_TILEGX_SHAMT_X0
5951
ENUMX
5952
  BFD_RELOC_TILEGX_SHAMT_X1
5953
ENUMX
5954
  BFD_RELOC_TILEGX_SHAMT_Y0
5955
ENUMX
5956
  BFD_RELOC_TILEGX_SHAMT_Y1
5957
ENUMX
5958
  BFD_RELOC_TILEGX_IMM16_X0_HW0
5959
ENUMX
5960
  BFD_RELOC_TILEGX_IMM16_X1_HW0
5961
ENUMX
5962
  BFD_RELOC_TILEGX_IMM16_X0_HW1
5963
ENUMX
5964
  BFD_RELOC_TILEGX_IMM16_X1_HW1
5965
ENUMX
5966
  BFD_RELOC_TILEGX_IMM16_X0_HW2
5967
ENUMX
5968
  BFD_RELOC_TILEGX_IMM16_X1_HW2
5969
ENUMX
5970
  BFD_RELOC_TILEGX_IMM16_X0_HW3
5971
ENUMX
5972
  BFD_RELOC_TILEGX_IMM16_X1_HW3
5973
ENUMX
5974
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST
5975
ENUMX
5976
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST
5977
ENUMX
5978
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST
5979
ENUMX
5980
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST
5981
ENUMX
5982
  BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST
5983
ENUMX
5984
  BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST
5985
ENUMX
5986
  BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL
5987
ENUMX
5988
  BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL
5989
ENUMX
5990
  BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL
5991
ENUMX
5992
  BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL
5993
ENUMX
5994
  BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL
5995
ENUMX
5996
  BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL
5997
ENUMX
5998
  BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL
5999
ENUMX
6000
  BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL
6001
ENUMX
6002
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL
6003
ENUMX
6004
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL
6005
ENUMX
6006
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL
6007
ENUMX
6008
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL
6009
ENUMX
6010
  BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL
6011
ENUMX
6012
  BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL
6013
ENUMX
6014
  BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT
6015
ENUMX
6016
  BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT
6017
ENUMX
6018
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT
6019
ENUMX
6020
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT
6021
ENUMX
6022
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT
6023
ENUMX
6024
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT
6025
ENUMX
6026
  BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD
6027
ENUMX
6028
  BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD
6029
ENUMX
6030 166 khays
  BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE
6031 148 khays
ENUMX
6032 166 khays
  BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE
6033 148 khays
ENUMX
6034 166 khays
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE
6035 148 khays
ENUMX
6036 166 khays
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE
6037 148 khays
ENUMX
6038 166 khays
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE
6039 148 khays
ENUMX
6040 166 khays
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE
6041 148 khays
ENUMX
6042
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD
6043
ENUMX
6044
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD
6045
ENUMX
6046
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD
6047
ENUMX
6048
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD
6049
ENUMX
6050
  BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE
6051
ENUMX
6052
  BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE
6053
ENUMX
6054
  BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE
6055
ENUMX
6056
  BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE
6057
ENUMX
6058
  BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE
6059
ENUMX
6060
  BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE
6061
ENUMX
6062
  BFD_RELOC_TILEGX_TLS_DTPMOD64
6063
ENUMX
6064
  BFD_RELOC_TILEGX_TLS_DTPOFF64
6065
ENUMX
6066
  BFD_RELOC_TILEGX_TLS_TPOFF64
6067
ENUMX
6068
  BFD_RELOC_TILEGX_TLS_DTPMOD32
6069
ENUMX
6070
  BFD_RELOC_TILEGX_TLS_DTPOFF32
6071
ENUMX
6072
  BFD_RELOC_TILEGX_TLS_TPOFF32
6073 166 khays
ENUMX
6074
  BFD_RELOC_TILEGX_TLS_GD_CALL
6075
ENUMX
6076
  BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD
6077
ENUMX
6078
  BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD
6079
ENUMX
6080
  BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD
6081
ENUMX
6082
  BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD
6083
ENUMX
6084
  BFD_RELOC_TILEGX_TLS_IE_LOAD
6085
ENUMX
6086
  BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD
6087
ENUMX
6088
  BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD
6089
ENUMX
6090
  BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD
6091
ENUMX
6092
  BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
6093 148 khays
ENUMDOC
6094
  Tilera TILE-Gx Relocations.
6095
 
6096 163 khays
ENUM
6097
  BFD_RELOC_EPIPHANY_SIMM8
6098
ENUMDOC
6099
  Adapteva EPIPHANY - 8 bit signed pc-relative displacement
6100
ENUM
6101
  BFD_RELOC_EPIPHANY_SIMM24
6102
ENUMDOC
6103
  Adapteva EPIPHANY - 24 bit signed pc-relative displacement
6104
ENUM
6105
  BFD_RELOC_EPIPHANY_HIGH
6106
ENUMDOC
6107
  Adapteva EPIPHANY - 16 most-significant bits of absolute address
6108
ENUM
6109
  BFD_RELOC_EPIPHANY_LOW
6110
ENUMDOC
6111
  Adapteva EPIPHANY - 16 least-significant bits of absolute address
6112
ENUM
6113
  BFD_RELOC_EPIPHANY_SIMM11
6114
ENUMDOC
6115
  Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
6116
ENUM
6117
  BFD_RELOC_EPIPHANY_IMM11
6118
ENUMDOC
6119
  Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)
6120
ENUM
6121
  BFD_RELOC_EPIPHANY_IMM8
6122
ENUMDOC
6123
  Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
6124 148 khays
 
6125 163 khays
 
6126 14 khays
ENDSENUM
6127
  BFD_RELOC_UNUSED
6128
CODE_FRAGMENT
6129
.
6130
.typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
6131
*/
6132
 
6133
/*
6134
FUNCTION
6135
        bfd_reloc_type_lookup
6136
        bfd_reloc_name_lookup
6137
 
6138
SYNOPSIS
6139
        reloc_howto_type *bfd_reloc_type_lookup
6140
          (bfd *abfd, bfd_reloc_code_real_type code);
6141
        reloc_howto_type *bfd_reloc_name_lookup
6142
          (bfd *abfd, const char *reloc_name);
6143
 
6144
DESCRIPTION
6145
        Return a pointer to a howto structure which, when
6146
        invoked, will perform the relocation @var{code} on data from the
6147
        architecture noted.
6148
 
6149
*/
6150
 
6151
reloc_howto_type *
6152
bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
6153
{
6154
  return BFD_SEND (abfd, reloc_type_lookup, (abfd, code));
6155
}
6156
 
6157
reloc_howto_type *
6158
bfd_reloc_name_lookup (bfd *abfd, const char *reloc_name)
6159
{
6160
  return BFD_SEND (abfd, reloc_name_lookup, (abfd, reloc_name));
6161
}
6162
 
6163
static reloc_howto_type bfd_howto_32 =
6164
HOWTO (0, 00, 2, 32, FALSE, 0, complain_overflow_dont, 0, "VRT32", FALSE, 0xffffffff, 0xffffffff, TRUE);
6165
 
6166
/*
6167
INTERNAL_FUNCTION
6168
        bfd_default_reloc_type_lookup
6169
 
6170
SYNOPSIS
6171
        reloc_howto_type *bfd_default_reloc_type_lookup
6172
          (bfd *abfd, bfd_reloc_code_real_type  code);
6173
 
6174
DESCRIPTION
6175
        Provides a default relocation lookup routine for any architecture.
6176
 
6177
*/
6178
 
6179
reloc_howto_type *
6180
bfd_default_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
6181
{
6182
  switch (code)
6183
    {
6184
    case BFD_RELOC_CTOR:
6185
      /* The type of reloc used in a ctor, which will be as wide as the
6186
         address - so either a 64, 32, or 16 bitter.  */
6187
      switch (bfd_arch_bits_per_address (abfd))
6188
        {
6189
        case 64:
6190
          BFD_FAIL ();
6191
        case 32:
6192
          return &bfd_howto_32;
6193
        case 16:
6194
          BFD_FAIL ();
6195
        default:
6196
          BFD_FAIL ();
6197
        }
6198
    default:
6199
      BFD_FAIL ();
6200
    }
6201
  return NULL;
6202
}
6203
 
6204
/*
6205
FUNCTION
6206
        bfd_get_reloc_code_name
6207
 
6208
SYNOPSIS
6209
        const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
6210
 
6211
DESCRIPTION
6212
        Provides a printable name for the supplied relocation code.
6213
        Useful mainly for printing error messages.
6214
*/
6215
 
6216
const char *
6217
bfd_get_reloc_code_name (bfd_reloc_code_real_type code)
6218
{
6219
  if (code > BFD_RELOC_UNUSED)
6220
    return 0;
6221
  return bfd_reloc_code_real_names[code];
6222
}
6223
 
6224
/*
6225
INTERNAL_FUNCTION
6226
        bfd_generic_relax_section
6227
 
6228
SYNOPSIS
6229
        bfd_boolean bfd_generic_relax_section
6230
          (bfd *abfd,
6231
           asection *section,
6232
           struct bfd_link_info *,
6233
           bfd_boolean *);
6234
 
6235
DESCRIPTION
6236
        Provides default handling for relaxing for back ends which
6237
        don't do relaxing.
6238
*/
6239
 
6240
bfd_boolean
6241
bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
6242
                           asection *section ATTRIBUTE_UNUSED,
6243
                           struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
6244
                           bfd_boolean *again)
6245
{
6246
  if (link_info->relocatable)
6247
    (*link_info->callbacks->einfo)
6248
      (_("%P%F: --relax and -r may not be used together\n"));
6249
 
6250
  *again = FALSE;
6251
  return TRUE;
6252
}
6253
 
6254
/*
6255
INTERNAL_FUNCTION
6256
        bfd_generic_gc_sections
6257
 
6258
SYNOPSIS
6259
        bfd_boolean bfd_generic_gc_sections
6260
          (bfd *, struct bfd_link_info *);
6261
 
6262
DESCRIPTION
6263
        Provides default handling for relaxing for back ends which
6264
        don't do section gc -- i.e., does nothing.
6265
*/
6266
 
6267
bfd_boolean
6268
bfd_generic_gc_sections (bfd *abfd ATTRIBUTE_UNUSED,
6269
                         struct bfd_link_info *info ATTRIBUTE_UNUSED)
6270
{
6271
  return TRUE;
6272
}
6273
 
6274
/*
6275
INTERNAL_FUNCTION
6276 161 khays
        bfd_generic_lookup_section_flags
6277
 
6278
SYNOPSIS
6279
        void bfd_generic_lookup_section_flags
6280
          (struct bfd_link_info *, struct flag_info *);
6281
 
6282
DESCRIPTION
6283
        Provides default handling for section flags lookup
6284
        -- i.e., does nothing.
6285
*/
6286
 
6287
void
6288
bfd_generic_lookup_section_flags (struct bfd_link_info *info ATTRIBUTE_UNUSED,
6289 166 khays
                                  struct flag_info *flaginfo)
6290 161 khays
{
6291 166 khays
  if (flaginfo != NULL)
6292 161 khays
    {
6293
      (*_bfd_error_handler) (_("INPUT_SECTION_FLAGS are not supported.\n"));
6294
      return;
6295
    }
6296
}
6297
 
6298
/*
6299
INTERNAL_FUNCTION
6300 14 khays
        bfd_generic_merge_sections
6301
 
6302
SYNOPSIS
6303
        bfd_boolean bfd_generic_merge_sections
6304
          (bfd *, struct bfd_link_info *);
6305
 
6306
DESCRIPTION
6307
        Provides default handling for SEC_MERGE section merging for back ends
6308
        which don't have SEC_MERGE support -- i.e., does nothing.
6309
*/
6310
 
6311
bfd_boolean
6312
bfd_generic_merge_sections (bfd *abfd ATTRIBUTE_UNUSED,
6313
                            struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
6314
{
6315
  return TRUE;
6316
}
6317
 
6318
/*
6319
INTERNAL_FUNCTION
6320
        bfd_generic_get_relocated_section_contents
6321
 
6322
SYNOPSIS
6323
        bfd_byte *bfd_generic_get_relocated_section_contents
6324
          (bfd *abfd,
6325
           struct bfd_link_info *link_info,
6326
           struct bfd_link_order *link_order,
6327
           bfd_byte *data,
6328
           bfd_boolean relocatable,
6329
           asymbol **symbols);
6330
 
6331
DESCRIPTION
6332
        Provides default handling of relocation effort for back ends
6333
        which can't be bothered to do it efficiently.
6334
 
6335
*/
6336
 
6337
bfd_byte *
6338
bfd_generic_get_relocated_section_contents (bfd *abfd,
6339
                                            struct bfd_link_info *link_info,
6340
                                            struct bfd_link_order *link_order,
6341
                                            bfd_byte *data,
6342
                                            bfd_boolean relocatable,
6343
                                            asymbol **symbols)
6344
{
6345
  bfd *input_bfd = link_order->u.indirect.section->owner;
6346
  asection *input_section = link_order->u.indirect.section;
6347
  long reloc_size;
6348
  arelent **reloc_vector;
6349
  long reloc_count;
6350
 
6351
  reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
6352
  if (reloc_size < 0)
6353
    return NULL;
6354
 
6355
  /* Read in the section.  */
6356
  if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
6357
    return NULL;
6358
 
6359
  if (reloc_size == 0)
6360
    return data;
6361
 
6362
  reloc_vector = (arelent **) bfd_malloc (reloc_size);
6363
  if (reloc_vector == NULL)
6364
    return NULL;
6365
 
6366
  reloc_count = bfd_canonicalize_reloc (input_bfd,
6367
                                        input_section,
6368
                                        reloc_vector,
6369
                                        symbols);
6370
  if (reloc_count < 0)
6371
    goto error_return;
6372
 
6373
  if (reloc_count > 0)
6374
    {
6375
      arelent **parent;
6376
      for (parent = reloc_vector; *parent != NULL; parent++)
6377
        {
6378
          char *error_message = NULL;
6379
          asymbol *symbol;
6380
          bfd_reloc_status_type r;
6381
 
6382
          symbol = *(*parent)->sym_ptr_ptr;
6383
          if (symbol->section && elf_discarded_section (symbol->section))
6384
            {
6385
              bfd_byte *p;
6386
              static reloc_howto_type none_howto
6387
                = HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL,
6388
                         "unused", FALSE, 0, 0, FALSE);
6389
 
6390
              p = data + (*parent)->address * bfd_octets_per_byte (input_bfd);
6391
              _bfd_clear_contents ((*parent)->howto, input_bfd, input_section,
6392
                                   p);
6393
              (*parent)->sym_ptr_ptr = bfd_abs_section.symbol_ptr_ptr;
6394
              (*parent)->addend = 0;
6395
              (*parent)->howto = &none_howto;
6396
              r = bfd_reloc_ok;
6397
            }
6398
          else
6399
            r = bfd_perform_relocation (input_bfd,
6400
                                        *parent,
6401
                                        data,
6402
                                        input_section,
6403
                                        relocatable ? abfd : NULL,
6404
                                        &error_message);
6405
 
6406
          if (relocatable)
6407
            {
6408
              asection *os = input_section->output_section;
6409
 
6410
              /* A partial link, so keep the relocs.  */
6411
              os->orelocation[os->reloc_count] = *parent;
6412
              os->reloc_count++;
6413
            }
6414
 
6415
          if (r != bfd_reloc_ok)
6416
            {
6417
              switch (r)
6418
                {
6419
                case bfd_reloc_undefined:
6420
                  if (!((*link_info->callbacks->undefined_symbol)
6421
                        (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
6422
                         input_bfd, input_section, (*parent)->address,
6423
                         TRUE)))
6424
                    goto error_return;
6425
                  break;
6426
                case bfd_reloc_dangerous:
6427
                  BFD_ASSERT (error_message != NULL);
6428
                  if (!((*link_info->callbacks->reloc_dangerous)
6429
                        (link_info, error_message, input_bfd, input_section,
6430
                         (*parent)->address)))
6431
                    goto error_return;
6432
                  break;
6433
                case bfd_reloc_overflow:
6434
                  if (!((*link_info->callbacks->reloc_overflow)
6435
                        (link_info, NULL,
6436
                         bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
6437
                         (*parent)->howto->name, (*parent)->addend,
6438
                         input_bfd, input_section, (*parent)->address)))
6439
                    goto error_return;
6440
                  break;
6441
                case bfd_reloc_outofrange:
6442 166 khays
                  /* PR ld/13730:
6443
                     This error can result when processing some partially
6444
                     complete binaries.  Do not abort, but issue an error
6445
                     message instead.  */
6446
                  link_info->callbacks->einfo
6447
                    (_("%X%P: %B(%A): relocation \"%R\" goes out of range\n"),
6448
                     abfd, input_section, * parent);
6449
                  goto error_return;
6450
 
6451 14 khays
                default:
6452
                  abort ();
6453
                  break;
6454
                }
6455
 
6456
            }
6457
        }
6458
    }
6459
 
6460
  free (reloc_vector);
6461
  return data;
6462
 
6463
error_return:
6464
  free (reloc_vector);
6465
  return NULL;
6466
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.