dlsym discussion..

Robert Collins robert.collins@itdomain.com.au
Sun Jun 3 07:07:00 GMT 2001


---- Original Message -----
From: "Christopher Faylor" <cgf@redhat.com>
> >Thoughts? I'm a bit hesitant at trying to second guess what dll's
have
> >been implicitly loaded by the Win32System, but if that information is
> >readily available to cygwin, I'm happy to code up a iterating
dlsym().
>
> cygwin keeps a list of DLLs loaded via dlopen.  It could register
other
> modules via dll_entry() but that is not a foolproof method due to load
> order problems.

BTW: There's no rush on this for me - it doesn't affect what I'm doing -
I'm just interested in seeing if I can find a way to provide the unix
dlsym behaviour. Likewise no-one in userland is complaining about this,
so I hope it won't suddenly become an issue.

Hmm. Well it seems to me there are two sets of dlls: implicitly loaded
dll's that we were linked against, and
"modules"/"plugins"/whateveryouwanttocallthem that get dlopened.

Both should behave the same, but the key difference is that implicitly
loaded dll's should be visible to a dlopen(NULL,);dlsym() combination,
whereas "modules" will give us access to a path name. Thus tracking via
dlopen()'s isn't likely to provide a comprehensive list.

I'm starting to suspect that to do this we'll need something nasty like
calculating the dependencies for the current exe, and then finding via
the search path and GetModuleHandle() [to test if the dll is the one in
memory)].

If by, dll_entry() you mean inserting some custom notification code in
every cygwin compiled dll to allow us to be told as dll's load, that has
the downside of not working with any existing or non-cygwin dll,
something that I'd rather avoid.

Anyone happen to know where to get source for ldd ?

Rob

>
> cgf
>



More information about the Cygwin-developers mailing list