2 HOWTO (R_SH_NONE
, /* type */
4 0, /* size (0 = byte, 1 = short, 2 = long) */
6 FALSE
, /* pc_relative */
8 complain_overflow_dont
, /* complain_on_overflow */
9 sh_elf_ignore_reloc
, /* special_function */
10 "R_SH_NONE", /* name */
11 FALSE
, /* partial_inplace */
14 FALSE
), /* pcrel_offset */
16 /* 32 bit absolute relocation. Setting partial_inplace to TRUE and
17 src_mask to a non-zero value is similar to the COFF toolchain. */
18 HOWTO (R_SH_DIR32
, /* type */
20 2, /* size (0 = byte, 1 = short, 2 = long) */
22 FALSE
, /* pc_relative */
24 complain_overflow_bitfield
, /* complain_on_overflow */
25 SH_ELF_RELOC
, /* special_function */
26 "R_SH_DIR32", /* name */
27 SH_PARTIAL32
, /* partial_inplace */
28 SH_SRC_MASK32
, /* src_mask */
29 0xffffffff, /* dst_mask */
30 FALSE
), /* pcrel_offset */
32 /* 32 bit PC relative relocation. */
33 HOWTO (R_SH_REL32
, /* type */
35 2, /* size (0 = byte, 1 = short, 2 = long) */
37 TRUE
, /* pc_relative */
39 complain_overflow_signed
, /* complain_on_overflow */
40 sh_elf_ignore_reloc
, /* special_function */
41 "R_SH_REL32", /* name */
42 SH_PARTIAL32
, /* partial_inplace */
43 SH_SRC_MASK32
, /* src_mask */
44 0xffffffff, /* dst_mask */
45 TRUE
), /* pcrel_offset */
47 /* 8 bit PC relative branch divided by 2. */
48 HOWTO (R_SH_DIR8WPN
, /* type */
50 1, /* size (0 = byte, 1 = short, 2 = long) */
52 TRUE
, /* pc_relative */
54 complain_overflow_signed
, /* complain_on_overflow */
55 sh_elf_ignore_reloc
, /* special_function */
56 "R_SH_DIR8WPN", /* name */
57 TRUE
, /* partial_inplace */
60 TRUE
), /* pcrel_offset */
62 /* 12 bit PC relative branch divided by 2. */
63 /* This cannot be partial_inplace because relaxation can't know the
64 eventual value of a symbol. */
65 HOWTO (R_SH_IND12W
, /* type */
67 1, /* size (0 = byte, 1 = short, 2 = long) */
69 TRUE
, /* pc_relative */
71 complain_overflow_signed
, /* complain_on_overflow */
72 NULL
, /* special_function */
73 "R_SH_IND12W", /* name */
74 FALSE
, /* partial_inplace */
77 TRUE
), /* pcrel_offset */
79 /* 8 bit unsigned PC relative divided by 4. */
80 HOWTO (R_SH_DIR8WPL
, /* type */
82 1, /* size (0 = byte, 1 = short, 2 = long) */
84 TRUE
, /* pc_relative */
86 complain_overflow_unsigned
, /* complain_on_overflow */
87 sh_elf_ignore_reloc
, /* special_function */
88 "R_SH_DIR8WPL", /* name */
89 TRUE
, /* partial_inplace */
92 TRUE
), /* pcrel_offset */
94 /* 8 bit unsigned PC relative divided by 2. */
95 HOWTO (R_SH_DIR8WPZ
, /* type */
97 1, /* size (0 = byte, 1 = short, 2 = long) */
99 TRUE
, /* pc_relative */
101 complain_overflow_unsigned
, /* complain_on_overflow */
102 sh_elf_ignore_reloc
, /* special_function */
103 "R_SH_DIR8WPZ", /* name */
104 TRUE
, /* partial_inplace */
107 TRUE
), /* pcrel_offset */
109 /* 8 bit GBR relative. FIXME: This only makes sense if we have some
110 special symbol for the GBR relative area, and that is not
112 HOWTO (R_SH_DIR8BP
, /* type */
114 1, /* size (0 = byte, 1 = short, 2 = long) */
116 FALSE
, /* pc_relative */
118 complain_overflow_unsigned
, /* complain_on_overflow */
119 sh_elf_ignore_reloc
, /* special_function */
120 "R_SH_DIR8BP", /* name */
121 FALSE
, /* partial_inplace */
124 TRUE
), /* pcrel_offset */
126 /* 8 bit GBR relative divided by 2. FIXME: This only makes sense if
127 we have some special symbol for the GBR relative area, and that
128 is not implemented. */
129 HOWTO (R_SH_DIR8W
, /* type */
131 1, /* size (0 = byte, 1 = short, 2 = long) */
133 FALSE
, /* pc_relative */
135 complain_overflow_unsigned
, /* complain_on_overflow */
136 sh_elf_ignore_reloc
, /* special_function */
137 "R_SH_DIR8W", /* name */
138 FALSE
, /* partial_inplace */
141 TRUE
), /* pcrel_offset */
143 /* 8 bit GBR relative divided by 4. FIXME: This only makes sense if
144 we have some special symbol for the GBR relative area, and that
145 is not implemented. */
146 HOWTO (R_SH_DIR8L
, /* type */
148 1, /* size (0 = byte, 1 = short, 2 = long) */
150 FALSE
, /* pc_relative */
152 complain_overflow_unsigned
, /* complain_on_overflow */
153 sh_elf_ignore_reloc
, /* special_function */
154 "R_SH_DIR8L", /* name */
155 FALSE
, /* partial_inplace */
158 TRUE
), /* pcrel_offset */
160 /* 8 bit PC relative divided by 2 - but specified in a very odd way. */
161 HOWTO (R_SH_LOOP_START
, /* type */
163 1, /* size (0 = byte, 1 = short, 2 = long) */
165 FALSE
, /* pc_relative */
167 complain_overflow_signed
, /* complain_on_overflow */
168 sh_elf_ignore_reloc
, /* special_function */
169 "R_SH_LOOP_START", /* name */
170 TRUE
, /* partial_inplace */
173 TRUE
), /* pcrel_offset */
175 /* 8 bit PC relative divided by 2 - but specified in a very odd way. */
176 HOWTO (R_SH_LOOP_END
, /* type */
178 1, /* size (0 = byte, 1 = short, 2 = long) */
180 FALSE
, /* pc_relative */
182 complain_overflow_signed
, /* complain_on_overflow */
183 sh_elf_ignore_reloc
, /* special_function */
184 "R_SH_LOOP_END", /* name */
185 TRUE
, /* partial_inplace */
188 TRUE
), /* pcrel_offset */
201 /* The remaining relocs are a GNU extension used for relaxing. The
202 final pass of the linker never needs to do anything with any of
203 these relocs. Any required operations are handled by the
206 /* GNU extension to record C++ vtable hierarchy */
207 HOWTO (R_SH_GNU_VTINHERIT
, /* type */
209 2, /* size (0 = byte, 1 = short, 2 = long) */
211 FALSE
, /* pc_relative */
213 complain_overflow_dont
, /* complain_on_overflow */
214 NULL
, /* special_function */
215 "R_SH_GNU_VTINHERIT", /* name */
216 FALSE
, /* partial_inplace */
219 FALSE
), /* pcrel_offset */
221 /* GNU extension to record C++ vtable member usage */
222 HOWTO (R_SH_GNU_VTENTRY
, /* type */
224 2, /* size (0 = byte, 1 = short, 2 = long) */
226 FALSE
, /* pc_relative */
228 complain_overflow_dont
, /* complain_on_overflow */
229 _bfd_elf_rel_vtable_reloc_fn
, /* special_function */
230 "R_SH_GNU_VTENTRY", /* name */
231 FALSE
, /* partial_inplace */
234 FALSE
), /* pcrel_offset */
236 /* An 8 bit switch table entry. This is generated for an expression
237 such as ``.word L1 - L2''. The offset holds the difference
238 between the reloc address and L2. */
239 HOWTO (R_SH_SWITCH8
, /* type */
241 0, /* size (0 = byte, 1 = short, 2 = long) */
243 FALSE
, /* pc_relative */
245 complain_overflow_unsigned
, /* complain_on_overflow */
246 sh_elf_ignore_reloc
, /* special_function */
247 "R_SH_SWITCH8", /* name */
248 FALSE
, /* partial_inplace */
251 TRUE
), /* pcrel_offset */
253 /* A 16 bit switch table entry. This is generated for an expression
254 such as ``.word L1 - L2''. The offset holds the difference
255 between the reloc address and L2. */
256 HOWTO (R_SH_SWITCH16
, /* type */
258 1, /* size (0 = byte, 1 = short, 2 = long) */
260 FALSE
, /* pc_relative */
262 complain_overflow_unsigned
, /* complain_on_overflow */
263 sh_elf_ignore_reloc
, /* special_function */
264 "R_SH_SWITCH16", /* name */
265 FALSE
, /* partial_inplace */
268 TRUE
), /* pcrel_offset */
270 /* A 32 bit switch table entry. This is generated for an expression
271 such as ``.long L1 - L2''. The offset holds the difference
272 between the reloc address and L2. */
273 HOWTO (R_SH_SWITCH32
, /* type */
275 2, /* size (0 = byte, 1 = short, 2 = long) */
277 FALSE
, /* pc_relative */
279 complain_overflow_unsigned
, /* complain_on_overflow */
280 sh_elf_ignore_reloc
, /* special_function */
281 "R_SH_SWITCH32", /* name */
282 FALSE
, /* partial_inplace */
285 TRUE
), /* pcrel_offset */
287 /* Indicates a .uses pseudo-op. The compiler will generate .uses
288 pseudo-ops when it finds a function call which can be relaxed.
289 The offset field holds the PC relative offset to the instruction
290 which loads the register used in the function call. */
291 HOWTO (R_SH_USES
, /* type */
293 1, /* size (0 = byte, 1 = short, 2 = long) */
295 FALSE
, /* pc_relative */
297 complain_overflow_unsigned
, /* complain_on_overflow */
298 sh_elf_ignore_reloc
, /* special_function */
299 "R_SH_USES", /* name */
300 FALSE
, /* partial_inplace */
303 TRUE
), /* pcrel_offset */
305 /* The assembler will generate this reloc for addresses referred to
306 by the register loads associated with USES relocs. The offset
307 field holds the number of times the address is referenced in the
309 HOWTO (R_SH_COUNT
, /* type */
311 1, /* size (0 = byte, 1 = short, 2 = long) */
313 FALSE
, /* pc_relative */
315 complain_overflow_unsigned
, /* complain_on_overflow */
316 sh_elf_ignore_reloc
, /* special_function */
317 "R_SH_COUNT", /* name */
318 FALSE
, /* partial_inplace */
321 TRUE
), /* pcrel_offset */
323 /* Indicates an alignment statement. The offset field is the power
324 of 2 to which subsequent portions of the object file must be
326 HOWTO (R_SH_ALIGN
, /* type */
328 1, /* size (0 = byte, 1 = short, 2 = long) */
330 FALSE
, /* pc_relative */
332 complain_overflow_unsigned
, /* complain_on_overflow */
333 sh_elf_ignore_reloc
, /* special_function */
334 "R_SH_ALIGN", /* name */
335 FALSE
, /* partial_inplace */
338 TRUE
), /* pcrel_offset */
340 /* The assembler will generate this reloc before a block of
341 instructions. A section should be processed as assuming it
342 contains data, unless this reloc is seen. */
343 HOWTO (R_SH_CODE
, /* type */
345 1, /* size (0 = byte, 1 = short, 2 = long) */
347 FALSE
, /* pc_relative */
349 complain_overflow_unsigned
, /* complain_on_overflow */
350 sh_elf_ignore_reloc
, /* special_function */
351 "R_SH_CODE", /* name */
352 FALSE
, /* partial_inplace */
355 TRUE
), /* pcrel_offset */
357 /* The assembler will generate this reloc after a block of
358 instructions when it sees data that is not instructions. */
359 HOWTO (R_SH_DATA
, /* type */
361 1, /* size (0 = byte, 1 = short, 2 = long) */
363 FALSE
, /* pc_relative */
365 complain_overflow_unsigned
, /* complain_on_overflow */
366 sh_elf_ignore_reloc
, /* special_function */
367 "R_SH_DATA", /* name */
368 FALSE
, /* partial_inplace */
371 TRUE
), /* pcrel_offset */
373 /* The assembler generates this reloc for each label within a block
374 of instructions. This permits the linker to avoid swapping
375 instructions which are the targets of branches. */
376 HOWTO (R_SH_LABEL
, /* type */
378 1, /* size (0 = byte, 1 = short, 2 = long) */
380 FALSE
, /* pc_relative */
382 complain_overflow_unsigned
, /* complain_on_overflow */
383 sh_elf_ignore_reloc
, /* special_function */
384 "R_SH_LABEL", /* name */
385 FALSE
, /* partial_inplace */
388 TRUE
), /* pcrel_offset */
390 /* The next 12 are only supported via linking in SHC-generated objects. */
391 HOWTO (R_SH_DIR16
, /* type */
393 1, /* size (0 = byte, 1 = short, 2 = long) */
395 FALSE
, /* pc_relative */
397 complain_overflow_dont
, /* complain_on_overflow */
398 bfd_elf_generic_reloc
, /* special_function */
399 "R_SH_DIR16", /* name */
400 FALSE
, /* partial_inplace */
402 0xffff, /* dst_mask */
403 FALSE
), /* pcrel_offset */
405 HOWTO (R_SH_DIR8
, /* type */
407 0, /* size (0 = byte, 1 = short, 2 = long) */
409 FALSE
, /* pc_relative */
411 complain_overflow_dont
, /* complain_on_overflow */
412 bfd_elf_generic_reloc
, /* special_function */
413 "R_SH_DIR8", /* name */
414 FALSE
, /* partial_inplace */
417 FALSE
), /* pcrel_offset */
419 HOWTO (R_SH_DIR8UL
, /* type */
421 0, /* size (0 = byte, 1 = short, 2 = long) */
423 FALSE
, /* pc_relative */
425 complain_overflow_unsigned
, /* complain_on_overflow */
426 bfd_elf_generic_reloc
, /* special_function */
427 "R_SH_DIR8UL", /* name */
428 FALSE
, /* partial_inplace */
431 FALSE
), /* pcrel_offset */
433 HOWTO (R_SH_DIR8UW
, /* type */
435 0, /* size (0 = byte, 1 = short, 2 = long) */
437 FALSE
, /* pc_relative */
439 complain_overflow_unsigned
, /* complain_on_overflow */
440 bfd_elf_generic_reloc
, /* special_function */
441 "R_SH_DIR8UW", /* name */
442 FALSE
, /* partial_inplace */
445 FALSE
), /* pcrel_offset */
447 HOWTO (R_SH_DIR8U
, /* type */
449 0, /* size (0 = byte, 1 = short, 2 = long) */
451 FALSE
, /* pc_relative */
453 complain_overflow_unsigned
, /* complain_on_overflow */
454 bfd_elf_generic_reloc
, /* special_function */
455 "R_SH_DIR8U", /* name */
456 FALSE
, /* partial_inplace */
459 FALSE
), /* pcrel_offset */
461 HOWTO (R_SH_DIR8SW
, /* type */
463 0, /* size (0 = byte, 1 = short, 2 = long) */
465 FALSE
, /* pc_relative */
467 complain_overflow_signed
, /* complain_on_overflow */
468 bfd_elf_generic_reloc
, /* special_function */
469 "R_SH_DIR8SW", /* name */
470 FALSE
, /* partial_inplace */
473 FALSE
), /* pcrel_offset */
475 HOWTO (R_SH_DIR8S
, /* type */
477 0, /* size (0 = byte, 1 = short, 2 = long) */
479 FALSE
, /* pc_relative */
481 complain_overflow_signed
, /* complain_on_overflow */
482 bfd_elf_generic_reloc
, /* special_function */
483 "R_SH_DIR8S", /* name */
484 FALSE
, /* partial_inplace */
487 FALSE
), /* pcrel_offset */
489 HOWTO (R_SH_DIR4UL
, /* type */
491 0, /* size (0 = byte, 1 = short, 2 = long) */
493 FALSE
, /* pc_relative */
495 complain_overflow_unsigned
, /* complain_on_overflow */
496 bfd_elf_generic_reloc
, /* special_function */
497 "R_SH_DIR4UL", /* name */
498 FALSE
, /* partial_inplace */
501 FALSE
), /* pcrel_offset */
503 HOWTO (R_SH_DIR4UW
, /* type */
505 0, /* size (0 = byte, 1 = short, 2 = long) */
507 FALSE
, /* pc_relative */
509 complain_overflow_unsigned
, /* complain_on_overflow */
510 bfd_elf_generic_reloc
, /* special_function */
511 "R_SH_DIR4UW", /* name */
512 FALSE
, /* partial_inplace */
515 FALSE
), /* pcrel_offset */
517 HOWTO (R_SH_DIR4U
, /* type */
519 0, /* size (0 = byte, 1 = short, 2 = long) */
521 FALSE
, /* pc_relative */
523 complain_overflow_unsigned
, /* complain_on_overflow */
524 bfd_elf_generic_reloc
, /* special_function */
525 "R_SH_DIR4U", /* name */
526 FALSE
, /* partial_inplace */
529 FALSE
), /* pcrel_offset */
531 HOWTO (R_SH_PSHA
, /* type */
533 1, /* size (0 = byte, 1 = short, 2 = long) */
535 FALSE
, /* pc_relative */
537 complain_overflow_signed
, /* complain_on_overflow */
538 bfd_elf_generic_reloc
, /* special_function */
539 "R_SH_PSHA", /* name */
540 FALSE
, /* partial_inplace */
543 FALSE
), /* pcrel_offset */
545 HOWTO (R_SH_PSHL
, /* type */
547 1, /* size (0 = byte, 1 = short, 2 = long) */
549 FALSE
, /* pc_relative */
551 complain_overflow_signed
, /* complain_on_overflow */
552 bfd_elf_generic_reloc
, /* special_function */
553 "R_SH_PSHL", /* name */
554 FALSE
, /* partial_inplace */
557 FALSE
), /* pcrel_offset */
559 #ifdef INCLUDE_SHMEDIA
560 /* Used in SHLLI.L and SHLRI.L. */
561 HOWTO (R_SH_DIR5U
, /* type */
563 2, /* size (0 = byte, 1 = short, 2 = long) */
565 FALSE
, /* pc_relative */
567 complain_overflow_unsigned
, /* complain_on_overflow */
568 bfd_elf_generic_reloc
, /* special_function */
569 "R_SH_DIR5U", /* name */
570 FALSE
, /* partial_inplace */
572 0xfc00, /* dst_mask */
573 FALSE
), /* pcrel_offset */
575 /* Used in SHARI, SHLLI et al. */
576 HOWTO (R_SH_DIR6U
, /* type */
578 2, /* size (0 = byte, 1 = short, 2 = long) */
580 FALSE
, /* pc_relative */
582 complain_overflow_unsigned
, /* complain_on_overflow */
583 bfd_elf_generic_reloc
, /* special_function */
584 "R_SH_DIR6U", /* name */
585 FALSE
, /* partial_inplace */
587 0xfc00, /* dst_mask */
588 FALSE
), /* pcrel_offset */
590 /* Used in BxxI, LDHI.L et al. */
591 HOWTO (R_SH_DIR6S
, /* type */
593 2, /* size (0 = byte, 1 = short, 2 = long) */
595 FALSE
, /* pc_relative */
597 complain_overflow_signed
, /* complain_on_overflow */
598 bfd_elf_generic_reloc
, /* special_function */
599 "R_SH_DIR6S", /* name */
600 FALSE
, /* partial_inplace */
602 0xfc00, /* dst_mask */
603 FALSE
), /* pcrel_offset */
605 /* Used in ADDI, ANDI et al. */
606 HOWTO (R_SH_DIR10S
, /* type */
608 2, /* size (0 = byte, 1 = short, 2 = long) */
610 FALSE
, /* pc_relative */
612 complain_overflow_signed
, /* complain_on_overflow */
613 bfd_elf_generic_reloc
, /* special_function */
614 "R_SH_DIR10S", /* name */
615 FALSE
, /* partial_inplace */
617 0xffc00, /* dst_mask */
618 FALSE
), /* pcrel_offset */
620 /* Used in LD.UW, ST.W et al. */
621 HOWTO (R_SH_DIR10SW
, /* type */
623 2, /* size (0 = byte, 1 = short, 2 = long) */
625 FALSE
, /* pc_relative */
627 complain_overflow_signed
, /* complain_on_overflow */
628 bfd_elf_generic_reloc
, /* special_function */
629 "R_SH_DIR10SW", /* name */
630 FALSE
, /* partial_inplace */
632 0xffc00, /* dst_mask */
633 FALSE
), /* pcrel_offset */
635 /* Used in LD.L, FLD.S et al. */
636 HOWTO (R_SH_DIR10SL
, /* type */
638 2, /* size (0 = byte, 1 = short, 2 = long) */
640 FALSE
, /* pc_relative */
642 complain_overflow_signed
, /* complain_on_overflow */
643 bfd_elf_generic_reloc
, /* special_function */
644 "R_SH_DIR10SL", /* name */
645 FALSE
, /* partial_inplace */
647 0xffc00, /* dst_mask */
648 FALSE
), /* pcrel_offset */
650 /* Used in FLD.D, FST.P et al. */
651 HOWTO (R_SH_DIR10SQ
, /* type */
653 2, /* size (0 = byte, 1 = short, 2 = long) */
655 FALSE
, /* pc_relative */
657 complain_overflow_signed
, /* complain_on_overflow */
658 bfd_elf_generic_reloc
, /* special_function */
659 "R_SH_DIR10SQ", /* name */
660 FALSE
, /* partial_inplace */
662 0xffc00, /* dst_mask */
663 FALSE
), /* pcrel_offset */
677 HOWTO (R_SH_DIR16S
, /* type */
679 1, /* size (0 = byte, 1 = short, 2 = long) */
681 FALSE
, /* pc_relative */
683 complain_overflow_signed
, /* complain_on_overflow */
684 bfd_elf_generic_reloc
, /* special_function */
685 "R_SH_DIR16S", /* name */
686 FALSE
, /* partial_inplace */
688 0xffff, /* dst_mask */
689 FALSE
), /* pcrel_offset */
782 HOWTO (R_SH_TLS_GD_32
, /* type */
784 2, /* size (0 = byte, 1 = short, 2 = long) */
786 FALSE
, /* pc_relative */
788 complain_overflow_bitfield
, /* complain_on_overflow */
789 bfd_elf_generic_reloc
, /* */
790 "R_SH_TLS_GD_32", /* name */
791 SH_PARTIAL32
, /* partial_inplace */
792 SH_SRC_MASK32
, /* src_mask */
793 0xffffffff, /* dst_mask */
794 FALSE
), /* pcrel_offset */
796 HOWTO (R_SH_TLS_LD_32
, /* type */
798 2, /* size (0 = byte, 1 = short, 2 = long) */
800 FALSE
, /* pc_relative */
802 complain_overflow_bitfield
, /* complain_on_overflow */
803 bfd_elf_generic_reloc
, /* */
804 "R_SH_TLS_LD_32", /* name */
805 SH_PARTIAL32
, /* partial_inplace */
806 SH_SRC_MASK32
, /* src_mask */
807 0xffffffff, /* dst_mask */
808 FALSE
), /* pcrel_offset */
810 HOWTO (R_SH_TLS_LDO_32
, /* type */
812 2, /* size (0 = byte, 1 = short, 2 = long) */
814 FALSE
, /* pc_relative */
816 complain_overflow_bitfield
, /* complain_on_overflow */
817 bfd_elf_generic_reloc
, /* */
818 "R_SH_TLS_LDO_32", /* name */
819 SH_PARTIAL32
, /* partial_inplace */
820 SH_SRC_MASK32
, /* src_mask */
821 0xffffffff, /* dst_mask */
822 FALSE
), /* pcrel_offset */
824 HOWTO (R_SH_TLS_IE_32
, /* type */
826 2, /* size (0 = byte, 1 = short, 2 = long) */
828 FALSE
, /* pc_relative */
830 complain_overflow_bitfield
, /* complain_on_overflow */
831 bfd_elf_generic_reloc
, /* */
832 "R_SH_TLS_IE_32", /* name */
833 SH_PARTIAL32
, /* partial_inplace */
834 SH_SRC_MASK32
, /* src_mask */
835 0xffffffff, /* dst_mask */
836 FALSE
), /* pcrel_offset */
838 HOWTO (R_SH_TLS_LE_32
, /* type */
840 2, /* size (0 = byte, 1 = short, 2 = long) */
842 FALSE
, /* pc_relative */
844 complain_overflow_bitfield
, /* complain_on_overflow */
845 bfd_elf_generic_reloc
, /* */
846 "R_SH_TLS_LE_32", /* name */
847 SH_PARTIAL32
, /* partial_inplace */
848 SH_SRC_MASK32
, /* src_mask */
849 0xffffffff, /* dst_mask */
850 FALSE
), /* pcrel_offset */
852 HOWTO (R_SH_TLS_DTPMOD32
, /* type */
854 2, /* size (0 = byte, 1 = short, 2 = long) */
856 FALSE
, /* pc_relative */
858 complain_overflow_bitfield
, /* complain_on_overflow */
859 bfd_elf_generic_reloc
, /* */
860 "R_SH_TLS_DTPMOD32", /* name */
861 SH_PARTIAL32
, /* partial_inplace */
862 SH_SRC_MASK32
, /* src_mask */
863 0xffffffff, /* dst_mask */
864 FALSE
), /* pcrel_offset */
866 HOWTO (R_SH_TLS_DTPOFF32
, /* type */
868 2, /* size (0 = byte, 1 = short, 2 = long) */
870 FALSE
, /* pc_relative */
872 complain_overflow_bitfield
, /* complain_on_overflow */
873 bfd_elf_generic_reloc
, /* */
874 "R_SH_TLS_DTPOFF32", /* name */
875 SH_PARTIAL32
, /* partial_inplace */
876 SH_SRC_MASK32
, /* src_mask */
877 0xffffffff, /* dst_mask */
878 FALSE
), /* pcrel_offset */
880 HOWTO (R_SH_TLS_TPOFF32
, /* type */
882 2, /* size (0 = byte, 1 = short, 2 = long) */
884 FALSE
, /* pc_relative */
886 complain_overflow_bitfield
, /* complain_on_overflow */
887 bfd_elf_generic_reloc
, /* */
888 "R_SH_TLS_TPOFF32", /* name */
889 SH_PARTIAL32
, /* partial_inplace */
890 SH_SRC_MASK32
, /* src_mask */
891 0xffffffff, /* dst_mask */
892 FALSE
), /* pcrel_offset */
903 HOWTO (R_SH_GOT32
, /* type */
905 2, /* size (0 = byte, 1 = short, 2 = long) */
907 FALSE
, /* pc_relative */
909 complain_overflow_bitfield
, /* complain_on_overflow */
910 bfd_elf_generic_reloc
, /* */
911 "R_SH_GOT32", /* name */
912 SH_PARTIAL32
, /* partial_inplace */
913 SH_SRC_MASK32
, /* src_mask */
914 0xffffffff, /* dst_mask */
915 FALSE
), /* pcrel_offset */
917 HOWTO (R_SH_PLT32
, /* type */
919 2, /* size (0 = byte, 1 = short, 2 = long) */
921 TRUE
, /* pc_relative */
923 complain_overflow_bitfield
, /* complain_on_overflow */
924 bfd_elf_generic_reloc
, /* */
925 "R_SH_PLT32", /* name */
926 SH_PARTIAL32
, /* partial_inplace */
927 SH_SRC_MASK32
, /* src_mask */
928 0xffffffff, /* dst_mask */
929 TRUE
), /* pcrel_offset */
931 HOWTO (R_SH_COPY
, /* type */
933 2, /* size (0 = byte, 1 = short, 2 = long) */
935 FALSE
, /* pc_relative */
937 complain_overflow_bitfield
, /* complain_on_overflow */
938 bfd_elf_generic_reloc
, /* */
939 "R_SH_COPY", /* name */
940 SH_PARTIAL32
, /* partial_inplace */
941 SH_SRC_MASK32
, /* src_mask */
942 0xffffffff, /* dst_mask */
943 FALSE
), /* pcrel_offset */
945 HOWTO (R_SH_GLOB_DAT
, /* type */
947 2, /* size (0 = byte, 1 = short, 2 = long) */
949 FALSE
, /* pc_relative */
951 complain_overflow_bitfield
, /* complain_on_overflow */
952 bfd_elf_generic_reloc
, /* */
953 "R_SH_GLOB_DAT", /* name */
954 SH_PARTIAL32
, /* partial_inplace */
955 SH_SRC_MASK32
, /* src_mask */
956 0xffffffff, /* dst_mask */
957 FALSE
), /* pcrel_offset */
959 HOWTO (R_SH_JMP_SLOT
, /* type */
961 2, /* size (0 = byte, 1 = short, 2 = long) */
963 FALSE
, /* pc_relative */
965 complain_overflow_bitfield
, /* complain_on_overflow */
966 bfd_elf_generic_reloc
, /* */
967 "R_SH_JMP_SLOT", /* name */
968 SH_PARTIAL32
, /* partial_inplace */
969 SH_SRC_MASK32
, /* src_mask */
970 0xffffffff, /* dst_mask */
971 FALSE
), /* pcrel_offset */
973 HOWTO (R_SH_RELATIVE
, /* type */
975 2, /* size (0 = byte, 1 = short, 2 = long) */
977 FALSE
, /* pc_relative */
979 complain_overflow_bitfield
, /* complain_on_overflow */
980 bfd_elf_generic_reloc
, /* */
981 "R_SH_RELATIVE", /* name */
982 SH_PARTIAL32
, /* partial_inplace */
983 SH_SRC_MASK32
, /* src_mask */
984 0xffffffff, /* dst_mask */
985 FALSE
), /* pcrel_offset */
987 HOWTO (R_SH_GOTOFF
, /* type */
989 2, /* size (0 = byte, 1 = short, 2 = long) */
991 FALSE
, /* pc_relative */
993 complain_overflow_bitfield
, /* complain_on_overflow */
994 bfd_elf_generic_reloc
, /* */
995 "R_SH_GOTOFF", /* name */
996 SH_PARTIAL32
, /* partial_inplace */
997 SH_SRC_MASK32
, /* src_mask */
998 0xffffffff, /* dst_mask */
999 FALSE
), /* pcrel_offset */
1001 HOWTO (R_SH_GOTPC
, /* type */
1003 2, /* size (0 = byte, 1 = short, 2 = long) */
1005 TRUE
, /* pc_relative */
1007 complain_overflow_bitfield
, /* complain_on_overflow */
1008 bfd_elf_generic_reloc
, /* */
1009 "R_SH_GOTPC", /* name */
1010 SH_PARTIAL32
, /* partial_inplace */
1011 SH_SRC_MASK32
, /* src_mask */
1012 0xffffffff, /* dst_mask */
1013 TRUE
), /* pcrel_offset */
1015 HOWTO (R_SH_GOTPLT32
, /* type */
1017 2, /* size (0 = byte, 1 = short, 2 = long) */
1019 FALSE
, /* pc_relative */
1021 complain_overflow_bitfield
, /* complain_on_overflow */
1022 bfd_elf_generic_reloc
, /* */
1023 "R_SH_GOTPLT32", /* name */
1024 FALSE
, /* partial_inplace */
1025 /* ??? Why not 0? */
1026 SH_SRC_MASK32
, /* src_mask */
1027 0xffffffff, /* dst_mask */
1028 FALSE
), /* pcrel_offset */
1030 #ifdef INCLUDE_SHMEDIA
1031 /* Used in MOVI and SHORI (x & 65536). */
1032 HOWTO (R_SH_GOT_LOW16
, /* type */
1034 2, /* size (0 = byte, 1 = short, 2 = long) */
1036 FALSE
, /* pc_relative */
1038 complain_overflow_dont
, /* complain_on_overflow */
1039 bfd_elf_generic_reloc
, /* special_function */
1040 "R_SH_GOT_LOW16", /* name */
1041 FALSE
, /* partial_inplace */
1043 0x3fffc00, /* dst_mask */
1044 FALSE
), /* pcrel_offset */
1046 /* Used in MOVI and SHORI ((x >> 16) & 65536). */
1047 HOWTO (R_SH_GOT_MEDLOW16
, /* type */
1048 16, /* rightshift */
1049 2, /* size (0 = byte, 1 = short, 2 = long) */
1051 FALSE
, /* pc_relative */
1053 complain_overflow_dont
, /* complain_on_overflow */
1054 bfd_elf_generic_reloc
, /* special_function */
1055 "R_SH_GOT_MEDLOW16", /* name */
1056 FALSE
, /* partial_inplace */
1058 0x3fffc00, /* dst_mask */
1059 FALSE
), /* pcrel_offset */
1061 /* Used in MOVI and SHORI ((x >> 32) & 65536). */
1062 HOWTO (R_SH_GOT_MEDHI16
, /* type */
1063 32, /* rightshift */
1064 2, /* size (0 = byte, 1 = short, 2 = long) */
1066 FALSE
, /* pc_relative */
1068 complain_overflow_dont
, /* complain_on_overflow */
1069 bfd_elf_generic_reloc
, /* special_function */
1070 "R_SH_GOT_MEDHI16", /* name */
1071 FALSE
, /* partial_inplace */
1073 0x3fffc00, /* dst_mask */
1074 FALSE
), /* pcrel_offset */
1076 /* Used in MOVI and SHORI ((x >> 48) & 65536). */
1077 HOWTO (R_SH_GOT_HI16
, /* type */
1078 48, /* rightshift */
1079 2, /* size (0 = byte, 1 = short, 2 = long) */
1081 FALSE
, /* pc_relative */
1083 complain_overflow_dont
, /* complain_on_overflow */
1084 bfd_elf_generic_reloc
, /* special_function */
1085 "R_SH_GOT_HI16", /* name */
1086 FALSE
, /* partial_inplace */
1088 0x3fffc00, /* dst_mask */
1089 FALSE
), /* pcrel_offset */
1091 /* Used in MOVI and SHORI (x & 65536). */
1092 HOWTO (R_SH_GOTPLT_LOW16
, /* type */
1094 2, /* size (0 = byte, 1 = short, 2 = long) */
1096 FALSE
, /* pc_relative */
1098 complain_overflow_dont
, /* complain_on_overflow */
1099 bfd_elf_generic_reloc
, /* special_function */
1100 "R_SH_GOTPLT_LOW16", /* name */
1101 FALSE
, /* partial_inplace */
1103 0x3fffc00, /* dst_mask */
1104 FALSE
), /* pcrel_offset */
1106 /* Used in MOVI and SHORI ((x >> 16) & 65536). */
1107 HOWTO (R_SH_GOTPLT_MEDLOW16
, /* type */
1108 16, /* rightshift */
1109 2, /* size (0 = byte, 1 = short, 2 = long) */
1111 FALSE
, /* pc_relative */
1113 complain_overflow_dont
, /* complain_on_overflow */
1114 bfd_elf_generic_reloc
, /* special_function */
1115 "R_SH_GOTPLT_MEDLOW16", /* name */
1116 FALSE
, /* partial_inplace */
1118 0x3fffc00, /* dst_mask */
1119 FALSE
), /* pcrel_offset */
1121 /* Used in MOVI and SHORI ((x >> 32) & 65536). */
1122 HOWTO (R_SH_GOTPLT_MEDHI16
, /* type */
1123 32, /* rightshift */
1124 2, /* size (0 = byte, 1 = short, 2 = long) */
1126 FALSE
, /* pc_relative */
1128 complain_overflow_dont
, /* complain_on_overflow */
1129 bfd_elf_generic_reloc
, /* special_function */
1130 "R_SH_GOTPLT_MEDHI16", /* name */
1131 FALSE
, /* partial_inplace */
1133 0x3fffc00, /* dst_mask */
1134 FALSE
), /* pcrel_offset */
1136 /* Used in MOVI and SHORI ((x >> 48) & 65536). */
1137 HOWTO (R_SH_GOTPLT_HI16
, /* type */
1138 48, /* rightshift */
1139 2, /* size (0 = byte, 1 = short, 2 = long) */
1141 FALSE
, /* pc_relative */
1143 complain_overflow_dont
, /* complain_on_overflow */
1144 bfd_elf_generic_reloc
, /* special_function */
1145 "R_SH_GOTPLT_HI16", /* name */
1146 FALSE
, /* partial_inplace */
1148 0x3fffc00, /* dst_mask */
1149 FALSE
), /* pcrel_offset */
1151 /* Used in MOVI and SHORI (x & 65536). */
1152 HOWTO (R_SH_PLT_LOW16
, /* type */
1154 2, /* size (0 = byte, 1 = short, 2 = long) */
1156 TRUE
, /* pc_relative */
1158 complain_overflow_dont
, /* complain_on_overflow */
1159 bfd_elf_generic_reloc
, /* special_function */
1160 "R_SH_PLT_LOW16", /* name */
1161 FALSE
, /* partial_inplace */
1163 0x3fffc00, /* dst_mask */
1164 TRUE
), /* pcrel_offset */
1166 /* Used in MOVI and SHORI ((x >> 16) & 65536). */
1167 HOWTO (R_SH_PLT_MEDLOW16
, /* type */
1168 16, /* rightshift */
1169 2, /* size (0 = byte, 1 = short, 2 = long) */
1171 TRUE
, /* pc_relative */
1173 complain_overflow_dont
, /* complain_on_overflow */
1174 bfd_elf_generic_reloc
, /* special_function */
1175 "R_SH_PLT_MEDLOW16", /* name */
1176 FALSE
, /* partial_inplace */
1178 0x3fffc00, /* dst_mask */
1179 TRUE
), /* pcrel_offset */
1181 /* Used in MOVI and SHORI ((x >> 32) & 65536). */
1182 HOWTO (R_SH_PLT_MEDHI16
, /* type */
1183 32, /* rightshift */
1184 2, /* size (0 = byte, 1 = short, 2 = long) */
1186 TRUE
, /* pc_relative */
1188 complain_overflow_dont
, /* complain_on_overflow */
1189 bfd_elf_generic_reloc
, /* special_function */
1190 "R_SH_PLT_MEDHI16", /* name */
1191 FALSE
, /* partial_inplace */
1193 0x3fffc00, /* dst_mask */
1194 TRUE
), /* pcrel_offset */
1196 /* Used in MOVI and SHORI ((x >> 48) & 65536). */
1197 HOWTO (R_SH_PLT_HI16
, /* type */
1198 48, /* rightshift */
1199 2, /* size (0 = byte, 1 = short, 2 = long) */
1201 TRUE
, /* pc_relative */
1203 complain_overflow_dont
, /* complain_on_overflow */
1204 bfd_elf_generic_reloc
, /* special_function */
1205 "R_SH_PLT_HI16", /* name */
1206 FALSE
, /* partial_inplace */
1208 0x3fffc00, /* dst_mask */
1209 TRUE
), /* pcrel_offset */
1211 /* Used in MOVI and SHORI (x & 65536). */
1212 HOWTO (R_SH_GOTOFF_LOW16
, /* type */
1214 2, /* size (0 = byte, 1 = short, 2 = long) */
1216 FALSE
, /* pc_relative */
1218 complain_overflow_dont
, /* complain_on_overflow */
1219 bfd_elf_generic_reloc
, /* special_function */
1220 "R_SH_GOTOFF_LOW16", /* name */
1221 FALSE
, /* partial_inplace */
1223 0x3fffc00, /* dst_mask */
1224 FALSE
), /* pcrel_offset */
1226 /* Used in MOVI and SHORI ((x >> 16) & 65536). */
1227 HOWTO (R_SH_GOTOFF_MEDLOW16
, /* type */
1228 16, /* rightshift */
1229 2, /* size (0 = byte, 1 = short, 2 = long) */
1231 FALSE
, /* pc_relative */
1233 complain_overflow_dont
, /* complain_on_overflow */
1234 bfd_elf_generic_reloc
, /* special_function */
1235 "R_SH_GOTOFF_MEDLOW16", /* name */
1236 FALSE
, /* partial_inplace */
1238 0x3fffc00, /* dst_mask */
1239 FALSE
), /* pcrel_offset */
1241 /* Used in MOVI and SHORI ((x >> 32) & 65536). */
1242 HOWTO (R_SH_GOTOFF_MEDHI16
, /* type */
1243 32, /* rightshift */
1244 2, /* size (0 = byte, 1 = short, 2 = long) */
1246 FALSE
, /* pc_relative */
1248 complain_overflow_dont
, /* complain_on_overflow */
1249 bfd_elf_generic_reloc
, /* special_function */
1250 "R_SH_GOTOFF_MEDHI16", /* name */
1251 FALSE
, /* partial_inplace */
1253 0x3fffc00, /* dst_mask */
1254 FALSE
), /* pcrel_offset */
1256 /* Used in MOVI and SHORI ((x >> 48) & 65536). */
1257 HOWTO (R_SH_GOTOFF_HI16
, /* type */
1258 48, /* rightshift */
1259 2, /* size (0 = byte, 1 = short, 2 = long) */
1261 FALSE
, /* pc_relative */
1263 complain_overflow_dont
, /* complain_on_overflow */
1264 bfd_elf_generic_reloc
, /* special_function */
1265 "R_SH_GOTOFF_HI16", /* name */
1266 FALSE
, /* partial_inplace */
1268 0x3fffc00, /* dst_mask */
1269 FALSE
), /* pcrel_offset */
1271 /* Used in MOVI and SHORI (x & 65536). */
1272 HOWTO (R_SH_GOTPC_LOW16
, /* type */
1274 2, /* size (0 = byte, 1 = short, 2 = long) */
1276 TRUE
, /* pc_relative */
1278 complain_overflow_dont
, /* complain_on_overflow */
1279 bfd_elf_generic_reloc
, /* special_function */
1280 "R_SH_GOTPC_LOW16", /* name */
1281 FALSE
, /* partial_inplace */
1283 0x3fffc00, /* dst_mask */
1284 TRUE
), /* pcrel_offset */
1286 /* Used in MOVI and SHORI ((x >> 16) & 65536). */
1287 HOWTO (R_SH_GOTPC_MEDLOW16
, /* type */
1288 16, /* rightshift */
1289 2, /* size (0 = byte, 1 = short, 2 = long) */
1291 TRUE
, /* pc_relative */
1293 complain_overflow_dont
, /* complain_on_overflow */
1294 bfd_elf_generic_reloc
, /* special_function */
1295 "R_SH_GOTPC_MEDLOW16", /* name */
1296 FALSE
, /* partial_inplace */
1298 0x3fffc00, /* dst_mask */
1299 TRUE
), /* pcrel_offset */
1301 /* Used in MOVI and SHORI ((x >> 32) & 65536). */
1302 HOWTO (R_SH_GOTPC_MEDHI16
, /* type */
1303 32, /* rightshift */
1304 2, /* size (0 = byte, 1 = short, 2 = long) */
1306 TRUE
, /* pc_relative */
1308 complain_overflow_dont
, /* complain_on_overflow */
1309 bfd_elf_generic_reloc
, /* special_function */
1310 "R_SH_GOTPC_MEDHI16", /* name */
1311 FALSE
, /* partial_inplace */
1313 0x3fffc00, /* dst_mask */
1314 TRUE
), /* pcrel_offset */
1316 /* Used in MOVI and SHORI ((x >> 48) & 65536). */
1317 HOWTO (R_SH_GOTPC_HI16
, /* type */
1318 48, /* rightshift */
1319 2, /* size (0 = byte, 1 = short, 2 = long) */
1321 TRUE
, /* pc_relative */
1323 complain_overflow_dont
, /* complain_on_overflow */
1324 bfd_elf_generic_reloc
, /* special_function */
1325 "R_SH_GOTPC_HI16", /* name */
1326 FALSE
, /* partial_inplace */
1328 0x3fffc00, /* dst_mask */
1329 TRUE
), /* pcrel_offset */
1331 /* Used in LD.L, FLD.S et al. */
1332 HOWTO (R_SH_GOT10BY4
, /* type */
1334 2, /* size (0 = byte, 1 = short, 2 = long) */
1336 FALSE
, /* pc_relative */
1338 complain_overflow_signed
, /* complain_on_overflow */
1339 bfd_elf_generic_reloc
, /* special_function */
1340 "R_SH_GOT10BY4", /* name */
1341 FALSE
, /* partial_inplace */
1343 0xffc00, /* dst_mask */
1344 FALSE
), /* pcrel_offset */
1346 /* Used in LD.L, FLD.S et al. */
1347 HOWTO (R_SH_GOTPLT10BY4
, /* type */
1349 2, /* size (0 = byte, 1 = short, 2 = long) */
1351 FALSE
, /* pc_relative */
1353 complain_overflow_signed
, /* complain_on_overflow */
1354 bfd_elf_generic_reloc
, /* special_function */
1355 "R_SH_GOTPLT10BY4", /* name */
1356 FALSE
, /* partial_inplace */
1358 0xffc00, /* dst_mask */
1359 FALSE
), /* pcrel_offset */
1361 /* Used in FLD.D, FST.P et al. */
1362 HOWTO (R_SH_GOT10BY8
, /* type */
1364 2, /* size (0 = byte, 1 = short, 2 = long) */
1366 FALSE
, /* pc_relative */
1368 complain_overflow_signed
, /* complain_on_overflow */
1369 bfd_elf_generic_reloc
, /* special_function */
1370 "R_SH_GOT10BY8", /* name */
1371 FALSE
, /* partial_inplace */
1373 0xffc00, /* dst_mask */
1374 FALSE
), /* pcrel_offset */
1376 /* Used in FLD.D, FST.P et al. */
1377 HOWTO (R_SH_GOTPLT10BY8
, /* type */
1379 2, /* size (0 = byte, 1 = short, 2 = long) */
1381 FALSE
, /* pc_relative */
1383 complain_overflow_signed
, /* complain_on_overflow */
1384 bfd_elf_generic_reloc
, /* special_function */
1385 "R_SH_GOTPLT10BY8", /* name */
1386 FALSE
, /* partial_inplace */
1388 0xffc00, /* dst_mask */
1389 FALSE
), /* pcrel_offset */
1391 HOWTO (R_SH_COPY64
, /* type */
1393 4, /* size (0 = byte, 1 = short, 2 = long) */
1395 FALSE
, /* pc_relative */
1397 complain_overflow_dont
, /* complain_on_overflow */
1398 bfd_elf_generic_reloc
, /* special_function */
1399 "R_SH_COPY64", /* name */
1400 FALSE
, /* partial_inplace */
1402 ((bfd_vma
) 0) - 1, /* dst_mask */
1403 FALSE
), /* pcrel_offset */
1405 HOWTO (R_SH_GLOB_DAT64
, /* type */
1407 4, /* size (0 = byte, 1 = short, 2 = long) */
1409 FALSE
, /* pc_relative */
1411 complain_overflow_dont
, /* complain_on_overflow */
1412 bfd_elf_generic_reloc
, /* special_function */
1413 "R_SH_GLOB_DAT64", /* name */
1414 FALSE
, /* partial_inplace */
1416 ((bfd_vma
) 0) - 1, /* dst_mask */
1417 FALSE
), /* pcrel_offset */
1419 HOWTO (R_SH_JMP_SLOT64
, /* type */
1421 4, /* size (0 = byte, 1 = short, 2 = long) */
1423 FALSE
, /* pc_relative */
1425 complain_overflow_dont
, /* complain_on_overflow */
1426 bfd_elf_generic_reloc
, /* special_function */
1427 "R_SH_JMP_SLOT64", /* name */
1428 FALSE
, /* partial_inplace */
1430 ((bfd_vma
) 0) - 1, /* dst_mask */
1431 FALSE
), /* pcrel_offset */
1433 HOWTO (R_SH_RELATIVE64
, /* type */
1435 4, /* size (0 = byte, 1 = short, 2 = long) */
1437 FALSE
, /* pc_relative */
1439 complain_overflow_dont
, /* complain_on_overflow */
1440 bfd_elf_generic_reloc
, /* special_function */
1441 "R_SH_RELATIVE64", /* name */
1442 FALSE
, /* partial_inplace */
1444 ((bfd_vma
) 0) - 1, /* dst_mask */
1445 FALSE
), /* pcrel_offset */
1493 /* Relocations for SHmedia code. None of these are partial_inplace or
1494 use the field being relocated (except R_SH_PT_16). */
1496 /* The assembler will generate this reloc before a block of SHmedia
1497 instructions. A section should be processed as assuming it contains
1498 data, unless this reloc is seen. Note that a block of SHcompact
1499 instructions are instead preceded by R_SH_CODE.
1500 This is currently not implemented, but should be used for SHmedia
1501 linker relaxation. */
1502 HOWTO (R_SH_SHMEDIA_CODE
, /* type */
1504 1, /* size (0 = byte, 1 = short, 2 = long) */
1506 FALSE
, /* pc_relative */
1508 complain_overflow_unsigned
, /* complain_on_overflow */
1509 sh_elf_ignore_reloc
, /* special_function */
1510 "R_SH_SHMEDIA_CODE", /* name */
1511 FALSE
, /* partial_inplace */
1514 FALSE
), /* pcrel_offset */
1516 /* The assembler will generate this reloc at a PTA or PTB instruction,
1517 and the linker checks the right type of target, or changes a PTA to a
1518 PTB, if the original insn was PT. */
1519 HOWTO (R_SH_PT_16
, /* type */
1521 2, /* size (0 = byte, 1 = short, 2 = long) */
1523 TRUE
, /* pc_relative */
1525 complain_overflow_signed
, /* complain_on_overflow */
1526 bfd_elf_generic_reloc
, /* special_function */
1527 "R_SH_PT_16", /* name */
1528 FALSE
, /* partial_inplace */
1530 0x3fffc00, /* dst_mask */
1531 TRUE
), /* pcrel_offset */
1533 /* Used in unexpanded MOVI. */
1534 HOWTO (R_SH_IMMS16
, /* type */
1536 2, /* size (0 = byte, 1 = short, 2 = long) */
1538 FALSE
, /* pc_relative */
1540 complain_overflow_signed
, /* complain_on_overflow */
1541 bfd_elf_generic_reloc
, /* special_function */
1542 "R_SH_IMMS16", /* name */
1543 FALSE
, /* partial_inplace */
1545 0x3fffc00, /* dst_mask */
1546 FALSE
), /* pcrel_offset */
1548 /* Used in SHORI. */
1549 HOWTO (R_SH_IMMU16
, /* type */
1551 2, /* size (0 = byte, 1 = short, 2 = long) */
1553 FALSE
, /* pc_relative */
1555 complain_overflow_unsigned
, /* complain_on_overflow */
1556 bfd_elf_generic_reloc
, /* special_function */
1557 "R_SH_IMMU16", /* name */
1558 FALSE
, /* partial_inplace */
1560 0x3fffc00, /* dst_mask */
1561 FALSE
), /* pcrel_offset */
1563 /* Used in MOVI and SHORI (x & 65536). */
1564 HOWTO (R_SH_IMM_LOW16
, /* type */
1566 2, /* size (0 = byte, 1 = short, 2 = long) */
1568 FALSE
, /* pc_relative */
1570 complain_overflow_dont
, /* complain_on_overflow */
1571 bfd_elf_generic_reloc
, /* special_function */
1572 "R_SH_IMM_LOW16", /* name */
1573 FALSE
, /* partial_inplace */
1575 0x3fffc00, /* dst_mask */
1576 FALSE
), /* pcrel_offset */
1578 /* Used in MOVI and SHORI ((x - $) & 65536). */
1579 HOWTO (R_SH_IMM_LOW16_PCREL
, /* type */
1581 2, /* size (0 = byte, 1 = short, 2 = long) */
1583 TRUE
, /* pc_relative */
1585 complain_overflow_dont
, /* complain_on_overflow */
1586 bfd_elf_generic_reloc
, /* special_function */
1587 "R_SH_IMM_LOW16_PCREL", /* name */
1588 FALSE
, /* partial_inplace */
1590 0x3fffc00, /* dst_mask */
1591 TRUE
), /* pcrel_offset */
1593 /* Used in MOVI and SHORI ((x >> 16) & 65536). */
1594 HOWTO (R_SH_IMM_MEDLOW16
, /* type */
1595 16, /* rightshift */
1596 2, /* size (0 = byte, 1 = short, 2 = long) */
1598 FALSE
, /* pc_relative */
1600 complain_overflow_dont
, /* complain_on_overflow */
1601 bfd_elf_generic_reloc
, /* special_function */
1602 "R_SH_IMM_MEDLOW16", /* name */
1603 FALSE
, /* partial_inplace */
1605 0x3fffc00, /* dst_mask */
1606 FALSE
), /* pcrel_offset */
1608 /* Used in MOVI and SHORI (((x - $) >> 16) & 65536). */
1609 HOWTO (R_SH_IMM_MEDLOW16_PCREL
, /* type */
1610 16, /* rightshift */
1611 2, /* size (0 = byte, 1 = short, 2 = long) */
1613 TRUE
, /* pc_relative */
1615 complain_overflow_dont
, /* complain_on_overflow */
1616 bfd_elf_generic_reloc
, /* special_function */
1617 "R_SH_IMM_MEDLOW16_PCREL", /* name */
1618 FALSE
, /* partial_inplace */
1620 0x3fffc00, /* dst_mask */
1621 TRUE
), /* pcrel_offset */
1623 /* Used in MOVI and SHORI ((x >> 32) & 65536). */
1624 HOWTO (R_SH_IMM_MEDHI16
, /* type */
1625 32, /* rightshift */
1626 2, /* size (0 = byte, 1 = short, 2 = long) */
1628 FALSE
, /* pc_relative */
1630 complain_overflow_dont
, /* complain_on_overflow */
1631 bfd_elf_generic_reloc
, /* special_function */
1632 "R_SH_IMM_MEDHI16", /* name */
1633 FALSE
, /* partial_inplace */
1635 0x3fffc00, /* dst_mask */
1636 FALSE
), /* pcrel_offset */
1638 /* Used in MOVI and SHORI (((x - $) >> 32) & 65536). */
1639 HOWTO (R_SH_IMM_MEDHI16_PCREL
, /* type */
1640 32, /* rightshift */
1641 2, /* size (0 = byte, 1 = short, 2 = long) */
1643 TRUE
, /* pc_relative */
1645 complain_overflow_dont
, /* complain_on_overflow */
1646 bfd_elf_generic_reloc
, /* special_function */
1647 "R_SH_IMM_MEDHI16_PCREL", /* name */
1648 FALSE
, /* partial_inplace */
1650 0x3fffc00, /* dst_mask */
1651 TRUE
), /* pcrel_offset */
1653 /* Used in MOVI and SHORI ((x >> 48) & 65536). */
1654 HOWTO (R_SH_IMM_HI16
, /* type */
1655 48, /* rightshift */
1656 2, /* size (0 = byte, 1 = short, 2 = long) */
1658 FALSE
, /* pc_relative */
1660 complain_overflow_dont
, /* complain_on_overflow */
1661 bfd_elf_generic_reloc
, /* special_function */
1662 "R_SH_IMM_HI16", /* name */
1663 FALSE
, /* partial_inplace */
1665 0x3fffc00, /* dst_mask */
1666 FALSE
), /* pcrel_offset */
1668 /* Used in MOVI and SHORI (((x - $) >> 48) & 65536). */
1669 HOWTO (R_SH_IMM_HI16_PCREL
, /* type */
1670 48, /* rightshift */
1671 2, /* size (0 = byte, 1 = short, 2 = long) */
1673 TRUE
, /* pc_relative */
1675 complain_overflow_dont
, /* complain_on_overflow */
1676 bfd_elf_generic_reloc
, /* special_function */
1677 "R_SH_IMM_HI16_PCREL", /* name */
1678 FALSE
, /* partial_inplace */
1680 0x3fffc00, /* dst_mask */
1681 TRUE
), /* pcrel_offset */
1683 /* For the .uaquad pseudo. */
1684 HOWTO (R_SH_64
, /* type */
1686 4, /* size (0 = byte, 1 = short, 2 = long) */
1688 FALSE
, /* pc_relative */
1690 complain_overflow_dont
, /* complain_on_overflow */
1691 bfd_elf_generic_reloc
, /* special_function */
1692 "R_SH_64", /* name */
1693 FALSE
, /* partial_inplace */
1695 ((bfd_vma
) 0) - 1, /* dst_mask */
1696 FALSE
), /* pcrel_offset */
1698 /* For the .uaquad pseudo, (x - $). */
1699 HOWTO (R_SH_64_PCREL
, /* type */
1700 48, /* rightshift */
1701 2, /* size (0 = byte, 1 = short, 2 = long) */
1703 TRUE
, /* pc_relative */
1705 complain_overflow_dont
, /* complain_on_overflow */
1706 bfd_elf_generic_reloc
, /* special_function */
1707 "R_SH_64_PCREL", /* name */
1708 FALSE
, /* partial_inplace */
1710 ((bfd_vma
) 0) - 1, /* dst_mask */
1711 TRUE
), /* pcrel_offset */
1715 #undef SH_SRC_MASK32