xref: /netbsd-src/sys/arch/alpha/include/elf_machdep.h (revision 9b9c28142bdeacd1be0c57bcf83ae0ddde77a4a0)
1*9b9c2814Sthorpej /* $NetBSD: elf_machdep.h,v 1.15 2020/10/10 21:25:51 thorpej Exp $ */
2b4d5b7d6Sdrochner 
3b4d5b7d6Sdrochner #ifndef	_ALPHA_ELF_MACHDEP_H_
4b4d5b7d6Sdrochner #define	_ALPHA_ELF_MACHDEP_H_
56d2e0bcbSthorpej 
66d2e0bcbSthorpej /*
706acf46bSskrll  * Alpha ELF uses different (non-standard) definitions for the symbol
806acf46bSskrll  * hash table section.
96d2e0bcbSthorpej  */
1006acf46bSskrll #define	Elf_Symindx	uint64_t
110e097578Scgd 
126fbbbb1eScgd #define	ELF32_MACHDEP_ENDIANNESS	XXX	/* break compilation */
130e097578Scgd #define	ELF32_MACHDEP_ID_CASES						\
140e097578Scgd 		/* no 32-bit ELF machine types supported */
150e097578Scgd 
16522cbf02Skleink #define	ELF64_MACHDEP_ENDIANNESS	ELFDATA2LSB
170e097578Scgd #define	ELF64_MACHDEP_ID_CASES						\
18*9b9c2814Sthorpej 		case EM_OLD_ALPHA:					\
19522cbf02Skleink 		case EM_ALPHA:						\
200e097578Scgd 			break;
216fbbbb1eScgd 
22*9b9c2814Sthorpej #define	ELF64_MACHDEP_ID	EM_ALPHA
2351535d4bSthorpej 
24dc2ac295Schristos #define	KERN_ELFSIZE		64
2578b10569Sminoura #define ARCH_ELFSIZE		64	/* MD native binary size */
2678b10569Sminoura 
276fbbbb1eScgd /*
286fbbbb1eScgd  * Alpha Relocation Types
296fbbbb1eScgd  */
306fbbbb1eScgd #define	R_ALPHA_NONE		0	/* No reloc */
316fbbbb1eScgd #define	R_ALPHA_REFLONG		1	/* Direct 32 bit */
326fbbbb1eScgd #define	R_ALPHA_REFQUAD		2	/* Direct 64 bit */
336fbbbb1eScgd #define	R_ALPHA_GPREL32		3	/* GP relative 32 bit */
346fbbbb1eScgd #define	R_ALPHA_LITERAL		4	/* GP relative 16 bit w/optimization */
356fbbbb1eScgd #define	R_ALPHA_LITUSE		5	/* Optimization hint for LITERAL */
366fbbbb1eScgd #define	R_ALPHA_GPDISP		6	/* Add displacement to GP */
376fbbbb1eScgd #define	R_ALPHA_BRADDR		7	/* PC+4 relative 23 bit shifted */
386fbbbb1eScgd #define	R_ALPHA_HINT		8	/* PC+4 relative 16 bit shifted */
396fbbbb1eScgd #define	R_ALPHA_SREL16		9	/* PC relative 16 bit */
406fbbbb1eScgd #define	R_ALPHA_SREL32		10	/* PC relative 32 bit */
416fbbbb1eScgd #define	R_ALPHA_SREL64		11	/* PC relative 64 bit */
426fbbbb1eScgd #define	R_ALPHA_OP_PUSH		12	/* OP stack push */
436fbbbb1eScgd #define	R_ALPHA_OP_STORE	13	/* OP stack pop and store */
446fbbbb1eScgd #define	R_ALPHA_OP_PSUB		14	/* OP stack subtract */
456fbbbb1eScgd #define	R_ALPHA_OP_PRSHIFT	15	/* OP stack right shift */
466fbbbb1eScgd #define	R_ALPHA_GPVALUE		16
476fbbbb1eScgd #define	R_ALPHA_GPRELHIGH	17
486fbbbb1eScgd #define	R_ALPHA_GPRELLOW	18
496fbbbb1eScgd #define	R_ALPHA_IMMED_GP_16	19
506fbbbb1eScgd #define	R_ALPHA_IMMED_GP_HI32	20
516fbbbb1eScgd #define	R_ALPHA_IMMED_SCN_HI32	21
526fbbbb1eScgd #define	R_ALPHA_IMMED_BR_HI32	22
536fbbbb1eScgd #define	R_ALPHA_IMMED_LO32	23
546fbbbb1eScgd #define	R_ALPHA_COPY		24	/* Copy symbol at runtime */
556fbbbb1eScgd #define	R_ALPHA_GLOB_DAT	25	/* Create GOT entry */
566fbbbb1eScgd #define	R_ALPHA_JMP_SLOT	26	/* Create PLT entry */
576fbbbb1eScgd #define	R_ALPHA_RELATIVE	27	/* Adjust by program base */
585fd52da1Sthorpej #define	R_ALPHA_BRSGP		28
596fbbbb1eScgd 
60e0397662Sskrll /* TLS relocations */
61e0397662Sskrll #define	R_ALPHA_TLS_GD		29
62e0397662Sskrll #define	R_ALPHA_TLSLDM		30
63e0397662Sskrll #define	R_ALPHA_DTPMOD64	31
64e0397662Sskrll #define	R_ALPHA_GOTDTPREL	32
65e0397662Sskrll #define	R_ALPHA_DTPREL64	33
66e0397662Sskrll #define	R_ALPHA_DTPRELHI	34
67e0397662Sskrll #define	R_ALPHA_DTPRELLO	35
68e0397662Sskrll #define	R_ALPHA_DTPREL16	36
69e0397662Sskrll #define	R_ALPHA_GOTTPREL	37
70e0397662Sskrll #define	R_ALPHA_TPREL64		38
71e0397662Sskrll #define	R_ALPHA_TPRELHI		39
72e0397662Sskrll #define	R_ALPHA_TPRELLO		40
73e0397662Sskrll #define	R_ALPHA_TPREL16		41
74e0397662Sskrll 
756fbbbb1eScgd #define	R_TYPE(name)		__CONCAT(R_ALPHA_,name)
76b4d5b7d6Sdrochner 
77b4d5b7d6Sdrochner #endif /* _ALPHA_ELF_MACHDEP_H_ */
78