comparison man/emodules.texi @ 880:beddd25fe24a

[xemacs-hg @ 2002-06-24 22:00:17 by youngs] 2002-06-17 Jerry James <james@xemacs.org> * emodules.texi (Loading other Modules): Describe why we do not use RTLD_GLOBAL. 2002-06-17 Jerry James <james@xemacs.org> * sysdll.c: Remove RTLD_GLOBAL initialization. * sysdll.c (dll_open): Do not use RTLD_GLOBAL.
author youngs
date Mon, 24 Jun 2002 22:00:25 +0000
parents 7d972c3de90a
children 2b58b7fd831c
comparison
equal deleted inserted replaced
879:f809bc97829a 880:beddd25fe24a
481 that were loaded since the top level call to @code{emodules_load} 481 that were loaded since the top level call to @code{emodules_load}
482 will be unloaded. This means that if any child modules fail to load, 482 will be unloaded. This means that if any child modules fail to load,
483 then their parents will also fail to load. This does not include 483 then their parents will also fail to load. This does not include
484 previous successful calls to @code{emodules_load} at the top level. 484 previous successful calls to @code{emodules_load} at the top level.
485 485
486 @strong{Warning:} Modules are @emph{not} loaded with the
487 @code{RTLD_GLOBAL} flag. The practical upshot is that individual
488 modules do not have access to each other's C symbols. One module cannot
489 make a C function call to a function defined in another module, nor can
490 it read or set a C variable in another module. All interaction between
491 modules must, therefore, take place at the Lisp level. This is by
492 design. Other projects have attempted to use @code{RTLD_GLOBAL}, only
493 to find that spurious symbol name clashes were the result. Helper
494 functions often have simple names, increasing the probability of such a
495 clash. If you really need to share symbols between modules, create a
496 shared library containing those symbols, and link your modules with
497 that library. Otherwise, interactions between modules must take place
498 via Lisp function calls and Lisp variables accesses.
499
486 @node Using ellcc, Defining Functions, Anatomy of a Module, Top 500 @node Using ellcc, Defining Functions, Anatomy of a Module, Top
487 @chapter Using @code{ellcc} 501 @chapter Using @code{ellcc}
488 @cindex @code{ellcc} 502 @cindex @code{ellcc}
489 @cindex module compiler 503 @cindex module compiler
490 504