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