* language.h (struct language_defn) <la_iterate_over_symbols>: Fix
[deliverable/binutils-gdb.git] / include / elf / ppc.h
index 21c67437953ba604d9965461126a756223f0bcd7..8e27855be0c92c114c9503581c737c4f6b0349ee 100644 (file)
@@ -1,26 +1,28 @@
 /* PPC ELF support for BFD.
-   Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003
-   Free Software Foundation, Inc.
+   Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003, 2005, 2007, 2008,
+   2009, 2010 Free Software Foundation, Inc.
 
-   By Michael Meissner, Cygnus Support, <meissner@cygnus.com>, from information
-   in the System V Application Binary Interface, PowerPC Processor Supplement
-   and the PowerPC Embedded Application Binary Interface (eabi).
+   By Michael Meissner, Cygnus Support, <meissner@cygnus.com>,
+   from information in the System V Application Binary Interface,
+   PowerPC Processor Supplement and the PowerPC Embedded Application
+   Binary Interface (eabi).
 
-This file is part of BFD, the Binary File Descriptor library.
+   This file is part of BFD, the Binary File Descriptor library.
 
-This program 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; either version 2 of the License, or
-(at your option) any later version.
+   This program 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; either version 3 of the License, or
+   (at your option) any later version.
 
-This program 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.
+   This program 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 this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
 
 /* This file holds definitions specific to the PPC ELF ABI.  Note
    that most of this is not actually implemented by BFD.  */
@@ -71,19 +73,26 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
   RELOC_NUMBER (R_PPC_SECTOFF_HA,       36)
   RELOC_NUMBER (R_PPC_ADDR30,           37)
 
+#ifndef RELOC_MACROS_GEN_FUNC
+/* Fake relocations for branch stubs, only used internally by ld.  */
+  RELOC_NUMBER (R_PPC_RELAX,            48)
+  RELOC_NUMBER (R_PPC_RELAX_PLT,        49)
+  RELOC_NUMBER (R_PPC_RELAX_PLTREL24,   50)
+#endif
+
   /* Relocs added to support TLS.  */
   RELOC_NUMBER (R_PPC_TLS,              67)
-  RELOC_NUMBER (R_PPC_DTPMOD64,                 68)
+  RELOC_NUMBER (R_PPC_DTPMOD32,                 68)
   RELOC_NUMBER (R_PPC_TPREL16,          69)
   RELOC_NUMBER (R_PPC_TPREL16_LO,       70)
   RELOC_NUMBER (R_PPC_TPREL16_HI,       71)
   RELOC_NUMBER (R_PPC_TPREL16_HA,       72)
-  RELOC_NUMBER (R_PPC_TPREL64,          73)
+  RELOC_NUMBER (R_PPC_TPREL32,          73)
   RELOC_NUMBER (R_PPC_DTPREL16,                 74)
   RELOC_NUMBER (R_PPC_DTPREL16_LO,      75)
   RELOC_NUMBER (R_PPC_DTPREL16_HI,      76)
   RELOC_NUMBER (R_PPC_DTPREL16_HA,      77)
-  RELOC_NUMBER (R_PPC_DTPREL64,                 78)
+  RELOC_NUMBER (R_PPC_DTPREL32,                 78)
   RELOC_NUMBER (R_PPC_GOT_TLSGD16,      79)
   RELOC_NUMBER (R_PPC_GOT_TLSGD16_LO,   80)
   RELOC_NUMBER (R_PPC_GOT_TLSGD16_HI,   81)
@@ -100,6 +109,8 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
   RELOC_NUMBER (R_PPC_GOT_DTPREL16_LO,  92)
   RELOC_NUMBER (R_PPC_GOT_DTPREL16_HI,  93)
   RELOC_NUMBER (R_PPC_GOT_DTPREL16_HA,  94)
+  RELOC_NUMBER (R_PPC_TLSGD,            95)
+  RELOC_NUMBER (R_PPC_TLSLD,            96)
 
 /* The remaining relocs are from the Embedded ELF ABI, and are not
    in the SVR4 ELF ABI.  */
@@ -120,7 +131,16 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
   RELOC_NUMBER (R_PPC_EMB_BIT_FLD,     115)
   RELOC_NUMBER (R_PPC_EMB_RELSDA,      116)
 
-  /* These are GNU extensions to enable C++ vtable garbage collection.  */
+/* Support STT_GNU_IFUNC plt calls.  */
+  RELOC_NUMBER (R_PPC_IRELATIVE,       248)
+
+/* These are GNU extensions used in PIC code sequences.  */
+  RELOC_NUMBER (R_PPC_REL16,           249)
+  RELOC_NUMBER (R_PPC_REL16_LO,                250)
+  RELOC_NUMBER (R_PPC_REL16_HI,                251)
+  RELOC_NUMBER (R_PPC_REL16_HA,                252)
+
+/* These are GNU extensions to enable C++ vtable garbage collection.  */
   RELOC_NUMBER (R_PPC_GNU_VTINHERIT,   253)
   RELOC_NUMBER (R_PPC_GNU_VTENTRY,     254)
 
@@ -130,6 +150,14 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
 
 END_RELOC_NUMBERS (R_PPC_max)
 
+#define IS_PPC_TLS_RELOC(R) \
+  ((R) >= R_PPC_TLS && (R) <= R_PPC_GOT_DTPREL16_HA)
+
+/* Specify the value of _GLOBAL_OFFSET_TABLE_.  */
+#define DT_PPC_GOT             (DT_LOPROC)
+
+/* Specify that tls descriptors should be optimized.  */
+#define DT_PPC_TLSOPT          (DT_LOPROC + 1)
 
 /* Processor specific flags for the ELF header e_flags field.  */
 
@@ -138,6 +166,10 @@ END_RELOC_NUMBERS (R_PPC_max)
 #define        EF_PPC_RELOCATABLE      0x00010000      /* PowerPC -mrelocatable flag.  */
 #define        EF_PPC_RELOCATABLE_LIB  0x00008000      /* PowerPC -mrelocatable-lib flag.  */
 
+/* This bit is reserved by BFD for processor specific stuff.  Name
+   it properly so that we can easily stay consistent elsewhere.  */
+#define SEC_PPC_VLE            SEC_TIC54X_BLOCK
+
 /* Processor specific section headers, sh_type field.  */
 
 #define SHT_ORDERED            SHT_HIPROC      /* Link editor is to sort the \
@@ -146,12 +178,25 @@ END_RELOC_NUMBERS (R_PPC_max)
                                                   specified in the associated \
                                                   symbol table entry.  */
 
-/* Processor specific section flags, sh_flags field.  */
+/* Object attribute tags.  */
+enum
+{
+  /* 0-3 are generic.  */
+  Tag_GNU_Power_ABI_FP = 4, /* Value 1 for hard-float, 2 for
+                              soft-float, 3 for single=precision 
+                              hard-float; 0 for not tagged or not
+                              using any ABIs affected by the
+                              differences.  */
+
+  /* Value 1 for general purpose registers only, 2 for AltiVec
+     registers, 3 for SPE registers; 0 for not tagged or not using any
+     ABIs affected by the differences.  */
+  Tag_GNU_Power_ABI_Vector = 8,
+
+  /* Value 1 for ABIs using r3/r4 for returning structures <= 8 bytes,
+     2 for ABIs using memory; 0 for not tagged or not using any ABIs
+     affected by the differences.  */
+  Tag_GNU_Power_ABI_Struct_Return = 12
+};
 
-#define SHF_EXCLUDE            0x80000000      /* Link editor is to exclude \
-                                                  this section from executable \
-                                                  and shared objects that it \
-                                                  builds when those objects \
-                                                  are not to be furhter \
-                                                  relocated.  */
 #endif /* _ELF_PPC_H */
This page took 0.025166 seconds and 4 git commands to generate.