elf32-sh-relocs.h revision 1.8 1 1.8 christos /* Copyright (C) 2006-2022 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.8 christos 0, /* size */
24 1.1 christos 0, /* bitsize */
25 1.8 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.8 christos false, /* partial_inplace */
31 1.1 christos 0, /* src_mask */
32 1.1 christos 0, /* dst_mask */
33 1.8 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.8 christos 4, /* size */
40 1.1 christos 32, /* bitsize */
41 1.8 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.8 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.8 christos 4, /* size */
55 1.1 christos 32, /* bitsize */
56 1.8 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.8 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.8 christos 2, /* size */
70 1.1 christos 8, /* bitsize */
71 1.8 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.8 christos true, /* partial_inplace */
77 1.1 christos 0xff, /* src_mask */
78 1.1 christos 0xff, /* dst_mask */
79 1.8 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.8 christos 2, /* size */
87 1.1 christos 12, /* bitsize */
88 1.8 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.8 christos false, /* partial_inplace */
94 1.1 christos 0x0, /* src_mask */
95 1.1 christos 0xfff, /* dst_mask */
96 1.8 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.8 christos 2, /* size */
102 1.1 christos 8, /* bitsize */
103 1.8 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.8 christos true, /* partial_inplace */
109 1.1 christos 0xff, /* src_mask */
110 1.1 christos 0xff, /* dst_mask */
111 1.8 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.8 christos 2, /* size */
117 1.1 christos 8, /* bitsize */
118 1.8 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.8 christos true, /* partial_inplace */
124 1.1 christos 0xff, /* src_mask */
125 1.1 christos 0xff, /* dst_mask */
126 1.8 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.8 christos 2, /* size */
134 1.1 christos 8, /* bitsize */
135 1.8 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.8 christos false, /* partial_inplace */
141 1.1 christos 0, /* src_mask */
142 1.1 christos 0xff, /* dst_mask */
143 1.8 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.8 christos 2, /* size */
151 1.1 christos 8, /* bitsize */
152 1.8 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.8 christos false, /* partial_inplace */
158 1.1 christos 0, /* src_mask */
159 1.1 christos 0xff, /* dst_mask */
160 1.8 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.8 christos 2, /* size */
168 1.1 christos 8, /* bitsize */
169 1.8 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.8 christos false, /* partial_inplace */
175 1.1 christos 0, /* src_mask */
176 1.1 christos 0xff, /* dst_mask */
177 1.8 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.8 christos 2, /* size */
183 1.1 christos 8, /* bitsize */
184 1.8 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.8 christos true, /* partial_inplace */
190 1.1 christos 0xff, /* src_mask */
191 1.1 christos 0xff, /* dst_mask */
192 1.8 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.8 christos 2, /* size */
198 1.1 christos 8, /* bitsize */
199 1.8 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.8 christos true, /* partial_inplace */
205 1.1 christos 0xff, /* src_mask */
206 1.1 christos 0xff, /* dst_mask */
207 1.8 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.8 christos 4, /* size */
229 1.1 christos 0, /* bitsize */
230 1.8 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.8 christos false, /* partial_inplace */
236 1.1 christos 0, /* src_mask */
237 1.1 christos 0, /* dst_mask */
238 1.8 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.8 christos 4, /* size */
244 1.1 christos 0, /* bitsize */
245 1.8 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.8 christos false, /* partial_inplace */
251 1.1 christos 0, /* src_mask */
252 1.1 christos 0, /* dst_mask */
253 1.8 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.8 christos 1, /* size */
261 1.1 christos 8, /* bitsize */
262 1.8 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.8 christos false, /* partial_inplace */
268 1.1 christos 0, /* src_mask */
269 1.1 christos 0, /* dst_mask */
270 1.8 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.8 christos 2, /* size */
278 1.1 christos 16, /* bitsize */
279 1.8 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.8 christos false, /* partial_inplace */
285 1.1 christos 0, /* src_mask */
286 1.1 christos 0, /* dst_mask */
287 1.8 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.8 christos 4, /* size */
295 1.1 christos 32, /* bitsize */
296 1.8 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.8 christos false, /* partial_inplace */
302 1.1 christos 0, /* src_mask */
303 1.1 christos 0, /* dst_mask */
304 1.8 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.8 christos 2, /* size */
313 1.1 christos 0, /* bitsize */
314 1.8 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.8 christos false, /* partial_inplace */
320 1.1 christos 0, /* src_mask */
321 1.1 christos 0, /* dst_mask */
322 1.8 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.8 christos 2, /* size */
331 1.1 christos 0, /* bitsize */
332 1.8 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.8 christos false, /* partial_inplace */
338 1.1 christos 0, /* src_mask */
339 1.1 christos 0, /* dst_mask */
340 1.8 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.8 christos 2, /* size */
348 1.1 christos 0, /* bitsize */
349 1.8 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.8 christos false, /* partial_inplace */
355 1.1 christos 0, /* src_mask */
356 1.1 christos 0, /* dst_mask */
357 1.8 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.8 christos 2, /* size */
365 1.1 christos 0, /* bitsize */
366 1.8 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.8 christos false, /* partial_inplace */
372 1.1 christos 0, /* src_mask */
373 1.1 christos 0, /* dst_mask */
374 1.8 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.8 christos 2, /* size */
381 1.1 christos 0, /* bitsize */
382 1.8 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.8 christos false, /* partial_inplace */
388 1.1 christos 0, /* src_mask */
389 1.1 christos 0, /* dst_mask */
390 1.8 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.8 christos 2, /* size */
398 1.1 christos 0, /* bitsize */
399 1.8 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.8 christos false, /* partial_inplace */
405 1.1 christos 0, /* src_mask */
406 1.1 christos 0, /* dst_mask */
407 1.8 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.8 christos 2, /* size */
413 1.1 christos 16, /* bitsize */
414 1.8 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.8 christos false, /* partial_inplace */
420 1.1 christos 0, /* src_mask */
421 1.1 christos 0xffff, /* dst_mask */
422 1.8 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.8 christos 1, /* size */
427 1.1 christos 8, /* bitsize */
428 1.8 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.8 christos false, /* partial_inplace */
434 1.1 christos 0, /* src_mask */
435 1.1 christos 0xff, /* dst_mask */
436 1.8 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.8 christos 1, /* size */
441 1.1 christos 8, /* bitsize */
442 1.8 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.8 christos false, /* partial_inplace */
448 1.1 christos 0, /* src_mask */
449 1.1 christos 0xff, /* dst_mask */
450 1.8 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.8 christos 1, /* size */
455 1.1 christos 8, /* bitsize */
456 1.8 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.8 christos false, /* partial_inplace */
462 1.1 christos 0, /* src_mask */
463 1.1 christos 0xff, /* dst_mask */
464 1.8 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.8 christos 1, /* size */
469 1.1 christos 8, /* bitsize */
470 1.8 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.8 christos false, /* partial_inplace */
476 1.1 christos 0, /* src_mask */
477 1.1 christos 0xff, /* dst_mask */
478 1.8 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.8 christos 1, /* size */
483 1.1 christos 8, /* bitsize */
484 1.8 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.8 christos false, /* partial_inplace */
490 1.1 christos 0, /* src_mask */
491 1.1 christos 0xff, /* dst_mask */
492 1.8 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.8 christos 1, /* size */
497 1.1 christos 8, /* bitsize */
498 1.8 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.8 christos false, /* partial_inplace */
504 1.1 christos 0, /* src_mask */
505 1.1 christos 0xff, /* dst_mask */
506 1.8 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.8 christos 1, /* size */
511 1.1 christos 4, /* bitsize */
512 1.8 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.8 christos false, /* partial_inplace */
518 1.1 christos 0, /* src_mask */
519 1.1 christos 0x0f, /* dst_mask */
520 1.8 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.8 christos 1, /* size */
525 1.1 christos 4, /* bitsize */
526 1.8 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.8 christos false, /* partial_inplace */
532 1.1 christos 0, /* src_mask */
533 1.1 christos 0x0f, /* dst_mask */
534 1.8 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.8 christos 1, /* size */
539 1.1 christos 4, /* bitsize */
540 1.8 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.8 christos false, /* partial_inplace */
546 1.1 christos 0, /* src_mask */
547 1.1 christos 0x0f, /* dst_mask */
548 1.8 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.8 christos 2, /* size */
553 1.1 christos 7, /* bitsize */
554 1.8 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.8 christos false, /* partial_inplace */
560 1.1 christos 0, /* src_mask */
561 1.1 christos 0x0f, /* dst_mask */
562 1.8 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.8 christos 2, /* size */
567 1.1 christos 7, /* bitsize */
568 1.8 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.8 christos false, /* partial_inplace */
574 1.1 christos 0, /* src_mask */
575 1.1 christos 0x0f, /* dst_mask */
576 1.8 christos false), /* pcrel_offset */
577 1.1 christos
578 1.1 christos EMPTY_HOWTO (45),
579 1.1 christos EMPTY_HOWTO (46),
580 1.1 christos EMPTY_HOWTO (47),
581 1.1 christos EMPTY_HOWTO (48),
582 1.1 christos EMPTY_HOWTO (49),
583 1.1 christos EMPTY_HOWTO (50),
584 1.1 christos EMPTY_HOWTO (51),
585 1.1 christos
586 1.1 christos EMPTY_HOWTO (52),
587 1.1 christos
588 1.1 christos HOWTO (R_SH_DIR16S, /* type */
589 1.1 christos 0, /* rightshift */
590 1.8 christos 2, /* size */
591 1.1 christos 16, /* bitsize */
592 1.8 christos false, /* pc_relative */
593 1.1 christos 0, /* bitpos */
594 1.1 christos complain_overflow_signed, /* complain_on_overflow */
595 1.1 christos bfd_elf_generic_reloc, /* special_function */
596 1.1 christos "R_SH_DIR16S", /* name */
597 1.8 christos false, /* partial_inplace */
598 1.1 christos 0, /* src_mask */
599 1.1 christos 0xffff, /* dst_mask */
600 1.8 christos false), /* pcrel_offset */
601 1.1 christos
602 1.1 christos EMPTY_HOWTO (54),
603 1.1 christos EMPTY_HOWTO (55),
604 1.1 christos EMPTY_HOWTO (56),
605 1.1 christos EMPTY_HOWTO (57),
606 1.1 christos EMPTY_HOWTO (58),
607 1.1 christos EMPTY_HOWTO (59),
608 1.1 christos EMPTY_HOWTO (60),
609 1.1 christos EMPTY_HOWTO (61),
610 1.1 christos EMPTY_HOWTO (62),
611 1.1 christos EMPTY_HOWTO (63),
612 1.1 christos EMPTY_HOWTO (64),
613 1.1 christos EMPTY_HOWTO (65),
614 1.1 christos EMPTY_HOWTO (66),
615 1.1 christos EMPTY_HOWTO (67),
616 1.1 christos EMPTY_HOWTO (68),
617 1.1 christos EMPTY_HOWTO (69),
618 1.1 christos EMPTY_HOWTO (70),
619 1.1 christos EMPTY_HOWTO (71),
620 1.1 christos EMPTY_HOWTO (72),
621 1.1 christos EMPTY_HOWTO (73),
622 1.1 christos EMPTY_HOWTO (74),
623 1.1 christos EMPTY_HOWTO (75),
624 1.1 christos EMPTY_HOWTO (76),
625 1.1 christos EMPTY_HOWTO (77),
626 1.1 christos EMPTY_HOWTO (78),
627 1.1 christos EMPTY_HOWTO (79),
628 1.1 christos EMPTY_HOWTO (80),
629 1.1 christos EMPTY_HOWTO (81),
630 1.1 christos EMPTY_HOWTO (82),
631 1.1 christos EMPTY_HOWTO (83),
632 1.1 christos EMPTY_HOWTO (84),
633 1.1 christos EMPTY_HOWTO (85),
634 1.1 christos EMPTY_HOWTO (86),
635 1.1 christos EMPTY_HOWTO (87),
636 1.1 christos EMPTY_HOWTO (88),
637 1.1 christos EMPTY_HOWTO (89),
638 1.1 christos EMPTY_HOWTO (90),
639 1.1 christos EMPTY_HOWTO (91),
640 1.1 christos EMPTY_HOWTO (92),
641 1.1 christos EMPTY_HOWTO (93),
642 1.1 christos EMPTY_HOWTO (94),
643 1.1 christos EMPTY_HOWTO (95),
644 1.1 christos EMPTY_HOWTO (96),
645 1.1 christos EMPTY_HOWTO (97),
646 1.1 christos EMPTY_HOWTO (98),
647 1.1 christos EMPTY_HOWTO (99),
648 1.1 christos EMPTY_HOWTO (100),
649 1.1 christos EMPTY_HOWTO (101),
650 1.1 christos EMPTY_HOWTO (102),
651 1.1 christos EMPTY_HOWTO (103),
652 1.1 christos EMPTY_HOWTO (104),
653 1.1 christos EMPTY_HOWTO (105),
654 1.1 christos EMPTY_HOWTO (106),
655 1.1 christos EMPTY_HOWTO (107),
656 1.1 christos EMPTY_HOWTO (108),
657 1.1 christos EMPTY_HOWTO (109),
658 1.1 christos EMPTY_HOWTO (110),
659 1.1 christos EMPTY_HOWTO (111),
660 1.1 christos EMPTY_HOWTO (112),
661 1.1 christos EMPTY_HOWTO (113),
662 1.1 christos EMPTY_HOWTO (114),
663 1.1 christos EMPTY_HOWTO (115),
664 1.1 christos EMPTY_HOWTO (116),
665 1.1 christos EMPTY_HOWTO (117),
666 1.1 christos EMPTY_HOWTO (118),
667 1.1 christos EMPTY_HOWTO (119),
668 1.1 christos EMPTY_HOWTO (120),
669 1.1 christos EMPTY_HOWTO (121),
670 1.1 christos EMPTY_HOWTO (122),
671 1.1 christos EMPTY_HOWTO (123),
672 1.1 christos EMPTY_HOWTO (124),
673 1.1 christos EMPTY_HOWTO (125),
674 1.1 christos EMPTY_HOWTO (126),
675 1.1 christos EMPTY_HOWTO (127),
676 1.1 christos EMPTY_HOWTO (128),
677 1.1 christos EMPTY_HOWTO (129),
678 1.1 christos EMPTY_HOWTO (130),
679 1.1 christos EMPTY_HOWTO (131),
680 1.1 christos EMPTY_HOWTO (132),
681 1.1 christos EMPTY_HOWTO (133),
682 1.1 christos EMPTY_HOWTO (134),
683 1.1 christos EMPTY_HOWTO (135),
684 1.1 christos EMPTY_HOWTO (136),
685 1.1 christos EMPTY_HOWTO (137),
686 1.1 christos EMPTY_HOWTO (138),
687 1.1 christos EMPTY_HOWTO (139),
688 1.1 christos EMPTY_HOWTO (140),
689 1.1 christos EMPTY_HOWTO (141),
690 1.1 christos EMPTY_HOWTO (142),
691 1.1 christos EMPTY_HOWTO (143),
692 1.1 christos
693 1.1 christos HOWTO (R_SH_TLS_GD_32, /* type */
694 1.1 christos 0, /* rightshift */
695 1.8 christos 4, /* size */
696 1.1 christos 32, /* bitsize */
697 1.8 christos false, /* pc_relative */
698 1.1 christos 0, /* bitpos */
699 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
700 1.1 christos bfd_elf_generic_reloc, /* */
701 1.1 christos "R_SH_TLS_GD_32", /* name */
702 1.1 christos SH_PARTIAL32, /* partial_inplace */
703 1.1 christos SH_SRC_MASK32, /* src_mask */
704 1.1 christos 0xffffffff, /* dst_mask */
705 1.8 christos false), /* pcrel_offset */
706 1.1 christos
707 1.1 christos HOWTO (R_SH_TLS_LD_32, /* type */
708 1.1 christos 0, /* rightshift */
709 1.8 christos 4, /* size */
710 1.1 christos 32, /* bitsize */
711 1.8 christos false, /* pc_relative */
712 1.1 christos 0, /* bitpos */
713 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
714 1.1 christos bfd_elf_generic_reloc, /* */
715 1.1 christos "R_SH_TLS_LD_32", /* name */
716 1.1 christos SH_PARTIAL32, /* partial_inplace */
717 1.1 christos SH_SRC_MASK32, /* src_mask */
718 1.1 christos 0xffffffff, /* dst_mask */
719 1.8 christos false), /* pcrel_offset */
720 1.1 christos
721 1.1 christos HOWTO (R_SH_TLS_LDO_32, /* type */
722 1.1 christos 0, /* rightshift */
723 1.8 christos 4, /* size */
724 1.1 christos 32, /* bitsize */
725 1.8 christos false, /* pc_relative */
726 1.1 christos 0, /* bitpos */
727 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
728 1.1 christos bfd_elf_generic_reloc, /* */
729 1.1 christos "R_SH_TLS_LDO_32", /* name */
730 1.1 christos SH_PARTIAL32, /* partial_inplace */
731 1.1 christos SH_SRC_MASK32, /* src_mask */
732 1.1 christos 0xffffffff, /* dst_mask */
733 1.8 christos false), /* pcrel_offset */
734 1.1 christos
735 1.1 christos HOWTO (R_SH_TLS_IE_32, /* type */
736 1.1 christos 0, /* rightshift */
737 1.8 christos 4, /* size */
738 1.1 christos 32, /* bitsize */
739 1.8 christos false, /* pc_relative */
740 1.1 christos 0, /* bitpos */
741 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
742 1.1 christos bfd_elf_generic_reloc, /* */
743 1.1 christos "R_SH_TLS_IE_32", /* name */
744 1.1 christos SH_PARTIAL32, /* partial_inplace */
745 1.1 christos SH_SRC_MASK32, /* src_mask */
746 1.1 christos 0xffffffff, /* dst_mask */
747 1.8 christos false), /* pcrel_offset */
748 1.1 christos
749 1.1 christos HOWTO (R_SH_TLS_LE_32, /* type */
750 1.1 christos 0, /* rightshift */
751 1.8 christos 4, /* size */
752 1.1 christos 32, /* bitsize */
753 1.8 christos false, /* pc_relative */
754 1.1 christos 0, /* bitpos */
755 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
756 1.1 christos bfd_elf_generic_reloc, /* */
757 1.1 christos "R_SH_TLS_LE_32", /* name */
758 1.1 christos SH_PARTIAL32, /* partial_inplace */
759 1.1 christos SH_SRC_MASK32, /* src_mask */
760 1.1 christos 0xffffffff, /* dst_mask */
761 1.8 christos false), /* pcrel_offset */
762 1.1 christos
763 1.1 christos HOWTO (R_SH_TLS_DTPMOD32, /* type */
764 1.1 christos 0, /* rightshift */
765 1.8 christos 4, /* size */
766 1.1 christos 32, /* bitsize */
767 1.8 christos false, /* pc_relative */
768 1.1 christos 0, /* bitpos */
769 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
770 1.1 christos bfd_elf_generic_reloc, /* */
771 1.1 christos "R_SH_TLS_DTPMOD32", /* name */
772 1.1 christos SH_PARTIAL32, /* partial_inplace */
773 1.1 christos SH_SRC_MASK32, /* src_mask */
774 1.1 christos 0xffffffff, /* dst_mask */
775 1.8 christos false), /* pcrel_offset */
776 1.1 christos
777 1.1 christos HOWTO (R_SH_TLS_DTPOFF32, /* type */
778 1.1 christos 0, /* rightshift */
779 1.8 christos 4, /* size */
780 1.1 christos 32, /* bitsize */
781 1.8 christos false, /* pc_relative */
782 1.1 christos 0, /* bitpos */
783 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
784 1.1 christos bfd_elf_generic_reloc, /* */
785 1.1 christos "R_SH_TLS_DTPOFF32", /* name */
786 1.1 christos SH_PARTIAL32, /* partial_inplace */
787 1.1 christos SH_SRC_MASK32, /* src_mask */
788 1.1 christos 0xffffffff, /* dst_mask */
789 1.8 christos false), /* pcrel_offset */
790 1.1 christos
791 1.1 christos HOWTO (R_SH_TLS_TPOFF32, /* type */
792 1.1 christos 0, /* rightshift */
793 1.8 christos 4, /* size */
794 1.1 christos 32, /* bitsize */
795 1.8 christos false, /* pc_relative */
796 1.1 christos 0, /* bitpos */
797 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
798 1.1 christos bfd_elf_generic_reloc, /* */
799 1.1 christos "R_SH_TLS_TPOFF32", /* name */
800 1.1 christos SH_PARTIAL32, /* partial_inplace */
801 1.1 christos SH_SRC_MASK32, /* src_mask */
802 1.1 christos 0xffffffff, /* dst_mask */
803 1.8 christos false), /* pcrel_offset */
804 1.1 christos
805 1.1 christos EMPTY_HOWTO (152),
806 1.1 christos EMPTY_HOWTO (153),
807 1.1 christos EMPTY_HOWTO (154),
808 1.1 christos EMPTY_HOWTO (155),
809 1.1 christos EMPTY_HOWTO (156),
810 1.1 christos EMPTY_HOWTO (157),
811 1.1 christos EMPTY_HOWTO (158),
812 1.1 christos EMPTY_HOWTO (159),
813 1.1 christos
814 1.1 christos HOWTO (R_SH_GOT32, /* type */
815 1.1 christos 0, /* rightshift */
816 1.8 christos 4, /* size */
817 1.1 christos 32, /* bitsize */
818 1.8 christos false, /* pc_relative */
819 1.1 christos 0, /* bitpos */
820 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
821 1.1 christos bfd_elf_generic_reloc, /* */
822 1.1 christos "R_SH_GOT32", /* name */
823 1.1 christos SH_PARTIAL32, /* partial_inplace */
824 1.1 christos SH_SRC_MASK32, /* src_mask */
825 1.1 christos 0xffffffff, /* dst_mask */
826 1.8 christos false), /* pcrel_offset */
827 1.1 christos
828 1.1 christos HOWTO (R_SH_PLT32, /* type */
829 1.1 christos 0, /* rightshift */
830 1.8 christos 4, /* size */
831 1.1 christos 32, /* bitsize */
832 1.8 christos true, /* pc_relative */
833 1.1 christos 0, /* bitpos */
834 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
835 1.1 christos bfd_elf_generic_reloc, /* */
836 1.1 christos "R_SH_PLT32", /* name */
837 1.1 christos SH_PARTIAL32, /* partial_inplace */
838 1.1 christos SH_SRC_MASK32, /* src_mask */
839 1.1 christos 0xffffffff, /* dst_mask */
840 1.8 christos true), /* pcrel_offset */
841 1.1 christos
842 1.1 christos HOWTO (R_SH_COPY, /* type */
843 1.1 christos 0, /* rightshift */
844 1.8 christos 4, /* size */
845 1.1 christos 32, /* bitsize */
846 1.8 christos false, /* pc_relative */
847 1.1 christos 0, /* bitpos */
848 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
849 1.1 christos bfd_elf_generic_reloc, /* */
850 1.1 christos "R_SH_COPY", /* name */
851 1.1 christos SH_PARTIAL32, /* partial_inplace */
852 1.1 christos SH_SRC_MASK32, /* src_mask */
853 1.1 christos 0xffffffff, /* dst_mask */
854 1.8 christos false), /* pcrel_offset */
855 1.1 christos
856 1.1 christos HOWTO (R_SH_GLOB_DAT, /* type */
857 1.1 christos 0, /* rightshift */
858 1.8 christos 4, /* size */
859 1.1 christos 32, /* bitsize */
860 1.8 christos false, /* pc_relative */
861 1.1 christos 0, /* bitpos */
862 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
863 1.1 christos bfd_elf_generic_reloc, /* */
864 1.1 christos "R_SH_GLOB_DAT", /* name */
865 1.1 christos SH_PARTIAL32, /* partial_inplace */
866 1.1 christos SH_SRC_MASK32, /* src_mask */
867 1.1 christos 0xffffffff, /* dst_mask */
868 1.8 christos false), /* pcrel_offset */
869 1.1 christos
870 1.1 christos HOWTO (R_SH_JMP_SLOT, /* type */
871 1.1 christos 0, /* rightshift */
872 1.8 christos 4, /* size */
873 1.1 christos 32, /* bitsize */
874 1.8 christos false, /* pc_relative */
875 1.1 christos 0, /* bitpos */
876 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
877 1.1 christos bfd_elf_generic_reloc, /* */
878 1.1 christos "R_SH_JMP_SLOT", /* name */
879 1.1 christos SH_PARTIAL32, /* partial_inplace */
880 1.1 christos SH_SRC_MASK32, /* src_mask */
881 1.1 christos 0xffffffff, /* dst_mask */
882 1.8 christos false), /* pcrel_offset */
883 1.1 christos
884 1.1 christos HOWTO (R_SH_RELATIVE, /* type */
885 1.1 christos 0, /* rightshift */
886 1.8 christos 4, /* size */
887 1.1 christos 32, /* bitsize */
888 1.8 christos false, /* pc_relative */
889 1.1 christos 0, /* bitpos */
890 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
891 1.1 christos bfd_elf_generic_reloc, /* */
892 1.1 christos "R_SH_RELATIVE", /* name */
893 1.1 christos SH_PARTIAL32, /* partial_inplace */
894 1.1 christos SH_SRC_MASK32, /* src_mask */
895 1.1 christos 0xffffffff, /* dst_mask */
896 1.8 christos false), /* pcrel_offset */
897 1.1 christos
898 1.1 christos HOWTO (R_SH_GOTOFF, /* type */
899 1.1 christos 0, /* rightshift */
900 1.8 christos 4, /* size */
901 1.1 christos 32, /* bitsize */
902 1.8 christos false, /* pc_relative */
903 1.1 christos 0, /* bitpos */
904 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
905 1.1 christos bfd_elf_generic_reloc, /* */
906 1.1 christos "R_SH_GOTOFF", /* name */
907 1.1 christos SH_PARTIAL32, /* partial_inplace */
908 1.1 christos SH_SRC_MASK32, /* src_mask */
909 1.1 christos 0xffffffff, /* dst_mask */
910 1.8 christos false), /* pcrel_offset */
911 1.1 christos
912 1.1 christos HOWTO (R_SH_GOTPC, /* type */
913 1.1 christos 0, /* rightshift */
914 1.8 christos 4, /* size */
915 1.1 christos 32, /* bitsize */
916 1.8 christos true, /* pc_relative */
917 1.1 christos 0, /* bitpos */
918 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
919 1.1 christos bfd_elf_generic_reloc, /* */
920 1.1 christos "R_SH_GOTPC", /* name */
921 1.1 christos SH_PARTIAL32, /* partial_inplace */
922 1.1 christos SH_SRC_MASK32, /* src_mask */
923 1.1 christos 0xffffffff, /* dst_mask */
924 1.8 christos true), /* pcrel_offset */
925 1.1 christos
926 1.1 christos HOWTO (R_SH_GOTPLT32, /* type */
927 1.1 christos 0, /* rightshift */
928 1.8 christos 4, /* size */
929 1.1 christos 32, /* bitsize */
930 1.8 christos false, /* pc_relative */
931 1.1 christos 0, /* bitpos */
932 1.1 christos complain_overflow_bitfield, /* complain_on_overflow */
933 1.1 christos bfd_elf_generic_reloc, /* */
934 1.1 christos "R_SH_GOTPLT32", /* name */
935 1.8 christos false, /* partial_inplace */
936 1.1 christos /* ??? Why not 0? */
937 1.1 christos SH_SRC_MASK32, /* src_mask */
938 1.1 christos 0xffffffff, /* dst_mask */
939 1.8 christos false), /* pcrel_offset */
940 1.1 christos
941 1.1 christos EMPTY_HOWTO (169),
942 1.1 christos EMPTY_HOWTO (170),
943 1.1 christos EMPTY_HOWTO (171),
944 1.1 christos EMPTY_HOWTO (172),
945 1.1 christos EMPTY_HOWTO (173),
946 1.1 christos EMPTY_HOWTO (174),
947 1.1 christos EMPTY_HOWTO (175),
948 1.1 christos EMPTY_HOWTO (176),
949 1.1 christos EMPTY_HOWTO (177),
950 1.1 christos EMPTY_HOWTO (178),
951 1.1 christos EMPTY_HOWTO (179),
952 1.1 christos EMPTY_HOWTO (180),
953 1.1 christos EMPTY_HOWTO (181),
954 1.1 christos EMPTY_HOWTO (182),
955 1.1 christos EMPTY_HOWTO (183),
956 1.1 christos EMPTY_HOWTO (184),
957 1.1 christos EMPTY_HOWTO (185),
958 1.1 christos EMPTY_HOWTO (186),
959 1.1 christos EMPTY_HOWTO (187),
960 1.1 christos EMPTY_HOWTO (188),
961 1.1 christos EMPTY_HOWTO (189),
962 1.1 christos EMPTY_HOWTO (190),
963 1.1 christos EMPTY_HOWTO (191),
964 1.1 christos EMPTY_HOWTO (192),
965 1.1 christos EMPTY_HOWTO (193),
966 1.1 christos EMPTY_HOWTO (194),
967 1.1 christos EMPTY_HOWTO (195),
968 1.1 christos EMPTY_HOWTO (196),
969 1.1 christos EMPTY_HOWTO (197),
970 1.1 christos EMPTY_HOWTO (198),
971 1.1 christos EMPTY_HOWTO (199),
972 1.1 christos EMPTY_HOWTO (200),
973 1.1 christos
974 1.1 christos /* FDPIC-relative offset to a GOT entry, for movi20. */
975 1.1 christos HOWTO (R_SH_GOT20, /* type */
976 1.1 christos 0, /* rightshift */
977 1.8 christos 4, /* size */
978 1.1 christos 20, /* bitsize */
979 1.8 christos false, /* pc_relative */
980 1.1 christos 0, /* bitpos */
981 1.1 christos complain_overflow_signed, /* complain_on_overflow */
982 1.1 christos bfd_elf_generic_reloc, /* special_function */
983 1.1 christos "R_SH_GOT20", /* name */
984 1.8 christos false, /* partial_inplace */
985 1.1 christos 0, /* src_mask */
986 1.1 christos 0x00f0ffff, /* dst_mask */
987 1.8 christos false), /* pcrel_offset */
988 1.1 christos
989 1.1 christos /* FDPIC-relative offset to a data object, for movi20. */
990 1.1 christos HOWTO (R_SH_GOTOFF20, /* type */
991 1.1 christos 0, /* rightshift */
992 1.8 christos 4, /* size */
993 1.1 christos 20, /* bitsize */
994 1.8 christos false, /* pc_relative */
995 1.1 christos 0, /* bitpos */
996 1.1 christos complain_overflow_signed, /* complain_on_overflow */
997 1.1 christos bfd_elf_generic_reloc, /* special_function */
998 1.1 christos "R_SH_GOTOFF20", /* name */
999 1.8 christos false, /* partial_inplace */
1000 1.1 christos 0, /* src_mask */
1001 1.1 christos 0x00f0ffff, /* dst_mask */
1002 1.8 christos false), /* pcrel_offset */
1003 1.1 christos
1004 1.1 christos /* FDPIC-relative offset to a GOT entry for a function descriptor. */
1005 1.1 christos HOWTO (R_SH_GOTFUNCDESC, /* type */
1006 1.1 christos 0, /* rightshift */
1007 1.8 christos 4, /* size */
1008 1.1 christos 32, /* bitsize */
1009 1.8 christos false, /* pc_relative */
1010 1.1 christos 0, /* bitpos */
1011 1.1 christos complain_overflow_signed, /* complain_on_overflow */
1012 1.1 christos bfd_elf_generic_reloc, /* special_function */
1013 1.1 christos "R_SH_GOTFUNCDESC", /* name */
1014 1.8 christos false, /* partial_inplace */
1015 1.1 christos 0, /* src_mask */
1016 1.1 christos 0xffffffff, /* dst_mask */
1017 1.8 christos false), /* pcrel_offset */
1018 1.1 christos
1019 1.1 christos /* FDPIC-relative offset to a GOT entry for a function descriptor,
1020 1.1 christos for movi20. */
1021 1.1 christos HOWTO (R_SH_GOTFUNCDESC20, /* type */
1022 1.1 christos 0, /* rightshift */
1023 1.8 christos 4, /* size */
1024 1.1 christos 20, /* bitsize */
1025 1.8 christos false, /* pc_relative */
1026 1.1 christos 0, /* bitpos */
1027 1.1 christos complain_overflow_signed, /* complain_on_overflow */
1028 1.1 christos bfd_elf_generic_reloc, /* special_function */
1029 1.1 christos "R_SH_GOTFUNCDESC20", /* name */
1030 1.8 christos false, /* partial_inplace */
1031 1.1 christos 0, /* src_mask */
1032 1.1 christos 0x00f0ffff, /* dst_mask */
1033 1.8 christos false), /* pcrel_offset */
1034 1.1 christos
1035 1.1 christos /* FDPIC-relative offset to a function descriptor. */
1036 1.1 christos HOWTO (R_SH_GOTOFFFUNCDESC, /* type */
1037 1.1 christos 0, /* rightshift */
1038 1.8 christos 4, /* size */
1039 1.1 christos 32, /* bitsize */
1040 1.8 christos false, /* pc_relative */
1041 1.1 christos 0, /* bitpos */
1042 1.1 christos complain_overflow_signed, /* complain_on_overflow */
1043 1.1 christos bfd_elf_generic_reloc, /* special_function */
1044 1.1 christos "R_SH_GOTOFFFUNCDESC", /* name */
1045 1.8 christos false, /* partial_inplace */
1046 1.1 christos 0, /* src_mask */
1047 1.1 christos 0xffffffff, /* dst_mask */
1048 1.8 christos false), /* pcrel_offset */
1049 1.1 christos
1050 1.1 christos /* FDPIC-relative offset to a function descriptor, for movi20. */
1051 1.1 christos HOWTO (R_SH_GOTOFFFUNCDESC20, /* type */
1052 1.1 christos 0, /* rightshift */
1053 1.8 christos 4, /* size */
1054 1.1 christos 20, /* bitsize */
1055 1.8 christos false, /* pc_relative */
1056 1.1 christos 0, /* bitpos */
1057 1.1 christos complain_overflow_signed, /* complain_on_overflow */
1058 1.1 christos bfd_elf_generic_reloc, /* special_function */
1059 1.1 christos "R_SH_GOTOFFFUNCDESC20", /* name */
1060 1.8 christos false, /* partial_inplace */
1061 1.1 christos 0, /* src_mask */
1062 1.1 christos 0x00f0ffff, /* dst_mask */
1063 1.8 christos false), /* pcrel_offset */
1064 1.1 christos
1065 1.1 christos /* Address of an official function descriptor. */
1066 1.1 christos HOWTO (R_SH_FUNCDESC, /* type */
1067 1.1 christos 0, /* rightshift */
1068 1.8 christos 4, /* size */
1069 1.1 christos 32, /* bitsize */
1070 1.8 christos false, /* pc_relative */
1071 1.1 christos 0, /* bitpos */
1072 1.1 christos complain_overflow_signed, /* complain_on_overflow */
1073 1.1 christos bfd_elf_generic_reloc, /* special_function */
1074 1.1 christos "R_SH_FUNCDESC", /* name */
1075 1.8 christos false, /* partial_inplace */
1076 1.1 christos 0, /* src_mask */
1077 1.1 christos 0xffffffff, /* dst_mask */
1078 1.8 christos false), /* pcrel_offset */
1079 1.1 christos
1080 1.1 christos /* Function descriptor to be filled in by the dynamic linker. */
1081 1.1 christos HOWTO (R_SH_FUNCDESC_VALUE, /* type */
1082 1.1 christos 0, /* rightshift */
1083 1.8 christos 4, /* size */
1084 1.1 christos 64, /* bitsize */
1085 1.8 christos false, /* pc_relative */
1086 1.1 christos 0, /* bitpos */
1087 1.1 christos complain_overflow_signed, /* complain_on_overflow */
1088 1.1 christos bfd_elf_generic_reloc, /* special_function */
1089 1.1 christos "R_SH_FUNCDESC_VALUE", /* name */
1090 1.8 christos false, /* partial_inplace */
1091 1.1 christos 0, /* src_mask */
1092 1.1 christos 0xffffffff, /* dst_mask */
1093 1.8 christos false), /* pcrel_offset */
1094 1.1 christos
1095 1.1 christos #undef SH_PARTIAL32
1096 1.1 christos #undef SH_SRC_MASK32
1097 1.1 christos #undef SH_ELF_RELOC
1098