Jerry James writes:
Soon-to-be GCC 4.7 has been added to Fedora Rawhide, and we package
maintainers have been asked to rebuild our packages with it to flush
out problems early. XEmacs 21.5.31 (release sources, plus a few small
patches to adapt to Fedora conventions) succeeds on the 32-bit x86
build, but fails the x86_64 build:
The (void-variable ceiling) error that kills the build is triggered by
this code in cl-extra.el:
The problem appears to be that read0 in lread.c is reading that form
without the (macro . <this part kept>);
Can you reproduce under the debugger?
What do you mean by "appears"? That you have traced the function and
you see that the reader returns the wrong sexp? Or just that the Lisp
stack shows the lambda itself, rather than the macro lambda, being
called? ISTM that the problem could easily be in the interpreter eval
code that handles macros, since the reader should basically just pair
up the parens and intern the symbols. I don't see why it would choose
to drop "(macro . "; it shouldn't know what "macro" means, at the
reader stage it's just a symbol AFAIK.
Have you compared the assembly for read0 (both against the GCC 4.7
32-bit compilation and against the most recent 64-bit GCC that you
have that works)?
Sorry I can't be of more help, but I've not worked with the reader.
Aidan probably knows as much about it as anybody active; if he doesn't
show up shortly, ping him.
XEmacs-Beta mailing list