Hi all,
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:
http://koji.fedoraproject.org/koji/getfile?taskID=3637195&name=build.log
The (void-variable ceiling) error that kills the build is triggered by
this code in cl-extra.el:
;; We can't use macrolet in this file; whence the literal macro
;; definition-and-call:
((macro . (lambda (&rest symbols)
"Make some old CL package truncate and round functions available.
These functions are now implemented in C; their Lisp implementations in this
XEmacs are trivial, so we provide them and mark them obsolete."
(let (symbol result)
(while symbols
(setq symbol (car symbols)
symbols (cdr symbols))
(push `(make-obsolete ',(intern (format "%s*" symbol))
',symbol "21.5.29")
result)
(push
`(defun ,(intern (format "%s*" symbol)) (number &optional divisor)
,(format "See `%s'. This returns a list, not multiple values."
symbol)
(multiple-value-list (,symbol number divisor)))
result))
(cons 'progn result))))
ceiling floor round truncate)
The problem appears to be that read0 in lread.c is reading that form
without the (macro . <this part kept>); i.e., it is reading this:
((lambda (&rest symbols)
"Make some old CL package truncate and round functions available.
These functions are now implemented in C; their Lisp implementations in this
XEmacs are trivial, so we provide them and mark them obsolete."
(let (symbol result)
(while symbols
(setq symbol (car symbols)
symbols (cdr symbols))
(push `(make-obsolete ',(intern (format "%s*" symbol))
',symbol "21.5.29")
result)
(push
`(defun ,(intern (format "%s*" symbol)) (number &optional divisor)
,(format "See `%s'. This returns a list, not multiple values."
symbol)
(multiple-value-list (,symbol number divisor)))
result))
(cons 'progn result)))
ceiling floor round truncate)
which, when evaluated, causes the problem by trying to compute the
values of the parameters ceiling, floor, round, and truncate (which
have function bindings, but no value bindings). Can anyone think of
any code that, if miscompiled, could result in this misreading of the
Lisp? I'm not really familiar with the reader code, and none of the
GCC warnings produced by this build appear to be relevant.
--
Jerry James
http://www.jamezone.org/
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-beta