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