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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [bfd/] [elf32-sh-relocs.h] - Blame information for rev 227

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

Line No. Rev Author Line
1 227 jeremybenn
/* Copyright 2006, 2007 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
 
1466
  EMPTY_HOWTO (197),
1467
  EMPTY_HOWTO (198),
1468
  EMPTY_HOWTO (199),
1469
  EMPTY_HOWTO (200),
1470
  EMPTY_HOWTO (201),
1471
  EMPTY_HOWTO (202),
1472
  EMPTY_HOWTO (203),
1473
  EMPTY_HOWTO (204),
1474
  EMPTY_HOWTO (205),
1475
  EMPTY_HOWTO (206),
1476
  EMPTY_HOWTO (207),
1477
  EMPTY_HOWTO (208),
1478
  EMPTY_HOWTO (209),
1479
  EMPTY_HOWTO (210),
1480
  EMPTY_HOWTO (211),
1481
  EMPTY_HOWTO (212),
1482
  EMPTY_HOWTO (213),
1483
  EMPTY_HOWTO (214),
1484
  EMPTY_HOWTO (215),
1485
  EMPTY_HOWTO (216),
1486
  EMPTY_HOWTO (217),
1487
  EMPTY_HOWTO (218),
1488
  EMPTY_HOWTO (219),
1489
  EMPTY_HOWTO (220),
1490
  EMPTY_HOWTO (221),
1491
  EMPTY_HOWTO (222),
1492
  EMPTY_HOWTO (223),
1493
  EMPTY_HOWTO (224),
1494
  EMPTY_HOWTO (225),
1495
  EMPTY_HOWTO (226),
1496
  EMPTY_HOWTO (227),
1497
  EMPTY_HOWTO (228),
1498
  EMPTY_HOWTO (229),
1499
  EMPTY_HOWTO (230),
1500
  EMPTY_HOWTO (231),
1501
  EMPTY_HOWTO (232),
1502
  EMPTY_HOWTO (233),
1503
  EMPTY_HOWTO (234),
1504
  EMPTY_HOWTO (235),
1505
  EMPTY_HOWTO (236),
1506
  EMPTY_HOWTO (237),
1507
  EMPTY_HOWTO (238),
1508
  EMPTY_HOWTO (239),
1509
  EMPTY_HOWTO (240),
1510
  EMPTY_HOWTO (241),
1511
 
1512
  /* Relocations for SHmedia code.  None of these are partial_inplace or
1513
     use the field being relocated (except R_SH_PT_16).  */
1514
 
1515
  /* The assembler will generate this reloc before a block of SHmedia
1516
     instructions.  A section should be processed as assuming it contains
1517
     data, unless this reloc is seen.  Note that a block of SHcompact
1518
     instructions are instead preceded by R_SH_CODE.
1519
     This is currently not implemented, but should be used for SHmedia
1520
     linker relaxation.  */
1521
  HOWTO (R_SH_SHMEDIA_CODE,     /* type */
1522
         0,                      /* rightshift */
1523
         1,                     /* size (0 = byte, 1 = short, 2 = long) */
1524
         0,                      /* bitsize */
1525
         FALSE,                 /* pc_relative */
1526
         0,                      /* bitpos */
1527
         complain_overflow_unsigned, /* complain_on_overflow */
1528
         sh_elf_ignore_reloc,   /* special_function */
1529
         "R_SH_SHMEDIA_CODE",   /* name */
1530
         FALSE,                 /* partial_inplace */
1531
         0,                      /* src_mask */
1532
         0,                      /* dst_mask */
1533
         FALSE),                /* pcrel_offset */
1534
 
1535
  /* The assembler will generate this reloc at a PTA or PTB instruction,
1536
     and the linker checks the right type of target, or changes a PTA to a
1537
     PTB, if the original insn was PT.  */
1538
  HOWTO (R_SH_PT_16,            /* type */
1539
         2,                     /* rightshift */
1540
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1541
         18,                    /* bitsize */
1542
         TRUE,                  /* pc_relative */
1543
         10,                    /* bitpos */
1544
         complain_overflow_signed, /* complain_on_overflow */
1545
         bfd_elf_generic_reloc, /* special_function */
1546
         "R_SH_PT_16",          /* name */
1547
         FALSE,                 /* partial_inplace */
1548
         0,                      /* src_mask */
1549
         0x3fffc00,             /* dst_mask */
1550
         TRUE),                 /* pcrel_offset */
1551
 
1552
  /* Used in unexpanded MOVI.  */
1553
  HOWTO (R_SH_IMMS16,           /* type */
1554
         0,                      /* rightshift */
1555
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1556
         16,                    /* bitsize */
1557
         FALSE,                 /* pc_relative */
1558
         10,                    /* bitpos */
1559
         complain_overflow_signed, /* complain_on_overflow */
1560
         bfd_elf_generic_reloc, /* special_function */
1561
         "R_SH_IMMS16",         /* name */
1562
         FALSE,                 /* partial_inplace */
1563
         0,                      /* src_mask */
1564
         0x3fffc00,             /* dst_mask */
1565
         FALSE),                /* pcrel_offset */
1566
 
1567
  /* Used in SHORI.  */
1568
  HOWTO (R_SH_IMMU16,           /* type */
1569
         0,                      /* rightshift */
1570
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1571
         16,                    /* bitsize */
1572
         FALSE,                 /* pc_relative */
1573
         10,                    /* bitpos */
1574
         complain_overflow_unsigned, /* complain_on_overflow */
1575
         bfd_elf_generic_reloc, /* special_function */
1576
         "R_SH_IMMU16",         /* name */
1577
         FALSE,                 /* partial_inplace */
1578
         0,                      /* src_mask */
1579
         0x3fffc00,             /* dst_mask */
1580
         FALSE),                /* pcrel_offset */
1581
 
1582
  /* Used in MOVI and SHORI (x & 65536).  */
1583
  HOWTO (R_SH_IMM_LOW16,        /* type */
1584
         0,                      /* rightshift */
1585
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1586
         64,                    /* bitsize */
1587
         FALSE,                 /* pc_relative */
1588
         10,                    /* bitpos */
1589
         complain_overflow_dont, /* complain_on_overflow */
1590
         bfd_elf_generic_reloc, /* special_function */
1591
         "R_SH_IMM_LOW16",      /* name */
1592
         FALSE,                 /* partial_inplace */
1593
         0,                      /* src_mask */
1594
         0x3fffc00,             /* dst_mask */
1595
         FALSE),                /* pcrel_offset */
1596
 
1597
  /* Used in MOVI and SHORI ((x - $) & 65536).  */
1598
  HOWTO (R_SH_IMM_LOW16_PCREL,  /* type */
1599
         0,                      /* rightshift */
1600
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1601
         64,                    /* bitsize */
1602
         TRUE,                  /* pc_relative */
1603
         10,                    /* bitpos */
1604
         complain_overflow_dont, /* complain_on_overflow */
1605
         bfd_elf_generic_reloc, /* special_function */
1606
         "R_SH_IMM_LOW16_PCREL", /* name */
1607
         FALSE,                 /* partial_inplace */
1608
         0,                      /* src_mask */
1609
         0x3fffc00,             /* dst_mask */
1610
         TRUE),                 /* pcrel_offset */
1611
 
1612
  /* Used in MOVI and SHORI ((x >> 16) & 65536).  */
1613
  HOWTO (R_SH_IMM_MEDLOW16,     /* type */
1614
         16,                    /* rightshift */
1615
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1616
         64,                    /* bitsize */
1617
         FALSE,                 /* pc_relative */
1618
         10,                    /* bitpos */
1619
         complain_overflow_dont, /* complain_on_overflow */
1620
         bfd_elf_generic_reloc, /* special_function */
1621
         "R_SH_IMM_MEDLOW16",   /* name */
1622
         FALSE,                 /* partial_inplace */
1623
         0,                      /* src_mask */
1624
         0x3fffc00,             /* dst_mask */
1625
         FALSE),                /* pcrel_offset */
1626
 
1627
  /* Used in MOVI and SHORI (((x - $) >> 16) & 65536).  */
1628
  HOWTO (R_SH_IMM_MEDLOW16_PCREL, /* type */
1629
         16,                    /* rightshift */
1630
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1631
         64,                    /* bitsize */
1632
         TRUE,                  /* pc_relative */
1633
         10,                    /* bitpos */
1634
         complain_overflow_dont, /* complain_on_overflow */
1635
         bfd_elf_generic_reloc, /* special_function */
1636
         "R_SH_IMM_MEDLOW16_PCREL", /* name */
1637
         FALSE,                 /* partial_inplace */
1638
         0,                      /* src_mask */
1639
         0x3fffc00,             /* dst_mask */
1640
         TRUE),                 /* pcrel_offset */
1641
 
1642
  /* Used in MOVI and SHORI ((x >> 32) & 65536).  */
1643
  HOWTO (R_SH_IMM_MEDHI16,      /* type */
1644
         32,                    /* rightshift */
1645
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1646
         64,                    /* bitsize */
1647
         FALSE,                 /* pc_relative */
1648
         10,                    /* bitpos */
1649
         complain_overflow_dont, /* complain_on_overflow */
1650
         bfd_elf_generic_reloc, /* special_function */
1651
         "R_SH_IMM_MEDHI16",    /* name */
1652
         FALSE,                 /* partial_inplace */
1653
         0,                      /* src_mask */
1654
         0x3fffc00,             /* dst_mask */
1655
         FALSE),                /* pcrel_offset */
1656
 
1657
  /* Used in MOVI and SHORI (((x - $) >> 32) & 65536).  */
1658
  HOWTO (R_SH_IMM_MEDHI16_PCREL, /* type */
1659
         32,                    /* rightshift */
1660
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1661
         64,                    /* bitsize */
1662
         TRUE,                  /* pc_relative */
1663
         10,                    /* bitpos */
1664
         complain_overflow_dont, /* complain_on_overflow */
1665
         bfd_elf_generic_reloc, /* special_function */
1666
         "R_SH_IMM_MEDHI16_PCREL", /* name */
1667
         FALSE,                 /* partial_inplace */
1668
         0,                      /* src_mask */
1669
         0x3fffc00,             /* dst_mask */
1670
         TRUE),                 /* pcrel_offset */
1671
 
1672
  /* Used in MOVI and SHORI ((x >> 48) & 65536).  */
1673
  HOWTO (R_SH_IMM_HI16,         /* type */
1674
         48,                    /* rightshift */
1675
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1676
         64,                    /* bitsize */
1677
         FALSE,                 /* pc_relative */
1678
         10,                    /* bitpos */
1679
         complain_overflow_dont, /* complain_on_overflow */
1680
         bfd_elf_generic_reloc, /* special_function */
1681
         "R_SH_IMM_HI16",       /* name */
1682
         FALSE,                 /* partial_inplace */
1683
         0,                      /* src_mask */
1684
         0x3fffc00,             /* dst_mask */
1685
         FALSE),                /* pcrel_offset */
1686
 
1687
  /* Used in MOVI and SHORI (((x - $) >> 48) & 65536).  */
1688
  HOWTO (R_SH_IMM_HI16_PCREL,   /* type */
1689
         48,                    /* rightshift */
1690
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1691
         64,                    /* bitsize */
1692
         TRUE,                  /* pc_relative */
1693
         10,                    /* bitpos */
1694
         complain_overflow_dont, /* complain_on_overflow */
1695
         bfd_elf_generic_reloc, /* special_function */
1696
         "R_SH_IMM_HI16_PCREL", /* name */
1697
         FALSE,                 /* partial_inplace */
1698
         0,                      /* src_mask */
1699
         0x3fffc00,             /* dst_mask */
1700
         TRUE),                 /* pcrel_offset */
1701
 
1702
  /* For the .uaquad pseudo.  */
1703
  HOWTO (R_SH_64,               /* type */
1704
         0,                      /* rightshift */
1705
         4,                     /* size (0 = byte, 1 = short, 2 = long) */
1706
         64,                    /* bitsize */
1707
         FALSE,                 /* pc_relative */
1708
         0,                      /* bitpos */
1709
         complain_overflow_dont, /* complain_on_overflow */
1710
         bfd_elf_generic_reloc, /* special_function */
1711
         "R_SH_64",             /* name */
1712
         FALSE,                 /* partial_inplace */
1713
         0,                      /* src_mask */
1714
         ((bfd_vma) 0) - 1,      /* dst_mask */
1715
         FALSE),                /* pcrel_offset */
1716
 
1717
  /* For the .uaquad pseudo, (x - $).  */
1718
  HOWTO (R_SH_64_PCREL,         /* type */
1719
         48,                    /* rightshift */
1720
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
1721
         64,                    /* bitsize */
1722
         TRUE,                  /* pc_relative */
1723
         10,                    /* bitpos */
1724
         complain_overflow_dont, /* complain_on_overflow */
1725
         bfd_elf_generic_reloc, /* special_function */
1726
         "R_SH_64_PCREL",       /* name */
1727
         FALSE,                 /* partial_inplace */
1728
         0,                      /* src_mask */
1729
         ((bfd_vma) 0) - 1,      /* dst_mask */
1730
         TRUE),                 /* pcrel_offset */
1731
 
1732
#endif
1733
#undef SH_PARTIAL32
1734
#undef SH_SRC_MASK32
1735
#undef SH_ELF_RELOC

powered by: WebSVN 2.1.0

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