[x86] Resolve non-PIC undefweak symbols in executable
[external/binutils.git] / bfd / elf32-sh-relocs.h
1 /* Copyright (C) 2006-2016 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          3,                     /* 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 #else
1466   EMPTY_HOWTO (169),
1467   EMPTY_HOWTO (170),
1468   EMPTY_HOWTO (171),
1469   EMPTY_HOWTO (172),
1470   EMPTY_HOWTO (173),
1471   EMPTY_HOWTO (174),
1472   EMPTY_HOWTO (175),
1473   EMPTY_HOWTO (176),
1474   EMPTY_HOWTO (177),
1475   EMPTY_HOWTO (178),
1476   EMPTY_HOWTO (179),
1477   EMPTY_HOWTO (180),
1478   EMPTY_HOWTO (181),
1479   EMPTY_HOWTO (182),
1480   EMPTY_HOWTO (183),
1481   EMPTY_HOWTO (184),
1482   EMPTY_HOWTO (185),
1483   EMPTY_HOWTO (186),
1484   EMPTY_HOWTO (187),
1485   EMPTY_HOWTO (188),
1486   EMPTY_HOWTO (189),
1487   EMPTY_HOWTO (190),
1488   EMPTY_HOWTO (191),
1489   EMPTY_HOWTO (192),
1490   EMPTY_HOWTO (193),
1491   EMPTY_HOWTO (194),
1492   EMPTY_HOWTO (195),
1493   EMPTY_HOWTO (196),
1494 #endif
1495
1496   EMPTY_HOWTO (197),
1497   EMPTY_HOWTO (198),
1498   EMPTY_HOWTO (199),
1499   EMPTY_HOWTO (200),
1500
1501   /* FDPIC-relative offset to a GOT entry, for movi20.  */
1502   HOWTO (R_SH_GOT20,            /* type */
1503          0,                     /* rightshift */
1504          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1505          20,                    /* bitsize */
1506          FALSE,                 /* pc_relative */
1507          0,                     /* bitpos */
1508          complain_overflow_signed, /* complain_on_overflow */
1509          bfd_elf_generic_reloc, /* special_function */
1510          "R_SH_GOT20",          /* name */
1511          FALSE,                 /* partial_inplace */
1512          0,                     /* src_mask */
1513          0x00f0ffff,            /* dst_mask */
1514          FALSE),                /* pcrel_offset */
1515
1516   /* FDPIC-relative offset to a data object, for movi20.  */
1517   HOWTO (R_SH_GOTOFF20,         /* type */
1518          0,                     /* rightshift */
1519          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1520          20,                    /* bitsize */
1521          FALSE,                 /* pc_relative */
1522          0,                     /* bitpos */
1523          complain_overflow_signed, /* complain_on_overflow */
1524          bfd_elf_generic_reloc, /* special_function */
1525          "R_SH_GOTOFF20",       /* name */
1526          FALSE,                 /* partial_inplace */
1527          0,                     /* src_mask */
1528          0x00f0ffff,            /* dst_mask */
1529          FALSE),                /* pcrel_offset */
1530
1531   /* FDPIC-relative offset to a GOT entry for a function descriptor.  */
1532   HOWTO (R_SH_GOTFUNCDESC,      /* type */
1533          0,                     /* rightshift */
1534          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1535          32,                    /* bitsize */
1536          FALSE,                 /* pc_relative */
1537          0,                     /* bitpos */
1538          complain_overflow_signed, /* complain_on_overflow */
1539          bfd_elf_generic_reloc, /* special_function */
1540          "R_SH_GOTFUNCDESC",    /* name */
1541          FALSE,                 /* partial_inplace */
1542          0,                     /* src_mask */
1543          0xffffffff,            /* dst_mask */
1544          FALSE),                /* pcrel_offset */
1545
1546   /* FDPIC-relative offset to a GOT entry for a function descriptor,
1547      for movi20.  */
1548   HOWTO (R_SH_GOTFUNCDESC20,    /* type */
1549          0,                     /* rightshift */
1550          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1551          20,                    /* bitsize */
1552          FALSE,                 /* pc_relative */
1553          0,                     /* bitpos */
1554          complain_overflow_signed, /* complain_on_overflow */
1555          bfd_elf_generic_reloc, /* special_function */
1556          "R_SH_GOTFUNCDESC20",  /* name */
1557          FALSE,                 /* partial_inplace */
1558          0,                     /* src_mask */
1559          0x00f0ffff,            /* dst_mask */
1560          FALSE),                /* pcrel_offset */
1561
1562   /* FDPIC-relative offset to a function descriptor.  */
1563   HOWTO (R_SH_GOTOFFFUNCDESC,   /* type */
1564          0,                     /* rightshift */
1565          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1566          32,                    /* bitsize */
1567          FALSE,                 /* pc_relative */
1568          0,                     /* bitpos */
1569          complain_overflow_signed, /* complain_on_overflow */
1570          bfd_elf_generic_reloc, /* special_function */
1571          "R_SH_GOTOFFFUNCDESC", /* name */
1572          FALSE,                 /* partial_inplace */
1573          0,                     /* src_mask */
1574          0xffffffff,            /* dst_mask */
1575          FALSE),                /* pcrel_offset */
1576
1577   /* FDPIC-relative offset to a function descriptor, for movi20.  */
1578   HOWTO (R_SH_GOTOFFFUNCDESC20, /* type */
1579          0,                     /* rightshift */
1580          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1581          20,                    /* bitsize */
1582          FALSE,                 /* pc_relative */
1583          0,                     /* bitpos */
1584          complain_overflow_signed, /* complain_on_overflow */
1585          bfd_elf_generic_reloc, /* special_function */
1586          "R_SH_GOTOFFFUNCDESC20", /* name */
1587          FALSE,                 /* partial_inplace */
1588          0,                     /* src_mask */
1589          0x00f0ffff,            /* dst_mask */
1590          FALSE),                /* pcrel_offset */
1591
1592   /* Address of an official function descriptor.  */
1593   HOWTO (R_SH_FUNCDESC,         /* type */
1594          0,                     /* rightshift */
1595          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1596          32,                    /* bitsize */
1597          FALSE,                 /* pc_relative */
1598          0,                     /* bitpos */
1599          complain_overflow_signed, /* complain_on_overflow */
1600          bfd_elf_generic_reloc, /* special_function */
1601          "R_SH_FUNCDESC",       /* name */
1602          FALSE,                 /* partial_inplace */
1603          0,                     /* src_mask */
1604          0xffffffff,            /* dst_mask */
1605          FALSE),                /* pcrel_offset */
1606
1607   /* Function descriptor to be filled in by the dynamic linker.  */
1608   HOWTO (R_SH_FUNCDESC_VALUE,   /* type */
1609          0,                     /* rightshift */
1610          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1611          64,                    /* bitsize */
1612          FALSE,                 /* pc_relative */
1613          0,                     /* bitpos */
1614          complain_overflow_signed, /* complain_on_overflow */
1615          bfd_elf_generic_reloc, /* special_function */
1616          "R_SH_FUNCDESC_VALUE", /* name */
1617          FALSE,                 /* partial_inplace */
1618          0,                     /* src_mask */
1619          0xffffffff,            /* dst_mask */
1620          FALSE),                /* pcrel_offset */
1621
1622 #ifdef INCLUDE_SHMEDIA
1623   EMPTY_HOWTO (209),
1624   EMPTY_HOWTO (210),
1625   EMPTY_HOWTO (211),
1626   EMPTY_HOWTO (212),
1627   EMPTY_HOWTO (213),
1628   EMPTY_HOWTO (214),
1629   EMPTY_HOWTO (215),
1630   EMPTY_HOWTO (216),
1631   EMPTY_HOWTO (217),
1632   EMPTY_HOWTO (218),
1633   EMPTY_HOWTO (219),
1634   EMPTY_HOWTO (220),
1635   EMPTY_HOWTO (221),
1636   EMPTY_HOWTO (222),
1637   EMPTY_HOWTO (223),
1638   EMPTY_HOWTO (224),
1639   EMPTY_HOWTO (225),
1640   EMPTY_HOWTO (226),
1641   EMPTY_HOWTO (227),
1642   EMPTY_HOWTO (228),
1643   EMPTY_HOWTO (229),
1644   EMPTY_HOWTO (230),
1645   EMPTY_HOWTO (231),
1646   EMPTY_HOWTO (232),
1647   EMPTY_HOWTO (233),
1648   EMPTY_HOWTO (234),
1649   EMPTY_HOWTO (235),
1650   EMPTY_HOWTO (236),
1651   EMPTY_HOWTO (237),
1652   EMPTY_HOWTO (238),
1653   EMPTY_HOWTO (239),
1654   EMPTY_HOWTO (240),
1655   EMPTY_HOWTO (241),
1656
1657   /* Relocations for SHmedia code.  None of these are partial_inplace or
1658      use the field being relocated (except R_SH_PT_16).  */
1659
1660   /* The assembler will generate this reloc before a block of SHmedia
1661      instructions.  A section should be processed as assuming it contains
1662      data, unless this reloc is seen.  Note that a block of SHcompact
1663      instructions are instead preceded by R_SH_CODE.
1664      This is currently not implemented, but should be used for SHmedia
1665      linker relaxation.  */
1666   HOWTO (R_SH_SHMEDIA_CODE,     /* type */
1667          0,                     /* rightshift */
1668          1,                     /* size (0 = byte, 1 = short, 2 = long) */
1669          0,                     /* bitsize */
1670          FALSE,                 /* pc_relative */
1671          0,                     /* bitpos */
1672          complain_overflow_unsigned, /* complain_on_overflow */
1673          sh_elf_ignore_reloc,   /* special_function */
1674          "R_SH_SHMEDIA_CODE",   /* name */
1675          FALSE,                 /* partial_inplace */
1676          0,                     /* src_mask */
1677          0,                     /* dst_mask */
1678          FALSE),                /* pcrel_offset */
1679
1680   /* The assembler will generate this reloc at a PTA or PTB instruction,
1681      and the linker checks the right type of target, or changes a PTA to a
1682      PTB, if the original insn was PT.  */
1683   HOWTO (R_SH_PT_16,            /* type */
1684          2,                     /* rightshift */
1685          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1686          18,                    /* bitsize */
1687          TRUE,                  /* pc_relative */
1688          10,                    /* bitpos */
1689          complain_overflow_signed, /* complain_on_overflow */
1690          bfd_elf_generic_reloc, /* special_function */
1691          "R_SH_PT_16",          /* name */
1692          FALSE,                 /* partial_inplace */
1693          0,                     /* src_mask */
1694          0x3fffc00,             /* dst_mask */
1695          TRUE),                 /* pcrel_offset */
1696
1697   /* Used in unexpanded MOVI.  */
1698   HOWTO (R_SH_IMMS16,           /* type */
1699          0,                     /* rightshift */
1700          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1701          16,                    /* bitsize */
1702          FALSE,                 /* pc_relative */
1703          10,                    /* bitpos */
1704          complain_overflow_signed, /* complain_on_overflow */
1705          bfd_elf_generic_reloc, /* special_function */
1706          "R_SH_IMMS16",         /* name */
1707          FALSE,                 /* partial_inplace */
1708          0,                     /* src_mask */
1709          0x3fffc00,             /* dst_mask */
1710          FALSE),                /* pcrel_offset */
1711
1712   /* Used in SHORI.  */
1713   HOWTO (R_SH_IMMU16,           /* type */
1714          0,                     /* rightshift */
1715          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1716          16,                    /* bitsize */
1717          FALSE,                 /* pc_relative */
1718          10,                    /* bitpos */
1719          complain_overflow_unsigned, /* complain_on_overflow */
1720          bfd_elf_generic_reloc, /* special_function */
1721          "R_SH_IMMU16",         /* name */
1722          FALSE,                 /* partial_inplace */
1723          0,                     /* src_mask */
1724          0x3fffc00,             /* dst_mask */
1725          FALSE),                /* pcrel_offset */
1726
1727   /* Used in MOVI and SHORI (x & 65536).  */
1728   HOWTO (R_SH_IMM_LOW16,        /* type */
1729          0,                     /* rightshift */
1730          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1731          64,                    /* bitsize */
1732          FALSE,                 /* pc_relative */
1733          10,                    /* bitpos */
1734          complain_overflow_dont, /* complain_on_overflow */
1735          bfd_elf_generic_reloc, /* special_function */
1736          "R_SH_IMM_LOW16",      /* name */
1737          FALSE,                 /* partial_inplace */
1738          0,                     /* src_mask */
1739          0x3fffc00,             /* dst_mask */
1740          FALSE),                /* pcrel_offset */
1741
1742   /* Used in MOVI and SHORI ((x - $) & 65536).  */
1743   HOWTO (R_SH_IMM_LOW16_PCREL,  /* type */
1744          0,                     /* rightshift */
1745          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1746          64,                    /* bitsize */
1747          TRUE,                  /* pc_relative */
1748          10,                    /* bitpos */
1749          complain_overflow_dont, /* complain_on_overflow */
1750          bfd_elf_generic_reloc, /* special_function */
1751          "R_SH_IMM_LOW16_PCREL", /* name */
1752          FALSE,                 /* partial_inplace */
1753          0,                     /* src_mask */
1754          0x3fffc00,             /* dst_mask */
1755          TRUE),                 /* pcrel_offset */
1756
1757   /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1758   HOWTO (R_SH_IMM_MEDLOW16,     /* type */
1759          16,                    /* rightshift */
1760          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1761          64,                    /* bitsize */
1762          FALSE,                 /* pc_relative */
1763          10,                    /* bitpos */
1764          complain_overflow_dont, /* complain_on_overflow */
1765          bfd_elf_generic_reloc, /* special_function */
1766          "R_SH_IMM_MEDLOW16",   /* name */
1767          FALSE,                 /* partial_inplace */
1768          0,                     /* src_mask */
1769          0x3fffc00,             /* dst_mask */
1770          FALSE),                /* pcrel_offset */
1771
1772   /* Used in MOVI and SHORI (((x - $) >> 16) & 65536).  */
1773   HOWTO (R_SH_IMM_MEDLOW16_PCREL, /* type */
1774          16,                    /* rightshift */
1775          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1776          64,                    /* bitsize */
1777          TRUE,                  /* pc_relative */
1778          10,                    /* bitpos */
1779          complain_overflow_dont, /* complain_on_overflow */
1780          bfd_elf_generic_reloc, /* special_function */
1781          "R_SH_IMM_MEDLOW16_PCREL", /* name */
1782          FALSE,                 /* partial_inplace */
1783          0,                     /* src_mask */
1784          0x3fffc00,             /* dst_mask */
1785          TRUE),                 /* pcrel_offset */
1786
1787   /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1788   HOWTO (R_SH_IMM_MEDHI16,      /* type */
1789          32,                    /* rightshift */
1790          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1791          64,                    /* bitsize */
1792          FALSE,                 /* pc_relative */
1793          10,                    /* bitpos */
1794          complain_overflow_dont, /* complain_on_overflow */
1795          bfd_elf_generic_reloc, /* special_function */
1796          "R_SH_IMM_MEDHI16",    /* name */
1797          FALSE,                 /* partial_inplace */
1798          0,                     /* src_mask */
1799          0x3fffc00,             /* dst_mask */
1800          FALSE),                /* pcrel_offset */
1801
1802   /* Used in MOVI and SHORI (((x - $) >> 32) & 65536).  */
1803   HOWTO (R_SH_IMM_MEDHI16_PCREL, /* type */
1804          32,                    /* rightshift */
1805          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1806          64,                    /* bitsize */
1807          TRUE,                  /* pc_relative */
1808          10,                    /* bitpos */
1809          complain_overflow_dont, /* complain_on_overflow */
1810          bfd_elf_generic_reloc, /* special_function */
1811          "R_SH_IMM_MEDHI16_PCREL", /* name */
1812          FALSE,                 /* partial_inplace */
1813          0,                     /* src_mask */
1814          0x3fffc00,             /* dst_mask */
1815          TRUE),                 /* pcrel_offset */
1816
1817   /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1818   HOWTO (R_SH_IMM_HI16,         /* type */
1819          48,                    /* rightshift */
1820          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1821          64,                    /* bitsize */
1822          FALSE,                 /* pc_relative */
1823          10,                    /* bitpos */
1824          complain_overflow_dont, /* complain_on_overflow */
1825          bfd_elf_generic_reloc, /* special_function */
1826          "R_SH_IMM_HI16",       /* name */
1827          FALSE,                 /* partial_inplace */
1828          0,                     /* src_mask */
1829          0x3fffc00,             /* dst_mask */
1830          FALSE),                /* pcrel_offset */
1831
1832   /* Used in MOVI and SHORI (((x - $) >> 48) & 65536).  */
1833   HOWTO (R_SH_IMM_HI16_PCREL,   /* type */
1834          48,                    /* rightshift */
1835          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1836          64,                    /* bitsize */
1837          TRUE,                  /* pc_relative */
1838          10,                    /* bitpos */
1839          complain_overflow_dont, /* complain_on_overflow */
1840          bfd_elf_generic_reloc, /* special_function */
1841          "R_SH_IMM_HI16_PCREL", /* name */
1842          FALSE,                 /* partial_inplace */
1843          0,                     /* src_mask */
1844          0x3fffc00,             /* dst_mask */
1845          TRUE),                 /* pcrel_offset */
1846
1847   /* For the .uaquad pseudo.  */
1848   HOWTO (R_SH_64,               /* type */
1849          0,                     /* rightshift */
1850          4,                     /* size (0 = byte, 1 = short, 2 = long) */
1851          64,                    /* bitsize */
1852          FALSE,                 /* pc_relative */
1853          0,                     /* bitpos */
1854          complain_overflow_dont, /* complain_on_overflow */
1855          bfd_elf_generic_reloc, /* special_function */
1856          "R_SH_64",             /* name */
1857          FALSE,                 /* partial_inplace */
1858          0,                     /* src_mask */
1859          ((bfd_vma) 0) - 1,     /* dst_mask */
1860          FALSE),                /* pcrel_offset */
1861
1862   /* For the .uaquad pseudo, (x - $).  */
1863   HOWTO (R_SH_64_PCREL,         /* type */
1864          48,                    /* rightshift */
1865          2,                     /* size (0 = byte, 1 = short, 2 = long) */
1866          64,                    /* bitsize */
1867          TRUE,                  /* pc_relative */
1868          10,                    /* bitpos */
1869          complain_overflow_dont, /* complain_on_overflow */
1870          bfd_elf_generic_reloc, /* special_function */
1871          "R_SH_64_PCREL",       /* name */
1872          FALSE,                 /* partial_inplace */
1873          0,                     /* src_mask */
1874          ((bfd_vma) 0) - 1,     /* dst_mask */
1875          TRUE),                 /* pcrel_offset */
1876
1877 #endif
1878 #undef SH_PARTIAL32
1879 #undef SH_SRC_MASK32
1880 #undef SH_ELF_RELOC