Home | History | Annotate | Download | only in bfd
      1 /* Copyright (C) 2006-2016 Free Software Foundation, Inc.
      2 
      3    This file is part of BFD, the Binary File Descriptor library.
      4 
      5    This program is free software; you can redistribute it and/or modify
      6    it under the terms of the GNU General Public License as published by
      7    the Free Software Foundation; either version 3 of the License, or
      8    (at your option) any later version.
      9 
     10    This program is distributed in the hope that it will be useful,
     11    but WITHOUT ANY WARRANTY; without even the implied warranty of
     12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13    GNU General Public License for more details.
     14 
     15    You should have received a copy of the GNU General Public License
     16    along with this program; if not, write to the Free Software
     17    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
     18    MA 02110-1301, USA.  */
     19 
     20 /* No relocation.  */
     21   HOWTO (R_SH_NONE,		/* type */
     22 	 0,			/* rightshift */
     23 	 3,			/* size (0 = byte, 1 = short, 2 = long) */
     24 	 0,			/* bitsize */
     25 	 FALSE,			/* pc_relative */
     26 	 0,			/* bitpos */
     27 	 complain_overflow_dont, /* complain_on_overflow */
     28 	 sh_elf_ignore_reloc,	/* special_function */
     29 	 "R_SH_NONE",		/* name */
     30 	 FALSE,			/* partial_inplace */
     31 	 0,			/* src_mask */
     32 	 0,			/* dst_mask */
     33 	 FALSE),		/* pcrel_offset */
     34 
     35   /* 32 bit absolute relocation.  Setting partial_inplace to TRUE and
     36      src_mask to a non-zero value is similar to the COFF toolchain.  */
     37   HOWTO (R_SH_DIR32,		/* type */
     38 	 0,			/* rightshift */
     39 	 2,			/* size (0 = byte, 1 = short, 2 = long) */
     40 	 32,			/* bitsize */
     41 	 FALSE,			/* pc_relative */
     42 	 0,			/* bitpos */
     43 	 complain_overflow_bitfield, /* complain_on_overflow */
     44 	 SH_ELF_RELOC,		/* special_function */
     45 	 "R_SH_DIR32",		/* name */
     46 	 SH_PARTIAL32,		/* partial_inplace */
     47 	 SH_SRC_MASK32,		/* src_mask */
     48 	 0xffffffff,		/* dst_mask */
     49 	 FALSE),		/* pcrel_offset */
     50 
     51   /* 32 bit PC relative relocation.  */
     52   HOWTO (R_SH_REL32,		/* type */
     53 	 0,			/* rightshift */
     54 	 2,			/* size (0 = byte, 1 = short, 2 = long) */
     55 	 32,			/* bitsize */
     56 	 TRUE,			/* pc_relative */
     57 	 0,			/* bitpos */
     58 	 complain_overflow_signed, /* complain_on_overflow */
     59 	 sh_elf_ignore_reloc,	/* special_function */
     60 	 "R_SH_REL32",		/* name */
     61 	 SH_PARTIAL32,		/* partial_inplace */
     62 	 SH_SRC_MASK32,		/* src_mask */
     63 	 0xffffffff,		/* dst_mask */
     64 	 TRUE),			/* pcrel_offset */
     65 
     66   /* 8 bit PC relative branch divided by 2.  */
     67   HOWTO (R_SH_DIR8WPN,		/* type */
     68 	 1,			/* rightshift */
     69 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
     70 	 8,			/* bitsize */
     71 	 TRUE,			/* pc_relative */
     72 	 0,			/* bitpos */
     73 	 complain_overflow_signed, /* complain_on_overflow */
     74 	 sh_elf_ignore_reloc,	/* special_function */
     75 	 "R_SH_DIR8WPN",	/* name */
     76 	 TRUE,			/* partial_inplace */
     77 	 0xff,			/* src_mask */
     78 	 0xff,			/* dst_mask */
     79 	 TRUE),			/* pcrel_offset */
     80 
     81   /* 12 bit PC relative branch divided by 2.  */
     82   /* This cannot be partial_inplace because relaxation can't know the
     83      eventual value of a symbol.  */
     84   HOWTO (R_SH_IND12W,		/* type */
     85 	 1,			/* rightshift */
     86 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
     87 	 12,			/* bitsize */
     88 	 TRUE,			/* pc_relative */
     89 	 0,			/* bitpos */
     90 	 complain_overflow_signed, /* complain_on_overflow */
     91 	 NULL,			/* special_function */
     92 	 "R_SH_IND12W",		/* name */
     93 	 FALSE,			/* partial_inplace */
     94 	 0x0,			/* src_mask */
     95 	 0xfff,			/* dst_mask */
     96 	 TRUE),			/* pcrel_offset */
     97 
     98   /* 8 bit unsigned PC relative divided by 4.  */
     99   HOWTO (R_SH_DIR8WPL,		/* type */
    100 	 2,			/* rightshift */
    101 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    102 	 8,			/* bitsize */
    103 	 TRUE,			/* pc_relative */
    104 	 0,			/* bitpos */
    105 	 complain_overflow_unsigned, /* complain_on_overflow */
    106 	 sh_elf_ignore_reloc,	/* special_function */
    107 	 "R_SH_DIR8WPL",	/* name */
    108 	 TRUE,			/* partial_inplace */
    109 	 0xff,			/* src_mask */
    110 	 0xff,			/* dst_mask */
    111 	 TRUE),			/* pcrel_offset */
    112 
    113   /* 8 bit unsigned PC relative divided by 2.  */
    114   HOWTO (R_SH_DIR8WPZ,		/* type */
    115 	 1,			/* rightshift */
    116 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    117 	 8,			/* bitsize */
    118 	 TRUE,			/* pc_relative */
    119 	 0,			/* bitpos */
    120 	 complain_overflow_unsigned, /* complain_on_overflow */
    121 	 sh_elf_ignore_reloc,	/* special_function */
    122 	 "R_SH_DIR8WPZ",	/* name */
    123 	 TRUE,			/* partial_inplace */
    124 	 0xff,			/* src_mask */
    125 	 0xff,			/* dst_mask */
    126 	 TRUE),			/* pcrel_offset */
    127 
    128   /* 8 bit GBR relative.  FIXME: This only makes sense if we have some
    129      special symbol for the GBR relative area, and that is not
    130      implemented.  */
    131   HOWTO (R_SH_DIR8BP,		/* type */
    132 	 0,			/* rightshift */
    133 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    134 	 8,			/* bitsize */
    135 	 FALSE,			/* pc_relative */
    136 	 0,			/* bitpos */
    137 	 complain_overflow_unsigned, /* complain_on_overflow */
    138 	 sh_elf_ignore_reloc,	/* special_function */
    139 	 "R_SH_DIR8BP",		/* name */
    140 	 FALSE,			/* partial_inplace */
    141 	 0,			/* src_mask */
    142 	 0xff,			/* dst_mask */
    143 	 TRUE),			/* pcrel_offset */
    144 
    145   /* 8 bit GBR relative divided by 2.  FIXME: This only makes sense if
    146      we have some special symbol for the GBR relative area, and that
    147      is not implemented.  */
    148   HOWTO (R_SH_DIR8W,		/* type */
    149 	 1,			/* rightshift */
    150 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    151 	 8,			/* bitsize */
    152 	 FALSE,			/* pc_relative */
    153 	 0,			/* bitpos */
    154 	 complain_overflow_unsigned, /* complain_on_overflow */
    155 	 sh_elf_ignore_reloc,	/* special_function */
    156 	 "R_SH_DIR8W",		/* name */
    157 	 FALSE,			/* partial_inplace */
    158 	 0,			/* src_mask */
    159 	 0xff,			/* dst_mask */
    160 	 TRUE),			/* pcrel_offset */
    161 
    162   /* 8 bit GBR relative divided by 4.  FIXME: This only makes sense if
    163      we have some special symbol for the GBR relative area, and that
    164      is not implemented.  */
    165   HOWTO (R_SH_DIR8L,		/* type */
    166 	 2,			/* rightshift */
    167 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    168 	 8,			/* bitsize */
    169 	 FALSE,			/* pc_relative */
    170 	 0,			/* bitpos */
    171 	 complain_overflow_unsigned, /* complain_on_overflow */
    172 	 sh_elf_ignore_reloc,	/* special_function */
    173 	 "R_SH_DIR8L",		/* name */
    174 	 FALSE,			/* partial_inplace */
    175 	 0,			/* src_mask */
    176 	 0xff,			/* dst_mask */
    177 	 TRUE),			/* pcrel_offset */
    178 
    179   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
    180   HOWTO (R_SH_LOOP_START,	/* type */
    181 	 1,			/* rightshift */
    182 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    183 	 8,			/* bitsize */
    184 	 FALSE,			/* pc_relative */
    185 	 0,			/* bitpos */
    186 	 complain_overflow_signed, /* complain_on_overflow */
    187 	 sh_elf_ignore_reloc,	/* special_function */
    188 	 "R_SH_LOOP_START",	/* name */
    189 	 TRUE,			/* partial_inplace */
    190 	 0xff,			/* src_mask */
    191 	 0xff,			/* dst_mask */
    192 	 TRUE),			/* pcrel_offset */
    193 
    194   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
    195   HOWTO (R_SH_LOOP_END,		/* type */
    196 	 1,			/* rightshift */
    197 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    198 	 8,			/* bitsize */
    199 	 FALSE,			/* pc_relative */
    200 	 0,			/* bitpos */
    201 	 complain_overflow_signed, /* complain_on_overflow */
    202 	 sh_elf_ignore_reloc,	/* special_function */
    203 	 "R_SH_LOOP_END",	/* name */
    204 	 TRUE,			/* partial_inplace */
    205 	 0xff,			/* src_mask */
    206 	 0xff,			/* dst_mask */
    207 	 TRUE),			/* pcrel_offset */
    208 
    209   EMPTY_HOWTO (12),
    210   EMPTY_HOWTO (13),
    211   EMPTY_HOWTO (14),
    212   EMPTY_HOWTO (15),
    213   EMPTY_HOWTO (16),
    214   EMPTY_HOWTO (17),
    215   EMPTY_HOWTO (18),
    216   EMPTY_HOWTO (19),
    217   EMPTY_HOWTO (20),
    218   EMPTY_HOWTO (21),
    219 
    220   /* The remaining relocs are a GNU extension used for relaxing.  The
    221      final pass of the linker never needs to do anything with any of
    222      these relocs.  Any required operations are handled by the
    223      relaxation code.  */
    224 
    225   /* GNU extension to record C++ vtable hierarchy */
    226   HOWTO (R_SH_GNU_VTINHERIT, /* type */
    227 	 0,			/* rightshift */
    228 	 2,			/* size (0 = byte, 1 = short, 2 = long) */
    229 	 0,			/* bitsize */
    230 	 FALSE,			/* pc_relative */
    231 	 0,			/* bitpos */
    232 	 complain_overflow_dont, /* complain_on_overflow */
    233 	 NULL,			/* special_function */
    234 	 "R_SH_GNU_VTINHERIT", /* name */
    235 	 FALSE,			/* partial_inplace */
    236 	 0,			/* src_mask */
    237 	 0,			/* dst_mask */
    238 	 FALSE),		/* pcrel_offset */
    239 
    240   /* GNU extension to record C++ vtable member usage */
    241   HOWTO (R_SH_GNU_VTENTRY,     /* type */
    242 	 0,			/* rightshift */
    243 	 2,			/* size (0 = byte, 1 = short, 2 = long) */
    244 	 0,			/* bitsize */
    245 	 FALSE,			/* pc_relative */
    246 	 0,			/* bitpos */
    247 	 complain_overflow_dont, /* complain_on_overflow */
    248 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
    249 	 "R_SH_GNU_VTENTRY",   /* name */
    250 	 FALSE,			/* partial_inplace */
    251 	 0,			/* src_mask */
    252 	 0,			/* dst_mask */
    253 	 FALSE),		/* pcrel_offset */
    254 
    255   /* An 8 bit switch table entry.  This is generated for an expression
    256      such as ``.word L1 - L2''.  The offset holds the difference
    257      between the reloc address and L2.  */
    258   HOWTO (R_SH_SWITCH8,		/* type */
    259 	 0,			/* rightshift */
    260 	 0,			/* size (0 = byte, 1 = short, 2 = long) */
    261 	 8,			/* bitsize */
    262 	 FALSE,			/* pc_relative */
    263 	 0,			/* bitpos */
    264 	 complain_overflow_unsigned, /* complain_on_overflow */
    265 	 sh_elf_ignore_reloc,	/* special_function */
    266 	 "R_SH_SWITCH8",	/* name */
    267 	 FALSE,			/* partial_inplace */
    268 	 0,			/* src_mask */
    269 	 0,			/* dst_mask */
    270 	 TRUE),			/* pcrel_offset */
    271 
    272   /* A 16 bit switch table entry.  This is generated for an expression
    273      such as ``.word L1 - L2''.  The offset holds the difference
    274      between the reloc address and L2.  */
    275   HOWTO (R_SH_SWITCH16,		/* type */
    276 	 0,			/* rightshift */
    277 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    278 	 16,			/* bitsize */
    279 	 FALSE,			/* pc_relative */
    280 	 0,			/* bitpos */
    281 	 complain_overflow_unsigned, /* complain_on_overflow */
    282 	 sh_elf_ignore_reloc,	/* special_function */
    283 	 "R_SH_SWITCH16",	/* name */
    284 	 FALSE,			/* partial_inplace */
    285 	 0,			/* src_mask */
    286 	 0,			/* dst_mask */
    287 	 TRUE),			/* pcrel_offset */
    288 
    289   /* A 32 bit switch table entry.  This is generated for an expression
    290      such as ``.long L1 - L2''.  The offset holds the difference
    291      between the reloc address and L2.  */
    292   HOWTO (R_SH_SWITCH32,		/* type */
    293 	 0,			/* rightshift */
    294 	 2,			/* size (0 = byte, 1 = short, 2 = long) */
    295 	 32,			/* bitsize */
    296 	 FALSE,			/* pc_relative */
    297 	 0,			/* bitpos */
    298 	 complain_overflow_unsigned, /* complain_on_overflow */
    299 	 sh_elf_ignore_reloc,	/* special_function */
    300 	 "R_SH_SWITCH32",	/* name */
    301 	 FALSE,			/* partial_inplace */
    302 	 0,			/* src_mask */
    303 	 0,			/* dst_mask */
    304 	 TRUE),			/* pcrel_offset */
    305 
    306   /* Indicates a .uses pseudo-op.  The compiler will generate .uses
    307      pseudo-ops when it finds a function call which can be relaxed.
    308      The offset field holds the PC relative offset to the instruction
    309      which loads the register used in the function call.  */
    310   HOWTO (R_SH_USES,		/* type */
    311 	 0,			/* rightshift */
    312 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    313 	 0,			/* bitsize */
    314 	 FALSE,			/* pc_relative */
    315 	 0,			/* bitpos */
    316 	 complain_overflow_unsigned, /* complain_on_overflow */
    317 	 sh_elf_ignore_reloc,	/* special_function */
    318 	 "R_SH_USES",		/* name */
    319 	 FALSE,			/* partial_inplace */
    320 	 0,			/* src_mask */
    321 	 0,			/* dst_mask */
    322 	 TRUE),			/* pcrel_offset */
    323 
    324   /* The assembler will generate this reloc for addresses referred to
    325      by the register loads associated with USES relocs.  The offset
    326      field holds the number of times the address is referenced in the
    327      object file.  */
    328   HOWTO (R_SH_COUNT,		/* type */
    329 	 0,			/* rightshift */
    330 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    331 	 0,			/* bitsize */
    332 	 FALSE,			/* pc_relative */
    333 	 0,			/* bitpos */
    334 	 complain_overflow_unsigned, /* complain_on_overflow */
    335 	 sh_elf_ignore_reloc,	/* special_function */
    336 	 "R_SH_COUNT",		/* name */
    337 	 FALSE,			/* partial_inplace */
    338 	 0,			/* src_mask */
    339 	 0,			/* dst_mask */
    340 	 TRUE),			/* pcrel_offset */
    341 
    342   /* Indicates an alignment statement.  The offset field is the power
    343      of 2 to which subsequent portions of the object file must be
    344      aligned.  */
    345   HOWTO (R_SH_ALIGN,		/* type */
    346 	 0,			/* rightshift */
    347 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    348 	 0,			/* bitsize */
    349 	 FALSE,			/* pc_relative */
    350 	 0,			/* bitpos */
    351 	 complain_overflow_unsigned, /* complain_on_overflow */
    352 	 sh_elf_ignore_reloc,	/* special_function */
    353 	 "R_SH_ALIGN",	/* name */
    354 	 FALSE,			/* partial_inplace */
    355 	 0,			/* src_mask */
    356 	 0,			/* dst_mask */
    357 	 TRUE),			/* pcrel_offset */
    358 
    359   /* The assembler will generate this reloc before a block of
    360      instructions.  A section should be processed as assuming it
    361      contains data, unless this reloc is seen.  */
    362   HOWTO (R_SH_CODE,		/* type */
    363 	 0,			/* rightshift */
    364 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    365 	 0,			/* bitsize */
    366 	 FALSE,			/* pc_relative */
    367 	 0,			/* bitpos */
    368 	 complain_overflow_unsigned, /* complain_on_overflow */
    369 	 sh_elf_ignore_reloc,	/* special_function */
    370 	 "R_SH_CODE",		/* name */
    371 	 FALSE,			/* partial_inplace */
    372 	 0,			/* src_mask */
    373 	 0,			/* dst_mask */
    374 	 TRUE),			/* pcrel_offset */
    375 
    376   /* The assembler will generate this reloc after a block of
    377      instructions when it sees data that is not instructions.  */
    378   HOWTO (R_SH_DATA,		/* type */
    379 	 0,			/* rightshift */
    380 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    381 	 0,			/* bitsize */
    382 	 FALSE,			/* pc_relative */
    383 	 0,			/* bitpos */
    384 	 complain_overflow_unsigned, /* complain_on_overflow */
    385 	 sh_elf_ignore_reloc,	/* special_function */
    386 	 "R_SH_DATA",		/* name */
    387 	 FALSE,			/* partial_inplace */
    388 	 0,			/* src_mask */
    389 	 0,			/* dst_mask */
    390 	 TRUE),			/* pcrel_offset */
    391 
    392   /* The assembler generates this reloc for each label within a block
    393      of instructions.  This permits the linker to avoid swapping
    394      instructions which are the targets of branches.  */
    395   HOWTO (R_SH_LABEL,		/* type */
    396 	 0,			/* rightshift */
    397 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    398 	 0,			/* bitsize */
    399 	 FALSE,			/* pc_relative */
    400 	 0,			/* bitpos */
    401 	 complain_overflow_unsigned, /* complain_on_overflow */
    402 	 sh_elf_ignore_reloc,	/* special_function */
    403 	 "R_SH_LABEL",		/* name */
    404 	 FALSE,			/* partial_inplace */
    405 	 0,			/* src_mask */
    406 	 0,			/* dst_mask */
    407 	 TRUE),			/* pcrel_offset */
    408 
    409   /* The next 12 are only supported via linking in SHC-generated objects.  */
    410   HOWTO (R_SH_DIR16,		/* type */
    411 	 0,			/* rightshift */
    412 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    413 	 16,			/* bitsize */
    414 	 FALSE,			/* pc_relative */
    415 	 0,			/* bitpos */
    416 	 complain_overflow_dont, /* complain_on_overflow */
    417 	 bfd_elf_generic_reloc,	/* special_function */
    418 	 "R_SH_DIR16",		/* name */
    419 	 FALSE,			/* partial_inplace */
    420 	 0,			/* src_mask */
    421 	 0xffff,		/* dst_mask */
    422 	 FALSE),		/* pcrel_offset */
    423 
    424   HOWTO (R_SH_DIR8,		/* type */
    425 	 0,			/* rightshift */
    426 	 0,			/* size (0 = byte, 1 = short, 2 = long) */
    427 	 8,			/* bitsize */
    428 	 FALSE,			/* pc_relative */
    429 	 0,			/* bitpos */
    430 	 complain_overflow_dont, /* complain_on_overflow */
    431 	 bfd_elf_generic_reloc,	/* special_function */
    432 	 "R_SH_DIR8",		/* name */
    433 	 FALSE,			/* partial_inplace */
    434 	 0,			/* src_mask */
    435 	 0xff,			/* dst_mask */
    436 	 FALSE),		/* pcrel_offset */
    437 
    438   HOWTO (R_SH_DIR8UL,		/* type */
    439 	 2,			/* rightshift */
    440 	 0,			/* size (0 = byte, 1 = short, 2 = long) */
    441 	 8,			/* bitsize */
    442 	 FALSE,			/* pc_relative */
    443 	 0,			/* bitpos */
    444 	 complain_overflow_unsigned, /* complain_on_overflow */
    445 	 bfd_elf_generic_reloc,	/* special_function */
    446 	 "R_SH_DIR8UL",		/* name */
    447 	 FALSE,			/* partial_inplace */
    448 	 0,			/* src_mask */
    449 	 0xff,			/* dst_mask */
    450 	 FALSE),		/* pcrel_offset */
    451 
    452   HOWTO (R_SH_DIR8UW,		/* type */
    453 	 1,			/* rightshift */
    454 	 0,			/* size (0 = byte, 1 = short, 2 = long) */
    455 	 8,			/* bitsize */
    456 	 FALSE,			/* pc_relative */
    457 	 0,			/* bitpos */
    458 	 complain_overflow_unsigned, /* complain_on_overflow */
    459 	 bfd_elf_generic_reloc,	/* special_function */
    460 	 "R_SH_DIR8UW",		/* name */
    461 	 FALSE,			/* partial_inplace */
    462 	 0,			/* src_mask */
    463 	 0xff,			/* dst_mask */
    464 	 FALSE),		/* pcrel_offset */
    465 
    466   HOWTO (R_SH_DIR8U,		/* type */
    467 	 0,			/* rightshift */
    468 	 0,			/* size (0 = byte, 1 = short, 2 = long) */
    469 	 8,			/* bitsize */
    470 	 FALSE,			/* pc_relative */
    471 	 0,			/* bitpos */
    472 	 complain_overflow_unsigned, /* complain_on_overflow */
    473 	 bfd_elf_generic_reloc,	/* special_function */
    474 	 "R_SH_DIR8U",		/* name */
    475 	 FALSE,			/* partial_inplace */
    476 	 0,			/* src_mask */
    477 	 0xff,			/* dst_mask */
    478 	 FALSE),		/* pcrel_offset */
    479 
    480   HOWTO (R_SH_DIR8SW,		/* type */
    481 	 1,			/* rightshift */
    482 	 0,			/* size (0 = byte, 1 = short, 2 = long) */
    483 	 8,			/* bitsize */
    484 	 FALSE,			/* pc_relative */
    485 	 0,			/* bitpos */
    486 	 complain_overflow_signed, /* complain_on_overflow */
    487 	 bfd_elf_generic_reloc,	/* special_function */
    488 	 "R_SH_DIR8SW",		/* name */
    489 	 FALSE,			/* partial_inplace */
    490 	 0,			/* src_mask */
    491 	 0xff,			/* dst_mask */
    492 	 FALSE),		/* pcrel_offset */
    493 
    494   HOWTO (R_SH_DIR8S,		/* type */
    495 	 0,			/* rightshift */
    496 	 0,			/* size (0 = byte, 1 = short, 2 = long) */
    497 	 8,			/* bitsize */
    498 	 FALSE,			/* pc_relative */
    499 	 0,			/* bitpos */
    500 	 complain_overflow_signed, /* complain_on_overflow */
    501 	 bfd_elf_generic_reloc,	/* special_function */
    502 	 "R_SH_DIR8S",		/* name */
    503 	 FALSE,			/* partial_inplace */
    504 	 0,			/* src_mask */
    505 	 0xff,			/* dst_mask */
    506 	 FALSE),		/* pcrel_offset */
    507 
    508   HOWTO (R_SH_DIR4UL,		/* type */
    509 	 2,			/* rightshift */
    510 	 0,			/* size (0 = byte, 1 = short, 2 = long) */
    511 	 4,			/* bitsize */
    512 	 FALSE,			/* pc_relative */
    513 	 0,			/* bitpos */
    514 	 complain_overflow_unsigned, /* complain_on_overflow */
    515 	 bfd_elf_generic_reloc,	/* special_function */
    516 	 "R_SH_DIR4UL",		/* name */
    517 	 FALSE,			/* partial_inplace */
    518 	 0,			/* src_mask */
    519 	 0x0f,			/* dst_mask */
    520 	 FALSE),		/* pcrel_offset */
    521 
    522   HOWTO (R_SH_DIR4UW,		/* type */
    523 	 1,			/* rightshift */
    524 	 0,			/* size (0 = byte, 1 = short, 2 = long) */
    525 	 4,			/* bitsize */
    526 	 FALSE,			/* pc_relative */
    527 	 0,			/* bitpos */
    528 	 complain_overflow_unsigned, /* complain_on_overflow */
    529 	 bfd_elf_generic_reloc,	/* special_function */
    530 	 "R_SH_DIR4UW",		/* name */
    531 	 FALSE,			/* partial_inplace */
    532 	 0,			/* src_mask */
    533 	 0x0f,			/* dst_mask */
    534 	 FALSE),		/* pcrel_offset */
    535 
    536   HOWTO (R_SH_DIR4U,		/* type */
    537 	 0,			/* rightshift */
    538 	 0,			/* size (0 = byte, 1 = short, 2 = long) */
    539 	 4,			/* bitsize */
    540 	 FALSE,			/* pc_relative */
    541 	 0,			/* bitpos */
    542 	 complain_overflow_unsigned, /* complain_on_overflow */
    543 	 bfd_elf_generic_reloc,	/* special_function */
    544 	 "R_SH_DIR4U",		/* name */
    545 	 FALSE,			/* partial_inplace */
    546 	 0,			/* src_mask */
    547 	 0x0f,			/* dst_mask */
    548 	 FALSE),		/* pcrel_offset */
    549 
    550   HOWTO (R_SH_PSHA,		/* type */
    551 	 0,			/* rightshift */
    552 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    553 	 7,			/* bitsize */
    554 	 FALSE,			/* pc_relative */
    555 	 4,			/* bitpos */
    556 	 complain_overflow_signed, /* complain_on_overflow */
    557 	 bfd_elf_generic_reloc,	/* special_function */
    558 	 "R_SH_PSHA",		/* name */
    559 	 FALSE,			/* partial_inplace */
    560 	 0,			/* src_mask */
    561 	 0x0f,			/* dst_mask */
    562 	 FALSE),		/* pcrel_offset */
    563 
    564   HOWTO (R_SH_PSHL,		/* type */
    565 	 0,			/* rightshift */
    566 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
    567 	 7,			/* bitsize */
    568 	 FALSE,			/* pc_relative */
    569 	 4,			/* bitpos */
    570 	 complain_overflow_signed, /* complain_on_overflow */
    571 	 bfd_elf_generic_reloc,	/* special_function */
    572 	 "R_SH_PSHL",		/* name */
    573 	 FALSE,			/* partial_inplace */
    574 	 0,			/* src_mask */
    575 	 0x0f,			/* dst_mask */
    576 	 FALSE),		/* pcrel_offset */
    577 
    578 #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
   1881