]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - bfd/elf32-sh-relocs.h
PR31692, objdump fails .debug_info size check
[thirdparty/binutils-gdb.git] / bfd / elf32-sh-relocs.h
CommitLineData
fd67aa11 1/* Copyright (C) 2006-2024 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 */
c94cb026 23 0, /* size */
55e6e397 24 0, /* bitsize */
0a1b45a2 25 false, /* pc_relative */
55e6e397
RS
26 0, /* bitpos */
27 complain_overflow_dont, /* complain_on_overflow */
28 sh_elf_ignore_reloc, /* special_function */
29 "R_SH_NONE", /* name */
0a1b45a2 30 false, /* partial_inplace */
55e6e397
RS
31 0, /* src_mask */
32 0, /* dst_mask */
0a1b45a2 33 false), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 39 4, /* size */
55e6e397 40 32, /* bitsize */
0a1b45a2 41 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 49 false), /* pcrel_offset */
55e6e397
RS
50
51 /* 32 bit PC relative relocation. */
52 HOWTO (R_SH_REL32, /* type */
53 0, /* rightshift */
c94cb026 54 4, /* size */
55e6e397 55 32, /* bitsize */
0a1b45a2 56 true, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 64 true), /* pcrel_offset */
55e6e397
RS
65
66 /* 8 bit PC relative branch divided by 2. */
67 HOWTO (R_SH_DIR8WPN, /* type */
68 1, /* rightshift */
c94cb026 69 2, /* size */
55e6e397 70 8, /* bitsize */
0a1b45a2 71 true, /* pc_relative */
55e6e397
RS
72 0, /* bitpos */
73 complain_overflow_signed, /* complain_on_overflow */
74 sh_elf_ignore_reloc, /* special_function */
75 "R_SH_DIR8WPN", /* name */
0a1b45a2 76 true, /* partial_inplace */
55e6e397
RS
77 0xff, /* src_mask */
78 0xff, /* dst_mask */
0a1b45a2 79 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 86 2, /* size */
55e6e397 87 12, /* bitsize */
0a1b45a2 88 true, /* pc_relative */
55e6e397
RS
89 0, /* bitpos */
90 complain_overflow_signed, /* complain_on_overflow */
91 NULL, /* special_function */
92 "R_SH_IND12W", /* name */
0a1b45a2 93 false, /* partial_inplace */
55e6e397
RS
94 0x0, /* src_mask */
95 0xfff, /* dst_mask */
0a1b45a2 96 true), /* pcrel_offset */
55e6e397
RS
97
98 /* 8 bit unsigned PC relative divided by 4. */
99 HOWTO (R_SH_DIR8WPL, /* type */
100 2, /* rightshift */
c94cb026 101 2, /* size */
55e6e397 102 8, /* bitsize */
0a1b45a2 103 true, /* pc_relative */
55e6e397
RS
104 0, /* bitpos */
105 complain_overflow_unsigned, /* complain_on_overflow */
106 sh_elf_ignore_reloc, /* special_function */
107 "R_SH_DIR8WPL", /* name */
0a1b45a2 108 true, /* partial_inplace */
55e6e397
RS
109 0xff, /* src_mask */
110 0xff, /* dst_mask */
0a1b45a2 111 true), /* pcrel_offset */
55e6e397
RS
112
113 /* 8 bit unsigned PC relative divided by 2. */
114 HOWTO (R_SH_DIR8WPZ, /* type */
115 1, /* rightshift */
c94cb026 116 2, /* size */
55e6e397 117 8, /* bitsize */
0a1b45a2 118 true, /* pc_relative */
55e6e397
RS
119 0, /* bitpos */
120 complain_overflow_unsigned, /* complain_on_overflow */
121 sh_elf_ignore_reloc, /* special_function */
122 "R_SH_DIR8WPZ", /* name */
0a1b45a2 123 true, /* partial_inplace */
55e6e397
RS
124 0xff, /* src_mask */
125 0xff, /* dst_mask */
0a1b45a2 126 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 133 2, /* size */
55e6e397 134 8, /* bitsize */
0a1b45a2 135 false, /* pc_relative */
55e6e397
RS
136 0, /* bitpos */
137 complain_overflow_unsigned, /* complain_on_overflow */
138 sh_elf_ignore_reloc, /* special_function */
139 "R_SH_DIR8BP", /* name */
0a1b45a2 140 false, /* partial_inplace */
55e6e397
RS
141 0, /* src_mask */
142 0xff, /* dst_mask */
0a1b45a2 143 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 150 2, /* size */
55e6e397 151 8, /* bitsize */
0a1b45a2 152 false, /* pc_relative */
55e6e397
RS
153 0, /* bitpos */
154 complain_overflow_unsigned, /* complain_on_overflow */
155 sh_elf_ignore_reloc, /* special_function */
156 "R_SH_DIR8W", /* name */
0a1b45a2 157 false, /* partial_inplace */
55e6e397
RS
158 0, /* src_mask */
159 0xff, /* dst_mask */
0a1b45a2 160 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 167 2, /* size */
55e6e397 168 8, /* bitsize */
0a1b45a2 169 false, /* pc_relative */
55e6e397
RS
170 0, /* bitpos */
171 complain_overflow_unsigned, /* complain_on_overflow */
172 sh_elf_ignore_reloc, /* special_function */
173 "R_SH_DIR8L", /* name */
0a1b45a2 174 false, /* partial_inplace */
55e6e397
RS
175 0, /* src_mask */
176 0xff, /* dst_mask */
0a1b45a2 177 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 182 2, /* size */
55e6e397 183 8, /* bitsize */
0a1b45a2 184 false, /* pc_relative */
55e6e397
RS
185 0, /* bitpos */
186 complain_overflow_signed, /* complain_on_overflow */
187 sh_elf_ignore_reloc, /* special_function */
188 "R_SH_LOOP_START", /* name */
0a1b45a2 189 true, /* partial_inplace */
55e6e397
RS
190 0xff, /* src_mask */
191 0xff, /* dst_mask */
0a1b45a2 192 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 197 2, /* size */
55e6e397 198 8, /* bitsize */
0a1b45a2 199 false, /* pc_relative */
55e6e397
RS
200 0, /* bitpos */
201 complain_overflow_signed, /* complain_on_overflow */
202 sh_elf_ignore_reloc, /* special_function */
203 "R_SH_LOOP_END", /* name */
0a1b45a2 204 true, /* partial_inplace */
55e6e397
RS
205 0xff, /* src_mask */
206 0xff, /* dst_mask */
0a1b45a2 207 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 228 4, /* size */
55e6e397 229 0, /* bitsize */
0a1b45a2 230 false, /* pc_relative */
55e6e397
RS
231 0, /* bitpos */
232 complain_overflow_dont, /* complain_on_overflow */
233 NULL, /* special_function */
234 "R_SH_GNU_VTINHERIT", /* name */
0a1b45a2 235 false, /* partial_inplace */
55e6e397
RS
236 0, /* src_mask */
237 0, /* dst_mask */
0a1b45a2 238 false), /* pcrel_offset */
55e6e397
RS
239
240 /* GNU extension to record C++ vtable member usage */
241 HOWTO (R_SH_GNU_VTENTRY, /* type */
242 0, /* rightshift */
c94cb026 243 4, /* size */
55e6e397 244 0, /* bitsize */
0a1b45a2 245 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 250 false, /* partial_inplace */
55e6e397
RS
251 0, /* src_mask */
252 0, /* dst_mask */
0a1b45a2 253 false), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 260 1, /* size */
55e6e397 261 8, /* bitsize */
0a1b45a2 262 false, /* pc_relative */
55e6e397
RS
263 0, /* bitpos */
264 complain_overflow_unsigned, /* complain_on_overflow */
265 sh_elf_ignore_reloc, /* special_function */
266 "R_SH_SWITCH8", /* name */
0a1b45a2 267 false, /* partial_inplace */
55e6e397
RS
268 0, /* src_mask */
269 0, /* dst_mask */
0a1b45a2 270 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 277 2, /* size */
55e6e397 278 16, /* bitsize */
0a1b45a2 279 false, /* pc_relative */
55e6e397
RS
280 0, /* bitpos */
281 complain_overflow_unsigned, /* complain_on_overflow */
282 sh_elf_ignore_reloc, /* special_function */
283 "R_SH_SWITCH16", /* name */
0a1b45a2 284 false, /* partial_inplace */
55e6e397
RS
285 0, /* src_mask */
286 0, /* dst_mask */
0a1b45a2 287 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 294 4, /* size */
55e6e397 295 32, /* bitsize */
0a1b45a2 296 false, /* pc_relative */
55e6e397
RS
297 0, /* bitpos */
298 complain_overflow_unsigned, /* complain_on_overflow */
299 sh_elf_ignore_reloc, /* special_function */
300 "R_SH_SWITCH32", /* name */
0a1b45a2 301 false, /* partial_inplace */
55e6e397
RS
302 0, /* src_mask */
303 0, /* dst_mask */
0a1b45a2 304 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 312 2, /* size */
55e6e397 313 0, /* bitsize */
0a1b45a2 314 false, /* pc_relative */
55e6e397
RS
315 0, /* bitpos */
316 complain_overflow_unsigned, /* complain_on_overflow */
317 sh_elf_ignore_reloc, /* special_function */
318 "R_SH_USES", /* name */
0a1b45a2 319 false, /* partial_inplace */
55e6e397
RS
320 0, /* src_mask */
321 0, /* dst_mask */
0a1b45a2 322 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 330 2, /* size */
55e6e397 331 0, /* bitsize */
0a1b45a2 332 false, /* pc_relative */
55e6e397
RS
333 0, /* bitpos */
334 complain_overflow_unsigned, /* complain_on_overflow */
335 sh_elf_ignore_reloc, /* special_function */
336 "R_SH_COUNT", /* name */
0a1b45a2 337 false, /* partial_inplace */
55e6e397
RS
338 0, /* src_mask */
339 0, /* dst_mask */
0a1b45a2 340 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 347 2, /* size */
55e6e397 348 0, /* bitsize */
0a1b45a2 349 false, /* pc_relative */
55e6e397
RS
350 0, /* bitpos */
351 complain_overflow_unsigned, /* complain_on_overflow */
352 sh_elf_ignore_reloc, /* special_function */
353 "R_SH_ALIGN", /* name */
0a1b45a2 354 false, /* partial_inplace */
55e6e397
RS
355 0, /* src_mask */
356 0, /* dst_mask */
0a1b45a2 357 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 364 2, /* size */
55e6e397 365 0, /* bitsize */
0a1b45a2 366 false, /* pc_relative */
55e6e397
RS
367 0, /* bitpos */
368 complain_overflow_unsigned, /* complain_on_overflow */
369 sh_elf_ignore_reloc, /* special_function */
370 "R_SH_CODE", /* name */
0a1b45a2 371 false, /* partial_inplace */
55e6e397
RS
372 0, /* src_mask */
373 0, /* dst_mask */
0a1b45a2 374 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 380 2, /* size */
55e6e397 381 0, /* bitsize */
0a1b45a2 382 false, /* pc_relative */
55e6e397
RS
383 0, /* bitpos */
384 complain_overflow_unsigned, /* complain_on_overflow */
385 sh_elf_ignore_reloc, /* special_function */
386 "R_SH_DATA", /* name */
0a1b45a2 387 false, /* partial_inplace */
55e6e397
RS
388 0, /* src_mask */
389 0, /* dst_mask */
0a1b45a2 390 true), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 397 2, /* size */
55e6e397 398 0, /* bitsize */
0a1b45a2 399 false, /* pc_relative */
55e6e397
RS
400 0, /* bitpos */
401 complain_overflow_unsigned, /* complain_on_overflow */
402 sh_elf_ignore_reloc, /* special_function */
403 "R_SH_LABEL", /* name */
0a1b45a2 404 false, /* partial_inplace */
55e6e397
RS
405 0, /* src_mask */
406 0, /* dst_mask */
0a1b45a2 407 true), /* pcrel_offset */
55e6e397
RS
408
409 /* The next 12 are only supported via linking in SHC-generated objects. */
410 HOWTO (R_SH_DIR16, /* type */
411 0, /* rightshift */
c94cb026 412 2, /* size */
55e6e397 413 16, /* bitsize */
0a1b45a2 414 false, /* pc_relative */
55e6e397
RS
415 0, /* bitpos */
416 complain_overflow_dont, /* complain_on_overflow */
417 bfd_elf_generic_reloc, /* special_function */
418 "R_SH_DIR16", /* name */
0a1b45a2 419 false, /* partial_inplace */
55e6e397
RS
420 0, /* src_mask */
421 0xffff, /* dst_mask */
0a1b45a2 422 false), /* pcrel_offset */
55e6e397
RS
423
424 HOWTO (R_SH_DIR8, /* type */
425 0, /* rightshift */
c94cb026 426 1, /* size */
55e6e397 427 8, /* bitsize */
0a1b45a2 428 false, /* pc_relative */
55e6e397
RS
429 0, /* bitpos */
430 complain_overflow_dont, /* complain_on_overflow */
431 bfd_elf_generic_reloc, /* special_function */
432 "R_SH_DIR8", /* name */
0a1b45a2 433 false, /* partial_inplace */
55e6e397
RS
434 0, /* src_mask */
435 0xff, /* dst_mask */
0a1b45a2 436 false), /* pcrel_offset */
55e6e397
RS
437
438 HOWTO (R_SH_DIR8UL, /* type */
439 2, /* rightshift */
c94cb026 440 1, /* size */
55e6e397 441 8, /* bitsize */
0a1b45a2 442 false, /* pc_relative */
55e6e397
RS
443 0, /* bitpos */
444 complain_overflow_unsigned, /* complain_on_overflow */
445 bfd_elf_generic_reloc, /* special_function */
446 "R_SH_DIR8UL", /* name */
0a1b45a2 447 false, /* partial_inplace */
55e6e397
RS
448 0, /* src_mask */
449 0xff, /* dst_mask */
0a1b45a2 450 false), /* pcrel_offset */
55e6e397
RS
451
452 HOWTO (R_SH_DIR8UW, /* type */
453 1, /* rightshift */
c94cb026 454 1, /* size */
55e6e397 455 8, /* bitsize */
0a1b45a2 456 false, /* pc_relative */
55e6e397
RS
457 0, /* bitpos */
458 complain_overflow_unsigned, /* complain_on_overflow */
459 bfd_elf_generic_reloc, /* special_function */
460 "R_SH_DIR8UW", /* name */
0a1b45a2 461 false, /* partial_inplace */
55e6e397
RS
462 0, /* src_mask */
463 0xff, /* dst_mask */
0a1b45a2 464 false), /* pcrel_offset */
55e6e397
RS
465
466 HOWTO (R_SH_DIR8U, /* type */
467 0, /* rightshift */
c94cb026 468 1, /* size */
55e6e397 469 8, /* bitsize */
0a1b45a2 470 false, /* pc_relative */
55e6e397
RS
471 0, /* bitpos */
472 complain_overflow_unsigned, /* complain_on_overflow */
473 bfd_elf_generic_reloc, /* special_function */
474 "R_SH_DIR8U", /* name */
0a1b45a2 475 false, /* partial_inplace */
55e6e397
RS
476 0, /* src_mask */
477 0xff, /* dst_mask */
0a1b45a2 478 false), /* pcrel_offset */
55e6e397
RS
479
480 HOWTO (R_SH_DIR8SW, /* type */
481 1, /* rightshift */
c94cb026 482 1, /* size */
55e6e397 483 8, /* bitsize */
0a1b45a2 484 false, /* pc_relative */
55e6e397
RS
485 0, /* bitpos */
486 complain_overflow_signed, /* complain_on_overflow */
487 bfd_elf_generic_reloc, /* special_function */
488 "R_SH_DIR8SW", /* name */
0a1b45a2 489 false, /* partial_inplace */
55e6e397
RS
490 0, /* src_mask */
491 0xff, /* dst_mask */
0a1b45a2 492 false), /* pcrel_offset */
55e6e397
RS
493
494 HOWTO (R_SH_DIR8S, /* type */
495 0, /* rightshift */
c94cb026 496 1, /* size */
55e6e397 497 8, /* bitsize */
0a1b45a2 498 false, /* pc_relative */
55e6e397
RS
499 0, /* bitpos */
500 complain_overflow_signed, /* complain_on_overflow */
501 bfd_elf_generic_reloc, /* special_function */
502 "R_SH_DIR8S", /* name */
0a1b45a2 503 false, /* partial_inplace */
55e6e397
RS
504 0, /* src_mask */
505 0xff, /* dst_mask */
0a1b45a2 506 false), /* pcrel_offset */
55e6e397
RS
507
508 HOWTO (R_SH_DIR4UL, /* type */
509 2, /* rightshift */
c94cb026 510 1, /* size */
55e6e397 511 4, /* bitsize */
0a1b45a2 512 false, /* pc_relative */
55e6e397
RS
513 0, /* bitpos */
514 complain_overflow_unsigned, /* complain_on_overflow */
515 bfd_elf_generic_reloc, /* special_function */
516 "R_SH_DIR4UL", /* name */
0a1b45a2 517 false, /* partial_inplace */
55e6e397
RS
518 0, /* src_mask */
519 0x0f, /* dst_mask */
0a1b45a2 520 false), /* pcrel_offset */
55e6e397
RS
521
522 HOWTO (R_SH_DIR4UW, /* type */
523 1, /* rightshift */
c94cb026 524 1, /* size */
55e6e397 525 4, /* bitsize */
0a1b45a2 526 false, /* pc_relative */
55e6e397
RS
527 0, /* bitpos */
528 complain_overflow_unsigned, /* complain_on_overflow */
529 bfd_elf_generic_reloc, /* special_function */
530 "R_SH_DIR4UW", /* name */
0a1b45a2 531 false, /* partial_inplace */
55e6e397
RS
532 0, /* src_mask */
533 0x0f, /* dst_mask */
0a1b45a2 534 false), /* pcrel_offset */
55e6e397
RS
535
536 HOWTO (R_SH_DIR4U, /* type */
537 0, /* rightshift */
c94cb026 538 1, /* size */
55e6e397 539 4, /* bitsize */
0a1b45a2 540 false, /* pc_relative */
55e6e397
RS
541 0, /* bitpos */
542 complain_overflow_unsigned, /* complain_on_overflow */
543 bfd_elf_generic_reloc, /* special_function */
544 "R_SH_DIR4U", /* name */
0a1b45a2 545 false, /* partial_inplace */
55e6e397
RS
546 0, /* src_mask */
547 0x0f, /* dst_mask */
0a1b45a2 548 false), /* pcrel_offset */
55e6e397
RS
549
550 HOWTO (R_SH_PSHA, /* type */
551 0, /* rightshift */
c94cb026 552 2, /* size */
55e6e397 553 7, /* bitsize */
0a1b45a2 554 false, /* pc_relative */
55e6e397
RS
555 4, /* bitpos */
556 complain_overflow_signed, /* complain_on_overflow */
557 bfd_elf_generic_reloc, /* special_function */
558 "R_SH_PSHA", /* name */
0a1b45a2 559 false, /* partial_inplace */
55e6e397
RS
560 0, /* src_mask */
561 0x0f, /* dst_mask */
0a1b45a2 562 false), /* pcrel_offset */
55e6e397
RS
563
564 HOWTO (R_SH_PSHL, /* type */
565 0, /* rightshift */
c94cb026 566 2, /* size */
55e6e397 567 7, /* bitsize */
0a1b45a2 568 false, /* pc_relative */
55e6e397
RS
569 4, /* bitpos */
570 complain_overflow_signed, /* complain_on_overflow */
571 bfd_elf_generic_reloc, /* special_function */
572 "R_SH_PSHL", /* name */
0a1b45a2 573 false, /* partial_inplace */
55e6e397
RS
574 0, /* src_mask */
575 0x0f, /* dst_mask */
0a1b45a2 576 false), /* pcrel_offset */
55e6e397 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 */
c94cb026 590 2, /* size */
55e6e397 591 16, /* bitsize */
0a1b45a2 592 false, /* pc_relative */
55e6e397
RS
593 0, /* bitpos */
594 complain_overflow_signed, /* complain_on_overflow */
595 bfd_elf_generic_reloc, /* special_function */
596 "R_SH_DIR16S", /* name */
0a1b45a2 597 false, /* partial_inplace */
55e6e397
RS
598 0, /* src_mask */
599 0xffff, /* dst_mask */
0a1b45a2 600 false), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 695 4, /* size */
55e6e397 696 32, /* bitsize */
0a1b45a2 697 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 705 false), /* pcrel_offset */
55e6e397
RS
706
707 HOWTO (R_SH_TLS_LD_32, /* type */
708 0, /* rightshift */
c94cb026 709 4, /* size */
55e6e397 710 32, /* bitsize */
0a1b45a2 711 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 719 false), /* pcrel_offset */
55e6e397
RS
720
721 HOWTO (R_SH_TLS_LDO_32, /* type */
722 0, /* rightshift */
c94cb026 723 4, /* size */
55e6e397 724 32, /* bitsize */
0a1b45a2 725 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 733 false), /* pcrel_offset */
55e6e397
RS
734
735 HOWTO (R_SH_TLS_IE_32, /* type */
736 0, /* rightshift */
c94cb026 737 4, /* size */
55e6e397 738 32, /* bitsize */
0a1b45a2 739 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 747 false), /* pcrel_offset */
55e6e397
RS
748
749 HOWTO (R_SH_TLS_LE_32, /* type */
750 0, /* rightshift */
c94cb026 751 4, /* size */
55e6e397 752 32, /* bitsize */
0a1b45a2 753 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 761 false), /* pcrel_offset */
55e6e397
RS
762
763 HOWTO (R_SH_TLS_DTPMOD32, /* type */
764 0, /* rightshift */
c94cb026 765 4, /* size */
55e6e397 766 32, /* bitsize */
0a1b45a2 767 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 775 false), /* pcrel_offset */
55e6e397
RS
776
777 HOWTO (R_SH_TLS_DTPOFF32, /* type */
778 0, /* rightshift */
c94cb026 779 4, /* size */
55e6e397 780 32, /* bitsize */
0a1b45a2 781 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 789 false), /* pcrel_offset */
55e6e397
RS
790
791 HOWTO (R_SH_TLS_TPOFF32, /* type */
792 0, /* rightshift */
c94cb026 793 4, /* size */
55e6e397 794 32, /* bitsize */
0a1b45a2 795 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 803 false), /* pcrel_offset */
55e6e397
RS
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 */
c94cb026 816 4, /* size */
55e6e397 817 32, /* bitsize */
0a1b45a2 818 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 826 false), /* pcrel_offset */
55e6e397
RS
827
828 HOWTO (R_SH_PLT32, /* type */
829 0, /* rightshift */
c94cb026 830 4, /* size */
55e6e397 831 32, /* bitsize */
0a1b45a2 832 true, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 840 true), /* pcrel_offset */
55e6e397
RS
841
842 HOWTO (R_SH_COPY, /* type */
843 0, /* rightshift */
c94cb026 844 4, /* size */
55e6e397 845 32, /* bitsize */
0a1b45a2 846 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 854 false), /* pcrel_offset */
55e6e397
RS
855
856 HOWTO (R_SH_GLOB_DAT, /* type */
857 0, /* rightshift */
c94cb026 858 4, /* size */
55e6e397 859 32, /* bitsize */
0a1b45a2 860 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 868 false), /* pcrel_offset */
55e6e397
RS
869
870 HOWTO (R_SH_JMP_SLOT, /* type */
871 0, /* rightshift */
c94cb026 872 4, /* size */
55e6e397 873 32, /* bitsize */
0a1b45a2 874 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 882 false), /* pcrel_offset */
55e6e397
RS
883
884 HOWTO (R_SH_RELATIVE, /* type */
885 0, /* rightshift */
c94cb026 886 4, /* size */
55e6e397 887 32, /* bitsize */
0a1b45a2 888 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 896 false), /* pcrel_offset */
55e6e397
RS
897
898 HOWTO (R_SH_GOTOFF, /* type */
899 0, /* rightshift */
c94cb026 900 4, /* size */
55e6e397 901 32, /* bitsize */
0a1b45a2 902 false, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 910 false), /* pcrel_offset */
55e6e397
RS
911
912 HOWTO (R_SH_GOTPC, /* type */
913 0, /* rightshift */
c94cb026 914 4, /* size */
55e6e397 915 32, /* bitsize */
0a1b45a2 916 true, /* pc_relative */
55e6e397
RS
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 */
0a1b45a2 924 true), /* pcrel_offset */
55e6e397
RS
925
926 HOWTO (R_SH_GOTPLT32, /* type */
927 0, /* rightshift */
c94cb026 928 4, /* size */
55e6e397 929 32, /* bitsize */
0a1b45a2 930 false, /* pc_relative */
55e6e397
RS
931 0, /* bitpos */
932 complain_overflow_bitfield, /* complain_on_overflow */
933 bfd_elf_generic_reloc, /* */
934 "R_SH_GOTPLT32", /* name */
0a1b45a2 935 false, /* partial_inplace */
55e6e397
RS
936 /* ??? Why not 0? */
937 SH_SRC_MASK32, /* src_mask */
938 0xffffffff, /* dst_mask */
0a1b45a2 939 false), /* pcrel_offset */
55e6e397 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 */
c94cb026 977 4, /* size */
8e45593f 978 20, /* bitsize */
0a1b45a2 979 false, /* pc_relative */
8e45593f
NC
980 0, /* bitpos */
981 complain_overflow_signed, /* complain_on_overflow */
982 bfd_elf_generic_reloc, /* special_function */
983 "R_SH_GOT20", /* name */
0a1b45a2 984 false, /* partial_inplace */
8e45593f
NC
985 0, /* src_mask */
986 0x00f0ffff, /* dst_mask */
0a1b45a2 987 false), /* pcrel_offset */
8e45593f
NC
988
989 /* FDPIC-relative offset to a data object, for movi20. */
990 HOWTO (R_SH_GOTOFF20, /* type */
991 0, /* rightshift */
c94cb026 992 4, /* size */
8e45593f 993 20, /* bitsize */
0a1b45a2 994 false, /* pc_relative */
8e45593f
NC
995 0, /* bitpos */
996 complain_overflow_signed, /* complain_on_overflow */
997 bfd_elf_generic_reloc, /* special_function */
998 "R_SH_GOTOFF20", /* name */
0a1b45a2 999 false, /* partial_inplace */
8e45593f
NC
1000 0, /* src_mask */
1001 0x00f0ffff, /* dst_mask */
0a1b45a2 1002 false), /* pcrel_offset */
8e45593f
NC
1003
1004 /* FDPIC-relative offset to a GOT entry for a function descriptor. */
1005 HOWTO (R_SH_GOTFUNCDESC, /* type */
1006 0, /* rightshift */
c94cb026 1007 4, /* size */
8e45593f 1008 32, /* bitsize */
0a1b45a2 1009 false, /* pc_relative */
8e45593f
NC
1010 0, /* bitpos */
1011 complain_overflow_signed, /* complain_on_overflow */
1012 bfd_elf_generic_reloc, /* special_function */
1013 "R_SH_GOTFUNCDESC", /* name */
0a1b45a2 1014 false, /* partial_inplace */
8e45593f
NC
1015 0, /* src_mask */
1016 0xffffffff, /* dst_mask */
0a1b45a2 1017 false), /* pcrel_offset */
8e45593f
NC
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 */
c94cb026 1023 4, /* size */
8e45593f 1024 20, /* bitsize */
0a1b45a2 1025 false, /* pc_relative */
8e45593f
NC
1026 0, /* bitpos */
1027 complain_overflow_signed, /* complain_on_overflow */
1028 bfd_elf_generic_reloc, /* special_function */
1029 "R_SH_GOTFUNCDESC20", /* name */
0a1b45a2 1030 false, /* partial_inplace */
8e45593f
NC
1031 0, /* src_mask */
1032 0x00f0ffff, /* dst_mask */
0a1b45a2 1033 false), /* pcrel_offset */
8e45593f
NC
1034
1035 /* FDPIC-relative offset to a function descriptor. */
1036 HOWTO (R_SH_GOTOFFFUNCDESC, /* type */
1037 0, /* rightshift */
c94cb026 1038 4, /* size */
8e45593f 1039 32, /* bitsize */
0a1b45a2 1040 false, /* pc_relative */
8e45593f
NC
1041 0, /* bitpos */
1042 complain_overflow_signed, /* complain_on_overflow */
1043 bfd_elf_generic_reloc, /* special_function */
1044 "R_SH_GOTOFFFUNCDESC", /* name */
0a1b45a2 1045 false, /* partial_inplace */
8e45593f
NC
1046 0, /* src_mask */
1047 0xffffffff, /* dst_mask */
0a1b45a2 1048 false), /* pcrel_offset */
8e45593f
NC
1049
1050 /* FDPIC-relative offset to a function descriptor, for movi20. */
1051 HOWTO (R_SH_GOTOFFFUNCDESC20, /* type */
1052 0, /* rightshift */
c94cb026 1053 4, /* size */
8e45593f 1054 20, /* bitsize */
0a1b45a2 1055 false, /* pc_relative */
8e45593f
NC
1056 0, /* bitpos */
1057 complain_overflow_signed, /* complain_on_overflow */
1058 bfd_elf_generic_reloc, /* special_function */
1059 "R_SH_GOTOFFFUNCDESC20", /* name */
0a1b45a2 1060 false, /* partial_inplace */
8e45593f
NC
1061 0, /* src_mask */
1062 0x00f0ffff, /* dst_mask */
0a1b45a2 1063 false), /* pcrel_offset */
8e45593f
NC
1064
1065 /* Address of an official function descriptor. */
1066 HOWTO (R_SH_FUNCDESC, /* type */
1067 0, /* rightshift */
c94cb026 1068 4, /* size */
8e45593f 1069 32, /* bitsize */
0a1b45a2 1070 false, /* pc_relative */
8e45593f
NC
1071 0, /* bitpos */
1072 complain_overflow_signed, /* complain_on_overflow */
1073 bfd_elf_generic_reloc, /* special_function */
1074 "R_SH_FUNCDESC", /* name */
0a1b45a2 1075 false, /* partial_inplace */
8e45593f
NC
1076 0, /* src_mask */
1077 0xffffffff, /* dst_mask */
0a1b45a2 1078 false), /* pcrel_offset */
8e45593f
NC
1079
1080 /* Function descriptor to be filled in by the dynamic linker. */
1081 HOWTO (R_SH_FUNCDESC_VALUE, /* type */
1082 0, /* rightshift */
c94cb026 1083 4, /* size */
8e45593f 1084 64, /* bitsize */
0a1b45a2 1085 false, /* pc_relative */
8e45593f
NC
1086 0, /* bitpos */
1087 complain_overflow_signed, /* complain_on_overflow */
1088 bfd_elf_generic_reloc, /* special_function */
1089 "R_SH_FUNCDESC_VALUE", /* name */
0a1b45a2 1090 false, /* partial_inplace */
8e45593f
NC
1091 0, /* src_mask */
1092 0xffffffff, /* dst_mask */
0a1b45a2 1093 false), /* pcrel_offset */
8e45593f 1094
55e6e397
RS
1095#undef SH_PARTIAL32
1096#undef SH_SRC_MASK32
1097#undef SH_ELF_RELOC