ppc.h revision 77298
1145510Sdarrenr/* PPC ELF support for BFD. 2145510Sdarrenr Copyright (C) 1995, 96, 98, 2000 Free Software Foundation, Inc. 3145510Sdarrenr 4145510Sdarrenr By Michael Meissner, Cygnus Support, <meissner@cygnus.com>, from information 5145510Sdarrenr in the System V Application Binary Interface, PowerPC Processor Supplement 6145510Sdarrenr and the PowerPC Embedded Application Binary Interface (eabi). 7145510Sdarrenr 8145510SdarrenrThis file is part of BFD, the Binary File Descriptor library. 9145510Sdarrenr 10145510SdarrenrThis program is free software; you can redistribute it and/or modify 11145510Sdarrenrit under the terms of the GNU General Public License as published by 12145510Sdarrenrthe Free Software Foundation; either version 2 of the License, or 13145510Sdarrenr(at your option) any later version. 14145510Sdarrenr 15145510SdarrenrThis program is distributed in the hope that it will be useful, 16145510Sdarrenrbut WITHOUT ANY WARRANTY; without even the implied warranty of 17145510SdarrenrMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18145510SdarrenrGNU General Public License for more details. 19145510Sdarrenr 20145510SdarrenrYou should have received a copy of the GNU General Public License 21145510Sdarrenralong with this program; if not, write to the Free Software 22145510SdarrenrFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 23145510Sdarrenr 24145510Sdarrenr/* This file holds definitions specific to the PPC ELF ABI. Note 25145510Sdarrenr that most of this is not actually implemented by BFD. */ 26145510Sdarrenr 27145510Sdarrenr#ifndef _ELF_PPC_H 28145510Sdarrenr#define _ELF_PPC_H 29145510Sdarrenr 30145510Sdarrenr#include "elf/reloc-macros.h" 31145510Sdarrenr 32145510Sdarrenr/* Relocations. */ 33145510SdarrenrSTART_RELOC_NUMBERS (elf_ppc_reloc_type) 34145510Sdarrenr RELOC_NUMBER (R_PPC_NONE, 0) 35145510Sdarrenr RELOC_NUMBER (R_PPC_ADDR32, 1) 36145510Sdarrenr RELOC_NUMBER (R_PPC_ADDR24, 2) 37145510Sdarrenr RELOC_NUMBER (R_PPC_ADDR16, 3) 38145510Sdarrenr RELOC_NUMBER (R_PPC_ADDR16_LO, 4) 39145510Sdarrenr RELOC_NUMBER (R_PPC_ADDR16_HI, 5) 40145510Sdarrenr RELOC_NUMBER (R_PPC_ADDR16_HA, 6) 41145510Sdarrenr RELOC_NUMBER (R_PPC_ADDR14, 7) 42145510Sdarrenr RELOC_NUMBER (R_PPC_ADDR14_BRTAKEN, 8) 43145510Sdarrenr RELOC_NUMBER (R_PPC_ADDR14_BRNTAKEN, 9) 44145510Sdarrenr RELOC_NUMBER (R_PPC_REL24, 10) 45145510Sdarrenr RELOC_NUMBER (R_PPC_REL14, 11) 46145510Sdarrenr RELOC_NUMBER (R_PPC_REL14_BRTAKEN, 12) 47145510Sdarrenr RELOC_NUMBER (R_PPC_REL14_BRNTAKEN, 13) 48145510Sdarrenr RELOC_NUMBER (R_PPC_GOT16, 14) 49145510Sdarrenr RELOC_NUMBER (R_PPC_GOT16_LO, 15) 50145510Sdarrenr RELOC_NUMBER (R_PPC_GOT16_HI, 16) 51145510Sdarrenr RELOC_NUMBER (R_PPC_GOT16_HA, 17) 52145510Sdarrenr RELOC_NUMBER (R_PPC_PLTREL24, 18) 53145510Sdarrenr RELOC_NUMBER (R_PPC_COPY, 19) 54145510Sdarrenr RELOC_NUMBER (R_PPC_GLOB_DAT, 20) 55145510Sdarrenr RELOC_NUMBER (R_PPC_JMP_SLOT, 21) 56145510Sdarrenr RELOC_NUMBER (R_PPC_RELATIVE, 22) 57145510Sdarrenr RELOC_NUMBER (R_PPC_LOCAL24PC, 23) 58145510Sdarrenr RELOC_NUMBER (R_PPC_UADDR32, 24) 59145510Sdarrenr RELOC_NUMBER (R_PPC_UADDR16, 25) 60145510Sdarrenr RELOC_NUMBER (R_PPC_REL32, 26) 61145510Sdarrenr RELOC_NUMBER (R_PPC_PLT32, 27) 62145510Sdarrenr RELOC_NUMBER (R_PPC_PLTREL32, 28) 63145510Sdarrenr RELOC_NUMBER (R_PPC_PLT16_LO, 29) 64145510Sdarrenr RELOC_NUMBER (R_PPC_PLT16_HI, 30) 65145510Sdarrenr RELOC_NUMBER (R_PPC_PLT16_HA, 31) 66145510Sdarrenr RELOC_NUMBER (R_PPC_SDAREL16, 32) 67145510Sdarrenr RELOC_NUMBER (R_PPC_SECTOFF, 33) 68145510Sdarrenr RELOC_NUMBER (R_PPC_SECTOFF_LO, 34) 69145510Sdarrenr RELOC_NUMBER (R_PPC_SECTOFF_HI, 35) 70145510Sdarrenr RELOC_NUMBER (R_PPC_SECTOFF_HA, 36) 71145510Sdarrenr 72145510Sdarrenr/* The remaining relocs are from the Embedded ELF ABI, and are not 73145510Sdarrenr in the SVR4 ELF ABI. */ 74145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_NADDR32, 101) 75145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_NADDR16, 102) 76145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_NADDR16_LO, 103) 77145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_NADDR16_HI, 104) 78145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_NADDR16_HA, 105) 79145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_SDAI16, 106) 80145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_SDA2I16, 107) 81145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_SDA2REL, 108) 82145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_SDA21, 109) 83145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_MRKREF, 110) 84145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_RELSEC16, 111) 85145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_RELST_LO, 112) 86145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_RELST_HI, 113) 87145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_RELST_HA, 114) 88145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_BIT_FLD, 115) 89145510Sdarrenr RELOC_NUMBER (R_PPC_EMB_RELSDA, 116) 90145510Sdarrenr 91145510Sdarrenr /* These are GNU extensions to enable C++ vtable garbage collection. */ 92145510Sdarrenr RELOC_NUMBER (R_PPC_GNU_VTINHERIT, 253) 93145510Sdarrenr RELOC_NUMBER (R_PPC_GNU_VTENTRY, 254) 94145510Sdarrenr 95145510Sdarrenr/* This is a phony reloc to handle any old fashioned TOC16 references 96145510Sdarrenr that may still be in object files. */ 97145510Sdarrenr RELOC_NUMBER (R_PPC_TOC16, 255) 98145510Sdarrenr 99145510SdarrenrEND_RELOC_NUMBERS (R_PPC_max) 100145510Sdarrenr 101145510Sdarrenr 102145510Sdarrenr/* Processor specific flags for the ELF header e_flags field. */ 103145510Sdarrenr 104145510Sdarrenr#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag. */ 105145510Sdarrenr 106145510Sdarrenr#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag. */ 107145510Sdarrenr#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib flag. */ 108145510Sdarrenr 109145510Sdarrenr/* Processor specific section headers, sh_type field. */ 110145510Sdarrenr 111145510Sdarrenr#define SHT_ORDERED SHT_HIPROC /* Link editor is to sort the \ 112145510Sdarrenr entries in this section \ 113145510Sdarrenr based on the address \ 114145510Sdarrenr specified in the associated \ 115145510Sdarrenr symbol table entry. */ 116145510Sdarrenr 117145510Sdarrenr/* Processor specific section flags, sh_flags field. */ 118145510Sdarrenr 119145510Sdarrenr#define SHF_EXCLUDE 0x80000000 /* Link editor is to exclude \ 120145510Sdarrenr this section from executable \ 121145510Sdarrenr and shared objects that it \ 122145510Sdarrenr builds when those objects \ 123145510Sdarrenr are not to be furhter \ 124145510Sdarrenr relocated. */ 125145510Sdarrenr#endif /* _ELF_PPC_H */ 126145510Sdarrenr