]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/binutils/bfd/elf32-sh-relocs.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / binutils / bfd / elf32-sh-relocs.h
1   /* No relocation.  */
2   HOWTO (R_SH_NONE,             /* type */
3          0,                     /* rightshift */
4          0,                     /* size (0 = byte, 1 = short, 2 = long) */
5          0,                     /* bitsize */
6          FALSE,                 /* pc_relative */
7          0,                     /* bitpos */
8          complain_overflow_dont, /* complain_on_overflow */
9          sh_elf_ignore_reloc,   /* special_function */
10          "R_SH_NONE",           /* name */
11          FALSE,                 /* partial_inplace */
12          0,                     /* src_mask */
13          0,                     /* dst_mask */
14          FALSE),                /* pcrel_offset */
15
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 */
19          0,                     /* rightshift */
20          2,                     /* size (0 = byte, 1 = short, 2 = long) */
21          32,                    /* bitsize */
22          FALSE,                 /* pc_relative */
23          0,                     /* bitpos */
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 */
31
32   /* 32 bit PC relative relocation.  */
33   HOWTO (R_SH_REL32,            /* type */
34          0,                     /* rightshift */
35          2,                     /* size (0 = byte, 1 = short, 2 = long) */
36          32,                    /* bitsize */
37          TRUE,                  /* pc_relative */
38          0,                     /* bitpos */
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 */
46
47   /* 8 bit PC relative branch divided by 2.  */
48   HOWTO (R_SH_DIR8WPN,          /* type */
49          1,                     /* rightshift */
50          1,                     /* size (0 = byte, 1 = short, 2 = long) */
51          8,                     /* bitsize */
52          TRUE,                  /* pc_relative */
53          0,                     /* bitpos */
54          complain_overflow_signed, /* complain_on_overflow */
55          sh_elf_ignore_reloc,   /* special_function */
56          "R_SH_DIR8WPN",        /* name */
57          TRUE,                  /* partial_inplace */
58          0xff,                  /* src_mask */
59          0xff,                  /* dst_mask */
60          TRUE),                 /* pcrel_offset */
61
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 */
66          1,                     /* rightshift */
67          1,                     /* size (0 = byte, 1 = short, 2 = long) */
68          12,                    /* bitsize */
69          TRUE,                  /* pc_relative */
70          0,                     /* bitpos */
71          complain_overflow_signed, /* complain_on_overflow */
72          NULL,                  /* special_function */
73          "R_SH_IND12W",         /* name */
74          FALSE,                 /* partial_inplace */
75          0x0,                   /* src_mask */
76          0xfff,                 /* dst_mask */
77          TRUE),                 /* pcrel_offset */
78
79   /* 8 bit unsigned PC relative divided by 4.  */
80   HOWTO (R_SH_DIR8WPL,          /* type */
81          2,                     /* rightshift */
82          1,                     /* size (0 = byte, 1 = short, 2 = long) */
83          8,                     /* bitsize */
84          TRUE,                  /* pc_relative */
85          0,                     /* bitpos */
86          complain_overflow_unsigned, /* complain_on_overflow */
87          sh_elf_ignore_reloc,   /* special_function */
88          "R_SH_DIR8WPL",        /* name */
89          TRUE,                  /* partial_inplace */
90          0xff,                  /* src_mask */
91          0xff,                  /* dst_mask */
92          TRUE),                 /* pcrel_offset */
93
94   /* 8 bit unsigned PC relative divided by 2.  */
95   HOWTO (R_SH_DIR8WPZ,          /* type */
96          1,                     /* rightshift */
97          1,                     /* size (0 = byte, 1 = short, 2 = long) */
98          8,                     /* bitsize */
99          TRUE,                  /* pc_relative */
100          0,                     /* bitpos */
101          complain_overflow_unsigned, /* complain_on_overflow */
102          sh_elf_ignore_reloc,   /* special_function */
103          "R_SH_DIR8WPZ",        /* name */
104          TRUE,                  /* partial_inplace */
105          0xff,                  /* src_mask */
106          0xff,                  /* dst_mask */
107          TRUE),                 /* pcrel_offset */
108
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
111      implemented.  */
112   HOWTO (R_SH_DIR8BP,           /* type */
113          0,                     /* rightshift */
114          1,                     /* size (0 = byte, 1 = short, 2 = long) */
115          8,                     /* bitsize */
116          FALSE,                 /* pc_relative */
117          0,                     /* bitpos */
118          complain_overflow_unsigned, /* complain_on_overflow */
119          sh_elf_ignore_reloc,   /* special_function */
120          "R_SH_DIR8BP",         /* name */
121          FALSE,                 /* partial_inplace */
122          0,                     /* src_mask */
123          0xff,                  /* dst_mask */
124          TRUE),                 /* pcrel_offset */
125
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 */
130          1,                     /* rightshift */
131          1,                     /* size (0 = byte, 1 = short, 2 = long) */
132          8,                     /* bitsize */
133          FALSE,                 /* pc_relative */
134          0,                     /* bitpos */
135          complain_overflow_unsigned, /* complain_on_overflow */
136          sh_elf_ignore_reloc,   /* special_function */
137          "R_SH_DIR8W",          /* name */
138          FALSE,                 /* partial_inplace */
139          0,                     /* src_mask */
140          0xff,                  /* dst_mask */
141          TRUE),                 /* pcrel_offset */
142
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 */
147          2,                     /* rightshift */
148          1,                     /* size (0 = byte, 1 = short, 2 = long) */
149          8,                     /* bitsize */
150          FALSE,                 /* pc_relative */
151          0,                     /* bitpos */
152          complain_overflow_unsigned, /* complain_on_overflow */
153          sh_elf_ignore_reloc,   /* special_function */
154          "R_SH_DIR8L",          /* name */
155          FALSE,                 /* partial_inplace */
156          0,                     /* src_mask */
157          0xff,                  /* dst_mask */
158          TRUE),                 /* pcrel_offset */
159
160   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
161   HOWTO (R_SH_LOOP_START,       /* type */
162          1,                     /* rightshift */
163          1,                     /* size (0 = byte, 1 = short, 2 = long) */
164          8,                     /* bitsize */
165          FALSE,                 /* pc_relative */
166          0,                     /* bitpos */
167          complain_overflow_signed, /* complain_on_overflow */
168          sh_elf_ignore_reloc,   /* special_function */
169          "R_SH_LOOP_START",     /* name */
170          TRUE,                  /* partial_inplace */
171          0xff,                  /* src_mask */
172          0xff,                  /* dst_mask */
173          TRUE),                 /* pcrel_offset */
174
175   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
176   HOWTO (R_SH_LOOP_END,         /* type */
177          1,                     /* rightshift */
178          1,                     /* size (0 = byte, 1 = short, 2 = long) */
179          8,                     /* bitsize */
180          FALSE,                 /* pc_relative */
181          0,                     /* bitpos */
182          complain_overflow_signed, /* complain_on_overflow */
183          sh_elf_ignore_reloc,   /* special_function */
184          "R_SH_LOOP_END",       /* name */
185          TRUE,                  /* partial_inplace */
186          0xff,                  /* src_mask */
187          0xff,                  /* dst_mask */
188          TRUE),                 /* pcrel_offset */
189
190   EMPTY_HOWTO (12),
191   EMPTY_HOWTO (13),
192   EMPTY_HOWTO (14),
193   EMPTY_HOWTO (15),
194   EMPTY_HOWTO (16),
195   EMPTY_HOWTO (17),
196   EMPTY_HOWTO (18),
197   EMPTY_HOWTO (19),
198   EMPTY_HOWTO (20),
199   EMPTY_HOWTO (21),
200
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
204      relaxation code.  */
205
206   /* GNU extension to record C++ vtable hierarchy */
207   HOWTO (R_SH_GNU_VTINHERIT, /* type */
208          0,                     /* rightshift */
209          2,                     /* size (0 = byte, 1 = short, 2 = long) */
210          0,                     /* bitsize */
211          FALSE,                 /* pc_relative */
212          0,                     /* bitpos */
213          complain_overflow_dont, /* complain_on_overflow */
214          NULL,                  /* special_function */
215          "R_SH_GNU_VTINHERIT", /* name */
216          FALSE,                 /* partial_inplace */
217          0,                     /* src_mask */
218          0,                     /* dst_mask */
219          FALSE),                /* pcrel_offset */
220
221   /* GNU extension to record C++ vtable member usage */
222   HOWTO (R_SH_GNU_VTENTRY,     /* type */
223          0,                     /* rightshift */
224          2,                     /* size (0 = byte, 1 = short, 2 = long) */
225          0,                     /* bitsize */
226          FALSE,                 /* pc_relative */
227          0,                     /* bitpos */
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 */
232          0,                     /* src_mask */
233          0,                     /* dst_mask */
234          FALSE),                /* pcrel_offset */
235
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 */
240          0,                     /* rightshift */
241          0,                     /* size (0 = byte, 1 = short, 2 = long) */
242          8,                     /* bitsize */
243          FALSE,                 /* pc_relative */
244          0,                     /* bitpos */
245          complain_overflow_unsigned, /* complain_on_overflow */
246          sh_elf_ignore_reloc,   /* special_function */
247          "R_SH_SWITCH8",        /* name */
248          FALSE,                 /* partial_inplace */
249          0,                     /* src_mask */
250          0,                     /* dst_mask */
251          TRUE),                 /* pcrel_offset */
252
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 */
257          0,                     /* rightshift */
258          1,                     /* size (0 = byte, 1 = short, 2 = long) */
259          16,                    /* bitsize */
260          FALSE,                 /* pc_relative */
261          0,                     /* bitpos */
262          complain_overflow_unsigned, /* complain_on_overflow */
263          sh_elf_ignore_reloc,   /* special_function */
264          "R_SH_SWITCH16",       /* name */
265          FALSE,                 /* partial_inplace */
266          0,                     /* src_mask */
267          0,                     /* dst_mask */
268          TRUE),                 /* pcrel_offset */
269
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 */
274          0,                     /* rightshift */
275          2,                     /* size (0 = byte, 1 = short, 2 = long) */
276          32,                    /* bitsize */
277          FALSE,                 /* pc_relative */
278          0,                     /* bitpos */
279          complain_overflow_unsigned, /* complain_on_overflow */
280          sh_elf_ignore_reloc,   /* special_function */
281          "R_SH_SWITCH32",       /* name */
282          FALSE,                 /* partial_inplace */
283          0,                     /* src_mask */
284          0,                     /* dst_mask */
285          TRUE),                 /* pcrel_offset */
286
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 */
292          0,                     /* rightshift */
293          1,                     /* size (0 = byte, 1 = short, 2 = long) */
294          0,                     /* bitsize */
295          FALSE,                 /* pc_relative */
296          0,                     /* bitpos */
297          complain_overflow_unsigned, /* complain_on_overflow */
298          sh_elf_ignore_reloc,   /* special_function */
299          "R_SH_USES",           /* name */
300          FALSE,                 /* partial_inplace */
301          0,                     /* src_mask */
302          0,                     /* dst_mask */
303          TRUE),                 /* pcrel_offset */
304
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
308      object file.  */
309   HOWTO (R_SH_COUNT,            /* type */
310          0,                     /* rightshift */
311          1,                     /* size (0 = byte, 1 = short, 2 = long) */
312          0,                     /* bitsize */
313          FALSE,                 /* pc_relative */
314          0,                     /* bitpos */
315          complain_overflow_unsigned, /* complain_on_overflow */
316          sh_elf_ignore_reloc,   /* special_function */
317          "R_SH_COUNT",          /* name */
318          FALSE,                 /* partial_inplace */
319          0,                     /* src_mask */
320          0,                     /* dst_mask */
321          TRUE),                 /* pcrel_offset */
322
323   /* Indicates an alignment statement.  The offset field is the power
324      of 2 to which subsequent portions of the object file must be
325      aligned.  */
326   HOWTO (R_SH_ALIGN,            /* type */
327          0,                     /* rightshift */
328          1,                     /* size (0 = byte, 1 = short, 2 = long) */
329          0,                     /* bitsize */
330          FALSE,                 /* pc_relative */
331          0,                     /* bitpos */
332          complain_overflow_unsigned, /* complain_on_overflow */
333          sh_elf_ignore_reloc,   /* special_function */
334          "R_SH_ALIGN",  /* name */
335          FALSE,                 /* partial_inplace */
336          0,                     /* src_mask */
337          0,                     /* dst_mask */
338          TRUE),                 /* pcrel_offset */
339
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 */
344          0,                     /* rightshift */
345          1,                     /* size (0 = byte, 1 = short, 2 = long) */
346          0,                     /* bitsize */
347          FALSE,                 /* pc_relative */
348          0,                     /* bitpos */
349          complain_overflow_unsigned, /* complain_on_overflow */
350          sh_elf_ignore_reloc,   /* special_function */
351          "R_SH_CODE",           /* name */
352          FALSE,                 /* partial_inplace */
353          0,                     /* src_mask */
354          0,                     /* dst_mask */
355          TRUE),                 /* pcrel_offset */
356
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 */
360          0,                     /* rightshift */
361          1,                     /* size (0 = byte, 1 = short, 2 = long) */
362          0,                     /* bitsize */
363          FALSE,                 /* pc_relative */
364          0,                     /* bitpos */
365          complain_overflow_unsigned, /* complain_on_overflow */
366          sh_elf_ignore_reloc,   /* special_function */
367          "R_SH_DATA",           /* name */
368          FALSE,                 /* partial_inplace */
369          0,                     /* src_mask */
370          0,                     /* dst_mask */
371          TRUE),                 /* pcrel_offset */
372
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 */
377          0,                     /* rightshift */
378          1,                     /* size (0 = byte, 1 = short, 2 = long) */
379          0,                     /* bitsize */
380          FALSE,                 /* pc_relative */
381          0,                     /* bitpos */
382          complain_overflow_unsigned, /* complain_on_overflow */
383          sh_elf_ignore_reloc,   /* special_function */
384          "R_SH_LABEL",          /* name */
385          FALSE,                 /* partial_inplace */
386          0,                     /* src_mask */
387          0,                     /* dst_mask */
388          TRUE),                 /* pcrel_offset */
389
390   /* The next 12 are only supported via linking in SHC-generated objects.  */
391   HOWTO (R_SH_DIR16,            /* type */
392          0,                     /* rightshift */
393          1,                     /* size (0 = byte, 1 = short, 2 = long) */
394          16,                    /* bitsize */
395          FALSE,                 /* pc_relative */
396          0,                     /* bitpos */
397          complain_overflow_dont, /* complain_on_overflow */
398          bfd_elf_generic_reloc, /* special_function */
399          "R_SH_DIR16",          /* name */
400          FALSE,                 /* partial_inplace */
401          0,                     /* src_mask */
402          0xffff,                /* dst_mask */
403          FALSE),                /* pcrel_offset */
404
405   HOWTO (R_SH_DIR8,             /* type */
406          0,                     /* rightshift */
407          0,                     /* size (0 = byte, 1 = short, 2 = long) */
408          8,                     /* bitsize */
409          FALSE,                 /* pc_relative */
410          0,                     /* bitpos */
411          complain_overflow_dont, /* complain_on_overflow */
412          bfd_elf_generic_reloc, /* special_function */
413          "R_SH_DIR8",           /* name */
414          FALSE,                 /* partial_inplace */
415          0,                     /* src_mask */
416          0xff,                  /* dst_mask */
417          FALSE),                /* pcrel_offset */
418
419   HOWTO (R_SH_DIR8UL,           /* type */
420          2,                     /* rightshift */
421          0,                     /* size (0 = byte, 1 = short, 2 = long) */
422          8,                     /* bitsize */
423          FALSE,                 /* pc_relative */
424          0,                     /* bitpos */
425          complain_overflow_unsigned, /* complain_on_overflow */
426          bfd_elf_generic_reloc, /* special_function */
427          "R_SH_DIR8UL",         /* name */
428          FALSE,                 /* partial_inplace */
429          0,                     /* src_mask */
430          0xff,                  /* dst_mask */
431          FALSE),                /* pcrel_offset */
432
433   HOWTO (R_SH_DIR8UW,           /* type */
434          1,                     /* rightshift */
435          0,                     /* size (0 = byte, 1 = short, 2 = long) */
436          8,                     /* bitsize */
437          FALSE,                 /* pc_relative */
438          0,                     /* bitpos */
439          complain_overflow_unsigned, /* complain_on_overflow */
440          bfd_elf_generic_reloc, /* special_function */
441          "R_SH_DIR8UW",         /* name */
442          FALSE,                 /* partial_inplace */
443          0,                     /* src_mask */
444          0xff,                  /* dst_mask */
445          FALSE),                /* pcrel_offset */
446
447   HOWTO (R_SH_DIR8U,            /* type */
448          0,                     /* rightshift */
449          0,                     /* size (0 = byte, 1 = short, 2 = long) */
450          8,                     /* bitsize */
451          FALSE,                 /* pc_relative */
452          0,                     /* bitpos */
453          complain_overflow_unsigned, /* complain_on_overflow */
454          bfd_elf_generic_reloc, /* special_function */
455          "R_SH_DIR8U",          /* name */
456          FALSE,                 /* partial_inplace */
457          0,                     /* src_mask */
458          0xff,                  /* dst_mask */
459          FALSE),                /* pcrel_offset */
460
461   HOWTO (R_SH_DIR8SW,           /* type */
462          1,                     /* rightshift */
463          0,                     /* size (0 = byte, 1 = short, 2 = long) */
464          8,                     /* bitsize */
465          FALSE,                 /* pc_relative */
466          0,                     /* bitpos */
467          complain_overflow_signed, /* complain_on_overflow */
468          bfd_elf_generic_reloc, /* special_function */
469          "R_SH_DIR8SW",         /* name */
470          FALSE,                 /* partial_inplace */
471          0,                     /* src_mask */
472          0xff,                  /* dst_mask */
473          FALSE),                /* pcrel_offset */
474
475   HOWTO (R_SH_DIR8S,            /* type */
476          0,                     /* rightshift */
477          0,                     /* size (0 = byte, 1 = short, 2 = long) */
478          8,                     /* bitsize */
479          FALSE,                 /* pc_relative */
480          0,                     /* bitpos */
481          complain_overflow_signed, /* complain_on_overflow */
482          bfd_elf_generic_reloc, /* special_function */
483          "R_SH_DIR8S",          /* name */
484          FALSE,                 /* partial_inplace */
485          0,                     /* src_mask */
486          0xff,                  /* dst_mask */
487          FALSE),                /* pcrel_offset */
488
489   HOWTO (R_SH_DIR4UL,           /* type */
490          2,                     /* rightshift */
491          0,                     /* size (0 = byte, 1 = short, 2 = long) */
492          4,                     /* bitsize */
493          FALSE,                 /* pc_relative */
494          0,                     /* bitpos */
495          complain_overflow_unsigned, /* complain_on_overflow */
496          bfd_elf_generic_reloc, /* special_function */
497          "R_SH_DIR4UL",         /* name */
498          FALSE,                 /* partial_inplace */
499          0,                     /* src_mask */
500          0x0f,                  /* dst_mask */
501          FALSE),                /* pcrel_offset */
502
503   HOWTO (R_SH_DIR4UW,           /* type */
504          1,                     /* rightshift */
505          0,                     /* size (0 = byte, 1 = short, 2 = long) */
506          4,                     /* bitsize */
507          FALSE,                 /* pc_relative */
508          0,                     /* bitpos */
509          complain_overflow_unsigned, /* complain_on_overflow */
510          bfd_elf_generic_reloc, /* special_function */
511          "R_SH_DIR4UW",         /* name */
512          FALSE,                 /* partial_inplace */
513          0,                     /* src_mask */
514          0x0f,                  /* dst_mask */
515          FALSE),                /* pcrel_offset */
516
517   HOWTO (R_SH_DIR4U,            /* type */
518          0,                     /* rightshift */
519          0,                     /* size (0 = byte, 1 = short, 2 = long) */
520          4,                     /* bitsize */
521          FALSE,                 /* pc_relative */
522          0,                     /* bitpos */
523          complain_overflow_unsigned, /* complain_on_overflow */
524          bfd_elf_generic_reloc, /* special_function */
525          "R_SH_DIR4U",          /* name */
526          FALSE,                 /* partial_inplace */
527          0,                     /* src_mask */
528          0x0f,                  /* dst_mask */
529          FALSE),                /* pcrel_offset */
530
531   HOWTO (R_SH_PSHA,             /* type */
532          0,                     /* rightshift */
533          1,                     /* size (0 = byte, 1 = short, 2 = long) */
534          7,                     /* bitsize */
535          FALSE,                 /* pc_relative */
536          4,                     /* bitpos */
537          complain_overflow_signed, /* complain_on_overflow */
538          bfd_elf_generic_reloc, /* special_function */
539          "R_SH_PSHA",           /* name */
540          FALSE,                 /* partial_inplace */
541          0,                     /* src_mask */
542          0x0f,                  /* dst_mask */
543          FALSE),                /* pcrel_offset */
544
545   HOWTO (R_SH_PSHL,             /* type */
546          0,                     /* rightshift */
547          1,                     /* size (0 = byte, 1 = short, 2 = long) */
548          7,                     /* bitsize */
549          FALSE,                 /* pc_relative */
550          4,                     /* bitpos */
551          complain_overflow_signed, /* complain_on_overflow */
552          bfd_elf_generic_reloc, /* special_function */
553          "R_SH_PSHL",           /* name */
554          FALSE,                 /* partial_inplace */
555          0,                     /* src_mask */
556          0x0f,                  /* dst_mask */
557          FALSE),                /* pcrel_offset */
558
559 #ifdef INCLUDE_SHMEDIA
560   /* Used in SHLLI.L and SHLRI.L.  */
561   HOWTO (R_SH_DIR5U,            /* type */
562          0,                     /* rightshift */
563          2,                     /* size (0 = byte, 1 = short, 2 = long) */
564          5,                     /* bitsize */
565          FALSE,                 /* pc_relative */
566          10,                    /* bitpos */
567          complain_overflow_unsigned, /* complain_on_overflow */
568          bfd_elf_generic_reloc, /* special_function */
569          "R_SH_DIR5U",          /* name */
570          FALSE,                 /* partial_inplace */
571          0,                     /* src_mask */
572          0xfc00,                /* dst_mask */
573          FALSE),                /* pcrel_offset */
574
575   /* Used in SHARI, SHLLI et al.  */
576   HOWTO (R_SH_DIR6U,            /* type */
577          0,                     /* rightshift */
578          2,                     /* size (0 = byte, 1 = short, 2 = long) */
579          6,                     /* bitsize */
580          FALSE,                 /* pc_relative */
581          10,                    /* bitpos */
582          complain_overflow_unsigned, /* complain_on_overflow */
583          bfd_elf_generic_reloc, /* special_function */
584          "R_SH_DIR6U",          /* name */
585          FALSE,                 /* partial_inplace */
586          0,                     /* src_mask */
587          0xfc00,                /* dst_mask */
588          FALSE),                /* pcrel_offset */
589
590   /* Used in BxxI, LDHI.L et al.  */
591   HOWTO (R_SH_DIR6S,            /* type */
592          0,                     /* rightshift */
593          2,                     /* size (0 = byte, 1 = short, 2 = long) */
594          6,                     /* bitsize */
595          FALSE,                 /* pc_relative */
596          10,                    /* bitpos */
597          complain_overflow_signed, /* complain_on_overflow */
598          bfd_elf_generic_reloc, /* special_function */
599          "R_SH_DIR6S",          /* name */
600          FALSE,                 /* partial_inplace */
601          0,                     /* src_mask */
602          0xfc00,                /* dst_mask */
603          FALSE),                /* pcrel_offset */
604
605   /* Used in ADDI, ANDI et al.  */
606   HOWTO (R_SH_DIR10S,           /* type */
607          0,                     /* rightshift */
608          2,                     /* size (0 = byte, 1 = short, 2 = long) */
609          10,                    /* bitsize */
610          FALSE,                 /* pc_relative */
611          10,                    /* bitpos */
612          complain_overflow_signed, /* complain_on_overflow */
613          bfd_elf_generic_reloc, /* special_function */
614          "R_SH_DIR10S",         /* name */
615          FALSE,                 /* partial_inplace */
616          0,                     /* src_mask */
617          0xffc00,               /* dst_mask */
618          FALSE),                /* pcrel_offset */
619
620   /* Used in LD.UW, ST.W et al.  */
621   HOWTO (R_SH_DIR10SW,  /* type */
622          1,                     /* rightshift */
623          2,                     /* size (0 = byte, 1 = short, 2 = long) */
624          11,                    /* bitsize */
625          FALSE,                 /* pc_relative */
626          10,                    /* bitpos */
627          complain_overflow_signed, /* complain_on_overflow */
628          bfd_elf_generic_reloc, /* special_function */
629          "R_SH_DIR10SW",        /* name */
630          FALSE,                 /* partial_inplace */
631          0,                     /* src_mask */
632          0xffc00,               /* dst_mask */
633          FALSE),                /* pcrel_offset */
634
635   /* Used in LD.L, FLD.S et al.  */
636   HOWTO (R_SH_DIR10SL,  /* type */
637          2,                     /* rightshift */
638          2,                     /* size (0 = byte, 1 = short, 2 = long) */
639          12,                    /* bitsize */
640          FALSE,                 /* pc_relative */
641          10,                    /* bitpos */
642          complain_overflow_signed, /* complain_on_overflow */
643          bfd_elf_generic_reloc, /* special_function */
644          "R_SH_DIR10SL",        /* name */
645          FALSE,                 /* partial_inplace */
646          0,                     /* src_mask */
647          0xffc00,               /* dst_mask */
648          FALSE),                /* pcrel_offset */
649
650   /* Used in FLD.D, FST.P et al.  */
651   HOWTO (R_SH_DIR10SQ,  /* type */
652          3,                     /* rightshift */
653          2,                     /* size (0 = byte, 1 = short, 2 = long) */
654          13,                    /* bitsize */
655          FALSE,                 /* pc_relative */
656          10,                    /* bitpos */
657          complain_overflow_signed, /* complain_on_overflow */
658          bfd_elf_generic_reloc, /* special_function */
659          "R_SH_DIR10SQ",        /* name */
660          FALSE,                 /* partial_inplace */
661          0,                     /* src_mask */
662          0xffc00,               /* dst_mask */
663          FALSE),                /* pcrel_offset */
664
665 #else
666   EMPTY_HOWTO (45),
667   EMPTY_HOWTO (46),
668   EMPTY_HOWTO (47),
669   EMPTY_HOWTO (48),
670   EMPTY_HOWTO (49),
671   EMPTY_HOWTO (50),
672   EMPTY_HOWTO (51),
673 #endif
674
675   EMPTY_HOWTO (52),
676
677   HOWTO (R_SH_DIR16S,           /* type */
678          0,                     /* rightshift */
679          1,                     /* size (0 = byte, 1 = short, 2 = long) */
680          16,                    /* bitsize */
681          FALSE,                 /* pc_relative */
682          0,                     /* bitpos */
683          complain_overflow_signed, /* complain_on_overflow */
684          bfd_elf_generic_reloc, /* special_function */
685          "R_SH_DIR16S",         /* name */
686          FALSE,                 /* partial_inplace */
687          0,                     /* src_mask */
688          0xffff,                /* dst_mask */
689          FALSE),                /* pcrel_offset */
690
691   EMPTY_HOWTO (54),
692   EMPTY_HOWTO (55),
693   EMPTY_HOWTO (56),
694   EMPTY_HOWTO (57),
695   EMPTY_HOWTO (58),
696   EMPTY_HOWTO (59),
697   EMPTY_HOWTO (60),
698   EMPTY_HOWTO (61),
699   EMPTY_HOWTO (62),
700   EMPTY_HOWTO (63),
701   EMPTY_HOWTO (64),
702   EMPTY_HOWTO (65),
703   EMPTY_HOWTO (66),
704   EMPTY_HOWTO (67),
705   EMPTY_HOWTO (68),
706   EMPTY_HOWTO (69),
707   EMPTY_HOWTO (70),
708   EMPTY_HOWTO (71),
709   EMPTY_HOWTO (72),
710   EMPTY_HOWTO (73),
711   EMPTY_HOWTO (74),
712   EMPTY_HOWTO (75),
713   EMPTY_HOWTO (76),
714   EMPTY_HOWTO (77),
715   EMPTY_HOWTO (78),
716   EMPTY_HOWTO (79),
717   EMPTY_HOWTO (80),
718   EMPTY_HOWTO (81),
719   EMPTY_HOWTO (82),
720   EMPTY_HOWTO (83),
721   EMPTY_HOWTO (84),
722   EMPTY_HOWTO (85),
723   EMPTY_HOWTO (86),
724   EMPTY_HOWTO (87),
725   EMPTY_HOWTO (88),
726   EMPTY_HOWTO (89),
727   EMPTY_HOWTO (90),
728   EMPTY_HOWTO (91),
729   EMPTY_HOWTO (92),
730   EMPTY_HOWTO (93),
731   EMPTY_HOWTO (94),
732   EMPTY_HOWTO (95),
733   EMPTY_HOWTO (96),
734   EMPTY_HOWTO (97),
735   EMPTY_HOWTO (98),
736   EMPTY_HOWTO (99),
737   EMPTY_HOWTO (100),
738   EMPTY_HOWTO (101),
739   EMPTY_HOWTO (102),
740   EMPTY_HOWTO (103),
741   EMPTY_HOWTO (104),
742   EMPTY_HOWTO (105),
743   EMPTY_HOWTO (106),
744   EMPTY_HOWTO (107),
745   EMPTY_HOWTO (108),
746   EMPTY_HOWTO (109),
747   EMPTY_HOWTO (110),
748   EMPTY_HOWTO (111),
749   EMPTY_HOWTO (112),
750   EMPTY_HOWTO (113),
751   EMPTY_HOWTO (114),
752   EMPTY_HOWTO (115),
753   EMPTY_HOWTO (116),
754   EMPTY_HOWTO (117),
755   EMPTY_HOWTO (118),
756   EMPTY_HOWTO (119),
757   EMPTY_HOWTO (120),
758   EMPTY_HOWTO (121),
759   EMPTY_HOWTO (122),
760   EMPTY_HOWTO (123),
761   EMPTY_HOWTO (124),
762   EMPTY_HOWTO (125),
763   EMPTY_HOWTO (126),
764   EMPTY_HOWTO (127),
765   EMPTY_HOWTO (128),
766   EMPTY_HOWTO (129),
767   EMPTY_HOWTO (130),
768   EMPTY_HOWTO (131),
769   EMPTY_HOWTO (132),
770   EMPTY_HOWTO (133),
771   EMPTY_HOWTO (134),
772   EMPTY_HOWTO (135),
773   EMPTY_HOWTO (136),
774   EMPTY_HOWTO (137),
775   EMPTY_HOWTO (138),
776   EMPTY_HOWTO (139),
777   EMPTY_HOWTO (140),
778   EMPTY_HOWTO (141),
779   EMPTY_HOWTO (142),
780   EMPTY_HOWTO (143),
781
782   HOWTO (R_SH_TLS_GD_32,        /* type */
783          0,                     /* rightshift */
784          2,                     /* size (0 = byte, 1 = short, 2 = long) */
785          32,                    /* bitsize */
786          FALSE,                 /* pc_relative */
787          0,                     /* bitpos */
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 */
795
796   HOWTO (R_SH_TLS_LD_32,        /* type */
797          0,                     /* rightshift */
798          2,                     /* size (0 = byte, 1 = short, 2 = long) */
799          32,                    /* bitsize */
800          FALSE,                 /* pc_relative */
801          0,                     /* bitpos */
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 */
809
810   HOWTO (R_SH_TLS_LDO_32,       /* type */
811          0,                     /* rightshift */
812          2,                     /* size (0 = byte, 1 = short, 2 = long) */
813          32,                    /* bitsize */
814          FALSE,                 /* pc_relative */
815          0,                     /* bitpos */
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 */
823
824   HOWTO (R_SH_TLS_IE_32,        /* type */
825          0,                     /* rightshift */
826          2,                     /* size (0 = byte, 1 = short, 2 = long) */
827          32,                    /* bitsize */
828          FALSE,                 /* pc_relative */
829          0,                     /* bitpos */
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 */
837
838   HOWTO (R_SH_TLS_LE_32,        /* type */
839          0,                     /* rightshift */
840          2,                     /* size (0 = byte, 1 = short, 2 = long) */
841          32,                    /* bitsize */
842          FALSE,                 /* pc_relative */
843          0,                     /* bitpos */
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 */
851
852   HOWTO (R_SH_TLS_DTPMOD32,     /* type */
853          0,                     /* rightshift */
854          2,                     /* size (0 = byte, 1 = short, 2 = long) */
855          32,                    /* bitsize */
856          FALSE,                 /* pc_relative */
857          0,                     /* bitpos */
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 */
865
866   HOWTO (R_SH_TLS_DTPOFF32,     /* type */
867          0,                     /* rightshift */
868          2,                     /* size (0 = byte, 1 = short, 2 = long) */
869          32,                    /* bitsize */
870          FALSE,                 /* pc_relative */
871          0,                     /* bitpos */
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 */
879
880   HOWTO (R_SH_TLS_TPOFF32,      /* type */
881          0,                     /* rightshift */
882          2,                     /* size (0 = byte, 1 = short, 2 = long) */
883          32,                    /* bitsize */
884          FALSE,                 /* pc_relative */
885          0,                     /* bitpos */
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 */
893
894   EMPTY_HOWTO (152),
895   EMPTY_HOWTO (153),
896   EMPTY_HOWTO (154),
897   EMPTY_HOWTO (155),
898   EMPTY_HOWTO (156),
899   EMPTY_HOWTO (157),
900   EMPTY_HOWTO (158),
901   EMPTY_HOWTO (159),
902
903   HOWTO (R_SH_GOT32,            /* type */
904          0,                     /* rightshift */
905          2,                     /* size (0 = byte, 1 = short, 2 = long) */
906          32,                    /* bitsize */
907          FALSE,                 /* pc_relative */
908          0,                     /* bitpos */
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 */
916
917   HOWTO (R_SH_PLT32,            /* type */
918          0,                     /* rightshift */
919          2,                     /* size (0 = byte, 1 = short, 2 = long) */
920          32,                    /* bitsize */
921          TRUE,                  /* pc_relative */
922          0,                     /* bitpos */
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 */
930
931   HOWTO (R_SH_COPY,             /* type */
932          0,                     /* rightshift */
933          2,                     /* size (0 = byte, 1 = short, 2 = long) */
934          32,                    /* bitsize */
935          FALSE,                 /* pc_relative */
936          0,                     /* bitpos */
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 */
944
945   HOWTO (R_SH_GLOB_DAT,         /* type */
946          0,                     /* rightshift */
947          2,                     /* size (0 = byte, 1 = short, 2 = long) */
948          32,                    /* bitsize */
949          FALSE,                 /* pc_relative */
950          0,                     /* bitpos */
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 */
958
959   HOWTO (R_SH_JMP_SLOT,         /* type */
960          0,                     /* rightshift */
961          2,                     /* size (0 = byte, 1 = short, 2 = long) */
962          32,                    /* bitsize */
963          FALSE,                 /* pc_relative */
964          0,                     /* bitpos */
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 */
972
973   HOWTO (R_SH_RELATIVE,         /* type */
974          0,                     /* rightshift */
975          2,                     /* size (0 = byte, 1 = short, 2 = long) */
976          32,                    /* bitsize */
977          FALSE,                 /* pc_relative */
978          0,                     /* bitpos */
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 */
986
987   HOWTO (R_SH_GOTOFF,           /* type */
988          0,                     /* rightshift */
989          2,                     /* size (0 = byte, 1 = short, 2 = long) */
990          32,                    /* bitsize */
991          FALSE,                 /* pc_relative */
992          0,                     /* bitpos */
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 */
1000
1001   HOWTO (R_SH_GOTPC,            /* type */
1002          0,                     /* rightshift */
1003          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1004          32,                    /* bitsize */
1005          TRUE,                  /* pc_relative */
1006          0,                     /* bitpos */
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 */
1014
1015   HOWTO (R_SH_GOTPLT32,         /* type */
1016          0,                     /* rightshift */
1017          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1018          32,                    /* bitsize */
1019          FALSE,                 /* pc_relative */
1020          0,                     /* bitpos */
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 */
1029
1030 #ifdef INCLUDE_SHMEDIA
1031   /* Used in MOVI and SHORI (x & 65536).  */
1032   HOWTO (R_SH_GOT_LOW16,        /* type */
1033          0,                     /* rightshift */
1034          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1035          64,                    /* bitsize */
1036          FALSE,                 /* pc_relative */
1037          10,                    /* bitpos */
1038          complain_overflow_dont, /* complain_on_overflow */
1039          bfd_elf_generic_reloc, /* special_function */
1040          "R_SH_GOT_LOW16",      /* name */
1041          FALSE,                 /* partial_inplace */
1042          0,                     /* src_mask */
1043          0x3fffc00,             /* dst_mask */
1044          FALSE),                /* pcrel_offset */
1045
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) */
1050          64,                    /* bitsize */
1051          FALSE,                 /* pc_relative */
1052          10,                    /* bitpos */
1053          complain_overflow_dont, /* complain_on_overflow */
1054          bfd_elf_generic_reloc, /* special_function */
1055          "R_SH_GOT_MEDLOW16",   /* name */
1056          FALSE,                 /* partial_inplace */
1057          0,                     /* src_mask */
1058          0x3fffc00,             /* dst_mask */
1059          FALSE),                /* pcrel_offset */
1060
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) */
1065          64,                    /* bitsize */
1066          FALSE,                 /* pc_relative */
1067          10,                    /* bitpos */
1068          complain_overflow_dont, /* complain_on_overflow */
1069          bfd_elf_generic_reloc, /* special_function */
1070          "R_SH_GOT_MEDHI16",    /* name */
1071          FALSE,                 /* partial_inplace */
1072          0,                     /* src_mask */
1073          0x3fffc00,             /* dst_mask */
1074          FALSE),                /* pcrel_offset */
1075
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) */
1080          64,                    /* bitsize */
1081          FALSE,                 /* pc_relative */
1082          10,                    /* bitpos */
1083          complain_overflow_dont, /* complain_on_overflow */
1084          bfd_elf_generic_reloc, /* special_function */
1085          "R_SH_GOT_HI16",       /* name */
1086          FALSE,                 /* partial_inplace */
1087          0,                     /* src_mask */
1088          0x3fffc00,             /* dst_mask */
1089          FALSE),                /* pcrel_offset */
1090
1091   /* Used in MOVI and SHORI (x & 65536).  */
1092   HOWTO (R_SH_GOTPLT_LOW16,     /* type */
1093          0,                     /* rightshift */
1094          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1095          64,                    /* bitsize */
1096          FALSE,                 /* pc_relative */
1097          10,                    /* bitpos */
1098          complain_overflow_dont, /* complain_on_overflow */
1099          bfd_elf_generic_reloc, /* special_function */
1100          "R_SH_GOTPLT_LOW16",   /* name */
1101          FALSE,                 /* partial_inplace */
1102          0,                     /* src_mask */
1103          0x3fffc00,             /* dst_mask */
1104          FALSE),                /* pcrel_offset */
1105
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) */
1110          64,                    /* bitsize */
1111          FALSE,                 /* pc_relative */
1112          10,                    /* bitpos */
1113          complain_overflow_dont, /* complain_on_overflow */
1114          bfd_elf_generic_reloc, /* special_function */
1115          "R_SH_GOTPLT_MEDLOW16", /* name */
1116          FALSE,                 /* partial_inplace */
1117          0,                     /* src_mask */
1118          0x3fffc00,             /* dst_mask */
1119          FALSE),                /* pcrel_offset */
1120
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) */
1125          64,                    /* bitsize */
1126          FALSE,                 /* pc_relative */
1127          10,                    /* bitpos */
1128          complain_overflow_dont, /* complain_on_overflow */
1129          bfd_elf_generic_reloc, /* special_function */
1130          "R_SH_GOTPLT_MEDHI16", /* name */
1131          FALSE,                 /* partial_inplace */
1132          0,                     /* src_mask */
1133          0x3fffc00,             /* dst_mask */
1134          FALSE),                /* pcrel_offset */
1135
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) */
1140          64,                    /* bitsize */
1141          FALSE,                 /* pc_relative */
1142          10,                    /* bitpos */
1143          complain_overflow_dont, /* complain_on_overflow */
1144          bfd_elf_generic_reloc, /* special_function */
1145          "R_SH_GOTPLT_HI16",    /* name */
1146          FALSE,                 /* partial_inplace */
1147          0,                     /* src_mask */
1148          0x3fffc00,             /* dst_mask */
1149          FALSE),                /* pcrel_offset */
1150
1151   /* Used in MOVI and SHORI (x & 65536).  */
1152   HOWTO (R_SH_PLT_LOW16,        /* type */
1153          0,                     /* rightshift */
1154          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1155          64,                    /* bitsize */
1156          TRUE,                  /* pc_relative */
1157          10,                    /* bitpos */
1158          complain_overflow_dont, /* complain_on_overflow */
1159          bfd_elf_generic_reloc, /* special_function */
1160          "R_SH_PLT_LOW16",      /* name */
1161          FALSE,                 /* partial_inplace */
1162          0,                     /* src_mask */
1163          0x3fffc00,             /* dst_mask */
1164          TRUE),                 /* pcrel_offset */
1165
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) */
1170          64,                    /* bitsize */
1171          TRUE,                  /* pc_relative */
1172          10,                    /* bitpos */
1173          complain_overflow_dont, /* complain_on_overflow */
1174          bfd_elf_generic_reloc, /* special_function */
1175          "R_SH_PLT_MEDLOW16",   /* name */
1176          FALSE,                 /* partial_inplace */
1177          0,                     /* src_mask */
1178          0x3fffc00,             /* dst_mask */
1179          TRUE),                 /* pcrel_offset */
1180
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) */
1185          64,                    /* bitsize */
1186          TRUE,                  /* pc_relative */
1187          10,                    /* bitpos */
1188          complain_overflow_dont, /* complain_on_overflow */
1189          bfd_elf_generic_reloc, /* special_function */
1190          "R_SH_PLT_MEDHI16",    /* name */
1191          FALSE,                 /* partial_inplace */
1192          0,                     /* src_mask */
1193          0x3fffc00,             /* dst_mask */
1194          TRUE),                 /* pcrel_offset */
1195
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) */
1200          64,                    /* bitsize */
1201          TRUE,                  /* pc_relative */
1202          10,                    /* bitpos */
1203          complain_overflow_dont, /* complain_on_overflow */
1204          bfd_elf_generic_reloc, /* special_function */
1205          "R_SH_PLT_HI16",       /* name */
1206          FALSE,                 /* partial_inplace */
1207          0,                     /* src_mask */
1208          0x3fffc00,             /* dst_mask */
1209          TRUE),                 /* pcrel_offset */
1210
1211   /* Used in MOVI and SHORI (x & 65536).  */
1212   HOWTO (R_SH_GOTOFF_LOW16,     /* type */
1213          0,                     /* rightshift */
1214          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1215          64,                    /* bitsize */
1216          FALSE,                 /* pc_relative */
1217          10,                    /* bitpos */
1218          complain_overflow_dont, /* complain_on_overflow */
1219          bfd_elf_generic_reloc, /* special_function */
1220          "R_SH_GOTOFF_LOW16",   /* name */
1221          FALSE,                 /* partial_inplace */
1222          0,                     /* src_mask */
1223          0x3fffc00,             /* dst_mask */
1224          FALSE),                /* pcrel_offset */
1225
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) */
1230          64,                    /* bitsize */
1231          FALSE,                 /* pc_relative */
1232          10,                    /* bitpos */
1233          complain_overflow_dont, /* complain_on_overflow */
1234          bfd_elf_generic_reloc, /* special_function */
1235          "R_SH_GOTOFF_MEDLOW16", /* name */
1236          FALSE,                 /* partial_inplace */
1237          0,                     /* src_mask */
1238          0x3fffc00,             /* dst_mask */
1239          FALSE),                /* pcrel_offset */
1240
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) */
1245          64,                    /* bitsize */
1246          FALSE,                 /* pc_relative */
1247          10,                    /* bitpos */
1248          complain_overflow_dont, /* complain_on_overflow */
1249          bfd_elf_generic_reloc, /* special_function */
1250          "R_SH_GOTOFF_MEDHI16", /* name */
1251          FALSE,                 /* partial_inplace */
1252          0,                     /* src_mask */
1253          0x3fffc00,             /* dst_mask */
1254          FALSE),                /* pcrel_offset */
1255
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) */
1260          64,                    /* bitsize */
1261          FALSE,                 /* pc_relative */
1262          10,                    /* bitpos */
1263          complain_overflow_dont, /* complain_on_overflow */
1264          bfd_elf_generic_reloc, /* special_function */
1265          "R_SH_GOTOFF_HI16",    /* name */
1266          FALSE,                 /* partial_inplace */
1267          0,                     /* src_mask */
1268          0x3fffc00,             /* dst_mask */
1269          FALSE),                /* pcrel_offset */
1270
1271   /* Used in MOVI and SHORI (x & 65536).  */
1272   HOWTO (R_SH_GOTPC_LOW16,      /* type */
1273          0,                     /* rightshift */
1274          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1275          64,                    /* bitsize */
1276          TRUE,                  /* pc_relative */
1277          10,                    /* bitpos */
1278          complain_overflow_dont, /* complain_on_overflow */
1279          bfd_elf_generic_reloc, /* special_function */
1280          "R_SH_GOTPC_LOW16",    /* name */
1281          FALSE,                 /* partial_inplace */
1282          0,                     /* src_mask */
1283          0x3fffc00,             /* dst_mask */
1284          TRUE),                 /* pcrel_offset */
1285
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) */
1290          64,                    /* bitsize */
1291          TRUE,                  /* pc_relative */
1292          10,                    /* bitpos */
1293          complain_overflow_dont, /* complain_on_overflow */
1294          bfd_elf_generic_reloc, /* special_function */
1295          "R_SH_GOTPC_MEDLOW16", /* name */
1296          FALSE,                 /* partial_inplace */
1297          0,                     /* src_mask */
1298          0x3fffc00,             /* dst_mask */
1299          TRUE),                 /* pcrel_offset */
1300
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) */
1305          64,                    /* bitsize */
1306          TRUE,                  /* pc_relative */
1307          10,                    /* bitpos */
1308          complain_overflow_dont, /* complain_on_overflow */
1309          bfd_elf_generic_reloc, /* special_function */
1310          "R_SH_GOTPC_MEDHI16",  /* name */
1311          FALSE,                 /* partial_inplace */
1312          0,                     /* src_mask */
1313          0x3fffc00,             /* dst_mask */
1314          TRUE),                 /* pcrel_offset */
1315
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) */
1320          64,                    /* bitsize */
1321          TRUE,                  /* pc_relative */
1322          10,                    /* bitpos */
1323          complain_overflow_dont, /* complain_on_overflow */
1324          bfd_elf_generic_reloc, /* special_function */
1325          "R_SH_GOTPC_HI16",     /* name */
1326          FALSE,                 /* partial_inplace */
1327          0,                     /* src_mask */
1328          0x3fffc00,             /* dst_mask */
1329          TRUE),                 /* pcrel_offset */
1330
1331   /* Used in LD.L, FLD.S et al.  */
1332   HOWTO (R_SH_GOT10BY4,         /* type */
1333          2,                     /* rightshift */
1334          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1335          12,                    /* bitsize */
1336          FALSE,                 /* pc_relative */
1337          10,                    /* bitpos */
1338          complain_overflow_signed, /* complain_on_overflow */
1339          bfd_elf_generic_reloc, /* special_function */
1340          "R_SH_GOT10BY4",       /* name */
1341          FALSE,                 /* partial_inplace */
1342          0,                     /* src_mask */
1343          0xffc00,               /* dst_mask */
1344          FALSE),                /* pcrel_offset */
1345
1346   /* Used in LD.L, FLD.S et al.  */
1347   HOWTO (R_SH_GOTPLT10BY4,      /* type */
1348          2,                     /* rightshift */
1349          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1350          12,                    /* bitsize */
1351          FALSE,                 /* pc_relative */
1352          10,                    /* bitpos */
1353          complain_overflow_signed, /* complain_on_overflow */
1354          bfd_elf_generic_reloc, /* special_function */
1355          "R_SH_GOTPLT10BY4",    /* name */
1356          FALSE,                 /* partial_inplace */
1357          0,                     /* src_mask */
1358          0xffc00,               /* dst_mask */
1359          FALSE),                /* pcrel_offset */
1360
1361   /* Used in FLD.D, FST.P et al.  */
1362   HOWTO (R_SH_GOT10BY8,         /* type */
1363          3,                     /* rightshift */
1364          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1365          13,                    /* bitsize */
1366          FALSE,                 /* pc_relative */
1367          10,                    /* bitpos */
1368          complain_overflow_signed, /* complain_on_overflow */
1369          bfd_elf_generic_reloc, /* special_function */
1370          "R_SH_GOT10BY8",       /* name */
1371          FALSE,                 /* partial_inplace */
1372          0,                     /* src_mask */
1373          0xffc00,               /* dst_mask */
1374          FALSE),                /* pcrel_offset */
1375
1376   /* Used in FLD.D, FST.P et al.  */
1377   HOWTO (R_SH_GOTPLT10BY8,      /* type */
1378          3,                     /* rightshift */
1379          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1380          13,                    /* bitsize */
1381          FALSE,                 /* pc_relative */
1382          10,                    /* bitpos */
1383          complain_overflow_signed, /* complain_on_overflow */
1384          bfd_elf_generic_reloc, /* special_function */
1385          "R_SH_GOTPLT10BY8",    /* name */
1386          FALSE,                 /* partial_inplace */
1387          0,                     /* src_mask */
1388          0xffc00,               /* dst_mask */
1389          FALSE),                /* pcrel_offset */
1390
1391   HOWTO (R_SH_COPY64,           /* type */
1392          0,                     /* rightshift */
1393          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1394          64,                    /* bitsize */
1395          FALSE,                 /* pc_relative */
1396          0,                     /* bitpos */
1397          complain_overflow_dont, /* complain_on_overflow */
1398          bfd_elf_generic_reloc, /* special_function */
1399          "R_SH_COPY64",         /* name */
1400          FALSE,                 /* partial_inplace */
1401          0,                     /* src_mask */
1402          ((bfd_vma) 0) - 1,     /* dst_mask */
1403          FALSE),                /* pcrel_offset */
1404
1405   HOWTO (R_SH_GLOB_DAT64,       /* type */
1406          0,                     /* rightshift */
1407          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1408          64,                    /* bitsize */
1409          FALSE,                 /* pc_relative */
1410          0,                     /* bitpos */
1411          complain_overflow_dont, /* complain_on_overflow */
1412          bfd_elf_generic_reloc, /* special_function */
1413          "R_SH_GLOB_DAT64",     /* name */
1414          FALSE,                 /* partial_inplace */
1415          0,                     /* src_mask */
1416          ((bfd_vma) 0) - 1,     /* dst_mask */
1417          FALSE),                /* pcrel_offset */
1418
1419   HOWTO (R_SH_JMP_SLOT64,       /* type */
1420          0,                     /* rightshift */
1421          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1422          64,                    /* bitsize */
1423          FALSE,                 /* pc_relative */
1424          0,                     /* bitpos */
1425          complain_overflow_dont, /* complain_on_overflow */
1426          bfd_elf_generic_reloc, /* special_function */
1427          "R_SH_JMP_SLOT64",     /* name */
1428          FALSE,                 /* partial_inplace */
1429          0,                     /* src_mask */
1430          ((bfd_vma) 0) - 1,     /* dst_mask */
1431          FALSE),                /* pcrel_offset */
1432
1433   HOWTO (R_SH_RELATIVE64,       /* type */
1434          0,                     /* rightshift */
1435          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1436          64,                    /* bitsize */
1437          FALSE,                 /* pc_relative */
1438          0,                     /* bitpos */
1439          complain_overflow_dont, /* complain_on_overflow */
1440          bfd_elf_generic_reloc, /* special_function */
1441          "R_SH_RELATIVE64",     /* name */
1442          FALSE,                 /* partial_inplace */
1443          0,                     /* src_mask */
1444          ((bfd_vma) 0) - 1,     /* dst_mask */
1445          FALSE),                /* pcrel_offset */
1446
1447   EMPTY_HOWTO (197),
1448   EMPTY_HOWTO (198),
1449   EMPTY_HOWTO (199),
1450   EMPTY_HOWTO (200),
1451   EMPTY_HOWTO (201),
1452   EMPTY_HOWTO (202),
1453   EMPTY_HOWTO (203),
1454   EMPTY_HOWTO (204),
1455   EMPTY_HOWTO (205),
1456   EMPTY_HOWTO (206),
1457   EMPTY_HOWTO (207),
1458   EMPTY_HOWTO (208),
1459   EMPTY_HOWTO (209),
1460   EMPTY_HOWTO (210),
1461   EMPTY_HOWTO (211),
1462   EMPTY_HOWTO (212),
1463   EMPTY_HOWTO (213),
1464   EMPTY_HOWTO (214),
1465   EMPTY_HOWTO (215),
1466   EMPTY_HOWTO (216),
1467   EMPTY_HOWTO (217),
1468   EMPTY_HOWTO (218),
1469   EMPTY_HOWTO (219),
1470   EMPTY_HOWTO (220),
1471   EMPTY_HOWTO (221),
1472   EMPTY_HOWTO (222),
1473   EMPTY_HOWTO (223),
1474   EMPTY_HOWTO (224),
1475   EMPTY_HOWTO (225),
1476   EMPTY_HOWTO (226),
1477   EMPTY_HOWTO (227),
1478   EMPTY_HOWTO (228),
1479   EMPTY_HOWTO (229),
1480   EMPTY_HOWTO (230),
1481   EMPTY_HOWTO (231),
1482   EMPTY_HOWTO (232),
1483   EMPTY_HOWTO (233),
1484   EMPTY_HOWTO (234),
1485   EMPTY_HOWTO (235),
1486   EMPTY_HOWTO (236),
1487   EMPTY_HOWTO (237),
1488   EMPTY_HOWTO (238),
1489   EMPTY_HOWTO (239),
1490   EMPTY_HOWTO (240),
1491   EMPTY_HOWTO (241),
1492
1493   /* Relocations for SHmedia code.  None of these are partial_inplace or
1494      use the field being relocated (except R_SH_PT_16).  */
1495
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 */
1503          0,                     /* rightshift */
1504          1,                     /* size (0 = byte, 1 = short, 2 = long) */
1505          0,                     /* bitsize */
1506          FALSE,                 /* pc_relative */
1507          0,                     /* bitpos */
1508          complain_overflow_unsigned, /* complain_on_overflow */
1509          sh_elf_ignore_reloc,   /* special_function */
1510          "R_SH_SHMEDIA_CODE",   /* name */
1511          FALSE,                 /* partial_inplace */
1512          0,                     /* src_mask */
1513          0,                     /* dst_mask */
1514          FALSE),                /* pcrel_offset */
1515
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 */
1520          2,                     /* rightshift */
1521          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1522          18,                    /* bitsize */
1523          TRUE,                  /* pc_relative */
1524          10,                    /* bitpos */
1525          complain_overflow_signed, /* complain_on_overflow */
1526          bfd_elf_generic_reloc, /* special_function */
1527          "R_SH_PT_16",          /* name */
1528          FALSE,                 /* partial_inplace */
1529          0,                     /* src_mask */
1530          0x3fffc00,             /* dst_mask */
1531          TRUE),                 /* pcrel_offset */
1532
1533   /* Used in unexpanded MOVI.  */
1534   HOWTO (R_SH_IMMS16,           /* type */
1535          0,                     /* rightshift */
1536          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1537          16,                    /* bitsize */
1538          FALSE,                 /* pc_relative */
1539          10,                    /* bitpos */
1540          complain_overflow_signed, /* complain_on_overflow */
1541          bfd_elf_generic_reloc, /* special_function */
1542          "R_SH_IMMS16",         /* name */
1543          FALSE,                 /* partial_inplace */
1544          0,                     /* src_mask */
1545          0x3fffc00,             /* dst_mask */
1546          FALSE),                /* pcrel_offset */
1547
1548   /* Used in SHORI.  */
1549   HOWTO (R_SH_IMMU16,           /* type */
1550          0,                     /* rightshift */
1551          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1552          16,                    /* bitsize */
1553          FALSE,                 /* pc_relative */
1554          10,                    /* bitpos */
1555          complain_overflow_unsigned, /* complain_on_overflow */
1556          bfd_elf_generic_reloc, /* special_function */
1557          "R_SH_IMMU16",         /* name */
1558          FALSE,                 /* partial_inplace */
1559          0,                     /* src_mask */
1560          0x3fffc00,             /* dst_mask */
1561          FALSE),                /* pcrel_offset */
1562
1563   /* Used in MOVI and SHORI (x & 65536).  */
1564   HOWTO (R_SH_IMM_LOW16,        /* type */
1565          0,                     /* rightshift */
1566          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1567          64,                    /* bitsize */
1568          FALSE,                 /* pc_relative */
1569          10,                    /* bitpos */
1570          complain_overflow_dont, /* complain_on_overflow */
1571          bfd_elf_generic_reloc, /* special_function */
1572          "R_SH_IMM_LOW16",      /* name */
1573          FALSE,                 /* partial_inplace */
1574          0,                     /* src_mask */
1575          0x3fffc00,             /* dst_mask */
1576          FALSE),                /* pcrel_offset */
1577
1578   /* Used in MOVI and SHORI ((x - $) & 65536).  */
1579   HOWTO (R_SH_IMM_LOW16_PCREL,  /* type */
1580          0,                     /* rightshift */
1581          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1582          64,                    /* bitsize */
1583          TRUE,                  /* pc_relative */
1584          10,                    /* bitpos */
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 */
1589          0,                     /* src_mask */
1590          0x3fffc00,             /* dst_mask */
1591          TRUE),                 /* pcrel_offset */
1592
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) */
1597          64,                    /* bitsize */
1598          FALSE,                 /* pc_relative */
1599          10,                    /* bitpos */
1600          complain_overflow_dont, /* complain_on_overflow */
1601          bfd_elf_generic_reloc, /* special_function */
1602          "R_SH_IMM_MEDLOW16",   /* name */
1603          FALSE,                 /* partial_inplace */
1604          0,                     /* src_mask */
1605          0x3fffc00,             /* dst_mask */
1606          FALSE),                /* pcrel_offset */
1607
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) */
1612          64,                    /* bitsize */
1613          TRUE,                  /* pc_relative */
1614          10,                    /* bitpos */
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 */
1619          0,                     /* src_mask */
1620          0x3fffc00,             /* dst_mask */
1621          TRUE),                 /* pcrel_offset */
1622
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) */
1627          64,                    /* bitsize */
1628          FALSE,                 /* pc_relative */
1629          10,                    /* bitpos */
1630          complain_overflow_dont, /* complain_on_overflow */
1631          bfd_elf_generic_reloc, /* special_function */
1632          "R_SH_IMM_MEDHI16",    /* name */
1633          FALSE,                 /* partial_inplace */
1634          0,                     /* src_mask */
1635          0x3fffc00,             /* dst_mask */
1636          FALSE),                /* pcrel_offset */
1637
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) */
1642          64,                    /* bitsize */
1643          TRUE,                  /* pc_relative */
1644          10,                    /* bitpos */
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 */
1649          0,                     /* src_mask */
1650          0x3fffc00,             /* dst_mask */
1651          TRUE),                 /* pcrel_offset */
1652
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) */
1657          64,                    /* bitsize */
1658          FALSE,                 /* pc_relative */
1659          10,                    /* bitpos */
1660          complain_overflow_dont, /* complain_on_overflow */
1661          bfd_elf_generic_reloc, /* special_function */
1662          "R_SH_IMM_HI16",       /* name */
1663          FALSE,                 /* partial_inplace */
1664          0,                     /* src_mask */
1665          0x3fffc00,             /* dst_mask */
1666          FALSE),                /* pcrel_offset */
1667
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) */
1672          64,                    /* bitsize */
1673          TRUE,                  /* pc_relative */
1674          10,                    /* bitpos */
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 */
1679          0,                     /* src_mask */
1680          0x3fffc00,             /* dst_mask */
1681          TRUE),                 /* pcrel_offset */
1682
1683   /* For the .uaquad pseudo.  */
1684   HOWTO (R_SH_64,               /* type */
1685          0,                     /* rightshift */
1686          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1687          64,                    /* bitsize */
1688          FALSE,                 /* pc_relative */
1689          0,                     /* bitpos */
1690          complain_overflow_dont, /* complain_on_overflow */
1691          bfd_elf_generic_reloc, /* special_function */
1692          "R_SH_64",             /* name */
1693          FALSE,                 /* partial_inplace */
1694          0,                     /* src_mask */
1695          ((bfd_vma) 0) - 1,     /* dst_mask */
1696          FALSE),                /* pcrel_offset */
1697
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) */
1702          64,                    /* bitsize */
1703          TRUE,                  /* pc_relative */
1704          10,                    /* bitpos */
1705          complain_overflow_dont, /* complain_on_overflow */
1706          bfd_elf_generic_reloc, /* special_function */
1707          "R_SH_64_PCREL",       /* name */
1708          FALSE,                 /* partial_inplace */
1709          0,                     /* src_mask */
1710          ((bfd_vma) 0) - 1,     /* dst_mask */
1711          TRUE),                 /* pcrel_offset */
1712
1713 #endif
1714 #undef SH_PARTIAL32
1715 #undef SH_SRC_MASK32
1716 #undef SH_ELF_RELOC