Home | History | Annotate | Line # | Download | only in include
      1 /* $NetBSD: elf_machdep.h,v 1.16 2025/04/18 17:56:50 riastradh Exp $ */
      2 
      3 #ifndef	_ALPHA_ELF_MACHDEP_H_
      4 #define	_ALPHA_ELF_MACHDEP_H_
      5 
      6 /*
      7  * Alpha ELF uses different (non-standard) definitions for the symbol
      8  * hash table section.
      9  */
     10 #define	Elf_Symindx	uint64_t
     11 
     12 #define	ELF32_MACHDEP_ENDIANNESS	XXX	/* break compilation */
     13 #define	ELF32_MACHDEP_ID_CASES						\
     14 		/* no 32-bit ELF machine types supported */
     15 
     16 #define	ELF64_MACHDEP_ENDIANNESS	ELFDATA2LSB
     17 #define	ELF64_MACHDEP_ID_CASES						\
     18 		case EM_OLD_ALPHA:					\
     19 		case EM_ALPHA:						\
     20 			break;
     21 
     22 #define	ELF64_MACHDEP_ID	EM_ALPHA
     23 
     24 #define	KERN_ELFSIZE		64
     25 #define ARCH_ELFSIZE		64	/* MD native binary size */
     26 
     27 /*
     28  * Alpha Relocation Types
     29  */
     30 #define	R_ALPHA_NONE		0	/* No reloc */
     31 #define	R_ALPHA_REFLONG		1	/* Direct 32 bit */
     32 #define	R_ALPHA_REFQUAD		2	/* Direct 64 bit */
     33 #define	R_ALPHA_GPREL32		3	/* GP relative 32 bit */
     34 #define	R_ALPHA_LITERAL		4	/* GP relative 16 bit w/optimization */
     35 #define	R_ALPHA_LITUSE		5	/* Optimization hint for LITERAL */
     36 #define	R_ALPHA_GPDISP		6	/* Add displacement to GP */
     37 #define	R_ALPHA_BRADDR		7	/* PC+4 relative 23 bit shifted */
     38 #define	R_ALPHA_HINT		8	/* PC+4 relative 16 bit shifted */
     39 #define	R_ALPHA_SREL16		9	/* PC relative 16 bit */
     40 #define	R_ALPHA_SREL32		10	/* PC relative 32 bit */
     41 #define	R_ALPHA_SREL64		11	/* PC relative 64 bit */
     42 #define	R_ALPHA_OP_PUSH		12	/* OP stack push */
     43 #define	R_ALPHA_OP_STORE	13	/* OP stack pop and store */
     44 #define	R_ALPHA_OP_PSUB		14	/* OP stack subtract */
     45 #define	R_ALPHA_OP_PRSHIFT	15	/* OP stack right shift */
     46 #define	R_ALPHA_GPVALUE		16
     47 #define	R_ALPHA_GPRELHIGH	17
     48 #define	R_ALPHA_GPRELLOW	18
     49 #define	R_ALPHA_IMMED_GP_16	19
     50 #define	R_ALPHA_IMMED_GP_HI32	20
     51 #define	R_ALPHA_IMMED_SCN_HI32	21
     52 #define	R_ALPHA_IMMED_BR_HI32	22
     53 #define	R_ALPHA_IMMED_LO32	23
     54 #define	R_ALPHA_COPY		24	/* Copy symbol at runtime */
     55 #define	R_ALPHA_GLOB_DAT	25	/* Create GOT entry */
     56 #define	R_ALPHA_JMP_SLOT	26	/* Create PLT entry */
     57 #define	R_ALPHA_RELATIVE	27	/* Adjust by program base */
     58 #define	R_ALPHA_BRSGP		28
     59 
     60 /* TLS relocations */
     61 #define	R_ALPHA_TLS_GD		29
     62 #define	R_ALPHA_TLSLDM		30
     63 #define	R_ALPHA_DTPMOD64	31
     64 #define	R_ALPHA_GOTDTPREL	32
     65 #define	R_ALPHA_DTPREL64	33
     66 #define	R_ALPHA_DTPRELHI	34
     67 #define	R_ALPHA_DTPRELLO	35
     68 #define	R_ALPHA_DTPREL16	36
     69 #define	R_ALPHA_GOTTPREL	37
     70 #define	R_ALPHA_TPREL64		38
     71 #define	R_ALPHA_TPRELHI		39
     72 #define	R_ALPHA_TPRELLO		40
     73 #define	R_ALPHA_TPREL16		41
     74 
     75 #define	R_TYPE(name)		__CONCAT(R_ALPHA_,name)
     76 
     77 /* Alpha dynamic tags */
     78 #define	DT_ALPHA_PLTRO		0x70000000	/* secure (read-only) PLT */
     79 
     80 #endif /* _ALPHA_ELF_MACHDEP_H_ */
     81