On Sun, May 30, 2010 at 10:47 AM, Marilyn Sander <
marilyn-san...@earthlink.net> wrote:

>
>  [...]  My reasoning was that the thing being
> loaded is a shared object (.so file).  The system loader (ld) has to be
> invoked for loading
> a shared object.  That seems to me to require a separate process, with an
> environment
> stack inherited from the Perl process that invokes it.


There's a problem here.  What you describe is not what happens.

The system loader, ld, is used to create executables and shared objects.  It
indeed is a separate program that is most often invoked automatically by a
compiler - GCC for example.

There is a wholly separate module, often with a name such as ld.so.1, which
is the dynamic library loader.  It is actually a part of the program you are
running - Perl in the current context.  It is responsible for loading other
shared libraries into the current process.  Dynamically loading a shared
library adds the code to the current process; it does not invoke a separate
program/process.


-- 
Jonathan Leffler <jonathan.leff...@gmail.com>  #include <disclaimer.h>
Guardian of DBD::Informix - v2008.0513 - http://dbi.perl.org
"Blessed are we who can laugh at ourselves, for we shall never cease to be
amused."

Reply via email to