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