Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.

Commit 7758492

Browse files
authored
Merge pull request #1635 from klickverbot/osx-dlfcn
Add non-POSIX dlfcn extensions for Darwin, add const to dladdr
2 parents b26811d + 4e8eb14 commit 7758492

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

src/core/sys/darwin/dlfcn.d

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* D header file for Darwin.
3+
*
4+
* $(LINK2 https://opensource.apple.com/source/dyld/dyld-360.22/include/dlfcn.h, Apple dyld/dlfcn.h)
5+
*
6+
* Copyright: Copyright David Nadlinger 2016.
7+
* License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
8+
* Authors: David Nadlinger
9+
*/
10+
module core.sys.darwin.dlfcn;
11+
12+
version (OSX)
13+
version = Darwin;
14+
else version (iOS)
15+
version = Darwin;
16+
else version (TVOS)
17+
version = Darwin;
18+
else version (WatchOS)
19+
version = Darwin;
20+
21+
version (Darwin):
22+
extern(C):
23+
nothrow:
24+
@nogc:
25+
26+
public import core.sys.posix.dlfcn;
27+
28+
struct Dl_info
29+
{
30+
const(char)* dli_fname;
31+
void* dli_fbase;
32+
const(char)* dli_sname;
33+
void* dli_saddr;
34+
}
35+
36+
int dladdr(in void* addr, Dl_info* info);
37+
38+
enum RTLD_NOLOAD = 0x10;
39+
enum RTLD_NODELETE = 0x80;
40+
enum RTLD_FIRST = 0x100;

src/core/sys/linux/dlfcn.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ static if (__USE_GNU)
265265
void* dli_saddr;
266266
}
267267

268-
int dladdr(void* __address, Dl_info* __info);
268+
int dladdr(in void* __address, Dl_info* __info);
269269
int dladdr1(void* __address, Dl_info* __info, void** __extra_info, int __flags);
270270

271271
enum

src/core/sys/posix/dlfcn.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ version( CRuntime_Glibc )
120120

121121
deprecated("Please use core.sys.linux.dlfcn for non-POSIX extensions")
122122
{
123-
int dladdr(void* addr, Dl_info* info);
123+
int dladdr(in void* addr, Dl_info* info);
124124
void* dlvsym(void* handle, in char* symbol, in char* version_);
125125

126126
struct Dl_info

0 commit comments

Comments
 (0)