OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [bfd/] [elf32-sh-relocs.h] - Blame information for rev 303

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 khays
/* Copyright 2006, 2007, 2010 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
         0,                      /* 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
#ifdef INCLUDE_SHMEDIA
579
  /* Used in SHLLI.L and SHLRI.L.  */
580
  HOWTO (R_SH_DIR5U,            /* type */
581
         0,                      /* rightshift */
582
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
583
         5,                     /* bitsize */
584
         FALSE,                 /* pc_relative */
585
         10,                    /* bitpos */
586
         complain_overflow_unsigned, /* complain_on_overflow */
587
         bfd_elf_generic_reloc, /* special_function */
588
         "R_SH_DIR5U",          /* name */
589
         FALSE,                 /* partial_inplace */
590
         0,                      /* src_mask */
591
         0xfc00,                /* dst_mask */
592
         FALSE),                /* pcrel_offset */
593
 
594
  /* Used in SHARI, SHLLI et al.  */
595
  HOWTO (R_SH_DIR6U,            /* type */
596
         0,                      /* rightshift */
597
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
598
         6,                     /* bitsize */
599
         FALSE,                 /* pc_relative */
600
         10,                    /* bitpos */
601
         complain_overflow_unsigned, /* complain_on_overflow */
602
         bfd_elf_generic_reloc, /* special_function */
603
         "R_SH_DIR6U",          /* name */
604
         FALSE,                 /* partial_inplace */
605
         0,                      /* src_mask */
606
         0xfc00,                /* dst_mask */
607
         FALSE),                /* pcrel_offset */
608
 
609
  /* Used in BxxI, LDHI.L et al.  */
610
  HOWTO (R_SH_DIR6S,            /* type */
611
         0,                      /* rightshift */
612
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
613
         6,                     /* bitsize */
614
         FALSE,                 /* pc_relative */
615
         10,                    /* bitpos */
616
         complain_overflow_signed, /* complain_on_overflow */
617
         bfd_elf_generic_reloc, /* special_function */
618
         "R_SH_DIR6S",          /* name */
619
         FALSE,                 /* partial_inplace */
620
         0,                      /* src_mask */
621
         0xfc00,                /* dst_mask */
622
         FALSE),                /* pcrel_offset */
623
 
624
  /* Used in ADDI, ANDI et al.  */
625
  HOWTO (R_SH_DIR10S,           /* type */
626
         0,                      /* rightshift */
627
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
628
         10,                    /* bitsize */
629
         FALSE,                 /* pc_relative */
630
         10,                    /* bitpos */
631
         complain_overflow_signed, /* complain_on_overflow */
632
         bfd_elf_generic_reloc, /* special_function */
633
         "R_SH_DIR10S",         /* name */
634
         FALSE,                 /* partial_inplace */
635
         0,                      /* src_mask */
636
         0xffc00,               /* dst_mask */
637
         FALSE),                /* pcrel_offset */
638
 
639
  /* Used in LD.UW, ST.W et al.  */
640
  HOWTO (R_SH_DIR10SW,  /* type */
641
         1,                     /* rightshift */
642
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
643
         11,                    /* bitsize */
644
         FALSE,                 /* pc_relative */
645
         10,                    /* bitpos */
646
         complain_overflow_signed, /* complain_on_overflow */
647
         bfd_elf_generic_reloc, /* special_function */
648
         "R_SH_DIR10SW",        /* name */
649
         FALSE,                 /* partial_inplace */
650
         0,                      /* src_mask */
651
         0xffc00,               /* dst_mask */
652
         FALSE),                /* pcrel_offset */
653
 
654
  /* Used in LD.L, FLD.S et al.  */
655
  HOWTO (R_SH_DIR10SL,  /* type */
656
         2,                     /* rightshift */
657
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
658
         12,                    /* bitsize */
659
         FALSE,                 /* pc_relative */
660
         10,                    /* bitpos */
661
         complain_overflow_signed, /* complain_on_overflow */
662
         bfd_elf_generic_reloc, /* special_function */
663
         "R_SH_DIR10SL",        /* name */
664
         FALSE,                 /* partial_inplace */
665
         0,                      /* src_mask */
666
         0xffc00,               /* dst_mask */
667
         FALSE),                /* pcrel_offset */
668
 
669
  /* Used in FLD.D, FST.P et al.  */
670
  HOWTO (R_SH_DIR10SQ,  /* type */
671
         3,                     /* rightshift */
672
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
673
         13,                    /* bitsize */
674
         FALSE,                 /* pc_relative */
675
         10,                    /* bitpos */
676
         complain_overflow_signed, /* complain_on_overflow */
677
         bfd_elf_generic_reloc, /* special_function */
678
         "R_SH_DIR10SQ",        /* name */
679
         FALSE,                 /* partial_inplace */
680
         0,                      /* src_mask */
681
         0xffc00,               /* dst_mask */
682
         FALSE),                /* pcrel_offset */
683
 
684
#else
685
  EMPTY_HOWTO (45),
686
  EMPTY_HOWTO (46),
687
  EMPTY_HOWTO (47),
688
  EMPTY_HOWTO (48),
689
  EMPTY_HOWTO (49),
690
  EMPTY_HOWTO (50),
691
  EMPTY_HOWTO (51),
692
#endif
693
 
694
  EMPTY_HOWTO (52),
695
 
696
  HOWTO (R_SH_DIR16S,           /* type */
697
         0,                      /* rightshift */
698
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
699
         16,                    /* bitsize */
700
         FALSE,                 /* pc_relative */
701
         0,                      /* bitpos */
702
         complain_overflow_signed, /* complain_on_overflow */
703
         bfd_elf_generic_reloc, /* special_function */
704
         "R_SH_DIR16S",         /* name */
705
         FALSE,                 /* partial_inplace */
706
         0,                      /* src_mask */
707
         0xffff,                /* dst_mask */
708
         FALSE),                /* pcrel_offset */
709
 
710
  EMPTY_HOWTO (54),
711
  EMPTY_HOWTO (55),
712
  EMPTY_HOWTO (56),
713
  EMPTY_HOWTO (57),
714
  EMPTY_HOWTO (58),
715
  EMPTY_HOWTO (59),
716
  EMPTY_HOWTO (60),
717
  EMPTY_HOWTO (61),
718
  EMPTY_HOWTO (62),
719
  EMPTY_HOWTO (63),
720
  EMPTY_HOWTO (64),
721
  EMPTY_HOWTO (65),
722
  EMPTY_HOWTO (66),
723
  EMPTY_HOWTO (67),
724
  EMPTY_HOWTO (68),
725
  EMPTY_HOWTO (69),
726
  EMPTY_HOWTO (70),
727
  EMPTY_HOWTO (71),
728
  EMPTY_HOWTO (72),
729
  EMPTY_HOWTO (73),
730
  EMPTY_HOWTO (74),
731
  EMPTY_HOWTO (75),
732
  EMPTY_HOWTO (76),
733
  EMPTY_HOWTO (77),
734
  EMPTY_HOWTO (78),
735
  EMPTY_HOWTO (79),
736
  EMPTY_HOWTO (80),
737
  EMPTY_HOWTO (81),
738
  EMPTY_HOWTO (82),
739
  EMPTY_HOWTO (83),
740
  EMPTY_HOWTO (84),
741
  EMPTY_HOWTO (85),
742
  EMPTY_HOWTO (86),
743
  EMPTY_HOWTO (87),
744
  EMPTY_HOWTO (88),
745
  EMPTY_HOWTO (89),
746
  EMPTY_HOWTO (90),
747
  EMPTY_HOWTO (91),
748
  EMPTY_HOWTO (92),
749
  EMPTY_HOWTO (93),
750
  EMPTY_HOWTO (94),
751
  EMPTY_HOWTO (95),
752
  EMPTY_HOWTO (96),
753
  EMPTY_HOWTO (97),
754
  EMPTY_HOWTO (98),
755
  EMPTY_HOWTO (99),
756
  EMPTY_HOWTO (100),
757
  EMPTY_HOWTO (101),
758
  EMPTY_HOWTO (102),
759
  EMPTY_HOWTO (103),
760
  EMPTY_HOWTO (104),
761
  EMPTY_HOWTO (105),
762
  EMPTY_HOWTO (106),
763
  EMPTY_HOWTO (107),
764
  EMPTY_HOWTO (108),
765
  EMPTY_HOWTO (109),
766
  EMPTY_HOWTO (110),
767
  EMPTY_HOWTO (111),
768
  EMPTY_HOWTO (112),
769
  EMPTY_HOWTO (113),
770
  EMPTY_HOWTO (114),
771
  EMPTY_HOWTO (115),
772
  EMPTY_HOWTO (116),
773
  EMPTY_HOWTO (117),
774
  EMPTY_HOWTO (118),
775
  EMPTY_HOWTO (119),
776
  EMPTY_HOWTO (120),
777
  EMPTY_HOWTO (121),
778
  EMPTY_HOWTO (122),
779
  EMPTY_HOWTO (123),
780
  EMPTY_HOWTO (124),
781
  EMPTY_HOWTO (125),
782
  EMPTY_HOWTO (126),
783
  EMPTY_HOWTO (127),
784
  EMPTY_HOWTO (128),
785
  EMPTY_HOWTO (129),
786
  EMPTY_HOWTO (130),
787
  EMPTY_HOWTO (131),
788
  EMPTY_HOWTO (132),
789
  EMPTY_HOWTO (133),
790
  EMPTY_HOWTO (134),
791
  EMPTY_HOWTO (135),
792
  EMPTY_HOWTO (136),
793
  EMPTY_HOWTO (137),
794
  EMPTY_HOWTO (138),
795
  EMPTY_HOWTO (139),
796
  EMPTY_HOWTO (140),
797
  EMPTY_HOWTO (141),
798
  EMPTY_HOWTO (142),
799
  EMPTY_HOWTO (143),
800
 
801
  HOWTO (R_SH_TLS_GD_32,        /* type */
802
         0,                      /* rightshift */
803
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
804
         32,                    /* bitsize */
805
         FALSE,                 /* pc_relative */
806
         0,                      /* bitpos */
807
         complain_overflow_bitfield, /* complain_on_overflow */
808
         bfd_elf_generic_reloc, /* */
809
         "R_SH_TLS_GD_32",      /* name */
810
         SH_PARTIAL32,          /* partial_inplace */
811
         SH_SRC_MASK32,         /* src_mask */
812
         0xffffffff,            /* dst_mask */
813
         FALSE),                /* pcrel_offset */
814
 
815
  HOWTO (R_SH_TLS_LD_32,        /* type */
816
         0,                      /* rightshift */
817
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
818
         32,                    /* bitsize */
819
         FALSE,                 /* pc_relative */
820
         0,                      /* bitpos */
821
         complain_overflow_bitfield, /* complain_on_overflow */
822
         bfd_elf_generic_reloc, /* */
823
         "R_SH_TLS_LD_32",      /* name */
824
         SH_PARTIAL32,          /* partial_inplace */
825
         SH_SRC_MASK32,         /* src_mask */
826
         0xffffffff,            /* dst_mask */
827
         FALSE),                /* pcrel_offset */
828
 
829
  HOWTO (R_SH_TLS_LDO_32,       /* type */
830
         0,                      /* rightshift */
831
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
832
         32,                    /* bitsize */
833
         FALSE,                 /* pc_relative */
834
         0,                      /* bitpos */
835
         complain_overflow_bitfield, /* complain_on_overflow */
836
         bfd_elf_generic_reloc, /* */
837
         "R_SH_TLS_LDO_32",     /* name */
838
         SH_PARTIAL32,          /* partial_inplace */
839
         SH_SRC_MASK32,         /* src_mask */
840
         0xffffffff,            /* dst_mask */
841
         FALSE),                /* pcrel_offset */
842
 
843
  HOWTO (R_SH_TLS_IE_32,        /* type */
844
         0,                      /* rightshift */
845
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
846
         32,                    /* bitsize */
847
         FALSE,                 /* pc_relative */
848
         0,                      /* bitpos */
849
         complain_overflow_bitfield, /* complain_on_overflow */
850
         bfd_elf_generic_reloc, /* */
851
         "R_SH_TLS_IE_32",      /* name */
852
         SH_PARTIAL32,          /* partial_inplace */
853
         SH_SRC_MASK32,         /* src_mask */
854
         0xffffffff,            /* dst_mask */
855
         FALSE),                /* pcrel_offset */
856
 
857
  HOWTO (R_SH_TLS_LE_32,        /* type */
858
         0,                      /* rightshift */
859
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
860
         32,                    /* bitsize */
861
         FALSE,                 /* pc_relative */
862
         0,                      /* bitpos */
863
         complain_overflow_bitfield, /* complain_on_overflow */
864
         bfd_elf_generic_reloc, /* */
865
         "R_SH_TLS_LE_32",      /* name */
866
         SH_PARTIAL32,          /* partial_inplace */
867
         SH_SRC_MASK32,         /* src_mask */
868
         0xffffffff,            /* dst_mask */
869
         FALSE),                /* pcrel_offset */
870
 
871
  HOWTO (R_SH_TLS_DTPMOD32,     /* type */
872
         0,                      /* rightshift */
873
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
874
         32,                    /* bitsize */
875
         FALSE,                 /* pc_relative */
876
         0,                      /* bitpos */
877
         complain_overflow_bitfield, /* complain_on_overflow */
878
         bfd_elf_generic_reloc, /* */
879
         "R_SH_TLS_DTPMOD32",   /* name */
880
         SH_PARTIAL32,          /* partial_inplace */
881
         SH_SRC_MASK32,         /* src_mask */
882
         0xffffffff,            /* dst_mask */
883
         FALSE),                /* pcrel_offset */
884
 
885
  HOWTO (R_SH_TLS_DTPOFF32,     /* type */
886
         0,                      /* rightshift */
887
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
888
         32,                    /* bitsize */
889
         FALSE,                 /* pc_relative */
890
         0,                      /* bitpos */
891
         complain_overflow_bitfield, /* complain_on_overflow */
892
         bfd_elf_generic_reloc, /* */
893
         "R_SH_TLS_DTPOFF32",   /* name */
894
         SH_PARTIAL32,          /* partial_inplace */
895
         SH_SRC_MASK32,         /* src_mask */
896
         0xffffffff,            /* dst_mask */
897
         FALSE),                /* pcrel_offset */
898
 
899
  HOWTO (R_SH_TLS_TPOFF32,      /* type */
900
         0,                      /* rightshift */
901
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
902
         32,                    /* bitsize */
903
         FALSE,                 /* pc_relative */
904
         0,                      /* bitpos */
905
         complain_overflow_bitfield, /* complain_on_overflow */
906
         bfd_elf_generic_reloc, /* */
907
         "R_SH_TLS_TPOFF32",    /* name */
908
         SH_PARTIAL32,          /* partial_inplace */
909
         SH_SRC_MASK32,         /* src_mask */
910
         0xffffffff,            /* dst_mask */
911
         FALSE),                /* pcrel_offset */
912
 
913
  EMPTY_HOWTO (152),
914
  EMPTY_HOWTO (153),
915
  EMPTY_HOWTO (154),
916
  EMPTY_HOWTO (155),
917
  EMPTY_HOWTO (156),
918
  EMPTY_HOWTO (157),
919
  EMPTY_HOWTO (158),
920
  EMPTY_HOWTO (159),
921
 
922
  HOWTO (R_SH_GOT32,            /* type */
923
         0,                      /* rightshift */
924
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
925
         32,                    /* bitsize */
926
         FALSE,                 /* pc_relative */
927
         0,                      /* bitpos */
928
         complain_overflow_bitfield, /* complain_on_overflow */
929
         bfd_elf_generic_reloc, /* */
930
         "R_SH_GOT32",          /* name */
931
         SH_PARTIAL32,          /* partial_inplace */
932
         SH_SRC_MASK32,         /* src_mask */
933
         0xffffffff,            /* dst_mask */
934
         FALSE),                /* pcrel_offset */
935
 
936
  HOWTO (R_SH_PLT32,            /* type */
937
         0,                      /* rightshift */
938
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
939
         32,                    /* bitsize */
940
         TRUE,                  /* pc_relative */
941
         0,                      /* bitpos */
942
         complain_overflow_bitfield, /* complain_on_overflow */
943
         bfd_elf_generic_reloc, /* */
944
         "R_SH_PLT32",          /* name */
945
         SH_PARTIAL32,          /* partial_inplace */
946
         SH_SRC_MASK32,         /* src_mask */
947
         0xffffffff,            /* dst_mask */
948
         TRUE),                 /* pcrel_offset */
949
 
950
  HOWTO (R_SH_COPY,             /* type */
951
         0,                      /* rightshift */
952
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
953
         32,                    /* bitsize */
954
         FALSE,                 /* pc_relative */
955
         0,                      /* bitpos */
956
         complain_overflow_bitfield, /* complain_on_overflow */
957
         bfd_elf_generic_reloc, /* */
958
         "R_SH_COPY",           /* name */
959
         SH_PARTIAL32,          /* partial_inplace */
960
         SH_SRC_MASK32,         /* src_mask */
961
         0xffffffff,            /* dst_mask */
962
         FALSE),                /* pcrel_offset */
963
 
964
  HOWTO (R_SH_GLOB_DAT,         /* type */
965
         0,                      /* rightshift */
966
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
967
         32,                    /* bitsize */
968
         FALSE,                 /* pc_relative */
969
         0,                      /* bitpos */
970
         complain_overflow_bitfield, /* complain_on_overflow */
971
         bfd_elf_generic_reloc, /* */
972
         "R_SH_GLOB_DAT",       /* name */
973
         SH_PARTIAL32,          /* partial_inplace */
974
         SH_SRC_MASK32,         /* src_mask */
975
         0xffffffff,            /* dst_mask */
976
         FALSE),                /* pcrel_offset */
977
 
978
  HOWTO (R_SH_JMP_SLOT,         /* type */
979
         0,                      /* rightshift */
980
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
981
         32,                    /* bitsize */
982
         FALSE,                 /* pc_relative */
983
         0,                      /* bitpos */
984
         complain_overflow_bitfield, /* complain_on_overflow */
985
         bfd_elf_generic_reloc, /* */
986
         "R_SH_JMP_SLOT",       /* name */
987
         SH_PARTIAL32,          /* partial_inplace */
988
         SH_SRC_MASK32,         /* src_mask */
989
         0xffffffff,            /* dst_mask */
990
         FALSE),                /* pcrel_offset */
991
 
992
  HOWTO (R_SH_RELATIVE,         /* type */
993
         0,                      /* rightshift */
994
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
995
         32,                    /* bitsize */
996
         FALSE,                 /* pc_relative */
997
         0,                      /* bitpos */
998
         complain_overflow_bitfield, /* complain_on_overflow */
999
         bfd_elf_generic_reloc, /* */
1000
         "R_SH_RELATIVE",       /* name */
1001
         SH_PARTIAL32,          /* partial_inplace */
1002
         SH_SRC_MASK32,         /* src_mask */
1003
         0xffffffff,            /* dst_mask */
1004
         FALSE),                /* pcrel_offset */
1005
 
1006
  HOWTO (R_SH_GOTOFF,           /* type */
1007
         0,                      /* rightshift */
1008
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1009
         32,                    /* bitsize */
1010
         FALSE,                 /* pc_relative */
1011
         0,                      /* bitpos */
1012
         complain_overflow_bitfield, /* complain_on_overflow */
1013
         bfd_elf_generic_reloc, /* */
1014
         "R_SH_GOTOFF",         /* name */
1015
         SH_PARTIAL32,          /* partial_inplace */
1016
         SH_SRC_MASK32,         /* src_mask */
1017
         0xffffffff,            /* dst_mask */
1018
         FALSE),                /* pcrel_offset */
1019
 
1020
  HOWTO (R_SH_GOTPC,            /* type */
1021
         0,                      /* rightshift */
1022
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1023
         32,                    /* bitsize */
1024
         TRUE,                  /* pc_relative */
1025
         0,                      /* bitpos */
1026
         complain_overflow_bitfield, /* complain_on_overflow */
1027
         bfd_elf_generic_reloc, /* */
1028
         "R_SH_GOTPC",          /* name */
1029
         SH_PARTIAL32,          /* partial_inplace */
1030
         SH_SRC_MASK32,         /* src_mask */
1031
         0xffffffff,            /* dst_mask */
1032
         TRUE),                 /* pcrel_offset */
1033
 
1034
  HOWTO (R_SH_GOTPLT32,         /* type */
1035
         0,                      /* rightshift */
1036
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1037
         32,                    /* bitsize */
1038
         FALSE,                 /* pc_relative */
1039
         0,                      /* bitpos */
1040
         complain_overflow_bitfield, /* complain_on_overflow */
1041
         bfd_elf_generic_reloc, /* */
1042
         "R_SH_GOTPLT32",       /* name */
1043
         FALSE,                 /* partial_inplace */
1044
         /* ??? Why not 0?  */
1045
         SH_SRC_MASK32,         /* src_mask */
1046
         0xffffffff,            /* dst_mask */
1047
         FALSE),                /* pcrel_offset */
1048
 
1049
#ifdef INCLUDE_SHMEDIA
1050
  /* Used in MOVI and SHORI (x & 65536).  */
1051
  HOWTO (R_SH_GOT_LOW16,        /* type */
1052
         0,                      /* rightshift */
1053
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1054
         64,                    /* bitsize */
1055
         FALSE,                 /* pc_relative */
1056
         10,                    /* bitpos */
1057
         complain_overflow_dont, /* complain_on_overflow */
1058
         bfd_elf_generic_reloc, /* special_function */
1059
         "R_SH_GOT_LOW16",      /* name */
1060
         FALSE,                 /* partial_inplace */
1061
         0,                      /* src_mask */
1062
         0x3fffc00,             /* dst_mask */
1063
         FALSE),                /* pcrel_offset */
1064
 
1065
  /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1066
  HOWTO (R_SH_GOT_MEDLOW16,     /* type */
1067
         16,                    /* rightshift */
1068
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1069
         64,                    /* bitsize */
1070
         FALSE,                 /* pc_relative */
1071
         10,                    /* bitpos */
1072
         complain_overflow_dont, /* complain_on_overflow */
1073
         bfd_elf_generic_reloc, /* special_function */
1074
         "R_SH_GOT_MEDLOW16",   /* name */
1075
         FALSE,                 /* partial_inplace */
1076
         0,                      /* src_mask */
1077
         0x3fffc00,             /* dst_mask */
1078
         FALSE),                /* pcrel_offset */
1079
 
1080
  /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1081
  HOWTO (R_SH_GOT_MEDHI16,      /* type */
1082
         32,                    /* rightshift */
1083
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1084
         64,                    /* bitsize */
1085
         FALSE,                 /* pc_relative */
1086
         10,                    /* bitpos */
1087
         complain_overflow_dont, /* complain_on_overflow */
1088
         bfd_elf_generic_reloc, /* special_function */
1089
         "R_SH_GOT_MEDHI16",    /* name */
1090
         FALSE,                 /* partial_inplace */
1091
         0,                      /* src_mask */
1092
         0x3fffc00,             /* dst_mask */
1093
         FALSE),                /* pcrel_offset */
1094
 
1095
  /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1096
  HOWTO (R_SH_GOT_HI16,         /* type */
1097
         48,                    /* rightshift */
1098
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1099
         64,                    /* bitsize */
1100
         FALSE,                 /* pc_relative */
1101
         10,                    /* bitpos */
1102
         complain_overflow_dont, /* complain_on_overflow */
1103
         bfd_elf_generic_reloc, /* special_function */
1104
         "R_SH_GOT_HI16",       /* name */
1105
         FALSE,                 /* partial_inplace */
1106
         0,                      /* src_mask */
1107
         0x3fffc00,             /* dst_mask */
1108
         FALSE),                /* pcrel_offset */
1109
 
1110
  /* Used in MOVI and SHORI (x & 65536).  */
1111
  HOWTO (R_SH_GOTPLT_LOW16,     /* type */
1112
         0,                      /* rightshift */
1113
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1114
         64,                    /* bitsize */
1115
         FALSE,                 /* pc_relative */
1116
         10,                    /* bitpos */
1117
         complain_overflow_dont, /* complain_on_overflow */
1118
         bfd_elf_generic_reloc, /* special_function */
1119
         "R_SH_GOTPLT_LOW16",   /* name */
1120
         FALSE,                 /* partial_inplace */
1121
         0,                      /* src_mask */
1122
         0x3fffc00,             /* dst_mask */
1123
         FALSE),                /* pcrel_offset */
1124
 
1125
  /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1126
  HOWTO (R_SH_GOTPLT_MEDLOW16,  /* type */
1127
         16,                    /* rightshift */
1128
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1129
         64,                    /* bitsize */
1130
         FALSE,                 /* pc_relative */
1131
         10,                    /* bitpos */
1132
         complain_overflow_dont, /* complain_on_overflow */
1133
         bfd_elf_generic_reloc, /* special_function */
1134
         "R_SH_GOTPLT_MEDLOW16", /* name */
1135
         FALSE,                 /* partial_inplace */
1136
         0,                      /* src_mask */
1137
         0x3fffc00,             /* dst_mask */
1138
         FALSE),                /* pcrel_offset */
1139
 
1140
  /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1141
  HOWTO (R_SH_GOTPLT_MEDHI16,   /* type */
1142
         32,                    /* rightshift */
1143
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1144
         64,                    /* bitsize */
1145
         FALSE,                 /* pc_relative */
1146
         10,                    /* bitpos */
1147
         complain_overflow_dont, /* complain_on_overflow */
1148
         bfd_elf_generic_reloc, /* special_function */
1149
         "R_SH_GOTPLT_MEDHI16", /* name */
1150
         FALSE,                 /* partial_inplace */
1151
         0,                      /* src_mask */
1152
         0x3fffc00,             /* dst_mask */
1153
         FALSE),                /* pcrel_offset */
1154
 
1155
  /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1156
  HOWTO (R_SH_GOTPLT_HI16,      /* type */
1157
         48,                    /* rightshift */
1158
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1159
         64,                    /* bitsize */
1160
         FALSE,                 /* pc_relative */
1161
         10,                    /* bitpos */
1162
         complain_overflow_dont, /* complain_on_overflow */
1163
         bfd_elf_generic_reloc, /* special_function */
1164
         "R_SH_GOTPLT_HI16",    /* name */
1165
         FALSE,                 /* partial_inplace */
1166
         0,                      /* src_mask */
1167
         0x3fffc00,             /* dst_mask */
1168
         FALSE),                /* pcrel_offset */
1169
 
1170
  /* Used in MOVI and SHORI (x & 65536).  */
1171
  HOWTO (R_SH_PLT_LOW16,        /* type */
1172
         0,                      /* rightshift */
1173
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1174
         64,                    /* bitsize */
1175
         TRUE,                  /* pc_relative */
1176
         10,                    /* bitpos */
1177
         complain_overflow_dont, /* complain_on_overflow */
1178
         bfd_elf_generic_reloc, /* special_function */
1179
         "R_SH_PLT_LOW16",      /* name */
1180
         FALSE,                 /* partial_inplace */
1181
         0,                      /* src_mask */
1182
         0x3fffc00,             /* dst_mask */
1183
         TRUE),                 /* pcrel_offset */
1184
 
1185
  /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1186
  HOWTO (R_SH_PLT_MEDLOW16,     /* type */
1187
         16,                    /* rightshift */
1188
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1189
         64,                    /* bitsize */
1190
         TRUE,                  /* pc_relative */
1191
         10,                    /* bitpos */
1192
         complain_overflow_dont, /* complain_on_overflow */
1193
         bfd_elf_generic_reloc, /* special_function */
1194
         "R_SH_PLT_MEDLOW16",   /* name */
1195
         FALSE,                 /* partial_inplace */
1196
         0,                      /* src_mask */
1197
         0x3fffc00,             /* dst_mask */
1198
         TRUE),                 /* pcrel_offset */
1199
 
1200
  /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1201
  HOWTO (R_SH_PLT_MEDHI16,      /* type */
1202
         32,                    /* rightshift */
1203
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1204
         64,                    /* bitsize */
1205
         TRUE,                  /* pc_relative */
1206
         10,                    /* bitpos */
1207
         complain_overflow_dont, /* complain_on_overflow */
1208
         bfd_elf_generic_reloc, /* special_function */
1209
         "R_SH_PLT_MEDHI16",    /* name */
1210
         FALSE,                 /* partial_inplace */
1211
         0,                      /* src_mask */
1212
         0x3fffc00,             /* dst_mask */
1213
         TRUE),                 /* pcrel_offset */
1214
 
1215
  /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1216
  HOWTO (R_SH_PLT_HI16,         /* type */
1217
         48,                    /* rightshift */
1218
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1219
         64,                    /* bitsize */
1220
         TRUE,                  /* pc_relative */
1221
         10,                    /* bitpos */
1222
         complain_overflow_dont, /* complain_on_overflow */
1223
         bfd_elf_generic_reloc, /* special_function */
1224
         "R_SH_PLT_HI16",       /* name */
1225
         FALSE,                 /* partial_inplace */
1226
         0,                      /* src_mask */
1227
         0x3fffc00,             /* dst_mask */
1228
         TRUE),                 /* pcrel_offset */
1229
 
1230
  /* Used in MOVI and SHORI (x & 65536).  */
1231
  HOWTO (R_SH_GOTOFF_LOW16,     /* type */
1232
         0,                      /* rightshift */
1233
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1234
         64,                    /* bitsize */
1235
         FALSE,                 /* pc_relative */
1236
         10,                    /* bitpos */
1237
         complain_overflow_dont, /* complain_on_overflow */
1238
         bfd_elf_generic_reloc, /* special_function */
1239
         "R_SH_GOTOFF_LOW16",   /* name */
1240
         FALSE,                 /* partial_inplace */
1241
         0,                      /* src_mask */
1242
         0x3fffc00,             /* dst_mask */
1243
         FALSE),                /* pcrel_offset */
1244
 
1245
  /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1246
  HOWTO (R_SH_GOTOFF_MEDLOW16,  /* type */
1247
         16,                    /* rightshift */
1248
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1249
         64,                    /* bitsize */
1250
         FALSE,                 /* pc_relative */
1251
         10,                    /* bitpos */
1252
         complain_overflow_dont, /* complain_on_overflow */
1253
         bfd_elf_generic_reloc, /* special_function */
1254
         "R_SH_GOTOFF_MEDLOW16", /* name */
1255
         FALSE,                 /* partial_inplace */
1256
         0,                      /* src_mask */
1257
         0x3fffc00,             /* dst_mask */
1258
         FALSE),                /* pcrel_offset */
1259
 
1260
  /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1261
  HOWTO (R_SH_GOTOFF_MEDHI16,   /* type */
1262
         32,                    /* rightshift */
1263
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1264
         64,                    /* bitsize */
1265
         FALSE,                 /* pc_relative */
1266
         10,                    /* bitpos */
1267
         complain_overflow_dont, /* complain_on_overflow */
1268
         bfd_elf_generic_reloc, /* special_function */
1269
         "R_SH_GOTOFF_MEDHI16", /* name */
1270
         FALSE,                 /* partial_inplace */
1271
         0,                      /* src_mask */
1272
         0x3fffc00,             /* dst_mask */
1273
         FALSE),                /* pcrel_offset */
1274
 
1275
  /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1276
  HOWTO (R_SH_GOTOFF_HI16,      /* type */
1277
         48,                    /* rightshift */
1278
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1279
         64,                    /* bitsize */
1280
         FALSE,                 /* pc_relative */
1281
         10,                    /* bitpos */
1282
         complain_overflow_dont, /* complain_on_overflow */
1283
         bfd_elf_generic_reloc, /* special_function */
1284
         "R_SH_GOTOFF_HI16",    /* name */
1285
         FALSE,                 /* partial_inplace */
1286
         0,                      /* src_mask */
1287
         0x3fffc00,             /* dst_mask */
1288
         FALSE),                /* pcrel_offset */
1289
 
1290
  /* Used in MOVI and SHORI (x & 65536).  */
1291
  HOWTO (R_SH_GOTPC_LOW16,      /* type */
1292
         0,                      /* rightshift */
1293
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1294
         64,                    /* bitsize */
1295
         TRUE,                  /* pc_relative */
1296
         10,                    /* bitpos */
1297
         complain_overflow_dont, /* complain_on_overflow */
1298
         bfd_elf_generic_reloc, /* special_function */
1299
         "R_SH_GOTPC_LOW16",    /* name */
1300
         FALSE,                 /* partial_inplace */
1301
         0,                      /* src_mask */
1302
         0x3fffc00,             /* dst_mask */
1303
         TRUE),                 /* pcrel_offset */
1304
 
1305
  /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1306
  HOWTO (R_SH_GOTPC_MEDLOW16,   /* type */
1307
         16,                    /* rightshift */
1308
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1309
         64,                    /* bitsize */
1310
         TRUE,                  /* pc_relative */
1311
         10,                    /* bitpos */
1312
         complain_overflow_dont, /* complain_on_overflow */
1313
         bfd_elf_generic_reloc, /* special_function */
1314
         "R_SH_GOTPC_MEDLOW16", /* name */
1315
         FALSE,                 /* partial_inplace */
1316
         0,                      /* src_mask */
1317
         0x3fffc00,             /* dst_mask */
1318
         TRUE),                 /* pcrel_offset */
1319
 
1320
  /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1321
  HOWTO (R_SH_GOTPC_MEDHI16,    /* type */
1322
         32,                    /* rightshift */
1323
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1324
         64,                    /* bitsize */
1325
         TRUE,                  /* pc_relative */
1326
         10,                    /* bitpos */
1327
         complain_overflow_dont, /* complain_on_overflow */
1328
         bfd_elf_generic_reloc, /* special_function */
1329
         "R_SH_GOTPC_MEDHI16",  /* name */
1330
         FALSE,                 /* partial_inplace */
1331
         0,                      /* src_mask */
1332
         0x3fffc00,             /* dst_mask */
1333
         TRUE),                 /* pcrel_offset */
1334
 
1335
  /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1336
  HOWTO (R_SH_GOTPC_HI16,       /* type */
1337
         48,                    /* rightshift */
1338
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1339
         64,                    /* bitsize */
1340
         TRUE,                  /* pc_relative */
1341
         10,                    /* bitpos */
1342
         complain_overflow_dont, /* complain_on_overflow */
1343
         bfd_elf_generic_reloc, /* special_function */
1344
         "R_SH_GOTPC_HI16",     /* name */
1345
         FALSE,                 /* partial_inplace */
1346
         0,                      /* src_mask */
1347
         0x3fffc00,             /* dst_mask */
1348
         TRUE),                 /* pcrel_offset */
1349
 
1350
  /* Used in LD.L, FLD.S et al.  */
1351
  HOWTO (R_SH_GOT10BY4,         /* type */
1352
         2,                     /* rightshift */
1353
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1354
         12,                    /* bitsize */
1355
         FALSE,                 /* pc_relative */
1356
         10,                    /* bitpos */
1357
         complain_overflow_signed, /* complain_on_overflow */
1358
         bfd_elf_generic_reloc, /* special_function */
1359
         "R_SH_GOT10BY4",       /* name */
1360
         FALSE,                 /* partial_inplace */
1361
         0,                      /* src_mask */
1362
         0xffc00,               /* dst_mask */
1363
         FALSE),                /* pcrel_offset */
1364
 
1365
  /* Used in LD.L, FLD.S et al.  */
1366
  HOWTO (R_SH_GOTPLT10BY4,      /* type */
1367
         2,                     /* rightshift */
1368
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1369
         12,                    /* bitsize */
1370
         FALSE,                 /* pc_relative */
1371
         10,                    /* bitpos */
1372
         complain_overflow_signed, /* complain_on_overflow */
1373
         bfd_elf_generic_reloc, /* special_function */
1374
         "R_SH_GOTPLT10BY4",    /* name */
1375
         FALSE,                 /* partial_inplace */
1376
         0,                      /* src_mask */
1377
         0xffc00,               /* dst_mask */
1378
         FALSE),                /* pcrel_offset */
1379
 
1380
  /* Used in FLD.D, FST.P et al.  */
1381
  HOWTO (R_SH_GOT10BY8,         /* type */
1382
         3,                     /* rightshift */
1383
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1384
         13,                    /* bitsize */
1385
         FALSE,                 /* pc_relative */
1386
         10,                    /* bitpos */
1387
         complain_overflow_signed, /* complain_on_overflow */
1388
         bfd_elf_generic_reloc, /* special_function */
1389
         "R_SH_GOT10BY8",       /* name */
1390
         FALSE,                 /* partial_inplace */
1391
         0,                      /* src_mask */
1392
         0xffc00,               /* dst_mask */
1393
         FALSE),                /* pcrel_offset */
1394
 
1395
  /* Used in FLD.D, FST.P et al.  */
1396
  HOWTO (R_SH_GOTPLT10BY8,      /* type */
1397
         3,                     /* rightshift */
1398
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1399
         13,                    /* bitsize */
1400
         FALSE,                 /* pc_relative */
1401
         10,                    /* bitpos */
1402
         complain_overflow_signed, /* complain_on_overflow */
1403
         bfd_elf_generic_reloc, /* special_function */
1404
         "R_SH_GOTPLT10BY8",    /* name */
1405
         FALSE,                 /* partial_inplace */
1406
         0,                      /* src_mask */
1407
         0xffc00,               /* dst_mask */
1408
         FALSE),                /* pcrel_offset */
1409
 
1410
  HOWTO (R_SH_COPY64,           /* type */
1411
         0,                      /* rightshift */
1412
         4,                     /* size (0 = byte, 1 = short, 2 = long) */
1413
         64,                    /* bitsize */
1414
         FALSE,                 /* pc_relative */
1415
         0,                      /* bitpos */
1416
         complain_overflow_dont, /* complain_on_overflow */
1417
         bfd_elf_generic_reloc, /* special_function */
1418
         "R_SH_COPY64",         /* name */
1419
         FALSE,                 /* partial_inplace */
1420
         0,                      /* src_mask */
1421
         ((bfd_vma) 0) - 1,      /* dst_mask */
1422
         FALSE),                /* pcrel_offset */
1423
 
1424
  HOWTO (R_SH_GLOB_DAT64,       /* type */
1425
         0,                      /* rightshift */
1426
         4,                     /* size (0 = byte, 1 = short, 2 = long) */
1427
         64,                    /* bitsize */
1428
         FALSE,                 /* pc_relative */
1429
         0,                      /* bitpos */
1430
         complain_overflow_dont, /* complain_on_overflow */
1431
         bfd_elf_generic_reloc, /* special_function */
1432
         "R_SH_GLOB_DAT64",     /* name */
1433
         FALSE,                 /* partial_inplace */
1434
         0,                      /* src_mask */
1435
         ((bfd_vma) 0) - 1,      /* dst_mask */
1436
         FALSE),                /* pcrel_offset */
1437
 
1438
  HOWTO (R_SH_JMP_SLOT64,       /* type */
1439
         0,                      /* rightshift */
1440
         4,                     /* size (0 = byte, 1 = short, 2 = long) */
1441
         64,                    /* bitsize */
1442
         FALSE,                 /* pc_relative */
1443
         0,                      /* bitpos */
1444
         complain_overflow_dont, /* complain_on_overflow */
1445
         bfd_elf_generic_reloc, /* special_function */
1446
         "R_SH_JMP_SLOT64",     /* name */
1447
         FALSE,                 /* partial_inplace */
1448
         0,                      /* src_mask */
1449
         ((bfd_vma) 0) - 1,      /* dst_mask */
1450
         FALSE),                /* pcrel_offset */
1451
 
1452
  HOWTO (R_SH_RELATIVE64,       /* type */
1453
         0,                      /* rightshift */
1454
         4,                     /* size (0 = byte, 1 = short, 2 = long) */
1455
         64,                    /* bitsize */
1456
         FALSE,                 /* pc_relative */
1457
         0,                      /* bitpos */
1458
         complain_overflow_dont, /* complain_on_overflow */
1459
         bfd_elf_generic_reloc, /* special_function */
1460
         "R_SH_RELATIVE64",     /* name */
1461
         FALSE,                 /* partial_inplace */
1462
         0,                      /* src_mask */
1463
         ((bfd_vma) 0) - 1,      /* dst_mask */
1464
         FALSE),                /* pcrel_offset */
1465
#else
1466
  EMPTY_HOWTO (169),
1467
  EMPTY_HOWTO (170),
1468
  EMPTY_HOWTO (171),
1469
  EMPTY_HOWTO (172),
1470
  EMPTY_HOWTO (173),
1471
  EMPTY_HOWTO (174),
1472
  EMPTY_HOWTO (175),
1473
  EMPTY_HOWTO (176),
1474
  EMPTY_HOWTO (177),
1475
  EMPTY_HOWTO (178),
1476
  EMPTY_HOWTO (179),
1477
  EMPTY_HOWTO (180),
1478
  EMPTY_HOWTO (181),
1479
  EMPTY_HOWTO (182),
1480
  EMPTY_HOWTO (183),
1481
  EMPTY_HOWTO (184),
1482
  EMPTY_HOWTO (185),
1483
  EMPTY_HOWTO (186),
1484
  EMPTY_HOWTO (187),
1485
  EMPTY_HOWTO (188),
1486
  EMPTY_HOWTO (189),
1487
  EMPTY_HOWTO (190),
1488
  EMPTY_HOWTO (191),
1489
  EMPTY_HOWTO (192),
1490
  EMPTY_HOWTO (193),
1491
  EMPTY_HOWTO (194),
1492
  EMPTY_HOWTO (195),
1493
  EMPTY_HOWTO (196),
1494
#endif
1495
 
1496
  EMPTY_HOWTO (197),
1497
  EMPTY_HOWTO (198),
1498
  EMPTY_HOWTO (199),
1499
  EMPTY_HOWTO (200),
1500
 
1501
  /* FDPIC-relative offset to a GOT entry, for movi20.  */
1502
  HOWTO (R_SH_GOT20,            /* type */
1503
         0,                      /* rightshift */
1504
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1505
         20,                    /* bitsize */
1506
         FALSE,                 /* pc_relative */
1507
         0,                      /* bitpos */
1508
         complain_overflow_signed, /* complain_on_overflow */
1509
         bfd_elf_generic_reloc, /* special_function */
1510
         "R_SH_GOT20",          /* name */
1511
         FALSE,                 /* partial_inplace */
1512
         0,                      /* src_mask */
1513
         0x00f0ffff,            /* dst_mask */
1514
         FALSE),                /* pcrel_offset */
1515
 
1516
  /* FDPIC-relative offset to a data object, for movi20.  */
1517
  HOWTO (R_SH_GOTOFF20,         /* type */
1518
         0,                      /* rightshift */
1519
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1520
         20,                    /* bitsize */
1521
         FALSE,                 /* pc_relative */
1522
         0,                      /* bitpos */
1523
         complain_overflow_signed, /* complain_on_overflow */
1524
         bfd_elf_generic_reloc, /* special_function */
1525
         "R_SH_GOTOFF20",       /* name */
1526
         FALSE,                 /* partial_inplace */
1527
         0,                      /* src_mask */
1528
         0x00f0ffff,            /* dst_mask */
1529
         FALSE),                /* pcrel_offset */
1530
 
1531
  /* FDPIC-relative offset to a GOT entry for a function descriptor.  */
1532
  HOWTO (R_SH_GOTFUNCDESC,      /* type */
1533
         0,                      /* rightshift */
1534
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1535
         32,                    /* bitsize */
1536
         FALSE,                 /* pc_relative */
1537
         0,                      /* bitpos */
1538
         complain_overflow_signed, /* complain_on_overflow */
1539
         bfd_elf_generic_reloc, /* special_function */
1540
         "R_SH_GOTFUNCDESC",    /* name */
1541
         FALSE,                 /* partial_inplace */
1542
         0,                      /* src_mask */
1543
         0xffffffff,            /* dst_mask */
1544
         FALSE),                /* pcrel_offset */
1545
 
1546
  /* FDPIC-relative offset to a GOT entry for a function descriptor,
1547
     for movi20.  */
1548
  HOWTO (R_SH_GOTFUNCDESC20,    /* type */
1549
         0,                      /* rightshift */
1550
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1551
         20,                    /* bitsize */
1552
         FALSE,                 /* pc_relative */
1553
         0,                      /* bitpos */
1554
         complain_overflow_signed, /* complain_on_overflow */
1555
         bfd_elf_generic_reloc, /* special_function */
1556
         "R_SH_GOTFUNCDESC20",  /* name */
1557
         FALSE,                 /* partial_inplace */
1558
         0,                      /* src_mask */
1559
         0x00f0ffff,            /* dst_mask */
1560
         FALSE),                /* pcrel_offset */
1561
 
1562
  /* FDPIC-relative offset to a function descriptor.  */
1563
  HOWTO (R_SH_GOTOFFFUNCDESC,   /* type */
1564
         0,                      /* rightshift */
1565
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1566
         32,                    /* bitsize */
1567
         FALSE,                 /* pc_relative */
1568
         0,                      /* bitpos */
1569
         complain_overflow_signed, /* complain_on_overflow */
1570
         bfd_elf_generic_reloc, /* special_function */
1571
         "R_SH_GOTOFFFUNCDESC", /* name */
1572
         FALSE,                 /* partial_inplace */
1573
         0,                      /* src_mask */
1574
         0xffffffff,            /* dst_mask */
1575
         FALSE),                /* pcrel_offset */
1576
 
1577
  /* FDPIC-relative offset to a function descriptor, for movi20.  */
1578
  HOWTO (R_SH_GOTOFFFUNCDESC20, /* type */
1579
         0,                      /* rightshift */
1580
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1581
         20,                    /* bitsize */
1582
         FALSE,                 /* pc_relative */
1583
         0,                      /* bitpos */
1584
         complain_overflow_signed, /* complain_on_overflow */
1585
         bfd_elf_generic_reloc, /* special_function */
1586
         "R_SH_GOTOFFFUNCDESC20", /* name */
1587
         FALSE,                 /* partial_inplace */
1588
         0,                      /* src_mask */
1589
         0x00f0ffff,            /* dst_mask */
1590
         FALSE),                /* pcrel_offset */
1591
 
1592
  /* Address of an official function descriptor.  */
1593
  HOWTO (R_SH_FUNCDESC,         /* type */
1594
         0,                      /* rightshift */
1595
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1596
         32,                    /* bitsize */
1597
         FALSE,                 /* pc_relative */
1598
         0,                      /* bitpos */
1599
         complain_overflow_signed, /* complain_on_overflow */
1600
         bfd_elf_generic_reloc, /* special_function */
1601
         "R_SH_FUNCDESC",       /* name */
1602
         FALSE,                 /* partial_inplace */
1603
         0,                      /* src_mask */
1604
         0xffffffff,            /* dst_mask */
1605
         FALSE),                /* pcrel_offset */
1606
 
1607
  /* Function descriptor to be filled in by the dynamic linker.  */
1608
  HOWTO (R_SH_FUNCDESC_VALUE,   /* type */
1609
         0,                      /* rightshift */
1610
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1611
         64,                    /* bitsize */
1612
         FALSE,                 /* pc_relative */
1613
         0,                      /* bitpos */
1614
         complain_overflow_signed, /* complain_on_overflow */
1615
         bfd_elf_generic_reloc, /* special_function */
1616
         "R_SH_FUNCDESC_VALUE", /* name */
1617
         FALSE,                 /* partial_inplace */
1618
         0,                      /* src_mask */
1619
         0xffffffff,            /* dst_mask */
1620
         FALSE),                /* pcrel_offset */
1621
 
1622
#ifdef INCLUDE_SHMEDIA
1623
  EMPTY_HOWTO (209),
1624
  EMPTY_HOWTO (210),
1625
  EMPTY_HOWTO (211),
1626
  EMPTY_HOWTO (212),
1627
  EMPTY_HOWTO (213),
1628
  EMPTY_HOWTO (214),
1629
  EMPTY_HOWTO (215),
1630
  EMPTY_HOWTO (216),
1631
  EMPTY_HOWTO (217),
1632
  EMPTY_HOWTO (218),
1633
  EMPTY_HOWTO (219),
1634
  EMPTY_HOWTO (220),
1635
  EMPTY_HOWTO (221),
1636
  EMPTY_HOWTO (222),
1637
  EMPTY_HOWTO (223),
1638
  EMPTY_HOWTO (224),
1639
  EMPTY_HOWTO (225),
1640
  EMPTY_HOWTO (226),
1641
  EMPTY_HOWTO (227),
1642
  EMPTY_HOWTO (228),
1643
  EMPTY_HOWTO (229),
1644
  EMPTY_HOWTO (230),
1645
  EMPTY_HOWTO (231),
1646
  EMPTY_HOWTO (232),
1647
  EMPTY_HOWTO (233),
1648
  EMPTY_HOWTO (234),
1649
  EMPTY_HOWTO (235),
1650
  EMPTY_HOWTO (236),
1651
  EMPTY_HOWTO (237),
1652
  EMPTY_HOWTO (238),
1653
  EMPTY_HOWTO (239),
1654
  EMPTY_HOWTO (240),
1655
  EMPTY_HOWTO (241),
1656
 
1657
  /* Relocations for SHmedia code.  None of these are partial_inplace or
1658
     use the field being relocated (except R_SH_PT_16).  */
1659
 
1660
  /* The assembler will generate this reloc before a block of SHmedia
1661
     instructions.  A section should be processed as assuming it contains
1662
     data, unless this reloc is seen.  Note that a block of SHcompact
1663
     instructions are instead preceded by R_SH_CODE.
1664
     This is currently not implemented, but should be used for SHmedia
1665
     linker relaxation.  */
1666
  HOWTO (R_SH_SHMEDIA_CODE,     /* type */
1667
         0,                      /* rightshift */
1668
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
1669
         0,                      /* bitsize */
1670
         FALSE,                 /* pc_relative */
1671
         0,                      /* bitpos */
1672
         complain_overflow_unsigned, /* complain_on_overflow */
1673
         sh_elf_ignore_reloc,   /* special_function */
1674
         "R_SH_SHMEDIA_CODE",   /* name */
1675
         FALSE,                 /* partial_inplace */
1676
         0,                      /* src_mask */
1677
         0,                      /* dst_mask */
1678
         FALSE),                /* pcrel_offset */
1679
 
1680
  /* The assembler will generate this reloc at a PTA or PTB instruction,
1681
     and the linker checks the right type of target, or changes a PTA to a
1682
     PTB, if the original insn was PT.  */
1683
  HOWTO (R_SH_PT_16,            /* type */
1684
         2,                     /* rightshift */
1685
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1686
         18,                    /* bitsize */
1687
         TRUE,                  /* pc_relative */
1688
         10,                    /* bitpos */
1689
         complain_overflow_signed, /* complain_on_overflow */
1690
         bfd_elf_generic_reloc, /* special_function */
1691
         "R_SH_PT_16",          /* name */
1692
         FALSE,                 /* partial_inplace */
1693
         0,                      /* src_mask */
1694
         0x3fffc00,             /* dst_mask */
1695
         TRUE),                 /* pcrel_offset */
1696
 
1697
  /* Used in unexpanded MOVI.  */
1698
  HOWTO (R_SH_IMMS16,           /* type */
1699
         0,                      /* rightshift */
1700
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1701
         16,                    /* bitsize */
1702
         FALSE,                 /* pc_relative */
1703
         10,                    /* bitpos */
1704
         complain_overflow_signed, /* complain_on_overflow */
1705
         bfd_elf_generic_reloc, /* special_function */
1706
         "R_SH_IMMS16",         /* name */
1707
         FALSE,                 /* partial_inplace */
1708
         0,                      /* src_mask */
1709
         0x3fffc00,             /* dst_mask */
1710
         FALSE),                /* pcrel_offset */
1711
 
1712
  /* Used in SHORI.  */
1713
  HOWTO (R_SH_IMMU16,           /* type */
1714
         0,                      /* rightshift */
1715
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1716
         16,                    /* bitsize */
1717
         FALSE,                 /* pc_relative */
1718
         10,                    /* bitpos */
1719
         complain_overflow_unsigned, /* complain_on_overflow */
1720
         bfd_elf_generic_reloc, /* special_function */
1721
         "R_SH_IMMU16",         /* name */
1722
         FALSE,                 /* partial_inplace */
1723
         0,                      /* src_mask */
1724
         0x3fffc00,             /* dst_mask */
1725
         FALSE),                /* pcrel_offset */
1726
 
1727
  /* Used in MOVI and SHORI (x & 65536).  */
1728
  HOWTO (R_SH_IMM_LOW16,        /* type */
1729
         0,                      /* rightshift */
1730
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1731
         64,                    /* bitsize */
1732
         FALSE,                 /* pc_relative */
1733
         10,                    /* bitpos */
1734
         complain_overflow_dont, /* complain_on_overflow */
1735
         bfd_elf_generic_reloc, /* special_function */
1736
         "R_SH_IMM_LOW16",      /* name */
1737
         FALSE,                 /* partial_inplace */
1738
         0,                      /* src_mask */
1739
         0x3fffc00,             /* dst_mask */
1740
         FALSE),                /* pcrel_offset */
1741
 
1742
  /* Used in MOVI and SHORI ((x - $) & 65536).  */
1743
  HOWTO (R_SH_IMM_LOW16_PCREL,  /* type */
1744
         0,                      /* rightshift */
1745
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1746
         64,                    /* bitsize */
1747
         TRUE,                  /* pc_relative */
1748
         10,                    /* bitpos */
1749
         complain_overflow_dont, /* complain_on_overflow */
1750
         bfd_elf_generic_reloc, /* special_function */
1751
         "R_SH_IMM_LOW16_PCREL", /* name */
1752
         FALSE,                 /* partial_inplace */
1753
         0,                      /* src_mask */
1754
         0x3fffc00,             /* dst_mask */
1755
         TRUE),                 /* pcrel_offset */
1756
 
1757
  /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1758
  HOWTO (R_SH_IMM_MEDLOW16,     /* type */
1759
         16,                    /* rightshift */
1760
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1761
         64,                    /* bitsize */
1762
         FALSE,                 /* pc_relative */
1763
         10,                    /* bitpos */
1764
         complain_overflow_dont, /* complain_on_overflow */
1765
         bfd_elf_generic_reloc, /* special_function */
1766
         "R_SH_IMM_MEDLOW16",   /* name */
1767
         FALSE,                 /* partial_inplace */
1768
         0,                      /* src_mask */
1769
         0x3fffc00,             /* dst_mask */
1770
         FALSE),                /* pcrel_offset */
1771
 
1772
  /* Used in MOVI and SHORI (((x - $) >> 16) & 65536).  */
1773
  HOWTO (R_SH_IMM_MEDLOW16_PCREL, /* type */
1774
         16,                    /* rightshift */
1775
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1776
         64,                    /* bitsize */
1777
         TRUE,                  /* pc_relative */
1778
         10,                    /* bitpos */
1779
         complain_overflow_dont, /* complain_on_overflow */
1780
         bfd_elf_generic_reloc, /* special_function */
1781
         "R_SH_IMM_MEDLOW16_PCREL", /* name */
1782
         FALSE,                 /* partial_inplace */
1783
         0,                      /* src_mask */
1784
         0x3fffc00,             /* dst_mask */
1785
         TRUE),                 /* pcrel_offset */
1786
 
1787
  /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1788
  HOWTO (R_SH_IMM_MEDHI16,      /* type */
1789
         32,                    /* rightshift */
1790
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1791
         64,                    /* bitsize */
1792
         FALSE,                 /* pc_relative */
1793
         10,                    /* bitpos */
1794
         complain_overflow_dont, /* complain_on_overflow */
1795
         bfd_elf_generic_reloc, /* special_function */
1796
         "R_SH_IMM_MEDHI16",    /* name */
1797
         FALSE,                 /* partial_inplace */
1798
         0,                      /* src_mask */
1799
         0x3fffc00,             /* dst_mask */
1800
         FALSE),                /* pcrel_offset */
1801
 
1802
  /* Used in MOVI and SHORI (((x - $) >> 32) & 65536).  */
1803
  HOWTO (R_SH_IMM_MEDHI16_PCREL, /* type */
1804
         32,                    /* rightshift */
1805
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1806
         64,                    /* bitsize */
1807
         TRUE,                  /* pc_relative */
1808
         10,                    /* bitpos */
1809
         complain_overflow_dont, /* complain_on_overflow */
1810
         bfd_elf_generic_reloc, /* special_function */
1811
         "R_SH_IMM_MEDHI16_PCREL", /* name */
1812
         FALSE,                 /* partial_inplace */
1813
         0,                      /* src_mask */
1814
         0x3fffc00,             /* dst_mask */
1815
         TRUE),                 /* pcrel_offset */
1816
 
1817
  /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1818
  HOWTO (R_SH_IMM_HI16,         /* type */
1819
         48,                    /* rightshift */
1820
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1821
         64,                    /* bitsize */
1822
         FALSE,                 /* pc_relative */
1823
         10,                    /* bitpos */
1824
         complain_overflow_dont, /* complain_on_overflow */
1825
         bfd_elf_generic_reloc, /* special_function */
1826
         "R_SH_IMM_HI16",       /* name */
1827
         FALSE,                 /* partial_inplace */
1828
         0,                      /* src_mask */
1829
         0x3fffc00,             /* dst_mask */
1830
         FALSE),                /* pcrel_offset */
1831
 
1832
  /* Used in MOVI and SHORI (((x - $) >> 48) & 65536).  */
1833
  HOWTO (R_SH_IMM_HI16_PCREL,   /* type */
1834
         48,                    /* rightshift */
1835
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1836
         64,                    /* bitsize */
1837
         TRUE,                  /* pc_relative */
1838
         10,                    /* bitpos */
1839
         complain_overflow_dont, /* complain_on_overflow */
1840
         bfd_elf_generic_reloc, /* special_function */
1841
         "R_SH_IMM_HI16_PCREL", /* name */
1842
         FALSE,                 /* partial_inplace */
1843
         0,                      /* src_mask */
1844
         0x3fffc00,             /* dst_mask */
1845
         TRUE),                 /* pcrel_offset */
1846
 
1847
  /* For the .uaquad pseudo.  */
1848
  HOWTO (R_SH_64,               /* type */
1849
         0,                      /* rightshift */
1850
         4,                     /* size (0 = byte, 1 = short, 2 = long) */
1851
         64,                    /* bitsize */
1852
         FALSE,                 /* pc_relative */
1853
         0,                      /* bitpos */
1854
         complain_overflow_dont, /* complain_on_overflow */
1855
         bfd_elf_generic_reloc, /* special_function */
1856
         "R_SH_64",             /* name */
1857
         FALSE,                 /* partial_inplace */
1858
         0,                      /* src_mask */
1859
         ((bfd_vma) 0) - 1,      /* dst_mask */
1860
         FALSE),                /* pcrel_offset */
1861
 
1862
  /* For the .uaquad pseudo, (x - $).  */
1863
  HOWTO (R_SH_64_PCREL,         /* type */
1864
         48,                    /* rightshift */
1865
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1866
         64,                    /* bitsize */
1867
         TRUE,                  /* pc_relative */
1868
         10,                    /* bitpos */
1869
         complain_overflow_dont, /* complain_on_overflow */
1870
         bfd_elf_generic_reloc, /* special_function */
1871
         "R_SH_64_PCREL",       /* name */
1872
         FALSE,                 /* partial_inplace */
1873
         0,                      /* src_mask */
1874
         ((bfd_vma) 0) - 1,      /* dst_mask */
1875
         TRUE),                 /* pcrel_offset */
1876
 
1877
#endif
1878
#undef SH_PARTIAL32
1879
#undef SH_SRC_MASK32
1880
#undef SH_ELF_RELOC

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.