Automatic date update in version.in
[binutils-gdb.git] / bfd / elf32-sh-relocs.h
blobe9e35ae4eb4fd040d9576ed2d5c8bfa4deb234c4
1 /* Copyright (C) 2006-2017 Free Software Foundation, Inc.
3 This file is part of BFD, the Binary File Descriptor library.
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.
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.
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. */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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),
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. */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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
694 EMPTY_HOWTO (52),
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 */
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),
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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),
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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
1496 EMPTY_HOWTO (197),
1497 EMPTY_HOWTO (198),
1498 EMPTY_HOWTO (199),
1499 EMPTY_HOWTO (200),
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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),
1657 /* Relocations for SHmedia code. None of these are partial_inplace or
1658 use the field being relocated (except R_SH_PT_16). */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
1877 #endif
1878 #undef SH_PARTIAL32
1879 #undef SH_SRC_MASK32
1880 #undef SH_ELF_RELOC