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