/* List the relocation types for tilegx.  -*- C -*-
   Copyright (C) 2012 Tilera Corporation
   This file is part of elfutils.

   This file is free software; you can redistribute it and/or modify
   it under the terms of either

     * the GNU Lesser General Public License as published by the Free
       Software Foundation; either version 3 of the License, or (at
       your option) any later version

   or

     * the GNU General Public License as published by the Free
       Software Foundation; either version 2 of the License, or (at
       your option) any later version

   or both in parallel, as here.

   elfutils 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 copies of the GNU General Public License and
   the GNU Lesser General Public License along with this program.  If
   not, see <http://www.gnu.org/licenses/>.  */

/*	    NAME,			REL|EXEC|DYN	*/

RELOC_TYPE (NONE,			0)
RELOC_TYPE (64,				REL|EXEC|DYN)
RELOC_TYPE (32,				REL|EXEC|DYN)
RELOC_TYPE (16,				REL|EXEC|DYN)
RELOC_TYPE (8,				REL|EXEC|DYN)
RELOC_TYPE (64_PCREL,			REL)
RELOC_TYPE (32_PCREL,			REL)
RELOC_TYPE (16_PCREL,			REL)
RELOC_TYPE (8_PCREL,			REL)
RELOC_TYPE (HW0,			REL)
RELOC_TYPE (HW1,			REL)
RELOC_TYPE (HW2,			REL)
RELOC_TYPE (HW3,			REL)
RELOC_TYPE (HW0_LAST,			REL)
RELOC_TYPE (HW1_LAST,			REL)
RELOC_TYPE (HW2_LAST,			REL)
RELOC_TYPE (COPY,			EXEC)
RELOC_TYPE (GLOB_DAT,			EXEC|DYN)
RELOC_TYPE (JMP_SLOT,			EXEC|DYN)
RELOC_TYPE (RELATIVE,			EXEC|DYN)
RELOC_TYPE (BROFF_X1,			REL)
RELOC_TYPE (JUMPOFF_X1,			REL)
RELOC_TYPE (JUMPOFF_X1_PLT,		REL)
RELOC_TYPE (IMM8_X0,			REL)
RELOC_TYPE (IMM8_Y0,			REL)
RELOC_TYPE (IMM8_X1,			REL)
RELOC_TYPE (IMM8_Y1,			REL)
RELOC_TYPE (DEST_IMM8_X1,		REL)
RELOC_TYPE (MT_IMM14_X1,		REL)
RELOC_TYPE (MF_IMM14_X1,		REL)
RELOC_TYPE (MMSTART_X0,			REL)
RELOC_TYPE (MMEND_X0,			REL)
RELOC_TYPE (SHAMT_X0,			REL)
RELOC_TYPE (SHAMT_X1,			REL)
RELOC_TYPE (SHAMT_Y0,			REL)
RELOC_TYPE (SHAMT_Y1,			REL)
RELOC_TYPE (IMM16_X0_HW0,		REL)
RELOC_TYPE (IMM16_X1_HW0,		REL)
RELOC_TYPE (IMM16_X0_HW1,		REL)
RELOC_TYPE (IMM16_X1_HW1,		REL)
RELOC_TYPE (IMM16_X0_HW2,		REL)
RELOC_TYPE (IMM16_X1_HW2,		REL)
RELOC_TYPE (IMM16_X0_HW3,		REL)
RELOC_TYPE (IMM16_X1_HW3,		REL)
RELOC_TYPE (IMM16_X0_HW0_LAST,		REL)
RELOC_TYPE (IMM16_X1_HW0_LAST,		REL)
RELOC_TYPE (IMM16_X0_HW1_LAST,		REL)
RELOC_TYPE (IMM16_X1_HW1_LAST,		REL)
RELOC_TYPE (IMM16_X0_HW2_LAST,		REL)
RELOC_TYPE (IMM16_X1_HW2_LAST,		REL)
RELOC_TYPE (IMM16_X0_HW0_PCREL,		REL)
RELOC_TYPE (IMM16_X1_HW0_PCREL,		REL)
RELOC_TYPE (IMM16_X0_HW1_PCREL,		REL)
RELOC_TYPE (IMM16_X1_HW1_PCREL,		REL)
RELOC_TYPE (IMM16_X0_HW2_PCREL,		REL)
RELOC_TYPE (IMM16_X1_HW2_PCREL,		REL)
RELOC_TYPE (IMM16_X0_HW3_PCREL,		REL)
RELOC_TYPE (IMM16_X1_HW3_PCREL,		REL)
RELOC_TYPE (IMM16_X0_HW0_LAST_PCREL,	REL)
RELOC_TYPE (IMM16_X1_HW0_LAST_PCREL,	REL)
RELOC_TYPE (IMM16_X0_HW1_LAST_PCREL,	REL)
RELOC_TYPE (IMM16_X1_HW1_LAST_PCREL,	REL)
RELOC_TYPE (IMM16_X0_HW2_LAST_PCREL,	REL)
RELOC_TYPE (IMM16_X1_HW2_LAST_PCREL,	REL)
RELOC_TYPE (IMM16_X0_HW0_GOT,		REL)
RELOC_TYPE (IMM16_X1_HW0_GOT,		REL)
RELOC_TYPE (IMM16_X0_HW0_LAST_GOT,	REL)
RELOC_TYPE (IMM16_X1_HW0_LAST_GOT,	REL)
RELOC_TYPE (IMM16_X0_HW1_LAST_GOT,	REL)
RELOC_TYPE (IMM16_X1_HW1_LAST_GOT,	REL)
RELOC_TYPE (IMM16_X0_HW0_TLS_GD,	REL)
RELOC_TYPE (IMM16_X1_HW0_TLS_GD,	REL)
RELOC_TYPE (IMM16_X0_HW0_LAST_TLS_GD,	REL)
RELOC_TYPE (IMM16_X1_HW0_LAST_TLS_GD,	REL)
RELOC_TYPE (IMM16_X0_HW1_LAST_TLS_GD,	REL)
RELOC_TYPE (IMM16_X1_HW1_LAST_TLS_GD,	REL)
RELOC_TYPE (IMM16_X0_HW0_TLS_IE,	REL)
RELOC_TYPE (IMM16_X1_HW0_TLS_IE,	REL)
RELOC_TYPE (IMM16_X0_HW0_LAST_TLS_IE,	REL)
RELOC_TYPE (IMM16_X1_HW0_LAST_TLS_IE,	REL)
RELOC_TYPE (IMM16_X0_HW1_LAST_TLS_IE,	REL)
RELOC_TYPE (IMM16_X1_HW1_LAST_TLS_IE,	REL)
RELOC_TYPE (TLS_DTPMOD64,		EXEC|DYN)
RELOC_TYPE (TLS_DTPOFF64,		EXEC|DYN)
RELOC_TYPE (TLS_TPOFF64,		EXEC|DYN)
RELOC_TYPE (TLS_DTPMOD32,		EXEC|DYN)
RELOC_TYPE (TLS_DTPOFF32,		EXEC|DYN)
RELOC_TYPE (TLS_TPOFF32,		EXEC|DYN)
RELOC_TYPE (GNU_VTINHERIT,		REL)
RELOC_TYPE (GNU_VTENTRY,		REL)
