[Ecls-list] Incompatible changes. CVS HEAD might be broken
Juan Jose Garcia Ripoll
juan.ripoll at mpq.mpg.de
Mon Oct 6 10:24:06 UTC 2003
Hi,
I wanted to warn everybody that I am conducting now important changes on the
build process of ECL, and which have important side effects (see below). The
goals are
* Restore the ability of ECL to garbage collect dynamically linked libraries
that are not used. For instance if you do (COMPILE 'FOO '(LAMBDA (X)...)) and
later on overwrite the definition of FOO, the compiled code should be
unloaded and memory reclaimed.
* Use a different extension (.FAS) for compiled files. The reason for this is
to avoid confusing dlopen(), which treats files with names lib*.so
differently. It also makes a distinction between _modules_ (.FAS extension,
can be loaded) and _libraries_ (.SO or .DLL extension, can be linked against
ECL).
* Fix the way in which libraries are created to avoid security holes. Right
now all I have figured out is including the --rpath flag when anything is
linked against libecl.so. In a near future it may happen that the ECL library
is installed in a more standard location.
* Ensure that ECL does not look for libraries in the ${prefix}/lib/ecl
directory already during build time.
The current CVS tree includes fixes that attemp to solve all these problem. In
particular, the first one is completely solved. However, users of CVS should
be aware of the following.
1) I had to forbid the Boehm-Weiser garbage collector to scan the data segment
of any DLLs. This means that people building shared libraries should either
a) make sure that all data is pointed to either by lisp global variables
b) store data in C variables which have been register_static_root()'ed
c) set GC_no_dls = 0 and lose the ability to garbage collect code.
2) These fixes have been developed under linux-ix86 and have not been tested
yet on other platforms. The sparc platform indeed produces a SIGSEG during
build. I am stuck now on a piece of code that the GCC seems to miscompile.
Help would be welcome.
3) The functions STATIC-LIBRARY-PATHNAME and SHARED-LIBRARY-PATHNAME
disappear. Instead, the COMPILE-FILE-PATHNAME function now accepts a keyword
argument, :TYPE, which can take the values, :DLL, :LIB, :C, :H, :O, :PROGRAM,
:FASL. See the documentation for details.
Regards,
Juanjo
--
Max-Planck-Institut fuer Quantenoptik +49/(0)89/32905-345
Hans-Kopfermann-Str. 1, D-85748 www.mpq.mpg.de/Theorygroup/CIRAC/
Garching b. Muenchen, Germany Juan.Ripoll at mpq.mpg.de
More information about the ecl-devel
mailing list