]>
Commit | Line | Data |
---|---|---|
55e6e397 RS |
1 | /* No relocation. */ |
2 | HOWTO (R_SH_NONE, /* type */ | |
3 | 0, /* rightshift */ | |
4 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
5 | 0, /* bitsize */ | |
6 | FALSE, /* pc_relative */ | |
7 | 0, /* bitpos */ | |
8 | complain_overflow_dont, /* complain_on_overflow */ | |
9 | sh_elf_ignore_reloc, /* special_function */ | |
10 | "R_SH_NONE", /* name */ | |
11 | FALSE, /* partial_inplace */ | |
12 | 0, /* src_mask */ | |
13 | 0, /* dst_mask */ | |
14 | FALSE), /* pcrel_offset */ | |
15 | ||
16 | /* 32 bit absolute relocation. Setting partial_inplace to TRUE and | |
17 | src_mask to a non-zero value is similar to the COFF toolchain. */ | |
18 | HOWTO (R_SH_DIR32, /* type */ | |
19 | 0, /* rightshift */ | |
20 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
21 | 32, /* bitsize */ | |
22 | FALSE, /* pc_relative */ | |
23 | 0, /* bitpos */ | |
24 | complain_overflow_bitfield, /* complain_on_overflow */ | |
25 | SH_ELF_RELOC, /* special_function */ | |
26 | "R_SH_DIR32", /* name */ | |
27 | SH_PARTIAL32, /* partial_inplace */ | |
28 | SH_SRC_MASK32, /* src_mask */ | |
29 | 0xffffffff, /* dst_mask */ | |
30 | FALSE), /* pcrel_offset */ | |
31 | ||
32 | /* 32 bit PC relative relocation. */ | |
33 | HOWTO (R_SH_REL32, /* type */ | |
34 | 0, /* rightshift */ | |
35 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
36 | 32, /* bitsize */ | |
37 | TRUE, /* pc_relative */ | |
38 | 0, /* bitpos */ | |
39 | complain_overflow_signed, /* complain_on_overflow */ | |
40 | sh_elf_ignore_reloc, /* special_function */ | |
41 | "R_SH_REL32", /* name */ | |
42 | SH_PARTIAL32, /* partial_inplace */ | |
43 | SH_SRC_MASK32, /* src_mask */ | |
44 | 0xffffffff, /* dst_mask */ | |
45 | TRUE), /* pcrel_offset */ | |
46 | ||
47 | /* 8 bit PC relative branch divided by 2. */ | |
48 | HOWTO (R_SH_DIR8WPN, /* type */ | |
49 | 1, /* rightshift */ | |
50 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
51 | 8, /* bitsize */ | |
52 | TRUE, /* pc_relative */ | |
53 | 0, /* bitpos */ | |
54 | complain_overflow_signed, /* complain_on_overflow */ | |
55 | sh_elf_ignore_reloc, /* special_function */ | |
56 | "R_SH_DIR8WPN", /* name */ | |
57 | TRUE, /* partial_inplace */ | |
58 | 0xff, /* src_mask */ | |
59 | 0xff, /* dst_mask */ | |
60 | TRUE), /* pcrel_offset */ | |
61 | ||
62 | /* 12 bit PC relative branch divided by 2. */ | |
63 | /* This cannot be partial_inplace because relaxation can't know the | |
64 | eventual value of a symbol. */ | |
65 | HOWTO (R_SH_IND12W, /* type */ | |
66 | 1, /* rightshift */ | |
67 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
68 | 12, /* bitsize */ | |
69 | TRUE, /* pc_relative */ | |
70 | 0, /* bitpos */ | |
71 | complain_overflow_signed, /* complain_on_overflow */ | |
72 | NULL, /* special_function */ | |
73 | "R_SH_IND12W", /* name */ | |
74 | FALSE, /* partial_inplace */ | |
75 | 0x0, /* src_mask */ | |
76 | 0xfff, /* dst_mask */ | |
77 | TRUE), /* pcrel_offset */ | |
78 | ||
79 | /* 8 bit unsigned PC relative divided by 4. */ | |
80 | HOWTO (R_SH_DIR8WPL, /* type */ | |
81 | 2, /* rightshift */ | |
82 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
83 | 8, /* bitsize */ | |
84 | TRUE, /* pc_relative */ | |
85 | 0, /* bitpos */ | |
86 | complain_overflow_unsigned, /* complain_on_overflow */ | |
87 | sh_elf_ignore_reloc, /* special_function */ | |
88 | "R_SH_DIR8WPL", /* name */ | |
89 | TRUE, /* partial_inplace */ | |
90 | 0xff, /* src_mask */ | |
91 | 0xff, /* dst_mask */ | |
92 | TRUE), /* pcrel_offset */ | |
93 | ||
94 | /* 8 bit unsigned PC relative divided by 2. */ | |
95 | HOWTO (R_SH_DIR8WPZ, /* type */ | |
96 | 1, /* rightshift */ | |
97 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
98 | 8, /* bitsize */ | |
99 | TRUE, /* pc_relative */ | |
100 | 0, /* bitpos */ | |
101 | complain_overflow_unsigned, /* complain_on_overflow */ | |
102 | sh_elf_ignore_reloc, /* special_function */ | |
103 | "R_SH_DIR8WPZ", /* name */ | |
104 | TRUE, /* partial_inplace */ | |
105 | 0xff, /* src_mask */ | |
106 | 0xff, /* dst_mask */ | |
107 | TRUE), /* pcrel_offset */ | |
108 | ||
109 | /* 8 bit GBR relative. FIXME: This only makes sense if we have some | |
110 | special symbol for the GBR relative area, and that is not | |
111 | implemented. */ | |
112 | HOWTO (R_SH_DIR8BP, /* type */ | |
113 | 0, /* rightshift */ | |
114 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
115 | 8, /* bitsize */ | |
116 | FALSE, /* pc_relative */ | |
117 | 0, /* bitpos */ | |
118 | complain_overflow_unsigned, /* complain_on_overflow */ | |
119 | sh_elf_ignore_reloc, /* special_function */ | |
120 | "R_SH_DIR8BP", /* name */ | |
121 | FALSE, /* partial_inplace */ | |
122 | 0, /* src_mask */ | |
123 | 0xff, /* dst_mask */ | |
124 | TRUE), /* pcrel_offset */ | |
125 | ||
126 | /* 8 bit GBR relative divided by 2. FIXME: This only makes sense if | |
127 | we have some special symbol for the GBR relative area, and that | |
128 | is not implemented. */ | |
129 | HOWTO (R_SH_DIR8W, /* type */ | |
130 | 1, /* rightshift */ | |
131 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
132 | 8, /* bitsize */ | |
133 | FALSE, /* pc_relative */ | |
134 | 0, /* bitpos */ | |
135 | complain_overflow_unsigned, /* complain_on_overflow */ | |
136 | sh_elf_ignore_reloc, /* special_function */ | |
137 | "R_SH_DIR8W", /* name */ | |
138 | FALSE, /* partial_inplace */ | |
139 | 0, /* src_mask */ | |
140 | 0xff, /* dst_mask */ | |
141 | TRUE), /* pcrel_offset */ | |
142 | ||
143 | /* 8 bit GBR relative divided by 4. FIXME: This only makes sense if | |
144 | we have some special symbol for the GBR relative area, and that | |
145 | is not implemented. */ | |
146 | HOWTO (R_SH_DIR8L, /* type */ | |
147 | 2, /* rightshift */ | |
148 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
149 | 8, /* bitsize */ | |
150 | FALSE, /* pc_relative */ | |
151 | 0, /* bitpos */ | |
152 | complain_overflow_unsigned, /* complain_on_overflow */ | |
153 | sh_elf_ignore_reloc, /* special_function */ | |
154 | "R_SH_DIR8L", /* name */ | |
155 | FALSE, /* partial_inplace */ | |
156 | 0, /* src_mask */ | |
157 | 0xff, /* dst_mask */ | |
158 | TRUE), /* pcrel_offset */ | |
159 | ||
160 | /* 8 bit PC relative divided by 2 - but specified in a very odd way. */ | |
161 | HOWTO (R_SH_LOOP_START, /* type */ | |
162 | 1, /* rightshift */ | |
163 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
164 | 8, /* bitsize */ | |
165 | FALSE, /* pc_relative */ | |
166 | 0, /* bitpos */ | |
167 | complain_overflow_signed, /* complain_on_overflow */ | |
168 | sh_elf_ignore_reloc, /* special_function */ | |
169 | "R_SH_LOOP_START", /* name */ | |
170 | TRUE, /* partial_inplace */ | |
171 | 0xff, /* src_mask */ | |
172 | 0xff, /* dst_mask */ | |
173 | TRUE), /* pcrel_offset */ | |
174 | ||
175 | /* 8 bit PC relative divided by 2 - but specified in a very odd way. */ | |
176 | HOWTO (R_SH_LOOP_END, /* type */ | |
177 | 1, /* rightshift */ | |
178 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
179 | 8, /* bitsize */ | |
180 | FALSE, /* pc_relative */ | |
181 | 0, /* bitpos */ | |
182 | complain_overflow_signed, /* complain_on_overflow */ | |
183 | sh_elf_ignore_reloc, /* special_function */ | |
184 | "R_SH_LOOP_END", /* name */ | |
185 | TRUE, /* partial_inplace */ | |
186 | 0xff, /* src_mask */ | |
187 | 0xff, /* dst_mask */ | |
188 | TRUE), /* pcrel_offset */ | |
189 | ||
190 | EMPTY_HOWTO (12), | |
191 | EMPTY_HOWTO (13), | |
192 | EMPTY_HOWTO (14), | |
193 | EMPTY_HOWTO (15), | |
194 | EMPTY_HOWTO (16), | |
195 | EMPTY_HOWTO (17), | |
196 | EMPTY_HOWTO (18), | |
197 | EMPTY_HOWTO (19), | |
198 | EMPTY_HOWTO (20), | |
199 | EMPTY_HOWTO (21), | |
200 | ||
201 | /* The remaining relocs are a GNU extension used for relaxing. The | |
202 | final pass of the linker never needs to do anything with any of | |
203 | these relocs. Any required operations are handled by the | |
204 | relaxation code. */ | |
205 | ||
206 | /* GNU extension to record C++ vtable hierarchy */ | |
207 | HOWTO (R_SH_GNU_VTINHERIT, /* type */ | |
208 | 0, /* rightshift */ | |
209 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
210 | 0, /* bitsize */ | |
211 | FALSE, /* pc_relative */ | |
212 | 0, /* bitpos */ | |
213 | complain_overflow_dont, /* complain_on_overflow */ | |
214 | NULL, /* special_function */ | |
215 | "R_SH_GNU_VTINHERIT", /* name */ | |
216 | FALSE, /* partial_inplace */ | |
217 | 0, /* src_mask */ | |
218 | 0, /* dst_mask */ | |
219 | FALSE), /* pcrel_offset */ | |
220 | ||
221 | /* GNU extension to record C++ vtable member usage */ | |
222 | HOWTO (R_SH_GNU_VTENTRY, /* type */ | |
223 | 0, /* rightshift */ | |
224 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
225 | 0, /* bitsize */ | |
226 | FALSE, /* pc_relative */ | |
227 | 0, /* bitpos */ | |
228 | complain_overflow_dont, /* complain_on_overflow */ | |
229 | _bfd_elf_rel_vtable_reloc_fn, /* special_function */ | |
230 | "R_SH_GNU_VTENTRY", /* name */ | |
231 | FALSE, /* partial_inplace */ | |
232 | 0, /* src_mask */ | |
233 | 0, /* dst_mask */ | |
234 | FALSE), /* pcrel_offset */ | |
235 | ||
236 | /* An 8 bit switch table entry. This is generated for an expression | |
237 | such as ``.word L1 - L2''. The offset holds the difference | |
238 | between the reloc address and L2. */ | |
239 | HOWTO (R_SH_SWITCH8, /* type */ | |
240 | 0, /* rightshift */ | |
241 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
242 | 8, /* bitsize */ | |
243 | FALSE, /* pc_relative */ | |
244 | 0, /* bitpos */ | |
245 | complain_overflow_unsigned, /* complain_on_overflow */ | |
246 | sh_elf_ignore_reloc, /* special_function */ | |
247 | "R_SH_SWITCH8", /* name */ | |
248 | FALSE, /* partial_inplace */ | |
249 | 0, /* src_mask */ | |
250 | 0, /* dst_mask */ | |
251 | TRUE), /* pcrel_offset */ | |
252 | ||
253 | /* A 16 bit switch table entry. This is generated for an expression | |
254 | such as ``.word L1 - L2''. The offset holds the difference | |
255 | between the reloc address and L2. */ | |
256 | HOWTO (R_SH_SWITCH16, /* type */ | |
257 | 0, /* rightshift */ | |
258 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
259 | 16, /* bitsize */ | |
260 | FALSE, /* pc_relative */ | |
261 | 0, /* bitpos */ | |
262 | complain_overflow_unsigned, /* complain_on_overflow */ | |
263 | sh_elf_ignore_reloc, /* special_function */ | |
264 | "R_SH_SWITCH16", /* name */ | |
265 | FALSE, /* partial_inplace */ | |
266 | 0, /* src_mask */ | |
267 | 0, /* dst_mask */ | |
268 | TRUE), /* pcrel_offset */ | |
269 | ||
270 | /* A 32 bit switch table entry. This is generated for an expression | |
271 | such as ``.long L1 - L2''. The offset holds the difference | |
272 | between the reloc address and L2. */ | |
273 | HOWTO (R_SH_SWITCH32, /* type */ | |
274 | 0, /* rightshift */ | |
275 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
276 | 32, /* bitsize */ | |
277 | FALSE, /* pc_relative */ | |
278 | 0, /* bitpos */ | |
279 | complain_overflow_unsigned, /* complain_on_overflow */ | |
280 | sh_elf_ignore_reloc, /* special_function */ | |
281 | "R_SH_SWITCH32", /* name */ | |
282 | FALSE, /* partial_inplace */ | |
283 | 0, /* src_mask */ | |
284 | 0, /* dst_mask */ | |
285 | TRUE), /* pcrel_offset */ | |
286 | ||
287 | /* Indicates a .uses pseudo-op. The compiler will generate .uses | |
288 | pseudo-ops when it finds a function call which can be relaxed. | |
289 | The offset field holds the PC relative offset to the instruction | |
290 | which loads the register used in the function call. */ | |
291 | HOWTO (R_SH_USES, /* type */ | |
292 | 0, /* rightshift */ | |
293 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
294 | 0, /* bitsize */ | |
295 | FALSE, /* pc_relative */ | |
296 | 0, /* bitpos */ | |
297 | complain_overflow_unsigned, /* complain_on_overflow */ | |
298 | sh_elf_ignore_reloc, /* special_function */ | |
299 | "R_SH_USES", /* name */ | |
300 | FALSE, /* partial_inplace */ | |
301 | 0, /* src_mask */ | |
302 | 0, /* dst_mask */ | |
303 | TRUE), /* pcrel_offset */ | |
304 | ||
305 | /* The assembler will generate this reloc for addresses referred to | |
306 | by the register loads associated with USES relocs. The offset | |
307 | field holds the number of times the address is referenced in the | |
308 | object file. */ | |
309 | HOWTO (R_SH_COUNT, /* type */ | |
310 | 0, /* rightshift */ | |
311 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
312 | 0, /* bitsize */ | |
313 | FALSE, /* pc_relative */ | |
314 | 0, /* bitpos */ | |
315 | complain_overflow_unsigned, /* complain_on_overflow */ | |
316 | sh_elf_ignore_reloc, /* special_function */ | |
317 | "R_SH_COUNT", /* name */ | |
318 | FALSE, /* partial_inplace */ | |
319 | 0, /* src_mask */ | |
320 | 0, /* dst_mask */ | |
321 | TRUE), /* pcrel_offset */ | |
322 | ||
323 | /* Indicates an alignment statement. The offset field is the power | |
324 | of 2 to which subsequent portions of the object file must be | |
325 | aligned. */ | |
326 | HOWTO (R_SH_ALIGN, /* type */ | |
327 | 0, /* rightshift */ | |
328 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
329 | 0, /* bitsize */ | |
330 | FALSE, /* pc_relative */ | |
331 | 0, /* bitpos */ | |
332 | complain_overflow_unsigned, /* complain_on_overflow */ | |
333 | sh_elf_ignore_reloc, /* special_function */ | |
334 | "R_SH_ALIGN", /* name */ | |
335 | FALSE, /* partial_inplace */ | |
336 | 0, /* src_mask */ | |
337 | 0, /* dst_mask */ | |
338 | TRUE), /* pcrel_offset */ | |
339 | ||
340 | /* The assembler will generate this reloc before a block of | |
341 | instructions. A section should be processed as assuming it | |
342 | contains data, unless this reloc is seen. */ | |
343 | HOWTO (R_SH_CODE, /* type */ | |
344 | 0, /* rightshift */ | |
345 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
346 | 0, /* bitsize */ | |
347 | FALSE, /* pc_relative */ | |
348 | 0, /* bitpos */ | |
349 | complain_overflow_unsigned, /* complain_on_overflow */ | |
350 | sh_elf_ignore_reloc, /* special_function */ | |
351 | "R_SH_CODE", /* name */ | |
352 | FALSE, /* partial_inplace */ | |
353 | 0, /* src_mask */ | |
354 | 0, /* dst_mask */ | |
355 | TRUE), /* pcrel_offset */ | |
356 | ||
357 | /* The assembler will generate this reloc after a block of | |
358 | instructions when it sees data that is not instructions. */ | |
359 | HOWTO (R_SH_DATA, /* type */ | |
360 | 0, /* rightshift */ | |
361 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
362 | 0, /* bitsize */ | |
363 | FALSE, /* pc_relative */ | |
364 | 0, /* bitpos */ | |
365 | complain_overflow_unsigned, /* complain_on_overflow */ | |
366 | sh_elf_ignore_reloc, /* special_function */ | |
367 | "R_SH_DATA", /* name */ | |
368 | FALSE, /* partial_inplace */ | |
369 | 0, /* src_mask */ | |
370 | 0, /* dst_mask */ | |
371 | TRUE), /* pcrel_offset */ | |
372 | ||
373 | /* The assembler generates this reloc for each label within a block | |
374 | of instructions. This permits the linker to avoid swapping | |
375 | instructions which are the targets of branches. */ | |
376 | HOWTO (R_SH_LABEL, /* type */ | |
377 | 0, /* rightshift */ | |
378 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
379 | 0, /* bitsize */ | |
380 | FALSE, /* pc_relative */ | |
381 | 0, /* bitpos */ | |
382 | complain_overflow_unsigned, /* complain_on_overflow */ | |
383 | sh_elf_ignore_reloc, /* special_function */ | |
384 | "R_SH_LABEL", /* name */ | |
385 | FALSE, /* partial_inplace */ | |
386 | 0, /* src_mask */ | |
387 | 0, /* dst_mask */ | |
388 | TRUE), /* pcrel_offset */ | |
389 | ||
390 | /* The next 12 are only supported via linking in SHC-generated objects. */ | |
391 | HOWTO (R_SH_DIR16, /* type */ | |
392 | 0, /* rightshift */ | |
393 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
394 | 16, /* bitsize */ | |
395 | FALSE, /* pc_relative */ | |
396 | 0, /* bitpos */ | |
397 | complain_overflow_dont, /* complain_on_overflow */ | |
398 | bfd_elf_generic_reloc, /* special_function */ | |
399 | "R_SH_DIR16", /* name */ | |
400 | FALSE, /* partial_inplace */ | |
401 | 0, /* src_mask */ | |
402 | 0xffff, /* dst_mask */ | |
403 | FALSE), /* pcrel_offset */ | |
404 | ||
405 | HOWTO (R_SH_DIR8, /* type */ | |
406 | 0, /* rightshift */ | |
407 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
408 | 8, /* bitsize */ | |
409 | FALSE, /* pc_relative */ | |
410 | 0, /* bitpos */ | |
411 | complain_overflow_dont, /* complain_on_overflow */ | |
412 | bfd_elf_generic_reloc, /* special_function */ | |
413 | "R_SH_DIR8", /* name */ | |
414 | FALSE, /* partial_inplace */ | |
415 | 0, /* src_mask */ | |
416 | 0xff, /* dst_mask */ | |
417 | FALSE), /* pcrel_offset */ | |
418 | ||
419 | HOWTO (R_SH_DIR8UL, /* type */ | |
420 | 2, /* rightshift */ | |
421 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
422 | 8, /* bitsize */ | |
423 | FALSE, /* pc_relative */ | |
424 | 0, /* bitpos */ | |
425 | complain_overflow_unsigned, /* complain_on_overflow */ | |
426 | bfd_elf_generic_reloc, /* special_function */ | |
427 | "R_SH_DIR8UL", /* name */ | |
428 | FALSE, /* partial_inplace */ | |
429 | 0, /* src_mask */ | |
430 | 0xff, /* dst_mask */ | |
431 | FALSE), /* pcrel_offset */ | |
432 | ||
433 | HOWTO (R_SH_DIR8UW, /* type */ | |
434 | 1, /* rightshift */ | |
435 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
436 | 8, /* bitsize */ | |
437 | FALSE, /* pc_relative */ | |
438 | 0, /* bitpos */ | |
439 | complain_overflow_unsigned, /* complain_on_overflow */ | |
440 | bfd_elf_generic_reloc, /* special_function */ | |
441 | "R_SH_DIR8UW", /* name */ | |
442 | FALSE, /* partial_inplace */ | |
443 | 0, /* src_mask */ | |
444 | 0xff, /* dst_mask */ | |
445 | FALSE), /* pcrel_offset */ | |
446 | ||
447 | HOWTO (R_SH_DIR8U, /* type */ | |
448 | 0, /* rightshift */ | |
449 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
450 | 8, /* bitsize */ | |
451 | FALSE, /* pc_relative */ | |
452 | 0, /* bitpos */ | |
453 | complain_overflow_unsigned, /* complain_on_overflow */ | |
454 | bfd_elf_generic_reloc, /* special_function */ | |
455 | "R_SH_DIR8U", /* name */ | |
456 | FALSE, /* partial_inplace */ | |
457 | 0, /* src_mask */ | |
458 | 0xff, /* dst_mask */ | |
459 | FALSE), /* pcrel_offset */ | |
460 | ||
461 | HOWTO (R_SH_DIR8SW, /* type */ | |
462 | 1, /* rightshift */ | |
463 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
464 | 8, /* bitsize */ | |
465 | FALSE, /* pc_relative */ | |
466 | 0, /* bitpos */ | |
467 | complain_overflow_signed, /* complain_on_overflow */ | |
468 | bfd_elf_generic_reloc, /* special_function */ | |
469 | "R_SH_DIR8SW", /* name */ | |
470 | FALSE, /* partial_inplace */ | |
471 | 0, /* src_mask */ | |
472 | 0xff, /* dst_mask */ | |
473 | FALSE), /* pcrel_offset */ | |
474 | ||
475 | HOWTO (R_SH_DIR8S, /* type */ | |
476 | 0, /* rightshift */ | |
477 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
478 | 8, /* bitsize */ | |
479 | FALSE, /* pc_relative */ | |
480 | 0, /* bitpos */ | |
481 | complain_overflow_signed, /* complain_on_overflow */ | |
482 | bfd_elf_generic_reloc, /* special_function */ | |
483 | "R_SH_DIR8S", /* name */ | |
484 | FALSE, /* partial_inplace */ | |
485 | 0, /* src_mask */ | |
486 | 0xff, /* dst_mask */ | |
487 | FALSE), /* pcrel_offset */ | |
488 | ||
489 | HOWTO (R_SH_DIR4UL, /* type */ | |
490 | 2, /* rightshift */ | |
491 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
492 | 4, /* bitsize */ | |
493 | FALSE, /* pc_relative */ | |
494 | 0, /* bitpos */ | |
495 | complain_overflow_unsigned, /* complain_on_overflow */ | |
496 | bfd_elf_generic_reloc, /* special_function */ | |
497 | "R_SH_DIR4UL", /* name */ | |
498 | FALSE, /* partial_inplace */ | |
499 | 0, /* src_mask */ | |
500 | 0x0f, /* dst_mask */ | |
501 | FALSE), /* pcrel_offset */ | |
502 | ||
503 | HOWTO (R_SH_DIR4UW, /* type */ | |
504 | 1, /* rightshift */ | |
505 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
506 | 4, /* bitsize */ | |
507 | FALSE, /* pc_relative */ | |
508 | 0, /* bitpos */ | |
509 | complain_overflow_unsigned, /* complain_on_overflow */ | |
510 | bfd_elf_generic_reloc, /* special_function */ | |
511 | "R_SH_DIR4UW", /* name */ | |
512 | FALSE, /* partial_inplace */ | |
513 | 0, /* src_mask */ | |
514 | 0x0f, /* dst_mask */ | |
515 | FALSE), /* pcrel_offset */ | |
516 | ||
517 | HOWTO (R_SH_DIR4U, /* type */ | |
518 | 0, /* rightshift */ | |
519 | 0, /* size (0 = byte, 1 = short, 2 = long) */ | |
520 | 4, /* bitsize */ | |
521 | FALSE, /* pc_relative */ | |
522 | 0, /* bitpos */ | |
523 | complain_overflow_unsigned, /* complain_on_overflow */ | |
524 | bfd_elf_generic_reloc, /* special_function */ | |
525 | "R_SH_DIR4U", /* name */ | |
526 | FALSE, /* partial_inplace */ | |
527 | 0, /* src_mask */ | |
528 | 0x0f, /* dst_mask */ | |
529 | FALSE), /* pcrel_offset */ | |
530 | ||
531 | HOWTO (R_SH_PSHA, /* type */ | |
532 | 0, /* rightshift */ | |
533 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
534 | 7, /* bitsize */ | |
535 | FALSE, /* pc_relative */ | |
536 | 4, /* bitpos */ | |
537 | complain_overflow_signed, /* complain_on_overflow */ | |
538 | bfd_elf_generic_reloc, /* special_function */ | |
539 | "R_SH_PSHA", /* name */ | |
540 | FALSE, /* partial_inplace */ | |
541 | 0, /* src_mask */ | |
542 | 0x0f, /* dst_mask */ | |
543 | FALSE), /* pcrel_offset */ | |
544 | ||
545 | HOWTO (R_SH_PSHL, /* type */ | |
546 | 0, /* rightshift */ | |
547 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
548 | 7, /* bitsize */ | |
549 | FALSE, /* pc_relative */ | |
550 | 4, /* bitpos */ | |
551 | complain_overflow_signed, /* complain_on_overflow */ | |
552 | bfd_elf_generic_reloc, /* special_function */ | |
553 | "R_SH_PSHL", /* name */ | |
554 | FALSE, /* partial_inplace */ | |
555 | 0, /* src_mask */ | |
556 | 0x0f, /* dst_mask */ | |
557 | FALSE), /* pcrel_offset */ | |
558 | ||
559 | #ifdef INCLUDE_SHMEDIA | |
560 | /* Used in SHLLI.L and SHLRI.L. */ | |
561 | HOWTO (R_SH_DIR5U, /* type */ | |
562 | 0, /* rightshift */ | |
563 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
564 | 5, /* bitsize */ | |
565 | FALSE, /* pc_relative */ | |
566 | 10, /* bitpos */ | |
567 | complain_overflow_unsigned, /* complain_on_overflow */ | |
568 | bfd_elf_generic_reloc, /* special_function */ | |
569 | "R_SH_DIR5U", /* name */ | |
570 | FALSE, /* partial_inplace */ | |
571 | 0, /* src_mask */ | |
572 | 0xfc00, /* dst_mask */ | |
573 | FALSE), /* pcrel_offset */ | |
574 | ||
575 | /* Used in SHARI, SHLLI et al. */ | |
576 | HOWTO (R_SH_DIR6U, /* type */ | |
577 | 0, /* rightshift */ | |
578 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
579 | 6, /* bitsize */ | |
580 | FALSE, /* pc_relative */ | |
581 | 10, /* bitpos */ | |
582 | complain_overflow_unsigned, /* complain_on_overflow */ | |
583 | bfd_elf_generic_reloc, /* special_function */ | |
584 | "R_SH_DIR6U", /* name */ | |
585 | FALSE, /* partial_inplace */ | |
586 | 0, /* src_mask */ | |
587 | 0xfc00, /* dst_mask */ | |
588 | FALSE), /* pcrel_offset */ | |
589 | ||
590 | /* Used in BxxI, LDHI.L et al. */ | |
591 | HOWTO (R_SH_DIR6S, /* type */ | |
592 | 0, /* rightshift */ | |
593 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
594 | 6, /* bitsize */ | |
595 | FALSE, /* pc_relative */ | |
596 | 10, /* bitpos */ | |
597 | complain_overflow_signed, /* complain_on_overflow */ | |
598 | bfd_elf_generic_reloc, /* special_function */ | |
599 | "R_SH_DIR6S", /* name */ | |
600 | FALSE, /* partial_inplace */ | |
601 | 0, /* src_mask */ | |
602 | 0xfc00, /* dst_mask */ | |
603 | FALSE), /* pcrel_offset */ | |
604 | ||
605 | /* Used in ADDI, ANDI et al. */ | |
606 | HOWTO (R_SH_DIR10S, /* type */ | |
607 | 0, /* rightshift */ | |
608 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
609 | 10, /* bitsize */ | |
610 | FALSE, /* pc_relative */ | |
611 | 10, /* bitpos */ | |
612 | complain_overflow_signed, /* complain_on_overflow */ | |
613 | bfd_elf_generic_reloc, /* special_function */ | |
614 | "R_SH_DIR10S", /* name */ | |
615 | FALSE, /* partial_inplace */ | |
616 | 0, /* src_mask */ | |
617 | 0xffc00, /* dst_mask */ | |
618 | FALSE), /* pcrel_offset */ | |
619 | ||
620 | /* Used in LD.UW, ST.W et al. */ | |
621 | HOWTO (R_SH_DIR10SW, /* type */ | |
622 | 1, /* rightshift */ | |
623 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
624 | 11, /* bitsize */ | |
625 | FALSE, /* pc_relative */ | |
626 | 10, /* bitpos */ | |
627 | complain_overflow_signed, /* complain_on_overflow */ | |
628 | bfd_elf_generic_reloc, /* special_function */ | |
629 | "R_SH_DIR10SW", /* name */ | |
630 | FALSE, /* partial_inplace */ | |
631 | 0, /* src_mask */ | |
632 | 0xffc00, /* dst_mask */ | |
633 | FALSE), /* pcrel_offset */ | |
634 | ||
635 | /* Used in LD.L, FLD.S et al. */ | |
636 | HOWTO (R_SH_DIR10SL, /* type */ | |
637 | 2, /* rightshift */ | |
638 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
639 | 12, /* bitsize */ | |
640 | FALSE, /* pc_relative */ | |
641 | 10, /* bitpos */ | |
642 | complain_overflow_signed, /* complain_on_overflow */ | |
643 | bfd_elf_generic_reloc, /* special_function */ | |
644 | "R_SH_DIR10SL", /* name */ | |
645 | FALSE, /* partial_inplace */ | |
646 | 0, /* src_mask */ | |
647 | 0xffc00, /* dst_mask */ | |
648 | FALSE), /* pcrel_offset */ | |
649 | ||
650 | /* Used in FLD.D, FST.P et al. */ | |
651 | HOWTO (R_SH_DIR10SQ, /* type */ | |
652 | 3, /* rightshift */ | |
653 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
654 | 13, /* bitsize */ | |
655 | FALSE, /* pc_relative */ | |
656 | 10, /* bitpos */ | |
657 | complain_overflow_signed, /* complain_on_overflow */ | |
658 | bfd_elf_generic_reloc, /* special_function */ | |
659 | "R_SH_DIR10SQ", /* name */ | |
660 | FALSE, /* partial_inplace */ | |
661 | 0, /* src_mask */ | |
662 | 0xffc00, /* dst_mask */ | |
663 | FALSE), /* pcrel_offset */ | |
664 | ||
665 | #else | |
666 | EMPTY_HOWTO (45), | |
667 | EMPTY_HOWTO (46), | |
668 | EMPTY_HOWTO (47), | |
669 | EMPTY_HOWTO (48), | |
670 | EMPTY_HOWTO (49), | |
671 | EMPTY_HOWTO (50), | |
672 | EMPTY_HOWTO (51), | |
673 | #endif | |
674 | ||
675 | EMPTY_HOWTO (52), | |
676 | ||
677 | HOWTO (R_SH_DIR16S, /* type */ | |
678 | 0, /* rightshift */ | |
679 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
680 | 16, /* bitsize */ | |
681 | FALSE, /* pc_relative */ | |
682 | 0, /* bitpos */ | |
683 | complain_overflow_signed, /* complain_on_overflow */ | |
684 | bfd_elf_generic_reloc, /* special_function */ | |
685 | "R_SH_DIR16S", /* name */ | |
686 | FALSE, /* partial_inplace */ | |
687 | 0, /* src_mask */ | |
688 | 0xffff, /* dst_mask */ | |
689 | FALSE), /* pcrel_offset */ | |
690 | ||
691 | EMPTY_HOWTO (54), | |
692 | EMPTY_HOWTO (55), | |
693 | EMPTY_HOWTO (56), | |
694 | EMPTY_HOWTO (57), | |
695 | EMPTY_HOWTO (58), | |
696 | EMPTY_HOWTO (59), | |
697 | EMPTY_HOWTO (60), | |
698 | EMPTY_HOWTO (61), | |
699 | EMPTY_HOWTO (62), | |
700 | EMPTY_HOWTO (63), | |
701 | EMPTY_HOWTO (64), | |
702 | EMPTY_HOWTO (65), | |
703 | EMPTY_HOWTO (66), | |
704 | EMPTY_HOWTO (67), | |
705 | EMPTY_HOWTO (68), | |
706 | EMPTY_HOWTO (69), | |
707 | EMPTY_HOWTO (70), | |
708 | EMPTY_HOWTO (71), | |
709 | EMPTY_HOWTO (72), | |
710 | EMPTY_HOWTO (73), | |
711 | EMPTY_HOWTO (74), | |
712 | EMPTY_HOWTO (75), | |
713 | EMPTY_HOWTO (76), | |
714 | EMPTY_HOWTO (77), | |
715 | EMPTY_HOWTO (78), | |
716 | EMPTY_HOWTO (79), | |
717 | EMPTY_HOWTO (80), | |
718 | EMPTY_HOWTO (81), | |
719 | EMPTY_HOWTO (82), | |
720 | EMPTY_HOWTO (83), | |
721 | EMPTY_HOWTO (84), | |
722 | EMPTY_HOWTO (85), | |
723 | EMPTY_HOWTO (86), | |
724 | EMPTY_HOWTO (87), | |
725 | EMPTY_HOWTO (88), | |
726 | EMPTY_HOWTO (89), | |
727 | EMPTY_HOWTO (90), | |
728 | EMPTY_HOWTO (91), | |
729 | EMPTY_HOWTO (92), | |
730 | EMPTY_HOWTO (93), | |
731 | EMPTY_HOWTO (94), | |
732 | EMPTY_HOWTO (95), | |
733 | EMPTY_HOWTO (96), | |
734 | EMPTY_HOWTO (97), | |
735 | EMPTY_HOWTO (98), | |
736 | EMPTY_HOWTO (99), | |
737 | EMPTY_HOWTO (100), | |
738 | EMPTY_HOWTO (101), | |
739 | EMPTY_HOWTO (102), | |
740 | EMPTY_HOWTO (103), | |
741 | EMPTY_HOWTO (104), | |
742 | EMPTY_HOWTO (105), | |
743 | EMPTY_HOWTO (106), | |
744 | EMPTY_HOWTO (107), | |
745 | EMPTY_HOWTO (108), | |
746 | EMPTY_HOWTO (109), | |
747 | EMPTY_HOWTO (110), | |
748 | EMPTY_HOWTO (111), | |
749 | EMPTY_HOWTO (112), | |
750 | EMPTY_HOWTO (113), | |
751 | EMPTY_HOWTO (114), | |
752 | EMPTY_HOWTO (115), | |
753 | EMPTY_HOWTO (116), | |
754 | EMPTY_HOWTO (117), | |
755 | EMPTY_HOWTO (118), | |
756 | EMPTY_HOWTO (119), | |
757 | EMPTY_HOWTO (120), | |
758 | EMPTY_HOWTO (121), | |
759 | EMPTY_HOWTO (122), | |
760 | EMPTY_HOWTO (123), | |
761 | EMPTY_HOWTO (124), | |
762 | EMPTY_HOWTO (125), | |
763 | EMPTY_HOWTO (126), | |
764 | EMPTY_HOWTO (127), | |
765 | EMPTY_HOWTO (128), | |
766 | EMPTY_HOWTO (129), | |
767 | EMPTY_HOWTO (130), | |
768 | EMPTY_HOWTO (131), | |
769 | EMPTY_HOWTO (132), | |
770 | EMPTY_HOWTO (133), | |
771 | EMPTY_HOWTO (134), | |
772 | EMPTY_HOWTO (135), | |
773 | EMPTY_HOWTO (136), | |
774 | EMPTY_HOWTO (137), | |
775 | EMPTY_HOWTO (138), | |
776 | EMPTY_HOWTO (139), | |
777 | EMPTY_HOWTO (140), | |
778 | EMPTY_HOWTO (141), | |
779 | EMPTY_HOWTO (142), | |
780 | EMPTY_HOWTO (143), | |
781 | ||
782 | HOWTO (R_SH_TLS_GD_32, /* type */ | |
783 | 0, /* rightshift */ | |
784 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
785 | 32, /* bitsize */ | |
786 | FALSE, /* pc_relative */ | |
787 | 0, /* bitpos */ | |
788 | complain_overflow_bitfield, /* complain_on_overflow */ | |
789 | bfd_elf_generic_reloc, /* */ | |
790 | "R_SH_TLS_GD_32", /* name */ | |
791 | SH_PARTIAL32, /* partial_inplace */ | |
792 | SH_SRC_MASK32, /* src_mask */ | |
793 | 0xffffffff, /* dst_mask */ | |
794 | FALSE), /* pcrel_offset */ | |
795 | ||
796 | HOWTO (R_SH_TLS_LD_32, /* type */ | |
797 | 0, /* rightshift */ | |
798 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
799 | 32, /* bitsize */ | |
800 | FALSE, /* pc_relative */ | |
801 | 0, /* bitpos */ | |
802 | complain_overflow_bitfield, /* complain_on_overflow */ | |
803 | bfd_elf_generic_reloc, /* */ | |
804 | "R_SH_TLS_LD_32", /* name */ | |
805 | SH_PARTIAL32, /* partial_inplace */ | |
806 | SH_SRC_MASK32, /* src_mask */ | |
807 | 0xffffffff, /* dst_mask */ | |
808 | FALSE), /* pcrel_offset */ | |
809 | ||
810 | HOWTO (R_SH_TLS_LDO_32, /* type */ | |
811 | 0, /* rightshift */ | |
812 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
813 | 32, /* bitsize */ | |
814 | FALSE, /* pc_relative */ | |
815 | 0, /* bitpos */ | |
816 | complain_overflow_bitfield, /* complain_on_overflow */ | |
817 | bfd_elf_generic_reloc, /* */ | |
818 | "R_SH_TLS_LDO_32", /* name */ | |
819 | SH_PARTIAL32, /* partial_inplace */ | |
820 | SH_SRC_MASK32, /* src_mask */ | |
821 | 0xffffffff, /* dst_mask */ | |
822 | FALSE), /* pcrel_offset */ | |
823 | ||
824 | HOWTO (R_SH_TLS_IE_32, /* type */ | |
825 | 0, /* rightshift */ | |
826 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
827 | 32, /* bitsize */ | |
828 | FALSE, /* pc_relative */ | |
829 | 0, /* bitpos */ | |
830 | complain_overflow_bitfield, /* complain_on_overflow */ | |
831 | bfd_elf_generic_reloc, /* */ | |
832 | "R_SH_TLS_IE_32", /* name */ | |
833 | SH_PARTIAL32, /* partial_inplace */ | |
834 | SH_SRC_MASK32, /* src_mask */ | |
835 | 0xffffffff, /* dst_mask */ | |
836 | FALSE), /* pcrel_offset */ | |
837 | ||
838 | HOWTO (R_SH_TLS_LE_32, /* type */ | |
839 | 0, /* rightshift */ | |
840 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
841 | 32, /* bitsize */ | |
842 | FALSE, /* pc_relative */ | |
843 | 0, /* bitpos */ | |
844 | complain_overflow_bitfield, /* complain_on_overflow */ | |
845 | bfd_elf_generic_reloc, /* */ | |
846 | "R_SH_TLS_LE_32", /* name */ | |
847 | SH_PARTIAL32, /* partial_inplace */ | |
848 | SH_SRC_MASK32, /* src_mask */ | |
849 | 0xffffffff, /* dst_mask */ | |
850 | FALSE), /* pcrel_offset */ | |
851 | ||
852 | HOWTO (R_SH_TLS_DTPMOD32, /* type */ | |
853 | 0, /* rightshift */ | |
854 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
855 | 32, /* bitsize */ | |
856 | FALSE, /* pc_relative */ | |
857 | 0, /* bitpos */ | |
858 | complain_overflow_bitfield, /* complain_on_overflow */ | |
859 | bfd_elf_generic_reloc, /* */ | |
860 | "R_SH_TLS_DTPMOD32", /* name */ | |
861 | SH_PARTIAL32, /* partial_inplace */ | |
862 | SH_SRC_MASK32, /* src_mask */ | |
863 | 0xffffffff, /* dst_mask */ | |
864 | FALSE), /* pcrel_offset */ | |
865 | ||
866 | HOWTO (R_SH_TLS_DTPOFF32, /* type */ | |
867 | 0, /* rightshift */ | |
868 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
869 | 32, /* bitsize */ | |
870 | FALSE, /* pc_relative */ | |
871 | 0, /* bitpos */ | |
872 | complain_overflow_bitfield, /* complain_on_overflow */ | |
873 | bfd_elf_generic_reloc, /* */ | |
874 | "R_SH_TLS_DTPOFF32", /* name */ | |
875 | SH_PARTIAL32, /* partial_inplace */ | |
876 | SH_SRC_MASK32, /* src_mask */ | |
877 | 0xffffffff, /* dst_mask */ | |
878 | FALSE), /* pcrel_offset */ | |
879 | ||
880 | HOWTO (R_SH_TLS_TPOFF32, /* type */ | |
881 | 0, /* rightshift */ | |
882 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
883 | 32, /* bitsize */ | |
884 | FALSE, /* pc_relative */ | |
885 | 0, /* bitpos */ | |
886 | complain_overflow_bitfield, /* complain_on_overflow */ | |
887 | bfd_elf_generic_reloc, /* */ | |
888 | "R_SH_TLS_TPOFF32", /* name */ | |
889 | SH_PARTIAL32, /* partial_inplace */ | |
890 | SH_SRC_MASK32, /* src_mask */ | |
891 | 0xffffffff, /* dst_mask */ | |
892 | FALSE), /* pcrel_offset */ | |
893 | ||
894 | EMPTY_HOWTO (152), | |
895 | EMPTY_HOWTO (153), | |
896 | EMPTY_HOWTO (154), | |
897 | EMPTY_HOWTO (155), | |
898 | EMPTY_HOWTO (156), | |
899 | EMPTY_HOWTO (157), | |
900 | EMPTY_HOWTO (158), | |
901 | EMPTY_HOWTO (159), | |
902 | ||
903 | HOWTO (R_SH_GOT32, /* type */ | |
904 | 0, /* rightshift */ | |
905 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
906 | 32, /* bitsize */ | |
907 | FALSE, /* pc_relative */ | |
908 | 0, /* bitpos */ | |
909 | complain_overflow_bitfield, /* complain_on_overflow */ | |
910 | bfd_elf_generic_reloc, /* */ | |
911 | "R_SH_GOT32", /* name */ | |
912 | SH_PARTIAL32, /* partial_inplace */ | |
913 | SH_SRC_MASK32, /* src_mask */ | |
914 | 0xffffffff, /* dst_mask */ | |
915 | FALSE), /* pcrel_offset */ | |
916 | ||
917 | HOWTO (R_SH_PLT32, /* type */ | |
918 | 0, /* rightshift */ | |
919 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
920 | 32, /* bitsize */ | |
921 | TRUE, /* pc_relative */ | |
922 | 0, /* bitpos */ | |
923 | complain_overflow_bitfield, /* complain_on_overflow */ | |
924 | bfd_elf_generic_reloc, /* */ | |
925 | "R_SH_PLT32", /* name */ | |
926 | SH_PARTIAL32, /* partial_inplace */ | |
927 | SH_SRC_MASK32, /* src_mask */ | |
928 | 0xffffffff, /* dst_mask */ | |
929 | TRUE), /* pcrel_offset */ | |
930 | ||
931 | HOWTO (R_SH_COPY, /* type */ | |
932 | 0, /* rightshift */ | |
933 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
934 | 32, /* bitsize */ | |
935 | FALSE, /* pc_relative */ | |
936 | 0, /* bitpos */ | |
937 | complain_overflow_bitfield, /* complain_on_overflow */ | |
938 | bfd_elf_generic_reloc, /* */ | |
939 | "R_SH_COPY", /* name */ | |
940 | SH_PARTIAL32, /* partial_inplace */ | |
941 | SH_SRC_MASK32, /* src_mask */ | |
942 | 0xffffffff, /* dst_mask */ | |
943 | FALSE), /* pcrel_offset */ | |
944 | ||
945 | HOWTO (R_SH_GLOB_DAT, /* type */ | |
946 | 0, /* rightshift */ | |
947 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
948 | 32, /* bitsize */ | |
949 | FALSE, /* pc_relative */ | |
950 | 0, /* bitpos */ | |
951 | complain_overflow_bitfield, /* complain_on_overflow */ | |
952 | bfd_elf_generic_reloc, /* */ | |
953 | "R_SH_GLOB_DAT", /* name */ | |
954 | SH_PARTIAL32, /* partial_inplace */ | |
955 | SH_SRC_MASK32, /* src_mask */ | |
956 | 0xffffffff, /* dst_mask */ | |
957 | FALSE), /* pcrel_offset */ | |
958 | ||
959 | HOWTO (R_SH_JMP_SLOT, /* type */ | |
960 | 0, /* rightshift */ | |
961 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
962 | 32, /* bitsize */ | |
963 | FALSE, /* pc_relative */ | |
964 | 0, /* bitpos */ | |
965 | complain_overflow_bitfield, /* complain_on_overflow */ | |
966 | bfd_elf_generic_reloc, /* */ | |
967 | "R_SH_JMP_SLOT", /* name */ | |
968 | SH_PARTIAL32, /* partial_inplace */ | |
969 | SH_SRC_MASK32, /* src_mask */ | |
970 | 0xffffffff, /* dst_mask */ | |
971 | FALSE), /* pcrel_offset */ | |
972 | ||
973 | HOWTO (R_SH_RELATIVE, /* type */ | |
974 | 0, /* rightshift */ | |
975 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
976 | 32, /* bitsize */ | |
977 | FALSE, /* pc_relative */ | |
978 | 0, /* bitpos */ | |
979 | complain_overflow_bitfield, /* complain_on_overflow */ | |
980 | bfd_elf_generic_reloc, /* */ | |
981 | "R_SH_RELATIVE", /* name */ | |
982 | SH_PARTIAL32, /* partial_inplace */ | |
983 | SH_SRC_MASK32, /* src_mask */ | |
984 | 0xffffffff, /* dst_mask */ | |
985 | FALSE), /* pcrel_offset */ | |
986 | ||
987 | HOWTO (R_SH_GOTOFF, /* type */ | |
988 | 0, /* rightshift */ | |
989 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
990 | 32, /* bitsize */ | |
991 | FALSE, /* pc_relative */ | |
992 | 0, /* bitpos */ | |
993 | complain_overflow_bitfield, /* complain_on_overflow */ | |
994 | bfd_elf_generic_reloc, /* */ | |
995 | "R_SH_GOTOFF", /* name */ | |
996 | SH_PARTIAL32, /* partial_inplace */ | |
997 | SH_SRC_MASK32, /* src_mask */ | |
998 | 0xffffffff, /* dst_mask */ | |
999 | FALSE), /* pcrel_offset */ | |
1000 | ||
1001 | HOWTO (R_SH_GOTPC, /* type */ | |
1002 | 0, /* rightshift */ | |
1003 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1004 | 32, /* bitsize */ | |
1005 | TRUE, /* pc_relative */ | |
1006 | 0, /* bitpos */ | |
1007 | complain_overflow_bitfield, /* complain_on_overflow */ | |
1008 | bfd_elf_generic_reloc, /* */ | |
1009 | "R_SH_GOTPC", /* name */ | |
1010 | SH_PARTIAL32, /* partial_inplace */ | |
1011 | SH_SRC_MASK32, /* src_mask */ | |
1012 | 0xffffffff, /* dst_mask */ | |
1013 | TRUE), /* pcrel_offset */ | |
1014 | ||
1015 | HOWTO (R_SH_GOTPLT32, /* type */ | |
1016 | 0, /* rightshift */ | |
1017 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1018 | 32, /* bitsize */ | |
1019 | FALSE, /* pc_relative */ | |
1020 | 0, /* bitpos */ | |
1021 | complain_overflow_bitfield, /* complain_on_overflow */ | |
1022 | bfd_elf_generic_reloc, /* */ | |
1023 | "R_SH_GOTPLT32", /* name */ | |
1024 | FALSE, /* partial_inplace */ | |
1025 | /* ??? Why not 0? */ | |
1026 | SH_SRC_MASK32, /* src_mask */ | |
1027 | 0xffffffff, /* dst_mask */ | |
1028 | FALSE), /* pcrel_offset */ | |
1029 | ||
1030 | #ifdef INCLUDE_SHMEDIA | |
1031 | /* Used in MOVI and SHORI (x & 65536). */ | |
1032 | HOWTO (R_SH_GOT_LOW16, /* type */ | |
1033 | 0, /* rightshift */ | |
1034 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1035 | 64, /* bitsize */ | |
1036 | FALSE, /* pc_relative */ | |
1037 | 10, /* bitpos */ | |
1038 | complain_overflow_dont, /* complain_on_overflow */ | |
1039 | bfd_elf_generic_reloc, /* special_function */ | |
1040 | "R_SH_GOT_LOW16", /* name */ | |
1041 | FALSE, /* partial_inplace */ | |
1042 | 0, /* src_mask */ | |
1043 | 0x3fffc00, /* dst_mask */ | |
1044 | FALSE), /* pcrel_offset */ | |
1045 | ||
1046 | /* Used in MOVI and SHORI ((x >> 16) & 65536). */ | |
1047 | HOWTO (R_SH_GOT_MEDLOW16, /* type */ | |
1048 | 16, /* rightshift */ | |
1049 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1050 | 64, /* bitsize */ | |
1051 | FALSE, /* pc_relative */ | |
1052 | 10, /* bitpos */ | |
1053 | complain_overflow_dont, /* complain_on_overflow */ | |
1054 | bfd_elf_generic_reloc, /* special_function */ | |
1055 | "R_SH_GOT_MEDLOW16", /* name */ | |
1056 | FALSE, /* partial_inplace */ | |
1057 | 0, /* src_mask */ | |
1058 | 0x3fffc00, /* dst_mask */ | |
1059 | FALSE), /* pcrel_offset */ | |
1060 | ||
1061 | /* Used in MOVI and SHORI ((x >> 32) & 65536). */ | |
1062 | HOWTO (R_SH_GOT_MEDHI16, /* type */ | |
1063 | 32, /* rightshift */ | |
1064 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1065 | 64, /* bitsize */ | |
1066 | FALSE, /* pc_relative */ | |
1067 | 10, /* bitpos */ | |
1068 | complain_overflow_dont, /* complain_on_overflow */ | |
1069 | bfd_elf_generic_reloc, /* special_function */ | |
1070 | "R_SH_GOT_MEDHI16", /* name */ | |
1071 | FALSE, /* partial_inplace */ | |
1072 | 0, /* src_mask */ | |
1073 | 0x3fffc00, /* dst_mask */ | |
1074 | FALSE), /* pcrel_offset */ | |
1075 | ||
1076 | /* Used in MOVI and SHORI ((x >> 48) & 65536). */ | |
1077 | HOWTO (R_SH_GOT_HI16, /* type */ | |
1078 | 48, /* rightshift */ | |
1079 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1080 | 64, /* bitsize */ | |
1081 | FALSE, /* pc_relative */ | |
1082 | 10, /* bitpos */ | |
1083 | complain_overflow_dont, /* complain_on_overflow */ | |
1084 | bfd_elf_generic_reloc, /* special_function */ | |
1085 | "R_SH_GOT_HI16", /* name */ | |
1086 | FALSE, /* partial_inplace */ | |
1087 | 0, /* src_mask */ | |
1088 | 0x3fffc00, /* dst_mask */ | |
1089 | FALSE), /* pcrel_offset */ | |
1090 | ||
1091 | /* Used in MOVI and SHORI (x & 65536). */ | |
1092 | HOWTO (R_SH_GOTPLT_LOW16, /* type */ | |
1093 | 0, /* rightshift */ | |
1094 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1095 | 64, /* bitsize */ | |
1096 | FALSE, /* pc_relative */ | |
1097 | 10, /* bitpos */ | |
1098 | complain_overflow_dont, /* complain_on_overflow */ | |
1099 | bfd_elf_generic_reloc, /* special_function */ | |
1100 | "R_SH_GOTPLT_LOW16", /* name */ | |
1101 | FALSE, /* partial_inplace */ | |
1102 | 0, /* src_mask */ | |
1103 | 0x3fffc00, /* dst_mask */ | |
1104 | FALSE), /* pcrel_offset */ | |
1105 | ||
1106 | /* Used in MOVI and SHORI ((x >> 16) & 65536). */ | |
1107 | HOWTO (R_SH_GOTPLT_MEDLOW16, /* type */ | |
1108 | 16, /* rightshift */ | |
1109 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1110 | 64, /* bitsize */ | |
1111 | FALSE, /* pc_relative */ | |
1112 | 10, /* bitpos */ | |
1113 | complain_overflow_dont, /* complain_on_overflow */ | |
1114 | bfd_elf_generic_reloc, /* special_function */ | |
1115 | "R_SH_GOTPLT_MEDLOW16", /* name */ | |
1116 | FALSE, /* partial_inplace */ | |
1117 | 0, /* src_mask */ | |
1118 | 0x3fffc00, /* dst_mask */ | |
1119 | FALSE), /* pcrel_offset */ | |
1120 | ||
1121 | /* Used in MOVI and SHORI ((x >> 32) & 65536). */ | |
1122 | HOWTO (R_SH_GOTPLT_MEDHI16, /* type */ | |
1123 | 32, /* rightshift */ | |
1124 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1125 | 64, /* bitsize */ | |
1126 | FALSE, /* pc_relative */ | |
1127 | 10, /* bitpos */ | |
1128 | complain_overflow_dont, /* complain_on_overflow */ | |
1129 | bfd_elf_generic_reloc, /* special_function */ | |
1130 | "R_SH_GOTPLT_MEDHI16", /* name */ | |
1131 | FALSE, /* partial_inplace */ | |
1132 | 0, /* src_mask */ | |
1133 | 0x3fffc00, /* dst_mask */ | |
1134 | FALSE), /* pcrel_offset */ | |
1135 | ||
1136 | /* Used in MOVI and SHORI ((x >> 48) & 65536). */ | |
1137 | HOWTO (R_SH_GOTPLT_HI16, /* type */ | |
1138 | 48, /* rightshift */ | |
1139 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1140 | 64, /* bitsize */ | |
1141 | FALSE, /* pc_relative */ | |
1142 | 10, /* bitpos */ | |
1143 | complain_overflow_dont, /* complain_on_overflow */ | |
1144 | bfd_elf_generic_reloc, /* special_function */ | |
1145 | "R_SH_GOTPLT_HI16", /* name */ | |
1146 | FALSE, /* partial_inplace */ | |
1147 | 0, /* src_mask */ | |
1148 | 0x3fffc00, /* dst_mask */ | |
1149 | FALSE), /* pcrel_offset */ | |
1150 | ||
1151 | /* Used in MOVI and SHORI (x & 65536). */ | |
1152 | HOWTO (R_SH_PLT_LOW16, /* type */ | |
1153 | 0, /* rightshift */ | |
1154 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1155 | 64, /* bitsize */ | |
1156 | TRUE, /* pc_relative */ | |
1157 | 10, /* bitpos */ | |
1158 | complain_overflow_dont, /* complain_on_overflow */ | |
1159 | bfd_elf_generic_reloc, /* special_function */ | |
1160 | "R_SH_PLT_LOW16", /* name */ | |
1161 | FALSE, /* partial_inplace */ | |
1162 | 0, /* src_mask */ | |
1163 | 0x3fffc00, /* dst_mask */ | |
1164 | TRUE), /* pcrel_offset */ | |
1165 | ||
1166 | /* Used in MOVI and SHORI ((x >> 16) & 65536). */ | |
1167 | HOWTO (R_SH_PLT_MEDLOW16, /* type */ | |
1168 | 16, /* rightshift */ | |
1169 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1170 | 64, /* bitsize */ | |
1171 | TRUE, /* pc_relative */ | |
1172 | 10, /* bitpos */ | |
1173 | complain_overflow_dont, /* complain_on_overflow */ | |
1174 | bfd_elf_generic_reloc, /* special_function */ | |
1175 | "R_SH_PLT_MEDLOW16", /* name */ | |
1176 | FALSE, /* partial_inplace */ | |
1177 | 0, /* src_mask */ | |
1178 | 0x3fffc00, /* dst_mask */ | |
1179 | TRUE), /* pcrel_offset */ | |
1180 | ||
1181 | /* Used in MOVI and SHORI ((x >> 32) & 65536). */ | |
1182 | HOWTO (R_SH_PLT_MEDHI16, /* type */ | |
1183 | 32, /* rightshift */ | |
1184 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1185 | 64, /* bitsize */ | |
1186 | TRUE, /* pc_relative */ | |
1187 | 10, /* bitpos */ | |
1188 | complain_overflow_dont, /* complain_on_overflow */ | |
1189 | bfd_elf_generic_reloc, /* special_function */ | |
1190 | "R_SH_PLT_MEDHI16", /* name */ | |
1191 | FALSE, /* partial_inplace */ | |
1192 | 0, /* src_mask */ | |
1193 | 0x3fffc00, /* dst_mask */ | |
1194 | TRUE), /* pcrel_offset */ | |
1195 | ||
1196 | /* Used in MOVI and SHORI ((x >> 48) & 65536). */ | |
1197 | HOWTO (R_SH_PLT_HI16, /* type */ | |
1198 | 48, /* rightshift */ | |
1199 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1200 | 64, /* bitsize */ | |
1201 | TRUE, /* pc_relative */ | |
1202 | 10, /* bitpos */ | |
1203 | complain_overflow_dont, /* complain_on_overflow */ | |
1204 | bfd_elf_generic_reloc, /* special_function */ | |
1205 | "R_SH_PLT_HI16", /* name */ | |
1206 | FALSE, /* partial_inplace */ | |
1207 | 0, /* src_mask */ | |
1208 | 0x3fffc00, /* dst_mask */ | |
1209 | TRUE), /* pcrel_offset */ | |
1210 | ||
1211 | /* Used in MOVI and SHORI (x & 65536). */ | |
1212 | HOWTO (R_SH_GOTOFF_LOW16, /* type */ | |
1213 | 0, /* rightshift */ | |
1214 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1215 | 64, /* bitsize */ | |
1216 | FALSE, /* pc_relative */ | |
1217 | 10, /* bitpos */ | |
1218 | complain_overflow_dont, /* complain_on_overflow */ | |
1219 | bfd_elf_generic_reloc, /* special_function */ | |
1220 | "R_SH_GOTOFF_LOW16", /* name */ | |
1221 | FALSE, /* partial_inplace */ | |
1222 | 0, /* src_mask */ | |
1223 | 0x3fffc00, /* dst_mask */ | |
1224 | FALSE), /* pcrel_offset */ | |
1225 | ||
1226 | /* Used in MOVI and SHORI ((x >> 16) & 65536). */ | |
1227 | HOWTO (R_SH_GOTOFF_MEDLOW16, /* type */ | |
1228 | 16, /* rightshift */ | |
1229 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1230 | 64, /* bitsize */ | |
1231 | FALSE, /* pc_relative */ | |
1232 | 10, /* bitpos */ | |
1233 | complain_overflow_dont, /* complain_on_overflow */ | |
1234 | bfd_elf_generic_reloc, /* special_function */ | |
1235 | "R_SH_GOTOFF_MEDLOW16", /* name */ | |
1236 | FALSE, /* partial_inplace */ | |
1237 | 0, /* src_mask */ | |
1238 | 0x3fffc00, /* dst_mask */ | |
1239 | FALSE), /* pcrel_offset */ | |
1240 | ||
1241 | /* Used in MOVI and SHORI ((x >> 32) & 65536). */ | |
1242 | HOWTO (R_SH_GOTOFF_MEDHI16, /* type */ | |
1243 | 32, /* rightshift */ | |
1244 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1245 | 64, /* bitsize */ | |
1246 | FALSE, /* pc_relative */ | |
1247 | 10, /* bitpos */ | |
1248 | complain_overflow_dont, /* complain_on_overflow */ | |
1249 | bfd_elf_generic_reloc, /* special_function */ | |
1250 | "R_SH_GOTOFF_MEDHI16", /* name */ | |
1251 | FALSE, /* partial_inplace */ | |
1252 | 0, /* src_mask */ | |
1253 | 0x3fffc00, /* dst_mask */ | |
1254 | FALSE), /* pcrel_offset */ | |
1255 | ||
1256 | /* Used in MOVI and SHORI ((x >> 48) & 65536). */ | |
1257 | HOWTO (R_SH_GOTOFF_HI16, /* type */ | |
1258 | 48, /* rightshift */ | |
1259 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1260 | 64, /* bitsize */ | |
1261 | FALSE, /* pc_relative */ | |
1262 | 10, /* bitpos */ | |
1263 | complain_overflow_dont, /* complain_on_overflow */ | |
1264 | bfd_elf_generic_reloc, /* special_function */ | |
1265 | "R_SH_GOTOFF_HI16", /* name */ | |
1266 | FALSE, /* partial_inplace */ | |
1267 | 0, /* src_mask */ | |
1268 | 0x3fffc00, /* dst_mask */ | |
1269 | FALSE), /* pcrel_offset */ | |
1270 | ||
1271 | /* Used in MOVI and SHORI (x & 65536). */ | |
1272 | HOWTO (R_SH_GOTPC_LOW16, /* type */ | |
1273 | 0, /* rightshift */ | |
1274 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1275 | 64, /* bitsize */ | |
1276 | TRUE, /* pc_relative */ | |
1277 | 10, /* bitpos */ | |
1278 | complain_overflow_dont, /* complain_on_overflow */ | |
1279 | bfd_elf_generic_reloc, /* special_function */ | |
1280 | "R_SH_GOTPC_LOW16", /* name */ | |
1281 | FALSE, /* partial_inplace */ | |
1282 | 0, /* src_mask */ | |
1283 | 0x3fffc00, /* dst_mask */ | |
1284 | TRUE), /* pcrel_offset */ | |
1285 | ||
1286 | /* Used in MOVI and SHORI ((x >> 16) & 65536). */ | |
1287 | HOWTO (R_SH_GOTPC_MEDLOW16, /* type */ | |
1288 | 16, /* rightshift */ | |
1289 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1290 | 64, /* bitsize */ | |
1291 | TRUE, /* pc_relative */ | |
1292 | 10, /* bitpos */ | |
1293 | complain_overflow_dont, /* complain_on_overflow */ | |
1294 | bfd_elf_generic_reloc, /* special_function */ | |
1295 | "R_SH_GOTPC_MEDLOW16", /* name */ | |
1296 | FALSE, /* partial_inplace */ | |
1297 | 0, /* src_mask */ | |
1298 | 0x3fffc00, /* dst_mask */ | |
1299 | TRUE), /* pcrel_offset */ | |
1300 | ||
1301 | /* Used in MOVI and SHORI ((x >> 32) & 65536). */ | |
1302 | HOWTO (R_SH_GOTPC_MEDHI16, /* type */ | |
1303 | 32, /* rightshift */ | |
1304 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1305 | 64, /* bitsize */ | |
1306 | TRUE, /* pc_relative */ | |
1307 | 10, /* bitpos */ | |
1308 | complain_overflow_dont, /* complain_on_overflow */ | |
1309 | bfd_elf_generic_reloc, /* special_function */ | |
1310 | "R_SH_GOTPC_MEDHI16", /* name */ | |
1311 | FALSE, /* partial_inplace */ | |
1312 | 0, /* src_mask */ | |
1313 | 0x3fffc00, /* dst_mask */ | |
1314 | TRUE), /* pcrel_offset */ | |
1315 | ||
1316 | /* Used in MOVI and SHORI ((x >> 48) & 65536). */ | |
1317 | HOWTO (R_SH_GOTPC_HI16, /* type */ | |
1318 | 48, /* rightshift */ | |
1319 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1320 | 64, /* bitsize */ | |
1321 | TRUE, /* pc_relative */ | |
1322 | 10, /* bitpos */ | |
1323 | complain_overflow_dont, /* complain_on_overflow */ | |
1324 | bfd_elf_generic_reloc, /* special_function */ | |
1325 | "R_SH_GOTPC_HI16", /* name */ | |
1326 | FALSE, /* partial_inplace */ | |
1327 | 0, /* src_mask */ | |
1328 | 0x3fffc00, /* dst_mask */ | |
1329 | TRUE), /* pcrel_offset */ | |
1330 | ||
1331 | /* Used in LD.L, FLD.S et al. */ | |
1332 | HOWTO (R_SH_GOT10BY4, /* type */ | |
1333 | 2, /* rightshift */ | |
1334 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1335 | 12, /* bitsize */ | |
1336 | FALSE, /* pc_relative */ | |
1337 | 10, /* bitpos */ | |
1338 | complain_overflow_signed, /* complain_on_overflow */ | |
1339 | bfd_elf_generic_reloc, /* special_function */ | |
1340 | "R_SH_GOT10BY4", /* name */ | |
1341 | FALSE, /* partial_inplace */ | |
1342 | 0, /* src_mask */ | |
1343 | 0xffc00, /* dst_mask */ | |
1344 | FALSE), /* pcrel_offset */ | |
1345 | ||
1346 | /* Used in LD.L, FLD.S et al. */ | |
1347 | HOWTO (R_SH_GOTPLT10BY4, /* type */ | |
1348 | 2, /* rightshift */ | |
1349 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1350 | 12, /* bitsize */ | |
1351 | FALSE, /* pc_relative */ | |
1352 | 10, /* bitpos */ | |
1353 | complain_overflow_signed, /* complain_on_overflow */ | |
1354 | bfd_elf_generic_reloc, /* special_function */ | |
1355 | "R_SH_GOTPLT10BY4", /* name */ | |
1356 | FALSE, /* partial_inplace */ | |
1357 | 0, /* src_mask */ | |
1358 | 0xffc00, /* dst_mask */ | |
1359 | FALSE), /* pcrel_offset */ | |
1360 | ||
1361 | /* Used in FLD.D, FST.P et al. */ | |
1362 | HOWTO (R_SH_GOT10BY8, /* type */ | |
1363 | 3, /* rightshift */ | |
1364 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1365 | 13, /* bitsize */ | |
1366 | FALSE, /* pc_relative */ | |
1367 | 10, /* bitpos */ | |
1368 | complain_overflow_signed, /* complain_on_overflow */ | |
1369 | bfd_elf_generic_reloc, /* special_function */ | |
1370 | "R_SH_GOT10BY8", /* name */ | |
1371 | FALSE, /* partial_inplace */ | |
1372 | 0, /* src_mask */ | |
1373 | 0xffc00, /* dst_mask */ | |
1374 | FALSE), /* pcrel_offset */ | |
1375 | ||
1376 | /* Used in FLD.D, FST.P et al. */ | |
1377 | HOWTO (R_SH_GOTPLT10BY8, /* type */ | |
1378 | 3, /* rightshift */ | |
1379 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1380 | 13, /* bitsize */ | |
1381 | FALSE, /* pc_relative */ | |
1382 | 10, /* bitpos */ | |
1383 | complain_overflow_signed, /* complain_on_overflow */ | |
1384 | bfd_elf_generic_reloc, /* special_function */ | |
1385 | "R_SH_GOTPLT10BY8", /* name */ | |
1386 | FALSE, /* partial_inplace */ | |
1387 | 0, /* src_mask */ | |
1388 | 0xffc00, /* dst_mask */ | |
1389 | FALSE), /* pcrel_offset */ | |
1390 | ||
1391 | HOWTO (R_SH_COPY64, /* type */ | |
1392 | 0, /* rightshift */ | |
1393 | 4, /* size (0 = byte, 1 = short, 2 = long) */ | |
1394 | 64, /* bitsize */ | |
1395 | FALSE, /* pc_relative */ | |
1396 | 0, /* bitpos */ | |
1397 | complain_overflow_dont, /* complain_on_overflow */ | |
1398 | bfd_elf_generic_reloc, /* special_function */ | |
1399 | "R_SH_COPY64", /* name */ | |
1400 | FALSE, /* partial_inplace */ | |
1401 | 0, /* src_mask */ | |
1402 | ((bfd_vma) 0) - 1, /* dst_mask */ | |
1403 | FALSE), /* pcrel_offset */ | |
1404 | ||
1405 | HOWTO (R_SH_GLOB_DAT64, /* type */ | |
1406 | 0, /* rightshift */ | |
1407 | 4, /* size (0 = byte, 1 = short, 2 = long) */ | |
1408 | 64, /* bitsize */ | |
1409 | FALSE, /* pc_relative */ | |
1410 | 0, /* bitpos */ | |
1411 | complain_overflow_dont, /* complain_on_overflow */ | |
1412 | bfd_elf_generic_reloc, /* special_function */ | |
1413 | "R_SH_GLOB_DAT64", /* name */ | |
1414 | FALSE, /* partial_inplace */ | |
1415 | 0, /* src_mask */ | |
1416 | ((bfd_vma) 0) - 1, /* dst_mask */ | |
1417 | FALSE), /* pcrel_offset */ | |
1418 | ||
1419 | HOWTO (R_SH_JMP_SLOT64, /* type */ | |
1420 | 0, /* rightshift */ | |
1421 | 4, /* size (0 = byte, 1 = short, 2 = long) */ | |
1422 | 64, /* bitsize */ | |
1423 | FALSE, /* pc_relative */ | |
1424 | 0, /* bitpos */ | |
1425 | complain_overflow_dont, /* complain_on_overflow */ | |
1426 | bfd_elf_generic_reloc, /* special_function */ | |
1427 | "R_SH_JMP_SLOT64", /* name */ | |
1428 | FALSE, /* partial_inplace */ | |
1429 | 0, /* src_mask */ | |
1430 | ((bfd_vma) 0) - 1, /* dst_mask */ | |
1431 | FALSE), /* pcrel_offset */ | |
1432 | ||
1433 | HOWTO (R_SH_RELATIVE64, /* type */ | |
1434 | 0, /* rightshift */ | |
1435 | 4, /* size (0 = byte, 1 = short, 2 = long) */ | |
1436 | 64, /* bitsize */ | |
1437 | FALSE, /* pc_relative */ | |
1438 | 0, /* bitpos */ | |
1439 | complain_overflow_dont, /* complain_on_overflow */ | |
1440 | bfd_elf_generic_reloc, /* special_function */ | |
1441 | "R_SH_RELATIVE64", /* name */ | |
1442 | FALSE, /* partial_inplace */ | |
1443 | 0, /* src_mask */ | |
1444 | ((bfd_vma) 0) - 1, /* dst_mask */ | |
1445 | FALSE), /* pcrel_offset */ | |
1446 | ||
1447 | EMPTY_HOWTO (197), | |
1448 | EMPTY_HOWTO (198), | |
1449 | EMPTY_HOWTO (199), | |
1450 | EMPTY_HOWTO (200), | |
1451 | EMPTY_HOWTO (201), | |
1452 | EMPTY_HOWTO (202), | |
1453 | EMPTY_HOWTO (203), | |
1454 | EMPTY_HOWTO (204), | |
1455 | EMPTY_HOWTO (205), | |
1456 | EMPTY_HOWTO (206), | |
1457 | EMPTY_HOWTO (207), | |
1458 | EMPTY_HOWTO (208), | |
1459 | EMPTY_HOWTO (209), | |
1460 | EMPTY_HOWTO (210), | |
1461 | EMPTY_HOWTO (211), | |
1462 | EMPTY_HOWTO (212), | |
1463 | EMPTY_HOWTO (213), | |
1464 | EMPTY_HOWTO (214), | |
1465 | EMPTY_HOWTO (215), | |
1466 | EMPTY_HOWTO (216), | |
1467 | EMPTY_HOWTO (217), | |
1468 | EMPTY_HOWTO (218), | |
1469 | EMPTY_HOWTO (219), | |
1470 | EMPTY_HOWTO (220), | |
1471 | EMPTY_HOWTO (221), | |
1472 | EMPTY_HOWTO (222), | |
1473 | EMPTY_HOWTO (223), | |
1474 | EMPTY_HOWTO (224), | |
1475 | EMPTY_HOWTO (225), | |
1476 | EMPTY_HOWTO (226), | |
1477 | EMPTY_HOWTO (227), | |
1478 | EMPTY_HOWTO (228), | |
1479 | EMPTY_HOWTO (229), | |
1480 | EMPTY_HOWTO (230), | |
1481 | EMPTY_HOWTO (231), | |
1482 | EMPTY_HOWTO (232), | |
1483 | EMPTY_HOWTO (233), | |
1484 | EMPTY_HOWTO (234), | |
1485 | EMPTY_HOWTO (235), | |
1486 | EMPTY_HOWTO (236), | |
1487 | EMPTY_HOWTO (237), | |
1488 | EMPTY_HOWTO (238), | |
1489 | EMPTY_HOWTO (239), | |
1490 | EMPTY_HOWTO (240), | |
1491 | EMPTY_HOWTO (241), | |
1492 | ||
1493 | /* Relocations for SHmedia code. None of these are partial_inplace or | |
1494 | use the field being relocated (except R_SH_PT_16). */ | |
1495 | ||
1496 | /* The assembler will generate this reloc before a block of SHmedia | |
1497 | instructions. A section should be processed as assuming it contains | |
1498 | data, unless this reloc is seen. Note that a block of SHcompact | |
1499 | instructions are instead preceded by R_SH_CODE. | |
1500 | This is currently not implemented, but should be used for SHmedia | |
1501 | linker relaxation. */ | |
1502 | HOWTO (R_SH_SHMEDIA_CODE, /* type */ | |
1503 | 0, /* rightshift */ | |
1504 | 1, /* size (0 = byte, 1 = short, 2 = long) */ | |
1505 | 0, /* bitsize */ | |
1506 | FALSE, /* pc_relative */ | |
1507 | 0, /* bitpos */ | |
1508 | complain_overflow_unsigned, /* complain_on_overflow */ | |
1509 | sh_elf_ignore_reloc, /* special_function */ | |
1510 | "R_SH_SHMEDIA_CODE", /* name */ | |
1511 | FALSE, /* partial_inplace */ | |
1512 | 0, /* src_mask */ | |
1513 | 0, /* dst_mask */ | |
1514 | FALSE), /* pcrel_offset */ | |
1515 | ||
1516 | /* The assembler will generate this reloc at a PTA or PTB instruction, | |
1517 | and the linker checks the right type of target, or changes a PTA to a | |
1518 | PTB, if the original insn was PT. */ | |
1519 | HOWTO (R_SH_PT_16, /* type */ | |
1520 | 2, /* rightshift */ | |
1521 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1522 | 18, /* bitsize */ | |
1523 | TRUE, /* pc_relative */ | |
1524 | 10, /* bitpos */ | |
1525 | complain_overflow_signed, /* complain_on_overflow */ | |
1526 | bfd_elf_generic_reloc, /* special_function */ | |
1527 | "R_SH_PT_16", /* name */ | |
1528 | FALSE, /* partial_inplace */ | |
1529 | 0, /* src_mask */ | |
1530 | 0x3fffc00, /* dst_mask */ | |
1531 | TRUE), /* pcrel_offset */ | |
1532 | ||
1533 | /* Used in unexpanded MOVI. */ | |
1534 | HOWTO (R_SH_IMMS16, /* type */ | |
1535 | 0, /* rightshift */ | |
1536 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1537 | 16, /* bitsize */ | |
1538 | FALSE, /* pc_relative */ | |
1539 | 10, /* bitpos */ | |
1540 | complain_overflow_signed, /* complain_on_overflow */ | |
1541 | bfd_elf_generic_reloc, /* special_function */ | |
1542 | "R_SH_IMMS16", /* name */ | |
1543 | FALSE, /* partial_inplace */ | |
1544 | 0, /* src_mask */ | |
1545 | 0x3fffc00, /* dst_mask */ | |
1546 | FALSE), /* pcrel_offset */ | |
1547 | ||
1548 | /* Used in SHORI. */ | |
1549 | HOWTO (R_SH_IMMU16, /* type */ | |
1550 | 0, /* rightshift */ | |
1551 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1552 | 16, /* bitsize */ | |
1553 | FALSE, /* pc_relative */ | |
1554 | 10, /* bitpos */ | |
1555 | complain_overflow_unsigned, /* complain_on_overflow */ | |
1556 | bfd_elf_generic_reloc, /* special_function */ | |
1557 | "R_SH_IMMU16", /* name */ | |
1558 | FALSE, /* partial_inplace */ | |
1559 | 0, /* src_mask */ | |
1560 | 0x3fffc00, /* dst_mask */ | |
1561 | FALSE), /* pcrel_offset */ | |
1562 | ||
1563 | /* Used in MOVI and SHORI (x & 65536). */ | |
1564 | HOWTO (R_SH_IMM_LOW16, /* type */ | |
1565 | 0, /* rightshift */ | |
1566 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1567 | 64, /* bitsize */ | |
1568 | FALSE, /* pc_relative */ | |
1569 | 10, /* bitpos */ | |
1570 | complain_overflow_dont, /* complain_on_overflow */ | |
1571 | bfd_elf_generic_reloc, /* special_function */ | |
1572 | "R_SH_IMM_LOW16", /* name */ | |
1573 | FALSE, /* partial_inplace */ | |
1574 | 0, /* src_mask */ | |
1575 | 0x3fffc00, /* dst_mask */ | |
1576 | FALSE), /* pcrel_offset */ | |
1577 | ||
1578 | /* Used in MOVI and SHORI ((x - $) & 65536). */ | |
1579 | HOWTO (R_SH_IMM_LOW16_PCREL, /* type */ | |
1580 | 0, /* rightshift */ | |
1581 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1582 | 64, /* bitsize */ | |
1583 | TRUE, /* pc_relative */ | |
1584 | 10, /* bitpos */ | |
1585 | complain_overflow_dont, /* complain_on_overflow */ | |
1586 | bfd_elf_generic_reloc, /* special_function */ | |
1587 | "R_SH_IMM_LOW16_PCREL", /* name */ | |
1588 | FALSE, /* partial_inplace */ | |
1589 | 0, /* src_mask */ | |
1590 | 0x3fffc00, /* dst_mask */ | |
1591 | TRUE), /* pcrel_offset */ | |
1592 | ||
1593 | /* Used in MOVI and SHORI ((x >> 16) & 65536). */ | |
1594 | HOWTO (R_SH_IMM_MEDLOW16, /* type */ | |
1595 | 16, /* rightshift */ | |
1596 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1597 | 64, /* bitsize */ | |
1598 | FALSE, /* pc_relative */ | |
1599 | 10, /* bitpos */ | |
1600 | complain_overflow_dont, /* complain_on_overflow */ | |
1601 | bfd_elf_generic_reloc, /* special_function */ | |
1602 | "R_SH_IMM_MEDLOW16", /* name */ | |
1603 | FALSE, /* partial_inplace */ | |
1604 | 0, /* src_mask */ | |
1605 | 0x3fffc00, /* dst_mask */ | |
1606 | FALSE), /* pcrel_offset */ | |
1607 | ||
1608 | /* Used in MOVI and SHORI (((x - $) >> 16) & 65536). */ | |
1609 | HOWTO (R_SH_IMM_MEDLOW16_PCREL, /* type */ | |
1610 | 16, /* rightshift */ | |
1611 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1612 | 64, /* bitsize */ | |
1613 | TRUE, /* pc_relative */ | |
1614 | 10, /* bitpos */ | |
1615 | complain_overflow_dont, /* complain_on_overflow */ | |
1616 | bfd_elf_generic_reloc, /* special_function */ | |
1617 | "R_SH_IMM_MEDLOW16_PCREL", /* name */ | |
1618 | FALSE, /* partial_inplace */ | |
1619 | 0, /* src_mask */ | |
1620 | 0x3fffc00, /* dst_mask */ | |
1621 | TRUE), /* pcrel_offset */ | |
1622 | ||
1623 | /* Used in MOVI and SHORI ((x >> 32) & 65536). */ | |
1624 | HOWTO (R_SH_IMM_MEDHI16, /* type */ | |
1625 | 32, /* rightshift */ | |
1626 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1627 | 64, /* bitsize */ | |
1628 | FALSE, /* pc_relative */ | |
1629 | 10, /* bitpos */ | |
1630 | complain_overflow_dont, /* complain_on_overflow */ | |
1631 | bfd_elf_generic_reloc, /* special_function */ | |
1632 | "R_SH_IMM_MEDHI16", /* name */ | |
1633 | FALSE, /* partial_inplace */ | |
1634 | 0, /* src_mask */ | |
1635 | 0x3fffc00, /* dst_mask */ | |
1636 | FALSE), /* pcrel_offset */ | |
1637 | ||
1638 | /* Used in MOVI and SHORI (((x - $) >> 32) & 65536). */ | |
1639 | HOWTO (R_SH_IMM_MEDHI16_PCREL, /* type */ | |
1640 | 32, /* rightshift */ | |
1641 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1642 | 64, /* bitsize */ | |
1643 | TRUE, /* pc_relative */ | |
1644 | 10, /* bitpos */ | |
1645 | complain_overflow_dont, /* complain_on_overflow */ | |
1646 | bfd_elf_generic_reloc, /* special_function */ | |
1647 | "R_SH_IMM_MEDHI16_PCREL", /* name */ | |
1648 | FALSE, /* partial_inplace */ | |
1649 | 0, /* src_mask */ | |
1650 | 0x3fffc00, /* dst_mask */ | |
1651 | TRUE), /* pcrel_offset */ | |
1652 | ||
1653 | /* Used in MOVI and SHORI ((x >> 48) & 65536). */ | |
1654 | HOWTO (R_SH_IMM_HI16, /* type */ | |
1655 | 48, /* rightshift */ | |
1656 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1657 | 64, /* bitsize */ | |
1658 | FALSE, /* pc_relative */ | |
1659 | 10, /* bitpos */ | |
1660 | complain_overflow_dont, /* complain_on_overflow */ | |
1661 | bfd_elf_generic_reloc, /* special_function */ | |
1662 | "R_SH_IMM_HI16", /* name */ | |
1663 | FALSE, /* partial_inplace */ | |
1664 | 0, /* src_mask */ | |
1665 | 0x3fffc00, /* dst_mask */ | |
1666 | FALSE), /* pcrel_offset */ | |
1667 | ||
1668 | /* Used in MOVI and SHORI (((x - $) >> 48) & 65536). */ | |
1669 | HOWTO (R_SH_IMM_HI16_PCREL, /* type */ | |
1670 | 48, /* rightshift */ | |
1671 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1672 | 64, /* bitsize */ | |
1673 | TRUE, /* pc_relative */ | |
1674 | 10, /* bitpos */ | |
1675 | complain_overflow_dont, /* complain_on_overflow */ | |
1676 | bfd_elf_generic_reloc, /* special_function */ | |
1677 | "R_SH_IMM_HI16_PCREL", /* name */ | |
1678 | FALSE, /* partial_inplace */ | |
1679 | 0, /* src_mask */ | |
1680 | 0x3fffc00, /* dst_mask */ | |
1681 | TRUE), /* pcrel_offset */ | |
1682 | ||
1683 | /* For the .uaquad pseudo. */ | |
1684 | HOWTO (R_SH_64, /* type */ | |
1685 | 0, /* rightshift */ | |
1686 | 4, /* size (0 = byte, 1 = short, 2 = long) */ | |
1687 | 64, /* bitsize */ | |
1688 | FALSE, /* pc_relative */ | |
1689 | 0, /* bitpos */ | |
1690 | complain_overflow_dont, /* complain_on_overflow */ | |
1691 | bfd_elf_generic_reloc, /* special_function */ | |
1692 | "R_SH_64", /* name */ | |
1693 | FALSE, /* partial_inplace */ | |
1694 | 0, /* src_mask */ | |
1695 | ((bfd_vma) 0) - 1, /* dst_mask */ | |
1696 | FALSE), /* pcrel_offset */ | |
1697 | ||
1698 | /* For the .uaquad pseudo, (x - $). */ | |
1699 | HOWTO (R_SH_64_PCREL, /* type */ | |
1700 | 48, /* rightshift */ | |
1701 | 2, /* size (0 = byte, 1 = short, 2 = long) */ | |
1702 | 64, /* bitsize */ | |
1703 | TRUE, /* pc_relative */ | |
1704 | 10, /* bitpos */ | |
1705 | complain_overflow_dont, /* complain_on_overflow */ | |
1706 | bfd_elf_generic_reloc, /* special_function */ | |
1707 | "R_SH_64_PCREL", /* name */ | |
1708 | FALSE, /* partial_inplace */ | |
1709 | 0, /* src_mask */ | |
1710 | ((bfd_vma) 0) - 1, /* dst_mask */ | |
1711 | TRUE), /* pcrel_offset */ | |
1712 | ||
1713 | #endif | |
1714 | #undef SH_PARTIAL32 | |
1715 | #undef SH_SRC_MASK32 | |
1716 | #undef SH_ELF_RELOC |