1 | /* HPPA ELF support for BFD. |
---|
2 | Copyright 1993, 1994, 1995, 1998, 1999, 2000, 2005, 2006, 2008, 2010 |
---|
3 | Free Software Foundation, Inc. |
---|
4 | |
---|
5 | This file is part of BFD, the Binary File Descriptor library. |
---|
6 | |
---|
7 | This program is free software; you can redistribute it and/or modify |
---|
8 | it under the terms of the GNU General Public License as published by |
---|
9 | the Free Software Foundation; either version 3 of the License, or |
---|
10 | (at your option) any later version. |
---|
11 | |
---|
12 | This program is distributed in the hope that it will be useful, |
---|
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
15 | GNU General Public License for more details. |
---|
16 | |
---|
17 | You should have received a copy of the GNU General Public License |
---|
18 | along with this program; if not, write to the Free Software |
---|
19 | Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
---|
20 | MA 02110-1301, USA. */ |
---|
21 | |
---|
22 | /* This file holds definitions specific to the HPPA ELF ABI. Note |
---|
23 | that most of this is not actually implemented by BFD. */ |
---|
24 | |
---|
25 | #ifndef _ELF_HPPA_H |
---|
26 | #define _ELF_HPPA_H |
---|
27 | |
---|
28 | /* Processor specific flags for the ELF header e_flags field. */ |
---|
29 | |
---|
30 | /* Trap null address dereferences. */ |
---|
31 | #define EF_PARISC_TRAPNIL 0x00010000 |
---|
32 | |
---|
33 | /* .PARISC.archext section is present. */ |
---|
34 | #define EF_PARISC_EXT 0x00020000 |
---|
35 | |
---|
36 | /* Program expects little-endian mode. */ |
---|
37 | #define EF_PARISC_LSB 0x00040000 |
---|
38 | |
---|
39 | /* Program expects wide mode. */ |
---|
40 | #define EF_PARISC_WIDE 0x00080000 |
---|
41 | |
---|
42 | /* Do not allow kernel-assisted branch prediction. */ |
---|
43 | #define EF_PARISC_NO_KABP 0x00100000 |
---|
44 | |
---|
45 | /* Allow lazy swap for dynamically allocated program segments. */ |
---|
46 | #define EF_PARISC_LAZYSWAP 0x00400000 |
---|
47 | |
---|
48 | /* Architecture version */ |
---|
49 | #define EF_PARISC_ARCH 0x0000ffff |
---|
50 | |
---|
51 | #define EFA_PARISC_1_0 0x020b |
---|
52 | #define EFA_PARISC_1_1 0x0210 |
---|
53 | #define EFA_PARISC_2_0 0x0214 |
---|
54 | |
---|
55 | /* Special section indices. */ |
---|
56 | /* A symbol that has been declared as a tentative definition in an ANSI C |
---|
57 | compilation. */ |
---|
58 | #define SHN_PARISC_ANSI_COMMON SHN_LORESERVE |
---|
59 | |
---|
60 | /* A symbol that has been declared as a common block using the |
---|
61 | huge memory model. */ |
---|
62 | #define SHN_PARISC_HUGE_COMMON (SHN_LORESERVE + 1) |
---|
63 | |
---|
64 | /* Processor specific section types. */ |
---|
65 | |
---|
66 | /* Section contains product specific extension bits. */ |
---|
67 | #define SHT_PARISC_EXT 0x70000000 |
---|
68 | |
---|
69 | /* Section contains unwind table entries. */ |
---|
70 | #define SHT_PARISC_UNWIND 0x70000001 |
---|
71 | |
---|
72 | /* Section contains debug information for optimized code. */ |
---|
73 | #define SHT_PARISC_DOC 0x70000002 |
---|
74 | |
---|
75 | /* Section contains code annotations. */ |
---|
76 | #define SHT_PARISC_ANNOT 0x70000003 |
---|
77 | |
---|
78 | /* DLKM special section. */ |
---|
79 | #define SHT_PARISC_DLKM 0x70000004 |
---|
80 | |
---|
81 | /* These are strictly for compatibility with the older elf32-hppa |
---|
82 | implementation. Hopefully we can eliminate them in the future. */ |
---|
83 | /* Optional section holding argument location/relocation info. */ |
---|
84 | #define SHT_PARISC_SYMEXTN SHT_LOPROC + 8 |
---|
85 | |
---|
86 | /* Option section for linker stubs. */ |
---|
87 | #define SHT_PARISC_STUBS SHT_LOPROC + 9 |
---|
88 | |
---|
89 | /* Processor specific section flags. */ |
---|
90 | |
---|
91 | /* Section contains code compiled for static branch prediction. */ |
---|
92 | #define SHF_PARISC_SBP 0x80000000 |
---|
93 | |
---|
94 | /* Section should be allocated from from GP. */ |
---|
95 | #define SHF_PARISC_HUGE 0x40000000 |
---|
96 | |
---|
97 | /* Section should go near GP. */ |
---|
98 | #define SHF_PARISC_SHORT 0x20000000 |
---|
99 | |
---|
100 | /* Section is weak ordered. */ |
---|
101 | #define SHF_PARISC_WEAKORDER 0x10000000 |
---|
102 | |
---|
103 | /* Identifies the entry point of a millicode routine. */ |
---|
104 | #define STT_PARISC_MILLI 13 |
---|
105 | |
---|
106 | /* ELF/HPPA relocation types */ |
---|
107 | |
---|
108 | /* Note: PA-ELF is defined to use only RELA relocations. */ |
---|
109 | #include "elf/reloc-macros.h" |
---|
110 | |
---|
111 | START_RELOC_NUMBERS (elf_hppa_reloc_type) |
---|
112 | RELOC_NUMBER (R_PARISC_NONE, 0) /* No reloc */ |
---|
113 | |
---|
114 | /* Data / Inst. Format Relocation Expression */ |
---|
115 | |
---|
116 | RELOC_NUMBER (R_PARISC_DIR32, 1) |
---|
117 | /* 32-bit word symbol + addend */ |
---|
118 | |
---|
119 | RELOC_NUMBER (R_PARISC_DIR21L, 2) |
---|
120 | /* long immediate (7) LR(symbol, addend) */ |
---|
121 | |
---|
122 | RELOC_NUMBER (R_PARISC_DIR17R, 3) |
---|
123 | /* branch external (19) RR(symbol, addend) */ |
---|
124 | |
---|
125 | RELOC_NUMBER (R_PARISC_DIR17F, 4) |
---|
126 | /* branch external (19) symbol + addend */ |
---|
127 | |
---|
128 | RELOC_NUMBER (R_PARISC_DIR14R, 6) |
---|
129 | /* load/store (1) RR(symbol, addend) */ |
---|
130 | |
---|
131 | RELOC_NUMBER (R_PARISC_DIR14F, 7) |
---|
132 | /* load/store (1) symbol, addend */ |
---|
133 | |
---|
134 | /* PC-relative relocation types |
---|
135 | Typically used for calls. |
---|
136 | Note PCREL17C and PCREL17F differ only in overflow handling. |
---|
137 | PCREL17C never reports a relocation error. |
---|
138 | |
---|
139 | When supporting argument relocations, function calls must be |
---|
140 | accompanied by parameter relocation information. This information is |
---|
141 | carried in the ten high-order bits of the addend field. The remaining |
---|
142 | 22 bits of of the addend field are sign-extended to form the Addend. |
---|
143 | |
---|
144 | Note the code to build argument relocations depends on the |
---|
145 | addend being zero. A consequence of this limitation is GAS |
---|
146 | can not perform relocation reductions for function symbols. */ |
---|
147 | |
---|
148 | RELOC_NUMBER (R_PARISC_PCREL12F, 8) |
---|
149 | /* op & branch (17) symbol - PC - 8 + addend */ |
---|
150 | |
---|
151 | RELOC_NUMBER (R_PARISC_PCREL32, 9) |
---|
152 | /* 32-bit word symbol - PC - 8 + addend */ |
---|
153 | |
---|
154 | RELOC_NUMBER (R_PARISC_PCREL21L, 10) |
---|
155 | /* long immediate (7) L(symbol - PC - 8 + addend) */ |
---|
156 | |
---|
157 | RELOC_NUMBER (R_PARISC_PCREL17R, 11) |
---|
158 | /* branch external (19) R(symbol - PC - 8 + addend) */ |
---|
159 | |
---|
160 | RELOC_NUMBER (R_PARISC_PCREL17F, 12) |
---|
161 | /* branch (20) symbol - PC - 8 + addend */ |
---|
162 | |
---|
163 | RELOC_NUMBER (R_PARISC_PCREL17C, 13) |
---|
164 | /* branch (20) symbol - PC - 8 + addend */ |
---|
165 | |
---|
166 | RELOC_NUMBER (R_PARISC_PCREL14R, 14) |
---|
167 | /* load/store (1) R(symbol - PC - 8 + addend) */ |
---|
168 | |
---|
169 | RELOC_NUMBER (R_PARISC_PCREL14F, 15) |
---|
170 | /* load/store (1) symbol - PC - 8 + addend */ |
---|
171 | |
---|
172 | |
---|
173 | /* DP-relative relocation types. */ |
---|
174 | RELOC_NUMBER (R_PARISC_DPREL21L, 18) |
---|
175 | /* long immediate (7) LR(symbol - GP, addend) */ |
---|
176 | |
---|
177 | RELOC_NUMBER (R_PARISC_DPREL14WR, 19) |
---|
178 | /* load/store mod. comp. (2) RR(symbol - GP, addend) */ |
---|
179 | |
---|
180 | RELOC_NUMBER (R_PARISC_DPREL14DR, 20) |
---|
181 | /* load/store doubleword (3) RR(symbol - GP, addend) */ |
---|
182 | |
---|
183 | RELOC_NUMBER (R_PARISC_DPREL14R, 22) |
---|
184 | /* load/store (1) RR(symbol - GP, addend) */ |
---|
185 | |
---|
186 | RELOC_NUMBER (R_PARISC_DPREL14F, 23) |
---|
187 | /* load/store (1) symbol - GP + addend */ |
---|
188 | |
---|
189 | |
---|
190 | /* Data linkage table (DLT) relocation types |
---|
191 | |
---|
192 | SOM DLT_REL fixup requests are used to for static data references |
---|
193 | from position-independent code within shared libraries. They are |
---|
194 | similar to the GOT relocation types in some SVR4 implementations. */ |
---|
195 | |
---|
196 | RELOC_NUMBER (R_PARISC_DLTREL21L, 26) |
---|
197 | /* long immediate (7) LR(symbol - GP, addend) */ |
---|
198 | |
---|
199 | RELOC_NUMBER (R_PARISC_DLTREL14R, 30) |
---|
200 | /* load/store (1) RR(symbol - GP, addend) */ |
---|
201 | |
---|
202 | RELOC_NUMBER (R_PARISC_DLTREL14F, 31) |
---|
203 | /* load/store (1) symbol - GP + addend */ |
---|
204 | |
---|
205 | |
---|
206 | /* DLT indirect relocation types */ |
---|
207 | RELOC_NUMBER (R_PARISC_DLTIND21L, 34) |
---|
208 | /* long immediate (7) L(ltoff(symbol + addend)) */ |
---|
209 | |
---|
210 | RELOC_NUMBER (R_PARISC_DLTIND14R, 38) |
---|
211 | /* load/store (1) R(ltoff(symbol + addend)) */ |
---|
212 | |
---|
213 | RELOC_NUMBER (R_PARISC_DLTIND14F, 39) |
---|
214 | /* load/store (1) ltoff(symbol + addend) */ |
---|
215 | |
---|
216 | |
---|
217 | /* Base relative relocation types. Ugh. These imply lots of state */ |
---|
218 | RELOC_NUMBER (R_PARISC_SETBASE, 40) |
---|
219 | /* none no reloc; base := sym */ |
---|
220 | |
---|
221 | RELOC_NUMBER (R_PARISC_SECREL32, 41) |
---|
222 | /* 32-bit word symbol - SECT + addend */ |
---|
223 | |
---|
224 | RELOC_NUMBER (R_PARISC_BASEREL21L, 42) |
---|
225 | /* long immediate (7) LR(symbol - base, addend) */ |
---|
226 | |
---|
227 | RELOC_NUMBER (R_PARISC_BASEREL17R, 43) |
---|
228 | /* branch external (19) RR(symbol - base, addend) */ |
---|
229 | |
---|
230 | RELOC_NUMBER (R_PARISC_BASEREL17F, 44) |
---|
231 | /* branch external (19) symbol - base + addend */ |
---|
232 | |
---|
233 | RELOC_NUMBER (R_PARISC_BASEREL14R, 46) |
---|
234 | /* load/store (1) RR(symbol - base, addend) */ |
---|
235 | |
---|
236 | RELOC_NUMBER (R_PARISC_BASEREL14F, 47) |
---|
237 | /* load/store (1) symbol - base, addend */ |
---|
238 | |
---|
239 | |
---|
240 | /* Segment relative relocation types. */ |
---|
241 | RELOC_NUMBER (R_PARISC_SEGBASE, 48) |
---|
242 | /* none no relocation; SB := sym */ |
---|
243 | |
---|
244 | RELOC_NUMBER (R_PARISC_SEGREL32, 49) |
---|
245 | /* 32-bit word symbol - SB + addend */ |
---|
246 | |
---|
247 | |
---|
248 | /* Offsets from the PLT. */ |
---|
249 | RELOC_NUMBER (R_PARISC_PLTOFF21L, 50) |
---|
250 | /* long immediate (7) LR(pltoff(symbol), addend) */ |
---|
251 | |
---|
252 | RELOC_NUMBER (R_PARISC_PLTOFF14R, 54) |
---|
253 | /* load/store (1) RR(pltoff(symbol), addend) */ |
---|
254 | |
---|
255 | RELOC_NUMBER (R_PARISC_PLTOFF14F, 55) |
---|
256 | /* load/store (1) pltoff(symbol) + addend */ |
---|
257 | |
---|
258 | |
---|
259 | RELOC_NUMBER (R_PARISC_LTOFF_FPTR32, 57) |
---|
260 | /* 32-bit word ltoff(fptr(symbol+addend)) */ |
---|
261 | |
---|
262 | RELOC_NUMBER (R_PARISC_LTOFF_FPTR21L, 58) |
---|
263 | /* long immediate (7) L(ltoff(fptr(symbol+addend))) */ |
---|
264 | |
---|
265 | RELOC_NUMBER (R_PARISC_LTOFF_FPTR14R, 62) |
---|
266 | /* load/store (1) R(ltoff(fptr(symbol+addend))) */ |
---|
267 | |
---|
268 | |
---|
269 | RELOC_NUMBER (R_PARISC_FPTR64, 64) |
---|
270 | /* 64-bit doubleword fptr(symbol+addend) */ |
---|
271 | |
---|
272 | |
---|
273 | /* Plabel relocation types. */ |
---|
274 | RELOC_NUMBER (R_PARISC_PLABEL32, 65) |
---|
275 | /* 32-bit word fptr(symbol) */ |
---|
276 | |
---|
277 | RELOC_NUMBER (R_PARISC_PLABEL21L, 66) |
---|
278 | /* long immediate (7) L(fptr(symbol)) */ |
---|
279 | |
---|
280 | RELOC_NUMBER (R_PARISC_PLABEL14R, 70) |
---|
281 | /* load/store (1) R(fptr(symbol)) */ |
---|
282 | |
---|
283 | |
---|
284 | /* PCREL relocations. */ |
---|
285 | RELOC_NUMBER (R_PARISC_PCREL64, 72) |
---|
286 | /* 64-bit doubleword symbol - PC - 8 + addend */ |
---|
287 | |
---|
288 | RELOC_NUMBER (R_PARISC_PCREL22C, 73) |
---|
289 | /* branch & link (21) symbol - PC - 8 + addend */ |
---|
290 | |
---|
291 | RELOC_NUMBER (R_PARISC_PCREL22F, 74) |
---|
292 | /* branch & link (21) symbol - PC - 8 + addend */ |
---|
293 | |
---|
294 | RELOC_NUMBER (R_PARISC_PCREL14WR, 75) |
---|
295 | /* load/store mod. comp. (2) R(symbol - PC - 8 + addend) */ |
---|
296 | |
---|
297 | RELOC_NUMBER (R_PARISC_PCREL14DR, 76) |
---|
298 | /* load/store doubleword (3) R(symbol - PC - 8 + addend) */ |
---|
299 | |
---|
300 | RELOC_NUMBER (R_PARISC_PCREL16F, 77) |
---|
301 | /* load/store (1) symbol - PC - 8 + addend */ |
---|
302 | |
---|
303 | RELOC_NUMBER (R_PARISC_PCREL16WF, 78) |
---|
304 | /* load/store mod. comp. (2) symbol - PC - 8 + addend */ |
---|
305 | |
---|
306 | RELOC_NUMBER (R_PARISC_PCREL16DF, 79) |
---|
307 | /* load/store doubleword (3) symbol - PC - 8 + addend */ |
---|
308 | |
---|
309 | |
---|
310 | RELOC_NUMBER (R_PARISC_DIR64, 80) |
---|
311 | /* 64-bit doubleword symbol + addend */ |
---|
312 | |
---|
313 | RELOC_NUMBER (R_PARISC_DIR14WR, 83) |
---|
314 | /* load/store mod. comp. (2) RR(symbol, addend) */ |
---|
315 | |
---|
316 | RELOC_NUMBER (R_PARISC_DIR14DR, 84) |
---|
317 | /* load/store doubleword (3) RR(symbol, addend) */ |
---|
318 | |
---|
319 | RELOC_NUMBER (R_PARISC_DIR16F, 85) |
---|
320 | /* load/store (1) symbol + addend */ |
---|
321 | |
---|
322 | RELOC_NUMBER (R_PARISC_DIR16WF, 86) |
---|
323 | /* load/store mod. comp. (2) symbol + addend */ |
---|
324 | |
---|
325 | RELOC_NUMBER (R_PARISC_DIR16DF, 87) |
---|
326 | /* load/store doubleword (3) symbol + addend */ |
---|
327 | |
---|
328 | RELOC_NUMBER (R_PARISC_GPREL64, 88) |
---|
329 | /* 64-bit doubleword symbol - GP + addend */ |
---|
330 | |
---|
331 | RELOC_NUMBER (R_PARISC_DLTREL14WR, 91) |
---|
332 | /* load/store mod. comp. (2) RR(symbol - GP, addend) */ |
---|
333 | |
---|
334 | RELOC_NUMBER (R_PARISC_DLTREL14DR, 92) |
---|
335 | /* load/store doubleword (3) RR(symbol - GP, addend) */ |
---|
336 | |
---|
337 | RELOC_NUMBER (R_PARISC_GPREL16F, 93) |
---|
338 | /* load/store (1) symbol - GP + addend */ |
---|
339 | |
---|
340 | RELOC_NUMBER (R_PARISC_GPREL16WF, 94) |
---|
341 | /* load/store mod. comp. (2) symbol - GP + addend */ |
---|
342 | |
---|
343 | RELOC_NUMBER (R_PARISC_GPREL16DF, 95) |
---|
344 | /* load/store doubleword (3) symbol - GP + addend */ |
---|
345 | |
---|
346 | |
---|
347 | RELOC_NUMBER (R_PARISC_LTOFF64, 96) |
---|
348 | /* 64-bit doubleword ltoff(symbol + addend) */ |
---|
349 | |
---|
350 | RELOC_NUMBER (R_PARISC_DLTIND14WR, 99) |
---|
351 | /* load/store mod. comp. (2) R(ltoff(symbol + addend)) */ |
---|
352 | |
---|
353 | RELOC_NUMBER (R_PARISC_DLTIND14DR, 100) |
---|
354 | /* load/store doubleword (3) R(ltoff(symbol + addend)) */ |
---|
355 | |
---|
356 | RELOC_NUMBER (R_PARISC_LTOFF16F, 101) |
---|
357 | /* load/store (1) ltoff(symbol + addend) */ |
---|
358 | |
---|
359 | RELOC_NUMBER (R_PARISC_LTOFF16WF, 102) |
---|
360 | /* load/store mod. comp. (2) ltoff(symbol + addend) */ |
---|
361 | |
---|
362 | RELOC_NUMBER (R_PARISC_LTOFF16DF, 103) |
---|
363 | /* load/store doubleword (3) ltoff(symbol + addend) */ |
---|
364 | |
---|
365 | |
---|
366 | RELOC_NUMBER (R_PARISC_SECREL64, 104) |
---|
367 | /* 64-bit doubleword symbol - SECT + addend */ |
---|
368 | |
---|
369 | RELOC_NUMBER (R_PARISC_BASEREL14WR, 107) |
---|
370 | /* load/store mod. comp. (2) RR(symbol - base, addend) */ |
---|
371 | |
---|
372 | RELOC_NUMBER (R_PARISC_BASEREL14DR, 108) |
---|
373 | /* load/store doubleword (3) RR(symbol - base, addend) */ |
---|
374 | |
---|
375 | |
---|
376 | RELOC_NUMBER (R_PARISC_SEGREL64, 112) |
---|
377 | /* 64-bit doubleword symbol - SB + addend */ |
---|
378 | |
---|
379 | RELOC_NUMBER (R_PARISC_PLTOFF14WR, 115) |
---|
380 | /* load/store mod. comp. (2) RR(pltoff(symbol), addend) */ |
---|
381 | |
---|
382 | RELOC_NUMBER (R_PARISC_PLTOFF14DR, 116) |
---|
383 | /* load/store doubleword (3) RR(pltoff(symbol), addend) */ |
---|
384 | |
---|
385 | RELOC_NUMBER (R_PARISC_PLTOFF16F, 117) |
---|
386 | /* load/store (1) pltoff(symbol) + addend */ |
---|
387 | |
---|
388 | RELOC_NUMBER (R_PARISC_PLTOFF16WF, 118) |
---|
389 | /* load/store mod. comp. (2) pltoff(symbol) + addend */ |
---|
390 | |
---|
391 | RELOC_NUMBER (R_PARISC_PLTOFF16DF, 119) |
---|
392 | /* load/store doubleword (3) pltoff(symbol) + addend */ |
---|
393 | |
---|
394 | |
---|
395 | RELOC_NUMBER (R_PARISC_LTOFF_FPTR64, 120) |
---|
396 | /* 64-bit doubleword ltoff(fptr(symbol+addend)) */ |
---|
397 | |
---|
398 | RELOC_NUMBER (R_PARISC_LTOFF_FPTR14WR, 123) |
---|
399 | /* load/store mod. comp. (2) R(ltoff(fptr(symbol+addend))) */ |
---|
400 | |
---|
401 | RELOC_NUMBER (R_PARISC_LTOFF_FPTR14DR, 124) |
---|
402 | /* load/store doubleword (3) R(ltoff(fptr(symbol+addend))) */ |
---|
403 | |
---|
404 | RELOC_NUMBER (R_PARISC_LTOFF_FPTR16F, 125) |
---|
405 | /* load/store (1) ltoff(fptr(symbol+addend)) */ |
---|
406 | |
---|
407 | RELOC_NUMBER (R_PARISC_LTOFF_FPTR16WF, 126) |
---|
408 | /* load/store mod. comp. (2) ltoff(fptr(symbol+addend)) */ |
---|
409 | |
---|
410 | RELOC_NUMBER (R_PARISC_LTOFF_FPTR16DF, 127) |
---|
411 | /* load/store doubleword (3) ltoff(fptr(symbol+addend)) */ |
---|
412 | |
---|
413 | |
---|
414 | RELOC_NUMBER (R_PARISC_COPY, 128) |
---|
415 | /* data Dynamic relocations only */ |
---|
416 | |
---|
417 | RELOC_NUMBER (R_PARISC_IPLT, 129) |
---|
418 | /* plt */ |
---|
419 | |
---|
420 | RELOC_NUMBER (R_PARISC_EPLT, 130) |
---|
421 | /* plt */ |
---|
422 | |
---|
423 | |
---|
424 | RELOC_NUMBER (R_PARISC_TPREL32, 153) |
---|
425 | /* 32-bit word symbol - TP + addend */ |
---|
426 | |
---|
427 | RELOC_NUMBER (R_PARISC_TPREL21L, 154) |
---|
428 | /* long immediate (7) LR(symbol - TP, addend) */ |
---|
429 | |
---|
430 | RELOC_NUMBER (R_PARISC_TPREL14R, 158) |
---|
431 | /* load/store (1) RR(symbol - TP, addend) */ |
---|
432 | |
---|
433 | |
---|
434 | RELOC_NUMBER (R_PARISC_LTOFF_TP21L, 162) |
---|
435 | /* long immediate (7) L(ltoff(symbol - TP + addend)) */ |
---|
436 | |
---|
437 | RELOC_NUMBER (R_PARISC_LTOFF_TP14R, 166) |
---|
438 | /* load/store (1) R(ltoff(symbol - TP + addend)) */ |
---|
439 | |
---|
440 | RELOC_NUMBER (R_PARISC_LTOFF_TP14F, 167) |
---|
441 | /* load/store (1) ltoff(symbol - TP + addend) */ |
---|
442 | |
---|
443 | |
---|
444 | RELOC_NUMBER (R_PARISC_TPREL64, 216) |
---|
445 | /* 64-bit word symbol - TP + addend */ |
---|
446 | |
---|
447 | RELOC_NUMBER (R_PARISC_TPREL14WR, 219) |
---|
448 | /* load/store mod. comp. (2) RR(symbol - TP, addend) */ |
---|
449 | |
---|
450 | RELOC_NUMBER (R_PARISC_TPREL14DR, 220) |
---|
451 | /* load/store doubleword (3) RR(symbol - TP, addend) */ |
---|
452 | |
---|
453 | RELOC_NUMBER (R_PARISC_TPREL16F, 221) |
---|
454 | /* load/store (1) symbol - TP + addend */ |
---|
455 | |
---|
456 | RELOC_NUMBER (R_PARISC_TPREL16WF, 222) |
---|
457 | /* load/store mod. comp. (2) symbol - TP + addend */ |
---|
458 | |
---|
459 | RELOC_NUMBER (R_PARISC_TPREL16DF, 223) |
---|
460 | /* load/store doubleword (3) symbol - TP + addend */ |
---|
461 | |
---|
462 | |
---|
463 | RELOC_NUMBER (R_PARISC_LTOFF_TP64, 224) |
---|
464 | /* 64-bit doubleword ltoff(symbol - TP + addend) */ |
---|
465 | |
---|
466 | RELOC_NUMBER (R_PARISC_LTOFF_TP14WR, 227) |
---|
467 | /* load/store mod. comp. (2) R(ltoff(symbol - TP + addend)) */ |
---|
468 | |
---|
469 | RELOC_NUMBER (R_PARISC_LTOFF_TP14DR, 228) |
---|
470 | /* load/store doubleword (3) R(ltoff(symbol - TP + addend)) */ |
---|
471 | |
---|
472 | RELOC_NUMBER (R_PARISC_LTOFF_TP16F, 229) |
---|
473 | /* load/store (1) ltoff(symbol - TP + addend) */ |
---|
474 | |
---|
475 | RELOC_NUMBER (R_PARISC_LTOFF_TP16WF, 230) |
---|
476 | /* load/store mod. comp. (2) ltoff(symbol - TP + addend) */ |
---|
477 | |
---|
478 | RELOC_NUMBER (R_PARISC_LTOFF_TP16DF, 231) |
---|
479 | /* load/store doubleword (3) ltoff(symbol - TP + addend) */ |
---|
480 | |
---|
481 | RELOC_NUMBER (R_PARISC_GNU_VTENTRY, 232) |
---|
482 | RELOC_NUMBER (R_PARISC_GNU_VTINHERIT, 233) |
---|
483 | |
---|
484 | RELOC_NUMBER (R_PARISC_TLS_GD21L, 234) |
---|
485 | RELOC_NUMBER (R_PARISC_TLS_GD14R, 235) |
---|
486 | RELOC_NUMBER (R_PARISC_TLS_GDCALL, 236) |
---|
487 | RELOC_NUMBER (R_PARISC_TLS_LDM21L, 237) |
---|
488 | RELOC_NUMBER (R_PARISC_TLS_LDM14R, 238) |
---|
489 | RELOC_NUMBER (R_PARISC_TLS_LDMCALL, 239) |
---|
490 | RELOC_NUMBER (R_PARISC_TLS_LDO21L, 240) |
---|
491 | RELOC_NUMBER (R_PARISC_TLS_LDO14R, 241) |
---|
492 | RELOC_NUMBER (R_PARISC_TLS_DTPMOD32, 242) |
---|
493 | RELOC_NUMBER (R_PARISC_TLS_DTPMOD64, 243) |
---|
494 | RELOC_NUMBER (R_PARISC_TLS_DTPOFF32, 244) |
---|
495 | RELOC_NUMBER (R_PARISC_TLS_DTPOFF64, 245) |
---|
496 | |
---|
497 | END_RELOC_NUMBERS (R_PARISC_UNIMPLEMENTED) |
---|
498 | |
---|
499 | #define R_PARISC_TLS_LE21L R_PARISC_TPREL21L |
---|
500 | #define R_PARISC_TLS_LE14R R_PARISC_TPREL14R |
---|
501 | #define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L |
---|
502 | #define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R |
---|
503 | #define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 |
---|
504 | #define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 |
---|
505 | |
---|
506 | #ifndef RELOC_MACROS_GEN_FUNC |
---|
507 | typedef enum elf_hppa_reloc_type elf_hppa_reloc_type; |
---|
508 | #endif |
---|
509 | |
---|
510 | #define PT_PARISC_ARCHEXT 0x70000000 |
---|
511 | #define PT_PARISC_UNWIND 0x70000001 |
---|
512 | #define PT_PARISC_WEAKORDER 0x70000002 |
---|
513 | |
---|
514 | /* Flag bits in sh_flags of ElfXX_Shdr. */ |
---|
515 | #define SHF_HP_TLS 0x01000000 |
---|
516 | #define SHF_HP_NEAR_SHARED 0x02000000 |
---|
517 | #define SHF_HP_FAR_SHARED 0x04000000 |
---|
518 | #define SHF_HP_COMDAT 0x08000000 |
---|
519 | #define SHF_HP_CONST 0x00800000 |
---|
520 | |
---|
521 | /* Reserved section header indices. */ |
---|
522 | #define SHN_TLS_COMMON (SHN_LOOS + 0x0) |
---|
523 | #define SHN_NS_COMMON (SHN_LOOS + 0x1) |
---|
524 | #define SHN_FS_COMMON (SHN_LOOS + 0x2) |
---|
525 | #define SHN_NS_UNDEF (SHN_LOOS + 0x3) |
---|
526 | #define SHN_FS_UNDEF (SHN_LOOS + 0x4) |
---|
527 | #define SHN_HP_EXTERN (SHN_LOOS + 0x5) |
---|
528 | #define SHN_HP_EXTHINT (SHN_LOOS + 0x6) |
---|
529 | #define SHN_HP_UNDEF_BIND_IMM (SHN_LOOS + 0x7) |
---|
530 | |
---|
531 | /* Values of sh_type in ElfXX_Shdr. */ |
---|
532 | #define SHT_HP_OVLBITS (SHT_LOOS + 0x0) |
---|
533 | #define SHT_HP_DLKM (SHT_LOOS + 0x1) |
---|
534 | #define SHT_HP_COMDAT (SHT_LOOS + 0x2) |
---|
535 | #define SHT_HP_OBJDICT (SHT_LOOS + 0x3) |
---|
536 | #define SHT_HP_ANNOT (SHT_LOOS + 0x4) |
---|
537 | |
---|
538 | /* Flag bits in p_flags of ElfXX_Phdr. */ |
---|
539 | #define PF_HP_CODE 0x00040000 |
---|
540 | #define PF_HP_MODIFY 0x00080000 |
---|
541 | #define PF_HP_PAGE_SIZE 0x00100000 |
---|
542 | #define PF_HP_FAR_SHARED 0x00200000 |
---|
543 | #define PF_HP_NEAR_SHARED 0x00400000 |
---|
544 | #define PF_HP_LAZYSWAP 0x00800000 |
---|
545 | #define PF_HP_CODE_DEPR 0x01000000 |
---|
546 | #define PF_HP_MODIFY_DEPR 0x02000000 |
---|
547 | #define PF_HP_LAZYSWAP_DEPR 0x04000000 |
---|
548 | #define PF_PARISC_SBP 0x08000000 |
---|
549 | #define PF_HP_SBP 0x08000000 |
---|
550 | |
---|
551 | |
---|
552 | /* Processor specific dynamic array tags. */ |
---|
553 | |
---|
554 | /* Arggh. HP's tools define these symbols based on the |
---|
555 | old value of DT_LOOS. So we must do the same to be |
---|
556 | compatible. */ |
---|
557 | #define DT_HP_LOAD_MAP (OLD_DT_LOOS + 0x0) |
---|
558 | #define DT_HP_DLD_FLAGS (OLD_DT_LOOS + 0x1) |
---|
559 | #define DT_HP_DLD_HOOK (OLD_DT_LOOS + 0x2) |
---|
560 | #define DT_HP_UX10_INIT (OLD_DT_LOOS + 0x3) |
---|
561 | #define DT_HP_UX10_INITSZ (OLD_DT_LOOS + 0x4) |
---|
562 | #define DT_HP_PREINIT (OLD_DT_LOOS + 0x5) |
---|
563 | #define DT_HP_PREINITSZ (OLD_DT_LOOS + 0x6) |
---|
564 | #define DT_HP_NEEDED (OLD_DT_LOOS + 0x7) |
---|
565 | #define DT_HP_TIME_STAMP (OLD_DT_LOOS + 0x8) |
---|
566 | #define DT_HP_CHECKSUM (OLD_DT_LOOS + 0x9) |
---|
567 | #define DT_HP_GST_SIZE (OLD_DT_LOOS + 0xa) |
---|
568 | #define DT_HP_GST_VERSION (OLD_DT_LOOS + 0xb) |
---|
569 | #define DT_HP_GST_HASHVAL (OLD_DT_LOOS + 0xc) |
---|
570 | #define DT_HP_EPLTREL (OLD_DT_LOOS + 0xd) |
---|
571 | #define DT_HP_EPLTRELSZ (OLD_DT_LOOS + 0xe) |
---|
572 | #define DT_HP_FILTERED (OLD_DT_LOOS + 0xf) |
---|
573 | #define DT_HP_FILTER_TLS (OLD_DT_LOOS + 0x10) |
---|
574 | #define DT_HP_COMPAT_FILTERED (OLD_DT_LOOS + 0x11) |
---|
575 | #define DT_HP_LAZYLOAD (OLD_DT_LOOS + 0x12) |
---|
576 | #define DT_HP_BIND_NOW_COUNT (OLD_DT_LOOS + 0x13) |
---|
577 | #define DT_PLT (OLD_DT_LOOS + 0x14) |
---|
578 | #define DT_PLT_SIZE (OLD_DT_LOOS + 0x15) |
---|
579 | #define DT_DLT (OLD_DT_LOOS + 0x16) |
---|
580 | #define DT_DLT_SIZE (OLD_DT_LOOS + 0x17) |
---|
581 | |
---|
582 | /* Values for DT_HP_DLD_FLAGS. */ |
---|
583 | #define DT_HP_DEBUG_PRIVATE 0x00001 /* Map text private */ |
---|
584 | #define DT_HP_DEBUG_CALLBACK 0x00002 /* Callback */ |
---|
585 | #define DT_HP_DEBUG_CALLBACK_BOR 0x00004 /* BOR callback */ |
---|
586 | #define DT_HP_NO_ENVVAR 0x00008 /* No env var */ |
---|
587 | #define DT_HP_BIND_NOW 0x00010 /* Bind now */ |
---|
588 | #define DT_HP_BIND_NONFATAL 0x00020 /* Bind non-fatal */ |
---|
589 | #define DT_HP_BIND_VERBOSE 0x00040 /* Bind verbose */ |
---|
590 | #define DT_HP_BIND_RESTRICTED 0x00080 /* Bind restricted */ |
---|
591 | #define DT_HP_BIND_SYMBOLIC 0x00100 /* Bind symbolic */ |
---|
592 | #define DT_HP_RPATH_FIRST 0x00200 /* RPATH first */ |
---|
593 | #define DT_HP_BIND_DEPTH_FIRST 0x00400 /* Bind depth-first */ |
---|
594 | #define DT_HP_GST 0x00800 /* Dld global sym table */ |
---|
595 | #define DT_HP_SHLIB_FIXED 0x01000 /* shared vtable support */ |
---|
596 | #define DT_HP_MERGE_SHLIB_SEG 0x02000 /* merge shlib data segs */ |
---|
597 | #define DT_HP_NODELETE 0x04000 /* never unload */ |
---|
598 | #define DT_HP_GROUP 0x08000 /* bind only within group */ |
---|
599 | #define DT_HP_PROTECT_LINKAGE_TABLE 0x10000 /* protected linkage table */ |
---|
600 | |
---|
601 | /* Program header extensions. */ |
---|
602 | #define PT_HP_TLS (PT_LOOS + 0x0) |
---|
603 | #define PT_HP_CORE_NONE (PT_LOOS + 0x1) |
---|
604 | #define PT_HP_CORE_VERSION (PT_LOOS + 0x2) |
---|
605 | #define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) |
---|
606 | #define PT_HP_CORE_COMM (PT_LOOS + 0x4) |
---|
607 | #define PT_HP_CORE_PROC (PT_LOOS + 0x5) |
---|
608 | #define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) |
---|
609 | #define PT_HP_CORE_STACK (PT_LOOS + 0x7) |
---|
610 | #define PT_HP_CORE_SHM (PT_LOOS + 0x8) |
---|
611 | #define PT_HP_CORE_MMF (PT_LOOS + 0x9) |
---|
612 | #define PT_HP_PARALLEL (PT_LOOS + 0x10) |
---|
613 | #define PT_HP_FASTBIND (PT_LOOS + 0x11) |
---|
614 | #define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) |
---|
615 | #define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) |
---|
616 | #define PT_HP_STACK (PT_LOOS + 0x14) |
---|
617 | #define PT_HP_CORE_UTSNAME (PT_LOOS + 0x15) |
---|
618 | |
---|
619 | /* Binding information. */ |
---|
620 | #define STB_HP_ALIAS (STB_LOOS + 0x0) |
---|
621 | |
---|
622 | /* Additional symbol types. */ |
---|
623 | #define STT_HP_OPAQUE (STT_LOOS + 0x1) |
---|
624 | #define STT_HP_STUB (STT_LOOS + 0x2) |
---|
625 | |
---|
626 | /* Note types. */ |
---|
627 | #define NT_HP_COMPILER 1 |
---|
628 | #define NT_HP_COPYRIGHT 2 |
---|
629 | #define NT_HP_VERSION 3 |
---|
630 | #define NT_HP_SRCFILE_INFO 4 |
---|
631 | #define NT_HP_LINKER 5 |
---|
632 | #define NT_HP_INSTRUMENTED 6 |
---|
633 | #define NT_HP_UX_OPTIONS 7 |
---|
634 | |
---|
635 | #endif /* _ELF_HPPA_H */ |
---|