Mercurial > hg > xemacs-beta
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 |