xref: /netbsd-src/external/gpl3/binutils.old/dist/bfd/elf32-sh-relocs.h (revision e992f068c547fd6e84b3f104dc2340adcc955732)
1*e992f068Schristos /* Copyright (C) 2006-2022 Free Software Foundation, Inc.
275fd0b74Schristos 
375fd0b74Schristos    This file is part of BFD, the Binary File Descriptor library.
475fd0b74Schristos 
575fd0b74Schristos    This program is free software; you can redistribute it and/or modify
675fd0b74Schristos    it under the terms of the GNU General Public License as published by
775fd0b74Schristos    the Free Software Foundation; either version 3 of the License, or
875fd0b74Schristos    (at your option) any later version.
975fd0b74Schristos 
1075fd0b74Schristos    This program is distributed in the hope that it will be useful,
1175fd0b74Schristos    but WITHOUT ANY WARRANTY; without even the implied warranty of
1275fd0b74Schristos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1375fd0b74Schristos    GNU General Public License for more details.
1475fd0b74Schristos 
1575fd0b74Schristos    You should have received a copy of the GNU General Public License
1675fd0b74Schristos    along with this program; if not, write to the Free Software
1775fd0b74Schristos    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
1875fd0b74Schristos    MA 02110-1301, USA.  */
1975fd0b74Schristos 
2075fd0b74Schristos /* No relocation.  */
2175fd0b74Schristos   HOWTO (R_SH_NONE,		/* type */
2275fd0b74Schristos 	 0,			/* rightshift */
23*e992f068Schristos 	 0,			/* size */
2475fd0b74Schristos 	 0,			/* bitsize */
25*e992f068Schristos 	 false,			/* pc_relative */
2675fd0b74Schristos 	 0,			/* bitpos */
2775fd0b74Schristos 	 complain_overflow_dont, /* complain_on_overflow */
2875fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
2975fd0b74Schristos 	 "R_SH_NONE",		/* name */
30*e992f068Schristos 	 false,			/* partial_inplace */
3175fd0b74Schristos 	 0,			/* src_mask */
3275fd0b74Schristos 	 0,			/* dst_mask */
33*e992f068Schristos 	 false),		/* pcrel_offset */
3475fd0b74Schristos 
3575fd0b74Schristos   /* 32 bit absolute relocation.  Setting partial_inplace to TRUE and
3675fd0b74Schristos      src_mask to a non-zero value is similar to the COFF toolchain.  */
3775fd0b74Schristos   HOWTO (R_SH_DIR32,		/* type */
3875fd0b74Schristos 	 0,			/* rightshift */
39*e992f068Schristos 	 4,			/* size */
4075fd0b74Schristos 	 32,			/* bitsize */
41*e992f068Schristos 	 false,			/* pc_relative */
4275fd0b74Schristos 	 0,			/* bitpos */
4375fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
4475fd0b74Schristos 	 SH_ELF_RELOC,		/* special_function */
4575fd0b74Schristos 	 "R_SH_DIR32",		/* name */
4675fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
4775fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
4875fd0b74Schristos 	 0xffffffff,		/* dst_mask */
49*e992f068Schristos 	 false),		/* pcrel_offset */
5075fd0b74Schristos 
5175fd0b74Schristos   /* 32 bit PC relative relocation.  */
5275fd0b74Schristos   HOWTO (R_SH_REL32,		/* type */
5375fd0b74Schristos 	 0,			/* rightshift */
54*e992f068Schristos 	 4,			/* size */
5575fd0b74Schristos 	 32,			/* bitsize */
56*e992f068Schristos 	 true,			/* pc_relative */
5775fd0b74Schristos 	 0,			/* bitpos */
5875fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
5975fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
6075fd0b74Schristos 	 "R_SH_REL32",		/* name */
6175fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
6275fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
6375fd0b74Schristos 	 0xffffffff,		/* dst_mask */
64*e992f068Schristos 	 true),			/* pcrel_offset */
6575fd0b74Schristos 
6675fd0b74Schristos   /* 8 bit PC relative branch divided by 2.  */
6775fd0b74Schristos   HOWTO (R_SH_DIR8WPN,		/* type */
6875fd0b74Schristos 	 1,			/* rightshift */
69*e992f068Schristos 	 2,			/* size */
7075fd0b74Schristos 	 8,			/* bitsize */
71*e992f068Schristos 	 true,			/* pc_relative */
7275fd0b74Schristos 	 0,			/* bitpos */
7375fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
7475fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
7575fd0b74Schristos 	 "R_SH_DIR8WPN",	/* name */
76*e992f068Schristos 	 true,			/* partial_inplace */
7775fd0b74Schristos 	 0xff,			/* src_mask */
7875fd0b74Schristos 	 0xff,			/* dst_mask */
79*e992f068Schristos 	 true),			/* pcrel_offset */
8075fd0b74Schristos 
8175fd0b74Schristos   /* 12 bit PC relative branch divided by 2.  */
8275fd0b74Schristos   /* This cannot be partial_inplace because relaxation can't know the
8375fd0b74Schristos      eventual value of a symbol.  */
8475fd0b74Schristos   HOWTO (R_SH_IND12W,		/* type */
8575fd0b74Schristos 	 1,			/* rightshift */
86*e992f068Schristos 	 2,			/* size */
8775fd0b74Schristos 	 12,			/* bitsize */
88*e992f068Schristos 	 true,			/* pc_relative */
8975fd0b74Schristos 	 0,			/* bitpos */
9075fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
9175fd0b74Schristos 	 NULL,			/* special_function */
9275fd0b74Schristos 	 "R_SH_IND12W",		/* name */
93*e992f068Schristos 	 false,			/* partial_inplace */
9475fd0b74Schristos 	 0x0,			/* src_mask */
9575fd0b74Schristos 	 0xfff,			/* dst_mask */
96*e992f068Schristos 	 true),			/* pcrel_offset */
9775fd0b74Schristos 
9875fd0b74Schristos   /* 8 bit unsigned PC relative divided by 4.  */
9975fd0b74Schristos   HOWTO (R_SH_DIR8WPL,		/* type */
10075fd0b74Schristos 	 2,			/* rightshift */
101*e992f068Schristos 	 2,			/* size */
10275fd0b74Schristos 	 8,			/* bitsize */
103*e992f068Schristos 	 true,			/* pc_relative */
10475fd0b74Schristos 	 0,			/* bitpos */
10575fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
10675fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
10775fd0b74Schristos 	 "R_SH_DIR8WPL",	/* name */
108*e992f068Schristos 	 true,			/* partial_inplace */
10975fd0b74Schristos 	 0xff,			/* src_mask */
11075fd0b74Schristos 	 0xff,			/* dst_mask */
111*e992f068Schristos 	 true),			/* pcrel_offset */
11275fd0b74Schristos 
11375fd0b74Schristos   /* 8 bit unsigned PC relative divided by 2.  */
11475fd0b74Schristos   HOWTO (R_SH_DIR8WPZ,		/* type */
11575fd0b74Schristos 	 1,			/* rightshift */
116*e992f068Schristos 	 2,			/* size */
11775fd0b74Schristos 	 8,			/* bitsize */
118*e992f068Schristos 	 true,			/* pc_relative */
11975fd0b74Schristos 	 0,			/* bitpos */
12075fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
12175fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
12275fd0b74Schristos 	 "R_SH_DIR8WPZ",	/* name */
123*e992f068Schristos 	 true,			/* partial_inplace */
12475fd0b74Schristos 	 0xff,			/* src_mask */
12575fd0b74Schristos 	 0xff,			/* dst_mask */
126*e992f068Schristos 	 true),			/* pcrel_offset */
12775fd0b74Schristos 
12875fd0b74Schristos   /* 8 bit GBR relative.  FIXME: This only makes sense if we have some
12975fd0b74Schristos      special symbol for the GBR relative area, and that is not
13075fd0b74Schristos      implemented.  */
13175fd0b74Schristos   HOWTO (R_SH_DIR8BP,		/* type */
13275fd0b74Schristos 	 0,			/* rightshift */
133*e992f068Schristos 	 2,			/* size */
13475fd0b74Schristos 	 8,			/* bitsize */
135*e992f068Schristos 	 false,			/* pc_relative */
13675fd0b74Schristos 	 0,			/* bitpos */
13775fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
13875fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
13975fd0b74Schristos 	 "R_SH_DIR8BP",		/* name */
140*e992f068Schristos 	 false,			/* partial_inplace */
14175fd0b74Schristos 	 0,			/* src_mask */
14275fd0b74Schristos 	 0xff,			/* dst_mask */
143*e992f068Schristos 	 true),			/* pcrel_offset */
14475fd0b74Schristos 
14575fd0b74Schristos   /* 8 bit GBR relative divided by 2.  FIXME: This only makes sense if
14675fd0b74Schristos      we have some special symbol for the GBR relative area, and that
14775fd0b74Schristos      is not implemented.  */
14875fd0b74Schristos   HOWTO (R_SH_DIR8W,		/* type */
14975fd0b74Schristos 	 1,			/* rightshift */
150*e992f068Schristos 	 2,			/* size */
15175fd0b74Schristos 	 8,			/* bitsize */
152*e992f068Schristos 	 false,			/* pc_relative */
15375fd0b74Schristos 	 0,			/* bitpos */
15475fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
15575fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
15675fd0b74Schristos 	 "R_SH_DIR8W",		/* name */
157*e992f068Schristos 	 false,			/* partial_inplace */
15875fd0b74Schristos 	 0,			/* src_mask */
15975fd0b74Schristos 	 0xff,			/* dst_mask */
160*e992f068Schristos 	 true),			/* pcrel_offset */
16175fd0b74Schristos 
16275fd0b74Schristos   /* 8 bit GBR relative divided by 4.  FIXME: This only makes sense if
16375fd0b74Schristos      we have some special symbol for the GBR relative area, and that
16475fd0b74Schristos      is not implemented.  */
16575fd0b74Schristos   HOWTO (R_SH_DIR8L,		/* type */
16675fd0b74Schristos 	 2,			/* rightshift */
167*e992f068Schristos 	 2,			/* size */
16875fd0b74Schristos 	 8,			/* bitsize */
169*e992f068Schristos 	 false,			/* pc_relative */
17075fd0b74Schristos 	 0,			/* bitpos */
17175fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
17275fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
17375fd0b74Schristos 	 "R_SH_DIR8L",		/* name */
174*e992f068Schristos 	 false,			/* partial_inplace */
17575fd0b74Schristos 	 0,			/* src_mask */
17675fd0b74Schristos 	 0xff,			/* dst_mask */
177*e992f068Schristos 	 true),			/* pcrel_offset */
17875fd0b74Schristos 
17975fd0b74Schristos   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
18075fd0b74Schristos   HOWTO (R_SH_LOOP_START,	/* type */
18175fd0b74Schristos 	 1,			/* rightshift */
182*e992f068Schristos 	 2,			/* size */
18375fd0b74Schristos 	 8,			/* bitsize */
184*e992f068Schristos 	 false,			/* pc_relative */
18575fd0b74Schristos 	 0,			/* bitpos */
18675fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
18775fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
18875fd0b74Schristos 	 "R_SH_LOOP_START",	/* name */
189*e992f068Schristos 	 true,			/* partial_inplace */
19075fd0b74Schristos 	 0xff,			/* src_mask */
19175fd0b74Schristos 	 0xff,			/* dst_mask */
192*e992f068Schristos 	 true),			/* pcrel_offset */
19375fd0b74Schristos 
19475fd0b74Schristos   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
19575fd0b74Schristos   HOWTO (R_SH_LOOP_END,		/* type */
19675fd0b74Schristos 	 1,			/* rightshift */
197*e992f068Schristos 	 2,			/* size */
19875fd0b74Schristos 	 8,			/* bitsize */
199*e992f068Schristos 	 false,			/* pc_relative */
20075fd0b74Schristos 	 0,			/* bitpos */
20175fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
20275fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
20375fd0b74Schristos 	 "R_SH_LOOP_END",	/* name */
204*e992f068Schristos 	 true,			/* partial_inplace */
20575fd0b74Schristos 	 0xff,			/* src_mask */
20675fd0b74Schristos 	 0xff,			/* dst_mask */
207*e992f068Schristos 	 true),			/* pcrel_offset */
20875fd0b74Schristos 
20975fd0b74Schristos   EMPTY_HOWTO (12),
21075fd0b74Schristos   EMPTY_HOWTO (13),
21175fd0b74Schristos   EMPTY_HOWTO (14),
21275fd0b74Schristos   EMPTY_HOWTO (15),
21375fd0b74Schristos   EMPTY_HOWTO (16),
21475fd0b74Schristos   EMPTY_HOWTO (17),
21575fd0b74Schristos   EMPTY_HOWTO (18),
21675fd0b74Schristos   EMPTY_HOWTO (19),
21775fd0b74Schristos   EMPTY_HOWTO (20),
21875fd0b74Schristos   EMPTY_HOWTO (21),
21975fd0b74Schristos 
22075fd0b74Schristos   /* The remaining relocs are a GNU extension used for relaxing.  The
22175fd0b74Schristos      final pass of the linker never needs to do anything with any of
22275fd0b74Schristos      these relocs.  Any required operations are handled by the
22375fd0b74Schristos      relaxation code.  */
22475fd0b74Schristos 
22575fd0b74Schristos   /* GNU extension to record C++ vtable hierarchy */
22675fd0b74Schristos   HOWTO (R_SH_GNU_VTINHERIT, /* type */
22775fd0b74Schristos 	 0,			/* rightshift */
228*e992f068Schristos 	 4,			/* size */
22975fd0b74Schristos 	 0,			/* bitsize */
230*e992f068Schristos 	 false,			/* pc_relative */
23175fd0b74Schristos 	 0,			/* bitpos */
23275fd0b74Schristos 	 complain_overflow_dont, /* complain_on_overflow */
23375fd0b74Schristos 	 NULL,			/* special_function */
23475fd0b74Schristos 	 "R_SH_GNU_VTINHERIT", /* name */
235*e992f068Schristos 	 false,			/* partial_inplace */
23675fd0b74Schristos 	 0,			/* src_mask */
23775fd0b74Schristos 	 0,			/* dst_mask */
238*e992f068Schristos 	 false),		/* pcrel_offset */
23975fd0b74Schristos 
24075fd0b74Schristos   /* GNU extension to record C++ vtable member usage */
24175fd0b74Schristos   HOWTO (R_SH_GNU_VTENTRY,     /* type */
24275fd0b74Schristos 	 0,			/* rightshift */
243*e992f068Schristos 	 4,			/* size */
24475fd0b74Schristos 	 0,			/* bitsize */
245*e992f068Schristos 	 false,			/* pc_relative */
24675fd0b74Schristos 	 0,			/* bitpos */
24775fd0b74Schristos 	 complain_overflow_dont, /* complain_on_overflow */
24875fd0b74Schristos 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
24975fd0b74Schristos 	 "R_SH_GNU_VTENTRY",   /* name */
250*e992f068Schristos 	 false,			/* partial_inplace */
25175fd0b74Schristos 	 0,			/* src_mask */
25275fd0b74Schristos 	 0,			/* dst_mask */
253*e992f068Schristos 	 false),		/* pcrel_offset */
25475fd0b74Schristos 
25575fd0b74Schristos   /* An 8 bit switch table entry.  This is generated for an expression
25675fd0b74Schristos      such as ``.word L1 - L2''.  The offset holds the difference
25775fd0b74Schristos      between the reloc address and L2.  */
25875fd0b74Schristos   HOWTO (R_SH_SWITCH8,		/* type */
25975fd0b74Schristos 	 0,			/* rightshift */
260*e992f068Schristos 	 1,			/* size */
26175fd0b74Schristos 	 8,			/* bitsize */
262*e992f068Schristos 	 false,			/* pc_relative */
26375fd0b74Schristos 	 0,			/* bitpos */
26475fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
26575fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
26675fd0b74Schristos 	 "R_SH_SWITCH8",	/* name */
267*e992f068Schristos 	 false,			/* partial_inplace */
26875fd0b74Schristos 	 0,			/* src_mask */
26975fd0b74Schristos 	 0,			/* dst_mask */
270*e992f068Schristos 	 true),			/* pcrel_offset */
27175fd0b74Schristos 
27275fd0b74Schristos   /* A 16 bit switch table entry.  This is generated for an expression
27375fd0b74Schristos      such as ``.word L1 - L2''.  The offset holds the difference
27475fd0b74Schristos      between the reloc address and L2.  */
27575fd0b74Schristos   HOWTO (R_SH_SWITCH16,		/* type */
27675fd0b74Schristos 	 0,			/* rightshift */
277*e992f068Schristos 	 2,			/* size */
27875fd0b74Schristos 	 16,			/* bitsize */
279*e992f068Schristos 	 false,			/* pc_relative */
28075fd0b74Schristos 	 0,			/* bitpos */
28175fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
28275fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
28375fd0b74Schristos 	 "R_SH_SWITCH16",	/* name */
284*e992f068Schristos 	 false,			/* partial_inplace */
28575fd0b74Schristos 	 0,			/* src_mask */
28675fd0b74Schristos 	 0,			/* dst_mask */
287*e992f068Schristos 	 true),			/* pcrel_offset */
28875fd0b74Schristos 
28975fd0b74Schristos   /* A 32 bit switch table entry.  This is generated for an expression
29075fd0b74Schristos      such as ``.long L1 - L2''.  The offset holds the difference
29175fd0b74Schristos      between the reloc address and L2.  */
29275fd0b74Schristos   HOWTO (R_SH_SWITCH32,		/* type */
29375fd0b74Schristos 	 0,			/* rightshift */
294*e992f068Schristos 	 4,			/* size */
29575fd0b74Schristos 	 32,			/* bitsize */
296*e992f068Schristos 	 false,			/* pc_relative */
29775fd0b74Schristos 	 0,			/* bitpos */
29875fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
29975fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
30075fd0b74Schristos 	 "R_SH_SWITCH32",	/* name */
301*e992f068Schristos 	 false,			/* partial_inplace */
30275fd0b74Schristos 	 0,			/* src_mask */
30375fd0b74Schristos 	 0,			/* dst_mask */
304*e992f068Schristos 	 true),			/* pcrel_offset */
30575fd0b74Schristos 
30675fd0b74Schristos   /* Indicates a .uses pseudo-op.  The compiler will generate .uses
30775fd0b74Schristos      pseudo-ops when it finds a function call which can be relaxed.
30875fd0b74Schristos      The offset field holds the PC relative offset to the instruction
30975fd0b74Schristos      which loads the register used in the function call.  */
31075fd0b74Schristos   HOWTO (R_SH_USES,		/* type */
31175fd0b74Schristos 	 0,			/* rightshift */
312*e992f068Schristos 	 2,			/* size */
31375fd0b74Schristos 	 0,			/* bitsize */
314*e992f068Schristos 	 false,			/* pc_relative */
31575fd0b74Schristos 	 0,			/* bitpos */
31675fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
31775fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
31875fd0b74Schristos 	 "R_SH_USES",		/* name */
319*e992f068Schristos 	 false,			/* partial_inplace */
32075fd0b74Schristos 	 0,			/* src_mask */
32175fd0b74Schristos 	 0,			/* dst_mask */
322*e992f068Schristos 	 true),			/* pcrel_offset */
32375fd0b74Schristos 
32475fd0b74Schristos   /* The assembler will generate this reloc for addresses referred to
32575fd0b74Schristos      by the register loads associated with USES relocs.  The offset
32675fd0b74Schristos      field holds the number of times the address is referenced in the
32775fd0b74Schristos      object file.  */
32875fd0b74Schristos   HOWTO (R_SH_COUNT,		/* type */
32975fd0b74Schristos 	 0,			/* rightshift */
330*e992f068Schristos 	 2,			/* size */
33175fd0b74Schristos 	 0,			/* bitsize */
332*e992f068Schristos 	 false,			/* pc_relative */
33375fd0b74Schristos 	 0,			/* bitpos */
33475fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
33575fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
33675fd0b74Schristos 	 "R_SH_COUNT",		/* name */
337*e992f068Schristos 	 false,			/* partial_inplace */
33875fd0b74Schristos 	 0,			/* src_mask */
33975fd0b74Schristos 	 0,			/* dst_mask */
340*e992f068Schristos 	 true),			/* pcrel_offset */
34175fd0b74Schristos 
34275fd0b74Schristos   /* Indicates an alignment statement.  The offset field is the power
34375fd0b74Schristos      of 2 to which subsequent portions of the object file must be
34475fd0b74Schristos      aligned.  */
34575fd0b74Schristos   HOWTO (R_SH_ALIGN,		/* type */
34675fd0b74Schristos 	 0,			/* rightshift */
347*e992f068Schristos 	 2,			/* size */
34875fd0b74Schristos 	 0,			/* bitsize */
349*e992f068Schristos 	 false,			/* pc_relative */
35075fd0b74Schristos 	 0,			/* bitpos */
35175fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
35275fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
35375fd0b74Schristos 	 "R_SH_ALIGN",	/* name */
354*e992f068Schristos 	 false,			/* partial_inplace */
35575fd0b74Schristos 	 0,			/* src_mask */
35675fd0b74Schristos 	 0,			/* dst_mask */
357*e992f068Schristos 	 true),			/* pcrel_offset */
35875fd0b74Schristos 
35975fd0b74Schristos   /* The assembler will generate this reloc before a block of
36075fd0b74Schristos      instructions.  A section should be processed as assuming it
36175fd0b74Schristos      contains data, unless this reloc is seen.  */
36275fd0b74Schristos   HOWTO (R_SH_CODE,		/* type */
36375fd0b74Schristos 	 0,			/* rightshift */
364*e992f068Schristos 	 2,			/* size */
36575fd0b74Schristos 	 0,			/* bitsize */
366*e992f068Schristos 	 false,			/* pc_relative */
36775fd0b74Schristos 	 0,			/* bitpos */
36875fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
36975fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
37075fd0b74Schristos 	 "R_SH_CODE",		/* name */
371*e992f068Schristos 	 false,			/* partial_inplace */
37275fd0b74Schristos 	 0,			/* src_mask */
37375fd0b74Schristos 	 0,			/* dst_mask */
374*e992f068Schristos 	 true),			/* pcrel_offset */
37575fd0b74Schristos 
37675fd0b74Schristos   /* The assembler will generate this reloc after a block of
37775fd0b74Schristos      instructions when it sees data that is not instructions.  */
37875fd0b74Schristos   HOWTO (R_SH_DATA,		/* type */
37975fd0b74Schristos 	 0,			/* rightshift */
380*e992f068Schristos 	 2,			/* size */
38175fd0b74Schristos 	 0,			/* bitsize */
382*e992f068Schristos 	 false,			/* pc_relative */
38375fd0b74Schristos 	 0,			/* bitpos */
38475fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
38575fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
38675fd0b74Schristos 	 "R_SH_DATA",		/* name */
387*e992f068Schristos 	 false,			/* partial_inplace */
38875fd0b74Schristos 	 0,			/* src_mask */
38975fd0b74Schristos 	 0,			/* dst_mask */
390*e992f068Schristos 	 true),			/* pcrel_offset */
39175fd0b74Schristos 
39275fd0b74Schristos   /* The assembler generates this reloc for each label within a block
39375fd0b74Schristos      of instructions.  This permits the linker to avoid swapping
39475fd0b74Schristos      instructions which are the targets of branches.  */
39575fd0b74Schristos   HOWTO (R_SH_LABEL,		/* type */
39675fd0b74Schristos 	 0,			/* rightshift */
397*e992f068Schristos 	 2,			/* size */
39875fd0b74Schristos 	 0,			/* bitsize */
399*e992f068Schristos 	 false,			/* pc_relative */
40075fd0b74Schristos 	 0,			/* bitpos */
40175fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
40275fd0b74Schristos 	 sh_elf_ignore_reloc,	/* special_function */
40375fd0b74Schristos 	 "R_SH_LABEL",		/* name */
404*e992f068Schristos 	 false,			/* partial_inplace */
40575fd0b74Schristos 	 0,			/* src_mask */
40675fd0b74Schristos 	 0,			/* dst_mask */
407*e992f068Schristos 	 true),			/* pcrel_offset */
40875fd0b74Schristos 
40975fd0b74Schristos   /* The next 12 are only supported via linking in SHC-generated objects.  */
41075fd0b74Schristos   HOWTO (R_SH_DIR16,		/* type */
41175fd0b74Schristos 	 0,			/* rightshift */
412*e992f068Schristos 	 2,			/* size */
41375fd0b74Schristos 	 16,			/* bitsize */
414*e992f068Schristos 	 false,			/* pc_relative */
41575fd0b74Schristos 	 0,			/* bitpos */
41675fd0b74Schristos 	 complain_overflow_dont, /* complain_on_overflow */
41775fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
41875fd0b74Schristos 	 "R_SH_DIR16",		/* name */
419*e992f068Schristos 	 false,			/* partial_inplace */
42075fd0b74Schristos 	 0,			/* src_mask */
42175fd0b74Schristos 	 0xffff,		/* dst_mask */
422*e992f068Schristos 	 false),		/* pcrel_offset */
42375fd0b74Schristos 
42475fd0b74Schristos   HOWTO (R_SH_DIR8,		/* type */
42575fd0b74Schristos 	 0,			/* rightshift */
426*e992f068Schristos 	 1,			/* size */
42775fd0b74Schristos 	 8,			/* bitsize */
428*e992f068Schristos 	 false,			/* pc_relative */
42975fd0b74Schristos 	 0,			/* bitpos */
43075fd0b74Schristos 	 complain_overflow_dont, /* complain_on_overflow */
43175fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
43275fd0b74Schristos 	 "R_SH_DIR8",		/* name */
433*e992f068Schristos 	 false,			/* partial_inplace */
43475fd0b74Schristos 	 0,			/* src_mask */
43575fd0b74Schristos 	 0xff,			/* dst_mask */
436*e992f068Schristos 	 false),		/* pcrel_offset */
43775fd0b74Schristos 
43875fd0b74Schristos   HOWTO (R_SH_DIR8UL,		/* type */
43975fd0b74Schristos 	 2,			/* rightshift */
440*e992f068Schristos 	 1,			/* size */
44175fd0b74Schristos 	 8,			/* bitsize */
442*e992f068Schristos 	 false,			/* pc_relative */
44375fd0b74Schristos 	 0,			/* bitpos */
44475fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
44575fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
44675fd0b74Schristos 	 "R_SH_DIR8UL",		/* name */
447*e992f068Schristos 	 false,			/* partial_inplace */
44875fd0b74Schristos 	 0,			/* src_mask */
44975fd0b74Schristos 	 0xff,			/* dst_mask */
450*e992f068Schristos 	 false),		/* pcrel_offset */
45175fd0b74Schristos 
45275fd0b74Schristos   HOWTO (R_SH_DIR8UW,		/* type */
45375fd0b74Schristos 	 1,			/* rightshift */
454*e992f068Schristos 	 1,			/* size */
45575fd0b74Schristos 	 8,			/* bitsize */
456*e992f068Schristos 	 false,			/* pc_relative */
45775fd0b74Schristos 	 0,			/* bitpos */
45875fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
45975fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
46075fd0b74Schristos 	 "R_SH_DIR8UW",		/* name */
461*e992f068Schristos 	 false,			/* partial_inplace */
46275fd0b74Schristos 	 0,			/* src_mask */
46375fd0b74Schristos 	 0xff,			/* dst_mask */
464*e992f068Schristos 	 false),		/* pcrel_offset */
46575fd0b74Schristos 
46675fd0b74Schristos   HOWTO (R_SH_DIR8U,		/* type */
46775fd0b74Schristos 	 0,			/* rightshift */
468*e992f068Schristos 	 1,			/* size */
46975fd0b74Schristos 	 8,			/* bitsize */
470*e992f068Schristos 	 false,			/* pc_relative */
47175fd0b74Schristos 	 0,			/* bitpos */
47275fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
47375fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
47475fd0b74Schristos 	 "R_SH_DIR8U",		/* name */
475*e992f068Schristos 	 false,			/* partial_inplace */
47675fd0b74Schristos 	 0,			/* src_mask */
47775fd0b74Schristos 	 0xff,			/* dst_mask */
478*e992f068Schristos 	 false),		/* pcrel_offset */
47975fd0b74Schristos 
48075fd0b74Schristos   HOWTO (R_SH_DIR8SW,		/* type */
48175fd0b74Schristos 	 1,			/* rightshift */
482*e992f068Schristos 	 1,			/* size */
48375fd0b74Schristos 	 8,			/* bitsize */
484*e992f068Schristos 	 false,			/* pc_relative */
48575fd0b74Schristos 	 0,			/* bitpos */
48675fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
48775fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
48875fd0b74Schristos 	 "R_SH_DIR8SW",		/* name */
489*e992f068Schristos 	 false,			/* partial_inplace */
49075fd0b74Schristos 	 0,			/* src_mask */
49175fd0b74Schristos 	 0xff,			/* dst_mask */
492*e992f068Schristos 	 false),		/* pcrel_offset */
49375fd0b74Schristos 
49475fd0b74Schristos   HOWTO (R_SH_DIR8S,		/* type */
49575fd0b74Schristos 	 0,			/* rightshift */
496*e992f068Schristos 	 1,			/* size */
49775fd0b74Schristos 	 8,			/* bitsize */
498*e992f068Schristos 	 false,			/* pc_relative */
49975fd0b74Schristos 	 0,			/* bitpos */
50075fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
50175fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
50275fd0b74Schristos 	 "R_SH_DIR8S",		/* name */
503*e992f068Schristos 	 false,			/* partial_inplace */
50475fd0b74Schristos 	 0,			/* src_mask */
50575fd0b74Schristos 	 0xff,			/* dst_mask */
506*e992f068Schristos 	 false),		/* pcrel_offset */
50775fd0b74Schristos 
50875fd0b74Schristos   HOWTO (R_SH_DIR4UL,		/* type */
50975fd0b74Schristos 	 2,			/* rightshift */
510*e992f068Schristos 	 1,			/* size */
51175fd0b74Schristos 	 4,			/* bitsize */
512*e992f068Schristos 	 false,			/* pc_relative */
51375fd0b74Schristos 	 0,			/* bitpos */
51475fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
51575fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
51675fd0b74Schristos 	 "R_SH_DIR4UL",		/* name */
517*e992f068Schristos 	 false,			/* partial_inplace */
51875fd0b74Schristos 	 0,			/* src_mask */
51975fd0b74Schristos 	 0x0f,			/* dst_mask */
520*e992f068Schristos 	 false),		/* pcrel_offset */
52175fd0b74Schristos 
52275fd0b74Schristos   HOWTO (R_SH_DIR4UW,		/* type */
52375fd0b74Schristos 	 1,			/* rightshift */
524*e992f068Schristos 	 1,			/* size */
52575fd0b74Schristos 	 4,			/* bitsize */
526*e992f068Schristos 	 false,			/* pc_relative */
52775fd0b74Schristos 	 0,			/* bitpos */
52875fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
52975fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
53075fd0b74Schristos 	 "R_SH_DIR4UW",		/* name */
531*e992f068Schristos 	 false,			/* partial_inplace */
53275fd0b74Schristos 	 0,			/* src_mask */
53375fd0b74Schristos 	 0x0f,			/* dst_mask */
534*e992f068Schristos 	 false),		/* pcrel_offset */
53575fd0b74Schristos 
53675fd0b74Schristos   HOWTO (R_SH_DIR4U,		/* type */
53775fd0b74Schristos 	 0,			/* rightshift */
538*e992f068Schristos 	 1,			/* size */
53975fd0b74Schristos 	 4,			/* bitsize */
540*e992f068Schristos 	 false,			/* pc_relative */
54175fd0b74Schristos 	 0,			/* bitpos */
54275fd0b74Schristos 	 complain_overflow_unsigned, /* complain_on_overflow */
54375fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
54475fd0b74Schristos 	 "R_SH_DIR4U",		/* name */
545*e992f068Schristos 	 false,			/* partial_inplace */
54675fd0b74Schristos 	 0,			/* src_mask */
54775fd0b74Schristos 	 0x0f,			/* dst_mask */
548*e992f068Schristos 	 false),		/* pcrel_offset */
54975fd0b74Schristos 
55075fd0b74Schristos   HOWTO (R_SH_PSHA,		/* type */
55175fd0b74Schristos 	 0,			/* rightshift */
552*e992f068Schristos 	 2,			/* size */
55375fd0b74Schristos 	 7,			/* bitsize */
554*e992f068Schristos 	 false,			/* pc_relative */
55575fd0b74Schristos 	 4,			/* bitpos */
55675fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
55775fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
55875fd0b74Schristos 	 "R_SH_PSHA",		/* name */
559*e992f068Schristos 	 false,			/* partial_inplace */
56075fd0b74Schristos 	 0,			/* src_mask */
56175fd0b74Schristos 	 0x0f,			/* dst_mask */
562*e992f068Schristos 	 false),		/* pcrel_offset */
56375fd0b74Schristos 
56475fd0b74Schristos   HOWTO (R_SH_PSHL,		/* type */
56575fd0b74Schristos 	 0,			/* rightshift */
566*e992f068Schristos 	 2,			/* size */
56775fd0b74Schristos 	 7,			/* bitsize */
568*e992f068Schristos 	 false,			/* pc_relative */
56975fd0b74Schristos 	 4,			/* bitpos */
57075fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
57175fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
57275fd0b74Schristos 	 "R_SH_PSHL",		/* name */
573*e992f068Schristos 	 false,			/* partial_inplace */
57475fd0b74Schristos 	 0,			/* src_mask */
57575fd0b74Schristos 	 0x0f,			/* dst_mask */
576*e992f068Schristos 	 false),		/* pcrel_offset */
57775fd0b74Schristos 
57875fd0b74Schristos   EMPTY_HOWTO (45),
57975fd0b74Schristos   EMPTY_HOWTO (46),
58075fd0b74Schristos   EMPTY_HOWTO (47),
58175fd0b74Schristos   EMPTY_HOWTO (48),
58275fd0b74Schristos   EMPTY_HOWTO (49),
58375fd0b74Schristos   EMPTY_HOWTO (50),
58475fd0b74Schristos   EMPTY_HOWTO (51),
58575fd0b74Schristos 
58675fd0b74Schristos   EMPTY_HOWTO (52),
58775fd0b74Schristos 
58875fd0b74Schristos   HOWTO (R_SH_DIR16S,		/* type */
58975fd0b74Schristos 	 0,			/* rightshift */
590*e992f068Schristos 	 2,			/* size */
59175fd0b74Schristos 	 16,			/* bitsize */
592*e992f068Schristos 	 false,			/* pc_relative */
59375fd0b74Schristos 	 0,			/* bitpos */
59475fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
59575fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
59675fd0b74Schristos 	 "R_SH_DIR16S",		/* name */
597*e992f068Schristos 	 false,			/* partial_inplace */
59875fd0b74Schristos 	 0,			/* src_mask */
59975fd0b74Schristos 	 0xffff,		/* dst_mask */
600*e992f068Schristos 	 false),		/* pcrel_offset */
60175fd0b74Schristos 
60275fd0b74Schristos   EMPTY_HOWTO (54),
60375fd0b74Schristos   EMPTY_HOWTO (55),
60475fd0b74Schristos   EMPTY_HOWTO (56),
60575fd0b74Schristos   EMPTY_HOWTO (57),
60675fd0b74Schristos   EMPTY_HOWTO (58),
60775fd0b74Schristos   EMPTY_HOWTO (59),
60875fd0b74Schristos   EMPTY_HOWTO (60),
60975fd0b74Schristos   EMPTY_HOWTO (61),
61075fd0b74Schristos   EMPTY_HOWTO (62),
61175fd0b74Schristos   EMPTY_HOWTO (63),
61275fd0b74Schristos   EMPTY_HOWTO (64),
61375fd0b74Schristos   EMPTY_HOWTO (65),
61475fd0b74Schristos   EMPTY_HOWTO (66),
61575fd0b74Schristos   EMPTY_HOWTO (67),
61675fd0b74Schristos   EMPTY_HOWTO (68),
61775fd0b74Schristos   EMPTY_HOWTO (69),
61875fd0b74Schristos   EMPTY_HOWTO (70),
61975fd0b74Schristos   EMPTY_HOWTO (71),
62075fd0b74Schristos   EMPTY_HOWTO (72),
62175fd0b74Schristos   EMPTY_HOWTO (73),
62275fd0b74Schristos   EMPTY_HOWTO (74),
62375fd0b74Schristos   EMPTY_HOWTO (75),
62475fd0b74Schristos   EMPTY_HOWTO (76),
62575fd0b74Schristos   EMPTY_HOWTO (77),
62675fd0b74Schristos   EMPTY_HOWTO (78),
62775fd0b74Schristos   EMPTY_HOWTO (79),
62875fd0b74Schristos   EMPTY_HOWTO (80),
62975fd0b74Schristos   EMPTY_HOWTO (81),
63075fd0b74Schristos   EMPTY_HOWTO (82),
63175fd0b74Schristos   EMPTY_HOWTO (83),
63275fd0b74Schristos   EMPTY_HOWTO (84),
63375fd0b74Schristos   EMPTY_HOWTO (85),
63475fd0b74Schristos   EMPTY_HOWTO (86),
63575fd0b74Schristos   EMPTY_HOWTO (87),
63675fd0b74Schristos   EMPTY_HOWTO (88),
63775fd0b74Schristos   EMPTY_HOWTO (89),
63875fd0b74Schristos   EMPTY_HOWTO (90),
63975fd0b74Schristos   EMPTY_HOWTO (91),
64075fd0b74Schristos   EMPTY_HOWTO (92),
64175fd0b74Schristos   EMPTY_HOWTO (93),
64275fd0b74Schristos   EMPTY_HOWTO (94),
64375fd0b74Schristos   EMPTY_HOWTO (95),
64475fd0b74Schristos   EMPTY_HOWTO (96),
64575fd0b74Schristos   EMPTY_HOWTO (97),
64675fd0b74Schristos   EMPTY_HOWTO (98),
64775fd0b74Schristos   EMPTY_HOWTO (99),
64875fd0b74Schristos   EMPTY_HOWTO (100),
64975fd0b74Schristos   EMPTY_HOWTO (101),
65075fd0b74Schristos   EMPTY_HOWTO (102),
65175fd0b74Schristos   EMPTY_HOWTO (103),
65275fd0b74Schristos   EMPTY_HOWTO (104),
65375fd0b74Schristos   EMPTY_HOWTO (105),
65475fd0b74Schristos   EMPTY_HOWTO (106),
65575fd0b74Schristos   EMPTY_HOWTO (107),
65675fd0b74Schristos   EMPTY_HOWTO (108),
65775fd0b74Schristos   EMPTY_HOWTO (109),
65875fd0b74Schristos   EMPTY_HOWTO (110),
65975fd0b74Schristos   EMPTY_HOWTO (111),
66075fd0b74Schristos   EMPTY_HOWTO (112),
66175fd0b74Schristos   EMPTY_HOWTO (113),
66275fd0b74Schristos   EMPTY_HOWTO (114),
66375fd0b74Schristos   EMPTY_HOWTO (115),
66475fd0b74Schristos   EMPTY_HOWTO (116),
66575fd0b74Schristos   EMPTY_HOWTO (117),
66675fd0b74Schristos   EMPTY_HOWTO (118),
66775fd0b74Schristos   EMPTY_HOWTO (119),
66875fd0b74Schristos   EMPTY_HOWTO (120),
66975fd0b74Schristos   EMPTY_HOWTO (121),
67075fd0b74Schristos   EMPTY_HOWTO (122),
67175fd0b74Schristos   EMPTY_HOWTO (123),
67275fd0b74Schristos   EMPTY_HOWTO (124),
67375fd0b74Schristos   EMPTY_HOWTO (125),
67475fd0b74Schristos   EMPTY_HOWTO (126),
67575fd0b74Schristos   EMPTY_HOWTO (127),
67675fd0b74Schristos   EMPTY_HOWTO (128),
67775fd0b74Schristos   EMPTY_HOWTO (129),
67875fd0b74Schristos   EMPTY_HOWTO (130),
67975fd0b74Schristos   EMPTY_HOWTO (131),
68075fd0b74Schristos   EMPTY_HOWTO (132),
68175fd0b74Schristos   EMPTY_HOWTO (133),
68275fd0b74Schristos   EMPTY_HOWTO (134),
68375fd0b74Schristos   EMPTY_HOWTO (135),
68475fd0b74Schristos   EMPTY_HOWTO (136),
68575fd0b74Schristos   EMPTY_HOWTO (137),
68675fd0b74Schristos   EMPTY_HOWTO (138),
68775fd0b74Schristos   EMPTY_HOWTO (139),
68875fd0b74Schristos   EMPTY_HOWTO (140),
68975fd0b74Schristos   EMPTY_HOWTO (141),
69075fd0b74Schristos   EMPTY_HOWTO (142),
69175fd0b74Schristos   EMPTY_HOWTO (143),
69275fd0b74Schristos 
69375fd0b74Schristos   HOWTO (R_SH_TLS_GD_32,	/* type */
69475fd0b74Schristos 	 0,			/* rightshift */
695*e992f068Schristos 	 4,			/* size */
69675fd0b74Schristos 	 32,			/* bitsize */
697*e992f068Schristos 	 false,			/* pc_relative */
69875fd0b74Schristos 	 0,			/* bitpos */
69975fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
70075fd0b74Schristos 	 bfd_elf_generic_reloc,	/* */
70175fd0b74Schristos 	 "R_SH_TLS_GD_32",	/* name */
70275fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
70375fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
70475fd0b74Schristos 	 0xffffffff,		/* dst_mask */
705*e992f068Schristos 	 false),		/* pcrel_offset */
70675fd0b74Schristos 
70775fd0b74Schristos   HOWTO (R_SH_TLS_LD_32,	/* type */
70875fd0b74Schristos 	 0,			/* rightshift */
709*e992f068Schristos 	 4,			/* size */
71075fd0b74Schristos 	 32,			/* bitsize */
711*e992f068Schristos 	 false,			/* pc_relative */
71275fd0b74Schristos 	 0,			/* bitpos */
71375fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
71475fd0b74Schristos 	 bfd_elf_generic_reloc,	/* */
71575fd0b74Schristos 	 "R_SH_TLS_LD_32",	/* name */
71675fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
71775fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
71875fd0b74Schristos 	 0xffffffff,		/* dst_mask */
719*e992f068Schristos 	 false),		/* pcrel_offset */
72075fd0b74Schristos 
72175fd0b74Schristos   HOWTO (R_SH_TLS_LDO_32,	/* type */
72275fd0b74Schristos 	 0,			/* rightshift */
723*e992f068Schristos 	 4,			/* size */
72475fd0b74Schristos 	 32,			/* bitsize */
725*e992f068Schristos 	 false,			/* pc_relative */
72675fd0b74Schristos 	 0,			/* bitpos */
72775fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
72875fd0b74Schristos 	 bfd_elf_generic_reloc,	/* */
72975fd0b74Schristos 	 "R_SH_TLS_LDO_32",	/* name */
73075fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
73175fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
73275fd0b74Schristos 	 0xffffffff,		/* dst_mask */
733*e992f068Schristos 	 false),		/* pcrel_offset */
73475fd0b74Schristos 
73575fd0b74Schristos   HOWTO (R_SH_TLS_IE_32,	/* type */
73675fd0b74Schristos 	 0,			/* rightshift */
737*e992f068Schristos 	 4,			/* size */
73875fd0b74Schristos 	 32,			/* bitsize */
739*e992f068Schristos 	 false,			/* pc_relative */
74075fd0b74Schristos 	 0,			/* bitpos */
74175fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
74275fd0b74Schristos 	 bfd_elf_generic_reloc,	/* */
74375fd0b74Schristos 	 "R_SH_TLS_IE_32",	/* name */
74475fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
74575fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
74675fd0b74Schristos 	 0xffffffff,		/* dst_mask */
747*e992f068Schristos 	 false),		/* pcrel_offset */
74875fd0b74Schristos 
74975fd0b74Schristos   HOWTO (R_SH_TLS_LE_32,	/* type */
75075fd0b74Schristos 	 0,			/* rightshift */
751*e992f068Schristos 	 4,			/* size */
75275fd0b74Schristos 	 32,			/* bitsize */
753*e992f068Schristos 	 false,			/* pc_relative */
75475fd0b74Schristos 	 0,			/* bitpos */
75575fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
75675fd0b74Schristos 	 bfd_elf_generic_reloc,	/* */
75775fd0b74Schristos 	 "R_SH_TLS_LE_32",	/* name */
75875fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
75975fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
76075fd0b74Schristos 	 0xffffffff,		/* dst_mask */
761*e992f068Schristos 	 false),		/* pcrel_offset */
76275fd0b74Schristos 
76375fd0b74Schristos   HOWTO (R_SH_TLS_DTPMOD32,	/* type */
76475fd0b74Schristos 	 0,			/* rightshift */
765*e992f068Schristos 	 4,			/* size */
76675fd0b74Schristos 	 32,			/* bitsize */
767*e992f068Schristos 	 false,			/* pc_relative */
76875fd0b74Schristos 	 0,			/* bitpos */
76975fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
77075fd0b74Schristos 	 bfd_elf_generic_reloc,	/* */
77175fd0b74Schristos 	 "R_SH_TLS_DTPMOD32",	/* name */
77275fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
77375fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
77475fd0b74Schristos 	 0xffffffff,		/* dst_mask */
775*e992f068Schristos 	 false),		/* pcrel_offset */
77675fd0b74Schristos 
77775fd0b74Schristos   HOWTO (R_SH_TLS_DTPOFF32,	/* type */
77875fd0b74Schristos 	 0,			/* rightshift */
779*e992f068Schristos 	 4,			/* size */
78075fd0b74Schristos 	 32,			/* bitsize */
781*e992f068Schristos 	 false,			/* pc_relative */
78275fd0b74Schristos 	 0,			/* bitpos */
78375fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
78475fd0b74Schristos 	 bfd_elf_generic_reloc,	/* */
78575fd0b74Schristos 	 "R_SH_TLS_DTPOFF32",	/* name */
78675fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
78775fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
78875fd0b74Schristos 	 0xffffffff,		/* dst_mask */
789*e992f068Schristos 	 false),		/* pcrel_offset */
79075fd0b74Schristos 
79175fd0b74Schristos   HOWTO (R_SH_TLS_TPOFF32,	/* type */
79275fd0b74Schristos 	 0,			/* rightshift */
793*e992f068Schristos 	 4,			/* size */
79475fd0b74Schristos 	 32,			/* bitsize */
795*e992f068Schristos 	 false,			/* pc_relative */
79675fd0b74Schristos 	 0,			/* bitpos */
79775fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
79875fd0b74Schristos 	 bfd_elf_generic_reloc,	/* */
79975fd0b74Schristos 	 "R_SH_TLS_TPOFF32",	/* name */
80075fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
80175fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
80275fd0b74Schristos 	 0xffffffff,		/* dst_mask */
803*e992f068Schristos 	 false),		/* pcrel_offset */
80475fd0b74Schristos 
80575fd0b74Schristos   EMPTY_HOWTO (152),
80675fd0b74Schristos   EMPTY_HOWTO (153),
80775fd0b74Schristos   EMPTY_HOWTO (154),
80875fd0b74Schristos   EMPTY_HOWTO (155),
80975fd0b74Schristos   EMPTY_HOWTO (156),
81075fd0b74Schristos   EMPTY_HOWTO (157),
81175fd0b74Schristos   EMPTY_HOWTO (158),
81275fd0b74Schristos   EMPTY_HOWTO (159),
81375fd0b74Schristos 
81475fd0b74Schristos   HOWTO (R_SH_GOT32,		/* type */
81575fd0b74Schristos 	 0,			/* rightshift */
816*e992f068Schristos 	 4,			/* size */
81775fd0b74Schristos 	 32,			/* bitsize */
818*e992f068Schristos 	 false,			/* pc_relative */
81975fd0b74Schristos 	 0,			/* bitpos */
82075fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
82175fd0b74Schristos 	 bfd_elf_generic_reloc, /* */
82275fd0b74Schristos 	 "R_SH_GOT32",		/* name */
82375fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
82475fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
82575fd0b74Schristos 	 0xffffffff,		/* dst_mask */
826*e992f068Schristos 	 false),		/* pcrel_offset */
82775fd0b74Schristos 
82875fd0b74Schristos   HOWTO (R_SH_PLT32,		/* type */
82975fd0b74Schristos 	 0,			/* rightshift */
830*e992f068Schristos 	 4,			/* size */
83175fd0b74Schristos 	 32,			/* bitsize */
832*e992f068Schristos 	 true,			/* pc_relative */
83375fd0b74Schristos 	 0,			/* bitpos */
83475fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
83575fd0b74Schristos 	 bfd_elf_generic_reloc, /* */
83675fd0b74Schristos 	 "R_SH_PLT32",		/* name */
83775fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
83875fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
83975fd0b74Schristos 	 0xffffffff,		/* dst_mask */
840*e992f068Schristos 	 true),			/* pcrel_offset */
84175fd0b74Schristos 
84275fd0b74Schristos   HOWTO (R_SH_COPY,		/* type */
84375fd0b74Schristos 	 0,			/* rightshift */
844*e992f068Schristos 	 4,			/* size */
84575fd0b74Schristos 	 32,			/* bitsize */
846*e992f068Schristos 	 false,			/* pc_relative */
84775fd0b74Schristos 	 0,			/* bitpos */
84875fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
84975fd0b74Schristos 	 bfd_elf_generic_reloc, /* */
85075fd0b74Schristos 	 "R_SH_COPY",		/* name */
85175fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
85275fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
85375fd0b74Schristos 	 0xffffffff,		/* dst_mask */
854*e992f068Schristos 	 false),		/* pcrel_offset */
85575fd0b74Schristos 
85675fd0b74Schristos   HOWTO (R_SH_GLOB_DAT,		/* type */
85775fd0b74Schristos 	 0,			/* rightshift */
858*e992f068Schristos 	 4,			/* size */
85975fd0b74Schristos 	 32,			/* bitsize */
860*e992f068Schristos 	 false,			/* pc_relative */
86175fd0b74Schristos 	 0,			/* bitpos */
86275fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
86375fd0b74Schristos 	 bfd_elf_generic_reloc, /* */
86475fd0b74Schristos 	 "R_SH_GLOB_DAT",	/* name */
86575fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
86675fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
86775fd0b74Schristos 	 0xffffffff,		/* dst_mask */
868*e992f068Schristos 	 false),		/* pcrel_offset */
86975fd0b74Schristos 
87075fd0b74Schristos   HOWTO (R_SH_JMP_SLOT,		/* type */
87175fd0b74Schristos 	 0,			/* rightshift */
872*e992f068Schristos 	 4,			/* size */
87375fd0b74Schristos 	 32,			/* bitsize */
874*e992f068Schristos 	 false,			/* pc_relative */
87575fd0b74Schristos 	 0,			/* bitpos */
87675fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
87775fd0b74Schristos 	 bfd_elf_generic_reloc, /* */
87875fd0b74Schristos 	 "R_SH_JMP_SLOT",	/* name */
87975fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
88075fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
88175fd0b74Schristos 	 0xffffffff,		/* dst_mask */
882*e992f068Schristos 	 false),		/* pcrel_offset */
88375fd0b74Schristos 
88475fd0b74Schristos   HOWTO (R_SH_RELATIVE,		/* type */
88575fd0b74Schristos 	 0,			/* rightshift */
886*e992f068Schristos 	 4,			/* size */
88775fd0b74Schristos 	 32,			/* bitsize */
888*e992f068Schristos 	 false,			/* pc_relative */
88975fd0b74Schristos 	 0,			/* bitpos */
89075fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
89175fd0b74Schristos 	 bfd_elf_generic_reloc, /* */
89275fd0b74Schristos 	 "R_SH_RELATIVE",	/* name */
89375fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
89475fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
89575fd0b74Schristos 	 0xffffffff,		/* dst_mask */
896*e992f068Schristos 	 false),		/* pcrel_offset */
89775fd0b74Schristos 
89875fd0b74Schristos   HOWTO (R_SH_GOTOFF,		/* type */
89975fd0b74Schristos 	 0,			/* rightshift */
900*e992f068Schristos 	 4,			/* size */
90175fd0b74Schristos 	 32,			/* bitsize */
902*e992f068Schristos 	 false,			/* pc_relative */
90375fd0b74Schristos 	 0,			/* bitpos */
90475fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
90575fd0b74Schristos 	 bfd_elf_generic_reloc, /* */
90675fd0b74Schristos 	 "R_SH_GOTOFF",		/* name */
90775fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
90875fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
90975fd0b74Schristos 	 0xffffffff,		/* dst_mask */
910*e992f068Schristos 	 false),		/* pcrel_offset */
91175fd0b74Schristos 
91275fd0b74Schristos   HOWTO (R_SH_GOTPC,		/* type */
91375fd0b74Schristos 	 0,			/* rightshift */
914*e992f068Schristos 	 4,			/* size */
91575fd0b74Schristos 	 32,			/* bitsize */
916*e992f068Schristos 	 true,			/* pc_relative */
91775fd0b74Schristos 	 0,			/* bitpos */
91875fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
91975fd0b74Schristos 	 bfd_elf_generic_reloc, /* */
92075fd0b74Schristos 	 "R_SH_GOTPC",		/* name */
92175fd0b74Schristos 	 SH_PARTIAL32,		/* partial_inplace */
92275fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
92375fd0b74Schristos 	 0xffffffff,		/* dst_mask */
924*e992f068Schristos 	 true),			/* pcrel_offset */
92575fd0b74Schristos 
92675fd0b74Schristos   HOWTO (R_SH_GOTPLT32,		/* type */
92775fd0b74Schristos 	 0,			/* rightshift */
928*e992f068Schristos 	 4,			/* size */
92975fd0b74Schristos 	 32,			/* bitsize */
930*e992f068Schristos 	 false,			/* pc_relative */
93175fd0b74Schristos 	 0,			/* bitpos */
93275fd0b74Schristos 	 complain_overflow_bitfield, /* complain_on_overflow */
93375fd0b74Schristos 	 bfd_elf_generic_reloc, /* */
93475fd0b74Schristos 	 "R_SH_GOTPLT32",	/* name */
935*e992f068Schristos 	 false,			/* partial_inplace */
93675fd0b74Schristos 	 /* ??? Why not 0?  */
93775fd0b74Schristos 	 SH_SRC_MASK32,		/* src_mask */
93875fd0b74Schristos 	 0xffffffff,		/* dst_mask */
939*e992f068Schristos 	 false),		/* pcrel_offset */
94075fd0b74Schristos 
94175fd0b74Schristos   EMPTY_HOWTO (169),
94275fd0b74Schristos   EMPTY_HOWTO (170),
94375fd0b74Schristos   EMPTY_HOWTO (171),
94475fd0b74Schristos   EMPTY_HOWTO (172),
94575fd0b74Schristos   EMPTY_HOWTO (173),
94675fd0b74Schristos   EMPTY_HOWTO (174),
94775fd0b74Schristos   EMPTY_HOWTO (175),
94875fd0b74Schristos   EMPTY_HOWTO (176),
94975fd0b74Schristos   EMPTY_HOWTO (177),
95075fd0b74Schristos   EMPTY_HOWTO (178),
95175fd0b74Schristos   EMPTY_HOWTO (179),
95275fd0b74Schristos   EMPTY_HOWTO (180),
95375fd0b74Schristos   EMPTY_HOWTO (181),
95475fd0b74Schristos   EMPTY_HOWTO (182),
95575fd0b74Schristos   EMPTY_HOWTO (183),
95675fd0b74Schristos   EMPTY_HOWTO (184),
95775fd0b74Schristos   EMPTY_HOWTO (185),
95875fd0b74Schristos   EMPTY_HOWTO (186),
95975fd0b74Schristos   EMPTY_HOWTO (187),
96075fd0b74Schristos   EMPTY_HOWTO (188),
96175fd0b74Schristos   EMPTY_HOWTO (189),
96275fd0b74Schristos   EMPTY_HOWTO (190),
96375fd0b74Schristos   EMPTY_HOWTO (191),
96475fd0b74Schristos   EMPTY_HOWTO (192),
96575fd0b74Schristos   EMPTY_HOWTO (193),
96675fd0b74Schristos   EMPTY_HOWTO (194),
96775fd0b74Schristos   EMPTY_HOWTO (195),
96875fd0b74Schristos   EMPTY_HOWTO (196),
96975fd0b74Schristos   EMPTY_HOWTO (197),
97075fd0b74Schristos   EMPTY_HOWTO (198),
97175fd0b74Schristos   EMPTY_HOWTO (199),
97275fd0b74Schristos   EMPTY_HOWTO (200),
97375fd0b74Schristos 
97475fd0b74Schristos   /* FDPIC-relative offset to a GOT entry, for movi20.  */
97575fd0b74Schristos   HOWTO (R_SH_GOT20,		/* type */
97675fd0b74Schristos 	 0,			/* rightshift */
977*e992f068Schristos 	 4,			/* size */
97875fd0b74Schristos 	 20,			/* bitsize */
979*e992f068Schristos 	 false,			/* pc_relative */
98075fd0b74Schristos 	 0,			/* bitpos */
98175fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
98275fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
98375fd0b74Schristos 	 "R_SH_GOT20",		/* name */
984*e992f068Schristos 	 false,			/* partial_inplace */
98575fd0b74Schristos 	 0,			/* src_mask */
98675fd0b74Schristos 	 0x00f0ffff,		/* dst_mask */
987*e992f068Schristos 	 false),		/* pcrel_offset */
98875fd0b74Schristos 
98975fd0b74Schristos   /* FDPIC-relative offset to a data object, for movi20.  */
99075fd0b74Schristos   HOWTO (R_SH_GOTOFF20,		/* type */
99175fd0b74Schristos 	 0,			/* rightshift */
992*e992f068Schristos 	 4,			/* size */
99375fd0b74Schristos 	 20,			/* bitsize */
994*e992f068Schristos 	 false,			/* pc_relative */
99575fd0b74Schristos 	 0,			/* bitpos */
99675fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
99775fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
99875fd0b74Schristos 	 "R_SH_GOTOFF20",	/* name */
999*e992f068Schristos 	 false,			/* partial_inplace */
100075fd0b74Schristos 	 0,			/* src_mask */
100175fd0b74Schristos 	 0x00f0ffff,		/* dst_mask */
1002*e992f068Schristos 	 false),		/* pcrel_offset */
100375fd0b74Schristos 
100475fd0b74Schristos   /* FDPIC-relative offset to a GOT entry for a function descriptor.  */
100575fd0b74Schristos   HOWTO (R_SH_GOTFUNCDESC,	/* type */
100675fd0b74Schristos 	 0,			/* rightshift */
1007*e992f068Schristos 	 4,			/* size */
100875fd0b74Schristos 	 32,			/* bitsize */
1009*e992f068Schristos 	 false,			/* pc_relative */
101075fd0b74Schristos 	 0,			/* bitpos */
101175fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
101275fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
101375fd0b74Schristos 	 "R_SH_GOTFUNCDESC",	/* name */
1014*e992f068Schristos 	 false,			/* partial_inplace */
101575fd0b74Schristos 	 0,			/* src_mask */
101675fd0b74Schristos 	 0xffffffff,		/* dst_mask */
1017*e992f068Schristos 	 false),		/* pcrel_offset */
101875fd0b74Schristos 
101975fd0b74Schristos   /* FDPIC-relative offset to a GOT entry for a function descriptor,
102075fd0b74Schristos      for movi20.  */
102175fd0b74Schristos   HOWTO (R_SH_GOTFUNCDESC20,	/* type */
102275fd0b74Schristos 	 0,			/* rightshift */
1023*e992f068Schristos 	 4,			/* size */
102475fd0b74Schristos 	 20,			/* bitsize */
1025*e992f068Schristos 	 false,			/* pc_relative */
102675fd0b74Schristos 	 0,			/* bitpos */
102775fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
102875fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
102975fd0b74Schristos 	 "R_SH_GOTFUNCDESC20",	/* name */
1030*e992f068Schristos 	 false,			/* partial_inplace */
103175fd0b74Schristos 	 0,			/* src_mask */
103275fd0b74Schristos 	 0x00f0ffff,		/* dst_mask */
1033*e992f068Schristos 	 false),		/* pcrel_offset */
103475fd0b74Schristos 
103575fd0b74Schristos   /* FDPIC-relative offset to a function descriptor.  */
103675fd0b74Schristos   HOWTO (R_SH_GOTOFFFUNCDESC,	/* type */
103775fd0b74Schristos 	 0,			/* rightshift */
1038*e992f068Schristos 	 4,			/* size */
103975fd0b74Schristos 	 32,			/* bitsize */
1040*e992f068Schristos 	 false,			/* pc_relative */
104175fd0b74Schristos 	 0,			/* bitpos */
104275fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
104375fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
104475fd0b74Schristos 	 "R_SH_GOTOFFFUNCDESC",	/* name */
1045*e992f068Schristos 	 false,			/* partial_inplace */
104675fd0b74Schristos 	 0,			/* src_mask */
104775fd0b74Schristos 	 0xffffffff,		/* dst_mask */
1048*e992f068Schristos 	 false),		/* pcrel_offset */
104975fd0b74Schristos 
105075fd0b74Schristos   /* FDPIC-relative offset to a function descriptor, for movi20.  */
105175fd0b74Schristos   HOWTO (R_SH_GOTOFFFUNCDESC20,	/* type */
105275fd0b74Schristos 	 0,			/* rightshift */
1053*e992f068Schristos 	 4,			/* size */
105475fd0b74Schristos 	 20,			/* bitsize */
1055*e992f068Schristos 	 false,			/* pc_relative */
105675fd0b74Schristos 	 0,			/* bitpos */
105775fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
105875fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
105975fd0b74Schristos 	 "R_SH_GOTOFFFUNCDESC20", /* name */
1060*e992f068Schristos 	 false,			/* partial_inplace */
106175fd0b74Schristos 	 0,			/* src_mask */
106275fd0b74Schristos 	 0x00f0ffff,		/* dst_mask */
1063*e992f068Schristos 	 false),		/* pcrel_offset */
106475fd0b74Schristos 
106575fd0b74Schristos   /* Address of an official function descriptor.  */
106675fd0b74Schristos   HOWTO (R_SH_FUNCDESC,		/* type */
106775fd0b74Schristos 	 0,			/* rightshift */
1068*e992f068Schristos 	 4,			/* size */
106975fd0b74Schristos 	 32,			/* bitsize */
1070*e992f068Schristos 	 false,			/* pc_relative */
107175fd0b74Schristos 	 0,			/* bitpos */
107275fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
107375fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
107475fd0b74Schristos 	 "R_SH_FUNCDESC",	/* name */
1075*e992f068Schristos 	 false,			/* partial_inplace */
107675fd0b74Schristos 	 0,			/* src_mask */
107775fd0b74Schristos 	 0xffffffff,		/* dst_mask */
1078*e992f068Schristos 	 false),		/* pcrel_offset */
107975fd0b74Schristos 
108075fd0b74Schristos   /* Function descriptor to be filled in by the dynamic linker.  */
108175fd0b74Schristos   HOWTO (R_SH_FUNCDESC_VALUE,	/* type */
108275fd0b74Schristos 	 0,			/* rightshift */
1083*e992f068Schristos 	 4,			/* size */
108475fd0b74Schristos 	 64,			/* bitsize */
1085*e992f068Schristos 	 false,			/* pc_relative */
108675fd0b74Schristos 	 0,			/* bitpos */
108775fd0b74Schristos 	 complain_overflow_signed, /* complain_on_overflow */
108875fd0b74Schristos 	 bfd_elf_generic_reloc,	/* special_function */
108975fd0b74Schristos 	 "R_SH_FUNCDESC_VALUE", /* name */
1090*e992f068Schristos 	 false,			/* partial_inplace */
109175fd0b74Schristos 	 0,			/* src_mask */
109275fd0b74Schristos 	 0xffffffff,		/* dst_mask */
1093*e992f068Schristos 	 false),		/* pcrel_offset */
109475fd0b74Schristos 
109575fd0b74Schristos #undef SH_PARTIAL32
109675fd0b74Schristos #undef SH_SRC_MASK32
109775fd0b74Schristos #undef SH_ELF_RELOC
1098