Coverage Report

Created: 2025-06-24 06:45

/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 */