shared libs for OSX

bitwise via Digitalmars-d digitalmars-d at puremagic.com
Fri May 29 16:03:26 PDT 2015


On Fri, 29 May 2015 14:05:10 -0400, Jacob Carlborg <doob at me.com> wrote:

> On 2015-05-29 18:45, bitwise wrote:
>
>> I'm going to test it out this weekend, but if I do get the wrong
>> address, I think I can add a symbol with "__attribute__ ((visibility
>> ("hidden")))" and use dladdr on that instead. I don't think hidden
>> symbols should collide.
>
> Doesn't "dlopen" open the current image if "null" is passed?

No, it opens the image for the main program, even if called from  a shared  
lib.

> And that void* which is returned is actually a "mach_header*", if I  
> recall correctly.

Not sure if this is true.

This works for sure in terms of getting "a" mach_header*, but I still have  
to check if visibility(hidden) allows each shared lib to have it's own  
copy of "_symbol":

__attribute__ ((visibility("hidden"))) static int _symbol = 1;
Dl_info info;
if(dladdr(&symbol, &info))
     const struct mach_header* myHeader = cast(const struct  
mach_header*)info.dli_fbase


https://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man3/dladdr.3.html

   Bit


More information about the Digitalmars-d mailing list