From 4ac29cb60d52a15a16db9e733c687f56b74fa787 Mon Sep 17 00:00:00 2001 From: Raymond Toy <toy.raymond@gmail.com> Date: Sat, 22 Oct 2011 08:37:26 -0700 Subject: [PATCH] Bump version to 20c, add bootstrap file. A normal build can be done using boot-20c.lisp. --- bootfiles/20b/boot-20c.lisp | 68 +++++++++++++++++++++++++++++++++++++ compiler/byte-comp.lisp | 14 ++++++-- 2 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 bootfiles/20b/boot-20c.lisp diff --git a/bootfiles/20b/boot-20c.lisp b/bootfiles/20b/boot-20c.lisp new file mode 100644 index 000000000..cc5447221 --- /dev/null +++ b/bootfiles/20b/boot-20c.lisp @@ -0,0 +1,68 @@ +;;;; +;;;; Boot file for changing the fasl file version numbers to 20c. +;;;; + +(in-package :c) + +(setf lisp::*enable-package-locked-errors* nil) + +;;; +;;; Note that BYTE-FASL-FILE-VERSION is a constant. +;;; +;;; (Be sure to change BYTE-FASL-FILE-VERSION in +;;; compiler/byte-comp.lisp to the correct value too!) +;;; +#-cmu20c +(setf (symbol-value 'byte-fasl-file-version) #x20c) +#-cmu20c +(setf (backend-fasl-file-version *target-backend*) #x20c) + +;;; +;;; Don't check fasl versions in the compiling Lisp because we'll +;;; load files compiled with the new version numbers. +;;; +#-cmu20c +(setq lisp::*skip-fasl-file-version-check* t) + +;;; +;;; This is here because BYTE-FASL-FILE-VERSION is constant-folded in +;;; OPEN-FASL-FILE. To make the new version number take effect, we +;;; have to redefine the function. +;;; +#-cmu20c +(defun open-fasl-file (name where &optional byte-p) + (declare (type pathname name)) + (let* ((stream (open name :direction :output + :if-exists :new-version + :element-type '(unsigned-byte 8) + :class 'binary-text-stream)) + (res (make-fasl-file :stream stream))) + (multiple-value-bind + (version f-vers f-imp) + (if byte-p + (values "Byte code" + byte-fasl-file-version + (backend-byte-fasl-file-implementation *backend*)) + (values (backend-version *backend*) + (backend-fasl-file-version *backend*) + (backend-fasl-file-implementation *backend*))) + (format stream + "FASL FILE output from ~A.~@ + Compiled ~A on ~A~@ + Compiler ~A, Lisp ~A~@ + Targeted for ~A, FASL version ~X~%" + where + (ext:format-universal-time nil (get-universal-time)) + (machine-instance) compiler-version + (lisp-implementation-version) + version f-vers) + ;; + ;; Terminate header. + (dump-byte 255 res) + ;; + ;; Specify code format. + (dump-fop 'lisp::fop-long-code-format res) + (dump-byte f-imp res) + (dump-unsigned-32 f-vers res)) + res)) + diff --git a/compiler/byte-comp.lisp b/compiler/byte-comp.lisp index 3f04bdd24..ad1616208 100644 --- a/compiler/byte-comp.lisp +++ b/compiler/byte-comp.lisp @@ -34,12 +34,20 @@ ;;;; Fasl file format: -(defconstant byte-fasl-file-version #x20b) +;; The fasl file version should be a series of hex digits in the range +;; 0-9 followed by a single hex digit in the range a-f. Then the +;; version looks like a decimal number followed by a minor release +;; letter of a to f. +(defconstant byte-fasl-file-version #x20c) (let* ((version-string (format nil "~X" byte-fasl-file-version))) - (sys:register-lisp-feature (intern (concatenate 'string "CMU" version-string) :keyword)) + ;; Add :cmu<n> to *features* + (sys:register-lisp-feature (intern (concatenate 'string "CMU" version-string) + :keyword)) + ;; Same as above, except drop the trailing a-f character. (sys:register-lisp-feature (intern (concatenate 'string "CMU" - (subseq version-string 0 (1- (length version-string)))) + (subseq version-string 0 + (1- (length version-string)))) :keyword))) (defun backend-byte-fasl-file-type (backend) -- GitLab