1
2
3
4
5
6
7
8
9
10 #ifndef _UAPI_ASM_POWERPC_ELF_H
11 #define _UAPI_ASM_POWERPC_ELF_H
12
13
14 #include <linux/types.h>
15
16 #include <asm/ptrace.h>
17 #include <asm/cputable.h>
18 #include <asm/auxvec.h>
19
20
21 #define R_PPC_NONE 0
22 #define R_PPC_ADDR32 1
23 #define R_PPC_ADDR24 2
24 #define R_PPC_ADDR16 3
25 #define R_PPC_ADDR16_LO 4
26 #define R_PPC_ADDR16_HI 5
27 #define R_PPC_ADDR16_HA 6
28 #define R_PPC_ADDR14 7
29 #define R_PPC_ADDR14_BRTAKEN 8
30 #define R_PPC_ADDR14_BRNTAKEN 9
31 #define R_PPC_REL24 10
32 #define R_PPC_REL14 11
33 #define R_PPC_REL14_BRTAKEN 12
34 #define R_PPC_REL14_BRNTAKEN 13
35 #define R_PPC_GOT16 14
36 #define R_PPC_GOT16_LO 15
37 #define R_PPC_GOT16_HI 16
38 #define R_PPC_GOT16_HA 17
39 #define R_PPC_PLTREL24 18
40 #define R_PPC_COPY 19
41 #define R_PPC_GLOB_DAT 20
42 #define R_PPC_JMP_SLOT 21
43 #define R_PPC_RELATIVE 22
44 #define R_PPC_LOCAL24PC 23
45 #define R_PPC_UADDR32 24
46 #define R_PPC_UADDR16 25
47 #define R_PPC_REL32 26
48 #define R_PPC_PLT32 27
49 #define R_PPC_PLTREL32 28
50 #define R_PPC_PLT16_LO 29
51 #define R_PPC_PLT16_HI 30
52 #define R_PPC_PLT16_HA 31
53 #define R_PPC_SDAREL16 32
54 #define R_PPC_SECTOFF 33
55 #define R_PPC_SECTOFF_LO 34
56 #define R_PPC_SECTOFF_HI 35
57 #define R_PPC_SECTOFF_HA 36
58
59
60 #define R_PPC_TLS 67
61 #define R_PPC_DTPMOD32 68
62 #define R_PPC_TPREL16 69
63 #define R_PPC_TPREL16_LO 70
64 #define R_PPC_TPREL16_HI 71
65 #define R_PPC_TPREL16_HA 72
66 #define R_PPC_TPREL32 73
67 #define R_PPC_DTPREL16 74
68 #define R_PPC_DTPREL16_LO 75
69 #define R_PPC_DTPREL16_HI 76
70 #define R_PPC_DTPREL16_HA 77
71 #define R_PPC_DTPREL32 78
72 #define R_PPC_GOT_TLSGD16 79
73 #define R_PPC_GOT_TLSGD16_LO 80
74 #define R_PPC_GOT_TLSGD16_HI 81
75 #define R_PPC_GOT_TLSGD16_HA 82
76 #define R_PPC_GOT_TLSLD16 83
77 #define R_PPC_GOT_TLSLD16_LO 84
78 #define R_PPC_GOT_TLSLD16_HI 85
79 #define R_PPC_GOT_TLSLD16_HA 86
80 #define R_PPC_GOT_TPREL16 87
81 #define R_PPC_GOT_TPREL16_LO 88
82 #define R_PPC_GOT_TPREL16_HI 89
83 #define R_PPC_GOT_TPREL16_HA 90
84 #define R_PPC_GOT_DTPREL16 91
85 #define R_PPC_GOT_DTPREL16_LO 92
86 #define R_PPC_GOT_DTPREL16_HI 93
87 #define R_PPC_GOT_DTPREL16_HA 94
88
89
90 #define R_PPC_NUM 95
91
92
93 #define ELF_NGREG 48
94 #define ELF_NFPREG 33
95 #define ELF_NVMX 34
96 #define ELF_NVSX 32
97 #define ELF_NTMSPRREG 3
98 #define ELF_NEBB 3
99 #define ELF_NPMU 5
100 #define ELF_NPKEY 3
101
102 typedef unsigned long elf_greg_t64;
103 typedef elf_greg_t64 elf_gregset_t64[ELF_NGREG];
104
105 typedef unsigned int elf_greg_t32;
106 typedef elf_greg_t32 elf_gregset_t32[ELF_NGREG];
107 typedef elf_gregset_t32 compat_elf_gregset_t;
108
109
110
111
112 #ifdef __powerpc64__
113 # define ELF_NVRREG32 33
114 # define ELF_NVRREG 34
115 # define ELF_NVSRHALFREG 32
116 # define ELF_GREG_TYPE elf_greg_t64
117 # define ELF_ARCH EM_PPC64
118 # define ELF_CLASS ELFCLASS64
119 typedef elf_greg_t64 elf_greg_t;
120 typedef elf_gregset_t64 elf_gregset_t;
121 #else
122 # define ELF_NEVRREG 34
123 # define ELF_NVRREG 33
124 # define ELF_GREG_TYPE elf_greg_t32
125 # define ELF_ARCH EM_PPC
126 # define ELF_CLASS ELFCLASS32
127 typedef elf_greg_t32 elf_greg_t;
128 typedef elf_gregset_t32 elf_gregset_t;
129 #endif
130
131 #ifdef __BIG_ENDIAN__
132 #define ELF_DATA ELFDATA2MSB
133 #else
134 #define ELF_DATA ELFDATA2LSB
135 #endif
136
137
138 typedef double elf_fpreg_t;
139 typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160 typedef __vector128 elf_vrreg_t;
161 typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG];
162 #ifdef __powerpc64__
163 typedef elf_vrreg_t elf_vrregset_t32[ELF_NVRREG32];
164 typedef elf_fpreg_t elf_vsrreghalf_t32[ELF_NVSRHALFREG];
165 #endif
166
167
168 #define R_PPC64_NONE R_PPC_NONE
169 #define R_PPC64_ADDR32 R_PPC_ADDR32
170 #define R_PPC64_ADDR24 R_PPC_ADDR24
171 #define R_PPC64_ADDR16 R_PPC_ADDR16
172 #define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO
173 #define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI
174 #define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA
175 #define R_PPC64_ADDR14 R_PPC_ADDR14
176 #define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
177 #define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
178 #define R_PPC64_REL24 R_PPC_REL24
179 #define R_PPC64_REL14 R_PPC_REL14
180 #define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
181 #define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
182 #define R_PPC64_GOT16 R_PPC_GOT16
183 #define R_PPC64_GOT16_LO R_PPC_GOT16_LO
184 #define R_PPC64_GOT16_HI R_PPC_GOT16_HI
185 #define R_PPC64_GOT16_HA R_PPC_GOT16_HA
186
187 #define R_PPC64_COPY R_PPC_COPY
188 #define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
189 #define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
190 #define R_PPC64_RELATIVE R_PPC_RELATIVE
191
192 #define R_PPC64_UADDR32 R_PPC_UADDR32
193 #define R_PPC64_UADDR16 R_PPC_UADDR16
194 #define R_PPC64_REL32 R_PPC_REL32
195 #define R_PPC64_PLT32 R_PPC_PLT32
196 #define R_PPC64_PLTREL32 R_PPC_PLTREL32
197 #define R_PPC64_PLT16_LO R_PPC_PLT16_LO
198 #define R_PPC64_PLT16_HI R_PPC_PLT16_HI
199 #define R_PPC64_PLT16_HA R_PPC_PLT16_HA
200
201 #define R_PPC64_SECTOFF R_PPC_SECTOFF
202 #define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
203 #define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
204 #define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
205 #define R_PPC64_ADDR30 37
206 #define R_PPC64_ADDR64 38
207 #define R_PPC64_ADDR16_HIGHER 39
208 #define R_PPC64_ADDR16_HIGHERA 40
209 #define R_PPC64_ADDR16_HIGHEST 41
210 #define R_PPC64_ADDR16_HIGHESTA 42
211 #define R_PPC64_UADDR64 43
212 #define R_PPC64_REL64 44
213 #define R_PPC64_PLT64 45
214 #define R_PPC64_PLTREL64 46
215 #define R_PPC64_TOC16 47
216 #define R_PPC64_TOC16_LO 48
217 #define R_PPC64_TOC16_HI 49
218 #define R_PPC64_TOC16_HA 50
219 #define R_PPC64_TOC 51
220 #define R_PPC64_PLTGOT16 52
221 #define R_PPC64_PLTGOT16_LO 53
222 #define R_PPC64_PLTGOT16_HI 54
223 #define R_PPC64_PLTGOT16_HA 55
224
225 #define R_PPC64_ADDR16_DS 56
226 #define R_PPC64_ADDR16_LO_DS 57
227 #define R_PPC64_GOT16_DS 58
228 #define R_PPC64_GOT16_LO_DS 59
229 #define R_PPC64_PLT16_LO_DS 60
230 #define R_PPC64_SECTOFF_DS 61
231 #define R_PPC64_SECTOFF_LO_DS 62
232 #define R_PPC64_TOC16_DS 63
233 #define R_PPC64_TOC16_LO_DS 64
234 #define R_PPC64_PLTGOT16_DS 65
235 #define R_PPC64_PLTGOT16_LO_DS 66
236
237
238 #define R_PPC64_TLS 67
239 #define R_PPC64_DTPMOD64 68
240 #define R_PPC64_TPREL16 69
241 #define R_PPC64_TPREL16_LO 70
242 #define R_PPC64_TPREL16_HI 71
243 #define R_PPC64_TPREL16_HA 72
244 #define R_PPC64_TPREL64 73
245 #define R_PPC64_DTPREL16 74
246 #define R_PPC64_DTPREL16_LO 75
247 #define R_PPC64_DTPREL16_HI 76
248 #define R_PPC64_DTPREL16_HA 77
249 #define R_PPC64_DTPREL64 78
250 #define R_PPC64_GOT_TLSGD16 79
251 #define R_PPC64_GOT_TLSGD16_LO 80
252 #define R_PPC64_GOT_TLSGD16_HI 81
253 #define R_PPC64_GOT_TLSGD16_HA 82
254 #define R_PPC64_GOT_TLSLD16 83
255 #define R_PPC64_GOT_TLSLD16_LO 84
256 #define R_PPC64_GOT_TLSLD16_HI 85
257 #define R_PPC64_GOT_TLSLD16_HA 86
258 #define R_PPC64_GOT_TPREL16_DS 87
259 #define R_PPC64_GOT_TPREL16_LO_DS 88
260 #define R_PPC64_GOT_TPREL16_HI 89
261 #define R_PPC64_GOT_TPREL16_HA 90
262 #define R_PPC64_GOT_DTPREL16_DS 91
263 #define R_PPC64_GOT_DTPREL16_LO_DS 92
264 #define R_PPC64_GOT_DTPREL16_HI 93
265 #define R_PPC64_GOT_DTPREL16_HA 94
266 #define R_PPC64_TPREL16_DS 95
267 #define R_PPC64_TPREL16_LO_DS 96
268 #define R_PPC64_TPREL16_HIGHER 97
269 #define R_PPC64_TPREL16_HIGHERA 98
270 #define R_PPC64_TPREL16_HIGHEST 99
271 #define R_PPC64_TPREL16_HIGHESTA 100
272 #define R_PPC64_DTPREL16_DS 101
273 #define R_PPC64_DTPREL16_LO_DS 102
274 #define R_PPC64_DTPREL16_HIGHER 103
275 #define R_PPC64_DTPREL16_HIGHERA 104
276 #define R_PPC64_DTPREL16_HIGHEST 105
277 #define R_PPC64_DTPREL16_HIGHESTA 106
278 #define R_PPC64_TLSGD 107
279 #define R_PPC64_TLSLD 108
280 #define R_PPC64_TOCSAVE 109
281
282 #define R_PPC64_ENTRY 118
283
284 #define R_PPC64_REL16 249
285 #define R_PPC64_REL16_LO 250
286 #define R_PPC64_REL16_HI 251
287 #define R_PPC64_REL16_HA 252
288
289
290 #define R_PPC64_NUM 253
291
292
293 struct ppc64_opd_entry
294 {
295 unsigned long funcaddr;
296 unsigned long r2;
297 };
298
299
300 #endif