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