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