On 2015-06-06 20:52, bitwise wrote:
I'm trying to fix shared libraries for OSX. I've updated sections_osx.d
to support multiple images, however, the method of notifying druntime
when to load/unload images needs to be fixed.
Currently, the following method is used to register a callback for when
images are loaded, which, based on the last conversation on this topic,
is a no-go. Basically, the problem is that there is no way of
unregistering the callbacks.
https://github.com/D-Programming-Language/druntime/blob/master/src/rt/sections_osx.d#L76
So the solution is to add __attribute__((constructor/destructor)) calls
to all D binaries on OSX to initialize the images.
The code looks like this:
http://dpaste.com/0SF46B6
So my question is, what is the best way to get this code into the binary?
I suppose the code could be pre-compiled into an object file and linked
by dmd during compilation, but adding external dependencies to dmd seems
like a bad idea.
I would say DMD could generate this code, but where would it go?
For Linux (and FreeBSD I think) the compiler already generates a
__attribute__((constructor)) function which calls _d_dso_registry [1].
Modify the compiler to do the same thing for OS X.
[1]
https://github.com/D-Programming-Language/druntime/blob/master/src/rt/sections_elf_shared.d#L321
--
/Jacob Carlborg