2007-10-11 H.J. Lu <hongjiu.lu@intel.com>
[binutils.git] / bfd / elf32-sh-relocs.h
blob3b6e35d816255e6d9da88e47009e2bd1705d978c
1 /* Copyright 2007 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 0, /* size (0 = byte, 1 = short, 2 = long) */
24 0, /* bitsize */
25 FALSE, /* pc_relative */
26 0, /* bitpos */
27 complain_overflow_dont, /* complain_on_overflow */
28 sh_elf_ignore_reloc, /* special_function */
29 "R_SH_NONE", /* name */
30 FALSE, /* partial_inplace */
31 0, /* src_mask */
32 0, /* dst_mask */
33 FALSE), /* pcrel_offset */
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 */
1466 EMPTY_HOWTO (197),
1467 EMPTY_HOWTO (198),
1468 EMPTY_HOWTO (199),
1469 EMPTY_HOWTO (200),
1470 EMPTY_HOWTO (201),
1471 EMPTY_HOWTO (202),
1472 EMPTY_HOWTO (203),
1473 EMPTY_HOWTO (204),
1474 EMPTY_HOWTO (205),
1475 EMPTY_HOWTO (206),
1476 EMPTY_HOWTO (207),
1477 EMPTY_HOWTO (208),
1478 EMPTY_HOWTO (209),
1479 EMPTY_HOWTO (210),
1480 EMPTY_HOWTO (211),
1481 EMPTY_HOWTO (212),
1482 EMPTY_HOWTO (213),
1483 EMPTY_HOWTO (214),
1484 EMPTY_HOWTO (215),
1485 EMPTY_HOWTO (216),
1486 EMPTY_HOWTO (217),
1487 EMPTY_HOWTO (218),
1488 EMPTY_HOWTO (219),
1489 EMPTY_HOWTO (220),
1490 EMPTY_HOWTO (221),
1491 EMPTY_HOWTO (222),
1492 EMPTY_HOWTO (223),
1493 EMPTY_HOWTO (224),
1494 EMPTY_HOWTO (225),
1495 EMPTY_HOWTO (226),
1496 EMPTY_HOWTO (227),
1497 EMPTY_HOWTO (228),
1498 EMPTY_HOWTO (229),
1499 EMPTY_HOWTO (230),
1500 EMPTY_HOWTO (231),
1501 EMPTY_HOWTO (232),
1502 EMPTY_HOWTO (233),
1503 EMPTY_HOWTO (234),
1504 EMPTY_HOWTO (235),
1505 EMPTY_HOWTO (236),
1506 EMPTY_HOWTO (237),
1507 EMPTY_HOWTO (238),
1508 EMPTY_HOWTO (239),
1509 EMPTY_HOWTO (240),
1510 EMPTY_HOWTO (241),
1512 /* Relocations for SHmedia code. None of these are partial_inplace or
1513 use the field being relocated (except R_SH_PT_16). */
1515 /* The assembler will generate this reloc before a block of SHmedia
1516 instructions. A section should be processed as assuming it contains
1517 data, unless this reloc is seen. Note that a block of SHcompact
1518 instructions are instead preceded by R_SH_CODE.
1519 This is currently not implemented, but should be used for SHmedia
1520 linker relaxation. */
1521 HOWTO (R_SH_SHMEDIA_CODE, /* type */
1522 0, /* rightshift */
1523 1, /* size (0 = byte, 1 = short, 2 = long) */
1524 0, /* bitsize */
1525 FALSE, /* pc_relative */
1526 0, /* bitpos */
1527 complain_overflow_unsigned, /* complain_on_overflow */
1528 sh_elf_ignore_reloc, /* special_function */
1529 "R_SH_SHMEDIA_CODE", /* name */
1530 FALSE, /* partial_inplace */
1531 0, /* src_mask */
1532 0, /* dst_mask */
1533 FALSE), /* pcrel_offset */
1535 /* The assembler will generate this reloc at a PTA or PTB instruction,
1536 and the linker checks the right type of target, or changes a PTA to a
1537 PTB, if the original insn was PT. */
1538 HOWTO (R_SH_PT_16, /* type */
1539 2, /* rightshift */
1540 2, /* size (0 = byte, 1 = short, 2 = long) */
1541 18, /* bitsize */
1542 TRUE, /* pc_relative */
1543 10, /* bitpos */
1544 complain_overflow_signed, /* complain_on_overflow */
1545 bfd_elf_generic_reloc, /* special_function */
1546 "R_SH_PT_16", /* name */
1547 FALSE, /* partial_inplace */
1548 0, /* src_mask */
1549 0x3fffc00, /* dst_mask */
1550 TRUE), /* pcrel_offset */
1552 /* Used in unexpanded MOVI. */
1553 HOWTO (R_SH_IMMS16, /* type */
1554 0, /* rightshift */
1555 2, /* size (0 = byte, 1 = short, 2 = long) */
1556 16, /* bitsize */
1557 FALSE, /* pc_relative */
1558 10, /* bitpos */
1559 complain_overflow_signed, /* complain_on_overflow */
1560 bfd_elf_generic_reloc, /* special_function */
1561 "R_SH_IMMS16", /* name */
1562 FALSE, /* partial_inplace */
1563 0, /* src_mask */
1564 0x3fffc00, /* dst_mask */
1565 FALSE), /* pcrel_offset */
1567 /* Used in SHORI. */
1568 HOWTO (R_SH_IMMU16, /* type */
1569 0, /* rightshift */
1570 2, /* size (0 = byte, 1 = short, 2 = long) */
1571 16, /* bitsize */
1572 FALSE, /* pc_relative */
1573 10, /* bitpos */
1574 complain_overflow_unsigned, /* complain_on_overflow */
1575 bfd_elf_generic_reloc, /* special_function */
1576 "R_SH_IMMU16", /* name */
1577 FALSE, /* partial_inplace */
1578 0, /* src_mask */
1579 0x3fffc00, /* dst_mask */
1580 FALSE), /* pcrel_offset */
1582 /* Used in MOVI and SHORI (x & 65536). */
1583 HOWTO (R_SH_IMM_LOW16, /* type */
1584 0, /* rightshift */
1585 2, /* size (0 = byte, 1 = short, 2 = long) */
1586 64, /* bitsize */
1587 FALSE, /* pc_relative */
1588 10, /* bitpos */
1589 complain_overflow_dont, /* complain_on_overflow */
1590 bfd_elf_generic_reloc, /* special_function */
1591 "R_SH_IMM_LOW16", /* name */
1592 FALSE, /* partial_inplace */
1593 0, /* src_mask */
1594 0x3fffc00, /* dst_mask */
1595 FALSE), /* pcrel_offset */
1597 /* Used in MOVI and SHORI ((x - $) & 65536). */
1598 HOWTO (R_SH_IMM_LOW16_PCREL, /* type */
1599 0, /* rightshift */
1600 2, /* size (0 = byte, 1 = short, 2 = long) */
1601 64, /* bitsize */
1602 TRUE, /* pc_relative */
1603 10, /* bitpos */
1604 complain_overflow_dont, /* complain_on_overflow */
1605 bfd_elf_generic_reloc, /* special_function */
1606 "R_SH_IMM_LOW16_PCREL", /* name */
1607 FALSE, /* partial_inplace */
1608 0, /* src_mask */
1609 0x3fffc00, /* dst_mask */
1610 TRUE), /* pcrel_offset */
1612 /* Used in MOVI and SHORI ((x >> 16) & 65536). */
1613 HOWTO (R_SH_IMM_MEDLOW16, /* type */
1614 16, /* rightshift */
1615 2, /* size (0 = byte, 1 = short, 2 = long) */
1616 64, /* bitsize */
1617 FALSE, /* pc_relative */
1618 10, /* bitpos */
1619 complain_overflow_dont, /* complain_on_overflow */
1620 bfd_elf_generic_reloc, /* special_function */
1621 "R_SH_IMM_MEDLOW16", /* name */
1622 FALSE, /* partial_inplace */
1623 0, /* src_mask */
1624 0x3fffc00, /* dst_mask */
1625 FALSE), /* pcrel_offset */
1627 /* Used in MOVI and SHORI (((x - $) >> 16) & 65536). */
1628 HOWTO (R_SH_IMM_MEDLOW16_PCREL, /* type */
1629 16, /* rightshift */
1630 2, /* size (0 = byte, 1 = short, 2 = long) */
1631 64, /* bitsize */
1632 TRUE, /* pc_relative */
1633 10, /* bitpos */
1634 complain_overflow_dont, /* complain_on_overflow */
1635 bfd_elf_generic_reloc, /* special_function */
1636 "R_SH_IMM_MEDLOW16_PCREL", /* name */
1637 FALSE, /* partial_inplace */
1638 0, /* src_mask */
1639 0x3fffc00, /* dst_mask */
1640 TRUE), /* pcrel_offset */
1642 /* Used in MOVI and SHORI ((x >> 32) & 65536). */
1643 HOWTO (R_SH_IMM_MEDHI16, /* type */
1644 32, /* rightshift */
1645 2, /* size (0 = byte, 1 = short, 2 = long) */
1646 64, /* bitsize */
1647 FALSE, /* pc_relative */
1648 10, /* bitpos */
1649 complain_overflow_dont, /* complain_on_overflow */
1650 bfd_elf_generic_reloc, /* special_function */
1651 "R_SH_IMM_MEDHI16", /* name */
1652 FALSE, /* partial_inplace */
1653 0, /* src_mask */
1654 0x3fffc00, /* dst_mask */
1655 FALSE), /* pcrel_offset */
1657 /* Used in MOVI and SHORI (((x - $) >> 32) & 65536). */
1658 HOWTO (R_SH_IMM_MEDHI16_PCREL, /* type */
1659 32, /* rightshift */
1660 2, /* size (0 = byte, 1 = short, 2 = long) */
1661 64, /* bitsize */
1662 TRUE, /* pc_relative */
1663 10, /* bitpos */
1664 complain_overflow_dont, /* complain_on_overflow */
1665 bfd_elf_generic_reloc, /* special_function */
1666 "R_SH_IMM_MEDHI16_PCREL", /* name */
1667 FALSE, /* partial_inplace */
1668 0, /* src_mask */
1669 0x3fffc00, /* dst_mask */
1670 TRUE), /* pcrel_offset */
1672 /* Used in MOVI and SHORI ((x >> 48) & 65536). */
1673 HOWTO (R_SH_IMM_HI16, /* type */
1674 48, /* rightshift */
1675 2, /* size (0 = byte, 1 = short, 2 = long) */
1676 64, /* bitsize */
1677 FALSE, /* pc_relative */
1678 10, /* bitpos */
1679 complain_overflow_dont, /* complain_on_overflow */
1680 bfd_elf_generic_reloc, /* special_function */
1681 "R_SH_IMM_HI16", /* name */
1682 FALSE, /* partial_inplace */
1683 0, /* src_mask */
1684 0x3fffc00, /* dst_mask */
1685 FALSE), /* pcrel_offset */
1687 /* Used in MOVI and SHORI (((x - $) >> 48) & 65536). */
1688 HOWTO (R_SH_IMM_HI16_PCREL, /* type */
1689 48, /* rightshift */
1690 2, /* size (0 = byte, 1 = short, 2 = long) */
1691 64, /* bitsize */
1692 TRUE, /* pc_relative */
1693 10, /* bitpos */
1694 complain_overflow_dont, /* complain_on_overflow */
1695 bfd_elf_generic_reloc, /* special_function */
1696 "R_SH_IMM_HI16_PCREL", /* name */
1697 FALSE, /* partial_inplace */
1698 0, /* src_mask */
1699 0x3fffc00, /* dst_mask */
1700 TRUE), /* pcrel_offset */
1702 /* For the .uaquad pseudo. */
1703 HOWTO (R_SH_64, /* type */
1704 0, /* rightshift */
1705 4, /* size (0 = byte, 1 = short, 2 = long) */
1706 64, /* bitsize */
1707 FALSE, /* pc_relative */
1708 0, /* bitpos */
1709 complain_overflow_dont, /* complain_on_overflow */
1710 bfd_elf_generic_reloc, /* special_function */
1711 "R_SH_64", /* name */
1712 FALSE, /* partial_inplace */
1713 0, /* src_mask */
1714 ((bfd_vma) 0) - 1, /* dst_mask */
1715 FALSE), /* pcrel_offset */
1717 /* For the .uaquad pseudo, (x - $). */
1718 HOWTO (R_SH_64_PCREL, /* type */
1719 48, /* rightshift */
1720 2, /* size (0 = byte, 1 = short, 2 = long) */
1721 64, /* bitsize */
1722 TRUE, /* pc_relative */
1723 10, /* bitpos */
1724 complain_overflow_dont, /* complain_on_overflow */
1725 bfd_elf_generic_reloc, /* special_function */
1726 "R_SH_64_PCREL", /* name */
1727 FALSE, /* partial_inplace */
1728 0, /* src_mask */
1729 ((bfd_vma) 0) - 1, /* dst_mask */
1730 TRUE), /* pcrel_offset */
1732 #endif
1733 #undef SH_PARTIAL32
1734 #undef SH_SRC_MASK32
1735 #undef SH_ELF_RELOC