1/* Copyright (C) 2006-2017 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
1881