source: trunk/binutils/include/elf/ppc.h@ 3232

Last change on this file since 3232 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 5.8 KB
Line 
1/* PPC ELF support for BFD.
2 Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003
3 Free Software Foundation, Inc.
4
5 By Michael Meissner, Cygnus Support, <meissner@cygnus.com>, from information
6 in the System V Application Binary Interface, PowerPC Processor Supplement
7 and the PowerPC Embedded Application Binary Interface (eabi).
8
9This file is part of BFD, the Binary File Descriptor library.
10
11This program is free software; you can redistribute it and/or modify
12it under the terms of the GNU General Public License as published by
13the Free Software Foundation; either version 2 of the License, or
14(at your option) any later version.
15
16This program is distributed in the hope that it will be useful,
17but WITHOUT ANY WARRANTY; without even the implied warranty of
18MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19GNU General Public License for more details.
20
21You should have received a copy of the GNU General Public License
22along with this program; if not, write to the Free Software
23Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
24
25/* This file holds definitions specific to the PPC ELF ABI. Note
26 that most of this is not actually implemented by BFD. */
27
28#ifndef _ELF_PPC_H
29#define _ELF_PPC_H
30
31#include "elf/reloc-macros.h"
32
33/* Relocations. */
34START_RELOC_NUMBERS (elf_ppc_reloc_type)
35 RELOC_NUMBER (R_PPC_NONE, 0)
36 RELOC_NUMBER (R_PPC_ADDR32, 1)
37 RELOC_NUMBER (R_PPC_ADDR24, 2)
38 RELOC_NUMBER (R_PPC_ADDR16, 3)
39 RELOC_NUMBER (R_PPC_ADDR16_LO, 4)
40 RELOC_NUMBER (R_PPC_ADDR16_HI, 5)
41 RELOC_NUMBER (R_PPC_ADDR16_HA, 6)
42 RELOC_NUMBER (R_PPC_ADDR14, 7)
43 RELOC_NUMBER (R_PPC_ADDR14_BRTAKEN, 8)
44 RELOC_NUMBER (R_PPC_ADDR14_BRNTAKEN, 9)
45 RELOC_NUMBER (R_PPC_REL24, 10)
46 RELOC_NUMBER (R_PPC_REL14, 11)
47 RELOC_NUMBER (R_PPC_REL14_BRTAKEN, 12)
48 RELOC_NUMBER (R_PPC_REL14_BRNTAKEN, 13)
49 RELOC_NUMBER (R_PPC_GOT16, 14)
50 RELOC_NUMBER (R_PPC_GOT16_LO, 15)
51 RELOC_NUMBER (R_PPC_GOT16_HI, 16)
52 RELOC_NUMBER (R_PPC_GOT16_HA, 17)
53 RELOC_NUMBER (R_PPC_PLTREL24, 18)
54 RELOC_NUMBER (R_PPC_COPY, 19)
55 RELOC_NUMBER (R_PPC_GLOB_DAT, 20)
56 RELOC_NUMBER (R_PPC_JMP_SLOT, 21)
57 RELOC_NUMBER (R_PPC_RELATIVE, 22)
58 RELOC_NUMBER (R_PPC_LOCAL24PC, 23)
59 RELOC_NUMBER (R_PPC_UADDR32, 24)
60 RELOC_NUMBER (R_PPC_UADDR16, 25)
61 RELOC_NUMBER (R_PPC_REL32, 26)
62 RELOC_NUMBER (R_PPC_PLT32, 27)
63 RELOC_NUMBER (R_PPC_PLTREL32, 28)
64 RELOC_NUMBER (R_PPC_PLT16_LO, 29)
65 RELOC_NUMBER (R_PPC_PLT16_HI, 30)
66 RELOC_NUMBER (R_PPC_PLT16_HA, 31)
67 RELOC_NUMBER (R_PPC_SDAREL16, 32)
68 RELOC_NUMBER (R_PPC_SECTOFF, 33)
69 RELOC_NUMBER (R_PPC_SECTOFF_LO, 34)
70 RELOC_NUMBER (R_PPC_SECTOFF_HI, 35)
71 RELOC_NUMBER (R_PPC_SECTOFF_HA, 36)
72 RELOC_NUMBER (R_PPC_ADDR30, 37)
73
74 /* Relocs added to support TLS. */
75 RELOC_NUMBER (R_PPC_TLS, 67)
76 RELOC_NUMBER (R_PPC_DTPMOD32, 68)
77 RELOC_NUMBER (R_PPC_TPREL16, 69)
78 RELOC_NUMBER (R_PPC_TPREL16_LO, 70)
79 RELOC_NUMBER (R_PPC_TPREL16_HI, 71)
80 RELOC_NUMBER (R_PPC_TPREL16_HA, 72)
81 RELOC_NUMBER (R_PPC_TPREL32, 73)
82 RELOC_NUMBER (R_PPC_DTPREL16, 74)
83 RELOC_NUMBER (R_PPC_DTPREL16_LO, 75)
84 RELOC_NUMBER (R_PPC_DTPREL16_HI, 76)
85 RELOC_NUMBER (R_PPC_DTPREL16_HA, 77)
86 RELOC_NUMBER (R_PPC_DTPREL32, 78)
87 RELOC_NUMBER (R_PPC_GOT_TLSGD16, 79)
88 RELOC_NUMBER (R_PPC_GOT_TLSGD16_LO, 80)
89 RELOC_NUMBER (R_PPC_GOT_TLSGD16_HI, 81)
90 RELOC_NUMBER (R_PPC_GOT_TLSGD16_HA, 82)
91 RELOC_NUMBER (R_PPC_GOT_TLSLD16, 83)
92 RELOC_NUMBER (R_PPC_GOT_TLSLD16_LO, 84)
93 RELOC_NUMBER (R_PPC_GOT_TLSLD16_HI, 85)
94 RELOC_NUMBER (R_PPC_GOT_TLSLD16_HA, 86)
95 RELOC_NUMBER (R_PPC_GOT_TPREL16, 87)
96 RELOC_NUMBER (R_PPC_GOT_TPREL16_LO, 88)
97 RELOC_NUMBER (R_PPC_GOT_TPREL16_HI, 89)
98 RELOC_NUMBER (R_PPC_GOT_TPREL16_HA, 90)
99 RELOC_NUMBER (R_PPC_GOT_DTPREL16, 91)
100 RELOC_NUMBER (R_PPC_GOT_DTPREL16_LO, 92)
101 RELOC_NUMBER (R_PPC_GOT_DTPREL16_HI, 93)
102 RELOC_NUMBER (R_PPC_GOT_DTPREL16_HA, 94)
103
104/* The remaining relocs are from the Embedded ELF ABI, and are not
105 in the SVR4 ELF ABI. */
106 RELOC_NUMBER (R_PPC_EMB_NADDR32, 101)
107 RELOC_NUMBER (R_PPC_EMB_NADDR16, 102)
108 RELOC_NUMBER (R_PPC_EMB_NADDR16_LO, 103)
109 RELOC_NUMBER (R_PPC_EMB_NADDR16_HI, 104)
110 RELOC_NUMBER (R_PPC_EMB_NADDR16_HA, 105)
111 RELOC_NUMBER (R_PPC_EMB_SDAI16, 106)
112 RELOC_NUMBER (R_PPC_EMB_SDA2I16, 107)
113 RELOC_NUMBER (R_PPC_EMB_SDA2REL, 108)
114 RELOC_NUMBER (R_PPC_EMB_SDA21, 109)
115 RELOC_NUMBER (R_PPC_EMB_MRKREF, 110)
116 RELOC_NUMBER (R_PPC_EMB_RELSEC16, 111)
117 RELOC_NUMBER (R_PPC_EMB_RELST_LO, 112)
118 RELOC_NUMBER (R_PPC_EMB_RELST_HI, 113)
119 RELOC_NUMBER (R_PPC_EMB_RELST_HA, 114)
120 RELOC_NUMBER (R_PPC_EMB_BIT_FLD, 115)
121 RELOC_NUMBER (R_PPC_EMB_RELSDA, 116)
122
123 /* These are GNU extensions to enable C++ vtable garbage collection. */
124 RELOC_NUMBER (R_PPC_GNU_VTINHERIT, 253)
125 RELOC_NUMBER (R_PPC_GNU_VTENTRY, 254)
126
127/* This is a phony reloc to handle any old fashioned TOC16 references
128 that may still be in object files. */
129 RELOC_NUMBER (R_PPC_TOC16, 255)
130
131END_RELOC_NUMBERS (R_PPC_max)
132
133#define IS_PPC_TLS_RELOC(R) \
134 ((R) >= R_PPC_TLS && (R) <= R_PPC_GOT_DTPREL16_HA)
135
136/* Processor specific flags for the ELF header e_flags field. */
137
138#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag. */
139
140#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag. */
141#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib flag. */
142
143/* Processor specific section headers, sh_type field. */
144
145#define SHT_ORDERED SHT_HIPROC /* Link editor is to sort the \
146 entries in this section \
147 based on the address \
148 specified in the associated \
149 symbol table entry. */
150
151/* Processor specific section flags, sh_flags field. */
152
153#define SHF_EXCLUDE 0x80000000 /* Link editor is to exclude \
154 this section from executable \
155 and shared objects that it \
156 builds when those objects \
157 are not to be furhter \
158 relocated. */
159#endif /* _ELF_PPC_H */
Note: See TracBrowser for help on using the repository browser.