/* List the relocation types for ppc64.  -*- C -*-
   Copyright (C) 2005 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 (ADDR32,		REL|EXEC|DYN)
RELOC_TYPE (ADDR24,		REL)
RELOC_TYPE (ADDR16,		REL)		/* note 1 */
RELOC_TYPE (ADDR16_LO,		REL)		/* note 1 */
RELOC_TYPE (ADDR16_HI,		REL)		/* note 1 */
RELOC_TYPE (ADDR16_HA,		REL)		/* note 1 */
RELOC_TYPE (ADDR14,		REL)		/* note 1 */
RELOC_TYPE (ADDR14_BRTAKEN,	REL)		/* note 1 */
RELOC_TYPE (ADDR14_BRNTAKEN,	REL)		/* note 1 */
RELOC_TYPE (REL24,		REL)
RELOC_TYPE (REL14,		REL)
RELOC_TYPE (REL14_BRTAKEN,	REL)
RELOC_TYPE (REL14_BRNTAKEN,	REL)
RELOC_TYPE (GOT16,		REL)
RELOC_TYPE (GOT16_LO,		REL)
RELOC_TYPE (GOT16_HI,		REL)
RELOC_TYPE (GOT16_HA,		REL)
RELOC_TYPE (COPY,		EXEC)
RELOC_TYPE (GLOB_DAT,		EXEC|DYN)
RELOC_TYPE (JMP_SLOT,		EXEC|DYN)
RELOC_TYPE (RELATIVE,		EXEC|DYN)
RELOC_TYPE (UADDR32,		REL|EXEC|DYN)
RELOC_TYPE (UADDR16,		REL)
RELOC_TYPE (REL32,		REL|EXEC|DYN)
RELOC_TYPE (PLT32,		REL)
RELOC_TYPE (PLTREL32,		REL)
RELOC_TYPE (PLT16_LO,		REL)
RELOC_TYPE (PLT16_HI,		REL)
RELOC_TYPE (PLT16_HA,		REL)
RELOC_TYPE (SECTOFF,		REL)
RELOC_TYPE (SECTOFF_LO,		REL)
RELOC_TYPE (SECTOFF_HI,		REL)
RELOC_TYPE (SECTOFF_HA,		REL)
RELOC_TYPE (ADDR30,		REL)		/* note 1 */
RELOC_TYPE (ADDR64,		REL|EXEC|DYN)
RELOC_TYPE (ADDR16_HIGHER,	REL)		/* note 1 */
RELOC_TYPE (ADDR16_HIGHERA,	REL)		/* note 1 */
RELOC_TYPE (ADDR16_HIGHEST,	REL)		/* note 1 */
RELOC_TYPE (ADDR16_HIGHESTA,	REL)		/* note 1 */
RELOC_TYPE (UADDR64,		REL|EXEC|DYN)
RELOC_TYPE (REL64,		REL|EXEC|DYN)
RELOC_TYPE (PLT64,		REL)
RELOC_TYPE (PLTREL64,		REL)
RELOC_TYPE (TOC16,		REL)
RELOC_TYPE (TOC16_LO,		REL)
RELOC_TYPE (TOC16_HI,		REL)
RELOC_TYPE (TOC16_HA,		REL)
RELOC_TYPE (TOC,		REL)
RELOC_TYPE (PLTGOT16,		REL)
RELOC_TYPE (PLTGOT16_LO,	REL)
RELOC_TYPE (PLTGOT16_HI,	REL)
RELOC_TYPE (PLTGOT16_HA,	REL)
RELOC_TYPE (ADDR16_DS,		REL)		/* note 1 */
RELOC_TYPE (ADDR16_LO_DS,	REL)		/* note 1 */
RELOC_TYPE (GOT16_DS,		REL)
RELOC_TYPE (GOT16_LO_DS,	REL)
RELOC_TYPE (PLT16_LO_DS,	REL)
RELOC_TYPE (SECTOFF_DS,		REL)
RELOC_TYPE (SECTOFF_LO_DS,	REL)
RELOC_TYPE (TOC16_DS,		REL)
RELOC_TYPE (TOC16_LO_DS,	REL)
RELOC_TYPE (PLTGOT16_DS,	REL)
RELOC_TYPE (PLTGOT16_LO_DS,	REL)
RELOC_TYPE (TLS,		REL)
RELOC_TYPE (DTPMOD64,		REL|EXEC|DYN)	/* note 3 */
RELOC_TYPE (TPREL16,		REL)		/* note 2 */
RELOC_TYPE (TPREL16_LO,		REL)		/* note 2 */
RELOC_TYPE (TPREL16_HI,		REL)		/* note 2 */
RELOC_TYPE (TPREL16_HA,		REL)		/* note 2 */
RELOC_TYPE (TPREL64,		REL|EXEC|DYN)	/* note 3 */
RELOC_TYPE (DTPREL16,		REL)
RELOC_TYPE (DTPREL16_LO,	REL)
RELOC_TYPE (DTPREL16_HI,	REL)
RELOC_TYPE (DTPREL16_HA,	REL)
RELOC_TYPE (DTPREL64,		REL|EXEC|DYN)	/* note 3 */
RELOC_TYPE (GOT_TLSGD16,	REL)
RELOC_TYPE (GOT_TLSGD16_LO,	REL)
RELOC_TYPE (GOT_TLSGD16_HI,	REL)
RELOC_TYPE (GOT_TLSGD16_HA,	REL)
RELOC_TYPE (GOT_TLSLD16,	REL)
RELOC_TYPE (GOT_TLSLD16_LO,	REL)
RELOC_TYPE (GOT_TLSLD16_HI,	REL)
RELOC_TYPE (GOT_TLSLD16_HA,	REL)
RELOC_TYPE (GOT_TPREL16_DS,	REL)
RELOC_TYPE (GOT_TPREL16_LO_DS,	REL)
RELOC_TYPE (GOT_TPREL16_HI,	REL)
RELOC_TYPE (GOT_TPREL16_HA,	REL)
RELOC_TYPE (GOT_DTPREL16_DS,	REL)
RELOC_TYPE (GOT_DTPREL16_LO_DS, REL)
RELOC_TYPE (GOT_DTPREL16_HI,	REL)
RELOC_TYPE (GOT_DTPREL16_HA,	REL)
RELOC_TYPE (TPREL16_DS,		REL)		/* note 2 */
RELOC_TYPE (TPREL16_LO_DS,	REL)		/* note 2 */
RELOC_TYPE (TPREL16_HIGHER,	REL)		/* note 2 */
RELOC_TYPE (TPREL16_HIGHERA,	REL)		/* note 2 */
RELOC_TYPE (TPREL16_HIGHEST,	REL)		/* note 2 */
RELOC_TYPE (TPREL16_HIGHESTA,	REL)		/* note 2 */
RELOC_TYPE (DTPREL16_DS,	REL)
RELOC_TYPE (DTPREL16_LO_DS,	REL)
RELOC_TYPE (DTPREL16_HIGHER,	REL)
RELOC_TYPE (DTPREL16_HIGHERA,	REL)
RELOC_TYPE (DTPREL16_HIGHEST,	REL)
RELOC_TYPE (DTPREL16_HIGHESTA,	REL)

/* Notes from Alan Modra:

   1) These can appear in DYN and EXEC with improper assembly, but they
   aren't really kosher.

   2) These can appear in DYN with improper assembly (or silly gcc
      attributes, I think).  Again, not kosher.

   3) These are legal in REL for PowerOpen compatible assembler syntax,
      ie. TOC managed by compiler.
*/
