1.0.27.31: repeatable fasl header and debug-source
commita160917364f85b38dc0826a5e3dcef87e3c4c62c
authorChristophe Rhodes <csr21@cantab.net>
Fri, 24 Apr 2009 10:06:20 +0000 (24 10:06 +0000)
committerChristophe Rhodes <csr21@cantab.net>
Fri, 24 Apr 2009 10:06:20 +0000 (24 10:06 +0000)
tree23bcf72d2d48c9289f6e31ce6b70dd8495de02e6
parent007bcd5aac2f3a1e714563bd39f7a2db2d0bf7c2
1.0.27.31: repeatable fasl header and debug-source

The fasl header is easy to deal with; writing "at cross-compile time"
instead of something depending on the host is easy.  The debug-source is
harder; we set the structure slots to 0 in the cross-compiler, and
arrange for cold-init to patch sensible values in (by inventing a new
FOP to note the debug-source's arrival).

made up of 5 commits, whose individual messages follow:

deal with trivial volatile contents of fasl files

Don't try to preserve, even in the header, information about which
implementation or machine was used for the compilation.

Similarly, don't emit the timestamps in the debug-source into the fasls.

comments: delete a FIXME and explain a bare `2'

consistent source pathname for output/stuff-groveled-from-headers.lisp

At the moment it's the only compiled file not in src/; code defensively
around that fact.

fix a longstanding KLUDGE

Find the index of the source slot by introspection rather than using a
baffling literal `2'.  Unfortunately, in doing so we run into bug #117.

patch in the source created/compiled information in cold-init

We can't do it before without making our fasls or cold-sbcl.core
dependent on filesystem timestamps or current time.  The way we do it is
perhaps overcomplicated, compared with simply assuming that the file
timestamps are right, but has the advantage that it's demonstrably
correct: we implement a new FOP specifically for noting our
DEBUG-SOURCE, dumped only during cross-compilation, and in genesis we
interpret that FOP to build a list of debug-sources, which we can frob
in cold-init.

Everything should now be restored to its previous functionality.
13 files changed:
build-order.lisp-expr
package-data-list.lisp-expr
src/code/cold-init.lisp
src/code/debug-info.lisp
src/code/fop.lisp
src/code/source-location.lisp
src/code/target-pathname.lisp
src/cold/warm.lisp
src/compiler/dump.lisp
src/compiler/early-c.lisp
src/compiler/generic/genesis.lisp
src/compiler/locall.lisp
version.lisp-expr