/* ARC relocation types
   Copyright (C) 2015-2021 Free Software Foundation, Inc.

   This file is part of BFD, the Binary File Descriptor library.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   GAS/GDB is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   any later version.

   GAS/GDB is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with GAS or GDB; see the file COPYING3.  If not, write to
   the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */


ARC_RELOC_HOWTO(ARC_NONE, 0, \
                2, \
                32, \
                replace_none, \
                bitfield, \
                0)

ARC_RELOC_HOWTO(ARC_8, 1, \
                0, \
                8, \
                replace_bits8, \
                bitfield, \
                ( S + A ))

ARC_RELOC_HOWTO(ARC_16, 2, \
                1, \
                16, \
                replace_bits16, \
                bitfield, \
                ( S + A ))

ARC_RELOC_HOWTO(ARC_24, 3, \
                2, \
                24, \
                replace_bits24, \
                bitfield, \
                ( S + A ))

ARC_RELOC_HOWTO(ARC_32, 4, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( S + A ))

ARC_RELOC_HOWTO(ARC_N8, 8, \
                0, \
                8, \
                replace_bits8, \
                bitfield, \
                ( A - S ))

ARC_RELOC_HOWTO(ARC_N16, 9, \
                1, \
                16, \
                replace_bits16, \
                bitfield, \
                ( A - S ))

ARC_RELOC_HOWTO(ARC_N24, 10, \
                2, \
                24, \
                replace_bits24, \
                bitfield, \
                ( A - S ))

ARC_RELOC_HOWTO(ARC_N32, 11, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( A - S ))

ARC_RELOC_HOWTO(ARC_SDA, 12, \
                2, \
                9, \
                replace_disp9, \
                bitfield, \
                ( ME ( ( ( S + A ) - _SDA_BASE_ ) ) ))

ARC_RELOC_HOWTO(ARC_SECTOFF, 13, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( ( S - SECTSTART ) + A ))

ARC_RELOC_HOWTO(ARC_S21H_PCREL, 14, \
                2, \
                20, \
                replace_disp21h, \
                signed, \
                ( ME ( ( ( ( S + A ) - P ) >> 1 ) ) ))

ARC_RELOC_HOWTO(ARC_S21W_PCREL, 15, \
                2, \
                19, \
                replace_disp21w, \
                signed, \
                ( ME ( ( ( ( S + A ) - P ) >> 2 ) ) ))

ARC_RELOC_HOWTO(ARC_S25H_PCREL, 16, \
                2, \
                24, \
                replace_disp25h, \
                signed, \
                ( ME ( ( ( ( S + A ) - P ) >> 1 ) ) ))

ARC_RELOC_HOWTO(ARC_S25W_PCREL, 17, \
                2, \
                23, \
                replace_disp25w, \
                signed, \
                ( ME ( ( ( ( S + A ) - P ) >> 2 ) ) ))

ARC_RELOC_HOWTO(ARC_SDA32, 18, \
                2, \
                32, \
                replace_word32, \
                signed, \
                ( ( ( S + A ) - _SDA_BASE_ ) ))

ARC_RELOC_HOWTO(ARC_SDA_LDST, 19, \
                2, \
                9, \
                replace_disp9ls, \
                signed, \
                ( ME ( ( ( S + A ) - _SDA_BASE_ ) ) ))

ARC_RELOC_HOWTO(ARC_SDA_LDST1, 20, \
                2, \
                9, \
                replace_disp9ls, \
                signed, \
                ( ME ( ( ( ( S + A ) - _SDA_BASE_ ) >> 1 ) ) ))

ARC_RELOC_HOWTO(ARC_SDA_LDST2, 21, \
                2, \
                9, \
                replace_disp9ls, \
                signed, \
                ( ME ( ( ( ( S + A ) - _SDA_BASE_ ) >> 2 ) ) ))

ARC_RELOC_HOWTO(ARC_SDA16_LD, 22, \
                1, \
                9, \
                replace_disp9s, \
                signed, \
                ( ( S + A ) - _SDA_BASE_ ))

ARC_RELOC_HOWTO(ARC_SDA16_LD1, 23, \
                1, \
                9, \
                replace_disp9s, \
                signed, \
                ( ( ( S + A ) - _SDA_BASE_ ) >> 1 ))

ARC_RELOC_HOWTO(ARC_SDA16_LD2, 24, \
                1, \
                9, \
                replace_disp9s, \
                signed, \
                ( ( ( S + A ) - _SDA_BASE_ ) >> 2 ))

ARC_RELOC_HOWTO(ARC_S13_PCREL, 25, \
                1, \
                11, \
                replace_disp13s, \
                signed, \
                ( ( ( S + A ) - P ) >> 2 ))

ARC_RELOC_HOWTO(ARC_W, 26, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( ( S + A ) & ( ~3 ) ))

ARC_RELOC_HOWTO(ARC_32_ME, 27, \
                2, \
                32, \
                replace_limm, \
                signed, \
                ( ME ( ( S + A ) ) ))

ARC_RELOC_HOWTO(ARC_32_ME_S, 105, \
                2, \
                32, \
                replace_limms, \
                signed, \
                ( ME ( ( S + A ) ) ))

ARC_RELOC_HOWTO(ARC_N32_ME, 28, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( ME ( ( A - S ) ) ))

ARC_RELOC_HOWTO(ARC_SECTOFF_ME, 29, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( ME ( ( ( S - SECTSTART ) + A ) ) ))

ARC_RELOC_HOWTO(ARC_SDA32_ME, 30, \
                2, \
                32, \
                replace_limm, \
                signed, \
                ( ME ( ( ( S + A ) - _SDA_BASE_ ) ) ))

ARC_RELOC_HOWTO(ARC_W_ME, 31, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( ME ( ( ( S + A ) & ( ~3 ) ) ) ))

ARC_RELOC_HOWTO(AC_SECTOFF_U8, 35, \
                2, \
                9, \
                replace_disp9ls, \
                bitfield, \
                ( ME ( ( ( S + A ) - SECTSTART ) ) ))

ARC_RELOC_HOWTO(AC_SECTOFF_U8_1, 36, \
                2, \
                9, \
                replace_disp9ls, \
                bitfield, \
                ( ME ( ( ( ( S + A ) - SECTSTART ) >> 1 ) ) ))

ARC_RELOC_HOWTO(AC_SECTOFF_U8_2, 37, \
                2, \
                9, \
                replace_disp9ls, \
                bitfield, \
                ( ME ( ( ( ( S + A ) - SECTSTART ) >> 2 ) ) ))

ARC_RELOC_HOWTO(AC_SECTOFF_S9, 38, \
                2, \
                9, \
                replace_disp9ls, \
                bitfield, \
                ( ME ( ( ( ( S + A ) - SECTSTART ) - 256 ) ) ))

ARC_RELOC_HOWTO(AC_SECTOFF_S9_1, 39, \
                2, \
                9, \
                replace_disp9ls, \
                bitfield, \
                ( ME ( ( ( ( ( S + A ) - SECTSTART ) - 256 ) >> 1 ) ) ))

ARC_RELOC_HOWTO(AC_SECTOFF_S9_2, 40, \
                2, \
                9, \
                replace_disp9ls, \
                bitfield, \
                ( ME ( ( ( ( ( S + A ) - SECTSTART ) - 256 ) >> 2 ) ) ))

ARC_RELOC_HOWTO(ARC_SECTOFF_ME_1, 41, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( ME ( ( ( ( S - SECTSTART ) + A ) >> 1 ) ) ))

ARC_RELOC_HOWTO(ARC_SECTOFF_ME_2, 42, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( ME ( ( ( ( S - SECTSTART ) + A ) >> 2 ) ) ))

ARC_RELOC_HOWTO(ARC_SECTOFF_1, 43, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( ( ( S - SECTSTART ) + A ) >> 1 ))

ARC_RELOC_HOWTO(ARC_SECTOFF_2, 44, \
                2, \
                32, \
                replace_word32, \
                bitfield, \
                ( ( ( S - SECTSTART ) + A ) >> 2 ))

ARC_RELOC_HOWTO(ARC_SDA_12, 45, \
                2, \
                12, \
                replace_disp12s, \
                signed, \
                ( ME ( ( ( S + A ) - _SDA_BASE_ ) ) ))

ARC_RELOC_HOWTO(ARC_SDA16_ST2, 48, \
                1, \
                9, \
                replace_disp9s1, \
                signed, \
                ( ( ( S + A ) - _SDA_BASE_ ) >> 2 ))

ARC_RELOC_HOWTO(ARC_32_PCREL, 49, \
                2, \
                32, \
                replace_word32, \
                signed, \
                ( ( S + A ) - PDATA ))

ARC_RELOC_HOWTO(ARC_PC32, 50, \
                2, \
                32, \
                replace_word32, \
                signed, \
                ( ME ( ( ( S + A ) - P ) ) ))

ARC_RELOC_HOWTO(ARC_GOT32, 59, \
                2, \
                32, \
                replace_word32, \
                dont, \
                ( G + A ))

ARC_RELOC_HOWTO(ARC_GOTPC32, 51, \
                2, \
                32, \
                replace_word32, \
                signed, \
                ( ME ( ( ( ( GOT + G ) + A ) - P ) ) ))

ARC_RELOC_HOWTO(ARC_PLT32, 52, \
                2, \
                32, \
                replace_word32, \
                signed, \
                ( ME ( ( ( L + A ) - P ) ) ))

ARC_RELOC_HOWTO(ARC_COPY, 53, \
                2, \
                0, \
                replace_none, \
                signed, \
                none)

ARC_RELOC_HOWTO(ARC_GLOB_DAT, 54, \
                2, \
                32, \
                replace_word32, \
                signed, \
                S)

ARC_RELOC_HOWTO(ARC_JMP_SLOT, 55, \
                2, \
                32, \
                replace_word32, \
                signed, \
                ( ME ( S ) ))

ARC_RELOC_HOWTO(ARC_RELATIVE, 56, \
                2, \
                32, \
                replace_word32, \
                signed, \
                ( ME ( ( B + A ) ) ))

ARC_RELOC_HOWTO(ARC_GOTOFF, 57, \
                2, \
                32, \
                replace_word32, \
                signed, \
                ( ME ( ( ( S + A ) - GOT ) ) ))

ARC_RELOC_HOWTO(ARC_GOTPC, 58, \
                2, \
                32, \
                replace_word32, \
                signed, \
                ( ME ( ( GOT_BEGIN - P ) ) ))

ARC_RELOC_HOWTO(ARC_S21W_PCREL_PLT, 60, \
                2, \
                19, \
                replace_disp21w, \
                signed, \
                ( ME ( ( ( ( L + A ) - P ) >> 2 ) ) ))

ARC_RELOC_HOWTO(ARC_S25H_PCREL_PLT, 61, \
                2, \
                24, \
                replace_disp25h, \
                signed, \
                ( ME ( ( ( ( L + A ) - P ) >> 1 ) ) ))

ARC_RELOC_HOWTO(ARC_JLI_SECTOFF, 63, \
                1, \
                10, \
                replace_jli, \
                bitfield, \
                ( ( S - JLI ) >> 2))

ARC_RELOC_HOWTO(ARC_TLS_DTPMOD, 66, \
                2, \
                32, \
                replace_word32, \
                dont, \
                0)

ARC_RELOC_HOWTO(ARC_TLS_TPOFF, 68, \
                2, \
                32, \
                replace_word32, \
                dont, \
                0)

ARC_RELOC_HOWTO(ARC_TLS_GD_GOT, 69, \
                2, \
                32, \
                replace_word32, \
                dont, \
                ( ME ( ( ( G + GOT ) - P ) ) ))

ARC_RELOC_HOWTO(ARC_TLS_GD_LD, 70, \
                2, \
                0, \
                replace_none, \
                dont, \
                0)

ARC_RELOC_HOWTO(ARC_TLS_GD_CALL, 71, \
                2, \
                32, \
                replace_word32, \
                dont, \
                0)

ARC_RELOC_HOWTO(ARC_TLS_IE_GOT, 72, \
                2, \
                32, \
                replace_word32, \
                dont, \
                ( ME ( ( ( G + GOT ) - P ) ) ))

ARC_RELOC_HOWTO(ARC_TLS_DTPOFF, 67, \
                2, \
                32, \
                replace_word32, \
                dont, \
		( ME ( S - FINAL_SECTSTART ) + A ))

ARC_RELOC_HOWTO(ARC_TLS_DTPOFF_S9, 73, \
                2, \
                32, \
                replace_word32, \
                dont, \
                ( ME ( ( S - TLS_REL ) ) ))

ARC_RELOC_HOWTO(ARC_TLS_LE_S9, 74, \
                2, \
                32, \
                replace_word32, \
                dont, \
                ( ME ( ( ( S + TCB_SIZE ) - TLS_REL ) ) ))

ARC_RELOC_HOWTO(ARC_TLS_LE_32, 75, \
                2, \
                32, \
                replace_word32, \
                dont, \
		( ME ( ( ( ( S + A ) + TLS_TBSS ) - TLS_REL ) ) ))

ARC_RELOC_HOWTO(ARC_S25W_PCREL_PLT, 76, \
                2, \
                23, \
                replace_disp25w, \
                signed, \
                ( ME ( ( ( ( L + A ) - P ) >> 2 ) ) ))

ARC_RELOC_HOWTO(ARC_S21H_PCREL_PLT, 77, \
                2, \
                20, \
                replace_disp21h, \
                signed, \
                ( ME ( ( ( ( L + A ) - P ) >> 1 ) ) ))

ARC_RELOC_HOWTO(ARC_NPS_CMEM16, 78, \
                2, \
                16, \
                replace_bits16, \
                dont, \
                ( ME ( S + A )))
