[Ecls-list] latest cvs update fails on cygwin

Larry Clapp larry at theclapp.org
Sun Oct 22 17:10:46 UTC 2006


On Mon, Oct 16, 2006 at 11:59:58AM +1000, David Creelman wrote:
> Hi,
> Latest recompile fails.
> 
> cvs update -d -P; rm -rf build; ./configure; make clean all
> ...
> ...
> 
> ;;; Compiling (DEFUN MASK-FIELD ...).
> ;;; Compiling (DEFUN DPB ...).
> ;;; Compiling (DEFUN DEPOSIT-FIELD ...).
> ;;; End of Pass 1.
> ;;; Emitting code for ISQRT.
> ;;; Emitting code for ABS.
> ;;; Emitting code for PHASE.
> ;;; Emitting code for SIGNUM.
> ;;; Emitting code for CIS.
> ;;; Emitting code for ASIN.
> #<a DIVISION-BY-ZERO>
> Top level.
> SI>

This is still true, as of CVS from 10/21, 11am ET.

Debug session:

> % ./ecl_min compile
> ;*** Lisp core booted ****
> ECL (Embeddable Common Lisp)  65536 pages
> ;;; Compiling src:lsp;numlib.lsp.
> [... snip ...]
> ;;; End of Pass 1.
> ;;; Emitting code for ISQRT.
> ;;; Emitting code for ABS.
> ;;; Emitting code for PHASE.
> ;;; Emitting code for SIGNUM.
> ;;; Emitting code for CIS.
> ;;; Emitting code for ASIN.
> #<a DIVISION-BY-ZERO>
> Top level.
> SI> :b
> Backtrace: EVAL-WITH-ENV > tpl > default-debugger >
> universal-error-handler > round > scale-exponent > format-general-aux
> > format-general > lambda > interpret-directive-list > formatter-aux >
> format > c::wt1 > c::wt-number > c::wt-loc > c::wt1 >
> c::wt-c-inline-loc > c::wt-loc > c::wt1 > c::set-jump-false >
> c::unwind-exit > c::call-global > c::c2call-global > c::c2expr >
> c::c2expr* > c::cjf > c::cjf > c::c2if > c::c2expr > c::c2let* >
> c::c2expr > c::c2if > c::c2expr > c::c2decl-body > c::c2expr >
> c::c2lambda-expr > c::t3local-fun > c::emit-local-funs
> SI> :p
> Broken at TPL.
> SI> :p
> Broken at DEFAULT-DEBUGGER.
> SI> :p
> Broken at UNIVERSAL-ERROR-HANDLER.
> SI> :p
> Broken at ROUND.
> SI> :v
> Block names: SCALE-EXPONENT.
> Local variables:
>   ORIGINAL-X: 1.0
>   X: 1.0d0
>   EXPONENT: 1
>   SIG: 0.5d0
> SI> (round 0.3)
> #<a DIVISION-BY-ZERO>
> Top level.
> SI>> (round 0.3d0)
> #<a DIVISION-BY-ZERO>
> Top level.
> SI>>>

In ecl_min, CL:ROUND fails on any floating point number -- but only
under Cygwin.  Under Linux and Win32 native it works just fine.  :(

I note in passing that in round1() in num_co.d (which cl:round calls),
the code for ECL_SHORT_FLOAT is whacked: there's an assignment to f
but f is undefined, and there's a "goto FLOAT" but FLOAT is undefined.
I don't think this causes the DIVISION-BY-ZERO, but I thought I'd
point it out.

-- Larry Clapp





More information about the ecl-devel mailing list