]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - include/elf/hppa.h
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / include / elf / hppa.h
CommitLineData
252b5132 1/* HPPA ELF support for BFD.
250d07de 2 Copyright (C) 1993-2021 Free Software Foundation, Inc.
252b5132 3
9b52905e 4 This file is part of BFD, the Binary File Descriptor library.
252b5132 5
9b52905e
NC
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
e4e42b45 8 the Free Software Foundation; either version 3 of the License, or
9b52905e 9 (at your option) any later version.
252b5132 10
9b52905e
NC
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.
252b5132 15
9b52905e
NC
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
e4e42b45
NC
18 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19 MA 02110-1301, USA. */
252b5132
RH
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
41ee1a61
JL
29/* Trap null address dereferences. */
30#define EF_PARISC_TRAPNIL 0x00010000
252b5132 31
41ee1a61
JL
32/* .PARISC.archext section is present. */
33#define EF_PARISC_EXT 0x00020000
252b5132 34
41ee1a61
JL
35/* Program expects little-endian mode. */
36#define EF_PARISC_LSB 0x00040000
252b5132 37
41ee1a61
JL
38/* Program expects wide mode. */
39#define EF_PARISC_WIDE 0x00080000
252b5132 40
41ee1a61
JL
41/* Do not allow kernel-assisted branch prediction. */
42#define EF_PARISC_NO_KABP 0x00100000
252b5132 43
41ee1a61
JL
44/* Allow lazy swap for dynamically allocated program segments. */
45#define EF_PARISC_LAZYSWAP 0x00400000
252b5132 46
41ee1a61
JL
47/* Architecture version */
48#define EF_PARISC_ARCH 0x0000ffff
49
50#define EFA_PARISC_1_0 0x020b
51#define EFA_PARISC_1_1 0x0210
52#define EFA_PARISC_2_0 0x0214
252b5132 53
41ee1a61
JL
54/* Special section indices. */
55/* A symbol that has been declared as a tentative definition in an ANSI C
56 compilation. */
1bce5d2c 57#define SHN_PARISC_ANSI_COMMON SHN_LORESERVE
252b5132 58
70fa6ef5 59/* A symbol that has been declared as a common block using the
41ee1a61 60 huge memory model. */
1bce5d2c 61#define SHN_PARISC_HUGE_COMMON (SHN_LORESERVE + 1)
252b5132 62
41ee1a61 63/* Processor specific section types. */
252b5132 64
41ee1a61
JL
65/* Section contains product specific extension bits. */
66#define SHT_PARISC_EXT 0x70000000
252b5132 67
41ee1a61
JL
68/* Section contains unwind table entries. */
69#define SHT_PARISC_UNWIND 0x70000001
252b5132 70
41ee1a61
JL
71/* Section contains debug information for optimized code. */
72#define SHT_PARISC_DOC 0x70000002
252b5132 73
41ee1a61
JL
74/* Section contains code annotations. */
75#define SHT_PARISC_ANNOT 0x70000003
252b5132 76
3c26c61a
DA
77/* DLKM special section. */
78#define SHT_PARISC_DLKM 0x70000004
79
41ee1a61
JL
80/* These are strictly for compatibility with the older elf32-hppa
81 implementation. Hopefully we can eliminate them in the future. */
252b5132 82/* Optional section holding argument location/relocation info. */
9b52905e 83#define SHT_PARISC_SYMEXTN SHT_LOPROC + 8
252b5132
RH
84
85/* Option section for linker stubs. */
9b52905e 86#define SHT_PARISC_STUBS SHT_LOPROC + 9
252b5132
RH
87
88/* Processor specific section flags. */
89
41ee1a61
JL
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
252b5132 95
41ee1a61
JL
96/* Section should go near GP. */
97#define SHF_PARISC_SHORT 0x20000000
252b5132 98
3c26c61a
DA
99/* Section is weak ordered. */
100#define SHF_PARISC_WEAKORDER 0x10000000
252b5132 101
41ee1a61
JL
102/* Identifies the entry point of a millicode routine. */
103#define STT_PARISC_MILLI 13
252b5132
RH
104
105/* ELF/HPPA relocation types */
106
41ee1a61 107/* Note: PA-ELF is defined to use only RELA relocations. */
c7d85a8d 108#include "elf/reloc-macros.h"
252b5132 109
45b18248 110START_RELOC_NUMBERS (elf_hppa_reloc_type)
e0e33839
AM
111RELOC_NUMBER (R_PARISC_NONE, 0) /* No reloc */
112
113/* Data / Inst. Format Relocation Expression */
114
115RELOC_NUMBER (R_PARISC_DIR32, 1)
116/* 32-bit word symbol + addend */
117
118RELOC_NUMBER (R_PARISC_DIR21L, 2)
119/* long immediate (7) LR(symbol, addend) */
120
121RELOC_NUMBER (R_PARISC_DIR17R, 3)
122/* branch external (19) RR(symbol, addend) */
123
124RELOC_NUMBER (R_PARISC_DIR17F, 4)
125/* branch external (19) symbol + addend */
126
127RELOC_NUMBER (R_PARISC_DIR14R, 6)
128/* load/store (1) RR(symbol, addend) */
129
47d89dba
AM
130RELOC_NUMBER (R_PARISC_DIR14F, 7)
131/* load/store (1) symbol, addend */
132
e0e33839
AM
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
de194d85 141 22 bits of the addend field are sign-extended to form the Addend.
e0e33839
AM
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
de98ed8b
AM
147RELOC_NUMBER (R_PARISC_PCREL12F, 8)
148/* op & branch (17) symbol - PC - 8 + addend */
149
e0e33839
AM
150RELOC_NUMBER (R_PARISC_PCREL32, 9)
151/* 32-bit word symbol - PC - 8 + addend */
152
153RELOC_NUMBER (R_PARISC_PCREL21L, 10)
154/* long immediate (7) L(symbol - PC - 8 + addend) */
155
156RELOC_NUMBER (R_PARISC_PCREL17R, 11)
157/* branch external (19) R(symbol - PC - 8 + addend) */
158
159RELOC_NUMBER (R_PARISC_PCREL17F, 12)
160/* branch (20) symbol - PC - 8 + addend */
161
162RELOC_NUMBER (R_PARISC_PCREL17C, 13)
163/* branch (20) symbol - PC - 8 + addend */
164
165RELOC_NUMBER (R_PARISC_PCREL14R, 14)
166/* load/store (1) R(symbol - PC - 8 + addend) */
167
168RELOC_NUMBER (R_PARISC_PCREL14F, 15)
169/* load/store (1) symbol - PC - 8 + addend */
170
171
172/* DP-relative relocation types. */
173RELOC_NUMBER (R_PARISC_DPREL21L, 18)
174/* long immediate (7) LR(symbol - GP, addend) */
175
176RELOC_NUMBER (R_PARISC_DPREL14WR, 19)
177/* load/store mod. comp. (2) RR(symbol - GP, addend) */
178
179RELOC_NUMBER (R_PARISC_DPREL14DR, 20)
180/* load/store doubleword (3) RR(symbol - GP, addend) */
181
182RELOC_NUMBER (R_PARISC_DPREL14R, 22)
183/* load/store (1) RR(symbol - GP, addend) */
184
185RELOC_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
195RELOC_NUMBER (R_PARISC_DLTREL21L, 26)
196/* long immediate (7) LR(symbol - GP, addend) */
197
198RELOC_NUMBER (R_PARISC_DLTREL14R, 30)
199/* load/store (1) RR(symbol - GP, addend) */
200
201RELOC_NUMBER (R_PARISC_DLTREL14F, 31)
202/* load/store (1) symbol - GP + addend */
203
204
205/* DLT indirect relocation types */
206RELOC_NUMBER (R_PARISC_DLTIND21L, 34)
207/* long immediate (7) L(ltoff(symbol + addend)) */
208
209RELOC_NUMBER (R_PARISC_DLTIND14R, 38)
210/* load/store (1) R(ltoff(symbol + addend)) */
211
212RELOC_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 */
217RELOC_NUMBER (R_PARISC_SETBASE, 40)
218/* none no reloc; base := sym */
219
220RELOC_NUMBER (R_PARISC_SECREL32, 41)
221/* 32-bit word symbol - SECT + addend */
222
223RELOC_NUMBER (R_PARISC_BASEREL21L, 42)
224/* long immediate (7) LR(symbol - base, addend) */
225
226RELOC_NUMBER (R_PARISC_BASEREL17R, 43)
227/* branch external (19) RR(symbol - base, addend) */
228
229RELOC_NUMBER (R_PARISC_BASEREL17F, 44)
230/* branch external (19) symbol - base + addend */
231
232RELOC_NUMBER (R_PARISC_BASEREL14R, 46)
233/* load/store (1) RR(symbol - base, addend) */
234
235RELOC_NUMBER (R_PARISC_BASEREL14F, 47)
236/* load/store (1) symbol - base, addend */
237
238
239/* Segment relative relocation types. */
240RELOC_NUMBER (R_PARISC_SEGBASE, 48)
241/* none no relocation; SB := sym */
242
243RELOC_NUMBER (R_PARISC_SEGREL32, 49)
de98ed8b 244/* 32-bit word symbol - SB + addend */
e0e33839
AM
245
246
247/* Offsets from the PLT. */
248RELOC_NUMBER (R_PARISC_PLTOFF21L, 50)
249/* long immediate (7) LR(pltoff(symbol), addend) */
250
251RELOC_NUMBER (R_PARISC_PLTOFF14R, 54)
252/* load/store (1) RR(pltoff(symbol), addend) */
253
254RELOC_NUMBER (R_PARISC_PLTOFF14F, 55)
255/* load/store (1) pltoff(symbol) + addend */
256
257
258RELOC_NUMBER (R_PARISC_LTOFF_FPTR32, 57)
259/* 32-bit word ltoff(fptr(symbol+addend)) */
260
261RELOC_NUMBER (R_PARISC_LTOFF_FPTR21L, 58)
262/* long immediate (7) L(ltoff(fptr(symbol+addend))) */
263
264RELOC_NUMBER (R_PARISC_LTOFF_FPTR14R, 62)
265/* load/store (1) R(ltoff(fptr(symbol+addend))) */
266
267
268RELOC_NUMBER (R_PARISC_FPTR64, 64)
269/* 64-bit doubleword fptr(symbol+addend) */
270
271
272/* Plabel relocation types. */
273RELOC_NUMBER (R_PARISC_PLABEL32, 65)
274/* 32-bit word fptr(symbol) */
275
276RELOC_NUMBER (R_PARISC_PLABEL21L, 66)
277/* long immediate (7) L(fptr(symbol)) */
278
279RELOC_NUMBER (R_PARISC_PLABEL14R, 70)
280/* load/store (1) R(fptr(symbol)) */
281
282
283/* PCREL relocations. */
284RELOC_NUMBER (R_PARISC_PCREL64, 72)
285/* 64-bit doubleword symbol - PC - 8 + addend */
286
287RELOC_NUMBER (R_PARISC_PCREL22C, 73)
288/* branch & link (21) symbol - PC - 8 + addend */
289
290RELOC_NUMBER (R_PARISC_PCREL22F, 74)
291/* branch & link (21) symbol - PC - 8 + addend */
292
293RELOC_NUMBER (R_PARISC_PCREL14WR, 75)
294/* load/store mod. comp. (2) R(symbol - PC - 8 + addend) */
295
296RELOC_NUMBER (R_PARISC_PCREL14DR, 76)
297/* load/store doubleword (3) R(symbol - PC - 8 + addend) */
298
299RELOC_NUMBER (R_PARISC_PCREL16F, 77)
300/* load/store (1) symbol - PC - 8 + addend */
301
302RELOC_NUMBER (R_PARISC_PCREL16WF, 78)
303/* load/store mod. comp. (2) symbol - PC - 8 + addend */
304
305RELOC_NUMBER (R_PARISC_PCREL16DF, 79)
306/* load/store doubleword (3) symbol - PC - 8 + addend */
307
308
309RELOC_NUMBER (R_PARISC_DIR64, 80)
310/* 64-bit doubleword symbol + addend */
311
e0e33839
AM
312RELOC_NUMBER (R_PARISC_DIR14WR, 83)
313/* load/store mod. comp. (2) RR(symbol, addend) */
314
315RELOC_NUMBER (R_PARISC_DIR14DR, 84)
316/* load/store doubleword (3) RR(symbol, addend) */
317
318RELOC_NUMBER (R_PARISC_DIR16F, 85)
319/* load/store (1) symbol + addend */
320
321RELOC_NUMBER (R_PARISC_DIR16WF, 86)
322/* load/store mod. comp. (2) symbol + addend */
323
324RELOC_NUMBER (R_PARISC_DIR16DF, 87)
325/* load/store doubleword (3) symbol + addend */
326
327RELOC_NUMBER (R_PARISC_GPREL64, 88)
328/* 64-bit doubleword symbol - GP + addend */
329
330RELOC_NUMBER (R_PARISC_DLTREL14WR, 91)
331/* load/store mod. comp. (2) RR(symbol - GP, addend) */
332
333RELOC_NUMBER (R_PARISC_DLTREL14DR, 92)
334/* load/store doubleword (3) RR(symbol - GP, addend) */
335
336RELOC_NUMBER (R_PARISC_GPREL16F, 93)
337/* load/store (1) symbol - GP + addend */
338
339RELOC_NUMBER (R_PARISC_GPREL16WF, 94)
340/* load/store mod. comp. (2) symbol - GP + addend */
341
342RELOC_NUMBER (R_PARISC_GPREL16DF, 95)
343/* load/store doubleword (3) symbol - GP + addend */
344
345
346RELOC_NUMBER (R_PARISC_LTOFF64, 96)
347/* 64-bit doubleword ltoff(symbol + addend) */
348
349RELOC_NUMBER (R_PARISC_DLTIND14WR, 99)
350/* load/store mod. comp. (2) R(ltoff(symbol + addend)) */
351
352RELOC_NUMBER (R_PARISC_DLTIND14DR, 100)
353/* load/store doubleword (3) R(ltoff(symbol + addend)) */
354
355RELOC_NUMBER (R_PARISC_LTOFF16F, 101)
356/* load/store (1) ltoff(symbol + addend) */
357
358RELOC_NUMBER (R_PARISC_LTOFF16WF, 102)
359/* load/store mod. comp. (2) ltoff(symbol + addend) */
360
361RELOC_NUMBER (R_PARISC_LTOFF16DF, 103)
362/* load/store doubleword (3) ltoff(symbol + addend) */
363
364
365RELOC_NUMBER (R_PARISC_SECREL64, 104)
366/* 64-bit doubleword symbol - SECT + addend */
367
368RELOC_NUMBER (R_PARISC_BASEREL14WR, 107)
369/* load/store mod. comp. (2) RR(symbol - base, addend) */
370
371RELOC_NUMBER (R_PARISC_BASEREL14DR, 108)
372/* load/store doubleword (3) RR(symbol - base, addend) */
373
374
375RELOC_NUMBER (R_PARISC_SEGREL64, 112)
376/* 64-bit doubleword symbol - SB + addend */
377
378RELOC_NUMBER (R_PARISC_PLTOFF14WR, 115)
379/* load/store mod. comp. (2) RR(pltoff(symbol), addend) */
380
381RELOC_NUMBER (R_PARISC_PLTOFF14DR, 116)
382/* load/store doubleword (3) RR(pltoff(symbol), addend) */
383
384RELOC_NUMBER (R_PARISC_PLTOFF16F, 117)
385/* load/store (1) pltoff(symbol) + addend */
386
387RELOC_NUMBER (R_PARISC_PLTOFF16WF, 118)
388/* load/store mod. comp. (2) pltoff(symbol) + addend */
389
390RELOC_NUMBER (R_PARISC_PLTOFF16DF, 119)
391/* load/store doubleword (3) pltoff(symbol) + addend */
392
393
394RELOC_NUMBER (R_PARISC_LTOFF_FPTR64, 120)
395/* 64-bit doubleword ltoff(fptr(symbol+addend)) */
396
397RELOC_NUMBER (R_PARISC_LTOFF_FPTR14WR, 123)
398/* load/store mod. comp. (2) R(ltoff(fptr(symbol+addend))) */
399
400RELOC_NUMBER (R_PARISC_LTOFF_FPTR14DR, 124)
401/* load/store doubleword (3) R(ltoff(fptr(symbol+addend))) */
402
403RELOC_NUMBER (R_PARISC_LTOFF_FPTR16F, 125)
404/* load/store (1) ltoff(fptr(symbol+addend)) */
405
406RELOC_NUMBER (R_PARISC_LTOFF_FPTR16WF, 126)
407/* load/store mod. comp. (2) ltoff(fptr(symbol+addend)) */
408
409RELOC_NUMBER (R_PARISC_LTOFF_FPTR16DF, 127)
410/* load/store doubleword (3) ltoff(fptr(symbol+addend)) */
411
412
413RELOC_NUMBER (R_PARISC_COPY, 128)
414/* data Dynamic relocations only */
415
416RELOC_NUMBER (R_PARISC_IPLT, 129)
417/* plt */
418
419RELOC_NUMBER (R_PARISC_EPLT, 130)
420/* plt */
421
422
423RELOC_NUMBER (R_PARISC_TPREL32, 153)
424/* 32-bit word symbol - TP + addend */
425
426RELOC_NUMBER (R_PARISC_TPREL21L, 154)
427/* long immediate (7) LR(symbol - TP, addend) */
428
429RELOC_NUMBER (R_PARISC_TPREL14R, 158)
430/* load/store (1) RR(symbol - TP, addend) */
431
432
433RELOC_NUMBER (R_PARISC_LTOFF_TP21L, 162)
434/* long immediate (7) L(ltoff(symbol - TP + addend)) */
435
436RELOC_NUMBER (R_PARISC_LTOFF_TP14R, 166)
437/* load/store (1) R(ltoff(symbol - TP + addend)) */
438
439RELOC_NUMBER (R_PARISC_LTOFF_TP14F, 167)
440/* load/store (1) ltoff(symbol - TP + addend) */
441
442
443RELOC_NUMBER (R_PARISC_TPREL64, 216)
444/* 64-bit word symbol - TP + addend */
445
446RELOC_NUMBER (R_PARISC_TPREL14WR, 219)
447/* load/store mod. comp. (2) RR(symbol - TP, addend) */
448
449RELOC_NUMBER (R_PARISC_TPREL14DR, 220)
450/* load/store doubleword (3) RR(symbol - TP, addend) */
451
452RELOC_NUMBER (R_PARISC_TPREL16F, 221)
453/* load/store (1) symbol - TP + addend */
454
455RELOC_NUMBER (R_PARISC_TPREL16WF, 222)
456/* load/store mod. comp. (2) symbol - TP + addend */
457
458RELOC_NUMBER (R_PARISC_TPREL16DF, 223)
459/* load/store doubleword (3) symbol - TP + addend */
460
461
462RELOC_NUMBER (R_PARISC_LTOFF_TP64, 224)
463/* 64-bit doubleword ltoff(symbol - TP + addend) */
464
465RELOC_NUMBER (R_PARISC_LTOFF_TP14WR, 227)
466/* load/store mod. comp. (2) R(ltoff(symbol - TP + addend)) */
467
468RELOC_NUMBER (R_PARISC_LTOFF_TP14DR, 228)
469/* load/store doubleword (3) R(ltoff(symbol - TP + addend)) */
470
471RELOC_NUMBER (R_PARISC_LTOFF_TP16F, 229)
472/* load/store (1) ltoff(symbol - TP + addend) */
473
474RELOC_NUMBER (R_PARISC_LTOFF_TP16WF, 230)
475/* load/store mod. comp. (2) ltoff(symbol - TP + addend) */
476
477RELOC_NUMBER (R_PARISC_LTOFF_TP16DF, 231)
478/* load/store doubleword (3) ltoff(symbol - TP + addend) */
479
de98ed8b
AM
480RELOC_NUMBER (R_PARISC_GNU_VTENTRY, 232)
481RELOC_NUMBER (R_PARISC_GNU_VTINHERIT, 233)
482
9b52905e
NC
483RELOC_NUMBER (R_PARISC_TLS_GD21L, 234)
484RELOC_NUMBER (R_PARISC_TLS_GD14R, 235)
485RELOC_NUMBER (R_PARISC_TLS_GDCALL, 236)
486RELOC_NUMBER (R_PARISC_TLS_LDM21L, 237)
487RELOC_NUMBER (R_PARISC_TLS_LDM14R, 238)
488RELOC_NUMBER (R_PARISC_TLS_LDMCALL, 239)
489RELOC_NUMBER (R_PARISC_TLS_LDO21L, 240)
490RELOC_NUMBER (R_PARISC_TLS_LDO14R, 241)
491RELOC_NUMBER (R_PARISC_TLS_DTPMOD32, 242)
492RELOC_NUMBER (R_PARISC_TLS_DTPMOD64, 243)
493RELOC_NUMBER (R_PARISC_TLS_DTPOFF32, 244)
494RELOC_NUMBER (R_PARISC_TLS_DTPOFF64, 245)
495
1b452ec6 496END_RELOC_NUMBERS (R_PARISC_UNIMPLEMENTED)
252b5132 497
9b52905e
NC
498#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L
499#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R
500#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L
501#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R
502#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32
503#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64
504
252b5132 505#ifndef RELOC_MACROS_GEN_FUNC
45b18248 506typedef enum elf_hppa_reloc_type elf_hppa_reloc_type;
252b5132
RH
507#endif
508
41ee1a61
JL
509#define PT_PARISC_ARCHEXT 0x70000000
510#define PT_PARISC_UNWIND 0x70000001
3c26c61a 511#define PT_PARISC_WEAKORDER 0x70000002
67762f6b 512
e14430ab
DA
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
67762f6b
DA
537/* Flag bits in p_flags of ElfXX_Phdr. */
538#define PF_HP_CODE 0x00040000
539#define PF_HP_MODIFY 0x00080000
cf911c2a
JL
540#define PF_HP_PAGE_SIZE 0x00100000
541#define PF_HP_FAR_SHARED 0x00200000
542#define PF_HP_NEAR_SHARED 0x00400000
67762f6b
DA
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
cf911c2a
JL
548#define PF_HP_SBP 0x08000000
549
70fa6ef5
JL
550\f
551/* Processor specific dynamic array tags. */
552
ffb34d9a
JL
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#define DT_HP_LOAD_MAP (OLD_DT_LOOS + 0x0)
557#define DT_HP_DLD_FLAGS (OLD_DT_LOOS + 0x1)
558#define DT_HP_DLD_HOOK (OLD_DT_LOOS + 0x2)
559#define DT_HP_UX10_INIT (OLD_DT_LOOS + 0x3)
560#define DT_HP_UX10_INITSZ (OLD_DT_LOOS + 0x4)
561#define DT_HP_PREINIT (OLD_DT_LOOS + 0x5)
562#define DT_HP_PREINITSZ (OLD_DT_LOOS + 0x6)
563#define DT_HP_NEEDED (OLD_DT_LOOS + 0x7)
564#define DT_HP_TIME_STAMP (OLD_DT_LOOS + 0x8)
565#define DT_HP_CHECKSUM (OLD_DT_LOOS + 0x9)
566#define DT_HP_GST_SIZE (OLD_DT_LOOS + 0xa)
567#define DT_HP_GST_VERSION (OLD_DT_LOOS + 0xb)
568#define DT_HP_GST_HASHVAL (OLD_DT_LOOS + 0xc)
67762f6b
DA
569#define DT_HP_EPLTREL (OLD_DT_LOOS + 0xd)
570#define DT_HP_EPLTRELSZ (OLD_DT_LOOS + 0xe)
571#define DT_HP_FILTERED (OLD_DT_LOOS + 0xf)
572#define DT_HP_FILTER_TLS (OLD_DT_LOOS + 0x10)
573#define DT_HP_COMPAT_FILTERED (OLD_DT_LOOS + 0x11)
574#define DT_HP_LAZYLOAD (OLD_DT_LOOS + 0x12)
575#define DT_HP_BIND_NOW_COUNT (OLD_DT_LOOS + 0x13)
576#define DT_PLT (OLD_DT_LOOS + 0x14)
577#define DT_PLT_SIZE (OLD_DT_LOOS + 0x15)
578#define DT_DLT (OLD_DT_LOOS + 0x16)
579#define DT_DLT_SIZE (OLD_DT_LOOS + 0x17)
70fa6ef5
JL
580
581/* Values for DT_HP_DLD_FLAGS. */
67762f6b
DA
582#define DT_HP_DEBUG_PRIVATE 0x00001 /* Map text private */
583#define DT_HP_DEBUG_CALLBACK 0x00002 /* Callback */
584#define DT_HP_DEBUG_CALLBACK_BOR 0x00004 /* BOR callback */
585#define DT_HP_NO_ENVVAR 0x00008 /* No env var */
586#define DT_HP_BIND_NOW 0x00010 /* Bind now */
587#define DT_HP_BIND_NONFATAL 0x00020 /* Bind non-fatal */
588#define DT_HP_BIND_VERBOSE 0x00040 /* Bind verbose */
589#define DT_HP_BIND_RESTRICTED 0x00080 /* Bind restricted */
590#define DT_HP_BIND_SYMBOLIC 0x00100 /* Bind symbolic */
591#define DT_HP_RPATH_FIRST 0x00200 /* RPATH first */
592#define DT_HP_BIND_DEPTH_FIRST 0x00400 /* Bind depth-first */
593#define DT_HP_GST 0x00800 /* Dld global sym table */
594#define DT_HP_SHLIB_FIXED 0x01000 /* shared vtable support */
595#define DT_HP_MERGE_SHLIB_SEG 0x02000 /* merge shlib data segs */
596#define DT_HP_NODELETE 0x04000 /* never unload */
597#define DT_HP_GROUP 0x08000 /* bind only within group */
598#define DT_HP_PROTECT_LINKAGE_TABLE 0x10000 /* protected linkage table */
70fa6ef5
JL
599
600/* Program header extensions. */
601#define PT_HP_TLS (PT_LOOS + 0x0)
602#define PT_HP_CORE_NONE (PT_LOOS + 0x1)
603#define PT_HP_CORE_VERSION (PT_LOOS + 0x2)
604#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3)
605#define PT_HP_CORE_COMM (PT_LOOS + 0x4)
606#define PT_HP_CORE_PROC (PT_LOOS + 0x5)
607#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6)
608#define PT_HP_CORE_STACK (PT_LOOS + 0x7)
609#define PT_HP_CORE_SHM (PT_LOOS + 0x8)
610#define PT_HP_CORE_MMF (PT_LOOS + 0x9)
611#define PT_HP_PARALLEL (PT_LOOS + 0x10)
612#define PT_HP_FASTBIND (PT_LOOS + 0x11)
67762f6b
DA
613#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12)
614#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13)
615#define PT_HP_STACK (PT_LOOS + 0x14)
616#define PT_HP_CORE_UTSNAME (PT_LOOS + 0x15)
70fa6ef5 617
e14430ab
DA
618/* Binding information. */
619#define STB_HP_ALIAS (STB_LOOS + 0x0)
620
97578bb0
JL
621/* Additional symbol types. */
622#define STT_HP_OPAQUE (STT_LOOS + 0x1)
623#define STT_HP_STUB (STT_LOOS + 0x2)
624
67762f6b
DA
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
252b5132 634#endif /* _ELF_HPPA_H */