/* List the relocation types for ia64.  -*- C -*-
   Copyright (C) 2005, 2006 Red Hat, Inc.
   This file is part of Red Hat elfutils.

   Red Hat elfutils 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; version 2 of the License.

   Red Hat 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 a copy of the GNU General Public License along
   with Red Hat elfutils; if not, write to the Free Software Foundation,
   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.

   Red Hat elfutils is an included package of the Open Invention Network.
   An included package of the Open Invention Network is a package for which
   Open Invention Network licensees cross-license their patents.  No patent
   license is granted, either expressly or impliedly, by designation as an
   included package.  Should you wish to participate in the Open Invention
   Network licensing program, please visit www.openinventionnetwork.com
   <http://www.openinventionnetwork.com>.  */

/*	    NAME,		REL|EXEC|DYN	*/

RELOC_TYPE (NONE,		0)
RELOC_TYPE (IMM14,		REL)
RELOC_TYPE (IMM22,		REL)
RELOC_TYPE (IMM64,		REL)
RELOC_TYPE (DIR32MSB,		REL|EXEC|DYN)
RELOC_TYPE (DIR32LSB,		REL|EXEC|DYN)
RELOC_TYPE (DIR64MSB,		REL|EXEC|DYN)
RELOC_TYPE (DIR64LSB,		REL|EXEC|DYN)
RELOC_TYPE (GPREL22,		REL)
RELOC_TYPE (GPREL64I,		REL)
RELOC_TYPE (GPREL32MSB,		REL)
RELOC_TYPE (GPREL32LSB,		REL)
RELOC_TYPE (GPREL64MSB,		REL)
RELOC_TYPE (GPREL64LSB,		REL)
RELOC_TYPE (LTOFF22,		REL)
RELOC_TYPE (LTOFF64I,		REL)
RELOC_TYPE (PLTOFF22,		REL)
RELOC_TYPE (PLTOFF64I,		REL)
RELOC_TYPE (PLTOFF64MSB,	REL)
RELOC_TYPE (PLTOFF64LSB,	REL)
RELOC_TYPE (FPTR64I,		REL)
RELOC_TYPE (FPTR32MSB,		REL|EXEC|DYN)
RELOC_TYPE (FPTR32LSB,		REL|EXEC|DYN)
RELOC_TYPE (FPTR64MSB,		REL|EXEC|DYN)
RELOC_TYPE (FPTR64LSB,		REL|EXEC|DYN)
RELOC_TYPE (PCREL60B,		REL)
RELOC_TYPE (PCREL21B,		REL)
RELOC_TYPE (PCREL21M,		REL)
RELOC_TYPE (PCREL21F,		REL)
RELOC_TYPE (PCREL32MSB,		REL|EXEC|DYN)
RELOC_TYPE (PCREL32LSB,		REL|EXEC|DYN)
RELOC_TYPE (PCREL64MSB,		REL|EXEC|DYN)
RELOC_TYPE (PCREL64LSB,		REL|EXEC|DYN)
RELOC_TYPE (LTOFF_FPTR22,	REL)
RELOC_TYPE (LTOFF_FPTR64I,	REL)
RELOC_TYPE (LTOFF_FPTR32MSB,	REL)
RELOC_TYPE (LTOFF_FPTR32LSB,	REL)
RELOC_TYPE (LTOFF_FPTR64MSB,	REL)
RELOC_TYPE (LTOFF_FPTR64LSB,	REL)
RELOC_TYPE (SEGREL32MSB,	REL)
RELOC_TYPE (SEGREL32LSB,	REL)
RELOC_TYPE (SEGREL64MSB,	REL)
RELOC_TYPE (SEGREL64LSB,	REL)
RELOC_TYPE (SECREL32MSB,	REL)
RELOC_TYPE (SECREL32LSB,	REL)
RELOC_TYPE (SECREL64MSB,	REL)
RELOC_TYPE (SECREL64LSB,	REL)
RELOC_TYPE (REL32MSB,		EXEC|DYN)
RELOC_TYPE (REL32LSB,		EXEC|DYN)
RELOC_TYPE (REL64MSB,		EXEC|DYN)
RELOC_TYPE (REL64LSB,		EXEC|DYN)
RELOC_TYPE (LTV32MSB,		REL)
RELOC_TYPE (LTV32LSB,		REL)
RELOC_TYPE (LTV64MSB,		REL)
RELOC_TYPE (LTV64LSB,		REL)
RELOC_TYPE (PCREL21BI,		REL)
RELOC_TYPE (PCREL22,		REL)
RELOC_TYPE (PCREL64I,		REL)
RELOC_TYPE (IPLTMSB,		REL|EXEC|DYN)
RELOC_TYPE (IPLTLSB,		REL|EXEC|DYN)
RELOC_TYPE (COPY,		EXEC)
RELOC_TYPE (SUB,		0)
RELOC_TYPE (LTOFF22X,		REL)
RELOC_TYPE (LDXMOV,		REL)
RELOC_TYPE (TPREL14,		REL)
RELOC_TYPE (TPREL22,		REL)
RELOC_TYPE (TPREL64I,		REL)
RELOC_TYPE (TPREL64MSB,		REL|EXEC|DYN)
RELOC_TYPE (TPREL64LSB,		REL|EXEC|DYN)
RELOC_TYPE (LTOFF_TPREL22,	REL)
RELOC_TYPE (DTPMOD64MSB,	REL|EXEC|DYN)
RELOC_TYPE (DTPMOD64LSB,	REL|EXEC|DYN)
RELOC_TYPE (LTOFF_DTPMOD22,	REL)
RELOC_TYPE (DTPREL14,		REL)
RELOC_TYPE (DTPREL22,		REL)
RELOC_TYPE (DTPREL64I,		REL)
RELOC_TYPE (DTPREL32MSB,	REL|EXEC|DYN)
RELOC_TYPE (DTPREL32LSB,	REL|EXEC|DYN)
RELOC_TYPE (DTPREL64MSB,	REL|EXEC|DYN)
RELOC_TYPE (DTPREL64LSB,	REL|EXEC|DYN)
RELOC_TYPE (LTOFF_DTPREL22,	REL)

#define NO_RELATIVE_RELOC	1
