| /** |
| * D header file for Solaris |
| * |
| * $(LINK2 http://src.illumos.org/source/xref/illumos-gate/usr/src/head/dlfcn.h, illumos dlfcn.h) |
| */ |
| |
| module core.sys.solaris.dlfcn; |
| |
| version (Solaris): |
| extern (C): |
| nothrow: |
| @nogc: |
| |
| public import core.sys.posix.dlfcn; |
| import core.stdc.config; |
| |
| // enum RTLD_LAZY = 0x00001; // POSIX |
| // enum RTLD_NOW = 0x00002; // POSIX |
| enum RTLD_NOLOAD = 0x00004; |
| enum RTLD_DEEPBIND = 0x00008; |
| |
| // enum RTLD_GLOBAL = 0x00100; // POSIX |
| // enum RTLD_LOCAL = 0; // POSIX |
| enum RTLD_PARENT = 0x00200; |
| enum RTLD_GROUP = 0x00400; |
| enum RTLD_WORLD = 0x00800; |
| enum RTLD_NODELETE = 0x01000; |
| enum RTLD_FIRST = 0x02000; |
| enum RTLD_CONFGEN = 0x10000; |
| |
| |
| enum |
| { |
| RTLD_NEXT = cast(void *)-1, |
| RTLD_DEFAULT = cast(void *)-2, |
| RTLD_SELF = cast(void *)-3, |
| RTLD_PROBE = cast(void *)-4, |
| } |
| |
| alias c_ulong Lmid_t; |
| |
| void* dlmopen(Lmid_t, const scope char*, int); |
| |
| enum |
| { |
| RTLD_REL_RELATIVE = 0x00001, |
| RTLD_REL_EXEC = 0x00002, |
| RTLD_REL_DEPENDS = 0x00004, |
| RTLD_REL_PRELOAD = 0x00008, |
| RTLD_REL_SELF = 0x00010, |
| RTLD_REL_WEAK = 0x00020, |
| RTLD_REL_ALL = 0x00fff, |
| RTLD_MEMORY = 0x01000, |
| RTLD_STRIP = 0x02000, |
| RTLD_NOHEAP = 0x04000, |
| RTLD_CONFSET = 0x10000, |
| } |
| |
| int dldump(const scope char*, const scope char*, int); |
| |
| struct Dl_info |
| { |
| const(char)* dli_fname; |
| void* dli_fbase; |
| const(char)* dli_sname; |
| void* dli_saddr; |
| } |
| |
| enum |
| { |
| RTLD_DL_SYMENT = 1, |
| RTLD_DL_LINKMAP = 2, |
| } |
| |
| int dladdr(const(void)*, Dl_info*); |
| int dladdr1(void*, Dl_info*, void**, int); |
| |
| enum |
| { |
| RTLD_DI_LMID = 1, |
| RTLD_DI_LINKMAP = 2, |
| RTLD_DI_CONFIGADDR = 3, |
| RTLD_DI_SERINFO = 4, |
| RTLD_DI_SERINFOSIZE = 5, |
| RTLD_DI_ORIGIN = 6, |
| RTLD_DI_PROFILENAME = 7, |
| RTLD_DI_PROFILEOUT = 8, |
| RTLD_DI_GETSIGNAL = 9, |
| RTLD_DI_SETSIGNAL = 10, |
| RTLD_DI_ARGSINFO = 11, |
| RTLD_DI_MMAPS = 12, |
| RTLD_DI_MMAPCNT = 13, |
| RTLD_DI_DEFERRED = 14, |
| RTLD_DI_DEFERRED_SYM = 15, |
| RTLD_DI_MAX = 15, |
| } |
| |
| int dlinfo(void*, int, void*); |
| |
| struct Dl_serpath |
| { |
| char* dls_name; |
| uint dls_flags; |
| } |
| |
| struct Dl_serinfo |
| { |
| size_t dls_size; |
| uint dls_cnt; |
| Dl_serpath[1] dls_serpath; |
| } |
| |
| // FIXME: Dl_argsinfo, Dl_mapinfo, Dl_amd64_unwindinfo are missing |