On 10 nov 2010, at 18:52, Sean Kelly wrote:

> On Nov 10, 2010, at 1:55 AM, Jacob Carlborg wrote:
> 
>> I've been thinking about this and I'm trying to think of everything to get 
>> this right the first time so I have a couple of questions:
>> 
>> * I though it might be a good idea to add support for running module 
>> constructors for dynamically loaded libraries (i.e. libraries loaded with 
>> dlopen). Then I was think I need to add the new module infos to the array of 
>> existing ones and when/if the library is unloaded remove the module infos 
>> added by the library. Now for the question: is an array still a good data 
>> structure for this or should we use an associative array or something else?
> 
> The real tricky part is adding the new TLS data to running threads.  It might 
> be necessary to call thread_suspendAll() and then some new routine to graft 
> the TLS data in place.  And things get even worse if dlclose is called.
> 
>> * If we change to an associative array could the image received in the 
>> callback function registered by _dyld_register_func_for_add_image be used as 
>> the key in the associative array?
> 
> Seems like that should work, since the address will be globally unique... 
> unless dlclose is called, the data is retained, and then dlopen called on a 
> new library.

I don't think that will be a problem. I if dlclose is called I will remove the 
image from the data structure and if the library is loaded again with dlopen I 
will at the image to the data structure again.

>> * This is a question about the _dyld_register_func_for_add_image function. 
>> Can I assume that all images sent to the registered callback functions are 
>> of the same architecture that I'm currently compiling? For example, I'm 
>> running a universal binary and it's running the 32bit part of the binary. 
>> Then I'm loading a universal dynamic library, it will only load the 32bit 
>> part since that's the part I'm running?
> 
> I think that's a reasonable assumption.
> 
>> * What to name the function, where to put it and when to call it?
> 
> Probably src/rt/memory_osx.c.  Give it a name like _d_whatever and it can be 
> changed later if needed.
> _______________________________________________
> phobos mailing list
> [email protected]
> http://lists.puremagic.com/mailman/listinfo/phobos

-- 
/Jacob Carlborg

_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to