[Vm-dev] Call to Unix experts: how i can obtain a pointers to mmap/dlopen/dlsym functions?

Igor Stasenko siguctua at gmail.com
Sat Sep 25 18:01:59 UTC 2010


On 25 September 2010 20:36, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>
>
>
> On Sat, Sep 25, 2010 at 10:31 AM, Igor Stasenko <siguctua at gmail.com> wrote:
>>
>> On 25 September 2010 20:17, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>> >
>> >
>> >
>> > On Unix systems using dlopen et al that's dlsym(RTLD_DEFAULT,symbolname).  I don't know what the equivalent, if any, there is on Windows.
>> >
>>
>> On Windows i'm using crtdll.dll , which is C-run-time dymanically
>> loadable library.
>> And unless VM compiled using different compiler (not GNU one), i am
>> pretty sure that this name will remain same.
>> And there is no 'global symbol namespace' concept in windows. You
>> always should supply a distinct module handle (be it dll, or
>> process module).
>
> So what should the abstraction be?
> - a global space implemented directly by dlsym(RTLD_DEFAULT,...) on Unix and synthesized by enumerating al loaded modules on Windows

I'm not sure if its necessary for Windows. i'm not missing such
functionality on Windows.
Moreover, i can always implement it in image, because Kernel32.dll is
always Kernel32.dll, and it is the place where
i can find loadLibrary() and getProcAddres() and many other functions,
like enum loaded modules etc, so i can discover all info i need
about running environment. So, the absence of global symbol namespace
on Windows its not an issue as to me.

In constrast, on Unix, a dlsym(RTLD_DEFAULT,...) seems like the only
way how you can hook-in into running environment for
introspection purposes.
So, i think we could leave things as it is, except modify linux version of

 void *ioLoadSymbolOfLengthFromModule(sqInt functionNameIndex, sqInt
functionNameLength, void *moduleHandle)

to accept null moduleHandle so, then it will lookup the symbol from
global namespace.

> - provide a primitive that enumerates the loaded library names (using the standard lookup prims to search them)?
>

Yes, that's would be userful.
One really needs to know, what libraries is already loaded in order to
avoid attempts to load different version(s) of them.

>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>
>
>



-- 
Best regards,
Igor Stasenko AKA sig.


More information about the Vm-dev mailing list