/* List the relocation types for ppc.  -*- 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|EXEC|DYN)	/* note 1 */
RELOC_TYPE (ADDR16_LO,		REL|EXEC|DYN)	/* note 1 */
RELOC_TYPE (ADDR16_HI,		REL|EXEC|DYN)	/* note 1 */
RELOC_TYPE (ADDR16_HA,		REL|EXEC|DYN)	/* note 1 */
RELOC_TYPE (ADDR14,		REL|EXEC|DYN)	/* note 1 */
RELOC_TYPE (ADDR14_BRTAKEN,	REL|EXEC|DYN)	/* note 1 */
RELOC_TYPE (ADDR14_BRNTAKEN,	REL|EXEC|DYN)	/* note 1 */
RELOC_TYPE (REL24,		REL|EXEC|DYN)	/* note 1 */
RELOC_TYPE (REL14,		REL|EXEC|DYN)	/* note 1 */
RELOC_TYPE (REL14_BRTAKEN,	REL|EXEC|DYN)	/* note 1 */
RELOC_TYPE (REL14_BRNTAKEN,	REL|EXEC|DYN)	/* note 1 */
RELOC_TYPE (GOT16,		REL)
RELOC_TYPE (GOT16_LO,		REL)
RELOC_TYPE (GOT16_HI,		REL)
RELOC_TYPE (GOT16_HA,		REL)
RELOC_TYPE (PLTREL24,		REL)
RELOC_TYPE (COPY,		EXEC)
RELOC_TYPE (GLOB_DAT,		EXEC|DYN)
RELOC_TYPE (JMP_SLOT,		EXEC|DYN)
RELOC_TYPE (RELATIVE,		EXEC|DYN)
RELOC_TYPE (LOCAL24PC,		REL)
RELOC_TYPE (UADDR32,		REL|EXEC|DYN)
RELOC_TYPE (UADDR16,		REL)		/* note 2 */
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 (SDAREL16,		REL)
RELOC_TYPE (SECTOFF,		REL)
RELOC_TYPE (SECTOFF_LO,		REL)
RELOC_TYPE (SECTOFF_HI,		REL)
RELOC_TYPE (SECTOFF_HA,		REL)
RELOC_TYPE (TLS,		REL)
RELOC_TYPE (DTPMOD32,		EXEC|DYN)	/* note 2 */
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 (TPREL32,		EXEC|DYN)	/* note 2 */
RELOC_TYPE (DTPREL16,		REL)
RELOC_TYPE (DTPREL16_LO,	REL)
RELOC_TYPE (DTPREL16_HI,	REL)
RELOC_TYPE (DTPREL16_HA,	REL)
RELOC_TYPE (DTPREL32,		EXEC|DYN)	/* note 2 */
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,	REL)
RELOC_TYPE (GOT_TPREL16_LO,	REL)
RELOC_TYPE (GOT_TPREL16_HI,	REL)
RELOC_TYPE (GOT_TPREL16_HA,	REL)
RELOC_TYPE (GOT_DTPREL16,	REL)
RELOC_TYPE (GOT_DTPREL16_LO,	REL)
RELOC_TYPE (GOT_DTPREL16_HI,	REL)
RELOC_TYPE (GOT_DTPREL16_HA,	REL)
RELOC_TYPE (EMB_NADDR32,	REL)		/* note 3 */
RELOC_TYPE (EMB_NADDR16,	REL)		/* note 3 */
RELOC_TYPE (EMB_NADDR16_LO,	REL)		/* note 3 */
RELOC_TYPE (EMB_NADDR16_HI,	REL)		/* note 3 */
RELOC_TYPE (EMB_NADDR16_HA,	REL)		/* note 3 */
RELOC_TYPE (EMB_SDAI16,		REL)		/* note 3 */
RELOC_TYPE (EMB_SDA2I16,	REL)		/* note 3 */
RELOC_TYPE (EMB_SDA2REL,	REL)		/* note 3 */
RELOC_TYPE (EMB_SDA21,		REL)		/* note 3 */
RELOC_TYPE (EMB_MRKREF,		REL)		/* note 3 */
RELOC_TYPE (EMB_RELSEC16,	REL)		/* note 3 */
RELOC_TYPE (EMB_RELST_LO,	REL)		/* note 3 */
RELOC_TYPE (EMB_RELST_HI,	REL)		/* note 3 */
RELOC_TYPE (EMB_RELST_HA,	REL)		/* note 3 */
RELOC_TYPE (EMB_BIT_FLD,	REL)		/* note 3 */
RELOC_TYPE (EMB_RELSDA,		REL)		/* note 3 */
RELOC_TYPE (DIAB_SDA21_LO,	REL)		/* note 3 */
RELOC_TYPE (DIAB_SDA21_HI,	REL)		/* note 3 */
RELOC_TYPE (DIAB_SDA21_HA,	REL)		/* note 3 */
RELOC_TYPE (DIAB_RELSDA_LO,	REL)		/* note 3 */
RELOC_TYPE (DIAB_RELSDA_HI,	REL)		/* note 3 */
RELOC_TYPE (DIAB_RELSDA_HA,	REL)		/* note 3 */
RELOC_TYPE (REL16,		REL)		/* note 2 */
RELOC_TYPE (REL16_LO,		REL)		/* note 2 */
RELOC_TYPE (REL16_HI,		REL)		/* note 2 */
RELOC_TYPE (REL16_HA,		REL)		/* note 2 */
RELOC_TYPE (TOC16,		REL)		/* note 2 */

/* Notes from Alan Modra:

   1) These relocs should not really appear in EXEC or DYN, but they do,
   primarily due to improper assembly or non-pic shared objects.  They
   will cause TEXTREL to be set.  I marked them in the table, because
   numerous people seem to think non-pic shared libs are a good idea.

   2) As for (1), these relocs can appear anywhere with improper
   assembler.  I should probably make ld reject anything other than the
   cases allowed in this table.	 Not seen in the wild, so I haven't
   added the other cases.

   3) Not used in SYSV4
*/
