[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gcl-devel] ANSI on Windows build failure.
From: |
Camm Maguire |
Subject: |
Re: [Gcl-devel] ANSI on Windows build failure. |
Date: |
30 Sep 2003 00:06:47 -0400 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
Greetings!
"Mike Thomas" <address@hidden> writes:
> Hi Camm.
>
> I think I may be onto something.
>
Great!
> In a message to James Amundsen a few minutes ago re this issue in relation
> to Maxima, I looked at the cut and pasted error message and thought, "Hang
> on, safety is zero, speed three".
>
>
> So I reversed these values in the PCL code and look what happens:
>
> ===========================================================================
> ......
> Finished compiling c:/cvs/stable/gcl-2.6.1.ansi/unixport/../pcl/pcl_boot.o.
> Loading binary of PCL_BOOT...
>
> Error: The function |SYSTEM:%SET-COMPILED-FUNCTION-NAME inline| is
> undefined.
> Fast links are on: do (si::use-fast-links nil) for debugging
> Error signalled by SYSTEM:%SET-COMPILED-FUNCTION-NAME.
> Broken at SYSTEM:%SET-COMPILED-FUNCTION-NAME. Type :H for Help.
> PCL>>
1) I proclaimed safety to 3 and speed to 0, then saved the trad image
before compiling pcl. Subsequent build of pcl went fine, but I'm
thinking now that I must have left optimizations on somehow. This symbol
is defined in pcl_gcl_low.lisp -- it is a compiler 'inline',
meaning a function-like symbol that will be rewritten by the optimizer, it
is
not a function. There is a (define-inlines) macro call in this
lisp file, which expands the inline definitions as (for example):
(EVAL-WHEN (COMPILE EVAL LOAD)
(MAKE-FUNCTION-INLINE
'(|SYSTEM:%SET-COMPILED-FUNCTION-NAME inline| (T T) T T NIL
"((#0)->cf.cf_name)=(#1)")))
(DEFUN SYSTEM:%SET-COMPILED-FUNCTION-NAME (#:G1379 #:G1380)
(THE T
(|SYSTEM:%SET-COMPILED-FUNCTION-NAME inline| #:G1379 #:G1380)))
(MAKE-FUNCTION-INLINE
'(SYSTEM:%SET-COMPILED-FUNCTION-NAME (T T) T T NIL
"((#0)->cf.cf_name)=(#1)"))
make-inline is also defined right above this call. The gist of
this being that the call to si::%set-compiled-function-name gets
rewritten as ...->cf.cf_name=..... If one disables function
inlining via disabling the optimizer, I'm not sure what will
happen. If my guess is right (i.e. that we can currently only
compile pcl with optimization), this situation should obviously not
persist, but the short end is that I'd expect a function not
defined error to be probable. I've not yet reproduced it myself.
Will try to look at this some more.
> ===========================================================================
>
>
> Earlier on I get a bunch of warnings from pcl_pkg.lisp which implies that
> this function is not actually being exported:
>
>
>
2) These are due to GCL's moving 'package-operations' to the top of
the init file. We should really rework this, but it is likely not
simple, as it would require toggling between reading interpreted
init code and compiled function initialization code in the same
initialization sequence for a given file. Right now GCL moves such
non-compiled top-level package forms to the effective top of the
file, and stores them in the .data file. Compiled functions only
are in the .o file. The init process therefore has only two places
with which to distinguish and order init code -- we'd have to come
up with some way of interspersing the .data and .o to preserve the
strict meaning of any non-trivial top-level sequence. I get
exactly the same warnings as you do. These warnings are often more
alarming than necessary, as any package-op form which does not
depend on code above it in a source file can be safely moved to the
top, yet GCL currently complains for all such cases without
distinguishing safe from non-safe moves. Maybe there is a nice
algorithm for this? But again, the short end is that these exports
(I think) work just fine when moved to the top despite the warning,
and alas probably do not shed light on your situation.
3) There are quite a few pending ansi fixes which need to go in the
pcl code, and this is also the most difficult section to debug and
modify, IMHO. Luckily, cmucl uses pcl too. I thought at one point
that pcl was a finished product and that we'd just as soon work
with Dr. Schelter's last copy as any, but to the contrary, I
believe now that Paul's tests have sparked quite a bit of
successful work on pcl in the cmucl camp. I can see absolutely no
reason for us to maintain any separate pcl tree apart from the
pcl_gcl_low.lisp file -- therefore I think a very fruitful exercise
is to attempt to load the cmucl pcl tree into gcl on an interpreted
basis at first, and then compile, and then replace what we have
with that. cmucl's public domain license is perfectly compatible
with out lgpl. If anyone would like to help with this, one can
look at the init sequence in sys_pcl_gcl.c in unixport, and replace
the pcl binary object init calls with lsp_init source calls, as in
sys_pre_gcl.c. One hopefully can then obtain an interpreted-only
pcl image and go from there. I will also be attempting this in the
days to come.
Take care,
> ===========================================================================
>
> Compiling PCL_PKG...
> Compiling c:/cvs/stable/gcl-2.6.1.ansi/unixport/../pcl/pcl_pkg.lisp.
> ; (EXPORT (INTERN # ...) ...) is being compiled.
> ;; Warning: The package operation (EXPORT (INTERN
> (SYMBOL-NAME :ITERATE)
> (FIND-PACKAGE :ITERATE))
> (FIND-PACKAGE :ITERATE)) was in a
> bad place.
> ; (IN-PACKAGE :WALKER) is being compiled.
> ;; Warning: The package operation (IN-PACKAGE :WALKER) was in a bad place.
> ; (EXPORT '(DEFINE-WALKER-TEMPLATE WALK-FORM ...)) is being compiled.
> ;; Warning: The package operation (EXPORT '(DEFINE-WALKER-TEMPLATE
> WALK-FORM
> WALK-FORM-EXPAND-MACROS-P
> NESTED-WALK-FORM
> VARIABLE-LEXICAL-P
> VARIABLE-SPECIAL-P
> VARIABLE-GLOBALLY-SPECIAL-P
> *VARIABLE-DECLARATIONS*
> VARIABLE-DECLARATION
> MACROEXPAND-ALL)) was in a bad
> place.
> ; (IN-PACKAGE :ITERATE) is being compiled.
> ;; Warning: The package operation (IN-PACKAGE :ITERATE) was in a bad place.
> ; (EXPORT '(ITERATE ITERATE* ...)) is being compiled.
> ;; Warning: The package operation (EXPORT '(ITERATE ITERATE* GATHERING
> GATHER WITH-GATHERING
> INTERVAL ELEMENTS
> LIST-ELEMENTS LIST-TAILS
> PLIST-ELEMENTS EACHTIME
> WHILE UNTIL COLLECTING
> JOINING MAXIMIZING
> MINIMIZING SUMMING
> *ITERATE-WARNINGS*)) was in a
> bad place.
> ; (IN-PACKAGE :PCL) is being compiled.
> ;; Warning: The package operation (IN-PACKAGE :PCL) was in a bad place.
> ; (IMPORT '(STRUCTUREP STRUCTURE-DEF ...)) is being compiled.
> ;; Warning: The package operation (IMPORT '(STRUCTUREP STRUCTURE-DEF
> STRUCTURE-REF)) was in a bad
> place.
> ; (SHADOW 'DOTIMES) is being compiled.
> ;; Warning: The package operation (SHADOW 'DOTIMES) was in a bad place.
> ; (IN-PACKAGE "SI") is being compiled.
> ;; Warning: The package operation (IN-PACKAGE "SI") was in a bad place.
> ; (EXPORT '(%STRUCTURE-NAME %COMPILED-FUNCTION-NAME ...)) is being
> compiled.
> ;; Warning: The package operation (EXPORT '(%STRUCTURE-NAME
> %COMPILED-FUNCTION-NAME
> %SET-COMPILED-FUNCTION-NAME
> %INSTANCE-REF
> %SET-INSTANCE-REF)) was in a
> bad place.
> ; (IN-PACKAGE 'PCL) is being compiled.
> ;; Warning: The package operation (IN-PACKAGE 'PCL) was in a bad place.
> ; (SHADOW 'DOCUMENTATION) is being compiled.
> ;; Warning: The package operation (SHADOW 'DOCUMENTATION) was in a bad
> place.
> End of Pass 1.
> End of Pass 2.
> OPTIMIZE levels: Safety=3, Space=0, Speed=1
> Finished compiling c:/cvs/stable/gcl-2.6.1.ansi/unixport/../pcl/pcl_pkg.o.
> ===========================================================================
>
>
>
> Any ideas about this missing function? Do you get the same problem on
> Linux?
>
>
> Cheers
>
> Mike Thomas.
>
>
>
>
>
>
>
> _______________________________________________
> Gcl-devel mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/gcl-devel
>
>
>
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah