summaryrefslogtreecommitdiff
path: root/libphobos/libdruntime/core/sys/posix/dlfcn.d
diff options
context:
space:
mode:
Diffstat (limited to 'libphobos/libdruntime/core/sys/posix/dlfcn.d')
-rw-r--r--libphobos/libdruntime/core/sys/posix/dlfcn.d80
1 files changed, 80 insertions, 0 deletions
diff --git a/libphobos/libdruntime/core/sys/posix/dlfcn.d b/libphobos/libdruntime/core/sys/posix/dlfcn.d
index f6476ec3106..a9519ca234a 100644
--- a/libphobos/libdruntime/core/sys/posix/dlfcn.d
+++ b/libphobos/libdruntime/core/sys/posix/dlfcn.d
@@ -66,59 +66,100 @@ version (CRuntime_Glibc)
{
version (X86_Any)
{
+ // http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/dlfcn.h
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
+ enum RTLD_BINDING_MASK = 0x3;
+ enum RTLD_NOLOAD = 0x00004;
+ enum RTLD_DEEPBIND = 0x00008;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0x00000;
+ enum RTLD_NODELETE = 0x01000;
}
else version (HPPA_Any)
{
+ // http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/hppa/bits/dlfcn.h
enum RTLD_LAZY = 0x0001;
enum RTLD_NOW = 0x0002;
+ enum RTLD_BINDING_MASK = 0x3;
+ enum RTLD_NOLOAD = 0x00004;
+ enum RTLD_DEEPBIND = 0x00008;
enum RTLD_GLOBAL = 0x0100;
enum RTLD_LOCAL = 0;
+ enum RTLD_NODELETE = 0x01000;
}
else version (MIPS_Any)
{
+ // http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/mips/bits/dlfcn.h
enum RTLD_LAZY = 0x0001;
enum RTLD_NOW = 0x0002;
+ enum RTLD_BINDING_MASK = 0x3;
+ enum RTLD_NOLOAD = 0x00008;
+ enum RTLD_DEEPBIND = 0x00010;
enum RTLD_GLOBAL = 0x0004;
enum RTLD_LOCAL = 0;
+ enum RTLD_NODELETE = 0x01000;
}
else version (PPC_Any)
{
+ // http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/dlfcn.h
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
+ enum RTLD_BINDING_MASK = 0x3;
+ enum RTLD_NOLOAD = 0x00004;
+ enum RTLD_DEEPBIND = 0x00008;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
+ enum RTLD_NODELETE = 0x01000;
}
else version (ARM_Any)
{
+ // http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/dlfcn.h
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
+ enum RTLD_BINDING_MASK = 0x3;
+ enum RTLD_NOLOAD = 0x00004;
+ enum RTLD_DEEPBIND = 0x00008;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
+ enum RTLD_NODELETE = 0x01000;
}
else version (RISCV_Any)
{
+ // http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/dlfcn.h
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
+ enum RTLD_BINDING_MASK = 0x3;
+ enum RTLD_NOLOAD = 0x00004;
+ enum RTLD_DEEPBIND = 0x00008;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
+ enum RTLD_NODELETE = 0x01000;
}
else version (SPARC_Any)
{
+ // http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/dlfcn.h
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
+ enum RTLD_BINDING_MASK = 0x3;
+ enum RTLD_NOLOAD = 0x00004;
+ enum RTLD_DEEPBIND = 0x00008;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
+ enum RTLD_NODELETE = 0x01000;
+
}
else version (IBMZ_Any)
{
+ // http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/dlfcn.h
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
+ enum RTLD_BINDING_MASK = 0x3;
+ enum RTLD_NOLOAD = 0x00004;
+ enum RTLD_DEEPBIND = 0x00008;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0;
+ enum RTLD_NODELETE = 0x01000;
}
else
static assert(0, "unimplemented");
@@ -127,13 +168,25 @@ version (CRuntime_Glibc)
char* dlerror();
void* dlopen(const scope char*, int);
void* dlsym(void*, const scope char*);
+ int dladdr(const scope void*, Dl_info*);
+
+ struct Dl_info
+ {
+ const(char)* dli_fname;
+ void* dli_fbase;
+ const(char)* dli_sname;
+ void* dli_saddr;
+ }
}
else version (Darwin)
{
enum RTLD_LAZY = 0x00001;
enum RTLD_NOW = 0x00002;
+ enum RTLD_NOLOAD = 0x10;
+ enum RTLD_NODELETE = 0x80;
enum RTLD_GLOBAL = 0x00100;
enum RTLD_LOCAL = 0x00000;
+ enum RTLD_FIRST = 0x100;
int dlclose(void*);
char* dlerror();
@@ -153,8 +206,12 @@ else version (FreeBSD)
{
enum RTLD_LAZY = 1;
enum RTLD_NOW = 2;
+ enum RTLD_MODEMASK = 0x3;
enum RTLD_GLOBAL = 0x100;
enum RTLD_LOCAL = 0;
+ enum RTLD_TRACE = 0x200;
+ enum RTLD_NODELETE = 0x01000;
+ enum RTLD_NOLOAD = 0x02000;
int dlclose(void*);
char* dlerror();
@@ -199,6 +256,8 @@ else version (OpenBSD)
enum RTLD_NOW = 2;
enum RTLD_GLOBAL = 0x100;
enum RTLD_LOCAL = 0;
+ enum RTLD_TRACE = 0x200;
+ enum RTLD_NODELETE = 0x400;
int dlclose(void*);
char* dlerror();
@@ -218,8 +277,12 @@ else version (DragonFlyBSD)
{
enum RTLD_LAZY = 1;
enum RTLD_NOW = 2;
+ enum RTLD_MODEMASK = 0x3;
enum RTLD_GLOBAL = 0x100;
enum RTLD_LOCAL = 0;
+ enum RTLD_TRACE = 0x200;
+ enum RTLD_NODELETE = 0x01000;
+ enum RTLD_NOLOAD = 0x02000;
int dlclose(void*);
char* dlerror();
@@ -239,8 +302,16 @@ else version (Solaris)
{
enum RTLD_LAZY = 1;
enum RTLD_NOW = 2;
+ enum RTLD_NOLOAD = 0x00004;
+ enum RTLD_DEEPBIND = 0x00008;
enum RTLD_GLOBAL = 0x100;
enum RTLD_LOCAL = 0;
+ enum RTLD_PARENT = 0x00200;
+ enum RTLD_GROUP = 0x00400;
+ enum RTLD_WORLD = 0x00800;
+ enum RTLD_NODELETE = 0x01000;
+ enum RTLD_FIRST = 0x02000;
+ enum RTLD_CONFGEN = 0x10000;
int dlclose(void*);
char* dlerror();
@@ -343,4 +414,13 @@ else version (CRuntime_UClibc)
char* dlerror();
void* dlopen(const scope char*, int);
void* dlsym(void*, const scope char*);
+ int dladdr(const scope void*, Dl_info*);
+
+ struct Dl_info
+ {
+ const(char)* dli_fname;
+ void* dli_fbase;
+ const(char)* dli_sname;
+ void* dli_saddr;
+ }
}