/* List the relocation types for tilegx.  -*- C -*-
   Copyright (C) 2012 Tilera Corporation
   Copyright (C) 2015 Red Hat, Inc.
   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|DYN)
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)
