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