657 changes: 657 additions & 0 deletions src/core/sys/solaris/sys/elf.d

Large diffs are not rendered by default.

82 changes: 82 additions & 0 deletions src/core/sys/solaris/sys/elf_386.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/**
* D header file for Solaris.
*
* $(LINK2 http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/sys/elf_386.h, illumos sys/elf_386.h)
*/
module core.sys.solaris.sys.elf_386;

version (Solaris):
extern (C):
nothrow:

enum R_386_NONE = 0;
enum R_386_32 = 1;
enum R_386_PC32 = 2;
enum R_386_GOT32 = 3;
enum R_386_PLT32 = 4;
enum R_386_COPY = 5;
enum R_386_GLOB_DAT = 6;
enum R_386_JMP_SLOT = 7;
enum R_386_RELATIVE = 8;
enum R_386_GOTOFF = 9;
enum R_386_GOTPC = 10;
enum R_386_32PLT = 11;
enum R_386_TLS_GD_PLT = 12;
enum R_386_TLS_LDM_PLT = 13;
enum R_386_TLS_TPOFF = 14;
enum R_386_TLS_IE = 15;
enum R_386_TLS_GOTIE = 16;
enum R_386_TLS_LE = 17;
enum R_386_TLS_GD = 18;
enum R_386_TLS_LDM = 19;
enum R_386_16 = 20;
enum R_386_PC16 = 21;
enum R_386_8 = 22;
enum R_386_PC8 = 23;
enum R_386_UNKNOWN24 = 24;
enum R_386_UNKNOWN25 = 25;
enum R_386_UNKNOWN26 = 26;
enum R_386_UNKNOWN27 = 27;
enum R_386_UNKNOWN28 = 28;
enum R_386_UNKNOWN29 = 29;
enum R_386_UNKNOWN30 = 30;
enum R_386_UNKNOWN31 = 31;
enum R_386_TLS_LDO_32 = 32;
enum R_386_UNKNOWN33 = 33;
enum R_386_UNKNOWN34 = 34;
enum R_386_TLS_DTPMOD32 = 35;
enum R_386_TLS_DTPOFF32 = 36;
enum R_386_UNKNOWN37 = 37;
enum R_386_SIZE32 = 38;
enum R_386_NUM = 39;

enum ELF_386_MAXPGSZ = 0x10000;

enum SHF_ORDERED = 0x40000000;
enum SHF_EXCLUDE = 0x80000000;

enum SHN_BEFORE = 0xff00;
enum SHN_AFTER = 0xff01;

enum M_PLT_INSSIZE = 6;
enum M_PLT_XNumber = 1;
enum M_GOT_XDYNAMIC = 0;
enum M_GOT_XLINKMAP = 1;
enum M_GOT_XRTLD = 2;
enum M_GOT_XNumber = 3;

enum M32_WORD_ALIGN = 4;
enum M32_PLT_ENTSIZE = 16;
enum M32_PLT_ALIGN = M32_WORD_ALIGN;
enum M32_GOT_ENTSIZE = 4;
enum M32_PLT_RESERVSZ = (M_PLT_XNumber * M32_PLT_ENTSIZE);

version(_ELF64) {}
else
{
enum M_WORD_ALIGN = M32_WORD_ALIGN;
enum M_PLT_ENTSIZE = M32_PLT_ENTSIZE;
enum M_PLT_ALIGN = M32_PLT_ALIGN;
enum M_PLT_RESERVSZ = M32_PLT_RESERVSZ;
enum M_GOT_ENTSIZE = M32_GOT_ENTSIZE;
}
181 changes: 181 additions & 0 deletions src/core/sys/solaris/sys/elf_SPARC.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
/**
* D header file for Solaris.
*
* $(LINK2 http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/sys/elf_SPARC.h, illumos sys/elf_SPARC.h)
*/
module core.sys.solaris.sys.elf_SPARC;

version (Solaris):
extern (C):
nothrow:

enum EF_SPARC_32PLUS_MASK = 0xffff00;
enum EF_SPARC_32PLUS = 0x000100;
enum EF_SPARC_EXT_MASK = 0xffff00;
enum EF_SPARC_SUN_US1 = 0x000200;
enum EF_SPARC_HAL_R1 = 0x000400;
enum EF_SPARC_SUN_US3 = 0x000800;

enum EF_SPARCV9_MM = 0x3;
enum EF_SPARCV9_TSO = 0x0;
enum EF_SPARCV9_PSO = 0x1;
enum EF_SPARCV9_RMO = 0x2;

enum R_SPARC_NONE = 0;
enum R_SPARC_8 = 1;
enum R_SPARC_16 = 2;
enum R_SPARC_32 = 3;
enum R_SPARC_DISP8 = 4;
enum R_SPARC_DISP16 = 5;
enum R_SPARC_DISP32 = 6;
enum R_SPARC_WDISP30 = 7;
enum R_SPARC_WDISP22 = 8;
enum R_SPARC_HI22 = 9;
enum R_SPARC_22 = 10;
enum R_SPARC_13 = 11;
enum R_SPARC_LO10 = 12;
enum R_SPARC_GOT10 = 13;
enum R_SPARC_GOT13 = 14;
enum R_SPARC_GOT22 = 15;
enum R_SPARC_PC10 = 16;
enum R_SPARC_PC22 = 17;
enum R_SPARC_WPLT30 = 18;
enum R_SPARC_COPY = 19;
enum R_SPARC_GLOB_DAT = 20;
enum R_SPARC_JMP_SLOT = 21;
enum R_SPARC_RELATIVE = 22;
enum R_SPARC_UA32 = 23;
enum R_SPARC_PLT32 = 24;
enum R_SPARC_HIPLT22 = 25;
enum R_SPARC_LOPLT10 = 26;
enum R_SPARC_PCPLT32 = 27;
enum R_SPARC_PCPLT22 = 28;
enum R_SPARC_PCPLT10 = 29;
enum R_SPARC_10 = 30;
enum R_SPARC_11 = 31;
enum R_SPARC_64 = 32;
enum R_SPARC_OLO10 = 33;
enum R_SPARC_HH22 = 34;
enum R_SPARC_HM10 = 35;
enum R_SPARC_LM22 = 36;
enum R_SPARC_PC_HH22 = 37;
enum R_SPARC_PC_HM10 = 38;
enum R_SPARC_PC_LM22 = 39;
enum R_SPARC_WDISP16 = 40;
enum R_SPARC_WDISP19 = 41;
enum R_SPARC_GLOB_JMP = 42;
enum R_SPARC_7 = 43;
enum R_SPARC_5 = 44;
enum R_SPARC_6 = 45;
enum R_SPARC_DISP64 = 46;
enum R_SPARC_PLT64 = 47;
enum R_SPARC_HIX22 = 48;
enum R_SPARC_LOX10 = 49;
enum R_SPARC_H44 = 50;
enum R_SPARC_M44 = 51;
enum R_SPARC_L44 = 52;
enum R_SPARC_REGISTER = 53;
enum R_SPARC_UA64 = 54;
enum R_SPARC_UA16 = 55;
enum R_SPARC_TLS_GD_HI22 = 56;
enum R_SPARC_TLS_GD_LO10 = 57;
enum R_SPARC_TLS_GD_ADD = 58;
enum R_SPARC_TLS_GD_CALL = 59;
enum R_SPARC_TLS_LDM_HI22 = 60;
enum R_SPARC_TLS_LDM_LO10 = 61;
enum R_SPARC_TLS_LDM_ADD = 62;
enum R_SPARC_TLS_LDM_CALL = 63;
enum R_SPARC_TLS_LDO_HIX22 = 64;
enum R_SPARC_TLS_LDO_LOX10 = 65;
enum R_SPARC_TLS_LDO_ADD = 66;
enum R_SPARC_TLS_IE_HI22 = 67;
enum R_SPARC_TLS_IE_LO10 = 68;
enum R_SPARC_TLS_IE_LD = 69;
enum R_SPARC_TLS_IE_LDX = 70;
enum R_SPARC_TLS_IE_ADD = 71;
enum R_SPARC_TLS_LE_HIX22 = 72;
enum R_SPARC_TLS_LE_LOX10 = 73;
enum R_SPARC_TLS_DTPMOD32 = 74;
enum R_SPARC_TLS_DTPMOD64 = 75;
enum R_SPARC_TLS_DTPOFF32 = 76;
enum R_SPARC_TLS_DTPOFF64 = 77;
enum R_SPARC_TLS_TPOFF32 = 78;
enum R_SPARC_TLS_TPOFF64 = 79;
enum R_SPARC_GOTDATA_HIX22 = 80;
enum R_SPARC_GOTDATA_LOX10 = 81;
enum R_SPARC_GOTDATA_OP_HIX22 = 82;
enum R_SPARC_GOTDATA_OP_LOX10 = 83;
enum R_SPARC_GOTDATA_OP = 84;
enum R_SPARC_H34 = 85;
enum R_SPARC_SIZE32 = 86;
enum R_SPARC_SIZE64 = 87;
enum R_SPARC_NUM = 88;

enum R_SPARC_L34 = R_SPARC_L44;

enum ELF_SPARC_MAXPGSZ = 0x10000;
enum ELF_SPARCV9_MAXPGSZ = 0x100000;

enum SHT_SPARC_GOTDATA = 0x70000000;

enum SHF_ORDERED = 0x40000000;
enum SHF_EXCLUDE = 0x80000000;

enum SHN_BEFORE = 0xff00;
enum SHN_AFTER = 0xff01;

enum STT_SPARC_REGISTER = 13;

enum DT_SPARC_REGISTER = 0x70000001;

enum STO_SPARC_REGISTER_G1 = 0x1;
enum STO_SPARC_REGISTER_G2 = 0x2;
enum STO_SPARC_REGISTER_G3 = 0x3;
enum STO_SPARC_REGISTER_G4 = 0x4;
enum STO_SPARC_REGISTER_G5 = 0x5;
enum STO_SPARC_REGISTER_G6 = 0x6;
enum STO_SPARC_REGISTER_G7 = 0x7;

enum M_PLT_INSSIZE = 4;
enum M_PLT_XNumber = 4;
enum M_GOT_XDYNAMIC = 0;
enum M_GOT_XNumber = 1;

enum M32_WORD_ALIGN = 4;
enum M32_PLT_ENTSIZE = 12;
enum M32_PLT_ALIGN = M_WORD_ALIGN;
enum M32_GOT_ENTSIZE = 4;
enum M32_GOT_MAXSMALL = 2048;
enum M32_PLT_RESERVSZ = (M_PLT_XNumber * M32_PLT_ENTSIZE);

enum M64_WORD_ALIGN = 8;
enum M64_PLT_ENTSIZE = 32;
enum M64_PLT_ALIGN = 256;
enum M64_GOT_ENTSIZE = 8;
enum M64_GOT_MAXSMALL = 1024;
enum M64_PLT_RESERVSZ = (M_PLT_XNumber * M64_PLT_ENTSIZE);

enum M64_PLT_NEARPLTS = 0x8000;
enum M64_PLT_FENTSIZE = 24;
enum M64_PLT_PSIZE = 8;
enum M64_PLT_FBLKCNTS = 160;
enum M64_PLT_FBLOCKSZ = (M64_PLT_FBLKCNTS * M64_PLT_ENTSIZE);

version(_ELF64)
{
enum M_WORD_ALIGN = M64_WORD_ALIGN;
enum M_PLT_ENTSIZE = M64_PLT_ENTSIZE;
enum M_PLT_ALIGN = M64_PLT_ALIGN;
enum M_PLT_RESERVSZ = M64_PLT_RESERVSZ;
enum M_GOT_ENTSIZE = M64_GOT_ENTSIZE;
enum M_GOT_MAXSMALL = M64_GOT_MAXSMALL;
}
else
{
enum M_WORD_ALIGN = M32_WORD_ALIGN;
enum M_PLT_ENTSIZE = M32_PLT_ENTSIZE;
enum M_PLT_ALIGN = M32_PLT_ALIGN;
enum M_PLT_RESERVSZ = M32_PLT_RESERVSZ;
enum M_GOT_ENTSIZE = M32_GOT_ENTSIZE;
enum M_GOT_MAXSMALL = M32_GOT_MAXSMALL;
}
111 changes: 111 additions & 0 deletions src/core/sys/solaris/sys/elf_amd64.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
/**
* D header file for Solaris.
*
* $(LINK2 http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/sys/elf_amd64.h, illumos sys/elf_amd64.h)
*/
module core.sys.solaris.sys.elf_amd64;

version (Solaris):
extern (C):
nothrow:

public import core.sys.solaris.sys.elf_386;

enum R_AMD64_NONE = 0;
enum R_AMD64_64 = 1;
enum R_AMD64_PC32 = 2;
enum R_AMD64_GOT32 = 3;
enum R_AMD64_PLT32 = 4;
enum R_AMD64_COPY = 5;
enum R_AMD64_GLOB_DAT = 6;
enum R_AMD64_JUMP_SLOT = 7;
enum R_AMD64_RELATIVE = 8;
enum R_AMD64_GOTPCREL = 9;
enum R_AMD64_32 = 10;
enum R_AMD64_32S = 11;
enum R_AMD64_16 = 12;
enum R_AMD64_PC16 = 13;
enum R_AMD64_8 = 14;
enum R_AMD64_PC8 = 15;
enum R_AMD64_DTPMOD64 = 16;
enum R_AMD64_DTPOFF64 = 17;
enum R_AMD64_TPOFF64 = 18;
enum R_AMD64_TLSGD = 19;
enum R_AMD64_TLSLD = 20;
enum R_AMD64_DTPOFF32 = 21;
enum R_AMD64_GOTTPOFF = 22;
enum R_AMD64_TPOFF32 = 23;
enum R_AMD64_PC64 = 24;
enum R_AMD64_GOTOFF64 = 25;
enum R_AMD64_GOTPC32 = 26;
enum R_AMD64_GOT64 = 27;
enum R_AMD64_GOTPCREL64 = 28;
enum R_AMD64_GOTPC64 = 29;
enum R_AMD64_GOTPLT64 = 30;
enum R_AMD64_PLTOFF64 = 31;
enum R_AMD64_SIZE32 = 32;
enum R_AMD64_SIZE64 = 33;
enum R_AMD64_NUM = 34;


enum R_X86_64_NONE = R_AMD64_NONE;
enum R_X86_64_64 = R_AMD64_64;
enum R_X86_64_PC32 = R_AMD64_PC32;
enum R_X86_64_GOT32 = R_AMD64_GOT32;
enum R_X86_64_PLT32 = R_AMD64_PLT32;
enum R_X86_64_COPY = R_AMD64_COPY;
enum R_X86_64_GLOB_DAT = R_AMD64_GLOB_DAT;
enum R_X86_64_JUMP_SLOT = R_AMD64_JUMP_SLOT;
enum R_X86_64_RELATIVE = R_AMD64_RELATIVE;
enum R_X86_64_GOTPCREL = R_AMD64_GOTPCREL;
enum R_X86_64_32 = R_AMD64_32;
enum R_X86_64_32S = R_AMD64_32S;
enum R_X86_64_16 = R_AMD64_16;
enum R_X86_64_PC16 = R_AMD64_PC16;
enum R_X86_64_8 = R_AMD64_8;
enum R_X86_64_PC8 = R_AMD64_PC8;
enum R_X86_64_DTPMOD64 = R_AMD64_DTPMOD64;
enum R_X86_64_DTPOFF64 = R_AMD64_DTPOFF64;
enum R_X86_64_TPOFF64 = R_AMD64_TPOFF64;
enum R_X86_64_TLSGD = R_AMD64_TLSGD;
enum R_X86_64_TLSLD = R_AMD64_TLSLD;
enum R_X86_64_DTPOFF32 = R_AMD64_DTPOFF32;
enum R_X86_64_GOTTPOFF = R_AMD64_GOTTPOFF;
enum R_X86_64_TPOFF32 = R_AMD64_TPOFF32;
enum R_X86_64_PC64 = R_AMD64_PC64;
enum R_X86_64_GOTPC32 = R_AMD64_GOTPC32;
enum R_X86_64_GOTOFF64 = R_AMD64_GOTOFF64;
enum R_X86_64_GOT64 = R_AMD64_GOT64;
enum R_X86_64_GOTPCREL64 = R_AMD64_GOTPCREL64;
enum R_X86_64_GOTPC64 = R_AMD64_GOTPC64;
enum R_X86_64_GOTPLT64 = R_AMD64_GOTPLT64;
enum R_X86_64_PLTOFF64 = R_AMD64_PLTOFF64;
enum R_X86_64_SIZE32 = R_AMD64_SIZE32;
enum R_X86_64_SIZE64 = R_AMD64_SIZE64;
enum R_X86_64_NUM = R_AMD64_NUM;

enum ELF_AMD64_MAXPGSZ = 0x100000;

enum SHT_AMD64_UNWIND = 0x70000001;
enum SHT_X86_64_UNWIND = SHT_AMD64_UNWIND;

enum SHF_AMD64_LARGE = 0x10000000;
enum SHF_X86_64_LARGE = SHF_AMD64_LARGE;

enum SHN_AMD64_LCOMMON = 0xff02;
enum SHN_X86_64_LCOMMON = SHN_AMD64_LCOMMON;

enum M64_WORD_ALIGN = 8;
enum M64_PLT_ENTSIZE = M32_PLT_ENTSIZE;
enum M64_PLT_ALIGN = M64_WORD_ALIGN;
enum M64_GOT_ENTSIZE = 8;
enum M64_PLT_RESERVSZ = M32_PLT_RESERVSZ;

version(_ELF64)
{
enum M_WORD_ALIGN = M64_WORD_ALIGN;
enum M_PLT_ENTSIZE = M64_PLT_ENTSIZE;
enum M_PLT_ALIGN = M64_PLT_ALIGN;
enum M_PLT_RESERVSZ = M64_PLT_RESERVSZ;
enum M_GOT_ENTSIZE = M64_GOT_ENTSIZE;
}
14 changes: 14 additions & 0 deletions src/core/sys/solaris/sys/elf_notes.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
* D header file for Solaris.
*
* $(LINK2 http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/sys/elf_notes.h, illumos sys/elf_notes.h)
*/
module core.sys.solaris.sys.elf_notes;

version (Solaris):
extern (C):
nothrow:

enum ELF_NOTE_SOLARIS = "SUNW Solaris";

enum ELF_NOTE_PAGESIZE_HINT = 1;
28 changes: 28 additions & 0 deletions src/core/sys/solaris/sys/elftypes.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* D header file for Solaris.
*
* $(LINK2 http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/sys/elftypes.h, illumos sys/elftypes.h)
*/
module core.sys.solaris.sys.elftypes;

version (Solaris):
extern (C):
nothrow:

import core.stdc.stdint;

alias uint32_t Elf32_Addr;
alias uint16_t Elf32_Half;
alias uint32_t Elf32_Off;
alias int32_t Elf32_Sword;
alias uint32_t Elf32_Word;

alias uint64_t Elf64_Addr;
alias uint16_t Elf64_Half;
alias uint64_t Elf64_Off;
alias int32_t Elf64_Sword;
alias int64_t Elf64_Sxword;
alias uint32_t Elf64_Word;
alias uint64_t Elf64_Xword;
alias uint64_t Elf64_Lword;
alias uint64_t Elf32_Lword;