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