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