168673Sobrien/* HPPA ELF support for BFD.
2218822Sdim   Copyright 1993, 1994, 1995, 1998, 1999, 2000, 2005, 2006
378828Sobrien   Free Software Foundation, Inc.
468673Sobrien
5218822Sdim   This file is part of BFD, the Binary File Descriptor library.
668673Sobrien
7218822Sdim   This program is free software; you can redistribute it and/or modify
8218822Sdim   it under the terms of the GNU General Public License as published by
9218822Sdim   the Free Software Foundation; either version 2 of the License, or
10218822Sdim   (at your option) any later version.
1168673Sobrien
12218822Sdim   This program is distributed in the hope that it will be useful,
13218822Sdim   but WITHOUT ANY WARRANTY; without even the implied warranty of
14218822Sdim   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15218822Sdim   GNU General Public License for more details.
1668673Sobrien
17218822Sdim   You should have received a copy of the GNU General Public License
18218822Sdim   along with this program; if not, write to the Free Software
19218822Sdim   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
2068673Sobrien
2168673Sobrien/* This file holds definitions specific to the HPPA ELF ABI.  Note
2268673Sobrien   that most of this is not actually implemented by BFD.  */
2368673Sobrien
2468673Sobrien#ifndef _ELF_HPPA_H
2568673Sobrien#define _ELF_HPPA_H
2668673Sobrien
2768673Sobrien/* Processor specific flags for the ELF header e_flags field.  */
2868673Sobrien
2968673Sobrien/* Trap null address dereferences.  */
3068673Sobrien#define EF_PARISC_TRAPNIL	0x00010000
3168673Sobrien
3268673Sobrien/* .PARISC.archext section is present.  */
3368673Sobrien#define EF_PARISC_EXT		0x00020000
3468673Sobrien
3568673Sobrien/* Program expects little-endian mode.  */
3668673Sobrien#define EF_PARISC_LSB		0x00040000
3768673Sobrien
3868673Sobrien/* Program expects wide mode.  */
3968673Sobrien#define EF_PARISC_WIDE		0x00080000
4068673Sobrien
4168673Sobrien/* Do not allow kernel-assisted branch prediction.  */
4268673Sobrien#define EF_PARISC_NO_KABP	0x00100000
4368673Sobrien
4468673Sobrien/* Allow lazy swap for dynamically allocated program segments.  */
4568673Sobrien#define EF_PARISC_LAZYSWAP	0x00400000
4668673Sobrien
4768673Sobrien/* Architecture version */
4868673Sobrien#define EF_PARISC_ARCH		0x0000ffff
4968673Sobrien
5068673Sobrien#define EFA_PARISC_1_0			0x020b
5168673Sobrien#define EFA_PARISC_1_1			0x0210
5268673Sobrien#define EFA_PARISC_2_0			0x0214
5368673Sobrien
5468673Sobrien/* Special section indices.  */
5568673Sobrien/* A symbol that has been declared as a tentative definition in an ANSI C
5668673Sobrien   compilation.  */
5768673Sobrien#define SHN_PARISC_ANSI_COMMON 	0xff00
5868673Sobrien
5968673Sobrien/* A symbol that has been declared as a common block using the
6068673Sobrien   huge memory model.  */
6168673Sobrien#define SHN_PARISC_HUGE_COMMON	0xff01
6268673Sobrien
6368673Sobrien/* Processor specific section types.  */
6468673Sobrien
6568673Sobrien/* Section contains product specific extension bits.  */
6668673Sobrien#define SHT_PARISC_EXT		0x70000000
6768673Sobrien
6868673Sobrien/* Section contains unwind table entries.  */
6968673Sobrien#define SHT_PARISC_UNWIND	0x70000001
7068673Sobrien
7168673Sobrien/* Section contains debug information for optimized code.  */
7268673Sobrien#define SHT_PARISC_DOC		0x70000002
7368673Sobrien
7468673Sobrien/* Section contains code annotations.  */
7568673Sobrien#define SHT_PARISC_ANNOT	0x70000003
7668673Sobrien
77218822Sdim/* DLKM special section.  */
78218822Sdim#define SHT_PARISC_DLKM		0x70000004
79218822Sdim
8068673Sobrien/* These are strictly for compatibility with the older elf32-hppa
8168673Sobrien   implementation.  Hopefully we can eliminate them in the future.  */
8268673Sobrien/* Optional section holding argument location/relocation info.  */
83218822Sdim#define SHT_PARISC_SYMEXTN    SHT_LOPROC + 8
8468673Sobrien
8568673Sobrien/* Option section for linker stubs.  */
86218822Sdim#define SHT_PARISC_STUBS      SHT_LOPROC + 9
8768673Sobrien
8868673Sobrien/* Processor specific section flags.  */
8968673Sobrien
9068673Sobrien/* Section contains code compiled for static branch prediction.  */
9168673Sobrien#define SHF_PARISC_SBP		0x80000000
9268673Sobrien
9368673Sobrien/* Section should be allocated from from GP.  */
9468673Sobrien#define SHF_PARISC_HUGE		0x40000000
9568673Sobrien
9668673Sobrien/* Section should go near GP.  */
9768673Sobrien#define SHF_PARISC_SHORT	0x20000000
9868673Sobrien
99218822Sdim/* Section is weak ordered.  */
100218822Sdim#define SHF_PARISC_WEAKORDER	0x10000000
10168673Sobrien
10268673Sobrien/* Identifies the entry point of a millicode routine.  */
10368673Sobrien#define STT_PARISC_MILLI	13
10468673Sobrien
10568673Sobrien/* ELF/HPPA relocation types */
10668673Sobrien
10768673Sobrien/* Note: PA-ELF is defined to use only RELA relocations.  */
10868673Sobrien#include "elf/reloc-macros.h"
10968673Sobrien
11068673SobrienSTART_RELOC_NUMBERS (elf_hppa_reloc_type)
11177298SobrienRELOC_NUMBER (R_PARISC_NONE,	         0) /* No reloc */
11268673Sobrien
11377298Sobrien/*		Data / Inst. Format	   Relocation Expression	  */
11468673Sobrien
11577298SobrienRELOC_NUMBER (R_PARISC_DIR32,	   	 1)
11677298Sobrien/*		32-bit word            	   symbol + addend    		  */
11768673Sobrien
11877298SobrienRELOC_NUMBER (R_PARISC_DIR21L,	   	 2)
11977298Sobrien/*		long immediate (7)	   LR(symbol, addend) 		  */
12068673Sobrien
12177298SobrienRELOC_NUMBER (R_PARISC_DIR17R,	   	 3)
12277298Sobrien/*		branch external (19)	   RR(symbol, addend) 		  */
12368673Sobrien
12477298SobrienRELOC_NUMBER (R_PARISC_DIR17F,	   	 4)
12577298Sobrien/*		branch external (19)	   symbol + addend    		  */
12668673Sobrien
12777298SobrienRELOC_NUMBER (R_PARISC_DIR14R,	   	 6)
12877298Sobrien/*		load/store (1)		   RR(symbol, addend) 		  */
12968673Sobrien
13077298SobrienRELOC_NUMBER (R_PARISC_DIR14F,	   	 7)
13177298Sobrien/*		load/store (1)		   symbol, addend 		  */
13268673Sobrien
13377298Sobrien/* PC-relative relocation types
13477298Sobrien   Typically used for calls.
13577298Sobrien   Note PCREL17C and PCREL17F differ only in overflow handling.
13677298Sobrien   PCREL17C never reports a relocation error.
13768673Sobrien
13877298Sobrien   When supporting argument relocations, function calls must be
13977298Sobrien   accompanied by parameter relocation information.  This information is
14077298Sobrien   carried in the ten high-order bits of the addend field.  The remaining
14177298Sobrien   22 bits of of the addend field are sign-extended to form the Addend.
14268673Sobrien
14377298Sobrien   Note the code to build argument relocations depends on the
14477298Sobrien   addend being zero.  A consequence of this limitation is GAS
14577298Sobrien   can not perform relocation reductions for function symbols.  */
14668673Sobrien
14777298SobrienRELOC_NUMBER (R_PARISC_PCREL12F,  	 8)
14877298Sobrien/*		op & branch (17)	   symbol - PC - 8 + addend    	  */
14968673Sobrien
15077298SobrienRELOC_NUMBER (R_PARISC_PCREL32,   	 9)
15177298Sobrien/*		32-bit word		   symbol - PC - 8 + addend    	  */
15268673Sobrien
15377298SobrienRELOC_NUMBER (R_PARISC_PCREL21L,  	10)
15477298Sobrien/*		long immediate (7)	   L(symbol - PC - 8 + addend) 	  */
15568673Sobrien
15677298SobrienRELOC_NUMBER (R_PARISC_PCREL17R,  	11)
15777298Sobrien/*		branch external (19)	   R(symbol - PC - 8 + addend) 	  */
15868673Sobrien
15977298SobrienRELOC_NUMBER (R_PARISC_PCREL17F,  	12)
16077298Sobrien/*		branch (20)		   symbol - PC - 8 + addend    	  */
16168673Sobrien
16277298SobrienRELOC_NUMBER (R_PARISC_PCREL17C,  	13)
16377298Sobrien/*		branch (20)		   symbol - PC - 8 + addend    	  */
16468673Sobrien
16577298SobrienRELOC_NUMBER (R_PARISC_PCREL14R,  	14)
16677298Sobrien/*		load/store (1)		   R(symbol - PC - 8 + addend) 	  */
16768673Sobrien
16877298SobrienRELOC_NUMBER (R_PARISC_PCREL14F,  	15)
16977298Sobrien/*		load/store (1)             symbol - PC - 8 + addend    	  */
17068673Sobrien
17168673Sobrien
17277298Sobrien/* DP-relative relocation types.  */
17377298SobrienRELOC_NUMBER (R_PARISC_DPREL21L,  	18)
17477298Sobrien/*		long immediate (7)         LR(symbol - GP, addend)  	  */
17568673Sobrien
17677298SobrienRELOC_NUMBER (R_PARISC_DPREL14WR, 	19)
17777298Sobrien/*		load/store mod. comp. (2)  RR(symbol - GP, addend)  	  */
17868673Sobrien
17977298SobrienRELOC_NUMBER (R_PARISC_DPREL14DR, 	20)
18077298Sobrien/*		load/store doubleword (3)  RR(symbol - GP, addend)  	  */
18168673Sobrien
18277298SobrienRELOC_NUMBER (R_PARISC_DPREL14R,  	22)
18377298Sobrien/*		load/store (1)             RR(symbol - GP, addend)  	  */
18468673Sobrien
18577298SobrienRELOC_NUMBER (R_PARISC_DPREL14F,  	23)
18677298Sobrien/*		load/store (1)             symbol - GP + addend     	  */
18768673Sobrien
18868673Sobrien
18977298Sobrien/* Data linkage table (DLT) relocation types
19068673Sobrien
19177298Sobrien   SOM DLT_REL fixup requests are used to for static data references
19277298Sobrien   from position-independent code within shared libraries.  They are
19377298Sobrien   similar to the GOT relocation types in some SVR4 implementations.  */
19468673Sobrien
19577298SobrienRELOC_NUMBER (R_PARISC_DLTREL21L,     	26)
19677298Sobrien/*		long immediate (7)         LR(symbol - GP, addend) 	  */
19768673Sobrien
19877298SobrienRELOC_NUMBER (R_PARISC_DLTREL14R,     	30)
19977298Sobrien/*		load/store (1)             RR(symbol - GP, addend) 	  */
20068673Sobrien
20177298SobrienRELOC_NUMBER (R_PARISC_DLTREL14F,     	31)
20277298Sobrien/*		load/store (1)             symbol - GP + addend    	  */
20368673Sobrien
20468673Sobrien
20577298Sobrien/* DLT indirect relocation types  */
20677298SobrienRELOC_NUMBER (R_PARISC_DLTIND21L,     	34)
20777298Sobrien/*		long immediate (7)         L(ltoff(symbol + addend)) 	  */
20868673Sobrien
20977298SobrienRELOC_NUMBER (R_PARISC_DLTIND14R,     	38)
21077298Sobrien/*		load/store (1)             R(ltoff(symbol + addend)) 	  */
21168673Sobrien
21277298SobrienRELOC_NUMBER (R_PARISC_DLTIND14F,     	39)
21377298Sobrien/*		load/store (1)             ltoff(symbol + addend)    	  */
21468673Sobrien
21568673Sobrien
21677298Sobrien/* Base relative relocation types.  Ugh.  These imply lots of state */
21777298SobrienRELOC_NUMBER (R_PARISC_SETBASE,       	40)
21877298Sobrien/*		none                       no reloc; base := sym     	  */
21977298Sobrien
22077298SobrienRELOC_NUMBER (R_PARISC_SECREL32,      	41)
22177298Sobrien/*		32-bit word                symbol - SECT + addend    	  */
22277298Sobrien
22377298SobrienRELOC_NUMBER (R_PARISC_BASEREL21L,    	42)
22477298Sobrien/*		long immediate (7)         LR(symbol - base, addend) 	  */
22577298Sobrien
22677298SobrienRELOC_NUMBER (R_PARISC_BASEREL17R,    	43)
22777298Sobrien/*		branch external (19)       RR(symbol - base, addend) 	  */
22877298Sobrien
22977298SobrienRELOC_NUMBER (R_PARISC_BASEREL17F,    	44)
23077298Sobrien/*		branch external (19)       symbol - base + addend    	  */
23177298Sobrien
23277298SobrienRELOC_NUMBER (R_PARISC_BASEREL14R,    	46)
23377298Sobrien/*		load/store (1)             RR(symbol - base, addend) 	  */
23477298Sobrien
23577298SobrienRELOC_NUMBER (R_PARISC_BASEREL14F,    	47)
23677298Sobrien/*		load/store (1)             symbol - base, addend     	  */
23777298Sobrien
23877298Sobrien
23977298Sobrien/* Segment relative relocation types.  */
24077298SobrienRELOC_NUMBER (R_PARISC_SEGBASE,       	48)
24177298Sobrien/*		none                       no relocation; SB := sym  	  */
24277298Sobrien
24377298SobrienRELOC_NUMBER (R_PARISC_SEGREL32,      	49)
24477298Sobrien/*		32-bit word                symbol - SB + addend 	  */
24577298Sobrien
24677298Sobrien
24777298Sobrien/* Offsets from the PLT.  */
24877298SobrienRELOC_NUMBER (R_PARISC_PLTOFF21L,     	50)
24977298Sobrien/*		long immediate (7)         LR(pltoff(symbol), addend) 	  */
25077298Sobrien
25177298SobrienRELOC_NUMBER (R_PARISC_PLTOFF14R,     	54)
25277298Sobrien/*		load/store (1)             RR(pltoff(symbol), addend) 	  */
25377298Sobrien
25477298SobrienRELOC_NUMBER (R_PARISC_PLTOFF14F,     	55)
25577298Sobrien/*		load/store (1)             pltoff(symbol) + addend    	  */
25677298Sobrien
25777298Sobrien
25877298SobrienRELOC_NUMBER (R_PARISC_LTOFF_FPTR32,  	57)
25977298Sobrien/*		32-bit word                ltoff(fptr(symbol+addend))     */
26077298Sobrien
26177298SobrienRELOC_NUMBER (R_PARISC_LTOFF_FPTR21L, 	58)
26277298Sobrien/*		long immediate (7)         L(ltoff(fptr(symbol+addend)))  */
26377298Sobrien
26477298SobrienRELOC_NUMBER (R_PARISC_LTOFF_FPTR14R, 	62)
26577298Sobrien/*		load/store (1)             R(ltoff(fptr(symbol+addend)))  */
26677298Sobrien
26777298Sobrien
26877298SobrienRELOC_NUMBER (R_PARISC_FPTR64,        	64)
26977298Sobrien/*		64-bit doubleword          fptr(symbol+addend) 		  */
27077298Sobrien
27177298Sobrien
27277298Sobrien/* Plabel relocation types.  */
27377298SobrienRELOC_NUMBER (R_PARISC_PLABEL32,      	65)
27477298Sobrien/*		32-bit word	  	   fptr(symbol) 		  */
27577298Sobrien
27677298SobrienRELOC_NUMBER (R_PARISC_PLABEL21L,     	66)
27777298Sobrien/*		long immediate (7)         L(fptr(symbol))		  */
27877298Sobrien
27977298SobrienRELOC_NUMBER (R_PARISC_PLABEL14R,     	70)
28077298Sobrien/*		load/store (1)             R(fptr(symbol))		  */
28177298Sobrien
28277298Sobrien
28377298Sobrien/* PCREL relocations.  */
28477298SobrienRELOC_NUMBER (R_PARISC_PCREL64,       	72)
28577298Sobrien/*		64-bit doubleword          symbol - PC - 8 + addend       */
28677298Sobrien
28777298SobrienRELOC_NUMBER (R_PARISC_PCREL22C,      	73)
28877298Sobrien/*		branch & link (21)         symbol - PC - 8 + addend       */
28977298Sobrien
29077298SobrienRELOC_NUMBER (R_PARISC_PCREL22F,      	74)
29177298Sobrien/*		branch & link (21)         symbol - PC - 8 + addend       */
29277298Sobrien
29377298SobrienRELOC_NUMBER (R_PARISC_PCREL14WR,     	75)
29477298Sobrien/*		load/store mod. comp. (2)  R(symbol - PC - 8 + addend)    */
29577298Sobrien
29677298SobrienRELOC_NUMBER (R_PARISC_PCREL14DR,     	76)
29777298Sobrien/*		load/store doubleword (3)  R(symbol - PC - 8 + addend)    */
29877298Sobrien
29977298SobrienRELOC_NUMBER (R_PARISC_PCREL16F,      	77)
30077298Sobrien/*		load/store (1)             symbol - PC - 8 + addend       */
30177298Sobrien
30277298SobrienRELOC_NUMBER (R_PARISC_PCREL16WF,     	78)
30377298Sobrien/*		load/store mod. comp. (2)  symbol - PC - 8 + addend       */
30477298Sobrien
30577298SobrienRELOC_NUMBER (R_PARISC_PCREL16DF,     	79)
30677298Sobrien/*		load/store doubleword (3)  symbol - PC - 8 + addend       */
30777298Sobrien
30877298Sobrien
30977298SobrienRELOC_NUMBER (R_PARISC_DIR64,         	80)
31077298Sobrien/*		64-bit doubleword          symbol + addend    		  */
31177298Sobrien
31277298SobrienRELOC_NUMBER (R_PARISC_DIR14WR,       	83)
31377298Sobrien/*		load/store mod. comp. (2)  RR(symbol, addend) 		  */
31477298Sobrien
31577298SobrienRELOC_NUMBER (R_PARISC_DIR14DR,       	84)
31677298Sobrien/*		load/store doubleword (3)  RR(symbol, addend) 		  */
31777298Sobrien
31877298SobrienRELOC_NUMBER (R_PARISC_DIR16F,        	85)
31977298Sobrien/*		load/store (1)             symbol + addend    		  */
32077298Sobrien
32177298SobrienRELOC_NUMBER (R_PARISC_DIR16WF,       	86)
32277298Sobrien/*		load/store mod. comp. (2)  symbol + addend    		  */
32377298Sobrien
32477298SobrienRELOC_NUMBER (R_PARISC_DIR16DF,       	87)
32577298Sobrien/*		load/store doubleword (3)  symbol + addend    		  */
32677298Sobrien
32777298SobrienRELOC_NUMBER (R_PARISC_GPREL64,       	88)
32877298Sobrien/*		64-bit doubleword          symbol - GP + addend 	  */
32977298Sobrien
33077298SobrienRELOC_NUMBER (R_PARISC_DLTREL14WR,    	91)
33177298Sobrien/*		load/store mod. comp. (2)  RR(symbol - GP, addend) 	  */
33277298Sobrien
33377298SobrienRELOC_NUMBER (R_PARISC_DLTREL14DR,    	92)
33477298Sobrien/*		load/store doubleword (3)  RR(symbol - GP, addend) 	  */
33577298Sobrien
33677298SobrienRELOC_NUMBER (R_PARISC_GPREL16F,      	93)
33777298Sobrien/*		load/store (1)             symbol - GP + addend    	  */
33877298Sobrien
33977298SobrienRELOC_NUMBER (R_PARISC_GPREL16WF,     	94)
34077298Sobrien/*		load/store mod. comp. (2)  symbol - GP + addend    	  */
34177298Sobrien
34277298SobrienRELOC_NUMBER (R_PARISC_GPREL16DF,     	95)
34377298Sobrien/*		load/store doubleword (3)  symbol - GP + addend    	  */
34477298Sobrien
34577298Sobrien
34677298SobrienRELOC_NUMBER (R_PARISC_LTOFF64,      	96)
34777298Sobrien/*		64-bit doubleword          ltoff(symbol + addend)    	  */
34877298Sobrien
34977298SobrienRELOC_NUMBER (R_PARISC_DLTIND14WR,   	99)
35077298Sobrien/*		load/store mod. comp. (2)  R(ltoff(symbol + addend)) 	  */
35177298Sobrien
35277298SobrienRELOC_NUMBER (R_PARISC_DLTIND14DR,     100)
35377298Sobrien/*		load/store doubleword (3)  R(ltoff(symbol + addend)) 	  */
35477298Sobrien
35577298SobrienRELOC_NUMBER (R_PARISC_LTOFF16F,       101)
35677298Sobrien/*		load/store (1)             ltoff(symbol + addend)    	  */
35777298Sobrien
35877298SobrienRELOC_NUMBER (R_PARISC_LTOFF16WF,      102)
35977298Sobrien/*		load/store mod. comp. (2)  ltoff(symbol + addend)    	  */
36077298Sobrien
36177298SobrienRELOC_NUMBER (R_PARISC_LTOFF16DF,      103)
36277298Sobrien/*		load/store doubleword (3)  ltoff(symbol + addend)    	  */
36377298Sobrien
36477298Sobrien
36577298SobrienRELOC_NUMBER (R_PARISC_SECREL64,       104)
36677298Sobrien/*		64-bit doubleword          symbol - SECT + addend 	  */
36777298Sobrien
36877298SobrienRELOC_NUMBER (R_PARISC_BASEREL14WR,    107)
36977298Sobrien/*		load/store mod. comp. (2)  RR(symbol - base, addend) 	  */
37077298Sobrien
37177298SobrienRELOC_NUMBER (R_PARISC_BASEREL14DR,    108)
37277298Sobrien/*		load/store doubleword (3)  RR(symbol - base, addend) 	  */
37377298Sobrien
37477298Sobrien
37577298SobrienRELOC_NUMBER (R_PARISC_SEGREL64,       112)
37677298Sobrien/*		64-bit doubleword          symbol - SB + addend 	  */
37777298Sobrien
37877298SobrienRELOC_NUMBER (R_PARISC_PLTOFF14WR,     115)
37977298Sobrien/*		load/store mod. comp. (2)  RR(pltoff(symbol), addend) 	  */
38077298Sobrien
38177298SobrienRELOC_NUMBER (R_PARISC_PLTOFF14DR,     116)
38277298Sobrien/*		load/store doubleword (3)  RR(pltoff(symbol), addend) 	  */
38377298Sobrien
38477298SobrienRELOC_NUMBER (R_PARISC_PLTOFF16F,      117)
38577298Sobrien/*		load/store (1)             pltoff(symbol) + addend    	  */
38677298Sobrien
38777298SobrienRELOC_NUMBER (R_PARISC_PLTOFF16WF,     118)
38877298Sobrien/*		load/store mod. comp. (2)  pltoff(symbol) + addend    	  */
38977298Sobrien
39077298SobrienRELOC_NUMBER (R_PARISC_PLTOFF16DF,     119)
39177298Sobrien/*		load/store doubleword (3)  pltoff(symbol) + addend    	  */
39277298Sobrien
39377298Sobrien
39477298SobrienRELOC_NUMBER (R_PARISC_LTOFF_FPTR64,   120)
39577298Sobrien/*		64-bit doubleword          ltoff(fptr(symbol+addend))     */
39677298Sobrien
39777298SobrienRELOC_NUMBER (R_PARISC_LTOFF_FPTR14WR, 123)
39877298Sobrien/*		load/store mod. comp. (2)  R(ltoff(fptr(symbol+addend)))  */
39977298Sobrien
40077298SobrienRELOC_NUMBER (R_PARISC_LTOFF_FPTR14DR, 124)
40177298Sobrien/*		load/store doubleword (3)  R(ltoff(fptr(symbol+addend)))  */
40277298Sobrien
40377298SobrienRELOC_NUMBER (R_PARISC_LTOFF_FPTR16F,  125)
40477298Sobrien/*		load/store (1)             ltoff(fptr(symbol+addend))     */
40577298Sobrien
40677298SobrienRELOC_NUMBER (R_PARISC_LTOFF_FPTR16WF, 126)
40777298Sobrien/*		load/store mod. comp. (2)  ltoff(fptr(symbol+addend))     */
40877298Sobrien
40977298SobrienRELOC_NUMBER (R_PARISC_LTOFF_FPTR16DF, 127)
41077298Sobrien/*		load/store doubleword (3)  ltoff(fptr(symbol+addend))     */
41177298Sobrien
41277298Sobrien
41377298SobrienRELOC_NUMBER (R_PARISC_COPY, 	       128)
41477298Sobrien/*		data                       Dynamic relocations only 	  */
41577298Sobrien
41677298SobrienRELOC_NUMBER (R_PARISC_IPLT, 	       129)
41777298Sobrien/*		plt                                                 	  */
41877298Sobrien
41977298SobrienRELOC_NUMBER (R_PARISC_EPLT, 	       130)
42077298Sobrien/*		plt                                                 	  */
42177298Sobrien
42277298Sobrien
42377298SobrienRELOC_NUMBER (R_PARISC_TPREL32,        153)
42477298Sobrien/*		32-bit word                symbol - TP + addend    	  */
42577298Sobrien
42677298SobrienRELOC_NUMBER (R_PARISC_TPREL21L,       154)
42777298Sobrien/*		long immediate (7)         LR(symbol - TP, addend) 	  */
42877298Sobrien
42977298SobrienRELOC_NUMBER (R_PARISC_TPREL14R,       158)
43077298Sobrien/*		load/store (1)             RR(symbol - TP, addend) 	  */
43177298Sobrien
43277298Sobrien
43377298SobrienRELOC_NUMBER (R_PARISC_LTOFF_TP21L,    162)
43477298Sobrien/*		long immediate (7)         L(ltoff(symbol - TP + addend)) */
43577298Sobrien
43677298SobrienRELOC_NUMBER (R_PARISC_LTOFF_TP14R,    166)
43777298Sobrien/*		load/store (1)             R(ltoff(symbol - TP + addend)) */
43877298Sobrien
43977298SobrienRELOC_NUMBER (R_PARISC_LTOFF_TP14F,    167)
44077298Sobrien/*		load/store (1)             ltoff(symbol - TP + addend)    */
44177298Sobrien
44277298Sobrien
44377298SobrienRELOC_NUMBER (R_PARISC_TPREL64,        216)
44477298Sobrien/*		64-bit word                symbol - TP + addend        	  */
44577298Sobrien
44677298SobrienRELOC_NUMBER (R_PARISC_TPREL14WR,      219)
44777298Sobrien/*		load/store mod. comp. (2)  RR(symbol - TP, addend)     	  */
44877298Sobrien
44977298SobrienRELOC_NUMBER (R_PARISC_TPREL14DR,      220)
45077298Sobrien/*		load/store doubleword (3)  RR(symbol - TP, addend)     	  */
45177298Sobrien
45277298SobrienRELOC_NUMBER (R_PARISC_TPREL16F,       221)
45377298Sobrien/*		load/store (1)             symbol - TP + addend        	  */
45477298Sobrien
45577298SobrienRELOC_NUMBER (R_PARISC_TPREL16WF,      222)
45677298Sobrien/*		load/store mod. comp. (2)  symbol - TP + addend        	  */
45777298Sobrien
45877298SobrienRELOC_NUMBER (R_PARISC_TPREL16DF,      223)
45977298Sobrien/*		load/store doubleword (3)  symbol - TP + addend        	  */
46077298Sobrien
46177298Sobrien
46277298SobrienRELOC_NUMBER (R_PARISC_LTOFF_TP64,     224)
46377298Sobrien/*		64-bit doubleword          ltoff(symbol - TP + addend)    */
46477298Sobrien
46577298SobrienRELOC_NUMBER (R_PARISC_LTOFF_TP14WR,   227)
46677298Sobrien/*		load/store mod. comp. (2)  R(ltoff(symbol - TP + addend)) */
46777298Sobrien
46877298SobrienRELOC_NUMBER (R_PARISC_LTOFF_TP14DR,   228)
46977298Sobrien/*		load/store doubleword (3)  R(ltoff(symbol - TP + addend)) */
47077298Sobrien
47177298SobrienRELOC_NUMBER (R_PARISC_LTOFF_TP16F,    229)
47277298Sobrien/*		load/store (1)             ltoff(symbol - TP + addend)    */
47377298Sobrien
47477298SobrienRELOC_NUMBER (R_PARISC_LTOFF_TP16WF,   230)
47577298Sobrien/*		load/store mod. comp. (2)  ltoff(symbol - TP + addend)    */
47677298Sobrien
47777298SobrienRELOC_NUMBER (R_PARISC_LTOFF_TP16DF,   231)
47877298Sobrien/*		load/store doubleword (3)  ltoff(symbol - TP + addend)    */
47977298Sobrien
48077298SobrienRELOC_NUMBER (R_PARISC_GNU_VTENTRY,    232)
48177298SobrienRELOC_NUMBER (R_PARISC_GNU_VTINHERIT,  233)
48277298Sobrien
483218822SdimRELOC_NUMBER (R_PARISC_TLS_GD21L,      234)
484218822SdimRELOC_NUMBER (R_PARISC_TLS_GD14R,      235)
485218822SdimRELOC_NUMBER (R_PARISC_TLS_GDCALL,     236)
486218822SdimRELOC_NUMBER (R_PARISC_TLS_LDM21L,     237)
487218822SdimRELOC_NUMBER (R_PARISC_TLS_LDM14R,     238)
488218822SdimRELOC_NUMBER (R_PARISC_TLS_LDMCALL,    239)
489218822SdimRELOC_NUMBER (R_PARISC_TLS_LDO21L,     240)
490218822SdimRELOC_NUMBER (R_PARISC_TLS_LDO14R,     241)
491218822SdimRELOC_NUMBER (R_PARISC_TLS_DTPMOD32,   242)
492218822SdimRELOC_NUMBER (R_PARISC_TLS_DTPMOD64,   243)
493218822SdimRELOC_NUMBER (R_PARISC_TLS_DTPOFF32,   244)
494218822SdimRELOC_NUMBER (R_PARISC_TLS_DTPOFF64,   245)
495218822Sdim
49677298SobrienEND_RELOC_NUMBERS (R_PARISC_UNIMPLEMENTED)
49777298Sobrien
498218822Sdim#define R_PARISC_TLS_LE21L     R_PARISC_TPREL21L
499218822Sdim#define R_PARISC_TLS_LE14R     R_PARISC_TPREL14R
500218822Sdim#define R_PARISC_TLS_IE21L     R_PARISC_LTOFF_TP21L
501218822Sdim#define R_PARISC_TLS_IE14R     R_PARISC_LTOFF_TP14R
502218822Sdim#define R_PARISC_TLS_TPREL32   R_PARISC_TPREL32
503218822Sdim#define R_PARISC_TLS_TPREL64   R_PARISC_TPREL64
504218822Sdim
50568673Sobrien#ifndef RELOC_MACROS_GEN_FUNC
50668673Sobrientypedef enum elf_hppa_reloc_type elf_hppa_reloc_type;
50768673Sobrien#endif
50868673Sobrien
50968673Sobrien#define PT_PARISC_ARCHEXT	0x70000000
51068673Sobrien#define PT_PARISC_UNWIND	0x70000001
511218822Sdim#define PT_PARISC_WEAKORDER	0x70000002
512218822Sdim
513218822Sdim/* Flag bits in sh_flags of ElfXX_Shdr.  */
514218822Sdim#define SHF_HP_TLS              0x01000000
515218822Sdim#define SHF_HP_NEAR_SHARED      0x02000000
516218822Sdim#define SHF_HP_FAR_SHARED       0x04000000
517218822Sdim#define SHF_HP_COMDAT           0x08000000
518218822Sdim#define SHF_HP_CONST            0x00800000
519218822Sdim
520218822Sdim/* Reserved section header indices.  */
521218822Sdim#define SHN_TLS_COMMON          (SHN_LOOS + 0x0)
522218822Sdim#define SHN_NS_COMMON           (SHN_LOOS + 0x1)
523218822Sdim#define SHN_FS_COMMON           (SHN_LOOS + 0x2)
524218822Sdim#define SHN_NS_UNDEF            (SHN_LOOS + 0x3)
525218822Sdim#define SHN_FS_UNDEF            (SHN_LOOS + 0x4)
526218822Sdim#define SHN_HP_EXTERN           (SHN_LOOS + 0x5)
527218822Sdim#define SHN_HP_EXTHINT          (SHN_LOOS + 0x6)
528218822Sdim#define SHN_HP_UNDEF_BIND_IMM   (SHN_LOOS + 0x7)
529218822Sdim
530218822Sdim/* Values of sh_type in ElfXX_Shdr.  */
531218822Sdim#define SHT_HP_OVLBITS  (SHT_LOOS + 0x0)
532218822Sdim#define SHT_HP_DLKM     (SHT_LOOS + 0x1)
533218822Sdim#define SHT_HP_COMDAT   (SHT_LOOS + 0x2)
534218822Sdim#define SHT_HP_OBJDICT  (SHT_LOOS + 0x3)
535218822Sdim#define SHT_HP_ANNOT    (SHT_LOOS + 0x4)
536218822Sdim
537218822Sdim/* Flag bits in p_flags of ElfXX_Phdr.  */
538218822Sdim#define PF_HP_CODE		0x00040000
539218822Sdim#define PF_HP_MODIFY		0x00080000
54068673Sobrien#define PF_HP_PAGE_SIZE		0x00100000
54168673Sobrien#define PF_HP_FAR_SHARED	0x00200000
54268673Sobrien#define PF_HP_NEAR_SHARED	0x00400000
543218822Sdim#define PF_HP_LAZYSWAP		0x00800000
544218822Sdim#define PF_HP_CODE_DEPR		0x01000000
545218822Sdim#define PF_HP_MODIFY_DEPR	0x02000000
546218822Sdim#define PF_HP_LAZYSWAP_DEPR	0x04000000
547218822Sdim#define PF_PARISC_SBP		0x08000000
54868673Sobrien#define PF_HP_SBP		0x08000000
54968673Sobrien
55068673Sobrien
55168673Sobrien/* Processor specific dynamic array tags.  */
55268673Sobrien
55377298Sobrien/* Arggh.  HP's tools define these symbols based on the
55477298Sobrien   old value of DT_LOOS.  So we must do the same to be
55577298Sobrien   compatible.  */
55677298Sobrien#define DT_HP_LOAD_MAP		(OLD_DT_LOOS + 0x0)
55777298Sobrien#define DT_HP_DLD_FLAGS		(OLD_DT_LOOS + 0x1)
55877298Sobrien#define DT_HP_DLD_HOOK		(OLD_DT_LOOS + 0x2)
55977298Sobrien#define DT_HP_UX10_INIT		(OLD_DT_LOOS + 0x3)
56077298Sobrien#define DT_HP_UX10_INITSZ	(OLD_DT_LOOS + 0x4)
56177298Sobrien#define DT_HP_PREINIT		(OLD_DT_LOOS + 0x5)
56277298Sobrien#define DT_HP_PREINITSZ		(OLD_DT_LOOS + 0x6)
56377298Sobrien#define DT_HP_NEEDED		(OLD_DT_LOOS + 0x7)
56477298Sobrien#define DT_HP_TIME_STAMP	(OLD_DT_LOOS + 0x8)
56577298Sobrien#define DT_HP_CHECKSUM		(OLD_DT_LOOS + 0x9)
56677298Sobrien#define DT_HP_GST_SIZE		(OLD_DT_LOOS + 0xa)
56777298Sobrien#define DT_HP_GST_VERSION	(OLD_DT_LOOS + 0xb)
56877298Sobrien#define DT_HP_GST_HASHVAL	(OLD_DT_LOOS + 0xc)
569218822Sdim#define DT_HP_EPLTREL		(OLD_DT_LOOS + 0xd)
570218822Sdim#define DT_HP_EPLTRELSZ		(OLD_DT_LOOS + 0xe)
571218822Sdim#define DT_HP_FILTERED		(OLD_DT_LOOS + 0xf)
572218822Sdim#define DT_HP_FILTER_TLS	(OLD_DT_LOOS + 0x10)
573218822Sdim#define DT_HP_COMPAT_FILTERED	(OLD_DT_LOOS + 0x11)
574218822Sdim#define DT_HP_LAZYLOAD		(OLD_DT_LOOS + 0x12)
575218822Sdim#define DT_HP_BIND_NOW_COUNT	(OLD_DT_LOOS + 0x13)
576218822Sdim#define DT_PLT			(OLD_DT_LOOS + 0x14)
577218822Sdim#define DT_PLT_SIZE		(OLD_DT_LOOS + 0x15)
578218822Sdim#define DT_DLT			(OLD_DT_LOOS + 0x16)
579218822Sdim#define DT_DLT_SIZE		(OLD_DT_LOOS + 0x17)
58068673Sobrien
58168673Sobrien/* Values for DT_HP_DLD_FLAGS.  */
582218822Sdim#define DT_HP_DEBUG_PRIVATE		0x00001 /* Map text private */
583218822Sdim#define DT_HP_DEBUG_CALLBACK		0x00002 /* Callback */
584218822Sdim#define DT_HP_DEBUG_CALLBACK_BOR	0x00004 /* BOR callback */
585218822Sdim#define DT_HP_NO_ENVVAR			0x00008 /* No env var */
586218822Sdim#define DT_HP_BIND_NOW			0x00010 /* Bind now */
587218822Sdim#define DT_HP_BIND_NONFATAL		0x00020 /* Bind non-fatal */
588218822Sdim#define DT_HP_BIND_VERBOSE		0x00040 /* Bind verbose */
589218822Sdim#define DT_HP_BIND_RESTRICTED		0x00080 /* Bind restricted */
590218822Sdim#define DT_HP_BIND_SYMBOLIC		0x00100 /* Bind symbolic */
591218822Sdim#define DT_HP_RPATH_FIRST		0x00200 /* RPATH first */
592218822Sdim#define DT_HP_BIND_DEPTH_FIRST		0x00400 /* Bind depth-first */
593218822Sdim#define DT_HP_GST			0x00800 /* Dld global sym table */
594218822Sdim#define DT_HP_SHLIB_FIXED		0x01000 /* shared vtable support */
595218822Sdim#define DT_HP_MERGE_SHLIB_SEG		0x02000 /* merge shlib data segs */
596218822Sdim#define DT_HP_NODELETE			0x04000 /* never unload */
597218822Sdim#define DT_HP_GROUP			0x08000 /* bind only within group */
598218822Sdim#define DT_HP_PROTECT_LINKAGE_TABLE	0x10000 /* protected linkage table */
59968673Sobrien
60068673Sobrien/* Program header extensions.  */
60168673Sobrien#define PT_HP_TLS		(PT_LOOS + 0x0)
60268673Sobrien#define PT_HP_CORE_NONE		(PT_LOOS + 0x1)
60368673Sobrien#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2)
60468673Sobrien#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3)
60568673Sobrien#define PT_HP_CORE_COMM		(PT_LOOS + 0x4)
60668673Sobrien#define PT_HP_CORE_PROC		(PT_LOOS + 0x5)
60768673Sobrien#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6)
60868673Sobrien#define PT_HP_CORE_STACK	(PT_LOOS + 0x7)
60968673Sobrien#define PT_HP_CORE_SHM		(PT_LOOS + 0x8)
61068673Sobrien#define PT_HP_CORE_MMF		(PT_LOOS + 0x9)
61168673Sobrien#define PT_HP_PARALLEL		(PT_LOOS + 0x10)
61268673Sobrien#define PT_HP_FASTBIND		(PT_LOOS + 0x11)
613218822Sdim#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12)
614218822Sdim#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13)
615218822Sdim#define PT_HP_STACK		(PT_LOOS + 0x14)
616218822Sdim#define PT_HP_CORE_UTSNAME	(PT_LOOS + 0x15)
61768673Sobrien
618218822Sdim/* Binding information.  */
619218822Sdim#define STB_HP_ALIAS		(STB_LOOS + 0x0)
620218822Sdim
62168673Sobrien/* Additional symbol types.  */
62268673Sobrien#define STT_HP_OPAQUE		(STT_LOOS + 0x1)
62368673Sobrien#define STT_HP_STUB		(STT_LOOS + 0x2)
62468673Sobrien
625218822Sdim/* Note types.  */
626218822Sdim#define NT_HP_COMPILER		1
627218822Sdim#define NT_HP_COPYRIGHT		2
628218822Sdim#define NT_HP_VERSION		3
629218822Sdim#define NT_HP_SRCFILE_INFO	4
630218822Sdim#define NT_HP_LINKER		5
631218822Sdim#define NT_HP_INSTRUMENTED	6
632218822Sdim#define NT_HP_UX_OPTIONS	7
633218822Sdim
63468673Sobrien#endif /* _ELF_HPPA_H */
635