[Ecls-list] Some MinGW patches etc.

Samium Gromoff _deepfire at feelingofgreen.ru
Wed Sep 29 16:06:54 UTC 2010


I have some patches in my ECL git tree, among which are:

  - some MinGW fixes,
  - a revert of a float-related crasher,
  - a src/Makefile.in improvement.

With these patches, I was able to build ECL with latest mingw-get-inst
(version 20100910).

Apropos the revert (which is an obviously improper fix, but a proper one
is way out of my competence area) -- the commit
655809781a6c2df3fc8b040d8be01f05177e31ec was making ecl_min bust the
stack during the build, like this:

^                                     ^
| 32394 more calls to ratio_to_double |
#32394 0x004453e9 in ratio_to_double (num=<value optimized out>,
    den=<value optimized out>) at d:/usr/src/ecl/src/c/number.d:759
#32395 0x004453e9 in ratio_to_double (num=<value optimized out>,
    den=<value optimized out>) at d:/usr/src/ecl/src/c/number.d:759
#32396 0x0044d3d2 in make_float (num=0x117c400, exp=<value optimized out>,
    exp_char=<value optimized out>, sign=1)
    at d:/usr/src/ecl/src/c/reader/parse_number.d:105
#32397 0x004171dc in ecl_read_object_with_delimiter (in=<value optimized out>,
    delimiter=6, flags=0, a=<value optimized out>) at d:/usr/src/ecl/src/c/read.d:364
#32398 0x004172c3 in do_read_delimited_list (d=41, in=0x109bfa0, proper_list=0)
    at d:/usr/src/ecl/src/c/read.d:1431
#32399 0x004173b5 in left_parenthesis_reader (in=0x109bfa0, character=0xa2)
    at d:/usr/src/ecl/src/c/read.d:443
#32400 0x0041a252 in ecl_apply_from_stack_frame (frame=0x22d530, x=0xdc36e0)
    at d:/usr/src/ecl/src/c/eval.d:52
#32401 0x0041a3a0 in cl_funcall (narg=<value optimized out>, function=0xdc36e0)
    at d:/usr/src/ecl/src/c/eval.d:129
#32402 0x00416f3b in ecl_read_object_with_delimiter (in=0x109bfa0, delimiter=-1,
    flags=0, a=<value optimized out>) at d:/usr/src/ecl/src/c/read.d:202
#32403 0x004186b3 in cl_read (narg=4) at d:/usr/src/ecl/src/c/read.d:1383
#32404 0x00452391 in APPLY (n=4, fn=0x418658 <cl_read>, x=0xe00048)
    at d:/usr/src/ecl/src/c/apply.d:29
#32405 0x00449483 in ecl_interpret (frame=0x22d894, env=0x1, bytecodes=0x1079de8)
    at d:/usr/src/ecl/src/c/interpreter.d:499

And yet, one issue remains:

$ ls /d/usr/src/ecl-bin
Copyright    cmp.asd        ecl.dll       libdefsystem.a       sb-bsd-sockets.asd
LGPL         cmp.fas        ecl.exe       librt.a              sb-bsd-sockets.fas
TAGS         defsystem.asd  ecl_min.exe   libsb-bsd-sockets.a  share
asdf.fas     defsystem.fas  help.doc      libsockets.a         sockets.asd
build-stamp  dpp.exe        libasdf.a     prebuilt-asdf.asd    sockets.fas
bytecmp.asd  ecl            libbytecmp.a  rt.asd               ucd.dat
bytecmp.fas  ecl-config     libcmp.a      rt.fas

$ /d/usr/src/ecl-bin/ecl.exe
ECL (Embeddable Common-Lisp) 10.7.1
Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
Copyright (C) 1993 Giuseppe Attardi
Copyright (C) 2000 Juan J. Garcia-Ripoll
ECL is free software, and you are welcome to redistribute it
under certain conditions; see file 'Copyright' for details.
Type :h for Help.
Top level in: #<process SI:TOP-LEVEL 00a90fc0>.
> (require :Asdf)

Module error: Don't know how to REQUIRE ASDF.

Available restarts:

1. (RESTART-TOPLEVEL) Go back to Top-Level REPL.

Broken at SI:BYTECODES. [Evaluation of: (REQUIRE :ASDF)] In: #<process SI:TOP-LEVEL 00a90fc0>.
>> :b

  > SI:BYTECODES [Evaluation of: (REQUIRE :ASDF)]
  > si:bytecodes [Evaluation of: (si:top-level)]

Still, loading them manually works just fine:

> (load "d:/usr/src/ecl-bin/cmp.fas")

;;; Loading "d:/usr/src/ecl-bin/cmp.fas"
> (load "d:/usr/src/ecl-bin/asdf.fas")

;;; Loading "d:/usr/src/ecl-bin/asdf.fas"

A couple strategically-placed FORMAT statements in src/lsp/module.lsp
revealed that the system's *MODULE-PROVIDER-FUNCTIONS* member serving 
REQUIRE suffers from NAMESTRING's misrendering of logical pathnames:

(namestring #P"SYS:ASDF") => "SYS:ASDF"

  Samium Gromoff
"Actually I made up the term 'object-oriented', and I can tell you I
did not have C++ in mind." - Alan Kay (OOPSLA 1997 Keynote)

More information about the ecl-devel mailing list