1
/* Copyright 2006, 2007, 2010 Free Software Foundation, Inc.
3
This file is part of BFD, the Binary File Descriptor library.
5
This program is free software; you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation; either version 3 of the License, or
8
(at your option) any later version.
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
GNU General Public License for more details.
15
You should have received a copy of the GNU General Public License
16
along with this program; if not, write to the Free Software
17
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
18
MA 02110-1301, USA. */
21
HOWTO (R_SH_NONE, /* type */
23
0, /* size (0 = byte, 1 = short, 2 = long) */
25
FALSE, /* pc_relative */
27
complain_overflow_dont, /* complain_on_overflow */
28
sh_elf_ignore_reloc, /* special_function */
29
"R_SH_NONE", /* name */
30
FALSE, /* partial_inplace */
33
FALSE), /* pcrel_offset */
35
/* 32 bit absolute relocation. Setting partial_inplace to TRUE and
36
src_mask to a non-zero value is similar to the COFF toolchain. */
37
HOWTO (R_SH_DIR32, /* type */
39
2, /* size (0 = byte, 1 = short, 2 = long) */
41
FALSE, /* pc_relative */
43
complain_overflow_bitfield, /* complain_on_overflow */
44
SH_ELF_RELOC, /* special_function */
45
"R_SH_DIR32", /* name */
46
SH_PARTIAL32, /* partial_inplace */
47
SH_SRC_MASK32, /* src_mask */
48
0xffffffff, /* dst_mask */
49
FALSE), /* pcrel_offset */
51
/* 32 bit PC relative relocation. */
52
HOWTO (R_SH_REL32, /* type */
54
2, /* size (0 = byte, 1 = short, 2 = long) */
56
TRUE, /* pc_relative */
58
complain_overflow_signed, /* complain_on_overflow */
59
sh_elf_ignore_reloc, /* special_function */
60
"R_SH_REL32", /* name */
61
SH_PARTIAL32, /* partial_inplace */
62
SH_SRC_MASK32, /* src_mask */
63
0xffffffff, /* dst_mask */
64
TRUE), /* pcrel_offset */
66
/* 8 bit PC relative branch divided by 2. */
67
HOWTO (R_SH_DIR8WPN, /* type */
69
1, /* size (0 = byte, 1 = short, 2 = long) */
71
TRUE, /* pc_relative */
73
complain_overflow_signed, /* complain_on_overflow */
74
sh_elf_ignore_reloc, /* special_function */
75
"R_SH_DIR8WPN", /* name */
76
TRUE, /* partial_inplace */
79
TRUE), /* pcrel_offset */
81
/* 12 bit PC relative branch divided by 2. */
82
/* This cannot be partial_inplace because relaxation can't know the
83
eventual value of a symbol. */
84
HOWTO (R_SH_IND12W, /* type */
86
1, /* size (0 = byte, 1 = short, 2 = long) */
88
TRUE, /* pc_relative */
90
complain_overflow_signed, /* complain_on_overflow */
91
NULL, /* special_function */
92
"R_SH_IND12W", /* name */
93
FALSE, /* partial_inplace */
96
TRUE), /* pcrel_offset */
98
/* 8 bit unsigned PC relative divided by 4. */
99
HOWTO (R_SH_DIR8WPL, /* type */
101
1, /* size (0 = byte, 1 = short, 2 = long) */
103
TRUE, /* pc_relative */
105
complain_overflow_unsigned, /* complain_on_overflow */
106
sh_elf_ignore_reloc, /* special_function */
107
"R_SH_DIR8WPL", /* name */
108
TRUE, /* partial_inplace */
111
TRUE), /* pcrel_offset */
113
/* 8 bit unsigned PC relative divided by 2. */
114
HOWTO (R_SH_DIR8WPZ, /* type */
116
1, /* size (0 = byte, 1 = short, 2 = long) */
118
TRUE, /* pc_relative */
120
complain_overflow_unsigned, /* complain_on_overflow */
121
sh_elf_ignore_reloc, /* special_function */
122
"R_SH_DIR8WPZ", /* name */
123
TRUE, /* partial_inplace */
126
TRUE), /* pcrel_offset */
128
/* 8 bit GBR relative. FIXME: This only makes sense if we have some
129
special symbol for the GBR relative area, and that is not
131
HOWTO (R_SH_DIR8BP, /* type */
133
1, /* size (0 = byte, 1 = short, 2 = long) */
135
FALSE, /* pc_relative */
137
complain_overflow_unsigned, /* complain_on_overflow */
138
sh_elf_ignore_reloc, /* special_function */
139
"R_SH_DIR8BP", /* name */
140
FALSE, /* partial_inplace */
143
TRUE), /* pcrel_offset */
145
/* 8 bit GBR relative divided by 2. FIXME: This only makes sense if
146
we have some special symbol for the GBR relative area, and that
147
is not implemented. */
148
HOWTO (R_SH_DIR8W, /* type */
150
1, /* size (0 = byte, 1 = short, 2 = long) */
152
FALSE, /* pc_relative */
154
complain_overflow_unsigned, /* complain_on_overflow */
155
sh_elf_ignore_reloc, /* special_function */
156
"R_SH_DIR8W", /* name */
157
FALSE, /* partial_inplace */
160
TRUE), /* pcrel_offset */
162
/* 8 bit GBR relative divided by 4. FIXME: This only makes sense if
163
we have some special symbol for the GBR relative area, and that
164
is not implemented. */
165
HOWTO (R_SH_DIR8L, /* type */
167
1, /* size (0 = byte, 1 = short, 2 = long) */
169
FALSE, /* pc_relative */
171
complain_overflow_unsigned, /* complain_on_overflow */
172
sh_elf_ignore_reloc, /* special_function */
173
"R_SH_DIR8L", /* name */
174
FALSE, /* partial_inplace */
177
TRUE), /* pcrel_offset */
179
/* 8 bit PC relative divided by 2 - but specified in a very odd way. */
180
HOWTO (R_SH_LOOP_START, /* type */
182
1, /* size (0 = byte, 1 = short, 2 = long) */
184
FALSE, /* pc_relative */
186
complain_overflow_signed, /* complain_on_overflow */
187
sh_elf_ignore_reloc, /* special_function */
188
"R_SH_LOOP_START", /* name */
189
TRUE, /* partial_inplace */
192
TRUE), /* pcrel_offset */
194
/* 8 bit PC relative divided by 2 - but specified in a very odd way. */
195
HOWTO (R_SH_LOOP_END, /* type */
197
1, /* size (0 = byte, 1 = short, 2 = long) */
199
FALSE, /* pc_relative */
201
complain_overflow_signed, /* complain_on_overflow */
202
sh_elf_ignore_reloc, /* special_function */
203
"R_SH_LOOP_END", /* name */
204
TRUE, /* partial_inplace */
207
TRUE), /* pcrel_offset */
220
/* The remaining relocs are a GNU extension used for relaxing. The
221
final pass of the linker never needs to do anything with any of
222
these relocs. Any required operations are handled by the
225
/* GNU extension to record C++ vtable hierarchy */
226
HOWTO (R_SH_GNU_VTINHERIT, /* type */
228
2, /* size (0 = byte, 1 = short, 2 = long) */
230
FALSE, /* pc_relative */
232
complain_overflow_dont, /* complain_on_overflow */
233
NULL, /* special_function */
234
"R_SH_GNU_VTINHERIT", /* name */
235
FALSE, /* partial_inplace */
238
FALSE), /* pcrel_offset */
240
/* GNU extension to record C++ vtable member usage */
241
HOWTO (R_SH_GNU_VTENTRY, /* type */
243
2, /* size (0 = byte, 1 = short, 2 = long) */
245
FALSE, /* pc_relative */
247
complain_overflow_dont, /* complain_on_overflow */
248
_bfd_elf_rel_vtable_reloc_fn, /* special_function */
249
"R_SH_GNU_VTENTRY", /* name */
250
FALSE, /* partial_inplace */
253
FALSE), /* pcrel_offset */
255
/* An 8 bit switch table entry. This is generated for an expression
256
such as ``.word L1 - L2''. The offset holds the difference
257
between the reloc address and L2. */
258
HOWTO (R_SH_SWITCH8, /* type */
260
0, /* size (0 = byte, 1 = short, 2 = long) */
262
FALSE, /* pc_relative */
264
complain_overflow_unsigned, /* complain_on_overflow */
265
sh_elf_ignore_reloc, /* special_function */
266
"R_SH_SWITCH8", /* name */
267
FALSE, /* partial_inplace */
270
TRUE), /* pcrel_offset */
272
/* A 16 bit switch table entry. This is generated for an expression
273
such as ``.word L1 - L2''. The offset holds the difference
274
between the reloc address and L2. */
275
HOWTO (R_SH_SWITCH16, /* type */
277
1, /* size (0 = byte, 1 = short, 2 = long) */
279
FALSE, /* pc_relative */
281
complain_overflow_unsigned, /* complain_on_overflow */
282
sh_elf_ignore_reloc, /* special_function */
283
"R_SH_SWITCH16", /* name */
284
FALSE, /* partial_inplace */
287
TRUE), /* pcrel_offset */
289
/* A 32 bit switch table entry. This is generated for an expression
290
such as ``.long L1 - L2''. The offset holds the difference
291
between the reloc address and L2. */
292
HOWTO (R_SH_SWITCH32, /* type */
294
2, /* size (0 = byte, 1 = short, 2 = long) */
296
FALSE, /* pc_relative */
298
complain_overflow_unsigned, /* complain_on_overflow */
299
sh_elf_ignore_reloc, /* special_function */
300
"R_SH_SWITCH32", /* name */
301
FALSE, /* partial_inplace */
304
TRUE), /* pcrel_offset */
306
/* Indicates a .uses pseudo-op. The compiler will generate .uses
307
pseudo-ops when it finds a function call which can be relaxed.
308
The offset field holds the PC relative offset to the instruction
309
which loads the register used in the function call. */
310
HOWTO (R_SH_USES, /* type */
312
1, /* size (0 = byte, 1 = short, 2 = long) */
314
FALSE, /* pc_relative */
316
complain_overflow_unsigned, /* complain_on_overflow */
317
sh_elf_ignore_reloc, /* special_function */
318
"R_SH_USES", /* name */
319
FALSE, /* partial_inplace */
322
TRUE), /* pcrel_offset */
324
/* The assembler will generate this reloc for addresses referred to
325
by the register loads associated with USES relocs. The offset
326
field holds the number of times the address is referenced in the
328
HOWTO (R_SH_COUNT, /* type */
330
1, /* size (0 = byte, 1 = short, 2 = long) */
332
FALSE, /* pc_relative */
334
complain_overflow_unsigned, /* complain_on_overflow */
335
sh_elf_ignore_reloc, /* special_function */
336
"R_SH_COUNT", /* name */
337
FALSE, /* partial_inplace */
340
TRUE), /* pcrel_offset */
342
/* Indicates an alignment statement. The offset field is the power
343
of 2 to which subsequent portions of the object file must be
345
HOWTO (R_SH_ALIGN, /* type */
347
1, /* size (0 = byte, 1 = short, 2 = long) */
349
FALSE, /* pc_relative */
351
complain_overflow_unsigned, /* complain_on_overflow */
352
sh_elf_ignore_reloc, /* special_function */
353
"R_SH_ALIGN", /* name */
354
FALSE, /* partial_inplace */
357
TRUE), /* pcrel_offset */
359
/* The assembler will generate this reloc before a block of
360
instructions. A section should be processed as assuming it
361
contains data, unless this reloc is seen. */
362
HOWTO (R_SH_CODE, /* type */
364
1, /* size (0 = byte, 1 = short, 2 = long) */
366
FALSE, /* pc_relative */
368
complain_overflow_unsigned, /* complain_on_overflow */
369
sh_elf_ignore_reloc, /* special_function */
370
"R_SH_CODE", /* name */
371
FALSE, /* partial_inplace */
374
TRUE), /* pcrel_offset */
376
/* The assembler will generate this reloc after a block of
377
instructions when it sees data that is not instructions. */
378
HOWTO (R_SH_DATA, /* type */
380
1, /* size (0 = byte, 1 = short, 2 = long) */
382
FALSE, /* pc_relative */
384
complain_overflow_unsigned, /* complain_on_overflow */
385
sh_elf_ignore_reloc, /* special_function */
386
"R_SH_DATA", /* name */
387
FALSE, /* partial_inplace */
390
TRUE), /* pcrel_offset */
392
/* The assembler generates this reloc for each label within a block
393
of instructions. This permits the linker to avoid swapping
394
instructions which are the targets of branches. */
395
HOWTO (R_SH_LABEL, /* type */
397
1, /* size (0 = byte, 1 = short, 2 = long) */
399
FALSE, /* pc_relative */
401
complain_overflow_unsigned, /* complain_on_overflow */
402
sh_elf_ignore_reloc, /* special_function */
403
"R_SH_LABEL", /* name */
404
FALSE, /* partial_inplace */
407
TRUE), /* pcrel_offset */
409
/* The next 12 are only supported via linking in SHC-generated objects. */
410
HOWTO (R_SH_DIR16, /* type */
412
1, /* size (0 = byte, 1 = short, 2 = long) */
414
FALSE, /* pc_relative */
416
complain_overflow_dont, /* complain_on_overflow */
417
bfd_elf_generic_reloc, /* special_function */
418
"R_SH_DIR16", /* name */
419
FALSE, /* partial_inplace */
421
0xffff, /* dst_mask */
422
FALSE), /* pcrel_offset */
424
HOWTO (R_SH_DIR8, /* type */
426
0, /* size (0 = byte, 1 = short, 2 = long) */
428
FALSE, /* pc_relative */
430
complain_overflow_dont, /* complain_on_overflow */
431
bfd_elf_generic_reloc, /* special_function */
432
"R_SH_DIR8", /* name */
433
FALSE, /* partial_inplace */
436
FALSE), /* pcrel_offset */
438
HOWTO (R_SH_DIR8UL, /* type */
440
0, /* size (0 = byte, 1 = short, 2 = long) */
442
FALSE, /* pc_relative */
444
complain_overflow_unsigned, /* complain_on_overflow */
445
bfd_elf_generic_reloc, /* special_function */
446
"R_SH_DIR8UL", /* name */
447
FALSE, /* partial_inplace */
450
FALSE), /* pcrel_offset */
452
HOWTO (R_SH_DIR8UW, /* type */
454
0, /* size (0 = byte, 1 = short, 2 = long) */
456
FALSE, /* pc_relative */
458
complain_overflow_unsigned, /* complain_on_overflow */
459
bfd_elf_generic_reloc, /* special_function */
460
"R_SH_DIR8UW", /* name */
461
FALSE, /* partial_inplace */
464
FALSE), /* pcrel_offset */
466
HOWTO (R_SH_DIR8U, /* type */
468
0, /* size (0 = byte, 1 = short, 2 = long) */
470
FALSE, /* pc_relative */
472
complain_overflow_unsigned, /* complain_on_overflow */
473
bfd_elf_generic_reloc, /* special_function */
474
"R_SH_DIR8U", /* name */
475
FALSE, /* partial_inplace */
478
FALSE), /* pcrel_offset */
480
HOWTO (R_SH_DIR8SW, /* type */
482
0, /* size (0 = byte, 1 = short, 2 = long) */
484
FALSE, /* pc_relative */
486
complain_overflow_signed, /* complain_on_overflow */
487
bfd_elf_generic_reloc, /* special_function */
488
"R_SH_DIR8SW", /* name */
489
FALSE, /* partial_inplace */
492
FALSE), /* pcrel_offset */
494
HOWTO (R_SH_DIR8S, /* type */
496
0, /* size (0 = byte, 1 = short, 2 = long) */
498
FALSE, /* pc_relative */
500
complain_overflow_signed, /* complain_on_overflow */
501
bfd_elf_generic_reloc, /* special_function */
502
"R_SH_DIR8S", /* name */
503
FALSE, /* partial_inplace */
506
FALSE), /* pcrel_offset */
508
HOWTO (R_SH_DIR4UL, /* type */
510
0, /* size (0 = byte, 1 = short, 2 = long) */
512
FALSE, /* pc_relative */
514
complain_overflow_unsigned, /* complain_on_overflow */
515
bfd_elf_generic_reloc, /* special_function */
516
"R_SH_DIR4UL", /* name */
517
FALSE, /* partial_inplace */
520
FALSE), /* pcrel_offset */
522
HOWTO (R_SH_DIR4UW, /* type */
524
0, /* size (0 = byte, 1 = short, 2 = long) */
526
FALSE, /* pc_relative */
528
complain_overflow_unsigned, /* complain_on_overflow */
529
bfd_elf_generic_reloc, /* special_function */
530
"R_SH_DIR4UW", /* name */
531
FALSE, /* partial_inplace */
534
FALSE), /* pcrel_offset */
536
HOWTO (R_SH_DIR4U, /* type */
538
0, /* size (0 = byte, 1 = short, 2 = long) */
540
FALSE, /* pc_relative */
542
complain_overflow_unsigned, /* complain_on_overflow */
543
bfd_elf_generic_reloc, /* special_function */
544
"R_SH_DIR4U", /* name */
545
FALSE, /* partial_inplace */
548
FALSE), /* pcrel_offset */
550
HOWTO (R_SH_PSHA, /* type */
552
1, /* size (0 = byte, 1 = short, 2 = long) */
554
FALSE, /* pc_relative */
556
complain_overflow_signed, /* complain_on_overflow */
557
bfd_elf_generic_reloc, /* special_function */
558
"R_SH_PSHA", /* name */
559
FALSE, /* partial_inplace */
562
FALSE), /* pcrel_offset */
564
HOWTO (R_SH_PSHL, /* type */
566
1, /* size (0 = byte, 1 = short, 2 = long) */
568
FALSE, /* pc_relative */
570
complain_overflow_signed, /* complain_on_overflow */
571
bfd_elf_generic_reloc, /* special_function */
572
"R_SH_PSHL", /* name */
573
FALSE, /* partial_inplace */
576
FALSE), /* pcrel_offset */
578
#ifdef INCLUDE_SHMEDIA
579
/* Used in SHLLI.L and SHLRI.L. */
580
HOWTO (R_SH_DIR5U, /* type */
582
2, /* size (0 = byte, 1 = short, 2 = long) */
584
FALSE, /* pc_relative */
586
complain_overflow_unsigned, /* complain_on_overflow */
587
bfd_elf_generic_reloc, /* special_function */
588
"R_SH_DIR5U", /* name */
589
FALSE, /* partial_inplace */
591
0xfc00, /* dst_mask */
592
FALSE), /* pcrel_offset */
594
/* Used in SHARI, SHLLI et al. */
595
HOWTO (R_SH_DIR6U, /* type */
597
2, /* size (0 = byte, 1 = short, 2 = long) */
599
FALSE, /* pc_relative */
601
complain_overflow_unsigned, /* complain_on_overflow */
602
bfd_elf_generic_reloc, /* special_function */
603
"R_SH_DIR6U", /* name */
604
FALSE, /* partial_inplace */
606
0xfc00, /* dst_mask */
607
FALSE), /* pcrel_offset */
609
/* Used in BxxI, LDHI.L et al. */
610
HOWTO (R_SH_DIR6S, /* type */
612
2, /* size (0 = byte, 1 = short, 2 = long) */
614
FALSE, /* pc_relative */
616
complain_overflow_signed, /* complain_on_overflow */
617
bfd_elf_generic_reloc, /* special_function */
618
"R_SH_DIR6S", /* name */
619
FALSE, /* partial_inplace */
621
0xfc00, /* dst_mask */
622
FALSE), /* pcrel_offset */
624
/* Used in ADDI, ANDI et al. */
625
HOWTO (R_SH_DIR10S, /* type */
627
2, /* size (0 = byte, 1 = short, 2 = long) */
629
FALSE, /* pc_relative */
631
complain_overflow_signed, /* complain_on_overflow */
632
bfd_elf_generic_reloc, /* special_function */
633
"R_SH_DIR10S", /* name */
634
FALSE, /* partial_inplace */
636
0xffc00, /* dst_mask */
637
FALSE), /* pcrel_offset */
639
/* Used in LD.UW, ST.W et al. */
640
HOWTO (R_SH_DIR10SW, /* type */
642
2, /* size (0 = byte, 1 = short, 2 = long) */
644
FALSE, /* pc_relative */
646
complain_overflow_signed, /* complain_on_overflow */
647
bfd_elf_generic_reloc, /* special_function */
648
"R_SH_DIR10SW", /* name */
649
FALSE, /* partial_inplace */
651
0xffc00, /* dst_mask */
652
FALSE), /* pcrel_offset */
654
/* Used in LD.L, FLD.S et al. */
655
HOWTO (R_SH_DIR10SL, /* type */
657
2, /* size (0 = byte, 1 = short, 2 = long) */
659
FALSE, /* pc_relative */
661
complain_overflow_signed, /* complain_on_overflow */
662
bfd_elf_generic_reloc, /* special_function */
663
"R_SH_DIR10SL", /* name */
664
FALSE, /* partial_inplace */
666
0xffc00, /* dst_mask */
667
FALSE), /* pcrel_offset */
669
/* Used in FLD.D, FST.P et al. */
670
HOWTO (R_SH_DIR10SQ, /* type */
672
2, /* size (0 = byte, 1 = short, 2 = long) */
674
FALSE, /* pc_relative */
676
complain_overflow_signed, /* complain_on_overflow */
677
bfd_elf_generic_reloc, /* special_function */
678
"R_SH_DIR10SQ", /* name */
679
FALSE, /* partial_inplace */
681
0xffc00, /* dst_mask */
682
FALSE), /* pcrel_offset */
696
HOWTO (R_SH_DIR16S, /* type */
698
1, /* size (0 = byte, 1 = short, 2 = long) */
700
FALSE, /* pc_relative */
702
complain_overflow_signed, /* complain_on_overflow */
703
bfd_elf_generic_reloc, /* special_function */
704
"R_SH_DIR16S", /* name */
705
FALSE, /* partial_inplace */
707
0xffff, /* dst_mask */
708
FALSE), /* pcrel_offset */
801
HOWTO (R_SH_TLS_GD_32, /* type */
803
2, /* size (0 = byte, 1 = short, 2 = long) */
805
FALSE, /* pc_relative */
807
complain_overflow_bitfield, /* complain_on_overflow */
808
bfd_elf_generic_reloc, /* */
809
"R_SH_TLS_GD_32", /* name */
810
SH_PARTIAL32, /* partial_inplace */
811
SH_SRC_MASK32, /* src_mask */
812
0xffffffff, /* dst_mask */
813
FALSE), /* pcrel_offset */
815
HOWTO (R_SH_TLS_LD_32, /* type */
817
2, /* size (0 = byte, 1 = short, 2 = long) */
819
FALSE, /* pc_relative */
821
complain_overflow_bitfield, /* complain_on_overflow */
822
bfd_elf_generic_reloc, /* */
823
"R_SH_TLS_LD_32", /* name */
824
SH_PARTIAL32, /* partial_inplace */
825
SH_SRC_MASK32, /* src_mask */
826
0xffffffff, /* dst_mask */
827
FALSE), /* pcrel_offset */
829
HOWTO (R_SH_TLS_LDO_32, /* type */
831
2, /* size (0 = byte, 1 = short, 2 = long) */
833
FALSE, /* pc_relative */
835
complain_overflow_bitfield, /* complain_on_overflow */
836
bfd_elf_generic_reloc, /* */
837
"R_SH_TLS_LDO_32", /* name */
838
SH_PARTIAL32, /* partial_inplace */
839
SH_SRC_MASK32, /* src_mask */
840
0xffffffff, /* dst_mask */
841
FALSE), /* pcrel_offset */
843
HOWTO (R_SH_TLS_IE_32, /* type */
845
2, /* size (0 = byte, 1 = short, 2 = long) */
847
FALSE, /* pc_relative */
849
complain_overflow_bitfield, /* complain_on_overflow */
850
bfd_elf_generic_reloc, /* */
851
"R_SH_TLS_IE_32", /* name */
852
SH_PARTIAL32, /* partial_inplace */
853
SH_SRC_MASK32, /* src_mask */
854
0xffffffff, /* dst_mask */
855
FALSE), /* pcrel_offset */
857
HOWTO (R_SH_TLS_LE_32, /* type */
859
2, /* size (0 = byte, 1 = short, 2 = long) */
861
FALSE, /* pc_relative */
863
complain_overflow_bitfield, /* complain_on_overflow */
864
bfd_elf_generic_reloc, /* */
865
"R_SH_TLS_LE_32", /* name */
866
SH_PARTIAL32, /* partial_inplace */
867
SH_SRC_MASK32, /* src_mask */
868
0xffffffff, /* dst_mask */
869
FALSE), /* pcrel_offset */
871
HOWTO (R_SH_TLS_DTPMOD32, /* type */
873
2, /* size (0 = byte, 1 = short, 2 = long) */
875
FALSE, /* pc_relative */
877
complain_overflow_bitfield, /* complain_on_overflow */
878
bfd_elf_generic_reloc, /* */
879
"R_SH_TLS_DTPMOD32", /* name */
880
SH_PARTIAL32, /* partial_inplace */
881
SH_SRC_MASK32, /* src_mask */
882
0xffffffff, /* dst_mask */
883
FALSE), /* pcrel_offset */
885
HOWTO (R_SH_TLS_DTPOFF32, /* type */
887
2, /* size (0 = byte, 1 = short, 2 = long) */
889
FALSE, /* pc_relative */
891
complain_overflow_bitfield, /* complain_on_overflow */
892
bfd_elf_generic_reloc, /* */
893
"R_SH_TLS_DTPOFF32", /* name */
894
SH_PARTIAL32, /* partial_inplace */
895
SH_SRC_MASK32, /* src_mask */
896
0xffffffff, /* dst_mask */
897
FALSE), /* pcrel_offset */
899
HOWTO (R_SH_TLS_TPOFF32, /* type */
901
2, /* size (0 = byte, 1 = short, 2 = long) */
903
FALSE, /* pc_relative */
905
complain_overflow_bitfield, /* complain_on_overflow */
906
bfd_elf_generic_reloc, /* */
907
"R_SH_TLS_TPOFF32", /* name */
908
SH_PARTIAL32, /* partial_inplace */
909
SH_SRC_MASK32, /* src_mask */
910
0xffffffff, /* dst_mask */
911
FALSE), /* pcrel_offset */
922
HOWTO (R_SH_GOT32, /* type */
924
2, /* size (0 = byte, 1 = short, 2 = long) */
926
FALSE, /* pc_relative */
928
complain_overflow_bitfield, /* complain_on_overflow */
929
bfd_elf_generic_reloc, /* */
930
"R_SH_GOT32", /* name */
931
SH_PARTIAL32, /* partial_inplace */
932
SH_SRC_MASK32, /* src_mask */
933
0xffffffff, /* dst_mask */
934
FALSE), /* pcrel_offset */
936
HOWTO (R_SH_PLT32, /* type */
938
2, /* size (0 = byte, 1 = short, 2 = long) */
940
TRUE, /* pc_relative */
942
complain_overflow_bitfield, /* complain_on_overflow */
943
bfd_elf_generic_reloc, /* */
944
"R_SH_PLT32", /* name */
945
SH_PARTIAL32, /* partial_inplace */
946
SH_SRC_MASK32, /* src_mask */
947
0xffffffff, /* dst_mask */
948
TRUE), /* pcrel_offset */
950
HOWTO (R_SH_COPY, /* type */
952
2, /* size (0 = byte, 1 = short, 2 = long) */
954
FALSE, /* pc_relative */
956
complain_overflow_bitfield, /* complain_on_overflow */
957
bfd_elf_generic_reloc, /* */
958
"R_SH_COPY", /* name */
959
SH_PARTIAL32, /* partial_inplace */
960
SH_SRC_MASK32, /* src_mask */
961
0xffffffff, /* dst_mask */
962
FALSE), /* pcrel_offset */
964
HOWTO (R_SH_GLOB_DAT, /* type */
966
2, /* size (0 = byte, 1 = short, 2 = long) */
968
FALSE, /* pc_relative */
970
complain_overflow_bitfield, /* complain_on_overflow */
971
bfd_elf_generic_reloc, /* */
972
"R_SH_GLOB_DAT", /* name */
973
SH_PARTIAL32, /* partial_inplace */
974
SH_SRC_MASK32, /* src_mask */
975
0xffffffff, /* dst_mask */
976
FALSE), /* pcrel_offset */
978
HOWTO (R_SH_JMP_SLOT, /* type */
980
2, /* size (0 = byte, 1 = short, 2 = long) */
982
FALSE, /* pc_relative */
984
complain_overflow_bitfield, /* complain_on_overflow */
985
bfd_elf_generic_reloc, /* */
986
"R_SH_JMP_SLOT", /* name */
987
SH_PARTIAL32, /* partial_inplace */
988
SH_SRC_MASK32, /* src_mask */
989
0xffffffff, /* dst_mask */
990
FALSE), /* pcrel_offset */
992
HOWTO (R_SH_RELATIVE, /* type */
994
2, /* size (0 = byte, 1 = short, 2 = long) */
996
FALSE, /* pc_relative */
998
complain_overflow_bitfield, /* complain_on_overflow */
999
bfd_elf_generic_reloc, /* */
1000
"R_SH_RELATIVE", /* name */
1001
SH_PARTIAL32, /* partial_inplace */
1002
SH_SRC_MASK32, /* src_mask */
1003
0xffffffff, /* dst_mask */
1004
FALSE), /* pcrel_offset */
1006
HOWTO (R_SH_GOTOFF, /* type */
1008
2, /* size (0 = byte, 1 = short, 2 = long) */
1010
FALSE, /* pc_relative */
1012
complain_overflow_bitfield, /* complain_on_overflow */
1013
bfd_elf_generic_reloc, /* */
1014
"R_SH_GOTOFF", /* name */
1015
SH_PARTIAL32, /* partial_inplace */
1016
SH_SRC_MASK32, /* src_mask */
1017
0xffffffff, /* dst_mask */
1018
FALSE), /* pcrel_offset */
1020
HOWTO (R_SH_GOTPC, /* type */
1022
2, /* size (0 = byte, 1 = short, 2 = long) */
1024
TRUE, /* pc_relative */
1026
complain_overflow_bitfield, /* complain_on_overflow */
1027
bfd_elf_generic_reloc, /* */
1028
"R_SH_GOTPC", /* name */
1029
SH_PARTIAL32, /* partial_inplace */
1030
SH_SRC_MASK32, /* src_mask */
1031
0xffffffff, /* dst_mask */
1032
TRUE), /* pcrel_offset */
1034
HOWTO (R_SH_GOTPLT32, /* type */
1036
2, /* size (0 = byte, 1 = short, 2 = long) */
1038
FALSE, /* pc_relative */
1040
complain_overflow_bitfield, /* complain_on_overflow */
1041
bfd_elf_generic_reloc, /* */
1042
"R_SH_GOTPLT32", /* name */
1043
FALSE, /* partial_inplace */
1044
/* ??? Why not 0? */
1045
SH_SRC_MASK32, /* src_mask */
1046
0xffffffff, /* dst_mask */
1047
FALSE), /* pcrel_offset */
1049
#ifdef INCLUDE_SHMEDIA
1050
/* Used in MOVI and SHORI (x & 65536). */
1051
HOWTO (R_SH_GOT_LOW16, /* type */
1053
2, /* size (0 = byte, 1 = short, 2 = long) */
1055
FALSE, /* pc_relative */
1057
complain_overflow_dont, /* complain_on_overflow */
1058
bfd_elf_generic_reloc, /* special_function */
1059
"R_SH_GOT_LOW16", /* name */
1060
FALSE, /* partial_inplace */
1062
0x3fffc00, /* dst_mask */
1063
FALSE), /* pcrel_offset */
1065
/* Used in MOVI and SHORI ((x >> 16) & 65536). */
1066
HOWTO (R_SH_GOT_MEDLOW16, /* type */
1067
16, /* rightshift */
1068
2, /* size (0 = byte, 1 = short, 2 = long) */
1070
FALSE, /* pc_relative */
1072
complain_overflow_dont, /* complain_on_overflow */
1073
bfd_elf_generic_reloc, /* special_function */
1074
"R_SH_GOT_MEDLOW16", /* name */
1075
FALSE, /* partial_inplace */
1077
0x3fffc00, /* dst_mask */
1078
FALSE), /* pcrel_offset */
1080
/* Used in MOVI and SHORI ((x >> 32) & 65536). */
1081
HOWTO (R_SH_GOT_MEDHI16, /* type */
1082
32, /* rightshift */
1083
2, /* size (0 = byte, 1 = short, 2 = long) */
1085
FALSE, /* pc_relative */
1087
complain_overflow_dont, /* complain_on_overflow */
1088
bfd_elf_generic_reloc, /* special_function */
1089
"R_SH_GOT_MEDHI16", /* name */
1090
FALSE, /* partial_inplace */
1092
0x3fffc00, /* dst_mask */
1093
FALSE), /* pcrel_offset */
1095
/* Used in MOVI and SHORI ((x >> 48) & 65536). */
1096
HOWTO (R_SH_GOT_HI16, /* type */
1097
48, /* rightshift */
1098
2, /* size (0 = byte, 1 = short, 2 = long) */
1100
FALSE, /* pc_relative */
1102
complain_overflow_dont, /* complain_on_overflow */
1103
bfd_elf_generic_reloc, /* special_function */
1104
"R_SH_GOT_HI16", /* name */
1105
FALSE, /* partial_inplace */
1107
0x3fffc00, /* dst_mask */
1108
FALSE), /* pcrel_offset */
1110
/* Used in MOVI and SHORI (x & 65536). */
1111
HOWTO (R_SH_GOTPLT_LOW16, /* type */
1113
2, /* size (0 = byte, 1 = short, 2 = long) */
1115
FALSE, /* pc_relative */
1117
complain_overflow_dont, /* complain_on_overflow */
1118
bfd_elf_generic_reloc, /* special_function */
1119
"R_SH_GOTPLT_LOW16", /* name */
1120
FALSE, /* partial_inplace */
1122
0x3fffc00, /* dst_mask */
1123
FALSE), /* pcrel_offset */
1125
/* Used in MOVI and SHORI ((x >> 16) & 65536). */
1126
HOWTO (R_SH_GOTPLT_MEDLOW16, /* type */
1127
16, /* rightshift */
1128
2, /* size (0 = byte, 1 = short, 2 = long) */
1130
FALSE, /* pc_relative */
1132
complain_overflow_dont, /* complain_on_overflow */
1133
bfd_elf_generic_reloc, /* special_function */
1134
"R_SH_GOTPLT_MEDLOW16", /* name */
1135
FALSE, /* partial_inplace */
1137
0x3fffc00, /* dst_mask */
1138
FALSE), /* pcrel_offset */
1140
/* Used in MOVI and SHORI ((x >> 32) & 65536). */
1141
HOWTO (R_SH_GOTPLT_MEDHI16, /* type */
1142
32, /* rightshift */
1143
2, /* size (0 = byte, 1 = short, 2 = long) */
1145
FALSE, /* pc_relative */
1147
complain_overflow_dont, /* complain_on_overflow */
1148
bfd_elf_generic_reloc, /* special_function */
1149
"R_SH_GOTPLT_MEDHI16", /* name */
1150
FALSE, /* partial_inplace */
1152
0x3fffc00, /* dst_mask */
1153
FALSE), /* pcrel_offset */
1155
/* Used in MOVI and SHORI ((x >> 48) & 65536). */
1156
HOWTO (R_SH_GOTPLT_HI16, /* type */
1157
48, /* rightshift */
1158
2, /* size (0 = byte, 1 = short, 2 = long) */
1160
FALSE, /* pc_relative */
1162
complain_overflow_dont, /* complain_on_overflow */
1163
bfd_elf_generic_reloc, /* special_function */
1164
"R_SH_GOTPLT_HI16", /* name */
1165
FALSE, /* partial_inplace */
1167
0x3fffc00, /* dst_mask */
1168
FALSE), /* pcrel_offset */
1170
/* Used in MOVI and SHORI (x & 65536). */
1171
HOWTO (R_SH_PLT_LOW16, /* type */
1173
2, /* size (0 = byte, 1 = short, 2 = long) */
1175
TRUE, /* pc_relative */
1177
complain_overflow_dont, /* complain_on_overflow */
1178
bfd_elf_generic_reloc, /* special_function */
1179
"R_SH_PLT_LOW16", /* name */
1180
FALSE, /* partial_inplace */
1182
0x3fffc00, /* dst_mask */
1183
TRUE), /* pcrel_offset */
1185
/* Used in MOVI and SHORI ((x >> 16) & 65536). */
1186
HOWTO (R_SH_PLT_MEDLOW16, /* type */
1187
16, /* rightshift */
1188
2, /* size (0 = byte, 1 = short, 2 = long) */
1190
TRUE, /* pc_relative */
1192
complain_overflow_dont, /* complain_on_overflow */
1193
bfd_elf_generic_reloc, /* special_function */
1194
"R_SH_PLT_MEDLOW16", /* name */
1195
FALSE, /* partial_inplace */
1197
0x3fffc00, /* dst_mask */
1198
TRUE), /* pcrel_offset */
1200
/* Used in MOVI and SHORI ((x >> 32) & 65536). */
1201
HOWTO (R_SH_PLT_MEDHI16, /* type */
1202
32, /* rightshift */
1203
2, /* size (0 = byte, 1 = short, 2 = long) */
1205
TRUE, /* pc_relative */
1207
complain_overflow_dont, /* complain_on_overflow */
1208
bfd_elf_generic_reloc, /* special_function */
1209
"R_SH_PLT_MEDHI16", /* name */
1210
FALSE, /* partial_inplace */
1212
0x3fffc00, /* dst_mask */
1213
TRUE), /* pcrel_offset */
1215
/* Used in MOVI and SHORI ((x >> 48) & 65536). */
1216
HOWTO (R_SH_PLT_HI16, /* type */
1217
48, /* rightshift */
1218
2, /* size (0 = byte, 1 = short, 2 = long) */
1220
TRUE, /* pc_relative */
1222
complain_overflow_dont, /* complain_on_overflow */
1223
bfd_elf_generic_reloc, /* special_function */
1224
"R_SH_PLT_HI16", /* name */
1225
FALSE, /* partial_inplace */
1227
0x3fffc00, /* dst_mask */
1228
TRUE), /* pcrel_offset */
1230
/* Used in MOVI and SHORI (x & 65536). */
1231
HOWTO (R_SH_GOTOFF_LOW16, /* type */
1233
2, /* size (0 = byte, 1 = short, 2 = long) */
1235
FALSE, /* pc_relative */
1237
complain_overflow_dont, /* complain_on_overflow */
1238
bfd_elf_generic_reloc, /* special_function */
1239
"R_SH_GOTOFF_LOW16", /* name */
1240
FALSE, /* partial_inplace */
1242
0x3fffc00, /* dst_mask */
1243
FALSE), /* pcrel_offset */
1245
/* Used in MOVI and SHORI ((x >> 16) & 65536). */
1246
HOWTO (R_SH_GOTOFF_MEDLOW16, /* type */
1247
16, /* rightshift */
1248
2, /* size (0 = byte, 1 = short, 2 = long) */
1250
FALSE, /* pc_relative */
1252
complain_overflow_dont, /* complain_on_overflow */
1253
bfd_elf_generic_reloc, /* special_function */
1254
"R_SH_GOTOFF_MEDLOW16", /* name */
1255
FALSE, /* partial_inplace */
1257
0x3fffc00, /* dst_mask */
1258
FALSE), /* pcrel_offset */
1260
/* Used in MOVI and SHORI ((x >> 32) & 65536). */
1261
HOWTO (R_SH_GOTOFF_MEDHI16, /* type */
1262
32, /* rightshift */
1263
2, /* size (0 = byte, 1 = short, 2 = long) */
1265
FALSE, /* pc_relative */
1267
complain_overflow_dont, /* complain_on_overflow */
1268
bfd_elf_generic_reloc, /* special_function */
1269
"R_SH_GOTOFF_MEDHI16", /* name */
1270
FALSE, /* partial_inplace */
1272
0x3fffc00, /* dst_mask */
1273
FALSE), /* pcrel_offset */
1275
/* Used in MOVI and SHORI ((x >> 48) & 65536). */
1276
HOWTO (R_SH_GOTOFF_HI16, /* type */
1277
48, /* rightshift */
1278
2, /* size (0 = byte, 1 = short, 2 = long) */
1280
FALSE, /* pc_relative */
1282
complain_overflow_dont, /* complain_on_overflow */
1283
bfd_elf_generic_reloc, /* special_function */
1284
"R_SH_GOTOFF_HI16", /* name */
1285
FALSE, /* partial_inplace */
1287
0x3fffc00, /* dst_mask */
1288
FALSE), /* pcrel_offset */
1290
/* Used in MOVI and SHORI (x & 65536). */
1291
HOWTO (R_SH_GOTPC_LOW16, /* type */
1293
2, /* size (0 = byte, 1 = short, 2 = long) */
1295
TRUE, /* pc_relative */
1297
complain_overflow_dont, /* complain_on_overflow */
1298
bfd_elf_generic_reloc, /* special_function */
1299
"R_SH_GOTPC_LOW16", /* name */
1300
FALSE, /* partial_inplace */
1302
0x3fffc00, /* dst_mask */
1303
TRUE), /* pcrel_offset */
1305
/* Used in MOVI and SHORI ((x >> 16) & 65536). */
1306
HOWTO (R_SH_GOTPC_MEDLOW16, /* type */
1307
16, /* rightshift */
1308
2, /* size (0 = byte, 1 = short, 2 = long) */
1310
TRUE, /* pc_relative */
1312
complain_overflow_dont, /* complain_on_overflow */
1313
bfd_elf_generic_reloc, /* special_function */
1314
"R_SH_GOTPC_MEDLOW16", /* name */
1315
FALSE, /* partial_inplace */
1317
0x3fffc00, /* dst_mask */
1318
TRUE), /* pcrel_offset */
1320
/* Used in MOVI and SHORI ((x >> 32) & 65536). */
1321
HOWTO (R_SH_GOTPC_MEDHI16, /* type */
1322
32, /* rightshift */
1323
2, /* size (0 = byte, 1 = short, 2 = long) */
1325
TRUE, /* pc_relative */
1327
complain_overflow_dont, /* complain_on_overflow */
1328
bfd_elf_generic_reloc, /* special_function */
1329
"R_SH_GOTPC_MEDHI16", /* name */
1330
FALSE, /* partial_inplace */
1332
0x3fffc00, /* dst_mask */
1333
TRUE), /* pcrel_offset */
1335
/* Used in MOVI and SHORI ((x >> 48) & 65536). */
1336
HOWTO (R_SH_GOTPC_HI16, /* type */
1337
48, /* rightshift */
1338
2, /* size (0 = byte, 1 = short, 2 = long) */
1340
TRUE, /* pc_relative */
1342
complain_overflow_dont, /* complain_on_overflow */
1343
bfd_elf_generic_reloc, /* special_function */
1344
"R_SH_GOTPC_HI16", /* name */
1345
FALSE, /* partial_inplace */
1347
0x3fffc00, /* dst_mask */
1348
TRUE), /* pcrel_offset */
1350
/* Used in LD.L, FLD.S et al. */
1351
HOWTO (R_SH_GOT10BY4, /* type */
1353
2, /* size (0 = byte, 1 = short, 2 = long) */
1355
FALSE, /* pc_relative */
1357
complain_overflow_signed, /* complain_on_overflow */
1358
bfd_elf_generic_reloc, /* special_function */
1359
"R_SH_GOT10BY4", /* name */
1360
FALSE, /* partial_inplace */
1362
0xffc00, /* dst_mask */
1363
FALSE), /* pcrel_offset */
1365
/* Used in LD.L, FLD.S et al. */
1366
HOWTO (R_SH_GOTPLT10BY4, /* type */
1368
2, /* size (0 = byte, 1 = short, 2 = long) */
1370
FALSE, /* pc_relative */
1372
complain_overflow_signed, /* complain_on_overflow */
1373
bfd_elf_generic_reloc, /* special_function */
1374
"R_SH_GOTPLT10BY4", /* name */
1375
FALSE, /* partial_inplace */
1377
0xffc00, /* dst_mask */
1378
FALSE), /* pcrel_offset */
1380
/* Used in FLD.D, FST.P et al. */
1381
HOWTO (R_SH_GOT10BY8, /* type */
1383
2, /* size (0 = byte, 1 = short, 2 = long) */
1385
FALSE, /* pc_relative */
1387
complain_overflow_signed, /* complain_on_overflow */
1388
bfd_elf_generic_reloc, /* special_function */
1389
"R_SH_GOT10BY8", /* name */
1390
FALSE, /* partial_inplace */
1392
0xffc00, /* dst_mask */
1393
FALSE), /* pcrel_offset */
1395
/* Used in FLD.D, FST.P et al. */
1396
HOWTO (R_SH_GOTPLT10BY8, /* type */
1398
2, /* size (0 = byte, 1 = short, 2 = long) */
1400
FALSE, /* pc_relative */
1402
complain_overflow_signed, /* complain_on_overflow */
1403
bfd_elf_generic_reloc, /* special_function */
1404
"R_SH_GOTPLT10BY8", /* name */
1405
FALSE, /* partial_inplace */
1407
0xffc00, /* dst_mask */
1408
FALSE), /* pcrel_offset */
1410
HOWTO (R_SH_COPY64, /* type */
1412
4, /* size (0 = byte, 1 = short, 2 = long) */
1414
FALSE, /* pc_relative */
1416
complain_overflow_dont, /* complain_on_overflow */
1417
bfd_elf_generic_reloc, /* special_function */
1418
"R_SH_COPY64", /* name */
1419
FALSE, /* partial_inplace */
1421
((bfd_vma) 0) - 1, /* dst_mask */
1422
FALSE), /* pcrel_offset */
1424
HOWTO (R_SH_GLOB_DAT64, /* type */
1426
4, /* size (0 = byte, 1 = short, 2 = long) */
1428
FALSE, /* pc_relative */
1430
complain_overflow_dont, /* complain_on_overflow */
1431
bfd_elf_generic_reloc, /* special_function */
1432
"R_SH_GLOB_DAT64", /* name */
1433
FALSE, /* partial_inplace */
1435
((bfd_vma) 0) - 1, /* dst_mask */
1436
FALSE), /* pcrel_offset */
1438
HOWTO (R_SH_JMP_SLOT64, /* type */
1440
4, /* size (0 = byte, 1 = short, 2 = long) */
1442
FALSE, /* pc_relative */
1444
complain_overflow_dont, /* complain_on_overflow */
1445
bfd_elf_generic_reloc, /* special_function */
1446
"R_SH_JMP_SLOT64", /* name */
1447
FALSE, /* partial_inplace */
1449
((bfd_vma) 0) - 1, /* dst_mask */
1450
FALSE), /* pcrel_offset */
1452
HOWTO (R_SH_RELATIVE64, /* type */
1454
4, /* size (0 = byte, 1 = short, 2 = long) */
1456
FALSE, /* pc_relative */
1458
complain_overflow_dont, /* complain_on_overflow */
1459
bfd_elf_generic_reloc, /* special_function */
1460
"R_SH_RELATIVE64", /* name */
1461
FALSE, /* partial_inplace */
1463
((bfd_vma) 0) - 1, /* dst_mask */
1464
FALSE), /* pcrel_offset */
1501
/* FDPIC-relative offset to a GOT entry, for movi20. */
1502
HOWTO (R_SH_GOT20, /* type */
1504
2, /* size (0 = byte, 1 = short, 2 = long) */
1506
FALSE, /* pc_relative */
1508
complain_overflow_signed, /* complain_on_overflow */
1509
bfd_elf_generic_reloc, /* special_function */
1510
"R_SH_GOT20", /* name */
1511
FALSE, /* partial_inplace */
1513
0x00f0ffff, /* dst_mask */
1514
FALSE), /* pcrel_offset */
1516
/* FDPIC-relative offset to a data object, for movi20. */
1517
HOWTO (R_SH_GOTOFF20, /* type */
1519
2, /* size (0 = byte, 1 = short, 2 = long) */
1521
FALSE, /* pc_relative */
1523
complain_overflow_signed, /* complain_on_overflow */
1524
bfd_elf_generic_reloc, /* special_function */
1525
"R_SH_GOTOFF20", /* name */
1526
FALSE, /* partial_inplace */
1528
0x00f0ffff, /* dst_mask */
1529
FALSE), /* pcrel_offset */
1531
/* FDPIC-relative offset to a GOT entry for a function descriptor. */
1532
HOWTO (R_SH_GOTFUNCDESC, /* type */
1534
2, /* size (0 = byte, 1 = short, 2 = long) */
1536
FALSE, /* pc_relative */
1538
complain_overflow_signed, /* complain_on_overflow */
1539
bfd_elf_generic_reloc, /* special_function */
1540
"R_SH_GOTFUNCDESC", /* name */
1541
FALSE, /* partial_inplace */
1543
0xffffffff, /* dst_mask */
1544
FALSE), /* pcrel_offset */
1546
/* FDPIC-relative offset to a GOT entry for a function descriptor,
1548
HOWTO (R_SH_GOTFUNCDESC20, /* type */
1550
2, /* size (0 = byte, 1 = short, 2 = long) */
1552
FALSE, /* pc_relative */
1554
complain_overflow_signed, /* complain_on_overflow */
1555
bfd_elf_generic_reloc, /* special_function */
1556
"R_SH_GOTFUNCDESC20", /* name */
1557
FALSE, /* partial_inplace */
1559
0x00f0ffff, /* dst_mask */
1560
FALSE), /* pcrel_offset */
1562
/* FDPIC-relative offset to a function descriptor. */
1563
HOWTO (R_SH_GOTOFFFUNCDESC, /* type */
1565
2, /* size (0 = byte, 1 = short, 2 = long) */
1567
FALSE, /* pc_relative */
1569
complain_overflow_signed, /* complain_on_overflow */
1570
bfd_elf_generic_reloc, /* special_function */
1571
"R_SH_GOTOFFFUNCDESC", /* name */
1572
FALSE, /* partial_inplace */
1574
0xffffffff, /* dst_mask */
1575
FALSE), /* pcrel_offset */
1577
/* FDPIC-relative offset to a function descriptor, for movi20. */
1578
HOWTO (R_SH_GOTOFFFUNCDESC20, /* type */
1580
2, /* size (0 = byte, 1 = short, 2 = long) */
1582
FALSE, /* pc_relative */
1584
complain_overflow_signed, /* complain_on_overflow */
1585
bfd_elf_generic_reloc, /* special_function */
1586
"R_SH_GOTOFFFUNCDESC20", /* name */
1587
FALSE, /* partial_inplace */
1589
0x00f0ffff, /* dst_mask */
1590
FALSE), /* pcrel_offset */
1592
/* Address of an official function descriptor. */
1593
HOWTO (R_SH_FUNCDESC, /* type */
1595
2, /* size (0 = byte, 1 = short, 2 = long) */
1597
FALSE, /* pc_relative */
1599
complain_overflow_signed, /* complain_on_overflow */
1600
bfd_elf_generic_reloc, /* special_function */
1601
"R_SH_FUNCDESC", /* name */
1602
FALSE, /* partial_inplace */
1604
0xffffffff, /* dst_mask */
1605
FALSE), /* pcrel_offset */
1607
/* Function descriptor to be filled in by the dynamic linker. */
1608
HOWTO (R_SH_FUNCDESC_VALUE, /* type */
1610
2, /* size (0 = byte, 1 = short, 2 = long) */
1612
FALSE, /* pc_relative */
1614
complain_overflow_signed, /* complain_on_overflow */
1615
bfd_elf_generic_reloc, /* special_function */
1616
"R_SH_FUNCDESC_VALUE", /* name */
1617
FALSE, /* partial_inplace */
1619
0xffffffff, /* dst_mask */
1620
FALSE), /* pcrel_offset */
1622
#ifdef INCLUDE_SHMEDIA
1657
/* Relocations for SHmedia code. None of these are partial_inplace or
1658
use the field being relocated (except R_SH_PT_16). */
1660
/* The assembler will generate this reloc before a block of SHmedia
1661
instructions. A section should be processed as assuming it contains
1662
data, unless this reloc is seen. Note that a block of SHcompact
1663
instructions are instead preceded by R_SH_CODE.
1664
This is currently not implemented, but should be used for SHmedia
1665
linker relaxation. */
1666
HOWTO (R_SH_SHMEDIA_CODE, /* type */
1668
1, /* size (0 = byte, 1 = short, 2 = long) */
1670
FALSE, /* pc_relative */
1672
complain_overflow_unsigned, /* complain_on_overflow */
1673
sh_elf_ignore_reloc, /* special_function */
1674
"R_SH_SHMEDIA_CODE", /* name */
1675
FALSE, /* partial_inplace */
1678
FALSE), /* pcrel_offset */
1680
/* The assembler will generate this reloc at a PTA or PTB instruction,
1681
and the linker checks the right type of target, or changes a PTA to a
1682
PTB, if the original insn was PT. */
1683
HOWTO (R_SH_PT_16, /* type */
1685
2, /* size (0 = byte, 1 = short, 2 = long) */
1687
TRUE, /* pc_relative */
1689
complain_overflow_signed, /* complain_on_overflow */
1690
bfd_elf_generic_reloc, /* special_function */
1691
"R_SH_PT_16", /* name */
1692
FALSE, /* partial_inplace */
1694
0x3fffc00, /* dst_mask */
1695
TRUE), /* pcrel_offset */
1697
/* Used in unexpanded MOVI. */
1698
HOWTO (R_SH_IMMS16, /* type */
1700
2, /* size (0 = byte, 1 = short, 2 = long) */
1702
FALSE, /* pc_relative */
1704
complain_overflow_signed, /* complain_on_overflow */
1705
bfd_elf_generic_reloc, /* special_function */
1706
"R_SH_IMMS16", /* name */
1707
FALSE, /* partial_inplace */
1709
0x3fffc00, /* dst_mask */
1710
FALSE), /* pcrel_offset */
1712
/* Used in SHORI. */
1713
HOWTO (R_SH_IMMU16, /* type */
1715
2, /* size (0 = byte, 1 = short, 2 = long) */
1717
FALSE, /* pc_relative */
1719
complain_overflow_unsigned, /* complain_on_overflow */
1720
bfd_elf_generic_reloc, /* special_function */
1721
"R_SH_IMMU16", /* name */
1722
FALSE, /* partial_inplace */
1724
0x3fffc00, /* dst_mask */
1725
FALSE), /* pcrel_offset */
1727
/* Used in MOVI and SHORI (x & 65536). */
1728
HOWTO (R_SH_IMM_LOW16, /* type */
1730
2, /* size (0 = byte, 1 = short, 2 = long) */
1732
FALSE, /* pc_relative */
1734
complain_overflow_dont, /* complain_on_overflow */
1735
bfd_elf_generic_reloc, /* special_function */
1736
"R_SH_IMM_LOW16", /* name */
1737
FALSE, /* partial_inplace */
1739
0x3fffc00, /* dst_mask */
1740
FALSE), /* pcrel_offset */
1742
/* Used in MOVI and SHORI ((x - $) & 65536). */
1743
HOWTO (R_SH_IMM_LOW16_PCREL, /* type */
1745
2, /* size (0 = byte, 1 = short, 2 = long) */
1747
TRUE, /* pc_relative */
1749
complain_overflow_dont, /* complain_on_overflow */
1750
bfd_elf_generic_reloc, /* special_function */
1751
"R_SH_IMM_LOW16_PCREL", /* name */
1752
FALSE, /* partial_inplace */
1754
0x3fffc00, /* dst_mask */
1755
TRUE), /* pcrel_offset */
1757
/* Used in MOVI and SHORI ((x >> 16) & 65536). */
1758
HOWTO (R_SH_IMM_MEDLOW16, /* type */
1759
16, /* rightshift */
1760
2, /* size (0 = byte, 1 = short, 2 = long) */
1762
FALSE, /* pc_relative */
1764
complain_overflow_dont, /* complain_on_overflow */
1765
bfd_elf_generic_reloc, /* special_function */
1766
"R_SH_IMM_MEDLOW16", /* name */
1767
FALSE, /* partial_inplace */
1769
0x3fffc00, /* dst_mask */
1770
FALSE), /* pcrel_offset */
1772
/* Used in MOVI and SHORI (((x - $) >> 16) & 65536). */
1773
HOWTO (R_SH_IMM_MEDLOW16_PCREL, /* type */
1774
16, /* rightshift */
1775
2, /* size (0 = byte, 1 = short, 2 = long) */
1777
TRUE, /* pc_relative */
1779
complain_overflow_dont, /* complain_on_overflow */
1780
bfd_elf_generic_reloc, /* special_function */
1781
"R_SH_IMM_MEDLOW16_PCREL", /* name */
1782
FALSE, /* partial_inplace */
1784
0x3fffc00, /* dst_mask */
1785
TRUE), /* pcrel_offset */
1787
/* Used in MOVI and SHORI ((x >> 32) & 65536). */
1788
HOWTO (R_SH_IMM_MEDHI16, /* type */
1789
32, /* rightshift */
1790
2, /* size (0 = byte, 1 = short, 2 = long) */
1792
FALSE, /* pc_relative */
1794
complain_overflow_dont, /* complain_on_overflow */
1795
bfd_elf_generic_reloc, /* special_function */
1796
"R_SH_IMM_MEDHI16", /* name */
1797
FALSE, /* partial_inplace */
1799
0x3fffc00, /* dst_mask */
1800
FALSE), /* pcrel_offset */
1802
/* Used in MOVI and SHORI (((x - $) >> 32) & 65536). */
1803
HOWTO (R_SH_IMM_MEDHI16_PCREL, /* type */
1804
32, /* rightshift */
1805
2, /* size (0 = byte, 1 = short, 2 = long) */
1807
TRUE, /* pc_relative */
1809
complain_overflow_dont, /* complain_on_overflow */
1810
bfd_elf_generic_reloc, /* special_function */
1811
"R_SH_IMM_MEDHI16_PCREL", /* name */
1812
FALSE, /* partial_inplace */
1814
0x3fffc00, /* dst_mask */
1815
TRUE), /* pcrel_offset */
1817
/* Used in MOVI and SHORI ((x >> 48) & 65536). */
1818
HOWTO (R_SH_IMM_HI16, /* type */
1819
48, /* rightshift */
1820
2, /* size (0 = byte, 1 = short, 2 = long) */
1822
FALSE, /* pc_relative */
1824
complain_overflow_dont, /* complain_on_overflow */
1825
bfd_elf_generic_reloc, /* special_function */
1826
"R_SH_IMM_HI16", /* name */
1827
FALSE, /* partial_inplace */
1829
0x3fffc00, /* dst_mask */
1830
FALSE), /* pcrel_offset */
1832
/* Used in MOVI and SHORI (((x - $) >> 48) & 65536). */
1833
HOWTO (R_SH_IMM_HI16_PCREL, /* type */
1834
48, /* rightshift */
1835
2, /* size (0 = byte, 1 = short, 2 = long) */
1837
TRUE, /* pc_relative */
1839
complain_overflow_dont, /* complain_on_overflow */
1840
bfd_elf_generic_reloc, /* special_function */
1841
"R_SH_IMM_HI16_PCREL", /* name */
1842
FALSE, /* partial_inplace */
1844
0x3fffc00, /* dst_mask */
1845
TRUE), /* pcrel_offset */
1847
/* For the .uaquad pseudo. */
1848
HOWTO (R_SH_64, /* type */
1850
4, /* size (0 = byte, 1 = short, 2 = long) */
1852
FALSE, /* pc_relative */
1854
complain_overflow_dont, /* complain_on_overflow */
1855
bfd_elf_generic_reloc, /* special_function */
1856
"R_SH_64", /* name */
1857
FALSE, /* partial_inplace */
1859
((bfd_vma) 0) - 1, /* dst_mask */
1860
FALSE), /* pcrel_offset */
1862
/* For the .uaquad pseudo, (x - $). */
1863
HOWTO (R_SH_64_PCREL, /* type */
1864
48, /* rightshift */
1865
2, /* size (0 = byte, 1 = short, 2 = long) */
1867
TRUE, /* pc_relative */
1869
complain_overflow_dont, /* complain_on_overflow */
1870
bfd_elf_generic_reloc, /* special_function */
1871
"R_SH_64_PCREL", /* name */
1872
FALSE, /* partial_inplace */
1874
((bfd_vma) 0) - 1, /* dst_mask */
1875
TRUE), /* pcrel_offset */
1879
#undef SH_SRC_MASK32