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