/* List the relocation types for s390.  -*- 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 (8,                  REL|EXEC|DYN)
RELOC_TYPE (12,                 REL|EXEC|DYN)
RELOC_TYPE (16,                 REL|EXEC|DYN)
RELOC_TYPE (32,                 REL|EXEC|DYN)
RELOC_TYPE (PC32,               REL|EXEC|DYN)
RELOC_TYPE (GOT12,              REL)
RELOC_TYPE (GOT32,              REL)
RELOC_TYPE (PLT32,              REL)
RELOC_TYPE (COPY,               EXEC)
RELOC_TYPE (GLOB_DAT,           EXEC|DYN)
RELOC_TYPE (JMP_SLOT,           EXEC|DYN)
RELOC_TYPE (RELATIVE,           EXEC|DYN)
RELOC_TYPE (GOTOFF32,           REL)
RELOC_TYPE (GOTPC,              REL)
RELOC_TYPE (GOT16,              REL)
RELOC_TYPE (PC16,               REL|EXEC|DYN)
RELOC_TYPE (PC16DBL,            REL|EXEC|DYN)
RELOC_TYPE (PLT16DBL,           REL)
RELOC_TYPE (PC32DBL,            REL|EXEC|DYN)
RELOC_TYPE (PLT32DBL,           REL)
RELOC_TYPE (GOTPCDBL,           REL)
RELOC_TYPE (64,                 REL|EXEC|DYN)
RELOC_TYPE (PC64,               REL|EXEC|DYN)
RELOC_TYPE (GOT64,              REL)
RELOC_TYPE (PLT64,              REL)
RELOC_TYPE (GOTENT,             REL)
RELOC_TYPE (GOTOFF16,           REL)
RELOC_TYPE (GOTOFF64,           REL)
RELOC_TYPE (GOTPLT12,           REL)
RELOC_TYPE (GOTPLT16,           REL)
RELOC_TYPE (GOTPLT32,           REL)
RELOC_TYPE (GOTPLT64,           REL)
RELOC_TYPE (GOTPLTENT,          REL)
RELOC_TYPE (PLTOFF16,           REL)
RELOC_TYPE (PLTOFF32,           REL)
RELOC_TYPE (PLTOFF64,           REL)
RELOC_TYPE (TLS_LOAD,           REL)
RELOC_TYPE (TLS_GDCALL,         REL)
RELOC_TYPE (TLS_LDCALL,         REL)
RELOC_TYPE (TLS_GD32,           REL)
RELOC_TYPE (TLS_GD64,           REL)
RELOC_TYPE (TLS_GOTIE12,        REL)
RELOC_TYPE (TLS_GOTIE32,        REL)
RELOC_TYPE (TLS_GOTIE64,        REL)
RELOC_TYPE (TLS_LDM32,          REL)
RELOC_TYPE (TLS_LDM64,          REL)
RELOC_TYPE (TLS_IE32,           REL)
RELOC_TYPE (TLS_IE64,           REL)
RELOC_TYPE (TLS_IEENT,          REL)
RELOC_TYPE (TLS_LE32,           REL)
RELOC_TYPE (TLS_LE64,           REL)
RELOC_TYPE (TLS_LDO32,          REL)
RELOC_TYPE (TLS_LDO64,          REL)
RELOC_TYPE (TLS_DTPMOD,         DYN)
RELOC_TYPE (TLS_DTPOFF,         DYN)
RELOC_TYPE (TLS_TPOFF,          DYN)
RELOC_TYPE (20,                 REL|EXEC|DYN)
RELOC_TYPE (GOT20,              REL)
RELOC_TYPE (GOTPLT20,           REL)
RELOC_TYPE (TLS_GOTIE20,        REL)
