/* HPPA ELF support for BFD.
   Copyright (C) 1993-2021 Free Software Foundation, Inc.

   This file is part of BFD, the Binary File Descriptor library.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */

/* This file holds definitions specific to the HPPA ELF ABI.  Note
   that most of this is not actually implemented by BFD.  */

#ifndef _ELF_HPPA_H
#define _ELF_HPPA_H

/* Processor specific flags for the ELF header e_flags field.  */

/* Trap null address dereferences.  */
#define EF_PARISC_TRAPNIL	0x00010000

/* .PARISC.archext section is present.  */
#define EF_PARISC_EXT		0x00020000

/* Program expects little-endian mode.  */
#define EF_PARISC_LSB		0x00040000

/* Program expects wide mode.  */
#define EF_PARISC_WIDE		0x00080000

/* Do not allow kernel-assisted branch prediction.  */
#define EF_PARISC_NO_KABP	0x00100000

/* Allow lazy swap for dynamically allocated program segments.  */
#define EF_PARISC_LAZYSWAP	0x00400000

/* Architecture version */
#define EF_PARISC_ARCH		0x0000ffff

#define EFA_PARISC_1_0			0x020b
#define EFA_PARISC_1_1			0x0210
#define EFA_PARISC_2_0			0x0214

/* Special section indices.  */
/* A symbol that has been declared as a tentative definition in an ANSI C
   compilation.  */
#define SHN_PARISC_ANSI_COMMON 	SHN_LORESERVE

/* A symbol that has been declared as a common block using the
   huge memory model.  */
#define SHN_PARISC_HUGE_COMMON	(SHN_LORESERVE + 1)

/* Processor specific section types.  */

/* Section contains product specific extension bits.  */
#define SHT_PARISC_EXT		0x70000000

/* Section contains unwind table entries.  */
#define SHT_PARISC_UNWIND	0x70000001

/* Section contains debug information for optimized code.  */
#define SHT_PARISC_DOC		0x70000002

/* Section contains code annotations.  */
#define SHT_PARISC_ANNOT	0x70000003

/* DLKM special section.  */
#define SHT_PARISC_DLKM		0x70000004

/* These are strictly for compatibility with the older elf32-hppa
   implementation.  Hopefully we can eliminate them in the future.  */
/* Optional section holding argument location/relocation info.  */
#define SHT_PARISC_SYMEXTN    SHT_LOPROC + 8

/* Option section for linker stubs.  */
#define SHT_PARISC_STUBS      SHT_LOPROC + 9

/* Processor specific section flags.  */

/* Section contains code compiled for static branch prediction.  */
#define SHF_PARISC_SBP		0x80000000

/* Section should be allocated from from GP.  */
#define SHF_PARISC_HUGE		0x40000000

/* Section should go near GP.  */
#define SHF_PARISC_SHORT	0x20000000

/* Section is weak ordered.  */
#define SHF_PARISC_WEAKORDER	0x10000000

/* Identifies the entry point of a millicode routine.  */
#define STT_PARISC_MILLI	13

/* ELF/HPPA relocation types */

/* Note: PA-ELF is defined to use only RELA relocations.  */
#include "elf/reloc-macros.h"

START_RELOC_NUMBERS (elf_hppa_reloc_type)
RELOC_NUMBER (R_PARISC_NONE,	         0) /* No reloc */

/*		Data / Inst. Format	   Relocation Expression	  */

RELOC_NUMBER (R_PARISC_DIR32,	   	 1)
/*		32-bit word            	   symbol + addend    		  */

RELOC_NUMBER (R_PARISC_DIR21L,	   	 2)
/*		long immediate (7)	   LR(symbol, addend) 		  */

RELOC_NUMBER (R_PARISC_DIR17R,	   	 3)
/*		branch external (19)	   RR(symbol, addend) 		  */

RELOC_NUMBER (R_PARISC_DIR17F,	   	 4)
/*		branch external (19)	   symbol + addend    		  */

RELOC_NUMBER (R_PARISC_DIR14R,	   	 6)
/*		load/store (1)		   RR(symbol, addend) 		  */

RELOC_NUMBER (R_PARISC_DIR14F,	   	 7)
/*		load/store (1)		   symbol, addend 		  */

/* PC-relative relocation types
   Typically used for calls.
   Note PCREL17C and PCREL17F differ only in overflow handling.
   PCREL17C never reports a relocation error.

   When supporting argument relocations, function calls must be
   accompanied by parameter relocation information.  This information is
   carried in the ten high-order bits of the addend field.  The remaining
   22 bits of the addend field are sign-extended to form the Addend.

   Note the code to build argument relocations depends on the
   addend being zero.  A consequence of this limitation is GAS
   can not perform relocation reductions for function symbols.  */

RELOC_NUMBER (R_PARISC_PCREL12F,  	 8)
/*		op & branch (17)	   symbol - PC - 8 + addend    	  */

RELOC_NUMBER (R_PARISC_PCREL32,   	 9)
/*		32-bit word		   symbol - PC - 8 + addend    	  */

RELOC_NUMBER (R_PARISC_PCREL21L,  	10)
/*		long immediate (7)	   L(symbol - PC - 8 + addend) 	  */

RELOC_NUMBER (R_PARISC_PCREL17R,  	11)
/*		branch external (19)	   R(symbol - PC - 8 + addend) 	  */

RELOC_NUMBER (R_PARISC_PCREL17F,  	12)
/*		branch (20)		   symbol - PC - 8 + addend    	  */

RELOC_NUMBER (R_PARISC_PCREL17C,  	13)
/*		branch (20)		   symbol - PC - 8 + addend    	  */

RELOC_NUMBER (R_PARISC_PCREL14R,  	14)
/*		load/store (1)		   R(symbol - PC - 8 + addend) 	  */

RELOC_NUMBER (R_PARISC_PCREL14F,  	15)
/*		load/store (1)             symbol - PC - 8 + addend    	  */


/* DP-relative relocation types.  */
RELOC_NUMBER (R_PARISC_DPREL21L,  	18)
/*		long immediate (7)         LR(symbol - GP, addend)  	  */

RELOC_NUMBER (R_PARISC_DPREL14WR, 	19)
/*		load/store mod. comp. (2)  RR(symbol - GP, addend)  	  */

RELOC_NUMBER (R_PARISC_DPREL14DR, 	20)
/*		load/store doubleword (3)  RR(symbol - GP, addend)  	  */

RELOC_NUMBER (R_PARISC_DPREL14R,  	22)
/*		load/store (1)             RR(symbol - GP, addend)  	  */

RELOC_NUMBER (R_PARISC_DPREL14F,  	23)
/*		load/store (1)             symbol - GP + addend     	  */


/* Data linkage table (DLT) relocation types

   SOM DLT_REL fixup requests are used to for static data references
   from position-independent code within shared libraries.  They are
   similar to the GOT relocation types in some SVR4 implementations.  */

RELOC_NUMBER (R_PARISC_DLTREL21L,     	26)
/*		long immediate (7)         LR(symbol - GP, addend) 	  */

RELOC_NUMBER (R_PARISC_DLTREL14R,     	30)
/*		load/store (1)             RR(symbol - GP, addend) 	  */

RELOC_NUMBER (R_PARISC_DLTREL14F,     	31)
/*		load/store (1)             symbol - GP + addend    	  */


/* DLT indirect relocation types  */
RELOC_NUMBER (R_PARISC_DLTIND21L,     	34)
/*		long immediate (7)         L(ltoff(symbol + addend)) 	  */

RELOC_NUMBER (R_PARISC_DLTIND14R,     	38)
/*		load/store (1)             R(ltoff(symbol + addend)) 	  */

RELOC_NUMBER (R_PARISC_DLTIND14F,     	39)
/*		load/store (1)             ltoff(symbol + addend)    	  */


/* Base relative relocation types.  Ugh.  These imply lots of state */
RELOC_NUMBER (R_PARISC_SETBASE,       	40)
/*		none                       no reloc; base := sym     	  */

RELOC_NUMBER (R_PARISC_SECREL32,      	41)
/*		32-bit word                symbol - SECT + addend    	  */

RELOC_NUMBER (R_PARISC_BASEREL21L,    	42)
/*		long immediate (7)         LR(symbol - base, addend) 	  */

RELOC_NUMBER (R_PARISC_BASEREL17R,    	43)
/*		branch external (19)       RR(symbol - base, addend) 	  */

RELOC_NUMBER (R_PARISC_BASEREL17F,    	44)
/*		branch external (19)       symbol - base + addend    	  */

RELOC_NUMBER (R_PARISC_BASEREL14R,    	46)
/*		load/store (1)             RR(symbol - base, addend) 	  */

RELOC_NUMBER (R_PARISC_BASEREL14F,    	47)
/*		load/store (1)             symbol - base, addend     	  */


/* Segment relative relocation types.  */
RELOC_NUMBER (R_PARISC_SEGBASE,       	48)
/*		none                       no relocation; SB := sym  	  */

RELOC_NUMBER (R_PARISC_SEGREL32,      	49)
/*		32-bit word                symbol - SB + addend 	  */
  

/* Offsets from the PLT.  */  
RELOC_NUMBER (R_PARISC_PLTOFF21L,     	50)
/*		long immediate (7)         LR(pltoff(symbol), addend) 	  */

RELOC_NUMBER (R_PARISC_PLTOFF14R,     	54)
/*		load/store (1)             RR(pltoff(symbol), addend) 	  */

RELOC_NUMBER (R_PARISC_PLTOFF14F,     	55)
/*		load/store (1)             pltoff(symbol) + addend    	  */


RELOC_NUMBER (R_PARISC_LTOFF_FPTR32,  	57)
/*		32-bit word                ltoff(fptr(symbol+addend))     */

RELOC_NUMBER (R_PARISC_LTOFF_FPTR21L, 	58)
/*		long immediate (7)         L(ltoff(fptr(symbol+addend)))  */

RELOC_NUMBER (R_PARISC_LTOFF_FPTR14R, 	62)
/*		load/store (1)             R(ltoff(fptr(symbol+addend)))  */


RELOC_NUMBER (R_PARISC_FPTR64,        	64)
/*		64-bit doubleword          fptr(symbol+addend) 		  */


/* Plabel relocation types.  */	 
RELOC_NUMBER (R_PARISC_PLABEL32,      	65)
/*		32-bit word	  	   fptr(symbol) 		  */

RELOC_NUMBER (R_PARISC_PLABEL21L,     	66)
/*		long immediate (7)         L(fptr(symbol))		  */

RELOC_NUMBER (R_PARISC_PLABEL14R,     	70)
/*		load/store (1)             R(fptr(symbol))		  */

  
/* PCREL relocations.  */  
RELOC_NUMBER (R_PARISC_PCREL64,       	72)
/*		64-bit doubleword          symbol - PC - 8 + addend       */

RELOC_NUMBER (R_PARISC_PCREL22C,      	73)
/*		branch & link (21)         symbol - PC - 8 + addend       */

RELOC_NUMBER (R_PARISC_PCREL22F,      	74)
/*		branch & link (21)         symbol - PC - 8 + addend       */

RELOC_NUMBER (R_PARISC_PCREL14WR,     	75)
/*		load/store mod. comp. (2)  R(symbol - PC - 8 + addend)    */

RELOC_NUMBER (R_PARISC_PCREL14DR,     	76)
/*		load/store doubleword (3)  R(symbol - PC - 8 + addend)    */

RELOC_NUMBER (R_PARISC_PCREL16F,      	77)
/*		load/store (1)             symbol - PC - 8 + addend       */

RELOC_NUMBER (R_PARISC_PCREL16WF,     	78)
/*		load/store mod. comp. (2)  symbol - PC - 8 + addend       */

RELOC_NUMBER (R_PARISC_PCREL16DF,     	79)
/*		load/store doubleword (3)  symbol - PC - 8 + addend       */


RELOC_NUMBER (R_PARISC_DIR64,         	80)
/*		64-bit doubleword          symbol + addend    		  */

RELOC_NUMBER (R_PARISC_DIR14WR,       	83)
/*		load/store mod. comp. (2)  RR(symbol, addend) 		  */

RELOC_NUMBER (R_PARISC_DIR14DR,       	84)
/*		load/store doubleword (3)  RR(symbol, addend) 		  */

RELOC_NUMBER (R_PARISC_DIR16F,        	85)
/*		load/store (1)             symbol + addend    		  */

RELOC_NUMBER (R_PARISC_DIR16WF,       	86)
/*		load/store mod. comp. (2)  symbol + addend    		  */

RELOC_NUMBER (R_PARISC_DIR16DF,       	87)
/*		load/store doubleword (3)  symbol + addend    		  */
  
RELOC_NUMBER (R_PARISC_GPREL64,       	88)
/*		64-bit doubleword          symbol - GP + addend 	  */
  
RELOC_NUMBER (R_PARISC_DLTREL14WR,    	91)
/*		load/store mod. comp. (2)  RR(symbol - GP, addend) 	  */

RELOC_NUMBER (R_PARISC_DLTREL14DR,    	92)
/*		load/store doubleword (3)  RR(symbol - GP, addend) 	  */

RELOC_NUMBER (R_PARISC_GPREL16F,      	93)
/*		load/store (1)             symbol - GP + addend    	  */

RELOC_NUMBER (R_PARISC_GPREL16WF,     	94)
/*		load/store mod. comp. (2)  symbol - GP + addend    	  */

RELOC_NUMBER (R_PARISC_GPREL16DF,     	95)
/*		load/store doubleword (3)  symbol - GP + addend    	  */


RELOC_NUMBER (R_PARISC_LTOFF64,      	96)
/*		64-bit doubleword          ltoff(symbol + addend)    	  */

RELOC_NUMBER (R_PARISC_DLTIND14WR,   	99)
/*		load/store mod. comp. (2)  R(ltoff(symbol + addend)) 	  */

RELOC_NUMBER (R_PARISC_DLTIND14DR,     100)
/*		load/store doubleword (3)  R(ltoff(symbol + addend)) 	  */

RELOC_NUMBER (R_PARISC_LTOFF16F,       101)
/*		load/store (1)             ltoff(symbol + addend)    	  */

RELOC_NUMBER (R_PARISC_LTOFF16WF,      102)
/*		load/store mod. comp. (2)  ltoff(symbol + addend)    	  */

RELOC_NUMBER (R_PARISC_LTOFF16DF,      103)
/*		load/store doubleword (3)  ltoff(symbol + addend)    	  */


RELOC_NUMBER (R_PARISC_SECREL64,       104)
/*		64-bit doubleword          symbol - SECT + addend 	  */

RELOC_NUMBER (R_PARISC_BASEREL14WR,    107)
/*		load/store mod. comp. (2)  RR(symbol - base, addend) 	  */

RELOC_NUMBER (R_PARISC_BASEREL14DR,    108)
/*		load/store doubleword (3)  RR(symbol - base, addend) 	  */


RELOC_NUMBER (R_PARISC_SEGREL64,       112)
/*		64-bit doubleword          symbol - SB + addend 	  */
  
RELOC_NUMBER (R_PARISC_PLTOFF14WR,     115)
/*		load/store mod. comp. (2)  RR(pltoff(symbol), addend) 	  */

RELOC_NUMBER (R_PARISC_PLTOFF14DR,     116)    
/*		load/store doubleword (3)  RR(pltoff(symbol), addend) 	  */

RELOC_NUMBER (R_PARISC_PLTOFF16F,      117)    
/*		load/store (1)             pltoff(symbol) + addend    	  */

RELOC_NUMBER (R_PARISC_PLTOFF16WF,     118)    
/*		load/store mod. comp. (2)  pltoff(symbol) + addend    	  */

RELOC_NUMBER (R_PARISC_PLTOFF16DF,     119)    
/*		load/store doubleword (3)  pltoff(symbol) + addend    	  */


RELOC_NUMBER (R_PARISC_LTOFF_FPTR64,   120)
/*		64-bit doubleword          ltoff(fptr(symbol+addend))     */

RELOC_NUMBER (R_PARISC_LTOFF_FPTR14WR, 123)
/*		load/store mod. comp. (2)  R(ltoff(fptr(symbol+addend)))  */

RELOC_NUMBER (R_PARISC_LTOFF_FPTR14DR, 124)
/*		load/store doubleword (3)  R(ltoff(fptr(symbol+addend)))  */

RELOC_NUMBER (R_PARISC_LTOFF_FPTR16F,  125)
/*		load/store (1)             ltoff(fptr(symbol+addend))     */

RELOC_NUMBER (R_PARISC_LTOFF_FPTR16WF, 126)
/*		load/store mod. comp. (2)  ltoff(fptr(symbol+addend))     */

RELOC_NUMBER (R_PARISC_LTOFF_FPTR16DF, 127)
/*		load/store doubleword (3)  ltoff(fptr(symbol+addend))     */


RELOC_NUMBER (R_PARISC_COPY, 	       128)
/*		data                       Dynamic relocations only 	  */

RELOC_NUMBER (R_PARISC_IPLT, 	       129)
/*		plt                                                 	  */

RELOC_NUMBER (R_PARISC_EPLT, 	       130)
/*		plt                                                 	  */


RELOC_NUMBER (R_PARISC_TPREL32,        153)
/*		32-bit word                symbol - TP + addend    	  */

RELOC_NUMBER (R_PARISC_TPREL21L,       154)
/*		long immediate (7)         LR(symbol - TP, addend) 	  */

RELOC_NUMBER (R_PARISC_TPREL14R,       158)
/*		load/store (1)             RR(symbol - TP, addend) 	  */


RELOC_NUMBER (R_PARISC_LTOFF_TP21L,    162)
/*		long immediate (7)         L(ltoff(symbol - TP + addend)) */

RELOC_NUMBER (R_PARISC_LTOFF_TP14R,    166)
/*		load/store (1)             R(ltoff(symbol - TP + addend)) */

RELOC_NUMBER (R_PARISC_LTOFF_TP14F,    167)
/*		load/store (1)             ltoff(symbol - TP + addend)    */


RELOC_NUMBER (R_PARISC_TPREL64,        216)
/*		64-bit word                symbol - TP + addend        	  */

RELOC_NUMBER (R_PARISC_TPREL14WR,      219)    	  
/*		load/store mod. comp. (2)  RR(symbol - TP, addend)     	  */

RELOC_NUMBER (R_PARISC_TPREL14DR,      220)    	  
/*		load/store doubleword (3)  RR(symbol - TP, addend)     	  */

RELOC_NUMBER (R_PARISC_TPREL16F,       221)    	  
/*		load/store (1)             symbol - TP + addend        	  */

RELOC_NUMBER (R_PARISC_TPREL16WF,      222)    	  
/*		load/store mod. comp. (2)  symbol - TP + addend        	  */

RELOC_NUMBER (R_PARISC_TPREL16DF,      223)    	  
/*		load/store doubleword (3)  symbol - TP + addend        	  */


RELOC_NUMBER (R_PARISC_LTOFF_TP64,     224)
/*		64-bit doubleword          ltoff(symbol - TP + addend)    */

RELOC_NUMBER (R_PARISC_LTOFF_TP14WR,   227)
/*		load/store mod. comp. (2)  R(ltoff(symbol - TP + addend)) */

RELOC_NUMBER (R_PARISC_LTOFF_TP14DR,   228)
/*		load/store doubleword (3)  R(ltoff(symbol - TP + addend)) */

RELOC_NUMBER (R_PARISC_LTOFF_TP16F,    229)
/*		load/store (1)             ltoff(symbol - TP + addend)    */

RELOC_NUMBER (R_PARISC_LTOFF_TP16WF,   230)
/*		load/store mod. comp. (2)  ltoff(symbol - TP + addend)    */

RELOC_NUMBER (R_PARISC_LTOFF_TP16DF,   231)
/*		load/store doubleword (3)  ltoff(symbol - TP + addend)    */

RELOC_NUMBER (R_PARISC_GNU_VTENTRY,    232)
RELOC_NUMBER (R_PARISC_GNU_VTINHERIT,  233)

RELOC_NUMBER (R_PARISC_TLS_GD21L,      234)
RELOC_NUMBER (R_PARISC_TLS_GD14R,      235)
RELOC_NUMBER (R_PARISC_TLS_GDCALL,     236)
RELOC_NUMBER (R_PARISC_TLS_LDM21L,     237)
RELOC_NUMBER (R_PARISC_TLS_LDM14R,     238)
RELOC_NUMBER (R_PARISC_TLS_LDMCALL,    239)
RELOC_NUMBER (R_PARISC_TLS_LDO21L,     240)
RELOC_NUMBER (R_PARISC_TLS_LDO14R,     241)
RELOC_NUMBER (R_PARISC_TLS_DTPMOD32,   242)
RELOC_NUMBER (R_PARISC_TLS_DTPMOD64,   243)
RELOC_NUMBER (R_PARISC_TLS_DTPOFF32,   244)
RELOC_NUMBER (R_PARISC_TLS_DTPOFF64,   245)

END_RELOC_NUMBERS (R_PARISC_UNIMPLEMENTED)

#define R_PARISC_TLS_LE21L     R_PARISC_TPREL21L
#define R_PARISC_TLS_LE14R     R_PARISC_TPREL14R
#define R_PARISC_TLS_IE21L     R_PARISC_LTOFF_TP21L
#define R_PARISC_TLS_IE14R     R_PARISC_LTOFF_TP14R
#define R_PARISC_TLS_TPREL32   R_PARISC_TPREL32
#define R_PARISC_TLS_TPREL64   R_PARISC_TPREL64

#ifndef RELOC_MACROS_GEN_FUNC
typedef enum elf_hppa_reloc_type elf_hppa_reloc_type;
#endif

#define PT_PARISC_ARCHEXT	0x70000000
#define PT_PARISC_UNWIND	0x70000001
#define PT_PARISC_WEAKORDER	0x70000002

/* Flag bits in sh_flags of ElfXX_Shdr.  */
#define SHF_HP_TLS              0x01000000
#define SHF_HP_NEAR_SHARED      0x02000000
#define SHF_HP_FAR_SHARED       0x04000000
#define SHF_HP_COMDAT           0x08000000
#define SHF_HP_CONST            0x00800000

/* Reserved section header indices.  */
#define SHN_TLS_COMMON          (SHN_LOOS + 0x0)
#define SHN_NS_COMMON           (SHN_LOOS + 0x1)
#define SHN_FS_COMMON           (SHN_LOOS + 0x2)
#define SHN_NS_UNDEF            (SHN_LOOS + 0x3)
#define SHN_FS_UNDEF            (SHN_LOOS + 0x4)
#define SHN_HP_EXTERN           (SHN_LOOS + 0x5)
#define SHN_HP_EXTHINT          (SHN_LOOS + 0x6)
#define SHN_HP_UNDEF_BIND_IMM   (SHN_LOOS + 0x7)

/* Values of sh_type in ElfXX_Shdr.  */
#define SHT_HP_OVLBITS  (SHT_LOOS + 0x0)
#define SHT_HP_DLKM     (SHT_LOOS + 0x1)
#define SHT_HP_COMDAT   (SHT_LOOS + 0x2)
#define SHT_HP_OBJDICT  (SHT_LOOS + 0x3)
#define SHT_HP_ANNOT    (SHT_LOOS + 0x4)

/* Flag bits in p_flags of ElfXX_Phdr.  */
#define PF_HP_CODE		0x00040000
#define PF_HP_MODIFY		0x00080000
#define PF_HP_PAGE_SIZE		0x00100000
#define PF_HP_FAR_SHARED	0x00200000
#define PF_HP_NEAR_SHARED	0x00400000
#define PF_HP_LAZYSWAP		0x00800000
#define PF_HP_CODE_DEPR		0x01000000
#define PF_HP_MODIFY_DEPR	0x02000000
#define PF_HP_LAZYSWAP_DEPR	0x04000000
#define PF_PARISC_SBP		0x08000000
#define PF_HP_SBP		0x08000000


/* Processor specific dynamic array tags.  */

/* Arggh.  HP's tools define these symbols based on the
   old value of DT_LOOS.  So we must do the same to be
   compatible.  */
#define DT_HP_LOAD_MAP		(OLD_DT_LOOS + 0x0)
#define DT_HP_DLD_FLAGS		(OLD_DT_LOOS + 0x1)
#define DT_HP_DLD_HOOK		(OLD_DT_LOOS + 0x2)
#define DT_HP_UX10_INIT		(OLD_DT_LOOS + 0x3)
#define DT_HP_UX10_INITSZ	(OLD_DT_LOOS + 0x4)
#define DT_HP_PREINIT		(OLD_DT_LOOS + 0x5)
#define DT_HP_PREINITSZ		(OLD_DT_LOOS + 0x6)
#define DT_HP_NEEDED		(OLD_DT_LOOS + 0x7)
#define DT_HP_TIME_STAMP	(OLD_DT_LOOS + 0x8)
#define DT_HP_CHECKSUM		(OLD_DT_LOOS + 0x9)
#define DT_HP_GST_SIZE		(OLD_DT_LOOS + 0xa)
#define DT_HP_GST_VERSION	(OLD_DT_LOOS + 0xb)
#define DT_HP_GST_HASHVAL	(OLD_DT_LOOS + 0xc)
#define DT_HP_EPLTREL		(OLD_DT_LOOS + 0xd)
#define DT_HP_EPLTRELSZ		(OLD_DT_LOOS + 0xe)
#define DT_HP_FILTERED		(OLD_DT_LOOS + 0xf)
#define DT_HP_FILTER_TLS	(OLD_DT_LOOS + 0x10)
#define DT_HP_COMPAT_FILTERED	(OLD_DT_LOOS + 0x11)
#define DT_HP_LAZYLOAD		(OLD_DT_LOOS + 0x12)
#define DT_HP_BIND_NOW_COUNT	(OLD_DT_LOOS + 0x13)
#define DT_PLT			(OLD_DT_LOOS + 0x14)
#define DT_PLT_SIZE		(OLD_DT_LOOS + 0x15)
#define DT_DLT			(OLD_DT_LOOS + 0x16)
#define DT_DLT_SIZE		(OLD_DT_LOOS + 0x17)

/* Values for DT_HP_DLD_FLAGS.  */
#define DT_HP_DEBUG_PRIVATE		0x00001 /* Map text private */
#define DT_HP_DEBUG_CALLBACK		0x00002 /* Callback */
#define DT_HP_DEBUG_CALLBACK_BOR	0x00004 /* BOR callback */
#define DT_HP_NO_ENVVAR			0x00008 /* No env var */
#define DT_HP_BIND_NOW			0x00010 /* Bind now */
#define DT_HP_BIND_NONFATAL		0x00020 /* Bind non-fatal */
#define DT_HP_BIND_VERBOSE		0x00040 /* Bind verbose */
#define DT_HP_BIND_RESTRICTED		0x00080 /* Bind restricted */
#define DT_HP_BIND_SYMBOLIC		0x00100 /* Bind symbolic */
#define DT_HP_RPATH_FIRST		0x00200 /* RPATH first */
#define DT_HP_BIND_DEPTH_FIRST		0x00400 /* Bind depth-first */
#define DT_HP_GST			0x00800 /* Dld global sym table */
#define DT_HP_SHLIB_FIXED		0x01000 /* shared vtable support */
#define DT_HP_MERGE_SHLIB_SEG		0x02000 /* merge shlib data segs */
#define DT_HP_NODELETE			0x04000 /* never unload */
#define DT_HP_GROUP			0x08000 /* bind only within group */
#define DT_HP_PROTECT_LINKAGE_TABLE	0x10000 /* protected linkage table */

/* Program header extensions.  */
#define PT_HP_TLS		(PT_LOOS + 0x0)
#define PT_HP_CORE_NONE		(PT_LOOS + 0x1)
#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2)
#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3)
#define PT_HP_CORE_COMM		(PT_LOOS + 0x4)
#define PT_HP_CORE_PROC		(PT_LOOS + 0x5)
#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6)
#define PT_HP_CORE_STACK	(PT_LOOS + 0x7)
#define PT_HP_CORE_SHM		(PT_LOOS + 0x8)
#define PT_HP_CORE_MMF		(PT_LOOS + 0x9)
#define PT_HP_PARALLEL		(PT_LOOS + 0x10)
#define PT_HP_FASTBIND		(PT_LOOS + 0x11)
#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12)
#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13)
#define PT_HP_STACK		(PT_LOOS + 0x14)
#define PT_HP_CORE_UTSNAME	(PT_LOOS + 0x15)

/* Binding information.  */
#define STB_HP_ALIAS		(STB_LOOS + 0x0)

/* Additional symbol types.  */
#define STT_HP_OPAQUE		(STT_LOOS + 0x1)
#define STT_HP_STUB		(STT_LOOS + 0x2)

/* Note types.  */
#define NT_HP_COMPILER		1
#define NT_HP_COPYRIGHT		2
#define NT_HP_VERSION		3
#define NT_HP_SRCFILE_INFO	4
#define NT_HP_LINKER		5
#define NT_HP_INSTRUMENTED	6
#define NT_HP_UX_OPTIONS	7

#endif /* _ELF_HPPA_H */
