Bill Allombert on Tue, 26 Nov 2002 22:17:07 +0100

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Patch for install: allow to change prototype

On Tue, Nov 26, 2002 at 12:31:45PM -0800, Ilya Zakharevich wrote:
> On Tue, Nov 26, 2002 at 02:55:33PM +0100, Karim BELABAS wrote:
> > > BTW, I see no reason to have the warning at all.  How is it different from
> > >  ? f() = 12
> > >  ? f() = 12
> > 
> > I don't know how to safely "reload" a symbol from an external library. In
> > particular, you cannot recompile an external module, and re-install a
> > routine. You can kill() its GP wrapper, then formally re-install it, but
> > unless dlclose() is called first, you install the old version (still loaded
> > in memory).
> If I understand it correct, the *only* information we keep about the
> address space of the external library is an entry in entree.  Thus it
> should be safe to do dlclose() at the appropriate time.  (Note that
> Perl has no notion of unloading a module due to much more flexible
> interface, thus uncontrollable "pollution" of data with addresses from
> the library.)

As I understand, the problem is not so much if doing dlclose() is safe, it is
wether dlclose() will really unload the module so that a subsequent dlopen()
load the new module, especially if it has the same filename that the previous

Anyway I would be very interested if you can make that work!

PS: Any clue about compiling dlopen()able module for MacOS X ??