[Ecls-list] Compiler problems (Important fixes)
Juan Jose Garcia Ripoll
worm at arrakis.es
Sat Dec 14 09:05:02 UTC 2002
On Friday 13 December 2002 14:55, Rolf Wester wrote:
> The 3. Problem occurs when I try to compile "ext.lisp" of the
> "port"-package in the CLOCC. It doesn't compile unless I change the line:
> (declare (function f0 f1))
> in the function definitions of compose-f and compose-all to:
> #-ecl (declare (function f0 f1))
> When trying to load "ext.so" I get:
> ;;; Loading "/home/wester/progs2/clocc/src/port/ext.so"
> Segmentation violation.
> Wrong type argument to a compiled function.
> Broken at LOAD.
Several remarks. The first one, is that the "ext.lisp" file from the CLOCC
archive needs patches to compile under ECL. Otherwise it removes a critical
function, QUIT. Once you apply the patches which I have attached to this
file, it should compile and run under the latest CVS version of ECL.
The second remark is that, thanks to your e-mail, I have discovered several
bugs in ECL:
- As shipped, ECL defaulted to (OPTIMIZE (SAFETY 0) (SPEED 3)). This is a very
bad thing, because function calls are made without checking whether a symbol
has a function definition or not. I have fixed this. As additional safety
measure, I introduced checks in APPLY and FUNCALL to ensure that a valid
pointer is passed to them.
- LOAD-PATHNAME was not implemented. The segmentation violation was due to ECL
trying to call this function, without checking whether the function was
actually bound (See paragraph above).
- As I mentioned in a previous message, ECL interpreteted (DECLARE
(FUNCTION...) as (DECLARE (FTYPE ...)). This has also been fixed in CVS.
More information about the ecl-devel