/* ARC relocation types
   Copyright (C) 2015-2016 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, \
                ( S - A ))

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

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

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

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

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, \
                ( ME ( ( ( 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 ( ( S - A ) ) ))

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, \
                ( ( S + A ) - SECTSTART ))

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

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

ARC_RELOC_HOWTO(AC_SECTFOFF_S9, 38, \
                2, \
                9, \
                replace_disp9ls, \
                bitfield, \
                ( ( S + A ) - SECTSTART ))

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

ARC_RELOC_HOWTO(AC_SECTFOFF_S9_2, 40, \
                2, \
                9, \
                replace_disp9ls, \
                bitfield, \
                ( ( ( S + A ) - SECTSTART ) >> 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_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_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 - TLS_REL ) ) ))

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 ) + TCB_SIZE ) - 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 )))
