| /** |
| * D header file for POSIX. |
| * |
| * Copyright: Copyright Sean Kelly 2005 - 2009. |
| * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). |
| * Authors: Sean Kelly, Alex Rønne Petersen |
| * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition |
| */ |
| |
| /* Copyright Sean Kelly 2005 - 2009. |
| * Distributed under the Boost Software License, Version 1.0. |
| * (See accompanying file LICENSE or copy at |
| * http://www.boost.org/LICENSE_1_0.txt) |
| */ |
| module core.sys.posix.dlfcn; |
| |
| import core.sys.posix.config; |
| |
| version (OSX) |
| version = Darwin; |
| else version (iOS) |
| version = Darwin; |
| else version (TVOS) |
| version = Darwin; |
| else version (WatchOS) |
| version = Darwin; |
| |
| version (ARM) version = ARM_Any; |
| version (AArch64) version = ARM_Any; |
| version (HPPA) version = HPPA_Any; |
| version (MIPS32) version = MIPS_Any; |
| version (MIPS64) version = MIPS_Any; |
| version (PPC) version = PPC_Any; |
| version (PPC64) version = PPC_Any; |
| version (RISCV32) version = RISCV_Any; |
| version (RISCV64) version = RISCV_Any; |
| version (S390) version = IBMZ_Any; |
| version (SPARC) version = SPARC_Any; |
| version (SPARC64) version = SPARC_Any; |
| version (SystemZ) version = IBMZ_Any; |
| version (X86) version = X86_Any; |
| version (X86_64) version = X86_Any; |
| |
| version (Posix): |
| extern (C): |
| nothrow: |
| @nogc: |
| @system: |
| |
| // |
| // XOpen (XSI) |
| // |
| /* |
| RTLD_LAZY |
| RTLD_NOW |
| RTLD_GLOBAL |
| RTLD_LOCAL |
| |
| int dlclose(void*); |
| char* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| */ |
| |
| version (CRuntime_Glibc) |
| { |
| version (X86_Any) |
| { |
| enum RTLD_LAZY = 0x00001; |
| enum RTLD_NOW = 0x00002; |
| enum RTLD_GLOBAL = 0x00100; |
| enum RTLD_LOCAL = 0x00000; |
| } |
| else version (HPPA_Any) |
| { |
| enum RTLD_LAZY = 0x0001; |
| enum RTLD_NOW = 0x0002; |
| enum RTLD_GLOBAL = 0x0100; |
| enum RTLD_LOCAL = 0; |
| } |
| else version (MIPS_Any) |
| { |
| enum RTLD_LAZY = 0x0001; |
| enum RTLD_NOW = 0x0002; |
| enum RTLD_GLOBAL = 0x0004; |
| enum RTLD_LOCAL = 0; |
| } |
| else version (PPC_Any) |
| { |
| enum RTLD_LAZY = 0x00001; |
| enum RTLD_NOW = 0x00002; |
| enum RTLD_GLOBAL = 0x00100; |
| enum RTLD_LOCAL = 0; |
| } |
| else version (ARM_Any) |
| { |
| enum RTLD_LAZY = 0x00001; |
| enum RTLD_NOW = 0x00002; |
| enum RTLD_GLOBAL = 0x00100; |
| enum RTLD_LOCAL = 0; |
| } |
| else version (RISCV_Any) |
| { |
| enum RTLD_LAZY = 0x00001; |
| enum RTLD_NOW = 0x00002; |
| enum RTLD_GLOBAL = 0x00100; |
| enum RTLD_LOCAL = 0; |
| } |
| else version (SPARC_Any) |
| { |
| enum RTLD_LAZY = 0x00001; |
| enum RTLD_NOW = 0x00002; |
| enum RTLD_GLOBAL = 0x00100; |
| enum RTLD_LOCAL = 0; |
| } |
| else version (IBMZ_Any) |
| { |
| enum RTLD_LAZY = 0x00001; |
| enum RTLD_NOW = 0x00002; |
| enum RTLD_GLOBAL = 0x00100; |
| enum RTLD_LOCAL = 0; |
| } |
| else |
| static assert(0, "unimplemented"); |
| |
| int dlclose(void*); |
| char* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| } |
| else version (Darwin) |
| { |
| enum RTLD_LAZY = 0x00001; |
| enum RTLD_NOW = 0x00002; |
| enum RTLD_GLOBAL = 0x00100; |
| enum RTLD_LOCAL = 0x00000; |
| |
| int dlclose(void*); |
| char* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| int dladdr(scope const void* addr, Dl_info* info); |
| |
| struct Dl_info |
| { |
| const(char)* dli_fname; |
| void* dli_fbase; |
| const(char)* dli_sname; |
| void* dli_saddr; |
| } |
| } |
| else version (FreeBSD) |
| { |
| enum RTLD_LAZY = 1; |
| enum RTLD_NOW = 2; |
| enum RTLD_GLOBAL = 0x100; |
| enum RTLD_LOCAL = 0; |
| |
| int dlclose(void*); |
| char* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| int dladdr(const(void)* addr, Dl_info* info); |
| |
| struct Dl_info |
| { |
| const(char)* dli_fname; |
| void* dli_fbase; |
| const(char)* dli_sname; |
| void* dli_saddr; |
| } |
| } |
| else version (NetBSD) |
| { |
| enum RTLD_LAZY = 1; |
| enum RTLD_NOW = 2; |
| enum RTLD_GLOBAL = 0x100; |
| enum RTLD_LOCAL = 0x200; |
| enum RTLD_NODELETE = 0x01000; /* Do not remove members. */ |
| enum RTLD_NOLOAD = 0x02000; |
| |
| int dlclose(void*); |
| char* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| int dladdr(const(void)* addr, Dl_info* info); |
| |
| struct Dl_info |
| { |
| const(char)* dli_fname; |
| void* dli_fbase; |
| const(char)* dli_sname; |
| void* dli_saddr; |
| } |
| } |
| else version (OpenBSD) |
| { |
| enum RTLD_LAZY = 1; |
| enum RTLD_NOW = 2; |
| enum RTLD_GLOBAL = 0x100; |
| enum RTLD_LOCAL = 0; |
| |
| int dlclose(void*); |
| char* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| int dladdr(const(void)* addr, Dl_info* info); |
| |
| struct Dl_info |
| { |
| const(char)* dli_fname; |
| void* dli_fbase; |
| const(char)* dli_sname; |
| void* dli_saddr; |
| } |
| } |
| else version (DragonFlyBSD) |
| { |
| enum RTLD_LAZY = 1; |
| enum RTLD_NOW = 2; |
| enum RTLD_GLOBAL = 0x100; |
| enum RTLD_LOCAL = 0; |
| |
| int dlclose(void*); |
| char* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| int dladdr(const(void)* addr, Dl_info* info); |
| |
| struct Dl_info |
| { |
| const(char)* dli_fname; |
| void* dli_fbase; |
| const(char)* dli_sname; |
| void* dli_saddr; |
| } |
| } |
| else version (Solaris) |
| { |
| enum RTLD_LAZY = 1; |
| enum RTLD_NOW = 2; |
| enum RTLD_GLOBAL = 0x100; |
| enum RTLD_LOCAL = 0; |
| |
| int dlclose(void*); |
| char* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| int dladdr(const(void)* addr, Dl_info* info); |
| |
| struct Dl_info |
| { |
| const(char)* dli_fname; |
| void* dli_fbase; |
| const(char)* dli_sname; |
| void* dli_saddr; |
| } |
| } |
| else version (CRuntime_Bionic) |
| { |
| enum |
| { |
| RTLD_NOW = 0, |
| RTLD_LAZY = 1, |
| RTLD_LOCAL = 0, |
| RTLD_GLOBAL = 2 |
| } |
| |
| int dladdr(const scope void*, Dl_info*); |
| int dlclose(void*); |
| const(char)* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| |
| struct Dl_info |
| { |
| const(char)* dli_fname; |
| void* dli_fbase; |
| const(char)* dli_sname; |
| void* dli_saddr; |
| } |
| } |
| else version (CRuntime_Musl) |
| { |
| enum { |
| RTLD_LAZY = 1, |
| RTLD_NOW = 2, |
| RTLD_NOLOAD = 4, |
| RTLD_NODELETE = 4096, |
| RTLD_GLOBAL = 256, |
| RTLD_LOCAL = 0, |
| } |
| int dlclose(void*); |
| const(char)* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| |
| int dladdr(scope const void *addr, Dl_info *info); |
| struct Dl_info |
| { |
| const(char)* dli_fname; |
| void* dli_fbase; |
| const(char)* dli_sname; |
| void* dli_saddr; |
| } |
| } |
| else version (CRuntime_UClibc) |
| { |
| version (X86_64) |
| { |
| enum RTLD_LAZY = 0x0001; |
| enum RTLD_NOW = 0x0002; |
| enum RTLD_BINDING_MASK = 0x3; |
| enum RTLD_NOLOAD = 0x00004; |
| enum RTLD_GLOBAL = 0x00100; |
| enum RTLD_LOCAL = 0; |
| enum RTLD_NODELETE = 0x01000; |
| } |
| else version (MIPS32) |
| { |
| enum RTLD_LAZY = 0x0001; |
| enum RTLD_NOW = 0x0002; |
| enum RTLD_BINDING_MASK = 0x3; |
| enum RTLD_NOLOAD = 0x00008; |
| enum RTLD_GLOBAL = 0x0004; |
| enum RTLD_LOCAL = 0; |
| enum RTLD_NODELETE = 0x01000; |
| } |
| else version (ARM) |
| { |
| enum RTLD_LAZY = 0x0001; |
| enum RTLD_NOW = 0x0002; |
| enum RTLD_BINDING_MASK = 0x3; |
| enum RTLD_NOLOAD = 0x00004; |
| enum RTLD_GLOBAL = 0x00100; |
| enum RTLD_LOCAL = 0; |
| enum RTLD_NODELETE = 0x01000; |
| } |
| else |
| static assert(0, "unimplemented"); |
| |
| int dlclose(void*); |
| char* dlerror(); |
| void* dlopen(const scope char*, int); |
| void* dlsym(void*, const scope char*); |
| } |