gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / bfd / elf32-sh-relocs.h
CommitLineData
b3adc24a 1/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
cd123cb7
NC
2
3 This file is part of BFD, the Binary File Descriptor library.
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
18 MA 02110-1301, USA. */
19
20/* No relocation. */
55e6e397
RS
21 HOWTO (R_SH_NONE, /* type */
22 0, /* rightshift */
6346d5ca 23 3, /* size (0 = byte, 1 = short, 2 = long) */
55e6e397
RS
24 0, /* bitsize */
25 FALSE, /* pc_relative */
26 0, /* bitpos */
27 complain_overflow_dont, /* complain_on_overflow */
28 sh_elf_ignore_reloc, /* special_function */
29 "R_SH_NONE", /* name */
30 FALSE, /* partial_inplace */
31 0, /* src_mask */
32 0, /* dst_mask */
33 FALSE), /* pcrel_offset */
34
35 /* 32 bit absolute relocation. Setting partial_inplace to TRUE and
36 src_mask to a non-zero value is similar to the COFF toolchain. */
37 HOWTO (R_SH_DIR32, /* type */
38 0, /* rightshift */
39 2, /* size (0 = byte, 1 = short, 2 = long) */
40 32, /* bitsize */
41 FALSE, /* pc_relative */
42 0, /* bitpos */
43 complain_overflow_bitfield, /* complain_on_overflow */
44 SH_ELF_RELOC, /* special_function */
45 "R_SH_DIR32", /* name */
46 SH_PARTIAL32, /* partial_inplace */
47 SH_SRC_MASK32, /* src_mask */
48 0xffffffff, /* dst_mask */
49 FALSE), /* pcrel_offset */
50
51 /* 32 bit PC relative relocation. */
52 HOWTO (R_SH_REL32, /* type */
53 0, /* rightshift */
54 2, /* size (0 = byte, 1 = short, 2 = long) */
55 32, /* bitsize */
56 TRUE, /* pc_relative */
57 0, /* bitpos */
58 complain_overflow_signed, /* complain_on_overflow */
59 sh_elf_ignore_reloc, /* special_function */
60 "R_SH_REL32", /* name */
61 SH_PARTIAL32, /* partial_inplace */
62 SH_SRC_MASK32, /* src_mask */
63 0xffffffff, /* dst_mask */
64 TRUE), /* pcrel_offset */
65
66 /* 8 bit PC relative branch divided by 2. */
67 HOWTO (R_SH_DIR8WPN, /* type */
68 1, /* rightshift */
69 1, /* size (0 = byte, 1 = short, 2 = long) */
70 8, /* bitsize */
71 TRUE, /* pc_relative */
72 0, /* bitpos */
73 complain_overflow_signed, /* complain_on_overflow */
74 sh_elf_ignore_reloc, /* special_function */
75 "R_SH_DIR8WPN", /* name */
76 TRUE, /* partial_inplace */
77 0xff, /* src_mask */
78 0xff, /* dst_mask */
79 TRUE), /* pcrel_offset */
80
81 /* 12 bit PC relative branch divided by 2. */
82 /* This cannot be partial_inplace because relaxation can't know the
83 eventual value of a symbol. */
84 HOWTO (R_SH_IND12W, /* type */
85 1, /* rightshift */
86 1, /* size (0 = byte, 1 = short, 2 = long) */
87 12, /* bitsize */
88 TRUE, /* pc_relative */
89 0, /* bitpos */
90 complain_overflow_signed, /* complain_on_overflow */
91 NULL, /* special_function */
92 "R_SH_IND12W", /* name */
93 FALSE, /* partial_inplace */
94 0x0, /* src_mask */
95 0xfff, /* dst_mask */
96 TRUE), /* pcrel_offset */
97
98 /* 8 bit unsigned PC relative divided by 4. */
99 HOWTO (R_SH_DIR8WPL, /* type */
100 2, /* rightshift */
101 1, /* size (0 = byte, 1 = short, 2 = long) */
102 8, /* bitsize */
103 TRUE, /* pc_relative */
104 0, /* bitpos */
105 complain_overflow_unsigned, /* complain_on_overflow */
106 sh_elf_ignore_reloc, /* special_function */
107 "R_SH_DIR8WPL", /* name */
108 TRUE, /* partial_inplace */
109 0xff, /* src_mask */
110 0xff, /* dst_mask */
111 TRUE), /* pcrel_offset */
112
113 /* 8 bit unsigned PC relative divided by 2. */
114 HOWTO (R_SH_DIR8WPZ, /* type */
115 1, /* rightshift */
116 1, /* size (0 = byte, 1 = short, 2 = long) */
117 8, /* bitsize */
118 TRUE, /* pc_relative */
119 0, /* bitpos */
120 complain_overflow_unsigned, /* complain_on_overflow */
121 sh_elf_ignore_reloc, /* special_function */
122 "R_SH_DIR8WPZ", /* name */
123 TRUE, /* partial_inplace */
124 0xff, /* src_mask */
125 0xff, /* dst_mask */
126 TRUE), /* pcrel_offset */
127
128 /* 8 bit GBR relative. FIXME: This only makes sense if we have some
129 special symbol for the GBR relative area, and that is not
130 implemented. */
131 HOWTO (R_SH_DIR8BP, /* type */
132 0, /* rightshift */
133 1, /* size (0 = byte, 1 = short, 2 = long) */
134 8, /* bitsize */
135 FALSE, /* pc_relative */
136 0, /* bitpos */
137 complain_overflow_unsigned, /* complain_on_overflow */
138 sh_elf_ignore_reloc, /* special_function */
139 "R_SH_DIR8BP", /* name */
140 FALSE, /* partial_inplace */
141 0, /* src_mask */
142 0xff, /* dst_mask */
143 TRUE), /* pcrel_offset */
144
145 /* 8 bit GBR relative divided by 2. FIXME: This only makes sense if
146 we have some special symbol for the GBR relative area, and that
147 is not implemented. */
148 HOWTO (R_SH_DIR8W, /* type */
149 1, /* rightshift */
150 1, /* size (0 = byte, 1 = short, 2 = long) */
151 8, /* bitsize */
152 FALSE, /* pc_relative */
153 0, /* bitpos */
154 complain_overflow_unsigned, /* complain_on_overflow */
155 sh_elf_ignore_reloc, /* special_function */
156 "R_SH_DIR8W", /* name */
157 FALSE, /* partial_inplace */
158 0, /* src_mask */
159 0xff, /* dst_mask */
160 TRUE), /* pcrel_offset */
161
162 /* 8 bit GBR relative divided by 4. FIXME: This only makes sense if
163 we have some special symbol for the GBR relative area, and that
164 is not implemented. */
165 HOWTO (R_SH_DIR8L, /* type */
166 2, /* rightshift */
167 1, /* size (0 = byte, 1 = short, 2 = long) */
168 8, /* bitsize */
169 FALSE, /* pc_relative */
170 0, /* bitpos */
171 complain_overflow_unsigned, /* complain_on_overflow */
172 sh_elf_ignore_reloc, /* special_function */
173 "R_SH_DIR8L", /* name */
174 FALSE, /* partial_inplace */
175 0, /* src_mask */
176 0xff, /* dst_mask */
177 TRUE), /* pcrel_offset */
178
179 /* 8 bit PC relative divided by 2 - but specified in a very odd way. */
180 HOWTO (R_SH_LOOP_START, /* type */
181 1, /* rightshift */
182 1, /* size (0 = byte, 1 = short, 2 = long) */
183 8, /* bitsize */
184 FALSE, /* pc_relative */
185 0, /* bitpos */
186 complain_overflow_signed, /* complain_on_overflow */
187 sh_elf_ignore_reloc, /* special_function */
188 "R_SH_LOOP_START", /* name */
189 TRUE, /* partial_inplace */
190 0xff, /* src_mask */
191 0xff, /* dst_mask */
192 TRUE), /* pcrel_offset */
193
194 /* 8 bit PC relative divided by 2 - but specified in a very odd way. */
195 HOWTO (R_SH_LOOP_END, /* type */
196 1, /* rightshift */
197 1, /* size (0 = byte, 1 = short, 2 = long) */
198 8, /* bitsize */
199 FALSE, /* pc_relative */
200 0, /* bitpos */
201 complain_overflow_signed, /* complain_on_overflow */
202 sh_elf_ignore_reloc, /* special_function */
203 "R_SH_LOOP_END", /* name */
204 TRUE, /* partial_inplace */
205 0xff, /* src_mask */
206 0xff, /* dst_mask */
207 TRUE), /* pcrel_offset */
208
209 EMPTY_HOWTO (12),
210 EMPTY_HOWTO (13),
211 EMPTY_HOWTO (14),
212 EMPTY_HOWTO (15),
213 EMPTY_HOWTO (16),
214 EMPTY_HOWTO (17),
215 EMPTY_HOWTO (18),
216 EMPTY_HOWTO (19),
217 EMPTY_HOWTO (20),
218 EMPTY_HOWTO (21),
219
220 /* The remaining relocs are a GNU extension used for relaxing. The
221 final pass of the linker never needs to do anything with any of
222 these relocs. Any required operations are handled by the
223 relaxation code. */
224
225 /* GNU extension to record C++ vtable hierarchy */
226 HOWTO (R_SH_GNU_VTINHERIT, /* type */
227 0, /* rightshift */
228 2, /* size (0 = byte, 1 = short, 2 = long) */
229 0, /* bitsize */
230 FALSE, /* pc_relative */
231 0, /* bitpos */
232 complain_overflow_dont, /* complain_on_overflow */
233 NULL, /* special_function */
234 "R_SH_GNU_VTINHERIT", /* name */
235 FALSE, /* partial_inplace */
236 0, /* src_mask */
237 0, /* dst_mask */
238 FALSE), /* pcrel_offset */
239
240 /* GNU extension to record C++ vtable member usage */
241 HOWTO (R_SH_GNU_VTENTRY, /* type */
242 0, /* rightshift */
243 2, /* size (0 = byte, 1 = short, 2 = long) */
244 0, /* bitsize */
245 FALSE, /* pc_relative */
246 0, /* bitpos */
247 complain_overflow_dont, /* complain_on_overflow */
248 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
249 "R_SH_GNU_VTENTRY", /* name */
250 FALSE, /* partial_inplace */
251 0, /* src_mask */
252 0, /* dst_mask */
253 FALSE), /* pcrel_offset */
254
255 /* An 8 bit switch table entry. This is generated for an expression
256 such as ``.word L1 - L2''. The offset holds the difference
257 between the reloc address and L2. */
258 HOWTO (R_SH_SWITCH8, /* type */
259 0, /* rightshift */
260 0, /* size (0 = byte, 1 = short, 2 = long) */
261 8, /* bitsize */
262 FALSE, /* pc_relative */
263 0, /* bitpos */
264 complain_overflow_unsigned, /* complain_on_overflow */
265 sh_elf_ignore_reloc, /* special_function */
266 "R_SH_SWITCH8", /* name */
267 FALSE, /* partial_inplace */
268 0, /* src_mask */
269 0, /* dst_mask */
270 TRUE), /* pcrel_offset */
271
272 /* A 16 bit switch table entry. This is generated for an expression
273 such as ``.word L1 - L2''. The offset holds the difference
274 between the reloc address and L2. */
275 HOWTO (R_SH_SWITCH16, /* type */
276 0, /* rightshift */
277 1, /* size (0 = byte, 1 = short, 2 = long) */
278 16, /* bitsize */
279 FALSE, /* pc_relative */
280 0, /* bitpos */
281 complain_overflow_unsigned, /* complain_on_overflow */
282 sh_elf_ignore_reloc, /* special_function */
283 "R_SH_SWITCH16", /* name */
284 FALSE, /* partial_inplace */
285 0, /* src_mask */
286 0, /* dst_mask */
287 TRUE), /* pcrel_offset */
288
289 /* A 32 bit switch table entry. This is generated for an expression
290 such as ``.long L1 - L2''. The offset holds the difference
291 between the reloc address and L2. */
292 HOWTO (R_SH_SWITCH32, /* type */
293 0, /* rightshift */
294 2, /* size (0 = byte, 1 = short, 2 = long) */
295 32, /* bitsize */
296 FALSE, /* pc_relative */
297 0, /* bitpos */
298 complain_overflow_unsigned, /* complain_on_overflow */
299 sh_elf_ignore_reloc, /* special_function */
300 "R_SH_SWITCH32", /* name */
301 FALSE, /* partial_inplace */
302 0, /* src_mask */
303 0, /* dst_mask */
304 TRUE), /* pcrel_offset */
305
306 /* Indicates a .uses pseudo-op. The compiler will generate .uses
307 pseudo-ops when it finds a function call which can be relaxed.
308 The offset field holds the PC relative offset to the instruction
309 which loads the register used in the function call. */
310 HOWTO (R_SH_USES, /* type */
311 0, /* rightshift */
312 1, /* size (0 = byte, 1 = short, 2 = long) */
313 0, /* bitsize */
314 FALSE, /* pc_relative */
315 0, /* bitpos */
316 complain_overflow_unsigned, /* complain_on_overflow */
317 sh_elf_ignore_reloc, /* special_function */
318 "R_SH_USES", /* name */
319 FALSE, /* partial_inplace */
320 0, /* src_mask */
321 0, /* dst_mask */
322 TRUE), /* pcrel_offset */
323
324 /* The assembler will generate this reloc for addresses referred to
325 by the register loads associated with USES relocs. The offset
326 field holds the number of times the address is referenced in the
327 object file. */
328 HOWTO (R_SH_COUNT, /* type */
329 0, /* rightshift */
330 1, /* size (0 = byte, 1 = short, 2 = long) */
331 0, /* bitsize */
332 FALSE, /* pc_relative */
333 0, /* bitpos */
334 complain_overflow_unsigned, /* complain_on_overflow */
335 sh_elf_ignore_reloc, /* special_function */
336 "R_SH_COUNT", /* name */
337 FALSE, /* partial_inplace */
338 0, /* src_mask */
339 0, /* dst_mask */
340 TRUE), /* pcrel_offset */
341
342 /* Indicates an alignment statement. The offset field is the power
343 of 2 to which subsequent portions of the object file must be
344 aligned. */
345 HOWTO (R_SH_ALIGN, /* type */
346 0, /* rightshift */
347 1, /* size (0 = byte, 1 = short, 2 = long) */
348 0, /* bitsize */
349 FALSE, /* pc_relative */
350 0, /* bitpos */
351 complain_overflow_unsigned, /* complain_on_overflow */
352 sh_elf_ignore_reloc, /* special_function */
353 "R_SH_ALIGN", /* name */
354 FALSE, /* partial_inplace */
355 0, /* src_mask */
356 0, /* dst_mask */
357 TRUE), /* pcrel_offset */
358
359 /* The assembler will generate this reloc before a block of
360 instructions. A section should be processed as assuming it
361 contains data, unless this reloc is seen. */
362 HOWTO (R_SH_CODE, /* type */
363 0, /* rightshift */
364 1, /* size (0 = byte, 1 = short, 2 = long) */
365 0, /* bitsize */
366 FALSE, /* pc_relative */
367 0, /* bitpos */
368 complain_overflow_unsigned, /* complain_on_overflow */
369 sh_elf_ignore_reloc, /* special_function */
370 "R_SH_CODE", /* name */
371 FALSE, /* partial_inplace */
372 0, /* src_mask */
373 0, /* dst_mask */
374 TRUE), /* pcrel_offset */
375
376 /* The assembler will generate this reloc after a block of
377 instructions when it sees data that is not instructions. */
378 HOWTO (R_SH_DATA, /* type */
379 0, /* rightshift */
380 1, /* size (0 = byte, 1 = short, 2 = long) */
381 0, /* bitsize */
382 FALSE, /* pc_relative */
383 0, /* bitpos */
384 complain_overflow_unsigned, /* complain_on_overflow */
385 sh_elf_ignore_reloc, /* special_function */
386 "R_SH_DATA", /* name */
387 FALSE, /* partial_inplace */
388 0, /* src_mask */
389 0, /* dst_mask */
390 TRUE), /* pcrel_offset */
391
392 /* The assembler generates this reloc for each label within a block
393 of instructions. This permits the linker to avoid swapping
394 instructions which are the targets of branches. */
395 HOWTO (R_SH_LABEL, /* type */
396 0, /* rightshift */
397 1, /* size (0 = byte, 1 = short, 2 = long) */
398 0, /* bitsize */
399 FALSE, /* pc_relative */
400 0, /* bitpos */
401 complain_overflow_unsigned, /* complain_on_overflow */
402 sh_elf_ignore_reloc, /* special_function */
403 "R_SH_LABEL", /* name */
404 FALSE, /* partial_inplace */
405 0, /* src_mask */
406 0, /* dst_mask */
407 TRUE), /* pcrel_offset */
408
409 /* The next 12 are only supported via linking in SHC-generated objects. */
410 HOWTO (R_SH_DIR16, /* type */
411 0, /* rightshift */
412 1, /* size (0 = byte, 1 = short, 2 = long) */
413 16, /* bitsize */
414 FALSE, /* pc_relative */
415 0, /* bitpos */
416 complain_overflow_dont, /* complain_on_overflow */
417 bfd_elf_generic_reloc, /* special_function */
418 "R_SH_DIR16", /* name */
419 FALSE, /* partial_inplace */
420 0, /* src_mask */
421 0xffff, /* dst_mask */
422 FALSE), /* pcrel_offset */
423
424 HOWTO (R_SH_DIR8, /* type */
425 0, /* rightshift */
426 0, /* size (0 = byte, 1 = short, 2 = long) */
427 8, /* bitsize */
428 FALSE, /* pc_relative */
429 0, /* bitpos */
430 complain_overflow_dont, /* complain_on_overflow */
431 bfd_elf_generic_reloc, /* special_function */
432 "R_SH_DIR8", /* name */
433 FALSE, /* partial_inplace */
434 0, /* src_mask */
435 0xff, /* dst_mask */
436 FALSE), /* pcrel_offset */
437
438 HOWTO (R_SH_DIR8UL, /* type */
439 2, /* rightshift */
440 0, /* size (0 = byte, 1 = short, 2 = long) */
441 8, /* bitsize */
442 FALSE, /* pc_relative */
443 0, /* bitpos */
444 complain_overflow_unsigned, /* complain_on_overflow */
445 bfd_elf_generic_reloc, /* special_function */
446 "R_SH_DIR8UL", /* name */
447 FALSE, /* partial_inplace */
448 0, /* src_mask */
449 0xff, /* dst_mask */
450 FALSE), /* pcrel_offset */
451
452 HOWTO (R_SH_DIR8UW, /* type */
453 1, /* rightshift */
454 0, /* size (0 = byte, 1 = short, 2 = long) */
455 8, /* bitsize */
456 FALSE, /* pc_relative */
457 0, /* bitpos */
458 complain_overflow_unsigned, /* complain_on_overflow */
459 bfd_elf_generic_reloc, /* special_function */
460 "R_SH_DIR8UW", /* name */
461 FALSE, /* partial_inplace */
462 0, /* src_mask */
463 0xff, /* dst_mask */
464 FALSE), /* pcrel_offset */
465
466 HOWTO (R_SH_DIR8U, /* type */
467 0, /* rightshift */
468 0, /* size (0 = byte, 1 = short, 2 = long) */
469 8, /* bitsize */
470 FALSE, /* pc_relative */
471 0, /* bitpos */
472 complain_overflow_unsigned, /* complain_on_overflow */
473 bfd_elf_generic_reloc, /* special_function */
474 "R_SH_DIR8U", /* name */
475 FALSE, /* partial_inplace */
476 0, /* src_mask */
477 0xff, /* dst_mask */
478 FALSE), /* pcrel_offset */
479
480 HOWTO (R_SH_DIR8SW, /* type */
481 1, /* rightshift */
482 0, /* size (0 = byte, 1 = short, 2 = long) */
483 8, /* bitsize */
484 FALSE, /* pc_relative */
485 0, /* bitpos */
486 complain_overflow_signed, /* complain_on_overflow */
487 bfd_elf_generic_reloc, /* special_function */
488 "R_SH_DIR8SW", /* name */
489 FALSE, /* partial_inplace */
490 0, /* src_mask */
491 0xff, /* dst_mask */
492 FALSE), /* pcrel_offset */
493
494 HOWTO (R_SH_DIR8S, /* type */
495 0, /* rightshift */
496 0, /* size (0 = byte, 1 = short, 2 = long) */
497 8, /* bitsize */
498 FALSE, /* pc_relative */
499 0, /* bitpos */
500 complain_overflow_signed, /* complain_on_overflow */
501 bfd_elf_generic_reloc, /* special_function */
502 "R_SH_DIR8S", /* name */
503 FALSE, /* partial_inplace */
504 0, /* src_mask */
505 0xff, /* dst_mask */
506 FALSE), /* pcrel_offset */
507
508 HOWTO (R_SH_DIR4UL, /* type */
509 2, /* rightshift */
510 0, /* size (0 = byte, 1 = short, 2 = long) */
511 4, /* bitsize */
512 FALSE, /* pc_relative */
513 0, /* bitpos */
514 complain_overflow_unsigned, /* complain_on_overflow */
515 bfd_elf_generic_reloc, /* special_function */
516 "R_SH_DIR4UL", /* name */
517 FALSE, /* partial_inplace */
518 0, /* src_mask */
519 0x0f, /* dst_mask */
520 FALSE), /* pcrel_offset */
521
522 HOWTO (R_SH_DIR4UW, /* type */
523 1, /* rightshift */
524 0, /* size (0 = byte, 1 = short, 2 = long) */
525 4, /* bitsize */
526 FALSE, /* pc_relative */
527 0, /* bitpos */
528 complain_overflow_unsigned, /* complain_on_overflow */
529 bfd_elf_generic_reloc, /* special_function */
530 "R_SH_DIR4UW", /* name */
531 FALSE, /* partial_inplace */
532 0, /* src_mask */
533 0x0f, /* dst_mask */
534 FALSE), /* pcrel_offset */
535
536 HOWTO (R_SH_DIR4U, /* type */
537 0, /* rightshift */
538 0, /* size (0 = byte, 1 = short, 2 = long) */
539 4, /* bitsize */
540 FALSE, /* pc_relative */
541 0, /* bitpos */
542 complain_overflow_unsigned, /* complain_on_overflow */
543 bfd_elf_generic_reloc, /* special_function */
544 "R_SH_DIR4U", /* name */
545 FALSE, /* partial_inplace */
546 0, /* src_mask */
547 0x0f, /* dst_mask */
548 FALSE), /* pcrel_offset */
549
550 HOWTO (R_SH_PSHA, /* type */
551 0, /* rightshift */
552 1, /* size (0 = byte, 1 = short, 2 = long) */
553 7, /* bitsize */
554 FALSE, /* pc_relative */
555 4, /* bitpos */
556 complain_overflow_signed, /* complain_on_overflow */
557 bfd_elf_generic_reloc, /* special_function */
558 "R_SH_PSHA", /* name */
559 FALSE, /* partial_inplace */
560 0, /* src_mask */
561 0x0f, /* dst_mask */
562 FALSE), /* pcrel_offset */
563
564 HOWTO (R_SH_PSHL, /* type */
565 0, /* rightshift */
566 1, /* size (0 = byte, 1 = short, 2 = long) */
567 7, /* bitsize */
568 FALSE, /* pc_relative */
569 4, /* bitpos */
570 complain_overflow_signed, /* complain_on_overflow */
571 bfd_elf_generic_reloc, /* special_function */
572 "R_SH_PSHL", /* name */
573 FALSE, /* partial_inplace */
574 0, /* src_mask */
575 0x0f, /* dst_mask */
576 FALSE), /* pcrel_offset */
577
55e6e397
RS
578 EMPTY_HOWTO (45),
579 EMPTY_HOWTO (46),
580 EMPTY_HOWTO (47),
581 EMPTY_HOWTO (48),
582 EMPTY_HOWTO (49),
583 EMPTY_HOWTO (50),
584 EMPTY_HOWTO (51),
55e6e397
RS
585
586 EMPTY_HOWTO (52),
587
588 HOWTO (R_SH_DIR16S, /* type */
589 0, /* rightshift */
590 1, /* size (0 = byte, 1 = short, 2 = long) */
591 16, /* bitsize */
592 FALSE, /* pc_relative */
593 0, /* bitpos */
594 complain_overflow_signed, /* complain_on_overflow */
595 bfd_elf_generic_reloc, /* special_function */
596 "R_SH_DIR16S", /* name */
597 FALSE, /* partial_inplace */
598 0, /* src_mask */
599 0xffff, /* dst_mask */
600 FALSE), /* pcrel_offset */
601
602 EMPTY_HOWTO (54),
603 EMPTY_HOWTO (55),
604 EMPTY_HOWTO (56),
605 EMPTY_HOWTO (57),
606 EMPTY_HOWTO (58),
607 EMPTY_HOWTO (59),
608 EMPTY_HOWTO (60),
609 EMPTY_HOWTO (61),
610 EMPTY_HOWTO (62),
611 EMPTY_HOWTO (63),
612 EMPTY_HOWTO (64),
613 EMPTY_HOWTO (65),
614 EMPTY_HOWTO (66),
615 EMPTY_HOWTO (67),
616 EMPTY_HOWTO (68),
617 EMPTY_HOWTO (69),
618 EMPTY_HOWTO (70),
619 EMPTY_HOWTO (71),
620 EMPTY_HOWTO (72),
621 EMPTY_HOWTO (73),
622 EMPTY_HOWTO (74),
623 EMPTY_HOWTO (75),
624 EMPTY_HOWTO (76),
625 EMPTY_HOWTO (77),
626 EMPTY_HOWTO (78),
627 EMPTY_HOWTO (79),
628 EMPTY_HOWTO (80),
629 EMPTY_HOWTO (81),
630 EMPTY_HOWTO (82),
631 EMPTY_HOWTO (83),
632 EMPTY_HOWTO (84),
633 EMPTY_HOWTO (85),
634 EMPTY_HOWTO (86),
635 EMPTY_HOWTO (87),
636 EMPTY_HOWTO (88),
637 EMPTY_HOWTO (89),
638 EMPTY_HOWTO (90),
639 EMPTY_HOWTO (91),
640 EMPTY_HOWTO (92),
641 EMPTY_HOWTO (93),
642 EMPTY_HOWTO (94),
643 EMPTY_HOWTO (95),
644 EMPTY_HOWTO (96),
645 EMPTY_HOWTO (97),
646 EMPTY_HOWTO (98),
647 EMPTY_HOWTO (99),
648 EMPTY_HOWTO (100),
649 EMPTY_HOWTO (101),
650 EMPTY_HOWTO (102),
651 EMPTY_HOWTO (103),
652 EMPTY_HOWTO (104),
653 EMPTY_HOWTO (105),
654 EMPTY_HOWTO (106),
655 EMPTY_HOWTO (107),
656 EMPTY_HOWTO (108),
657 EMPTY_HOWTO (109),
658 EMPTY_HOWTO (110),
659 EMPTY_HOWTO (111),
660 EMPTY_HOWTO (112),
661 EMPTY_HOWTO (113),
662 EMPTY_HOWTO (114),
663 EMPTY_HOWTO (115),
664 EMPTY_HOWTO (116),
665 EMPTY_HOWTO (117),
666 EMPTY_HOWTO (118),
667 EMPTY_HOWTO (119),
668 EMPTY_HOWTO (120),
669 EMPTY_HOWTO (121),
670 EMPTY_HOWTO (122),
671 EMPTY_HOWTO (123),
672 EMPTY_HOWTO (124),
673 EMPTY_HOWTO (125),
674 EMPTY_HOWTO (126),
675 EMPTY_HOWTO (127),
676 EMPTY_HOWTO (128),
677 EMPTY_HOWTO (129),
678 EMPTY_HOWTO (130),
679 EMPTY_HOWTO (131),
680 EMPTY_HOWTO (132),
681 EMPTY_HOWTO (133),
682 EMPTY_HOWTO (134),
683 EMPTY_HOWTO (135),
684 EMPTY_HOWTO (136),
685 EMPTY_HOWTO (137),
686 EMPTY_HOWTO (138),
687 EMPTY_HOWTO (139),
688 EMPTY_HOWTO (140),
689 EMPTY_HOWTO (141),
690 EMPTY_HOWTO (142),
691 EMPTY_HOWTO (143),
692
693 HOWTO (R_SH_TLS_GD_32, /* type */
694 0, /* rightshift */
695 2, /* size (0 = byte, 1 = short, 2 = long) */
696 32, /* bitsize */
697 FALSE, /* pc_relative */
698 0, /* bitpos */
699 complain_overflow_bitfield, /* complain_on_overflow */
700 bfd_elf_generic_reloc, /* */
701 "R_SH_TLS_GD_32", /* name */
702 SH_PARTIAL32, /* partial_inplace */
703 SH_SRC_MASK32, /* src_mask */
704 0xffffffff, /* dst_mask */
705 FALSE), /* pcrel_offset */
706
707 HOWTO (R_SH_TLS_LD_32, /* type */
708 0, /* rightshift */
709 2, /* size (0 = byte, 1 = short, 2 = long) */
710 32, /* bitsize */
711 FALSE, /* pc_relative */
712 0, /* bitpos */
713 complain_overflow_bitfield, /* complain_on_overflow */
714 bfd_elf_generic_reloc, /* */
715 "R_SH_TLS_LD_32", /* name */
716 SH_PARTIAL32, /* partial_inplace */
717 SH_SRC_MASK32, /* src_mask */
718 0xffffffff, /* dst_mask */
719 FALSE), /* pcrel_offset */
720
721 HOWTO (R_SH_TLS_LDO_32, /* type */
722 0, /* rightshift */
723 2, /* size (0 = byte, 1 = short, 2 = long) */
724 32, /* bitsize */
725 FALSE, /* pc_relative */
726 0, /* bitpos */
727 complain_overflow_bitfield, /* complain_on_overflow */
728 bfd_elf_generic_reloc, /* */
729 "R_SH_TLS_LDO_32", /* name */
730 SH_PARTIAL32, /* partial_inplace */
731 SH_SRC_MASK32, /* src_mask */
732 0xffffffff, /* dst_mask */
733 FALSE), /* pcrel_offset */
734
735 HOWTO (R_SH_TLS_IE_32, /* type */
736 0, /* rightshift */
737 2, /* size (0 = byte, 1 = short, 2 = long) */
738 32, /* bitsize */
739 FALSE, /* pc_relative */
740 0, /* bitpos */
741 complain_overflow_bitfield, /* complain_on_overflow */
742 bfd_elf_generic_reloc, /* */
743 "R_SH_TLS_IE_32", /* name */
744 SH_PARTIAL32, /* partial_inplace */
745 SH_SRC_MASK32, /* src_mask */
746 0xffffffff, /* dst_mask */
747 FALSE), /* pcrel_offset */
748
749 HOWTO (R_SH_TLS_LE_32, /* type */
750 0, /* rightshift */
751 2, /* size (0 = byte, 1 = short, 2 = long) */
752 32, /* bitsize */
753 FALSE, /* pc_relative */
754 0, /* bitpos */
755 complain_overflow_bitfield, /* complain_on_overflow */
756 bfd_elf_generic_reloc, /* */
757 "R_SH_TLS_LE_32", /* name */
758 SH_PARTIAL32, /* partial_inplace */
759 SH_SRC_MASK32, /* src_mask */
760 0xffffffff, /* dst_mask */
761 FALSE), /* pcrel_offset */
762
763 HOWTO (R_SH_TLS_DTPMOD32, /* type */
764 0, /* rightshift */
765 2, /* size (0 = byte, 1 = short, 2 = long) */
766 32, /* bitsize */
767 FALSE, /* pc_relative */
768 0, /* bitpos */
769 complain_overflow_bitfield, /* complain_on_overflow */
770 bfd_elf_generic_reloc, /* */
771 "R_SH_TLS_DTPMOD32", /* name */
772 SH_PARTIAL32, /* partial_inplace */
773 SH_SRC_MASK32, /* src_mask */
774 0xffffffff, /* dst_mask */
775 FALSE), /* pcrel_offset */
776
777 HOWTO (R_SH_TLS_DTPOFF32, /* type */
778 0, /* rightshift */
779 2, /* size (0 = byte, 1 = short, 2 = long) */
780 32, /* bitsize */
781 FALSE, /* pc_relative */
782 0, /* bitpos */
783 complain_overflow_bitfield, /* complain_on_overflow */
784 bfd_elf_generic_reloc, /* */
785 "R_SH_TLS_DTPOFF32", /* name */
786 SH_PARTIAL32, /* partial_inplace */
787 SH_SRC_MASK32, /* src_mask */
788 0xffffffff, /* dst_mask */
789 FALSE), /* pcrel_offset */
790
791 HOWTO (R_SH_TLS_TPOFF32, /* type */
792 0, /* rightshift */
793 2, /* size (0 = byte, 1 = short, 2 = long) */
794 32, /* bitsize */
795 FALSE, /* pc_relative */
796 0, /* bitpos */
797 complain_overflow_bitfield, /* complain_on_overflow */
798 bfd_elf_generic_reloc, /* */
799 "R_SH_TLS_TPOFF32", /* name */
800 SH_PARTIAL32, /* partial_inplace */
801 SH_SRC_MASK32, /* src_mask */
802 0xffffffff, /* dst_mask */
803 FALSE), /* pcrel_offset */
804
805 EMPTY_HOWTO (152),
806 EMPTY_HOWTO (153),
807 EMPTY_HOWTO (154),
808 EMPTY_HOWTO (155),
809 EMPTY_HOWTO (156),
810 EMPTY_HOWTO (157),
811 EMPTY_HOWTO (158),
812 EMPTY_HOWTO (159),
813
814 HOWTO (R_SH_GOT32, /* type */
815 0, /* rightshift */
816 2, /* size (0 = byte, 1 = short, 2 = long) */
817 32, /* bitsize */
818 FALSE, /* pc_relative */
819 0, /* bitpos */
820 complain_overflow_bitfield, /* complain_on_overflow */
821 bfd_elf_generic_reloc, /* */
822 "R_SH_GOT32", /* name */
823 SH_PARTIAL32, /* partial_inplace */
824 SH_SRC_MASK32, /* src_mask */
825 0xffffffff, /* dst_mask */
826 FALSE), /* pcrel_offset */
827
828 HOWTO (R_SH_PLT32, /* type */
829 0, /* rightshift */
830 2, /* size (0 = byte, 1 = short, 2 = long) */
831 32, /* bitsize */
832 TRUE, /* pc_relative */
833 0, /* bitpos */
834 complain_overflow_bitfield, /* complain_on_overflow */
835 bfd_elf_generic_reloc, /* */
836 "R_SH_PLT32", /* name */
837 SH_PARTIAL32, /* partial_inplace */
838 SH_SRC_MASK32, /* src_mask */
839 0xffffffff, /* dst_mask */
840 TRUE), /* pcrel_offset */
841
842 HOWTO (R_SH_COPY, /* type */
843 0, /* rightshift */
844 2, /* size (0 = byte, 1 = short, 2 = long) */
845 32, /* bitsize */
846 FALSE, /* pc_relative */
847 0, /* bitpos */
848 complain_overflow_bitfield, /* complain_on_overflow */
849 bfd_elf_generic_reloc, /* */
850 "R_SH_COPY", /* name */
851 SH_PARTIAL32, /* partial_inplace */
852 SH_SRC_MASK32, /* src_mask */
853 0xffffffff, /* dst_mask */
854 FALSE), /* pcrel_offset */
855
856 HOWTO (R_SH_GLOB_DAT, /* type */
857 0, /* rightshift */
858 2, /* size (0 = byte, 1 = short, 2 = long) */
859 32, /* bitsize */
860 FALSE, /* pc_relative */
861 0, /* bitpos */
862 complain_overflow_bitfield, /* complain_on_overflow */
863 bfd_elf_generic_reloc, /* */
864 "R_SH_GLOB_DAT", /* name */
865 SH_PARTIAL32, /* partial_inplace */
866 SH_SRC_MASK32, /* src_mask */
867 0xffffffff, /* dst_mask */
868 FALSE), /* pcrel_offset */
869
870 HOWTO (R_SH_JMP_SLOT, /* type */
871 0, /* rightshift */
872 2, /* size (0 = byte, 1 = short, 2 = long) */
873 32, /* bitsize */
874 FALSE, /* pc_relative */
875 0, /* bitpos */
876 complain_overflow_bitfield, /* complain_on_overflow */
877 bfd_elf_generic_reloc, /* */
878 "R_SH_JMP_SLOT", /* name */
879 SH_PARTIAL32, /* partial_inplace */
880 SH_SRC_MASK32, /* src_mask */
881 0xffffffff, /* dst_mask */
882 FALSE), /* pcrel_offset */
883
884 HOWTO (R_SH_RELATIVE, /* type */
885 0, /* rightshift */
886 2, /* size (0 = byte, 1 = short, 2 = long) */
887 32, /* bitsize */
888 FALSE, /* pc_relative */
889 0, /* bitpos */
890 complain_overflow_bitfield, /* complain_on_overflow */
891 bfd_elf_generic_reloc, /* */
892 "R_SH_RELATIVE", /* name */
893 SH_PARTIAL32, /* partial_inplace */
894 SH_SRC_MASK32, /* src_mask */
895 0xffffffff, /* dst_mask */
896 FALSE), /* pcrel_offset */
897
898 HOWTO (R_SH_GOTOFF, /* type */
899 0, /* rightshift */
900 2, /* size (0 = byte, 1 = short, 2 = long) */
901 32, /* bitsize */
902 FALSE, /* pc_relative */
903 0, /* bitpos */
904 complain_overflow_bitfield, /* complain_on_overflow */
905 bfd_elf_generic_reloc, /* */
906 "R_SH_GOTOFF", /* name */
907 SH_PARTIAL32, /* partial_inplace */
908 SH_SRC_MASK32, /* src_mask */
909 0xffffffff, /* dst_mask */
910 FALSE), /* pcrel_offset */
911
912 HOWTO (R_SH_GOTPC, /* type */
913 0, /* rightshift */
914 2, /* size (0 = byte, 1 = short, 2 = long) */
915 32, /* bitsize */
916 TRUE, /* pc_relative */
917 0, /* bitpos */
918 complain_overflow_bitfield, /* complain_on_overflow */
919 bfd_elf_generic_reloc, /* */
920 "R_SH_GOTPC", /* name */
921 SH_PARTIAL32, /* partial_inplace */
922 SH_SRC_MASK32, /* src_mask */
923 0xffffffff, /* dst_mask */
924 TRUE), /* pcrel_offset */
925
926 HOWTO (R_SH_GOTPLT32, /* type */
927 0, /* rightshift */
928 2, /* size (0 = byte, 1 = short, 2 = long) */
929 32, /* bitsize */
930 FALSE, /* pc_relative */
931 0, /* bitpos */
932 complain_overflow_bitfield, /* complain_on_overflow */
933 bfd_elf_generic_reloc, /* */
934 "R_SH_GOTPLT32", /* name */
935 FALSE, /* partial_inplace */
936 /* ??? Why not 0? */
937 SH_SRC_MASK32, /* src_mask */
938 0xffffffff, /* dst_mask */
939 FALSE), /* pcrel_offset */
940
8e45593f
NC
941 EMPTY_HOWTO (169),
942 EMPTY_HOWTO (170),
943 EMPTY_HOWTO (171),
944 EMPTY_HOWTO (172),
945 EMPTY_HOWTO (173),
946 EMPTY_HOWTO (174),
947 EMPTY_HOWTO (175),
948 EMPTY_HOWTO (176),
949 EMPTY_HOWTO (177),
950 EMPTY_HOWTO (178),
951 EMPTY_HOWTO (179),
952 EMPTY_HOWTO (180),
953 EMPTY_HOWTO (181),
954 EMPTY_HOWTO (182),
955 EMPTY_HOWTO (183),
956 EMPTY_HOWTO (184),
957 EMPTY_HOWTO (185),
958 EMPTY_HOWTO (186),
959 EMPTY_HOWTO (187),
960 EMPTY_HOWTO (188),
961 EMPTY_HOWTO (189),
962 EMPTY_HOWTO (190),
963 EMPTY_HOWTO (191),
964 EMPTY_HOWTO (192),
965 EMPTY_HOWTO (193),
966 EMPTY_HOWTO (194),
967 EMPTY_HOWTO (195),
968 EMPTY_HOWTO (196),
55e6e397
RS
969 EMPTY_HOWTO (197),
970 EMPTY_HOWTO (198),
971 EMPTY_HOWTO (199),
972 EMPTY_HOWTO (200),
8e45593f
NC
973
974 /* FDPIC-relative offset to a GOT entry, for movi20. */
975 HOWTO (R_SH_GOT20, /* type */
976 0, /* rightshift */
977 2, /* size (0 = byte, 1 = short, 2 = long) */
978 20, /* bitsize */
979 FALSE, /* pc_relative */
980 0, /* bitpos */
981 complain_overflow_signed, /* complain_on_overflow */
982 bfd_elf_generic_reloc, /* special_function */
983 "R_SH_GOT20", /* name */
984 FALSE, /* partial_inplace */
985 0, /* src_mask */
986 0x00f0ffff, /* dst_mask */
987 FALSE), /* pcrel_offset */
988
989 /* FDPIC-relative offset to a data object, for movi20. */
990 HOWTO (R_SH_GOTOFF20, /* type */
991 0, /* rightshift */
992 2, /* size (0 = byte, 1 = short, 2 = long) */
993 20, /* bitsize */
994 FALSE, /* pc_relative */
995 0, /* bitpos */
996 complain_overflow_signed, /* complain_on_overflow */
997 bfd_elf_generic_reloc, /* special_function */
998 "R_SH_GOTOFF20", /* name */
999 FALSE, /* partial_inplace */
1000 0, /* src_mask */
1001 0x00f0ffff, /* dst_mask */
1002 FALSE), /* pcrel_offset */
1003
1004 /* FDPIC-relative offset to a GOT entry for a function descriptor. */
1005 HOWTO (R_SH_GOTFUNCDESC, /* type */
1006 0, /* rightshift */
1007 2, /* size (0 = byte, 1 = short, 2 = long) */
1008 32, /* bitsize */
1009 FALSE, /* pc_relative */
1010 0, /* bitpos */
1011 complain_overflow_signed, /* complain_on_overflow */
1012 bfd_elf_generic_reloc, /* special_function */
1013 "R_SH_GOTFUNCDESC", /* name */
1014 FALSE, /* partial_inplace */
1015 0, /* src_mask */
1016 0xffffffff, /* dst_mask */
1017 FALSE), /* pcrel_offset */
1018
1019 /* FDPIC-relative offset to a GOT entry for a function descriptor,
1020 for movi20. */
1021 HOWTO (R_SH_GOTFUNCDESC20, /* type */
1022 0, /* rightshift */
1023 2, /* size (0 = byte, 1 = short, 2 = long) */
1024 20, /* bitsize */
1025 FALSE, /* pc_relative */
1026 0, /* bitpos */
1027 complain_overflow_signed, /* complain_on_overflow */
1028 bfd_elf_generic_reloc, /* special_function */
1029 "R_SH_GOTFUNCDESC20", /* name */
1030 FALSE, /* partial_inplace */
1031 0, /* src_mask */
1032 0x00f0ffff, /* dst_mask */
1033 FALSE), /* pcrel_offset */
1034
1035 /* FDPIC-relative offset to a function descriptor. */
1036 HOWTO (R_SH_GOTOFFFUNCDESC, /* type */
1037 0, /* rightshift */
1038 2, /* size (0 = byte, 1 = short, 2 = long) */
1039 32, /* bitsize */
1040 FALSE, /* pc_relative */
1041 0, /* bitpos */
1042 complain_overflow_signed, /* complain_on_overflow */
1043 bfd_elf_generic_reloc, /* special_function */
1044 "R_SH_GOTOFFFUNCDESC", /* name */
1045 FALSE, /* partial_inplace */
1046 0, /* src_mask */
1047 0xffffffff, /* dst_mask */
1048 FALSE), /* pcrel_offset */
1049
1050 /* FDPIC-relative offset to a function descriptor, for movi20. */
1051 HOWTO (R_SH_GOTOFFFUNCDESC20, /* type */
1052 0, /* rightshift */
1053 2, /* size (0 = byte, 1 = short, 2 = long) */
1054 20, /* bitsize */
1055 FALSE, /* pc_relative */
1056 0, /* bitpos */
1057 complain_overflow_signed, /* complain_on_overflow */
1058 bfd_elf_generic_reloc, /* special_function */
1059 "R_SH_GOTOFFFUNCDESC20", /* name */
1060 FALSE, /* partial_inplace */
1061 0, /* src_mask */
1062 0x00f0ffff, /* dst_mask */
1063 FALSE), /* pcrel_offset */
1064
1065 /* Address of an official function descriptor. */
1066 HOWTO (R_SH_FUNCDESC, /* type */
1067 0, /* rightshift */
1068 2, /* size (0 = byte, 1 = short, 2 = long) */
1069 32, /* bitsize */
1070 FALSE, /* pc_relative */
1071 0, /* bitpos */
1072 complain_overflow_signed, /* complain_on_overflow */
1073 bfd_elf_generic_reloc, /* special_function */
1074 "R_SH_FUNCDESC", /* name */
1075 FALSE, /* partial_inplace */
1076 0, /* src_mask */
1077 0xffffffff, /* dst_mask */
1078 FALSE), /* pcrel_offset */
1079
1080 /* Function descriptor to be filled in by the dynamic linker. */
1081 HOWTO (R_SH_FUNCDESC_VALUE, /* type */
1082 0, /* rightshift */
1083 2, /* size (0 = byte, 1 = short, 2 = long) */
1084 64, /* bitsize */
1085 FALSE, /* pc_relative */
1086 0, /* bitpos */
1087 complain_overflow_signed, /* complain_on_overflow */
1088 bfd_elf_generic_reloc, /* special_function */
1089 "R_SH_FUNCDESC_VALUE", /* name */
1090 FALSE, /* partial_inplace */
1091 0, /* src_mask */
1092 0xffffffff, /* dst_mask */
1093 FALSE), /* pcrel_offset */
1094
55e6e397
RS
1095#undef SH_PARTIAL32
1096#undef SH_SRC_MASK32
1097#undef SH_ELF_RELOC
This page took 0.724351 seconds and 4 git commands to generate.