This commit was manufactured by cvs2svn to create branch 'gdb_7_0-branch'.
[external/binutils.git] / bfd / elf32-sh-relocs.h
1 /* Copyright 2006, 2007 Free Software Foundation, Inc.
2
3    This file is part of BFD, the Binary File Descriptor library.
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
18    MA 02110-1301, USA.  */
19
20 /* No relocation.  */
21   HOWTO (R_SH_NONE,             /* type */
22          0,                     /* rightshift */
23          0,                     /* size (0 = byte, 1 = short, 2 = long) */
24          0,                     /* bitsize */
25          FALSE,                 /* pc_relative */
26          0,                     /* bitpos */
27          complain_overflow_dont, /* complain_on_overflow */
28          sh_elf_ignore_reloc,   /* special_function */
29          "R_SH_NONE",           /* name */
30          FALSE,                 /* partial_inplace */
31          0,                     /* src_mask */
32          0,                     /* dst_mask */
33          FALSE),                /* pcrel_offset */
34
35   /* 32 bit absolute relocation.  Setting partial_inplace to TRUE and
36      src_mask to a non-zero value is similar to the COFF toolchain.  */
37   HOWTO (R_SH_DIR32,            /* type */
38          0,                     /* rightshift */
39          2,                     /* size (0 = byte, 1 = short, 2 = long) */
40          32,                    /* bitsize */
41          FALSE,                 /* pc_relative */
42          0,                     /* bitpos */
43          complain_overflow_bitfield, /* complain_on_overflow */
44          SH_ELF_RELOC,          /* special_function */
45          "R_SH_DIR32",          /* name */
46          SH_PARTIAL32,          /* partial_inplace */
47          SH_SRC_MASK32,         /* src_mask */
48          0xffffffff,            /* dst_mask */
49          FALSE),                /* pcrel_offset */
50
51   /* 32 bit PC relative relocation.  */
52   HOWTO (R_SH_REL32,            /* type */
53          0,                     /* rightshift */
54          2,                     /* size (0 = byte, 1 = short, 2 = long) */
55          32,                    /* bitsize */
56          TRUE,                  /* pc_relative */
57          0,                     /* bitpos */
58          complain_overflow_signed, /* complain_on_overflow */
59          sh_elf_ignore_reloc,   /* special_function */
60          "R_SH_REL32",          /* name */
61          SH_PARTIAL32,          /* partial_inplace */
62          SH_SRC_MASK32,         /* src_mask */
63          0xffffffff,            /* dst_mask */
64          TRUE),                 /* pcrel_offset */
65
66   /* 8 bit PC relative branch divided by 2.  */
67   HOWTO (R_SH_DIR8WPN,          /* type */
68          1,                     /* rightshift */
69          1,                     /* size (0 = byte, 1 = short, 2 = long) */
70          8,                     /* bitsize */
71          TRUE,                  /* pc_relative */
72          0,                     /* bitpos */
73          complain_overflow_signed, /* complain_on_overflow */
74          sh_elf_ignore_reloc,   /* special_function */
75          "R_SH_DIR8WPN",        /* name */
76          TRUE,                  /* partial_inplace */
77          0xff,                  /* src_mask */
78          0xff,                  /* dst_mask */
79          TRUE),                 /* pcrel_offset */
80
81   /* 12 bit PC relative branch divided by 2.  */
82   /* This cannot be partial_inplace because relaxation can't know the
83      eventual value of a symbol.  */
84   HOWTO (R_SH_IND12W,           /* type */
85          1,                     /* rightshift */
86          1,                     /* size (0 = byte, 1 = short, 2 = long) */
87          12,                    /* bitsize */
88          TRUE,                  /* pc_relative */
89          0,                     /* bitpos */
90          complain_overflow_signed, /* complain_on_overflow */
91          NULL,                  /* special_function */
92          "R_SH_IND12W",         /* name */
93          FALSE,                 /* partial_inplace */
94          0x0,                   /* src_mask */
95          0xfff,                 /* dst_mask */
96          TRUE),                 /* pcrel_offset */
97
98   /* 8 bit unsigned PC relative divided by 4.  */
99   HOWTO (R_SH_DIR8WPL,          /* type */
100          2,                     /* rightshift */
101          1,                     /* size (0 = byte, 1 = short, 2 = long) */
102          8,                     /* bitsize */
103          TRUE,                  /* pc_relative */
104          0,                     /* bitpos */
105          complain_overflow_unsigned, /* complain_on_overflow */
106          sh_elf_ignore_reloc,   /* special_function */
107          "R_SH_DIR8WPL",        /* name */
108          TRUE,                  /* partial_inplace */
109          0xff,                  /* src_mask */
110          0xff,                  /* dst_mask */
111          TRUE),                 /* pcrel_offset */
112
113   /* 8 bit unsigned PC relative divided by 2.  */
114   HOWTO (R_SH_DIR8WPZ,          /* type */
115          1,                     /* rightshift */
116          1,                     /* size (0 = byte, 1 = short, 2 = long) */
117          8,                     /* bitsize */
118          TRUE,                  /* pc_relative */
119          0,                     /* bitpos */
120          complain_overflow_unsigned, /* complain_on_overflow */
121          sh_elf_ignore_reloc,   /* special_function */
122          "R_SH_DIR8WPZ",        /* name */
123          TRUE,                  /* partial_inplace */
124          0xff,                  /* src_mask */
125          0xff,                  /* dst_mask */
126          TRUE),                 /* pcrel_offset */
127
128   /* 8 bit GBR relative.  FIXME: This only makes sense if we have some
129      special symbol for the GBR relative area, and that is not
130      implemented.  */
131   HOWTO (R_SH_DIR8BP,           /* type */
132          0,                     /* rightshift */
133          1,                     /* size (0 = byte, 1 = short, 2 = long) */
134          8,                     /* bitsize */
135          FALSE,                 /* pc_relative */
136          0,                     /* bitpos */
137          complain_overflow_unsigned, /* complain_on_overflow */
138          sh_elf_ignore_reloc,   /* special_function */
139          "R_SH_DIR8BP",         /* name */
140          FALSE,                 /* partial_inplace */
141          0,                     /* src_mask */
142          0xff,                  /* dst_mask */
143          TRUE),                 /* pcrel_offset */
144
145   /* 8 bit GBR relative divided by 2.  FIXME: This only makes sense if
146      we have some special symbol for the GBR relative area, and that
147      is not implemented.  */
148   HOWTO (R_SH_DIR8W,            /* type */
149          1,                     /* rightshift */
150          1,                     /* size (0 = byte, 1 = short, 2 = long) */
151          8,                     /* bitsize */
152          FALSE,                 /* pc_relative */
153          0,                     /* bitpos */
154          complain_overflow_unsigned, /* complain_on_overflow */
155          sh_elf_ignore_reloc,   /* special_function */
156          "R_SH_DIR8W",          /* name */
157          FALSE,                 /* partial_inplace */
158          0,                     /* src_mask */
159          0xff,                  /* dst_mask */
160          TRUE),                 /* pcrel_offset */
161
162   /* 8 bit GBR relative divided by 4.  FIXME: This only makes sense if
163      we have some special symbol for the GBR relative area, and that
164      is not implemented.  */
165   HOWTO (R_SH_DIR8L,            /* type */
166          2,                     /* rightshift */
167          1,                     /* size (0 = byte, 1 = short, 2 = long) */
168          8,                     /* bitsize */
169          FALSE,                 /* pc_relative */
170          0,                     /* bitpos */
171          complain_overflow_unsigned, /* complain_on_overflow */
172          sh_elf_ignore_reloc,   /* special_function */
173          "R_SH_DIR8L",          /* name */
174          FALSE,                 /* partial_inplace */
175          0,                     /* src_mask */
176          0xff,                  /* dst_mask */
177          TRUE),                 /* pcrel_offset */
178
179   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
180   HOWTO (R_SH_LOOP_START,       /* type */
181          1,                     /* rightshift */
182          1,                     /* size (0 = byte, 1 = short, 2 = long) */
183          8,                     /* bitsize */
184          FALSE,                 /* pc_relative */
185          0,                     /* bitpos */
186          complain_overflow_signed, /* complain_on_overflow */
187          sh_elf_ignore_reloc,   /* special_function */
188          "R_SH_LOOP_START",     /* name */
189          TRUE,                  /* partial_inplace */
190          0xff,                  /* src_mask */
191          0xff,                  /* dst_mask */
192          TRUE),                 /* pcrel_offset */
193
194   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
195   HOWTO (R_SH_LOOP_END,         /* type */
196          1,                     /* rightshift */
197          1,                     /* size (0 = byte, 1 = short, 2 = long) */
198          8,                     /* bitsize */
199          FALSE,                 /* pc_relative */
200          0,                     /* bitpos */
201          complain_overflow_signed, /* complain_on_overflow */
202          sh_elf_ignore_reloc,   /* special_function */
203          "R_SH_LOOP_END",       /* name */
204          TRUE,                  /* partial_inplace */
205          0xff,                  /* src_mask */
206          0xff,                  /* dst_mask */
207          TRUE),                 /* pcrel_offset */
208
209   EMPTY_HOWTO (12),
210   EMPTY_HOWTO (13),
211   EMPTY_HOWTO (14),
212   EMPTY_HOWTO (15),
213   EMPTY_HOWTO (16),
214   EMPTY_HOWTO (17),
215   EMPTY_HOWTO (18),
216   EMPTY_HOWTO (19),
217   EMPTY_HOWTO (20),
218   EMPTY_HOWTO (21),
219
220   /* The remaining relocs are a GNU extension used for relaxing.  The
221      final pass of the linker never needs to do anything with any of
222      these relocs.  Any required operations are handled by the
223      relaxation code.  */
224
225   /* GNU extension to record C++ vtable hierarchy */
226   HOWTO (R_SH_GNU_VTINHERIT, /* type */
227          0,                     /* rightshift */
228          2,                     /* size (0 = byte, 1 = short, 2 = long) */
229          0,                     /* bitsize */
230          FALSE,                 /* pc_relative */
231          0,                     /* bitpos */
232          complain_overflow_dont, /* complain_on_overflow */
233          NULL,                  /* special_function */
234          "R_SH_GNU_VTINHERIT", /* name */
235          FALSE,                 /* partial_inplace */
236          0,                     /* src_mask */
237          0,                     /* dst_mask */
238          FALSE),                /* pcrel_offset */
239
240   /* GNU extension to record C++ vtable member usage */
241   HOWTO (R_SH_GNU_VTENTRY,     /* type */
242          0,                     /* rightshift */
243          2,                     /* size (0 = byte, 1 = short, 2 = long) */
244          0,                     /* bitsize */
245          FALSE,                 /* pc_relative */
246          0,                     /* bitpos */
247          complain_overflow_dont, /* complain_on_overflow */
248          _bfd_elf_rel_vtable_reloc_fn,  /* special_function */
249          "R_SH_GNU_VTENTRY",   /* name */
250          FALSE,                 /* partial_inplace */
251          0,                     /* src_mask */
252          0,                     /* dst_mask */
253          FALSE),                /* pcrel_offset */
254
255   /* An 8 bit switch table entry.  This is generated for an expression
256      such as ``.word L1 - L2''.  The offset holds the difference
257      between the reloc address and L2.  */
258   HOWTO (R_SH_SWITCH8,          /* type */
259          0,                     /* rightshift */
260          0,                     /* size (0 = byte, 1 = short, 2 = long) */
261          8,                     /* bitsize */
262          FALSE,                 /* pc_relative */
263          0,                     /* bitpos */
264          complain_overflow_unsigned, /* complain_on_overflow */
265          sh_elf_ignore_reloc,   /* special_function */
266          "R_SH_SWITCH8",        /* name */
267          FALSE,                 /* partial_inplace */
268          0,                     /* src_mask */
269          0,                     /* dst_mask */
270          TRUE),                 /* pcrel_offset */
271
272   /* A 16 bit switch table entry.  This is generated for an expression
273      such as ``.word L1 - L2''.  The offset holds the difference
274      between the reloc address and L2.  */
275   HOWTO (R_SH_SWITCH16,         /* type */
276          0,                     /* rightshift */
277          1,                     /* size (0 = byte, 1 = short, 2 = long) */
278          16,                    /* bitsize */
279          FALSE,                 /* pc_relative */
280          0,                     /* bitpos */
281          complain_overflow_unsigned, /* complain_on_overflow */
282          sh_elf_ignore_reloc,   /* special_function */
283          "R_SH_SWITCH16",       /* name */
284          FALSE,                 /* partial_inplace */
285          0,                     /* src_mask */
286          0,                     /* dst_mask */
287          TRUE),                 /* pcrel_offset */
288
289   /* A 32 bit switch table entry.  This is generated for an expression
290      such as ``.long L1 - L2''.  The offset holds the difference
291      between the reloc address and L2.  */
292   HOWTO (R_SH_SWITCH32,         /* type */
293          0,                     /* rightshift */
294          2,                     /* size (0 = byte, 1 = short, 2 = long) */
295          32,                    /* bitsize */
296          FALSE,                 /* pc_relative */
297          0,                     /* bitpos */
298          complain_overflow_unsigned, /* complain_on_overflow */
299          sh_elf_ignore_reloc,   /* special_function */
300          "R_SH_SWITCH32",       /* name */
301          FALSE,                 /* partial_inplace */
302          0,                     /* src_mask */
303          0,                     /* dst_mask */
304          TRUE),                 /* pcrel_offset */
305
306   /* Indicates a .uses pseudo-op.  The compiler will generate .uses
307      pseudo-ops when it finds a function call which can be relaxed.
308      The offset field holds the PC relative offset to the instruction
309      which loads the register used in the function call.  */
310   HOWTO (R_SH_USES,             /* type */
311          0,                     /* rightshift */
312          1,                     /* size (0 = byte, 1 = short, 2 = long) */
313          0,                     /* bitsize */
314          FALSE,                 /* pc_relative */
315          0,                     /* bitpos */
316          complain_overflow_unsigned, /* complain_on_overflow */
317          sh_elf_ignore_reloc,   /* special_function */
318          "R_SH_USES",           /* name */
319          FALSE,                 /* partial_inplace */
320          0,                     /* src_mask */
321          0,                     /* dst_mask */
322          TRUE),                 /* pcrel_offset */
323
324   /* The assembler will generate this reloc for addresses referred to
325      by the register loads associated with USES relocs.  The offset
326      field holds the number of times the address is referenced in the
327      object file.  */
328   HOWTO (R_SH_COUNT,            /* type */
329          0,                     /* rightshift */
330          1,                     /* size (0 = byte, 1 = short, 2 = long) */
331          0,                     /* bitsize */
332          FALSE,                 /* pc_relative */
333          0,                     /* bitpos */
334          complain_overflow_unsigned, /* complain_on_overflow */
335          sh_elf_ignore_reloc,   /* special_function */
336          "R_SH_COUNT",          /* name */
337          FALSE,                 /* partial_inplace */
338          0,                     /* src_mask */
339          0,                     /* dst_mask */
340          TRUE),                 /* pcrel_offset */
341
342   /* Indicates an alignment statement.  The offset field is the power
343      of 2 to which subsequent portions of the object file must be
344      aligned.  */
345   HOWTO (R_SH_ALIGN,            /* type */
346          0,                     /* rightshift */
347          1,                     /* size (0 = byte, 1 = short, 2 = long) */
348          0,                     /* bitsize */
349          FALSE,                 /* pc_relative */
350          0,                     /* bitpos */
351          complain_overflow_unsigned, /* complain_on_overflow */
352          sh_elf_ignore_reloc,   /* special_function */
353          "R_SH_ALIGN",  /* name */
354          FALSE,                 /* partial_inplace */
355          0,                     /* src_mask */
356          0,                     /* dst_mask */
357          TRUE),                 /* pcrel_offset */
358
359   /* The assembler will generate this reloc before a block of
360      instructions.  A section should be processed as assuming it
361      contains data, unless this reloc is seen.  */
362   HOWTO (R_SH_CODE,             /* type */
363          0,                     /* rightshift */
364          1,                     /* size (0 = byte, 1 = short, 2 = long) */
365          0,                     /* bitsize */
366          FALSE,                 /* pc_relative */
367          0,                     /* bitpos */
368          complain_overflow_unsigned, /* complain_on_overflow */
369          sh_elf_ignore_reloc,   /* special_function */
370          "R_SH_CODE",           /* name */
371          FALSE,                 /* partial_inplace */
372          0,                     /* src_mask */
373          0,                     /* dst_mask */
374          TRUE),                 /* pcrel_offset */
375
376   /* The assembler will generate this reloc after a block of
377      instructions when it sees data that is not instructions.  */
378   HOWTO (R_SH_DATA,             /* type */
379          0,                     /* rightshift */
380          1,                     /* size (0 = byte, 1 = short, 2 = long) */
381          0,                     /* bitsize */
382          FALSE,                 /* pc_relative */
383          0,                     /* bitpos */
384          complain_overflow_unsigned, /* complain_on_overflow */
385          sh_elf_ignore_reloc,   /* special_function */
386          "R_SH_DATA",           /* name */
387          FALSE,                 /* partial_inplace */
388          0,                     /* src_mask */
389          0,                     /* dst_mask */
390          TRUE),                 /* pcrel_offset */
391
392   /* The assembler generates this reloc for each label within a block
393      of instructions.  This permits the linker to avoid swapping
394      instructions which are the targets of branches.  */
395   HOWTO (R_SH_LABEL,            /* type */
396          0,                     /* rightshift */
397          1,                     /* size (0 = byte, 1 = short, 2 = long) */
398          0,                     /* bitsize */
399          FALSE,                 /* pc_relative */
400          0,                     /* bitpos */
401          complain_overflow_unsigned, /* complain_on_overflow */
402          sh_elf_ignore_reloc,   /* special_function */
403          "R_SH_LABEL",          /* name */
404          FALSE,                 /* partial_inplace */
405          0,                     /* src_mask */
406          0,                     /* dst_mask */
407          TRUE),                 /* pcrel_offset */
408
409   /* The next 12 are only supported via linking in SHC-generated objects.  */
410   HOWTO (R_SH_DIR16,            /* type */
411          0,                     /* rightshift */
412          1,                     /* size (0 = byte, 1 = short, 2 = long) */
413          16,                    /* bitsize */
414          FALSE,                 /* pc_relative */
415          0,                     /* bitpos */
416          complain_overflow_dont, /* complain_on_overflow */
417          bfd_elf_generic_reloc, /* special_function */
418          "R_SH_DIR16",          /* name */
419          FALSE,                 /* partial_inplace */
420          0,                     /* src_mask */
421          0xffff,                /* dst_mask */
422          FALSE),                /* pcrel_offset */
423
424   HOWTO (R_SH_DIR8,             /* type */
425          0,                     /* rightshift */
426          0,                     /* size (0 = byte, 1 = short, 2 = long) */
427          8,                     /* bitsize */
428          FALSE,                 /* pc_relative */
429          0,                     /* bitpos */
430          complain_overflow_dont, /* complain_on_overflow */
431          bfd_elf_generic_reloc, /* special_function */
432          "R_SH_DIR8",           /* name */
433          FALSE,                 /* partial_inplace */
434          0,                     /* src_mask */
435          0xff,                  /* dst_mask */
436          FALSE),                /* pcrel_offset */
437
438   HOWTO (R_SH_DIR8UL,           /* type */
439          2,                     /* rightshift */
440          0,                     /* size (0 = byte, 1 = short, 2 = long) */
441          8,                     /* bitsize */
442          FALSE,                 /* pc_relative */
443          0,                     /* bitpos */
444          complain_overflow_unsigned, /* complain_on_overflow */
445          bfd_elf_generic_reloc, /* special_function */
446          "R_SH_DIR8UL",         /* name */
447          FALSE,                 /* partial_inplace */
448          0,                     /* src_mask */
449          0xff,                  /* dst_mask */
450          FALSE),                /* pcrel_offset */
451
452   HOWTO (R_SH_DIR8UW,           /* type */
453          1,                     /* rightshift */
454          0,                     /* size (0 = byte, 1 = short, 2 = long) */
455          8,                     /* bitsize */
456          FALSE,                 /* pc_relative */
457          0,                     /* bitpos */
458          complain_overflow_unsigned, /* complain_on_overflow */
459          bfd_elf_generic_reloc, /* special_function */
460          "R_SH_DIR8UW",         /* name */
461          FALSE,                 /* partial_inplace */
462          0,                     /* src_mask */
463          0xff,                  /* dst_mask */
464          FALSE),                /* pcrel_offset */
465
466   HOWTO (R_SH_DIR8U,            /* type */
467          0,                     /* rightshift */
468          0,                     /* size (0 = byte, 1 = short, 2 = long) */
469          8,                     /* bitsize */
470          FALSE,                 /* pc_relative */
471          0,                     /* bitpos */
472          complain_overflow_unsigned, /* complain_on_overflow */
473          bfd_elf_generic_reloc, /* special_function */
474          "R_SH_DIR8U",          /* name */
475          FALSE,                 /* partial_inplace */
476          0,                     /* src_mask */
477          0xff,                  /* dst_mask */
478          FALSE),                /* pcrel_offset */
479
480   HOWTO (R_SH_DIR8SW,           /* type */
481          1,                     /* rightshift */
482          0,                     /* size (0 = byte, 1 = short, 2 = long) */
483          8,                     /* bitsize */
484          FALSE,                 /* pc_relative */
485          0,                     /* bitpos */
486          complain_overflow_signed, /* complain_on_overflow */
487          bfd_elf_generic_reloc, /* special_function */
488          "R_SH_DIR8SW",         /* name */
489          FALSE,                 /* partial_inplace */
490          0,                     /* src_mask */
491          0xff,                  /* dst_mask */
492          FALSE),                /* pcrel_offset */
493
494   HOWTO (R_SH_DIR8S,            /* type */
495          0,                     /* rightshift */
496          0,                     /* size (0 = byte, 1 = short, 2 = long) */
497          8,                     /* bitsize */
498          FALSE,                 /* pc_relative */
499          0,                     /* bitpos */
500          complain_overflow_signed, /* complain_on_overflow */
501          bfd_elf_generic_reloc, /* special_function */
502          "R_SH_DIR8S",          /* name */
503          FALSE,                 /* partial_inplace */
504          0,                     /* src_mask */
505          0xff,                  /* dst_mask */
506          FALSE),                /* pcrel_offset */
507
508   HOWTO (R_SH_DIR4UL,           /* type */
509          2,                     /* rightshift */
510          0,                     /* size (0 = byte, 1 = short, 2 = long) */
511          4,                     /* bitsize */
512          FALSE,                 /* pc_relative */
513          0,                     /* bitpos */
514          complain_overflow_unsigned, /* complain_on_overflow */
515          bfd_elf_generic_reloc, /* special_function */
516          "R_SH_DIR4UL",         /* name */
517          FALSE,                 /* partial_inplace */
518          0,                     /* src_mask */
519          0x0f,                  /* dst_mask */
520          FALSE),                /* pcrel_offset */
521
522   HOWTO (R_SH_DIR4UW,           /* type */
523          1,                     /* rightshift */
524          0,                     /* size (0 = byte, 1 = short, 2 = long) */
525          4,                     /* bitsize */
526          FALSE,                 /* pc_relative */
527          0,                     /* bitpos */
528          complain_overflow_unsigned, /* complain_on_overflow */
529          bfd_elf_generic_reloc, /* special_function */
530          "R_SH_DIR4UW",         /* name */
531          FALSE,                 /* partial_inplace */
532          0,                     /* src_mask */
533          0x0f,                  /* dst_mask */
534          FALSE),                /* pcrel_offset */
535
536   HOWTO (R_SH_DIR4U,            /* type */
537          0,                     /* rightshift */
538          0,                     /* size (0 = byte, 1 = short, 2 = long) */
539          4,                     /* bitsize */
540          FALSE,                 /* pc_relative */
541          0,                     /* bitpos */
542          complain_overflow_unsigned, /* complain_on_overflow */
543          bfd_elf_generic_reloc, /* special_function */
544          "R_SH_DIR4U",          /* name */
545          FALSE,                 /* partial_inplace */
546          0,                     /* src_mask */
547          0x0f,                  /* dst_mask */
548          FALSE),                /* pcrel_offset */
549
550   HOWTO (R_SH_PSHA,             /* type */
551          0,                     /* rightshift */
552          1,                     /* size (0 = byte, 1 = short, 2 = long) */
553          7,                     /* bitsize */
554          FALSE,                 /* pc_relative */
555          4,                     /* bitpos */
556          complain_overflow_signed, /* complain_on_overflow */
557          bfd_elf_generic_reloc, /* special_function */
558          "R_SH_PSHA",           /* name */
559          FALSE,                 /* partial_inplace */
560          0,                     /* src_mask */
561          0x0f,                  /* dst_mask */
562          FALSE),                /* pcrel_offset */
563
564   HOWTO (R_SH_PSHL,             /* type */
565          0,                     /* rightshift */
566          1,                     /* size (0 = byte, 1 = short, 2 = long) */
567          7,                     /* bitsize */
568          FALSE,                 /* pc_relative */
569          4,                     /* bitpos */
570          complain_overflow_signed, /* complain_on_overflow */
571          bfd_elf_generic_reloc, /* special_function */
572          "R_SH_PSHL",           /* name */
573          FALSE,                 /* partial_inplace */
574          0,                     /* src_mask */
575          0x0f,                  /* dst_mask */
576          FALSE),                /* pcrel_offset */
577
578 #ifdef INCLUDE_SHMEDIA
579   /* Used in SHLLI.L and SHLRI.L.  */
580   HOWTO (R_SH_DIR5U,            /* type */
581          0,                     /* rightshift */
582          2,                     /* size (0 = byte, 1 = short, 2 = long) */
583          5,                     /* bitsize */
584          FALSE,                 /* pc_relative */
585          10,                    /* bitpos */
586          complain_overflow_unsigned, /* complain_on_overflow */
587          bfd_elf_generic_reloc, /* special_function */
588          "R_SH_DIR5U",          /* name */
589          FALSE,                 /* partial_inplace */
590          0,                     /* src_mask */
591          0xfc00,                /* dst_mask */
592          FALSE),                /* pcrel_offset */
593
594   /* Used in SHARI, SHLLI et al.  */
595   HOWTO (R_SH_DIR6U,            /* type */
596          0,                     /* rightshift */
597          2,                     /* size (0 = byte, 1 = short, 2 = long) */
598          6,                     /* bitsize */
599          FALSE,                 /* pc_relative */
600          10,                    /* bitpos */
601          complain_overflow_unsigned, /* complain_on_overflow */
602          bfd_elf_generic_reloc, /* special_function */
603          "R_SH_DIR6U",          /* name */
604          FALSE,                 /* partial_inplace */
605          0,                     /* src_mask */
606          0xfc00,                /* dst_mask */
607          FALSE),                /* pcrel_offset */
608
609   /* Used in BxxI, LDHI.L et al.  */
610   HOWTO (R_SH_DIR6S,            /* type */
611          0,                     /* rightshift */
612          2,                     /* size (0 = byte, 1 = short, 2 = long) */
613          6,                     /* bitsize */
614          FALSE,                 /* pc_relative */
615          10,                    /* bitpos */
616          complain_overflow_signed, /* complain_on_overflow */
617          bfd_elf_generic_reloc, /* special_function */
618          "R_SH_DIR6S",          /* name */
619          FALSE,                 /* partial_inplace */
620          0,                     /* src_mask */
621          0xfc00,                /* dst_mask */
622          FALSE),                /* pcrel_offset */
623
624   /* Used in ADDI, ANDI et al.  */
625   HOWTO (R_SH_DIR10S,           /* type */
626          0,                     /* rightshift */
627          2,                     /* size (0 = byte, 1 = short, 2 = long) */
628          10,                    /* bitsize */
629          FALSE,                 /* pc_relative */
630          10,                    /* bitpos */
631          complain_overflow_signed, /* complain_on_overflow */
632          bfd_elf_generic_reloc, /* special_function */
633          "R_SH_DIR10S",         /* name */
634          FALSE,                 /* partial_inplace */
635          0,                     /* src_mask */
636          0xffc00,               /* dst_mask */
637          FALSE),                /* pcrel_offset */
638
639   /* Used in LD.UW, ST.W et al.  */
640   HOWTO (R_SH_DIR10SW,  /* type */
641          1,                     /* rightshift */
642          2,                     /* size (0 = byte, 1 = short, 2 = long) */
643          11,                    /* bitsize */
644          FALSE,                 /* pc_relative */
645          10,                    /* bitpos */
646          complain_overflow_signed, /* complain_on_overflow */
647          bfd_elf_generic_reloc, /* special_function */
648          "R_SH_DIR10SW",        /* name */
649          FALSE,                 /* partial_inplace */
650          0,                     /* src_mask */
651          0xffc00,               /* dst_mask */
652          FALSE),                /* pcrel_offset */
653
654   /* Used in LD.L, FLD.S et al.  */
655   HOWTO (R_SH_DIR10SL,  /* type */
656          2,                     /* rightshift */
657          2,                     /* size (0 = byte, 1 = short, 2 = long) */
658          12,                    /* bitsize */
659          FALSE,                 /* pc_relative */
660          10,                    /* bitpos */
661          complain_overflow_signed, /* complain_on_overflow */
662          bfd_elf_generic_reloc, /* special_function */
663          "R_SH_DIR10SL",        /* name */
664          FALSE,                 /* partial_inplace */
665          0,                     /* src_mask */
666          0xffc00,               /* dst_mask */
667          FALSE),                /* pcrel_offset */
668
669   /* Used in FLD.D, FST.P et al.  */
670   HOWTO (R_SH_DIR10SQ,  /* type */
671          3,                     /* rightshift */
672          2,                     /* size (0 = byte, 1 = short, 2 = long) */
673          13,                    /* bitsize */
674          FALSE,                 /* pc_relative */
675          10,                    /* bitpos */
676          complain_overflow_signed, /* complain_on_overflow */
677          bfd_elf_generic_reloc, /* special_function */
678          "R_SH_DIR10SQ",        /* name */
679          FALSE,                 /* partial_inplace */
680          0,                     /* src_mask */
681          0xffc00,               /* dst_mask */
682          FALSE),                /* pcrel_offset */
683
684 #else
685   EMPTY_HOWTO (45),
686   EMPTY_HOWTO (46),
687   EMPTY_HOWTO (47),
688   EMPTY_HOWTO (48),
689   EMPTY_HOWTO (49),
690   EMPTY_HOWTO (50),
691   EMPTY_HOWTO (51),
692 #endif
693
694   EMPTY_HOWTO (52),
695
696   HOWTO (R_SH_DIR16S,           /* type */
697          0,                     /* rightshift */
698          1,                     /* size (0 = byte, 1 = short, 2 = long) */
699          16,                    /* bitsize */
700          FALSE,                 /* pc_relative */
701          0,                     /* bitpos */
702          complain_overflow_signed, /* complain_on_overflow */
703          bfd_elf_generic_reloc, /* special_function */
704          "R_SH_DIR16S",         /* name */
705          FALSE,                 /* partial_inplace */
706          0,                     /* src_mask */
707          0xffff,                /* dst_mask */
708          FALSE),                /* pcrel_offset */
709
710   EMPTY_HOWTO (54),
711   EMPTY_HOWTO (55),
712   EMPTY_HOWTO (56),
713   EMPTY_HOWTO (57),
714   EMPTY_HOWTO (58),
715   EMPTY_HOWTO (59),
716   EMPTY_HOWTO (60),
717   EMPTY_HOWTO (61),
718   EMPTY_HOWTO (62),
719   EMPTY_HOWTO (63),
720   EMPTY_HOWTO (64),
721   EMPTY_HOWTO (65),
722   EMPTY_HOWTO (66),
723   EMPTY_HOWTO (67),
724   EMPTY_HOWTO (68),
725   EMPTY_HOWTO (69),
726   EMPTY_HOWTO (70),
727   EMPTY_HOWTO (71),
728   EMPTY_HOWTO (72),
729   EMPTY_HOWTO (73),
730   EMPTY_HOWTO (74),
731   EMPTY_HOWTO (75),
732   EMPTY_HOWTO (76),
733   EMPTY_HOWTO (77),
734   EMPTY_HOWTO (78),
735   EMPTY_HOWTO (79),
736   EMPTY_HOWTO (80),
737   EMPTY_HOWTO (81),
738   EMPTY_HOWTO (82),
739   EMPTY_HOWTO (83),
740   EMPTY_HOWTO (84),
741   EMPTY_HOWTO (85),
742   EMPTY_HOWTO (86),
743   EMPTY_HOWTO (87),
744   EMPTY_HOWTO (88),
745   EMPTY_HOWTO (89),
746   EMPTY_HOWTO (90),
747   EMPTY_HOWTO (91),
748   EMPTY_HOWTO (92),
749   EMPTY_HOWTO (93),
750   EMPTY_HOWTO (94),
751   EMPTY_HOWTO (95),
752   EMPTY_HOWTO (96),
753   EMPTY_HOWTO (97),
754   EMPTY_HOWTO (98),
755   EMPTY_HOWTO (99),
756   EMPTY_HOWTO (100),
757   EMPTY_HOWTO (101),
758   EMPTY_HOWTO (102),
759   EMPTY_HOWTO (103),
760   EMPTY_HOWTO (104),
761   EMPTY_HOWTO (105),
762   EMPTY_HOWTO (106),
763   EMPTY_HOWTO (107),
764   EMPTY_HOWTO (108),
765   EMPTY_HOWTO (109),
766   EMPTY_HOWTO (110),
767   EMPTY_HOWTO (111),
768   EMPTY_HOWTO (112),
769   EMPTY_HOWTO (113),
770   EMPTY_HOWTO (114),
771   EMPTY_HOWTO (115),
772   EMPTY_HOWTO (116),
773   EMPTY_HOWTO (117),
774   EMPTY_HOWTO (118),
775   EMPTY_HOWTO (119),
776   EMPTY_HOWTO (120),
777   EMPTY_HOWTO (121),
778   EMPTY_HOWTO (122),
779   EMPTY_HOWTO (123),
780   EMPTY_HOWTO (124),
781   EMPTY_HOWTO (125),
782   EMPTY_HOWTO (126),
783   EMPTY_HOWTO (127),
784   EMPTY_HOWTO (128),
785   EMPTY_HOWTO (129),
786   EMPTY_HOWTO (130),
787   EMPTY_HOWTO (131),
788   EMPTY_HOWTO (132),
789   EMPTY_HOWTO (133),
790   EMPTY_HOWTO (134),
791   EMPTY_HOWTO (135),
792   EMPTY_HOWTO (136),
793   EMPTY_HOWTO (137),
794   EMPTY_HOWTO (138),
795   EMPTY_HOWTO (139),
796   EMPTY_HOWTO (140),
797   EMPTY_HOWTO (141),
798   EMPTY_HOWTO (142),
799   EMPTY_HOWTO (143),
800
801   HOWTO (R_SH_TLS_GD_32,        /* type */
802          0,                     /* rightshift */
803          2,                     /* size (0 = byte, 1 = short, 2 = long) */
804          32,                    /* bitsize */
805          FALSE,                 /* pc_relative */
806          0,                     /* bitpos */
807          complain_overflow_bitfield, /* complain_on_overflow */
808          bfd_elf_generic_reloc, /* */
809          "R_SH_TLS_GD_32",      /* name */
810          SH_PARTIAL32,          /* partial_inplace */
811          SH_SRC_MASK32,         /* src_mask */
812          0xffffffff,            /* dst_mask */
813          FALSE),                /* pcrel_offset */
814
815   HOWTO (R_SH_TLS_LD_32,        /* type */
816          0,                     /* rightshift */
817          2,                     /* size (0 = byte, 1 = short, 2 = long) */
818          32,                    /* bitsize */
819          FALSE,                 /* pc_relative */
820          0,                     /* bitpos */
821          complain_overflow_bitfield, /* complain_on_overflow */
822          bfd_elf_generic_reloc, /* */
823          "R_SH_TLS_LD_32",      /* name */
824          SH_PARTIAL32,          /* partial_inplace */
825          SH_SRC_MASK32,         /* src_mask */
826          0xffffffff,            /* dst_mask */
827          FALSE),                /* pcrel_offset */
828
829   HOWTO (R_SH_TLS_LDO_32,       /* type */
830          0,                     /* rightshift */
831          2,                     /* size (0 = byte, 1 = short, 2 = long) */
832          32,                    /* bitsize */
833          FALSE,                 /* pc_relative */
834          0,                     /* bitpos */
835          complain_overflow_bitfield, /* complain_on_overflow */
836          bfd_elf_generic_reloc, /* */
837          "R_SH_TLS_LDO_32",     /* name */
838          SH_PARTIAL32,          /* partial_inplace */
839          SH_SRC_MASK32,         /* src_mask */
840          0xffffffff,            /* dst_mask */
841          FALSE),                /* pcrel_offset */
842
843   HOWTO (R_SH_TLS_IE_32,        /* type */
844          0,                     /* rightshift */
845          2,                     /* size (0 = byte, 1 = short, 2 = long) */
846          32,                    /* bitsize */
847          FALSE,                 /* pc_relative */
848          0,                     /* bitpos */
849          complain_overflow_bitfield, /* complain_on_overflow */
850          bfd_elf_generic_reloc, /* */
851          "R_SH_TLS_IE_32",      /* name */
852          SH_PARTIAL32,          /* partial_inplace */
853          SH_SRC_MASK32,         /* src_mask */
854          0xffffffff,            /* dst_mask */
855          FALSE),                /* pcrel_offset */
856
857   HOWTO (R_SH_TLS_LE_32,        /* type */
858          0,                     /* rightshift */
859          2,                     /* size (0 = byte, 1 = short, 2 = long) */
860          32,                    /* bitsize */
861          FALSE,                 /* pc_relative */
862          0,                     /* bitpos */
863          complain_overflow_bitfield, /* complain_on_overflow */
864          bfd_elf_generic_reloc, /* */
865          "R_SH_TLS_LE_32",      /* name */
866          SH_PARTIAL32,          /* partial_inplace */
867          SH_SRC_MASK32,         /* src_mask */
868          0xffffffff,            /* dst_mask */
869          FALSE),                /* pcrel_offset */
870
871   HOWTO (R_SH_TLS_DTPMOD32,     /* type */
872          0,                     /* rightshift */
873          2,                     /* size (0 = byte, 1 = short, 2 = long) */
874          32,                    /* bitsize */
875          FALSE,                 /* pc_relative */
876          0,                     /* bitpos */
877          complain_overflow_bitfield, /* complain_on_overflow */
878          bfd_elf_generic_reloc, /* */
879          "R_SH_TLS_DTPMOD32",   /* name */
880          SH_PARTIAL32,          /* partial_inplace */
881          SH_SRC_MASK32,         /* src_mask */
882          0xffffffff,            /* dst_mask */
883          FALSE),                /* pcrel_offset */
884
885   HOWTO (R_SH_TLS_DTPOFF32,     /* type */
886          0,                     /* rightshift */
887          2,                     /* size (0 = byte, 1 = short, 2 = long) */
888          32,                    /* bitsize */
889          FALSE,                 /* pc_relative */
890          0,                     /* bitpos */
891          complain_overflow_bitfield, /* complain_on_overflow */
892          bfd_elf_generic_reloc, /* */
893          "R_SH_TLS_DTPOFF32",   /* name */
894          SH_PARTIAL32,          /* partial_inplace */
895          SH_SRC_MASK32,         /* src_mask */
896          0xffffffff,            /* dst_mask */
897          FALSE),                /* pcrel_offset */
898
899   HOWTO (R_SH_TLS_TPOFF32,      /* type */
900          0,                     /* rightshift */
901          2,                     /* size (0 = byte, 1 = short, 2 = long) */
902          32,                    /* bitsize */
903          FALSE,                 /* pc_relative */
904          0,                     /* bitpos */
905          complain_overflow_bitfield, /* complain_on_overflow */
906          bfd_elf_generic_reloc, /* */
907          "R_SH_TLS_TPOFF32",    /* name */
908          SH_PARTIAL32,          /* partial_inplace */
909          SH_SRC_MASK32,         /* src_mask */
910          0xffffffff,            /* dst_mask */
911          FALSE),                /* pcrel_offset */
912
913   EMPTY_HOWTO (152),
914   EMPTY_HOWTO (153),
915   EMPTY_HOWTO (154),
916   EMPTY_HOWTO (155),
917   EMPTY_HOWTO (156),
918   EMPTY_HOWTO (157),
919   EMPTY_HOWTO (158),
920   EMPTY_HOWTO (159),
921
922   HOWTO (R_SH_GOT32,            /* type */
923          0,                     /* rightshift */
924          2,                     /* size (0 = byte, 1 = short, 2 = long) */
925          32,                    /* bitsize */
926          FALSE,                 /* pc_relative */
927          0,                     /* bitpos */
928          complain_overflow_bitfield, /* complain_on_overflow */
929          bfd_elf_generic_reloc, /* */
930          "R_SH_GOT32",          /* name */
931          SH_PARTIAL32,          /* partial_inplace */
932          SH_SRC_MASK32,         /* src_mask */
933          0xffffffff,            /* dst_mask */
934          FALSE),                /* pcrel_offset */
935
936   HOWTO (R_SH_PLT32,            /* type */
937          0,                     /* rightshift */
938          2,                     /* size (0 = byte, 1 = short, 2 = long) */
939          32,                    /* bitsize */
940          TRUE,                  /* pc_relative */
941          0,                     /* bitpos */
942          complain_overflow_bitfield, /* complain_on_overflow */
943          bfd_elf_generic_reloc, /* */
944          "R_SH_PLT32",          /* name */
945          SH_PARTIAL32,          /* partial_inplace */
946          SH_SRC_MASK32,         /* src_mask */
947          0xffffffff,            /* dst_mask */
948          TRUE),                 /* pcrel_offset */
949
950   HOWTO (R_SH_COPY,             /* type */
951          0,                     /* rightshift */
952          2,                     /* size (0 = byte, 1 = short, 2 = long) */
953          32,                    /* bitsize */
954          FALSE,                 /* pc_relative */
955          0,                     /* bitpos */
956          complain_overflow_bitfield, /* complain_on_overflow */
957          bfd_elf_generic_reloc, /* */
958          "R_SH_COPY",           /* name */
959          SH_PARTIAL32,          /* partial_inplace */
960          SH_SRC_MASK32,         /* src_mask */
961          0xffffffff,            /* dst_mask */
962          FALSE),                /* pcrel_offset */
963
964   HOWTO (R_SH_GLOB_DAT,         /* type */
965          0,                     /* rightshift */
966          2,                     /* size (0 = byte, 1 = short, 2 = long) */
967          32,                    /* bitsize */
968          FALSE,                 /* pc_relative */
969          0,                     /* bitpos */
970          complain_overflow_bitfield, /* complain_on_overflow */
971          bfd_elf_generic_reloc, /* */
972          "R_SH_GLOB_DAT",       /* name */
973          SH_PARTIAL32,          /* partial_inplace */
974          SH_SRC_MASK32,         /* src_mask */
975          0xffffffff,            /* dst_mask */
976          FALSE),                /* pcrel_offset */
977
978   HOWTO (R_SH_JMP_SLOT,         /* type */
979          0,                     /* rightshift */
980          2,                     /* size (0 = byte, 1 = short, 2 = long) */
981          32,                    /* bitsize */
982          FALSE,                 /* pc_relative */
983          0,                     /* bitpos */
984          complain_overflow_bitfield, /* complain_on_overflow */
985          bfd_elf_generic_reloc, /* */
986          "R_SH_JMP_SLOT",       /* name */
987          SH_PARTIAL32,          /* partial_inplace */
988          SH_SRC_MASK32,         /* src_mask */
989          0xffffffff,            /* dst_mask */
990          FALSE),                /* pcrel_offset */
991
992   HOWTO (R_SH_RELATIVE,         /* type */
993          0,                     /* rightshift */
994          2,                     /* size (0 = byte, 1 = short, 2 = long) */
995          32,                    /* bitsize */
996          FALSE,                 /* pc_relative */
997          0,                     /* bitpos */
998          complain_overflow_bitfield, /* complain_on_overflow */
999          bfd_elf_generic_reloc, /* */
1000          "R_SH_RELATIVE",       /* name */
1001          SH_PARTIAL32,          /* partial_inplace */
1002          SH_SRC_MASK32,         /* src_mask */
1003          0xffffffff,            /* dst_mask */
1004          FALSE),                /* pcrel_offset */
1005
1006   HOWTO (R_SH_GOTOFF,           /* type */
1007          0,                     /* rightshift */
1008          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1009          32,                    /* bitsize */
1010          FALSE,                 /* pc_relative */
1011          0,                     /* bitpos */
1012          complain_overflow_bitfield, /* complain_on_overflow */
1013          bfd_elf_generic_reloc, /* */
1014          "R_SH_GOTOFF",         /* name */
1015          SH_PARTIAL32,          /* partial_inplace */
1016          SH_SRC_MASK32,         /* src_mask */
1017          0xffffffff,            /* dst_mask */
1018          FALSE),                /* pcrel_offset */
1019
1020   HOWTO (R_SH_GOTPC,            /* type */
1021          0,                     /* rightshift */
1022          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1023          32,                    /* bitsize */
1024          TRUE,                  /* pc_relative */
1025          0,                     /* bitpos */
1026          complain_overflow_bitfield, /* complain_on_overflow */
1027          bfd_elf_generic_reloc, /* */
1028          "R_SH_GOTPC",          /* name */
1029          SH_PARTIAL32,          /* partial_inplace */
1030          SH_SRC_MASK32,         /* src_mask */
1031          0xffffffff,            /* dst_mask */
1032          TRUE),                 /* pcrel_offset */
1033
1034   HOWTO (R_SH_GOTPLT32,         /* type */
1035          0,                     /* rightshift */
1036          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1037          32,                    /* bitsize */
1038          FALSE,                 /* pc_relative */
1039          0,                     /* bitpos */
1040          complain_overflow_bitfield, /* complain_on_overflow */
1041          bfd_elf_generic_reloc, /* */
1042          "R_SH_GOTPLT32",       /* name */
1043          FALSE,                 /* partial_inplace */
1044          /* ??? Why not 0?  */
1045          SH_SRC_MASK32,         /* src_mask */
1046          0xffffffff,            /* dst_mask */
1047          FALSE),                /* pcrel_offset */
1048
1049 #ifdef INCLUDE_SHMEDIA
1050   /* Used in MOVI and SHORI (x & 65536).  */
1051   HOWTO (R_SH_GOT_LOW16,        /* type */
1052          0,                     /* rightshift */
1053          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1054          64,                    /* bitsize */
1055          FALSE,                 /* pc_relative */
1056          10,                    /* bitpos */
1057          complain_overflow_dont, /* complain_on_overflow */
1058          bfd_elf_generic_reloc, /* special_function */
1059          "R_SH_GOT_LOW16",      /* name */
1060          FALSE,                 /* partial_inplace */
1061          0,                     /* src_mask */
1062          0x3fffc00,             /* dst_mask */
1063          FALSE),                /* pcrel_offset */
1064
1065   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1066   HOWTO (R_SH_GOT_MEDLOW16,     /* type */
1067          16,                    /* rightshift */
1068          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1069          64,                    /* bitsize */
1070          FALSE,                 /* pc_relative */
1071          10,                    /* bitpos */
1072          complain_overflow_dont, /* complain_on_overflow */
1073          bfd_elf_generic_reloc, /* special_function */
1074          "R_SH_GOT_MEDLOW16",   /* name */
1075          FALSE,                 /* partial_inplace */
1076          0,                     /* src_mask */
1077          0x3fffc00,             /* dst_mask */
1078          FALSE),                /* pcrel_offset */
1079
1080   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1081   HOWTO (R_SH_GOT_MEDHI16,      /* type */
1082          32,                    /* rightshift */
1083          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1084          64,                    /* bitsize */
1085          FALSE,                 /* pc_relative */
1086          10,                    /* bitpos */
1087          complain_overflow_dont, /* complain_on_overflow */
1088          bfd_elf_generic_reloc, /* special_function */
1089          "R_SH_GOT_MEDHI16",    /* name */
1090          FALSE,                 /* partial_inplace */
1091          0,                     /* src_mask */
1092          0x3fffc00,             /* dst_mask */
1093          FALSE),                /* pcrel_offset */
1094
1095   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1096   HOWTO (R_SH_GOT_HI16,         /* type */
1097          48,                    /* rightshift */
1098          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1099          64,                    /* bitsize */
1100          FALSE,                 /* pc_relative */
1101          10,                    /* bitpos */
1102          complain_overflow_dont, /* complain_on_overflow */
1103          bfd_elf_generic_reloc, /* special_function */
1104          "R_SH_GOT_HI16",       /* name */
1105          FALSE,                 /* partial_inplace */
1106          0,                     /* src_mask */
1107          0x3fffc00,             /* dst_mask */
1108          FALSE),                /* pcrel_offset */
1109
1110   /* Used in MOVI and SHORI (x & 65536).  */
1111   HOWTO (R_SH_GOTPLT_LOW16,     /* type */
1112          0,                     /* rightshift */
1113          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1114          64,                    /* bitsize */
1115          FALSE,                 /* pc_relative */
1116          10,                    /* bitpos */
1117          complain_overflow_dont, /* complain_on_overflow */
1118          bfd_elf_generic_reloc, /* special_function */
1119          "R_SH_GOTPLT_LOW16",   /* name */
1120          FALSE,                 /* partial_inplace */
1121          0,                     /* src_mask */
1122          0x3fffc00,             /* dst_mask */
1123          FALSE),                /* pcrel_offset */
1124
1125   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1126   HOWTO (R_SH_GOTPLT_MEDLOW16,  /* type */
1127          16,                    /* rightshift */
1128          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1129          64,                    /* bitsize */
1130          FALSE,                 /* pc_relative */
1131          10,                    /* bitpos */
1132          complain_overflow_dont, /* complain_on_overflow */
1133          bfd_elf_generic_reloc, /* special_function */
1134          "R_SH_GOTPLT_MEDLOW16", /* name */
1135          FALSE,                 /* partial_inplace */
1136          0,                     /* src_mask */
1137          0x3fffc00,             /* dst_mask */
1138          FALSE),                /* pcrel_offset */
1139
1140   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1141   HOWTO (R_SH_GOTPLT_MEDHI16,   /* type */
1142          32,                    /* rightshift */
1143          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1144          64,                    /* bitsize */
1145          FALSE,                 /* pc_relative */
1146          10,                    /* bitpos */
1147          complain_overflow_dont, /* complain_on_overflow */
1148          bfd_elf_generic_reloc, /* special_function */
1149          "R_SH_GOTPLT_MEDHI16", /* name */
1150          FALSE,                 /* partial_inplace */
1151          0,                     /* src_mask */
1152          0x3fffc00,             /* dst_mask */
1153          FALSE),                /* pcrel_offset */
1154
1155   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1156   HOWTO (R_SH_GOTPLT_HI16,      /* type */
1157          48,                    /* rightshift */
1158          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1159          64,                    /* bitsize */
1160          FALSE,                 /* pc_relative */
1161          10,                    /* bitpos */
1162          complain_overflow_dont, /* complain_on_overflow */
1163          bfd_elf_generic_reloc, /* special_function */
1164          "R_SH_GOTPLT_HI16",    /* name */
1165          FALSE,                 /* partial_inplace */
1166          0,                     /* src_mask */
1167          0x3fffc00,             /* dst_mask */
1168          FALSE),                /* pcrel_offset */
1169
1170   /* Used in MOVI and SHORI (x & 65536).  */
1171   HOWTO (R_SH_PLT_LOW16,        /* type */
1172          0,                     /* rightshift */
1173          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1174          64,                    /* bitsize */
1175          TRUE,                  /* pc_relative */
1176          10,                    /* bitpos */
1177          complain_overflow_dont, /* complain_on_overflow */
1178          bfd_elf_generic_reloc, /* special_function */
1179          "R_SH_PLT_LOW16",      /* name */
1180          FALSE,                 /* partial_inplace */
1181          0,                     /* src_mask */
1182          0x3fffc00,             /* dst_mask */
1183          TRUE),                 /* pcrel_offset */
1184
1185   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1186   HOWTO (R_SH_PLT_MEDLOW16,     /* type */
1187          16,                    /* rightshift */
1188          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1189          64,                    /* bitsize */
1190          TRUE,                  /* pc_relative */
1191          10,                    /* bitpos */
1192          complain_overflow_dont, /* complain_on_overflow */
1193          bfd_elf_generic_reloc, /* special_function */
1194          "R_SH_PLT_MEDLOW16",   /* name */
1195          FALSE,                 /* partial_inplace */
1196          0,                     /* src_mask */
1197          0x3fffc00,             /* dst_mask */
1198          TRUE),                 /* pcrel_offset */
1199
1200   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1201   HOWTO (R_SH_PLT_MEDHI16,      /* type */
1202          32,                    /* rightshift */
1203          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1204          64,                    /* bitsize */
1205          TRUE,                  /* pc_relative */
1206          10,                    /* bitpos */
1207          complain_overflow_dont, /* complain_on_overflow */
1208          bfd_elf_generic_reloc, /* special_function */
1209          "R_SH_PLT_MEDHI16",    /* name */
1210          FALSE,                 /* partial_inplace */
1211          0,                     /* src_mask */
1212          0x3fffc00,             /* dst_mask */
1213          TRUE),                 /* pcrel_offset */
1214
1215   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1216   HOWTO (R_SH_PLT_HI16,         /* type */
1217          48,                    /* rightshift */
1218          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1219          64,                    /* bitsize */
1220          TRUE,                  /* pc_relative */
1221          10,                    /* bitpos */
1222          complain_overflow_dont, /* complain_on_overflow */
1223          bfd_elf_generic_reloc, /* special_function */
1224          "R_SH_PLT_HI16",       /* name */
1225          FALSE,                 /* partial_inplace */
1226          0,                     /* src_mask */
1227          0x3fffc00,             /* dst_mask */
1228          TRUE),                 /* pcrel_offset */
1229
1230   /* Used in MOVI and SHORI (x & 65536).  */
1231   HOWTO (R_SH_GOTOFF_LOW16,     /* type */
1232          0,                     /* rightshift */
1233          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1234          64,                    /* bitsize */
1235          FALSE,                 /* pc_relative */
1236          10,                    /* bitpos */
1237          complain_overflow_dont, /* complain_on_overflow */
1238          bfd_elf_generic_reloc, /* special_function */
1239          "R_SH_GOTOFF_LOW16",   /* name */
1240          FALSE,                 /* partial_inplace */
1241          0,                     /* src_mask */
1242          0x3fffc00,             /* dst_mask */
1243          FALSE),                /* pcrel_offset */
1244
1245   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1246   HOWTO (R_SH_GOTOFF_MEDLOW16,  /* type */
1247          16,                    /* rightshift */
1248          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1249          64,                    /* bitsize */
1250          FALSE,                 /* pc_relative */
1251          10,                    /* bitpos */
1252          complain_overflow_dont, /* complain_on_overflow */
1253          bfd_elf_generic_reloc, /* special_function */
1254          "R_SH_GOTOFF_MEDLOW16", /* name */
1255          FALSE,                 /* partial_inplace */
1256          0,                     /* src_mask */
1257          0x3fffc00,             /* dst_mask */
1258          FALSE),                /* pcrel_offset */
1259
1260   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1261   HOWTO (R_SH_GOTOFF_MEDHI16,   /* type */
1262          32,                    /* rightshift */
1263          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1264          64,                    /* bitsize */
1265          FALSE,                 /* pc_relative */
1266          10,                    /* bitpos */
1267          complain_overflow_dont, /* complain_on_overflow */
1268          bfd_elf_generic_reloc, /* special_function */
1269          "R_SH_GOTOFF_MEDHI16", /* name */
1270          FALSE,                 /* partial_inplace */
1271          0,                     /* src_mask */
1272          0x3fffc00,             /* dst_mask */
1273          FALSE),                /* pcrel_offset */
1274
1275   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1276   HOWTO (R_SH_GOTOFF_HI16,      /* type */
1277          48,                    /* rightshift */
1278          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1279          64,                    /* bitsize */
1280          FALSE,                 /* pc_relative */
1281          10,                    /* bitpos */
1282          complain_overflow_dont, /* complain_on_overflow */
1283          bfd_elf_generic_reloc, /* special_function */
1284          "R_SH_GOTOFF_HI16",    /* name */
1285          FALSE,                 /* partial_inplace */
1286          0,                     /* src_mask */
1287          0x3fffc00,             /* dst_mask */
1288          FALSE),                /* pcrel_offset */
1289
1290   /* Used in MOVI and SHORI (x & 65536).  */
1291   HOWTO (R_SH_GOTPC_LOW16,      /* type */
1292          0,                     /* rightshift */
1293          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1294          64,                    /* bitsize */
1295          TRUE,                  /* pc_relative */
1296          10,                    /* bitpos */
1297          complain_overflow_dont, /* complain_on_overflow */
1298          bfd_elf_generic_reloc, /* special_function */
1299          "R_SH_GOTPC_LOW16",    /* name */
1300          FALSE,                 /* partial_inplace */
1301          0,                     /* src_mask */
1302          0x3fffc00,             /* dst_mask */
1303          TRUE),                 /* pcrel_offset */
1304
1305   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1306   HOWTO (R_SH_GOTPC_MEDLOW16,   /* type */
1307          16,                    /* rightshift */
1308          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1309          64,                    /* bitsize */
1310          TRUE,                  /* pc_relative */
1311          10,                    /* bitpos */
1312          complain_overflow_dont, /* complain_on_overflow */
1313          bfd_elf_generic_reloc, /* special_function */
1314          "R_SH_GOTPC_MEDLOW16", /* name */
1315          FALSE,                 /* partial_inplace */
1316          0,                     /* src_mask */
1317          0x3fffc00,             /* dst_mask */
1318          TRUE),                 /* pcrel_offset */
1319
1320   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1321   HOWTO (R_SH_GOTPC_MEDHI16,    /* type */
1322          32,                    /* rightshift */
1323          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1324          64,                    /* bitsize */
1325          TRUE,                  /* pc_relative */
1326          10,                    /* bitpos */
1327          complain_overflow_dont, /* complain_on_overflow */
1328          bfd_elf_generic_reloc, /* special_function */
1329          "R_SH_GOTPC_MEDHI16",  /* name */
1330          FALSE,                 /* partial_inplace */
1331          0,                     /* src_mask */
1332          0x3fffc00,             /* dst_mask */
1333          TRUE),                 /* pcrel_offset */
1334
1335   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1336   HOWTO (R_SH_GOTPC_HI16,       /* type */
1337          48,                    /* rightshift */
1338          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1339          64,                    /* bitsize */
1340          TRUE,                  /* pc_relative */
1341          10,                    /* bitpos */
1342          complain_overflow_dont, /* complain_on_overflow */
1343          bfd_elf_generic_reloc, /* special_function */
1344          "R_SH_GOTPC_HI16",     /* name */
1345          FALSE,                 /* partial_inplace */
1346          0,                     /* src_mask */
1347          0x3fffc00,             /* dst_mask */
1348          TRUE),                 /* pcrel_offset */
1349
1350   /* Used in LD.L, FLD.S et al.  */
1351   HOWTO (R_SH_GOT10BY4,         /* type */
1352          2,                     /* rightshift */
1353          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1354          12,                    /* bitsize */
1355          FALSE,                 /* pc_relative */
1356          10,                    /* bitpos */
1357          complain_overflow_signed, /* complain_on_overflow */
1358          bfd_elf_generic_reloc, /* special_function */
1359          "R_SH_GOT10BY4",       /* name */
1360          FALSE,                 /* partial_inplace */
1361          0,                     /* src_mask */
1362          0xffc00,               /* dst_mask */
1363          FALSE),                /* pcrel_offset */
1364
1365   /* Used in LD.L, FLD.S et al.  */
1366   HOWTO (R_SH_GOTPLT10BY4,      /* type */
1367          2,                     /* rightshift */
1368          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1369          12,                    /* bitsize */
1370          FALSE,                 /* pc_relative */
1371          10,                    /* bitpos */
1372          complain_overflow_signed, /* complain_on_overflow */
1373          bfd_elf_generic_reloc, /* special_function */
1374          "R_SH_GOTPLT10BY4",    /* name */
1375          FALSE,                 /* partial_inplace */
1376          0,                     /* src_mask */
1377          0xffc00,               /* dst_mask */
1378          FALSE),                /* pcrel_offset */
1379
1380   /* Used in FLD.D, FST.P et al.  */
1381   HOWTO (R_SH_GOT10BY8,         /* type */
1382          3,                     /* rightshift */
1383          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1384          13,                    /* bitsize */
1385          FALSE,                 /* pc_relative */
1386          10,                    /* bitpos */
1387          complain_overflow_signed, /* complain_on_overflow */
1388          bfd_elf_generic_reloc, /* special_function */
1389          "R_SH_GOT10BY8",       /* name */
1390          FALSE,                 /* partial_inplace */
1391          0,                     /* src_mask */
1392          0xffc00,               /* dst_mask */
1393          FALSE),                /* pcrel_offset */
1394
1395   /* Used in FLD.D, FST.P et al.  */
1396   HOWTO (R_SH_GOTPLT10BY8,      /* type */
1397          3,                     /* rightshift */
1398          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1399          13,                    /* bitsize */
1400          FALSE,                 /* pc_relative */
1401          10,                    /* bitpos */
1402          complain_overflow_signed, /* complain_on_overflow */
1403          bfd_elf_generic_reloc, /* special_function */
1404          "R_SH_GOTPLT10BY8",    /* name */
1405          FALSE,                 /* partial_inplace */
1406          0,                     /* src_mask */
1407          0xffc00,               /* dst_mask */
1408          FALSE),                /* pcrel_offset */
1409
1410   HOWTO (R_SH_COPY64,           /* type */
1411          0,                     /* rightshift */
1412          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1413          64,                    /* bitsize */
1414          FALSE,                 /* pc_relative */
1415          0,                     /* bitpos */
1416          complain_overflow_dont, /* complain_on_overflow */
1417          bfd_elf_generic_reloc, /* special_function */
1418          "R_SH_COPY64",         /* name */
1419          FALSE,                 /* partial_inplace */
1420          0,                     /* src_mask */
1421          ((bfd_vma) 0) - 1,     /* dst_mask */
1422          FALSE),                /* pcrel_offset */
1423
1424   HOWTO (R_SH_GLOB_DAT64,       /* type */
1425          0,                     /* rightshift */
1426          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1427          64,                    /* bitsize */
1428          FALSE,                 /* pc_relative */
1429          0,                     /* bitpos */
1430          complain_overflow_dont, /* complain_on_overflow */
1431          bfd_elf_generic_reloc, /* special_function */
1432          "R_SH_GLOB_DAT64",     /* name */
1433          FALSE,                 /* partial_inplace */
1434          0,                     /* src_mask */
1435          ((bfd_vma) 0) - 1,     /* dst_mask */
1436          FALSE),                /* pcrel_offset */
1437
1438   HOWTO (R_SH_JMP_SLOT64,       /* type */
1439          0,                     /* rightshift */
1440          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1441          64,                    /* bitsize */
1442          FALSE,                 /* pc_relative */
1443          0,                     /* bitpos */
1444          complain_overflow_dont, /* complain_on_overflow */
1445          bfd_elf_generic_reloc, /* special_function */
1446          "R_SH_JMP_SLOT64",     /* name */
1447          FALSE,                 /* partial_inplace */
1448          0,                     /* src_mask */
1449          ((bfd_vma) 0) - 1,     /* dst_mask */
1450          FALSE),                /* pcrel_offset */
1451
1452   HOWTO (R_SH_RELATIVE64,       /* type */
1453          0,                     /* rightshift */
1454          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1455          64,                    /* bitsize */
1456          FALSE,                 /* pc_relative */
1457          0,                     /* bitpos */
1458          complain_overflow_dont, /* complain_on_overflow */
1459          bfd_elf_generic_reloc, /* special_function */
1460          "R_SH_RELATIVE64",     /* name */
1461          FALSE,                 /* partial_inplace */
1462          0,                     /* src_mask */
1463          ((bfd_vma) 0) - 1,     /* dst_mask */
1464          FALSE),                /* pcrel_offset */
1465
1466   EMPTY_HOWTO (197),
1467   EMPTY_HOWTO (198),
1468   EMPTY_HOWTO (199),
1469   EMPTY_HOWTO (200),
1470   EMPTY_HOWTO (201),
1471   EMPTY_HOWTO (202),
1472   EMPTY_HOWTO (203),
1473   EMPTY_HOWTO (204),
1474   EMPTY_HOWTO (205),
1475   EMPTY_HOWTO (206),
1476   EMPTY_HOWTO (207),
1477   EMPTY_HOWTO (208),
1478   EMPTY_HOWTO (209),
1479   EMPTY_HOWTO (210),
1480   EMPTY_HOWTO (211),
1481   EMPTY_HOWTO (212),
1482   EMPTY_HOWTO (213),
1483   EMPTY_HOWTO (214),
1484   EMPTY_HOWTO (215),
1485   EMPTY_HOWTO (216),
1486   EMPTY_HOWTO (217),
1487   EMPTY_HOWTO (218),
1488   EMPTY_HOWTO (219),
1489   EMPTY_HOWTO (220),
1490   EMPTY_HOWTO (221),
1491   EMPTY_HOWTO (222),
1492   EMPTY_HOWTO (223),
1493   EMPTY_HOWTO (224),
1494   EMPTY_HOWTO (225),
1495   EMPTY_HOWTO (226),
1496   EMPTY_HOWTO (227),
1497   EMPTY_HOWTO (228),
1498   EMPTY_HOWTO (229),
1499   EMPTY_HOWTO (230),
1500   EMPTY_HOWTO (231),
1501   EMPTY_HOWTO (232),
1502   EMPTY_HOWTO (233),
1503   EMPTY_HOWTO (234),
1504   EMPTY_HOWTO (235),
1505   EMPTY_HOWTO (236),
1506   EMPTY_HOWTO (237),
1507   EMPTY_HOWTO (238),
1508   EMPTY_HOWTO (239),
1509   EMPTY_HOWTO (240),
1510   EMPTY_HOWTO (241),
1511
1512   /* Relocations for SHmedia code.  None of these are partial_inplace or
1513      use the field being relocated (except R_SH_PT_16).  */
1514
1515   /* The assembler will generate this reloc before a block of SHmedia
1516      instructions.  A section should be processed as assuming it contains
1517      data, unless this reloc is seen.  Note that a block of SHcompact
1518      instructions are instead preceded by R_SH_CODE.
1519      This is currently not implemented, but should be used for SHmedia
1520      linker relaxation.  */
1521   HOWTO (R_SH_SHMEDIA_CODE,     /* type */
1522          0,                     /* rightshift */
1523          1,                     /* size (0 = byte, 1 = short, 2 = long) */
1524          0,                     /* bitsize */
1525          FALSE,                 /* pc_relative */
1526          0,                     /* bitpos */
1527          complain_overflow_unsigned, /* complain_on_overflow */
1528          sh_elf_ignore_reloc,   /* special_function */
1529          "R_SH_SHMEDIA_CODE",   /* name */
1530          FALSE,                 /* partial_inplace */
1531          0,                     /* src_mask */
1532          0,                     /* dst_mask */
1533          FALSE),                /* pcrel_offset */
1534
1535   /* The assembler will generate this reloc at a PTA or PTB instruction,
1536      and the linker checks the right type of target, or changes a PTA to a
1537      PTB, if the original insn was PT.  */
1538   HOWTO (R_SH_PT_16,            /* type */
1539          2,                     /* rightshift */
1540          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1541          18,                    /* bitsize */
1542          TRUE,                  /* pc_relative */
1543          10,                    /* bitpos */
1544          complain_overflow_signed, /* complain_on_overflow */
1545          bfd_elf_generic_reloc, /* special_function */
1546          "R_SH_PT_16",          /* name */
1547          FALSE,                 /* partial_inplace */
1548          0,                     /* src_mask */
1549          0x3fffc00,             /* dst_mask */
1550          TRUE),                 /* pcrel_offset */
1551
1552   /* Used in unexpanded MOVI.  */
1553   HOWTO (R_SH_IMMS16,           /* type */
1554          0,                     /* rightshift */
1555          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1556          16,                    /* bitsize */
1557          FALSE,                 /* pc_relative */
1558          10,                    /* bitpos */
1559          complain_overflow_signed, /* complain_on_overflow */
1560          bfd_elf_generic_reloc, /* special_function */
1561          "R_SH_IMMS16",         /* name */
1562          FALSE,                 /* partial_inplace */
1563          0,                     /* src_mask */
1564          0x3fffc00,             /* dst_mask */
1565          FALSE),                /* pcrel_offset */
1566
1567   /* Used in SHORI.  */
1568   HOWTO (R_SH_IMMU16,           /* type */
1569          0,                     /* rightshift */
1570          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1571          16,                    /* bitsize */
1572          FALSE,                 /* pc_relative */
1573          10,                    /* bitpos */
1574          complain_overflow_unsigned, /* complain_on_overflow */
1575          bfd_elf_generic_reloc, /* special_function */
1576          "R_SH_IMMU16",         /* name */
1577          FALSE,                 /* partial_inplace */
1578          0,                     /* src_mask */
1579          0x3fffc00,             /* dst_mask */
1580          FALSE),                /* pcrel_offset */
1581
1582   /* Used in MOVI and SHORI (x & 65536).  */
1583   HOWTO (R_SH_IMM_LOW16,        /* type */
1584          0,                     /* rightshift */
1585          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1586          64,                    /* bitsize */
1587          FALSE,                 /* pc_relative */
1588          10,                    /* bitpos */
1589          complain_overflow_dont, /* complain_on_overflow */
1590          bfd_elf_generic_reloc, /* special_function */
1591          "R_SH_IMM_LOW16",      /* name */
1592          FALSE,                 /* partial_inplace */
1593          0,                     /* src_mask */
1594          0x3fffc00,             /* dst_mask */
1595          FALSE),                /* pcrel_offset */
1596
1597   /* Used in MOVI and SHORI ((x - $) & 65536).  */
1598   HOWTO (R_SH_IMM_LOW16_PCREL,  /* type */
1599          0,                     /* rightshift */
1600          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1601          64,                    /* bitsize */
1602          TRUE,                  /* pc_relative */
1603          10,                    /* bitpos */
1604          complain_overflow_dont, /* complain_on_overflow */
1605          bfd_elf_generic_reloc, /* special_function */
1606          "R_SH_IMM_LOW16_PCREL", /* name */
1607          FALSE,                 /* partial_inplace */
1608          0,                     /* src_mask */
1609          0x3fffc00,             /* dst_mask */
1610          TRUE),                 /* pcrel_offset */
1611
1612   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1613   HOWTO (R_SH_IMM_MEDLOW16,     /* type */
1614          16,                    /* rightshift */
1615          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1616          64,                    /* bitsize */
1617          FALSE,                 /* pc_relative */
1618          10,                    /* bitpos */
1619          complain_overflow_dont, /* complain_on_overflow */
1620          bfd_elf_generic_reloc, /* special_function */
1621          "R_SH_IMM_MEDLOW16",   /* name */
1622          FALSE,                 /* partial_inplace */
1623          0,                     /* src_mask */
1624          0x3fffc00,             /* dst_mask */
1625          FALSE),                /* pcrel_offset */
1626
1627   /* Used in MOVI and SHORI (((x - $) >> 16) & 65536).  */
1628   HOWTO (R_SH_IMM_MEDLOW16_PCREL, /* type */
1629          16,                    /* rightshift */
1630          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1631          64,                    /* bitsize */
1632          TRUE,                  /* pc_relative */
1633          10,                    /* bitpos */
1634          complain_overflow_dont, /* complain_on_overflow */
1635          bfd_elf_generic_reloc, /* special_function */
1636          "R_SH_IMM_MEDLOW16_PCREL", /* name */
1637          FALSE,                 /* partial_inplace */
1638          0,                     /* src_mask */
1639          0x3fffc00,             /* dst_mask */
1640          TRUE),                 /* pcrel_offset */
1641
1642   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1643   HOWTO (R_SH_IMM_MEDHI16,      /* type */
1644          32,                    /* rightshift */
1645          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1646          64,                    /* bitsize */
1647          FALSE,                 /* pc_relative */
1648          10,                    /* bitpos */
1649          complain_overflow_dont, /* complain_on_overflow */
1650          bfd_elf_generic_reloc, /* special_function */
1651          "R_SH_IMM_MEDHI16",    /* name */
1652          FALSE,                 /* partial_inplace */
1653          0,                     /* src_mask */
1654          0x3fffc00,             /* dst_mask */
1655          FALSE),                /* pcrel_offset */
1656
1657   /* Used in MOVI and SHORI (((x - $) >> 32) & 65536).  */
1658   HOWTO (R_SH_IMM_MEDHI16_PCREL, /* type */
1659          32,                    /* rightshift */
1660          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1661          64,                    /* bitsize */
1662          TRUE,                  /* pc_relative */
1663          10,                    /* bitpos */
1664          complain_overflow_dont, /* complain_on_overflow */
1665          bfd_elf_generic_reloc, /* special_function */
1666          "R_SH_IMM_MEDHI16_PCREL", /* name */
1667          FALSE,                 /* partial_inplace */
1668          0,                     /* src_mask */
1669          0x3fffc00,             /* dst_mask */
1670          TRUE),                 /* pcrel_offset */
1671
1672   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1673   HOWTO (R_SH_IMM_HI16,         /* type */
1674          48,                    /* rightshift */
1675          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1676          64,                    /* bitsize */
1677          FALSE,                 /* pc_relative */
1678          10,                    /* bitpos */
1679          complain_overflow_dont, /* complain_on_overflow */
1680          bfd_elf_generic_reloc, /* special_function */
1681          "R_SH_IMM_HI16",       /* name */
1682          FALSE,                 /* partial_inplace */
1683          0,                     /* src_mask */
1684          0x3fffc00,             /* dst_mask */
1685          FALSE),                /* pcrel_offset */
1686
1687   /* Used in MOVI and SHORI (((x - $) >> 48) & 65536).  */
1688   HOWTO (R_SH_IMM_HI16_PCREL,   /* type */
1689          48,                    /* rightshift */
1690          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1691          64,                    /* bitsize */
1692          TRUE,                  /* pc_relative */
1693          10,                    /* bitpos */
1694          complain_overflow_dont, /* complain_on_overflow */
1695          bfd_elf_generic_reloc, /* special_function */
1696          "R_SH_IMM_HI16_PCREL", /* name */
1697          FALSE,                 /* partial_inplace */
1698          0,                     /* src_mask */
1699          0x3fffc00,             /* dst_mask */
1700          TRUE),                 /* pcrel_offset */
1701
1702   /* For the .uaquad pseudo.  */
1703   HOWTO (R_SH_64,               /* type */
1704          0,                     /* rightshift */
1705          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1706          64,                    /* bitsize */
1707          FALSE,                 /* pc_relative */
1708          0,                     /* bitpos */
1709          complain_overflow_dont, /* complain_on_overflow */
1710          bfd_elf_generic_reloc, /* special_function */
1711          "R_SH_64",             /* name */
1712          FALSE,                 /* partial_inplace */
1713          0,                     /* src_mask */
1714          ((bfd_vma) 0) - 1,     /* dst_mask */
1715          FALSE),                /* pcrel_offset */
1716
1717   /* For the .uaquad pseudo, (x - $).  */
1718   HOWTO (R_SH_64_PCREL,         /* type */
1719          48,                    /* rightshift */
1720          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1721          64,                    /* bitsize */
1722          TRUE,                  /* pc_relative */
1723          10,                    /* bitpos */
1724          complain_overflow_dont, /* complain_on_overflow */
1725          bfd_elf_generic_reloc, /* special_function */
1726          "R_SH_64_PCREL",       /* name */
1727          FALSE,                 /* partial_inplace */
1728          0,                     /* src_mask */
1729          ((bfd_vma) 0) - 1,     /* dst_mask */
1730          TRUE),                 /* pcrel_offset */
1731
1732 #endif
1733 #undef SH_PARTIAL32
1734 #undef SH_SRC_MASK32
1735 #undef SH_ELF_RELOC