osx shared libraries.

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 16 23:21:31 PDT 2015


On 2015-06-17 01:19, bitwise wrote:

> Heh... trying ;)
>
> Here, there seems to be a function to put things in ctors/dtors, but it
> looks like it was copy pasted from the Elf code:
> https://github.com/D-Programming-Language/dmd/blob/c718790165c3124c61e510d8352b9cb9d8ae0198/src/backend/machobj.c#L1532
>
>
> I've rewritten the first line as follows, but still working on what I
> need to do to actually put the function in there.
> IDXSEC seg = s->Sseg = MachObj::getsegment("__mod_init_func", "__DATA",
> 2, S_MOD_INIT_FUNC_POINTERS);
>
> I think the S_COALESCED flag could be added to the above to allow a
> definition in every obj file like Martin's approach, but I would rather
> have an explicit DllMain and put the init code in that one obj file. It
> seems more intuitive to me.
>
> So if I get Obj::staticctor and Obj::staticdtor working on osx, that's
> half the problem solved... I think.

Obj::staticctor does not seem to be used for setting up the runtime. 
This is the code that generates the runtime initialization [1], I 
believe, at least it calls "_d_dso_registry". There's a lot more code 
there than I first hoped.

[1] 
https://github.com/D-Programming-Language/dmd/blob/c718790165c3124c61e510d8352b9cb9d8ae0198/src/backend/elfobj.c#L3183

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list