| /** |
| * D header file for Solaris. |
| * |
| * $(LINK2 http://src.illumos.org/source/xref/illumos-gate/usr/src/head/libelf.h, illumos libelf.h) |
| */ |
| module core.sys.solaris.libelf; |
| |
| version (Solaris): |
| extern (C): |
| nothrow: |
| |
| import core.stdc.config; |
| import core.sys.posix.sys.types; |
| import core.sys.solaris.sys.elf; |
| |
| enum Elf_Cmd |
| { |
| ELF_C_NULL = 0, |
| ELF_C_READ, |
| ELF_C_WRITE, |
| ELF_C_CLR, |
| ELF_C_SET, |
| ELF_C_FDDONE, |
| ELF_C_FDREAD, |
| ELF_C_RDWR, |
| ELF_C_WRIMAGE, |
| ELF_C_IMAGE, |
| ELF_C_NUM |
| } |
| |
| enum ELF_F_DIRTY = 0x1; |
| enum ELF_F_LAYOUT = 0x4; |
| |
| enum Elf_Kind |
| { |
| ELF_K_NONE = 0, |
| ELF_K_AR, |
| ELF_K_COFF, |
| ELF_K_ELF, |
| ELF_K_NUM |
| } |
| |
| enum Elf_Type |
| { |
| ELF_T_BYTE = 0, |
| ELF_T_ADDR, |
| ELF_T_DYN, |
| ELF_T_EHDR, |
| ELF_T_HALF, |
| ELF_T_OFF, |
| ELF_T_PHDR, |
| ELF_T_RELA, |
| ELF_T_REL, |
| ELF_T_SHDR, |
| ELF_T_SWORD, |
| ELF_T_SYM, |
| ELF_T_WORD, |
| ELF_T_VDEF, |
| ELF_T_VNEED, |
| ELF_T_SXWORD, |
| ELF_T_XWORD, |
| ELF_T_SYMINFO, |
| ELF_T_NOTE, |
| ELF_T_MOVE, |
| ELF_T_MOVEP, |
| ELF_T_CAP, |
| ELF_T_NUM |
| } |
| |
| struct Elf |
| { |
| } |
| |
| struct Elf_Scn |
| { |
| } |
| |
| struct Elf_Arhdr |
| { |
| char* ar_name; |
| time_t ar_date; |
| uid_t ar_uid; |
| gid_t ar_gid; |
| mode_t ar_mode; |
| off_t ar_size; |
| char* ar_rawname; |
| } |
| |
| struct Elf_Arsym |
| { |
| char* as_name; |
| size_t as_off; |
| c_ulong as_hash; |
| } |
| |
| struct Elf_Data |
| { |
| void* d_buf; |
| Elf_Type d_type; |
| size_t d_size; |
| off_t d_off; |
| size_t d_align; |
| uint d_version; |
| } |
| |
| Elf* elf_begin(int, Elf_Cmd, Elf*); |
| int elf_cntl(Elf*, Elf_Cmd); |
| int elf_end(Elf*); |
| const(char)* elf_errmsg(int); |
| int elf_errno(); |
| void elf_fill(int); |
| uint elf_flagdata(Elf_Data*, Elf_Cmd, uint); |
| uint elf_flagehdr(Elf*, Elf_Cmd, uint); |
| uint elf_flagelf(Elf*, Elf_Cmd, uint); |
| uint elf_flagphdr(Elf*, Elf_Cmd, uint); |
| uint elf_flagscn(Elf_Scn*, Elf_Cmd, uint); |
| uint elf_flagshdr(Elf_Scn*, Elf_Cmd, uint); |
| size_t elf32_fsize(Elf_Type, size_t, uint); |
| Elf_Arhdr* elf_getarhdr(Elf*); |
| Elf_Arsym* elf_getarsym(Elf*, size_t*); |
| off_t elf_getbase(Elf*); |
| Elf_Data* elf_getdata(Elf_Scn*, Elf_Data*); |
| Elf32_Ehdr* elf32_getehdr(Elf*); |
| char* elf_getident(Elf*, size_t*); |
| Elf32_Phdr* elf32_getphdr(Elf*); |
| Elf_Scn* elf_getscn(Elf*, size_t); |
| Elf32_Shdr* elf32_getshdr(Elf_Scn*); |
| int elf_getphnum(Elf*, size_t*); |
| int elf_getphdrnum(Elf*, size_t*); |
| int elf_getshnum(Elf*, size_t*); |
| int elf_getshdrnum(Elf*, size_t*); |
| int elf_getshstrndx(Elf*, size_t*); |
| int elf_getshdrstrndx(Elf*, size_t*); |
| c_ulong elf_hash(const scope char*); |
| uint elf_sys_encoding(); |
| long elf32_checksum(Elf*); |
| Elf_Kind elf_kind(Elf*); |
| Elf* elf_memory(char*, size_t); |
| size_t elf_ndxscn(Elf_Scn*); |
| Elf_Data* elf_newdata(Elf_Scn*); |
| Elf32_Ehdr* elf32_newehdr(Elf*); |
| Elf32_Phdr* elf32_newphdr(Elf*, size_t); |
| Elf_Scn* elf_newscn(Elf*); |
| Elf_Scn* elf_nextscn(Elf*, Elf_Scn*); |
| Elf_Cmd elf_next(Elf*); |
| size_t elf_rand(Elf*, size_t); |
| Elf_Data* elf_rawdata(Elf_Scn*, Elf_Data*); |
| char* elf_rawfile(Elf*, size_t*); |
| char* elf_strptr(Elf*, size_t, size_t); |
| off_t elf_update(Elf*, Elf_Cmd); |
| uint elf_version(uint); |
| Elf_Data* elf32_xlatetof(Elf_Data*, const scope Elf_Data*, uint); |
| Elf_Data* elf32_xlatetom(Elf_Data*, const scope Elf_Data*, uint); |
| |
| version (D_LP64) |
| { |
| size_t elf64_fsize(Elf_Type, size_t, uint); |
| Elf64_Ehdr* elf64_getehdr(Elf*); |
| Elf64_Phdr* elf64_getphdr(Elf*); |
| Elf64_Shdr* elf64_getshdr(Elf_Scn*); |
| long elf64_checksum(Elf*); |
| Elf64_Ehdr* elf64_newehdr(Elf*); |
| Elf64_Phdr* elf64_newphdr(Elf*, size_t); |
| Elf_Data* elf64_xlatetof(Elf_Data*, const scope Elf_Data*, uint); |
| Elf_Data* elf64_xlatetom(Elf_Data*, const scope Elf_Data*, uint); |
| } |