1 /**
2  * D header file for Solaris
3  *
4  * $(LINK2 http://src.illumos.org/source/xref/illumos-gate/usr/src/head/dlfcn.h, illumos dlfcn.h)
5  */
6 
7 module core.sys.solaris.dlfcn;
8 
9 version (Solaris):
10 extern (C):
11 nothrow:
12 @nogc:
13 
14 public import core.sys.posix.dlfcn;
15 import core.stdc.config;
16 
17 enum
18 {
19     RTLD_NEXT    = cast(void *)-1,
20     RTLD_DEFAULT = cast(void *)-2,
21     RTLD_SELF    = cast(void *)-3,
22     RTLD_PROBE   = cast(void *)-4,
23 }
24 
25 alias c_ulong Lmid_t;
26 
27 void* dlmopen(Lmid_t, const scope char*, int);
28 
29 enum
30 {
31     RTLD_REL_RELATIVE = 0x00001,
32     RTLD_REL_EXEC     = 0x00002,
33     RTLD_REL_DEPENDS  = 0x00004,
34     RTLD_REL_PRELOAD  = 0x00008,
35     RTLD_REL_SELF     = 0x00010,
36     RTLD_REL_WEAK     = 0x00020,
37     RTLD_REL_ALL      = 0x00fff,
38     RTLD_MEMORY       = 0x01000,
39     RTLD_STRIP        = 0x02000,
40     RTLD_NOHEAP       = 0x04000,
41     RTLD_CONFSET      = 0x10000,
42 }
43 
44 int dldump(const scope char*, const scope char*, int);
45 
46 enum
47 {
48     RTLD_DL_SYMENT = 1,
49     RTLD_DL_LINKMAP = 2,
50 }
51 
52 int dladdr1(void*, Dl_info*, void**, int);
53 
54 enum
55 {
56     RTLD_DI_LMID         = 1,
57     RTLD_DI_LINKMAP      = 2,
58     RTLD_DI_CONFIGADDR   = 3,
59     RTLD_DI_SERINFO      = 4,
60     RTLD_DI_SERINFOSIZE  = 5,
61     RTLD_DI_ORIGIN       = 6,
62     RTLD_DI_PROFILENAME  = 7,
63     RTLD_DI_PROFILEOUT   = 8,
64     RTLD_DI_GETSIGNAL    = 9,
65     RTLD_DI_SETSIGNAL    = 10,
66     RTLD_DI_ARGSINFO     = 11,
67     RTLD_DI_MMAPS        = 12,
68     RTLD_DI_MMAPCNT      = 13,
69     RTLD_DI_DEFERRED     = 14,
70     RTLD_DI_DEFERRED_SYM = 15,
71     RTLD_DI_MAX          = 15,
72 }
73 
74 int dlinfo(void*, int, void*);
75 
76 struct Dl_serpath
77 {
78     char*  dls_name;
79     uint   dls_flags;
80 }
81 
82 struct Dl_serinfo
83 {
84     size_t         dls_size;
85     uint           dls_cnt;
86     Dl_serpath[1]  dls_serpath;
87 }
88 
89 // FIXME: Dl_argsinfo, Dl_mapinfo, Dl_amd64_unwindinfo are missing